Skip to main content

Module text

Module text 

Source
Expand description

Text wrapping utilities shared by layout (measuring) and render (drawing).

Every font (Style::font: the game’s default, a Yog font, or a game font by Yog’s alias such as "yog:font/uniform") is measured by the host’s text renderer once use_host_metrics has been called (UiRoot::render does it) — what the game draws, resource packs and all. Before that, and outside a game, the default font’s advances (data/glyph_widths.ydata, generated from the game’s font) stand in.

Constants§

CHAR_W
Approximate pixel width per character at font_scale=1.0 (fallback for non-ASCII chars and legacy callers).
DEFAULT_FONT
The font text is drawn in by default (the game’s).
GLYPH_H
The glyphs’ height, without the line’s room below them: what the game centres a line by.
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 font at GUI scale 1, as the game’s font has it; beyond ASCII (glyphs vary) CHAR_W.
char_width_in
Advance width of c in font at scale 1 — the host’s measurement (cached), else the default font’s table.
is_default_font
Whether font means the game’s default font (empty or yog:font/default).
line_count
Number of lines that text wraps to.
paginate_text
Split text into page-sized chunks that fit within max_h pixels. Each page is a Vec<String> of ready-to-render lines.
str_width
Pixel width of a string at the given font scale.
str_width_in
str_width in font (see char_width_in).
text_height
Total pixel height of wrapped text.
text_height_in
text_height in font (see char_width_in).
use_host_metrics
Lets every font 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 text into lines that fit within max_w pixels at font_scale. Width accounting is per-glyph (MC default font advances).
wrap_text_in
wrap_text in font (see char_width_in).