XeLaTeX で .ttf フォントを使用する際の問題

XeLaTeX で .ttf フォントを使用する際の問題

XeLaTeX で使用したい.ttfフォントがいくつかあるのですが、見つからないようです。たとえば、次のようにコンパイルします。~/Library/Fonts

\documentclass[]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}

\begin{document}
The quick brown fox jumps over the lazy dog.
\end{document}

しかし、これは起こりません:

\documentclass[]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman.ttf}

\begin{document}
The quick brown fox jumps over the lazy dog.
\end{document}

はい、Times New Roman.ttfです~/Library/Fonts

答え1

のフォント検索について誤解しているようですxetex。さまざまな検索メカニズムについては、XeTeX マニュアルですが、答えるためにもう少し要約してみたいと思います。

最初の例のように、フォント名(例えばTimes New Roman)を指定すると、

\setmainfont{Times New Roman}

すると、XeTeX はシステムのフォント ユーティリティを使用してフォントを検索します。GNU/Linux では、これは通常 ですfontconfig。XeTeX はfontconfig「Times New Roman という名前のフォントはどこにありますか?」と尋ね、fontconfig次のように応答します。「 にあります.fonts/Times New Roman/Times New Roman.ttf。」その後、XeTeX は を呼び出し、xdvipdfmそのファイルからフォントをロードします。

フォント名の代わりにファイル名を指定する場合、例えば次Times New Roman.ttfのようにします。

\setmainfont{Times New Roman.ttf}

すると、XeTeX は直ちにユーティリティに引き継いで、そのファイル (つまり、現在のディレクトリから、またはツリー経由)からxdvipdfmフォントを含めます。Times New Roman.ttfkpathseatexmf

フォントをシステムフォントとしてインストールすることをお勧めします。そうすることで、ディレクトリ内に同じフォントのコピーが複数存在することがなくなります。何らかの理由でこれが不可能な場合は、フォントファイルをドキュメントと同じディレクトリに配置するか、多くのフォントを使用する場合は、フォント専用のサブフォルダに配置する必要があります。その後、次のように相対パスでフォントを読み込むことができます。

\setmainfont{fonts/Times New Roman.ttf}

注意: ファイル名にスペースを入れるのは好きではありません。スペースを適切にエスケープしないと、一部のソフトウェアが壊れる傾向があるからです。

関連情報