マクロツイーター

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

TeX で TTC フォントする件に関する素朴な疑問

各種マニュアルを眺めてみたがよくわからない……。

前提

XeTeX や LuaTeX で TrueType/OpenType フォントを使う場合、フォントを「フォント名で指定する」ことも「ファイル名で指定する」ことも可能である。*1

[XeTeX]
% plain XeTeX 文書
\font\fTestA="[ipam.ttf]" % ファイル名 "ipam.ttf"
\font\fTestB="IPAMincho"  % フォント名 "IPAMincho"
[LuaTeX + luaotfload]
% plain LuaTeX 文書
\input luaotfload.sty
\font\fTestA={file:ipam.ttf}   % ファイル名
\font\fTestB={name:IPAMincho}  % フォント名
% ファイル名/フォント名の間の自動判定も可能
\font\fTestC={ipam.ttf}
\font\fTestD={IPAMincho}
[XeLaTeX/LuaLaTeX + fontspec]
% XeLaTeX/LuaLaTeX 文書
\documentclass{article}
\usepackage{fontspec}
% fontspecは基本的に自動判定になる
\newfontfamily{\fTestA}{ipam.ttf}   % ファイル名
\newfontfamily{\fTestB}{IPAMincho}  % フォント名

ところが、複数のフォントが一つのファイルに収められている TrueType Collection(TTC)形式のフォントファイルの場合に「ファイル名を指定する」インタフェースを用いる場合は、TTC の中の“何番目”のフォントを使うのかを示す番号を一緒に与える必要がある。(dvipdfmx のマップファイルを書いた経験のある人なら理解できるだろう。)

XeTeX の \font プリミティブの場合、次のような形式で“番号”(0 オリジン)を指定することができる。

% plain XeTeX 文書
\font\fTestA="[hgrpp1.ttc:1]" % hgrpp1.ttcの1番目(HGP創英角ポップ体)

疑問その 1

それに対して、LuaTeX(+ luaotfload)の \font プリミティブでの「ファイル名指定のインタフェース」では、マニュアルを読む限り、“番号”を指定する方法が見当たらない。ちなみに、LuaTeX では「XeTeX の \font の書式」も(互換性のため)サポートしているが、上で示した“[hgrpp1.ttc:1]”という書き方ではコンパイルが通らなかった。((番号のない“[hgrpp1.ttc]”ならば可能であり、この場合は hgrpp1.ttc の“0 番”のフォント(HG創英角ポップ体)が使われる。))

果たして、TTC の番号を指定する方法は本当に存在しないのだろうか。

疑問その 2

fontspec パッケージの各種命令(\newfontfamily\setmainfont など)についても、TTC ファイルをファイル名で指定する場合に番号を指定する方法が見当たらないように思える。

果たして、TTC の番号を指定する方法は本当に存在しないのだろうか。

*1:実は、どのフォントが「フォント名で指定」できてそのフォントが「ファイル名で指定」できるのかは、環境(OS や TeX 配布の種類)およびエンジン(XeTeX か LuaTeX か)により異なる。その辺りの事情は結構複雑なのであるが、今回の問題とは無関係なので詳細は割愛する。Windows 上の TeX Live は一番単純であり、「TEXMF ツリーに配置された、または Windows 自体にインストールされた TTF/OTF」は全てフォント名とファイル名の両方で指定可能である。