Consonant classes¶
Thai divides its 44 consonant letters into three classes — High (HC), Mid (MC), and Low (LC) — that were originally based on pitch tendencies but now function primarily as inputs to the tone calculation system. The class of the onset consonant is one of four factors that determine a syllable's tone.
The three-class system¶
thaiphon uses a four-value internal enum (ConsonantClass) that further splits the Low class:
| Class | Internal name | Count | Description |
|---|---|---|---|
| High | HIGH |
11 | Aspirated fricatives and stops historically produced in a high pitch range |
| Mid | MID |
9 | Letters producing historically mid-range pitch; includes the glottal stop อ |
| Low Paired | LOW_PAIRED |
14 | Low-class letters that have a High-class counterpart (same phoneme, different class) |
| Low Sonorant | LOW_SONORANT |
10 | Low-class sonorants and /h/ with no High-class counterpart |
The four internal values collapse to three for tone calculation: LOW_PAIRED and LOW_SONORANT both contribute as LOW to the tone matrix. The split is preserved internally because some derivation rules distinguish between paired and sonorant lows (e.g. the aksornam leader rules).
The consonant inventory¶
High class (HC) — 11 letters¶
| Letter | IPA onset | As coda |
|---|---|---|
| ข | kʰ | k̚ |
| ฃ | kʰ | — (obsolete) |
| ฉ | tɕʰ | — |
| ฐ | tʰ | t̚ |
| ถ | tʰ | t̚ |
| ผ | pʰ | — |
| ฝ | f | — |
| ศ | s | t̚ |
| ษ | s | t̚ |
| ส | s | t̚ |
| ห | h | — |
Mid class (MC) — 9 letters¶
| Letter | IPA onset | As coda |
|---|---|---|
| ก | k | k̚ |
| จ | tɕ | t̚ |
| ฎ | d | t̚ |
| ฏ | t | t̚ |
| ด | d | t̚ |
| ต | t | t̚ |
| บ | b | p̚ |
| ป | p | p̚ |
| อ | ʔ | — (glottal stop onset; not used as coda) |
Low class — paired (LCP) — 14 letters¶
These letters share their phoneme with a High-class letter: /kʰ/ can be spelled ข (HC) or ค/ฅ/ฆ (LCP); /tɕʰ/ can be ฉ (HC) or ช/ฌ (LCP); etc.
| Letter | IPA onset | As coda | HC counterpart |
|---|---|---|---|
| ค | kʰ | k̚ | ข |
| ฅ | kʰ | — (obsolete) | ข |
| ฆ | kʰ | k̚ | ข |
| ช | tɕʰ | t̚ | ฉ |
| ฌ | tɕʰ | — | ฉ |
| ซ | s | t̚ | ศ/ษ/ส |
| ฑ | tʰ | t̚ | ถ |
| ฒ | tʰ | t̚ | ถ |
| ท | tʰ | t̚ | ถ |
| ธ | tʰ | t̚ | ถ |
| พ | pʰ | p̚ | ผ |
| ภ | pʰ | p̚ | ผ |
| ฟ | f | p̚ | ฝ |
| ฮ | h | — | ห |
Low class — sonorant (LCS) — 10 letters¶
These sonorants and semi-vowels have no High-class counterpart.
| Letter | IPA onset | As coda |
|---|---|---|
| ง | ŋ | ŋ |
| ญ | j | n |
| ณ | n | n |
| น | n | n |
| ม | m | m |
| ย | j | j |
| ร | r | n |
| ล | l | n |
| ว | w | w |
| ฬ | l | n |
Why the class matters¶
The consonant class is the primary input to the tone system. A syllable spelled identically except for its onset class can carry a different tone. For example, กา (ก = MC, live syllable, no mark) → mid tone; but มา (ม = LC, live syllable, no mark) → also mid tone. Whereas ขา (ข = HC, live syllable, no mark) → rising tone.
The full derivation is described in Tone derivation.
The effective class¶
For tone calculation, thaiphon uses an EffectiveClass with three values (HIGH, MID, LOW). The effective class of a syllable may differ from the intrinsic class of its written onset consonant for two reasons:
- Leading ห — when the silent HC letter ห precedes a Low-class sonorant (e.g. หน, หม, หว), the syllable is treated as HC for tone purposes. This is described in Special cases.
- Aksornam propagation — a bare HC or MC "leader" consonant before an LC sonorant in the next syllable causes that second syllable to adopt the leader's effective class. This handles words like สมาน, นคร.
The effective_class field on the Syllable object records which class was actually used for tone lookup.