LuaTeX グリフ ノード: 合字の構成要素を見つける方法

LuaTeX グリフ ノード: 合字の構成要素を見つける方法

luatex合字を表すグリフ ノードには、 「合字コンポーネントを指す」はずのcomponentstype フィールドがあります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 -

=====

の構成要素のグリフ番号を示しfiff---

数字だけでなく文字の印刷も追加しました。非Unicodeスロットを使用した合字では意味不明な印刷になりますが、単純なケースでは読みやすくなります。

関連情報