使用 Arkandis 和 fontaxes 的 Berenis 字体对老式数字进行衬线

使用 Arkandis 和 fontaxes 的 Berenis 字体对老式数字进行衬线

我刚刚开始尝试在软件包中使用 Berenis 字体fontaxes,并收到以下警告信息:

Package fontaxes Warning: I don't know how to decode
(fontaxes)                figuresalt `2' on input line 8.

Package fontaxes Warning: I don't know how to decode
(fontaxes)                family `ybd2' on input line 8.

这是我应该担心的事情吗?或者有没有办法让两者之间更好地兼容?

MWE 如下:

\documentclass{article}

\usepackage[lf]{berenis}
\usepackage{fontaxes}

\begin{document}

test \textfigures{1234} \liningfigures{1234} test

\end{document}

这似乎做了“正确的事情”,但从包[lf]中删除该选项berenis表明它无法适当地选择衬里图形。

我还看到编译时无法找到LY1ybd2j-OsF.fdLY1ybd2jj.fd。我应该担心这个吗?

berenis包似乎包含了用于选择图形样式的命令,我宁愿不使用它,因为我已经有相当多的文本使用了fontaxes样式命令。

谢谢!

答案1

berenisadf 与 fontaxes 不兼容。

berenisadf.sty 加载 nfssext-cfr.sty,它是 nfssext.sty 的扩展,是《字体安装指南》的一部分。基本上,这要求以特定方式命名字体(根据 Karl Berry 为 TeX 字体开发的标准方案)。

fontaxes.sty 要求以特定方式命名字体,这不符合 TeX 字体的标准命名方案。这不是批评。使用非标准命名可以更明显地看出特定字体变体具有哪些功能。(“Osf”比“j”更透明。)但从 TeX 的角度来看,它是非标准的。

这两个软件包都提供了字体功能(例如不同样式的数字)的访问,方法是定义类似于标准 LaTeX 字体选择命令的命令。但它们仅通过宏定义,因此它们依赖于以特定方式分解字体名称。一个软件包以一种方式执行此操作(针对标准命名的字体),另一个软件包以另一种方式执行此操作(针对非标准命名的字体)。

这就是找不到字体的原因。就 pdflatex 而言,您使用的命令要求的字体不存在。.fd 是字体定义文件。它是 latex 查找字体的方式。pdflatex 告诉您它找不到定义您请求的字体的文件。因此,它找不到字体。当您将 lf 选项传递给包时,字体选择命令会失败,但您仍然会得到衬线图形,因为无论如何您都在使用它。当您不传递此选项时,您会得到非衬线的默认图形。

您的示例中的两个字体选择命令均失败。我目前不确定为什么第一个命令似乎有效,因为我不太清楚 fontaxes 包是如何工作的。但如果您查看输出,pdflatex 肯定会报错。

如果您不想重做文本,我建议您尝试这样的操作,尽管我不能保证这在所有情况下都有效:

\documentclass{article}

\usepackage{berenis}
\DeclareTextFontCommand{\textfigures}{\ostyle}
\DeclareTextFontCommand{\liningfigures}{\lstyle}

\begin{document}

test \textfigures{1234} \liningfigures{1234} test

\end{document}

这应该比使用 \newcommand 等更不容易损坏。

相关内容