某些字母表(例如西里尔字母)借助 Unicode 字符 0301(组合尖音符)来管理尖音重音元音。这可能会导致连字问题,因为连字字符有时位于元音和重音符之间,导致重音符位置错误,如以下示例所示(在 LuaLaTex 中编译):
单词 'со́гре́ши́вши́я' 的连字符正确为:'о' 'U0301' - 'г'
单词“при́сно́”的连字符不正确:'и' - 'U0301' 'с'
导致第四行开头的重音位置错误。
实际上,可以通过通常的方式在本地驱动连字符来避免此问题при́\-сно́
,但我想全局避免此错误。
注意:这个问题部分发布在问题中避免在特定字符周围使用连字符,但我看不出该命令如何\lccode
处理组合重音。
这是参考代码:
\documentclass[a5paper]{memoir}
\usepackage[russian]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine}
\setlength{\spinemargin}{55mm}
\setlrmarginsandblock{\spinemargin}{*}{1}
\checkandfixthelayout
\newcommand\TextRus{ди́це́, при́зри́ на́ лю́ди́ со́гре́ши́вши́я, яви́ я́ко́ при́сно́ си́лу Тво́ю: при́зыва́е́м.}
\begin{document}
\begin{hyphenrules}{russian}
\noindent\TextRus
\end{hyphenrules}
\end{document}
答案1
按照这里的建议添加8^^^^0301
到 hyph-ru.tex (俄语中“ы”上方的重音符号移到下一行) 对我有用,并且抑制了连字符(无需重建格式,因为 lualatex 无论如何都会动态加载它们)。
我认为这意味着模式有缺陷,你应该向维护人员报告。