![LuaTeX 字形節點:如何找出連字的元件](https://rvso.com/image/461885/LuaTeX%20%E5%AD%97%E5%BD%A2%E7%AF%80%E9%BB%9E%EF%BC%9A%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E9%80%A3%E5%AD%97%E7%9A%84%E5%85%83%E4%BB%B6.png)
表示luatex
連字的字形節點有一個components
類型字段node
,該字段應該「指向連字組件」。我無法理解如何使用此連結獲取組件,任何幫助將不勝感激。
對於具有固定程式碼(U+FB00 到U+FB04)的「標準」連字ff、fi、fl、ffi、ffl 來說,很容易製作一個表格來解決問題,但是像ct 這樣不太常見的連字呢?
答案1
它是節點列表的頭部,所以看起來(對於 ff)就像你有一個帶有兩個 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 插槽的連字的無意義內容,但它有助於閱讀簡單的情況