Log Message
Refactor RenderMathMLUnderOver layout functions to avoid using flexbox https://bugs.webkit.org/show_bug.cgi?id=153742
Patch by Frederic Wang <[email protected]> on 2016-04-11 Reviewed by Sergio Villar Senin. Source/WebCore: Based on a patch by Javier Fernandez <[email protected]> Refactor the UnderOver renderer to use its own layoutBlock method that does all the layout calculations without considering the flexbox restrictions. * css/mathml.css: (mo, mfrac, munder, mover, munderover): Delete the underover elements from the line defining the column direction. (munder, mover, munderover): Deleted. This flexbox property is no longer needed. (mover > :last-child, munderover > :last-child): Deleted. This flexbox property is no longer needed. * rendering/mathml/RenderMathMLUnderOver.cpp: (WebCore::RenderMathMLUnderOver::firstLineBaseline): Use ascentForChild. (WebCore::RenderMathMLUnderOver::computeOperatorsHorizontalStretch): Avoid stretching operators that are not stretchy. (WebCore::RenderMathMLUnderOver::isValid): Helper function to ensure that the child list is valid with respect to the MathML specification. (WebCore::RenderMathMLUnderOver::base): Added. Helper function. (WebCore::RenderMathMLUnderOver::under): Added. Helper function. (WebCore::RenderMathMLUnderOver::over): Added. Helper function. (WebCore::RenderMathMLUnderOver::computePreferredLogicalWidths): Added. The preferred width is the maximum preferred width of the base, under and over scripts. (WebCore::RenderMathMLUnderOver::horizontalOffset): Added, helper to calculate the horizontal position of children (horizontally centered). (WebCore::RenderMathMLUnderOver::layoutBlock): Added, it lays out the base, underscript and overscript. It calculates the exact logical width, which may differ from the preferred width when one child contains stretchy operators. It later sets the locations of children accordingly and sets the heigth of the render element. (WebCore::RenderMathMLUnderOver::paintChildren): Added, we have to use the usual traverse instead of the one that comes from the flexbox. This will be removed in a follow-up patch. (WebCore::RenderMathMLUnderOver::layout): Deleted. * rendering/mathml/RenderMathMLUnderOver.h: Added new functions definitions. LayoutTests: Apply some small adjustments to the expectations of MathML tests after the refactoring of RenderMathMLUnderOver. We also add a test for non-stretchy horizontal operators in underover. * platform/gtk/mathml/opentype/horizontal-expected.png: * platform/gtk/mathml/opentype/horizontal-expected.txt: * platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png: * platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt: * platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png: * platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt: * mathml/mn-as-list-item-assert.html: Move the test description out of the invalid munderover so that it is still displayed. * mathml/mn-as-list-item-assert-expected.txt: Update the text expectation. * mathml/presentation/underover-nonstretchy-horizontal.html: Ensure that nonstretchy horizontal operators are not stretched in munderover. * mathml/presentation/underover-nonstretchy-horizontal-expected.html: Ditto.
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/LayoutTests/mathml/mn-as-list-item-assert-expected.txt
- trunk/LayoutTests/mathml/mn-as-list-item-assert.html
- trunk/LayoutTests/platform/gtk/mathml/opentype/horizontal-expected.png
- trunk/LayoutTests/platform/gtk/mathml/opentype/horizontal-expected.txt
- trunk/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png
- trunk/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt
- trunk/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png
- trunk/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/css/mathml.css
- trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp
- trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (199292 => 199293)
--- trunk/LayoutTests/ChangeLog 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/LayoutTests/ChangeLog 2016-04-11 12:11:18 UTC (rev 199293)
@@ -1,3 +1,26 @@
+2016-04-11 Frederic Wang <[email protected]>
+
+ Refactor RenderMathMLUnderOver layout functions to avoid using flexbox
+ https://bugs.webkit.org/show_bug.cgi?id=153742
+
+ Reviewed by Sergio Villar Senin.
+
+ Apply some small adjustments to the expectations of MathML tests after
+ the refactoring of RenderMathMLUnderOver. We also add a test for
+ non-stretchy horizontal operators in underover.
+
+ * platform/gtk/mathml/opentype/horizontal-expected.png:
+ * platform/gtk/mathml/opentype/horizontal-expected.txt:
+ * platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png:
+ * platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt:
+ * platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png:
+ * platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt:
+ * mathml/mn-as-list-item-assert.html: Move the test description out of the invalid munderover
+ so that it is still displayed.
+ * mathml/mn-as-list-item-assert-expected.txt: Update the text expectation.
+ * mathml/presentation/underover-nonstretchy-horizontal.html: Ensure that nonstretchy horizontal operators are not stretched in munderover.
+ * mathml/presentation/underover-nonstretchy-horizontal-expected.html: Ditto.
+
2016-04-11 Antti Koivisto <[email protected]>
Implement functional :host() pseudo class
Modified: trunk/LayoutTests/mathml/mn-as-list-item-assert-expected.txt (199292 => 199293)
--- trunk/LayoutTests/mathml/mn-as-list-item-assert-expected.txt 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/LayoutTests/mathml/mn-as-list-item-assert-expected.txt 2016-04-11 12:11:18 UTC (rev 199293)
@@ -1,2 +1,3 @@
This test PASSES if it does not CRASH or ASSERT.
+
Modified: trunk/LayoutTests/mathml/mn-as-list-item-assert.html (199292 => 199293)
--- trunk/LayoutTests/mathml/mn-as-list-item-assert.html 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/LayoutTests/mathml/mn-as-list-item-assert.html 2016-04-11 12:11:18 UTC (rev 199293)
@@ -7,8 +7,9 @@
</script>
</head>
<body>
+ <p>This test PASSES if it does not CRASH or ASSERT.</p>
<math>
<munderover>
- <mn style="display: list-item;">This test PASSES if it does not CRASH or ASSERT.</mn>
+ <mn style="display: list-item;">mn</mn>
</munderover>
</math>
Added: trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal-expected.html (0 => 199293)
--- trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal-expected.html (rev 0)
+++ trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal-expected.html 2016-04-11 12:11:18 UTC (rev 199293)
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<math>
+ <munderover>
+ <mspace width="100px" height="10px" mathbackground="red"/>
+ <mtext>_</mtext>
+ <mtext>_</mtext>
+ </munderover>
+</math>
Property changes on: trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal-expected.html
___________________________________________________________________
Added: svn:mime-type
Added: svn:eol-style
Added: trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal.html (0 => 199293)
--- trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal.html (rev 0)
+++ trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal.html 2016-04-11 12:11:18 UTC (rev 199293)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<!-- Horizontal operators set to non-stretchy should not stretch. -->
+<math>
+ <munderover>
+ <mspace width="100px" height="10px" mathbackground="red"/>
+ <mo stretchy="false" lspace="0px" rspace="0px">_</mo>
+ <mo stretchy="false" lspace="0px" rspace="0px">_</mo>
+ </munderover>
+</math>
Property changes on: trunk/LayoutTests/mathml/presentation/underover-nonstretchy-horizontal.html
___________________________________________________________________
Added: svn:mime-type
Added: svn:eol-style
Modified: trunk/LayoutTests/platform/gtk/mathml/opentype/horizontal-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/gtk/mathml/opentype/horizontal-expected.txt (199292 => 199293)
--- trunk/LayoutTests/platform/gtk/mathml/opentype/horizontal-expected.txt 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/LayoutTests/platform/gtk/mathml/opentype/horizontal-expected.txt 2016-04-11 12:11:18 UTC (rev 199293)
@@ -4,7 +4,7 @@
RenderBlock {HTML} at (0,0) size 800x166
RenderBody {BODY} at (8,16) size 784x134
RenderBlock {P} at (0,0) size 784x17
- RenderMathMLMath {math} at (0,4) size 31x10 [padding: 0 1 0 1]
+ RenderMathMLMath {math} at (0,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -12,9 +12,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2190}"
- RenderText {#text} at (30,0) size 5x17
- text run at (30,0) width 5: " "
- RenderMathMLMath {math} at (34,4) size 32x10 [padding: 0 1 0 1]
+ RenderText {#text} at (24,0) size 4x17
+ text run at (24,0) width 4: " "
+ RenderMathMLMath {math} at (28,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -22,9 +22,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2192}"
- RenderText {#text} at (65,0) size 5x17
- text run at (65,0) width 5: " "
- RenderMathMLMath {math} at (69,4) size 31x10 [padding: 0 1 0 1]
+ RenderText {#text} at (52,0) size 4x17
+ text run at (52,0) width 4: " "
+ RenderMathMLMath {math} at (56,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -32,9 +32,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2194}"
- RenderText {#text} at (99,0) size 5x17
- text run at (99,0) width 5: " "
- RenderMathMLMath {math} at (103,4) size 32x10 [padding: 0 1 0 1]
+ RenderText {#text} at (80,0) size 4x17
+ text run at (80,0) width 4: " "
+ RenderMathMLMath {math} at (84,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -42,9 +42,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21A4}"
- RenderText {#text} at (134,0) size 5x17
- text run at (134,0) width 5: " "
- RenderMathMLMath {math} at (138,4) size 32x10 [padding: 0 1 0 1]
+ RenderText {#text} at (108,0) size 4x17
+ text run at (108,0) width 4: " "
+ RenderMathMLMath {math} at (112,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -52,9 +52,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21A6}"
- RenderText {#text} at (169,0) size 5x17
- text run at (169,0) width 5: " "
- RenderMathMLMath {math} at (173,5) size 31x9 [padding: 0 1 0 1]
+ RenderText {#text} at (136,0) size 4x17
+ text run at (136,0) width 4: " "
+ RenderMathMLMath {math} at (140,5) size 24x9 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x9
RenderMathMLSpace {mspace} at (3,7) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x7
@@ -62,9 +62,9 @@
RenderBlock (anonymous) at (0,0) size 12x7
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21BC}"
- RenderText {#text} at (203,0) size 5x17
- text run at (203,0) width 5: " "
- RenderMathMLMath {math} at (207,7) size 32x7 [padding: 0 1 0 1]
+ RenderText {#text} at (164,0) size 4x17
+ text run at (164,0) width 4: " "
+ RenderMathMLMath {math} at (168,7) size 24x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x7
RenderMathMLSpace {mspace} at (3,5) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x5
@@ -72,9 +72,9 @@
RenderBlock (anonymous) at (0,0) size 12x5
RenderText at (0,-39) size 12x80
text run at (0,-39) width 12: "\x{21BD}"
- RenderText {#text} at (238,0) size 5x17
- text run at (238,0) width 5: " "
- RenderMathMLMath {math} at (242,5) size 32x9 [padding: 0 1 0 1]
+ RenderText {#text} at (192,0) size 4x17
+ text run at (192,0) width 4: " "
+ RenderMathMLMath {math} at (196,5) size 24x9 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x9
RenderMathMLSpace {mspace} at (3,7) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x7
@@ -82,9 +82,9 @@
RenderBlock (anonymous) at (0,0) size 12x7
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21C0}"
- RenderText {#text} at (273,0) size 5x17
- text run at (273,0) width 5: " "
- RenderMathMLMath {math} at (277,4) size 31x10 [padding: 0 1 0 1]
+ RenderText {#text} at (220,0) size 4x17
+ text run at (220,0) width 4: " "
+ RenderMathMLMath {math} at (224,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -92,9 +92,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D0}"
- RenderText {#text} at (307,0) size 5x17
- text run at (307,0) width 5: " "
- RenderMathMLMath {math} at (311,4) size 32x10 [padding: 0 1 0 1]
+ RenderText {#text} at (248,0) size 4x17
+ text run at (248,0) width 4: " "
+ RenderMathMLMath {math} at (252,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -102,9 +102,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D2}"
- RenderText {#text} at (342,0) size 5x17
- text run at (342,0) width 5: " "
- RenderMathMLMath {math} at (346,4) size 32x10 [padding: 0 1 0 1]
+ RenderText {#text} at (276,0) size 4x17
+ text run at (276,0) width 4: " "
+ RenderMathMLMath {math} at (280,4) size 24x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x10
RenderMathMLSpace {mspace} at (3,8) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x8
@@ -112,9 +112,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D4}"
- RenderText {#text} at (377,0) size 5x17
- text run at (377,0) width 5: " "
- RenderMathMLMath {math} at (381,2) size 31x12 [padding: 0 1 0 1]
+ RenderText {#text} at (304,0) size 4x17
+ text run at (304,0) width 4: " "
+ RenderMathMLMath {math} at (308,2) size 24x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x12
RenderMathMLSpace {mspace} at (3,10) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x10
@@ -122,9 +122,9 @@
RenderBlock (anonymous) at (0,0) size 12x10
RenderText at (0,-35) size 12x80
text run at (0,-35) width 12: "\x{21DA}"
- RenderText {#text} at (411,0) size 5x17
- text run at (411,0) width 5: " "
- RenderMathMLMath {math} at (415,2) size 32x12 [padding: 0 1 0 1]
+ RenderText {#text} at (332,0) size 4x17
+ text run at (332,0) width 4: " "
+ RenderMathMLMath {math} at (336,2) size 24x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 29x12
RenderMathMLSpace {mspace} at (3,10) size 23x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 29x10
@@ -132,9 +132,9 @@
RenderBlock (anonymous) at (0,0) size 12x10
RenderText at (0,-35) size 12x80
text run at (0,-35) width 12: "\x{21DB}"
- RenderText {#text} at (446,0) size 5x17
- text run at (446,0) width 5: " "
- RenderMathMLMath {math} at (450,9) size 25x5 [padding: 0 1 0 1]
+ RenderText {#text} at (360,0) size 4x17
+ text run at (360,0) width 4: " "
+ RenderMathMLMath {math} at (364,9) size 24x5 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 22x5
RenderMathMLSpace {mspace} at (0,3) size 22x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 22x3
@@ -142,9 +142,9 @@
RenderBlock (anonymous) at (0,0) size 4x3
RenderText at (0,-34) size 4x80
text run at (0,-34) width 4: "\x{23B4}"
- RenderText {#text} at (474,0) size 5x17
- text run at (474,0) width 5: " "
- RenderMathMLMath {math} at (478,9) size 25x5 [padding: 0 1 0 1]
+ RenderText {#text} at (388,0) size 4x17
+ text run at (388,0) width 4: " "
+ RenderMathMLMath {math} at (392,9) size 24x5 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 22x5
RenderMathMLSpace {mspace} at (0,3) size 22x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 22x3
@@ -152,9 +152,9 @@
RenderBlock (anonymous) at (0,0) size 4x3
RenderText at (0,-43) size 4x80
text run at (0,-43) width 4: "\x{23B5}"
- RenderText {#text} at (502,0) size 5x17
- text run at (502,0) width 5: " "
- RenderMathMLMath {math} at (506,8) size 27x6 [padding: 0 1 0 1]
+ RenderText {#text} at (416,0) size 4x17
+ text run at (416,0) width 4: " "
+ RenderMathMLMath {math} at (420,8) size 24x6 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 24x6
RenderMathMLSpace {mspace} at (1,4) size 22x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 24x4
@@ -162,9 +162,9 @@
RenderBlock (anonymous) at (0,0) size 6x4
RenderText at (0,-34) size 6x80
text run at (0,-34) width 6: "\x{23DC}"
- RenderText {#text} at (532,0) size 5x17
- text run at (532,0) width 5: " "
- RenderMathMLMath {math} at (536,7) size 27x7 [padding: 0 1 0 1]
+ RenderText {#text} at (444,0) size 4x17
+ text run at (444,0) width 4: " "
+ RenderMathMLMath {math} at (448,7) size 24x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 24x7
RenderMathMLSpace {mspace} at (1,5) size 22x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 24x5
@@ -172,9 +172,9 @@
RenderBlock (anonymous) at (0,0) size 6x4
RenderText at (0,-43) size 6x80
text run at (0,-43) width 6: "\x{23DD}"
- RenderText {#text} at (562,0) size 5x17
- text run at (562,0) width 5: " "
- RenderMathMLMath {math} at (566,8) size 27x6 [padding: 0 1 0 1]
+ RenderText {#text} at (472,0) size 4x17
+ text run at (472,0) width 4: " "
+ RenderMathMLMath {math} at (476,8) size 24x6 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 24x6
RenderMathMLSpace {mspace} at (1,4) size 22x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 24x4
@@ -182,9 +182,9 @@
RenderBlock (anonymous) at (0,0) size 6x4
RenderText at (0,-33) size 6x80
text run at (0,-33) width 6: "\x{23DE}"
- RenderText {#text} at (592,0) size 5x17
- text run at (592,0) width 5: " "
- RenderMathMLMath {math} at (596,7) size 27x7 [padding: 0 1 0 1]
+ RenderText {#text} at (500,0) size 4x17
+ text run at (500,0) width 4: " "
+ RenderMathMLMath {math} at (504,7) size 24x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 24x7
RenderMathMLSpace {mspace} at (1,5) size 22x2 [bgcolor=#0000FF]
RenderMathMLOperator {mo} at (0,0) size 24x5
@@ -194,7 +194,7 @@
text run at (0,-43) width 6: "\x{23DF}"
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (0,33) size 784x34
- RenderMathMLMath {math} at (0,4) size 59x10 [padding: 0 1 0 1]
+ RenderMathMLMath {math} at (0,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -202,9 +202,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2190}"
- RenderText {#text} at (58,0) size 5x17
- text run at (58,0) width 5: " "
- RenderMathMLMath {math} at (62,4) size 60x10 [padding: 0 1 0 1]
+ RenderText {#text} at (52,0) size 4x17
+ text run at (52,0) width 4: " "
+ RenderMathMLMath {math} at (56,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -212,9 +212,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2192}"
- RenderText {#text} at (121,0) size 5x17
- text run at (121,0) width 5: " "
- RenderMathMLMath {math} at (125,4) size 59x10 [padding: 0 1 0 1]
+ RenderText {#text} at (108,0) size 4x17
+ text run at (108,0) width 4: " "
+ RenderMathMLMath {math} at (112,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -222,9 +222,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2194}"
- RenderText {#text} at (183,0) size 5x17
- text run at (183,0) width 5: " "
- RenderMathMLMath {math} at (187,4) size 60x10 [padding: 0 1 0 1]
+ RenderText {#text} at (164,0) size 4x17
+ text run at (164,0) width 4: " "
+ RenderMathMLMath {math} at (168,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -232,9 +232,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21A4}"
- RenderText {#text} at (246,0) size 5x17
- text run at (246,0) width 5: " "
- RenderMathMLMath {math} at (250,4) size 60x10 [padding: 0 1 0 1]
+ RenderText {#text} at (220,0) size 4x17
+ text run at (220,0) width 4: " "
+ RenderMathMLMath {math} at (224,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -242,9 +242,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21A6}"
- RenderText {#text} at (309,0) size 5x17
- text run at (309,0) width 5: " "
- RenderMathMLMath {math} at (313,5) size 59x9 [padding: 0 1 0 1]
+ RenderText {#text} at (276,0) size 4x17
+ text run at (276,0) width 4: " "
+ RenderMathMLMath {math} at (280,5) size 52x9 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x9
RenderMathMLSpace {mspace} at (3,7) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x7
@@ -252,9 +252,9 @@
RenderBlock (anonymous) at (0,0) size 12x7
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21BC}"
- RenderText {#text} at (371,0) size 5x17
- text run at (371,0) width 5: " "
- RenderMathMLMath {math} at (375,7) size 60x7 [padding: 0 1 0 1]
+ RenderText {#text} at (332,0) size 4x17
+ text run at (332,0) width 4: " "
+ RenderMathMLMath {math} at (336,7) size 52x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x7
RenderMathMLSpace {mspace} at (3,5) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x5
@@ -262,9 +262,9 @@
RenderBlock (anonymous) at (0,0) size 12x5
RenderText at (0,-39) size 12x80
text run at (0,-39) width 12: "\x{21BD}"
- RenderText {#text} at (434,0) size 5x17
- text run at (434,0) width 5: " "
- RenderMathMLMath {math} at (438,5) size 60x9 [padding: 0 1 0 1]
+ RenderText {#text} at (388,0) size 4x17
+ text run at (388,0) width 4: " "
+ RenderMathMLMath {math} at (392,5) size 52x9 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x9
RenderMathMLSpace {mspace} at (3,7) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x7
@@ -272,9 +272,9 @@
RenderBlock (anonymous) at (0,0) size 12x7
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21C0}"
- RenderText {#text} at (497,0) size 5x17
- text run at (497,0) width 5: " "
- RenderMathMLMath {math} at (501,4) size 59x10 [padding: 0 1 0 1]
+ RenderText {#text} at (444,0) size 4x17
+ text run at (444,0) width 4: " "
+ RenderMathMLMath {math} at (448,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -282,9 +282,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D0}"
- RenderText {#text} at (559,0) size 5x17
- text run at (559,0) width 5: " "
- RenderMathMLMath {math} at (563,4) size 60x10 [padding: 0 1 0 1]
+ RenderText {#text} at (500,0) size 4x17
+ text run at (500,0) width 4: " "
+ RenderMathMLMath {math} at (504,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -292,9 +292,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D2}"
- RenderText {#text} at (622,0) size 5x17
- text run at (622,0) width 5: " "
- RenderMathMLMath {math} at (626,4) size 60x10 [padding: 0 1 0 1]
+ RenderText {#text} at (556,0) size 4x17
+ text run at (556,0) width 4: " "
+ RenderMathMLMath {math} at (560,4) size 52x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x10
RenderMathMLSpace {mspace} at (3,8) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x8
@@ -302,9 +302,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D4}"
- RenderText {#text} at (685,0) size 5x17
- text run at (685,0) width 5: " "
- RenderMathMLMath {math} at (689,2) size 59x12 [padding: 0 1 0 1]
+ RenderText {#text} at (612,0) size 4x17
+ text run at (612,0) width 4: " "
+ RenderMathMLMath {math} at (616,2) size 52x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x12
RenderMathMLSpace {mspace} at (3,10) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x10
@@ -312,8 +312,9 @@
RenderBlock (anonymous) at (0,0) size 12x10
RenderText at (0,-35) size 12x80
text run at (0,-35) width 12: "\x{21DA}"
- RenderText {#text} at (0,0) size 0x0
- RenderMathMLMath {math} at (0,19) size 59x12 [padding: 0 1 0 1]
+ RenderText {#text} at (668,0) size 4x17
+ text run at (668,0) width 4: " "
+ RenderMathMLMath {math} at (672,2) size 52x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 57x12
RenderMathMLSpace {mspace} at (3,10) size 51x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 57x10
@@ -321,9 +322,9 @@
RenderBlock (anonymous) at (0,0) size 12x10
RenderText at (0,-35) size 12x80
text run at (0,-35) width 12: "\x{21DB}"
- RenderText {#text} at (58,17) size 5x17
- text run at (58,17) width 5: " "
- RenderMathMLMath {math} at (62,19) size 53x12 [padding: 0 1 0 1]
+ RenderText {#text} at (724,0) size 4x17
+ text run at (724,0) width 4: " "
+ RenderMathMLMath {math} at (728,2) size 52x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 50x12
RenderMathMLSpace {mspace} at (0,10) size 50x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 50x10
@@ -331,9 +332,8 @@
RenderBlock (anonymous) at (0,0) size 4x10
RenderText at (0,-34) size 4x80
text run at (0,-34) width 4: "\x{23B4}"
- RenderText {#text} at (114,17) size 5x17
- text run at (114,17) width 5: " "
- RenderMathMLMath {math} at (118,24) size 53x7 [padding: 0 1 0 1]
+ RenderText {#text} at (0,0) size 0x0
+ RenderMathMLMath {math} at (0,24) size 52x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 50x7
RenderMathMLSpace {mspace} at (0,5) size 50x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 50x5
@@ -341,9 +341,9 @@
RenderBlock (anonymous) at (0,0) size 4x4
RenderText at (0,-43) size 4x80
text run at (0,-43) width 4: "\x{23B5}"
- RenderText {#text} at (170,17) size 5x17
- text run at (170,17) width 5: " "
- RenderMathMLMath {math} at (174,19) size 53x12 [padding: 0 1 0 1]
+ RenderText {#text} at (52,17) size 4x17
+ text run at (52,17) width 4: " "
+ RenderMathMLMath {math} at (56,19) size 52x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 50x12
RenderMathMLSpace {mspace} at (0,10) size 50x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 50x10
@@ -351,9 +351,9 @@
RenderBlock (anonymous) at (0,0) size 6x10
RenderText at (0,-34) size 6x80
text run at (0,-34) width 6: "\x{23DC}"
- RenderText {#text} at (226,17) size 5x17
- text run at (226,17) width 5: " "
- RenderMathMLMath {math} at (230,24) size 53x7 [padding: 0 1 0 1]
+ RenderText {#text} at (108,17) size 4x17
+ text run at (108,17) width 4: " "
+ RenderMathMLMath {math} at (112,24) size 52x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 50x7
RenderMathMLSpace {mspace} at (0,5) size 50x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 50x5
@@ -361,9 +361,9 @@
RenderBlock (anonymous) at (0,0) size 6x4
RenderText at (0,-43) size 6x80
text run at (0,-43) width 6: "\x{23DD}"
- RenderText {#text} at (282,17) size 5x17
- text run at (282,17) width 5: " "
- RenderMathMLMath {math} at (286,18) size 53x13 [padding: 0 1 0 1]
+ RenderText {#text} at (164,17) size 4x17
+ text run at (164,17) width 4: " "
+ RenderMathMLMath {math} at (168,18) size 52x13 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 50x13
RenderMathMLSpace {mspace} at (0,11) size 50x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 50x11
@@ -371,9 +371,9 @@
RenderBlock (anonymous) at (0,0) size 6x11
RenderText at (0,-33) size 6x80
text run at (0,-33) width 6: "\x{23DE}"
- RenderText {#text} at (338,17) size 5x17
- text run at (338,17) width 5: " "
- RenderMathMLMath {math} at (342,23) size 53x8 [padding: 0 1 0 1]
+ RenderText {#text} at (220,17) size 4x17
+ text run at (220,17) width 4: " "
+ RenderMathMLMath {math} at (224,23) size 52x8 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 50x8
RenderMathMLSpace {mspace} at (0,6) size 50x2 [bgcolor=#008000]
RenderMathMLOperator {mo} at (0,0) size 50x6
@@ -383,7 +383,7 @@
text run at (0,-43) width 6: "\x{23DF}"
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (0,83) size 784x51
- RenderMathMLMath {math} at (0,4) size 109x10 [padding: 0 1 0 1]
+ RenderMathMLMath {math} at (0,4) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -391,9 +391,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2190}"
- RenderText {#text} at (108,0) size 5x17
- text run at (108,0) width 5: " "
- RenderMathMLMath {math} at (112,4) size 110x10 [padding: 0 1 0 1]
+ RenderText {#text} at (102,0) size 4x17
+ text run at (102,0) width 4: " "
+ RenderMathMLMath {math} at (106,4) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -401,9 +401,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2192}"
- RenderText {#text} at (221,0) size 5x17
- text run at (221,0) width 5: " "
- RenderMathMLMath {math} at (225,4) size 109x10 [padding: 0 1 0 1]
+ RenderText {#text} at (208,0) size 4x17
+ text run at (208,0) width 4: " "
+ RenderMathMLMath {math} at (212,4) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -411,9 +411,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{2194}"
- RenderText {#text} at (333,0) size 5x17
- text run at (333,0) width 5: " "
- RenderMathMLMath {math} at (337,4) size 110x10 [padding: 0 1 0 1]
+ RenderText {#text} at (314,0) size 4x17
+ text run at (314,0) width 4: " "
+ RenderMathMLMath {math} at (318,4) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -421,9 +421,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21A4}"
- RenderText {#text} at (446,0) size 5x17
- text run at (446,0) width 5: " "
- RenderMathMLMath {math} at (450,4) size 110x10 [padding: 0 1 0 1]
+ RenderText {#text} at (420,0) size 4x17
+ text run at (420,0) width 4: " "
+ RenderMathMLMath {math} at (424,4) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -431,9 +431,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21A6}"
- RenderText {#text} at (559,0) size 5x17
- text run at (559,0) width 5: " "
- RenderMathMLMath {math} at (563,5) size 109x9 [padding: 0 1 0 1]
+ RenderText {#text} at (526,0) size 4x17
+ text run at (526,0) width 4: " "
+ RenderMathMLMath {math} at (530,5) size 102x9 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x9
RenderMathMLSpace {mspace} at (3,7) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x7
@@ -441,8 +441,9 @@
RenderBlock (anonymous) at (0,0) size 12x7
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21BC}"
- RenderText {#text} at (0,0) size 0x0
- RenderMathMLMath {math} at (0,24) size 109x7 [padding: 0 1 0 1]
+ RenderText {#text} at (632,0) size 4x17
+ text run at (632,0) width 4: " "
+ RenderMathMLMath {math} at (636,7) size 102x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x7
RenderMathMLSpace {mspace} at (3,5) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x5
@@ -450,9 +451,8 @@
RenderBlock (anonymous) at (0,0) size 12x5
RenderText at (0,-39) size 12x80
text run at (0,-39) width 12: "\x{21BD}"
- RenderText {#text} at (108,17) size 5x17
- text run at (108,17) width 5: " "
- RenderMathMLMath {math} at (112,22) size 110x9 [padding: 0 1 0 1]
+ RenderText {#text} at (0,0) size 0x0
+ RenderMathMLMath {math} at (0,22) size 102x9 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x9
RenderMathMLSpace {mspace} at (3,7) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x7
@@ -460,9 +460,9 @@
RenderBlock (anonymous) at (0,0) size 12x7
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21C0}"
- RenderText {#text} at (221,17) size 5x17
- text run at (221,17) width 5: " "
- RenderMathMLMath {math} at (225,21) size 109x10 [padding: 0 1 0 1]
+ RenderText {#text} at (102,17) size 4x17
+ text run at (102,17) width 4: " "
+ RenderMathMLMath {math} at (106,21) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -470,9 +470,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D0}"
- RenderText {#text} at (333,17) size 5x17
- text run at (333,17) width 5: " "
- RenderMathMLMath {math} at (337,21) size 110x10 [padding: 0 1 0 1]
+ RenderText {#text} at (208,17) size 4x17
+ text run at (208,17) width 4: " "
+ RenderMathMLMath {math} at (212,21) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -480,9 +480,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D2}"
- RenderText {#text} at (446,17) size 5x17
- text run at (446,17) width 5: " "
- RenderMathMLMath {math} at (450,21) size 110x10 [padding: 0 1 0 1]
+ RenderText {#text} at (314,17) size 4x17
+ text run at (314,17) width 4: " "
+ RenderMathMLMath {math} at (318,21) size 102x10 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x10
RenderMathMLSpace {mspace} at (3,8) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x8
@@ -490,9 +490,9 @@
RenderBlock (anonymous) at (0,0) size 12x8
RenderText at (0,-36) size 12x80
text run at (0,-36) width 12: "\x{21D4}"
- RenderText {#text} at (559,17) size 5x17
- text run at (559,17) width 5: " "
- RenderMathMLMath {math} at (563,19) size 109x12 [padding: 0 1 0 1]
+ RenderText {#text} at (420,17) size 4x17
+ text run at (420,17) width 4: " "
+ RenderMathMLMath {math} at (424,19) size 102x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x12
RenderMathMLSpace {mspace} at (3,10) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x10
@@ -500,8 +500,9 @@
RenderBlock (anonymous) at (0,0) size 12x10
RenderText at (0,-35) size 12x80
text run at (0,-35) width 12: "\x{21DA}"
- RenderText {#text} at (0,0) size 0x0
- RenderMathMLMath {math} at (0,36) size 109x12 [padding: 0 1 0 1]
+ RenderText {#text} at (526,17) size 4x17
+ text run at (526,17) width 4: " "
+ RenderMathMLMath {math} at (530,19) size 102x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 107x12
RenderMathMLSpace {mspace} at (3,10) size 101x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 107x10
@@ -509,9 +510,9 @@
RenderBlock (anonymous) at (0,0) size 12x10
RenderText at (0,-35) size 12x80
text run at (0,-35) width 12: "\x{21DB}"
- RenderText {#text} at (108,34) size 5x17
- text run at (108,34) width 5: " "
- RenderMathMLMath {math} at (112,36) size 103x12 [padding: 0 1 0 1]
+ RenderText {#text} at (632,17) size 4x17
+ text run at (632,17) width 4: " "
+ RenderMathMLMath {math} at (636,19) size 102x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 100x12
RenderMathMLSpace {mspace} at (0,10) size 100x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 100x10
@@ -519,9 +520,8 @@
RenderBlock (anonymous) at (0,0) size 4x10
RenderText at (0,-34) size 4x80
text run at (0,-34) width 4: "\x{23B4}"
- RenderText {#text} at (214,34) size 5x17
- text run at (214,34) width 5: " "
- RenderMathMLMath {math} at (218,41) size 103x7 [padding: 0 1 0 1]
+ RenderText {#text} at (0,0) size 0x0
+ RenderMathMLMath {math} at (0,41) size 102x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 100x7
RenderMathMLSpace {mspace} at (0,5) size 100x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 100x5
@@ -529,9 +529,9 @@
RenderBlock (anonymous) at (0,0) size 4x4
RenderText at (0,-43) size 4x80
text run at (0,-43) width 4: "\x{23B5}"
- RenderText {#text} at (320,34) size 5x17
- text run at (320,34) width 5: " "
- RenderMathMLMath {math} at (324,36) size 103x12 [padding: 0 1 0 1]
+ RenderText {#text} at (102,34) size 4x17
+ text run at (102,34) width 4: " "
+ RenderMathMLMath {math} at (106,36) size 102x12 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 100x12
RenderMathMLSpace {mspace} at (0,10) size 100x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 100x10
@@ -539,9 +539,9 @@
RenderBlock (anonymous) at (0,0) size 6x10
RenderText at (0,-34) size 6x80
text run at (0,-34) width 6: "\x{23DC}"
- RenderText {#text} at (426,34) size 5x17
- text run at (426,34) width 5: " "
- RenderMathMLMath {math} at (430,41) size 103x7 [padding: 0 1 0 1]
+ RenderText {#text} at (208,34) size 4x17
+ text run at (208,34) width 4: " "
+ RenderMathMLMath {math} at (212,41) size 102x7 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 100x7
RenderMathMLSpace {mspace} at (0,5) size 100x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 100x5
@@ -549,9 +549,9 @@
RenderBlock (anonymous) at (0,0) size 6x4
RenderText at (0,-43) size 6x80
text run at (0,-43) width 6: "\x{23DD}"
- RenderText {#text} at (532,34) size 5x17
- text run at (532,34) width 5: " "
- RenderMathMLMath {math} at (536,35) size 103x13 [padding: 0 1 0 1]
+ RenderText {#text} at (314,34) size 4x17
+ text run at (314,34) width 4: " "
+ RenderMathMLMath {math} at (318,35) size 102x13 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 100x13
RenderMathMLSpace {mspace} at (0,11) size 100x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 100x11
@@ -559,9 +559,9 @@
RenderBlock (anonymous) at (0,0) size 6x11
RenderText at (0,-33) size 6x80
text run at (0,-33) width 6: "\x{23DE}"
- RenderText {#text} at (638,34) size 5x17
- text run at (638,34) width 5: " "
- RenderMathMLMath {math} at (642,40) size 103x8 [padding: 0 1 0 1]
+ RenderText {#text} at (420,34) size 4x17
+ text run at (420,34) width 4: " "
+ RenderMathMLMath {math} at (424,40) size 102x8 [padding: 0 1 0 1]
RenderMathMLUnderOver {mover} at (1,0) size 100x8
RenderMathMLSpace {mspace} at (0,6) size 100x2 [bgcolor=#FF0000]
RenderMathMLOperator {mo} at (0,0) size 100x6
Modified: trunk/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt (199292 => 199293)
--- trunk/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt 2016-04-11 12:11:18 UTC (rev 199293)
@@ -5,34 +5,34 @@
RenderBody {BODY} at (8,16) size 784x125
RenderBlock {P} at (0,0) size 784x25
RenderMathMLMath {math} at (0,2) size 10x23 [padding: 0 1 0 1]
- RenderMathMLRow {mstyle} at (1,0) size 8x23
- RenderMathMLUnderOver {mover} at (0,0) size 8x23
- RenderMathMLOperator {mo} at (-5,1) size 17x22
+ RenderMathMLRow {mstyle} at (1,0) size 16x23
+ RenderMathMLUnderOver {mover} at (0,0) size 16x23
+ RenderMathMLOperator {mo} at (0,1) size 16x22
RenderMathMLBlock (anonymous, flex) at (2,0) size 11x4
RenderBlock (anonymous) at (0,0) size 1x4
RenderText at (0,-3) size 1x0
text run at (0,-3) width 1: "\x{219C}"
- RenderMathMLSpace {mspace} at (0,0) size 8x1
+ RenderMathMLSpace {mspace} at (4,0) size 8x1
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (0,41) size 784x25
RenderMathMLMath {math} at (0,2) size 17x23 [padding: 0 1 0 1]
- RenderMathMLRow {mstyle} at (1,0) size 15x23
- RenderMathMLUnderOver {mover} at (0,0) size 15x23
- RenderMathMLOperator {mo} at (-6,1) size 27x22
+ RenderMathMLRow {mstyle} at (1,0) size 26x23
+ RenderMathMLUnderOver {mover} at (0,0) size 26x23
+ RenderMathMLOperator {mo} at (0,1) size 26x22
RenderMathMLBlock (anonymous, flex) at (2,0) size 21x4
RenderBlock (anonymous) at (0,0) size 1x4
RenderText at (0,-3) size 1x0
text run at (0,-3) width 1: "\x{219C}"
- RenderMathMLSpace {mspace} at (0,0) size 15x1
+ RenderMathMLSpace {mspace} at (5,0) size 16x1
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (0,82) size 784x43
RenderMathMLMath {math} at (0,0) size 152x43 [padding: 0 1 0 1]
- RenderMathMLRow {mstyle} at (1,0) size 150x43
- RenderMathMLUnderOver {mover} at (0,0) size 150x43
- RenderMathMLOperator {mo} at (-3,1) size 156x42
+ RenderMathMLRow {mstyle} at (1,0) size 156x43
+ RenderMathMLUnderOver {mover} at (0,0) size 156x43
+ RenderMathMLOperator {mo} at (0,1) size 156x42
RenderMathMLBlock (anonymous, flex) at (2,0) size 151x4
RenderBlock (anonymous) at (0,0) size 1x4
RenderText at (0,-3) size 1x0
text run at (0,-3) width 1: "\x{219C}"
- RenderMathMLSpace {mspace} at (0,0) size 150x1
+ RenderMathMLSpace {mspace} at (2,0) size 151x1
RenderText {#text} at (0,0) size 0x0
Modified: trunk/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt (199292 => 199293)
--- trunk/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt 2016-04-11 12:11:18 UTC (rev 199293)
@@ -5,34 +5,34 @@
RenderBody {BODY} at (8,16) size 784x121
RenderBlock {P} at (0,0) size 784x24
RenderMathMLMath {math} at (0,3) size 10x22 [padding: 0 1 0 1]
- RenderMathMLRow {mstyle} at (1,0) size 8x22
- RenderMathMLUnderOver {mover} at (0,0) size 8x22
- RenderMathMLOperator {mo} at (-5,1) size 17x21
+ RenderMathMLRow {mstyle} at (1,0) size 16x22
+ RenderMathMLUnderOver {mover} at (0,0) size 16x22
+ RenderMathMLOperator {mo} at (0,1) size 16x21
RenderMathMLBlock (anonymous, flex) at (2,0) size 11x4
RenderBlock (anonymous) at (0,0) size 2x4
RenderText at (0,-3) size 2x0
text run at (0,-3) width 2: "\x{219C}"
- RenderMathMLSpace {mspace} at (0,0) size 8x1
+ RenderMathMLSpace {mspace} at (4,0) size 8x1
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (0,40) size 784x24
RenderMathMLMath {math} at (0,3) size 17x22 [padding: 0 1 0 1]
- RenderMathMLRow {mstyle} at (1,0) size 15x22
- RenderMathMLUnderOver {mover} at (0,0) size 15x22
- RenderMathMLOperator {mo} at (-6,1) size 27x21
+ RenderMathMLRow {mstyle} at (1,0) size 26x22
+ RenderMathMLUnderOver {mover} at (0,0) size 26x22
+ RenderMathMLOperator {mo} at (0,1) size 26x21
RenderMathMLBlock (anonymous, flex) at (2,0) size 22x4
RenderBlock (anonymous) at (0,0) size 2x4
RenderText at (0,-3) size 2x0
text run at (0,-3) width 2: "\x{219C}"
- RenderMathMLSpace {mspace} at (0,0) size 15x1
+ RenderMathMLSpace {mspace} at (5,0) size 16x1
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (0,80) size 784x41
RenderMathMLMath {math} at (0,0) size 152x42 [padding: 0 1 0 1]
- RenderMathMLRow {mstyle} at (1,0) size 150x42
- RenderMathMLUnderOver {mover} at (0,0) size 150x42
- RenderMathMLOperator {mo} at (-3,1) size 156x41
+ RenderMathMLRow {mstyle} at (1,0) size 156x42
+ RenderMathMLUnderOver {mover} at (0,0) size 156x42
+ RenderMathMLOperator {mo} at (0,1) size 156x41
RenderMathMLBlock (anonymous, flex) at (2,0) size 151x4
RenderBlock (anonymous) at (0,0) size 2x4
RenderText at (0,-3) size 2x0
text run at (0,-3) width 2: "\x{219C}"
- RenderMathMLSpace {mspace} at (0,0) size 150x1
+ RenderMathMLSpace {mspace} at (2,0) size 151x1
RenderText {#text} at (0,0) size 0x0
Modified: trunk/Source/WebCore/ChangeLog (199292 => 199293)
--- trunk/Source/WebCore/ChangeLog 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/Source/WebCore/ChangeLog 2016-04-11 12:11:18 UTC (rev 199293)
@@ -1,3 +1,44 @@
+2016-04-11 Frederic Wang <[email protected]>
+
+ Refactor RenderMathMLUnderOver layout functions to avoid using flexbox
+ https://bugs.webkit.org/show_bug.cgi?id=153742
+
+ Reviewed by Sergio Villar Senin.
+
+ Based on a patch by Javier Fernandez <[email protected]>
+
+ Refactor the UnderOver renderer to use its own layoutBlock method that
+ does all the layout calculations without considering the flexbox
+ restrictions.
+
+ * css/mathml.css:
+ (mo, mfrac, munder, mover, munderover): Delete the underover elements from the line defining
+ the column direction.
+ (munder, mover, munderover): Deleted. This flexbox property is no longer needed.
+ (mover > :last-child, munderover > :last-child): Deleted. This flexbox property is no longer
+ needed.
+ * rendering/mathml/RenderMathMLUnderOver.cpp:
+ (WebCore::RenderMathMLUnderOver::firstLineBaseline): Use ascentForChild.
+ (WebCore::RenderMathMLUnderOver::computeOperatorsHorizontalStretch): Avoid stretching
+ operators that are not stretchy.
+ (WebCore::RenderMathMLUnderOver::isValid): Helper function to ensure that the child list is
+ valid with respect to the MathML specification.
+ (WebCore::RenderMathMLUnderOver::base): Added. Helper function.
+ (WebCore::RenderMathMLUnderOver::under): Added. Helper function.
+ (WebCore::RenderMathMLUnderOver::over): Added. Helper function.
+ (WebCore::RenderMathMLUnderOver::computePreferredLogicalWidths): Added.
+ The preferred width is the maximum preferred width of the base, under and over scripts.
+ (WebCore::RenderMathMLUnderOver::horizontalOffset): Added, helper to calculate the
+ horizontal position of children (horizontally centered).
+ (WebCore::RenderMathMLUnderOver::layoutBlock): Added, it lays out the base, underscript and
+ overscript. It calculates the exact logical width, which may differ from the preferred width when
+ one child contains stretchy operators. It later sets the locations of children accordingly
+ and sets the heigth of the render element.
+ (WebCore::RenderMathMLUnderOver::paintChildren): Added, we have to use the usual traverse
+ instead of the one that comes from the flexbox. This will be removed in a follow-up patch.
+ (WebCore::RenderMathMLUnderOver::layout): Deleted.
+ * rendering/mathml/RenderMathMLUnderOver.h: Added new functions definitions.
+
2016-04-07 Carlos Garcia Campos <[email protected]>
[GTK] Rework the theming code for GTK+ 3.20
Modified: trunk/Source/WebCore/css/mathml.css (199292 => 199293)
--- trunk/Source/WebCore/css/mathml.css 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/Source/WebCore/css/mathml.css 2016-04-11 12:11:18 UTC (rev 199293)
@@ -44,14 +44,10 @@
white-space: nowrap !important;
}
-mo, mfrac, munder, mover, munderover {
+mo, mfrac {
flex-direction: column;
}
-munder, mover, munderover {
- align-items: center;
-}
-
mfrac > * {
align-self: center;
}
@@ -78,10 +74,6 @@
-webkit-margin-end: 1px;
}
-mover > :last-child, munderover > :last-child {
- order: -1;
-}
-
msub > * + *, msup > * + *, msubsup > * + *, mmultiscripts > * + *, munder > * + *, mover > * + *, munderover > * + * {
font-size: 0.75em; /* FIXME: MathML standard is 0.71em */
}
Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp (199292 => 199293)
--- trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp 2016-04-11 12:11:18 UTC (rev 199293)
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2009 Alex Milowski ([email protected]). All rights reserved.
+ * Copyright (C) 2016 Igalia S.L.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -43,12 +44,12 @@
{
// Determine what kind of under/over _expression_ we have by element name
if (element.hasTagName(MathMLNames::munderTag))
- m_kind = Under;
+ m_scriptType = Under;
else if (element.hasTagName(MathMLNames::moverTag))
- m_kind = Over;
+ m_scriptType = Over;
else {
ASSERT(element.hasTagName(MathMLNames::munderoverTag));
- m_kind = UnderOver;
+ m_scriptType = UnderOver;
}
}
@@ -65,13 +66,11 @@
RenderBox* base = firstChildBox();
if (!base)
return Optional<int>();
- Optional<int> baseline = base->firstLineBaseline();
- if (baseline)
- baseline.value() += static_cast<int>(base->logicalTop());
- return baseline;
+
+ return Optional<int>(static_cast<int>(lroundf(ascentForChild(*base) + base->logicalTop())));
}
-void RenderMathMLUnderOver::layout()
+void RenderMathMLUnderOver::computeOperatorsHorizontalStretch()
{
LayoutUnit stretchWidth = 0;
Vector<RenderMathMLOperator*, 2> renderOperators;
@@ -80,7 +79,7 @@
if (child->needsLayout()) {
if (is<RenderMathMLBlock>(child)) {
if (auto renderOperator = downcast<RenderMathMLBlock>(*child).unembellishedOperator()) {
- if (!renderOperator->isVertical()) {
+ if (renderOperator->hasOperatorFlag(MathMLOperatorDictionary::Stretchy) && !renderOperator->isVertical()) {
renderOperator->resetStretchSize();
renderOperators.append(renderOperator);
}
@@ -99,10 +98,139 @@
// Set the sizes of (possibly embellished) stretchy operator children.
for (auto& renderOperator : renderOperators)
renderOperator->stretchTo(stretchWidth);
+}
- RenderMathMLBlock::layout();
+bool RenderMathMLUnderOver::isValid() const
+{
+ // Verify whether the list of children is valid:
+ // <munder> base under </munder>
+ // <mover> base over </mover>
+ // <munderover> base under over </munderover>
+ RenderBox* child = firstChildBox();
+ if (!child)
+ return false;
+ child = child->nextSiblingBox();
+ if (!child)
+ return false;
+ child = child->nextSiblingBox();
+ switch (m_scriptType) {
+ case Over:
+ case Under:
+ return !child;
+ case UnderOver:
+ return child && !child->nextSiblingBox();
+ default:
+ ASSERT_NOT_REACHED();
+ return false;
+ }
}
+RenderBox& RenderMathMLUnderOver::base() const
+{
+ ASSERT(isValid());
+ return *firstChildBox();
}
+RenderBox& RenderMathMLUnderOver::under() const
+{
+ ASSERT(isValid());
+ ASSERT(m_scriptType == Under || m_scriptType == UnderOver);
+ return *firstChildBox()->nextSiblingBox();
+}
+
+RenderBox& RenderMathMLUnderOver::over() const
+{
+ ASSERT(isValid());
+ ASSERT(m_scriptType == Over || m_scriptType == UnderOver);
+ RenderBox* secondChild = firstChildBox()->nextSiblingBox();
+ return m_scriptType == Over ? *secondChild : *secondChild->nextSiblingBox();
+}
+
+
+void RenderMathMLUnderOver::computePreferredLogicalWidths()
+{
+ ASSERT(preferredLogicalWidthsDirty());
+
+ if (!isValid()) {
+ m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = 0;
+ setPreferredLogicalWidthsDirty(false);
+ return;
+ }
+
+ LayoutUnit preferredWidth = base().maxPreferredLogicalWidth();
+
+ if (m_scriptType == Under || m_scriptType == UnderOver)
+ preferredWidth = std::max(preferredWidth, under().maxPreferredLogicalWidth());
+
+ if (m_scriptType == Over || m_scriptType == UnderOver)
+ preferredWidth = std::max(preferredWidth, over().maxPreferredLogicalWidth());
+
+ m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = preferredWidth;
+
+ setPreferredLogicalWidthsDirty(false);
+}
+
+LayoutUnit RenderMathMLUnderOver::horizontalOffset(const RenderBox& child) const
+{
+ return (logicalWidth() - child.logicalWidth()) / 2;
+}
+
+void RenderMathMLUnderOver::layoutBlock(bool relayoutChildren, LayoutUnit)
+{
+ ASSERT(needsLayout());
+
+ if (!relayoutChildren && simplifiedLayout())
+ return;
+
+ if (!isValid()) {
+ setLogicalWidth(0);
+ setLogicalHeight(0);
+ clearNeedsLayout();
+ return;
+ }
+
+ recomputeLogicalWidth();
+
+ computeOperatorsHorizontalStretch();
+
+ base().layoutIfNeeded();
+ if (m_scriptType == Under || m_scriptType == UnderOver)
+ under().layoutIfNeeded();
+ if (m_scriptType == Over || m_scriptType == UnderOver)
+ over().layoutIfNeeded();
+
+ LayoutUnit logicalWidth = base().logicalWidth();
+ if (m_scriptType == Under || m_scriptType == UnderOver)
+ logicalWidth = std::max(logicalWidth, under().logicalWidth());
+ if (m_scriptType == Over || m_scriptType == UnderOver)
+ logicalWidth = std::max(logicalWidth, over().logicalWidth());
+ setLogicalWidth(logicalWidth);
+
+ LayoutUnit verticalOffset = 0;
+ if (m_scriptType == Over || m_scriptType == UnderOver) {
+ over().setLocation(LayoutPoint(horizontalOffset(over()), 0));
+ verticalOffset += over().logicalHeight();
+ }
+ base().setLocation(LayoutPoint(horizontalOffset(base()), verticalOffset));
+ verticalOffset += base().logicalHeight();
+ if (m_scriptType == Under || m_scriptType == UnderOver) {
+ under().setLocation(LayoutPoint(horizontalOffset(under()), verticalOffset));
+ verticalOffset += under().logicalHeight();
+ }
+
+ setLogicalHeight(verticalOffset);
+
+ clearNeedsLayout();
+}
+
+void RenderMathMLUnderOver::paintChildren(PaintInfo& paintInfo, const LayoutPoint& paintOffset, PaintInfo& paintInfoForChild, bool usePrintRect)
+{
+ for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBox()) {
+ if (!paintChild(*child, paintInfo, paintOffset, paintInfoForChild, usePrintRect, PaintAsInlineBlock))
+ return;
+ }
+}
+
+}
+
#endif // ENABLE(MATHML)
Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h (199292 => 199293)
--- trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h 2016-04-11 10:59:03 UTC (rev 199292)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h 2016-04-11 12:11:18 UTC (rev 199293)
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2009 Alex Milowski ([email protected]). All rights reserved.
+ * Copyright (C) 2016 Igalia S.L.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -39,16 +40,24 @@
RenderMathMLOperator* unembellishedOperator() override;
Optional<int> firstLineBaseline() const override;
-
-protected:
- void layout() override;
+ void computePreferredLogicalWidths() final;
+ void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) final;
+ void paintChildren(PaintInfo& forSelf, const LayoutPoint&, PaintInfo& forChild, bool usePrintRect) final;
+
private:
bool isRenderMathMLUnderOver() const override { return true; }
const char* renderName() const override { return "RenderMathMLUnderOver"; }
+ void computeOperatorsHorizontalStretch();
+ bool isValid() const;
+ RenderBox& base() const;
+ RenderBox& under() const;
+ RenderBox& over() const;
+ LayoutUnit horizontalOffset(const RenderBox&) const;
+
enum UnderOverType { Under, Over, UnderOver };
- UnderOverType m_kind;
+ UnderOverType m_scriptType;
};
}
_______________________________________________ webkit-changes mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-changes
