Tai Tham (Unicode block)

Tai Tham is a Unicode block containing characters of the Lanna script used for writing the Northern Thai (Kam Mu'ang), Tai Lü, and Khün languages.

History
123 of the 127 code points initially encoded were proposed in L2/07-007R, two more (U+1A5C and U+1A7C) in L2/08-037R2 and a final pair (U+1A5D and U+1A5E) in L2/08-073. The last of these three documents modified the definitions of U+1A37 and U+1A38 given in the first of the three.

The following Unicode-related documents record the purpose and process of defining specific characters in the Tai Tham block:

Encoding of Subscript Consonants
Base and subscript consonants have different encodings because words such as ᨲᩥ᩠ᨠ and ᨲᩥᨠ are different in both appearance and sound. Subscript consonants are encoded as a sequence of 2 characters. The second is the base character and the first is the special character U+1A60 TAI THAM SIGN SAKOT.

If a consonant has two subscript forms and the choice affects the meaning, the form typically used for syllable-final consonants will be encoded with SAKOT, and the other form will have its own code point. There are 7 consonants which have different subscript forms in this way, namely ᩁ RA, ᩃ LA, ᨷ BA, ᩈ HIGH SA, ᨾ MA, ᨳ HIGH RATA, and ᨻ LOW PA.

ᨣᩕᩪ is encoded as &lt;U+1A23 LOW KA, U+1A55 MEDIAL RA, U+1A6A SIGN UU&gt; but ᨠᩣ᩠ᩁ is encoded as &lt;U+1A20 HIGH KA, U+1A63 SIGN AA, U+1A60 SAKOT, U+1A41 RA&gt;

ᩆᩦ᩠ᩃ is encoded as &lt;U+1A46 HIGH SHA, U+1A66 SIGN II, U+1A60 SAKOT, U+1A43 LA&gt; but ᨸᩖᩦ  is encoded as &lt;U+1A38 HIGH PA, U+1A56 MEDIAL LA, U+1A66 SIGN II&gt;. (For the use of LA as a syllable final letter, compare ᩁᨭᩛᨷᩣ᩠ᩃ.

U+1A57 SIGN LA TANG LAI looks like &lt;U+1A60 SAKOT, U+1A43 LA&gt; but is in origin a ligature of it with &lt;U+1A60 SAKOT, U+1A26 NGA&gt;. Tai Lue uses it to write the word ᨴᩢ᩵ᩗᩣ.

ᨣᩝᩴ is encoded as &lt;U+1A23 LOW KA, U+1A5D SIGN BA, U+1A74 MAI KANG&gt;, but ᨠᩢ᩠ᨷ is encoded as &lt;U+1A20 HIGH KA, U+1A62 MAI SAT, U+1A60 SAKOT, U+1A37 BA&gt; and ᨠᩢᨷ᩠ᨷ᩺ is encoded as &lt;U+1A20 HIGH KA, U+1A62 MAI SAT, U+1A37 BA, U+1A60 SAKOT, U+1A37 BA, U+1A7A RA HAAM&gt;


 * In the final proposal, which the Unicode Consortium accepted that what is now SIGN BA (as in ᨣᩝᩴ) would be encoded as &lt;SAKOT, BA&gt; and what is now &lt;SAKOT, BA&gt; (as in ᨠᩢ᩠ᨷ) should be encoded as &lt;SAKOT, HIGH PA&gt;, but during the ISO process the meaning of &lt;SAKOT, BA&gt; changed and SIGN BA was added.  However, the original meaning of &lt;SAKOT, HIGH PA&gt; remains for words from Thai that have ป as a syllable-final consonant.  (This proposal mistakenly calls &lt;SAKOT, HIGH PA&gt; &lt;SAKOT, HIGH PHA&gt;.)

Pali uses HIGH PA instead of BA in Laos and northeast Thailand. One should therefore be prepared to find  encoded as &lt;U+1A60 SAKOT, U+1A38 HIGH PA&gt; in Pali.

Tai Khuen has two ways of writing subscript HIGH SA. They are not interchangeable. In Tai Khuen, to write ᩃᩮᩞ is correct and to write ᩃᩮ᩠ᩈ is wrong, but to write ᩈᨶ᩠ᨶᩥᩅᩤ᩠ᩈ is correct while to write ᩈᨶ᩠ᨶᩥᩅᩤᩞ is wrong! ᩃᩮᩞ is encoded as &lt;U+1A43 LA, U+1A6E SIGN E, U+1A5E SIGN SA&gt; while the incorrect ᩃᩮ᩠ᩈ is encoded as &lt;U+1A43 LA, U+1A6E SIGN E, U+1A60 SAKOT, U+1A48 HIGH SA&gt;.

Tai Khuen has an additional way of writing subscript MA. There is a special codepoint for this additional method The word which Northern Thai writes as ᨵᨾ᩠ᨾ᩺ is written in Tai Khuen both as ᨵᨾ᩠ᨾ᩼ encoded as &lt;U+1A35 LOW THA, U+1A3E MA, U+1A60 SAKOT, U+1A3E MA, U+1A7C KARAN&gt; and as ᨵᨾᩜ᩼ encoded as &lt;U+1A35 LOW THA, U+1A3E MA, U+1A5C SIGN MA, U+1A7C KARAN&gt;.

There are two ways of writing the subscript for both HIGH RATHA and LOW PA. ᨶᩥᨣᨱᩛ is encoded as &lt;U+1A36 NA, U+1A65 SIGN I, U+1A23 LOW KA, U+1A31 RANA, U+1A5B SIGN HIGH RATHA OR LOW PA&gt;: ᩁᩣᨩᨽᩢ᩠ᨮ is encoded &lt;U+1A41 RA, U+1A63 SIGN AA, U+1A29 LOW CA, U+1A3D LOW PHA, U+1A62 MAI SAT, U+1A60 SAKOT, U+1A2E HIGH RATHA&gt;. ᨶᩥᨻᩛᩣᨶ is encoded as &lt;U+1A36 NA, U+1A65 SIGN I, U+1A3B LOW PA, U+1A5B SIGN HIGH RATHA OR LOW PA, U+1A63 SIGN AA, U+1A36 NA&gt;: ᨴᩮ᩠ᨻ is encoded as &lt;U+1A34 LOW TA, U+1A6E SIGN E, U+1A60 SAKOT, U+1A3B LOW PA&gt;. The latter word is also written as ᨴᩮ᩠ᨷ. The Lao-style consonant conjunct ᨲ᩠ᨳ (encoded as &lt;U+1A32 HIGH TA, U+1A60 SAKOT, U+1A33 HIGH THA&gt;) looks as though it is ᨲᩛ encoded as &lt;U+1A32 HIGH TA, U+1A5B SIGN HIGH RATHA OR LOW PA&gt;. The shape of U+1A5B depends upon the consonant it is subscript to.

The dependent vowel of words like ᨯᩬᨠ 'flower' is encoded by the special vowel &lt;U+1A6C SIGN OA BELOW&gt;; one should not use the sequence &lt;U+1A60 SAKOT, U+1A4B LETTER A&gt; There is also an encoded dependent vowel for words like Tai Khuen, Tai Lue and Lao words such as ᨶ᩶ᩭ, namely U+1A6D SIGN OY. This vowel is not encoded as &lt;U+1A6C SIGN OA BELOW, U+1A60 SAKOT, U+1A3F LOW YA&gt; (which is what Northern Thai uses for the corresponding words; nor is it the sequence &lt;U+1A60 SAKOT, U+1A40 HIGH YA&gt; ⁠

Superscript Consonants
Superscript consonants are encoded independently of the base consonants. Some characters serve both as superscript consonants and in other roles, and are therefore discussed further in this section. Niggahita and is encoded as U+1A74 MAI KANG. Superscript WA is not encoded separately. It is encoded as MAI KANG. For example, Tai Khuen ᨯ᩠ᨿᩴ is encoded as &lt;U+1A2, DA, U+1A60 SAKOT, U+1A3F LOW YA, U+1A74 MAI KANG&gt;. For the purposes of character sequencing, it is generally treated as a vowel.

Superscript cluster-initial NGA is encoded as U+1A58 MAI KANG LAI. Note that Lao generally uses the same glyph for MAI KANG LAI and U+1A59 SIGN FINAL NGA.

U+1A62 MAI SAT serves three roles - it is a vowel, a final consonant, and a vowel shortener.

Choosing the encoding of the superscript form of RA and the vowel killers was difficult. In the 1940s the Tai Khuen wrote the consonant and the vowel killer the same way. The proposers of the encoding made enquiries and were told that the glyphs were still the same and therefore encoded them both as U+1A7A RA HAAM. It was then learnt that the Tai Khuen had changed the glyphs of the vowel killer, and a new character U+1A7C KARAN was added for the Tai Khuen style of the vowel killer. Some Northern Thai writers prefer to use U+1A7C as the vowel killer, and indeed the use of its glyph is not unknown in Northern Thai handwriting.

Special Consonants
The special forms ᩓ and ᩕ are encoded by the code points U+1A53 and U+1A55 respectively.

If the glyphs of U+1A36 NA and U+1A63 SIGN AA would be side by side they are written as the ligature ᨶᩣ rather than as two separate glyphs ᨶ&zwnj;ᩣ. They are written as a ligature even if the NA has a subscript consonant or a non-following mark attached. Examples: ᨾᨶ᩠ᨲᩣ (, encoding &lt;U+1A3E MA, U+1A36 NA, U+1A60 SAKOT, U+1A32 HIGH TA, U+1A63 SIGN AA&gt;) and ᨶᩮᩢᩣ (, encoding &lt;U+1A36 NA, 1A6E SIGN E, U+1A62 MAI SAT, U+1A63 SIGN AA&gt;). Subscript NA and SIGN AA do not similarly ligate, e.g. ᩉ᩠ᨶᩣ (, encoded &lt;U+1A49 HIGH HA, U+1A60 SAKOT, 1A36 NA, U+1A63 SIGN AA&gt;)

The geminate consonant ᩔ is encoded separately because the word ᩅᩥᩈᩮ᩠ᩈ (, encoding &lt;U+1A45 WA, U+1A65 SIGN I, U+1A48 HIGH SA, U+1A6E SIGN E, U+1A60 SAKOT, U+1A48 HIGH SA&gt;) has an appearance very different from ᩅᩥᩔᩮ, but one may have occasion to fold the final syllable to &lt;HIGH SA, SAKOT, HIGH SA, SIGN E&gt;. Indeed, in 2019 to 2020 there was a campaign to establish the latter as its standard spelling.

By contrast, the geminate consonant ᨬ᩠ᨬ is encoded as the conjunct &lt;U+1A2C NYA, U+1A60 SAKOT, U+1A2C NYA&gt;, even though some of its glyphs may resemble the hypothetical conjunct ᨱ᩠ᨬ &lt;U+1A31 RANA, U+1A60 SAKOT, U+1A2C NYA&gt;.

Independent Vowels
The independent vowel ᩋ and the consonant ᩋ are the same character, U+1A4B.

The independent vowel ᩋᩣ and the sequence of the consonant ᩋ and dependent vowel ᩣ have the same appearance ᩋᩣ and are therefore both encoded &lt;U+1A20 LETTER A, U+1A63 SIGN AA&gt;.

Northern Thai uses 5 independent vowels with their own code points, namely ᩍ, ᩎ, ᩏ, ᩐ and ᩑ.

In Northern Thai the 8th independent vowel is no different from the sequence of the consonant ᩋ and dependent vowel ᩰ, i.e. ᩋᩰ, and they are therefore both encoded &lt;U+1A4B LETTER A, U+1A70 SIGN OO&gt;. Other languages use a distinct character ᩒ U+1A52 LETTER OO for the independent vowel.

Character Order within Text
The encoding proposal defined the ordering of Unicode characters.

Like the way of writing Burmese, Khmer, and Indian languages, Unicode characters are ordered according to the order of the sounds except in special cases or if 2 sounds combine into a single sound and then one uses the old order. This order is usually as in Siamese. If the sound does not have an order then one uses the visual order or a special alternative order.

There are special rules for:
 * (a) The ordering of vowels
 * (b) The writing of mai kia in all its variants
 * (c) Th writing of mai kua in all its variants
 * (d) The writing of mai kam
 * (e) The writing of tone marks

The ordering of Unicode characters for consonants and vowels is: onset letters, true vowel marks, coda consonants, onset letters, true vowel marks, coda consonants. For convenience, one reckons that symbols killing vowels are vowels.

The 'onset letters' are consonants, independent vowels or special symbols. The consonants in a group are ordered according to the order in which they are sounded or used to be sounded.

Example: ᨻᩩᨴ᩠ᨵ
 * onset letter: ᨻ
 * pure vowel: ᩩ
 * final 'consonant': ᨴ
 * onset letter: ᨵ
 * pure vowel: no symbol
 * final consonant: none

The encoding is &lt;U+1A3B LOW PA, U+1A69 SIGN U, U+1A34 LOW TA, U+1A60 SAKOT, U+1A35 LOW THA&gt;

Example: ᨻᩕ has a single consonant sound, but formerly had 2 sounds, namely those of ᨻ and then ᩁ as in central Thai. This word is encoded as &lt;LOW PA, MEDIAL RA&gt;.

Apart from MEDIAL RA, the order of the consonant glyphs is the same as the order of the sounds. In most cases MEDIAL RA is the last consonant but the WA of /ua/ and the LOW YA of /ia/ follow MEDIAL RA.

Examples:
 * ᩆᩣᩈ᩠ᨲᩕ᩺ is encoded &lt;U+1A46 HIGH SHA, U+1A63 SIGN AA, U+1A48 HIGH SA, U+1A60 SAKOT, U+1A32 HIGH TA, U+1A55 MEDIAL RA, U+1A7A RA HAAM&gt;.
 * ᨠᩕᩈᩢ᩠ᨲ is encoded &lt;U+1A20 HIGH KA, U+1A55 MEDIAL RA, U+1A48 HIGH SA, U+1A62 MAI SAT, U+1A60 SAKOT, U+1A32 HIGH TA&gt.
 * ᩈᩕ᩠ᩅᨾ is encoded &lt;U+1A48 HIGH SA, U+1A55 MEDIAL RA, U+1A60 SAKOT, U+1A45 WA, U+1A3E MA&gt;.
 * But ᨲᩕ᩠ᨶᩬᨾ  is encoded &lt;U+1A32 HIGH TA, U+1A55 MEDIAL RA, U+1A60 SAKOT, U+1A36 NA, U+1A6C SIGN OA BELOW, U+1A3E MA&gt;

For words like ᨧᩮᩢ᩶ᩣ there is the rule that symbols for vowels and tones have the order:
 * (1) leading vowels
 * (2) vowels below (top to bottom)
 * (3) vowels above (bottom to top)
 * (4) tone marks (left to right)
 * (5) trailing vowels (left to right)

In the application of these rules, MAI KANG is reckoned as a vowel even though it function as niggahita or as a consonant. The Unicode character MAI SAT is reckoned as a vowel even though it function as a consonant, i.e as mai kak, i.e. as a final consonant or function as a vowel shortener as in ᨸᩮᩢ᩠ᨯ.

The relative ordering of the marks above and below should follow Thai and Lao as in เจ้า เกี่ว ชุํ and ບິ່.

Examples:
 * ᨧᩮᩢ᩶ᩣ is encoded as &lt;U+1A27 HIGH CA, U+1A6E SIGN E, U+1A62 MAI SAT, U+1A76 TONE-2, U+1A63 SIGN AA&gt;
 * ᨾᩢᩣ is encoded as &lt;U+1A3E MA, U+1A62 MAI SAT, U+1A63 SIGN AA&gt;
 * ᩃᩪᩢ is encoded as &lt;U+1A43 LA, U+1A6A SIGN UU, U+1A62 MAI SAT&gt;
 * ᨶᩮᩢᩣ is encoded as &lt;U+1A36 NA, U+1A6E SIGN E, U+1A62 MAI SAT, U+1A63 SIGN AA&gt;
 * ᩋᩫᨶ᩠ᨲᩕᩣ᩠ᨿ is encoded as &lt;U+1A4B LETTER A, U+1A6B SIGN O, U+1A36 NA, U+1A60 SAKOT, U+1A32 HIGH TA, U+1A55 MEDIAL RA, U+1A63 SIGN AA, U+1A60 SAKOT, U+1A3F LOW YA&gt;

For /ia/ and /ua/ in all their forms, subscript LOW YA and WA are reckoned as onset consonants.

Examples:
 * ᩈ᩠ᨿᩮ is actually encoded &lt;U+1A48 HIGH SA, U+1A60 SAKOT, U+1A3F LOW YA, U+1A6E SIGN E&gt;
 * ᨸ᩠ᩃ᩠ᨿ᩵ᩁ is actually encoded &lt;U+1A38 HIGH PA, U+1A60 SAKOT, U+1A43 LA, U+1A60 SAKOT, U+1A3F LOW YA, U+1A75 TONE-1, U+1A41 RA&gt;
 * ᨲ᩠ᩅᩫ is actually encoded &lt;U+1A32 HIGH TA, U+1A60 SAKOT, U+1A45 WA, U+1A6B SIGN O&gt;
 * ᩈ᩠ᩅ᩵ᩁ is actually encoded &lt;U+1A48 HIGH SA, U+1A60 SAKOT, U+1A45 WA, U+1A75 TONE-1, U+1A41 RA&gt;
 * ᨠᩖ᩠ᩅ᩠᩶ᨿ is actually encoded as &lt;U+1A20 KA, U+1A56 MEDIAL LA, U+1A60 SAKOT, U+1A45 WA, U+1A76 TONE-2, U+1A60 SAKOT, U+1A3F LOW YA&gt;
 * (&lt;U+1A60, U+1A76&gt; is canonically equivalent to &lt;U+1A76, U+1A60&gt;)

Outside Northern Thailand, the MAI KANG in the symbol for /am/ is written on the SIGN AA component. In Northern Thailand, it is positioned variously – on the consonant, on the SIGN AA and between them. The Unicode Consortium refused a special character for the combination. The word ᨷᩴ᩠᩵ᨾᩣ should not appear to have the same vowel as ᨲ᩵ᩣᩴ. The combination for /am/ is therefore encoded as &lt;U+1A63 SIGN AA, U+1A74 MAI KANG&gt;. The word ᨷᩴ᩠᩵ᨾᩣ is encoded as &lt;U+1A37 BA, U+1A74 MAI KANG, U+1A75 TONE-1, U+1A60 SAKOT, U+1A3E MA, U+1A63 SIGN AA&gt;. The word ᨲ᩵ᩣᩴ is encoded as &lt;U+1A32 HIGH TA, U+1A75 TONE-1, U+1A63 SIGN AA, U+1A74 MAI KANG&gt;. The combination for /am/ with SIGN TALL AA is encoded as &lt;U+1A64 SIGN TALL AA, U+1A74 MAI KANG&gt;.

U+1A5A SIGN LOW PA is a special case; the Tai Lue word ᨣᨽᩚ is encoded as &lt;U+1A23 LOW KA, U+1A3D LOW PHA, U+1A5A SIGN LOW PA&gt;.

Examples showing mai kang lai and la tang lai:
 * Pali word ᩈᩘᨥᩮᩣ (saṅgho) is encoded &lt;U+1A48 SA, U+1A58 MAI KANG LAI, U+1A25 LOW KHA, U+1A6E SIGN E, U+1A63 SIGN AA&gt;.
 * Northern Thai word ᨴᩘ᩠ᩃᩣ᩠ᨿ is encoded &lt;U+1A34 LOW TA, U+1A58 MAI KANG LAI, U+1A60 SAKOT, U+1A43 LA, U+1A63 SIGN AA, U+1A60 SAKOT, U+1A3F LOW YA&gt.
 * Tai Lue word ᨴᩢᩗᩣ is encoded &lt;U+1A34 LOW TA, U+1A62 MAI SAT, U+1A57 LA TANG LAI, U+1A63 SIGN AA&gt;.