LuaTeX 字形节点:如何找出连字的组成部分

LuaTeX 字形节点:如何找出连字的组成部分

表示luatex连字符的字形节点具有一个components类型的字段node,该字段应该“指向连字符组件”。我无法理解如何使用此链接获取组件,任何帮助都将不胜感激。

对于具有固定代码(U+FB00 到 U+FB04)的“标准”连字 ff、fi、fl、ffi、ffl,很容易制作一个表格来解决问题,但对于不太常见的连字如 ct、ft 等呢?

答案1

它是一个节点列表的头部,所以看起来(对于 ff)好像你有一个带有两个 f 的 hbox

\documentclass{article}

\begin{document}

\setbox0\hbox{fish diff --- abc}

\directlua{
glyphn=node.id('glyph')
h=tex.getbox(0)
print('\string\n=====')
for n in node.traverse_id(glyphn,h.list) do
  if (n.components) then
    print(n.char .. ' ' .. utf8.char(n.char))
    for nn in node.traverse_id(glyphn,n.components) do
      print('>> ' .. nn.char .. ' ' .. utf8.char(nn.char) )
    end
  end
end
print('\string\n=====')

}
\end{document}

印刷:

=====
64257 fi
>> 102 f
>> 105 i
64256 ff
>> 102 f
>> 102 f
8212 —
>> 45 -
>> 45 -
>> 45 -

=====

fi显示和ff的组件的字形编号---

我添加了字符和数字的打印,尽管这会打印出使用非 Unicode 插槽的连字符的无意义内容,但它有助于阅读简单的情况

相关内容