在 XeLaTeX 中用 \newfontfamily 定义的字体中,“–”显示为“--”

在 XeLaTeX 中用 \newfontfamily 定义的字体中,“–”显示为“--”

我正在使用 XeLaTeX 编译文档,但我很困惑。我注意到字符(短划线)在主文档中显示为正常字符,但--使用我定义的字体系列书写时显示为(两个连字符),尽管它们使用的是相同的字体。以下是 MWE 来说明我的意思:

\documentclass[]{article}

\usepackage[]{fontspec}
\usepackage[english,ngerman]{babel}

\setmainfont[SizeFeatures={Size=12]{CMU Sans Serif}
\newfontfamily\somefontfamily[SizeFeatures={Size=12}]{CMU Sans Serif}

\begin{document}

{\somefontfamily The -- looks strange}

But here -- it looks just fine.

\end{document}

尽管我使用相同的字体,为什么会有差异?

答案1

fontspec包读取fontspec.cfg(在标准目录中,因此可以在本地覆盖),其中包含

\defaultfontfeatures
 [\rmfamily,\sffamily]
 {Ligatures=TeX}

\defaultfontfeatures
 [\ttfamily]
 {WordSpace={1,0,0},
  HyphenChar=None,
  PunctuationSpace=WordSpace}

这意味着Ligatures=TeX仅适用于\setmainfont\setsansfont;其他功能适用于\setmonofont

其他字体系列可能不需要此类默认功能,因此您必须将Ligatures=TeX自己添加到其他声明的系列中。所以

\newfontfamily\somefontfamily[Ligatures=TeX,SizeFeatures={Size=12}]{CMU Sans Serif}

或(新语法)

\newfontfamily\somefontfamily{CMU Sans Serif}[
  Ligatures=TeX,
  SizeFeatures={Size=12}
]

相关内容