Thai

Thai

Root Zone Label Generation Rules, 4th Edition

Summary

Version4 — Root Zone LGR for Thai
Date
Tag und-Thai (Thai)
Unicode6.3.0
ScopeDNS root zone
Source filelgr-4-thai-script-05nov20-en.xml (18.9kb)
This ruleset in other editions: 6th Edition 5th Edition 4th Edition 3rd Edition 2nd Edition 1st Edition

This ruleset is integrated into the Common (integrated set) ruleset of this release.

Description

Root Zone Label Generation Rules for the Thai Script

Overview

This file contains Label Generation Rules (LGR) for the Thai script for the Root zone. For more details on this LGR and its development, as well as background on the script, see "Proposal for a Thai Script Root Zone LGR [Proposal-Thai]". This file is one of a set of LGR files that together form an integrated LGR for the DNS Root Zone [RZ-LGR-4]. The format of this file follows [RFC 7940].

Repertoire

In addition to the 68 single code points according to Section 5 “Repertoire” in [Proposal-Thai], three sequences have been defined. The sequence U+0E4D U+0E32 was defined to replace the disallowed U+0E33 (SARA AM) and to facilitate implementation of WLE rule follows-consonant-tone as a context rule. The other two sequences were defined to restrict U+0E45 (LAKKHANGYAO) from appearing in any context other than these sequences. Accordingly, while U+0E45 is not listed by itself it brings the total of distinct code points to 69.

The repertoire only includes code points used by languages that are actively written in the Thai script. The repertoire is based on [MSR-4], which is a subset of [Unicode 6.3].

Read the rest of the description Show less

As part of the Root Zone, this LGR includes neither digits nor the HYPHEN-MINUS.

Each code point or range is tagged with the script or scripts that the code point is used with, and one or more references documenting sufficient justification for inclusion in the repertoire; see "References" below.

Variants

According to Section 6, "Variants" in [Proposal-Thai], this LGR defines no variants.

Character Classes

The Thai Script is an abugida in which consonant–vowel sequences are written as a unit: each unit is based on a consonant letter, and vowel, tone mark or diacritic notation are secondary. It is written with the combining marks stacked above or below the base consonant, like diacritics in European languages. However, although the concepts are quite similar, the implementations are significantly different.

Consonants: There are 44 characters that are classified as consonants; code points from this subset have been given the tag "cons". See Section 5.1, "Consonants" in [Proposal-Thai].

Vowels: The 18 vowel symbols pronounced after a consonant are non-sequential: they can be located before (lv) , after (fv), above (av) or below (bv) the consonant, or in a combination of these positions, code points from this subset have been given the tags "fv1", "fv2", "fv3", "av", "bv", or "lv". There are three code point sequences defined that include vowels. (Code point sequences do not carry tag values; instead, for code point sequences the subset values are identified in comments). See Section 5.2, "Vowels" in [Proposal-Thai].

Tones: There are 5 phonemic tones: mid, low, falling, high, and rising. These 5 tones are represented by 4 tone marks plus the absence of a mark. Code points from this subset have been given the tag "tone". See section 5.3, "Tone Marks" in [Proposal-Thai].

Diacritical Marks: There are 3 diacritic symbols above that have been included here and given the tag "ad". They differ in their frequency and purpose of usage. See also the discussion in Section 5.,4 "Diacritics" in [Proposal-Thai].

  • U+0E47 (MAITAIKHU) and U+0E4C (THANTHAKHAT) are commonly used for words in everyday communication
  • U+0E4D (NIKHAHIT) is included because of its use to decompose U+0E33 ( ําา ) THAI CHARACTER SARA AM, which is in common use. However, NIKHAHIT may also be used by itself.

A fourth above diacritic, U+0E4E (YAMAKKAN), has been excluded from the Root Zone LGR repertoire because it is rarely used in Modern Thai or even in older Pali manuscripts; it is more common to replace it with U+0E3A (PHINTHU), a below diacritic, which has been given the tag "bd". Moreover, excluding U+0E4E (YAMAKKAN) also eliminates the chance of confusion between U+0E4E (YAMAKKAN) and U+0E4C (THANTHAKHAT). Both look similar, are always placed at the same position in the word cell, and they are normally displayed in a small size.

Whole Label Evaluation (WLE) and Context Rules

Default Whole Label Evaluation Rules and Actions

The LGR includes the set of required default WLE rules and actions applicable to the Root Zone and defined in [MSR-4]. They are marked with ⍟.

Thai-specific Rules

The rules provided in this LGR as described in Section 7 of [Proposal-Thai] reasonably restrict labels so that they conform to Thai syllable structure. These constraints are exclusively presented as context rules.

The rules are:

  • A leading-vowel must precede a consonant — See Section 7.2 in [Proposal-Thai]
  • A below-vowel must follow a consonant — See Section 7.3 in [Proposal-Thai]
  • An above-vowel must follow a consonant — See Section 7.3 in [Proposal-Thai]
  • A below diacritic must follow a consonant — See Section 7.3 in [Proposal-Thai]
  • An above-diacritic MAITAIKHU must follow a consonant — See Section 7.3 in [Proposal-Thai]
  • A vowel MAIHAN AKAT must be in between a consonant and either tone or consonant — See Section 7.4 in [Proposal-Thai]
  • A vowel SARA A can follow a consonant, a tone or a vowel SARA AA — See Section 7.5 in [Proposal-Thai]
  • A vowel SARA AA, or an above diacritic NIKHAHIT followed by a vowel SARA AA can follow a consonant or a tone — See Sections 7.6 and 7.9 in [Proposal-Thai]
  • A tone-mark, THANTHAKHAT, NIKHAHIT can only follow a consonant, above-vowel or below-vowel — See section 7.7 and 7.8 in [Proposal-Thai]

Methodology and Contributors

The Root Zone LGR for the Thai script was developed by the Thai Generation Panel. For methodology and contributors, see Sections 4 and 8 in [Proposal-Thai], as well as [RZ-LGR-4-Overview].

References

The following general references are cited in this document:

[MSR-4]
Integration Panel, "Maximal Starting Repertoire — MSR-4 Overview and Rationale", 7 February 2019, https://www.icann.org/en/system/files/files/msr-4-overview-25jan19-en.pdf
[Proposal-Thai]
Proposal for a Thai Script Root Zone LGR, 25 May 2017, https://www.icann.org/en/system/files/files/proposal-thai-lgr-25may17-en.pdf
[RFC 7940]
Davies, K. and A. Freytag, "Representing Label Generation Rulesets Using XML", RFC 7940, August 2016, http://www.rfc-editor.org/info/rfc7940
[RZ-LGR-4-Overview]
Integration Panel, "Root Zone Label Generation Rules - LGR-4: Overview and Summary", 05 November 2020 (PDF), https://www.icann.org/sites/default/files/lgr/lgr-4-overview-05nov20-en.pdf
[RZ-LGR-4]
Integration Panel, "Label Generation Rules for the Root Zone — LGR-4", 05 November 2020 (XML), https://www.icann.org/sites/default/files/lgr/lgr-4-common-05nov20-en.xml
non-normative HTML presentation: https://www.icann.org/sites/default/files/lgr/lgr-4-common-05nov20-en.html
[Unicode 6.3]
The Unicode Consortium. The Unicode Standard, Version 6.3.0, (Mountain View, CA: The Unicode Consortium, 2013. ISBN 978-1-936213-08-5) http://www.unicode.org/versions/Unicode6.3.0/

For references consulted particularly in designing the repertoire for the Thai script for the Root Zone please see details in the Table of References below. Reference [0] refers to the Unicode Standard version in which the corresponding code points were initially encoded. References [100] and [101] correspond to sources given in [Proposal-Thai] for justifying the inclusion of for the corresponding code points. Entries in the table may have multiple source reference values.

Repertoire

Glyph Code point Tags and context Variants
ก U+0E01 THAI CHARACTER KO KAI 0 100 101 Thai TagconsTagsc:Thai
ข U+0E02 THAI CHARACTER KHO KHAI 0 100 101 Thai TagconsTagsc:Thai
ฃ U+0E03 THAI CHARACTER KHO KHUAT 0 100 101 Thai TagconsTagsc:Thai
ค U+0E04 THAI CHARACTER KHO KHWAI 0 100 101 Thai TagconsTagsc:Thai
ฅ U+0E05 THAI CHARACTER KHO KHON 0 100 101 Thai TagconsTagsc:Thai
ฆ U+0E06 THAI CHARACTER KHO RAKHANG 0 100 101 Thai TagconsTagsc:Thai
ง U+0E07 THAI CHARACTER NGO NGU 0 100 101 Thai TagconsTagsc:Thai
จ U+0E08 THAI CHARACTER CHO CHAN 0 100 101 Thai TagconsTagsc:Thai
ฉ U+0E09 THAI CHARACTER CHO CHING 0 100 101 Thai TagconsTagsc:Thai
ช U+0E0A THAI CHARACTER CHO CHANG 0 100 101 Thai TagconsTagsc:Thai
ซ U+0E0B THAI CHARACTER SO SO 0 100 101 Thai TagconsTagsc:Thai
ฌ U+0E0C THAI CHARACTER CHO CHOE 0 100 101 Thai TagconsTagsc:Thai
ญ U+0E0D THAI CHARACTER YO YING 0 100 101 Thai TagconsTagsc:Thai
ฎ U+0E0E THAI CHARACTER DO CHADA 0 100 101 Thai TagconsTagsc:Thai
ฏ U+0E0F THAI CHARACTER TO PATAK 0 100 101 Thai TagconsTagsc:Thai
ฐ U+0E10 THAI CHARACTER THO THAN 0 100 101 Thai TagconsTagsc:Thai
ฑ U+0E11 THAI CHARACTER THO NANGMONTHO 0 100 101 Thai TagconsTagsc:Thai
ฒ U+0E12 THAI CHARACTER THO PHUTHAO 0 100 101 Thai TagconsTagsc:Thai
ณ U+0E13 THAI CHARACTER NO NEN 0 100 101 Thai TagconsTagsc:Thai
ด U+0E14 THAI CHARACTER DO DEK 0 100 101 Thai TagconsTagsc:Thai
ต U+0E15 THAI CHARACTER TO TAO 0 100 101 Thai TagconsTagsc:Thai
ถ U+0E16 THAI CHARACTER THO THUNG 0 100 101 Thai TagconsTagsc:Thai
ท U+0E17 THAI CHARACTER THO THAHAN 0 100 101 Thai TagconsTagsc:Thai
ธ U+0E18 THAI CHARACTER THO THONG 0 100 101 Thai TagconsTagsc:Thai
น U+0E19 THAI CHARACTER NO NU 0 100 101 Thai TagconsTagsc:Thai
บ U+0E1A THAI CHARACTER BO BAIMAI 0 100 101 Thai TagconsTagsc:Thai
ป U+0E1B THAI CHARACTER PO PLA 0 100 101 Thai TagconsTagsc:Thai
ผ U+0E1C THAI CHARACTER PHO PHUNG 0 100 101 Thai TagconsTagsc:Thai
ฝ U+0E1D THAI CHARACTER FO FA 0 100 101 Thai TagconsTagsc:Thai
พ U+0E1E THAI CHARACTER PHO PHAN 0 100 101 Thai TagconsTagsc:Thai
ฟ U+0E1F THAI CHARACTER FO FAN 0 100 101 Thai TagconsTagsc:Thai
ภ U+0E20 THAI CHARACTER PHO SAMPHAO 0 100 101 Thai TagconsTagsc:Thai
ม U+0E21 THAI CHARACTER MO MA 0 100 101 Thai TagconsTagsc:Thai
ย U+0E22 THAI CHARACTER YO YAK 0 100 101 Thai TagconsTagsc:Thai
ร U+0E23 THAI CHARACTER RO RUA 0 100 101 Thai TagconsTagsc:Thai
ฤ U+0E24 THAI CHARACTER RU 0 100 101 Thai Tagfv3Tagsc:Thai
ฤๅ U+0E24U+0E45 sequence of 2 THAI CHARACTER RU + THAI CHARACTER LAKKHANGYAO 0 100 101 fv2, Thai
ล U+0E25 THAI CHARACTER LO LING 0 100 101 Thai TagconsTagsc:Thai
ฦ U+0E26 THAI CHARACTER LU 0 100 101 Thai Tagfv3Tagsc:Thai
ฦๅ U+0E26U+0E45 sequence of 2 THAI CHARACTER LU + THAI CHARACTER LAKKHANGYAO 0 100 101 fv2, Thai
ว U+0E27 THAI CHARACTER WO WAEN 0 100 101 Thai TagconsTagsc:Thai
ศ U+0E28 THAI CHARACTER SO SALA 0 100 101 Thai TagconsTagsc:Thai
ษ U+0E29 THAI CHARACTER SO RUSI 0 100 101 Thai TagconsTagsc:Thai
ส U+0E2A THAI CHARACTER SO SUA 0 100 101 Thai TagconsTagsc:Thai
ห U+0E2B THAI CHARACTER HO HIP 0 100 101 Thai TagconsTagsc:Thai
ฬ U+0E2C THAI CHARACTER LO CHULA 0 100 101 Thai TagconsTagsc:Thai
อ U+0E2D THAI CHARACTER O ANG 0 100 101 Thai TagconsTagsc:Thai
ฮ U+0E2E THAI CHARACTER HO NOKHUK 0 100 101 Thai TagconsTagsc:Thai
ะ U+0E30 THAI CHARACTER SARA A 0 100 101 Thai Tagfv1Tagsc:Thai Contextfollow-consonant-tone-sara-aa
ั U+0E31 THAI CHARACTER MAI HAN-AKAT 0 100 101 Thai TagavTagsc:Thai Contextbetween-consonant-and-ct
า U+0E32 THAI CHARACTER SARA AA 0 100 101 Thai Tagfv1Tagsara-aaTagsc:Thai Contextfollows-consonant-tone
ิ U+0E34 THAI CHARACTER SARA I 0 100 101 Thai TagavTagsc:Thai Contextfollows-consonant
ี U+0E35 THAI CHARACTER SARA II 0 100 101 Thai TagavTagsc:Thai Contextfollows-consonant
ึ U+0E36 THAI CHARACTER SARA UE 0 100 101 Thai TagavTagsc:Thai Contextfollows-consonant
ื U+0E37 THAI CHARACTER SARA UEE 0 100 101 Thai TagavTagsc:Thai Contextfollows-consonant
ุ U+0E38 THAI CHARACTER SARA U 0 100 101 Thai TagbvTagsc:Thai Contextfollows-consonant
ู U+0E39 THAI CHARACTER SARA UU 0 100 101 Thai TagbvTagsc:Thai Contextfollows-consonant
ฺ U+0E3A THAI CHARACTER PHINTHU 0 100 101 = phinthu; Thai TagbdTagsc:Thai Contextfollows-consonant
เ U+0E40 THAI CHARACTER SARA E 0 100 101 Thai TaglvTagsc:Thai Contextprecedes-consonant
แ U+0E41 THAI CHARACTER SARA AE 0 100 101 Thai TaglvTagsc:Thai Contextprecedes-consonant
โ U+0E42 THAI CHARACTER SARA O 0 100 101 Thai TaglvTagsc:Thai Contextprecedes-consonant
ใ U+0E43 THAI CHARACTER SARA AI MAIMUAN 0 100 101 Thai TaglvTagsc:Thai Contextprecedes-consonant
ไ U+0E44 THAI CHARACTER SARA AI MAIMALAI 0 100 101 Thai TaglvTagsc:Thai Contextprecedes-consonant
็ U+0E47 THAI CHARACTER MAITAIKHU 0 100 101 = maitaikhu; Thai TagadTagsc:Thai Contextfollows-consonant
่ U+0E48 THAI CHARACTER MAI EK 0 100 101 Thai Tagsc:ThaiTagtone Contextfollows-consonant-av-bv
้ U+0E49 THAI CHARACTER MAI THO 0 100 101 Thai Tagsc:ThaiTagtone Contextfollows-consonant-av-bv
๊ U+0E4A THAI CHARACTER MAI TRI 0 100 101 Thai Tagsc:ThaiTagtone Contextfollows-consonant-av-bv
๋ U+0E4B THAI CHARACTER MAI CHATTAWA 0 100 101 Thai Tagsc:ThaiTagtone Contextfollows-consonant-av-bv
์ U+0E4C THAI CHARACTER THANTHAKHAT 0 100 101 = thanthakhat; Thai TagadTagsc:Thai Contextfollows-consonant-av-bv
ํ U+0E4D THAI CHARACTER NIKHAHIT 0 100 101 = nikhahit; Thai TagadTagsc:Thai Contextfollows-consonant-av-bv
ํา U+0E4DU+0E32 sequence of 2 THAI CHARACTER NIKHAHIT + THAI CHARACTER SARA AA 0 100 101 = sara am sequence; Thai Contextfollows-consonant-tone

Character classes

Named sets of code points that the rules below refer to.

NameDefinition
above-vowel {tag av} Any Thai above vowel
below-vowel {tag bv} Any Thai below vowel
consonant {tag cons} Any Thai consonant
sara-aa {tag sara-aa} Thai SARA AA
tone {tag tone} Any Thai tone mark
c-av-bv ({consonant} ∪ {above-vowel} ∪ {below-vowel}) Any Thai consonant, vowel-above or vowel-below
ct ({consonant} ∪ {tone}) Any Thai consonant or tone mark
ctaa ({consonant} ∪ {tone} ∪ {sara-aa}) Any Thai consonant, tone or sara-aa

Rules

Conditions evaluated against a whole label, or against the context around a single code point. The notation borrows from regular expressions: ^ and $ anchor to the start and end of a label, . matches any code point, (?= ) and (?<= ) look ahead and behind, and * and + repeat. Two symbols are specific to rulesets: ◆ is the code point being tested, and ⟨name⟩ refers to another rule.

leading-combining-mark MSR default

Default WLE rule matching labels with leading combining marks

^ ({gc:Mn} ∪ {gc:Mc})
Structure
  • ^ start
  • ({gc:Mn} ∪ {gc:Mc}) union
    • {gc:Mn} class
    • {gc:Mc} class
Referenced by 1 definition
  • action 1 (invalid)

precedes-consonant

WLE 7.2: check if current cp is preceding a consonant

◆ (?= {consonant} )
Structure
  • ◆ anchor
  • (?= {consonant} ) look-ahead
    • {consonant} class
Referenced by 5 definitions
  • context of U+0E40
  • context of U+0E41
  • context of U+0E42
  • context of U+0E43
  • context of U+0E44

follows-consonant

WLE 7.3: check if current cp is following a consonant

(?<= {consonant} ) ◆
Structure
  • (?<= {consonant} ) look-behind
    • {consonant} class
  • ◆ anchor
Referenced by 8 definitions
  • context of U+0E34
  • context of U+0E35
  • context of U+0E36
  • context of U+0E37
  • context of U+0E38
  • context of U+0E39
  • context of U+0E3A
  • context of U+0E47

between-consonant-and-ct

WLE 7.4: check if current cp is in between a consonant and either tone or consonant

(?<= {consonant} ) ◆ (?= {ct} )
Structure
  • (?<= {consonant} ) look-behind
    • {consonant} class
  • ◆ anchor
  • (?= {ct} ) look-ahead
    • {ct} class
Referenced by 1 definition
  • context of U+0E31

follow-consonant-tone-sara-aa

WLE 7.5: U+0E30 (THAI CHARACTER SARA A, ะ) can follow a consonant, a tone or U+0E32 (THAI CHARACTER SARA AA, า)

(?<= {ctaa} ) ◆
Structure
  • (?<= {ctaa} ) look-behind
    • {ctaa} class
  • ◆ anchor
Referenced by 1 definition
  • context of U+0E30

follows-consonant-tone

WLE 7.6, 7.9: check if current cp is following a consonant or a tone

(?<= {ct} ) ◆
Structure
  • (?<= {ct} ) look-behind
    • {ct} class
  • ◆ anchor
Referenced by 2 definitions
  • context of U+0E32
  • context of U+0E4D U+0E32

follows-consonant-av-bv

WLE 7.7, 7.8: A tone-mark, THANTHAKHAT, NIKAHIT can only follow a consonant, above-vowel or below-vowel

(?<= {c-av-bv} ) ◆
Structure
  • (?<= {c-av-bv} ) look-behind
    • {c-av-bv} class
  • ◆ anchor
Referenced by 6 definitions
  • context of U+0E48
  • context of U+0E49
  • context of U+0E4A
  • context of U+0E4B
  • context of U+0E4C
  • context of U+0E4D

Actions

Actions are evaluated in the order shown. The first action whose conditions match determines the disposition of the label.

Actions in precedence order
# Disposition Conditions
1 invalid label matches leading-combining-mark labels with leading combining marks are invalid MSR default
2 invalid any variant is out-of-repertoire-var any variant label with a code point out of repertoire is invalid MSR default
3 blocked any variant is blocked any variant label containing blocked variants is blocked MSR default
4 allocatable all variants are allocatable variant labels with all variants allocatable are allocatable MSR default
5 valid any label default catch all (default action) MSR default

References