大多数 tfm 字体都找不到

大多数 tfm 字体都找不到

我在使用 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.pfbpdftexxetexxdvipdfmxmd-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加载pdftexxetexPFB 加载之间的行为差​​异以前从未被注意到,可能是因为没有人尝试将 Garamond 与 XeLaTeX 一起使用mathdesign

相关内容