オレ的メモ。(“真っ当な方法”が何なのかは不明。)
前提
TeX Live/Windows 上で XeTeX を使っている。
問題
通常は、XeTeX 上で「フォント名で(ファイル名ではなく)指定できるフォント」は、そのファイルが以下のディレクトリにあるものに限られる。*1
- C:\Windows\Fonts (OSのフォントディレクトリ)
- $TEXMFDIST/fonts/opentype 以下にあるディレクトリ
- $TEXMFDIST/fonts/truetype 以下にあるディレクトリ
※ファイル名で指定する場合は、通常の Kpathsea の検索に従う。
すなわち、$TEXMFLOCAL に置いたフォントファイルは、ファイル名では指定できるが、フォント名では指定できない、ということになる。これは不便なので、$TEXMFLOCAL に置いたフォントをフォント名で指定できるようにしたい。
解決方法
以下の内容のファイル local.conf を作成する。ここで
<dir>〜</dir>
に対象となるディレクトリのフルパス名を書く。<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <dir>C:/texlive/texmf-local/fonts/opentype</dir> <dir>C:/texlive/texmf-local/fonts/truetype</dir> </fontconfig>
※ここでは $TEXMFLOCAL 以下の opentype および truetype ディレクトリを指定したが、$TEXMFHOME 以下のディレクトリでもよいし、また他の任意のディレクトリでもよい。
このファイルを $TEXMFVAR/fonts/conf/local.conf として配置する。
※$TEXMFVAR/fonts/conf は既に存在するはずである。「
fc-cache -v -r
」を実行する。
これで、local.conf に書いたディレクトリの各々とその下位のディレクトリが「フォント名による指定」の検索対象に入る。
※ $TEXMFVAR を手動で触るのは気持ちが悪いが、他の TEXMF ツリーに配置したのでは認識されないようである。(恐らく、fc-cache は Kpathsea とは無関係なため。)
解説
Windows 上の XeTeX は Fontconfig(の Windows への移植)を利用してフォントを検索している。*2設定ファイルの配置ディレクトリは $TEXMFVAR/fonts/conf である。
$TEXMFVAR/fonts/conf にある fonts.conf をみると、コメントで
To use "local.conf" for additional directories is recommended.
と書いてあり、また conf.d ディレクトリの中には 51-local.conf(“local.conf”の読込を指示するもの)だけが置かれている。
なので結局、追加の設定は $TEXMFVAR/fonts/conf/local.conf に書くのが正しい、ということになりそう。