mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-29 12:57:09 -06:00
A paragraph with keep with next measures the paragraph after it before it is placed (next_first_line). That measurement called layout_para directly, so every paragraph following a heading was laid out twice in each layout pass: once to measure it and once, through the cache, when it was placed. The measurement now goes through the layout cache under the key para_labelled uses (Ctx::para_ahead) when its inputs are the same: no proofing, no typed word, not inside a text box, no inline text boxes that resize, the body's tracked-deletion view. Otherwise it is laid out on its own as before. It counts nothing (list labels, equation numbers and the page-total flag are restored), so pagination is unchanged. Adds crates/engine/examples/export_bench.rs, which saves a long generated document (the sample document 200 times, 259 pages) through io::save_bytes and prints wall times: cargo run --release -p wordcraft-engine --example export_bench -- pdf 200 9 PDF export on that document, interleaved with main (Ryzen, 16 threads): median 286 ms -> 256 ms (-10.6 %). The PDF bytes are identical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>