考虑以下 MWE
\documentclass{article}
\usepackage{lipsum}
\usepackage{fontspec}
\setmainfont{tex Gyre Pagella}
\begin{document}
\lipsum[1]
\end{document}
如果我编译它,那么LuaLaTeX
一切都很好。
但是,如果我用它编译,XeLaTeX
我会得到错误
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
!
! The font "tex Gyre Pagella" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................
l.7 \setmainfont{tex Gyre Pagella}
?
这是因为我在 的参数中写了tex Gyre Pagella
而不是。如果我将其更改为 ,则可以编译它。TeX Gyre Pagella
\setmainfont
TeX Gyre Pagella
XeLaTeX
为什么会出现这种情况?是否LuaLaTeX
加载XeLaTeX
了不同的fontspec
包,还是我遗漏了其他内容?
答案1
CW 来自评论:
luaotfload
规范化字体提供的所有名称。除了小写之外,您还可以根据需要省略空格。
因此,对于 XeLaTeX,间距和大小写很重要,而对于 LuaLaTeX,则不重要。
这与引擎无关,只是
luaotfload
与如何处理事物(顺便说一下,与 ConTeXt 的处理方式有关)。原因很简单:字体名称是一团糟,如果您试图揭开它们背后的系统,它将困扰您和您的后代,直到第五代。由于标识符的大小写即使在字体系列中也可能有所不同,因此唯一明智的方法是完全消除它。有关luaotfload
阅读texdoc luaotfload
和的信息man 1 luaotfload-tool
。