Thaana (script)
Second-Level Reference Label Generation Rules, 25 October 2024 Current
Summary
| Version | 1 — Second Level Reference LGR |
|---|---|
| Date | |
| Tag |
und-Thaa (Thaana)
|
| Unicode | 11.0.0 |
| Source file | lgr-second-level-thaana-script-25oct24-en.xml (25.2kb) |
Description
INSTRUCTIONS
- These instructions cover how to adopt an LGR based on this reference LGR for a given zone and how to prepare the file for deposit in the IANA Repository of IDN Practices.
- As described the IANA procedure (https://www.iana.org/help/idn-repository-procedure) an
LGR MUST contain the following elements in its header:
- Script or Language Designator (see below for guidance)
- Version Number (this must increase with each amendment to the LGR, even if the updates are limited to the header itself)
- Effective Date (the date at which the policy becomes applicable in operational use)
- Registry Contact Details (contact name, email address, and/or phone number)
- The following information is optional:
- Document creation date
- Applicable Domain(s)
- Changes made to the Reference LGR before adopting
Please add or modify the following items in the XML source code for this file before depositing the document in the IANA Repository. (https://www.iana.org/domains/idn-tables)
Meta Data
Note: version numbers start at 1. RFC 7940 recommends using simple integers. The version comment is optional, please replace or delete the default comment. Version comments may be used by some tools as part of the page header.
<version comment="[Please replace (or delete) the optional comment]">[Please fill in version number, starting at 1]</version>
<date>[Please fill in with publication date, in YYYY-MM-DD format]</date>
<validity-start>[Please fill in effective date, in YYYY-MM-DD format]</validity-start>
Note: the scope element may be repeated, so that the same document can serve for multiple domains.
<scope type="domain">[Please provide, in ".domain" format]</scope>
Registry Contact Information:
Please fill in the Registry Contact Details.
Change History
If you made technical modifications to the LGR, please summarize them in the Change History (and also note the details in the appropriate section of the description).
PLEASE DELETE THESE INSTRUCTIONS BEFORE DEPOSITING THE DOCUMENT
Read the rest of the description Show less
Registry Contact Details
- Contact Name: [Please fill in Contact Name]
- Email address: [Please fill in Email address]
- Phone Number: [Please fill in optional Phone Number]
Reference Label Generation Rules for the Thaana Script
Overview
This document specifies a set of Label Generation Rules (LGR) for the Thaana script using a script-specific repertoire for the second level domain or domains identified above. The format of this file follows [RFC 7940]. This LGR is adapted from the “Reference LGR for the Second Level for the Thaana Script” [Ref-LGR-und-Thaa], for details, see Change History below.
Standalone LGR: This LGR is designed to be used in a zone that does not cater to IDNs other than those valid under this LGR. This LGR lacks features that would allow its use in the context of another LGR in the same zone, and it may contain other features incompatible with such use.
For details and additional background on the Thaana script, see "Thaana Script Reference Label Generation Rules for Second-Level Domain Names" [Proposal-Thaana].
Repertoire
The repertoire includes the 49 letters and diacritics of the Thaana script in everyday use as defined in Section 5.1 “Included Code Points” in [Proposal-Thaana].
U+07B1 THAANA LETTER NAA (baru nūnu) is a dialect specific consonant. Given the resurgence of the use of the consonant in online writing and social media, a decision was made to include it in the repertoire at this time, despite it not being officially recognized as part of the base consonants.
For the second level, the repertoire has been augmented with the ASCII digits, U+0030 to U+0039, plus U+002D HYPHEN-MINUS, for a total of 61 repertoire elements.
Repertoire Listing: Each code point or range is tagged with the script or scripts with which the code point is used and one or more other character categories. For each repertoire element, one or more references document sufficient justification for inclusion in the repertoire; see the “References” below.
Variants
This LGR defines a number of in-script variants as described in Section 6.1 “In-script Variants”of [Proposal-Thaana]. No cross-script variants have been identified based on any discernable similarity with another script or otherwise required for the security of the Thaana LGR. However, if used in the context of an LGR for any other zone, variants may be required for the digits.
Variant Disposition: All variants are of type “blocked”, making labels that differ only by these variants mutually exclusive: whichever label containing either of these variants is chosen earlier would be delegated, while any other equivalent labels should be blocked. There is no preference among these labels.
This LGR does not define allocatable variants.
The specification of variants in this LGR follows the guidelines in [RFC 8228].
Character Classes
Thaana has 25 consonants and 11 vowels. The first nine letters of Thaana are derived from the Arabic/Persian numerals (see below). The vowels are written above/below the letters.
- Common-digits — ASCII digits: U+0030 to U+0039.
- Consonants — in the Thaana script, consonants are base characters and all but one must be followed by a vowel. Additional restrictions apply to the two consonants Noonu and Raa.
- Consonants for Arabic — additions in the script for transcribing Arabic and other loan words. For the purposes of this LGR, there is no distinction between these and other consonants.
- Vowels — vowels are combining marks that always follow a consonant.
Whole Label Evaluation (WLE) and Context Rules
Common Rules
By default, the LGR includes the rules and actions to implement the following restrictions mandated by the IDNA protocol. They are marked with ⍟.
- Hyphen Restrictions — restrictions on the allowable placement of hyphens (no leading/ending hyphen and no hyphen in positions 3 and 4). These restrictions are described in Section 4.2.3.1 of RFC 5891 [150]. They are implemented here as context rule on U+002D (-) HYPHEN-MINUS.
- Leading Combining Marks — restrictions on the allowable placement of combining marks (no leading combining mark). This rule is described in Section 4.2.3.2 of RFC 5891 [150].
Script-specific rules in this LGR already prevent combining marks in leading position making the "leading-combining-mark" rule technically redundant. It is retained here for consistency.
Right-to-Left Rules
- leading-digit — restrictions on the allowable placement of digits in a right-to-left context (no leading digit), (see section 2.1 of RFC 5893 [160]); implemented here as a context rule on each digit.
Default Actions
This LGR includes the complete set default actions for LGRs as well as the action needed to invalidate labels with misplaced combining marks. They are marked with ⍟. For a description see [RFC 7940] and [150]. An additional action is triggered by mixed digit labels.
Script-specific Rules
The LGR defines the following script-specific rules concerning the placement of vowels and preventing some combinations from starting a word.
- follows-C-or-N — WLE 1: a vowel always follows a consonant or including Noonu and Raa.
- followed-by-V — WLE 2: a consonant, except Noonu or Raa is always followed by a vowel.
- start-of-word-followed-by-C — WLE 3: N followed by C cannot start a word, that is, it cannot be the start of a label, or follow a hyphen or digit.
- followed-by-NC-or-NN= — WLE 4: N cannot be follwoed by NC or NN.
Methodology
This Second Level Reference LGR for the Thaana Script was developed by the Thaana community and edited by Asmus Freytag and Michel Suignard, based on community feedback and public review.
Changes from Version Dated 25 October 2024
Adopted from the Second Level Reference LGR for the Thaana Script [Ref-LGR-und-Thaa] without normative changes.
References
This document cites the following general references.
- [Guidelines]
- ICANN, “Guidelines for Developing Reference LGRs for the Second Level”, (Los Angeles, California: ICANN, 27 May 2020), https://www.icann.org/en/system/files/files/lgr-guidelines-second-level-27may20-en.pdf
- [Level-2-Overview]
- Internet Corporation for Assigned Names and Numbers, (ICANN),“Reference Label Generation Rules (LGR) for the Second Level: Overview and Summary” (PDF), (Los Angeles, California: ICANN, 25 October 2024), https://www.icann.org/en/system/files/files/level2-lgr-overview-summary-25oct24-en.pdf
- [Proposal-Thaana]
- "Thaana Script Reference Label Generation Rules for Second-Level Domain Names", 12 September 2024, https://www.icann.org/en/system/files/files/proposal-thaana-second-level-12Sep24-en.pdf
- [Ref-LGR-und-Thaa]
- ICANN, Second Level Reference Label Generation Rules for the Thaana Script (und-Thaa), 25 October 2024 (XML) https://www.icann.org/sites/default/files/packages/lgr/lgr-second-level-thaana-script-25oct24-en.xml non-normative HTML presentation: https://www.icann.org/sites/default/files/packages/lgr/lgr-second-level-thaana-script-25oct24-en.html
- [RFC 7940]
- Davies, K. and A. Freytag, “Representing Label Generation Rulesets Using XML”, RFC 7940, August 2016, https://www.rfc-editor.org/info/rfc7940
- [RFC 8228]
- A. Freytag, “Guidance on Designing Label Generation Rulesets (LGRs) Supporting Variant Labels”, RFC 8228, August 2017, https://www.rfc-editor.org/info/rfc8228
- [UNICODE 11.0.0]
- The Unicode Consortium. The Unicode Standard, Version 11.0.0, (Mountain View, CA: The Unicode Consortium, 2018. ISBN 978-1-936213-19-1) https://www.unicode.org/versions/Unicode11.0.0/
References [0] to [3] refer to the Unicode Standard versions in which the corresponding code points were initially encoded. References [401] and above correspond to sources given in [Proposal-Thaana] justifying the inclusion of the corresponding cod5 points. Entries in the table may have multiple source reference values. In the listing of whole label evaluation and context rules, references [150] and [160] indicate the source for common rules.
Repertoire
| Glyph | Code point | Tags and context | Variants |
|---|---|---|---|
| - | U+002D HYPHEN-MINUS 0 |
|
|
| 0 | U+0030 DIGIT ZERO 0 |
|
|
| 1 | U+0031 DIGIT ONE 0 |
|
|
| 2 | U+0032 DIGIT TWO 0 |
|
|
| 3 | U+0033 DIGIT THREE 0 |
|
|
| 4 | U+0034 DIGIT FOUR 0 |
|
|
| 5 | U+0035 DIGIT FIVE 0 |
|
|
| 6 | U+0036 DIGIT SIX 0 |
|
|
| 7 | U+0037 DIGIT SEVEN 0 |
|
|
| 8 | U+0038 DIGIT EIGHT 0 |
|
|
| 9 | U+0039 DIGIT NINE 0 |
|
|
| ހ | U+0780 THAANA LETTER HAA 3 401 |
|
ޙ
U+0799
blocked
ޚ
U+079A
blocked
|
| ށ | U+0781 THAANA LETTER SHAVIYANI 3 401 |
|
ޝ
U+079D
blocked
|
| ނ | U+0782 THAANA LETTER NOONU 3 401 |
|
ޱ
U+07B1
blocked
|
| ރ | U+0783 THAANA LETTER RAA 3 401 |
|
ޜ
U+079C
blocked
|
| ބ | U+0784 THAANA LETTER BAA 3 401 |
|
|
| ޅ | U+0785 THAANA LETTER LHAVIYANI 3 401 |
|
|
| ކ | U+0786 THAANA LETTER KAAFU 3 401 |
|
|
| އ | U+0787 THAANA LETTER ALIFU 3 401 |
|
ޢ
U+07A2
blocked
ޣ
U+07A3
blocked
|
| ވ | U+0788 THAANA LETTER VAAVU 3 401 |
|
ޥ
U+07A5
blocked
|
| މ | U+0789 THAANA LETTER MEEMU 3 401 |
|
|
| ފ | U+078A THAANA LETTER FAAFU 3 401 |
|
|
| ދ | U+078B THAANA LETTER DHAALU 3 401 |
|
ޛ
U+079B
blocked
|
| ތ | U+078C THAANA LETTER THAA 3 401 |
|
ޘ
U+0798
blocked
ޠ
U+07A0
blocked
ޡ
U+07A1
blocked
|
| ލ | U+078D THAANA LETTER LAAMU 3 401 |
|
|
| ގ | U+078E THAANA LETTER GAAFU 3 401 |
|
ޤ
U+07A4
blocked
|
| ޏ | U+078F THAANA LETTER GNAVIYANI 3 401 |
|
|
| ސ | U+0790 THAANA LETTER SEENU 3 401 |
|
ޞ
U+079E
blocked
ޟ
U+079F
blocked
|
| ޑ | U+0791 THAANA LETTER DAVIYANI 3 401 |
|
|
| ޒ | U+0792 THAANA LETTER ZAVIYANI 3 401 |
|
|
| ޓ | U+0793 THAANA LETTER TAVIYANI 3 401 |
|
|
| ޔ | U+0794 THAANA LETTER YAA 3 401 |
|
|
| ޕ | U+0795 THAANA LETTER PAVIYANI 3 401 |
|
|
| ޖ | U+0796 THAANA LETTER JAVIYANI 3 401 |
|
|
| ޗ | U+0797 THAANA LETTER CHAVIYANI 3 401 |
|
|
| ޘ | U+0798 THAANA LETTER TTAA 3 401 |
|
ތ
U+078C
blocked
ޠ
U+07A0
blocked
ޡ
U+07A1
blocked
|
| ޙ | U+0799 THAANA LETTER HHAA 3 401 |
|
ހ
U+0780
blocked
ޚ
U+079A
blocked
|
| ޚ | U+079A THAANA LETTER KHAA 3 401 |
|
ހ
U+0780
blocked
ޙ
U+0799
blocked
|
| ޛ | U+079B THAANA LETTER THAALU 3 401 |
|
ދ
U+078B
blocked
|
| ޜ | U+079C THAANA LETTER ZAA 3 401 |
|
ރ
U+0783
blocked
|
| ޝ | U+079D THAANA LETTER SHEENU 3 401 |
|
ށ
U+0781
blocked
|
| ޞ | U+079E THAANA LETTER SAADHU 3 401 |
|
ސ
U+0790
blocked
ޟ
U+079F
blocked
|
| ޟ | U+079F THAANA LETTER DAADHU 3 401 |
|
ސ
U+0790
blocked
ޞ
U+079E
blocked
|
| ޠ | U+07A0 THAANA LETTER TO 3 401 |
|
ތ
U+078C
blocked
ޘ
U+0798
blocked
ޡ
U+07A1
blocked
|
| ޡ | U+07A1 THAANA LETTER ZO 3 401 |
|
ތ
U+078C
blocked
ޘ
U+0798
blocked
ޠ
U+07A0
blocked
|
| ޢ | U+07A2 THAANA LETTER AINU 3 401 |
|
އ
U+0787
blocked
ޣ
U+07A3
blocked
|
| ޣ | U+07A3 THAANA LETTER GHAINU 3 401 |
|
އ
U+0787
blocked
ޢ
U+07A2
blocked
|
| ޤ | U+07A4 THAANA LETTER QAAFU 3 401 |
|
ގ
U+078E
blocked
|
| ޥ | U+07A5 THAANA LETTER WAAVU 3 401 |
|
ވ
U+0788
blocked
|
| ަ | U+07A6 THAANA ABAFILI 3 401 |
|
|
| ާ | U+07A7 THAANA AABAAFILI 3 401 |
|
|
| ި | U+07A8 THAANA IBIFILI 3 401 |
|
|
| ީ | U+07A9 THAANA EEBEEFILI 3 401 |
|
|
| ު | U+07AA THAANA UBUFILI 3 401 |
|
|
| ޫ | U+07AB THAANA OOBOOFILI 3 401 |
|
|
| ެ | U+07AC THAANA EBEFILI 3 401 |
|
|
| ޭ | U+07AD THAANA EYBEYFILI 3 401 |
|
|
| ޮ | U+07AE THAANA OBOFILI 3 401 |
|
|
| ޯ | U+07AF THAANA OABOAFILI 3 401 |
|
|
| ް | U+07B0 THAANA SUKUN 3 401 |
|
|
| ޱ | U+07B1 THAANA LETTER NAA 5 401 |
|
ނ
U+0782
blocked
|
Variants
Code points grouped into sets of mutual variants. Every member of a set produces the same set of variant labels, so a registration of one has implications for all the others. Sets of a single member are omitted, as are the identity mappings RFC 7940 requires each member to declare.
-
ތޘޠޡ
Source Direction Target Disposition Ref Comment ތ U+078C ↔ ޘ U+0798 blocked ތ U+078C ↔ ޠ U+07A0 blocked ތ U+078C ↔ ޡ U+07A1 blocked ޘ U+0798 ↔ ޠ U+07A0 blocked ޘ U+0798 ↔ ޡ U+07A1 blocked ޠ U+07A0 ↔ ޡ U+07A1 blocked ↔ declared both ways ⇆ both ways, different disposition each way → one direction only
Character classes
Named sets of code points that the rules below refer to.
| Name | Definition |
|---|---|
Common-digits |
{tag Common-digit}
Digits from the ASCII range MSR default
|
N |
[0782-0783]
Thaana NoonNu and Thana Raa
|
C |
({tag consonant} ∖ {N})
Any Thaana consonant other than NoonNu or Raa
|
V |
{tag vowel}
Any Thaana vowel
|
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.
hyphen-minus-disallowed MSR default
RFC 5891 restrictions on placement of U+002D HYPHEN-MINUS
( ( (?<= ^ ) ◆ ) │ ( ◆ (?= $ ) ) │ ( (?<= ^ . . U+002D ) ◆ ) )
Structure
-
( ( (?<= ^ ) ◆ ) │ ( ◆ (?= $ ) ) │ ( (?<= ^ . . U+002D ) ◆ ) )choice-
(?<= ^ ) ◆rule-
(?<= ^ )look-behind-
^start
-
-
◆anchor
-
-
◆ (?= $ )rule-
◆anchor -
(?= $ )look-ahead-
$end
-
-
-
(?<= ^ . . U+002D ) ◆rule-
(?<= ^ . . U+002D )look-behind-
^start -
.any -
.any -
U+002Dchar
-
-
◆anchor
-
-
Referenced by 1 definition
- negative context of U+002D
leading-combining-mark MSR default 150
RFC 5891 restrictions on placement of combining marks
^ {gc:Mn} {gc:Mc}
Referenced by 1 definition
- action 1 (invalid)
leading-digit MSR default 160
RFC 5893 RTL labels cannot start with a digit
(?<= ^ ) ◆
Structure
-
(?<= ^ )look-behind-
^start
-
-
◆anchor
Referenced by 10 definitions
- negative context of U+0030
- negative context of U+0031
- negative context of U+0032
- negative context of U+0033
- negative context of U+0034
- negative context of U+0035
- negative context of U+0036
- negative context of U+0037
- negative context of U+0038
- negative context of U+0039
start-of-word
A context describing the start of a word, used in the formuation of WLE 3
( ^ │ U+002D │ {Common-digits} )
Structure
-
( ^ │ U+002D │ {Common-digits} )choice-
^start -
U+002Dchar -
{Common-digits}class
-
Referenced by 1 definition
- rule start-of-word-followed-by-C
start-of-word-followed-by-C
WLE 3: N followed by C cannot start a word, that is, it cannot be the start of a label, or follow a hyphen or digit.
(?<= ⟨start-of-word⟩ ) ◆ (?= {C} )
Structure
-
(?<= ⟨start-of-word⟩ )look-behind-
⟨start-of-word⟩rule
-
-
◆anchor -
(?= {C} )look-ahead-
{C}class
-
Referenced by 1 definition
- rule disallowed-for-N
followed-by-NC-or-NN
WLE 4: N cannot be followed by NC or NN
◆ (?= {N} ( {C} │ {N} ) )
Structure
-
◆anchor -
(?= {N} ( {C} │ {N} ) )look-ahead-
{N}class -
( {C} │ {N} )choice-
{C}class -
{N}class
-
-
Referenced by 1 definition
- rule disallowed-for-N
disallowed-for-N
Prohibited context for N, combines WLE 3 and WLE 4
( ⟨start-of-word-followed-by-C⟩ │ ⟨followed-by-NC-or-NN⟩ )
Structure
-
( ⟨start-of-word-followed-by-C⟩ │ ⟨followed-by-NC-or-NN⟩ )choice-
⟨start-of-word-followed-by-C⟩rule -
⟨followed-by-NC-or-NN⟩rule
-
Referenced by 2 definitions
- negative context of U+0782
- negative context of U+0783
follows-C-or-N
WLE1: a vowel always follows a consonant or Noonnu or Raa.
(?<= ( {C} │ {N} ) ) ◆
Structure
-
(?<= ( {C} │ {N} ) )look-behind-
( {C} │ {N} )choice-
{C}class -
{N}class
-
-
-
◆anchor
Referenced by 11 definitions
- context of U+07A6
- context of U+07A7
- context of U+07A8
- context of U+07A9
- context of U+07AA
- context of U+07AB
- context of U+07AC
- context of U+07AD
- context of U+07AE
- context of U+07AF
- context of U+07B0
followed-by-V
WLE2: a consonant is always follwed by a vowel.
◆ (?= {V} )
Structure
-
◆anchor -
(?= {V} )look-ahead-
{V}class
-
Referenced by 37 definitions
- context of U+0780
- context of U+0781
- context of U+0784
- context of U+0785
- context of U+0786
- context of U+0787
- context of U+0788
- context of U+0789
- context of U+078A
- context of U+078B
- context of U+078C
- context of U+078D
Actions
Actions are evaluated in the order shown. The first action whose conditions match determines the disposition of the label.
| # | Disposition | Conditions |
|---|---|---|
| 1 |
invalid
|
label matches leading-combining-mark RFC 5891 restrictions on placement of combining marks MSR default |
| 2 |
blocked
|
any variant is blocked any variant label containing blocked variants is blocked MSR default |
| 3 |
valid
|
any label default catch all; default action MSR default |
References
| Ref | Source |
|---|---|
| 0 | The Unicode Standard, Version 1.1 |
| 3 | The Unicode Standard, Version 3.0 |
| 5 | The Unicode Standard, Version 3.2 |
| 150 | RFC 5891, Internationalized Domain Names in Applications(IDNA): Protocol https://tools.ietf.org/html/rfc5891 |
| 160 | RFC 5893, Right - to - Left Scripts for Internationalized Domain Names for Applications (IDNA) https://tools.ietf.org/html/rfc5893 |
| 401 | Dhivehi Writing Systems by Naseema Mohamed, page 7-8, NCLHR, 1999. |