ReadViewSDK/.planning/phases/03-page-metadata-pagination/03-02-SUMMARY.md

1.1 KiB

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