Placeholders
A line containing the placeholder expands one line per glyph. Type HH$HH, and the proof renders HHaHH, HHbHH, HHcHH, on through the whole set. It’s the classic spacing-control workflow, control characters on both sides, the glyph under judgment in the middle, without typing hundreds of lines by hand.
Turning it on
Placeholder expansion is a section setting, the sibling of style tags: it changes how the section’s text is read, not where the text comes from. Toggle it in the content settings popover (the settings button beside the section content input). Lines containing the placeholder expand; lines without it render exactly as typed, so prose, headings, and patterns mix in one piece of content.
The fastest start is the Spacing Strings template: it inserts the seven control frames with the placeholder already on.
HH$HH
HO$OH
OO$OO
nn$nn
no$on
oo$oo
00$00
Caps between flat and round controls, lowercase between n and o, figures between zeros. Every glyph gets judged against a flat side and a round side.
Character sets
The dropdown under the content input picks what the placeholder iterates:
- Lowercase, Uppercase, Figures, Punctuation: the presets.
- All drawn glyphs: every encoded character your fonts have actually drawn, swept from the source with the same ink test the generated-text wand uses. Multi-font sections union their coverage.
- Custom: your own list. Whitespace-separated tokens, each substituted whole:
k v wis three lines;ox ffiis two lines with the clusters intact. Single characters are just one-character tokens, so there’s no mode to pick.
The set multiplies against the frames. nn$nn with Punctuation is punctuation fitting (n.n, n,n). HH$HH with Figures puts figures against caps. nn$nn with Uppercase proofs mixed-case transitions.
The placeholder character
$ by default, changeable per section in the content settings popover. If your proof text needs a literal dollar sign in a pattern-bearing section, switch the placeholder to another character and $ renders as itself.
Everywhere text goes
Expansion works in typed content and linked files, in any flowing section type, and composes with style tags: <smcp>HH$HH</smcp> styles every expanded line. Expanded output carries no injected blank lines; use paragraph spacing to open up the blocks.
Headless and agent workflows have the same controls: the CLI renders expansion in --export and --proof (the Spacing Strings template works there too), and the MCP server’s update_section_settings takes expand_placeholders, placeholder, placeholder_set, and placeholder_custom.