TeX 如何使用字体

TeX 如何使用字体

我知道如果想使用 True Type 字体,可以通过xelatex或来解决问题lualatex

然而,我的问题是,为什么会这样?latex 字体和 ttf 之间的根本区别是什么,决定了这种行为,以及 [xe/lua]latex 如何克服这个问题?

答案1

嗯 pdflatex在一定程度上处理 True Type 字体。例如,winfonts 包允许在 Windows 中使用 arial.ttf 和其他 TrueType 字体。pdftex 与新引擎 xetex 和 luatex 之间的主要区别不是字体格式,而是

  1. 具有度量信息的 tfm 文件的存在:使用 pdftex 时,tfm 文件必须在编译之前存在,但 xetex 和 luatex 可以根据实际字体动态创建信息。

  2. 字体中的字形数量。pdftex 每个 tfm 只能处理 256 个字形。因此,如果字体有更多字形,则必须创建多个 tfm(可能还​​有虚拟字体和 .enc 文件)。

为 pdftex 设置字体需要一些时间。使用 xetex 和 luatex 通常可以在几分钟内使用它。

答案2

LaTeX 字体系统确实很复杂。通过查看 TeX 字体的源代码,你就会明白为什么它如此困难。

一个例子,droid将 droid 字体提供到 LaTeX 中的包:http://www.ctan.org/tex-archive/fonts/droid

TeX 如何使用字体

Tex 不处理字体,在 tex 编译器的第一个实现中(没有 PdfLatex、Luatex……),tex 编译器生成 dvi 文件。该文件最终被处理为生成 pdf。

Tex 仅管理度量。tex 编译器的主要工作是将框放入文档中的正确位置。此外,dviToPdf 仅管理 T1 字体(无 ttf,无 otf)。

此外,Tex 仅管理可包含 255 个字形的代码页。(inputenc 包的 T1 选项指定要加载的正确字形页,根据所使用的语言还存在一些其他字形页)。

将字体转换为 Tex 格式的工作是什么

有了前面这些解释,我可以解释字体转换的工作了。

  • 首先,您必须将 ttf 字体转换为 T1(非常简单)。
  • 其次,您必须编写所有代码页转换。所有字形都通过其在字体中的位置和描述正确字形的文本 ASCII 码来识别。这些代码没有标准化,这项工作需要由人工完成(这是这项工作的大部分内容)
  • 最后,你应该使用 metafont 生成一些字体变体,比如倾斜字体

如何绕过这些限制

一些替代的 Tex 编译器能够管理 ttf 字体。如果可以,你应该考虑使用这些。比如 LuaTeX 或 XeTeX。

更多信息

我只是对 latex 字体编译做了一个基本的介绍,对于 droid 字体,作者利用业余时间花了大约 6 个月的时间才实现这个成果。

相关内容