The ^A Command Guide (Font, Orientation, Height, Width)
Syntax and examples for ^A and ^A@, the ZPL commands that choose a font, rotate text and set its size.
^A selects the font, orientation, height and width for the next text field. It must come before the ^FD it applies to.
Syntax
^Af,o,h,w
| Parameter | Meaning | Values |
|---|---|---|
f |
Font name, written directly after A with no comma |
A to Z and 0 to 9 |
o |
Orientation | N normal, R rotated 90 degrees clockwise, I inverted 180, B read from bottom (270) |
h |
Character height in dots | Scalable: 10 to 32000. Bitmap: 1x to 10x the base height |
w |
Character width in dots | Scalable: 10 to 32000. Bitmap: 1x to 10x the base width |
Note there is no comma between A and the font letter: ^A0N,50,50 means font 0, normal, 50 by 50.
Examples
^XA
^FO50,50^A0N,50,50^FDFont 0 normal^FS
^FO50,120^A0R,50,50^FDRotated^FS
^FO50,400^ADN,36,20^FDBitmap D 2x^FS
^XZ
Omitting height and width
If you leave h and w blank, the printer uses the values from ^CF (or the factory default). If you give only h on a scalable font, width follows the height.
^XA
^CF0,40
^FO50,50^A0N^FDInherits 40 dots from ^CF^FS
^XZ
^A@ for downloaded fonts
To use a TrueType font stored on the printer, use ^A@ and name the file with its drive:
^Af@o,h,w,d:o.x
^XA
^FO50,50^A@N,50,50,E:ARIAL.TTF^FDDownloaded font^FS
^XZ
Using ^CW you can give the file a one-letter alias and then use the shorter ^A form:
^XA
^CWZ,E:ARIAL.TTF
^FO50,50^AZN,50,50^FDAlias Z^FS
^XZ
See downloading TrueType fonts for the loading step.
Common mistakes
- Putting
^Aafter^FD. It then affects the following field, not this one. - Using a comma after
A. Write^A0N,..., not^A,0,N,.... - Bitmap sizes that are not multiples. The printer silently rounds; see wrong size.
- Forgetting the drive letter in
^A@. WithoutE:orR:the lookup may fail and you get the default font.
Related
^CF, ^FD and ^FO basics | Size calculator
Reading an ^A command at a glance
Once you’ve seen a few, ^A becomes easy to read. Take ^A0N,50,50. The 0 is the font. The N says the text runs normally, left to right. The two 50s are the height and width in dots. That’s all of it. The only slightly unnatural part is that the font letter is glued straight to the A, with no comma, so your eye has to learn to split A0 into “command A, font 0”.
Height and width are separate for a reason
With scalable fonts you can set height and width independently, and that gives you a way to tune the look. If you want text that fits a narrow space without getting shorter, lower the width. A height of 40 with a width of 30 gives a slightly condensed look that still reads well. Go much further than that and the letters start to look squashed. Pushing the width above the height stretches the text, which can work for a short heading but looks cheap on longer lines.
For bitmap fonts the rules are stricter. Height and width have to be whole multiples of the font’s base cell. Ask for something in between and the printer rounds it, usually without telling you. That’s the single most common reason a bitmap font “ignores” the size you typed. Our size calculator shows the nearest valid multiples for every built-in font so you can see what you’ll actually get.
Rotation, and where the text ends up
The orientation letter rotates the text around the field’s origin. R turns it 90 degrees clockwise, I flips it upside down, and B reads from the bottom up. The part that catches people is that rotated text doesn’t stay put in the same corner. A rotated block sits in a different place than the same text unrotated, because the origin is anchored to the corner of the rotated box. If you rotate a field and it disappears, check whether it has moved off the label. The live preview has a rotation sample you can experiment with, and the field origin behaviour is explained on the ^CF, ^FD and ^FO basics page.
If everything on a label should be rotated, there’s a shortcut. ^FW sets a default orientation for all fields, so you don’t have to repeat it in every ^A.
Using a font you downloaded
^A@ is the version for fonts stored on the printer. You give it the drive and file name at the end. It works, but it’s wordy, so a lot of people alias the font once with ^CW and then use the short form. Both are shown above. Whichever you choose, the file must already be on the printer. If it isn’t, you’ll silently get the default font, and that’s a classic head-scratcher. The steps for getting a font onto the printer are in downloading TrueType fonts, and if the font mysteriously vanishes later, read flash versus RAM.
Habits that save time
Put your ^CF default near the top of the label, so any field you forget to style at least looks reasonable. Give every field its own ^A when sizes matter, because relying on whatever came before is how labels break when somebody edits one line. And when you’re building a new design, try it in the label generator first. It writes the ^A line for you and shows a preview.
Questions people ask
Does ^A change the font for the whole label? No. It applies to the field that follows it. Use ^CF if you want a default for the label.
What’s the biggest size I can use? The documented range is up to 32,000 dots, which is far beyond any label. Practical limits are the label itself and the memory available to render the text.
Why does my text look fine in the preview but different on paper? The preview is an approximation. Real output depends on the font, the printer’s resolution and the media. If something looks off, work through the text cut off or wrong size checklist.
Can I use a Unicode character with ^A? Yes, as long as the character set is set correctly and the font has the glyph. See Unicode and code pages.
Last reviewed 2026-10-20