2013年6月19日水曜日

Chrome 28:ダイアクリティカルマークと書式制御文字

ダイアクリティカルマークで文字の上下位置をずらす話の続きです。

下図はひらがなの途中にU+0309を3つ挟み、後ろを半分くらい持ち上げてるところです。Chromeではこうしてゴシックの途中に入れるとU+0309は豆腐になってしまいます。


これ消せないのかなと思ったら、前回書いた左右の方向を指示する制御文字(U+202A~202E)を前に挟んだら消えました。IEの表示に影響はありません。


U+202Eでは反転が起きています。
なおU+200E(Left-to-Right Mark)・U+200F(Right-to-Left Mark)でも同様でした。理由はわかりませんが、これら左右の方向を指示する制御文字に共通の挙動のようです。

不思議なのは単にU+0309の豆腐が直っただけでなく、字形の表示がどこにも見えなくなったことです。実はこれを試している時にワードパッド上でも同じことが起こりました。
ちなみに下図の3段目は、Lucida化を起こしているダイアクリティカルマークの前にU+202Aを置いてみたところです。IEでは表示に変化はなく、ChromeではやはりU+0309が消えます。


ただしLucida化と組み合わせた場合、Left-to-RightとRight-to-Leftで挙動に違いが見られました。
下図のコメントの真ん中はU+2501にU+0309を合成させており、両側のアルファベットがTimes化(仮)を起こしています。2段目はU+0309の前にU+202A、3段目はU+202Bを挟んでいます。


U+202Aの場合は後ろのTimes化が解除されています。U+202Bの場合はフォント変化全体が解除され、同時に「幅だけLucida化」が起きました。

下図のようなケースでも同様でした。ただし「幅だけLucida化」は1段目の幅ではなく、後ろがArialに戻った2段目の幅でした。


この辺の仕組みはまだよくわからんのですけど、もっと調べれば使いようがあるのかもしれません。

2 件のコメント:

OWATA TheEndOfWorld さんのコメント...

検証お疲れ様です。202Xのゼロ幅文字が後続の03xxを見えなくするのはうまく使えそうです。実は202A+0323はかなり使ったのですが本番でミスして
202A+202A+0323+半角数字の0+6+2+4
となった時にchromePepでおかしな挙動に(見えなく)なりました。検証してないので、自分の環境だけかも知れません。
sm18175808の2:23の※60 ご報告だけです。

bardiel さんのコメント...

たしかにゼロ幅の中へみんな吸い込まれるかのように消えますね。ていうかQwatchだとコメント欄にコピペした時点でゼロ幅です。
本来そんな文字の組み合わせ方はしないでしょうけど、一体なんなんですかねー

コメントを投稿