French (language)
Second-Level Reference Label Generation Rules, 25 October 2024 Current
Summary
| Version | 3 — Second Level Reference LGR |
|---|---|
| Date | |
| Tag |
fr (French)
|
| Unicode | 11.0.0 |
| Source file | lgr-second-level-french-language-25oct24-en.xml (35.9kb) |
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 French
Overview
This document specifies a set of Label Generation Rules (LGR) for the French 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 French Language” [Ref-LGR-fr-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
Most references converge on 42 Latin code points.
There is no IDN table published in the IANA Repository of IDN Practices by a .fr ccTLD, but AFNIC has published specifications [700] listing the code points accepted for registration as IDNs in the .fr domain. PointQuébec has published a list of acceptable code points for the .quebec domain [701].
Excluded code points
Letters documented in some references but not included:
U+00DF LATIN SMALL LETTER SHARP S
U+00E1 LATIN SMALL LETTER A WITH ACUTE
U+00E3 LATIN SMALL LETTER A WITH TILDE
U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
U+00EC LATIN SMALL LETTER I WITH GRAVE
U+00ED LATIN SMALL LETTER I WITH ACUTE
U+00F2 LATIN SMALL LETTER O WITH GRAVE
U+00F3 LATIN SMALL LETTER O WITH ACUTE
U+00F5 LATIN SMALL LETTER O WITH TILDE
U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
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+0101 LATIN SMALL LETTER A WITH MACRON
U+0113 LATIN SMALL LETTER E WITH MACRON
U+012B LATIN SMALL LETTER I WITH MACRON
U+01D4 LATIN SMALL LETTER U WITH CARON
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 sole “extended” code point in the May 18, 2021 version had been U+00F1 LATIN SMALL LETTER N WITH TILDE, cited by some references as being used in loan words. Based on additional research, it can also be found in personal names from the region of Brittany which argues for making it included by default.
Variants
It has been the practice of some second level registries to allow both the registration of an accented label as well as the pure ASCII fallback to the same entity, while disallowing the registration of the two labels to unrelated entities (See [CIRA]).
By default, this LGR treats all accented forms as optionally-enabled variants of the non-accented form of a label which would prevent them from being delegated to two different entities simultaneously. In order to restrict the number of allocatable variants, only one accented form can be allocated alongside the non-accented form. If the desired accented form has been applied for, the non-accented form would then be a variant that is allocatable to the original applicant. This covers the most common scenario of a single “correct” accented form, plus a non-accented “fallback”.
This extension to in-language variants is not compatible with using this LGR in a zone with another LGR and using the Common LGR to process conflicts between labels from multiple LGRs as described in Section 3 “Use of Multiple Reference LGRs in the Same Zone” in [Level-2-Overview].
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 removal of the accents, while disallowing mixed use of variants with or without accents, 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 French 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.
Based on research showing use of ‘ñ’ in Breton names, U+00F1 LATIN SMALL LETTER N WITH TILDE has been changed from “extended-cp” to included by default.
Based on community comments expressed during the review of the Latin script Root Zone LGR, the need was established for fallback variants between French letters with diacritics and their ASCII base letters. These variants are enabled here by default, but are marked as “enabled” to allow registries to deactivate them if required.
Changes from Version Dated 25 October 2024
Adopted from the Second Level Reference LGR for the French Language [Ref-LGR-fr-Latn] without normative changes.
References
General references for the language:
Atkins, Beryl T. et al. 1987. Robert · Collins dictionnaire français-anglais anglais-français = Collins · Robert French-English English-French dictionary. Paris: Dictionnaires le Robert. ISBN 2-85036-088-0. Glasgow: HarperCollins. ISBN 0-00-433451-5
Wikipedia: “French orthography”, https://en.wikipedia.org/wiki/French_alphabet
Omniglot: French (français) https://www.omniglot.com/writing/french.htm
In addition, the following references were consulted:
- [CIRA]
- cira, Section 3, “Admissible Domain Names” in General Registration Rules https://www.cira.ca/policy/rules-and-procedures/general-registration-rules (Accessed 25 May 2022)
- [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
- [PointQuebec]
- PointQuébec, Section 8 “Permissible Characters” in General Registration Policies https://registry.quebec/legal/
- [Ref-LGR-fr-Latn]
- ICANN, Second Level Reference Label Generation Rules for the French Language (fr-Latn), 25 October 2024 (XML) https://www.icann.org/sites/default/files/packages/lgr/lgr-second-level-french-language-25oct24-en.xml non-normative HTML presentation: https://www.icann.org/sites/default/files/packages/lgr/lgr-second-level-french-language-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/
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 700 701 HYPHEN-MINUS |
|
|
| 0 | U+0030 DIGIT ZERO 0 100 301 401 601 700 701 DIGIT ZERO; |
|
|
| 1 | U+0031 DIGIT ONE 0 100 301 401 601 700 701 DIGIT ONE; |
|
|
| 2 | U+0032 DIGIT TWO 0 100 301 401 601 700 701 DIGIT TWO; |
|
|
| 3 | U+0033 DIGIT THREE 0 100 301 401 601 700 701 DIGIT THREE; |
|
|
| 4 | U+0034 DIGIT FOUR 0 100 301 401 601 700 701 DIGIT FOUR; |
|
|
| 5 | U+0035 DIGIT FIVE 0 100 301 401 601 700 701 DIGIT FIVE; |
|
|
| 6 | U+0036 DIGIT SIX 0 100 301 401 601 700 701 DIGIT SIX; |
|
|
| 7 | U+0037 DIGIT SEVEN 0 100 301 401 601 700 701 DIGIT SEVEN; |
|
|
| 8 | U+0038 DIGIT EIGHT 0 100 301 401 601 700 701 DIGIT EIGHT; |
|
|
| 9 | U+0039 DIGIT NINE 0 100 301 401 601 700 701 DIGIT NINE; |
|
|
| a | U+0061 LATIN SMALL LETTER A 0 100 301 401 601 700 701 LATIN SMALL LETTER A |
|
à
U+00E0
blocked
diacritic variant
â
U+00E2
blocked
diacritic variant
|
| b | U+0062 LATIN SMALL LETTER B 0 100 301 401 601 700 701 LATIN SMALL LETTER B |
|
|
| c | U+0063 LATIN SMALL LETTER C 0 100 301 401 601 700 701 LATIN SMALL LETTER C |
|
ç
U+00E7
blocked
diacritic variant
|
| d | U+0064 LATIN SMALL LETTER D 0 100 301 401 601 700 701 LATIN SMALL LETTER D |
|
|
| e | U+0065 LATIN SMALL LETTER E 0 100 301 401 601 700 701 LATIN SMALL LETTER E |
|
è
U+00E8
blocked
diacritic variant
é
U+00E9
blocked
diacritic variant
ê
U+00EA
blocked
diacritic variant
ë
U+00EB
blocked
diacritic variant
|
| f | U+0066 LATIN SMALL LETTER F 0 100 301 401 601 700 701 LATIN SMALL LETTER F |
|
|
| g | U+0067 LATIN SMALL LETTER G 0 100 301 401 601 700 701 LATIN SMALL LETTER G |
|
|
| h | U+0068 LATIN SMALL LETTER H 0 100 301 401 601 700 701 LATIN SMALL LETTER H |
|
|
| i | U+0069 LATIN SMALL LETTER I 0 100 301 401 601 700 701 LATIN SMALL LETTER I |
|
î
U+00EE
blocked
diacritic variant
ï
U+00EF
blocked
diacritic variant
|
| j | U+006A LATIN SMALL LETTER J 0 100 301 401 601 700 701 LATIN SMALL LETTER J |
|
|
| k | U+006B LATIN SMALL LETTER K 0 100 301 401 601 700 701 LATIN SMALL LETTER K |
|
|
| l | U+006C LATIN SMALL LETTER L 0 100 301 401 601 700 701 LATIN SMALL LETTER L |
|
|
| m | U+006D LATIN SMALL LETTER M 0 100 301 401 601 700 701 LATIN SMALL LETTER M |
|
|
| n | U+006E LATIN SMALL LETTER N 0 100 301 401 601 700 701 LATIN SMALL LETTER N |
|
ñ
U+00F1
blocked
diacritic variant
|
| o | U+006F LATIN SMALL LETTER O 0 100 301 401 601 700 701 LATIN SMALL LETTER O |
|
ô
U+00F4
blocked
diacritic variant
|
| p | U+0070 LATIN SMALL LETTER P 0 100 301 401 601 700 701 LATIN SMALL LETTER P |
|
|
| q | U+0071 LATIN SMALL LETTER Q 0 100 301 401 601 700 701 LATIN SMALL LETTER Q |
|
|
| r | U+0072 LATIN SMALL LETTER R 0 100 301 401 601 700 701 LATIN SMALL LETTER R |
|
|
| s | U+0073 LATIN SMALL LETTER S 0 100 301 401 601 700 701 LATIN SMALL LETTER S |
|
|
| t | U+0074 LATIN SMALL LETTER T 0 100 301 401 601 700 701 LATIN SMALL LETTER T |
|
|
| u | U+0075 LATIN SMALL LETTER U 0 100 301 401 601 700 701 LATIN SMALL LETTER U |
|
ù
U+00F9
blocked
diacritic variant
û
U+00FB
blocked
diacritic variant
ü
U+00FC
blocked
diacritic variant
|
| v | U+0076 LATIN SMALL LETTER V 0 100 301 401 601 700 701 LATIN SMALL LETTER V |
|
|
| w | U+0077 LATIN SMALL LETTER W 0 100 301 401 601 700 701 LATIN SMALL LETTER W |
|
|
| x | U+0078 LATIN SMALL LETTER X 0 100 301 401 601 700 701 LATIN SMALL LETTER X |
|
|
| y | U+0079 LATIN SMALL LETTER Y 0 100 301 401 601 700 701 LATIN SMALL LETTER Y |
|
ÿ
U+00FF
blocked
diacritic variant
|
| z | U+007A LATIN SMALL LETTER Z 0 100 301 401 601 700 701 LATIN SMALL LETTER Z |
|
|
| à | U+00E0 LATIN SMALL LETTER A WITH GRAVE 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER A WITH GRAVE |
|
a
U+0061
fallback
base form variant
â
U+00E2
blocked
diacritic transitivity
|
| â | U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER A WITH CIRCUMFLEX |
|
a
U+0061
fallback
base form variant
à
U+00E0
blocked
diacritic transitivity
|
| æ | U+00E6 LATIN SMALL LETTER AE 0 100 200 301 401 604 700 701 LATIN SMALL LETTER AE |
|
|
| ç | U+00E7 LATIN SMALL LETTER C WITH CEDILLA 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER C WITH CEDILLA |
|
c
U+0063
fallback
base form variant
|
| è | U+00E8 LATIN SMALL LETTER E WITH GRAVE 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER E WITH GRAVE |
|
e
U+0065
fallback
base form variant
é
U+00E9
blocked
diacritic transitivity
ê
U+00EA
blocked
diacritic transitivity
ë
U+00EB
blocked
diacritic transitivity
|
| é | U+00E9 LATIN SMALL LETTER E WITH ACUTE 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER E WITH ACUTE |
|
e
U+0065
fallback
base form variant
è
U+00E8
blocked
diacritic transitivity
ê
U+00EA
blocked
diacritic transitivity
ë
U+00EB
blocked
diacritic transitivity
|
| ê | U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER E WITH CIRCUMFLEX |
|
e
U+0065
fallback
base form variant
è
U+00E8
blocked
diacritic transitivity
é
U+00E9
blocked
diacritic transitivity
ë
U+00EB
blocked
diacritic transitivity
|
| ë | U+00EB LATIN SMALL LETTER E WITH DIAERESIS 0 100 200 301 401 604 700 701 LATIN SMALL LETTER E WITH DIAERESIS |
|
e
U+0065
fallback
base form variant
è
U+00E8
blocked
diacritic transitivity
é
U+00E9
blocked
diacritic transitivity
ê
U+00EA
blocked
diacritic transitivity
|
| î | U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER I WITH CIRCUMFLEX |
|
i
U+0069
fallback
base form variant
ï
U+00EF
blocked
diacritic transitivity
|
| ï | U+00EF LATIN SMALL LETTER I WITH DIAERESIS 0 100 301 401 604 700 701 LATIN SMALL LETTER I WITH DIAERESIS |
|
i
U+0069
fallback
base form variant
î
U+00EE
blocked
diacritic transitivity
|
| ñ | U+00F1 LATIN SMALL LETTER N WITH TILDE 0 100 301 402 605 700 LATIN SMALL LETTER N WITH TILDE |
|
n
U+006E
fallback
base form variant
|
| ô | U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER O WITH CIRCUMFLEX |
|
o
U+006F
fallback
base form variant
|
| ù | U+00F9 LATIN SMALL LETTER U WITH GRAVE 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER U WITH GRAVE |
|
u
U+0075
fallback
base form variant
û
U+00FB
blocked
diacritic transitivity
ü
U+00FC
blocked
diacritic transitivity
|
| û | U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX 0 100 200 301 401 603 604 700 701 LATIN SMALL LETTER U WITH CIRCUMFLEX |
|
u
U+0075
fallback
base form variant
ù
U+00F9
blocked
diacritic transitivity
ü
U+00FC
blocked
diacritic transitivity
|
| ü | U+00FC LATIN SMALL LETTER U WITH DIAERESIS 0 100 200 401 604 700 701 LATIN SMALL LETTER U WITH DIAERESIS |
|
u
U+0075
fallback
base form variant
ù
U+00F9
blocked
diacritic transitivity
û
U+00FB
blocked
diacritic transitivity
|
| ÿ | U+00FF LATIN SMALL LETTER Y WITH DIAERESIS 0 100 200 301 401 604 700 701 LATIN SMALL LETTER Y WITH DIAERESIS |
|
y
U+0079
fallback
base form variant
|
| œ | U+0153 LATIN SMALL LIGATURE OE 0 100 200 301 401 604 700 701 LATIN SMALL LIGATURE OE |
|
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.
-
eèéêë
Source Direction Target Disposition Ref Comment e U+0065 ⇆ è U+00E8 → blocked ← fallback conditional diacritic variant e U+0065 ⇆ é U+00E9 → blocked ← fallback conditional diacritic variant e U+0065 ⇆ ê U+00EA → blocked ← fallback conditional diacritic variant e U+0065 ⇆ ë U+00EB → blocked ← fallback conditional diacritic variant è U+00E8 ↔ é U+00E9 blocked conditional diacritic transitivity è U+00E8 ↔ ê U+00EA blocked conditional diacritic transitivity è U+00E8 ↔ ë U+00EB blocked conditional diacritic transitivity é U+00E9 ↔ ê U+00EA blocked conditional diacritic transitivity é U+00E9 ↔ ë U+00EB blocked conditional diacritic transitivity ê U+00EA ↔ ë U+00EB blocked conditional diacritic transitivity ↔ declared both ways ⇆ both ways, different disposition each way → one direction only
-
uùûü
Source Direction Target Disposition Ref Comment u U+0075 ⇆ ù U+00F9 → blocked ← fallback conditional diacritic variant u U+0075 ⇆ û U+00FB → blocked ← fallback conditional diacritic variant u U+0075 ⇆ ü U+00FC → blocked ← fallback conditional diacritic variant ù U+00F9 ↔ û U+00FB blocked conditional diacritic transitivity ù U+00F9 ↔ ü U+00FC blocked conditional diacritic transitivity û U+00FB ↔ ü U+00FC blocked conditional diacritic transitivity ↔ declared both ways ⇆ both ways, different disposition each way → one direction only
-
aàâ
Source Direction Target Disposition Ref Comment a U+0061 ⇆ à U+00E0 → blocked ← fallback conditional diacritic variant a U+0061 ⇆ â U+00E2 → blocked ← fallback conditional diacritic variant à U+00E0 ↔ â U+00E2 blocked conditional diacritic transitivity ↔ declared both ways ⇆ both ways, different disposition each way → one direction only
-
iîï
Source Direction Target Disposition Ref Comment i U+0069 ⇆ î U+00EE → blocked ← fallback conditional diacritic variant i U+0069 ⇆ ï U+00EF → blocked ← fallback conditional diacritic variant î U+00EE ↔ ï U+00EF blocked conditional diacritic transitivity ↔ 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
^ $
enabled MSR default
use as when-context to enable: matches any label
^ .* $
Referenced by 67 definitions
- variant condition on U+0061
- variant condition on U+0061
- variant condition on U+0063
- variant condition on U+0065
- variant condition on U+0065
- variant condition on U+0065
- variant condition on U+0065
- variant condition on U+0069
- variant condition on U+0069
- variant condition on U+006E
- variant condition on U+006F
- variant condition on U+0075
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 |