![德语中的 Fontspec 和 polyglossia 关闭了 NCM 中的连字 (NewComputerModern)](https://linux22.com/image/445197/%E5%BE%B7%E8%AF%AD%E4%B8%AD%E7%9A%84%20Fontspec%20%E5%92%8C%20polyglossia%20%E5%85%B3%E9%97%AD%E4%BA%86%20NCM%20%E4%B8%AD%E7%9A%84%E8%BF%9E%E5%AD%97%20(NewComputerModern).png)
我尝试了一些方法,但我的问题是我想要使用常见的连字符(甚至更多的连字符)。
通过测试,我注意到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}