;;;
;;; For the Thai proportional fonts to draw Thai script.
-;; 1st stage: basic composition of CVT
(category
- ;; C: CONSONANT
- ;; V: VOWEL upper and lower
- ;; A: SARA-AM
- ;; T: TONE
- ;; E: else
- (0x0E00 0x0E5F ?E)
- (0x0E01 0x0E2E ?C)
- (0x0E31 ?V)
- (0x0E33 ?A)
- (0x0E34 0x0E3A ?V)
- (0x0E47 ?V)
- (0x0E48 0x0E4E ?T)
- )
-
-(generator
- (0
- (cond
- ("(C)(T)?(A)" ; SARA-AM -> NIKHAHIT+SARA-AA
- (1 = 0x0E4D) (2 =) (3 0x0E32))
- ("(C)(T)(V)?" ; CTV -> CVT
- (1 =) (3 =) (2 =))
- ("(C)(V)?(T)?"
- (1 =) (2 =) (3 =))
- ("[^C]"
- [ = ]))
- *))
-
-(category
- ;; C: CONSONANT tall
- ;; c: CONSONANT normal
+ ;; C: CONSONANT normal
+ ;; c: CONSONANT tall
;; d: CONSONANT deep
+ ;; A: SARA-AM
;; V: VOWEL upper, NIKHAHIT, and YAMAKKAN
;; v: VOWEL lower
;; T: TONE
- ;; E: ELSE
- (0x0E00 0x0E5F ?E)
- (0x0E01 0x0E2E ?c)
+ ;; I: OTHER INDEPENDENT
+ (0x0E01 0x0E2E ?C)
(0x0E0D 0x0E10 ?d)
- (0x0E1B ?C)
- (0x0E1D ?C)
- (0x0E1F ?C)
- (0x0E2C ?C)
+ (0x0E1B ?c)
+ (0x0E1D ?c)
+ (0x0E1F ?c)
+ (0x0E2C ?c)
+ (0x0E2F 0x0E32 ?I)
(0x0E31 ?V)
+ (0x0E33 ?A)
(0x0E34 0x0E37 ?V)
(0x0E38 0x0E3A ?v)
+ (0x0E3F 0x0E46 ?I)
(0x0E47 ?V)
(0x0E48 0x0E4C ?T)
- (0x0E4D 0x0E4E ?V))
+ (0x0E4D 0x0E4E ?V)
+ (0x0E4F 0x0E5B ?I))
(generator
(0
- (cond
- ("(C)(V)(T)?"
- < (1 =) (2 =) (3 =) >)
- ("(C)(v)?(T)?"
- < (1 =) (2 =) (3 =) >)
- ("([cd])(V)(T)?"
- < (1 =) (2 =) (3 =) >)
- ("(c)(v)?(T)?"
- < (1 =) (2 =) (3 =) >)
- ("(d)(v)?(T)?"
- < (1 =) (2 =) (3 =) >)
- ("[VvT]"
+ (cond
+ ("([Cd])(T)?(A)"
+ < (1 = 0x0E4D) (2 tr+bl =) (3 0x0E32) > )
+ ("(c)(T)?(A)"
+ < (1 = Br<13Bl 0x0E4D) (2 tr+<13bl =) (3 0x0E32) > )
+ ("(C[vV]?)(T)?"
+ < (1 = =) (2 tr+bl =) > )
+ ("(c)([vV])?(T)?"
+ < (1 = *) (2 (cond ("v" =) ("." Br<8Bl =))) (3 tr+<8bl =) > )
+ ("(d)([vV])?(T)?"
+ < (1 = *) (2 (cond ("v" br-tl =) ("." =))) (3 tr+bl =) > )
+ ("[VvTA]"
[ = ])
("."
=))