German (language)
Second-Level Reference Label Generation Rules, 25 October 2024 Current
Summary
| Version | 3 — Second Level Reference LGR |
|---|---|
| Date | |
| Tag |
de (German)
|
| Unicode | 11.0.0 |
| Source file | lgr-second-level-german-language-25oct24-en.xml (33.4kb) |
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]
Label Generation Rules for German
Overview
This document specifies a set of Label Generation Rules (LGR) for the German language using a language-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 German Language” [Ref-LGR-de-Latn], 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.
Repertoire
Almost all references converge on 30 Latin code points.
DENIC eG has published an extensive IDN character list used for the German (.de) ccTLD [700] and NIC.AT has deposited a more restrained Latin script IDN list for the Austrian (.at) ccTLD [701] that notably excludes “ß”. These lists include many code points needed for spelling personal or business names from neighboring countries. Most of them have been excluded here, since adding them would be more appropriate for a script-based LGR (or subset thereof).
Excluded code points
Letters documented in some references, but not included:
U+00E1 LATIN SMALL LETTER A WITH ACUTE
U+00E3 LATIN SMALL LETTER A WITH TILDE
U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
U+00E6 LATIN SMALL LETTER AE
U+00EB LATIN SMALL LETTER E WITH DIAERESIS
U+00EC LATIN SMALL LETTER I WITH GRAVE
U+00ED LATIN SMALL LETTER I WITH ACUTE
U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
U+00EF LATIN SMALL LETTER I WITH DIAERESIS
U+00F0 LATIN SMALL LETTER ETH
U+00F1 LATIN SMALL LETTER N WITH TILDE
U+00F2 LATIN SMALL LETTER O WITH GRAVE
U+00F3 LATIN SMALL LETTER O WITH ACUTE
U+00F8 LATIN SMALL LETTER O WITH STROKE
U+00FA LATIN SMALL LETTER U WITH ACUTE
U+00FD LATIN SMALL LETTER Y WITH ACUTE
U+00FE LATIN SMALL LETTER THORN
U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
U+0101 LATIN SMALL LETTER A WITH MACRON
U+0103 LATIN SMALL LETTER A WITH BREVE
U+0105 LATIN SMALL LETTER A WITH OGONEK
U+0107 LATIN SMALL LETTER C WITH ACUTE
U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX
U+010B LATIN SMALL LETTER C WITH DOT ABOVE
U+010D LATIN SMALL LETTER C WITH CARON
U+010F LATIN SMALL LETTER D WITH CARON
U+0111 LATIN SMALL LETTER D WITH STROKE
U+0113 LATIN SMALL LETTER E WITH MACRON
U+0115 LATIN SMALL LETTER E WITH BREVE
U+0117 LATIN SMALL LETTER E WITH DOT ABOVE
U+0119 LATIN SMALL LETTER E WITH OGONEK
U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX
U+011F LATIN SMALL LETTER G WITH BREVE
U+0121 LATIN SMALL LETTER G WITH DOT ABOVE
U+0123 LATIN SMALL LETTER G WITH CEDILLA
U+0129 LATIN SMALL LETTER I WITH TILDE
U+012B LATIN SMALL LETTER I WITH MACRON
U+012D LATIN SMALL LETTER I WITH BREVE
U+012F LATIN SMALL LETTER I WITH OGONEK
U+0131 LATIN SMALL LETTER DOTLESS I
U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX
U+0137 LATIN SMALL LETTER K WITH CEDILLA
U+0138 LATIN SMALL LETTER KRA
U+013A LATIN SMALL LETTER L WITH ACUTE
U+013C LATIN SMALL LETTER L WITH CEDILLA
U+013E LATIN SMALL LETTER L WITH CARON
U+0142 LATIN SMALL LETTER L WITH STROKE
U+0144 LATIN SMALL LETTER N WITH ACUTE
U+0146 LATIN SMALL LETTER N WITH CEDILLA
U+0148 LATIN SMALL LETTER N WITH CARON
U+014B LATIN SMALL LETTER ENG
U+014D LATIN SMALL LETTER O WITH MACRON
U+014F LATIN SMALL LETTER O WITH BREVE
U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
U+0153 LATIN SMALL LIGATURE OE
U+0155 LATIN SMALL LETTER R WITH ACUTE
U+0157 LATIN SMALL LETTER R WITH CEDILLA
U+0159 LATIN SMALL LETTER R WITH CARON
U+015B LATIN SMALL LETTER S WITH ACUTE
U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX
U+015F LATIN SMALL LETTER S WITH CEDILLA
U+0161 LATIN SMALL LETTER S WITH CARON
U+0163 LATIN SMALL LETTER S WITH CEDILLA
U+0165 LATIN SMALL LETTER T WITH CARON
U+0167 LATIN SMALL LETTER T WITH STROKE
U+0169 LATIN SMALL LETTER U WITH TILDE
U+016B LATIN SMALL LETTER U WITH MACRON
U+016D LATIN SMALL LETTER U WITH BREVE
U+016F LATIN SMALL LETTER U WITH RING
U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
U+0173 LATIN SMALL LETTER U WITH OGONEK
U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX
U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
U+017A LATIN SMALL Z WITH ACUTE
U+017C LATIN SMALL LETTER Z WITH DOT ABOVE
U+017E LATIN SMALL Z WITH CARON
A few sources, among them [700], provide in their repertoire for code points from all the European languages, Danish, Polish, Turkish, Romanian, Czech and so on. These have been excluded.
Extended code points
A number of letters not considered essential to writing the core vocabulary of the language are nevertheless in common use. Where they have not been added to the core repertoire, they are flagged as “extended-cp” in the table of code points. A context rule is provided that by default will prohibit labels with such extended code points. To support extended single code points or code point sequences, delete the context “extended-cp” from their repertoire definition.
The code points specified as extended are mostly those used for loanwords from French, which are accessible on German keyboards and commonly retained in spelling.
Variants
U+00DF LATIN SMALL LETTER SHARP S is used in Germany and Austria, but not in Switzerland, where the spelling “ss” is used instead. In addition, the letter is normally uppercased as “SS”. This might suggest it as a candidate for a variant mapping. While both the Latin Variant Issues Report [VIP] as well as DENIC, the operator of the .de ccTLD orginally decided that no variant mapping was warranted, several registries show “ß” and “ss” as simple variants in their IDN tables. The Root Zone LGR for the Latin script [RZ-LGR-Latn] has come to a somewhat nuanced conclusion. The variant scheme developed there attempts to address IDNA 2003 compatibility issues by making “ss” an allocatable fallback variant of U+00DF. An original label may contain U+00DF in any position, and if it does, the version with “ss” substituted for all instances of U+00DF would be “allocatable”, but not the other way around. By default, this “fallback” variant scheme is enabled in this LGR. (See “Optionally-Enabled Variants” below).
No other variants are applicable when using the LGR in a standalone fashion.
Variants Limited to Standalone Use This LGR is not intended for use with LGRs for other languages or scripts in the same zone. The LGR does not define any “blocked” variants with code points in other languages or script that would prevent malicious registration of duplicate labels perceived as the same by users. As a result of transitivity, the scheme of internal variants defined here would have to be imposed on other LGRs that contain copies or variants of the affected code points.
If it is desired to support multiple languages in the same zone, the preferred method would be to support the corresponding script LGRs, which cater to the use of multiple languages, and are designed with the possibility of concurrent use in mind.
Optionally-enabled Variants
Certain variants in this LGR are defined as optionally enabled. They are using the context rule “enabled”. This context rule matches any label (it always succeeds). Any variant marked with when=“enabled” (in the XML file) is in force, while marking it with not-when=“enabled” causes the variant definition to be ignored in processing. This allows these variants to be disabled, for example, to better match legacy practice for a given zone.
Care must be taken to enable or disable variants so that all variant mappings to and from the same code point are either enabled or disabled at the same time, ensuring that all enabled variant mappings remain symmetric and transitive.
The specification of variants in this LGR follows the guidelines in [RFC 8228].
Character Classes
This LGR does not define named character classes.
Rules
Common Rules
The LGR includes the rules and actions to implement the following restrictions, some of which are mandated by the IDNA protocol. They are marked with ⍟ and included here by default. A special context rule enables optional variants by default.
- 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].
- Enabled — matches any label. Used as variant context rule; any variant with
when="enabled"in the xml will be active, while any withnot-when="enabled"will be inactive.
Actions
This LGR includes the 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].
Because this LGR defines allocatable fallback variants the following default actions are applicable.
- blocked — a variant label containing a blocked variant will receive a disposition of “blocked”.
- r-original — a label containing one or more of this reflexive variant type and no others represents an original label and receives a disposition of “valid”.
- fallback — a label containing one or more of these variant types and no others represents a label that contains only fallback variants and receives a disposition of “allocatable”.
- fallback plus other — any label remaining containing both this variant type and any others receives a disposition of “blocked”.
These actions resolve as “allocatable” any label where all variants are of type “fallback”, and as “valid” any label where all variants are of type “r-original”. Labels with a mix of variant types are resolved as “blocked”.
To account for original code points in a permuted variant, reflexive variant mappings with an “r-” prefix are used. (See [RFC 7940]). In particular, the mapping type “r-original” is given to any code point that has a fallback mapping, but that appears in its non-fallback form in the original label, and thus “maps to itself”.
Default actions that are triggered by the LGR-specific variant types described above limit the “allocatable” variant labels to those variants resulting from the substitution of U+00DF by “ss”, while disallowing mixed use of variants with or without subsitution, except as in the original applied-for label. The use of such variants is "optionally_enabled_variants">optionally enabled in this LGR.
Note that the mapping types for variants are not symmetric: they depend on which code point is considered the source or the target in a given mapping. As specified in [RFC 7940], when mapping types are evaluated code points in a label that are unchanged use the type of their “reflexive” mapping. Per [RFC 7940] the actions are always applied one after the other, and the evaluation stops at the first action that assigns a disposition to a given label.
Methodology and Contributors
The LGR in this document has been adapted from the corresponding Reference LGR for the Second Level. The Second Level Reference LGR for the German Language was developed by Michel Suignard and Asmus Freytag, including input by Michael Everson, Nicholas Ostler, and Wil Tan, and based on multiple open public consultations.
Changes from Version Dated 10 October 2016
Language tag has been updated.
Changes from Version Dated 18 May 2021
Unicode Version has been updated.
Variant for U+00DF has been defined to match [RZ-LGR-Latn]. This fallback variant is enabled here by default, but is marked as “enabled” to allow registries to deactivate it if required.
Changes from Version Dated 25 October 2024
Adopted from the Second Level Reference LGR for the German Language [Ref-LGR-de-Latn] without normative changes.
References
General references for the language:
Rat für deutsche Rechtschreibung, “Regeln und Wörterverzeichnis”, München und Mannheim, February 2006 (with corrections from 2010) https://www.rechtschreibrat.com
Duden. 1996. Rechtschreibung der deutschen Sprache. 21. Auflage. Mannheim: Dudenverlag. ISBN 3-411-04011-4
Wahrig, Gerhard. 1974. Deutsches Wörterbuch. Gütersloh: Bertelsmann Lexikon-Verlag. ISBN 3-570-06588-X
Wikipedia: “German orthography”, https://en.wikipedia.org/wiki/German_alphabet
Omniglot: German (deutsch) https://www.omniglot.com/writing/german.htm
In addition, the following references were consulted:
- [RFC 7940]
- Davies, K. and A. Freytag, “Representing Label Generation Rulesets Using XML”, RFC 7940, August 2016, https://www.rfc-editor.org/info/rfc7940.
- [Ref-LGR-de-Latn]
- ICANN, Second Level Reference Label Generation Rules for the German Language (de-Latn), 25 October 2024 (XML) https://www.icann.org/sites/default/files/packages/lgr/lgr-second-level-german-language-25oct24-en.xml non-normative HTML presentation: https://www.icann.org/sites/default/files/packages/lgr/lgr-second-level-german-language-25oct24-en.html
- [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
- [RZ-LGR-Latn]
- ICANN, Root Zone Label Generation Rules for the Latin Script (und-Latn), 26 May 2022 (XML) https://www.icann.org/sites/default/files/lgr/rz-lgr-5-latin-script-26may22-en.xml
- [RZ-LGR-Overview]
- Integration Panel, “Root Zone Label Generation Rules (RZ LGR-5): Overview and Summary”, 26 May 2022 (PDF), https://www.icann.org/sites/default/files/lgr/rz-lgr-5-overview-26may22-en.pdf
- [RZ-LGR-5]
- Integration Panel, “Root Zone Label Generation Rules (RZ-LGR-5)”, 26 May 2022 (XML), https://www.icann.org/sites/default/files/lgr/rz-lgr-5-common-26may22-en.xml
non-normative HTML presentation: https://www.icann.org/sites/default/files/lgr/rz-lgr-5-common-26may22-en.html - [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/
- [VIP]
- ICANN VIP Study Group for the Latin script, “Considerations in the use of the Latin script in variant internationalized top-level domains”, https://archive.icann.org/en/topics/new-gtlds/latin-vip-issues-report-07oct11-en.pdf
In the listing of the repertoire by code point, references starting from [0] refer to the version of the Unicode Standard in which the corresponding code point was initially encoded. Other references (starting from [100]) document usage of code points. Entries in the table may have multiple source reference values. In the listing of whole label evaluation and context rules, reference [150] indicates the source for common rules. For more details, see the Table of References below.
Repertoire
| Glyph | Code point | Tags and context | Variants |
|---|---|---|---|
| - | U+002D HYPHEN-MINUS 0 100 301 401 601 701 HYPHEN-MINUS |
|
|
| 0 | U+0030 DIGIT ZERO 0 100 301 401 601 701 DIGIT ZERO; |
|
|
| 1 | U+0031 DIGIT ONE 0 100 301 401 601 701 DIGIT ONE; |
|
|
| 2 | U+0032 DIGIT TWO 0 100 301 401 601 701 DIGIT TWO; |
|
|
| 3 | U+0033 DIGIT THREE 0 100 301 401 601 701 DIGIT THREE; |
|
|
| 4 | U+0034 DIGIT FOUR 0 100 301 401 601 701 DIGIT FOUR; |
|
|
| 5 | U+0035 DIGIT FIVE 0 100 301 401 601 701 DIGIT FIVE; |
|
|
| 6 | U+0036 DIGIT SIX 0 100 301 401 601 701 DIGIT SIX; |
|
|
| 7 | U+0037 DIGIT SEVEN 0 100 301 401 601 701 DIGIT SEVEN; |
|
|
| 8 | U+0038 DIGIT EIGHT 0 100 301 401 601 701 DIGIT EIGHT; |
|
|
| 9 | U+0039 DIGIT NINE 0 100 301 401 601 701 DIGIT NINE; |
|
|
| a | U+0061 LATIN SMALL LETTER A 0 100 301 401 601 701 LATIN SMALL LETTER A |
|
|
| b | U+0062 LATIN SMALL LETTER B 0 100 301 401 601 701 LATIN SMALL LETTER B |
|
|
| c | U+0063 LATIN SMALL LETTER C 0 100 301 401 601 701 LATIN SMALL LETTER C |
|
|
| d | U+0064 LATIN SMALL LETTER D 0 100 301 401 601 701 LATIN SMALL LETTER D |
|
|
| e | U+0065 LATIN SMALL LETTER E 0 100 301 401 601 701 LATIN SMALL LETTER E |
|
|
| f | U+0066 LATIN SMALL LETTER F 0 100 301 401 601 701 LATIN SMALL LETTER F |
|
|
| g | U+0067 LATIN SMALL LETTER G 0 100 301 401 601 701 LATIN SMALL LETTER G |
|
|
| h | U+0068 LATIN SMALL LETTER H 0 100 301 401 601 701 LATIN SMALL LETTER H |
|
|
| i | U+0069 LATIN SMALL LETTER I 0 100 301 401 601 701 LATIN SMALL LETTER I |
|
|
| j | U+006A LATIN SMALL LETTER J 0 100 301 401 601 701 LATIN SMALL LETTER J |
|
|
| k | U+006B LATIN SMALL LETTER K 0 100 301 401 601 701 LATIN SMALL LETTER K |
|
|
| l | U+006C LATIN SMALL LETTER L 0 100 301 401 601 701 LATIN SMALL LETTER L |
|
|
| m | U+006D LATIN SMALL LETTER M 0 100 301 401 601 701 LATIN SMALL LETTER M |
|
|
| n | U+006E LATIN SMALL LETTER N 0 100 301 401 601 701 LATIN SMALL LETTER N |
|
|
| o | U+006F LATIN SMALL LETTER O 0 100 301 401 601 701 LATIN SMALL LETTER O |
|
|
| p | U+0070 LATIN SMALL LETTER P 0 100 301 401 601 701 LATIN SMALL LETTER P |
|
|
| q | U+0071 LATIN SMALL LETTER Q 0 100 301 401 601 701 LATIN SMALL LETTER Q |
|
|
| r | U+0072 LATIN SMALL LETTER R 0 100 301 401 601 701 LATIN SMALL LETTER R |
|
|
| s | U+0073 LATIN SMALL LETTER S 0 100 301 401 601 701 LATIN SMALL LETTER S |
|
|
| ss | U+0073U+0073 sequence of 2 LATIN SMALL LETTER S + LATIN SMALL LETTER S Sequence added for variant mapping |
|
ß
U+00DF
blocked
IDNA2003 Compatibility
|
| t | U+0074 LATIN SMALL LETTER T 0 100 301 401 601 701 LATIN SMALL LETTER T |
|
|
| u | U+0075 LATIN SMALL LETTER U 0 100 301 401 601 701 LATIN SMALL LETTER U |
|
|
| v | U+0076 LATIN SMALL LETTER V 0 100 301 401 601 701 LATIN SMALL LETTER V |
|
|
| w | U+0077 LATIN SMALL LETTER W 0 100 301 401 601 701 LATIN SMALL LETTER W |
|
|
| x | U+0078 LATIN SMALL LETTER X 0 100 301 401 601 701 LATIN SMALL LETTER X |
|
|
| y | U+0079 LATIN SMALL LETTER Y 0 100 301 401 601 701 LATIN SMALL LETTER Y |
|
|
| z | U+007A LATIN SMALL LETTER Z 0 100 301 401 601 701 LATIN SMALL LETTER Z |
|
|
| ß | U+00DF LATIN SMALL LETTER SHARP S 0 100 200 301 401 603 604 700 LATIN SMALL LETTER SHARP S |
|
ss
U+0073 + U+0073
fallback
IDNA2003 Compatibility
|
| à | U+00E0 LATIN SMALL LETTER A WITH GRAVE 0 402 605 700 701 LATIN SMALL LETTER A WITH GRAVE |
|
|
| â | U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX 0 402 605 700 701 LATIN SMALL LETTER A WITH CIRCUMFLEX |
|
|
| ä | U+00E4 LATIN SMALL LETTER A WITH DIAERESIS 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER A WITH DIAERESIS |
|
|
| ç | U+00E7 LATIN SMALL LETTER C WITH CEDILLA 0 402 605 700 701 LATIN SMALL LETTER C WITH CEDILLA |
|
|
| è | U+00E8 LATIN SMALL LETTER E WITH GRAVE 0 402 605 700 701 LATIN SMALL LETTER E WITH GRAVE |
|
|
| é | U+00E9 LATIN SMALL LETTER E WITH ACUTE 0 301 402 605 700 701 LATIN SMALL LETTER E WITH ACUTE |
|
|
| ê | U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX 0 402 605 700 701 LATIN SMALL LETTER E WITH CIRCUMFLEX |
|
|
| ô | U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX 0 402 605 700 701 LATIN SMALL LETTER O WITH CIRCUMFLEX |
|
|
| ö | U+00F6 LATIN SMALL LETTER O WITH DIAERESIS 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER O WITH DIAERESIS |
|
|
| ù | U+00F9 LATIN SMALL LETTER U WITH GRAVE 0 402 605 700 701 LATIN SMALL LETTER U WITH GRAVE |
|
|
| û | U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX 0 402 605 700 701 LATIN SMALL LETTER U WITH CIRCUMFLEX |
|
|
| ü | U+00FC LATIN SMALL LETTER U WITH DIAERESIS 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER U WITH DIAERESIS |
|
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.
-
ssß
Source Direction Target Disposition Ref Comment ss U+0073 + U+0073 ⇆ ß U+00DF → blocked ← fallback conditional IDNA2003 Compatibility ↔ declared both ways ⇆ both ways, different disposition each way → one direction only
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 150
RFC 5891 restrictions on placement of 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)
hyphen-minus-disallowed MSR default 150
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
extended-cp MSR default
context to gate off code points from the extended range, matches no label
^ $
Referenced by 9 definitions
- context of U+00E0
- context of U+00E2
- context of U+00E7
- context of U+00E8
- context of U+00E9
- context of U+00EA
- context of U+00F4
- context of U+00F9
- context of U+00FB
enabled MSR default
use as when-context to enable: matches any label
^ .* $
Referenced by 4 definitions
- context of U+0073 U+0073
- variant condition on U+0073 U+0073
- variant condition on U+00DF
- variant condition on U+00DF
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 labels with leading combining marks are invalid MSR default |
| 2 |
blocked
|
any variant is blocked any variant label containing blocked variants is blocked MSR default |
| 3 |
allocatable
|
all variants are fallback any label with all variants of type fallback is allocatable MSR default |
| 4 |
blocked
|
any variant is fallback any variant label with a mix of variant forms is blocked MSR default |
| 5 |
valid
|
all variants are r-original any remaining label containing only original code points is valid MSR default |
| 6 |
valid
|
any label default catch all (default action) MSR default |