feat: math clozing -- draw box over math region to insert #blank[$...$]
- Expose math_spans in RenderResult and PreviewData
- insert_blank_wrap_math: splits $A B C$ → $A$ #blank[$B$] $C$
- expand_math_selection: extends glyph-based range to token/paren boundaries,
fixing e^(-x^2) missing ) and sqrt(pi) capturing only 's'
- blank_boxes from glyph_map + frame shapes: vinculum shape fills in right
edge of sqrt that π glyph can't provide (no source span)
- Per-glyph font metrics (ttf_parser::glyph_bounding_box) replace 0.8*fs
cap-height approximation, fixing vertical position of sqrt blank box
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>