2013年8月1日木曜日

Windows 8:「Segoe化」の回避

Windows 8でCJKフォント変化が発生したとき、特殊文字がSegoe UI Symbolで表示される話の続きです。

パターンが2種類ありました。単にCJKフォント変化が起きた場合と、CJKフォント変化+後ろに特定の文字がついた場合です。
いずれも代替表示が行われる時に発生します。下図はSimSun化でのU+263Aの挙動を示しています。U+263AはSimSunにありませんので代替表示になります。


Segoeへの変化はArialの文字を使うことで回避できました。前者のパターンであればフォント変化文字との間、後者であれば後ろの文字との間にArialを挟みます。


「a」をゼロ幅文字に変えれば、この操作を隠してWindows 7と同じ表示にすることができます。下図の下段はゼロ幅文字にU+200Cを使っています。


ただし、このパターンだとU+263AがArialに変わってしまいます。下図はU+263AをU+2639に変えたところですが、これはArialに無いため豆腐化しています。


後者のパターンではフォント変化文字との隣接が変わらないため、フォントリンクによる代替表示に戻ります。U+263AはSimSunのフォントリンクによりMS P明朝(字形はMS Pゴシックと同じ)で表示されます。


表示がどうなるかは文字の組み合わせによるので、この方法をパターン化するのは難しいと思います。「Segoe化」を避ける最も簡単な方法は、ゴシックを保護してCJKフォント変化を起こさないことでしょう。

「Segoe化」とは別に、特殊文字がはじめから縮んで表示されるケースもあります。


これはゴシックにすればWindows 7と同じ表示にできます。CJKフォント変化が起きると初期の縮んだ状態に戻ってしまいます(U+2740もSimSunにはありませんので代替表示です)。


「Segoe化」と同じ方法でこの縮みを回避することはできません。

Chromeの件にしても、やはりCJKフォント変化自体を避けることが表示の互換につながるんじゃないかと思います。もちろん大丈夫なケースもありますから、結局は組み合わせの問題なんですが。

0 件のコメント:

コメントを投稿