“\automatichyphenmode=1 通过在许多情况下不将连字符转换为自由字符来避免该问题。”
和 LuaTeX 参考手册 (8.2.7 圆盘节点}
“\discretionary 和 -、- 字符以及连字机制产生了这些节点。”
我查看了涉及连字符/减号的 4 种不同情况下的节点列表,同时使用了 \automatichyphenmode=1 和 \automatichyphenmode=0
正确的预期行为(修复错误后)将是 4 种情况下的字形字符 45 [-] 节点将生成为圆盘(自动)节点?(也就是说,mode=node (0) 行为也将被修改?两列中的字形字符 45 ==> 圆盘?)
这是非常基本的代码。输出将与表格相符。
\automatichyphenmode=1
雕文
字形;字形
字形;字形
字形;圆盘 > 子类型 2;字形
\automatichyphenmode=0
雕文
字形;字形
圆盘 > 子类型 2 ;字形
字形;圆盘 > 子类型 2;字形
% !TeX TS-program = lualatex
\documentclass{minimal}
\usepackage{fontspec}
\directlua{
show_dash = function(head)
while head do
if head.id == 0 or head.id == 1 then % hlist, vlist
texio.write_nl(" ")
show_dash(head.head)
elseif head.id == 7 then % disc
texio.write_nl("Disc > Subtype " .. head.subtype)
elseif head.id == 29 then % glyph
texio.write_nl("Glyph ")
end
head = head.next
end
end
luatexbase.add_to_callback("post_linebreak_filter",show_dash,"show_dash")
}
\begin{document}
\begin{minipage}{20pt}
\automatichyphenmode=1 % good for en dash and em dash
-
A-
-B
A-B
\end{minipage}
\begin{minipage}{20pt}
\automatichyphenmode=0
-
A-
-B
A-B
\end{minipage}
\end{document}
答案1
您的测试文件的结果与tl19一致,并且下一个luaotfload版本automatichyphenmode=1
是:
Glyph
Glyph
Glyph
Glyph
Glyph
Glyph
Disk > Subtype 2
Glyph
我automatichyphenmode=0
得到:
Glyph
Glyph
Glyph
Disk > Subtype 2
Glyph
Glyph
Disk > Subtype 2
Glyph
在我看来,这与您的表格完全相同,也是预期的结果。只有当连字符位于字形之间(两种情况)或字形之前(0)时,连字符才会转换为自由字符。
您提到的修复并没有改变任何东西。它只解决了由三个字符组成的连字符的问题(这影响了---
)。