我使用 lualatex 只是因为我可以使用当前常见的字体类型。我的项目有其奇怪之处,因此需要运行 5 次 lualatex 才能完成构建。我注意到很多构建时间都用于重建其字体数据库。我总是收到相同的消息
luaotfload | db : Reload initiated (formats: otf,ttf,ttc,dfont); reason: "Font lmromancaps10-regular.otf not found.".
然而,这不是一种特殊的字体,而是与所有其他 LM 字体共存
/usr/share/texmf/fonts/opentype/public/lm
浏览我的文档时,我注意到在使用此字体之前,有两行使用不同字体的输出,显然没有丢失。所以显然有一个可用的数据库。我完全不明白为什么每次运行 lualatex 时都要重新加载/重建数据库。这是正常的吗?重用数据库不是更明智吗?
我真的很想加快 lualatex 的运行速度,因为它们比 pdflatex 运行时间长得多。使用 pdflatex 构建整个项目所花的时间与单次 lualatex 运行的时间差不多……至少以前是这样;我想我不小心破坏了引用样式的兼容性。
梅威瑟:
\documentclass{standalone}
\usepackage{fontspec}
\usepackage[latin1]{luainputenc}
\setmainfont[%
SmallCapsFont = lmromancaps10-regular.otf,
]{lmroman12}
\begin{document}
Will never get here
\end{document}
答案1
问题是,我通过文件名指定了字体,如下所示:
\setmainfont[%
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = lmroman10-bolditalic.otf,
SmallCapsFont = lmromancaps10-regular.otf,
SmallCapsFeatures = {Scale=MatchUppercase},
SlantedFont = lmromanslant12-regular.otf,
BoldSlantedFont = lmromanslant10-bold.otf,
Renderer=Basic
]{lmroman12}
这就是触发数据库重新加载的原因。如果我按名称包含字体,如下所示:
\setmainfont[%
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = lmroman10-bolditalic,
SmallCapsFont = lmromancaps10-regular,
SmallCapsFeatures = {Scale=MatchUppercase},
SlantedFont = lmromanslant12-regular,
BoldSlantedFont = lmromanslant10-bold,
Renderer=Basic
]{lmroman12}
错误没有发生,数据库也没有重新加载。我还注意到了速度的提升!
请注意,字体名称不区分大小写。
这是 LuaTeX,版本 beta-0.79.1 (TeX Live 2014/Debian) (rev 4971)