にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

CygwinのtexliveでXeLaTeXでフォントが使えなくなった話

XeLaTeXで以前はできていたfontspecでのフォントの指定が、今日やってみたらエラーが出るようになっていた。

環境

問題の説明


レポートを書こうと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

以上。