zpl.tools
Fields

^FM - Multiple Field Origin Locations

Positions the several bar codes a PDF417 field is split across.

^FM gives the positions for a series of bar codes that together carry one field's data. PDF417 and Micro-PDF417 can use structured append. They split a message too long for one symbol into "1 of 3, 2 of 3, 3 of 3", and a scanner reassembles it. ^FM says where each symbol goes. It works with ^B7 and ^BF only, and a printer ignores it with any other command.

Syntax

^FMx1,y1,x2,y2,...

Support

Supportedparsed: full · state: full · rendered: full

Every documented parameter renders the same output Labelary produces.

Labelary renders this command.

Parameters

xX-axis positionrequired · dots

Horizontal position of one symbol of the series.

Accepted range
0 to 32000 dots
Invalid value
enough to stop the field being printed. The literal e in place of a coordinate excludes that symbol and prints nothing for it. The command accepts up to 60 pairs.
Test coverage
Bounds pinned: above the maximum (99999999999999999999). No test at the minimum or maximum. The invalid-value rule is pinned by 1 test.
yY-axis positionrequired · dots

Vertical position of the same symbol.

Accepted range
0 to 32000 dots
Invalid value
enough to stop the field being printed. The literal e excludes that symbol.
Test coverage
No test at the minimum, maximum or one step outside the range. The invalid-value rule is not pinned by a test.

Behavior

The coordinate pairs are positions, not copies: each symbol carries a different part of the data, so a scanner must read all of them to recover the message. ^FM accepts up to 60 pairs, and they replace the field's own origin. ^FM comes before the bar code command, and the field's ^FO or ^FT does not place the symbols.

Supply at least as many pairs as the data needs. Unused pairs cost nothing, because a symbol appears only when the data calls for it. A probe on 2026-07-30 gave three positions and a message that fitted into two, printed two symbols, and left the third position empty. Data that needs more symbols than positions has nowhere to go. A probe on 2026-08-15 gave one position to a message needing two, and the label came out blank with Unable to encode bar code data: input too long.

The literal e in place of a coordinate excludes that symbol. That is how a format drops one symbol of a series deliberately, for a two-part label whose halves go on different packages.

Known issues

Tested behavior

Differences from the specification

Example

A PDF417 held to three columns by 20 rows so that the message does not fit in one symbol, with three positions offered and two used:

^XA
^BY2
^FM50,40,50,300,50,560
^B7N,4,2,3,20,N
^FDStructured append splits one long field of text across several PDF417 symbols so that a scanner can reassemble the original message from the parts it reads.^FS
^XZ

Open in viewer

  • ^B7 PDF417 Bar CodeStacked two-dimensional symbology that holds several hundred bytes, used on driving licenses and shipping documents.
  • ^BF MicroPDF417 Bar CodeCompact PDF417 variant for small labels, selected from a table of 34 fixed row-and-column layouts.
  • ^FO Field OriginSets the top-left corner of the next field.
  • ^FT Field TypesetPositions the next field by its text baseline rather than its top edge.