# Bidirektionales Steuerzeichen

In Unicode sind verschiedene bidirektionale Steuerzeichen definiert, also Steuerzeichen, die die Schreibrichtung beeinflussen. Sie werden im Computersatz bei bidirektionalem Text verwendet, also bei Text, der sowohl Zeichen aus von links nach rechts geschriebenen Schriften (wie Deutsch, Englisch oder Russisch) als auch Zeichen aus von rechts nach links geschriebenen Schriften (wie Arabisch und Hebräisch) enthält.
In Unicode wird jedem Buchstaben seine Schreibrichtung zugeordnet, während etwa Satzzeichen an die Schreibrichtung des umgebenden Textes angepasst werden. Treffen nun Texte mit verschiedenen Schreibrichtungen an einem solchen Zeichen aufeinander, kann der Algorithmus, der die Schreibrichtung für die Anzeige bestimmen soll, fehlschlagen. In diesem Fall kann mit den entsprechenden Steuerzeichen der Unicode-Bidi-Algorithmus beeinflusst und die Schreibrichtung somit korrigiert werden. Alternativ können in manchen Dokumenten Bereiche mit bestimmten Schrift- und Spracheigenschaften definiert werden.

## Zeichencodierung

Während das Links-nach-rechts- und das Rechts-nach-links-Zeichen in verschiedenen Zeichensätzen vorhanden sind, kommen die anderen Steuerzeichen nur in Unicode vor. Bis auf das ALM aus dem Unicodeblock Arabisch befinden sich alle Zeichen im Unicodeblock Allgemeine Interpunktion.
Kodierung in Unicode :
| Unicodenummer | Beschreibung | Offizielle Bezeichnung | Abkürzung | Bedeutung |
| U+061C (1564) | Arabisches Buchstaben-Zeichen | ARABIC LETTER MARK | ALM | wird wie ein unsichtbarer arabischer Buchstabe behandelt |
| U+200E (8206) | Links-nach-rechts-Zeichen | LEFT-TO-RIGHT MARK | LRM | wird wie ein Buchstabe einer von links nach rechts geschriebenen Schrift behandelt |
| U+200F (8207) | Rechts-nach-links-Zeichen | RIGHT-TO-LEFT MARK | RLM | wird wie ein Buchstabe einer von rechts nach links geschriebenen Schrift behandelt |
| U+202A (8234) | Links-nach-rechts-Einbettung | LEFT-TO-RIGHT EMBEDDING | LRE | die Grundschreibrichtung des folgenden Textes läuft von links nach rechts |
| U+202B (8235) | Rechts-nach-links-Einbettung | RIGHT-TO-LEFT EMBEDDING | RLE | die Grundschreibrichtung des folgenden Textes läuft von rechts nach links |
| U+202C (8236) | Richtungsformatierung zurücksetzen | POP DIRECTIONAL FORMATTING | PDF | beendet die Wirkung eines der Zeichen LRE, RLE, RLO, LRO |
| U+202D (8237) | Links-nach-rechts-Zwang | LEFT-TO-RIGHT OVERRIDE | LRO | alle folgenden Zeichen werden wie Zeichen einer von links nach rechts geschriebenen Schrift behandelt |
| U+202E (8238) | Rechts-nach-links-Zwang | RIGHT-TO-LEFT OVERRIDE | RLO | alle folgenden Zeichen werden wie Zeichen einer von rechts nach links geschriebenen Schrift behandelt |
| U+2066 (8294) | Links-nach-rechts-Isolierung | LEFT-TO-RIGHT ISOLATE | LRI | die Grundschreibrichtung des folgenden Textes läuft von links nach rechts, ohne dabei Zeichen außerhalb zu beeinflussen |
| U+2067 (8295) | Rechts-nach-links-Isolierung | RIGHT-TO-LEFT ISOLATE | RLI | die Grundschreibrichtung des folgenden Textes läuft von rechts nach links, ohne dabei Zeichen außerhalb zu beeinflussen |
| U+2068 (8296) | Bidirektionale Isolierung | FIRST STRONG ISOLATE | FSI | der folgende Text wird vom Rest isoliert behandelt |
| U+2069 (8297) | Richtungsisolierung zurücksetzen | POP DIRECTIONAL ISOLATE | PDI | beendet die Wirkung eines der Zeichen LRI, RLI, FSI |
Das Links-nach-rechts- (LEFT-TO-RIGHT MARK), das Rechts-nach-links- (RIGHT-TO-LEFT MARK) und das arabische Buchstaben-Zeichen (ARABIC LETTER MARK) werden als implizite Steuerzeichen bezeichnet, die anderen als explizite.
Für das Links-nach-rechts- und das Rechts-nach-links-Zeichen gibt es in HTML benannte Entitäten: &lrm; und &rlm;. Die anderen Zeichen sollten gemäß einer Empfehlung des Unicode-Konsortiums auf Internetseiten nicht verwendet werden, stattdessen ist das dir-Attribut mit den Werten "ltr" oder "rtl" vorgesehen sowie die Tags <bdi> und <bdo>.
Die Wirkung der expliziten Steuerzeichen kann auch mit einer Tiefe von bis zu 125 Ebenen verschachtelt werden, ferner endet ihre Wirkung auch ohne die Zeichen PDF bzw. PDI am Absatzende.
Textstellen, die von Steuerzeichen zum Einbetten oder Überschreiben eingefasst sind, haben auf ihre Nachbarzeichen in etwa den Einfluss von Zeichen mit der entsprechenden Schreibrichtung, während die mit Unicode 6.3 neu eingeführten Steuerzeichen zum Isolieren den eingeschlossenen Text von seiner Umgebung getrennt halten, und dieser damit auf seine Umgebung keinen Einfluss ausübt.

## Beispiel

Ein arabischer Text über die Programmiersprache C++ könnte etwa (von rechts nach links) anfangen mit
C++ هي لغة برمجة تستخدم…‎
Das ++, das selbst keine festgelegte Schreibrichtung besitzt, steht hier zwischen dem C (ein Zeichen einer von links nach rechts geschriebenen Sprache) und dem arabischen Text. Der Webbrowser orientiert sich daher an der Hauptschreibrichtung des Absatzes und stellt das ++ damit von rechts nach links geschrieben dar, also fälschlicherweise links vom C.
Fügt man hinter dem ++ ein Links-nach-rechts-Zeichen ein, so wird das ++ von zwei Zeichen umgeben, die beide als von links nach rechts geschrieben markiert sind, sodass der Browser auch das ++ von links nach rechts und damit rechts vom C anzeigt:
C++‎ هي لغة برمجة تستخدم…‎
Alternativ könnte man auch vor dem C ein LRE und hinter dem ++ ein PDF einfügen, um zu kennzeichnen, dass C++ ein in den arabischen Text eingebetteter, von links nach rechts geschriebener Begriff ist. Auch die Steuerzeichen LRI oder FSI vor und PDI nach dem C++ können verwendet werden. Die Darstellung ist in all diesen Fällen identisch; wenn der Text aber noch weitere schwache Zeichen enthalten würde, so hätte die Wahl der Steuerzeichen auch einen möglichen Einfluss auf deren Darstellung.

## Bereiche mit bestimmten Schrifteigenschaften

Während die Methode mittels Steuerzeichen in jeder Umgebung funktioniert, wird in modernen Dokumenten inzwischen bevorzugt, Bereiche mit bestimmten Schrift- und Spracheigenschaften zu definieren. Hier hat jeder Bereich eine einheitliche Schreibrichtung und auch sonstige Eigenschaften der Schrift und der benutzten menschlichen Sprache können für den jeweiligen Bereich festgelegt werden. Damit entfällt die Notwendigkeit, mittels Steuerzeichen das Verhalten des Darstellungsalgorithmus individuell beeinflussen zu müssen; die Bereiche sind isoliert und nicht mehr gemischt. In HTML-Dokumenten (etwa Webseiten) ist dies inzwischen üblich. Somit kann bidirektionaler Text auch robust automatisch aus Textbausteinen zusammengestellt werden.