LuaTeX 和减号/连字符

LuaTeX 和减号/连字符

鉴于LuaTeX 和长破折号

“\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)时,连字符才会转换为自由字符。

您提到的修复并没有改变任何东西。它只解决了由三个字符组成的连字符的问题(这影响了---)。

相关内容