在某些字体中行号不起作用

在某些字体中行号不起作用

我正在使用 Linux Libertine 字体并启用了旧式数字。

但是,在特定情况下,我想改用衬线数字。通常我应该能够切换使用,\addfontfeature但这样做不起作用。MWE:

\documentclass{minimal}
\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{Linux Libertine}

\begin{document}
C++0x

C++{\addfontfeature{Numbers=Lining}0}x

{\fontspec{Linux Libertine}C++0x}
\end{document}

输出如下所示:

C++ox
C++ox
C++0x

但是,第二行应该看起来像第三行,而不是像第一行。设置其他字体功能(例如斜线零)也不起作用。

此外,如果我使用其他字体(例如 Hoefler Text),则输出将符合预期。

有人知道这里发生什么事吗?

答案1

这是解决您问题的方法(这是关于如何添加字体功能的已知问题(请参阅评论这里这里))。解决方案是定义一个新的字体并使用它来更改数字样式:

\documentclass{minimal}
\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{Linux Libertine}
\newfontface\lining[Numbers=Lining]{Linux Libertine}
\begin{document}
C++0x

C++{\lining0}x

{\fontspec{Linux Libertine}C++0x}
\end{document}

一般来说,如果您要切换字体,最好使用\newfontfamily\newfontface命令将切换转换为宏,而不是fontspec直接调用。

相关内容