zplCloud Blog

SVG vers TTF : des icônes comme polices d'imprimante plutôt que des graphiques lourds

^A@N,50,50,E:MYICONS.TTF - une référence de glyphe par étiquette au lieu d'un bloc ^GFA de 10 Ko.

5 min de lecture zplCloud Team

Ce qu'un graphique coûte sur chaque étiquette

Icônes SVG compilées en police TrueType sur une imprimante Zebra au lieu d'une image ^GFA par étiquette

La plupart des étiquettes portent un logo ou un ensemble de pictogrammes. Par défaut, on exporte chacun comme image matricielle et on l'intègre dans le ZPL comme bloc ^GFA. Ça fonctionne, et c'est cher de trois façons à la fois.

Payload. Un ^GFA est un bitmap monochrome, un bit par point, transmis en hexadécimal. Le calcul est simple :

octets ≈ (largeur_dots × hauteur_dots) / 8 × 2      (÷8 = bits→octets, ×2 = encodage hex)

Un logo modeste de 200 × 200 dots - environ 25 × 25 mm à 203 dpi - fait 200 × 200 / 8 = 5 000 octets de bitmap, soit environ 10 000 caractères d'hex dans le flux de données. Sur chaque étiquette. Le même logo à 300 dpi couvrant la même zone physique fait 295 × 295 dots ≈ 21 800 caractères.

Qualité. Un bitmap est figé à la résolution pour laquelle il a été généré. Imprimez-le plus grand, ou déplacez le design vers une imprimante 300 ou 600 dpi, et il est rééchantillonné - des bords flous précisément sur l'élément qui représente votre marque.

Vitesse. L'imprimante reçoit, décode et pixellise le graphique sur chaque étiquette. Le texte, elle le dessine.

Une police est une bibliothèque de glyphes que l'imprimante sait déjà dessiner

L'éditeur SVG → TTF prend vos icônes SVG et construit une seule police TrueType. Chaque icône devient un glyphe sur un point de code à usage privé (U+E000, U+E001, …) - la plage Unicode réservée exactement à cela.

Cette police est téléversée dans la flash de l'imprimante une fois, p. ex. comme E:MYICONS.TTF, depuis l'onglet Zebra Fonts du designer. Ensuite, une étiquette référence un glyphe :

^XA
^FO50,50^A@N,50,50,E:MYICONS.TTF^FD^FS
^XZ

Notez l'ordre des paramètres : ^A@ prend orientation, hauteur, largeur, puis le chemin de la police. ^A@N,E:MYICONS.TTF - orientation suivie directement du chemin - n'est pas du ZPL valide ; l'imprimante retombera sur une police par défaut et vous passerez un après-midi à vous demander pourquoi l'icône est une lettre.

Une fois la police résidente, ^A@N,50,50,E:MYICONS.TTF peut être raccourci en ^A@N,50,50 pour les champs suivants de la même étiquette - l'imprimante garde la dernière sélection de police ^A@.

Les chiffres, avec hypothèses déclarées

Image ^GFAPolice TTF d'imprimante
Hypothèseicône 200 × 200 dots, monochrome, encodée en hexpolice de 3 glyphes, ~3 Ko
Par étiquette≈ 10 000 o≈ 125 o (un champ avec un glyphe)
Téléverséeavec chaque étiquetteune fois, ~3 Ko au total
10 000 étiquettes≈ 100 Mo≈ 1,25 Mo + 3 Ko
100 000 étiquettes≈ 1 Go≈ 12,5 Mo + 3 Ko

C'est une réduction de 80× des octets transmis pour cet élément. Sur une liaison série à 115 200 bauds ou un tunnel Weblink occupé, cette différence est la différence entre une file qui se vide et une file qui grossit.

La mise à l'échelle est gratuite : le même glyphe en ^A@N,20,20 ou ^A@N,120,120 est rendu à partir des contours vectoriels par le moteur de polices de l'imprimante - net à 203, 300 et 600 dpi.

La flash est finie - vérifiez avant de téléverser

La mémoire de l'imprimante n'est pas généreuse, surtout sur les anciens modèles de bureau. Une GK420 a quelques mégaoctets au total. Avant de pousser une police, connaissez sa taille :

  • Une police d'icônes avec une poignée de glyphes : Ko à un chiffre. Jamais un problème.
  • Une police de texte Unicode complète est un autre animal - la police Unicode ZPLCloud fait 11 Mo, sa variante slim 7 Mo. Elles ne tiennent pas sur une GK420 et sont destinées aux imprimantes avec de la vraie flash.
  • Interrogez l'espace libre avec ! U1 getvar "memory.flash_free" avant un déploiement à l'échelle de la flotte.

Flux de travail

1. Déposez les SVG dans l'éditeur SVG → TTF. Chacun devient un glyphe sur un point de code PUA ; l'éditeur montre l'affectation (U+E000 et suivants).

2. Construisez la police et téléversez-la sur les imprimantes de votre choix - une action, toute la flotte.

3. Dans le designer, ouvrez la bibliothèque d'icônes et faites glisser l'icône sur le canevas. Elle atterrit comme élément glyphe déjà lié au bon point de code et au bon chemin de police. Pas de codes hex saisis à la main, pas de blocs ^GF à maintenir.

Une nouvelle icône ou un logo modifié, ce sont les mêmes trois étapes : reconstruisez la police, poussez-la, c'est fait. Les designs d'étiquettes ne changent pas - ils référencent un point de code, et le point de code dessine maintenant le nouvel artwork.

Quand un graphique reste la bonne réponse

Les polices sont des contours monochromes. Utilisez ^GFA pour :

  • les photos, les dégradés ou tout ce qui a des niveaux de gris (qu'une imprimante thermique tramise de toute façon),
  • les graphiques ponctuels qui changent par étiquette - une carte par envoi, une image de signature,
  • l'artwork reçu comme bitmap et que vous ne pouvez pas vectoriser proprement.

Pour les logos, les symboles de danger, les pictogrammes de transport et les icônes d'UI récurrentes - la grande majorité de ce qui est réellement sur une étiquette - la voie police est plus petite, plus nette et plus rapide.

SVG qui se convertit proprement

La conversion transforme les paths en contours de glyphes. Deux règles font gagner du temps :

  • Convertissez les traits en contours avant d'exporter le SVG. Un glyphe est une forme remplie ; un trait de 1 px n'a aucune épaisseur pour un moteur de polices.
  • Aplatissez le texte en paths. Les éléments de texte dans le SVG dépendent d'une police que le convertisseur n'a aucune raison d'avoir.

Liens

Autres articles