Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ecb5f40566661a88da9a13b922cc66d070140fcd
https://github.com/WebKit/WebKit/commit/ecb5f40566661a88da9a13b922cc66d070140fcd
Author: Ahmad Saleem <[email protected]>
Date: 2026-06-10 (Wed, 10 Jun 2026)
Changed paths:
M LayoutTests/TestExpectations
M
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-1-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-2-expected.txt
M
LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt
M LayoutTests/platform/glib/mathml/opentype/opentype-stretchy-expected.txt
M LayoutTests/platform/ios/mathml/opentype/opentype-stretchy-expected.txt
M LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt
M Source/WebCore/rendering/mathml/RenderMathMLRow.cpp
M Source/WebCore/rendering/mathml/RenderMathMLRow.h
Log Message:
-----------
[MathML] Support embellished operator detection through mrow for underover
layout
https://bugs.webkit.org/show_bug.cgi?id=310582
rdar://173192995
Reviewed by Frédéric Wang Nélar.
RenderMathMLRow was missing an unembellishedOperator() override, so
embellished operators wrapped in mrow elements (e.g.
<mrow><mrow><mo>∑</mo></mrow></mrow>) were not recognized as such.
This affected multiple areas: verticalParameters() in munder/mover/munderover
fell through to wrong MATH table constants, shouldMoveLimits() couldn't detect
movablelimits through mrow, and horizontal stretchy operators inside mrow
wrappers were not stretched.
Per MathML Core spec section 3.2.4.1 [1], a grouping element (including mrow)
whose in-flow children consist of one embellished operator and zero or more
space-like elements is itself an embellished operator.
To avoid a double-stretching crash (assertion from.y() <= to.y() in
MathOperator::fillWithVerticalExtensionGlyph),
stretchVerticalOperatorsAndLayoutChildren()
now skips internal stretching when the mrow is itself an embellished operator,
since the parent mrow is responsible for stretching it.
[1] https://w3c.github.io/mathml-core/#embellished-operators
* Source/WebCore/rendering/mathml/RenderMathMLRow.cpp:
(WebCore::RenderMathMLRow::unembellishedOperator const):
(WebCore::RenderMathMLRow::stretchVerticalOperatorsAndLayoutChildren):
* Source/WebCore/rendering/mathml/RenderMathMLRow.h:
* LayoutTests/TestExpectations: Progressions
*
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-1-expected.txt:
Ditto
*
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-and-embellished-operator-2-expected.txt:
Ditto
*
LayoutTests/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt:
Partial subtest progressions
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001-expected.txt:
Ditto
* LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt:
Partially matching Blink now
* LayoutTests/platform/glib/mathml/opentype/opentype-stretchy-expected.txt:
Ditto
* LayoutTests/platform/ios/mathml/opentype/opentype-stretchy-expected.txt: Ditto
Canonical link: https://commits.webkit.org/314924@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications