我在使用 texlive 2020 时遇到了同样的问题,并完整安装了 texlive 2021:
\font\tenrm=mdugmm7y at 10pt
\tenrm
Hello World!
\bye
不适用于 tex、pdftex、xetex 或 luatex。它们都抱怨无法访问字体。几乎所有字体都会发生这种情况。即使我将 mdugmm7y.tfm 和 mdugmm7y.vf 放在同一目录中,它也无法工作。xetex 的错误是:
xdvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...
Tex 创建了一个 dvi,但是那里只有随机符号,没有实际文本。
在 latex 中将 truetype 或 openttype 字体与 fontspec 结合使用效果很好。我只在使用 tfm 字体时遇到这些问题。
答案1
xdvipdfmx
请注意,您通常可以通过手动运行(之后)从 xetex 获取有关字体相关问题的更好的错误消息,xetex --no-pdf
因为不幸的是,自动调用会xdvipdfmx
抑制错误消息。
由于字体的 tfm 文件位于 texlive 中,因此您不会收到 xetex 的错误
$ xetex --no-pdf aa803
This is XeTeX, Version 3.141592653-2.6-0.999993 (TeX Live 2021) (preloaded format=xetex)
restricted \write18 enabled.
entering extended mode
(./aa803.tex [1] )
Output written on aa803.xdv (1 page, 248 bytes).
Transcript written on aa803.log.
但运行 dvi 驱动程序后
$ xdvipdfmx aa803.xdv
aa803.xdv -> aa803.pdf
[1
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 ugmm8a
mktexpk: don't know how to create bitmap font for ugmm8a.
mktexpk: perhaps ugmm8a is missing from the map file.
kpathsea: Appending font creation commands to missfont.log.
xdvipdfmx:warning: Could not locate a virtual/physical font for TFM "md-gmm8y".
xdvipdfmx:warning: >> This font is mapped to a physical font "ugmm8a".
xdvipdfmx:warning: >> Please check if kpathsea library can find this font: ugmm8a
xdvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...
No output PDF file written.
因为 tfm 文件引用了虚拟字体,但实际字体(对应于 URW Garamond)默认不在 texlive 中。
getnonfreefonts
您可以按照此处的说明安装缺失的文件
https://tug.org/fonts/getnonfreefonts/
请注意,不建议使用带有 xetex 的 8 位传统字体,这些编码的连字模式不会加载到默认格式中。如果您写的是没有重音字母的英语,这不会有太大区别,但在许多语言中却很重要。
答案2
这个谜团是可以解释的。如果我能解释的话
vftovp mdugmm7y
我明白了
[...]
(MAPFONT D 0
(FONTNAME md-gmm7y)
(FONTCHECKSUM O 23602320625)
(FONTAT R 1.0)
(FONTDSIZE R 9.962616)
)
(MAPFONT D 1
(FONTNAME md-gmm8y)
(FONTCHECKSUM O 32734444133)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
[...]
(CHARACTER O 170
(CHARWD R 0.498)
(CHARHT R 0.707)
(CHARDP R 0.238)
(MAP
(SELECTFONT D 1)
(SETCHAR O 247)
)
)
(CHARACTER O 171
(CHARWD R 0.498)
(CHARHT R 0.6875)
(CHARDP R 0.238)
(MAP
(SELECTFONT D 1)
(SETCHAR O 206)
)
)
(CHARACTER O 172
(CHARWD R 0.498)
(CHARHT R 0.707)
(CHARDP R 0.183)
(MAP
(SELECTFONT D 1)
(SETCHAR O 207)
)
)
[...]
字体通过 和映射md-gmm8y
到,但前者只加载 PDF 中实际需要的 PFB 文件,而 则希望在引用时立即访问它们。顺便说一下,从 中获取的字符是。ugmm8a.pfb
pdftex
xetex
xdvipdfmx
md-gmm8y
§ † ‡ ¶
现在,你瞧,ugmm8a.pfb
只有garamond
安装getnonfreefonts
(我已经在我的 macOS 机器上完成了)。如果我在 Fedora 机器上尝试示例文件而没有任何getnonfreefonts
反应,那么pdftex
就很高兴了,除非我也要求\char'170
,当我得到
!pdfTeX error: pdftex (file ugmm8a.pfb): cannot open Type1 font file for reading
安装getnonfreefonts
并执行后(具有超级用户权限)
getnonfreefonts --sys garamond
一切顺利。
可能的解释是什么?在mathdesign
开发时,URW Garamond 字体曾经在 TeX Live 中可用;后来由于许可原因被撤回。虚拟字体中添加了相关的字形,以使字体在 OMS 编码中提供完整的字体。PFB加载pdftex
和xetex
PFB 加载之间的行为差异以前从未被注意到,可能是因为没有人尝试将 Garamond 与 XeLaTeX 一起使用mathdesign
。