ZPLToolkit

^BO

Aztec Bar CodePreview: partial

A 2D code with a bullseye at its centre and no quiet zone requirement, which is why transport tickets use it.

Syntax

^BOo,h,e,p,c,m,d

Parameters

ParameterDescription and accepted valuesIf omitted
oRotation of the bar code on the label.N normal, R 90°, I 180°, B 270°Last ^FW value, else N
hMagnification: the size of one module in dots.1 to 10 — magnification factorChosen from the label size
eError control and symbol size. 0 is the default 23%; 1 to 99 is a percentage; 101 to 104 are compact sizes.0 to 300 — error control and symbol size0
pPrints the symbol as a rune — a small Aztec carrying one number.Y or N — print the symbol as a rune onlyN
cHow many symbols this message is split across.1 to 26 — number of symbols in a structured append1
mWhich symbol this is within that split.1 to 26 — position of this symbol in that append1
dThe append id shared by the symbols of a split message.Up to 24 characters — structured append idNone

How it works

^BO prints Aztec, a matrix symbology whose finder pattern is a square bullseye at the middle rather than corner markers. That layout means it needs no quiet zone at all — the symbol can run right up to the edge of what surrounds it.

That property, plus good error correction at small sizes, is why Aztec is the code on rail and airline boarding passes, where it has to be readable off a crumpled print or a phone screen held at an angle.

The magnification parameter sets the size of one module in dots, and the error-control parameter trades capacity for robustness. Leaving error control at 0 gives the encoder's default, which is a sensible 23%.

Example

ZPL
^XA
^FO60,60^BON,6,0^FDZPL Toolkit^FS
^XZ

Rendering…

An Aztec symbol at a magnification of 6 dots per module, with default error control.
Open in the viewer

How the preview on this site handles it

Drawn with a real Aztec encoder, so it scans, and rotation is applied. The error-control level from `e`, the rune mode from `p` and the structured append from `c`/`m`/`d` are left at the encoder's defaults — setting them does not change the preview, though it does change what the printer produces.

Common mistakes

  • Sizing it by ^BY. Aztec takes its module size from `h`, not from the ^BY module width.
  • Pushing error control too low to save space. The reason Aztec reads off a damaged ticket is the correction level; 0 is a better default than a hand-picked 5%.
  • Assuming every scanner reads it. Aztec is standard in transport but not always enabled on general-purpose warehouse scanners.

See also