Skip to content

fix: honor PPTX table-cell first-line indents - #2043

Merged
developer0hye merged 6 commits into
mainfrom
fix/issue-2041-table-hanging-indent
Oct 10, 2026
Merged

developer0hye merged 6 commits into
mainfrom
fix/issue-2041-table-hanging-indent

Conversation

@developer0hye

@developer0hye developer0hye commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

File submission policy

  • Evidence uses the existing public fixture and satisfies the submission policy.

Summary

PPTX parsing preserves the paragraph left margin (marL) and signed first-line offset (indent), but table-cell rendering previously applied only the paragraph margins and omitted the signed first-line offset. The renderer now applies the signed offset as a first-line indent in either direction, so continuation lines stay at the paragraph left margin.

The geometry regression uses a fixed Libertinus Serif 10 pt font and a 110 pt cell to force wrapping. It checks negative, zero, and positive offsets, including that only the first line moves. The parser regression checks the reported 60.75 pt left margin and -18 pt offset.

Related issue

Related: #2041

Testing

  • cargo fmt --all -- --check and git diff --check passed.
  • cargo test --locked --workspace --profile ci passed after integrating main 71e10311 (3,579 library tests, integration suites, and doctests).
  • cargo clippy --locked --workspace --all-targets -- -D warnings passed.
  • Fresh native PowerPoint comparison: both pages pass layout and searchable-text checks, with zero material clusters in strict render audits.

Visual impact

  • No rendered PDF change
  • Rendered PDF change or visual evidence added

Visual audit

  • Issue: PPTX: table-cell hanging indent is ignored #2041
  • Fixture: tests/fixtures/pptx/oxp_PB001-Input1.pptx
  • Page(s): 1, 2
  • Renderer and DPI: pdftoppm, 150 DPI
  • Evidence mode: fix
  • Layout audit report: assets/bugfixes/issue-2041/layout-audit.json
  • Render cluster reports: assets/bugfixes/issue-2041/render-clusters-page-1.json, assets/bugfixes/issue-2041/render-clusters-page-2.json
  • Reference exporter differences: None
  • Fine-detail threshold: 1pt
  • Layout audit page count: Pass
  • Layout audit text flow: Pass
  • Layout audit visible fills: Pass
  • Layout audit rectangle geometry: Pass
  • Layout audit large shifts: Pass
  • Layout audit fine shifts: Pass
  • New follow-up issues found in this audit: None
  • Model vision findings: Full pages, diffs and matched title/header/photo/logo/table/footer crops were inspected. Page 2's four affected entries now align with the native table. Their a:pPr/@indent=-228600 is an -18pt first-line offset, separate from marL=771525. The cover, all table labels and page numbers remain intact; bold headings, blue/gray text and dotted leaders agree. The 0.5pt solid rules/branches and 0.5/0.5pt dotted leaders retain their trace widths and positions. Native strokes have negligible endpoint slope, giving different fractional pixel coverage. Photo resampling and glyph-edge differences stay below the material-cluster floor. No new material deviation was observed.
  • GT: assets/bugfixes/issue-2041/gt.jpg
  • Before: assets/bugfixes/issue-2041/before.jpg
  • After: assets/bugfixes/issue-2041/after.jpg
  • Native: None

Visual comparison

GT Before After
GT Before After

Required inspection

  • Rendered all evidence at 150 DPI or higher
  • Stored progressive JPEG quality 86 assets with metadata stripped
  • Used Codex/Claude vision to inspect the full GT/output pages, diff, and matched crops
  • Inspected matched region crops at full resolution
  • Ran compare_layout.py --audit --fine-shift PT and dispositioned every fine/large text-instance shift, rectangle geometry deviation, painted-text visibility mismatch, and visible-fill occlusion
  • Ran compare_render.py --cluster-report PATH --strict-clusters and dispositioned every material 5% fuzz diff cluster by explicit ID
  • Inventoried hairlines and border dash styles
  • Inventoried font weight, italic, and underline emphasis

Deviation audit

Check Result
Page count/order Matches GT
Element presence Matches GT
Position/size Matches GT
Rotation/flip No deviation observed
Fill Matches GT
Stroke/border Matches GT
Shape outline geometry Matches GT
Text content Matches GT
Font family/weight/style Matches GT
Text color Matches GT
Alignment Fixed — four table entries retain their -18pt first-line offset and align with native PowerPoint.
Line/paragraph spacing Matches GT
Clipping/overflow No deviation observed

Checklist

  • Commits include a Signed-off-by line
  • PR scope contains one root cause
  • Remaining converter or harness deviations each reference an open issue

Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
@developer0hye
developer0hye marked this pull request as ready for review October 10, 2026 15:42
@developer0hye
developer0hye merged commit 7581855 into main Oct 10, 2026
26 of 27 checks passed
@developer0hye
developer0hye deleted the fix/issue-2041-table-hanging-indent branch October 10, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant