LuaLaTeX 中 й (\cyrishrt) 的问题

LuaLaTeX 中 й (\cyrishrt) 的问题

最初我问了一个不同的问题,但深入研究后我发现了一个真正的原因。

当西里尔字母 й 与同一段落中另一种字体的数学符号一起使用时,就会出现问题。以下是最简单的示例:

\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 文件夹时,问题就消失了。

相关内容