2013年4月23日火曜日

Chrome 26:Windows XPでのフォント変化

Chrome特有のフォント変化の話の続きです。XPで見ていて気づいたことがあったので。

pepflashplayerのコメント表示において、Windowsのバージョン間での差異はフォントのバージョンの違いによるグリフの有無を除き基本的にないだろうという認識でした。下図のコメントは7もXPも表示に違いはありません。


ところが下図のケースでは違いが発生しています。フォントが変わるのは前に書いた通りですが、「A」とU+0304の組み合わせだけXPではフォントが変わりません。


これがなんなのかは結局わかりませんが、試しに各文字にU+0304をつけてみたところ明確な違いが現れました。


XPでは罫線記号に関係なくフォントが変わり、かつ「B」「C」「D」との組み合わせでU+0304が豆腐になっています。豆腐については、これがTimes New Romanだとすれば説明はつきます。7のTimes New RomanにU+0304はありますが、XPには無いからです。
ではなぜ「A」「E」との組み合わせでは豆腐にならないのか。思ったのですが、これは合成済み文字というやつなんじゃないでしょうか。




上のアイコンのリンク先「Decomposition Mapping」にあるように、これらは「A」「E」 にU+0304を合成させた文字として別に定義されているものです。Chromeでは表示にだけこっちのグリフに置き換えてるのかなと思いました。U+0304は母音につける記号なので、「B」「C」「D」に合成させた文字というのは存在しません。

<参考>PDF 千夜一夜: PDFと文字 (38) -- Unicode標準形NFCの実装

試しにU+0304との組み合わせと上の合成済み文字との表示を比較してみたところ。左の図では見た目一緒です。


右の図のU+2501との組み合わせでは、合成済み文字の方は何も起こりません。別のグリフに置き換えるというプロセスが発生しないからじゃないですかね。

一方、Lucida Sans UnicodeはXPでもU+0304があって豆腐になることはありません。ただし特殊文字との組み合わせではやはり7との差異が見られました。


XPでは罫線記号に関係なく最初からフォントが変わってます。なんでだかはわかりません。U+2588も同様です。


なお、U+0323との組み合わせではXPだと何も起こりませんでした。


これは組み合わせ方の問題みたいです。U+2584からU+2588を並べたケースで見ると、U+0323の位置を変えればXPでもちゃんとU+2584もU+2588も全角化ができました。


XPでは、はじめからLucida Sans Unicodeで表示されているものにU+0323を組み合わせればいいようです。
U+2592のケース:


U+0323をU+2501の方につければXPでも全角化しました。


どういうロジックなのか全くわかりませんけど。

0 件のコメント:

コメントを投稿