NewComputerModern 德语中的粗体和小写字母

NewComputerModern 德语中的粗体和小写字母

我正在加载 NCM (New Computer Modern)

\documentclass{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands]{german}
\setotherlanguage[variant=british]{english}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%           Font 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setmainfont{NewCM10-Book.otf}  % Ligatures: bei newfontface definiert

% Get Ligatures for NCM in german!
\newfontface\germanfont{NewCM10-Book.otf}[%
    Script=Latin,
    Language=Default,
    Ligatures={Common},
    ItalicFont=NewCM10-BookItalic.otf,%
    BoldFont=NewCM10-Bold.otf,%
    BoldItalicFont=NewCM10-BoldItalic.otf,%
    SmallCapsFeatures={Numbers=OldStyle}
]

\setsansfont{NewCMSans10-Book.otf}[%
ItalicFont=NewCMSans10-Oblique.otf,%
BoldFont=NewCMSans10-Bold.otf,%
BoldItalicFont=NewCMSans10-BoldOblique.otf,%
SmallCapsFeatures={Numbers=OldStyle}]

\setmonofont{NewCMMono10-Book.otf}[%
ItalicFont=NewCMMono10-Italic.otf,%
BoldFont=NewCMMono10-Bold.otf,%
BoldItalicFont=NewCMMono10-BoldOblique.otf,%
SmallCapsFeatures={Numbers=OldStyle}]

\begin{document}
    \textbf{\textsc{Text}}
\end{document}

我也不确定为什么我没有得到粗体小写字母。

我需要添加什么才能\textbf{\textsc{Text}}在文档中使用?目前我似乎只得到了粗体文本。

文本

更新

似乎有问题。如果我使用提供的名为polyglossia的包(它与 基本相同),我设法在没有 的情况下获得了小型大写字母和粗体小型大写字母。NewCMfontsetup\setmainfont{…}, …NewCMpolyglossia

只有在加载时polyglossia它才会再次中断......

不包含示例polyglossia无多语

更新2

我现在已经切换过来了babel,看起来运行正常,没有任何问题。

答案1

这里有几个相互交叉的问题。首先,当你加载时NewCM10,LaTeX 会查找文件NewCM10.fontspec。这只会在块内声明粗体和斜体SizeFeatures=,这会导致polyglossia无法找到粗体字体。解决方案是复制并粘贴文件内容.fontspec,并添加后备:

\defaultfontfeatures[NewCM10-Book]
   {
    Extension = .otf ,
    Font = NewCM10-Book,
    ItalicFont=NewCM10-BookItalic,%
    BoldFont=NewCM10-Bold,%
    BoldItalicFont=NewCM10-BoldItalic,%
    SlantedFont=NewCM10-Book,%
    BoldSlantedFont=NewCM10-Bold,%
    SmallCapsFeatures={Numbers=OldStyle},
    SizeFeatures={%
            {Size=-8, Font=NewCM08-Book,
                    ItalicFont=NewCM08-BookItalic,%
                    BoldFont=NewCM10-Bold,%
                    BoldItalicFont=NewCM10-BoldItalic,%
                    SlantedFont=NewCM08-Book,%
                    BoldSlantedFont=NewCM10-Bold,%
                    SmallCapsFeatures={Numbers=OldStyle}},
            {Size=8, Font=NewCM08-Book,
                    ItalicFont=NewCM08-BookItalic,%
                    BoldFont=NewCM10-Bold,%
                    BoldItalicFont=NewCM10-BoldItalic,%
                    SlantedFont=NewCM08-Book,%
                    BoldSlantedFont=NewCM10-Bold,%
                    SmallCapsFeatures={Numbers=OldStyle}},
          {Size= 9-, Font = NewCM10-Book,
                    ItalicFont=NewCM10-BookItalic,%
                    BoldFont=NewCM10-Bold,%
                    BoldItalicFont=NewCM10-BoldItalic,%
                    SlantedFont=NewCM10-Book,%
                    BoldSlantedFont=NewCM10-Bold,%
                    SmallCapsFeatures={Numbers=OldStyle}}%
    }}

完成后,您现在可以将字体加载为主字体:

\setmainfont{NewCM10-Book}  % Ligatures: bei newfontface definiert

该字体确实提供了Language=German但它坏了。 因此,您还可以加载,

\newfontfamily\germanfont{NewCM10-Book}[Language=German]

但是,如果你这样做,字体文件不会启用 的小型大写字母功能Language=German,因此它会中断。使用Language=Default\textsc命令将遵循传统的正字法,而不是给你一个大埃斯泽特

顺便说一句,这意味着使用babel将 New Computer Modern 设置为德文字体的人除了需要进行上述额外设置之外,还需要使用类似 的内容覆盖自动语言选择\babelfont[german]{rm}[Language=Default]{NewCM10-Book}

数学家协会

\documentclass{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands]{german}
\setotherlanguage[variant=british]{english}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%           Font 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\defaultfontfeatures[NewCM10-Book]
   {
    Extension = .otf ,
    Font = NewCM10-Book,
    ItalicFont=NewCM10-BookItalic,%
    BoldFont=NewCM10-Bold,%
    BoldItalicFont=NewCM10-BoldItalic,%
    SlantedFont=NewCM10-Book,%
    BoldSlantedFont=NewCM10-Bold,%
    SmallCapsFeatures={Numbers=OldStyle},
    SizeFeatures={%
            {Size=-8, Font=NewCM08-Book,
                    ItalicFont=NewCM08-BookItalic,%
                    BoldFont=NewCM10-Bold,%
                    BoldItalicFont=NewCM10-BoldItalic,%
                    SlantedFont=NewCM08-Book,%
                    BoldSlantedFont=NewCM10-Bold,%
                    SmallCapsFeatures={Numbers=OldStyle}},
            {Size=8, Font=NewCM08-Book,
                    ItalicFont=NewCM08-BookItalic,%
                    BoldFont=NewCM10-Bold,%
                    BoldItalicFont=NewCM10-BoldItalic,%
                    SlantedFont=NewCM08-Book,%
                    BoldSlantedFont=NewCM10-Bold,%
                    SmallCapsFeatures={Numbers=OldStyle}},
          {Size= 9-, Font = NewCM10-Book,
                    ItalicFont=NewCM10-BookItalic,%
                    BoldFont=NewCM10-Bold,%
                    BoldItalicFont=NewCM10-BoldItalic,%
                    SlantedFont=NewCM10-Book,%
                    BoldSlantedFont=NewCM10-Bold,%
                    SmallCapsFeatures={Numbers=OldStyle}}%
    }}


\setmainfont{NewCM10-Book}  % Ligatures: bei newfontface definiert

\begin{document}
    \noindent\textbf{\textsc{Frauenfußball}} \\
    \textsc{Frauenfußball} \\
    \textbf{Frauenfußball}
\end{document}

新计算机现代样本

如果您还希望它适用于无衬线字体和等宽字体,则需要对NewCMMono10-Book和执行类似操作NewCMSans10-Book

如果你真的想要大埃斯泽特? 如果你不想务实,不想切换到其他字体来进行这种替换,我确实写过2020 年的一些代码可以进行调整以利用de-alt规则并重新缩放以获取\ersatzsc命令。

相关内容