Maps font family names to protocol font IDs (0-255).
Font ID 0 is always the primary font (configured via :font_family).
IDs 1-255 are assigned on demand when a Face with a non-nil font_family
is first rendered. The Emit stage sends register_font protocol commands
for pending registrations so the GUI frontend can load the corresponding FontFace instances.
The registry is process-local state owned by MingaEditor.Renderer.Server.
Render snapshots receive the current registry just before the pipeline runs,
and the renderer stores the updated registry after emit. It resets when the
renderer restarts or the font config changes.
Summary
Functions
Returns the render-local font registry, or the supplied fallback.
Returns the font_id for a font family, allocating a new ID if needed.
Returns the font_id for a family, or 0 if not registered.
Marks all pending font registrations as emitted.
Creates a new empty font registry.
Returns font registrations that have been allocated but not emitted yet.
Returns the active render-local font registry, if one is installed.
Stores the render-local font registry.
Runs a function with this registry installed for render-local font resolution.
Types
@type t() :: %MingaEditor.UI.FontRegistry{ families: %{required(String.t()) => non_neg_integer()}, next_id: non_neg_integer(), pending: %{required(non_neg_integer()) => String.t()} }
Functions
Returns the render-local font registry, or the supplied fallback.
@spec get_or_register(t(), String.t()) :: {non_neg_integer(), t(), boolean()}
Returns the font_id for a font family, allocating a new ID if needed.
Returns {font_id, updated_registry, new?} where new? is true if
a new ID was allocated (caller should send register_font to the GUI).
The primary font (ID 0) is never registered here; it's set via set_font.
@spec lookup(t(), String.t()) :: non_neg_integer()
Returns the font_id for a family, or 0 if not registered.
Marks all pending font registrations as emitted.
@spec new() :: t()
Creates a new empty font registry.
@spec pending_registrations(t()) :: [{non_neg_integer(), String.t()}]
Returns font registrations that have been allocated but not emitted yet.
@spec process_registry() :: t() | nil
Returns the active render-local font registry, if one is installed.
Stores the render-local font registry.
Runs a function with this registry installed for render-local font resolution.