Nó de glifo LuaTeX: como descobrir os componentes de uma ligadura

Nó de glifo LuaTeX: como descobrir os componentes de uma ligadura

Com luatexos nós de glifo que representam uma ligadura, temos um componentscampo do tipo nodeque 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 fipara ffe---

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

informação relacionada