zpl.tools
Print control

^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

^PFr

Support

Supportedparsed: full · state: full · rendered: full

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 · integer

How 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 as Value 'QQ' is not a valid number and was ignored and asks for no slew, and so does an omitted count. A fractional count is accepted without comment and rounded, so ^PF200.7 slews 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-100 slews 100 dot rows. The guide's range starts at 0 and says nothing about a sign. The report reads Value -100 is negative, but negative values are not allowed; used 100 instead. Labelary agrees, measured on 2026-08-21. — pinned by test_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

Open in viewer