为什么 \setmainfont 在 XelateX 中区分大小写,而在 LuaLaTeX 中不区分大小写?

为什么 \setmainfont 在 XelateX 中区分大小写,而在 LuaLaTeX 中不区分大小写?

考虑以下 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\setmainfontTeX Gyre PagellaXeLaTeX

为什么会出现这种情况?是否LuaLaTeX加载XeLaTeX了不同的fontspec包,还是我遗漏了其他内容?

答案1

CW 来自评论:

luaotfload规范化字体提供的所有名称。除了小写之外,您还可以根据需要省略空格。

因此,对于 XeLaTeX,间距和大小写很重要,而对于 LuaLaTeX,则不重要。

这与引擎无关,只是luaotfload与如何处理事物(顺便说一下,与 ConTeXt 的处理方式有关)。原因很简单:字体名称是一团糟,如果您试图揭开它们背后的系统,它将困扰您和您的后代,直到第五代。由于标识符的大小写即使在字体系列中也可能有所不同,因此唯一明智的方法是完全消除它。有关luaotfload阅读texdoc luaotfload和的信息man 1 luaotfload-tool

相关内容