SuperAPI AI 工具集

makepad-font

编程与开发

查看项目

更新于 10-16 04:48

技能介绍

本技能用于 Makepad 框架下的字体与文本渲染相关工作。版本标注为 makepad-widgets(dev branch),最后更新日期为 2026-01-19,并给出 crates.io 上 makepad-widgets 的更新检查链接:https://crates.io/crates/makepad-widgets。

用途

该技能定位为 Makepad 文本与字体渲染的专家能力,帮助处理字体配置、文本布局与文本渲染相关问题。触发场景包括 makepad font、makepad text、makepad glyph、makepad typography、font atlas、text layout 等关键词。

主要能力与模块结构

资料给出文本模块的目录结构 draw/src/text/,包含:font.rs(字体句柄与度量)、font_atlas.rs(字形的 GPU 纹理图集)、font_face.rs(字体面数据)、font_family.rs(字族管理)、fonts.rs(内置字体)、glyph_outline.rs(字形矢量轮廓)、glyph_raster_image.rs(光栅化字形图像)、layouter.rs(文本布局引擎)、rasterizer.rs(字形光栅化)、sdfer.rs(有符号距离场生成器)、selection.rs(文本选择/光标)、shaper.rs(使用 harfbuzz 的文本整形)。

使用方式(基于资料中的示例)

  1. DSL 中使用字体:在 <Label> 的 draw_text.text_style 中配置 font(如 path: dep("crate://self/resources/fonts/MyFont.ttf"))、font_size、line_spacing、letter_spacing 及 color。
  2. 主题字体:通过 <THEME_FONT_REGULAR> 继承主题字体,并覆盖 font_size(如 (THEME_FONT_SIZE_P))。
  3. 在 live_design! 中定义字体:以 FONT_REGULAR、FONT_BOLD 定义 font.path,并在组件文本样式中引用。
  4. Layouter API:Layouter 提供 new、rasterizer、is_font_family_known、define_font_family、define_font、get_or_layout 等方法;布局参数包括 text、spans、options(max_width_in_lpxs、wrap、first_row_indent_in_lpxs)以及 Span/Style(font_family_id、font_size_in_pts、color)。
  5. Rasterizer 设置:包含 sdfer 的 padding(4)、radius(8.0)、cutoff(0.25),以及 grayscale_atlas_size(4096x4096)、color_atlas_size(2048x2048)。
  6. DrawText 组件:<Label> 用于简单文本,<TextFlow> 用于富文本(Bold、Italic、Link,Link 可设置 href)。
  7. 文本属性表:text、font、font_size、line_spacing、letter_spacing、color、brightness、curve。

文档完整性检查

资料要求 Claude 在回答前先阅读所列参考文件(./references/font-system.md);若读取失败或文件为空,应提示「本地文档不完整,建议运行 /sync-crate-skills makepad --force 更新文档」,并仍依据 SKILL.md 模式与内置知识作答;若参考文件存在,则将其内容纳入回答。

适用场景

适用于在 Makepad 中配置字体、处理文本布局与整形、进行 GPU 文本渲染和字形图集管理的开发场景。

限制与注意事项(资料中明确给出)

Makepad 使用 SDF 实现任意缩放下清晰的文本;字体一次加载并缓存于 GPU 纹理图集;文本整形使用 harfbuzz 实现正确的字形定位;嵌入字体资源使用 dep("crate://...");默认字体缓存为 4096 个字形;图集尺寸为灰度 4096x4096、彩色(emoji)2048x2048。资料未提供收费、价格或平台限制等其他信息。