NormalizeString
Qubes 6.8 Effectue une normalisation d'équivalence canonique d'une chaîne
Syntaxe
function NormalizeString(str: String; form: String = 'NFC'): String
Remarques
Unicode contient de nombreux caractères. Pour maintenir la compatibilité avec des standards existants, certains d’entre eux sont équivalents à d’autres caractères ou à des séquences de caractères. Unicode fournit deux notions d’équivalence : canonique et de compatibilité, la première étant un sous-ensemble de la deuxième.
Les différentes formes Unicode signifient qu'un même caractère (tel que vu par l'utilisateur et affiché) peut être représenter de différentes manières, par exemple U+006E (le "n" minuscule latin) suivi de U+0303 (tilde "~" combinant) est défini comme canoniquement équivalent à U+00F1 (la minuscule "ñ" de l'alphabet Espagnol). La norme Unicode spécifie que les formes alternatives doivent être traitées de manière similaire pour des affichages, comparaison, tris ou recherches.
Les séquence compatibles sont celles pouvant avoir une signification équivalente dans certains contextes, sans pour autant avoir une représentation équivalent. Par exemple U+FB00 (la ligature typographique "ff") est définie comme compatible mais non canoniquement équivalent avec la sequence U+0066 U+0066 (deux "f" minuscule latin).
Cette fonction permet d'effectuer une conversion d'équivalence entre différentes formes normales ou compatible, pour plus de détails, se reporter à wikipedia ou la FAQ Unicode (en anglais).
Les formes supportées par cette fonction sont:
- NFC : Normalization Form Canonical Composition, les caractères sont décomposés puis recomposés par equivalence canonique.
- NFD : Normalization Form Canonical Decomposition, les caractères sont décomposés par équivalence canonique, les combinaisons multiples sont ré-ordonnées dans l'ordre standard.
- NFKD : Normalization Form Compatibility Decomposition, les caractères sont décomposés par compatibilité, les combinaisons multiples sont ré-ordonnées dans l'ordre standard.
- NFKC : Normalization Form Compatibility Composition, les caractères sont décomposés par compatibilité, puis recomposés par equivalence canonique.
Dans le contexte de Qubes, il faut tout particulièrement prendre garde à ces notions quand les saisies sont effectuées soit dans un contexte international, soit sur des dispositifs à saisie prédictive (smartphones par exemple).
Les problèmes liés au formes Unicode étaient historiquement rares lors de saisie clavier sur PC en France ou dans les pays anglophones, mais présent pour l'Allemagne (compatibilité de l'esset "ß" et "ss" notamment).
Exemples
PrintLn(NormalizeString('ñ', 'NFD').Length); // 2