Donnerstag, 18. August 2011
Pretty much the only forms of Western literature that don’t use hyphenation are children’s books and websites.
schreibt das FONTDECK Blog.
Warum Websites keine Silbentrennung einsetzen, ist schnell erklärt: Weil die Laufweite der Zeilen, anders als im Print, nicht bekannt ist. Sie hängt nämlich von den Benutzereinstellungen ab.
HTML bietet in diesem Fall eine Art Automatik - den bedingten Trennstrich “soft hyphens” - an: ­ - inzwischen unterstützen alle modernen Browser das.
Das manuelle Setzen von soft hyphens rechtferigt den Aufwand aber nur in wenigen, speziellen Fällen. Deshalb gibt es Techniken, das Setzen von soft hyphens automatisch von JavaScript erledigen zu lassen. Am bekanntesten dürfte Hyphenator.js sein.
Wann macht automatische Silbentrennung Sinn?
- Wenn Blocksatz eingesetzt wird.
- Bei extrem kurzen Zeilenweite, z. B. wenn Text Bilder umfließt.
Die Ergebnisse mit Hyphenator.js sind ordentlich. Mit einer gravierenden Einschränkung: Screen Reader (nicht alle, aber die meisten) “verschlucken sich” an den soft hyphens. Das Ergebnis ist unverständlich bis unzumutbar. Wer Wert darauf legt, dass seine Seiten für Screen Reader zugänglich sind, muss auf automatische Silbentrennung mittels Hyphenator.js verzichten.
Ein erster Schritt in die richtige Richtung
Puristen hätten längst eingewendet:
Silbentrennung hat nichts im Markup zu suchen (Markup ist Inhalt), und auch nichts im JavaScript (JavaScript ist zuständig für das Verhalten einer Webseite). Silbentrennung ist Darstellung, und gehört ins CSS! Und dort hat es jetzt, mit der CSS3-Deklaration “hyphens:auto” auch Einzug gefunden. Bisher unterstützen diese Deklaration der brandneue Firefox 6, und Safari 5.1 bzw. Safari / iOS. Und beide Browser auch nur mit Vendor-Prefix. Der CSS Code muss also lauten:
.hyphen {
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
Damit ist der Safari bedient.
Für den Firefox ist zusätzlich lang="en” für das entsprechende Element (oder ein Elternelement) nötig. Jawohl: “en", auch wenn die Sprache des Dokument eine andere ist. Also
<div class="hyphen" lang="en" >
Das funktioniert. Zumindest auf dem Monitor. Aber es ist natürlich ein absolutes No-Go - nicht nur wegen des Kauderwelsch’, das Screen Reader dann ausgeben.
Was bleibt? - Fazit
Also alles noch Spielerei, nicht in der Praxis einsetzbar?
DOCH!
Es gibt einen Anwendungsfall, der geradezu nach “hyphens:auto” schreit: Das iPhone! Dort sind die Zeilen kurz, und das iPhone versteht die Deklaration.
Also ran ans CSS:
body {
-webkit-hyphens: auto;
}
Das versteht nur der Safari, und es erfordert kein Verbiegen der Dokumentensprache. Und, weil die Silbentrennung jetzt dort ist, wo sie hingehört, nämlich im CSS, “verschluckt” sich auch der Screeen Reader (VoiceOver) nicht. Wer das Ergebnis sehen will, hier ein Testcase.
Hinweis: Die Testseite ist mit < body lang="en” > ausgezeichnet. Die Anzeige funktioniert also auch im Firefox 6. Wer sich die Seite mit VoiceOver im Safari anhört, weiß, warum das ein No-Go ist.
Nachtrag 08.11.2011
Firefox in der Version 8 versteht jetzt -moz-hyphens:auto, auch ohne die Vergewaltigung mittels lang="en". Und ältere Versione ignorieren diese Auszeichnung einfach. Weil das niemandem schadet, habe ich es sofort in meine Seiten eingebaut.
Nachtrag 19.11.2011
Und auch Safari/Mac in der aktuellen Version 5.1.1 kann jetzt Hyphenation. Ohne Die oben genannten VoiceOver-Probleme.
Kuriositäten im Firefox
Nobody is perfect. “Merkwürdige” Trennungen im Firefox, die mir so untergekommen sind.
- iPho-ne
- VoiceO-ver
- vi-elleicht
- App-le
- Seitende-sign
- JavaS-cript
Blog / Artikel empfehlen:
