Fontspec、开放字体和衬线数字

Fontspec、开放字体和衬线数字

所以我遇到的问题是:我正在使用 fontspec,而我的许多字体仅在小写字母字体中才有衬线图形。所以我的问题是,当涉及到数字(章节编号、脚注等)时,我如何告诉 XeLaTeX 从这些文件中获取它?而不是它用于其他所有内容的常规字体文件?有没有类似的命令\setfigurefont

答案1

最好修补输出数字的命令(以及标点符号和大写字母)。不过,列出所有这些命令可能会很乏味,所以也许你应该\arabic直接选择:

\newfontfamily\myLFfont[Numbers=Lining]{fontLF.otf} 
\let\arabicnumber\arabic
\def\arabic{\myLFfont\arabicnumber}

答案2

将其发布在这里以便我可以包含代码。

这个问题(尤其是第二个答案)有什么帮助吗?如果你有 LaTeX 的设置,你似乎可以使用类似建议的代码将其与 fontspec 结合起来这里

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\unicodefont{Lucida Grande}
\usepackage{mathpazo}
\usepackage[T1]{fontenc}
\begin{document}
A legacy \TeX\ font. {\unicodefont A unicode font.}
\end{document}

如果许可证允许,将字体转换为 type1 格式并生成 LaTeX 或 pdfLaTeX 的支持文件可能是最简单的,因为在这种情况下使用 opentype 字体和 XeLaTeX 没有真正的优势,这样做只会使事情复杂化。

无论您是否可以将字体本身转换为 type1,您都可以执行以下操作:

  1. 为字体生成 .afm 文件。这将为您提供一些内容,例如方廷斯特知道如何处理。
  2. 使用中的说明Philipp Lehman 的字体安装指南但要创建虚拟字体,从小型大写字母中获取衬线(而不是旧式)数字,因为这就是您的文件组织方式。教程 3 解释了如何执行此操作,但如果您不熟悉 fontinst,则需要阅读早期的教程。
  3. 这将允许您创建需要使用包含衬线数字的虚拟字体的文件,然后您可以在排版文档时简单地使用适当的系列。
  4. 您将需要为 TeX 正确安装字体,尽管为了测试,您只需将所有内容放在工作目录中,它就可以工作。

我认为如果您使用 XeLaTeX,这将允许您使用 opentype sc 字体中的衬线数字以及标准直立 opentype 字体中的常规大写和小写字母。如果您被允许转换它们,创建 type1 字体将为您提供更大的灵活性,因为您也可以将它们与常规 LaTeX 一起使用。

我知道 LuaTeX 可以动态创建虚拟字体,所以您也可以研究这种可能性,尽管我不知道它是如何工作的,或者在这种特殊情况下它是否会为您提供更简单的解决方案。

您将无法访问您拥有的字体的任何 opentype 功能。但是,从您对字体的描述来看,我怀疑这不会给您带来任何损失。听起来好像字体没有配置为使用 opentype 提供的功能,而且您无论如何都无法使用字体没有的功能。(如果它们是在考虑 opentype 的情况下构建的,我希望不同样式的数字包含在同一个字体中并作为 opentype 功能启用。这会让事情变得容易得多,但不幸的是,您实际上并没有这样做。)

相关内容