^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
Every documented parameter renders the same output Labelary produces.
Labelary renders this command.
Parameters
xX-axis positionrequired · dotsHorizontal position of one symbol of the series.
- Accepted range
- 0 to 32000 dots
- Invalid value
- enough to stop the field being printed. The literal
ein 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 · dotsVertical position of the same symbol.
- Accepted range
- 0 to 32000 dots
- Invalid value
- enough to stop the field being printed. The literal
eexcludes 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
Related commands
^B7PDF417 Bar CodeStacked two-dimensional symbology that holds several hundred bytes, used on driving licenses and shipping documents.^BFMicroPDF417 Bar CodeCompact PDF417 variant for small labels, selected from a table of 34 fixed row-and-column layouts.^FOField OriginSets the top-left corner of the next field.^FTField TypesetPositions the next field by its text baseline rather than its top edge.