LuaTeX-Glyphenknoten: So finden Sie die Komponenten einer Ligatur heraus

LuaTeX-Glyphenknoten: So finden Sie die Komponenten einer Ligatur heraus

Bei luatexGlyphenknoten, die eine Ligatur darstellen, gibt es ein componentsFeld vom Typ node, das „auf die Ligaturkomponenten verweisen“ soll. Ich verstehe nicht, wie ich die Komponenten über diesen Link abrufen kann. Für jede Hilfe wäre ich sehr dankbar.

Für „Standard“-Ligaturen ff, fi, fl, ffi, ffl, die einen festen Code (U+FB00 bis U+FB04) haben, lässt sich leicht eine Tabelle erstellen, die das Problem löst. Aber was ist mit weniger gebräuchlichen Ligaturen wie ct, ft usw.?

Antwort1

Es ist der Kopf einer Knotenliste und sieht daher (für ff) so aus, als ob Sie eine hbox mit zwei f hätten.

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

Drucke:

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

=====

zeigt die Glyphennummern der Komponenten für fi, ffund---

Ich habe die Ausgabe der Buchstaben und Zahlen hinzugefügt. Das gibt zwar bei Ligaturen, die nicht Unicode-Slots verwenden, keinen Sinn, aber es hilft beim Lesen einfacher Fälle.

verwandte Informationen