架构概览¶
Accompanist 采用独特的混合架构以避免 Skia 上 bug 多多的 drawText 并确保高性能。
混合架构¶
- Kotlin/Compose:处理高层 UI 逻辑、动画状态管理和基础渲染。
- Rust (NativeTextEngine):处理复杂的文本布局、塑形并生成 SDF图集。
组件架构¶
系统主要分为两层:
-
UI 层 (Kotlin):
KaraokeLyricsView: 主要的 Composable 入口。LyricsState: 管理滚动和当前行状态。KaraokeLineText: 使用引擎提供的纹理渲染单行歌词。
-
引擎层 (Rust):
- 塑形 (Shaping): 使用
rustybuzz(harfbuzz port) 进行精确的文本塑形。 - SDF 生成: 生成有向距离场 (SDF) 以支持清晰的文本缩放。
- 图集管理 (Atlas Management): 高效地将字形打包到纹理中。
- 塑形 (Shaping): 使用