![LuaTeX-Glyphenknoten: So finden Sie die Komponenten einer Ligatur heraus](https://rvso.com/image/461885/LuaTeX-Glyphenknoten%3A%20So%20finden%20Sie%20die%20Komponenten%20einer%20Ligatur%20heraus.png)
Bei luatex
Glyphenknoten, die eine Ligatur darstellen, gibt es ein components
Feld 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
, ff
und---
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.