Text shaping for renamite: string -> kurbo::BezPath outlines.
Deliberately simple for v1: left-to-right horizontal layout, per-glyph
advances, \n line breaks. No bidi, no complex-script shaping, no
ligatures - documented limits, not silent wrongness. Deterministic: the
same input always yields the same path, so goldens and CLI renders match
the editor exactly.
A process-wide family-name registry (like repose's repose_text) maps
logical family names to raw font bytes: [register_font_data] stores a
font keyed by the name its own name table reports, [font_family_name]
extracts that name, and [FontRef::for_family] resolves a
TextNode.font value to a face, falling back to the bundled default.