![LuaTeX 글리프 노드: 합자의 구성 요소를 찾는 방법](https://rvso.com/image/461885/LuaTeX%20%EA%B8%80%EB%A6%AC%ED%94%84%20%EB%85%B8%EB%93%9C%3A%20%ED%95%A9%EC%9E%90%EC%9D%98%20%EA%B5%AC%EC%84%B1%20%EC%9A%94%EC%86%8C%EB%A5%BC%20%EC%B0%BE%EB%8A%94%20%EB%B0%A9%EB%B2%95.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
---
숫자뿐만 아니라 문자 인쇄도 추가했습니다. 유니코드가 아닌 슬롯을 사용하여 합자에 대해 넌센스를 인쇄하더라도 간단한 사례를 읽는 데 도움이 됩니다.