Pixelfonts   sind besser als  Vektorfonts

Übersicht

Einen Computer-Zeichensatz (Font) kann man auf 2 Arten definieren:

          - als Pixel-Font (Bitmap-Font), bei dem jedes Zeichen durch ein Punktmuster definiert ist
          - als Vektor-Font, bei dem jedes Zeichen durch wenige Punkte definiert ist,
             durch die eine sog. Bezier-Kurve gelegt wird

Wir meinen, daß die Ablösung der Pixelfonts durch Vektorfonts ein Fehler war. Denn Vektorfonts sind bei kleinen Schriftgrößen auf dem Bildschirm zu ungenau, das Ergebnis ist fehlerhaft. Vor allem ist es viel schwieriger, einen Vektorfont zu erstellen, und damit für die meisten Anwender unmöglich. Es ist auch bei Pixelfonts möglich, Zeichen zu vergrößern oder zu verkleinern und dabei Kurven zu glätten, mit Hilfsmitteln, die näher beschrieben werden.





Die angeblichen Vorteile eines Vektorfonts

Bei Pixelfonts wurde für viele Schriftgrößen ein eigener Zeichensatz verwendet. Denn wenn der Computer Zeichen groß darstellen wollte, aber nur einen Pixelfont mit kleinen Zeichen hatte, mußte er die Schriftzeichen automatisch vergrößern. Dabei ergaben sich oft sogenannte Treppeneffekte. Z.B. waren nach Vergrößerung auf das Doppelte schräge oder gekrümmte Kanten plötzlich gezackt, weil der Computer aus einem Pixel schematisch einen Block von 2 x 2 Pixel derselben Farbe erzeugt hatte.

Vektorfonts sollten dieses Problem der vielfachen Zeichensätze beheben. Jedes Zeichen sollte nur einmal definiert und gespeichert werden, um Speicherplatz zu sparen.


Dabei hatte man aber übersehen:

- Das Speicherplatzproblem erledigte sich mit der Zeit von selbst. Denn Computer erhielten immer mehr Speicher, was schon damals absehbar war. Heute geht man mit Speicherplatz verschwenderisch um. Schon ein kleines WORD-Dokument, ein winziges VISUAL-BASIC-Programm oder eine kleine Website mit Farbfoto benötigen eine früher unvorstellbare Menge Speicher. Außerdem lassen sich Zeichen genau wie Bilder z.B. mit dem GIF-Format auf wenig Speicherplatz reduzieren.
Auch werden viele von Anwendern erstellte Fonts (z.B. für eine Website) nur in 1 Größe benötigt.





Die Nachteile eines Vektorfonts

- Für einen Mensche ist es einfacher und schneller, einen Pixel-Font in 10 Zeichengrößen zu definieren, als einen Vektorfont in nur einer Zeichengröße. Wer es noch nie probiert hat, kann sich nicht recht vorstellen, wie vertrackt es ist, gekrümmte Linien exakt nachbilden zu müssen mit wenigen Punkten, durch die dann der Computer eigenwillig eine Linie zieht. (Zur objektiven Beurteilung dieser Frage empfehlen wir Experimente mit Schülern.)
Da menschliche Arbeitszeit weit teurer ist als Speicherplatz, ist das ein großer Nachteil.


- Für einen Computer ist es umständlicher, ein Zeichen als Kurve durch einige Punkte zu berechnen (beim Vektorfont), als einfach ein Bitmuster wiederzugeben oder zu vergrößern (beim Pixelfont).

Aus diesen 2 Gründen gibt es kaum ein Programm (Fonteditor) zur Erstellung von Vektorfonts auf dem Markt, während man früher etliche Programme zur Definition eines Pixel-Fonts aus dem Internet herunterladen konnte, die z.T von Schülern geschrieben waren.


- Zur Darstellung von Zeichen bis ca. 8 Pixel Höhe (auf Bildschirm; Drucker haben heute einen feineren Punktraster) taugt ein Vektorfont überhaupt nicht. Es läßt sich bei der Erstellung eines Zeichens (in einem Raster von Z.B. 1000 Punkten Höhe) kaum vorhersagen oder steuern, wie das Zeichen bei 8 Pixel Höhe exakt aussieht. Bei so kleiner Darstellung spielt jedes Pixel eine Rolle.
Manche von Firmen erstellte Vektorfonts haben deshalb für jede kleine Zeichengröße Zusatzinformationen bzw. einen eigenen Bitmapfont integriert! Diese zweigleisige Technik ist aber für Privatanwender bisher nicht zugänglich.





Besser:   Pixelfonts mit verbesserter Skalierung

Ähnlich wie ein Computer ein Zeichen eines Vektorfonts skalieren (vergrößern / verkleinern) und in Pixeldarstellung umrechnen kann, könnte er auch ein Zeichen eines Pixelfonts (oberhalb einer gewissen Größe, s. vor. Abschnitt) skalieren und die Kanten glätten. Das könnte erfolgen:

          - beim Entwurf, das skalierte Zeichen wird (ggf. manuell nachbearbeitet und) abgespeichert
          - oder erst unmittelbar vor der Darstellung

Letzteres spart Zeit beim Erstellen sowie Speicherplatz, setzt aber eine ausgereifte Technik der Skalierung und Glättung voraus. Die manuelle Nachbearbeitung dagegen ermöglicht es, ein Zeichen exakt zu definieren. Automatische Glättung könnte in beiden Fällen nach folgenden Regeln erfolgen:

          - eine rechtwinklige Ecke, von der (vor Skalierung) 1 waagr. und 1 senkrechte
            Linie mit mindestens 2 Pixel Länge ausgeht, ist beabsichtigt und beizubehalten
          - alle anderen Kanten werden nach Vergrößern geglättet
            (durch Elimieren, Setzen oder Schattieren von Pixeln)

Als Hilfsmittel für den Skalierungsalgorithmus ist die Markierung von beizubehaltenden rechtwinkligen Ecken denkbar (obwohl obige Regel eigentlich ausreicht), wie folgendes Bild zeigt:




Die blauen Pixel markieren hier bei Skalierung beizubehaltende rechtwinklige Ecken. Ein blaues Pixel gilt entweder nur für die innere oder die äußere Umrißlinie ("D" hat beide, "K" nur eine äußere).
Die Hinweise für den Skalierungsalgorithmus lassen sich noch vermehren, wie folgendes Bild zeigt:




Im obigen Bild gilt:   Zwischen grünen Punkten, die auf der (entweder äußeren oder inneren) Umrißlinie benachbart sind (beliebig viele schwarze Punkte dürfen dazwischen liegen), ist eine gerade Linie zu ziehen. Liegt aber zwischen 2 grünen Punkten mindestens 1 roter Punkt auf derselben (äußeren oder inneren) Umrißlinie, darf die Kontur bei Skalierung gerundet werden.

Das "D" hat also eine beidseitig gerade senkrechte linke Kante und zwei oben und unten gerade waagrechte Teilbalken. Der rechte Teil dagegen darf gerundet werden, insbesondere sind rote Ecken nicht verpflichtend.
Das linke "K" hat nach dieser Vorschrift nur gerade Umrißlinien und 4 rechtwinklige Ecken.
Das mittlere "K" hat 4 gerade Schenkel und 4 rechtwinklige Ecken. Aber die Einbuchtungen (am Zusammentreffen der Schenkel) dürfen gerundet werden.
Das rechte "K" hat auch 4 gerade Schenkel, die aber an den Enden und den Einbuchtungen gerundet werden dürfen.




Obige Darstellungsmöglichkeit ist noch einfacher: Schwarze Punkte sind beizubehalten, graue Konturen dürfen geglättet werden, und ggf. gerundet, wenn die Umrißlinie dies suggeriert. Die Verbindung zwischen einem schwarzen und einem grauen Punkt darf geglättet werden. Demnach sind (im Bild oben) die Enden des linken "K" rechteckig darzustellen, die des rechten "K" gerundet.

Es ist meist sinnvoller, einen Zeichensatz mit wesentlich mehr Pixeln zu definieren, als in obigen Beispielen gezeigt, und ggf. zu verkleinern, als von einer kleinen Zeichendarstellung ausgehend die Zeichen zu vergrößern. Aber wie oben schon erwähnt, sollte für kleine Größen jeder Zeichensatz extra entworfen und abgespeichert werden.


Im Fonteditor sollten alle Punkte eines Zeichens per Tastendruck schwarz dargestellt werden können (und per Tastendruck wieder umgekehrt), damit der optische Eindruck eines Zeichens möglichst real ist.
Als weiteres Hilfsmittel für den Pixel-Zeichenentwurf ist neben den Möglichkeiten eines Pixel-Grafikprogramms wie ausschneiden, drehen, kopieren, strecken, Linie ziehen insbesondere folgende Möglichkeit wünschenswert: Ziehe eine gerade oder gekrümmte Linie zwischen 2 anzugebenden Punkten mit genau definierbarer Dicke (in Pixeln, quer zur Linie gemessen), und zwar auf der einen oder anderen Seite oder beidseitig der Verbindungslinie. Der Computer müßte hierbei ggf. automatisch schattieren.





Die beste Gesamtlösung

Insgesamt scheint heutzutage folgendes die beste Lösung zu sein:

- Für die Bildschirmdarstellung werden alle gewünschten Schriftgrößen einzeln als Pixelfont definiert und abgespeichert (Zeichenhöhe bis max. ca. 24 Pixel). Die einzelnen Fonts können mit obigen Hilfsmitteln aus einem Ausgangs-Font erzeugt und manuell nachbearbeitet werden. Sie sollten auch graue Pixel zur Kantenglättung enthalten, wenn das Betriebssystem oder Textprogramm das zuläßt. Diese Lösung bietet die beste Darstellungsqualität auf dem Bildschirm.

- Für den Druck wird nur 1 Zeichensatz in großer Auflösung (z.B. 100 Pixel Zeichenhöhe) erzeugt und abgespeichert. Der Font könnte mit obigen Hilfsmitteln aus einem Bildschirm-Font erzeugt und manuell nachbearbeitet werden. Aus jenem Font wird dann dynamisch je nach Druckgröße und Auflösung des Druckers das entsprechende Pixelmuster berechnet. Dieses ist wegen des detaillierten Grundmusters ausreichend genau.





Undemokratisches Fazit

Mit der Einführung der Vektorfonts ist die Erstellung eines Fonts oder auch nur das Einbringen einiger Sonderzeichen in einen bestehenden Zeichensatz für den Durchschnittsanwender zu kompliziert und deshalb fast unmöglich geworden. (Pixelfonts werden z.B. von neueren WORD-Versionen nicht mehr unterstützt.)
Hier ist es ähnlich wie bei den Programmiersprachen: Während in den 90er Jahren durch einfache Programmiersprachen wie Basic und Logo - z.T. mit dem Betriebssystem mitgeliefert - das Erstellen eigener Programme für jeden möglich war, ist seit der Einführung komplizierter und aufwendiger Programmiersprachen die Zahl der Hobby- und Selbstprogrammierer stark zurückgegangen: Die Menschen sind abhängiger geworden. Inwiefern das beabsichtigt war, ist schwer zu beurteilen. Zumindest für die Eliminierung der Pixelfonts und der einfachen Programmiersprachen gab es keinen sachlichen Grund, eher obige Gründe, sie beizubehalten.



Stand: 3. 12. 2012                           Autor:  Leonhard Heinzmann                                       Homepage