Bevy UI Text
Bevy UI 文本布局系统的核心概念与底层修复记录。
文本布局架构
Bevy UI 文本布局系统的核心结构包括:
GlyphRun:一组共享相同样式的连续字形RunGeometry:字形运行的几何边界框BreakerState:断行状态机,控制文本换行逻辑
近期修复
RunGeometry 边界框计算修复(2026-05-12)
PR #24247 修复了 RunGeometry 边界框计算中的冗余累加错误。GlyphRun::offset 已包含 inline_min_coord,但此前代码重复加了一次。
当前因 BreakerState::set_line_x 未被调用而未触发可见 bug,但为潜在隐患。修复属于 UI/文本系统底层正确性保障。
字体图集 padding 计算修复(2026-08-07)
PR #25225 修复了边界尺寸字形(如 1021px)触发 panic 的问题。add_glyph_to_atlas 此前按字形原始尺寸 next_power_of_two 创建图集(1021→1024),但 DynamicTextureAtlasBuilder 在四周各预留 2px padding,实际需要 1025px,导致插入时 panic。
修复在计算前加入 GLYPH_ATLAS_PADDING * 2 再取幂:
glyph_max_size
.saturating_add(GLYPH_ATLAS_PADDING * 2) // 先加双侧 padding
.next_power_of_two()
.max(512)该 bug 最初在移动端 WebGPU(Samsung Galaxy A14)上的大尺寸 Text2d 标签触发(Issue #25224)。WebGPU/移动平台纹理尺寸上限更严格,对这类边界字形更敏感。
相关页面
- bevy — Bevy 引擎总览
- bevy-game-dev-2026-08 — 2026 年 8 月引擎变更追踪
- bevy-game-dev-2026-05 — 2026 年 5 月引擎变更追踪
- bevy-rendering — 渲染系统概念
- bevy-migration-2026-08 — 2026 年 8 月迁移注意事项