![避免通过 luaotfload 更新字体名称数据库](https://linux22.com/image/269196/%E9%81%BF%E5%85%8D%E9%80%9A%E8%BF%87%20luaotfload%20%E6%9B%B4%E6%96%B0%E5%AD%97%E4%BD%93%E5%90%8D%E7%A7%B0%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我正在使用LuaLaTeX
系统字体排版文档。编译需要很长时间才能更新字体数据库:luaotfload | Updating the font names database:
。我认为这次更新没有必要,因为我不会每次都更换字体。如果我的假设是正确的,是否可以避免这次更新?
显示问题的最小示例:
\documentclass[paper = a4]{scrartcl}
\usepackage{blindtext, fontspec}
% Typewriter (\ttfamily)
\setmonofont[BoldFont = VeraMoBd, ItalicFont = VeraMoIt, Scale = MatchLowercase]{VeraMono}
\begin{document}
\blinddocument
\end{document}
\setmainfont
我使用了和设置的不同字体\setsansfont
,但只有等宽字体VeraMono
在更新字体名称数据库时挂起。
免费字体Bitstream Vera
可用这里。
答案1
总结评论中的讨论:
luaotfload
每次运行时更新字体名称数据库,因为字体名称错误,因此luaotfload
无法在数据库中通过名称找到字体(最终找到了它,因为 VeraMono 是文件名)。
正确的调用方式是:
\setmonofont[BoldFont = BitstreamVeraSansMono-Bold, ItalicFont = BitstreamVeraSansMono-Oblique]{BitstreamVeraSansMono}
例如,可以在其他办公应用程序的字体选择对话框中或 luaotfload 创建的数据库中找到正确的字体名称(otfl-names.lua
使用旧版本的 luaotfload(TL2012/当前 miktex)和luaotfload-names.lua
TL2013)。
可以打印字体列表,如中所述https://tex.stackexchange.com/a/14171/14200(实际代码取决于luaotfload版本)。
答案2
如果您在 macos 上发现此问题。请尝试使用 sudo 重建数据库。
sudo luaotfload-tool --update
这解决了每次 tex 编译时尝试重建数据库的问题。