﻿#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others. All Rights Reserved.
#--------------------------------------------------------------------
# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_ThaiLogical_Latin.txt,v $
# $Date: 2002/07/26 19:56:55 $
# $Revision: 1.5 $
#--------------------------------------------------------------------

# Thai-Latin
# This set of rules follows ISO 11940
#	see http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf
# except that that does not mention an implicit vowel, so we use ọ
#
# The transcription is fairly ugly, so we ought to also do the UNGEGN version
#	see: http://www.eki.ee/wgrs/rom1_th.pdf
# and probably make that the main variant.

# Note: this is an internal file. The NFD/NFC is handled externally, in the index
# The insertion of spaces between words, the reversal of the vowels
# and the conversion of space to semicolon are done *outside* of these rules.
# So as far as these rules are concerned, the vowels are in logical order!

# insert implicit vowel (and remove it going the other way)
# COMMENTED out: the implicit vowel positions cannot be predicted algorithmically
#$consonant = [ก-ฮ];
#$vowel = [ะ-ฺเ-ไ็];

#{ ( $consonant ) } [^$vowel ] > | $1  ;
# > ọ ;
# < ọ ;

$notAbove = [^\p{ccc=0}\p{ccc=above}] ;
$notBelow = [^\p{ccc=0}\p{ccc=below}] ;

# Consonants
# Warning: the 'h's need to be handled carefully!
# What we really want to say is the following, but we can't
# $notHAccent = !($notAbove*   ̄ | $notBelow*   ̣) ;

# Since the only accents we care about that could cause problems are free-standing accents below, we use instead:
$freeStandingBelow = [\u0325  ];
$hAccent =  [   ̄     ̣]
$notHAccent0 = [^$freeStandingBelow$hAccent];
$notHAccent1 = $freeStandingBelow [^$hAccent];

ห > h̄ ; # THAI CHARACTER HO HIP
 ห | $1 < h ($notAbove*)    ̄; # backward case, account for reordering
ฮ <> ḥ ; # THAI CHARACTER HO NOKHUK

ข <> k̄h ; # THAI CHARACTER KHO KHAI
ฃ <> ḳ̄h ; # THAI CHARACTER KHO KHUAT
ฅ <> kʹh ; # THAI CHARACTER KHO KHON  
ฆ <> ḳh ; # THAI CHARACTER KHO RAKHANG
ค < kh } $notHAccent1 ; # THAI CHARACTER KHO KHWAI  
ค <> kh } $notHAccent0 ; # THAI CHARACTER KHO KHWAI  
ก <> k ; # THAI CHARACTER KO KAI

ภ <> p̣h ; # THAI CHARACTER PHO SAMPHAO
ผ <> p̄h ; # THAI CHARACTER PHO PHUNG
พ < ph } $notHAccent1 ; # THAI CHARACTER PHO PHAN
พ <> ph } $notHAccent0 ; # THAI CHARACTER PHO PHAN
ป <> p ; # THAI CHARACTER PO PLA

ฉ <> c̄h ; # THAI CHARACTER CHO CHING
ฌ <> c̣h ; # THAI CHARACTER CHO CHOE
ช < ch } $notHAccent1 ; # THAI CHARACTER CHO CHANG
ช <> ch } $notHAccent0 ; # THAI CHARACTER CHO CHANG
จ <> c ; # THAI CHARACTER CHO CHAN

ฐ <> ṭ̄h ; # THAI CHARACTER THO THAN
ฑ <> ṯh ; # THAI CHARACTER THO NANGMONTHO
ฒ <> tʹh ; # THAI CHARACTER THO PHUTHAO
ถ <> t̄h ; # THAI CHARACTER THO THUNG
ธ <> ṭh ; # THAI CHARACTER THO THONG
ท < th } $notHAccent1 ; # THAI CHARACTER THO THAHAN
ท <> th } $notHAccent0 ; # THAI CHARACTER THO THAHAN
#Note: TO PATAK deviates from ISO since t-dotunder + h would be ambigous. So it uses vertical tick.
ฏ <> t̩ ; # THAI CHARACTER TO PATAK
ต <> t ; # THAI CHARACTER TO TAO

# since there is no singleton g (generated), don't worry about that.
ง <> ng ; # THAI CHARACTER NGO NGU
ณ <> ṇ ; # THAI CHARACTER NO NEN
น <> n ; # THAI CHARACTER NO NU

ญ <> ỵ  ; # THAI CHARACTER YO YING
ฎ <> ḍ ; # THAI CHARACTER DO CHADA
ด <> d ; # THAI CHARACTER DO DEK

บ <> b ; # THAI CHARACTER BO BAIMAI
ฝ <> f̄ ; # THAI CHARACTER FO FA
 ฝ | $1 < f ($notAbove*)    ̄; # backward case, account for reordering

ม <> m ; # THAI CHARACTER MO MA
ย <> y ; # THAI CHARACTER YO YAK
ร <> r ; # THAI CHARACTER RO RUA
ฤ <> v ; # THAI CHARACTER RU
ฦ <> ł ; # THAI CHARACTER LU
ว <> w ; # THAI CHARACTER WO WAEN

ศ <> ṣ̄ ; # THAI CHARACTER SO SALA***
 ศ | $1 < s    ̣ ($notAbove*)    ̄; # backward case, account for reordering
ษ <> s̄ʹ ; # THAI CHARACTER SO RUSI
ส > s̄ ; # THAI CHARACTER SO SUA***
 ส | $1 < s ($notAbove*)    ̄; # backward case, account for reordering

ฬ <> ḷ ; # THAI CHARACTER LO CHULA
ล <> l ; # THAI CHARACTER LO LING
ฟ <> f ; # THAI CHARACTER FO FAN

อ <> x ; # THAI CHARACTER O ANG
ซ <> s ; # THAI CHARACTER SO SO

# vowels

 ั <> ạ ; # THAI CHARACTER MAI HAN-AKAT

า > ā ; # THAI CHARACTER SARA AA
 า | $1 < a ($notAbove*)    ̄; # backward case, account for reordering

# We deviate from ISO for SARA AM for disambiguation
ำ > a  ̉; # THAI CHARACTER SARA AM
 ำ | $1 < a ($notAbove*)  ̉ ; # backward case, account for reordering

ะ <> a ; # THAI CHARACTER SARA A
 ี <> ī ; # THAI CHARACTER SARA II
  ี | $1 < i ($notAbove*)    ̄  ; # backward case, account for reordering

 ื <> ụ̄ ; # THAI CHARACTER SARA UEE
  ื | $1 < u   ̣ ($notAbove*)    ̄  ; # backward case, account for reordering

 ึ <> ụ ; # THAI CHARACTER SARA UE
 ู <> ū ; # THAI CHARACTER SARA UU
 ู | $1 < u  ($notAbove*)    ̄  ; # backward case, account for reordering

 ุ <> u ; # THAI CHARACTER SARA U

ฯ <> ‡ ; # THAI CHARACTER PAIYANNOI

# ฿ <> XXX ; # THAI CURRENCY SYMBOL BAHT

เ <> e ; # THAI CHARACTER SARA E
แ <> æ ; # THAI CHARACTER SARA AE
โ <> o ; # THAI CHARACTER SARA O
ใ <> ı ; # THAI CHARACTER SARA AI MAIMUAN
ไ <> ị ; # THAI CHARACTER SARA AI MAIMALAI
ๅ <> ɨ ; # THAI CHARACTER LAKKHANGYAO
 ็ <> ̆ ; # THAI CHARACTER MAITAIKHU
 ่ <> ̀ ; # THAI CHARACTER MAI EK
 ้ <> ̂ ; # THAI CHARACTER MAI THO
 ๊ <> ́ ; # THAI CHARACTER MAI TRI
 ๋ <> ̌ ; # THAI CHARACTER MAI CHATTAWA
 ์ <> ̒ ; # THAI CHARACTER THANTHAKHAT
 ๎ <> '~' ; # THAI CHARACTER YAMAKKAN

# We deviate from ISO for disambiguation
 ํ <>  ̊ ; # THAI CHARACTER NIKHAHIT

๏ <> § ; # THAI CHARACTER FONGMAN

๐ <> 0 ; # THAI DIGIT ZERO
๑ <> 1 ; # THAI DIGIT ONE
๒ <> 2 ; # THAI DIGIT TWO
๓ <> 3 ; # THAI DIGIT THREE
๔ <> 4 ; # THAI DIGIT FOUR
๕ <> 5 ; # THAI DIGIT FIVE
๖ <> 6 ; # THAI DIGIT SIX
๗ <> 7 ; # THAI DIGIT SEVEN
๘ <> 8 ; # THAI DIGIT EIGHT
๙ <> 9 ; # THAI DIGIT NINE

๚ <> '||' ; # THAI CHARACTER ANGKHANKHU

๛ <> » ; # THAI CHARACTER KHOMUT
ๆ <> « ; # THAI CHARACTER MAIYAMOK

# moved down to make shorter first
#Note: PHINTHU deviates from ISO since underring causes canonical problems. So it uses spacing tick below.
 ฺ <> ˌ ; # THAI CHARACTER PHINTHU
 ิ <> i ; # THAI CHARACTER SARA I

# fallbacks

| k < g ;
| k < h ;
| c < j ;
| k < q ;
| s < z ;

:: (lower);
