Fontspec 警告字体中不提供内衬数字

Fontspec 警告字体中不提供内衬数字

使用无衬线字体 Linux Biolinum,我将选项设置NumbersLining,以便使用正常数字。这会给出以下警告消息(两次):

*************************************************
* 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 功能(但有内衬数字)。这也许可以解释为什么会产生警告。

相关内容