マクロツイーター

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

LaTeXでIVS(Unicode 異体字セレクタ)を無理やり扱う

BXfltsrc パッケージ(旧 PXfltsrc パッケージ)のバージョンアップを行ったついでに、Adobe 規定の異体字シーケンス(IVS)を OTF パッケージの \CID 命令に変換する機能(useajx オプション)を紛れ込ませておいた。まあ結局裏で Perl を動かしてテキスト変換しているだけで何も特別なことはしていない。


% 文字コードUTF-8
% platex -shell-escape で組版
\documentclass[a4paper]{jsarticle}
\usepackage{otf}
\usepackage[utf8,useux,useajx]{pxfltsrc} % useajx オプションを含める
\begin{document}
\filterstart
% 2 つの〈葛〉の後ろには U+E0100 と U+E0101 がある
奈良県葛󠄀城市 / 東京都葛󠄁飾区
\end{document}

ここでは pLaTeX を使ったが、OTF パッケージを使っているだけなので、エンジンは upLaTeX でもよい。

今回の改版の主な目的は、bxfltsrc という、非 pTeX エンジン向けに処理を調整したパッケージを追加したことである。バンドルの名前が変わったのもこのためである。この bxfltsrc パッケージは XeLaTeX でも使用可能である。というわけで、先と同じことを XeLaTeX + zxotf パッケージで試してみたら……おお、動いたぞ!


% 文字コードUTF-8
% xelatex -shell-escape で組版
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{zxotf}
\setmainfont[RawFeature=-palt]{Kozuka Mincho Pro-VI} % AJ1 の OTF が必要
\usepackage[utf8,useux,useajx]{bxfltsrc}
\begin{document}
\filterstart
奈良県葛󠄀城市 / 東京都葛󠄁飾区
\end{document}

これで面倒ではあるが XeLaTeX で IVS を扱う方法が完成した……わけではない。この方法が上手くいくためにはフォントが CID アクセス可能である必要があり、従って、本来 IVS が使えるはずなのにこの方法では失敗するケース(例えば IPAex フォント)が存在するのである。(そもそも、\CID で「代用」できるのは Adobe の IVS だけだよな……。)