Los luatex
nodos de glifo que representan una ligadura tienen un components
campo de tipo node
que 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
, ff
y---
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.