![Nó de glifo LuaTeX: como descobrir os componentes de uma ligadura](https://rvso.com/image/461885/N%C3%B3%20de%20glifo%20LuaTeX%3A%20como%20descobrir%20os%20componentes%20de%20uma%20ligadura.png)
Com luatex
os nós de glifo que representam uma ligadura, temos um components
campo do tipo node
que supostamente ``aponta para os componentes da ligadura''. Não consigo entender como posso buscar os componentes usando este link, qualquer ajuda seria muito apreciada.
Para ligaduras ``padrão'' ff, fi, fl, ffi, ffl que possuem um código fixo (U+FB00 a U+FB04) é fácil fazer uma tabela que resolva o problema, mas e as menos comuns como ct , pés, … ?
Responder1
É o topo de uma lista de nós, então parece (para ff) como se você tivesse um hbox com dois 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}
Impressões:
=====
64257 fi
>> 102 f
>> 105 i
64256 ff
>> 102 f
>> 102 f
8212 —
>> 45 -
>> 45 -
>> 45 -
=====
mostrando os números dos glifos dos componentes fi
para ff
e---
Eu adicionei a impressão dos caracteres e também dos números, embora isso imprima bobagens para ligaduras usando slots não Unicode, ajuda a ler casos simples