^SP - Start Print
Starts the print of the top of a label before the printer processes the rest.
^SP splits a label into segments, so the printer can start on the top of it
before the bottom is complete. It gains throughput on a label complex enough
that the format work, not the print, is the bottleneck. It changes nothing about
the finished image, because the same fields print in the same places. A rendered
format can keep it.
Syntax
^SPrSupport
Accepted and skipped, because it configures the printer rather than the label. It cannot change the rendered output, and Labelary skips it too.
A latency optimization for complex labels on real hardware. It splits the print into segments and does not change their content, so the image is identical. The renderer does not parse this command. It reports IGNORED_COMMAND at info severity, which does not reach X-Warnings. Labelary is also silent, so the rendered label is identical in both engines. — not pinned by a test
Labelary renders this command.
Parameters
rStart rowoptional · integerDot row where the first segment starts to print.
- Default
- 0
- Accepted range
- 0 to 32000 dot rows
- Invalid value
- not documented, and we have not measured it. The renderer does not parse or measure this command.
- Test coverage
- No test at the minimum, maximum or one step outside the range.
Behavior
The argument names the dot row where the segment ends. The printer prints
everything above that row at once, and continues to receive and parse the
commands after the ^SP. If the next segment is ready before the head reaches
it, the media never stops. If it is not ready, the printer halts mid-label and
waits, which is the failure the command must avoid.
Field order therefore matters as it does nowhere else in ZPL. The guide warns that the printer drops a field that arrives after its own row prints. A segmented label must list its fields in increasing row order. The guide also calls the split point trial and error, because it depends on the print speed and the label complexity.
The guide puts ^SP in a field of its own, ^SP#^FS, which keeps the parser
from reading the command as part of a surrounding field.
The renderer segments nothing. It composes and returns the whole label in one
piece, and prints every field where the format places it, whatever the order.
The renderer does not parse this command. It reports IGNORED_COMMAND at info
severity, which does not reach X-Warnings. Labelary is also silent, so the
rendered label is identical in both engines.
Example
A label in two segments:
^XA
^FO50,40^A0N,40,40^FDSegment one^FS
^SP200^FS
^FO50,250^A0N,40,40^FDSegment two^FS
^XZ
Related commands
^PFSlew Dot RowsFeeds the media a number of dot rows and leaves them blank.^PQPrint QuantityPrints the label more than once, the one command here that changes how many pages come back.