Built-in ZPL Font List (A to H, 0 and GS)

The factory fonts in every ZPL II printer, with base dot sizes, character spacing and what each is best used for.

Every ZPL II printer includes the fonts below in firmware. They are always available and need no download.

Font table at 203 DPI (8 dots/mm)

Font Base height x width (dots) Gap (dots) Type Typical use
A 9 x 5 1 Bitmap Smallest text, dense data, tiny labels
B 11 x 7 2 Bitmap Small, slightly more readable than A
C, D 18 x 10 2 Bitmap General small and medium text
E 28 x 15 5 Bitmap, OCR-B style OCR-friendly text, human-readable lines under barcodes
F 26 x 13 3 Bitmap Medium text
G 60 x 40 8 Bitmap Large headings
H 21 x 13 6 Bitmap, OCR-A style OCR-A text
0 (zero) scalable, default 15 x 12 n/a Scalable The all-purpose font. Use for almost everything
GS scalable, 24 x 24 n/a Scalable symbols Registered, copyright, trademark and similar symbols

These base values are for 203 DPI printers. 300 and 600 DPI printers use larger cells for the same fonts, so the same ^A command prints smaller physically. Always confirm with a configuration label (^XA^HH^XZ) and see sizes by DPI.

How bitmap sizing works

For fonts A to H you do not pick an arbitrary size. The printer multiplies the base cell by a whole number from 1 to 10:

  • Font D at base size is 18 x 10 dots.
  • Ask for ^ADN,36,20 and you get a 2x multiple, 36 x 20 dots.
  • Ask for ^ADN,40,20 and the printer rounds to the nearest valid multiple.

Use the size calculator to snap a target to the nearest valid multiple.

Font 0 (zero), the scalable default

Font 0 is the font to reach for unless you have a reason not to. Height and width are independent, anywhere from 10 to 32000 dots.

^XA
^FO50,50^A0N,60,60^FDStandard^FS
^FO50,130^A0N,60,35^FDNarrow^FS
^FO50,200^A0N,60,90^FDWide^FS
^XZ

Setting width lower than height gives a condensed look; a higher width gives an expanded look. For natural proportions use a width equal to or slightly below the height.

Font GS

GS is a symbol font. Use it for characters that are missing from the other fonts. In practice many users now prefer a downloaded Unicode TrueType font with ^CI28, but GS remains the fastest option when nothing is downloaded.

What the built-in fonts do not include

  • Complex scripts such as Arabic or Devanagari
  • Chinese, Japanese or Korean characters
  • Most accented characters beyond what the selected code page provides

For those, see Unicode and code pages and language pages.

How to pick one without overthinking it

If you stare at the table above long enough you might start to think the choice matters more than it does. In practice there’s a short list of habits that cover almost every label.

Use font 0 as your starting point. It scales smoothly, it reads well from about 20 dots up to headline sizes, and it’s the font you can count on being present everywhere. Reach for a bitmap font when the text is tiny, or when you want a deliberately plain look that matches older labels in your warehouse. Choose E or H only when somebody downstream, a person or a scanner, specifically needs OCR-style characters.

What each font looks like in practice

Fonts A and B are the small ones. At 203 DPI, font A is only nine dots tall, so it’s about the smallest thing you can print and still read. It’s handy for the fine print on a shipping label, such as a batch code or a date, where space is tight. Squint at it and it looks a bit like an old dot-matrix printout, which is basically what it is.

Fonts C and D are the everyday bitmap fonts. They’re the same size as each other, with slightly different letter shapes. People often use D for general body text on labels designed years ago and never revisited.

Font E is an OCR-B style face. The letters are open and distinct, so a zero doesn’t get mistaken for the letter O. Use it for part numbers where reading errors cost money.

Font F sits in the middle size range, a touch larger than D, and is rarely anyone’s first pick but works fine for secondary headings.

Font G is large and blocky. If you want a big number such as a bin location or a quantity that’s readable from across a room, scaling G up is one way to do it, though font 0 at a big size usually looks cleaner.

Font H is an OCR-A style face. It looks mechanical on purpose. You’ll mostly see it in older systems that scan text directly.

Mixing fonts on one label

You can use as many fonts on one label as you like, since ^A applies per field. A reasonable pattern for a product label might be font 0 at a large size for the product name, font 0 at a medium size for the description, font A for a lot code, and a barcode with its own human-readable line. Keep it to two or three sizes. Labels with seven different text sizes look chaotic and, more practically, get misread.

Our live preview has a sample that prints every built-in font on one label, which is a quick way to see them side by side. You can also build a custom mix in the label generator.

When the built-in set isn’t enough

Sooner or later you’ll hit something the factory fonts can’t do: a character with an accent they don’t carry, a brand typeface, or a script such as Devanagari. There are three routes. You can switch the character set and keep using font 0, which is covered in Unicode and code pages. You can download a TrueType font to the printer. Or you can render the text as an image ahead of time, which the text-to-graphic tool will do for you.

Quick answers

Why do bitmap fonts look blocky when enlarged? Each dot of the original character is simply repeated, so a 3x font has dots three times the size. It isn’t smoothing anything.

Is font 0 the same on every printer? It’s meant to look consistent, but exact letter shapes can vary slightly by model and firmware. If pixel-identical output matters, use a downloaded font or a graphic.

Which font is best for barcodes? The human-readable line under a barcode is normally produced by the barcode command itself. For separate text beside it, see our guide to fonts for barcodes and small labels.

Where can I check what my own printer supports? Look at fonts by printer model and print a configuration label to confirm.

Last reviewed 2026-10-20