zplCloud Blog
SVG zu TTF: Logos und Icons als Druckerfont ausliefern statt als Grafik
^A@N,50,50,E:MYICONS.TTF - eine Glyphen-Referenz je Etikett statt eines 10-KB-^GFA-Blocks.
Was eine Grafik auf jedem einzelnen Etikett kostet
Auf den meisten Etiketten sitzt ein Logo oder ein Satz Piktogramme. Der Standardweg: jedes als Rasterbild exportieren und im ZPL als ^GFA-Block einbetten. Das funktioniert - und kostet gleich dreifach.
Datenmenge. Ein ^GFA ist eine monochrome Bitmap, ein Bit je Punkt, übertragen als Hex. Die Rechnung ist simpel:
Bytes ≈ (Breite_dots × Höhe_dots) / 8 × 2 (÷8 = Bits→Bytes, ×2 = Hex-Kodierung)
Ein bescheidenes Logo mit 200 × 200 Punkten - bei 203 dpi etwa 25 × 25 mm - sind 200 × 200 / 8 = 5.000 Bytes Bitmap, also rund 10.000 Zeichen Hex im Datenstrom. Auf jedem Etikett. Dasselbe Logo bei 300 dpi über dieselbe physische Fläche sind 295 × 295 Punkte ≈ 21.800 Zeichen.
Qualität. Eine Bitmap ist auf die Auflösung festgelegt, für die sie erzeugt wurde. Größer gedruckt oder auf einen 300- oder 600-dpi-Drucker umgezogen, wird sie neu abgetastet - weiche Kanten ausgerechnet an dem Element, das deine Marke darstellt.
Geschwindigkeit. Der Drucker empfängt, dekodiert und rastert die Grafik bei jedem Etikett. Text zeichnet er einfach.
Ein Font ist eine Glyphen-Bibliothek, die der Drucker ohnehin zeichnen kann
Der SVG-→-TTF-Editor baut aus deinen SVG-Icons einen TrueType-Font. Jedes Icon wird zu einer Glyphe auf einem Private-Use-Codepoint (U+E000, U+E001, …) - dem Unicode-Bereich, der genau dafür reserviert ist.
Dieser Font wandert einmal in den Druckerspeicher, z. B. als E:MYICONS.TTF, über den Tab Zebra-Fonts im Designer. Danach referenziert ein Etikett nur noch eine Glyphe:
^XA
^FO50,50^A@N,50,50,E:MYICONS.TTF^FD^FS
^XZ
Auf die Parameterreihenfolge achten: ^A@ erwartet Ausrichtung, Höhe, Breite, dann den Fontpfad. ^A@N,E:MYICONS.TTF - Ausrichtung direkt gefolgt vom Pfad - ist kein gültiges ZPL; der Drucker fällt auf einen Standardfont zurück, und du suchst einen Nachmittag lang, warum aus dem Icon ein Buchstabe wurde.
Ist der Font einmal gewählt, reicht für weitere Felder desselben Etiketts ^A@N,50,50 - der Drucker behält die letzte ^A@-Fontauswahl.
Die Zahlen, mit offengelegten Annahmen
^GFA-Bild | TTF-Druckerfont | |
|---|---|---|
| Annahme | Icon 200 × 200 Punkte, monochrom, hex-kodiert | Font mit 3 Glyphen, ~3 KB |
| Je Etikett | ≈ 10.000 B | ≈ 125 B (ein Feld mit einer Glyphe) |
| Übertragen | mit jedem Etikett | einmal, ~3 KB gesamt |
| 10.000 Etiketten | ≈ 100 MB | ≈ 1,25 MB + 3 KB |
| 100.000 Etiketten | ≈ 1 GB | ≈ 12,5 MB + 3 KB |
Das ist eine 80-fache Reduktion der übertragenen Bytes für dieses Element. Auf einer seriellen Strecke mit 115.200 Baud oder in einem gut ausgelasteten Weblink-Tunnel entscheidet dieser Unterschied darüber, ob die Warteschlange abgebaut wird oder wächst.
Skalieren ist gratis: Dieselbe Glyphe mit ^A@N,20,20 oder ^A@N,120,120 rendert die Font-Engine des Druckers aus Vektorkonturen - scharf bei 203, 300 und 600 dpi.
Flash ist endlich - vorher nachsehen
Druckerspeicher ist knapp, besonders bei älteren Desktop-Modellen. Ein GK420 hat insgesamt ein paar Megabyte. Vor dem Hochladen also die Größe kennen:
- Ein Icon-Font mit einer Handvoll Glyphen: einstellige KB. Nie ein Problem.
- Ein vollständiger Unicode-Textfont ist eine andere Kategorie - der ZPLCloud-Unicode-Font ist 11 MB, die Slim-Variante 7 MB. Beide passen nicht auf einen GK420 und sind für Drucker mit echtem Flash gedacht.
- Freien Speicher vor einem Flotten-Rollout abfragen:
! U1 getvar "memory.flash_free".
Ablauf
1. SVGs in den SVG-→-TTF-Editor ziehen. Jedes wird zu einer Glyphe auf einem PUA-Codepoint; der Editor zeigt die Zuordnung (U+E000 aufwärts).
2. Font bauen und auf die gewünschten Drucker hochladen - eine Aktion, ganze Flotte.
3. Im Designer die Icon-Bibliothek öffnen und das Icon auf die Zeichenfläche ziehen. Es landet als Glyphen-Element, bereits an Codepoint und Fontpfad gebunden. Keine handgetippten Hex-Codes, keine ^GF-Blöcke zu pflegen.
Ein neues Icon oder ein geändertes Logo sind dieselben drei Schritte: Font neu bauen, ausrollen, fertig. Die Label-Designs ändern sich nicht - sie referenzieren einen Codepoint, und dieser Codepoint zeichnet jetzt die neue Grafik.
Wann eine Grafik trotzdem richtig ist
Fonts sind monochrome Konturen. ^GFA bleibt richtig für:
- Fotos, Verläufe oder alles mit Graustufen (die ein Thermodrucker ohnehin dithert),
- Einmalgrafiken, die je Etikett wechseln - eine Karte je Sendung, ein Unterschriftsbild,
- Artwork, das dich als Bitmap erreicht und sich nicht sauber vektorisieren lässt.
Für Logos, Gefahrensymbole, Transportpiktogramme und wiederkehrende Icons - den weit überwiegenden Teil dessen, was tatsächlich auf einem Etikett steht - ist der Font-Weg kleiner, schärfer und schneller.
SVGs, die sauber konvertieren
Die Konvertierung macht aus Pfaden Glyphenkonturen. Zwei Regeln sparen Zeit:
- Konturen in Flächen umwandeln, bevor du das SVG exportierst. Eine Glyphe ist eine gefüllte Form; eine 1-px-Linie hat für eine Font-Engine keine Dicke.
- Text in Pfade umwandeln. Textelemente im SVG verlassen sich auf einen Font, den der Konverter nicht haben muss.