LuaTeX 글리프 노드: 합자의 구성 요소를 찾는 방법

LuaTeX 글리프 노드: 합자의 구성 요소를 찾는 방법

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 -

=====

에 대한 구성요소의 문자 모양 번호 표시 fiff---

숫자뿐만 아니라 문자 인쇄도 추가했습니다. 유니코드가 아닌 슬롯을 사용하여 합자에 대해 넌센스를 인쇄하더라도 간단한 사례를 읽는 데 도움이 됩니다.

관련 정보