![LuaLaTeX と文字の結合に関する問題](https://rvso.com/image/335505/LuaLaTeX%20%E3%81%A8%E6%96%87%E5%AD%97%E3%81%AE%E7%B5%90%E5%90%88%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E5%95%8F%E9%A1%8C.png)
私が取り組んでいるプロジェクトでは、少々変わった文字 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 に切り替えることはできません。