在我更新 MiKTeX(在 Windows 10 上)后,我无法再处理带有我自己安装的自定义字体的 LaTeX 文件。我收到了臭名昭著的“未找到字体”错误。就我而言:
!pdfTeX error: pdflatex.exe (file NeoSansStd-Bold--base): Font NeoSansStd-Bold--base at 480 not found
到目前为止,之前的更新之后一切都运行顺利,但这次更新之后就不行了。
我在 stackexchanged 上花了几个小时阅读有关类似问题的文章,并检查了常见的嫌疑人:
我刷新了文件名数据库和字体映射文件。我从 MiKTeX 控制台和命令行尝试了此操作。我以管理员和本地用户身份尝试了此操作。我尝试了updmap.exe
和updmap.exe --admin
。updmap.exe --force
我检查了initexmf --edit-config-file updmap
,首先仅使用管理员,然后使用管理员和本地用户;始终后跟initexmf --mkmaps
。我试过了miktex fontmaps configure
。我重新检查了拼写错误。
当我通过日志追踪错误时miktex-makemf.log
,我发现出现了“找不到源文件”的错误:
2022-02-21 15:44:52,202+0100 INFO miktex-makemf - this process (2924) started by miktex-makepk in directory C:\Users\geodev\AppData\Local\Temp\mik60 with command line: miktex-makemf.exe --miktex-enable-installer --miktex-disable-maintenance --miktex-disable-diagnose --verbose NeoSansStd-Regular--base
2022-02-21 15:44:52,213+0100 FATAL miktex-makemf - The NeoSansStd-Regular--base source file could not be found.
2022-02-21 15:44:52,214+0100 FATAL miktex-makemf - The NeoSansStd-Regular--base source file could not be found.
2022-02-21 15:44:52,214+0100 FATAL miktex-makemf - Info:
2022-02-21 15:44:52,214+0100 FATAL miktex-makemf - Source:
2022-02-21 15:44:52,214+0100 FATAL miktex-makemf - Line: 0
2022-02-21 15:44:52,229+0100 INFO miktex-makemf - this process (2924) finishes with exit code 1
不过,pdftex.map
似乎还行。它以以下行开头(在初始注释之后):
NeoSansStd-Bold--base NeoSansStd-Bold " AutoEnc_jiru4vhj66oz3izelvwqyw7peb ReEncodeFont " <[a_jiru4v.enc <NeoSansStd-Bold.pfb
我检查了 MikTeX 是否知道该字体目录,情况确实如此:在 MiKTeX 控制台中,该目录设置为一个文件夹,该文件夹的子文件夹中NeoSansStd_font_for_MiKTeX
包含。整个目录在过去十年中保持不变(并正常工作)。NeoSansStd-Bold.pfb
fonts\type1\Monotype\NeoSansStd
我也试过
miktex-makepk --enable-installer --verbose NeoSansStd-Regular--base 600 600 magstep(0.0)
直接从命令行,作为管理员和用户,但它不起作用。
我尝试了lualatex
,pdflatex
但是出现了同样的错误。
安装及其所有软件包都是最新的。系统已配置,因此可以即时安装缺失的软件包。
我还应该尝试什么?
编辑:
典型的条目miktex-makepk.log
如下所示:
2022-02-21 15:02:18,884+0100 INFO miktex-makepk - this process (13060) started by pdflatex in directory [... omitted ...] with command line: miktex-makepk --enable-installer --verbose NeoSansStd-Bold--base 480 600 0+480/600
2022-02-21 15:02:18,892+0100 INFO makepk - Trying to make PK font NeoSansStd-Bold--base at 480 DPI...
2022-02-21 15:02:18,910+0100 INFO makepk - The METFAONT mode is: ljfour
2022-02-21 15:02:18,926+0100 INFO makepk - Running miktex-makemf.exe...
2022-02-21 15:02:18,926+0100 INFO makepk - running: miktex-makemf.exe --miktex-enable-installer --miktex-disable-maintenance --miktex-disable-diagnose --verbose NeoSansStd-Bold--base
2022-02-21 15:02:18,927+0100 INFO miktex-makepk.core - start process: miktex-makemf.exe --miktex-enable-installer --miktex-disable-maintenance --miktex-disable-diagnose --verbose NeoSansStd-Bold--base
2022-02-21 15:02:20,253+0100 INFO makepk - Running miktex-ttf2pk.exe...
2022-02-21 15:02:20,253+0100 INFO makepk - running: miktex-ttf2pk.exe --miktex-enable-installer --miktex-disable-maintenance --miktex-disable-diagnose -q -t NeoSansStd-Bold--base
2022-02-21 15:02:20,253+0100 INFO miktex-makepk.core - start process: miktex-ttf2pk.exe --miktex-enable-installer --miktex-disable-maintenance --miktex-disable-diagnose -q -t NeoSansStd-Bold--base
2022-02-21 15:02:21,771+0100 FATAL miktex-makepk - PK font NeoSansStd-Bold--base could not be created.
2022-02-21 15:02:21,771+0100 FATAL miktex-makepk - PK font NeoSansStd-Bold--base could not be created.
2022-02-21 15:02:21,772+0100 FATAL miktex-makepk - Info:
2022-02-21 15:02:21,772+0100 FATAL miktex-makepk - Source:
2022-02-21 15:02:21,772+0100 FATAL miktex-makepk - Line: 0
2022-02-21 15:02:21,802+0100 INFO miktex-makepk - this process (13060) finishes with exit code 1
pdflatex 日志包含以下行:
LaTeX Font Info: Trying to load font information for LY1+NeoSansStd on input
line 53.
(C:\Users\Public\NeoSansStd_font_for_MiKTeX\tex/latex/NeoSansStd\ly1neosansstd.
fd
File: LY1NeoSansStd.fd Monotype NeoSansStd font definitions
)
这是正确的路径。
解决方案:
Ulrike Fischer 在下面的评论中指出了该问题的解决方案。要安装的字体的目录结构已更改。我的旧文件夹结构是:
NeoSansStd_font_for_MiKTeX
├── dvips/
│ └── Monotype/
│ ├── a_jiru4v.enc
│ └── Monotype.map
├── fonts/
│ ├── tfm/
│ │ └── ...
│ ├── type1/
│ │ └── ...
│ └── vf/
│ └── ...
└── tex/
└── ...
必须将其更改为:
NeoSansStd_font_for_MiKTeX
├── fonts/
│ ├── enc/
│ │ └── a_jiru4v.enc
│ ├── map/
│ │ └── dvips/
│ │ └── Monotype/
│ │ └── Monotype.map
│ ├── tfm/
│ │ └── ...
│ ├── type1/
│ │ └── ...
│ └── vf/
│ └── ...
└── tex/
└── ...
答案1
与字体安装相关的一些位置已经发生了变化:
最重要的是map
文件应该从 到dvips
并且fonts/map/dvips
文件enc
应该进入fonts/enc/dvips
。