text

Text rendering helpers (glyph cache, batch builder, font engine) on top of mizchi/gfx and mizchi/font, extracted from kagura

moon add mizchi/text@0.2.0
Download zip
Author
Version
0.2.0
License
Apache-2.0
Last updated
2 months ago
Downloads
72

Dependencies

README

#
FontEngine

pub trait FontEngine {
fn measure(Self, run :
TextRun
) ->
TextMetrics

fn shape(Self, run :
TextRun
) -> Array[
GlyphQuad
] raise
}

#
TextBatchBuilder

#
FontLoadHooks

pub struct FontLoadHooks {
load_font_data : (String) -> Array[Int]?
}

#
SimpleTextBatchBuilder

pub struct SimpleTextBatchBuilder {
cache :
GlyphCache

pipeline_id : Int
}

#
TextRenderer

pub struct TextRenderer {
inner :
TextRenderer

}

GPU-aware text renderer wrapping @font.TextRenderer. Adds render_text() which produces @gfx.DrawTrianglesCommand.

#
TextRenderer::clear

fn TextRenderer::clear(self : TextRenderer) -> Unit

#
TextRenderer::flush_dirty_pages

#
TextRenderer::get_atlas

#
TextRenderer::get_page

fn TextRenderer::get_page(self : TextRenderer, index : Int) ->
GlyphAtlas

#
TextRenderer::get_page_id

fn TextRenderer::get_page_id(self : TextRenderer) -> Int

#
TextRenderer::get_page_ids

fn TextRenderer::get_page_ids(self : TextRenderer) -> Array[Int]

#
TextRenderer::glyph_count

fn TextRenderer::glyph_count(self : TextRenderer) -> Int

#
TextRenderer::load_atlas_cache

fn TextRenderer::load_atlas_cache(self : TextRenderer, data : Array[Int]) -> Bool

Replace the first page of a TextRenderer with deserialized data. Accepts a single page's serialized data (Array[Int]).

#
TextRenderer::measure

fn TextRenderer::measure(self : TextRenderer, text : String, size_px : Double) ->
TextMetrics

Measure text dimensions without rasterizing.

#
TextRenderer::new

fn TextRenderer::new(font :
TTFont
, atlas_size : Int, base_page_id : Int, pipeline_id : Int) -> TextRenderer

#
TextRenderer::new_with_options

fn TextRenderer::new_with_options(font :
TTFont
, atlas_size : Int, base_page_id : Int, pipeline_id : Int, max_pages : Int) -> TextRenderer

#
TextRenderer::page_count

fn TextRenderer::page_count(self : TextRenderer) -> Int

#
TextRenderer::render_text

fn TextRenderer::render_text(self : TextRenderer, text : String, size_px : Double, x : Double, y : Double, dst :
ImageHandle
, shader :
ShaderHandle
, blend :
BlendMode
, uniform_dwords : Array[Int]) -> Array[
DrawTrianglesCommand
]

Render text at the given position, returning draw commands ready for the graphics pipeline. Also rasterizes any new glyphs into the atlas.

#
font_data_to_bytes

fn font_data_to_bytes(data : Array[Int]) -> Bytes

#
load_font

fn load_font(name : String) ->
TTFont
?

#
load_font_engine_from_bytes

fn load_font_engine_from_bytes(data : Bytes) -> SimpleFontEngine?

Load font engine from raw bytes.

#
load_text_renderer

fn load_text_renderer(name : String, atlas_size : Int, page_id : Int, pipeline_id : Int) -> TextRenderer?

#
new_font_load_hooks

fn new_font_load_hooks(load_font_data : (String) -> Array[Int]?) -> FontLoadHooks

#
parse_font_bytes

fn parse_font_bytes(data : Bytes) ->
TTFont
?

Parse font from raw bytes (auto-detects TTF/OTF/WOFF1/WOFF2).

#
reset_font_load_hooks

fn reset_font_load_hooks() -> Unit

#
set_font_load_hooks

fn set_font_load_hooks(hooks : FontLoadHooks) -> Unit

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io