以前の話の補足です。
CJKコードページにおける定義の有無が、フォント変化の挙動と関係あるらしいと書きました。その際に参照したのが、ユニコードコンソーシアムが公開しているcpXXX to Unicode tableというコードページとユニコードの対応表でした(→cpXXX to Unicode table)。
ところでフォント変化文字は私用領域(U+E000~U+F8FF)にもあることが知られていますが、cpXXX to Unicode tableには私用領域が含まれていません。
ところでフォント変化文字は私用領域(U+E000~U+F8FF)にもあることが知られていますが、cpXXX to Unicode tableには私用領域が含まれていません。
他で定義があるんだろうなと思ったら、もう一種類の対応表がありました:
これらがcpXXX to Unicode tableと何が違うのか、いちおう解説があるのですが→readme
読んでみてもようわかりませんw(英語だし)
おそらく、そのコードページで未定義の文字は定義がある他の文字で代替するようにして、cpXXX to Unicode tableを拡張したものかな?と思いました。
読んでみてもようわかりませんw(英語だし)
おそらく、そのコードページで未定義の文字は定義がある他の文字で代替するようにして、cpXXX to Unicode tableを拡張したものかな?と思いました。
下図はCJKのcpXXX to Unicode tableを、このWindowsBestFitと並べてみたところです。
CP932にのみ定義があるもの(=ゴシック化文字)で絞り込みを行っています。
CP932にのみ定義があるもの(=ゴシック化文字)で絞り込みを行っています。
例えばU+3232(丸カッコつきの「有」)のWindowsBestFitの方を見てみると、CP932以外にも定義があります。これらはいずれもU+6709(ふつうの「有」)のことです。つまり日本語以外では定義が無い丸カッコつきの「有」は、ふつうの「有」で代替するということのようです。
もちろんニコニコのコメントでそのような挙動は起こりません。SimSun化に対してもGulim化に対してもU+3232はMS Pゴシックで表示され、ゴシック化文字としてふるまいます。
ちなみに、その次のU+3239(丸カッコつきの「代」)も同様です。WindowsBestFitの936・949・950で定義されているのはU+4EE3(ふつうの「代」)です。
ちなみに、その次のU+3239(丸カッコつきの「代」)も同様です。WindowsBestFitの936・949・950で定義されているのはU+4EE3(ふつうの「代」)です。
さてこのWindowsBestFitですが、cpXXX to Unicode tableには無かった私用領域の定義があります。調べてみたところ、私用領域のフォント変化についてはどうもこれが関係ありそうでした。
はじめの方は4つとも定義がありますが、途中で949の定義が終わるところがあります。
定義があるU+E0BBと定義が無いU+E0BCのフォント変化に違いがあるか、以前と同じやり方で見てみました。表示はWindows 7です。
さらに先を見ると、932の定義が終わるところがあります。
上と同様にU+E757とU+E758を比較したみたところ:
さらに先では936が終わり、定義があるのが950だけになります。
U+E864とU+E865を比較してみたところ:
ちなみにU+E864は見慣れない字形で表示されています。XPのSimSunには無いのですが、バージョンアップでこの辺に字形が割り当てられているようです。
MingLiU(またはPMingLiU)には字形が無いので、フォントリンクでSimSunのU+E864が表示されているのだと思います。
さらに先を見ると950の定義が終わるところがあります。
U+F848とU+F849を比較してみたところ:
4つとも定義が無いU+F849は、フォント変化に影響を及ぼさないと考えられます。「あ」の状態は2文字めのフォント変化文字に従っています。
ただしブロックの最後の方にちょっと謎な部分がありました。
定義がバラバラにありますが、試してみてもフォント変化に影響は無いようでした。
というか、定義にある「00ff」などはcpXXX to Unicode tableの方では「UNDEFINED」となっておりユニコードとは対応付けられていないものでした。これらが何なのかはわかりません。
といちおう調べてみましたが、実際のコメントで私用領域の文字を使うのはあまりお勧めできません。
例えば上で見たU+E864は、XPでは字形が無いため全角幅の透明スペースが表示されました。もし透明だと思って使ったら7では先の字形が表示されてしまいます。
インストールされているものによってどうなるかわからないので、なるべく避けた方がいいように思います。
例えば上で見たU+E864は、XPでは字形が無いため全角幅の透明スペースが表示されました。もし透明だと思って使ったら7では先の字形が表示されてしまいます。
インストールされているものによってどうなるかわからないので、なるべく避けた方がいいように思います。