いろんな日本語 TFM (JFM) たち
日本語な LaTeX する際のメモその 1 。
いろんな JFM たち
pTeX などの日本語用 TeX エンジンは、和文の組版に JFM(和文フォントメトリック、TFM の和文版)を用います。JFM には文字を収める箱のサイズ情報などが書かれていて、pTeX はそれを使って文字を並べて、DVI ファイルを出力します1。 例えば、p(La)TeX ではデフォルトで min10.tfm という JFM(拡張子は tfm だけど JFM)が使われます。
ところで、この min10 という JFM はどうもアレらしく、マトモを目指した様々な他の JFM が存在します。
いろんな JFM をプロパティリスト形式にして見てみて、それらがどう違うのか確認メモ。
環境: TeX Live 2019
pLaTeX で使われる JFM
JFM では文字のグループ(文字タイプ、char_type)ごとに箱のサイズやグルーなどが設定されています。0番目のグループがデフォルトとして使われます。
確認にはtftopl
の pTeX 版のptftopl
を用います。2
min10.tfm
確認方法:
ptftopl $(kpsewhich min10.tfm) | less
jis.tfm
- jsarticle などの jsclasses 文書クラスで使われる
- もちろん小書き仮名が連続しても詰まりすぎにならない
- ボディが正方形でない
確認方法:
ptftopl $(kpsewhich jis.tfm) | less
nmlminr-h.tfm
- pLaTeX で otf パッケージを読み込んだ際に使われる JFM
- ボディが正方形!
- jis.tfm とほぼ同じ
- 「?」と「 !」の後ろにグルーが入る
確認方法:
ptftopl $(kpsewhich nmlminr-h.tfm) | less
upLaTeXで使われるJFM
pLaTeX で使われる JFM とは異なる点として、upLaTeX では Unicode の文字を扱うため、JIS X 0208 外の半角カナなどについてのメトリックも書かれています。
確認にはptftopl
の upTeX 版のuptftopl
を用います。
upjisr-h.tfm
- up(La)TeX のデフォルト
- ujarticle でも uplatex オプション付き jsarticle でもこれが用いられる
- ボディが正方形!
確認方法:
uptftopl $(kpsewhich upjisr-h.tfm) | less
upnmlminr-h.tfm
- upLaTeX で otf パッケージを読み込んだ際に使われる JFM
- ボディが正方形!
- upjisr-h.tfm とほぼ同じだが、「‼」「⁇」「⁈ 「⁉」「!」「?」の後ろにグルーが入る
確認方法:
uptftopl $(kpsewhich upnmlminr-h.tfm) | less
LuaTeX-ja で使われる JFM
LuaTeX-ja でも JFM が用いられます。
LuaTeX-ja で使われる JFM は Lua で書かれているため、そのまま読みます。
jfm-ujis.lua
- LuaTeX-ja のデフォルト
- ltjsarticle で用いられる
- ボディが正方形!
- upnmlminr-h.tfm に基づいて作られている
- upnmlminr-h.tfm とは違って「゠」「–」用の文字タイプがある
確認方法:
less $(kpsewhich jfm-ujis.lua)
おわり
JFM の観点で見ると、pLaTeX はデフォルトがアレなので、upLaTeX や LuaLaTeX(+ltjsarticle) を使うのがいいみたいですね。
参考
- https://qiita.com/zr_tex8r/items/297154ca924749e62471#その1min10フォントメトリックがアレ
- LaTeX の「アレなデフォルト」 傾向と対策 その1min10フォントメトリックがアレ
- http://argent.shinshu-u.ac.jp/~otobe/tex/files/min10.pdf
- min10 フォントについて
- The publishing TeX (JFM format)
- http://tug.ctan.org/info/ptex-manual/jfm.pdf
- JFM ファイルフォーマット
- OTF - TeX Wiki
- http://ctan.math.washington.edu/tex-archive/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
- LuaTeX-ja パッケージ