blog · git · desktop · images · contact


Fonts, die Dritte – Helvetica „nur manchmal“

2010-12-11

Ich habe es lange genug versucht. Aber in GUIs (also Menüs, Dialogboxen, ...) möchte ich einfach keine Schriften mit Antialiasing haben, sondern ein scharfes und "knackiges" Schriftbild. Punkt. Die einzige Schriftart, die mir das bietet, ist Helvetica. Das Problem daran ist, dass Helvetica nur in sehr wenigen Größen auch wirklich gut aussieht -- ansonsten ist sie eine Katastrophe. Deswegen wird sie gemeinhin über Fontconfig durch eine andere Schriftart ersetzt.

Unterlässt man diese Ersetzung jedoch, kommt man wieder an die richtige Helvetica-Schrift. Die GUI ist dann schön. Aber es sehen so gut wie alle Webseiten furchtbar aus, weil sie Helvetica in ungünstigen Größen nutzen.

Ich habe nun einen Weg gefunden, Helvetica prinzipiell erst einmal durch eine "schönere" Schrift zu ersetzen. Für Sonderfälle wird man aber auch noch die originale Helvetica auswählen können.

Ausgangspunkt ist die "~/.fonts.conf". Da ich bei mir die systemweite Ersetzung deaktiviert habe (der Link in "/etc/fonts/conf.d" zu "../conf.avail/29-replace-bitmap-fonts.conf" ist zu entfernen -- keine Angst, dieser Link ist nicht Teil eines Pakets, sondern wird nur bei der Installation von Fontconfig angelegt), findet sich diese dort auch wieder:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <!-- Helvetica durch DejaVu Sans ersetzen. -->
    <match target="pattern" name="family">
        <test name="family" qual="any">
            <string>Helvetica</string>
        </test>
        <edit mode="assign" name="family" binding="strong">
            <string>DejaVu Sans</string>
        </edit>
    </match>

    <!-- "Virtuelle" HelveticaBitmap anlegen. -->
    <alias>
        <family>HelveticaBitmap</family>
        <prefer><family>Helvetica</family></prefer>
    </alias>

    <!-- ... -->

</fontconfig>

– Nachtrag 2012-09-06: Mittlerweile ist oben angesprochene Datei doch Teil des Paketes. Es ist aber auch nicht nötig, sie anzufassen, da die User-Einstellungen die globalen Settings überschreiben. Mittlerweile ist auch "~/.fonts.conf" deprecated und die eigene Konfiguration sollte in "$XDG_CONFIG_HOME/fontconfig/fonts.conf" stattfinden ("$XDG_CONFIG_HOME" zeigt normalerweise auf "~/.config").

Helvetica wird also im Normalfall durch DejaVu Sans ersetzt. Der Alias "HelveticaBitmap" zeigt jedoch noch auf die originale Helvetica. Um ehrlich zu sein, ich bin mir nicht ganz sicher, ob dieser Weg wirklich "by design" so funktioniert oder nur zufällig. Wenn ich Pech habe, ist das ein Bug, der in der nächsten Version gefixt wird. ;)

Das Ergebnis sieht jedenfalls so aus:

Screenshot

Links sieht man den alten Zustand: Die originale Helvetica wird für GUI und Webseite benutzt, was teilweise gut aussieht, im Großen und Ganzen aber hässlich ist. Rechts hingegen wird "HelveticaBitmap" für die GUI benutzt -- innerhalb der Webseite sieht man dann schön geglättet DejaVu Sans.

Da es "HelveticaBitmap" jedoch nicht als echte Schriftart gibt, kann man sie nirgends auswählen. Mir macht das jedoch nichts, da ich ohnehin kein Tool verwende, um das Gtk-Theme einzustellen. Meine "~/.gtkrc-2.0" sieht einfach so aus:

gtk-icon-theme-name = "Tango"
gtk-font-name = "HelveticaBitmap 9"

Comments?