マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

XeTeX は IVS(Unicode 異体字セレクタ)に対応しているか?

IVS が流行っているようなので試してみた。だが、ダメだった。

フォントが IVS の定義をもっていることが大前提なので、ここでは「IPAex 明朝(ver001.01)」を用いた。このフォントの Unicode 文字「葛」(U+845B)に関する cmap は以下のようになっている。

Unicode U+845B→ グリフ aj7652 (2004JIS/78JIS 字形)
Unicode U+845B U+E0100→ グリフ aj1481 (2000JIS/83JIS 字形)

ここで「aj7652」はフォントの内部で勝手に定められた単なるグリフ名なのであるが、明らかに「Adobe-Japan1 の CID 76522 番」を意図していると見られる。これに従うと〈845B E0100〉は 2000JIS 字形になり、〈845B E0101〉は IVS が登録されていないので単なる〈845B〉と同じで 2004JIS 字形になるはずである。そこで次のような plain XeTeX 文書を試してみた。


% 文字コードUTF-8; plain XeTeX 文書
\font\fIpaExMin="IPAex明朝"\relax \fIpaExMin
奈良県葛^^^^^e0100城市 / 東京都葛^^^^^e0101飾区

結果は、「E0100、E0101 のグリフがない」という警告が出て、「葛」の文字の右に「.notdef グリフ」が出力されるという惨憺たるものだった。少なくとも私の環境(Windows Vista + W32TeX)の XeTeX は IVS に対応していないようだ。ただし、XeTeX の性質を考えると、OS(やそのバージョン)に依存して結果が変わる可能性がある。またそうでないにしても、非対応である原因は XeTeX 本体の実装というよりもそれが利用する外部ライブラリの方にありそうだ。