Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.
Set ^PW and ^LL explicitly in every format.
^F0 is not a ZPL command. ^FO is, and differs only by a character that looks the same. The printer discards an unrecognised command together with its parameters, so this field loses its settings and takes whatever the previous one left.
Change ^F0 to ^FO.
^XA^FO50,50^A0N,30,30^FDtop^FS^F050,120^A0N,30,30^FDbottom^FS^XZ
A command name that is not documented in the ZPL II Programming Guide, but differs from one that is by a single lookalike character (O/0, I/1/L, S/5, B/8, Z/2).
Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.
Set ^PW and ^LL explicitly in every format.
^F0 is not a ZPL command. ^FO is, and differs only by a character that looks the same. The printer discards an unrecognised command together with its parameters, so this field loses its settings and takes whatever the previous one left.
Change ^F0 to ^FO.
Zebra ZPL II Programming Guide Volume One, document 45541LB-R3, documents 128 caret and 47 tilde commands; ^FO is among them and ^F0 is not. An undocumented command is discarded with its parameters rather than reported, so the label prints and looks plausible. Found in a vendor's published wristband template, where five fields used ^FO and the sixth used ^F0.
Zebra ZPL II Programming Guide Volume One, document 45541LB-R3, documents 128 caret and 47 tilde commands; ^FO is among them and ^F0 is not. An undocumented command is discarded with its parameters rather than reported, so the label prints and looks plausible. Found in a vendor's published wristband template, where five fields used ^FO and the sixth used ^F0.