L'algorithme Bidirectionnel (BIDI)

Unicode définit un ordre que les caractères doivent respecter en mémoire que l'on appelle ordre logique. Quand un texte est interprété par un éditeur pour le présenter à l'écran les caractères sont mis cote à cote dans des lignes et des paragraphes. L'ordre des caractères lors de cette mise en ligne peut dépendre de l'écriture utilisée (par exemple: l'arabe s'écrit de droite à gauche, le francais de gauche à droite). Enfin certains textes multilingues utilisent des sens d'écriture qui peuvent varier (Par exemple: des citations dans une autre langue).

Les codes directionnels implicites
héritage des propriétés des caractères
Caractères forts
LLeft-to-RightLRM + La plupart des alphabets
LRELeft-to-Right EmbededdingLRE
LROLeft-to-Right OverrideLRE
RRight-to-LeftRLM + Hébreu...
ALRight-to-Left ArabicArabe, Syriaque...
RLERight-to-Left EmbededdingRLE
RLORight-to-Left OverrideRLE
Caractères faibles
PDFPop Directional FormatPDF
ENEuropean Number
ESEuropean Number Separator
ETEuropean Number Terminator
ANArabic Number
CSCommon Number Separator
NSMNon-Spacing Mark
BNBoundary Neutral
Caractères neutres
BParagraph Separator
SSegment Separator
WSWhitespace
ONOthers Neutrals

Les codes explicites d'enchâssement directionnel
RLE Right-to-Left Embeding
LRE Left-to-Right Embeding

Les codes explicites de forçage directionnel
(force la propriété directionnelle des caractères quand necessaire)
RLO Right-to-Left Override
LRO Left-to-Right Override

PDF Pop Directional Formating restaure l'état d'avant le dernier RLE, LRE, LRO ou RLO

Les marques implicites de direction
(comme des caractères avec un directionnalité forte mais qui n'apparaissent pas à l'écran)
RLM Right-to-Left Mark
LRM Left-to-Right Mark

Exemple: directions implicites, enchâssements explicites

L'algorithme BIDI reçoit un flux de texte en entrée et effectue yn traitement en 3 phases:

  1. Séparation du texte en paragraphe
  2. Résolution des niveaux d'incorporation en utilisant les propriétés implicite des caractères + les codes de formatage explicites.
  3. Réordonancement du texte pour un affichage ligne par ligne en utilisant les niveaux d'enchâssement résolus

Le choix des glyphes est fait après le passage de BIDI