ZPL Font Command Cheat Sheet
A printable one-page quick reference for ZPL font commands: ^A, ^CF, ^CW, ^CI, ^FO, ^FD, ^FB, ^FH, font table, drives and DPI conversions.
Choose a font
^Af,o,h,w | Font f, orientation o, height h, width w for the next field |
^A@o,h,w,d:f.x | Use a stored TrueType file |
^CFf,h,w | Default font and size |
^CWa,d:f.x | Alias letter a for a stored font |
^CIn | Character set. 27 = Win-1252, 28 = UTF-8 |
Orientation: N normal, R 90, I 180, B 270. Write ^A0N,50,50 with no comma after A.
Place and print text
^FOx,y,z | Field origin (top-left). z: 0 left, 1 right, 2 auto |
^FTx,y | Field typeset (baseline origin) |
^FDtext^FS | Field data, ends with ^FS |
^FH_ | Allow hex escapes such as _C3_A9 |
^FBw,n,s,j,i | Block: width, max lines, extra spacing, justify L C R J, indent. \& = new line |
^FR | Reverse (XOR) print |
^FPR | Right-to-left text |
^FWo | Default orientation for fields |
Built-in fonts (203 DPI)
| Font | H x W | Note |
|---|---|---|
| A | 9 x 5 | Smallest |
| B | 11 x 7 | Small |
| C, D | 18 x 10 | General |
| E | 28 x 15 | OCR-B style |
| F | 26 x 13 | Medium |
| G | 60 x 40 | Large |
| H | 21 x 13 | OCR-A style |
| 0 | 10 to 32000 | Scalable, default choice |
| GS | 24 x 24 | Symbols |
Bitmap sizes are whole multiples (1x to 10x) of the base cell.
Label setup
^XA ... ^XZ | Start and end of a label |
^PWn | Print width in dots |
^LLn | Label length in dots |
^LHx,y | Label home offset |
^GBw,h,t | Box or line |
^GFA,b,t,r,data | Graphic field, ASCII hex |
Font storage
~DUd:f.x,s,data | Download TrueType font |
^WD*:*.* | Print directory of all drives |
^IDd:f.x | Delete a stored object |
^HH | Return configuration |
| Drive | What | Kept at power-off |
|---|---|---|
| R: | RAM | No |
| E: | Flash | Yes |
| B: | Optional | Yes |
| Z: | Firmware ROM | Yes (read only) |
Dots conversion
| DPI | Dots/mm | 4 in label width |
|---|---|---|
| 203 | 8 | 812 |
| 300 | 11.8 | 1200 |
| 600 | 23.6 | 2400 |
dots = mm x DPI / 25.4. dots = pt x DPI / 72.
Starter label
^XA
^CI28
^PW812
^LL406
^CF0,40
^FO40,40^FDDefault font 0^FS
^FO40,100^A0N,28,28^FDSized text^FS
^FO40,150^FH^A0N,28,28^FDCaf_C3_A9^FS
^XZQuick fixes
- Wrong font? Check
E:name and^WD - Blocks? Check glyphs and
^CI28 - Gone after reboot? You used
R: - Cut off? Check
^PWand x + width
Reviewed against the general ZPL II feature set. Verify against the programming guide for your printer's firmware. More: troubleshooting.
How to get the most from this sheet
A cheat sheet is only useful if it's where you need it. Print this one and pin it next to the printer or your monitor, or save it as a PDF and keep it with your label projects. It's laid out to fit a single page in landscape, and everything outside the sheet itself is hidden when you print, so what comes out of the printer is just the reference.
It covers the commands that control fonts and text: selecting and sizing fonts, positioning, encoding, wrapping, storage and the label setup that surrounds them. It doesn't try to cover all of ZPL, which has hundreds of commands, and most label work uses a small fraction of them. The ten commands every developer should know picks out the ones that matter most.
Reading the entries
Each command is shown with its parameters in the order the printer expects them. Letters stand for values: in ^Af,o,h,w, "f" is the font, "o" the orientation, "h" the height and "w" the width. Square brackets aren't used, but many parameters are optional, and leaving one out generally means the printer uses a default or the previous value. When in doubt, spell everything out. It's wordier, but there's less to go wrong.
The fonts table shows the base sizes at 203 DPI. If your printer is a different resolution, the cells differ, and it's a good idea to read the built-in font list and font sizes by DPI to understand why.
Things the sheet can't tell you
It can't tell you which values your own firmware supports. Printers differ, and the character set values in particular vary, so check the manufacturer's programming guide for your model. It can't tell you what your printer has stored, but a directory printout can, and the storage rows show the command. And it can't tell you how a label will look, which is where the live preview and a test print come in.
If something isn't working, the quick fixes box points to the usual suspects, and the troubleshooting section has a full page on each. The most common are fonts that don't load, accents that print wrong, fonts that vanish after a restart, and text that's cut off.
Printing tips
Use the landscape orientation and turn on background graphics if you want the table shading. Most browsers have a "Save as PDF" printer, which is a convenient way to produce a file for your team. If the layout breaks across pages, reduce the scale in the print dialog to about 80 to 90 per cent. The page is designed to flow in two columns, and the print stylesheet removes the site chrome so it should fit nicely.
Pair it with the size calculator for dot conversions and the label generator for quick starting points. Both are quicker than doing the arithmetic or typing the syntax from memory.
Questions
Is the sheet complete? No, deliberately. It's focused on fonts and text.
How current is it? It reflects the commonly documented ZPL II behaviour. Verify anything critical against your printer's own guide.
Can I share it? Yes, with a link back to this page. For a deeper look, see Unicode and code pages and flash versus RAM.
Last reviewed 2026-10-20