2013年3月12日火曜日

合成用文字の特殊な挙動

以前Chromeの件でいろいろ実験した合成用文字の話です。変な挙動があるので書いときます。

下図は二つのAの間に合成用文字U+0304を挟んだところです。U+0304はAと合成され、コメントの幅は何も挟まない場合と変わりません。


このU+0304を複数続けて挟むと、挟んだ分だけ後ろのAの上下がズレていきます。


なぜこんなことが起きるのかはわかりません。なお、どの合成用文字でも同じことが起きるわけではありません。

おもしろいことにU+0304に直接接している文字だけがズレるのではなく、そこから後ろの文字が全部ズレます。


上だけでなく下に向かってズレる文字もあります。


これを利用してこんなことができるかもという例。コメントの先頭に半角スペース(U+0020) を置いて、その後ろに合成用文字を挟んでいます。


Chromeでこの現象は起きません。 FirefoxはIEと同様です。


合成用文字の後ろがひらがなだと合成自体が起きません。半角英数字(というかArial)の間に挟んでズレが発生していれば、その後ろでひらがな(MS Pゴシック)もこれに従います。


そもそも左の図ではU+0304の字形が変わっちゃってます。MS PゴシックにはU+0304があるのでそれだと思います。「あ」と隣接したことによりフォント変化が起きたのでしょう。

これを利用して、ひらがなでABCDEと同じことをやってみたところ。コメントの先頭は半角スペース2つにして、その間に合成用文字を挟んでいます。


念のため、これもChromeでは起こりません。


まぁChromeで起きないというより使いどころがわからないので、これ以上は検証してません。

2 件のコメント:

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

dorikoさんのWinter Alice http://www.nicovideo.jp/watch/sm5919873 の0:17からのロゴを
作るのに使えそうですね。超個人的な興味ですみません。
ただ自分は直ぐにはやらないと思いますが

bardiel さんのコメント...

なるほど使えますかねー
合成が起きないと幅が変わってしまうので、検証は必要でしょうね(特にXP)

コメントを投稿