Expand description
Text wrapping utilities shared by layout (measuring) and render (drawing).
Widths use Minecraft’s default (ASCII) font advance table so that
wrapping and centering match what the MC text renderer actually draws.
Other fonts (Style::font, e.g. "minecraft:uniform" or a resource-pack
font) are measured by the host’s text renderer once use_host_metrics
has been called (UiRoot::render does it); before that, and outside a
game, they fall back to the default font’s table.
Constants§
- CHAR_W
- Approximate pixel width per character at font_scale=1.0 (fallback for non-ASCII chars and legacy callers).
- DEFAULT_
FONT - Minecraft’s default font id — what an empty
Style::fontmeans. - LINE_
GAP - Gap between wrapped lines.
- LINE_H
- Line height at font_scale=1.0 (MC font is 9px; Patchouli uses 9-10px lines).
Functions§
- char_
width - Advance width in pixels (including 1px inter-glyph spacing) of one char in Minecraft’s default ASCII font at GUI scale 1.
- char_
width_ in - Advance width of
cinfontat scale 1 — the default font’s table, or the host’s measurement (cached) for any other font. - is_
default_ font - Whether
fontmeans Minecraft’s default font (empty orminecraft:default). - line_
count - Number of lines that
textwraps to. - paginate_
text - Split
textinto page-sized chunks that fit withinmax_hpixels. Each page is aVec<String>of ready-to-render lines. - str_
width - Pixel width of a string at the given font scale.
- str_
width_ in str_widthinfont(seechar_width_in).- text_
height - Total pixel height of wrapped
text. - text_
height_ in text_heightinfont(seechar_width_in).- use_
host_ metrics - Lets non-default fonts be measured by the host’s text renderer (see the
module docs). Called by
UiRoot::render; call it yourself before the first layout to get exact metrics from the very first frame. - wrap_
text - Break
textinto lines that fit withinmax_wpixels atfont_scale. Width accounting is per-glyph (MC default font advances). - wrap_
text_ in wrap_textinfont(seechar_width_in).