Repository navigation
Pages can now end flush with the content bottom. With BrowserLayoutConfig.bottomJustify, a horizontal page that ends because its next text line no longer fits spreads the space left below its last line evenly over its line gaps: line k moves down by k × leftover ÷ (lines − 1), so the first line keeps its place and the last line's ink sits on the content bottom (legado's textBottomJustify).
- The page's fragments carry the moved geometry, so painting, hit testing, selection, links and highlights follow without change. Decoration boxes stretch with the lines they hold.
- A page keeps its lines when it ends at a forced break, an image, a float or a box start; when it is the document's last page; when the line that moved on is more than twice the last line's box (a display-size heading); when its last line is a block image; and when a box opens below its last line.
- Horizontal pages only. Vertical writing and continuous scrolling are never justified.
- Off by default; with it off, pages lay out exactly as in 0.8.0. It is not a cascade input, so an evaluation accepts a configuration that adds it.
Validation: the full package suite passes on iOS Simulator (183 tests), including session-versus-batch parity for justified pages. In Yuedu Reader, EPUB pages through the BrowserAuto engine end on the content bottom with the setting on.