Nodo de glifo LuaTeX: cómo descubrir los componentes de una ligadura

Nodo de glifo LuaTeX: cómo descubrir los componentes de una ligadura

Los luatexnodos de glifo que representan una ligadura tienen un componentscampo de tipo nodeque se supone "apunta a los componentes de la ligadura". No entiendo cómo puedo recuperar los componentes usando este enlace; cualquier ayuda sería muy apreciada.

Para las ligaduras "estándar" ff, fi, fl, ffi, ffl que tienen un código fijo (U+FB00 a U+FB04) es fácil hacer una tabla que resuelva el problema, pero ¿qué pasa con las menos comunes como ct? , pies,… ?

Respuesta1

Es el encabezado de una lista de nodos, por lo que parece (para ff) como si tuvieras un hbox con dos f

\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}

Huellas dactilares:

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

=====

mostrando los números de glifos de los componentes de fi, ffy---

Agregué impresión de los caracteres así como de los números, aunque eso imprimirá tonterías para ligaduras usando ranuras que no son Unicode, ayuda a leer casos simples.

información relacionada