He estado intentando crear un estilo de informe de doble columna para documentos tailandeses, pero tuve dificultades para encontrar documentación. Así que nos topamos con una pista para insertar caracteres entre caracteres después de leer la guía de referencia de XeTeX.
\XeTeXlinebreaklocale "th-TH"
\XeTeXlinebreakskip=0.0pt plus 0.1pt
Es instructivo mostrar también nuestro primer enfoque que fracasó totalmente pero ayudó a ilustrar la naturaleza de XeTeX al tratar con caracteres tailandeses. Intentamos dividir las letras tailandesas en 2 clases: las que requieren un espacio delante y las que son "diacríticas" y no requieren espacio 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}
Si bien esto proporcionó espacio entre caracteres antes de cada consonante y vocal no superpuesta, también destruyó la separación de palabras al fomentar pausas antes de cada miembro de la \charThai
clase. Sin embargo, se conservaron las combinaciones de ligaduras entre consonantes y vocales superpuestas posteriores. La adición
\nobreak
destruyó todas las pausas antes de cadenas de caracteres tailandeses.
La conclusión para nosotros es que, dado que la inserción de tokens entre caracteres destruirá la compatibilidad con la separación de palabras tailandesa, se debe utilizar con mucha moderación (como el espaciado entre ๆ y ฯ).