LuaLaTeX 和字符组合问题

LuaLaTeX 和字符组合问题

我正在做的一个项目需要使用一个不太常见的字符 m̊。与瑞典语中的“带环的 a”不同,Unicode 中不存在此字母的预组合形式,只能通过使用组合字符来创建。然而,让它与 LuaLaTeX 配合使用却是一件令人沮丧的事情。

作为参考,下面是导致问题的代码示例:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Charis SIL}
\begin{document}

\r{m}abcdefgh

\end{document}

当我尝试使用 LuaLaTeX 编译此代码时,出现以下错误:

("C:/Program Files (x86)/MiKTeX 2.9/tex/generic/oberdiek/ifluatex.sty"))))
("C:/Program Files (x86)/MiKTeX 2.9/tex/generic/oberdiek/pdftexcmds.sty"
("C:/Program Files (x86)/MiKTeX 2.9/tex/generic/oberdiek/ifpdf.sty")
("C:/Program Files (x86)/MiKTeX 2.9/tex/generic/oberdiek/luatex-loader.sty"
(C:/Program Files (x86)/MiKTeX 2.9/scripts/oberdiek/oberdiek.luatex.lua))))error: ...KTeX 2.9/tex/luatex/luaotfload/fontloader-2016-04-27.lua:13071: attempt to index local 'i' (a nil value)
.
l.9

现在,需要注意一些事项。首先,如果我将主字体保留为默认字体,则问题不存在:m̊ 可以很好地显示 Latin Modern。好吧,我说很好,但环的位置不对,看起来很糟糕。此外,Latin Modern 缺少我项目所需的其他一些字符,因此这实际上不是一个选择。现在,这可能使我得出结论,Charis SIL 字体是罪魁祸首,但实际上用 XeLaTeX 编译完全相同的代码可以正常工作,并产生预期的输出:

在此处输入图片描述

我推断,该问题与字距调整或诸如此类的问题有关。原因是,问题似乎仅在段落(或框?我不确定正确的术语)中的字符数量超过一定数量后才会发生。例如,以下内容编译正常:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Charis SIL}
\begin{document}

\r{m}abcdefg

\end{document}

如你所见,这里唯一的区别是我删除了最后的h。支持这一假设的事实是,以下内容也同样有效:

\r{m}abcdefg

Lorem Ipsum

无论如何,我完全不知道该怎么做。不幸的是,切换到 XeTeX 不是这个项目的选项。

答案1

它应该使用\r或仅仅使用

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Charis SIL}
\begin{document}

\r{m}abcdefgh

m̊abcdefgh

\end{document}

(使用 texlive 2016 中的 luatex)

相关内容