Vista文字化けの原因追求

http://d.hatena.ne.jp/korakurider/20061201/p1 では、コードに対応するフォントがないためと仮説をたてていましたが、フォント以外の部分を調べてみます。

環境とコンバーター

m17nのフレームワークでは、言語環境クラスが外部とのやりとりに使用する適切なコンバーターを決定します。例えば日本語の場合 言語環境クラス(JapaneseEnvironment)の #clipboardInterpreterClassや#inputInterpreterClassなどです。この中を見ると、Win32環境の場合は 必ずシフトJISを経由するコンバーターを使っていることがわかります。
しかし、JIS X 0213:2004 にはシフトJISと対応しない文字が含まれており、シフトJIS経由コンバーターの選択は不適切です。

VMはどんなコードをイメージ側に渡しているか?

今回はクリップボードからデータを受け取る処理を調べます。(キー入力処理をデバッガで調べるのはとても大変なので。。。)
クリップボードからのデータの受け取り処理は、Clipboard>>clipboardText のあたりです。

さて、「倶」のもう一つの字をクリップボード経由でTextMorphに渡してみたところ、#primitiveClipboardText から返ってきたデータ自体が既に化けていました。VMは正しくデータを受け取れていません。

まとめ

文字化けの原因がフォントという仮説は間違いでした。
JIS X0213:2004の導入は、現在の m17nの日本語向け実装の想定範囲を超えているもので、言語環境・コンバーターVMなど多くの手直しを必要とするようです。