德语中的 Fontspec 和 polyglossia 关闭了 NCM 中的连字 (NewComputerModern)

德语中的 Fontspec 和 polyglossia 关闭了 NCM 中的连字 (NewComputerModern)

我尝试了一些方法,但我的问题是我想要使用常见的连字符(甚至更多的连字符)。

通过测试,我注意到polyglossia使用该选项:\setdefaultlanguage[babelshorthands]{german}\setdefaultlanguage{german}似乎只是关闭了Ligatures={Common}我在中使用的fontspec

MWE(可以使用连字符,但不是德语):

% !TeX program = lualatex
\documentclass{scrartcl}

\usepackage{fontspec}
\usepackage[
    math-style=TeX,
    bold-style=ISO,
    nabla=upright,
    %partial=upright,
    warnings-off={%
            mathtools-colon,%
            mathtools-overbracket}
]{unicode-math}
\usepackage{polyglossia}
% \setdefaultlanguage[babelshorthands]{german}
% \setotherlanguage[variant=british]{english}

\setmainfont{NewCM10-Book.otf}[%
  Ligatures={Common}
]


\setsansfont{NewCMSans10-Book.otf}

\setmonofont{NewCMMono10-Book.otf}

\setmathfont[CharacterVariant=1]{NewCMMath-Book.otf}
\setmathfont[range={scr,bfscr}]{XITS Math}

\begin{document}
    Test \par 
    AE ae oe ff fi ij st ft ss ffi
\end{document}

MWE(不是可用的连字符,而是德语):

% !TeX program = lualatex
\documentclass{scrartcl}

\usepackage{fontspec}
\usepackage[
    math-style=TeX,
    bold-style=ISO,
    nabla=upright,
    %partial=upright,
    warnings-off={%
            mathtools-colon,%
            mathtools-overbracket}
]{unicode-math}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands]{german}
\setotherlanguage[variant=british]{english}

\setmainfont{NewCM10-Book.otf}[%
  Ligatures={Common}
]


\setsansfont{NewCMSans10-Book.otf}

\setmonofont{NewCMMono10-Book.otf}

\setmathfont[CharacterVariant=1]{NewCMMath-Book.otf}
\setmathfont[range={scr,bfscr}]{XITS Math}

\begin{document}
    Test \par 
    AE ae oe ff fi ij st ft ss ffi
\end{document}

我得到的德语输出是:

Package fontspec Warning: OpenType feature 'Ligatures=Common' (liga) not
(fontspec)                available for font 'NewCM10-Book' with script
(fontspec)                'CustomDefault' and language 'German'.

答案1

此字体 NewComputerModern 明确禁用了德语文本的大多数字体功能(包括连字和字距调整)。您可以通过请求其他语言(或仅请求回退语言)来重新启用它。要阻止 polyglossia 覆盖此类请求,您必须提供应应用于德语的设置的Default明确设置:\germanfont

% !TeX program = lualatex
\documentclass{scrartcl}

\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands]{german}

\setmainfont{NewCM10-Book.otf}[%
  Ligatures={Common}
]

% polyglossia would automatically add Script=Latin, Language=German.
% Instead we manually specify a german font and specify Language=Default
% to aoid the german specific feature handling in NCM.
\newfontface\germanfont{NewCM10-Book.otf}[%
  Script=Latin,
  Language=Default,
  Ligatures={Common}
]

\begin{document}
    Test \par 
    AE ae oe ff fi ij st ft ss ffi
\end{document}

相关内容