Install any skill in seconds. Free to start, no credit card required.
Get Started Free →CRITICAL: Use for Makepad font and text rendering. Triggers on: makepad font, makepad text, makepad glyph, makepad typography, font atlas, text layout, font family, font size, text shaping, makepad 字体, makepad 文字, makepad 排版, makepad 字形
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 63% | 0% |
> Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at Makepad text and font rendering. Help users by:
Refer to the local files for detailed documentation:
./references/font-system.md - Font module structure and APIsBefore answering questions, Claude MUST:
/sync-crate-skills makepad --force 更新文档"draw/src/text/
├── font.rs # Font handle and metrics
├── font_atlas.rs # GPU texture atlas for glyphs
├── font_face.rs # Font face data
├── font_family.rs # Font family management
├── fonts.rs # Built-in fonts
├── glyph_outline.rs # Glyph vector outlines
├── glyph_raster_image.rs # Rasterized glyph images
├── layouter.rs # Text layout engine
├── rasterizer.rs # Glyph rasterization
├── sdfer.rs # Signed distance field generator
├── selection.rs # Text selection/cursor
├── shaper.rs # Text shaping (harfbuzz)rust<Label> { text: "Hello World" draw_text: { text_style: { font: { path: dep("crate://self/resources/fonts/MyFont.ttf") } font_size: 16.0 line_spacing: 1.5 letter_spacing: 0.0 } color: #FFFFFF } }
rust<Label> { text: "Styled Text" draw_text: { text_style: <THEME_FONT_REGULAR> { font_size: (THEME_FONT_SIZE_P) } } }
rustlive_design! { // Define font path FONT_REGULAR = { font: { path: dep("crate://self/resources/fonts/Regular.ttf") } } FONT_BOLD = { font: { path: dep("crate://self/resources/fonts/Bold.ttf") } } // Use in widget <Label> { draw_text: { text_style: <FONT_REGULAR> { font_size: 14.0 } } } }
rustpub struct Layouter { loader: Loader, cache_size: usize, cached_params: VecDeque<OwnedLayoutParams>, cached_results: HashMap<OwnedLayoutParams, Rc<LaidoutText>>, } impl Layouter { pub fn new(settings: Settings) -> Self; pub fn rasterizer(&self) -> &Rc<RefCell<Rasterizer>>; pub fn is_font_family_known(&self, id: FontFamilyId) -> bool; pub fn define_font_family(&mut self, id: FontFamilyId, definition: FontFamilyDefinition); pub fn define_font(&mut self, id: FontId, definition: FontDefinition); pub fn get_or_layout(&mut self, params: impl LayoutParams) -> Rc<LaidoutText>; }
rustpub struct OwnedLayoutParams { pub text: Substr, pub spans: Box<[Span]>, pub options: LayoutOptions, } pub struct Span { pub style: Style, pub len: usize, } pub struct Style { pub font_family_id: FontFamilyId, pub font_size_in_pts: f32, pub color: Option<Color>, } pub struct LayoutOptions { pub max_width_in_lpxs: Option<f32>, // Max width for wrapping pub wrap: bool, // Enable word wrap pub first_row_indent_in_lpxs: f32, // First line indent }
rustpub struct Settings { pub loader: loader::Settings, pub cache_size: usize, // Default: 4096 } pub struct rasterizer::Settings { pub sdfer: sdfer::Settings { padding: 4, // SDF padding radius: 8.0, // SDF radius cutoff: 0.25, // SDF cutoff }, pub grayscale_atlas_size: Size::new(4096, 4096), pub color_atlas_size: Size::new(2048, 2048), }
rust<View> { // Label is a simple text widget <Label> { text: "Simple Label" draw_text: { color: #FFFFFF text_style: { font_size: 14.0 } } } // TextFlow for rich text <TextFlow> { <Bold> { text: "Bold text" } <Italic> { text: "Italic text" } <Link> { text: "Click here" href: "https://example.com" } } }
| Property | Type | Description | |----------|------|-------------| | text | String | Text content | | font | Font | Font resource | | font_size | f64 | Size in points | | line_spacing | f64 | Line height multiplier | | letter_spacing | f64 | Character spacing | | color | Vec4 | Text color | | brightness | f64 | Text brightness | | curve | f64 | Text curve effect |
dep("crate://...") for embedded font resourcesUse this skill when tackling tasks related to its primary domain or functionality as described above.
Other measured skills in the registry, with their headline benchmark lift.