HTML-Seiten in arabischer, hebräischer und anderen von rechts nach links geschriebenen Schriften erstellen

Zielgruppe: HTML/XHTML- und CSS-Entwickler, die Seiten in rechts nach links geschriebenen Schriften erstellen oder es mit eingebettetem Text in solchen Schriften zu tun haben. Dieses Material ist unabhängig davon zutreffend, ob Dokumente im Editor oder mittels Scripting erstellt werden.

Dieses Tutorial bietet Ihnen einen geordnete Sammlung von Verweisen zu Artikeln, die in ihrer Gesamtheit zum Verständnis der grundlegenden Aspekte dienen, wie man beim Verfassen von (X)HTML und CSS mit Sprachen in von rechts nach links geschriebenen Schriften und mit bidirektionalem Text umgeht.

Kurz und knapp

Dieser Abschnitt ist für diejenigen, die einfach nur schnell die Kernaussagen dieses Tutorials wissen möchten. Wenn Sie etwas nicht verstehen oder an weiteren Details interessiert sind, lesen Sie den Rest des Tutorials.

Verwenden Sie ein dir-Attribut im html-Tag, um die grundlegende Schriftrichtung Ihrer Seite anzugeben, wenn diese von rechts nach links läuft. Verwenden Sie dir-Attribute für Blockelemente innerhalb der Seite immer nur dann, wenn sich die Grundrichtung ändert.

Umschließen Sie innerhalb einer Zeile alle Abschnitte mit abweichender Schriftrichtung eng mit Markup, das deren Grundrichtung festlegt.

Verwenden Sie dir=auto, um für Formularfelder, pre-Elemente oder in die Seite eingefügten Text die Grundrichtung automatisch zu setzen. Verwenden Sie das dirname-Attribut, wenn Sie die Information über die Grundrichtung von Formulareingaben zum Server weiterleiten müssen.

Verwenden Sie kein CSS und keine Unicode-Steuerzeichen zur Regelung der Schreibrichtung, wenn Sie dafür Markup verwenden können.

Verwenden Sie die logische Buchstaben­reihenfolge bei bidirektionalem Text, nicht die visuelle, und überlassen Sie dem Unicode-Bidi-Algorithmus die Arbeit.

Dieses Material beschreibt den neuesten Stand gemäß der HTML5-Spezifikation. Es sei jedoch erwähnt, dass die HTML5-Spezifikation noch nicht völlig stabil ist.

Definitionen

Bidirektionaler Text
In Sprachen, die von rechts nach links geschrieben werden, laufen eingebetteter Text aus einer von links nach rechts geschriebenen Sprache und Zahlen von links nach rechts innerhalb des Textflusses von rechts nach links. (Natürlich könnte der deutsche Text auf dieser Seite auch bidirektionalen Text enthalten, wenn er bspw. arabische oder hebräische Beispiele enthalten würde.)
Bidirektionaler Text tritt oft in von rechts nach links geschrieben Schriften auf, bspw. in der arabischen, hebräischen, syrischen und Thaana. Eine Vielzahl von Sprachen wird in diesen Schriften geschrieben, unter anderem Arabisch, Dhivehi, Hebräisch, Jiddisch, Paschtunisch, Persisch, Sindhi, Syrisch, Urdu u.a.
Bidi
Abkürzung für „bidirektional“.
RTL
Abkürzung für „von rechts nach links“ (right to left).
LTR
Abkürzung für „von links nach rechts“ (left to right).
Grundrichtung
Damit Text richtig erscheint, wenn eine HTML-Seite dargestellt wird, muss der Richtungskontext dieses Textes hergestellt werden. Diesen Richtungskontext nennt man die „Grundrichtung“.
Es ist fundamental wichtig, die richtige Grundrichtung für Text herzustellen, damit der Bidi-Algorithmus die erwartete Reihenfolge ausgibt, wenn der Text dargestellt wird. Die richtige Angabe der Grundrichtung setzt auch die richtige Voreinstellung für die Ausrichtung des Textes.
In HTML wird die Grundrichtung entweder explizit durch das nächsthöhere Elternelement bestimmt, das ein dir-Attribut trägt, oder, wenn es kein solches Attribut gibt, dann wird die Grundrichtung durch von der Voreinstellung für Dokumente geerbt, die LTR (von links nach rechts) ist.
Unicode-Bidi-Algorithmus
Der Unicode Bidirectional Algorithm (UBA), oft kurz „Bidi-Algorithmus“ genannt, ist Teil des Unicode-Standards. Er beschreibt den Algorithmus, der zur Bestimmung der Richtung von bidirektionalem Unicode-Text eingesetzt wird. Er wird weitgehend von Webbrowsern und anderen Anwendungen unterstützt. Für Details siehe Unicode-Standard Anhang #9.

Markup für die Schreibrichtung

Dieser Abschnitt behandelt die Grundlagen des Markups für die Schreibrichtung. Der erste Artikel befasst sich mit der Einstellung der Schreibrichtung auf Dokument- und Dokumentstrukturebene. Der zweite befasst sich mit inzeiligen Textabschnitten, was etwas komplizierter ist, weil man hier bidirektionalen Text bewältigen muss.

Der dritte Artikel beschreibt den Unterschied zwischen visueller und logischer Buchstaben­reihenfolge, für den Fall, dass Sie einmal auf erstere treffen sollten. Heutzutage sollte man aber kaum noch mit visueller Reihenfolge zu tun haben.

Schreibrichtung und strukturelles Markup wirft einen Blick auf die grundlegende Verwendung des dir-Attributs auf Dokumentebene und bei strukturellem Markup in HTML, d.h. bei Dingen wie Absätzen, Tabellen und Formularen. Außerdem werden neue Entwicklungen in HTML5 zum Umgang mit Schreibrichtungen in Formularelementen, pre-Elementen und in die Seite eingefügtem Text behandelt. Das beinhaltet folgendes:

Inline-Markup und Bidi-Algorithmus in HTML beschreibt zunächst in einfachen Worten, wie der Bidi-Algorithmus funktioniert. Dieser Algorithmus ist die Grundlage für die Steuerung der Schreibrichtung von Text in allen Browsern. Er hat allerdings seine Grenzen; dann muss man Markup verwenden. Der Artikel zeigt Probleme auf und liefert einfache Lösungen. Das beinhaltet folgendes:

Zum Zeitpunkt des Erscheinens dieses Artikels stehen aufgrund derzeitiger Entwicklungen in Unicode noch einige endgültige Entscheidungen aus, wie das Markup für inzeilige Textabschnitte in HTML5 sein wird. Diese Information wird später nachgereicht.

Visuelle vs. logische Buchstaben­reihenfolge vergleicht den visuellen und den logischen Ansatz, bidirektionalen Text zu speichern, und liefert Argumente für den logischen Ansatz. Das beinhaltet folgendes:

CSS und Unicode-Steuerzeichen

Allgemein gesagt, sollten Sie die Schreibrichtung in HTML mit Markup regeln, nicht mit CSS oder Unicode-Steuerzeichen, obwohl es Stellen gibt, wo letztere der einzige Ausweg sind. Diese Artikel gehen den Gründen dafür auf die Spur.

CSS vs. Markup für bidirektionale Dokumente beinhaltet:

Unicode-Steuerzeichen vs. Markup für bidirektionalen Text erörtert, warum Markup besser geeignet als Unicode-Steuerzeichen ist, wenn es verfügbar ist. Das beinhaltet:

Verwendung von Unicode-Steuerzeichen für bidirektionalen Text erklärt, wie man Unicode-Steuerzeichen verwendet, wenn diese die einzige Option sind. Das beinhaltet: