Skip to content

PPTX: a column plot's category labels seat 12.3pt below native, past the chart frame's bottom edge #1868

Description

@developer0hye

Summary

A framed PowerPoint column plot's flat category labels are seated against the
bottom of the band rather than against the plot, so they sit about 12.3pt lower
than native PowerPoint puts them. On a chart whose band is the native size the
label baseline now falls below the chart frame's own bottom edge.

Measured

tests/fixtures/pptx/bar-chart.pptx repackaged as an Arial column chart by
scripts/probes/issue-1674-column-plot-face.json, on the deck's own
480 x 320pt graphic frame at (120, 110)pt. Reference: the native PowerPoint
16.113.1 export of that variant package, mutool draw -F trace, page points
measured down from the page top.

plot bottom 1st Qtr baseline below the plot below the frame's bottom edge
native PowerPoint 16.113.1 392.527 419.280 26.753 -10.720
office2pdf 392.527 431.574 39.047 +1.574

The 12.294pt difference is the same on all four labels (1st Qtr … 4th Qtr),
and it is unchanged by #1674's band fix: before that fix our plot bottom sat
2.497pt higher and our label sat 2.497pt higher with it, so the distance below
the plot was 39.05pt in both builds. The band's size is native; the label's
seat inside it is not.

The band is 37.473pt for this 18pt category axis, and native spends 26.753pt of
it getting to the baseline — leaving room for the descender and a little more.
We spend 39.047pt, which is more than the whole band.

Expected

The category label's baseline is seated against the plot's bottom edge on a
measured share of the face, the way
[ChartFaceLineBox::category_band_pt] sizes the band itself. A one-factor face
and size sweep of the same three probe specs settles the share; the band's own
5/3 ascent + 1 descent composition (#1674) suggests the label's own line
occupies the lower part of it, but that is a hypothesis until measured.

Related: #1674

Activity

  1. developer0hye commented on Sep 26, 2026

    @developer0hye
    OwnerAuthor

    The wrapped regime of #1675 landed in #1877, and this seat is what it leaves
    behind on the same frame. Posting the numbers so the magnitude this issue
    carries covers the wrapped case too, since #1877's committed cluster
    dispositions cite them.

    Same probe frame, scripts/probes/issue-1675-column-label-wrap.json variant
    two words — tests/fixtures/pptx/bar-chart.pptx repackaged as a 36pt column
    chart on the deck's own 480 x 320pt graphic frame. Reference: the native
    PowerPoint 16.113.1 export of that package, mutool draw -F trace, page points
    measured down from the page top.

    plot bottom first label baseline below the plot second line baseline
    native PowerPoint 16.113.1 312.760 369.600 56.840 413.520
    office2pdf after #1877 312.758 387.331 74.573 431.276

    The band is now native to 0.002pt and the two lines advance 43.945pt against
    the native 43.92, so the block is the right size and breaks where PowerPoint
    breaks it. It is seated 17.733pt too low inside that band, and the second line
    inherits the same error (17.756pt), which is this issue's rule rather than the
    band's.

    The one-line figure in the body above is 12.294pt at an 18pt axis; this is the
    same defect at 36pt over two lines, so whatever share of the face is measured
    has to fit both.

    Related: #1675, #1877

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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