ごたくを並べる前に、プロポーショナルかなを使う組版例を以下に示す。プロポーショナルかなを用いたのが上側、普通のかなを用いたのが下側である。
\documentclass{ltjsarticle}
\usepackage{metalogo} % for \LuaLaTeX command
\usepackage{luatexja-fontspec}
\newopentypefeature{PKana}{On}{pkna} % "PKana" and "On" can be arbitrary string
\setmainjfont[
JFM=prop,PKana=On,Kerning=On,
BoldFont={YuMincho-DemiBold},
ItalicFont={YuMincho-Medium},
BoldItalicFont={YuMincho-DemiBold}
]{YuMincho-Medium}
\begin{document}
\LuaLaTeX で、あっと驚きのプロポーショナルかな組版。
\jfontspec[]{YuMincho-Medium} \LuaLaTeX で、あっと驚きのプロポーショナルかな組版。
\end{document}
好き嫌いはあるかもしれないが、プロポーショナルかなの側では、まず明らかに「っ」の横幅が小さくなっているほか、「き」が浮いている感じがなくなり「プロポーショナル」というカタカナ語のまとまりもよくなっている。
以下、どのようなことを行っていることを説明する。ただ、TeXにもOpenTypeにもさほど詳しくないのでいいかげんなことを書いているかもしれない(OpenTypeについては http://kanji-database.sourceforge.net/fonts/opentype.html の記載、およびそのページからリンクされている一次資料が、大いに参考になる)。
まず背景として、 LuaTeX-ja というpTeXに代わる日本語TeX環境を開発するプロジェクトの存在がある。LuaTeXという新しいTeXのエンジンをベースにし、Luaスクリプトによって和文組版を実現するというものである。LuaLaTex-jaにおいては、LuaTeXの持つOpenTypeやUnicodeのネイティブサポートを始めとするモダンな機能をそのまま日本語TeXで用いることができる。
日本語TeX環境において、和文グリフの大きさなど(メトリクス)は、JFMと呼ばれるファイルに指定されている(なおLuaTeX-jaではJFMはLuaスクリプトである)。LuaTeX-jaの標準では和文グリフの横幅をTeXの側で固定にしているJFMファイルが使われるのだが、当然このままではプロポーショナル幅のフォントを使ったところで意味がなくなってしまうので、「フォントに指定された横幅を使う」という設定になっているJFMファイルを参照するようにしないといけない。なお、このことはLuaTeX-jaのドキュメントにも記載されている。
しかし、それだけではプロポーショナルかなは使えない。游明朝体で普通にかなを使った場合に参照されるグリフは、固定幅になるよう設定されているかなグリフであるからだ。おそらく、プロポーショナルかなが使える他のOpenType書体でも同様である。フォントファイルの中に存在するプロポーショナルかなのグリフを参照するためには、“pkna”という機能(feature tag)を使いたいと指定した上で、グリフ(のCID)を別のグリフ(のCID)に置き換えるテーブル(GSUBテーブル)を引かなければいけない。技術的には縦組用かなと横組用かなの切り替えと同じである。LuaTeXはOpenTypeのfeatureの指定に対応しており、LuaTeX-jaからも使えるようになっている。
ついでに、ペアカーニング機能も有効としたい。ペアカーニング機能は、特定の文字が並んだときに横幅を調整する機能である。欧文では一般的で、たとえば“AW”は横幅が詰められる。こちらも、GSUBテーブルで設定するというわけではないのだが、おおむね同様にOpenTypeの“kern”というfeatureを指定することで対応できる。
さて、ここまではplain TeXの話である。(Lua)LaTeXで使う上ではfontspecの枠組みの中でプロポーショナルかなを使えるようにしたいところである。fontspecではOpenTypeのfeatureを直接指定する代わりにあらかじめ定義されたオプションをfontspecに与えるようになっている。kernに相当するオプションはKerningなのだが、pknaに相当するオプションは現状定義されていので、こちらは自分でオプションを定義してやる必要がある。すると残りはJFMである。和文フォントの指定のためには素のfontspecではなくLuaLaTeX-jaが提供するluatexja-fontspecを用いることとなる。luatexja-fontspecは、実はJFMをオプションとして指定できるようになっている。
ここまでの内容を全部TeXで書くと、上のLuaLaTeX-jaのソースとなる。