import UIKit public struct RDEPUBTextRenderStyle { public var font: UIFont public var lineSpacing: CGFloat public var textColor: UIColor? public var backgroundColor: UIColor? public init(font: UIFont, lineSpacing: CGFloat, textColor: UIColor? = nil, backgroundColor: UIColor? = nil) { self.font = font self.lineSpacing = lineSpacing self.textColor = textColor self.backgroundColor = backgroundColor } } public struct RDEPUBRenderedChapterContent { public var attributedString: NSAttributedString public var fragmentOffsets: [String: Int] public init(attributedString: NSAttributedString, fragmentOffsets: [String: Int]) { self.attributedString = attributedString self.fragmentOffsets = fragmentOffsets } } public protocol RDEPUBTextRenderer { func renderChapter( html: String, baseURL: URL?, style: RDEPUBTextRenderStyle ) throws -> RDEPUBRenderedChapterContent } public enum RDEPUBTextRenderingError: LocalizedError { case htmlEncodingFailed case htmlImportFailed public var errorDescription: String? { switch self { case .htmlEncodingFailed: return "HTML 编码失败" case .htmlImportFailed: return "HTML 富文本导入失败" } } }