更新后添加字体功能无法使用

更新后添加字体功能无法使用

我最近更新了我的 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}

相关内容