XeTeX 泰語字元間距

XeTeX 泰語字元間距

我一直在嘗試為泰國文件建立雙欄報告樣式,但在尋找文件時遇到了困難。因此,在閱讀 XeTeX 參考指南後,我們確實偶然發現了插入字元間的提示。

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

展示我們的第一種方法是啟發性的,雖然它完全失敗了,但有助於說明 XeTeX 在處理泰語字元方面的本質。我們嘗試將泰語字母分為兩類,一類是前面需要空格的,另一類是「變音符號」且不需要字元間空格的:

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

雖然這在每個輔音和不重疊的元音之前提供了字符間距,但它也通過鼓勵班級每個成員之前的休息而破壞了連字符\charThai。然而,輔音和隨後重疊的元音之間的連字組合被保留。添加 \nobreak破壞了泰語字串之前的所有中斷。

對我們來說,最重要的訊息是,插入字元間標記會破壞對泰語連字符的支持,因此應非常謹慎地使用它(例如 ๆ 和 ฯ 周圍的空格)。

相關內容