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
No test at the minimum, maximum or one step outside the range. 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.