Espaçamento entre caracteres XeTeX em tailandês

Espaçamento entre caracteres XeTeX em tailandês

Tenho tentado criar um estilo de relatório de coluna dupla para documentos tailandeses, mas tive dificuldade em encontrar documentação. Então, encontramos uma dica para inserir caracteres depois de ler o guia de referência do XeTeX.

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

É instrutivo mostrar também a nossa primeira abordagem que falhou totalmente, mas ajudou a ilustrar a natureza do XeTeX ao lidar com caracteres tailandeses. Tentamos dividir as letras tailandesas em 2 classes: aquelas que requerem um espaço antes delas e aquelas que são "diacríticos" e não requerem espaço entre caracteres:

\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}

Embora isso fornecesse espaçamento entre caracteres antes de cada consoante e vogal não sobreposta, também destruiu a hifenização, incentivando quebras antes de cada membro da \charThaiclasse. No entanto, as combinações de ligadura entre consoantes e vogais subsequentes sobrepostas foram preservadas. A adição \nobreakdestruiu todas as quebras antes das sequências de caracteres tailandeses.

A mensagem principal para nós é que a inserção de tokens entre caracteres destruirá o suporte para a hifenização tailandesa; ela deve ser usada com muita moderação (como espaçamento em torno de ๆ e ฯ).

informação relacionada