Accesskey n springt zur Seitennavigation. Springe zum Inhalt.

Dieses Dokument ist eine Übersetzung. Im Falle von Abweichungen oder Fehlern sollte das aktuelle englische Original als maßgeblich angenommen werden. Das W3C besitzt das Copyright am Original, wie unten beschrieben.

Übersetzer: Jens Meiert

s_gotoW3cHome Internationalisierung
 

CSS vs. Markup für bidirektionale Dokumente

Zielgruppe: XHTML/HTML coders (using editors or scripting), script developers (PHP, JSP, etc.), CSS coders, schema developers (DTDs, XML Schema, RelaxNG, etc.), and anyone who implements HTML using right-to-left scripts.

Frage

Sollte man CSS oder Markup verwenden, um unicode-basierten, bidirektionalen Text (Bidi) in Markup-Sprachen, die auf HTML und XML basieren, korrekt darzustellen?

Hintergrund

In arabischer oder hebräischer Schrift geschriebener Text fließt überwiegend von rechts nach links (RTL), während Text in anderen Schriften von links nach rechts verläuft (LTR). In der Regel kümmert sich der Unicode-Bidi-Algorithmus um die Laufrichtung und Ausrichtung des Texts, basierend auf den Eigenschaften der verwendeten Zeichen. Es muss jedoch Möglichkeiten geben, anzuzeigen,

Wir zeigen Beispiele, die Text in von rechts nach links laufenden Schriften sowie unmittelbar folgende, visuell entsprechend hervorgehobene Nur-ASCII-Inhalte beinhalten, mit deutschem Text in Klein- sowie Hebräisch und Arabisch in Großbuchstaben. Die Reihenfolge und Position der Zeichen entspricht denen des Originals.

Beispiel:

Um den dritten Punkt zu verdeutlichen, bietet der folgende Satz ein Beispiel dessen, was das Ergebnis sein kann, wenn Sie sich einzig auf den bidirektionalen Algorithmus verlassen, und dieses Ergebnis ist nicht korrekt. Da das ganze Zitat auf Hebräisch ist und damit von rechts nach links läuft, sollten der Text »W3C« und das Komma links vom (also nach dem) hebräischen Text erscheinen.

Auf Hebräisch lautet der Titel »פעילות הבינאום, W3C«.

ASCII-Version:
Auf Hebräisch lautet der Titel »YTIVITCA NOITAZILANOITANRETNI, w3c«.

Das richtig dargestellte Ergebnis ist jedoch:

Auf Hebräisch lautet der Titel »פעילות הבינאום, W3C«.

ASCII-Version:
Auf Hebräisch lautet der Titel »w3c ,YTIVITCA NOITAZILANOITANRETNI«.

HTML/XHTML bietet für diese Zwecke bestimmtes Markup. Es beinhaltet:

Markup Effekt
dir-Attribut Bestimmt die Ausrichtung des Elements, auf dem es gesetzt wird. Mögliche Werte sind rtl und ltr.
bdo-Element Überschreibt die Ausrichtung von Text wie vom Unicode-Bidi-Algorithmus definiert.

CSS bietet ebenfalls Unterstützung für die Textausrichtung:

Eigenschaft Werte Effekt
unicode-bidi embed Der Text, auf den dies angewandt wird, wird von der Ausrichtung ausgehen, die von der direction-Eigenschaft angegeben wird.
bidi-override Der Text, auf den dies angewandt wird, wird den Unicode-Bidi-Algorithmus gemäß der Ausrichtung überschreiben, die von der direction-Eigenschaft angegeben wird.
direction ltr Bestimmt »von links nach rechts« als Basisausrichtung des Texts, für den die unicode-bidi-Eigenschaft gilt.
rtl Bestimmt »von rechts nach links« als Basisausrichtung des Texts, für den die unicode-bidi-Eigenschaft gilt.

Die Frage ist, ob Sie Markup oder CSS verwenden sollten, um die Textausrichtung in HTML sowie auf XML basierenden Markup-Sprachen anzugeben.

Antwort

Wenn möglich, sollten Sie immer entsprechendes Bidi-Markup verwenden, um Ihre Inhalte zu beschreiben. CSS kann, muss aber nicht nötig sein, um die Bedeutung dieses Markups zu bestimmen. Dies hängt davon ab, ob Sie es mit Inhalten zu tun haben, die vom User-Agent als HTML oder XML behandelt werden. (Beachten Sie, dass XHTML in beiden Formen ausgegeben werden kann.)

Behalten Sie immer im Hinterkopf, dass sowohl Markup als auch CSS nur eingesetzt werden sollten, wenn dies notwendig ist. Unsere Frage bezieht sich auf Situationen, in denen der Unicode-Bidi-Algorithmus allein nicht ausreicht oder ‎ und ‏ nicht verwendet werden können, um die Textausrichtung zu bestimmen.

Schauen wir uns dies nochmal im Detail an.

Verwenden Sie dediziertes Markup

Da die Textausrichtung einen integralen Bestandteil der Dokumentstruktur darstellt, sollte Markup verwendet werden, um die Ausrichtung eines Dokuments oder Dokumentbestandteils zu bestimmen, beziehungsweise um Stellen im Text zu identifizieren, in denen der bidirektionale Unicode-Algorithmus allein nicht ausreicht, um die gewünschte Direktionalität zu erreichen.

Um den gewünschten, von rechts nach links laufenden oder bidirektionalen Effekt zu erzielen, wenden manche Leute einfach CSS auf die Elemente an, die den relevanten Text gerade umgeben. Von CSS vorgegebene Formatierung ist jedoch nicht andauernd. Sie kann deaktiviert oder überschrieben werden, unerkannt bleiben oder über den Kontext geändert oder ersetzt werden. Obwohl Bidi-Markup nur zum visuellen Rendering eines Texts benötigt wird, ist es von der Funktion her nicht rein dekorativ. Markup bleibt in das jeweilige Dokument anhaltend integriert. Es gibt Inhalten dazu deutlich mehr Klarheit, wenn dediziertes Bidi-Markup verwendet wird.

Wenn möglich, sollten Sie also spezielles Bidi-Markup verwenden. Wenden Sie nicht einfach CSS-Styling auf allgemeine Elemente an, um den gewünschten Effekt zu erzielen.

Beachten Sie, dass dies voraussetzt, dass in Markup-Sprachen geschriebene Dokumente immer die Möglichkeit haben, auf speziell zur Unterstützung von Texten unterschiedlicher Ausrichtung gewidmetes Markup zurückzugreifen. Diejenigen, die eine DTD oder Schema entwerfen, sollten zu diesem Zweck entsprechende Elemente oder Attribute vorsehen.

HTML oder XHTML, das als text/html ausgegeben wird

Verwenden Sie ausschließlich Markup. Die CSS-2-Spezifikation empfiehlt den Gebrauch von Markup für bidirektionalen Text in HTML. Sie geht sogar so weit, zu sagen, dass konforme HTML-User-Agents CSS-Bidi-Eigenschaften ignorieren dürfen. Dies liegt daran, dass die HTML-Spezifikation das erwartete Verhalten von User-Agents hinsichtlich Bidi-Markups klar definiert.

XHTML, das als application/xhtml+xml ausgegeben wird

XHTML 1.0, das als application/xhtml+xml ausgegeben wird, bedeutet die gleiche Semantik wie HTML. Deshalb ist es sinnvoll, für bidirektionale Inhalte nur Markup und kein CSS zu verwenden.

XML-Markup im Allgemeinen und XHTML, das als application/xml oder text/xml ausgegeben wird

Normalerweise wird ein User-Agent nicht automatisch erkennen oder wissen, was er mit irgendwelchem Bidi-Markup in XML-Dokumenten machen soll. In diesem Fall sollten deshalb CSS-Eigenschaften verwendet werden, um das erwartete visuelle Verhalten des Texts in Ihren Dokumenten anzugeben.

Die CSS-Zuweisungen sollten jedoch immer mit dediziertem Bidi-Markup im Text verknüpft werden.

XHTML, das als application/xml oder text/xml ausgegeben wird, wird von User-Agents als XML behandelt, nicht als HTML.

Das folgende zeigt CSS, das für das in XHTML verfügbare Markup angemessen wäre:

*[dir="ltr"] { direction: ltr; unicode-bidi: embed }

*[dir="rtl"] { direction: rtl; unicode-bidi: embed }

bdo[dir="ltr"] { direction: ltr; unicode-bidi: bidi-override }

bdo[dir="rtl"] { direction: rtl; unicode-bidi: bidi-override }

Übrigens

Es gibt Situationen in HTML/XHTML und möglicherweise anderen, auf XML basierenden Markup-Sprachen, in denen Text innerhalb eines Attributs erscheint oder in einem Element, das nur Zeichendaten unterstützt. Weder Markup noch CSS kann verwendet werden, um die Ausrichtung von Attributstexten oder Teilen des Inhalts von Elementen zu ändern, die nur Zeichendaten unterstützen. In diesen Fällen müssen Sie auf direktionale Unicode-Formatierungszeichen zurückgreifen. (Beachten Sie die FAQ (X)HTML- & Bidi-Formatierungszeichen vs. Markup für weitere Details.)

Bei XML-basierten Markup-Sprachen sollte Bidi-Styling in einem separaten Stylesheet definiert und dieses in anderen Stylesheets oder im jeweiligen Dokument einbezogen werden. Dies vereinfacht die Entwicklung von Stylesheets und bekräftigt den Unterschied zwischen Bidi- und anderem Styling. Betrachten Sie ein Bidi-Stylesheet eher als Teil der Schema-Information, die die Bedeutung besonderen Bidi-Markups definiert, denn als dekorative Formatierung, die in verschiedenen Formen existieren kann.

Sagen Sie uns, was Sie denken (auf Englisch).

Abonnieren Sie unseren RSS-Feed.

Neue Ressourcen

News auf der Startseite

Twitter (News auf der Startseite)

‎@webi18n

Literaturhinweise

Autor: Richard Ishida, W3C. Übersetzer: Jens Meiert.

Valides XHTML 1.0!
Valides CSS!
Kodiert in UTF-8!

Übersetzung der englischen Version vom 2007-08-29. Letzte Änderung der übersetzten Version am 2011-05-04 8:29 UTC.

Suchen Sie nach qa-bidi-css-markup im i18n-Blog, um alle Dokumentänderungen nachzuvollziehen.