Проблема использования шрифтов .ttf с XeLaTeX

Проблема использования шрифтов .ttf с XeLaTeX

У меня есть несколько .ttfшрифтов, ~/Library/Fontsкоторые я хотел бы использовать с XeLaTeX, но он, похоже, не может их найти. Например, это скомпилирует:

\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.ttfтекущего каталога, либо kpathseaиз texmfдерева.

Рекомендуется устанавливать шрифты как системные шрифты, чтобы у вас не было нескольких копий шрифта, плавающих по вашим каталогам. Если это невозможно по какой-либо причине, то вам следует поместить файлы шрифтов вместе с вашим документом в тот же каталог или, может быть, если вы используете много шрифтов, в подпапку, предназначенную исключительно для шрифтов. Затем вы можете загрузить шрифты по их относительным путям, как в

\setmainfont{fonts/Times New Roman.ttf}

Примечание: Мне не нравятся пробелы в именах файлов, поскольку некоторые программы могут выйти из строя, если их не экранировать должным образом.

Связанный контент