ゆるふわ顔文字でよく大活躍のタイ文字。ちょっとタイ語のフォントを調べてみよう。
Thai Opentype font downloadで「Garuda」使いなよみたいな感じのリンクがあるけど、デッドリンク。魚拓で回収はできる。
それ以外に、fonts-tlwg - Revision 948: /trunkにたっぷりとfontforge用のデータでタイ語のデータがある。OpenType(CFF)でビルドしようとすると「おらっ、EMサイズが2048だけど、ふつーは1000だろ?見直したらどーよ?」とか言われる。まぁ、スケーリングするのも面倒臭いのでTrueTypeとしてビルドしとく。ggって見つかるのもTrueType向けデータばっかりだけど、そんなもん?
できあがったTrueType (試しに Waree.ttf をビルドした) をFontLabで除くとOpenType Layout tag registryにある ccmp (Glyph Composition/Decomposition) が幾つか入ってる。逆にめぼしいのはそれぐらいか?Garudaには「RQD」ってのが見えるけど、なんだこりゃ?あと、markやmkmkは中身がすっからかん?よく分からん。
手元でビルドしたWaree.ttfのccmpを見た感じ、
feature ccmp { lookup ccmp9 { sub uni0E07 macronbelowcmb by uni0E07.uline; sub uni0E0D macronbelowcmb by uni0E0D.uline; sub uni0E19 macronbelowcmb by uni0E19.uline; sub uni0E21 macronbelowcmb by uni0E21.uline; } ccmp9; lookup ccmp10 { sub [uni0E0D uni0E10]' [macronbelowcmb uni0E38 uni0E39 uni0E3A] by [uni0E0D.descless uni0E10.descless]; } ccmp10; script thai; # Thai lookup ccmp9; lookup ccmp10; } ccmp;
本質的にはこーゆーことかな?
ญ (U+0E0D) の後ろに ุ (U+0E38) が来る場合などに置換が発生するようだ。
$ hb-view --text="ญุ" --output-format=png --output-file=out.png --features="-ccmp" --font-file=Waree.ttf
でccmpを無効にして、次に有効にしたもののラスタ画像をとってみる。
ccmpは「UI suggestion: This feature should be on by default.」なので、hb-viewでは特に指定しない限り、ON状態だった。
なんか難しいな。でも、フランス語もエリジオンが発生する場合に
Que est-ce que ce est? → Qu'est-ce que c'est?
Thai Typography: a Brief Investigation by a Farang |の手書きのを見ると大変そうだなぁという気持ちにしかなれない。