2013年5月21日火曜日

合成用の濁点・半濁点について

ちょっと気になったので。

濁点・半濁点の記号には「゛(U+309B)」・「゜(U+309C)」とは別に、合成用のU+3099・U+309Aという文字があります。下図は、実際にこれらをひらがなにくっつけて試しているところです。
U+309B・U+309Cは合成されませんが、U+3099・U+309Aは合成されているのがわかります。


左図のU+304BとU+3099が合成されたものは、元々合成されている「が(U+304C)」と同じに見えます。ひょっとすると、合成された方もU+304Cの字形で置き換えているのかもしれません。しかし右のような本来ありえない組み合わせでも、いちおう合成して描画されています。

IEでフォント変化を起こすと、少しおかしなことが起こります。下図左では濁点記号が消えてしまったように見えます。右図を見ればわかりますが、一文字分右にずれてしまうからでした。


U+3099・U+309Aは、SimSun・Gulim・PMingLiUにはありません。上のケースではフォントリンクによる代替表示がされているのだと思います。この場合のU+3099・U+309Aは、ゼロ幅ではなくなってしまうということでしょうか。

一方、Chromeではまた別の挙動が見られます。


U+304BとU+3099はIEと同様に合成されますが、U+3042とU+309Aは合成されません。
他の組み合わせでも試してみると、どうも「本来ありえない組み合わせ」では合成を行わないようです。この件に限らず、Chrome(というかpepflashplayer)はIEでは参照されないなんらかのプロパティを参照して、文字の区別をしているように思います。

妙なことに、先日来書いているLucida化(仮)を適用するとU+3042とU+309Aの合成が起きました。


この現象はArialに対してだけ起きるものだと思っていました。そんな単純なことではないようです。

0 件のコメント:

コメントを投稿