Tudo até o ^FS é conteúdo
O ^FD não tem parâmetro: o que vem depois dele é o dado, até encontrar um ^FS. Isso inclui espaços, vírgulas e pontos — nada ali é interpretado como argumento.
É essa regra que explica o erro mais comum de toda a linguagem. Se o ^FS for esquecido, o próximo comando não é lido como comando: vira mais texto do campo anterior. Três campos de endereço sem ^FS entre eles saem como uma linha única e comprida, com os comandos impressos no meio.
- ^FD…^FS — o par obrigatório. O ^FD abre o conteúdo, o ^FS fecha o campo.
- ^FV — a variante que apaga o conteúdo depois de imprimir, usada em modelos.
- ^FH — permite escrever bytes em hexadecimal dentro do ^FD, escapados com underline.
- Num código de barras, o ^FD carrega o payload em vez do texto visível.
Acento, cedilha e o ^CI28
O ^FD aceita acento sem problema, desde que a impressora saiba como interpretar os bytes. É para isso que serve o ^CI28, colocado logo depois do ^XA: ele diz que os dados vêm em UTF-8.
Sem ele, “Endereço” chega como “Endereço” — os dois bytes do ç lidos como dois caracteres separados. Se o sistema que gera o arquivo não consegue emitir UTF-8, a saída é o ^FH com os bytes escapados: ^FH^FDCaf_C3_A9 imprime “Café”.
Caracteres que não podem entrar direto
O acento circunflexo e o til são os caracteres de controle do ZPL, então um ^FD que contenha um deles no meio do texto encerra o campo ali e o resto vira comando. Um endereço com “~” literal precisa do ^FH, ou de trocar o caractere de controle com ^CC e ^CT.
Vale saber também que o ^FX de comentário termina no próximo acento circunflexo — escrever o nome de um comando dentro de um comentário cria um comando de verdade, que é uma armadilha parecida vindo do outro lado.