Thaana

Thaana (script)

Second-Level Reference Label Generation Rules, 25 October 2024 Current

Summary

Version1 — Second Level Reference LGR
Date
Tag und-Thaa (Thaana)
Unicode11.0.0
Source filelgr-second-level-thaana-script-25oct24-en.xml (25.2kb)

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

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 Tagsc:Zyyy Contextnot hyphen-minus-disallowed
0 U+0030 DIGIT ZERO 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
1 U+0031 DIGIT ONE 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
2 U+0032 DIGIT TWO 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
3 U+0033 DIGIT THREE 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
4 U+0034 DIGIT FOUR 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
5 U+0035 DIGIT FIVE 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
6 U+0036 DIGIT SIX 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
7 U+0037 DIGIT SEVEN 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
8 U+0038 DIGIT EIGHT 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
9 U+0039 DIGIT NINE 0 TagCommon-digitTagsc:Zyyy Contextnot leading-digit
ހ U+0780 THAANA LETTER HAA 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޙ U+0799 blocked ޚ U+079A blocked
ށ U+0781 THAANA LETTER SHAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޝ U+079D blocked
ނ U+0782 THAANA LETTER NOONU 3 401 TagconsonantTagsc:Thaa Contextnot disallowed-for-N ޱ U+07B1 blocked
ރ U+0783 THAANA LETTER RAA 3 401 TagconsonantTagsc:Thaa Contextnot disallowed-for-N ޜ U+079C blocked
ބ U+0784 THAANA LETTER BAA 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޅ U+0785 THAANA LETTER LHAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ކ U+0786 THAANA LETTER KAAFU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
އ U+0787 THAANA LETTER ALIFU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޢ U+07A2 blocked ޣ U+07A3 blocked
ވ U+0788 THAANA LETTER VAAVU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޥ U+07A5 blocked
މ U+0789 THAANA LETTER MEEMU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ފ U+078A THAANA LETTER FAAFU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ދ U+078B THAANA LETTER DHAALU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޛ U+079B blocked
ތ U+078C THAANA LETTER THAA 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޘ U+0798 blocked ޠ U+07A0 blocked ޡ U+07A1 blocked
ލ U+078D THAANA LETTER LAAMU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ގ U+078E THAANA LETTER GAAFU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޤ U+07A4 blocked
ޏ U+078F THAANA LETTER GNAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ސ U+0790 THAANA LETTER SEENU 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ޞ U+079E blocked ޟ U+079F blocked
ޑ U+0791 THAANA LETTER DAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޒ U+0792 THAANA LETTER ZAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޓ U+0793 THAANA LETTER TAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޔ U+0794 THAANA LETTER YAA 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޕ U+0795 THAANA LETTER PAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޖ U+0796 THAANA LETTER JAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޗ U+0797 THAANA LETTER CHAVIYANI 3 401 TagconsonantTagsc:Thaa Contextfollowed-by-V
ޘ U+0798 THAANA LETTER TTAA 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ތ U+078C blocked ޠ U+07A0 blocked ޡ U+07A1 blocked
ޙ U+0799 THAANA LETTER HHAA 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ހ U+0780 blocked ޚ U+079A blocked
ޚ U+079A THAANA LETTER KHAA 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ހ U+0780 blocked ޙ U+0799 blocked
ޛ U+079B THAANA LETTER THAALU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ދ U+078B blocked
ޜ U+079C THAANA LETTER ZAA 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ރ U+0783 blocked
ޝ U+079D THAANA LETTER SHEENU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ށ U+0781 blocked
ޞ U+079E THAANA LETTER SAADHU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ސ U+0790 blocked ޟ U+079F blocked
ޟ U+079F THAANA LETTER DAADHU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ސ U+0790 blocked ޞ U+079E blocked
ޠ U+07A0 THAANA LETTER TO 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ތ U+078C blocked ޘ U+0798 blocked ޡ U+07A1 blocked
ޡ U+07A1 THAANA LETTER ZO 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ތ U+078C blocked ޘ U+0798 blocked ޠ U+07A0 blocked
ޢ U+07A2 THAANA LETTER AINU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V އ U+0787 blocked ޣ U+07A3 blocked
ޣ U+07A3 THAANA LETTER GHAINU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V އ U+0787 blocked ޢ U+07A2 blocked
ޤ U+07A4 THAANA LETTER QAAFU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ގ U+078E blocked
ޥ U+07A5 THAANA LETTER WAAVU 3 401 TagconsonantTagsc:ThaaTagthaana-arabic Contextfollowed-by-V ވ U+0788 blocked
ަ U+07A6 THAANA ABAFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ާ U+07A7 THAANA AABAAFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ި U+07A8 THAANA IBIFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ީ U+07A9 THAANA EEBEEFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ު U+07AA THAANA UBUFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ޫ U+07AB THAANA OOBOOFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ެ U+07AC THAANA EBEFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ޭ U+07AD THAANA EYBEYFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ޮ U+07AE THAANA OBOFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ޯ U+07AF THAANA OABOAFILI 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ް U+07B0 THAANA SUKUN 3 401 Tagsc:ThaaTagvowel Contextfollows-C-or-N
ޱ U+07B1 THAANA LETTER NAA 5 401 TagconsonantTagsc:Thaa Contextfollowed-by-V ނ 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.

10 variant sets, containing 42 variants.

Character classes

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

NameDefinition
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+002D char
      • ◆ 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+002D char
    • {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
  • and 25 more

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 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

RefSource
0 The Unicode Standard, Version 1.1
Code points cited were originally encoded in Unicode Version 1.1
3 The Unicode Standard, Version 3.0
Code points cited were originally encoded in Unicode Version 3.0
5 The Unicode Standard, Version 3.2
Code points cited were originally encoded in Unicode 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.