\setmainfont 适用于 XeTeX,但不适用于 LuaTeX

\setmainfont 适用于 XeTeX,但不适用于 LuaTeX

我尝试将 LuaTeX 与 Adob​​e 的 Garamond Premier Pro 一起使用,但是它不起作用,并提示:

! error:  (type 0): cannot find file ''
!  ==> Fatal error occurred, no output PDF file produced!

而 XeTeX 编译得很好。

我设法将问题缩小到以下代码:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\begin{document}
hello
\end{document}

我正在使用 TeXLive 2018。

根据 Ulrike 的建议,我通过文件名更改了字体名称:

\documentclass{article}
\usepackage{fontspec}
% \setmainfont{Garamond Premier Pro}
\setmainfont{GaramondPremrPro.otf}
\begin{document}
hello
\end{document}

这不起作用:/

因此,我尝试GaramondPremrPro.otf从安装目录 ( $HOME/.local/share/fonts/) 复制到当前目录,然后它成功了(如果我将它们放在 texmf 树中的目录中,它也会成功)。所以我猜问题出在 Ubuntu 的字体目录中……


附录:我觉得有些事情很奇怪……

假设我只有当前目录中的文件GaramondPremrPro.otf,并通过文件名调用字体:

\documentclass{article}
\usepackage{fontspec}
% \setmainfont{Garamond Premier Pro}
\setmainfont{GaramondPremrPro.otf}
\begin{document}
hello
\bfseries
hello
\end{document}

我收到仅字体替换警告,因为 LaTeX 找不到粗体字体文件:

LaTeX Font Warning: Font shape `TU/GaramondPremrPro.otf(0)/bx/n' undefined
(Font)              using `TU/GaramondPremrPro.otf(0)/m/n' instead on input line 7.

但是,如果我用字体名称调用它:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
% \setmainfont{GaramondPremrPro.otf}
\begin{document}
hello
\bfseries
hello
\end{document}

cannot find file ''从上面得到了神秘的信息。

如果我删除该\bfseries指令,两个版本都可以运行。

答案1

看来其中一个缓存文件已损坏。

删除缓存文件后

/usr/local/texlive/2018/texmf-var/luatex-cache/generic/names/

以及

/usr/local/texlive/2018/texmf-var/luatex-cache/generic/fonts/otl

并让 luaotfload 重新创建字体可以使用的所有内容。

相关内容