Le support d’écriture bidirectionnel (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 navigateurs 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 du simple texte français, le niveau 1 est du simple texte arabe, possiblement embarqué à l’intérieur de texte français de niveau 0. Le niveau 2 est du texte français, possiblement embarqué à l’intérieur de texte arabe de niveau 1, 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.
Exemple
En notant par des majuscules le texte de droite à gauche (arabe), et par des minuscules, le texte de gauche à droite (comme le français, ou le catalan).
Représentation mémoire : un texte TEXTE ARABE en français
Types des caractères : LL-LLLLL-RRRRR-RRRRR-LL-LLLLLLLL
Niveau : 00000000011111111111000000000000
Les caractères neutres (espaces) entre TEXTE et ARABE prennent par défaut le niveau des caractères les entourant. Des marques directionnelles peuvent être ajoutées autour des caractères neutres, afin d’en changer leur effet.
Marques de sens d’écriture
Alors que le sens d’écriture est détecté automatiquement, des marques de contrôle sont prévues afin de pouvoir changer le sens d’écriture.
Le marqueur de gauche à droite a le code hexadécimal 200E. Le marqueur de droite à gauche a le code hexadécimal 200F.
D’autres marqueurs existent, en particulier entre les valeurs 202A et 202E.
Caractères 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.