RTL scheme (Rak Thai Language School)¶
The rtl scheme implements the romanization used in the Rak Thai Language School's reading, writing, and speaking course materials. It is a broad phonological transcription aimed at learners who read English. Tone is shown by combining diacritics placed directly on the first vowel letter of the syllable, and several IPA vowel letters are used to distinguish sounds that Latin a e i o u cannot cover on their own.
from thaiphon import transcribe
transcribe("น้ำ", scheme="rtl")
# 'náam'
transcribe("สวัสดี", scheme="rtl")
# 'sà wàt dīi'
Format conventions¶
| Convention | Detail |
|---|---|
| Syllable separator | single space |
| Tone | combining diacritic on the first vowel letter of the syllable |
| Long vowel | doubled vowel letter (e.g. aa, ii, ɛɛ) |
| Vowel-initial syllable | ʼ (U+02BC MODIFIER LETTER APOSTROPHE) written before the vowel |
| No slashes | unlike IPA, no /…/ wrapping |
Tone notation¶
The diacritic is inserted immediately after the first vowel letter, so the mark sits inside the vowel cluster rather than at the syllable's end. After NFC normalisation, plain Latin vowels precompose with their diacritics; the IPA-letter vowels ʉ ɛ ɔ ə have no precomposed forms and retain the combining codepoint.
| Tone | Diacritic | Unicode | Example word | Rendered |
|---|---|---|---|---|
| Mid | macron ◌̄ |
U+0304 | กา | kāa |
| Low | grave ◌̀ |
U+0300 | ก่า | kàa |
| Falling | circumflex ◌̂ |
U+0302 | ก้า | kâa |
| High | acute ◌́ |
U+0301 | ก๊า | káa |
| Rising | háček ◌̌ |
U+030C | ก๋า | kǎa |
Mid tone always carries the macron — unlike some systems where mid is unmarked.
Onset map (IPA → RTL)¶
| IPA onset | RTL | Note |
|---|---|---|
k |
k |
unaspirated |
kʰ |
kh |
aspirated |
tɕ |
c |
unaspirated palatal affricate — note c, not j |
tɕʰ |
ch |
aspirated palatal affricate |
d |
d |
|
t |
t |
unaspirated alveolar stop |
tʰ |
th |
aspirated |
b |
b |
|
p |
p |
unaspirated bilabial stop |
pʰ |
ph |
aspirated |
f |
f |
|
s |
s |
|
h |
h |
|
ʔ |
ʼ |
vowel-initial syllable — see below |
m |
m |
|
n |
n |
|
ŋ |
ŋ |
|
j |
y |
|
r |
r |
|
l |
l |
|
w |
w |
Aspirated stop digraphs: /kʰ tʰ pʰ/ are written kh th ph, and /tɕʰ/ is ch. The unaspirated voiceless stops /k t p/ stay as single letters, and /tɕ/ is c — chosen to avoid confusion with the English reading of j.
Vowel-initial syllables: Every syllable with no onset consonant receives a ʼ (U+02BC) onset. This marks the natural glottal closure at the start of Thai vowel-initial syllables and is written consistently in the school's materials.
transcribe("อ่าน", scheme="rtl") # 'ʼàan'
transcribe("เอา", scheme="rtl") # 'ʼāw'
transcribe("อะไร", scheme="rtl") # 'ʼà rāy'
Vowel map (IPA → RTL)¶
| IPA quality | Short | Long |
|---|---|---|
| /a/ | a |
aa |
| /i/ | i |
ii |
| /u/ | u |
uu |
| /e/ | e |
ee |
| /ɛ/ | ɛ |
ɛɛ |
| /o/ | o |
oo |
| /ɔ/ | ɔ |
ɔɔ |
| /ɯ/ | ʉ |
ʉʉ |
| /ɤ/ | ə |
əə |
| /iə/ centring diphthong | ia |
ia |
| /ɯə/ centring diphthong | ʉa |
ʉa |
| /uə/ centring diphthong | ua |
ua |
Four IPA-letter vowels appear: ʉ (U+0289) for close back unrounded /ɯ/, ɛ (U+025B) for open-mid front /ɛ/, ɔ (U+0254) for open-mid back /ɔ/, and ə (U+0259) for mid-central /ɤ/. Long versions are spelled by doubling (ʉʉ, ɛɛ, ɔɔ, əə).
The centring diphthongs /iə ɯə uə/ are written ia ʉa ua at both length values — the short/long distinction is a phonological feature that the school does not represent in spelling.
Long /iː/ before a /w/ coda is spelled as the diphthong ia, so เขียว (green) surfaces as khǐaw rather than khǐiw. This matches the school's pedagogical treatment of เ-ียว as the nucleus ia plus the glide w.
Coda map (IPA → RTL)¶
| IPA coda | RTL | Note |
|---|---|---|
m |
m |
|
n |
n |
|
ŋ |
ŋ |
|
p̚ |
p |
|
t̚ |
t |
|
k̚ |
k |
|
w (offglide) |
w |
|
j (offglide) |
y |
|
f (loanword) |
p |
default; preserved as f for lexicon-listed loans — see below |
s (loanword) |
t |
default; preserved as s for lexicon-listed loans — see below |
l (loanword) |
n |
default; preserved as l for lexicon-listed loans — see below |
Foreign codas that Thai phonotactics does not natively support are collapsed by default: /f/ → p, /s/ → t, /l/ → n. However, for lexicon-listed modern loans the engine can preserve the foreign surface form depending on the active reading profile (see below).
Loanword coda preservation¶
Under the default everyday profile, the engine preserves foreign codas in lexicon-listed modern loanwords. For words like ลิฟต์ (elevator), เชฟ (chef), and ออฟฟิศ (office), the coda surfaces as f rather than collapsing to p. Some loans — such as กราฟ (graph) and กอล์ฟ (golf) — only preserve under the careful_educated profile.
transcribe("ลิฟต์", scheme="rtl") # 'líf'
transcribe("ลิฟต์", scheme="rtl", profile="etalon_compat") # 'líp'
transcribe("กราฟ", scheme="rtl") # 'krâap'
transcribe("กราฟ", scheme="rtl", profile="careful_educated") # 'krâaf'
Pass profile="etalon_compat" to opt back into strict native-coda collapse for every word. This matches the school's treatment of loanwords at the phonemic citation level.
See Reading profiles for a full description of each profile.
Onset clusters¶
The two phonemes of a cluster are written with no joiner. Onset clusters with a second-slot /w/ surface as kw, khw, and so on.
transcribe("ปลา", scheme="rtl") # 'plāa'
transcribe("กรุงเทพ", scheme="rtl") # 'krūŋ thêep'
transcribe("กวาง", scheme="rtl") # 'kwāaŋ'
Examples¶
All outputs are verified against the engine.
| Thai | Gloss | RTL |
|---|---|---|
| กา | crow | kāa |
| ขา | leg | khǎa |
| ตา | eye / grandfather | tāa |
| ทา | to apply | thāa |
| ปา | to throw | pāa |
| พา | to bring | phāa |
| จาน | plate | cāan |
| ชา | tea | chāa |
| น้ำ | water | náam |
| ข้าว | rice | khâaw |
| รัก | love | rák |
| ปลา | fish | plāa |
| สวัสดี | hello | sà wàt dīi |
| ภาษาไทย | Thai language | phāa sǎa thāy |
| กรุงเทพ | Bangkok | krūŋ thêep |
| เขียว | green | khǐaw |
| อ่าน | to read | ʼàan |
| เสือ | tiger | sʉ̌a |
| ถุง | bag | thǔŋ |
| เด็ก | child | dèk |