Boardsmith

Text and markup

One text field can hold several styles, an icon and a stamped number. These are the tags that do it.

Character tags

Write them in the text, or select something in the text box and use the toolbar above it — the toolbar wraps the selection in exactly these tags.

[b] [i] [u] [s]Bold, italic, underline, strikethrough
[sup] [sub]Superscript and subscript, sized and lifted from whatever size is in effect
[color=#e2685f]Colour for a word — Deal [b]2[/b] [color=#e2685f]fire[/color] damage
[size=30]A different size, in card pixels
[font=Family]A different family for a run of words
[dx=6] [dy=-4]Nudge, in card pixels

Tags nest, and closing one closes its own: [/b] ends the bold without disturbing an italic opened inside it. The grammar is forgiving on purpose — an unknown or malformed tag stays on the card as literal text rather than swallowing the rest of the sentence, so a typo names itself.

Icons in the line

[icon=gem.png] drops an image into the text — mana, an attack symbol, anything. It rides the baseline, is scaled to the surrounding font, wraps as part of the word it is glued to, and shrinks along with auto-size. Wrapping it in [color=…] recolours it, so one white symbol file serves every colour in the game.

[space=12] is room in the line, in card pixels, and it may be negative to close a gap up. [over]…[/over] stamps its contents onto whatever came just before, centred on that thing's ink rather than on its box — {icon}[over]3[/over] draws the number on the symbol instead of beside it. That is the thing a project otherwise needs one baked image per number for.

Paragraph tags

Three tags belong to the paragraph rather than to the characters. A paragraph is the text between newlines; the first of each tag in it speaks for the whole of it.

[align=left|center|right|justify]Overrides the field's own alignment for this paragraph
[indent=24]Insets the leading edge and narrows what it wraps into
[gap=16]Extra room above this paragraph; on a line of its own it is a spacer

Text that fits

Turn auto size on and the single size becomes a band: a maximum to grow to and a minimum to shrink to. Boardsmith walks the size down from the top of the band and takes the first that fits. Tagged sizes scale with it proportionally, so an accent stays an accent at any fitted size.

When nothing in the band fits, overflow decides what happens:

WarnDraws it anyway and reports the card — the default, because a bad row should be visible rather than silently cut
EllipsisCuts at the box and ends with …
ClipCuts at the box
IgnoreDraws it and says nothing

The rest of the text properties

Alignment both ways, line spacing, character spacing, paragraph spacing, word wrap, uppercase, underline and strikethrough as switches, an outline (stroke width and colour), and a drop shadow with its own offset and blur. Decorations are drawn rather than taken from the font file, so they work with any font.

Points, pixels and DPI

The renderer works in card pixels; the inspector shows the same sizes in points, converting through the card's DPI. A 5 pt heading is 21 px on a 300 DPI card, and typing either gets you the same thing.

Fonts

The family box is backed by the families actually present on your machine, listed with the weights each one really has. This catches the classic trap: Helvetica on macOS ships as a collection with no separate bold file, so asking for bold silently renders regular. Boardsmith badges that in the inspector instead of leaving it to be found in the printed deck.

The box stays typeable rather than a hard dropdown, because a blueprint written on another machine may name a family this one lacks — and discarding that name would lose information you want back when you open the file on the machine that has the font.