タイ文字とOpenType

最近タイ語始めました。何でタイ語かって?べ、別に "Re Angel"(公式サイト) の影響なんかじゃないんだからねっ(何
という訳でタイ文字を実装してみたら面白いんじゃないかなーとやってみたのです。


タイ文字では OpenType の GSUB テーブルと GPOS テーブルが大活躍します。
具体的には ฏุ や ป่ みたいに結合する文字の位置を指定したりとか(GPOS マークから基底グリフへ 'mark')、 ที่ のように積み上がったり(GPOS マークからマークへ 'mkmk')とか
あとは ญ や ฐ に下に付く記号( ุ ู ฺ )が付いた時には ญุ や ฐู のように下の部分が変化するとか(GSUB Chaining Contexual Substitution(連鎖型文脈依存置換) 'ccmp')。


とまあ、詳しいことは Microsoft のサイト(http://www.microsoft.com/typography/OpenType%20Dev/thai/intro.mspxやここ(Spec for Thai OpenType Creation)に書いてあります。特に後者は何をやればいいのか書いてあったので非常に役に立ちました。


で、後者のサイトに

The only feature used for Thai rendering engines is ‘ccmp’. So, every substitution rule should be named as such.

…って書いてあった訳で。
えーどうにもタイ語だと GSUB が 'ccmp' しか使われない、らしいことを知らなくて(読んでなくて)、しばらく悩んでました。 FontForge のプルダウンからは選べなかったので、手動で ccmp と指定したらうまくいった。

また、一つの基底グリフに複数のアンカーポイントを追加したが、うまく配置されないなー、と思ったら、合成用の記号は幅ゼロにしなくちゃいけないようで。


こういうのってどっかにまとめといた方がいいんだろうか。日本語での OpenType Feature についての情報がほとんど無いので…。日本語フォントじゃああんまり GPOS も GSUB も使わないし。使うとしても縦書き形や、かな文字と合成用の濁点・半濁点との組み合わせとか…くらいだし。
まあ非常に勉強になりました。これでもしそのうちアラビア文字デーヴァナーガリーとかを実装することがあっても、あまり迷わない、と思う。…といいな。