Cómo leer una línea de ZPL
Una etiqueta empieza en ^XA y termina en ^XZ. En el medio, cada instrucción empieza con un acento circunflejo y dos letras, seguidas de argumentos separados por coma en un orden fijo — no existe el nombre de argumento, así que la posición es todo, y una coma sin nada antes de la siguiente significa “deja el valor por defecto”.
Toma ^FO50,120^A0N,40,40^FDACME SA^FS. Eso es: pon el próximo campo a 50 puntos de la izquierda y 120 de arriba; usa la fuente 0, sin rotación, de 40 puntos de alto y 40 de ancho; el contenido es “ACME SA”; fin del campo. Cuatro comandos, una línea de la etiqueta.
Dos detalles causan casi toda la confusión. Todo se mide en puntos de la impresora y no en milímetros, así que el mismo archivo tiene un tamaño físico distinto a 203 y a 300 dpi — por eso importa tanto el selector de densidad. Y el ^FS no es un adorno opcional: sin él, el comando siguiente se lee como más datos del campo anterior, que es por qué una etiqueta rota casi siempre sale como una única línea de texto pegada.
Por qué cada comando trae un ejemplo
Porque la referencia de un renderizador debería poder verificarse contra ese renderizador. Cada ejemplo de abajo pasa por el motor de este sitio dentro de una prueba, y el resultado se compara con la columna de soporte — así que un comando descrito como renderizado que el motor ignorara en silencio rompería nuestra compilación en lugar de quemarte la tarde.
Es también por eso que los comandos que no implementamos están listados en vez de omitidos. Una tabla de soporte que solo muestra los aciertos no dice nada sobre la etiqueta que tienes adelante; saber que el ^BZ va a avisar y saltear es justamente la mitad útil.