XeTeX Zeichenabstand in Thai

XeTeX Zeichenabstand in Thai

Ich habe versucht, einen zweispaltigen Berichtsstil für thailändische Dokumente zu erstellen, hatte aber Schwierigkeiten, die Dokumentation dazu zu finden. Nachdem wir das XeTeX-Referenzhandbuch durchgelesen hatten, stießen wir auf einen Hinweis zum Einfügen von Zwischenzeichen.

\XeTeXlinebreaklocale "th-TH"
\XeTeXlinebreakskip=0.0pt plus 0.1pt

Es ist aufschlussreich, auch unseren ersten Ansatz zu zeigen, der völlig fehlschlug, aber half, die Natur von XeTeX im Umgang mit thailändischen Zeichen zu veranschaulichen. Wir haben versucht, die thailändischen Buchstaben in zwei Klassen zu unterteilen: diejenigen, die ein Leerzeichen vor sich benötigen, und diejenigen, die „diakritische Zeichen“ sind und keinen Zwischenraum zwischen den Zeichen benötigen:

\XeTeXinterchartokenstate=1
\chardef\CharNormal=0
\newXeTeXintercharclass\CharThai
\XeTeXcharclass`ก=\CharThai  \XeTeXcharclass`ข=\CharThai
\XeTeXcharclass`ฃ=\CharThai  \XeTeXcharclass`ค=\CharThai
\XeTeXcharclass`ฅ=\CharThai  \XeTeXcharclass`ฆ=\CharThai
\XeTeXcharclass`ง=\CharThai  \XeTeXcharclass`จ=\CharThai
\XeTeXcharclass`ช=\CharThai  \XeTeXcharclass`ฌ=\CharThai
\XeTeXcharclass`ญ=\CharThai  \XeTeXcharclass`ฎ=\CharThai
\XeTeXcharclass`ฏ=\CharThai  \XeTeXcharclass`ฐ=\CharThai
\XeTeXcharclass`ฑ=\CharThai  \XeTeXcharclass`ฒ=\CharThai
\XeTeXcharclass`ณ=\CharThai  \XeTeXcharclass`ด=\CharThai
\XeTeXcharclass`ต=\CharThai  \XeTeXcharclass`ถ=\CharThai
\XeTeXcharclass`ท=\CharThai  \XeTeXcharclass`ธ=\CharThai
\XeTeXcharclass`น=\CharThai  \XeTeXcharclass`บ=\CharThai
\XeTeXcharclass`ป=\CharThai  \XeTeXcharclass`ผ=\CharThai
\XeTeXcharclass`ฝ=\CharThai  \XeTeXcharclass`พ=\CharThai
\XeTeXcharclass`ฟ=\CharThai  \XeTeXcharclass`ภ=\CharThai
\XeTeXcharclass`ม=\CharThai  \XeTeXcharclass`ย=\CharThai
\XeTeXcharclass`ร=\CharThai  \XeTeXcharclass`ล=\CharThai
\XeTeXcharclass`ว=\CharThai  \XeTeXcharclass`ศ=\CharThai
\XeTeXcharclass`ษ=\CharThai  \XeTeXcharclass`ส=\CharThai
\XeTeXcharclass`ห=\CharThai  \XeTeXcharclass`ฬ=\CharThai
\XeTeXcharclass`อ=\CharThai  \XeTeXcharclass`ะ=\CharThai
\XeTeXcharclass`า=\CharThai  \XeTeXcharclass`โ=\CharThai
\XeTeXcharclass`ไ=\CharThai  \XeTeXcharclass`ใ=\CharThai
\XeTeXinterchartoks\CharNormal\CharThai={\hskip 0pt plus 0.2pt\relax}
\XeTeXinterchartoks\CharThai\CharThai={\hskip 0pt plus 0.2pt\relax}

Dies ermöglichte zwar einen Zeichenabstand vor jedem Konsonanten und nicht überlappenden Vokal, zerstörte aber auch die Silbentrennung, indem es Trennzeichen vor jedem Mitglied der \charThaiKlasse förderte. Ligaturkombinationen zwischen Konsonanten und nachfolgenden überlappenden Vokalen blieben jedoch erhalten. Durch das Hinzufügen \nobreakwurden alle Trennzeichen vor Zeichenfolgen thailändischer Zeichen zerstört.

Für uns lautet die Quintessenz: Das Einfügen von Token zwischen Zeichen zerstört die Unterstützung für die thailändische Silbentrennung und sollte daher sehr sparsam eingesetzt werden (z. B. als Leerzeichen um ๆ und ฯ).

verwandte Informationen