^PF - Slew Dot Rows
Feeds the media a number of dot rows without printing on them.
^PF runs the last r dot rows of the label past the head at speed without a
print on them. That is free throughput on a label whose bottom third is blank.
The rows come out blank rather than merely fast, so anything inside them does
not print. The renderer blanks the same band.
Syntax
^PFrSupport
Every documented parameter renders the same output Labelary produces.
The parser reads the count and the renderer blanks the band. ^PFr runs the bottom r dot rows of the label past the head without printing them, so the page comes back blank over [H - r, H) where H is the page height in dots. On a 4 by 6 inch label at 8 dpmm, 1218 dot rows tall, ^PF200 blanks rows 1018 to 1217. Nothing rounds the cut to a field boundary, so a field that straddles the boundary prints through the middle of its glyphs. The slew applies at ^XZ however early in the format the command stands, and there is no ^FS boundary. The last ^PF in the format wins and the counts do not add up: ^PF60^PF60 is one 60-row band. H is the page height and not ^LL, and ^LH does not shift the band. ^MU converts the count, so ^MUi^PF1 slews 200 dot rows at 8 dpmm. The setting belongs to the format and does not survive ^XZ, and a ^PF outside a format never lands. Under ^POI the band is turned over with the content, so it comes out at the top of the paper. ^JMB's magnification is applied after the cut, which moves the boundary to 2 * (H - r). Measured against Labelary on 2026-08-21. — pinned by test_pf_blanks_the_bottom_dot_rows
Labelary renders this command.
Parameters
rDot rowsoptional · integerHow many dot rows the printer feeds blank, counted from the bottom of the label.
- Default
- no slew
- Accepted range
- 0 to 32000 dot rows
- Invalid value
- clamped to the nearest allowed value. A count over 32000 is clamped and reported as
Value 999999999999 is greater than maximum value 32000; used 32000 instead. A count with no digits is reported asValue 'QQ' is not a valid number and was ignoredand asks for no slew, and so does an omitted count. A fractional count is accepted without comment and rounded, so^PF200.7slews 201 dot rows (measured 2026-08-21). - Test coverage
- Bounds pinned: below the minimum (-100). No test at the minimum or maximum. The invalid-value rule is not pinned by a test.
Behavior
The printer counts the rows from the bottom of the label upwards, so the
boundary moves with the label height. On a 4 by 2 inch label at 8 dpmm — 406 dot
rows — ^PF200 stops the print at row 206. On a 4 by 6 inch label at the same
density — 1218 dot rows — the same command stops it at row 1018.
Nothing rounds the cut to a field boundary and nothing reports a warning. The cut lands where the arithmetic puts it, so a field that straddles the boundary prints through the middle of its glyphs.
The slew applies at ^XZ, whatever position the command holds in the format: a
^PF after the last field blanks the same band as one on the first line. There
is no ^FS boundary. Several ^PF commands do not add up either — the last one
in the format wins, so ^PF60^PF60 is one 60-row band and ^PF120^PF0 blanks
nothing.
The height the rows are counted from is the page height, not ^LL, and ^LH
does not move the band. ^MU converts the count, so ^MUi^PF1 slews 200 dot
rows at 8 dpmm.
The band belongs to the format rather than to the printer, so it does not
survive ^XZ. The label after a slewed one prints in full even though it names
no ^PF. A ^PF sent outside a format never lands.
^PF0 changes nothing, and so does a ^PF with no argument.
Under ^POI the band is turned over with the content and comes out at the top
of the paper. ^JM's magnification is applied after the cut, which puts the
boundary at twice its unmagnified distance from the label origin and can push
the band past the paper altogether.
Differences from the specification
zpl.tools against the ZPL II guide
Where our renderer behaves differently from the specification.
- A negative count uses its magnitude, so
^PF-100slews 100 dot rows. The guide's range starts at 0 and says nothing about a sign. The report readsValue -100 is negative, but negative values are not allowed; used 100 instead. Labelary agrees, measured on 2026-08-21. — pinned bytest_pf_negative_count_slews_its_magnitude
Example
The bottom 200 dot rows of a 4 by 6 inch label are slewed:
^XA
^PF200
^FO50,50^A0N,40,40^FDPrinted^FS
^FO50,1100^A0N,40,40^FDSlewed past^FS
^XZ
Related commands
^PH / ~PHSlew to Home PositionFeeds one blank label.^PNPresent NowEjects a section of the current label so the operator can take it.^LLLabel LengthSets the label length, for continuous media.