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

Warum sollten Sie das lesen?

Bidirektionalen Text richtig darzustellen kann manchmal schleierhaft und frustrierend sein. Das muss aber nicht so sein. Ob Sie sich schon damit befasst haben oder erst damit beginnen, dieses Tutorial soll Ihnen dabei helfen, das bestmögliche Markup für Ihren Inhalt zu finden. Es soll auch hinreichend erklären, wie der Bidi-Algorithmus arbeitet, damit Sie die Ursachen vieler Probleme besser verstehen können. Es werden auch einige verbreitete Missverständnisse angesprochen, wie mit Markup für bidirektionalen Text zu verfahren ist.

Ziele

Nachdem Sie dieses Tutorial durchgearbeitet haben, sollten Sie:

Von rechts nach links geschriebenen Schriften werden von einer Vielzahl von Sprachen verwendet, unter anderem Arabisch, Dhivehi, Hebräisch, Jiddisch, Paschtunisch, Persisch, Sindhi, Syrisch, Urdu u.a.

Intended audience: HTML- und CSS-Entwickler, die Seiten in rechts nach links geschriebenen Schriften erstellen oder es mit eingebettetem Text in solchen Schriften zu tun haben.

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

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.

Definitionen

Bidirektionaler Text
Text that mixes runs of both LTR and RTL text inline. It is common for right-to-left scripts, such as Arabic and Hebrew, to contain short runs of left-to-right text (most commonly in the Latin script), and several of the scripts that are predominantly right-to-left display numbers from left-to-right. Bidirectional text is the source of many of the difficulties when dealing with RTL scripts.
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.

Unicode Bidirectional Algorithm basics provides a gentle introduction to how the bidi algorithm works, highlighting concepts and terminology that you'll need to understand how to work with bidirectional text.

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.

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.

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. Die befasst sich mit inzeiligen Textabschnitten, was etwas kompliziert ist, weil man hier bidirektionalen Text bewältigen muss.

Visuelle vs. logische Buchstaben­reihenfolge vergleicht den visuellen und den logischen Ansatz, bidirektionalen Text zu speichern, und liefert Argumente für den logischen Ansatz. Heutzutage sollte man aber kaum noch mit visueller Reihenfolge zu tun haben.

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

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

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