我有一个 .mf 文件,它描述了字体中的字形。使用mftrace
,我了解如何从 .mf 文件中获取 Adobe 字体度量信息 (.afm 文件) 和 Type1 字体 (.pfb 文件)。
如何在 LaTeX 中使用可缩放字体,以便它在大多数设备上都能很好地呈现并打印?(一些资料建议避免使用 TeX 位图字体来创建用于网络发布的文档)
答案1
这个问题目前无法回答。本回答旨在概述安装 TeX 字体时必须考虑的一些因素。
使用任意字体的最简单方法是使用 LuaTeX 或 XeTeX 作为编译器并加载包fontspec
。这对于 opentype 或 truetype 字体来说是理想的选择。
我假设您想使用 TeX 或 pdfTeX,因此需要使用传统的 TeX 字体。
您所问的问题没有唯一的答案。这取决于字体以及您想要使用它的目的。安装包含单个符号的字体和设计用于排版具有多个连字符、字距调整对等的文本的字体之间存在很大差异。或者,再次,设计用于数学的字体。
至少需要满足以下条件:
- PFB 字体包含绘制每个字符(字形)图片的指令;
- 一个或多个 TFM(TeX 字体度量文件)- 提供有关包含每个字符的框的大小、如何调整某些字符序列(字距对、可能是连字符)的位置的信息;
- MAP 文件的一行或多行,通常为文件片段的形式
.map
; - 一个或多个字体定义文件(
.fd
),告诉 LaTeX 何时使用字体[此信息可以在文件.sty
或.tex
文档中提供,但使用更方便.fd
)。
此外,你可能需要
- 一个或多个编码文件(
.enc
); - 一个或多个虚拟字体(
.vf
)[仅在组合不同字体的字符或需要伪造某些字符或形状时才严格需要,但在其他情况下它们也很方便]。
为了为字体创建 TFM,您需要 AFM。
关键问题:
- 您希望使用哪种编码?将字体提供的字符(或您希望使用的子集)与标准编码的字符表进行比较。例如,
T1
等OT1
。如果字体是符号字体(这意味着像 ding bats 而不是数学符号之类的东西),那么您可以跳过此步骤并使用字体自己的编码。在这种情况下,您可以安装未编码/原始字体(U
)。在所有其他情况下,您需要在标准编码中找到一个好的匹配。 - 一个 TeX 字体就够了吗?文本字体不能包含超过 256 个字符,并且一些可用位置需要用于各种机械/技术目的。完全可以使用更大的 PFB 中的所有字符。但是,在这种情况下,您必须向 TeX 提供多个 TFM,所有这些 TFM 都可能基于单个 PFB。也就是说,一个 type1 字体可以制作多个 TeX 字体。
- 在创建 TeX 字体时,包含超过 256 个字符的符号字体必须进行类似的拆分,因此,仅仅使用它们
U
并不一定意味着您想要这样做。
- 在创建 TeX 字体时,包含超过 256 个字符的符号字体必须进行类似的拆分,因此,仅仅使用它们
- 字符是如何命名的?它们的名称是否与您用于定义编码的任何文件
.etx
中的名称相匹配。.enc
根据这些问题的答案,您可以使用 等工具afm2pl
来fontinst
创建 TeX 字体。在最简单的情况下,这可能需要 5 分钟。在最复杂的情况下,可能需要更长的时间。
因此,首先评估您正在处理的内容以及您想要在 TeX 功能方面实现的目标至关重要。
答案2
据我所知,afm 文件对于 TeX 来说不是必需的。
要将 type 1 字体安装在个人目录中,请将 pfb 文件移动到$TEXMFHOME/fonts/type1/public/mypackage/
并将 tfm 文件移动到$TEXMFHOME/fonts/tfm/public/mypackage/
(cfTeX 目录结构的描述)。
您还必须创建一个名为 的映射文件,mypackage.map
其中每个字体占一行。在最简单的一种字体情况下,您必须输入myfont myfont <myfont.pfb
TeXmyfont
字体名称。将此文件移动到$TEXMFHOME/fonts/map/dvips/mypackage/
。然后创建该文件$TEXMFHOME/web2c/updmap.cfg
(如果尚不存在)并将该行添加Map mypackage.map
到此文件。
updmap
在命令行上运行,类型 1 字体应该可以工作。