如果我使用 newpx 包,然后加载 fontspec 并尝试选择字体,则会失败。请参阅下面的最小示例。
使用 TeX Live 2021 和今天(2022-03-28)更新的软件包(通过 tlmgr)时,fontspec 字体选择失败(通过在 fontspec 之前加载 newpx)的文件(使用 lualatex 编译)曾经可以与早期版本的 TeX Live 一起使用(TeX Live 2020 或 2021,但使用旧版本的软件包,我无法具体确定时间)。
我无法判断问题是由于 newpx 还是 fontspec(或 luaotfload 或其他什么)造成的。
您能否帮助我找出原因,找到解决方法,并告诉我向谁报告该问题以便修复?
感谢,并有一个愉快的一天
%%%% MWE
\documentclass{scrartcl}
\usepackage{newpxtext} % comment newpx and everything is ok
% this used to work with an older version of TeX Live (older version of the packages)
\usepackage{fontspec}
% \usepackage{kurier} % not needed
\setmainfont{texgyrebonum-regular.otf} % font selection by file name gives no error but does not select the correct font: newpx font (TeXGyrePagellaX) used instead of TeX Gyre Bonum
\setsansfont{Kurier} % font selection by font name gives a fontspec error: "The font (Kurier, or any other font selected by font name) cannot be found"
\begin{document}
ABCXYZ
\end{document}
%%%%
答案1
应该向作者报告该问题,但如果您实际上不想使用它的字体,那么newpxtext
您也不应该加载该包。newpxtext
字体加载失败的原因\usepackage{newtxtext}
是,它newtxtext
执行了\defaultfontfeatures
一系列实际上只适用于其自身字体的功能,但由于这些功能被设置为默认值,因此会影响所有后续加载的字体。特别是它设置了选项,Extension = .otf
指定所有后续名称都应解释为.otf
文件的文件名。
最好的解决方法是不要加载newpxtext
,但您也可以\defaultfontfeatures
通过重置默认字体功能来解决问题:\defaultfontfeatures{}
在加载newpxtext
和加载另一种字体之间添加。
这仍然留下了字体更改实际上没有应用的问题。这是因为包newpxtext
期望它只在实际控制字体时才加载,因此更改字体可能只是\begin{document}
为了阻止前导码干扰。您可以通过在\setmainfont
后面移动来避免这种情况\begin{document}
,但那时您会遇到很多麻烦,只是为了加载您实际上不想使用的包……
答案2
如果你想使用带有 的 Palatino 版本fontspec
,请使用
\setmainfont{TeX Gyre Pagella}
或者
\setmainfont{Domitian}
这两个都是 Adobe Palatino 的克隆版本。您也可以使用系统上已安装的 Palatino 版本,例如带有 Microsoft Windows 或 Office 的 Palatino Linotype。
如果您还想替换newtxmath
,请加载unicode-math
然后使用
\setmathfont{TeX Gyre Pagella Math}
或者
\setmathfont{Asana Math}