2012年8月19日日曜日

Chrome 21:空白文字の問題

先日の話の続きです。
IE・FirefoxとChromeとの間でコメント表示の互換を図るとしたら、空白文字はどうしたらいいか考えてみます。

まず間違いないのは半角スペース(U+0020)かNBSP(U+00A0)です。
これらは元からArialだと思われ、CJKフォント変化の影響を受けません。Chromeでも同じくArialのようです。下図はU+0020をひらがなとU+2587(SimSun化文字)とで、それぞれはさんだところを比較しています。
U+2587がChromeでも全角幅なのは既に紹介した通りです。


下の図は2つの画像を重ね合わせたところです。
フォント変化は関係ないので両者のコメント幅に差は出ません。幅が短いため、空白部分をたくさん作りたい場合には文字数的に苦しいところです。

次に全角スペースU+3000です。Chromeではゴシックのようです。
IE・Firefoxでもフォント変化が起きなければゴシックですが、下図ではU+2587に隣接するとSimSunの全角幅となりChromeとはコメント幅に差が出ています。


U+2587のようなフォント変化文字と並べて使うなら、U+3000をゴシック状態に保つための仕掛けが必要になります。下図の下段のコメントはその例です。


先頭にU+30FBを置いています(ゴシックを保持する効果)。そしてU+2587と隣接する部分にはArialの文字をはさんでいます(先頭のU+30FBの影響を優先させ、U+3000のSimSun化を回避する効果)。Arialと言っても半角英数字ではコメントの内容が変わってしまうため、ゼロ幅文字を利用しています。
空白部分をたくさん作るのであれば、今のところこれが現実的な方法なのかなと思います。

U+2001も見てみます。ChromeではArialのようです。
IE・Firefoxでは単独またはArialに隣接した場合Arial、ゴシックに隣接した場合はゴシックとなります。


SimSun化・Gulim化・MingLiU化の場合、これらのフォントにU+2001は無いため代替表示となります。フォントリンクによりMincosoft Sans Serifが使われると考えられます。Arialとは文字幅が違うので、U+2587ではさんだケースではChromeと差が出ています。

「あ」ではさんだゴシックのケースは、Arialと同様Chromeとは差が無いように見えます。
これはArialとゴシックでU+2001の文字幅の差が小さいからだと思われます。全く同じではありません。下図はU+2001を10個にして比較してみたところです。


ゴシックだとやはり差が出てしまうのがわかります。
ではArialで使えば大丈夫かと言うと、一つ問題があります。Windows XPではArialにU+2001が無いため豆腐になります。


ちなみにXP上のChromeではArial Unicode MSが使われるらしく、豆腐にはなりません。ただしXPではpepflashplayer有効だと動画再生以外の操作ができず、その状態で視聴することはないでしょう。
というわけで、XPを考慮する必要さえ無くなればArialで使えそうです。

まあ実際には、こんなことを考えたらフォント変化を前提とする既存のコメントは全部作り直さなければならなくなります。Chromeはニコニコの推奨環境ではありませんので、この件は無視するという考え方もできます。しかし現にChromeで視聴することはできるし、そのブラウザシェアは無視するには大きすぎます。
ただでさえネット視聴におけるAndroid・iOSのシェアは急速に伸びています。その結果、Windowsのシェアは相対的に下がっているだろうと考えられます。それがニコニコの視聴にどの程度影響しているのかはわかりませんが、この上Windowsの中でまでコメント表示に差異が発生するのはできれば避けたいなと思います。

ていうか、この話Chromeの「フォントがおかしい」 と書いてしまったんですけど、フォント変化はそもそも起きる方がおかしいのです。
例えばU+2588(ブロック文字)やU+2665(ハートマーク)は、Arialにもゴシックにもある文字です。にもかかわらず、それ自体や隣接した日本語がわざわざ中国語フォントや韓国語フォントに変わる意味はありません。フォント変化が起きなくなった今のChromeは、むしろ「安定した」と言えるのかもしれません。
ひょっとしたら、いずれニコニコのコメントはこういう挙動の方がふつうになるのでは?そんなことも思いました。

0 件のコメント:

コメントを投稿