昨天我尝试编译一个使用数学字体 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
如果映射文件片段未正确添加到文件使用中,或者陈旧的配置覆盖了更新的配置,则会导致此问题。
在第一种情况下,需要使用updmap
或updmap-sys
使用 来启用地图文件片段--enable mtpro2.map
。
假设此操作正确,如果问题仍然存在,则可能是由于主目录中的配置文件过时。在这种情况下,删除此文件应该可以解决问题。
要对 TeX Live 执行此操作,请删除您的主目录,以及${HOME}/.texliveYYYY
与您正在使用的 TeX Live 版本相对应的子目录。例如,对于当前版本。在 Linux 或 OS X 上,您可以通过运行来执行此操作。删除此目录通常是安全的,因为它应该只保存可以轻松重新生成的文件。但是,为了 100% 安全,您可以重命名目录以查看它是否解决了问题,如果一切正常,稍后再将其删除。在 Linux 或 OS X 上,您可以执行类似 的操作。${HOME}
.texliveYYYY
.texlive2013
rm -r ~/.texlive2013
mv ~/.texlive2013 ~/texlive2013.justincase
解释一下,如果您使用updmap
而不是updmap-sys
来配置字体映射文件,则会导致此问题。问题是,如果您稍后使用updmap-sys
- 或者tlmgr
在更新安装时使用它 - 主目录中现在过时的配置将继续覆盖系统范围内安装的较新设置。这就是为什么通常最好使用updmap-sys
而不是 ,updmap
除非您在没有权限这样做的系统上工作。