zpl.tools
Fonts and text

^CW - Font Identifier

Assigns a downloaded font to one of the single-letter font slots.

Every built-in font has a one-character name, and ^CW is how a downloaded font joins them. Bind a file to a letter once, and the rest of the format can use it with ordinary ^A and ^CF commands. The letter is exactly one character. ^CWQ,R:ARIAL.TTF assigns to Q, and a longer name before the comma is a misparse rather than a longer slot name.

Syntax

^CWa,d:o.x

Support

Supportedparsed: full · state: full · rendered: full

Every documented parameter renders the same output Labelary produces.

A letter aliased to a path on Z: selects that built-in font for ^A and ^CF alike, and the alias outlives the format that set it. A path a ~DY font download occupies is accepted and reports only the remapping note, as on Labelary, but no alias to a downloaded face is made. A path this printer has no font for is rejected with RESOURCE_MISSING and leaves the letter as it was, which is what Labelary does. — not pinned by a test

Labelary renders this command. Scheduled for milestone 5.9.

Parameters

aFont letterrequired · single character

The single letter or digit, A to Z or 0 to 9, for the font, which ^A and ^CF then select. A reassigned built-in letter replaces that font until the next power-off.

Invalid value
discarded, and the current value is kept. Measured on 2026-08-21. An omitted letter reports Command was ignored because font name was not specified and makes no alias. A value longer than one character is trimmed to its first character, reported, and then applied. A character outside A-Z and 0-9 is reported as not valid and makes no alias. The letter is read without regard to case, so ^CWz and ^CWZ are the same slot. A letter that already names a built-in font is remapped, and the remapping is reported. That report appears only when the alias actually takes. A built-in letter paired with a missing file reports the file alone.
Test coverage
The invalid-value rule is pinned by 1 test.
d:o.xFont filerequired · text

The font to assign, as device, name and extension: R:, E:, B: or A:, a name of up to eight characters, and .FNT or .TTF.

Invalid value
discarded, and the current value is kept. A file the printer does not have is reported, and the letter keeps the font it already had. A letter with no built-in font therefore still reports Font 'x' does not exist when ^A selects it. Unlike ^A@'s, this slot has no absent case: an omitted or empty name reads as R:UNKNOWN.FNT and is reported missing, which the guide describes and we measured on 2026-08-21.
Test coverage
The invalid-value rule is not pinned by a test.

Behavior

The letter decides what the assignment means. ^CW replaces a letter that already names a built-in font: A to H, 0, GS. Every field that asks for that font gets the downloaded one instead, and nothing else in the format changes. A letter with no built-in font behind it — I to O, W to Z, 1 to 9 — becomes an additional font.

Both kinds of assignment last until the printer switches off, and an addition also ends when a later ^CW reassigns the letter. Neither survives a power cycle, so a format that depends on an alias must set the alias itself rather than trust an earlier job.

^CW must come before the fields that use the letter, and the font must be in memory first. Use a ~DT, ~DU, ~DB or ~DS download, or a font that ships on the printer. Labelary's reference states that Labelary ignores a ^CW that names a file that does not exist, so the letter keeps its previous meaning.

^A@ is the alternative and needs no slot: it names the file directly, per field. Prefer ^CW where many fields share one downloaded font, and ^A@ for a single field.

Tested behavior

Differences from the specification

Example

Aliasing the letter Q to a font that is present without any download — Z:0.FNT is the scalable font 0 — so the effect is visible in a render:

^XA
^CWQ,Z:0.FNT
^FO50,40^AQN,40^FDFont Q is now font 0^FS
^FO50,110^A0N,40^FDFont 0 for comparison^FS
^XZ

Open in viewer