ルギア君の戯言

雑多な記事。

XeTeX/LuaTeX + fontspec のフォントの指定について

どの OS でどこのフォントが見つけられるのか、っていうのが、知りたいと言っていた方を見かけたので、調べてみました。 間違っていたら申し訳ない。

凡例

指定方法

  • ○ … フォント名で指定できる。
\font\x="IPAMincho:mapping=tex-text" at 10pt
\setmainfont{IPAMincho}
  • △ … ファイル名で指定する必要があるが、パスは必要ない。
\font\x="[ipam.ttf]:mapping=tex-text" at 10pt
\setmainfont{ipam.ttf}
  • ☓ … フルパスが必要。
\font\x="[/usr/local/texlive/2017/texmf-dist/fonts/truetype/public/ipaex/ipam.ttf]:mapping=tex-text" at 10pt
\setmainfont{/usr/local/texlive/2017/texmf-dist/fonts/truetype/public/ipaex/ipam.ttf}

シンボリックリンクを作れる OS なら、texmf-local からシンボリックリンクの作成すれば、ある程度負担を減らせるが、XeTeX と LuaTeX で指定方法が同じにならないのが悩み。

  • ? … 不明。

ディレクト

「TEXMF*」 は、TEXMFDIST, TEXMFLOCAL, TEXMFSYSVAR, TEXMFSYSCONFIG, TEXMFVAR, TEXMFCONFIG, TEXMFHOME の各ディレクトリの中の、フォントが格納されるべき場所。TEXMF の場所の調べ方は、

$ kpsexpand '$TEXMFDIST'
$ kpsewhich -var TEXMFDIST

どちらでも。フォントが格納される場所は、$TEXMF*/fonts です。

もし、ここ以外にフォントがインストールされている場合の挙動は、XeTeX (kpsewhich で検索するのと等価?)と LuaTeX (luaotfload-tool で予めデータベースを作成)で異なる可能性があります。また、env コマンドなどで、TEXMF の場所を一時的に変えている場合も同様。

「ソース」はタイプセットしようとしているソースと同じディレクトリ。

Windows

場所 XeTeX (fontconfig) LuaTeX (luaotfload) 備考
システム %WINDIR%/Fonts
TEXMF*
ソース

macOS

場所 XeTeX (AAT) LuaTeX (luaotfload) 備考
システム /Library/Fonts, /System/Library/Fonts, /Network/Library/Fonts
個人 ~/Library/Fonts
iOS追加・dfont変換 (?) 「Osaka」「クレー」「游教科書」「游明朝(+36pかな)」「凸版文久」「筑紫」他
TEXMF*
ソース

その他の OS

LuaTeX の場合は、/etc/fonts.conf/usr/local/etc/fonts.conf で、システムフォントのインストール先を指定する必要があります(システムで fontconfig をインストールしていれば、大抵はこのどちらかが存在し、適切に設定されています)。

XeTeX の場合は、未調査。

場所 XeTeX (fontconfig) LuaTeX (luaotfload) 備考
システム
個人
TEXMF*
ソース