为什么我应该在 CTAN 的字体包中包含 AFM 文件?

为什么我应该在 CTAN 的字体包中包含 AFM 文件?

在 CTAN 上,AFM 文件通常与 type1 (PFB) 和 TFM 文件一起提供。我想知道我是否应该将 AFM 文件包含在 CTAN 的字体包中。我假设包含 AFM 文件只是为了以防您将字体与 TeX 世界之外的其他程序一起使用。这个假设是否正确,或者是否存在在随通用 TeX 发行版提供的程序中需要 AFM 的情况(例如 dvips)?

答案1

TFM 文件每个字体只能编码 256 个字符。Type1 字体及其 AFM 格式可以包含无限数量的字符,格式中使用标准化的字符名称。

LuaTeX 带有 luaotfload,无需 TFM 即可直接加载 Type1 字体,它读取 AFM+PFB 文件。在这种情况下,字符的标准化名称将映射到 Unicode,因此用户可以访问字体的所有字符,而不像 TFM 那样限制为 256 个字符。

如果您能够生成 OTF 格式,那么这将是更好的选择。LuaTeX 和 luaotfload 能够加载这些字体,并且所有字符也都可以访问。而且一切都变得更加简单,字体中可以有更多功能可供使用。

当字体包中存在 OTF 格式时,Type1 格式 (AFM+PFB) 似乎已经过时,没有理由使用这种格式。也许,你想为过时的 TeX 引擎(如 pdftex)的用户提供它,在这些引擎中,加载字体时只能使用 TFM 文件。而这些过时引擎的用户不需要 AFM 格式。

请注意,AFM 格式包含字距对数据。如果是自动生成的,则几乎每个字符都有其字距对,其中许多是不必要的。如果从 AFM 中删除这些不必要的字距对,则这些文件的大小将为“正常”。

答案2

对于正统的 TeX 生产链来说,DVIPS、DVIPDF(M)(X) 和 pdfTeX 都不需要 AFM 来工作,而兼容 pdfTeX 的处理器即使没有 AFM 也可以工作。

如果您正在分发 Type1 字体,并且用户想要在无法识别 TeX 的 TFM 格式的字体编辑器中编辑该字体,他们可以在编辑时将 AFM 导入编辑器,这样各种字体度量信息也可以更新,然后可以从 AFM 生成 TFM。

luaotfload 可以使用 AFM 加载 PFB如果没有提供 TFM

如果您可以从单独的下载位置提供 AFM,或者 AFM 实际上是直接从 TFM 生成的,则 AFM 可能不需要与上传到 CTAN 的字体一起分发。

另一个流行的排版工具 UNIX troff 需要 AFM 生成字体信息才能使用 type 1 字体。

相关内容