了解字体形状代码,例如“TU/tahoma(0)/b/it”或“TU/pag/m/n”

了解字体形状代码,例如“TU/tahoma(0)/b/it”或“TU/pag/m/n”

我有时会收到这些字体形状代码的错误消息,但我不知道它们是什么意思,也没有找到任何相关信息。
显然,b代表bold和。但是开头的和或it代表什么?代码的结构如何?似乎字体名称排在第二位,其次是字体功能。italicmnTU

另外,我对如何在选择字体时指定字体功能感兴趣fontspec(内置和按.TTF文件)。但这可能是另一个主题。

如果有解释这一点的资料来源,我将不胜感激。不幸的是,我自己找不到。
由于我问的是基本理解,所以我没有发布 MWE 或任何错误消息。我首先尝试自己弄清楚字体的一般工作原理。

答案1

字体有五种属性:

  1. 编码
  2. 字体系列
  3. 字体系列
  4. 字体形状
  5. 字体大小

这些属性被编码在内部字体名称本身中,这是一个非常聪明的想法,当 NFSS(新字体选择方案)在 90 年代中期集成到 LaTeX 内核中时,字体管理变得有效(感谢 Frank Mittelbach 和 Rainer Schöpf)。

编码属性告诉 LaTeX 如何解释某些命令,例如\'\texttrademark。例如,使用 OT1 编码,\'(基本上)解释为“在下一个字符上方添加一个尖音符”;在 T1 中,它变成“查找下一个字符,如果是带有尖音符的预复合字符,则使用它,否则在其上放置一个尖音符”。使用 TU 时,它类似于 T1,但不是放置尖音符,而是告诉 TeX(在 Unicode 感知引擎中)在字符后放置一个组合尖音符(如果不存在预组合)。

诸如此类的命令的\texttrademark处理方式略有不同:在 OT1 或 T1 中,LaTeX 被指示从相应的 TS1 编码字体中选择字符(保留其他属性,如果具有这些属性的字体不可用,则可能进行一些替换);在 TU 中,它只是指向相应的 Unicode 插槽。

下一个属性是字体系列,它基本上是一个任意字符串,LaTeX 使用它与编码一起定义字体系列,可以在文档中“手动”设置,也可以通过读取字体描述文件。

使用时fontspec,字体系列会动态设置,并使用字体名称和数字构建系列名称,除非明确设置了字体系列名称。

\documentclass{article}
\usepackage{fontspec}

\setmainfont{Libertinus Serif}

\newfontfamily{\oldstandard}{Old Standard}

\newfontfamily{\futura}{Futura}[NFSSFamily=fut]

\begin{document}

\expandafter\string\the\font

\oldstandard

\expandafter\string\the\font

\futura

\expandafter\string\the\font

\end{document}

我们\the\font获取当前的内部字体名称并将\string其打印出来。

在此处输入图片描述

一些警告或信息性消息会忽略大小,而大小在发出时是无关紧要的。例如,在某些情况下会进行替换,如果替换未定义为“静默”,则会显示一条信息性消息。例如,

{\fontshape{y}\selectfont x}

你会得到

LaTeX Font Warning: Font shape `TU/LibertinusSerif(0)/m/y' undefined
(Font)              using `TU/LibertinusSerif(0)/m/n' instead on input line 14.

因为没有y定义形状。您会看到,size 属性被省略了,因为不相关。

系列和形状属性用某种任意的字符串进行编码,但有一些标准名称:

  1. 系列m表示“中等”,标准系列
  2. 系列b表示“粗体”(在某些情况下你会看到bx

字体描述文件可能定义其他几个。例如,T1 编码的 Source Sans Pro 字体定义

regular bold black semibold extralight light

并定义别名

m b eb sb el l

其他字体描述文件可能使用k黑色。里程可能会有很大差异。

形状属性类似。标准形状是

n it sl sc

但字体描述文件可能会添加它们,可能scitscsl斜体/倾斜小写字母。字符串n代表“正常”,通常是直立;it是“斜体”,sl是“倾斜”,sc是“小写字母”。

您提到的那些指的是fontspec已定义的字体,因为tahoma(0);因为TU/pag/m/n我不确定您是如何获得它的,因为没有相应的字体描述文件。但是,该字符串pag遵循 Karl Berry 的字体命名约定:在过去,文件名必须限制为最多八个字符,以符合一个愚蠢的文件系统,我相信您知道这个名字。字母“p”代表“Adobe”(提供字体的数字铸造厂),“ag”代表 Avant Garde。texdoc fontname有关该主题的更多信息,请参阅。

相关内容