toscho.design

Text-rendering: illegibility

Wenn zwischen Absicht und Ergebnis fremder Code steht, dann braucht der geübte Binärschubser seine wichtigste Kompetenz: Fluchen. So auch ich, als ich gestern von Christoph Schnieder dieses kleine Horrorstück zugesandt bekam:

palm-pre-broken

Tatort war ein Palm Pre WebOS, Tatwerkzeug der eingebaute Browser auf WebKit-Basis.

Um das überhaupt nachzuvollziehen, habe ich den MobiOne Emulator für Palm Pre installiert. Das ging verdächtig leicht, und das Ergebnis half mir überhaupt nicht. Es war nämlich in Ordnung:

mobi-one-emulator

Dieser Emulator ist im Wesentlichen ein zurechtgestutztes Eclipse; seine Abhängigkeit vom Gastsystem erkennt man schon daran, daß er dessen Schriften benutzt. Unbrauchbar.

Dann habe ich das Palm webOS SDK installiert, das in einer virtuellen Maschine läuft – und das Problem ganz genau wiedergibt. Das scheint also ein recht realistisch arbeitendes Werkzeug zu sein. Etwas umständlich finde ich nur das englische Tastaturlayout, das ich nicht umstellen konnte.

Nach allerlei Tests habe ich endlich die Ursache gefunden: Ich hatte im Stylesheet eine Deklaration stehen, von der ich annahm, sie werde nur von Gecko interpretiert.

p,
address,
li
    {
        text-rendering:optimizeLegibility;
    }

Diese Eigenschaft stammt aus SVG, wie man leicht an der dämlichen Binnenmajuskel erkennt. Sie sollte Firefox dazu anregen, auch bei kleineren Schriftgraden als 20px das Kerning zu respektieren.
Was genau der Palm Browser hier versucht, vermag ich nicht zu sagen. Vielleicht hängt es mit der Schriftgröße zusammen, denn Überschriften, die mindestens 20px groß sind, werden noch gezeigt.

Ich habe die ganze Regel jetzt weggeworfen und einen Bugreport geschrieben.

Sicher ließe sich das auch hinter einem proprietären Selektor für Mozilla verstecken, aber davon will ich eigentlich weg. Und wenn ich damit leben kann, daß Mozilla-Nutzer noch keine abgerundeten Ecken sehen, dann darf ich genauso gut unterstellen, daß sie sich an schlampiges Kerning gewöhnt haben. Also nehmt es mir nicht übel, ja?

Ach ja, das aktuelle Ergebnis:

palm-web-os-sdk repariert

Da der Browser jetzt nur die Systemschriften des Palm OS verwendet, setzt er keine Kursivschnitte für serifenlose Schriften mehr um, und eine Monospace-Schrift findet oder nutzt er auch nicht. Das ist nicht schlimm, aber man kann es unter »Aha. Mist!« ablegen.

3 Kommentare

  1. Christoph am 26.04.2010 · 07:51

    Dass die Typographie im Web immer noch in den Kinderschuhen steckt, sieht man hier wieder deutlich. Auch wenn der aktuelle Artikel in der c't uns vom Gegenteil überzeugen will, so ist es doch noch ein langer Weg, vor allem solange man die Möglichkeiten von CSS 3 noch nicht ausschöpfen kann. Es gibt schon einige Schräubchen an denen man drehen kann, leider nur wenig das Browserübergreifend funktioniert.

    Die Browser sollten fehlerhafte Angaben oder welche die sie nicht verstehen ignorieren, wieso dieser Webkit nun meint sie falsch interpretieren zu müssen ist mir ein Rätsel. Trotz gleicher Hauptversion zeigen andere Browser die auf Webkit 4 basieren dieses Verhalten nicht.

    Für Chromium gibt es ein paar Bugeinträge zum „text-rendering“, dass die Schrift ganz verschwindet scheint aber einzigartig zu sein.

  2. Ingo Chao am 26.04.2010 · 09:53

    webkit nightlies unterstützen text-rendering:optimizeLegibility;
    https://bugs.webkit.org/show_bug.cgi?id=6136

  3. Marvin am 03.12.2010 · 16:33

    @ Ingo Ich habe es versucht aber es hat nicht funktioniert...Wo liegt das problem? Danke.