Caractères de contrôle Unicode

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Beaucoup de caractères de contrôle Unicode sont utilisés pour contrôler l’interprétation ou l’affichage du texte, mais ces caractères n’ont eux-mêmes aucune représentation visuelle, ni même spatiale. Par exemple, le caractère null ((U+0000 <control-0000> ) est utilisé par le langage de programmation C pour indiquer la fin d’une chaine de caractères. De cette façon, les programmes n’ont besoin que de l’adresse mémorie du début de la chaine (et n’ont pas à connaitre sa longueur), car la chaine se termine dès que le programme lit le caractère null.

Caractères de contrôle de l'ISO 6429 (C0 et C1)[modifier | modifier le code]

Les caractères de contrôle de U+0000 à U+001F et U+007F viennent de l'ASCII. Ceux de U+0080 à U+009F viennent de  l'ISO 8859. Ils sont spécifiés par la norme ISO 6429 et sont souvent appelés « Codes de contrôle C0 et C1 » (respectivement).

La plupart de ces caractères ne jouent aucun rôle explicite dans la manipulation de texte Unicode. Toutefois les caractères U+0000 <control-0000> , U+0009 <control-0009> (HT), U+000A <control-000A> (LF), U+000D <control-000D> (CR), et U+0085 <control-0085> (CR+LF) sont communément utilisés dans le traitement de texte comme caractères de formatage.

Les séparateurs introduits par Unicode[modifier | modifier le code]

Dans une tentative de simplification des différents caractères de fin de ligne, la norme ISO/CEI 10646 (UCS) introduit ses propres caractères séparteurs pour les lignes et les paragraphes : U+2028 line separator (HTML : &#8232; LSEP) et U+2029 paragraph separator (HTML : &#8233; PSEP). Ces caractères servent uniquement au formatage de texte et ne sont pas des caractères de contrôle.

Étiquette d’identification de langues[modifier | modifier le code]

Par le passé, l'Unicode a inclus 128 caractères — désormais obsolète — pour l’identification des langues. Ces caractères sont la copie de l’essentiel des 128 caractères d’ASCII, mais servent à identifier le texte qui les suit comme étant écrit dans une langue particulière. L’étiquette identifiant la langue suit la recommandation  BCP 47. Par exemple, pour indiquer que le texte est écrit en français tel que pratiqué en Belgique, on utilisera la séquence suivante : l'étiquette de langue (U+E0001), le caractère « étiquette de langue F minuscule »  (U+E0066), le caractère « étiquette de langue, R minuscule » (U+E0072), le caractère « étiquette de langue, trait d’union » (U+E002D), le caractère « étiquette de langue, B minuscule » (U+E0062), le caractère « étiquette de langue, E minuscule » (U+E0065).

Ces caractères d’identification de langues ne sont pas affichées eux-mêmes. Toutefois ils fournissent une information au traitement de texte ou pour l’affichage des autres caractères. Par exemple l’affichage des idéogrammes UniHan peuvent substituer des glyphes différents selon que l’étiquette de langues indique du coréens ou du japonais. Autre exemple, l’identification de la langue peut influencer l’affichage des chiffres (de 0 a 9).

La version 5.1 d’Unicode (2008) a déclaré obsolètes tous les caractères d’étiquette et déconseille fortement leur utilisation[1].

La version 8.0 d’Unicode (2015), annule l'obsolescence des caractères U+E0020–U+E007E . Toutefois les caractères U+E0001 LANGUAGE TAG et U+E007F CANCEL TAG restent obsolètes. Ce changement a été fait pour « ouvrir la voie à une utilisation future des caractères d’étiquette pour un autre but que l’identification des langues »[2]. Unicode stipule que « l’utilisation des caractères d’étiquettes pour représenter des étiquettes de langues dans un flux de texte brut reste un mécanisme obsolète pour transmettre la langue du texte[2].

Annotation interlinéaire[modifier | modifier le code]

Trois caractères de formatage permettent les annotation interlinéaires (U+FFF9, U+FFFA, U+FFFB). Ils peuvent être utilisés pour fournir des notes qui seront typiquement affichées entre les lignes du texte principale. Unicode considère ces annotations comme du texte formaté et recommandes l’utilisation d’un autre protocoles pour les représentées. La recommandation du W3C pour les annotations Ruby est un exemple de protocole alternatif avec des fonctionnalités plus avancées.

Contrôle de texte bidirectionnel[modifier | modifier le code]

Unicode prend en charge la bidirectionnalité standard des textes sans utiliser de caractères spéciaux. En d’autres termes, les logiciels conformes à l’Unicode doivent afficher les caractères de gauche-à-droite comme les lettres hébraïques simplement en se basant sur les propriétés Unicode des caractères. De même Unicode gère le mélange de textes « de gauche à droite » et « de droite à gauche » sans utiliser de caractères spéciaux. Par exemple on peut mettre une citation arabe (« بسملة » traduit en français par « basmala ») dans un texte français et les lettres arabes seront affichées de droite à gauche tandis que les lettres latines seront affichées de gauche à droite. Toutefois la prise en charge des textes bidirectionnels devient plus compliquée quand les changements de direction s’imbriquent, par exemple une citation en arabe qui elle-même cite une phrase en français. D’autres situations peuvent également compliquer cela, comme quand l’auteur veut forcer le sens d’écriture de caractères (écrire de droite à gauche des caractères qui s’écrivent habituellement de gauche à droite). Bien que ces situations soient plutôt rares, Unicode fournit 7 caractères de contrôle (U+200E, U+200F, U+202A, U+202B, U+202C, U+202D, U+202E) pour gérer jusqu’à 61 niveaux d’imbrication de textes bidirectionnels.

Sélecteurs de variantes[modifier | modifier le code]

Beaucoup de caractères représentent des glyphes alternatifs dépendants du contexte. Par exemple les caractères cursifs arabes et latins substituent des glyphes différents pour les relier entre eux en fonction de leurs position dans le mot (initiale, médiale, finale ou isolée). Ces types de substitution de glyphe sont facilement gérés par le contexte du caractère sans qu’aucune action du rédacteur ne soit nécessaire. Il peut également utiliser des caractères à usage spéciaux tel que les caractères liant ou antiliant (généralement sans chasse) pour obtenir de force un glyphe alternatif. Les ligatures non-orthographiques sont des cas similaires où les glyphes peuvent être substitués simplement en activant ou en désactivant cette fonctionnalité des attributs de texte formaté.

Cependant pour d'autres cas de substitution de glyphes, l'intention de l'auteur peut avoir besoin d'être enregistrer dans le texte car elle ne peut pas être déterminée contextuellement. C’est le cas avec les caractères  kanji où différents glyphes sont utilisés pour le même caractère soit historiquement soit pour les idéogrammes de noms de famille. Ceci est l'une des zones d'ombre dans la distinction entre un glyphe et un caractère. Si un nom de famille diffère légèrement du idéogramme dont il dérive, alors ce n'est qu'une simple variante de glyphe ou une variante de caractère. Depuis Unicode 3.2 et 4.0, le jeu de caractères comprend 256 sélecteurs de variante de sorte que ces marques de caractères combinant permettent de choisir parmi 256 variantes possibles de caractère ou de glyphe pour le caractère précédent.

Images des caractères de contrôle[modifier | modifier le code]

Unicode fournit des caractères graphiques pour représenter les caractères de contrôle, notamment les caractères de contrôle C0, dans le bloc Control Pictures. Il ne s’agit que d’une représentation visuelle par des véritables caractères de contrôles.

Voir aussi[modifier | modifier le code]

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