docs: update planning for direct reflowable engine rewrite
This commit is contained in:
+32
-20
@@ -5,47 +5,59 @@
|
||||
|
||||
## v1 需求(本次范围)
|
||||
|
||||
### 渲染(Reflowable EPUB)
|
||||
### 渲染内核重构(Reflowable EPUB)
|
||||
|
||||
- [ ] **REND-01**:reflowable EPUB 的正文渲染/排版/分页改为参考 `Doc/WXRead/` 的“微信读书(WXRead)渲染方式”,不再依赖现有 reflowable 的 `WKWebView` 渲染路径
|
||||
- [ ] **REND-02**:Fixed Layout EPUB 与交互式 EPUB 继续使用 `WKWebView`,行为不因本次改造产生回归
|
||||
- [ ] **REND-03**:reflowable EPUB 新旧渲染切换具备清晰的判定条件(例如:固定版式/交互式走 `WKWebView`;普通正文走原生渲染),且可通过 Demo 明确验证
|
||||
- [ ] **REND-01**:直接重构当前 `.textReflowable` 路径,使 reflowable EPUB 不再依赖当前“简单 `DTCoreText` renderer + `pageRanges` 切页”模式,而是具备 WXRead 风格的页面级原生排版能力
|
||||
- [ ] **REND-02**:在旧引擎基础上引入 WXRead 风格的 CSS 分层策略(`default / replace / dark / epub / user`),并让样式作用于章节级 HTML → `NSAttributedString` 转换过程
|
||||
- [ ] **REND-03**:在旧引擎基础上引入自定义 DTCoreText 属性体系与页面级 `NSAttributedString` 元数据,能够承载分页、块元素、图片、页面语义等布局信息
|
||||
- [ ] **REND-04**:将当前简单的 CoreText 切页逻辑升级为具备页面语义的复杂分页器,具备与 `WRCoreTextLayouter / WRCoreTextLayoutFrame` 核心能力等价的分页与页面布局控制能力
|
||||
|
||||
### 稳定性(回归保障)
|
||||
### 兼容性与主流程
|
||||
|
||||
- [ ] **STAB-01**:不破坏现有“通过 `RDURLReaderController` 打开 `.epub` / `.txt` 并进入阅读器”的主流程
|
||||
- [ ] **STAB-02**:改造后的 reflowable EPUB 在常见内容(图片、基础 CSS、段落/标题、链接等)下渲染稳定,不出现崩溃/白屏/无限加载等关键问题
|
||||
- [ ] **COMP-01**:`RDURLReaderController` / `RDEPUBReaderController` 作为公开入口继续可用,`.epub` / `.txt` 打开主流程不回归
|
||||
- [ ] **COMP-02**:Fixed Layout EPUB 与交互式 EPUB 继续使用 `WKWebView`,行为不因本次改造产生回归
|
||||
- [ ] **COMP-03**:reflowable EPUB 的阅读位置映射、高亮/选区、搜索结果定位、字号/行高/主题切换后的重新分页在新内核下继续可用
|
||||
|
||||
### 稳定性与验证
|
||||
|
||||
- [ ] **STAB-01**:至少 3 类样本书验证通过:纯文本/小说类、含图片与复杂段落样式的章节、含外链与多个 CSS 文件引用的章节
|
||||
- [ ] **STAB-02**:以上样本在新内核下不出现崩溃、白屏、无限加载、严重错页或关键交互链路失效
|
||||
|
||||
## v2 需求(延期)
|
||||
|
||||
### 功能扩展(暂不进入本次路线图)
|
||||
### 后续增强(不进入当前路线图)
|
||||
|
||||
- **PERF-01**:定义并达成明确的性能指标(首屏、翻页耗时、内存峰值)与持续监控方案
|
||||
- **QA-01**:补齐系统化的自动化测试矩阵(渲染对齐、分页一致性、回归用例集合)
|
||||
- **PERF-01**:定义并达成明确性能指标(首屏、翻页耗时、内存峰值)与持续监控方案
|
||||
- **INTL-01**:更完整的国际化排版增强(如更细粒度 RTL / 连字符断字 / 多语种高级回退)
|
||||
|
||||
## 不做(防止范围漂移)
|
||||
|
||||
| 功能 | 原因 |
|
||||
|---|---|
|
||||
| Fixed Layout EPUB 切换到原生渲染 | 本次明确保留 `WKWebView` 路径以控制风险 |
|
||||
| 交互式 EPUB 切换到原生渲染 | 交互能力(JS/音视频/表单/iframe/外链/bridge)更适配 `WKWebView`,本次不改 |
|
||||
| 除 reflowable EPUB 渲染改造外的大范围功能/交互/持久化重做 | 控制改动半径,聚焦核心渲染替换 |
|
||||
| Fixed Layout EPUB 改为原生渲染 | 本次明确保留 `WKWebView` 路径以控制风险 |
|
||||
| 交互式 EPUB 改为原生渲染 | 交互能力(JS/音视频/表单/iframe/外链/bridge)更适配 `WKWebView`,本次不改 |
|
||||
| 直接拷贝使用微信读书私有 JS/CSS/私有实现代码 | 只能参考设计与行为,不直接搬运私有实现 |
|
||||
| 同时保留两套 reflowable 原生引擎 | 本次要求直接演进旧引擎,不维护双轨 |
|
||||
|
||||
## 可追溯性(需求 ↔ Phase)
|
||||
|
||||
| 需求 | Phase | 状态 |
|
||||
|---|---:|---|
|
||||
| REND-01 | Phase 2 | Pending |
|
||||
| REND-02 | Phase 1 | Pending |
|
||||
| REND-03 | Phase 2 | Pending |
|
||||
| STAB-01 | Phase 3 | Pending |
|
||||
| STAB-02 | Phase 3 | Pending |
|
||||
| REND-02 | Phase 2 | Pending |
|
||||
| REND-03 | Phase 3 | Pending |
|
||||
| REND-04 | Phase 3 | Pending |
|
||||
| COMP-01 | Phase 4 | Pending |
|
||||
| COMP-02 | Phase 1 | Pending |
|
||||
| COMP-03 | Phase 4 | Pending |
|
||||
| STAB-01 | Phase 5 | Pending |
|
||||
| STAB-02 | Phase 5 | Pending |
|
||||
|
||||
**覆盖统计:**
|
||||
- v1 需求总数:5
|
||||
- 已映射到 phases:5
|
||||
- v1 需求总数:9
|
||||
- 已映射到 phases:9
|
||||
- 未映射:0 ✓
|
||||
|
||||
---
|
||||
*Requirements defined: 2026-05-21*
|
||||
*Last updated: 2026-05-21 after initial definition*
|
||||
*Last updated: 2026-05-21 after scope update*
|
||||
|
||||
Reference in New Issue
Block a user