我刚刚开始尝试在软件包中使用 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.fd
或LY1ybd2jj.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 等更不容易损坏。