2012年10月4日木曜日

Chrome 22:合成用文字による幅の補完(2)

(1)は単なる思いつきだったのですが調べたらけっこう使えそうだったので。

ほんとは三角(U+25E2~U+25E5)がChromeで縮むのをどうにかしたくて調べてました。
ところがただ合成用文字をくっつけるだけだと、Chromeでも合成されてしまって意味がありませんでした。



もっとも、この文字を単独で使うことはあまりないでしょう。違う活用を考えてみました。
下図の上段はU+25E2とU+25E3の間に全角幅の下線記号U+FF3Fを2文字はさみ、IEではコメント全体を全角幅で4文字分にしています。U+FF3FはChromeでも全角幅で表示されます。



Chromeの方は三角の幅が短い分、当然コメント幅が縮みます。

2つのU+FF3Fの間に合成用文字をはさんでみました。下図の例だと合成が起こるIEと起こらないChromeとで、U+0303を使った場合うまく幅が合っているように見えます。



これらの文字はUnicodeのダイアクリティカルマークというブロック(U+0300~U+036F)にあるのですが、こうしてただはさんだだけでIEで合成・Chromeで合成されず、となるのは5文字しかないようでした。


他の文字だとIEでも合成が起こらなかったりしました。
ちなみにこの5つの文字は、コードページ1258(ベトナム語)に定義があるという共通点がありました。他の文字は1250~1258にもCJKコードページにも定義がありませんでした。その意味はわかりませんけどw
せっかく合成用文字はたくさんあるのに、もうちょっとどうにかならないだろうか。

U+FF3FはCJKフォントだと思われますが(ここでIEはSimSun)、他の合成用文字もArialとならIE上で合成が起こります。じゃあゼロ幅のU+200Cに合成させればいいじゃん、と思いつきました。U+200CがArialだろうという話は前に書きました→この日記

下図の3段目・4段目は合成用文字にU+0304を使っています。
そのままU+FF3FではさんでもIEで合成は起こりませんが、U+200Cと組み合わせると合成されました。U+0304のフォント自体変わったように見えます。



結果、U+200CとU+0304を使ったパターンでもChromeと幅が合いました。これなら5文字以外も使えそうです。

さて、これを実際のコメントに使う例を考えます。
下図は三角とU+2587を組み合わせたコメントです。三角を使った行はChromeでは縮んでズレてます。


三角を使った行を上のU+0304を使った形に変えます。もう1つ別のコメントでU+2587の部分を作り、上からかぶせてみます。



IEもChromeも全角幅4文字分のコメントのまま、Chromeの三角部分のズレが修正されました。
三角自体が縮むのはどうしようもないとしても、Chromeで崩れないようにするという意味では実用的と言えるんじゃないでしょうか。
なお、以上の表示はArial Unicode MSの有無には関係ないようでした。またWindows 8でも同じでした。

問題はまたWindows XPです。
IEの方は若干7・8と挙動が異なるものの、上のU+0304のケースについては問題ありませんでした。一方Chromeでは全然ダメでした。


XP+Chrome・・・シェアを考えると諦めるしかないのかなと思いました。

0 件のコメント:

コメントを投稿