Fontspec、tocloft 和 bfseries 的奇怪结果

Fontspec、tocloft 和 bfseries 的奇怪结果

我正在使用tocloftfontspec重新格式化目录。

我有这个代码:

\newfontface\Verdana{Verdana1}[
   Path=fonts/,
   Extension=.ttf,
   BoldFont=Verdana1b,
   BoldFeatures={SmallCapsFont={Verdana1b}}
]
\usepackage[titles]{tocloft}
\renewcommand\cftchapfont{\normalfont\fontsize{10}{12}\Verdana\selectfont\sc\bfseries\expandafter}

这是结果。请注意章节号的大小与页码的大小。

结果

另一方面,如果我切换\bfseries到,\bf我只会得到具有正确章节号大小的粗体文本;如果我仅使用,\sc我也会得到正确的章节号大小,但不是粗体。

我有一个解决方案:

% THESE TWO LINES HAVE A TWISTED HACK
\renewcommand\cftchappresnum{\fontsize{17}{12}\selectfont}
\renewcommand\cftchapaftersnum{\fontsize{10}{12}\selectfont.}

但看起来,它看起来是可以接受的。

如果您知道为什么会发生这种情况,以及如何解决它,我将非常高兴。

答案1

正如 David Carlisle 指出的那样,\sc忽略了字体系列。使用\scshape需要具有该功能的字体,这是我使用 FontForge 时做的事情。

我的主要问题是如何正确配置字体。这是对我有用的结果:

\newfontface\Verdana{Verdana1}[
   Path=fonts/,
   Extension=.ttf,
   BoldFont=Verdana1b,
   BoldFeatures = {Letters=SmallCaps},
]
\usepackage[titles]{tocloft}
\renewcommand\cftchapfont{\normalfont\fontsize{10}{12}\Verdana\selectfont\bfseries\scshape\expandafter}

因此,Verdana1b.ttf具有带有小型大写的粗体字体,但似乎如果我没有在其功能中指定小型大写字母的存在,它将不会被加载。

相关内容