Tryst::UI::Font
A Tk font, spelled without needing Tk's own font-list syntax or Tcl's brace quoting by hand - "{Comic Sans MS} 14 bold" silently mis-parses if the braces are wrong (or missing) around a family with spaces; #to_tcl (via Tryst.make_list, real Tcl list quoting, never string interpolation) makes that impossible.
family: nil means "the running default" - Tk's own TkDefaultFont named font, used as the family element of a size/style override the same way the raw string "{TkDefaultFont} 24" always has (Tk allows a named font's name to stand in for family: in the description-list form, which is exactly how a bare size change without a family change gets spelled).
Constructors
Instance methods
A copy at a different size - everything else (family, bold, italic, underline) unchanged.
The real Tk font-list string this value represents.
size: 0 is rejected here rather than left for Tk to interpret: Tk accepts it silently and the result is a broken or invisible font at Tk's own discretion, with nothing pointing back at the actual mistake.