![LuaLaTeX 和組合字元的問題](https://rvso.com/image/335505/LuaLaTeX%20%E5%92%8C%E7%B5%84%E5%90%88%E5%AD%97%E5%85%83%E7%9A%84%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 中顯示得很好。好吧,我說好吧,戒指的位置不對,看起來很糟糕。此外,拉丁現代缺少我的項目所需的一些其他字符,所以這不是一個真正的選擇。現在,這可能使我得出結論,字體 Charis SIL 是罪魁禍首,但事實上,使用 XeLaTeX 編譯完全相同的程式碼可以正常工作,並產生預期的輸出:
我推斷這個問題在某種程度上與字距調整或類似的問題有關。原因是,看起來問題只發生在段落(或框框中?我不確定正確的術語)中的字元數超過一定數量之後。例如,以下內容編譯得很好:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Charis SIL}
\begin{document}
\r{m}abcdefg
\end{document}
正如您所看到的,這裡唯一的區別是我刪除了最後的h
.以下事實也同樣有效,這一事實為這一假設提供了支持:
\r{m}abcdefg
Lorem Ipsum
無論如何,我完全不知所措。不幸的是,切換到 XeTeX 不是這個項目的選擇。