跳转至

架构概览

Accompanist 采用独特的混合架构以避免 Skia 上 bug 多多的 drawText 并确保高性能。

混合架构

  • Kotlin/Compose:处理高层 UI 逻辑、动画状态管理和基础渲染。
  • Rust (NativeTextEngine):处理复杂的文本布局、塑形并生成 SDF图集。

组件架构

系统主要分为两层:

  1. UI 层 (Kotlin):

    • KaraokeLyricsView: 主要的 Composable 入口。
    • LyricsState: 管理滚动和当前行状态。
    • KaraokeLineText: 使用引擎提供的纹理渲染单行歌词。
  2. 引擎层 (Rust):

    • 塑形 (Shaping): 使用 rustybuzz (harfbuzz port) 进行精确的文本塑形。
    • SDF 生成: 生成有向距离场 (SDF) 以支持清晰的文本缩放。
    • 图集管理 (Atlas Management): 高效地将字形打包到纹理中。