# Zebra Programming Language

De Zebra-programmeertaal (ZPL; Zebra Programming Language) is een printerbeschrijvingstaal van Zebra Technologies. Ze wordt gebruikt voor labelprinters. De oorspronkelijke ZPL werd verder ontwikkeld tot ZPL II, hoewel er geen 100% compatibiliteit is. ZPL II wordt nu geëmuleerd door veel labelprinters van verschillende fabrikanten. Hier moet bijvoorbeeld de Monarch Language Interpreter (MLI) van Avery Dennison of de tolk in de printers van cab Produkttechnik GmbH worden genoemd.
Zebra Technologies heeft de Zebra Basic Interpreter (ZBI) geïntroduceerd als een verbetering op ZPL II, de taal die gebruikt wordt om de printers aan te sturen. ZBI is een ANSI-Basic-georiënteerde tolk die in de eerste plaats bedoeld is om het herprogrammeren van software te voorkomen bij het vervangen van een printer. Dit is vooral handig wanneer de vorige printer van een concurrerend merk was. Met ZBI kan de Zebra-printer de printgegevens in een "vreemd" dataformaat ontvangen en vervolgens omzetten naar ZPL II. Dit maakt het gemakkelijker om de printer te vervangen zonder ingrijpende wijzigingen aan de software.

## Commando's

De commando's van de taal beginnen altijd met een dakje (^). ZPL II begrijpt meer dan 170 commando's. Alle opmaak moet beginnen met de opdracht ^XA en eindigen met ^XZ. De lettergrootte wordt bijvoorbeeld aan de printer gerapporteerd met ^ADN,x,x, waarbij x een geheel getal is; ^ADN,18,10 is de kleinste toegestane maat en ^ADN,180,100 is de grootste.
Aangezien ZPL de taal is voor het aansturen van labelprinters, zijn er zowel opdrachten voor de printer als opdrachten voor het huidige label. Commando's voor de printer worden besturingscommando's genoemd en beginnen met het voorvoegsel ~. Opdrachten voor labelindeling beginnen met G voorafgegaan door ^. Deze voorvoegsels kunnen echter ook worden geconfigureerd met behulp van ~CT (voor printeropdrachten) en ^CC voor opmaakopdrachten.
Een commando heeft de volgende structuur: Prefix commandocode [ parameters,... ]
Het voorvoegsel of prefix is een ^ of ~, de opcode is een of twee letters uit het alfabet (A-Z) en de argumenten (indien nodig) volgen direct, gescheiden door komma's. Dit wordt duidelijk met behulp van het ^A-commando (zie volgende paragraaf). Het argument is meestal een teken of een geheel getal. Voor ja/nee-opties, i. d.w.z. R., Y voor ja of inschakelen, N voor nee of uitschakelen. Optionele parameters worden simpelweg weggelaten, maar er moet een komma worden opgegeven.
Opmerkingen die door de printer (of ZPL-processor) worden verzonden, worden genegeerd en beginnen met ^FX en eindigen voor het volgende opdrachtvoorvoegsel.

### Lettertype

Er zijn verschillende opdrachten om een lettertype te selecteren. De eenvoudigste is ^A:
* ^A fo, h, w creëert het lettertype f met oriëntatie o en letterafmetingen w breed bij h hoog. De parameters o, h en w zijn optioneel. Het lettertype wordt duidelijk aangegeven door een letter of nummer en de beschikbare lettertypen zijn afhankelijk van het printermodel. Typische lettertypen zijn: A (klein), D (klein), E (OCR-B), H (OCR-A) en P tot V (van klein tot groot). Er is ook het lettertype 0 (nul), dat vrij schaalbaar is. De oriëntatie heeft vier mogelijke waarden: N = normaal (niet gedraaid), R = 90° rechtsom gedraaid, I = 180° gedraaid, B = 270° rechtsom gedraaid. Standaard is N.
* Vergelijkbaar met ^AfN ^CF f, h, w h, w lettertype f met lettergroottes, maar dit lettertype wordt gekozen als de toekomstige standaard.
Ondersteuning voor ZPL-compatibele printers, d.w.z. R verschillende tekensets. Om de huidige tekencodering in te stellen, kan het commando ^CI x worden gebruikt. De parameter x specificeert de numerieke code voor de opgegeven codering, bijv. B. 0 tot 12 zijn single-byte-coderingen voor verschillende statussen, 13 is codepagina 850, 27 is codepagina 1252, 15 is Shift-JIS, 28 is Unicode UTF- 8, enz. (Ondersteuning kan afhangen van firmwareversie en codelijsten/bestanden.)