2014年8月21日木曜日

U+06E5による左右反転

以前Chromeでのコメント幅の縮みを補完するのに、アラビア文字のU+06E5を試したことがありました(→この日記)。後になってから、この文字で妙な挙動が起きることに気づきました。

下図の2・4段目のコメントは、それぞれ1・3段目のコメントの左右2文字目にU+06E5を追加したものです。


U+06E5が1つであれば何も起こらないのですが、このように複数あるとその間で文字の並びが左右反転します。

左右反転は必ず起こるわけではなく、下図のようにアルファベットや漢字、かな文字などでは発生しません。


また冒頭のように反転が起こるケースでも、途中にアルファベットや漢字が混ざると発生しなくなります。下図の1~4段目の各コメントは、いずれも左右の2文字目にU+06E5を追加してあります。


右側の図が示す通り、これらの挙動はChrome上でも変わりません。

IEの場合、反転が起きたトランプマークはGulim・ブロック文字はSimSunです。一方起きなかったアルファベットはArial・漢字はゴシックです。ただしゴシックでも左右反転するケースもありました。
下図の丸囲み数字はゴシックだと思います。1段目の左右2文字目にU+06E5を追加したのが2段目です。


そもそもフォントが異なるChromeでも同じ挙動を取るので、フォントの種類の問題ではないようです。文字によって左右反転を適用するかどうか判定しているように見えます。

IEとChromeで挙動が異なるケースもあります。下図のコメントはいずれも左右の2文字目にU+06E5を追加してあります。


真ん中の丸囲み数字は、IE上でのコメントのフォント状態(1・2段目Gulim、3・4段目SimSun)に対してCJKコードページ的にGulim属性・SimSun属性の有無が異なるものをわざと選んでいます。

unicode 字形 cp932 cp936 cp949 cp950
246E 874E - A8F5 -
246F 874F - - -

unicode 字形 cp932 cp936 cp949 cp950
2469 8749 A2E2 A8F0 -
246A 874A - A8F1 -

このケースに関してはCJKが関係あるように見えます。CJKフォント変化が起こらないChromeではどのコメントでも左右反転が起きています。
IE上でこれらの丸囲み数字があっても、コメントのフォント状態自体は変わらないはずです。 U+06E5から見て一体何をどう判定しているのか、興味があります。

0 件のコメント:

コメントを投稿