^PM - Print Mirror Image
Mirrors the label left-to-right.
^PMY reflects the entire printable area about its vertical axis, so text reads backwards. Media
applied from the reverse side needs that — a transfer, or a window label read through the
substrate. The mirrored image reads the right way round once it is in place.
Syntax
^PMaSupport
Every documented parameter renders the same output Labelary produces.
The parser reads the flag and the renderer applies it. ^PMY mirrors the finished page left-to-right about the page's own vertical centerline, so a box drawn 50 dots from the left edge lands 50 dots from the right one. It mirrors the rendered result and not the layout. Glyphs, barcode modules and the human-readable line under a barcode are all reversed along with their positions. The flip is about the page width and not the ^PW window's, so the window's centering happens first and the whole page turns over after it. The command reaches the whole page from anywhere in the format, with no ^FS boundary of the kind ^JM has, and a ^PM outside a format never lands. The mirror is a printer setting and survives ^XZ until a later ^PMN takes it back. It composes with ^POI commutatively into a plain vertical flip, and ^JMB's magnification is applied after it. Measured against Labelary on 2026-08-21 at 6, 8 and 12 dpmm. — not pinned by a test
Labelary renders this command.
Parameters
aMirror imageoptional · Y or NWhether the printer mirrors the finished label. For transfer media applied face down.
- Default
- the setting already in force, or
Nat power-up - Invalid value
- discarded, and the current value is kept. A value that is neither
YnorNis reported asValue 'Q' is not a valid boolean value (Y/N) and was ignoredand leaves the setting already in force in place. So does an omitted value. The guide says the command is ignored, which is true of the command and not of the setting:^XA^PMY^PMQ...^XZand^XA^PMY^PM...^XZboth still mirror (measured 2026-08-21). - Test coverage
- No documented value is exercised by a test (Y, N). The invalid-value rule is not pinned by a test.
Y- Mirror the label about its vertical axis
N- Print normally (default)
Behavior
The reflection runs left-to-right only, and it applies to the whole label rather than to each field. Vertical positions stay untouched. Text and bar codes both mirror, glyph shapes and barcode modules included, so a scanner cannot read a mirrored bar code from the printed side — that is the point, not a fault.
The axis is the page's own vertical centerline, not the label origin and not the ^PW window. A
field placed 50 dots from the left edge of an 812-dot page comes out 50 dots from the right edge.
Under a narrower ^PW the window is centered first, on the unmirrored page, and the finished page
is turned over after that.
^PM reaches the whole label from anywhere inside the format. One sitting after the last field
still mirrors every field ahead of it, and there is no ^FS boundary of the kind ^JM carries.
A ^PM before ^XA never lands at all.
^PM and ^PO are easy to confuse and are not the same command. ^PMY mirrors about a vertical
axis and leaves the label the right way up. ^POI rotates the label 180° and inverts both axes. Both
together give a reflection about the horizontal axis, in either order, because the two transforms
commute.
^JMB magnifies what ^PM has already mirrored. A label mirrored to the right edge of the page and
then doubled runs off the paper, so ^XA^JMB^PMY^FO50,50^GB100,20,20^FS^XZ prints blank.
The setting persists until ^PMN or a power cycle, so it survives ^XZ into the next format. A
missing or unreadable argument leaves whichever setting is in force alone: after a ^PMY, both
^PM and ^PMQ go on mirroring.
Differences from the specification
Example
The text is placed 50 dots from the left edge and comes out 50 dots from the right one, with its glyphs reversed:
^XA
^PMY
^FO50,50^A0N,50,50^FDMirrored text^FS
^XZ
Related commands
^POPrint OrientationRotates the whole label 180°.^JMSet Dots per MillimetreHalves the print density, which doubles the physical size of everything on the label.^PWPrint WidthSets the printable width of the label.^LRLabel Reverse PrintReverses every field on the label, as though each carried `^FR`.