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

1 participant