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 occidental 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.

Systèmes d’écriture

Cela peut devenir relativement complexe, lorsque plusieurs niveaux de citations sont utilisés. La plupart des systèmes d’écriture originaires de Moyen-Orient sont de cette nature. Par exemple, le nom hébreu Sarah (שרה) doit être épelé shin (ש), resh (ר), heh (ה) de droite à gauche.

Très peu d’écritures peuvent être écrites dans les deux sens. C’était le cas des hiéroglyphes égyptiens, où l’on employait un hiéroglyphe « tête », orientée dans le sens de lecture, marquant le début d’une ligne, et un hiéroglyphe « queue » pour marquer la fin. L’orientation des hiéroglyphes renseigne sur le sens de lecture : les figures (par exemple les oiseaux) « regardent » en effet vers le début de la ligne.

Certaines inscriptions grecques, touaregs, et runiques hongroises ont utilisé un système original, appelé boustrophédon, dans lequel le sens de lecture est inversé à chaque ligne.

Prise en charge de l’écriture bidirectionnelle

La prise en charge de l’écriture bidirectionnelle (en anglais bidirectional script support) est la capacité d’un logiciel à afficher correctement le texte bidirectionnel. Dans le jargon informatique, on abrège ce terme par BiDi ou bidi. Peu de logiciels affichent correctement les textes bidirectionnels. Certains navigateur web peuvent afficher le texte hébreu de cet article en sens inverse.

Les premiers systèmes informatiques étaient conçus pour ne prendre en charge qu’un unique sens d’écriture, en particulier le sens LTR (ainsi qu’une unique fonte basée sur l’ASCII et l’alphabet latin). L’ajout de nouveaux jeux de caractères et d’encodages a permis le support d’autres écritures de gauche à droite, mais peu aisément de droite à gauche, par exemple pour l’arabe ou l’hébreu, et le mélange des deux irréalisable. Le support bidirectionnel a permis d’utiliser les deux sens d’écriture dans une même page, voire dans un même paragraphe.

En particulier, le standard Unicode fournit des bases pour un support BiDi complet, avec des règles détaillées définissant comment doivent être enchaînés les textes de droite à gauche et de gauche à droite pour leur codage et affichage. En codage Unicode, tous les caractères sont stockés dans l’ordre d’écriture, et le logiciel trouve dans quelle direction le texte doit être affiché.

Subtilités techniques en Unicode

Les niveaux

Les morceaux de textes sont numérotés en fonction de leur niveau d’imbrication. Le niveau 0 est celui de l’écriture du texte dans sa langue principale depuis le début du texte, par exemple en français écrit de gauche à droite, le niveau 1 est du simple texte quand son écriture doit changer de direction (par exemple passer du français à l'arabe), possiblement embarqué à l’intérieur de texte français de niveau 0. Le niveau 2 est quand le texte embarqué à l’intérieur de texte arabe de niveau 1 s'écrit à nouveau dans la direction initiale, et ainsi de suite.

Sauf exceptions, le texte et les nombres français seront toujours d’un niveau pair ; les textes arabes (à l’exception des nombres) seront d’un niveau impair.

Par exemple, en notant par des lettres latines majuscules le texte de droite à gauche (ÉCRIT EN ARABE) et par des minuscules le texte de gauche à droite (comme du français ou du catalan écriture latine), sans tenir compte de la casse du texte réel :

Représentation mémoire un texte ÉCRIT EN ARABE et en français
Types des caractères LL-LLLLL-RRRRR-RR-RRRRR-LL-LL-LLLLLLLL
Niveau 00000000011111111111111000000000000000
Ordonnancement final un texte EBARA EN TIRCÉ et en français

Les caractères neutres (espaces) entre les caractères écrits dans la même direction (dans « un texte » ou dans « ÉCRIT EN ARABE » ou dans « et en français ») prennent par défaut le niveau des caractères les entourant. Quand des caractères neutres figurent entre des caractères de direction différente, ils adoptent la direction des caractères de niveau inférieur.

Caractères en miroir

Certains caractères apparaissent dans leur forme miroir lorsqu’ils sont écrits de droite à gauche.

Par exemple, la parenthèse gauche U+0028 qui est interprétée par le standard Unicode comme une parenthèse ouvrante apparaît comme « ( » quand elle est résolue en tant que paire, et comme son glyphe miroir « ) », lorsqu’elle est considérée comme impaire.

Contrôle de la direction d'écriture

Des marques directionnelles peuvent être ajoutées autour des caractères neutres, afin d’en changer leur effet : par exemple pour forcer un caractère à prendre une direction donnée, ou pour marquer explicitement le début et la fin d'une séquence encapsulée qui doit conserver sa direction interne propre, indépendamment de la direction du texte placé avant ou après : de tels textes encapsulés sont appelés des « isolats bidirectionnels »), le texte écrit après n'est pas altéré par le texte encapsulé (notamment les caractères pouvant être écrits en miroir, ou les ponctuations séparatrices d'éléments dans une liste dont les éléments inclus peuvent être dans des écritures différentes et ne doivent pas être réordonnés en plusieurs parties).

Alors que le sens d’écriture est le plus souvent détecté automatiquement, des marques de contrôle sont prévues afin de pouvoir changer le sens d’écriture.

Généralement, le forçage ou l'enchâssement de direction n'est pas recommandé et on lui préfère le plus souvent les isolats directionnels, notamment dans les listes d'éléments dont les écritures sont variables (ou encore pour encapsuler un texte écrit dans une langue quelconque), mais qui doivent préserver un même ordre logique pour la liste complète et pour éviter des coupures indésirables (par exemple dans des noms propres de personnes, des toponymes, des marques commerciales ou des noms d'œuvre).

Le même effet peut aussi être induit dans des textes en balisage enrichi, par exemple en HTML au moyen d'éléments comme <bdi>... </bdi> (pour encapsuler un isolat bidirectionnel, pris en charge depuis HTML5) ou bien <bdo>... </bdo> (pour marquer un forçage de direction au début du texte encapsulé, mais la direction induite pour le texte situé après est induite de la direction du dernier caractère visible dans le texte encapsulé; l'élément de forçage directionnel est cependant à éviter dans la plupart des cas, sauf pour les navigateurs anciens ne prenant pas en charge les isolats directionnel). L'utilisation des marques de contrôle au sein du texte n'est pas recommandé en HTML, qui leur préfère les éléments de balisage.

Voir aussi

Liens externes

Articles connexes