Changeset 169945 in webkit
- Timestamp:
- Jun 13, 2014 1:34:54 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 10 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r169940 r169945 1 2014-06-13 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r169939. 4 https://bugs.webkit.org/show_bug.cgi?id=133878 5 6 This patch raises assertions on mac (Requested by fredw on 7 #webkit). 8 9 Reverted changeset: 10 11 "Draw radicals with glyphs for better rendering" 12 https://bugs.webkit.org/show_bug.cgi?id=119038 13 http://trac.webkit.org/changeset/169939 14 1 15 2014-06-13 Enrique Ocaña González <eocanha@igalia.com> 2 16 -
trunk/LayoutTests/TestExpectations
r169939 r169945 68 68 webkit.org/b/127860 [ Debug ] js/function-apply-aliased.html [ Skip ] 69 69 70 # These tests verify dynamic manipulation of the mroot and msqrt elements. 71 # Unfortunately, the current MathML code does not handle them well. 72 webkit.org/b/119038 mathml/roots-addChild.html [ Skip ] 73 webkit.org/b/119038 mathml/roots-removeChild.html [ Skip ] 74 70 75 # This test verifies that a mismatch reftest will fail as intended if both results are same. (introduced in r93187) 71 76 fast/harness/sample-fail-mismatch-reftest.html [ WontFix ImageOnlyFailure ] -
trunk/LayoutTests/platform/efl/TestExpectations
r169939 r169945 1636 1636 webkit.org/b/72828 mathml/opentype/opentype-stretchy-horizontal.html [ Failure ] 1637 1637 webkit.org/b/72828 mathml/opentype/horizontal-LatinModern-munderover.html [ Failure ] 1638 webkit.org/b/119038 mathml/opentype/roots-LatinModern.html [ Failure ]1639 webkit.org/b/119038 mathml/presentation/mo-stretch.html [ Failure ]1640 webkit.org/b/119038 mathml/presentation/roots.xhtml [ Failure ]1641 1638 1642 1639 # Failures EFL since the inception -
trunk/LayoutTests/platform/gtk/mathml/presentation/mo-stretch-expected.txt
r169939 r169945 1 1 layer at (0,0) size 800x600 2 2 RenderView at (0,0) size 800x600 3 layer at (0,0) size 800x2 594 RenderBlock {HTML} at (0,0) size 800x2 595 RenderBody {BODY} at (8,8) size 784x24 33 layer at (0,0) size 800x260 4 RenderBlock {HTML} at (0,0) size 800x260 5 RenderBody {BODY} at (8,8) size 784x244 6 6 RenderMathMLMath {math} at (0,0) size 126x24 [padding: 0 1 0 1] 7 7 RenderMathMLRow {mrow} at (1,0) size 124x24 … … 306 306 RenderBR {BR} at (0,0) size 0x0 307 307 RenderMathMLMath {math} at (0,166) size 138x78 [padding: 0 1 0 1] 308 RenderMathMLSquareRoot {msqrt} at (1,0) size 136x78 309 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x78 310 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x78 311 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x78 312 RenderBlock (anonymous) at (0,0) size 12x78 313 RenderText at (0,-1) size 15x25 314 text run at (0,-1) width 15: "\x{221A}" 315 RenderMathMLRootWrapper at (12,3) size 124x75 308 RenderMathMLSquareRoot {msqrt} at (1,0) size 136x78 [intrinsic padding: 3 0 3 12] 309 RenderMathMLRow (anonymous) at (12,3) size 124x72 316 310 RenderMathMLOperator {mo} at (0,0) size 7x72 317 311 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14 -
trunk/LayoutTests/platform/gtk/mathml/presentation/roots-expected.txt
r169939 r169945 1 1 layer at (0,0) size 800x600 2 2 RenderView at (0,0) size 800x600 3 layer at (0,0) size 800x506 4 RenderBlock {html} at (0,0) size 800x506 5 RenderBody {body} at (8,16) size 784x474 6 RenderBlock {p} at (0,0) size 784x18 7 RenderText {#text} at (0,1) size 177x17 8 text run at (0,1) width 177: "square root (should be red): " 9 RenderMathMLMath {math} at (177,0) size 22x18 [padding: 0 1 0 1] 10 RenderMathMLSquareRoot {msqrt} at (1,0) size 20x18 [color=#FF0000] 11 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 12 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x18 13 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 14 RenderBlock (anonymous) at (0,0) size 12x18 15 RenderText at (0,-1) size 15x25 16 text run at (0,-1) width 15: "\x{221A}" 17 RenderMathMLRootWrapper at (12,3) size 8x15 3 layer at (0,0) size 800x512 4 RenderBlock {html} at (0,0) size 800x512 5 RenderBody {body} at (8,16) size 784x480 6 RenderBlock {p} at (0,0) size 784x17 7 RenderText {#text} at (0,0) size 177x17 8 text run at (0,0) width 177: "square root (should be red): " 9 RenderMathMLMath {math} at (177,0) size 22x15 [padding: 0 1 0 1] 10 RenderMathMLSquareRoot {msqrt} at (1,0) size 20x15 [color=#FF0000] [intrinsic padding: 3 0 0 12] 11 RenderMathMLRow (anonymous) at (12,3) size 8x12 18 12 RenderMathMLToken {mn} at (0,0) size 8x12 19 13 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 … … 21 15 RenderText {#text} at (0,-6) size 8x25 22 16 text run at (0,-6) width 8: "2" 23 RenderBlock {p} at (0,34) size 784x18 24 RenderText {#text} at (0,1) size 110x17 25 text run at (0,1) width 110: "long square root: " 26 RenderMathMLMath {math} at (110,0) size 49x18 [padding: 0 1 0 1] 27 RenderMathMLSquareRoot {msqrt} at (1,0) size 47x18 28 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 29 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x18 30 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 31 RenderBlock (anonymous) at (0,0) size 12x18 32 RenderText at (0,-1) size 15x25 33 text run at (0,-1) width 15: "\x{221A}" 34 RenderMathMLRootWrapper at (12,3) size 35x15 17 RenderBlock {p} at (0,33) size 784x17 18 RenderText {#text} at (0,0) size 110x17 19 text run at (0,0) width 110: "long square root: " 20 RenderMathMLMath {math} at (110,0) size 49x15 [padding: 0 1 0 1] 21 RenderMathMLSquareRoot {msqrt} at (1,0) size 47x15 [intrinsic padding: 3 0 0 12] 22 RenderMathMLRow (anonymous) at (12,3) size 35x12 35 23 RenderMathMLRow {mrow} at (0,0) size 35x12 36 24 RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0] … … 49 37 RenderText {#text} at (0,-6) size 8x25 50 38 text run at (0,-6) width 8: "1" 51 RenderBlock {p} at (0,68) size 784x22 52 RenderText {#text} at (0,5) size 222x17 53 text run at (0,5) width 222: "long square root with implied row: " 54 RenderMathMLMath {math} at (222,0) size 55x22 [padding: 0 1 0 1] 55 RenderMathMLSquareRoot {msqrt} at (1,0) size 53x22 56 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x22 57 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x22 58 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x22 59 RenderBlock (anonymous) at (0,0) size 12x22 60 RenderText at (0,-1) size 15x25 61 text run at (0,-1) width 15: "\x{221A}" 62 RenderMathMLRootWrapper at (12,3) size 41x19 39 RenderBlock {p} at (0,66) size 784x21 40 RenderText {#text} at (0,4) size 222x17 41 text run at (0,4) width 222: "long square root with implied row: " 42 RenderMathMLMath {math} at (222,0) size 55x19 [padding: 0 1 0 1] 43 RenderMathMLSquareRoot {msqrt} at (1,0) size 53x19 [intrinsic padding: 3 0 0 12] 44 RenderMathMLRow (anonymous) at (12,3) size 41x16 63 45 RenderMathMLScripts {msup} at (0,0) size 15x16 64 46 Base Wrapper at (0,0) size 9x16 [padding: 7 0 0 0] … … 84 66 RenderText {#text} at (0,-6) size 8x25 85 67 text run at (0,-6) width 8: "1" 86 RenderBlock {p} at (0,10 6) size 784x3787 RenderText {#text} at (0, 10) size 113x1788 text run at (0, 10) width 113: "root of a fraction: "68 RenderBlock {p} at (0,103) size 784x37 69 RenderText {#text} at (0,9) size 113x17 70 text run at (0,9) width 113: "root of a fraction: " 89 71 RenderMathMLMath {math} at (113,0) size 51x38 [padding: 0 1 0 1] 90 RenderMathMLSquareRoot {msqrt} at (1,0) size 49x38 91 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x38 92 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x38 93 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x37 94 RenderBlock (anonymous) at (0,0) size 12x37 95 RenderText at (0,-1) size 15x25 96 text run at (0,-1) width 15: "\x{221A}" 97 RenderMathMLRootWrapper at (12,3) size 37x35 72 RenderMathMLSquareRoot {msqrt} at (1,0) size 49x38 [intrinsic padding: 3 0 3 12] 73 RenderMathMLRow (anonymous) at (12,3) size 37x32 98 74 RenderMathMLFraction {mfrac} at (1,0) size 35x32 99 75 RenderMathMLBlock (anonymous, flex) at (0,0) size 35x16 … … 131 107 RenderText {#text} at (0,-6) size 8x25 132 108 text run at (0,-6) width 8: "2" 133 RenderBlock {p} at (0,15 9) size 784x18134 RenderText {#text} at (0, 1) size 173x17135 text run at (0, 1) width 173: "cube root (should be blue): "109 RenderBlock {p} at (0,156) size 784x21 110 RenderText {#text} at (0,4) size 173x17 111 text run at (0,4) width 173: "cube root (should be blue): " 136 112 RenderMathMLMath {math} at (173,0) size 23x19 [color=#0000FF] [padding: 0 1 0 1] 137 RenderMathMLRoot {mroot} at (1,0) size 21x19 138 RenderMathMLRootWrapper at (4,0) size 6x19 139 RenderMathMLToken {mn} at (0,0) size 5x8 140 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 141 RenderBlock (anonymous) at (0,0) size 5x8 142 RenderText {#text} at (0,-3) size 5x15 143 text run at (0,-3) width 5: "3" 144 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x19 145 RenderMathMLRadicalOperator (anonymous) at (0,1) size 12x18 146 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 147 RenderBlock (anonymous) at (0,0) size 12x18 148 RenderText at (0,-1) size 15x25 149 text run at (0,-1) width 15: "\x{221A}" 150 RenderMathMLRootWrapper at (12,4) size 9x15 151 RenderMathMLToken {mn} at (0,0) size 8x12 113 RenderBlock {p} at (0,193) size 784x21 114 RenderText {#text} at (0,4) size 75x17 115 text run at (0,4) width 75: "long index: " 116 RenderMathMLMath {math} at (75,0) size 62x19 [padding: 0 1 0 1] 117 RenderBlock {p} at (0,230) size 784x37 118 RenderText {#text} at (0,9) size 185x17 119 text run at (0,9) width 185: "long index w/ complex base: " 120 RenderMathMLMath {math} at (185,0) size 92x38 [padding: 0 1 0 1] 121 RenderBlock {p} at (0,283) size 784x46 122 RenderText {#text} at (0,29) size 75x17 123 text run at (0,29) width 75: "high index: " 124 RenderMathMLMath {math} at (75,0) size 25x44 [padding: 0 1 0 1] 125 RenderBlock {p} at (0,345) size 784x45 126 RenderText {#text} at (0,21) size 155x17 127 text run at (0,21) width 155: "Imbricated square roots: " 128 RenderMathMLMath {math} at (155,0) size 293x45 [padding: 0 1 0 1] 129 RenderMathMLSquareRoot {msqrt} at (1,0) size 291x45 [intrinsic padding: 3 0 3 12] 130 RenderMathMLRow (anonymous) at (12,3) size 279x39 131 RenderMathMLToken {mn} at (0,21) size 8x12 152 132 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 153 133 RenderBlock (anonymous) at (0,0) size 8x12 154 134 RenderText {#text} at (0,-6) size 8x25 155 text run at (0,-6) width 8: "2" 156 RenderBlock {p} at (0,193) size 784x18 157 RenderText {#text} at (0,1) size 75x17 158 text run at (0,1) width 75: "long index: " 159 RenderMathMLMath {math} at (75,0) size 53x18 [padding: 0 1 0 1] 160 RenderMathMLRoot {mroot} at (1,0) size 51x18 161 RenderMathMLRootWrapper at (4,0) size 36x18 162 RenderMathMLRow {mrow} at (0,0) size 35x7 163 RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0] 164 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 165 RenderBlock (anonymous) at (0,0) size 4x5 166 RenderText {#text} at (0,-6) size 4x15 167 text run at (0,-6) width 4: "x" 168 RenderMathMLOperator {mo} at (4,0) size 11x6 169 RenderMathMLBlock (anonymous, flex) at (2,0) size 6x6 170 RenderBlock (anonymous) at (0,0) size 6x6 171 RenderText at (0,-5) size 6x15 172 text run at (0,-5) width 6: "+" 173 RenderMathMLToken {mi} at (14,1) size 6x6 [padding: 0 1 0 0] 174 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6 175 RenderBlock (anonymous) at (0,0) size 4x6 176 RenderText {#text} at (0,-6) size 4x15 177 text run at (0,-6) width 4: "y" 178 RenderMathMLOperator {mo} at (19,0) size 11x6 179 RenderMathMLBlock (anonymous, flex) at (2,0) size 6x6 180 RenderBlock (anonymous) at (0,0) size 6x6 181 RenderText at (0,-5) size 6x15 182 text run at (0,-5) width 6: "+" 183 RenderMathMLToken {mi} at (29,1) size 6x5 [padding: 0 1 0 0] 184 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 185 RenderBlock (anonymous) at (0,0) size 4x5 186 RenderText {#text} at (0,-6) size 4x15 187 text run at (0,-6) width 4: "z" 188 RenderMathMLBlock (anonymous, flex) at (30,0) size 13x18 189 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x18 190 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 191 RenderBlock (anonymous) at (0,0) size 12x18 192 RenderText at (0,-1) size 15x25 193 text run at (0,-1) width 15: "\x{221A}" 194 RenderMathMLRootWrapper at (42,3) size 9x15 195 RenderMathMLToken {mn} at (0,0) size 8x12 196 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 197 RenderBlock (anonymous) at (0,0) size 8x12 198 RenderText {#text} at (0,-6) size 8x25 199 text run at (0,-6) width 8: "2" 200 RenderBlock {p} at (0,227) size 784x37 201 RenderText {#text} at (0,10) size 185x17 202 text run at (0,10) width 185: "long index w/ complex base: " 203 RenderMathMLMath {math} at (185,0) size 81x38 [padding: 0 1 0 1] 204 RenderMathMLRoot {mroot} at (1,0) size 79x38 205 RenderMathMLRootWrapper at (4,8) size 36x30 206 RenderMathMLRow {mrow} at (0,0) size 35x7 207 RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0] 208 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 209 RenderBlock (anonymous) at (0,0) size 4x5 210 RenderText {#text} at (0,-6) size 4x15 211 text run at (0,-6) width 4: "x" 212 RenderMathMLOperator {mo} at (4,0) size 11x6 213 RenderMathMLBlock (anonymous, flex) at (2,0) size 6x6 214 RenderBlock (anonymous) at (0,0) size 6x6 215 RenderText at (0,-5) size 6x15 216 text run at (0,-5) width 6: "+" 217 RenderMathMLToken {mi} at (14,1) size 6x6 [padding: 0 1 0 0] 218 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6 219 RenderBlock (anonymous) at (0,0) size 4x6 220 RenderText {#text} at (0,-6) size 4x15 221 text run at (0,-6) width 4: "y" 222 RenderMathMLOperator {mo} at (19,0) size 11x6 223 RenderMathMLBlock (anonymous, flex) at (2,0) size 6x6 224 RenderBlock (anonymous) at (0,0) size 6x6 225 RenderText at (0,-5) size 6x15 226 text run at (0,-5) width 6: "+" 227 RenderMathMLToken {mi} at (29,1) size 6x5 [padding: 0 1 0 0] 228 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 229 RenderBlock (anonymous) at (0,0) size 4x5 230 RenderText {#text} at (0,-6) size 4x15 231 text run at (0,-6) width 4: "z" 232 RenderMathMLBlock (anonymous, flex) at (30,0) size 13x38 233 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x38 234 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x37 235 RenderBlock (anonymous) at (0,0) size 12x37 236 RenderText at (0,-1) size 15x25 237 text run at (0,-1) width 15: "\x{221A}" 238 RenderMathMLRootWrapper at (42,3) size 37x35 239 RenderMathMLFraction {mfrac} at (1,0) size 35x32 240 RenderMathMLBlock (anonymous, flex) at (0,0) size 35x16 241 RenderMathMLRow {mrow} at (0,0) size 35x12 242 RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0] 243 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x9 244 RenderBlock (anonymous) at (0,0) size 7x9 245 RenderText {#text} at (0,-9) size 7x25 246 text run at (0,-9) width 7: "x" 247 RenderMathMLOperator {mo} at (8,2) size 19x10 135 text run at (0,-6) width 8: "1" 136 RenderMathMLOperator {mo} at (8,23) size 19x10 137 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 138 RenderBlock (anonymous) at (0,0) size 11x10 139 RenderText at (0,-8) size 11x25 140 text run at (0,-8) width 11: "+" 141 RenderMathMLSquareRoot {msqrt} at (26,0) size 253x39 [intrinsic padding: 3 0 3 12] 142 RenderMathMLRow (anonymous) at (12,3) size 241x33 143 RenderMathMLRow {mrow} at (0,0) size 241x33 144 RenderMathMLToken {mn} at (0,18) size 8x12 145 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 146 RenderBlock (anonymous) at (0,0) size 8x12 147 RenderText {#text} at (0,-6) size 8x25 148 text run at (0,-6) width 8: "2" 149 RenderMathMLOperator {mo} at (8,20) size 19x10 248 150 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 249 151 RenderBlock (anonymous) at (0,0) size 11x10 250 152 RenderText at (0,-8) size 11x25 251 153 text run at (0,-8) width 11: "+" 252 RenderMathMLToken {mn} at (26,0) size 9x12 253 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 254 RenderBlock (anonymous) at (0,0) size 8x12 255 RenderText {#text} at (0,-6) size 8x25 256 text run at (0,-6) width 8: "1" 257 RenderMathMLBlock (anonymous, flex) at (0,15) size 35x17 [padding: 1 0 0 0] 258 RenderMathMLRow {mrow} at (0,4) size 35x13 259 RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0] 260 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x9 261 RenderBlock (anonymous) at (0,0) size 7x9 262 RenderText {#text} at (0,-9) size 7x25 263 text run at (0,-9) width 7: "x" 264 RenderMathMLOperator {mo} at (8,2) size 19x10 265 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 266 RenderBlock (anonymous) at (0,0) size 11x10 267 RenderText at (0,-8) size 11x25 268 text run at (0,-8) width 11: "+" 269 RenderMathMLToken {mn} at (26,0) size 9x12 270 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 271 RenderBlock (anonymous) at (0,0) size 8x12 272 RenderText {#text} at (0,-6) size 8x25 273 text run at (0,-6) width 8: "2" 274 RenderBlock {p} at (0,280) size 784x35 275 RenderText {#text} at (0,18) size 75x17 276 text run at (0,18) width 75: "high index: " 277 RenderMathMLMath {math} at (75,0) size 27x36 [padding: 0 1 0 1] 278 RenderMathMLRoot {mroot} at (1,0) size 25x36 279 RenderMathMLRootWrapper at (4,0) size 10x36 280 RenderMathMLFraction {mfrac} at (1,0) size 7x26 281 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18 282 RenderMathMLFraction {mfrac} at (1,0) size 5x16 283 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 284 RenderMathMLToken {mi} at (0,0) size 5x5 [padding: 0 1 0 0] 285 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 286 RenderBlock (anonymous) at (0,0) size 4x5 287 RenderText {#text} at (0,-6) size 4x15 288 text run at (0,-6) width 4: "x" 289 RenderMathMLBlock (anonymous, flex) at (0,6) size 5x10 [padding: 1 0 0 0] 290 RenderMathMLToken {mi} at (0,2) size 5x7 [padding: 0 1 0 0] 291 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6 292 RenderBlock (anonymous) at (0,0) size 4x6 293 RenderText {#text} at (0,-6) size 4x15 294 text run at (0,-6) width 4: "y" 295 RenderMathMLBlock (anonymous, flex) at (0,17) size 7x9 [padding: 1 0 0 0] 296 RenderMathMLToken {mi} at (1,2) size 5x6 [padding: 0 1 0 0] 297 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 298 RenderBlock (anonymous) at (0,0) size 4x5 299 RenderText {#text} at (0,-6) size 4x15 300 text run at (0,-6) width 4: "z" 301 RenderMathMLBlock (anonymous, flex) at (4,0) size 13x36 302 RenderMathMLRadicalOperator (anonymous) at (0,18) size 12x18 303 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 304 RenderBlock (anonymous) at (0,0) size 12x18 305 RenderText at (0,-1) size 15x25 306 text run at (0,-1) width 15: "\x{221A}" 307 RenderMathMLRootWrapper at (16,21) size 9x15 308 RenderMathMLToken {mn} at (0,0) size 8x12 309 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 310 RenderBlock (anonymous) at (0,0) size 8x12 311 RenderText {#text} at (0,-6) size 8x25 312 text run at (0,-6) width 8: "2" 313 RenderBlock {p} at (0,331) size 784x59 314 RenderText {#text} at (0,29) size 155x17 315 text run at (0,29) width 155: "Imbricated square roots: " 316 RenderMathMLMath {math} at (155,0) size 293x60 [padding: 0 1 0 1] 317 RenderMathMLSquareRoot {msqrt} at (1,0) size 291x60 318 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x60 319 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x60 320 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x60 321 RenderBlock (anonymous) at (0,0) size 12x60 322 RenderText at (0,-1) size 15x25 323 text run at (0,-1) width 15: "\x{221A}" 324 RenderMathMLRootWrapper at (12,3) size 279x57 325 RenderMathMLToken {mn} at (0,28) size 8x12 326 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 327 RenderBlock (anonymous) at (0,0) size 8x12 328 RenderText {#text} at (0,-6) size 8x25 329 text run at (0,-6) width 8: "1" 330 RenderMathMLOperator {mo} at (8,30) size 19x10 331 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 332 RenderBlock (anonymous) at (0,0) size 11x10 333 RenderText at (0,-8) size 11x25 334 text run at (0,-8) width 11: "+" 335 RenderMathMLSquareRoot {msqrt} at (26,0) size 253x54 336 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x54 337 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x54 338 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x54 339 RenderBlock (anonymous) at (0,0) size 12x54 340 RenderText at (0,-1) size 15x25 341 text run at (0,-1) width 15: "\x{221A}" 342 RenderMathMLRootWrapper at (12,3) size 241x51 343 RenderMathMLRow {mrow} at (0,0) size 241x48 344 RenderMathMLToken {mn} at (0,24) size 8x12 345 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 346 RenderBlock (anonymous) at (0,0) size 8x12 347 RenderText {#text} at (0,-6) size 8x25 348 text run at (0,-6) width 8: "2" 349 RenderMathMLOperator {mo} at (8,26) size 19x10 350 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 351 RenderBlock (anonymous) at (0,0) size 11x10 352 RenderText at (0,-8) size 11x25 353 text run at (0,-8) width 11: "+" 354 RenderMathMLSquareRoot {msqrt} at (26,0) size 215x48 355 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x48 356 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x48 357 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x48 358 RenderBlock (anonymous) at (0,0) size 12x48 359 RenderText at (0,-1) size 15x25 360 text run at (0,-1) width 15: "\x{221A}" 361 RenderMathMLRootWrapper at (12,3) size 203x45 362 RenderMathMLRow {mrow} at (0,0) size 203x42 363 RenderMathMLToken {mn} at (0,20) size 8x12 154 RenderMathMLSquareRoot {msqrt} at (26,0) size 215x33 [intrinsic padding: 3 0 3 12] 155 RenderMathMLRow (anonymous) at (12,3) size 203x27 156 RenderMathMLRow {mrow} at (0,0) size 203x27 157 RenderMathMLToken {mn} at (0,15) size 8x12 364 158 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 365 159 RenderBlock (anonymous) at (0,0) size 8x12 366 160 RenderText {#text} at (0,-6) size 8x25 367 161 text run at (0,-6) width 8: "3" 368 RenderMathMLOperator {mo} at (8, 22) size 19x10162 RenderMathMLOperator {mo} at (8,17) size 19x10 369 163 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 370 164 RenderBlock (anonymous) at (0,0) size 11x10 371 165 RenderText at (0,-8) size 11x25 372 166 text run at (0,-8) width 11: "+" 373 RenderMathMLSquareRoot {msqrt} at (26,0) size 177x42 374 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x42 375 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x42 376 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x42 377 RenderBlock (anonymous) at (0,0) size 12x42 378 RenderText at (0,-1) size 15x25 379 text run at (0,-1) width 15: "\x{221A}" 380 RenderMathMLRootWrapper at (12,3) size 164x39 381 RenderMathMLRow {mrow} at (0,0) size 164x36 382 RenderMathMLToken {mn} at (0,16) size 8x12 167 RenderMathMLSquareRoot {msqrt} at (26,0) size 177x27 [intrinsic padding: 3 0 0 12] 168 RenderMathMLRow (anonymous) at (12,3) size 164x24 169 RenderMathMLRow {mrow} at (0,0) size 164x24 170 RenderMathMLToken {mn} at (0,12) size 8x12 383 171 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 384 172 RenderBlock (anonymous) at (0,0) size 8x12 385 173 RenderText {#text} at (0,-6) size 8x25 386 174 text run at (0,-6) width 8: "4" 387 RenderMathMLOperator {mo} at (8,1 8) size 19x10175 RenderMathMLOperator {mo} at (8,14) size 19x10 388 176 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 389 177 RenderBlock (anonymous) at (0,0) size 11x10 390 178 RenderText at (0,-8) size 11x25 391 179 text run at (0,-8) width 11: "+" 392 RenderMathMLSquareRoot {msqrt} at (26,0) size 138x36 393 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x36 394 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x36 395 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x36 396 RenderBlock (anonymous) at (0,0) size 12x36 397 RenderText at (0,-1) size 15x25 398 text run at (0,-1) width 15: "\x{221A}" 399 RenderMathMLRootWrapper at (12,3) size 126x33 400 RenderMathMLRow {mrow} at (0,0) size 126x30 401 RenderMathMLToken {mn} at (0,11) size 8x13 180 RenderMathMLSquareRoot {msqrt} at (26,0) size 138x24 [intrinsic padding: 3 0 0 12] 181 RenderMathMLRow (anonymous) at (12,3) size 126x21 182 RenderMathMLRow {mrow} at (0,0) size 126x21 183 RenderMathMLToken {mn} at (0,8) size 8x13 402 184 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x13 403 185 RenderBlock (anonymous) at (0,0) size 8x13 404 186 RenderText {#text} at (0,-5) size 8x25 405 187 text run at (0,-5) width 8: "5" 406 RenderMathMLOperator {mo} at (8,1 4) size 19x10188 RenderMathMLOperator {mo} at (8,11) size 19x10 407 189 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 408 190 RenderBlock (anonymous) at (0,0) size 11x10 409 191 RenderText at (0,-8) size 11x25 410 192 text run at (0,-8) width 11: "+" 411 RenderMathMLSquareRoot {msqrt} at (26,0) size 100x30 412 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x30 413 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x30 414 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x30 415 RenderBlock (anonymous) at (0,0) size 12x30 416 RenderText at (0,-1) size 15x25 417 text run at (0,-1) width 15: "\x{221A}" 418 RenderMathMLRootWrapper at (12,3) size 88x27 419 RenderMathMLRow {mrow} at (0,0) size 88x24 420 RenderMathMLToken {mn} at (0,8) size 8x12 193 RenderMathMLSquareRoot {msqrt} at (26,0) size 100x21 [intrinsic padding: 3 0 0 12] 194 RenderMathMLRow (anonymous) at (12,3) size 88x18 195 RenderMathMLRow {mrow} at (0,0) size 88x18 196 RenderMathMLToken {mn} at (0,6) size 8x12 421 197 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 422 198 RenderBlock (anonymous) at (0,0) size 8x12 423 199 RenderText {#text} at (0,-6) size 8x25 424 200 text run at (0,-6) width 8: "6" 425 RenderMathMLOperator {mo} at (8, 10) size 19x10201 RenderMathMLOperator {mo} at (8,8) size 19x10 426 202 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 427 203 RenderBlock (anonymous) at (0,0) size 11x10 428 204 RenderText at (0,-8) size 11x25 429 205 text run at (0,-8) width 11: "+" 430 RenderMathMLSquareRoot {msqrt} at (26,0) size 62x24 431 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x24 432 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x24 433 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x24 434 RenderBlock (anonymous) at (0,0) size 12x24 435 RenderText at (0,-1) size 15x25 436 text run at (0,-1) width 15: "\x{221A}" 437 RenderMathMLRootWrapper at (12,3) size 50x21 438 RenderMathMLRow {mrow} at (0,0) size 50x18 439 RenderMathMLToken {mn} at (0,4) size 8x12 206 RenderMathMLSquareRoot {msqrt} at (26,0) size 62x18 [intrinsic padding: 3 0 0 12] 207 RenderMathMLRow (anonymous) at (12,3) size 50x15 208 RenderMathMLRow {mrow} at (0,0) size 50x15 209 RenderMathMLToken {mn} at (0,3) size 8x12 440 210 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 441 211 RenderBlock (anonymous) at (0,0) size 8x12 442 212 RenderText {#text} at (0,-6) size 8x25 443 213 text run at (0,-6) width 8: "7" 444 RenderMathMLOperator {mo} at (8, 6) size 19x10214 RenderMathMLOperator {mo} at (8,5) size 19x10 445 215 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 446 216 RenderBlock (anonymous) at (0,0) size 11x10 447 217 RenderText at (0,-8) size 11x25 448 218 text run at (0,-8) width 11: "+" 449 RenderMathMLSquareRoot {msqrt} at (26,0) size 24x18 450 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 451 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x18 452 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 453 RenderBlock (anonymous) at (0,0) size 12x18 454 RenderText at (0,-1) size 15x25 455 text run at (0,-1) width 15: "\x{221A}" 456 RenderMathMLRootWrapper at (12,3) size 12x15 219 RenderMathMLSquareRoot {msqrt} at (26,0) size 24x15 [intrinsic padding: 3 0 0 12] 220 RenderMathMLRow (anonymous) at (12,3) size 12x12 457 221 RenderMathMLToken {mi} at (0,0) size 12x12 [padding: 0 2 0 0] 458 222 RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12 … … 461 225 text run at (0,-6) width 10: "A" 462 226 RenderText {#text} at (0,0) size 0x0 463 RenderBlock {p} at (0,406) size 784x 68227 RenderBlock {p} at (0,406) size 784x74 464 228 RenderText {#text} at (0,38) size 110x17 465 229 text run at (0,38) width 110: "Imbricated roots: " 466 RenderMathMLMath {math} at (110,0) size 314x69 [padding: 0 1 0 1] 467 RenderMathMLRoot {mroot} at (1,0) size 312x69 468 RenderMathMLRootWrapper at (4,19) size 6x50 469 RenderMathMLToken {mn} at (0,0) size 5x8 470 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 471 RenderBlock (anonymous) at (0,0) size 5x8 472 RenderText {#text} at (0,-3) size 5x15 473 text run at (0,-3) width 5: "3" 474 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x69 475 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x69 476 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x68 477 RenderBlock (anonymous) at (0,0) size 12x68 478 RenderText at (0,-1) size 15x25 479 text run at (0,-1) width 15: "\x{221A}" 480 RenderMathMLRootWrapper at (12,3) size 300x66 481 RenderMathMLRow {mrow} at (0,0) size 299x63 482 RenderMathMLToken {mn} at (0,37) size 8x12 483 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 484 RenderBlock (anonymous) at (0,0) size 8x12 485 RenderText {#text} at (0,-6) size 8x25 486 text run at (0,-6) width 8: "1" 487 RenderMathMLOperator {mo} at (8,39) size 19x10 488 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 489 RenderBlock (anonymous) at (0,0) size 11x10 490 RenderText at (0,-8) size 11x25 491 text run at (0,-8) width 11: "+" 492 RenderMathMLRoot {mroot} at (26,0) size 273x63 493 RenderMathMLRootWrapper at (4,17) size 6x46 494 RenderMathMLToken {mn} at (0,0) size 5x8 495 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 496 RenderBlock (anonymous) at (0,0) size 5x8 497 RenderText {#text} at (0,-3) size 5x15 498 text run at (0,-3) width 5: "4" 499 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x63 500 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x63 501 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x63 502 RenderBlock (anonymous) at (0,0) size 12x63 503 RenderText at (0,-1) size 15x25 504 text run at (0,-1) width 15: "\x{221A}" 505 RenderMathMLRootWrapper at (12,3) size 261x60 506 RenderMathMLRow {mrow} at (0,0) size 261x57 507 RenderMathMLToken {mn} at (0,33) size 8x12 508 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 509 RenderBlock (anonymous) at (0,0) size 8x12 510 RenderText {#text} at (0,-6) size 8x25 511 text run at (0,-6) width 8: "2" 512 RenderMathMLOperator {mo} at (8,35) size 19x10 513 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 514 RenderBlock (anonymous) at (0,0) size 11x10 515 RenderText at (0,-8) size 11x25 516 text run at (0,-8) width 11: "+" 517 RenderMathMLRoot {mroot} at (26,0) size 235x57 518 RenderMathMLRootWrapper at (4,15) size 6x42 519 RenderMathMLToken {mn} at (0,0) size 5x8 520 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 521 RenderBlock (anonymous) at (0,0) size 5x8 522 RenderText {#text} at (0,-3) size 5x15 523 text run at (0,-3) width 5: "5" 524 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x57 525 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x57 526 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x57 527 RenderBlock (anonymous) at (0,0) size 12x57 528 RenderText at (0,-1) size 15x25 529 text run at (0,-1) width 15: "\x{221A}" 530 RenderMathMLRootWrapper at (12,3) size 223x54 531 RenderMathMLRow {mrow} at (0,0) size 222x51 532 RenderMathMLToken {mn} at (0,29) size 8x12 533 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 534 RenderBlock (anonymous) at (0,0) size 8x12 535 RenderText {#text} at (0,-6) size 8x25 536 text run at (0,-6) width 8: "3" 537 RenderMathMLOperator {mo} at (8,31) size 19x10 538 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 539 RenderBlock (anonymous) at (0,0) size 11x10 540 RenderText at (0,-8) size 11x25 541 text run at (0,-8) width 11: "+" 542 RenderMathMLRoot {mroot} at (26,0) size 196x51 543 RenderMathMLRootWrapper at (4,12) size 6x39 544 RenderMathMLToken {mn} at (0,0) size 5x8 545 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 546 RenderBlock (anonymous) at (0,0) size 5x8 547 RenderText {#text} at (0,-3) size 5x15 548 text run at (0,-3) width 5: "6" 549 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x51 550 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x51 551 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x51 552 RenderBlock (anonymous) at (0,0) size 12x51 553 RenderText at (0,-1) size 15x25 554 text run at (0,-1) width 15: "\x{221A}" 555 RenderMathMLRootWrapper at (12,3) size 184x48 556 RenderMathMLRow {mrow} at (0,0) size 183x45 557 RenderMathMLToken {mn} at (0,25) size 8x12 558 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 559 RenderBlock (anonymous) at (0,0) size 8x12 560 RenderText {#text} at (0,-6) size 8x25 561 text run at (0,-6) width 8: "4" 562 RenderMathMLOperator {mo} at (8,27) size 19x10 563 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 564 RenderBlock (anonymous) at (0,0) size 11x10 565 RenderText at (0,-8) size 11x25 566 text run at (0,-8) width 11: "+" 567 RenderMathMLRoot {mroot} at (26,0) size 157x45 568 RenderMathMLRootWrapper at (4,11) size 6x34 569 RenderMathMLToken {mn} at (0,0) size 5x7 570 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 571 RenderBlock (anonymous) at (0,0) size 5x7 572 RenderText {#text} at (0,-4) size 5x15 573 text run at (0,-4) width 5: "7" 574 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x45 575 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x45 576 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x45 577 RenderBlock (anonymous) at (0,0) size 12x45 578 RenderText at (0,-1) size 15x25 579 text run at (0,-1) width 15: "\x{221A}" 580 RenderMathMLRootWrapper at (12,3) size 145x42 581 RenderMathMLRow {mrow} at (0,0) size 145x39 582 RenderMathMLToken {mn} at (0,20) size 8x13 583 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x13 584 RenderBlock (anonymous) at (0,0) size 8x13 585 RenderText {#text} at (0,-5) size 8x25 586 text run at (0,-5) width 8: "5" 587 RenderMathMLOperator {mo} at (8,23) size 19x10 588 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 589 RenderBlock (anonymous) at (0,0) size 11x10 590 RenderText at (0,-8) size 11x25 591 text run at (0,-8) width 11: "+" 592 RenderMathMLRoot {mroot} at (26,0) size 119x39 593 RenderMathMLRootWrapper at (4,8) size 6x31 594 RenderMathMLToken {mn} at (0,0) size 5x8 595 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 596 RenderBlock (anonymous) at (0,0) size 5x8 597 RenderText {#text} at (0,-3) size 5x15 598 text run at (0,-3) width 5: "8" 599 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x39 600 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x39 601 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x39 602 RenderBlock (anonymous) at (0,0) size 12x39 603 RenderText at (0,-1) size 15x25 604 text run at (0,-1) width 15: "\x{221A}" 605 RenderMathMLRootWrapper at (12,3) size 107x36 606 RenderMathMLRow {mrow} at (0,0) size 106x33 607 RenderMathMLToken {mn} at (0,17) size 8x12 608 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 609 RenderBlock (anonymous) at (0,0) size 8x12 610 RenderText {#text} at (0,-6) size 8x25 611 text run at (0,-6) width 8: "6" 612 RenderMathMLOperator {mo} at (8,19) size 19x10 613 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 614 RenderBlock (anonymous) at (0,0) size 11x10 615 RenderText at (0,-8) size 11x25 616 text run at (0,-8) width 11: "+" 617 RenderMathMLRoot {mroot} at (26,0) size 80x33 618 RenderMathMLRootWrapper at (4,5) size 6x28 619 RenderMathMLToken {mn} at (0,0) size 5x8 620 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8 621 RenderBlock (anonymous) at (0,0) size 5x8 622 RenderText {#text} at (0,-3) size 5x15 623 text run at (0,-3) width 5: "9" 624 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x33 625 RenderMathMLRadicalOperator (anonymous) at (0,0) size 12x33 626 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x33 627 RenderBlock (anonymous) at (0,0) size 12x33 628 RenderText at (0,-1) size 15x25 629 text run at (0,-1) width 15: "\x{221A}" 630 RenderMathMLRootWrapper at (12,3) size 68x30 631 RenderMathMLRow {mrow} at (0,0) size 68x27 632 RenderMathMLToken {mn} at (0,13) size 8x12 633 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 634 RenderBlock (anonymous) at (0,0) size 8x12 635 RenderText {#text} at (0,-6) size 8x25 636 text run at (0,-6) width 8: "7" 637 RenderMathMLOperator {mo} at (8,15) size 19x10 638 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 639 RenderBlock (anonymous) at (0,0) size 11x10 640 RenderText at (0,-8) size 11x25 641 text run at (0,-8) width 11: "+" 642 RenderMathMLRoot {mroot} at (26,0) size 42x27 643 RenderMathMLRootWrapper at (4,0) size 23x27 644 RenderMathMLFraction {mfrac} at (1,0) size 20x17 645 RenderMathMLBlock (anonymous, flex) at (0,0) size 20x9 646 RenderMathMLRow {mrow} at (0,0) size 20x7 647 RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0] 648 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 649 RenderBlock (anonymous) at (0,0) size 4x5 650 RenderText {#text} at (0,-6) size 4x15 651 text run at (0,-6) width 4: "x" 652 RenderMathMLOperator {mo} at (4,0) size 11x6 653 RenderMathMLBlock (anonymous, flex) at (2,0) size 6x6 654 RenderBlock (anonymous) at (0,0) size 6x6 655 RenderText at (0,-5) size 6x15 656 text run at (0,-5) width 6: "+" 657 RenderMathMLToken {mi} at (14,1) size 6x6 [padding: 0 1 0 0] 658 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6 659 RenderBlock (anonymous) at (0,0) size 4x6 660 RenderText {#text} at (0,-6) size 4x15 661 text run at (0,-6) width 4: "y" 662 RenderMathMLBlock (anonymous, flex) at (0,8) size 20x9 [padding: 1 0 0 0] 663 RenderMathMLToken {mi} at (7,2) size 6x6 [padding: 0 1 0 0] 664 RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5 665 RenderBlock (anonymous) at (0,0) size 4x5 666 RenderText {#text} at (0,-6) size 4x15 667 text run at (0,-6) width 4: "z" 668 RenderMathMLBlock (anonymous, flex) at (17,0) size 13x27 669 RenderMathMLRadicalOperator (anonymous) at (0,9) size 12x18 670 RenderMathMLBlock (anonymous, flex) at (0,0) size 12x18 671 RenderBlock (anonymous) at (0,0) size 12x18 672 RenderText at (0,-1) size 15x25 673 text run at (0,-1) width 15: "\x{221A}" 674 RenderMathMLRootWrapper at (29,12) size 12x15 675 RenderMathMLToken {mi} at (0,0) size 12x12 [padding: 0 2 0 0] 676 RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12 677 RenderBlock (anonymous) at (0,0) size 10x12 678 RenderText {#text} at (0,-6) size 10x25 679 text run at (0,-6) width 10: "A" 230 RenderMathMLMath {math} at (110,0) size 355x74 [padding: 0 1 0 1] 680 231 RenderText {#text} at (0,0) size 0x0 232 layer at (182,172) size 21x19 233 RenderMathMLRoot {mroot} at (1,0) size 21x19 [intrinsic padding: 7 0 0 13] 234 RenderMathMLRow (anonymous) at (13,7) size 8x12 235 RenderMathMLToken {mn} at (0,0) size 8x12 236 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 237 RenderBlock (anonymous) at (0,0) size 8x12 238 RenderText {#text} at (0,-6) size 8x25 239 text run at (0,-6) width 8: "2" 240 layer at (182,172) size 13x14 241 RenderMathMLToken {mn} at (0,0) size 14x15 [padding: 0 5 4 2] 242 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 243 RenderBlock (anonymous) at (0,0) size 6x10 244 RenderText {#text} at (0,-4) size 6x19 245 text run at (0,-4) width 6: "3" 246 layer at (84,209) size 60x19 247 RenderMathMLRoot {mroot} at (1,0) size 60x19 [intrinsic padding: 7 0 0 52] 248 RenderMathMLRow (anonymous) at (52,7) size 8x12 249 RenderMathMLToken {mn} at (0,0) size 8x12 250 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 251 RenderBlock (anonymous) at (0,0) size 8x12 252 RenderText {#text} at (0,-6) size 8x25 253 text run at (0,-6) width 8: "2" 254 layer at (84,209) size 52x14 255 RenderMathMLRow {mrow} at (0,0) size 53x15 [padding: 0 5 4 2] 256 RenderMathMLToken {mi} at (2,1) size 7x7 [padding: 0 1 0 0] 257 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 258 RenderBlock (anonymous) at (0,0) size 5x7 259 RenderText {#text} at (0,-7) size 5x19 260 text run at (0,-7) width 5: "x" 261 RenderMathMLOperator {mo} at (8,0) size 14x8 262 RenderMathMLBlock (anonymous, flex) at (2,0) size 9x8 263 RenderBlock (anonymous) at (0,0) size 8x8 264 RenderText at (0,-6) size 8x19 265 text run at (0,-6) width 8: "+" 266 RenderMathMLToken {mi} at (21,1) size 8x9 [padding: 0 1 0 0] 267 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x9 268 RenderBlock (anonymous) at (0,0) size 5x9 269 RenderText {#text} at (0,-7) size 5x19 270 text run at (0,-7) width 5: "y" 271 RenderMathMLOperator {mo} at (28,0) size 14x8 272 RenderMathMLBlock (anonymous, flex) at (2,0) size 9x8 273 RenderBlock (anonymous) at (0,0) size 8x8 274 RenderText at (0,-6) size 8x19 275 text run at (0,-6) width 8: "+" 276 RenderMathMLToken {mi} at (41,1) size 7x7 [padding: 0 1 0 0] 277 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 278 RenderBlock (anonymous) at (0,0) size 5x7 279 RenderText {#text} at (0,-7) size 5x19 280 text run at (0,-7) width 5: "z" 281 layer at (194,246) size 90x37 282 RenderMathMLRoot {mroot} at (1,0) size 90x38 [intrinsic padding: 3 0 3 53] 283 RenderMathMLRow (anonymous) at (53,3) size 37x32 284 RenderMathMLFraction {mfrac} at (1,0) size 35x32 285 RenderMathMLBlock (anonymous, flex) at (0,0) size 35x16 286 RenderMathMLRow {mrow} at (0,0) size 35x12 287 RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0] 288 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x9 289 RenderBlock (anonymous) at (0,0) size 7x9 290 RenderText {#text} at (0,-9) size 7x25 291 text run at (0,-9) width 7: "x" 292 RenderMathMLOperator {mo} at (8,2) size 19x10 293 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 294 RenderBlock (anonymous) at (0,0) size 11x10 295 RenderText at (0,-8) size 11x25 296 text run at (0,-8) width 11: "+" 297 RenderMathMLToken {mn} at (26,0) size 9x12 298 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 299 RenderBlock (anonymous) at (0,0) size 8x12 300 RenderText {#text} at (0,-6) size 8x25 301 text run at (0,-6) width 8: "1" 302 RenderMathMLBlock (anonymous, flex) at (0,15) size 35x17 [padding: 1 0 0 0] 303 RenderMathMLRow {mrow} at (0,4) size 35x13 304 RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0] 305 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x9 306 RenderBlock (anonymous) at (0,0) size 7x9 307 RenderText {#text} at (0,-9) size 7x25 308 text run at (0,-9) width 7: "x" 309 RenderMathMLOperator {mo} at (8,2) size 19x10 310 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 311 RenderBlock (anonymous) at (0,0) size 11x10 312 RenderText at (0,-8) size 11x25 313 text run at (0,-8) width 11: "+" 314 RenderMathMLToken {mn} at (26,0) size 9x12 315 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 316 RenderBlock (anonymous) at (0,0) size 8x12 317 RenderText {#text} at (0,-6) size 8x25 318 text run at (0,-6) width 8: "2" 319 layer at (194,254) size 52x14 320 RenderMathMLRow {mrow} at (0,8) size 53x15 [padding: 0 5 4 2] 321 RenderMathMLToken {mi} at (2,1) size 7x7 [padding: 0 1 0 0] 322 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 323 RenderBlock (anonymous) at (0,0) size 5x7 324 RenderText {#text} at (0,-7) size 5x19 325 text run at (0,-7) width 5: "x" 326 RenderMathMLOperator {mo} at (8,0) size 14x8 327 RenderMathMLBlock (anonymous, flex) at (2,0) size 9x8 328 RenderBlock (anonymous) at (0,0) size 8x8 329 RenderText at (0,-6) size 8x19 330 text run at (0,-6) width 8: "+" 331 RenderMathMLToken {mi} at (21,1) size 8x9 [padding: 0 1 0 0] 332 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x9 333 RenderBlock (anonymous) at (0,0) size 5x9 334 RenderText {#text} at (0,-7) size 5x19 335 text run at (0,-7) width 5: "y" 336 RenderMathMLOperator {mo} at (28,0) size 14x8 337 RenderMathMLBlock (anonymous, flex) at (2,0) size 9x8 338 RenderBlock (anonymous) at (0,0) size 8x8 339 RenderText at (0,-6) size 8x19 340 text run at (0,-6) width 8: "+" 341 RenderMathMLToken {mi} at (41,1) size 7x7 [padding: 0 1 0 0] 342 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 343 RenderBlock (anonymous) at (0,0) size 5x7 344 RenderText {#text} at (0,-7) size 5x19 345 text run at (0,-7) width 5: "z" 346 layer at (84,299) size 23x44 347 RenderMathMLRoot {mroot} at (1,0) size 23x44 [intrinsic padding: 32 0 0 15] 348 RenderMathMLRow (anonymous) at (15,32) size 8x12 349 RenderMathMLToken {mn} at (0,0) size 8x12 350 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 351 RenderBlock (anonymous) at (0,0) size 8x12 352 RenderText {#text} at (0,-6) size 8x25 353 text run at (0,-6) width 8: "2" 354 layer at (85,299) size 15x39 355 RenderMathMLFraction {mfrac} at (1,0) size 16x39 [padding: 0 5 4 2] 356 RenderMathMLBlock (anonymous, flex) at (2,0) size 9x25 357 RenderMathMLFraction {mfrac} at (1,0) size 7x22 358 RenderMathMLBlock (anonymous, flex) at (0,0) size 7x10 359 RenderMathMLToken {mi} at (0,0) size 7x7 [padding: 0 1 0 0] 360 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 361 RenderBlock (anonymous) at (0,0) size 5x7 362 RenderText {#text} at (0,-7) size 5x19 363 text run at (0,-7) width 5: "x" 364 RenderMathMLBlock (anonymous, flex) at (0,9) size 7x13 [padding: 1 0 0 0] 365 RenderMathMLToken {mi} at (0,3) size 7x10 [padding: 0 1 0 0] 366 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x9 367 RenderBlock (anonymous) at (0,0) size 5x9 368 RenderText {#text} at (0,-7) size 5x19 369 text run at (0,-7) width 5: "y" 370 RenderMathMLBlock (anonymous, flex) at (2,24) size 9x11 [padding: 1 0 0 0] 371 RenderMathMLToken {mi} at (1,3) size 7x8 [padding: 0 1 0 0] 372 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 373 RenderBlock (anonymous) at (0,0) size 5x7 374 RenderText {#text} at (0,-7) size 5x19 375 text run at (0,-7) width 5: "z" 376 layer at (119,422) size 352x74 377 RenderMathMLRoot {mroot} at (1,0) size 353x74 [intrinsic padding: 3 0 3 19] 378 RenderMathMLRow (anonymous) at (19,3) size 334x68 379 RenderMathMLRow {mrow} at (0,0) size 334x68 380 RenderMathMLToken {mn} at (0,38) size 8x12 381 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 382 RenderBlock (anonymous) at (0,0) size 8x12 383 RenderText {#text} at (0,-6) size 8x25 384 text run at (0,-6) width 8: "1" 385 RenderMathMLOperator {mo} at (8,40) size 19x10 386 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 387 RenderBlock (anonymous) at (0,0) size 11x10 388 RenderText at (0,-8) size 11x25 389 text run at (0,-8) width 11: "+" 390 layer at (164,425) size 307x68 391 RenderMathMLRoot {mroot} at (26,0) size 308x68 [intrinsic padding: 3 0 3 19] 392 RenderMathMLRow (anonymous) at (19,3) size 289x62 393 RenderMathMLRow {mrow} at (0,0) size 289x62 394 RenderMathMLToken {mn} at (0,35) size 8x12 395 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 396 RenderBlock (anonymous) at (0,0) size 8x12 397 RenderText {#text} at (0,-6) size 8x25 398 text run at (0,-6) width 8: "2" 399 RenderMathMLOperator {mo} at (8,37) size 19x10 400 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 401 RenderBlock (anonymous) at (0,0) size 11x10 402 RenderText at (0,-8) size 11x25 403 text run at (0,-8) width 11: "+" 404 layer at (209,428) size 262x62 405 RenderMathMLRoot {mroot} at (26,0) size 263x62 [intrinsic padding: 3 0 3 19] 406 RenderMathMLRow (anonymous) at (19,3) size 244x56 407 RenderMathMLRow {mrow} at (0,0) size 244x56 408 RenderMathMLToken {mn} at (0,32) size 8x12 409 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 410 RenderBlock (anonymous) at (0,0) size 8x12 411 RenderText {#text} at (0,-6) size 8x25 412 text run at (0,-6) width 8: "3" 413 RenderMathMLOperator {mo} at (8,34) size 19x10 414 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 415 RenderBlock (anonymous) at (0,0) size 11x10 416 RenderText at (0,-8) size 11x25 417 text run at (0,-8) width 11: "+" 418 layer at (254,431) size 217x56 419 RenderMathMLRoot {mroot} at (26,0) size 218x56 [intrinsic padding: 3 0 3 19] 420 RenderMathMLRow (anonymous) at (19,3) size 198x50 421 RenderMathMLRow {mrow} at (0,0) size 198x50 422 RenderMathMLToken {mn} at (0,29) size 8x12 423 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 424 RenderBlock (anonymous) at (0,0) size 8x12 425 RenderText {#text} at (0,-6) size 8x25 426 text run at (0,-6) width 8: "4" 427 RenderMathMLOperator {mo} at (8,31) size 19x10 428 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 429 RenderBlock (anonymous) at (0,0) size 11x10 430 RenderText at (0,-8) size 11x25 431 text run at (0,-8) width 11: "+" 432 layer at (299,434) size 172x50 433 RenderMathMLRoot {mroot} at (26,0) size 172x50 [intrinsic padding: 3 0 3 18] 434 RenderMathMLRow (anonymous) at (18,3) size 154x44 435 RenderMathMLRow {mrow} at (0,0) size 154x44 436 RenderMathMLToken {mn} at (0,25) size 8x13 437 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x13 438 RenderBlock (anonymous) at (0,0) size 8x13 439 RenderText {#text} at (0,-5) size 8x25 440 text run at (0,-5) width 8: "5" 441 RenderMathMLOperator {mo} at (8,28) size 19x10 442 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 443 RenderBlock (anonymous) at (0,0) size 11x10 444 RenderText at (0,-8) size 11x25 445 text run at (0,-8) width 11: "+" 446 layer at (343,437) size 128x44 447 RenderMathMLRoot {mroot} at (26,0) size 128x44 [intrinsic padding: 3 0 3 16] 448 RenderMathMLRow (anonymous) at (16,3) size 112x38 449 RenderMathMLRow {mrow} at (0,0) size 112x38 450 RenderMathMLToken {mn} at (0,23) size 8x12 451 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 452 RenderBlock (anonymous) at (0,0) size 8x12 453 RenderText {#text} at (0,-6) size 8x25 454 text run at (0,-6) width 8: "6" 455 RenderMathMLOperator {mo} at (8,25) size 19x10 456 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 457 RenderBlock (anonymous) at (0,0) size 11x10 458 RenderText at (0,-8) size 11x25 459 text run at (0,-8) width 11: "+" 460 layer at (386,440) size 86x38 461 RenderMathMLRoot {mroot} at (26,0) size 86x38 [intrinsic padding: 3 0 3 15] 462 RenderMathMLRow (anonymous) at (15,3) size 71x32 463 RenderMathMLRow {mrow} at (0,0) size 71x32 464 RenderMathMLToken {mn} at (0,20) size 8x12 465 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12 466 RenderBlock (anonymous) at (0,0) size 8x12 467 RenderText {#text} at (0,-6) size 8x25 468 text run at (0,-6) width 8: "7" 469 RenderMathMLOperator {mo} at (8,22) size 19x10 470 RenderMathMLBlock (anonymous, flex) at (3,0) size 12x10 471 RenderBlock (anonymous) at (0,0) size 11x10 472 RenderText at (0,-8) size 11x25 473 text run at (0,-8) width 11: "+" 474 layer at (427,443) size 45x32 475 RenderMathMLRoot {mroot} at (26,0) size 45x32 [intrinsic padding: 20 0 0 33] 476 RenderMathMLRow (anonymous) at (33,20) size 12x12 477 RenderMathMLToken {mi} at (0,0) size 12x12 [padding: 0 2 0 0] 478 RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12 479 RenderBlock (anonymous) at (0,0) size 10x12 480 RenderText {#text} at (0,-6) size 10x25 481 text run at (0,-6) width 10: "A" 482 layer at (428,443) size 33x27 483 RenderMathMLFraction {mfrac} at (1,0) size 33x27 [padding: 0 5 4 2] 484 RenderMathMLBlock (anonymous, flex) at (2,0) size 27x13 485 RenderMathMLRow {mrow} at (0,0) size 26x10 486 RenderMathMLToken {mi} at (0,1) size 7x7 [padding: 0 1 0 0] 487 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 488 RenderBlock (anonymous) at (0,0) size 5x7 489 RenderText {#text} at (0,-7) size 5x19 490 text run at (0,-7) width 5: "x" 491 RenderMathMLOperator {mo} at (6,0) size 14x8 492 RenderMathMLBlock (anonymous, flex) at (2,0) size 9x8 493 RenderBlock (anonymous) at (0,0) size 8x8 494 RenderText at (0,-6) size 8x19 495 text run at (0,-6) width 8: "+" 496 RenderMathMLToken {mi} at (19,1) size 7x9 [padding: 0 1 0 0] 497 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x9 498 RenderBlock (anonymous) at (0,0) size 5x9 499 RenderText {#text} at (0,-7) size 5x19 500 text run at (0,-7) width 5: "y" 501 RenderMathMLBlock (anonymous, flex) at (2,12) size 27x11 [padding: 1 0 0 0] 502 RenderMathMLToken {mi} at (9,3) size 7x8 [padding: 0 1 0 0] 503 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7 504 RenderBlock (anonymous) at (0,0) size 5x7 505 RenderText {#text} at (0,-7) size 5x19 506 text run at (0,-7) width 5: "z" 507 layer at (386,449) size 13x14 508 RenderMathMLToken {mn} at (0,9) size 14x15 [padding: 0 5 4 2] 509 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 510 RenderBlock (anonymous) at (0,0) size 6x10 511 RenderText {#text} at (0,-4) size 6x19 512 text run at (0,-4) width 6: "9" 513 layer at (343,450) size 13x14 514 RenderMathMLToken {mn} at (0,13) size 14x15 [padding: 0 5 4 2] 515 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 516 RenderBlock (anonymous) at (0,0) size 6x10 517 RenderText {#text} at (0,-4) size 6x19 518 text run at (0,-4) width 6: "8" 519 layer at (299,451) size 13x13 520 RenderMathMLToken {mn} at (0,17) size 14x14 [padding: 0 5 4 2] 521 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x9 522 RenderBlock (anonymous) at (0,0) size 6x9 523 RenderText {#text} at (0,-5) size 6x19 524 text run at (0,-5) width 6: "7" 525 layer at (254,451) size 13x14 526 RenderMathMLToken {mn} at (0,20) size 14x15 [padding: 0 5 4 2] 527 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 528 RenderBlock (anonymous) at (0,0) size 6x10 529 RenderText {#text} at (0,-4) size 6x19 530 text run at (0,-4) width 6: "6" 531 layer at (209,452) size 13x14 532 RenderMathMLToken {mn} at (0,24) size 14x15 [padding: 0 5 4 2] 533 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 534 RenderBlock (anonymous) at (0,0) size 6x10 535 RenderText {#text} at (0,-4) size 6x19 536 text run at (0,-4) width 6: "5" 537 layer at (164,453) size 13x14 538 RenderMathMLToken {mn} at (0,28) size 14x15 [padding: 0 5 4 2] 539 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 540 RenderBlock (anonymous) at (0,0) size 6x10 541 RenderText {#text} at (0,-4) size 6x19 542 text run at (0,-4) width 6: "4" 543 layer at (119,453) size 13x14 544 RenderMathMLToken {mn} at (0,31) size 14x15 [padding: 0 5 4 2] 545 RenderMathMLBlock (anonymous, flex) at (2,0) size 7x10 546 RenderBlock (anonymous) at (0,0) size 6x10 547 RenderText {#text} at (0,-4) size 6x19 548 text run at (0,-4) width 6: "3" -
trunk/LayoutTests/platform/mac/TestExpectations
r169939 r169945 1326 1326 webkit.org/b/72828 mathml/opentype/opentype-stretchy-horizontal.html [ Failure ] 1327 1327 webkit.org/b/72828 mathml/opentype/horizontal-LatinModern-munderover.html [ Failure ] 1328 webkit.org/b/119038 mathml/opentype/roots-LatinModern.html [ Failure ]1329 1330 # Missing references1331 webkit.org/b/119038 mathml/presentation/mo-stretch.html [ Failure ]1332 webkit.org/b/119038 mathml/presentation/roots.xhtml [ Failure ]1333 1328 1334 1329 # WebKitDataCue is supported, not DataCue -
trunk/LayoutTests/platform/win/TestExpectations
r169939 r169945 2819 2819 webkit.org/b/72828 mathml/opentype/opentype-stretchy-horizontal.html [ Failure ] 2820 2820 webkit.org/b/72828 mathml/opentype/horizontal-LatinModern-munderover.html [ Failure ] 2821 webkit.org/b/119038 mathml/opentype/roots-LatinModern.html [ Failure ]2822 webkit.org/b/119038 mathml/presentation/mo-stretch.html [ Failure ]2823 webkit.org/b/119038 mathml/presentation/roots.xhtml [ Failure ] -
trunk/Source/WebCore/CMakeLists.txt
r169939 r169945 2369 2369 rendering/mathml/RenderMathMLMenclose.cpp 2370 2370 rendering/mathml/RenderMathMLOperator.cpp 2371 rendering/mathml/RenderMathMLRadicalOperator.cpp2372 2371 rendering/mathml/RenderMathMLRoot.cpp 2373 2372 rendering/mathml/RenderMathMLRow.cpp -
trunk/Source/WebCore/ChangeLog
r169943 r169945 1 2014-06-13 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r169939. 4 https://bugs.webkit.org/show_bug.cgi?id=133878 5 6 This patch raises assertions on mac (Requested by fredw on 7 #webkit). 8 9 Reverted changeset: 10 11 "Draw radicals with glyphs for better rendering" 12 https://bugs.webkit.org/show_bug.cgi?id=119038 13 http://trac.webkit.org/changeset/169939 14 1 15 2014-06-13 Anders Carlsson <andersca@apple.com> 2 16 -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r169939 r169945 11423 11423 <ClCompile Include="..\rendering\mathml\RenderMathMLMenclose.cpp" /> 11424 11424 <ClCompile Include="..\rendering\mathml\RenderMathMLOperator.cpp" /> 11425 <ClCompile Include="..\rendering\mathml\RenderMathMLRadicalOperator.cpp" />11426 11425 <ClCompile Include="..\rendering\mathml\RenderMathMLRoot.cpp" /> 11427 11426 <ClCompile Include="..\rendering\mathml\RenderMathMLRow.cpp" /> … … 20135 20134 <ClInclude Include="..\rendering\mathml\RenderMathMLMenclose.h" /> 20136 20135 <ClInclude Include="..\rendering\mathml\RenderMathMLOperator.h" /> 20137 <ClInclude Include="..\rendering\mathml\RenderMathMLRadicalOperator.h" />20138 20136 <ClInclude Include="..\rendering\mathml\RenderMathMLRoot.h" /> 20139 20137 <ClInclude Include="..\rendering\mathml\RenderMathMLRow.h" /> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r169939 r169945 2743 2743 <Filter>rendering\mathml</Filter> 2744 2744 </ClCompile> 2745 <ClCompile Include="..\rendering\mathml\RenderMathMLRadicalOperator.cpp">2746 <Filter>rendering\mathml</Filter>2747 </ClCompile>2748 2745 <ClCompile Include="..\rendering\mathml\RenderMathMLRoot.cpp"> 2749 2746 <Filter>rendering\mathml</Filter> … … 9654 9651 </ClInclude> 9655 9652 <ClInclude Include="..\rendering\mathml\RenderMathMLOperator.h"> 9656 <Filter>rendering\mathml</Filter>9657 </ClInclude>9658 <ClInclude Include="..\rendering\mathml\RenderMathMLRadicalOperator.h">9659 9653 <Filter>rendering\mathml</Filter> 9660 9654 </ClInclude> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r169939 r169945 1494 1494 439046DF12DA25E800AF80A2 /* RenderMathMLOperator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */; }; 1495 1495 439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */; }; 1496 439046DF12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CB12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp */; };1497 439046E012DA25E800BF80A3 /* RenderMathMLRadicalOperator.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CC12DA25E800BF80A3 /* RenderMathMLRadicalOperator.h */; };1498 1496 439046E112DA25E800AF80A2 /* RenderMathMLRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */; }; 1499 1497 439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */; }; … … 8517 8515 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLOperator.cpp; path = mathml/RenderMathMLOperator.cpp; sourceTree = "<group>"; }; 8518 8516 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLOperator.h; path = mathml/RenderMathMLOperator.h; sourceTree = "<group>"; }; 8519 439046CB12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLRadicalOperator.cpp; path = mathml/RenderMathMLRadicalOperator.cpp; sourceTree = "<group>"; };8520 439046CC12DA25E800BF80A3 /* RenderMathMLRadicalOperator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLRadicalOperator.h; path = mathml/RenderMathMLRadicalOperator.h; sourceTree = "<group>"; };8521 8517 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMathMLRoot.cpp; path = mathml/RenderMathMLRoot.cpp; sourceTree = "<group>"; }; 8522 8518 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderMathMLRoot.h; path = mathml/RenderMathMLRoot.h; sourceTree = "<group>"; }; … … 15582 15578 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */, 15583 15579 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */, 15584 439046CB12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp */,15585 439046CC12DA25E800BF80A3 /* RenderMathMLRadicalOperator.h */,15586 15580 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */, 15587 15581 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */, … … 25506 25500 439046DE12DA25E800AF80A2 /* RenderMathMLMath.h in Headers */, 25507 25501 439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */, 25508 439046E012DA25E800BF80A3 /* RenderMathMLRadicalOperator.h in Headers */,25509 25502 439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */, 25510 25503 439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */, … … 28971 28964 3571883EEF618793751E4089 /* RenderMathMLMenclose.cpp in Sources */, 28972 28965 439046DF12DA25E800AF80A2 /* RenderMathMLOperator.cpp in Sources */, 28973 439046DF12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp in Sources */,28974 28966 439046E112DA25E800AF80A2 /* RenderMathMLRoot.cpp in Sources */, 28975 28967 439046E312DA25E800AF80A2 /* RenderMathMLRow.cpp in Sources */, -
trunk/Source/WebCore/css/mathml.css
r169939 r169945 38 38 } 39 39 40 math, mrow, mfenced, m error, mphantom, mstyle, menclose {40 math, mrow, mfenced, msqrt, mroot, merror, mphantom, mstyle, menclose { 41 41 -webkit-align-items: baseline; 42 } 43 msqrt > * { /* This rule is needed because of <msqrt>'s anonymous <mrow>. */ 44 -webkit-align-self: baseline; 42 45 } 43 46 … … 83 86 font-size: 0.75em; /* FIXME: MathML standard is 0.71em */ 84 87 } 85 mroot > *:last-child {86 font-size: 0.5625em; /* This 0.75^2 since the scriptlevel is incremented by 2 in the index. */87 }88 88 89 89 mi { … … 95 95 msubsup > mi:first-child + * + * { 96 96 -webkit-margin-start: 0.14em; /* This is larger than 0.1em because the child's font-size is smaller than the <msubsup>'s. */ 97 } 98 99 mroot { 100 position: relative; 101 } 102 mroot > * + * { 103 font-size: 0.75em; 104 position: absolute; 105 left: 0; 106 top: 0; 107 padding-right: 0.4em; 108 padding-left: 0.2em; 109 padding-bottom: 0.35em; 97 110 } 98 111 -
trunk/Source/WebCore/rendering/RenderObject.h
r169939 r169945 411 411 virtual bool isRenderMathMLTable() const { return false; } 412 412 virtual bool isRenderMathMLOperator() const { return false; } 413 virtual bool isRenderMathMLRadicalOperator() const { return false; }414 413 virtual bool isRenderMathMLRow() const { return false; } 415 414 virtual bool isRenderMathMLMath() const { return false; } … … 417 416 virtual bool isRenderMathMLFraction() const { return false; } 418 417 virtual bool isRenderMathMLRoot() const { return false; } 419 virtual bool isRenderMathMLRootWrapper() const { return false; }420 418 virtual bool isRenderMathMLSpace() const { return false; } 421 419 virtual bool isRenderMathMLSquareRoot() const { return false; } -
trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp
r169939 r169945 1146 1146 } 1147 1147 1148 RenderMathMLOperator::RenderMathMLOperator(Document& document, PassRef<RenderStyle> style, const String& operatorString, MathMLOperatorDictionary::Form form, unsigned short flags)1148 RenderMathMLOperator::RenderMathMLOperator(Document& document, PassRef<RenderStyle> style, const String& operatorString, MathMLOperatorDictionary::Form form, MathMLOperatorDictionary::Flag flag) 1149 1149 : RenderMathMLToken(document, std::move(style)) 1150 1150 , m_stretchHeightAboveBaseline(0) … … 1153 1153 , m_isVertical(true) 1154 1154 , m_operatorForm(form) 1155 , m_operatorFlags(flag s)1155 , m_operatorFlags(flag) 1156 1156 { 1157 1157 updateTokenContent(operatorString); … … 1160 1160 void RenderMathMLOperator::setOperatorFlagFromAttribute(MathMLOperatorDictionary::Flag flag, const QualifiedName& name) 1161 1161 { 1162 ASSERT(!is Anonymous());1162 ASSERT(!isFencedOperator()); 1163 1163 const AtomicString& attributeValue = element().fastGetAttribute(name); 1164 1164 if (attributeValue == "true") … … 1171 1171 void RenderMathMLOperator::setOperatorPropertiesFromOpDictEntry(const MathMLOperatorDictionary::Entry* entry) 1172 1172 { 1173 // If this operator is anonymous, we preserve the Fence and Separator properties. This is to handle the case of RenderMathMLFenced.1174 if (is Anonymous())1173 // If this operator has been created by RenderMathMLFenced, we preserve the Fence and Separator properties. 1174 if (isFencedOperator()) 1175 1175 m_operatorFlags = (m_operatorFlags & (MathMLOperatorDictionary::Fence | MathMLOperatorDictionary::Separator)) | entry->flags; 1176 1176 else … … 1189 1189 // We determine the form of the operator. 1190 1190 bool explicitForm = true; 1191 if (!is Anonymous()) {1191 if (!isFencedOperator()) { 1192 1192 const AtomicString& form = element().fastGetAttribute(MathMLNames::formAttr); 1193 1193 if (form == "prefix") … … 1212 1212 1213 1213 // First we initialize with the default values for unknown operators. 1214 if (is Anonymous())1214 if (isFencedOperator()) 1215 1215 m_operatorFlags &= MathMLOperatorDictionary::Fence | MathMLOperatorDictionary::Separator; // This resets all but the Fence and Separator properties. 1216 1216 else … … 1239 1239 #undef MATHML_OPDICT_SIZE 1240 1240 1241 if (!is Anonymous()) {1241 if (!isFencedOperator()) { 1242 1242 // Finally, we make the attribute values override the default. 1243 1243 … … 1387 1387 void RenderMathMLOperator::updateTokenContent(const String& operatorString) 1388 1388 { 1389 ASSERT(is Anonymous());1389 ASSERT(isFencedOperator()); 1390 1390 rebuildTokenContent(operatorString); 1391 1391 } … … 1393 1393 void RenderMathMLOperator::updateTokenContent() 1394 1394 { 1395 ASSERT(!is Anonymous());1395 ASSERT(!isFencedOperator()); 1396 1396 rebuildTokenContent(element().textContent()); 1397 1397 } -
trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h
r169939 r169945 59 59 } 60 60 61 class RenderMathMLOperator : public RenderMathMLToken {61 class RenderMathMLOperator final : public RenderMathMLToken { 62 62 public: 63 63 RenderMathMLOperator(MathMLElement&, PassRef<RenderStyle>); 64 RenderMathMLOperator(Document&, PassRef<RenderStyle>, const String& operatorString, MathMLOperatorDictionary::Form, unsigned short flags = 0);64 RenderMathMLOperator(Document&, PassRef<RenderStyle>, const String& operatorString, MathMLOperatorDictionary::Form, MathMLOperatorDictionary::Flag); 65 65 66 v irtual void stretchTo(LayoutUnit heightAboveBaseline, LayoutUnit depthBelowBaseline);66 void stretchTo(LayoutUnit heightAboveBaseline, LayoutUnit depthBelowBaseline); 67 67 void stretchTo(LayoutUnit width); 68 68 LayoutUnit stretchSize() const { return m_isVertical ? m_stretchHeightAboveBaseline + m_stretchDepthBelowBaseline : m_stretchWidth; } … … 74 74 void updateStyle() override final; 75 75 76 v irtual void paint(PaintInfo&, const LayoutPoint&);76 void paint(PaintInfo&, const LayoutPoint&); 77 77 78 78 void updateTokenContent(const String& operatorString); … … 80 80 void updateOperatorProperties(); 81 81 82 pr otected:82 private: 83 83 virtual const char* renderName() const override { return isAnonymous() ? "RenderMathMLOperator (anonymous)" : "RenderMathMLOperator"; } 84 84 virtual void paintChildren(PaintInfo& forSelf, const LayoutPoint&, PaintInfo& forChild, bool usePrintRect) override; 85 85 virtual bool isRenderMathMLOperator() const override { return true; } 86 bool isFencedOperator() { return isAnonymous(); } 86 87 // The following operators are invisible: U+2061 FUNCTION APPLICATION, U+2062 INVISIBLE TIMES, U+2063 INVISIBLE SEPARATOR, U+2064 INVISIBLE PLUS. 87 88 bool isInvisibleOperator() const { return 0x2061 <= m_operator && m_operator <= 0x2064; } … … 187 188 void setOperatorFlagFromAttribute(MathMLOperatorDictionary::Flag, const QualifiedName&); 188 189 void setOperatorPropertiesFromOpDictEntry(const MathMLOperatorDictionary::Entry*); 189 v irtual void SetOperatorProperties();190 void SetOperatorProperties(); 190 191 }; 191 192 -
trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp
r169939 r169945 31 31 #include "RenderMathMLRoot.h" 32 32 33 #include "FontCache.h"34 33 #include "GraphicsContext.h" 35 34 #include "PaintInfo.h" 36 35 #include "RenderIterator.h" 37 #include "RenderMathMLR adicalOperator.h"36 #include "RenderMathMLRow.h" 38 37 39 38 namespace WebCore { 40 39 41 // RenderMathMLRoot implements drawing of radicals via the <mroot> and <msqrt> elements. For valid MathML elements, the DOM is 42 // 43 // <mroot> Base Index </mroot> 44 // <msqrt> Child1 Child2 ... ChildN </msqrt> 45 // 46 // and the structure of the render tree will be 47 // 48 // IndexWrapper RadicalWrapper BaseWrapper 49 // 50 // where RadicalWrapper contains an <mo>√</mo>. 51 // For <mroot>, the IndexWrapper and BaseWrapper should contain exactly one child (Index and Base respectively). 52 // For <msqrt>, the IndexWrapper should be empty and the BaseWrapper can contain any number of children (Child1, ... ChildN). 53 // 54 // In order to accept invalid markup and to handle <mroot> and <msqrt> consistently, we will allow any number of children in the BaseWrapper of <mroot> too. 55 // We will allow the IndexWrapper to be empty and it will always contain the last child of the <mroot> if there are at least 2 elements. 56 40 // FIXME: This whole file should be changed to work with various writing modes. See https://bugs.webkit.org/show_bug.cgi?id=48951. 41 42 // Threshold above which the radical shape is modified to look nice with big bases (em) 43 const float gThresholdBaseHeightEms = 1.5f; 44 // Normal width of the front of the radical sign, before the base & overbar (em) 45 const float gFrontWidthEms = 0.75f; 46 // Gap between the base and overbar (em) 47 const float gSpaceAboveEms = 0.2f; 48 // Horizontal position of the bottom point of the radical (* frontWidth) 49 const float gRadicalBottomPointXFront = 0.5f; 50 // Lower the radical sign's bottom point (px) 51 const int gRadicalBottomPointLower = 3; 52 // Horizontal position of the top left point of the radical "dip" (* frontWidth) 53 const float gRadicalDipLeftPointXFront = 0.8f; 54 // Vertical position of the top left point of a sqrt radical "dip" (* baseHeight) 55 const float gSqrtRadicalDipLeftPointYPos = 0.5f; 56 // Vertical position of the top left point of an nth root radical "dip" (* baseHeight) 57 const float gRootRadicalDipLeftPointYPos = 0.625f; 58 // Vertical shift of the left end point of the radical (em) 59 const float gRadicalLeftEndYShiftEms = 0.05f; 60 // Additional bottom root padding if baseHeight > threshold (em) 61 const float gBigRootBottomPaddingEms = 0.2f; 62 63 // Radical line thickness (em) 64 const float gRadicalLineThicknessEms = 0.02f; 65 // Radical thick line thickness (em) 66 const float gRadicalThickLineThicknessEms = 0.1f; 67 57 68 RenderMathMLRoot::RenderMathMLRoot(Element& element, PassRef<RenderStyle> style) 58 69 : RenderMathMLBlock(element, std::move(style)) 70 , m_intrinsicPaddingBefore(0) 71 , m_intrinsicPaddingAfter(0) 72 , m_intrinsicPaddingStart(0) 73 , m_intrinsicPaddingEnd(0) 59 74 { 60 75 } … … 62 77 RenderMathMLRoot::RenderMathMLRoot(Document& document, PassRef<RenderStyle> style) 63 78 : RenderMathMLBlock(document, std::move(style)) 64 { 65 } 66 67 RenderMathMLRootWrapper* RenderMathMLRoot::baseWrapper() const 68 { 69 ASSERT(!isEmpty()); 70 return toRenderMathMLRootWrapper(lastChild()); 71 } 72 73 RenderMathMLBlock* RenderMathMLRoot::radicalWrapper() const 74 { 75 ASSERT(!isEmpty()); 76 return toRenderMathMLBlock(lastChild()->previousSibling()); 77 } 78 79 RenderMathMLRootWrapper* RenderMathMLRoot::indexWrapper() const 80 { 81 ASSERT(!isEmpty()); 82 return isRenderMathMLSquareRoot() ? nullptr : toRenderMathMLRootWrapper(firstChild()); 83 } 84 85 RenderMathMLRadicalOperator* RenderMathMLRoot::radicalOperator() const 86 { 87 ASSERT(!isEmpty()); 88 return toRenderMathMLRadicalOperator(radicalWrapper()->firstChild()); 89 } 90 91 void RenderMathMLRoot::restructureWrappers() 92 { 93 ASSERT(!isEmpty()); 94 95 auto base = baseWrapper(); 96 auto index = indexWrapper(); 97 auto radical = radicalWrapper(); 98 99 // For visual consistency with the initial state, we remove the radical when the base/index wrappers become empty. 100 if (base->isEmpty() && (!index || index->isEmpty())) { 101 if (!radical->isEmpty()) { 102 auto child = radicalOperator(); 103 radical->removeChild(*child); 104 child->destroy(); 105 } 79 , m_intrinsicPaddingBefore(0) 80 , m_intrinsicPaddingAfter(0) 81 , m_intrinsicPaddingStart(0) 82 , m_intrinsicPaddingEnd(0) 83 { 84 } 85 LayoutUnit RenderMathMLRoot::paddingTop() const 86 { 87 LayoutUnit result = computedCSSPaddingTop(); 88 switch (style().writingMode()) { 89 case TopToBottomWritingMode: 90 return result + m_intrinsicPaddingBefore; 91 case BottomToTopWritingMode: 92 return result + m_intrinsicPaddingAfter; 93 case LeftToRightWritingMode: 94 case RightToLeftWritingMode: 95 return result + (style().isLeftToRightDirection() ? m_intrinsicPaddingStart : m_intrinsicPaddingEnd); 96 } 97 ASSERT_NOT_REACHED(); 98 return result; 99 } 100 101 LayoutUnit RenderMathMLRoot::paddingBottom() const 102 { 103 LayoutUnit result = computedCSSPaddingBottom(); 104 switch (style().writingMode()) { 105 case TopToBottomWritingMode: 106 return result + m_intrinsicPaddingAfter; 107 case BottomToTopWritingMode: 108 return result + m_intrinsicPaddingBefore; 109 case LeftToRightWritingMode: 110 case RightToLeftWritingMode: 111 return result + (style().isLeftToRightDirection() ? m_intrinsicPaddingEnd : m_intrinsicPaddingStart); 112 } 113 ASSERT_NOT_REACHED(); 114 return result; 115 } 116 117 LayoutUnit RenderMathMLRoot::paddingLeft() const 118 { 119 LayoutUnit result = computedCSSPaddingLeft(); 120 switch (style().writingMode()) { 121 case LeftToRightWritingMode: 122 return result + m_intrinsicPaddingBefore; 123 case RightToLeftWritingMode: 124 return result + m_intrinsicPaddingAfter; 125 case TopToBottomWritingMode: 126 case BottomToTopWritingMode: 127 return result + (style().isLeftToRightDirection() ? m_intrinsicPaddingStart : m_intrinsicPaddingEnd); 128 } 129 ASSERT_NOT_REACHED(); 130 return result; 131 } 132 133 LayoutUnit RenderMathMLRoot::paddingRight() const 134 { 135 LayoutUnit result = computedCSSPaddingRight(); 136 switch (style().writingMode()) { 137 case RightToLeftWritingMode: 138 return result + m_intrinsicPaddingBefore; 139 case LeftToRightWritingMode: 140 return result + m_intrinsicPaddingAfter; 141 case TopToBottomWritingMode: 142 case BottomToTopWritingMode: 143 return result + (style().isLeftToRightDirection() ? m_intrinsicPaddingEnd : m_intrinsicPaddingStart); 144 } 145 ASSERT_NOT_REACHED(); 146 return result; 147 } 148 149 LayoutUnit RenderMathMLRoot::paddingBefore() const 150 { 151 return computedCSSPaddingBefore() + m_intrinsicPaddingBefore; 152 } 153 154 LayoutUnit RenderMathMLRoot::paddingAfter() const 155 { 156 return computedCSSPaddingAfter() + m_intrinsicPaddingAfter; 157 } 158 159 LayoutUnit RenderMathMLRoot::paddingStart() const 160 { 161 return computedCSSPaddingStart() + m_intrinsicPaddingStart; 162 } 163 164 LayoutUnit RenderMathMLRoot::paddingEnd() const 165 { 166 return computedCSSPaddingEnd() + m_intrinsicPaddingEnd; 167 } 168 169 void RenderMathMLRoot::addChild(RenderObject* newChild, RenderObject* beforeChild) 170 { 171 // Insert an implicit <mrow> for <mroot> as well as <msqrt>, to ensure firstChild() will have a box 172 // to measure and store a glyph-based height for preferredLogicalHeightAfterSizing. 173 if (!firstChild()) 174 RenderMathMLBlock::addChild(RenderMathMLRow::createAnonymousWithParentRenderer(*this).leakPtr()); 175 176 // An <mroot>'s index has { position: absolute }. 177 if (newChild->style().position() == AbsolutePosition) 178 RenderMathMLBlock::addChild(newChild); 179 else 180 toRenderElement(firstChild())->addChild(newChild, beforeChild && beforeChild->parent() == firstChild() ? beforeChild : 0); 181 } 182 183 RenderBox* RenderMathMLRoot::index() const 184 { 185 if (!firstChild()) 186 return 0; 187 RenderObject* index = firstChild()->nextSibling(); 188 if (!index || !index->isBox()) 189 return 0; 190 return toRenderBox(index); 191 } 192 193 void RenderMathMLRoot::layout() 194 { 195 for (auto& box : childrenOfType<RenderBox>(*this)) 196 box.layoutIfNeeded(); 197 198 int baseHeight = firstChild() && firstChild()->isBox() ? roundToInt(toRenderBox(firstChild())->logicalHeight()) : style().fontSize(); 199 int frontWidth = lroundf(gFrontWidthEms * style().fontSize()); 200 201 // Base height above which the shape of the root changes 202 float thresholdHeight = gThresholdBaseHeightEms * style().fontSize(); 203 if (baseHeight > thresholdHeight && thresholdHeight) { 204 float shift = std::min<float>((baseHeight - thresholdHeight) / thresholdHeight, 1.0f); 205 m_overbarLeftPointShift = static_cast<int>(shift * gRadicalBottomPointXFront * frontWidth); 206 m_intrinsicPaddingAfter = lroundf(gBigRootBottomPaddingEms * style().fontSize()); 207 } else { 208 m_overbarLeftPointShift = 0; 209 m_intrinsicPaddingAfter = 0; 210 } 211 212 int rootPad = lroundf(gSpaceAboveEms * style().fontSize()); 213 m_intrinsicPaddingBefore = rootPad; 214 m_indexTop = 0; 215 if (RenderBox* index = this->index()) { 216 m_intrinsicPaddingStart = roundToInt(index->maxPreferredLogicalWidth()) + m_overbarLeftPointShift; 217 218 int indexHeight = roundToInt(index->logicalHeight()); 219 int partDipHeight = lroundf((1 - gRootRadicalDipLeftPointYPos) * baseHeight); 220 int rootExtraTop = partDipHeight + indexHeight - (baseHeight + rootPad); 221 if (rootExtraTop > 0) 222 m_intrinsicPaddingBefore += rootExtraTop; 223 else 224 m_indexTop = - rootExtraTop; 225 } else 226 m_intrinsicPaddingStart = frontWidth; 227 228 // FIXME: We should rewrite RenderMathMLRoot to rewrite -webkit-flex-order to get rid of the need 229 // for intrinsic padding. See https://bugs.webkit.org/show_bug.cgi?id=107151#c2. 230 // FIXME: We should make it so that the preferred width of RenderMathMLRoots doesn't change during layout. 231 // Technically, we currently only need to set the dirty bit here if one of the member variables above changes. 232 setPreferredLogicalWidthsDirty(true); 233 234 RenderMathMLBlock::layout(); 235 236 if (RenderBox* index = this->index()) 237 index->setLogicalTop(m_indexTop); 238 } 239 240 void RenderMathMLRoot::paint(PaintInfo& info, const LayoutPoint& paintOffset) 241 { 242 RenderMathMLBlock::paint(info, paintOffset); 243 244 if (info.context->paintingDisabled() || style().visibility() != VISIBLE) 106 245 return; 107 } 108 109 if (radical->isEmpty()) { 110 // We create the radical operator. 111 RenderPtr<RenderMathMLRadicalOperator> radicalOperator = createRenderer<RenderMathMLRadicalOperator>(document(), RenderStyle::createAnonymousStyleWithDisplay(&style(), FLEX)); 112 radicalOperator->initializeStyle(); 113 radical->addChild(radicalOperator.leakPtr()); 114 } 115 116 if (isRenderMathMLSquareRoot()) 117 return; 118 119 if (auto childToMove = base->lastChild()) { 120 // We move the last child of the base wrapper into the index wrapper if the index wrapper is empty and the base wrapper has at least two children. 121 if (childToMove->previousSibling() && index->isEmpty()) { 122 base->removeChildWithoutRestructuring(*childToMove); 123 index->addChild(childToMove); 124 } 125 } 126 127 if (auto childToMove = index->firstChild()) { 128 // We move the first child of the index wrapper into the base wrapper if: 129 // - either the index wrapper has at least two children. 130 // - or the base wrapper is empty but the index wrapper is not. 131 if (childToMove->nextSibling() || base->isEmpty()) { 132 index->removeChildWithoutRestructuring(*childToMove); 133 base->addChild(childToMove); 134 } 135 } 136 } 137 138 void RenderMathMLRoot::addChild(RenderObject* newChild, RenderObject* beforeChild) 139 { 140 if (isEmpty()) { 141 if (!isRenderMathMLSquareRoot()) { 142 // We add the IndexWrapper. 143 RenderMathMLBlock::addChild(RenderMathMLRootWrapper::createAnonymousWrapper(this).leakPtr()); 144 } 145 146 // We create the radicalWrapper 147 RenderMathMLBlock::addChild(RenderMathMLBlock::createAnonymousMathMLBlock().leakPtr()); 148 149 // We create the BaseWrapper. 150 RenderMathMLBlock::addChild(RenderMathMLRootWrapper::createAnonymousWrapper(this).leakPtr()); 151 152 updateStyle(); 153 } 154 155 // We insert the child. 156 auto base = baseWrapper(); 157 auto index = indexWrapper(); 158 RenderElement* actualParent; 159 RenderElement* actualBeforeChild; 160 if (isRenderMathMLSquareRoot()) { 161 // For square root, we always insert the child into the base wrapper. 162 actualParent = base; 163 if (beforeChild && beforeChild->parent() == base) 164 actualBeforeChild = toRenderElement(beforeChild); 165 else 166 actualBeforeChild = nullptr; 167 } else { 168 // For mroot, we insert the child into the parent of beforeChild, or at the end of the index. The wrapper structure is reorganize below. 169 actualParent = beforeChild ? beforeChild->parent() : nullptr; 170 if (actualParent == base || actualParent == index) 171 actualBeforeChild = toRenderElement(beforeChild); 172 else { 173 actualParent = index; 174 actualBeforeChild = nullptr; 175 } 176 } 177 actualParent->addChild(newChild, actualBeforeChild); 178 restructureWrappers(); 179 } 180 181 void RenderMathMLRoot::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) 182 { 183 RenderMathMLBlock::styleDidChange(diff, oldStyle); 184 if (!isEmpty()) 185 updateStyle(); 186 } 187 188 void RenderMathMLRoot::updateFromElement() 189 { 190 RenderMathMLBlock::updateFromElement(); 191 if (!isEmpty()) 192 updateStyle(); 193 } 194 195 void RenderMathMLRoot::updateStyle() 196 { 197 ASSERT(!isEmpty()); 198 199 // We set some constants to draw the radical, as defined in the OpenType MATH tables. 200 201 m_ruleThickness = 0.05f * style().font().size(); 202 203 // FIXME: The recommended default for m_verticalGap in displaystyle is rule thickness + 1/4 x-height (https://bugs.webkit.org/show_bug.cgi?id=118737). 204 m_verticalGap = 11 * m_ruleThickness / 4; 205 m_extraAscender = m_ruleThickness; 206 LayoutUnit kernBeforeDegree = 5 * style().font().size() / 18; 207 LayoutUnit kernAfterDegree = -10 * style().font().size() / 18; 208 m_degreeBottomRaisePercent = 0.6f; 209 210 const auto& primaryFontData = style().font().primaryFont(); 211 if (primaryFontData && primaryFontData->mathData()) { 212 // FIXME: m_verticalGap should use RadicalDisplayStyleVertical in display mode (https://bugs.webkit.org/show_bug.cgi?id=118737). 213 m_verticalGap = primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::RadicalVerticalGap); 214 m_ruleThickness = primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::RadicalRuleThickness); 215 m_extraAscender = primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::RadicalExtraAscender); 216 217 if (!isRenderMathMLSquareRoot()) { 218 kernBeforeDegree = primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::RadicalKernBeforeDegree); 219 kernAfterDegree = primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::RadicalKernAfterDegree); 220 m_degreeBottomRaisePercent = primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::RadicalDegreeBottomRaisePercent); 221 } 222 } 223 224 // We set the style of the anonymous wrappers. 225 226 auto radical = radicalWrapper(); 227 auto radicalStyle = RenderStyle::createAnonymousStyleWithDisplay(&style(), FLEX); 228 radicalStyle.get().setMarginTop(Length(0, Fixed)); // This will be updated in RenderMathMLRoot::layout(). 229 radical->setStyle(std::move(radicalStyle)); 230 radical->setNeedsLayoutAndPrefWidthsRecalc(); 231 232 auto base = baseWrapper(); 233 auto baseStyle = RenderStyle::createAnonymousStyleWithDisplay(&style(), FLEX); 234 baseStyle.get().setMarginTop(Length(0, Fixed)); // This will be updated in RenderMathMLRoot::layout(). 235 baseStyle.get().setAlignItems(AlignBaseline); 236 base->setStyle(std::move(baseStyle)); 237 base->setNeedsLayoutAndPrefWidthsRecalc(); 238 239 if (!isRenderMathMLSquareRoot()) { 240 // For mroot, we also set the style of the index wrapper. 241 auto index = indexWrapper(); 242 auto indexStyle = RenderStyle::createAnonymousStyleWithDisplay(&style(), FLEX); 243 indexStyle.get().setMarginTop(Length(0, Fixed)); // This will be updated in RenderMathMLRoot::layout(). 244 indexStyle.get().setMarginStart(Length(kernBeforeDegree, Fixed)); 245 indexStyle.get().setMarginEnd(Length(kernAfterDegree, Fixed)); 246 indexStyle.get().setAlignItems(AlignBaseline); 247 index->setStyle(std::move(indexStyle)); 248 index->setNeedsLayoutAndPrefWidthsRecalc(); 249 } 250 } 251 252 int RenderMathMLRoot::firstLineBaseline() const 253 { 254 if (!isEmpty()) { 255 auto base = baseWrapper(); 256 return static_cast<int>(lroundf(base->firstLineBaseline() + base->marginTop())); 257 } 258 259 return RenderMathMLBlock::firstLineBaseline(); 260 } 261 262 void RenderMathMLRoot::layout() 263 { 264 if (isEmpty()) { 265 RenderMathMLBlock::layout(); 266 return; 267 } 268 269 // FIXME: It seems that changing the top margin of the base below modifies its logical height and leads to reftest failures. 270 // For now, we workaround that by avoiding to recompute the child margins if they were not reset in updateStyle(). 271 auto base = baseWrapper(); 272 if (base->marginTop() > 0) { 273 RenderMathMLBlock::layout(); 274 return; 275 } 276 277 // We layout the children. 278 for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { 279 if (child->needsLayout()) 280 toRenderElement(child)->layout(); 281 } 282 283 auto radical = radicalOperator(); 284 if (radical) { 285 // We stretch the radical sign to cover the height of the base wrapper. 286 float baseHeight = base->logicalHeight(); 287 float baseHeightAboveBaseline = base->firstLineBaseline(); 288 if (baseHeightAboveBaseline == -1) 289 baseHeightAboveBaseline = baseHeight; 290 float baseDepthBelowBaseline = baseHeight - baseHeightAboveBaseline; 291 baseHeightAboveBaseline += m_verticalGap; 292 radical->stretchTo(baseHeightAboveBaseline, baseDepthBelowBaseline); 293 294 // We modify the top margins to adjust the vertical positions of wrappers. 295 float radicalTopMargin = m_extraAscender; 296 float baseTopMargin = m_verticalGap + m_ruleThickness + m_extraAscender; 297 if (!isRenderMathMLSquareRoot()) { 298 // For mroot, we try to place the index so the space below its baseline is m_degreeBottomRaisePercent times the height of the radical. 299 auto index = indexWrapper(); 300 float indexHeight = 0; 301 if (!index->isEmpty()) 302 indexHeight = toRenderBlock(index->firstChild())->logicalHeight(); 303 float indexTopMargin = (1.0 - m_degreeBottomRaisePercent) * radical->stretchSize() + radicalTopMargin - indexHeight; 304 if (indexTopMargin < 0) { 305 // If the index is too tall, we must add space at the top of renderer. 306 radicalTopMargin -= indexTopMargin; 307 baseTopMargin -= indexTopMargin; 308 indexTopMargin = 0; 309 } 310 index->style().setMarginTop(Length(indexTopMargin, Fixed)); 311 } 312 radical->style().setMarginTop(Length(radicalTopMargin, Fixed)); 313 base->style().setMarginTop(Length(baseTopMargin, Fixed)); 314 } 315 316 RenderMathMLBlock::layout(); 317 } 318 319 void RenderMathMLRoot::paint(PaintInfo& info, const LayoutPoint& paintOffset) 320 { 321 RenderMathMLBlock::paint(info, paintOffset); 322 323 if (isEmpty() || info.context->paintingDisabled() || style().visibility() != VISIBLE) 324 return; 325 326 auto base = baseWrapper(); 327 auto radical = radicalOperator(); 328 if (!base || !radical || !m_ruleThickness) 329 return; 330 331 // We draw the radical line. 246 247 IntPoint adjustedPaintOffset = roundedIntPoint(paintOffset + location() + contentBoxRect().location()); 248 249 int startX = adjustedPaintOffset.x(); 250 int frontWidth = lroundf(gFrontWidthEms * style().fontSize()); 251 int overbarWidth = roundToInt(contentLogicalWidth()) + m_overbarLeftPointShift; 252 253 int baseHeight = roundToInt(contentLogicalHeight()); 254 int rootPad = lroundf(gSpaceAboveEms * style().fontSize()); 255 adjustedPaintOffset.setY(adjustedPaintOffset.y() - rootPad); 256 257 float radicalDipLeftPointYPos = (index() ? gRootRadicalDipLeftPointYPos : gSqrtRadicalDipLeftPointYPos) * baseHeight; 258 259 FloatPoint overbarLeftPoint(startX - m_overbarLeftPointShift, adjustedPaintOffset.y()); 260 FloatPoint bottomPoint(startX - gRadicalBottomPointXFront * frontWidth, adjustedPaintOffset.y() + baseHeight + gRadicalBottomPointLower); 261 FloatPoint dipLeftPoint(startX - gRadicalDipLeftPointXFront * frontWidth, adjustedPaintOffset.y() + radicalDipLeftPointYPos); 262 FloatPoint leftEnd(startX - frontWidth, dipLeftPoint.y() + gRadicalLeftEndYShiftEms * style().fontSize()); 263 332 264 GraphicsContextStateSaver stateSaver(*info.context); 333 334 info.context->setStrokeThickness( m_ruleThickness);265 266 info.context->setStrokeThickness(gRadicalLineThicknessEms * style().fontSize()); 335 267 info.context->setStrokeStyle(SolidStroke); 336 268 info.context->setStrokeColor(style().visitedDependentColor(CSSPropertyColor), ColorSpaceDeviceRGB); 337 338 // The preferred width of the radical is sometimes incorrect, so we draw a slightly longer line to ensure it touches the radical symbol (https://bugs.webkit.org/show_bug.cgi?id=130326). 339 LayoutUnit sizeError = radical->trailingSpaceError(); 340 IntPoint adjustedPaintOffset = roundedIntPoint(paintOffset + location() + base->location() + LayoutPoint(-sizeError, -(m_verticalGap + m_ruleThickness / 2))); 341 info.context->drawLine(adjustedPaintOffset, IntPoint(adjustedPaintOffset.x() + base->pixelSnappedOffsetWidth() + sizeError, adjustedPaintOffset.y())); 342 } 343 344 RenderPtr<RenderMathMLRootWrapper> RenderMathMLRootWrapper::createAnonymousWrapper(RenderMathMLRoot* renderObject) 345 { 346 RenderPtr<RenderMathMLRootWrapper> newBlock = createRenderer<RenderMathMLRootWrapper>(renderObject->document(), RenderStyle::createAnonymousStyleWithDisplay(&renderObject->style(), FLEX)); 347 newBlock->initializeStyle(); 348 return newBlock; 349 } 350 351 RenderObject* RenderMathMLRootWrapper::removeChildWithoutRestructuring(RenderObject& child) 352 { 353 return RenderMathMLBlock::removeChild(child); 354 } 355 356 RenderObject* RenderMathMLRootWrapper::removeChild(RenderObject& child) 357 { 358 RenderObject* next = RenderMathMLBlock::removeChild(child); 359 360 if (!(beingDestroyed() || documentBeingDestroyed())) 361 toRenderMathMLRoot(parent())->restructureWrappers(); 362 363 return next; 269 info.context->setLineJoin(MiterJoin); 270 info.context->setMiterLimit(style().fontSize()); 271 272 Path root; 273 274 root.moveTo(FloatPoint(overbarLeftPoint.x() + overbarWidth, adjustedPaintOffset.y())); 275 // draw top 276 root.addLineTo(overbarLeftPoint); 277 // draw from top left corner to bottom point of radical 278 root.addLineTo(bottomPoint); 279 // draw from bottom point to top of left part of radical base "dip" 280 root.addLineTo(dipLeftPoint); 281 // draw to end 282 root.addLineTo(leftEnd); 283 284 info.context->strokePath(root); 285 286 GraphicsContextStateSaver maskStateSaver(*info.context); 287 288 // Build a mask to draw the thick part of the root. 289 Path mask; 290 291 mask.moveTo(overbarLeftPoint); 292 mask.addLineTo(bottomPoint); 293 mask.addLineTo(dipLeftPoint); 294 mask.addLineTo(FloatPoint(2 * dipLeftPoint.x() - leftEnd.x(), 2 * dipLeftPoint.y() - leftEnd.y())); 295 296 info.context->clip(mask); 297 298 // Draw the thick part of the root. 299 info.context->setStrokeThickness(gRadicalThickLineThicknessEms * style().fontSize()); 300 info.context->setLineCap(SquareCap); 301 302 Path line; 303 line.moveTo(bottomPoint); 304 line.addLineTo(dipLeftPoint); 305 306 info.context->strokePath(line); 364 307 } 365 308 -
trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h
r169939 r169945 30 30 31 31 #include "RenderMathMLBlock.h" 32 #include "RenderMathMLRow.h"33 32 34 33 namespace WebCore { 35 36 class RenderMathMLRadicalOperator;37 class RenderMathMLRootWrapper;38 34 39 35 // Render base^(1/index), or sqrt(base) via the derived class RenderMathMLSquareRoot, using radical notation. 40 36 class RenderMathMLRoot : public RenderMathMLBlock { 41 42 friend class RenderMathMLRootWrapper;43 44 37 public: 45 38 RenderMathMLRoot(Element&, PassRef<RenderStyle>); 46 39 RenderMathMLRoot(Document&, PassRef<RenderStyle>); 47 40 41 virtual LayoutUnit paddingTop() const override; 42 virtual LayoutUnit paddingBottom() const override; 43 virtual LayoutUnit paddingLeft() const override; 44 virtual LayoutUnit paddingRight() const override; 45 virtual LayoutUnit paddingBefore() const override; 46 virtual LayoutUnit paddingAfter() const override; 47 virtual LayoutUnit paddingStart() const override; 48 virtual LayoutUnit paddingEnd() const override; 49 48 50 virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) override; 49 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;50 virtual void updateFromElement() override;51 51 52 52 protected: … … 58 58 virtual bool isRenderMathMLRoot() const override final { return true; } 59 59 virtual const char* renderName() const override { return "RenderMathMLRoot"; } 60 virtual int firstLineBaseline() const override;61 void updateStyle();62 void restructureWrappers();60 61 // This may return 0 for a non-MathML index (which won't occur in valid MathML). 62 RenderBox* index() const; 63 63 64 RenderMathMLRootWrapper* baseWrapper() const; 65 RenderMathMLBlock* radicalWrapper() const; 66 RenderMathMLRootWrapper* indexWrapper() const; 67 RenderMathMLRadicalOperator* radicalOperator() const; 68 69 LayoutUnit m_verticalGap; 70 LayoutUnit m_ruleThickness; 71 LayoutUnit m_extraAscender; 72 float m_degreeBottomRaisePercent; 64 int m_intrinsicPaddingBefore; 65 int m_intrinsicPaddingAfter; 66 int m_intrinsicPaddingStart; 67 int m_intrinsicPaddingEnd; 68 int m_overbarLeftPointShift; 69 int m_indexTop; 73 70 }; 74 71 75 RENDER_OBJECT_TYPE_CASTS(RenderMathMLRoot, isRenderMathMLRoot())76 77 // These are specific wrappers for the index and base, that ask the parent to restructure the renderers after child removal.78 class RenderMathMLRootWrapper : public RenderMathMLRow {79 80 friend class RenderMathMLRoot;81 82 public:83 RenderMathMLRootWrapper(Document& document, PassRef<RenderStyle> style)84 : RenderMathMLRow(document, std::move(style)) { }85 86 private:87 RenderObject* removeChildWithoutRestructuring(RenderObject&);88 RenderObject* removeChild(RenderObject&) override;89 static RenderPtr<RenderMathMLRootWrapper> createAnonymousWrapper(RenderMathMLRoot* renderObject);90 virtual bool isRenderMathMLRoot() const override final { return true; }91 virtual const char* renderName() const override { return "RenderMathMLRootWrapper"; }92 };93 94 RENDER_OBJECT_TYPE_CASTS(RenderMathMLRootWrapper, isRenderMathMLRootWrapper())95 96 72 } 97 73
Note: See TracChangeset
for help on using the changeset viewer.