09Schriften
Schrift 0 ≈ Swiss 721 Bold Condensed über das eingebettete Roboto Condensed Bold (OFL), kalibriert auf Zebra-Metriken (Versalhöhe 0,735·h, Versaloberkante an ^FO); gemessen innerhalb von 1–3 Punkten der Labelary-Ausgabe. Die Bitmap-Schriften A–H nutzen DejaVu Sans Mono mit Zebra-Vorschub (Zellbreite + Abstand) × Vergrößerung. Eigene TTFs ersetzen sie oder kommen per ^A@ dazu.
Mehr dazu auf zplCloud.com: Guide: Schriften in ZPL · Blog: SVG zu TTF: Logos und Icons als Druckerfont
var renderer = new ZplRenderer();
FontManager fonts = renderer.Store.Fonts;
fonts.RegisterFont("0", File.ReadAllBytes("MyZebraLike.ttf")); // Schrift 0 ersetzen
fonts.RegisterFont("E:ARIAL.TTF", File.ReadAllBytes("arial.ttf")); // für ^A@N,..,E:ARIAL.TTF
fonts.RegisterFolder("fonts/"); // 0.ttf, A.ttf, ... PLATE.TTF
fonts.LinkFont("E:ARIAL.TTF", "E:NOTOCJK.TTF"); // wie ^FL: Fallback-Glyphen
renderer.ProcessCommands("^XA^CI28^FO50,50^A@N,40,40,E:ARIAL.TTF^FDÄrger? Nö!^FS^XZ");
Download per ZPL
~DYE:MONO,A,T,size,,hex oder ~DUE:MONO.TTF,size,hex lädt eine TTF in den Druckerspeicher; ^A@N,40,40,E:MONO.TTF nutzt sie, ^CW vergibt einen Buchstaben-Alias.
Label-Modell
label.AddFont("MONO.TTF", bytes) bettet die Schrift ein: ToZpl() sendet sie per ~DY, JSON speichert sie mit.
Komplexe Schriften, Bidi & Fallback
Text wird mit HarfBuzz geformt: arabische Ligaturen, hebräische und arabische Rechts-nach-links-Darstellung (Bidi), Devanagari- und Thai-Kombinationszeichen. Fehlen Glyphen, wird automatisch eine passende Systemschrift gesucht (CJK, Thai, Hindi …). ^PA schaltet Shaping/Bidi ab, ^FL (bzw. FontManager.LinkFont) verknüpft eine Erweiterungsschrift mit einer Basisschrift.
^XA^FLE:NOTOCJK.TTF,E:ARIAL.TTF,1^XZ ← Glyphen, die ARIAL fehlen, aus NOTOCJK nehmen ^XA^FLE:NOTOCJK.TTF,E:ARIAL.TTF,0^XZ ← Verknüpfung lösen
~DB Bitmap-Fonts
Mit ~DB heruntergeladene Bitmap-Schriften werden glyphengenau gezeichnet und ganzzahlig vergrößert; nutzbar über ^A@…,R:NAME.FNT oder einen ^CW-Alias.
PrintAsGraphic
Für Drucker ohne Speicher für TTFs: PrintAsGraphic = true rendert das Element (auch Barcodes) in der Vorschau-Engine und sendet es als ^GFA. Pixelgleich zur direkten TTF-Darstellung – im Test verifiziert.
var label = new Label(LabelUnit.Dots, 600, 200) { DownloadFonts = false }
.AddFont("MONO.TTF", File.ReadAllBytes("DejaVuSansMono.ttf"))
.Add(new TextItem
{
X = 20, Y = 20, Font = "E:MONO.TTF", Text = "TTF als Grafik", FontSize = 22,
PrintAsGraphic = true, // Text wird als ^GFA gesendet
});
string zpl = label.ToZpl(); // enthält ^GFA, kein ~DY und kein ^A@

