如果不使用 pdfmapfile 命令则无法加载字体——为什么?

如果不使用 pdfmapfile 命令则无法加载字体——为什么?

昨天我尝试编译一个使用数学字体 MathTime Professional 2 的文档。几个月前我使用这种字体进行编译时没有问题,但这次我收到一条错误消息:

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+360/600 --dpi 360 mt2syf
mktexpk: don't know how to create bitmap font for mt2syf.
mktexpk: perhaps mt2syf is missing from the map file.
kpathsea: Appending font creation commands to missfont.log.
!pdfTeX error: pdflatex (file mt2syf): Font mt2syf at 360 not found
==> Fatal error occurred, no output PDF file produced!

我尝试了一些方法,包括按照说明重新安装字体在 Stack Exchange 上这个问题中,但没有任何效果。然而当我把

\pdfmapfile{=mtpro2.map}

放入我的 Latex 文件中,一切工作正常,并且文档使用字体进行编译。

有人知道这里发生了什么事吗?

答案1

由于使用 时文件会进行编译\pdfmapfile,因此 pdfTeX 可以正确找到映射文件片段和字体本身。问题在于 pdfTeX 用于将字体名称与字体文件匹配的映射的更新。

[但请注意,最好使用+而不是=补充现有的映射,而不是覆盖所有映射。]

pdftex如果映射文件片段未正确添加到文件使用中,或者陈旧的配置覆盖了更新的配置,则会导致此问题。

在第一种情况下,需要使用updmapupdmap-sys使用 来启用地图文件片段--enable mtpro2.map

假设此操作正确,如果问题仍然存在,则可能是由于主目录中的配置文件过时。在这种情况下,删除此文件应该可以解决问题。

要对 TeX Live 执行此操作,请删除您的主目录,以及${HOME}/.texliveYYYY与您正在使用的 TeX Live 版本相对应的子目录。例如,对于当前版本。在 Linux 或 OS X 上,您可以通过运行来执行此操作。删除此目录通常是安全的,因为它应该只保存可以轻松重新生成的文件。但是,为了 100% 安全,您可以重命名目录以查看它是否解决了问题,如果一切正常,稍后再将其删除。在 Linux 或 OS X 上,您可以执行类似 的操作。${HOME}.texliveYYYY.texlive2013rm -r ~/.texlive2013mv ~/.texlive2013 ~/texlive2013.justincase

解释一下,如果您使用updmap而不是updmap-sys来配置字体映射文件,则会导致此问题。问题是,如果您稍后使用updmap-sys- 或者tlmgr在更新安装时使用它 - 主目录中现在过时的配置将继续覆盖系统范围内安装的较新设置。这就是为什么通常最好使用updmap-sys而不是 ,updmap除非您在没有权限这样做的系统上工作。

相关内容