我正在使用 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}
]