À la découverte d'Unicode/Fonctionnalités usuelles et algorithmes

Un livre de Wikilivres.

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « modifier »).

Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle? engendrant ce cadre)

Le standard Unicode et les différents documents y afférant traitent des domaines suivants pour lesquels ils peuvent servir de guide:

  • algorithmes pour gérer les changements de sens d'écriture de gauche à droite et de droite à gauche (comme en arabe ou en hébreu)
  • ordre alphabétiques et collation dans différentes langue
  • conversion de casse
  • équivalences de texte
  • division des mots et coupure de ligne
  • régionalisation des nombres et autres considérations
  • spécificités des combinaisons et ré-ordonnancement des langues sudasiatiques
  • problématique de sécurité liés à la ressemblance de caractères différents à travers le monde.

sens d'écriture de gauche à droite et de droite à gauche (comme en arabe ou en hébreu)[modifier | modifier le wikicode]

Certains systèmes d’écritures, tels que l’alphabet arabe et hébreu, s’écrivent de droite à gauche (Right-To-Left, RTL, en anglais). Dans ce cas, le texte commence du côté droit de la page et se termine du côté gauche, au contraire du sens d’écriture conventionnel de gauche à droite (Left-To-Right, LTR) des langues utilisant l’alphabet latin (telles que le français). Lorsqu’un texte LTR est mélangé avec un texte RTL dans le même paragraphe, chaque type de texte doit être écrit dans son propre sens, phénomène connu sous le nom de texte bidirectionnel.

En savoir plus sur wikipedia: wikipedia:Texte bidirectionnel

ordre alphabétiques et collation dans différentes langue[modifier | modifier le wikicode]

Le classement alphabétique ne doit pas être confondu avec le simple ordre alphabétique, qui ordonne un alphabet et ne concerne donc que des signes, tandis que le classement alphabétique porte sur des mots de longueurs diverses et peut comprendre plusieurs milliers d'éléments. Bien qu'on en ait vu quelques tentatives sous diverses latitudes et à diverses époques[1], il apparut véritablement avec la Souda, une encyclopédie byzantine du Xe siècle contenant 30 000  entrées[2].

L'ordre alphabétique resta longtemps une spécialité purement européenne : jusqu'au milieu du XXe siècle, les dictionnaires non-occidentaux demeurèrent classés par thèmes ou par racines grammaticales.

Le classement alphabétique révolutionna l'activité commerciale en Occident. Il devint possible avec lui de travailler avec des listes de plusieurs centaines – voire de milliers – de noms de clients, articles, fournisseurs, villes, sous-traitants, créanciers, débiteurs et correspondants divers sans plus de difficulté de recherche que sur une liste désordonnée d'une vingtaine de noms. Il révolutionna aussi l'activité savante et la structure des ouvrages grâce à la constitution d'index et à la mise en place de dictionnaires et d'encyclopédies faciles à consulter.


Pour des raisons d'habitudes, d'ancienneté du principe, ou de facilité de mise en œuvre, de nombreux développeurs de logiciels utilisent ou ont utilisé le classement selon l’ordre des codes dans le codage de caractères utilisé (par exemple ASCII ou UTF-8), nommé ordre lexicographique. Ce classement coïncide avec le classement alphabétique pour les mots contenant uniquement des lettres sans diacritique et toutes en majuscule (ou en minuscules), mais donne un résultat généralement incorrect dès qu’il y a des diacritiques, des espaces, des signes de ponctuations ou un mélange de lettres capitales et minuscules (ce dernier point est toutefois facilement résolu en convertissant tout en capitale).

La notion de "LOCALE" dans les systèmes d'exploitation permet aux fonctions de comparaison de mots d'effectuer les bonnes équivalences dans la langue considérés. En français, (A,À,Â,Ä,ä,â,à), etc. - alors que les codes de ces lettres sont loin d'être voisins. Ainsi, il n'y a pas à recompiler une même application pour chaque langue existante.

Ce sujet est discuté, en langue anglaise par les règles technique Unicode n°10 (Unicode Technical Standard «UTS 10 Unicode Collation Algorithm»).

conversion de casse[modifier | modifier le wikicode]

équivalences de texte[modifier | modifier le wikicode]

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. Par exemple, le caractère n suivi du diacritique tilde ◌̃ est canoniquement équivalent et donc compatible au simple caractère Unicode ñ, tandis que la ligature typographique ff est seulement compatible avec la séquence de deux caractères f.

La normalisation Unicode est une normalisation de texte qui transforme des caractères ou séquences de caractères en une même représentation équivalente, appelée « forme normale » dans cet article. Cette transformation est importante, car elle permet de faire des comparaisons, recherches et tris de séquences Unicode. Pour chacune des deux notions d’équivalence, Unicode définit deux formes, l’une composée, et l’autre décomposée, conduisant à quatre formes normales, abrégées NFC, NFD, NFKC et NFKD, qui seront détaillées ci-dessous et qui sont aussi décrites dans Normalisation Unicode.

Les deux notions d'équivalence[modifier | modifier le wikicode]

L’équivalence canonique est une forme d’équivalence qui préserve visuellement et fonctionnellement les caractères équivalents. Ils ont un codage binaire différents mais représentent un texte identique.

L’équivalence de compatibilité correspond plutôt à une équivalence de texte ordinaire, et peut réunir ensemble des formes distinctes sémantiquement.

Pour aller plus loin[modifier | modifier le wikicode]

division des mots et coupure de ligne[modifier | modifier le wikicode]

régionalisation des nombres et autres considérations[modifier | modifier le wikicode]

spécificités des combinaisons et ré-ordonnancement des langues sudasiatiques[modifier | modifier le wikicode]

problématique de sécurité liés à la ressemblance de caractères[modifier | modifier le wikicode]

Références[modifier | modifier le wikicode]

  1. Voir Knuth, Sorting and Searching, Addison-Wesley, 1973.
  2. Peter Burke, 2000, p. 184.