Todo hasta el ^FS es contenido
El ^FD no lleva parámetros: lo que viene después es el dato, hasta que aparece un ^FS. Eso incluye espacios, comas y puntos — nada de eso se lee como argumento.
Esta regla explica el error más común de todo el lenguaje. Si se olvida el ^FS, el comando siguiente no se lee como comando: se vuelve más texto del campo anterior. Tres campos de dirección sin ^FS entre ellos salen como una sola línea larga, con los comandos impresos en el medio.
- ^FD…^FS — el par obligatorio. El ^FD abre el contenido, el ^FS cierra el campo.
- ^FV — la variante cuyo contenido se borra después de imprimir, usada en plantillas.
- ^FH — permite escribir bytes en hexadecimal dentro del ^FD, escapados con guion bajo.
- En un código de barras, el ^FD lleva el payload en lugar del texto visible.
La ñ, los acentos y el ^CI28
El ^FD acepta acentos sin problema, siempre que la impresora sepa cómo interpretar los bytes. Para eso está el ^CI28, puesto justo después del ^XA: dice que los datos llegan en UTF-8.
Sin él, “Dirección” llega como “Dirección” — los dos bytes de la ó leídos como dos caracteres separados. Si el sistema que genera el archivo no puede emitir UTF-8, la salida es el ^FH con los bytes escapados: ^FH^FDCaf_C3_A9 imprime “Café”.
Caracteres que no entran crudos
El acento circunflejo y la virgulilla son los caracteres de control de ZPL, así que un ^FD que contenga uno en medio del texto termina el campo ahí y el resto se vuelve comando. Una dirección con un “~” literal necesita el ^FH, o cambiar el carácter de control con ^CC y ^CT.
Vale saber también que el ^FX de comentario termina en el próximo acento circunflejo — escribir el nombre de un comando dentro de un comentario crea un comando de verdad, que es la misma trampa llegando del otro lado.