Skip to content

fix: preserve declared chart series stroke geometry - #1594

Merged
developer0hye merged 1 commit into
mainfrom
fix/issue-1590-chart-series-stroke-geometry
Sep 6, 2026
Merged

developer0hye merged 1 commit into
mainfrom
fix/issue-1590-chart-series-stroke-geometry

Conversation

@developer0hye

Copy link
Copy Markdown
Owner

Summary

Preserve the chart series' declared cap, join and miter limit through parsing and rendering. Plot lines and legend samples now use the same geometry, matching native Excel's round/flat/square and round/miter/bevel controls. Values, width, color and marker paint are preserved.

Related: #1590. Related chart-style inheritance remains tracked separately in #1593.

Testing

  • The compiled-frame regression fails before the fix and passes afterward for 18 line, mixed column/line, and radar cases, checking both plot and legend strokes. Separate parser tests prevent nested marker/data-point/label styles from supplying series geometry.
  • cargo test --locked --workspace --no-fail-fast: 3,495 passed, 15 ignored, none failed.
  • cargo clippy --locked --workspace --all-targets -- -D warnings, cargo fmt --all --check, and git diff --check: passed.
  • Seven required native Excel 16.112.3 cases match after the fix. Re-zip controls and all native integrity checks pass. A final-quit export error is independently tracked in Native Excel exporter reports completed batches as failed when final quit is cancelled #1592; completed exports were preserved and verified.
  • Fifteen before/after cases preserve all other paint primitives and both text/layout findings. Page 1 is unchanged. Six-page 300-DPI audit: all 2,533 material clusters have explicit passing dispositions. Default extraction retains baseline table reading-order differences and ten extra space-census entries; pdftotext -layout has matching non-whitespace text.
  • Documentation freshness review: PASS. Reproduction: scripts/probes/issue-1590-series-stroke.json and the evidence README.

Visual impact

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

Visual audit

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 Remaining: #1592 native exporter reports final-quit cancellation after completed exports. Verified collection matches GT: original two sheets plus four deliberate series-stroke probes. The omitted-limit control matches page 5's complete paint trace.
Element presence Remaining: #1566 omitted worksheet separators. Series, markers, axes and labels preserve their source-defined presence.
Position/size Remaining: #1272 chart frame, #1542 drawing origin, #1543 fitted column width, #1545 row text, #1550 title height, #1552 footer, #1577 cached marker value.
Rotation/flip No deviation observed
Fill Matches GT: series color and opaque marker paint are preserved.
Stroke/border Remaining: #1564 worksheet rule thickness/placement, #1566 missing separators, #1593 related-style inheritance when a local property is absent. Fixed: explicit series caps, joins and miter limits now match native; gray axes, teal totals and brown rules retain their paint.
Shape outline geometry Remaining: #1272 chart frame and #1550 title band. Fixed: declared series cap/join geometry; marker diameter and outline preserved.
Text content Matches GT: non-whitespace sequence under pdftotext -layout; narrow-cell ##### totals retained. Default extraction retains baseline reading-order differences and ten extra space-census entries.
Font family/weight/style Matches GT: Arial bold title, Trebuchet instructions/expense labels, Cambria headings/months and Aptos footer retain emphasis.
Text color Matches GT: white title, teal headings/totals, gray body, orange negatives and brown expense labels.
Alignment Remaining: #1542 drawing labels, #1545 row seating, #1550 title/content, #1552 footer, #1577 marker origin.
Line/paragraph spacing Remaining: #1545 row seating and #1551 wrapped note pitch.
Clipping/overflow No deviation observed beyond matching native narrow-cell ##### totals.

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>
@developer0hye
developer0hye merged commit 6f12238 into main Sep 6, 2026
18 checks passed
@developer0hye
developer0hye deleted the fix/issue-1590-chart-series-stroke-geometry branch September 6, 2026 08:13
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