luatex
合字を表すグリフ ノードには、 「合字コンポーネントを指す」はずのcomponents
type フィールドがありますnode
。このリンクを使用してコンポーネントを取得する方法がわかりません。ご協力いただければ幸いです。
固定コード (U+FB00 から U+FB04) を持つ「標準」合字 ff、fi、fl、ffi、ffl の場合、問題を解決する表を作成するのは簡単ですが、ct、ft などのあまり一般的ではない合字の場合はどうでしょうか。
答え1
これはノードリストの先頭なので、(ffの場合)2つのfを持つhboxがあるように見えます。
\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}
プリント:
=====
64257 fi
>> 102 f
>> 105 i
64256 ff
>> 102 f
>> 102 f
8212 —
>> 45 -
>> 45 -
>> 45 -
=====
の構成要素のグリフ番号を示しfi
、ff
---
数字だけでなく文字の印刷も追加しました。非Unicodeスロットを使用した合字では意味不明な印刷になりますが、単純なケースでは読みやすくなります。