Skip to content

Suppress paragraph space-before at the top of a new page #428

Description

@JSv4

Summary

Docxodus paints a paragraph's w:spacing/@w:before when that paragraph begins a new page, placing page-top headings about 15 px lower than Microsoft Word.

This residual was isolated in the legal-contract case while adding Microsoft Graph Word-reference captures in PR #423. It is separate from the list-number suffix-tab bug completed in #415.

Reproduction

Render TestFiles/VP/VP004-Legal-Contract.docx in paginated mode at 96 DPI and compare the first visible heading/content on pages 2 and 3.

Evidence

Page Microsoft Graph first ink row LibreOffice first ink row Docxodus first ink row
2 100 px 99 px 115 px
3 100 px 99 px 115 px

Both independent office renderers suppress the heading's space-before at the top of these pages. Docxodus retains approximately 15 px.

For the three-page fixture, Docxodus-versus-Word measured mean SSIM 0.69031 and worst ink F1 0.51261; LibreOffice-versus-Word measured mean SSIM 0.93049 and worst ink F1 0.99737. The exact first-ink rows isolate this defect from font differences and the other content on the pages.

Expected

When this paragraph is laid out at the top of a new page, its space-before should be suppressed as Word does.

Actual

Docxodus applies the space-before as a visible top offset after pagination.

Acceptance criteria

  • Add a minimal generated DOCX regression with a spaced-before paragraph beginning a new page.
  • Cover the relevant break mechanisms present in the fixture (and document which mechanism controls suppression).
  • Assert page-top geometry independently of font glyph shapes.
  • Suppress only the Word-equivalent page-top spacing; preserve ordinary inter-paragraph spacing.
  • Rerun the tracked legal-contract visual-parity case and record the improvement.

Provenance

Microsoft Graph conversion reference: Microsoft Graph v1.0 DOCX-to-PDF conversion, rasterized at 96 DPI. The reproducible capture and measurement metadata are being added by PR #423; no Word artifact needs to be committed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions