Solução de problemas
O dado do ^FD não aparece na etiqueta
Um campo cujo dado nunca imprime normalmente está sem o ^FS, carrega um acento circunflexo no dado, ou está desenhando branco no branco.
O ^FS que falta
O ^FD começa o dado do campo e o ^FS encerra o campo. Sem o ^FS, tudo o que vem depois — inclusive os comandos do campo seguinte — é engolido como dado do campo que nunca fechou.
^XA
^FO50,50^A0N,40,40^FDRemessa 4821
^FO50,120^A0N,40,40^FDProxima linha^FS
^XZO sintoma raramente é um campo faltando. Costuma ser um campo imprimindo uma sequência longa de sem-sentido e todo o resto sumido, porque a impressora está tratando uma dúzia de comandos como texto.
Um ^ ou ~ dentro do dado
O ^ e o ~ começam comandos, e a impressora não para de procurá-los dentro do ^FD. Um preço escrito como R$ 100^Reais encerra o campo no circunflexo e lê ^Re como comando, então o campo imprime truncado e algo inesperado acontece em seguida.
^XA
^FO50,50^A0N,40,40^FDR$ 100^Reais^FS
^XZA solução é o ^FH, que liga escapes hexadecimais no campo: um sublinhado seguido de dois dígitos hexadecimais representa aquele byte, então _5E é um circunflexo literal. A outra opção, se o dado é seu para controlar, é não pôr caracteres de controle nele — que costuma ser a resposta melhor quando o valor vem de um banco de dados.
^XA
^FO50,50^FH^A0N,40,40^FDR$ 100_5EReais^FS
^XZImprimindo branco no branco
O ^FR inverte um campo contra o que está atrás dele, e o ^LR faz o mesmo para um formato inteiro. Um campo invertido sobre uma caixa preta imprime branco e é exatamente o que se quer; o mesmo campo sobre a etiqueta em branco imprime branco no branco e é invisível.
É a suspeita certa quando um campo sumiu depois de alguém acrescentar uma faixa preta ao desenho e ligar o ^LR — todo campo depois da faixa inverteu junto, porque o ^LR vale até o fim do formato, a não ser que seja desligado.
Acentos que somem
Se o que falta são especificamente os caracteres acentuados, isso é questão de codificação, não de campo. O ^CI28 põe a impressora em UTF-8, que é o que a maioria dos sistemas envia, e sem ele um byte fora do ASCII é interpretado contra a página de código em que a impressora estiver.
O sintoma varia conforme o tamanho do erro: às vezes um glifo trocado, às vezes nada. De todo jeito, um ^CI28 perto do topo do formato é a solução.
Conferir o campo no validador
O campo sem fechamento acima, carregado e pronto. O validador aponta o ^FD que nunca recebeu o ^FS, com a posição do campo que abriu.
Conferir o campo no validadorPerguntas frequentes
- Onde exatamente vai o ^FS?
- Imediatamente depois do dado, encerrando o campo: ^FO50,50^A0N,40,40^FDtexto^FS. Todo campo precisa de um, e o linter aponta os que não têm, com linha e coluna do ^FD que os abriu.
- Como imprimo um ^ ou um ~ literal?
- Ligue o ^FH no campo e escreva o caractere como sublinhado mais o código hexadecimal — _5E para ^ e _7E para ~. Não há como imprimir nenhum dos dois num ^FD comum.
- Acentos saem com o glifo errado. É o mesmo problema?
- É um problema aparentado: a impressora está decodificando seus bytes contra a página de código errada. Acrescente ^CI28 para pô-la em UTF-8, que é quase certamente o que o seu dado já é.