22 lines
1.1 KiB
Markdown
22 lines
1.1 KiB
Markdown
# 03-02 Summary
|
|
|
|
## Outcome
|
|
|
|
Wave 2 replaced the range-only pagination path with an internal layouter/frame vocabulary inside `EPUBTextRendering`.
|
|
|
|
- Added `RDEPUBTextLayouter.swift`
|
|
- Added `RDEPUBTextLayoutFrame.swift`
|
|
- Updated `RDEPUBTextPaginationSupport.swift` so `ss_pageRanges(size:)` now delegates to `rd_paginatedFrames(size:fragmentOffsets:)`
|
|
- Updated `RDEPUBTextBookBuilder` and `RDPlainTextBookBuilder` to build pages from layout frames instead of bare `NSRange` slices
|
|
|
|
## New Semantics
|
|
|
|
- Page breaks now carry one of `chapterEnd`, `frameLimit`, `blockBoundary`, or `attachmentBoundary`
|
|
- Layout frames capture block-range context, attachment ranges/kinds, trailing fragment id, and page-edge diagnostics
|
|
- The layouter still uses CoreText measurement, but page boundaries are adjusted with block/attachment-aware rules before serialization back into `RDEPUBTextPage`
|
|
|
|
## Compatibility
|
|
|
|
- Final output is still `RDEPUBTextBook(chapters: pages:)`
|
|
- `pageStartOffset` / `pageEndOffset` remain the compatibility key for search, highlights, and later reader reintegration
|