Coordinate Fault Proof

Mathematical proof of where MultiPageEditorComposer coordinates fail. All numbers are live — computed from the real engine, measured in the real browser DOM. No mocks. No approximations.

What each column means:
itemTopPt — the Y coordinate (top-down, PDF canvas pixels) assigned by paginateItems().
itemTopPct — same value expressed as % of canvas height.
itemTop CSSPx — the actual CSS pixel position on a 600px-wide canvas at correct aspect ratio.
Browser Height — measured scrollHeight of the textarea in that exact CSS style at that exact zone width.
Rendered Bottom — itemTop CSSPx + Browser Height. This is where the paragraph actually ends on screen.
Next Top — itemTop CSSPx of the immediately following paragraph.
Gap — Next Top − Rendered Bottom. Negative = proven overlap. Very positive = spacing inflation.
Blue Floral (floral_letterhead_01)
Engine constants ·  pdfW=800 pdfH=593 ·  textZoneWidth=560pt ·  font=libre_baskerville ·  size_id=16 →  pdfPt=14 lhPt=22 paraSpacing=8 ·  canvas@600px scale=0.7500 ·  lhCssPx=16.50 psCssPx=6.00 ·  CSS fontSize=14px lineHeight=1.57 ·  pages=1
#Paragraph snippetitemTopPtitemTopPctitemTop CSSPxBrowser HeightRendered BottomNext TopGapVerdict
1I have been thinking about you every single day since you le…120.00pt20.2361%90.00px66.00px156.00px129.00pxOVERLAP -27.0pxOVERLAP
2You taught me that love is not a feeling that fades — it is …172.00pt29.0051%129.00px66.00px195.00px168.00pxOVERLAP -27.0pxOVERLAP
3The house is quieter than I ever imagined possible. But in t…224.00pt37.7740%168.00px88.00px256.00px
Delta analysis — browser height vs engine-allocated slot per paragraph:
  • ¶1:  browser=66.00px slot=39.00px Δ=+27.0px ← browser TALLER than slot (OVERLAP cause)
  • ¶2:  browser=66.00px slot=39.00px Δ=+27.0px ← browser TALLER than slot (OVERLAP cause)
  • ¶3:  browser=88.00px 
FAILURE MODE: C: Typography Mismatch (browser height > engine slot)
Tropical Beach (tropical_beach_01)
Engine constants ·  pdfW=800 pdfH=534 ·  textZoneWidth=560pt ·  font=libre_baskerville ·  size_id=16 →  pdfPt=14 lhPt=22 paraSpacing=8 ·  canvas@600px scale=0.7500 ·  lhCssPx=16.50 psCssPx=6.00 ·  CSS fontSize=14px lineHeight=1.57 ·  pages=1
#Paragraph snippetitemTopPtitemTopPctitemTop CSSPxBrowser HeightRendered BottomNext TopGapVerdict
1I have been thinking about you every single day since you le…120.00pt22.4719%90.00px66.00px156.00px129.00pxOVERLAP -27.0pxOVERLAP
2You taught me that love is not a feeling that fades — it is …172.00pt32.2097%129.00px66.00px195.00px168.00pxOVERLAP -27.0pxOVERLAP
3The house is quieter than I ever imagined possible. But in t…224.00pt41.9476%168.00px88.00px256.00px
Delta analysis — browser height vs engine-allocated slot per paragraph:
  • ¶1:  browser=66.00px slot=39.00px Δ=+27.0px ← browser TALLER than slot (OVERLAP cause)
  • ¶2:  browser=66.00px slot=39.00px Δ=+27.0px ← browser TALLER than slot (OVERLAP cause)
  • ¶3:  browser=88.00px 
FAILURE MODE: C: Typography Mismatch (browser height > engine slot)
Angel (default)
Engine constants ·  pdfW=800 pdfH=1120 ·  textZoneWidth=560pt ·  font=libre_baskerville ·  size_id=16 →  pdfPt=14 lhPt=22 paraSpacing=8 ·  canvas@600px scale=0.7500 ·  lhCssPx=16.50 psCssPx=6.00 ·  CSS fontSize=14px lineHeight=1.57 ·  pages=1
#Paragraph snippetitemTopPtitemTopPctitemTop CSSPxBrowser HeightRendered BottomNext TopGapVerdict
1I have been thinking about you every single day since you le…120.00pt10.7143%90.00px66.00px156.00px129.00pxOVERLAP -27.0pxOVERLAP
2You taught me that love is not a feeling that fades — it is …172.00pt15.3571%129.00px66.00px195.00px168.00pxOVERLAP -27.0pxOVERLAP
3The house is quieter than I ever imagined possible. But in t…224.00pt20.0000%168.00px88.00px256.00px
Delta analysis — browser height vs engine-allocated slot per paragraph:
  • ¶1:  browser=66.00px slot=39.00px Δ=+27.0px ← browser TALLER than slot (OVERLAP cause)
  • ¶2:  browser=66.00px slot=39.00px Δ=+27.0px ← browser TALLER than slot (OVERLAP cause)
  • ¶3:  browser=88.00px 
FAILURE MODE: C: Typography Mismatch (browser height > engine slot)
Failure mode key:
A — Bad Coordinates: topPt = 0 for items after the first. paginateItems returned wrong Y.
B — Stale Coordinates: itemTopsPt array is empty or not updated when layout changes.
C — Typography Mismatch: browser renders text taller than the PDF engine allocated. Browser gap is negative even though engine coordinates are correct for the PDF grid.
D — Multiple: Two or more of A/B/C fire simultaneously.