XeLaTeXで以前はできていたfontspecでのフォントの指定が、今日やってみたらエラーが出るようになっていた。
問題の説明
うーむ、\setmainfontするとfontspecがfont-not-foundとつぶやく。なぜだー…。
— にせねこ (@nixeneko) 2016年5月12日
レポートを書こうとXeLaTeXでfontspecパッケージでフォントを指定した.texファイルをコンパイルしようとしたら、
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! fontspec error: "font-not-found" ! ! The font "IPAMincho" cannot be found. ! ! See the fontspec documentation for further information. ! ! For immediate help type H <return>. !............................................... l.7 \setjamainfont{IPAMincho}
みたいに怒られた。IPA明朝が見つからないのだという。
悪いのは日本語フォントだけかなと思って、日本語の指定を消してみたけれど
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! fontspec error: "font-not-found" ! ! The font "Times New Roman" cannot be found. ! ! See the fontspec documentation for further information. ! ! For immediate help type H <return>. !............................................... l.6 \setmainfont{Times New Roman}
Times New Romanも無いよと怒られた。
以前同じマシンでコンパイルできていた.texファイルも同様にコンパイルが通らない。
どうやらWindowsにインストールされたフォントが認識できていないようである。
もしかしたらtexlive等のパッケージを更新した(あるいは入れなおした? 記憶が曖昧)のが原因かもしれない。
解決策
fontconfigに認識されているフォントであればXeLaTeXで使うことができる。そして、fontconfigが認識しているフォントを確認するためには
fc-list
というコマンドを使う。調べたところ、どうやらWindowsにインストールされたフォントが認識されていないようだった。
そこで、Windowsにインストールされたフォントをfontconfigが認識するように設定する。
設定ファイルは /etc/fonts/local.conf である。無かったので作成した。そこにWindowsのフォントフォルダを設定する次の一行を書く(あるいは追記する)。
<dir>/cygdrive/c/Windows/Fonts</dir>
(local.confが存在していない場合には次のコマンドで同じことができる。
echo "<dir>/cygdrive/c/Windows/Fonts</dir>" > /etc/fonts/local.conf
)
最後にfontconfigのキャッシュを更新して終了。
fc-cache
以上。