# EPUBTextRendering 模块代码级参考文档 > 最后更新:2026-06-18 --- ## 1. 模块概述 `EPUBTextRendering` 是 ReadViewSDK 的**文本渲染层**,负责将 EPUB HTML 内容转换为原生 `NSAttributedString`,执行排版分页,并构建全书文本模型。它位于 EPUBCore 之上、EPUBUI 之下,是 `textReflowable` 阅读配置文件的核心引擎。 **文件清单(~30 个 Swift 文件):** | 子系统 | 核心文件 | 职责 | |--------|----------|------| | **排版管线** | `Typesetter/RDEPUBTypesettingPipeline.swift` | HTML → 标记化 HTML 的多阶段管线 | | **文本渲染** | `RDEPUBTextRenderer.swift`, `RDEPUBDTCoreTextRenderer.swift` | HTML → NSAttributedString 转换 | | **分页引擎** | `Pagination/*.swift` | CoreText 排版、页帧计算、分页策略 | | **构建管线** | `BuildPipeline/*.swift` | 全书构建(渲染 → 分页 → 缓存) | | **搜索** | `RDEPUBTextSearchEngine.swift` | 基于原生文本的全文搜索 | | **索引** | `RDEPUBTextIndexTable.swift` | 全书字符偏移索引、CFI 映射 | | **位置转换** | `RDEPUBTextPositionConverter.swift` | 字符偏移 ↔ 页码转换 | | **章节数据** | `RDEPUBChapterData.swift` | 章节级数据访问封装 | --- ## 2. 排版管线(Typesetter) ### 2.1 RDEPUBTextTypesettingPipeline **文件:** `Typesetter/RDEPUBTypesettingPipeline.swift` 多阶段 HTML 处理管线,将原始 HTML 转换为可渲染的标记化 HTML。 ```swift struct RDEPUBTextTypesetterPipeline { func makeRequest(from input: RDEPUBTypesettingInput) -> RDEPUBTypesettingOutput } ``` **管线阶段:** ``` 原始 HTML │ ▼ RDEPUBHTMLNormalizer → 清理 HTML(移除脚本、修复标签) │ ▼ RDEPUBSemanticMarkerInjector → 注入语义标记(段落、列表、表格等) │ ▼ RDEPUBCFIMarkerInjector → 注入 CFI 定位标记 │ ▼ RDEPUBStyleSheetComposer → 合并样式表(内联 CSS + 兼容性处理) │ ▼ RDEPUBFontNormalizer → 注册嵌入字体、字体回退 │ ▼ RDEPUBFragmentMarkerInjector → 注入片段标记(用于锚点定位) │ ▼ 标记化 HTML + 诊断报告 ``` ### 2.2 管线输入/输出 ```swift struct RDEPUBTypesettingInput { var href: String // 章节 href var spineIndex: Int? var title: String // 章节标题 var rawHTML: String // 原始 HTML var baseURL: URL? // 资源基础 URL var style: RDEPUBTextRenderStyle // 渲染样式 var resourceResolver: RDEPUBResourceResolver? var contentLanguageCode: String? var pageSize: CGSize? var layoutConfig: RDEPUBTextLayoutConfig? } struct RDEPUBTypesettingOutput { var request: RDEPUBTextChapterRenderRequest // 渲染请求 var diagnostics: [RDEPUBTextResourceReferenceDiagnostic] // 资源引用诊断 var styleCompatibilityReport: RDEPUBCSSCompatibilityReport // CSS 兼容性报告 } ``` ### 2.3 各阶段处理器 | 处理器 | 文件 | 职责 | |--------|------|------| | `RDEPUBHTMLNormalizer` | `RDEPUBHTMLNormalizer.swift` | 清理 HTML:移除 `