最初我问了一个不同的问题,但深入研究后我发现了一个真正的原因。
当西里尔字母 й 与同一段落中另一种字体的数学符号一起使用时,就会出现问题。以下是最简单的示例:
\documentclass{minimal}
\usepackage{fontspec}
\setmainfont{Cambria}
\begin{document}
й $xy$
\end{document}
编译停止并出现以下错误:
error: ...s/MiKTeX 2.9
/tex/luatex/luaotfload/otfl-node-inj.lua:225: attempt to index local 'tm' (a nil
value)
.
\newpage ...k \@nobreakfalse \everypar {}\fi \par
\vfil \penalty -\@M
l.6 \end{document}
当它们位于不同的段落时,例如文档主体是
\begin{document}
й
$xy$
\end{document}
那么就没有问题了。如果我使用相同的数学字体,例如
\usepackage{unicode-math}
\setmathfont{Cambria Math}
但是如果我使用不同字体的符号(例如 amssymb 中的 \Box),编译仍然会停止。
更新:我对其他重音字母也遇到了同样的问题,不仅是西里尔字母:à、ѓ、ё、ї、ќ、ў 等,i 除外。
UPD2:仅发生在 Cambria 中。
答案1
这是我的 Cambria 字体安装出现的问题。在 Windows/Fonts 文件夹中,有 Cambria Italic.ttf、Cambria Bold.ttf、Cambria Bold Italic.ttf(包含相应字体)和 Cambria.ttc(包含 Cambria Regular 和 Cambria Math)。因此,使用粗体和斜体没有问题,但使用常规字体时,当 LuaLaTeX 使用 Cambria.ttc 中的 Cambria Regular 时,不知何故出现了问题。当我从 Vista 安装 DVD 复制 Cambria.ttf 并删除 luatex-cache 文件夹时,问题就消失了。