2012年3月28日水曜日

あらためてMingLiUについて(1)

旧ブログで書いてたことをまとめつつ書いていきたいと思います。
Windows上のニコニコプレーヤーでコメントのフォントが変化する現象について、次のようなことがわかっています。
  1. 文字コードによりロケール(地域、言語)が識別され、コメントのフォントが決定される。この挙動はWindowsコードページでの定義の有無に由来すると思われる。
  2. 既定のフォントはArial。Arialが対応するコードページ1250~1258に定義がある文字は、そのままArialで表示される。
  3. コードページ1250~1258に定義が無い文字のうち、CJKコードページ932・936・949・950に定義がある文字はCJKフォントで表示される。既定はMS Pゴシック(CP932)。
  4. ただしCJKコードページの定義の有無によっては、MS Pゴシック以外のCJKフォントで表示される。すなわち、SimSun(CP936)・Gulim(CP949)・PMingLiU(CP950)。
  5. 一つのコメントにおいて4.の文字が3.の文字より前にある場合または隣接した場合は、MS Pゴシックで表示される文字が他のCJKフォントに変化する。
  6. コメント表示のプロセスに過度な負荷がかかった場合、5.とは別に画面上のコメント全体が他のCJKフォントへ変化することがある(「フォントの連れ回し」)。具体的な発生条件は不明。
  7. コードページ932にのみ定義がある文字は、5.および6.の効果を打ち消す(フォント変化解除・「ゴシック保護」)。既定の表示が維持される。
以上は大ざっぱな話で、他にもいろいろな挙動を確認しています。また、ここにフォントリンクなどによるグリフ代替の挙動も加わります。全体像は今のところ掴みあぐねています。

掴みあぐねながらもこの現象をコメント技に利用するわけですが、 ずっと注目しているのがMingLiU(PMingLiU)です。

「明朝化」と言えばSimSunのことです。このもう一つの明朝、PMingLiUはWindows XPでは表示されません。またSimSun化と比べてMingLiU化を起こす文字が少ないため、Vista以降でもフォント変化としてすぐには認識されなかったのではないかと思います。
※リンク先はただのテキストファイルです。ブラウザで表示できない場合はDLしてください。

前者はSimSun化を、後者はMingLiU化を起こします(実は私用領域にもフォント変化文字がありますが、これについてはまた別で触れたいと思います)。
そして936・950両方に定義がある場合、SimSun化を起こします。
SimSunが優先される理由はわかりません。
ただ実際に表示させてみると、MingLiUの方がSimSunより字形のデザインが大きくなっています。特にbigのコメントでは、こちらの方が見栄えがするんじゃないでしょうか。


よく使われるブロック文字(U+258X)は上の「936・950に定義がある」グループで、そのままだとSimSunで表示されます。これをMingLiU化させるとすき間が無くなり、きれいにつながります。
U+2588だけなら丸文字化(Gulim)でも同じですが:


他のブロック文字が混ざるとGulimでは幅が縮んでしまいます:


上のケースだとGulimにはU+2584とU+2588しかなく、他はフォントリンクによりMS UI Gothicの縦長の字形が表示されてしまうためです。PMingLiUはU+2581~U+2588いずれのグリフも持っています。

ネックなのがWindows XPでは表示されないことです。
MingLiU化文字によるフォント変化が起きると、なぜか既定のフォント(ArialまたはMS Pゴシック)に戻るという挙動になります。下図ではブロック文字がすべてArialに戻っています。


この問題については次で書きたいと思います。

0 件のコメント:

コメントを投稿