Frage

Wie Sie Ihre eigenen Schriftarten tun? Ich habe kein Schwergewicht Algorithmus will (Freetype, Truetype, Adobe, etc.) und würde mit vorgerenderten Bitmap-Fonts in Ordnung sein.

Ich will Anti-Aliasing, und würde proportionale Schriftarten, wenn möglich mag.

Ich habe gehört, ich Gimp verwenden kann das Rendering zu tun (mit etwas Nachbearbeitung?)

Ich entwickle für ein Embedded-Gerät mit einem LCD. Es hat einen 32-Bit-Prozessor, aber ich will nicht, Linux (Overkill - zu viel Code / Datenraum für zu wenig Funktionalität, die ich verwenden würde) laufen

C. C ++, wenn nötig, aber C ist bevorzugt. Algorithmen und Ideen / Konzepte sind in jeder Sprache gut ...

-Adam

War es hilfreich?

Lösung

In meinen alten Demo-Szene Tagen zog ich oft alle Zeichen in der Schriftart in einem großen Bitmap-Bild. In dem Code, der I (X, Y) Koordinaten jedes Zeichens in der Schriftart, sowie die Breite jedes Zeichens gespeichert. Die Höhe war in der Regel konstant über die Schriftart. Wenn der Raum ist nicht ein Problem, Sie alle Zeichen in einem Raster setzen kann, das heißt -. Haben einen konstanten Abstand zwischen der linken oberen Ecke jedes Zeichen

Rendern des Textes wird dann eine Frage des Kopierens einen Buchstaben zu einem Zeitpunkt, zu der Zielposition. Zu dieser Zeit habe ich in der Regel reserviert eine Farbe als „transparent“ Farbe zu sein, aber man konnte auf jeden Fall einen Alpha-Kanal für diese heute verwenden.

Ein einfacher Ansatz, die für kleine s / w-Schriften verwendet werden kann, ist die Zeichen direkt im Code zu definieren:

LetterA  db 01111100b
         db 11000110b
         db 11000110b
         db 11111110b
         db 11000110b
         db 11000110b

Das XPM-Dateiformat ist eigentlich ein Dateiformat mit C-Syntax, die als Hybrid-Lösung zum Speichern der Zeichen verwendet werden kann.

Andere Tipps

Pre-gerenderte Bitmap-Schriften sind wahrscheinlich der Weg zu gehen. Machen Sie Ihre Schrift mit was auch immer, ordnen Sie die Zeichen in einem Raster, und speichern Sie das Bild in einem einfachen unkomprimierten Format wie PPM, BMP oder TGA. Wenn Sie Anti-Aliasing möchten, stellen Sie sicher, dass ein Format zu verwenden, die Transparenz unterstützt (BMP und TGA tun; PPM nicht).

Um proportional Breiten zu unterstützen, werden Sie die Breite der einzelnen Zeichen aus dem Netz zu extrahieren. Es gibt keinen einfachen Weg, dies zu tun, es hängt davon ab, wie Sie das Gitter erzeugen. Sie könnten wahrscheinlich einig kurzes kleines Programm schreiben jedes Zeichen und finden Sie den minimalen Begrenzungsrahmen zu analysieren. Sobald Sie die Breitendaten haben, setzen Sie es in eine Hilfsdatei, die die Koordinaten und die Größen der einzelnen Zeichen enthält.

Schließlich eine Zeichenfolge zu machen, schauen Sie jeden Charakter und sein Rechteck von der Schriftart Bitmap auf Ihren Frame-Buffer bitblit, die Rasterposition durch die Breite des Zeichens voran.

Wir haben erfolgreich das SRGP Paket für Schriftarten. Wir haben den Einsatz fixed-pitch Schriftart, also bin ich nicht sicher, ob es kann proportionale Schriftarten.

Wir verwenden Bitmap-Fonts von anglecode # s Bitmap-Font-Generator erzeugt:

http://www.angelcode.com/products/bmfont/

Das ist sehr brauchbar, da es eine XML-Ausgabe hat, die zu einem beliebigen Datenformat konvertieren werden leicht sein, die Sie benötigen.

Angel Kodex bmfont fügt auch Kerning und bessere Verpackung auf die alte Alternative, war MudFont.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top