From d15f20b09778e1ad521d0073ab0d03d78772461e Mon Sep 17 00:00:00 2001 From: shenlei Date: Wed, 24 Jun 2026 17:47:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=A4=E4=BA=92=E5=8D=8F=E8=B0=83?= =?UTF-8?q?=E5=99=A8=E6=8B=86=E5=88=86=E3=80=81=E9=99=84=E4=BB=B6=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E3=80=81=E6=9A=97=E8=89=B2=E5=9B=BE=E7=89=87=E9=80=82?= =?UTF-8?q?=E9=85=8D=E3=80=81=E9=80=89=E5=8C=BA=E6=94=BE=E5=A4=A7=E9=95=9C?= =?UTF-8?q?=E5=8F=8A=E6=96=87=E6=A1=A3=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 拆分 ContentDelegates/TextContentView 为独立协调器(InteractionCoordinator、LocationResolution、ExternalLinks、AttachmentTooltip) - 新增 RDEPUBAttachmentTooltipView/OverlayView 附件气泡提示 - 新增 RDEPUBDarkImageAdjuster 暗色模式图片亮度适配 - 新增 RDEPUBSelectionLoupeView 选区放大镜 - 新增 MetadataParseWorker/CancellationController 元数据解析取消机制 - 重构 PresentationRuntime/PaginationCoordinator 精简职责 - 优化 ChapterLoader/WarmupOrchestrator 异步章节加载 - CFI 模块微调与 NoteModels 更新 - 清理冗余文档,更新架构/UML/业务逻辑文档 Co-Authored-By: Claude --- Doc/ARCHITECTURE-CONTEXT.md | 115 - Doc/ARCHITECTURE.md | 4 +- Doc/Android EPUB 阅读器实施方案.md | 606 --- Doc/BUSINESS_LOGIC.md | 6 +- Doc/CHAPTER_RUNTIME.md | 6 +- Doc/EPUBUI_CODE_REFERENCE.md | 8 +- .../ReflowableEPUB_WXReadRenderer_Design.md | 265 -- .../高亮选区复刻WXRead实现方案.md | 365 -- Doc/SDK架构整改路线图.md | 740 ---- Doc/UML_CLASS_DIAGRAMS.md | 18 +- Doc/index.md | 3 +- Doc/readoor-vs-readview-feature-gap.md | 110 - Doc/当前阅读器问题修复开发清单.md | 757 ---- Doc/标准级EPUB定位与兼容能力开发蓝图.md | 744 ---- .../Pods/Pods.xcodeproj/project.pbxproj | 3596 +++++++++-------- .../AsyncChapterLoadingTests.swift | 20 + .../CFI/RDEPUBCFIDOMPathBuilder.swift | 14 +- .../EPUBCore/CFI/RDEPUBCFIParser.swift | 2 +- .../EPUBCore/CFI/RDEPUBCFIPath.swift | 2 +- .../EPUBCore/CFI/RDEPUBCFIResolver.swift | 4 +- .../EPUBCore/Notes/RDEPUBNoteModels.swift | 11 +- .../EPUBCore/RDEPUBReadingSession.swift | 6 +- .../RDEPUBWebView+Configuration.swift | 12 - .../EPUBCore/RDEPUBWebView+FixedLayout.swift | 4 +- .../RDEPUBTextPaginationSupport.swift | 12 - .../RDEPUBTextIndexTable.swift | 9 +- .../Typesetter/RDEPUBStyleSheetComposer.swift | 8 +- .../RDEPUBAttachmentTooltipOverlayView.swift | 36 + .../EPUBUI/RDEPUBAttachmentTooltipView.swift | 188 + ...UBReaderController+AttachmentTooltip.swift | 79 + ...PUBReaderController+ContentDelegates.swift | 517 --- .../RDEPUBReaderController+DataSource.swift | 36 +- ...RDEPUBReaderController+ExternalLinks.swift | 35 + ...BReaderController+LocationResolution.swift | 223 + .../EPUBUI/RDEPUBReaderSearchBarView.swift | 17 +- .../ChapterRuntime/RDEPUBChapterLoader.swift | 217 +- .../RDEPUBChapterRuntimeStore.swift | 26 + .../RDEPUBChapterSummaryDiskCache.swift | 4 +- .../RDEPUBChapterWarmupOrchestrator.swift | 152 +- .../ChapterRuntime/String+SHA256.swift | 11 - ...BMetadataParseCancellationController.swift | 44 + .../RDEPUBMetadataParseWorker.swift | 572 +++ .../RDEPUBPaginationState.swift | 2 +- .../RDEPUBPresentationRuntime.swift | 309 +- .../RDEPUBReaderContext.swift | 8 +- .../RDEPUBReaderPaginationCoordinator.swift | 743 +--- .../RDEPUBReaderRuntime.swift | 6 +- .../RDEPUBReaderServices.swift | 2 +- .../ReaderController/RDEPUBReaderState.swift | 2 +- .../EPUBUI/Settings/RDEPUBReaderTheme.swift | 4 +- .../RDReaderView/EPUBUI/String+RDEPUB.swift | 17 + .../TextPage/RDEPUBDarkImageAdjuster.swift | 92 + .../TextPage/RDEPUBSelectionLoupeView.swift | 78 + ...PUBTextContentInteractionCoordinator.swift | 241 ++ .../TextPage/RDEPUBTextContentView.swift | 533 +-- .../RDReaderView/EPUBUI/UIColor+RDEPUB.swift | 31 + .../Paging/RDReaderPreloadController.swift | 28 +- .../ReaderView/RDReaderView+PageCurl.swift | 14 + .../ReaderView/RDReaderView.swift | 28 +- 59 files changed, 4522 insertions(+), 7220 deletions(-) delete mode 100644 Doc/ARCHITECTURE-CONTEXT.md delete mode 100644 Doc/Android EPUB 阅读器实施方案.md delete mode 100644 Doc/FeatureSolution/ReflowableEPUB_WXReadRenderer_Design.md delete mode 100644 Doc/FeatureSolution/高亮选区复刻WXRead实现方案.md delete mode 100644 Doc/SDK架构整改路线图.md delete mode 100644 Doc/readoor-vs-readview-feature-gap.md delete mode 100644 Doc/当前阅读器问题修复开发清单.md delete mode 100644 Doc/标准级EPUB定位与兼容能力开发蓝图.md create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBAttachmentTooltipOverlayView.swift create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBAttachmentTooltipView.swift create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBReaderController+AttachmentTooltip.swift create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBReaderController+ExternalLinks.swift create mode 100644 Sources/RDReaderView/EPUBUI/RDEPUBReaderController+LocationResolution.swift delete mode 100644 Sources/RDReaderView/EPUBUI/ReaderController/ChapterRuntime/String+SHA256.swift create mode 100644 Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBMetadataParseCancellationController.swift create mode 100644 Sources/RDReaderView/EPUBUI/ReaderController/RDEPUBMetadataParseWorker.swift create mode 100644 Sources/RDReaderView/EPUBUI/String+RDEPUB.swift create mode 100644 Sources/RDReaderView/EPUBUI/TextPage/RDEPUBDarkImageAdjuster.swift create mode 100644 Sources/RDReaderView/EPUBUI/TextPage/RDEPUBSelectionLoupeView.swift create mode 100644 Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentInteractionCoordinator.swift create mode 100644 Sources/RDReaderView/EPUBUI/UIColor+RDEPUB.swift diff --git a/Doc/ARCHITECTURE-CONTEXT.md b/Doc/ARCHITECTURE-CONTEXT.md deleted file mode 100644 index 291d1ef..0000000 --- a/Doc/ARCHITECTURE-CONTEXT.md +++ /dev/null @@ -1,115 +0,0 @@ -# 架构分析:WXRead 参考 vs ReadViewSDK 当前 - -**分析日期:** 2026-05-23 -**分析基础:** `Doc/WXRead/decompiled-doc.md`、`Doc/WXRead/resources-doc.md`、`Doc/WXRead/读书EPUB阅读器实现架构.md` -**状态:** Decisions captured - ---- - - -## 分析范围 - -对比读书 (WeRead v10.0.3) 逆向架构与当前 ReadViewSDK 项目的结构性差距,聚焦四大方向:分页引擎集成、CSS 处理、渲染架构、字体系统。 - -读书 EPUB 渲染的核心架构特征: -- Path A (EPUB): 纯 CoreText 渲染 — `WRPageView.drawRect:` → `CTFrameDraw`,不用 UITextView/UILabel -- 4 级语义断页:`WRCoreTextLayouter` + `WRCoreTextLayoutFrame` (语义边界 > 附件边界 > 块边界 > 帧限制) -- 5 层 CSS 级联:`default.css < replace.css < dark.css < EPUB 内嵌 < 用户设置` -- 字符级位置精度:`WREpubPositionConverter` (fileIndex, row, column) ↔ 全局字符偏移 -- 标注直接在 CTFrame 层叠加绘制,搜索高亮同理 - - - - -## 已决事项 - -### Area 1: 分页引擎集成(P0) - -| 决策 | 说明 | -|------|------| -| 将 `RDEPUBTextLayouter` 集成到 `RDEPUBTextBookBuilder` | 内部调用 `rd_paginatedFrames(size:)` 替代旧的 `ss_pageRanges(size:)`,外部 API 不变 | -| 分页元数据暴露到 `RDEPUBTextPage` | 新增 `metadata: RDEPUBTextPageMetadata` 字段(含 breakReason/blockKinds/semanticHints),对外暴露分页质量数据 | -| `RDEPUBTextChapterPaginationDiagnostic` 增强 | 透传 RDEPUBTextLayoutFrame 的诊断信息 | -| 分页缓存 | 按 `bookID + fontSize + lineHeightMultiple + contentInsets` 生成缓存 key,缓存完整 `RDEPUBTextBook` 到磁盘 | - -### Area 2: CSS `` 外部样式表处理(P0) - -| 决策 | 说明 | -|------|------| -| 预处理内联 CSS | 渲染前扫描 HTML 中 `` 标签,从 EPUB 解压目录读取 CSS 内容,注入 `