luaotfload 总是被调用

luaotfload 总是被调用

每次我运行 lualatex 时,luaotfload-tool 都会被调用。举一个简单的例子,

\documentclass{ltjsarticle}
\usepackage{luatexja} % ltjclasses, ltjsclasses を使うときはこの行不要
\begin{document}
\section{はじめてのLua\TeX-ja}
ちゃんと日本語が出るかな?
\subsection{出たかな?}
長い文章を入力するとちゃんと右端のところで折り返されるかな?
大丈夫そうな気がするけど.ちょっと不安だけど何事も挑戦だよね.
\end{document}

该文件是“junk.lua”:

$ make junk.pdf
lualatex < junk.lua && mv texput.pdf junk.pdf
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020) 
 restricted system commands enabled.
**LaTeX2e <2020-02-02> patch level 5

L3 programming layer <2020-08-07>
*(/opt/texlive/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls
Document Class: ltjsarticle 2020/05/30 ltjsclasses 
(/opt/texlive/texmf-dist/tex/luatex/luatexja/luatexja.sty
    . . .
(/opt/texlive/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
(/opt/texlive/texmf-dist/tex/latex/base/tuenc.def)
(/opt/texlive/texmf-dist/tex/latex/ms/everysel.sty)
ABD: EverySelectfont initializing macros)
(/opt/texlive/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty
luaotfload | db : Font names database not found, generating new one.
luaotfload | db : This can take several minutes; please be patient.

带有诊断输出的“luaotfload-tool”显示所有“fontloader-*.lua”文件都有校验和错误,但我不知道这是否相关。我在另一篇文章中读到,如果字体名称错误,luaotfload 可以执行此操作,但这是 vanilla luatex(好吧,luatexja),所以我不明白为什么这会是个问题。

任何建议都将受到欢迎。

附言

运行“luaotfload-tool -v -vvv -u”(从其他地方复制的命令)我得到大量输出,但最后的输出可能很重要:

luaotfload | db : Found 4377 font files; 0 new, 0 stale entries.
luaotfload | db : Creating filename map.
luaotfload | db : Conflicting basename: "ASANA" already indexed in category texmf, ignoring.
luaotfload | db : Conflicting barename: "ASANA" already indexed in category texmf/ttc, ignoring.
luaotfload | db : Analyzing families.
luaotfload | db : Analyzing shapes, weights, and styles.
luaotfload | db : Ordering design sizes.
luaotfload | db : Collecting fontnames.
luaotfload | db : Rebuilt in 29611 ms.
luaotfload | db : No new or removed fonts, skip saving to disk.
luaotfload | cache : Lookup cache saved.
luaotfload | cache : Lookup cache emptied.
luaotfload | db : Fonts in the database: 2162

“未保存到磁盘”?“查找缓存”已“保存”然后“清空”?

PPS 我开始对 lua 有一种不好的感觉;它看起来相当粗制滥造:

$ luaotfload-tool --find "Libertinus Serif"
...texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua:432: attempt to index a nil value (field 'normal')

我在 Solaris 和 Linux 上运行了该程序,结果相同。

更新:

$ uname -a
SunOS euros 5.11 11.4.0.15.0 i86pc i386 i86pc
$ luaotfload-tool -D -u    
luaotfload | db : Font names database not found, generating new one.
luaotfload | db : This can take several minutes; please be patient.
$ luaotfload-tool -u
luaotfload | db : Font names database not found, generating new one.
luaotfload | db : This can take several minutes; please be patient.
$ luaotfload-tool -D -u 
luaotfload | db : Font names database not found, generating new one.
luaotfload | db : This can take several minutes; please be patient.

然而,

Linux zephyr 4.1.12-124.30.1.el7uek.x86_64 #2 SMP Thu Aug 8 01:38:50 GMT 2019 x86_64 x86_64 x86_64 GNU/Linux
$ luaotfload-tool -D -u     
$ luaotfload-tool -u
$ 

也就是说,在我的 Linux 机器上,‘数据库’文件是构建的,因此使用‘-u’运行除了扫描文件之外什么也不做。相反,在 Solaris 上,它总是抱怨找不到‘字体名称数据库’,这表明某些文件正在或尚未写入,或者可能已写入但为空。

答案1

我发现了导致此问题的原因;luaotfload-names.luc 文件的长度为零。我在另一台机器(linux)上安装了最新的 texlive,一切正常。solaris 版本有问题,但我不知道如何修复它,除了用 Sun 编译器重新编译 lua 解释器并看看效果如何。

相关内容