Skip to content

Enable parley line-box strut and plumb vertical-align for inline boxes - #685

Open
nicoburns wants to merge 5 commits into
devin/1786131935-parley-git-depfrom
devin/1786406519-parley-strut-plumbing
Open

Enable parley line-box strut and plumb vertical-align for inline boxes#685
nicoburns wants to merge 5 commits into
devin/1786131935-parley-git-depfrom
devin/1786406519-parley-strut-plumbing

Conversation

@nicoburns

@nicoburns nicoburns commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

Blitz-side plumbing for the parley strut/vertical-align stack (DioxusLabs/parley#9#10#7), which fixes two WPT regression groups from the parley 0.10 → 0.11 upgrade (negative half-leading clamped away; no strut on text-less lines):

  • Re-pins parley to bb7159a (the stack head).
  • build_inline_layout_into calls builder.set_compute_strut(true) so every line box is sized as if it began with a zero-width glyph in the root style (the CSS 2 § 10.8 "strut").
  • Maps Stylo's baseline-shift: top/bottom keywords onto the new InlineBox::vertical_align field; everything else stays Baseline.
  • Mechanical adaptation to the new append_inline_box_to_line(next_x, Option<InlineBoxAlignment>, quantize) signature (out-of-flow boxes pass None so they no longer contribute (0, 0) extents that clamp negative leading).

WPT results (manual run)

css/CSS2 + css/css-fonts + css/css-backgrounds + css/css-text (8868 tests) vs the unmodified devin/1786131935-parley-git-dep branch: 5038 passing vs 4948 before — 98 newly passing, 8 newly failing. Newly passing covers the line-height-* cluster (Group B), text-less-line strut tests (Group C1), first-available-font-003/004, and the floats-wrap-bfc-002-* vertical-align: bottom tests (Group C2).

Still failing / newly failing (pre-existing Blitz limitations exposed by the strut, not special-cased):

  • css/CSS2/fonts/font-family-applies-to-005.xht (C4: 1px metric quantization)
  • css/css-break/ruby-003.html, css/css-ruby/br-clear-all-000.html (C3: ruby)
  • css/CSS2/lists/list-style{,-image,-type}-applies-to-01{2,4}.xht — empty list-item markers don't create a line box, so the now-correct baseline alignment of the empty inline-block wrapper shifts the marker
  • css/CSS2/normal-flow/inline-table-width-002b.xht — inline-table baseline (Group A territory)
  • css/css-fonts/font-colorization.html — first-available-font selection needs unicode-range support (Blink treats a face with no unicode-range as covering U+0020 regardless of its cmap)

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/6ab608fbe6fb46479d6dab03fedceb25
Requested by: @nicoburns

Re-pins parley to the strut/vertical-align commit, enables
set_compute_strut(true) for inline layouts, and maps Stylo's
baseline-shift top/bottom keywords to parley's
InlineBoxVerticalAlign.
@nicoburns nicoburns self-assigned this Aug 11, 2026
@staging-devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1786131935-parley-git-dep branch from 262905f to 7d1d6b1 Compare August 18, 2026 21:18
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