使用无衬线字体 Linux Biolinum,我将选项设置Numbers
为Lining
,以便使用正常数字。这会给出以下警告消息(两次):
*************************************************
* fontspec warning: "icu-feature-not-exist-in-font"
*
* OpenType feature 'Numbers=Lining' (+lnum) not available for font 'Linux
* Biolinum O/B' with script 'Latin' and language 'Default'.
*************************************************
尽管如此,输出仍正确打印了正常的内衬数字。这是怎么回事?下面是带有输出的 MWE。
\documentclass{article}
\usepackage{fontspec}
\setsansfont[Numbers = Lining]{Linux Biolinum O}
\begin{document}
Numbers: \textsf{0123456789}
\end{document}
答案1
这对我有用:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[RawFeature=+onum]{Linux Libertine O}
\setsansfont[RawFeature=+lnum]{Linux Biolinum O}
\begin{document}
0123456789
Numbers: \textsf{0123456789}
\end{document}
答案2
我使用其他字体时也遇到了同样的问题。我认为这是字体设置方式的问题,而不是 Fontspec 的问题。
我认为发生的情况是:Fontspec 尝试启用字体中未正确标记的功能,因此失败并返回默认配置,按需要打印大写数字。
为了验证这个假设,我尝试了上述答案的一个版本,本质上颠覆了旧式图形的启用:\addfontfeature{RawFeature=-onum}
这工作得很好并且避免了警告。
答案3
Linux Biolinum 的粗体版本没有 lnum 功能(但有内衬数字)。这也许可以解释为什么会产生警告。