Re: Industry Thai Cell-Clustering Rules



On Thu, Nov 09, 2000 at 04:46:01PM +0700, Theppitak Karoonboonayanan wrote:

> That's right. The clustering mechanism is independent of font.
> And the WTT-like table can be defined for, say, Lao.
> But how about the shaping rule? Does it have to be in C?
> 
> Shaping rule for Mac/Windows extensions can indeed be described as ligatures.
> I can show you an implementation of Thai TeX virtual font which enables
> LaTeX to typeset quality Thai documents without touching LaTeX code.

Please see the attached file for an example of Thai TeX virtual font
description. It has been created by Dr.Surapant Meknavin, the former
maintainer of thailatex package which I'm maintaining.

> 
> I'm not saying the shaping can really be generalized as such, nor is C hard
> coding wrong. Just trying to explore if there is a feasible generic way.
> 
> -Theppitak.
%% This file is a part of tlatex version 1.0
%% Created by Surapant Meknavin: surapan nectec or th
%% 21 June 1999
%%
/TeXTISEncoding [
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/.notdef 
/space
/exclam
/quotedbl
/numbersign
/dollar
/percent
/ampersand
/quotesingle
/parenleft
/parenright
/asterisk
/plus
/comma
/minus
/period
/slash
/zero
/one
/two
/three
/four
/five
/six
/seven
/eight
/nine
/colon
/semicolon
/less
/equal
/greater
/question
/at
/A
/B
/C
/D
/E
/F
/G
/H
/I
/J
/K
/L
/M
/N
/O
/P
/Q
/R
/S
/T
/U
/V
/W
/X
/Y
/Z
/bracketleft
/backslash
/bracketright
/asciicircum
/underscore
/quoteleft
/a
/b
/c
/d
/e
/f
/g
/h
/i
/j
/k
/l
/m
/n
/o
/p
/q
/r
/s
/t
/u
/v
/w
/x
/y
/z
/braceleft
/bar
/braceright
/asciitilde
/FL0127
/thaiThoThanDescless
/thaiSaraILeft
/thaiSaraIiLeft
/thaiSaraUeLeft
/thaiSaraUeeLeft
/ellipsis
/thaiMaiEkLowLeft
/thaiMaiThoLowLeft
/thaiMaiTriLowLeft
/thaiMaiChattawaLowLeft
/thaiThanthakhatLowLeft
/thaiMaiEk
/thaiMaiTho
/thaiMaiTri
/thaiMaiChattawa
/thaiThanthakhat
/thaiYoYingDescless
/FL0145
/FL0146
/quotedblleft
/quotedblright
/bullet
/endash
/emdash
/thaiMaiHanAkatLeft
/thaiNikhahitLeft
/thaiMaitaikhuLeft
/thaiMaiEkLeft
/thaiMaiThoLeft
/thaiMaiTriLeft
/thaiMaiChattawaLeft
/thaiThanthakhatLeft
/nonbreakingspace
/thaiKoKai
/thaiKhoKhai
/thaiKhoKhuat
/thaiKhoKhwai
/thaiKhoKhon
/thaiKhoRakhang
/thaiNgoNgu
/thaiChoChan
/thaiChoChing
/thaiChoChang
/thaiSoSo
/thaiChoChoe
/thaiYoYing
/thaiDoChada
/thaiToPatak
/thaiThoThan
/thaiThoNangmontho
/thaiThoPhuthao
/thaiNoNen
/thaiDoDek
/thaiToTao
/thaiThoThung
/thaiThoThahan
/thaiThoThong
/thaiNoNu
/thaiBoBaimai
/thaiPoPla
/thaiPhoPhung
/thaiFoFa
/thaiPhoPhan
/thaiFoFan
/thaiPhoSamphao
/thaiMoMa
/thaiYoYak
/thaiRoRua
/thaiRu
/thaiLoLing
/thaiLu
/thaiWoWaen
/thaiSoSala
/thaiSoRusi
/thaiSoSua
/thaiHoHip
/thaiLoChula
/thaiOAng
/thaiHoNokhuk
/thaiPaiyannoi
/thaiSaraA
/thaiMaiHanAkat
/thaiSaraAa
/thaiSaraAm
/thaiSaraI
/thaiSaraIi
/thaiSaraUe
/thaiSaraUee
/thaiSaraU
/thaiSaraUu
/thaiPhinthu
/nbspace
/strangebar
/thaiPaiyannoiVar
/thaiAngkhankhuVar
/thaiBaht
/thaiSaraE
/thaiSaraAe
/thaiSaraO
/thaiSaraAiMaimuan
/thaiSaraAiMaimalai
/thaiLakkhangyao
/thaiMaiyamok
/thaiMaitaikhu
/thaiMaiEkLow
/thaiMaiThoLow
/thaiMaiTriLow
/thaiMaiChattawaLow
/thaiThanthakhatLow
/thaiNikhahit
/thaiYamakkan
/thaiFongman
/thaiDigitZero
/thaiDigitOne
/thaiDigitTwo
/thaiDigitThree
/thaiDigitFour
/thaiDigitFive
/thaiDigitSix
/thaiDigitSeven
/thaiDigitEight
/thaiDigitNine
/thaiAngkhankhu
/thaiKhomut
/thaiSaraULow
/thaiSaraUuLow
/thaiPhinthuLow
/joker
] def
%ligature for making LEFT vowels, tone marks and Nikhahit
%PoPla left vowel
%LIGKERN thaiPoPla thaiMaiHanAkat |=:> thaiMaiHanAkatLeft ;
%LIGKERN thaiPoPla thaiSaraI |=:> thaiSaraILeft ;
%LIGKERN thaiPoPla thaiSaraIi |=:> thaiSaraIiLeft ;
%LIGKERN thaiPoPla thaiSaraUe |=:> thaiSaraUeLeft ;
%LIGKERN thaiPoPla thaiSaraUee |=:> thaiSaraUeeLeft ;
%LIGKERN thaiPoPla thaiMaitaikhu |=:> thaiMaitaikhuLeft ;
%Popla left tone marks
%LIGKERN thaiPoPla thaiMaiEkLow |=:> thaiMaiEkLowLeft ;
%LIGKERN thaiPoPla thaiMaiThoLow |=:> thaiMaiThoLowLeft ;
%LIGKERN thaiPoPla thaiMaiTriLow |=:> thaiMaiTriLowLeft ;
%LIGKERN thaiPoPla thaiMaiChattawaLow |=:> thaiMaiChattawaLowLeft ;
%LIGKERN thaiPoPla thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiNikhahitLeft thaiSaraAm |=:> thaiSaraAa ;

%FoFa left vowel
%LIGKERN thaiFoFa thaiMaiHanAkat |=:> thaiMaiHanAkatLeft ;
%LIGKERN thaiFoFa thaiSaraI |=:> thaiSaraILeft ;
%LIGKERN thaiFoFa thaiSaraIi |=:> thaiSaraIiLeft ;
%LIGKERN thaiFoFa thaiSaraUe |=:> thaiSaraUeLeft ;
%LIGKERN thaiFoFa thaiSaraUee |=:> thaiSaraUeeLeft ;
%LIGKERN thaiFoFa thaiMaitaikhu |=:> thaiMaitaikhuLeft ;
%FoFa left tone marks
%LIGKERN thaiFoFa thaiMaiEkLow |=:> thaiMaiEkLowLeft ;
%LIGKERN thaiFoFa thaiMaiThoLow |=:> thaiMaiThoLowLeft ;
%LIGKERN thaiFoFa thaiMaiTriLow |=:> thaiMaiTriLowLeft ;
%LIGKERN thaiFoFa thaiMaiChattawaLow |=:> thaiMaiChattawaLowLeft ;
%LIGKERN thaiFoFa thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiNikhahitLeft thaiSaraAm |=:> thaiSaraAa ;

%FoFan left vowel
%LIGKERN thaiFoFan thaiMaiHanAkat |=:> thaiMaiHanAkatLeft ;
%LIGKERN thaiFoFan thaiSaraI |=:> thaiSaraILeft ;
%LIGKERN thaiFoFan thaiSaraIi |=:> thaiSaraIiLeft ;
%LIGKERN thaiFoFan thaiSaraUe |=:> thaiSaraUeLeft ;
%LIGKERN thaiFoFan thaiSaraUee |=:> thaiSaraUeeLeft ;
%LIGKERN thaiFoFan thaiMaitaikhu |=:> thaiMaitaikhuLeft ;
%FoFan left tone marks
%LIGKERN thaiFoFan thaiMaiEkLow |=:> thaiMaiEkLowLeft ;
%LIGKERN thaiFoFan thaiMaiThoLow |=:> thaiMaiThoLowLeft ;
%LIGKERN thaiFoFan thaiMaiTriLow |=:> thaiMaiTriLowLeft ;
%LIGKERN thaiFoFan thaiMaiChattawaLow |=:> thaiMaiChattawaLowLeft ;
%LIGKERN thaiFoFan thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiNikhahitLeft thaiSaraAm |=:> thaiSaraAa ;

%LoChula left vowel
%LIGKERN thaiLoChula thaiMaiHanAkat |=:> thaiMaiHanAkatLeft ;
%LIGKERN thaiLoChula thaiSaraI |=:> thaiSaraILeft ;
%LIGKERN thaiLoChula thaiSaraIi |=:> thaiSaraIiLeft ;
%LIGKERN thaiLoChula thaiSaraUe |=:> thaiSaraUeLeft ;
%LIGKERN thaiLoChula thaiSaraUee |=:> thaiSaraUeeLeft ;
%LIGKERN thaiLoChula thaiMaitaikhu |=:> thaiMaitaikhuLeft ;
%LoChula left tone marks
%LIGKERN thaiLoChula thaiMaiEkLow |=:> thaiMaiEkLowLeft ;
%LIGKERN thaiLoChula thaiMaiThoLow |=:> thaiMaiThoLowLeft ;
%LIGKERN thaiLoChula thaiMaiTriLow |=:> thaiMaiTriLowLeft ;
%LIGKERN thaiLoChula thaiMaiChattawaLow |=:> thaiMaiChattawaLowLeft ;
%LIGKERN thaiLoChula thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiNikhahitLeft thaiSaraAm |=:> thaiSaraAa ;

%ligature for making left SaraAm with HiLeft tone marks
%LIGKERN thaiMaiEkLowLeft thaiSaraAm =:| thaiMaiEkLeft ;
%LIGKERN thaiMaiEkLeft thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiMaiThoLowLeft thaiSaraAm =:| thaiMaiEkLeft ;
%LIGKERN thaiMaiThoLeft thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiMaiTriLowLeft thaiSaraAm =:| thaiMaiEkLeft ;
%LIGKERN thaiMaiTriLeft thaiSaraAm |=:|> thaiNikhahitLeft ;
%LIGKERN thaiMaiChattawaLowLeft thaiSaraAm =:| thaiMaiEkLeft ;
%LIGKERN thaiMaiChattawaLeft thaiSaraAm |=:|> thaiNikhahitLeft ;

%LIGKERN thaiMaiEkLow thaiSaraAm =:| thaiMaiEk ;
%LIGKERN thaiMaiThoLow thaiSaraAm =:| thaiMaiTho ;
%LIGKERN thaiMaiTriLow thaiSaraAm =:| thaiMaiTri ;
%LIGKERN thaiMaiChattawaLow thaiSaraAm =:| thaiMaiChattawa ;

%ligature for making HI tone marks
%LIGKERN thaiMaiHanAkat thaiMaiEkLow |=:> thaiMaiEk ;
%LIGKERN thaiMaiHanAkat thaiMaiThoLow |=:> thaiMaiTho ;
%LIGKERN thaiMaiHanAkat thaiMaiTriLow |=:> thaiMaiTri ;
%LIGKERN thaiMaiHanAkat thaiMaiChattawaLow |=:> thaiMaiChattawa ;
%LIGKERN thaiSaraI thaiMaiEkLow |=:> thaiMaiEk ;
%LIGKERN thaiSaraI thaiMaiThoLow |=:> thaiMaiTho ;
%LIGKERN thaiSaraI thaiMaiTriLow |=:> thaiMaiTri ;
%LIGKERN thaiSaraI thaiMaiChattawaLow |=:> thaiMaiChattawa ;
%LIGKERN thaiSaraI thaiThanthakhatLow |=:> thaiThanthakhat ;
%LIGKERN thaiSaraIi thaiMaiEkLow |=:> thaiMaiEk ;
%LIGKERN thaiSaraIi thaiMaiThoLow |=:> thaiMaiTho ;
%LIGKERN thaiSaraIi thaiMaiTriLow |=:> thaiMaiTri ;
%LIGKERN thaiSaraIi thaiMaiChattawaLow |=:> thaiMaiChattawa ;
%LIGKERN thaiSaraIi thaiThanthakhatLow |=:> thaiThanthakhat ;
%LIGKERN thaiSaraUe thaiMaiEkLow |=:> thaiMaiEk ;
%LIGKERN thaiSaraUe thaiMaiThoLow |=:> thaiMaiTho ;
%LIGKERN thaiSaraUe thaiMaiTriLow |=:> thaiMaiTri ;
%LIGKERN thaiSaraUe thaiMaiChattawaLow |=:> thaiMaiChattawa ;
%LIGKERN thaiSaraUe thaiThanthakhatLow |=:> thaiThanthakhat ;
%LIGKERN thaiSaraUee thaiMaiEkLow |=:> thaiMaiEk ;
%LIGKERN thaiSaraUee thaiMaiThoLow |=:> thaiMaiTho ;
%LIGKERN thaiSaraUee thaiMaiTriLow |=:> thaiMaiTri ;
%LIGKERN thaiSaraUee thaiMaiChattawaLow |=:> thaiMaiChattawa ;
%LIGKERN thaiSaraUee thaiThanthakhatLow |=:> thaiThanthakhat ;

%ligature for making LEFT HI tone marks and thantakhad
%LIGKERN thaiMaiHanAkatLeft thaiMaiEkLow |=:> thaiMaiEkLeft ;
%LIGKERN thaiSaraILeft thaiMaiEkLow |=:> thaiMaiEkLeft ;
%LIGKERN thaiSaraIiLeft thaiMaiEkLow |=:> thaiMaiEkLeft ;
%LIGKERN thaiSaraUeLeft thaiMaiEkLow |=:> thaiMaiEkLeft ;
%LIGKERN thaiSaraUeeLeft thaiMaiEkLow |=:> thaiMaiEkLeft ;

%LIGKERN thaiMaiHanAkatLeft thaiMaiThoLow |=:> thaiMaiThoLeft ;
%LIGKERN thaiSaraILeft thaiMaiThoLow |=:> thaiMaiThoLeft ;
%LIGKERN thaiSaraIiLeft thaiMaiThoLow |=:> thaiMaiThoLeft ;
%LIGKERN thaiSaraUeLeft thaiMaiThoLow |=:> thaiMaiThoLeft ;
%LIGKERN thaiSaraUeeLeft thaiMaiThoLow |=:> thaiMaiThoLeft ;

%LIGKERN thaiMaiHanAkatLeft thaiMaiTriLow |=:> thaiMaiTriLeft ;
%LIGKERN thaiSaraILeft thaiMaiTriLow |=:> thaiMaiTriLeft ;
%LIGKERN thaiSaraIiLeft thaiMaiTriLow |=:> thaiMaiTriLeft ;
%LIGKERN thaiSaraUeLeft thaiMaiTriLow |=:> thaiMaiTriLeft ;
%LIGKERN thaiSaraUeeLeft thaiMaiTriLow |=:> thaiMaiTriLeft ;

%LIGKERN thaiMaiHanAkatLeft thaiMaiChattawaLow |=:> thaiMaiChattawaLeft ;
%LIGKERN thaiSaraILeft thaiMaiChattawaLow |=:> thaiMaiChattawaLeft ;
%LIGKERN thaiSaraIiLeft thaiMaiChattawaLow |=:> thaiMaiChattawaLeft ;
%LIGKERN thaiSaraUeLeft thaiMaiChattawaLow |=:> thaiMaiChattawaLeft ;
%LIGKERN thaiSaraUeeLeft thaiMaiChattawaLow |=:> thaiMaiChattawaLeft ;

%LIGKERN thaiSaraILeft thaiThanthakhatLow |=:> thaiThanthakhatLeft ;

%ligature for making LOW SaraU SaraUu and Phinthu
%LIGKERN thaiDoChada thaiSaraU |=:> thaiSaraULow ;
%LIGKERN thaiDoChada thaiSaraUu |=:> thaiSaraUuLow ;
%LIGKERN thaiDoChada thaiPhinthu |=:> thaiPhinthuLow ;
%LIGKERN thaiToPatak thaiSaraU |=:> thaiSaraULow ;
%LIGKERN thaiToPatak thaiSaraUu |=:> thaiSaraUuLow ;
%LIGKERN thaiToPatak thaiPhinthu |=:> thaiPhinthuLow ;

%ligature for making YoYingDescless and ThoThanDescless
%LIGKERN thaiYoYing thaiSaraU =:|> thaiYoYingDescless ;
%LIGKERN thaiYoYing thaiSaraUu =:|> thaiYoYingDescless ;
%LIGKERN thaiYoYing thaiPhinthu =:|> thaiYoYingDescless ;
%LIGKERN thaiThoThan thaiSaraU =:|> thaiThoThanDescless ;
%LIGKERN thaiThoThan thaiSaraUu =:|> thaiThoThanDescless ;
%LIGKERN thaiThoThan thaiPhinthu =:|> thaiThoThanDescless ;

%ligature for making Lakkhangyao
%LIGKERN thaiRu thaiSaraAa |=:> thaiLakkhangyao ;
%LIGKERN thaiLu thaiSaraAa |=:> thaiLakkhangyao ;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]