Jens Oliver Meiert

CSS vs. Markup für bidirektionale Dokumente (W3C)

Originalversion:
https://www.w3.org/­International/questions/qa-bidi-css-markup
Übersetzer:
Jens Oliver Meiert, meiert.com
Datum der Übersetzung:
3. August 2008

Bei diesem Dokument handelt es sich um die deutsche Übersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschützt; bitte beachten Sie die Hinweise des Originaldokuments sowie die Anmerkungen der W3C-Dokumentlizenz. Die Übersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.

Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an den Übersetzer. Kommentare des Übersetzers, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht des Übersetzers. Sie sind kein Bestandteil des Ursprungsdokuments.

CSS vs. Markup für bidirektionale Dokumente

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 Textes, 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 entsprechen 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 Textes, für den die unicode-bidi-Eigenschaft gilt.
rtl Bestimmt »von rechts nach links« als Basisausrichtung des Textes, 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 einsetzen, 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 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, bzw. 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 Textes 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 Textes 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.

Autor: Richard Ishida (W3C). Übersetzer: Jens Oliver Meiert.