newpx 使 fontspec 失败

newpx 使 fontspec 失败

如果我使用 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}

这两个都是 Adob​​e Palatino 的克隆版本。您也可以使用系统上已安装的 Palatino 版本,例如带有 Microsoft Windows 或 Office 的 Palatino Linotype。

如果您还想替换newtxmath,请加载unicode-math然后使用

\setmathfont{TeX Gyre Pagella Math}

或者

\setmathfont{Asana Math}

相关内容