import CoreText import UIKit #if canImport(DTCoreText) import DTCoreText #endif /// CoreText 分页引擎 Facade:将富文本按页面尺寸拆分为多帧(每帧对应一页)。 /// /// 内部委托给三个组件: /// - RDEPUBCoreTextPageFrameFactory — 帧创建、属性查询、诊断 /// - RDEPUBPageBreakPolicy — 分页规则(语义保护、keepWithNext) /// - RDEPUBChapterPageCounter — 顶层分页循环编排 struct RDEPUBTextLayouter { private let counter: RDEPUBChapterPageCounter init(attributedString: NSAttributedString, pageSize: CGSize, config: RDEPUBTextLayoutConfig = .default) { let factory = RDEPUBCoreTextPageFrameFactory(attributedString: attributedString, pageSize: pageSize, config: config) self.counter = RDEPUBChapterPageCounter(factory: factory) } /// 执行分页,返回布局帧列表(每帧对应一页)。 func layoutFrames(fragmentOffsets: [String: Int] = [:]) -> [RDEPUBTextLayoutFrame] { counter.layoutFrames(fragmentOffsets: fragmentOffsets) } }