我最近更新了我的 LaTeX,使用时出现错误\addfontfeatures
这是我的 MWE(你可以使用任何字体)
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\setmainfont{MetaSerifPro-}[
Extension = .otf,
UprightFont = MetaSerifPro-Book,
ItalicFont = MetaSerifPro-BookItalic,
BoldFont = MetaSerifPro-Bold,
BoldItalicFont = MetaSerifPro-BoldItalic,
% Numbers = Uppercase
]
\begin{document}
\addfontfeatures{Numbers = Uppercase}
Hello 123
\end{document}
我收到错误
luaotfload | aux : font no 34 (nil) defines no feature for script latn with lang
uage eng...texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua:252: bad arg
ument #1 to 'stringgsub' (string expected, got boolean).
<to be read again>
\scan_stop:
l.20 \addfontfeature{Numbers = Uppercase}
?
! Emergency stop.
<to be read again>
\scan_stop:
l.20 \addfontfeature{Numbers = Uppercase}
但是,如果我取消Numbers = Uppercase
序言中的注释并注释掉行\addfontfeature
,则一切正常。我尝试每种字体时都会收到此错误,因此似乎问题出在fontspec
。
我使用 LuaLaTeX。
更新:看来这个错误已经在最新的补丁fontspec
(2.7f)中被修复了
答案1
更新
fontspec 2020/01/26 v2.7g 已解决该问题。不再需要解决方法
===================
您可以尝试这个解决方法。它可能会错误地设置语言或脚本,但您可以在字体声明中更正此问题:
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\setmainfont{TeXGyreHeros}[
Numbers = Uppercase
]
\ExplSyntaxOn
\tl_set:Nn \l__fontspec_pre_feat_sclist
{
mode = \l__fontspec_mode_tl ;
\tl_if_empty:NF \l__fontspec_shaper_tl
{
shaper = \l__fontspec_shaper_tl ;
}
\tl_if_empty:NF \l__fontspec_script_tl
{
script = \l__fontspec_script_tl ;
}
\tl_if_empty:NF \l__fontspec_lang_tl
{
language = \l__fontspec_lang_tl ;
}
}
\ExplSyntaxOff
\begin{document}
\addfontfeatures{Numbers = Uppercase}
Hello 123
\end{document}