RTL School

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
kh aspirated
c unaspirated palatal affricate — note c, not j
tɕʰ ch aspirated palatal affricate
d d
t t unaspirated alveolar stop
th aspirated
b b
p p unaspirated bilabial stop
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.

transcribe("เขียว", scheme="rtl")   # 'khǐaw'

Coda map (IPA → RTL)

IPA coda RTL Note
m m
n n
ŋ ŋ
p
t
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).

transcribe("ลิฟต์", scheme="rtl")    # 'líf'
transcribe("ฟุตบอล", scheme="rtl")   # 'fút bɔ̄ɔn'

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