Changeset 202168 in webkit


Ignore:
Timestamp:
Jun 17, 2016 9:30:03 AM (8 years ago)
Author:
fred.wang@free.fr
Message:

Refactor RenderMathMLRoot layout function to avoid using flexbox
https://bugs.webkit.org/show_bug.cgi?id=153987

Patch by Frederic Wang <fwang@igalia.com> on 2016-06-17
Reviewed by Brent Fulgham.

Source/WebCore:

No new tests, already covered by existing tests.
A case for RTL root has been added to roots.xhtml.

We reimplement RenderMathMLRoot without any flexbox or anonymous.
The anonymous RenderMathMLRadicalOperator used to draw the radical sign is replaced with
the MathOperator class introduced in bug 152244.
msqrt (row of children under a square root) is now implemented directly in RenderMathMLRoot,
so RenderMathMLSquareRoot is removed and RenderMathMLRoot now inherits from RenderMathMLRow.

  • CMakeLists.txt: Remove files for RenderMathMLRadicalOperator and RenderMathMLSquareRoot.
  • WebCore.xcodeproj/project.pbxproj: ditto.
  • accessibility/AccessibilityRenderObject.cpp: Update code now that we do not use any

radical wrappers.
(WebCore::AccessibilityRenderObject::isMathRow): Now that RenderMathMLRoot inherits from
RenderMathMLRow, we must exclude MathRoot or otherwise some accessibility code may treat
roots as rows.
(WebCore::AccessibilityRenderObject::mathRadicandObject): Return the first child for
Root/SquareRoot or nullptr.
(WebCore::AccessibilityRenderObject::mathRootIndexObject): Return the second child for
Root and nullptr for SquareRoot.

  • mathml/MathMLInlineContainerElement.cpp:

(WebCore::MathMLInlineContainerElement::childrenChanged): We no longer need a special case
for msqrt, it is treated as a normal RenderMathMLRow.
(WebCore::MathMLInlineContainerElement::createElementRenderer): Make msqrt create a
RenderMathMLRoot object.

  • rendering/RenderObject.h:

(WebCore::RenderObject::isRenderMathMLRadicalOperator): Deleted.

  • rendering/mathml/RenderMathMLBlock.cpp:

(WebCore::RenderMathMLBlock::mirrorIfNeeded): New function to mirror a child horizontal
offset according to the parent width.
(WebCore::RenderMathMLBlock::renderName):

  • rendering/mathml/RenderMathMLBlock.h:

(WebCore::RenderMathMLBlock::mirrorIfNeeded): Moved from RenderMathMLScripts, just forward
call to the other mirrorIfNeeded function.

  • rendering/mathml/RenderMathMLOperator.cpp: We no longer need this trailingSpaceError hack.

(WebCore::RenderMathMLOperator::trailingSpaceError): Deleted.

  • rendering/mathml/RenderMathMLOperator.h: ditto.
  • rendering/mathml/RenderMathMLRadicalOperator.cpp: Removed. The radical sign is now drawn

with a MathOperator.

  • rendering/mathml/RenderMathMLRadicalOperator.h: Removed.
  • rendering/mathml/RenderMathMLRoot.cpp: Complete refactoring to avoid using flexbox and

anonymous wrappers.
(WebCore::RenderMathMLRoot::RenderMathMLRoot): Set m_kind parameters to distinguish between
square root and general root and set the MathOperator member to draw the radical sign.
(WebCore::RenderMathMLRoot::isValid): Helper function to verify whether the child list is valid.
(WebCore::RenderMathMLRoot::getBase): Get the base of an mroot.
(WebCore::RenderMathMLRoot::getIndex): Get the index of an mroot.
(WebCore::RenderMathMLRoot::styleDidChange): Be sure to keep the style of the
MathOperator in sync with ours ; no need to skip empty roots.
(WebCore::RenderMathMLRoot::updateFromElement): Call the function from the new parent class ;
no need to skip empty roots.
(WebCore::RenderMathMLRoot::updateStyle): Remove the isEmpty ASSERT as it is valid to have
empty square root. Set the m_kernBeforeDegree, m_kernBeforeDegree members.
No need to set style for anonymous.
(WebCore::RenderMathMLRoot::computePreferredLogicalWidths): Implement this function.
(WebCore::RenderMathMLRoot::layoutBlock): Implement this function.
(WebCore::RenderMathMLRoot::paintChildren): Implement this function.
(WebCore::RenderMathMLRoot::paint): Remove the trailingSpaceError hack ;
paint the radical sign via MathOperator::paint
(WebCore::RenderMathMLRoot::baseWrapper): Deleted.
(WebCore::RenderMathMLRoot::radicalWrapper): Deleted.
(WebCore::RenderMathMLRoot::indexWrapper): Deleted.
(WebCore::RenderMathMLRoot::radicalOperator): Deleted.
(WebCore::RenderMathMLRoot::restructureWrappers): Deleted.
(WebCore::RenderMathMLRoot::addChild): Deleted.
(WebCore::RenderMathMLRoot::firstLineBaseline): Deleted.
(WebCore::RenderMathMLRoot::layout): Deleted.
(WebCore::RenderMathMLRootWrapper::createAnonymousWrapper): Deleted.
(WebCore::RenderMathMLRootWrapper::removeChildWithoutRestructuring): Deleted.
(WebCore::RenderMathMLRootWrapper::removeChild): Deleted.

  • rendering/mathml/RenderMathMLRoot.h: Make RenderMathMLRoot inherit from RenderMathMLRow.

Make RenderMathMLRoot support <msqrt>.
Remove all the anonymous wrapper stuff and instead use a MathOperator for the radical symbol.
Update function declaration to implement layout without flexbox and add some helper functions.

  • rendering/mathml/RenderMathMLRow.cpp: Allow to get the exact metrics of the chid row,

for use in RenderMathMLRoot.
(WebCore::RenderMathMLRow::computeLineVerticalStretch): rename parameters.
(WebCore::RenderMathMLRow::layoutRowItems): Set parameters to the final ascent, descent and
logical width of the chid row. Set the temporary logical width for RenderMathRoot before
laying the children out.
(WebCore::RenderMathMLRow::layoutBlock): Rename parameters ; add a dummy logicalWidth
parameter.

  • rendering/mathml/RenderMathMLRow.h: Make some functions accessible or overridable by

RenderMathMLRoot. Make layoutRowItems return the final ascent, descent and logical width
after the chid row is laid out.

  • rendering/mathml/RenderMathMLScripts.cpp: Move mirrorIfNeeded to RenderMathMLBlock.

(WebCore::RenderMathMLScripts::mirrorIfNeeded): Deleted.

  • rendering/mathml/RenderMathMLScripts.h: Move mirrorIfNeeded to RenderMathMLBlock.
  • rendering/mathml/RenderMathMLSquareRoot.cpp: Removed.
  • rendering/mathml/RenderMathMLSquareRoot.h: Removed.
  • rendering/mathml/MathOperator.cpp:

(WebCore::MathOperator::paint): Apply a mirroring scale transform to radical symbol
in RTL direction.

LayoutTests:

Update expectations for some MathML tests containing radical operators.

that we do not manage anonymous wrappers anymore.

  • mathml/presentation/roots.xhtml: Add one test for RTL roots.
  • platform/gtk/mathml/presentation/mo-stretch-expected.txt: Update expectation to

take into change in the render tree.

  • platform/gtk/mathml/presentation/roots-expected.txt: Ditto.
  • platform/gtk/mathml/presentation/roots-expected.png: Update expectation to take

into account small rendering changes.

  • platform/ios-simulator/mathml/presentation/roots-expected.txt: Ditto.
  • platform/gtk/mathml/radical-fallback-expected.txt: Ditto.
  • platform/gtk/mathml/radical-fallback-expected.png: Ditto.
  • platform/mac/mathml/radical-fallback-expected.txt: Ditto.
  • platform/mac/mathml/radical-fallback-expected.png: Ditto.
  • platform/ios-simulator/mathml/radical-fallback-expected.txt: Ditto.
  • platform/ios-simulator/mathml/radical-fallback-expected.png: Added.
Location:
trunk
Files:
1 added
4 deleted
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r202164 r202168  
     12016-06-17  Frederic Wang  <fwang@igalia.com>
     2
     3        Refactor RenderMathMLRoot layout function to avoid using flexbox
     4        https://bugs.webkit.org/show_bug.cgi?id=153987
     5
     6        Reviewed by Brent Fulgham.
     7
     8        Update expectations for some MathML tests containing radical operators.
     9
     10        * TestExpectations: mathml/roots-removeChild.html works as expected now
     11        that we do not manage anonymous wrappers anymore.
     12        * mathml/presentation/roots.xhtml: Add one test for RTL roots.
     13        * platform/gtk/mathml/presentation/mo-stretch-expected.txt: Update expectation to
     14        take into change in the render tree.
     15        * platform/gtk/mathml/presentation/roots-expected.txt: Ditto.
     16        * platform/gtk/mathml/presentation/roots-expected.png: Update expectation to take
     17        into account small rendering changes.
     18        * platform/ios-simulator/mathml/presentation/roots-expected.txt: Ditto.
     19        * platform/gtk/mathml/radical-fallback-expected.txt: Ditto.
     20        * platform/gtk/mathml/radical-fallback-expected.png: Ditto.
     21        * platform/mac/mathml/radical-fallback-expected.txt: Ditto.
     22        * platform/mac/mathml/radical-fallback-expected.png: Ditto.
     23        * platform/ios-simulator/mathml/radical-fallback-expected.txt: Ditto.
     24        * platform/ios-simulator/mathml/radical-fallback-expected.png: Added.
     25
    1262016-06-17  Romain Bellessort  <romain.bellessort@crf.canon.fr>
    227
  • trunk/LayoutTests/TestExpectations

    r202117 r202168  
    115115
    116116webkit.org/b/127860 [ Debug ] js/function-apply-aliased.html [ Skip ]
    117 
    118 # This test verifies dynamic manipulation of the mroot and msqrt elements.
    119 mathml/roots-removeChild.html [ ImageOnlyFailure ]
    120117
    121118# For now we ignore margin/padding/border properties of MathML renderers.
  • trunk/LayoutTests/mathml/presentation/roots.xhtml

    r166059 r202168  
    172172</math>
    173173</p>
     174<p id='t10'>RTL roots:
     175    <math xmlns="http://www.w3.org/1998/Math/MathML" dir="rtl">
     176  <mroot>
     177    <mrow>
     178        <mn>1</mn>
     179        <mo>+</mo>
     180        <mroot>
     181          <mrow>
     182            <mn>2</mn>
     183            <mo>+</mo>
     184            <mroot>
     185              <mrow>
     186                <mn>3</mn>
     187                <mo>+</mo>
     188                <mroot>
     189                  <mrow>
     190                    <mn>4</mn>
     191                    <mo>+</mo>
     192                    <mroot>
     193                      <mrow>
     194                        <mn>5</mn>
     195                        <mo>+</mo>
     196                        <mroot>
     197                          <mrow>
     198                            <mn>6</mn>
     199                            <mo>+</mo>
     200                            <mroot>
     201                              <mrow>
     202                                <mn>7</mn>
     203                                <mo>+</mo>
     204                                <mroot>
     205                                  <mi>A</mi>
     206                                  <mfrac>
     207                                    <mrow>
     208                                      <mi>x</mi>
     209                                      <mo>+</mo>
     210                                      <mi>y</mi>
     211                                    </mrow>
     212                                    <mi>z</mi>
     213                                  </mfrac>
     214                                </mroot>
     215                              </mrow>
     216                              <mn>9</mn>
     217                            </mroot>
     218                          </mrow>
     219                          <mn>8</mn>
     220                        </mroot>
     221                      </mrow>
     222                      <mn>7</mn>
     223                    </mroot>
     224                  </mrow>
     225                  <mn>6</mn>
     226                </mroot>
     227              </mrow>
     228              <mn>5</mn>
     229            </mroot>
     230          </mrow>
     231          <mn>4</mn>
     232        </mroot>
     233      </mrow>
     234    <mn>3</mn>
     235  </mroot>
     236</math>
     237</p>
    174238
    175239</body>
  • trunk/LayoutTests/platform/gtk/mathml/presentation/mo-stretch-expected.txt

    r202156 r202168  
    306306      RenderBR {BR} at (0,0) size 0x0
    307307      RenderMathMLMath {math} at (0,179) size 190x76 [padding: 0 1 0 1]
    308         RenderMathMLSquareRoot {msqrt} at (1,0) size 188x76
    309           RenderMathMLBlock (anonymous, flex) at (0,0) size 17x76
    310             RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x76
    311               RenderMathMLBlock (anonymous, flex) at (0,0) size 13x75
    312                 RenderBlock (anonymous) at (0,0) size 13x75
    313                   RenderText at (0,-56) size 13x106
    314                     text run at (0,-56) width 13: "\x{221A}"
    315           RenderMathMLRootWrapper at (17,2) size 171x74
    316             RenderMathMLOperator {mo} at (0,0) size 14x73
    317               RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
    318                 RenderBlock (anonymous) at (0,0) size 6x16
    319                   RenderText at (0,-45) size 6x106
    320                     text run at (0,-45) width 6: "("
    321             RenderMathMLOperator {mo} at (14,0) size 14x73
    322               RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
    323                 RenderBlock (anonymous) at (0,0) size 6x16
    324                   RenderText at (0,-45) size 6x106
    325                     text run at (0,-45) width 6: ")"
    326             RenderMathMLOperator {mo} at (28,0) size 14x73
    327               RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
    328                 RenderBlock (anonymous) at (0,0) size 8x16
    329                   RenderText at (0,-45) size 8x106
    330                     text run at (0,-45) width 8: "{"
    331             RenderMathMLOperator {mo} at (42,0) size 14x73
    332               RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
    333                 RenderBlock (anonymous) at (0,0) size 8x16
    334                   RenderText at (0,-45) size 8x106
    335                     text run at (0,-45) width 8: "}"
    336             RenderMathMLOperator {mo} at (56,0) size 11x73
    337               RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
    338                 RenderBlock (anonymous) at (0,0) size 4x16
    339                   RenderText at (0,-45) size 4x106
    340                     text run at (0,-45) width 4: "["
    341             RenderMathMLOperator {mo} at (67,0) size 11x73
    342               RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
    343                 RenderBlock (anonymous) at (0,0) size 4x16
    344                   RenderText at (0,-45) size 4x106
    345                     text run at (0,-45) width 4: "]"
    346             RenderMathMLOperator {mo} at (78,0) size 11x73
    347               RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
    348                 RenderBlock (anonymous) at (0,0) size 7x16
    349                   RenderText at (0,-45) size 7x106
    350                     text run at (0,-45) width 7: "\x{2308}"
    351             RenderMathMLOperator {mo} at (89,0) size 11x73
    352               RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
    353                 RenderBlock (anonymous) at (0,0) size 7x16
    354                   RenderText at (0,-45) size 7x106
    355                     text run at (0,-45) width 7: "\x{2309}"
    356             RenderMathMLOperator {mo} at (100,0) size 11x73
    357               RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
    358                 RenderBlock (anonymous) at (0,0) size 7x16
    359                   RenderText at (0,-45) size 7x106
    360                     text run at (0,-45) width 7: "\x{230A}"
    361             RenderMathMLOperator {mo} at (111,0) size 11x73
    362               RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
    363                 RenderBlock (anonymous) at (0,0) size 7x16
    364                   RenderText at (0,-45) size 7x106
    365                     text run at (0,-45) width 7: "\x{230B}"
    366             RenderMathMLOperator {mo} at (122,18) size 17x36
    367               RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
    368                 RenderBlock (anonymous) at (0,0) size 11x18
    369                   RenderText at (0,-44) size 11x106
    370                     text run at (0,-44) width 11: "\x{222B}"
    371             RenderMathMLOperator {mo} at (138,0) size 9x73
    372               RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
    373                 RenderBlock (anonymous) at (0,0) size 4x16
    374                   RenderText at (0,-45) size 4x106
    375                     text run at (0,-45) width 4: "|"
    376             RenderMathMLOperator {mo} at (146,15) size 8x42
    377               RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
    378                 RenderBlock (anonymous) at (0,0) size 6x16
    379                   RenderText at (0,-45) size 6x106
    380                     text run at (0,-45) width 6: "\x{2016}"
    381             RenderMathMLOperator {mo} at (153,15) size 18x42
    382               RenderMathMLBlock (anonymous, flex) at (4,0) size 9x16
    383                 RenderBlock (anonymous) at (0,0) size 8x16
    384                   RenderText at (0,-45) size 8x106
    385                     text run at (0,-45) width 8: "\x{2225}"
    386             RenderMathMLSpace {mspace} at (170,0) size 0x41
     308        RenderMathMLRoot {msqrt} at (1,0) size 188x76
     309          RenderMathMLOperator {mo} at (17,2) size 14x74
     310            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
     311              RenderBlock (anonymous) at (0,0) size 6x16
     312                RenderText at (0,-45) size 6x106
     313                  text run at (0,-45) width 6: "("
     314          RenderMathMLOperator {mo} at (31,2) size 14x74
     315            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
     316              RenderBlock (anonymous) at (0,0) size 6x16
     317                RenderText at (0,-45) size 6x106
     318                  text run at (0,-45) width 6: ")"
     319          RenderMathMLOperator {mo} at (45,2) size 14x74
     320            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
     321              RenderBlock (anonymous) at (0,0) size 8x16
     322                RenderText at (0,-45) size 8x106
     323                  text run at (0,-45) width 8: "{"
     324          RenderMathMLOperator {mo} at (59,2) size 14x74
     325            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
     326              RenderBlock (anonymous) at (0,0) size 8x16
     327                RenderText at (0,-45) size 8x106
     328                  text run at (0,-45) width 8: "}"
     329          RenderMathMLOperator {mo} at (73,2) size 11x74
     330            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
     331              RenderBlock (anonymous) at (0,0) size 4x16
     332                RenderText at (0,-45) size 4x106
     333                  text run at (0,-45) width 4: "["
     334          RenderMathMLOperator {mo} at (84,2) size 11x74
     335            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
     336              RenderBlock (anonymous) at (0,0) size 4x16
     337                RenderText at (0,-45) size 4x106
     338                  text run at (0,-45) width 4: "]"
     339          RenderMathMLOperator {mo} at (95,2) size 11x74
     340            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
     341              RenderBlock (anonymous) at (0,0) size 7x16
     342                RenderText at (0,-45) size 7x106
     343                  text run at (0,-45) width 7: "\x{2308}"
     344          RenderMathMLOperator {mo} at (106,2) size 11x74
     345            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
     346              RenderBlock (anonymous) at (0,0) size 7x16
     347                RenderText at (0,-45) size 7x106
     348                  text run at (0,-45) width 7: "\x{2309}"
     349          RenderMathMLOperator {mo} at (117,2) size 11x74
     350            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
     351              RenderBlock (anonymous) at (0,0) size 7x16
     352                RenderText at (0,-45) size 7x106
     353                  text run at (0,-45) width 7: "\x{230A}"
     354          RenderMathMLOperator {mo} at (128,2) size 11x74
     355            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
     356              RenderBlock (anonymous) at (0,0) size 7x16
     357                RenderText at (0,-45) size 7x106
     358                  text run at (0,-45) width 7: "\x{230B}"
     359          RenderMathMLOperator {mo} at (139,20) size 17x37
     360            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
     361              RenderBlock (anonymous) at (0,0) size 11x18
     362                RenderText at (0,-44) size 11x106
     363                  text run at (0,-44) width 11: "\x{222B}"
     364          RenderMathMLOperator {mo} at (155,2) size 9x74
     365            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
     366              RenderBlock (anonymous) at (0,0) size 4x16
     367                RenderText at (0,-45) size 4x106
     368                  text run at (0,-45) width 4: "|"
     369          RenderMathMLOperator {mo} at (163,17) size 8x43
     370            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
     371              RenderBlock (anonymous) at (0,0) size 6x16
     372                RenderText at (0,-45) size 6x106
     373                  text run at (0,-45) width 6: "\x{2016}"
     374          RenderMathMLOperator {mo} at (170,17) size 18x43
     375            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x16
     376              RenderBlock (anonymous) at (0,0) size 8x16
     377                RenderText at (0,-45) size 8x106
     378                  text run at (0,-45) width 8: "\x{2225}"
     379          RenderMathMLSpace {mspace} at (187,2) size 0x42
    387380      RenderText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/gtk/mathml/presentation/roots-expected.txt

    r202156 r202168  
    11layer at (0,0) size 800x600
    22  RenderView at (0,0) size 800x600
    3 layer at (0,0) size 800x491
    4   RenderBlock {html} at (0,0) size 800x491
    5     RenderBody {body} at (8,16) size 784x459
     3layer at (0,0) size 800x563
     4  RenderBlock {html} at (0,0) size 800x563
     5    RenderBody {body} at (8,16) size 784x531
    66      RenderBlock {p} at (0,0) size 784x18
    77        RenderText {#text} at (0,0) size 177x17
    88          text run at (0,0) width 177: "square root (should be red): "
    99        RenderMathMLMath {math} at (177,1) size 27x18 [padding: 0 1 0 1]
    10           RenderMathMLSquareRoot {msqrt} at (1,0) size 25x18 [color=#FF0000]
    11             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x18
    12               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x18
    13                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    14                   RenderBlock (anonymous) at (0,0) size 13x17
    15                     RenderText at (0,-56) size 13x106
    16                       text run at (0,-56) width 13: "\x{221A}"
    17             RenderMathMLRootWrapper at (17,2) size 8x16
    18               RenderMathMLToken {mn} at (0,0) size 8x12
    19                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    20                   RenderBlock (anonymous) at (0,0) size 8x12
    21                     RenderText {#text} at (0,-46) size 8x106
    22                       text run at (0,-46) width 8: "2"
     10          RenderMathMLRoot {msqrt} at (1,0) size 21x18 [color=#FF0000]
     11            RenderMathMLToken {mn} at (13,2) size 8x13
     12              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     13                RenderBlock (anonymous) at (0,0) size 8x12
     14                  RenderText {#text} at (0,-46) size 8x106
     15                    text run at (0,-46) width 8: "2"
    2316      RenderBlock {p} at (0,34) size 784x18
    2417        RenderText {#text} at (0,0) size 110x17
    2518          text run at (0,0) width 110: "long square root: "
    2619        RenderMathMLMath {math} at (110,1) size 56x18 [padding: 0 1 0 1]
    27           RenderMathMLSquareRoot {msqrt} at (1,0) size 54x18
    28             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x18
    29               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x18
    30                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    31                   RenderBlock (anonymous) at (0,0) size 13x17
    32                     RenderText at (0,-56) size 13x106
    33                       text run at (0,-56) width 13: "\x{221A}"
    34             RenderMathMLRootWrapper at (17,2) size 37x16
     20          RenderMathMLRoot {msqrt} at (1,0) size 50x18
     21            RenderMathMLRow {mrow} at (13,2) size 37x14
     22              RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
     23                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
     24                  RenderBlock (anonymous) at (0,0) size 8x8
     25                    RenderText {#text} at (0,-50) size 8x106
     26                      text run at (0,-50) width 8: "x"
     27              RenderMathMLOperator {mo} at (9,1) size 20x12
     28                RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     29                  RenderBlock (anonymous) at (0,0) size 12x12
     30                    RenderText at (0,-47) size 12x106
     31                      text run at (0,-47) width 12: "+"
     32              RenderMathMLToken {mn} at (28,0) size 9x12
     33                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     34                  RenderBlock (anonymous) at (0,0) size 8x12
     35                    RenderText {#text} at (0,-46) size 8x106
     36                      text run at (0,-46) width 8: "1"
     37      RenderBlock {p} at (0,68) size 784x19
     38        RenderText {#text} at (0,2) size 222x17
     39          text run at (0,2) width 222: "long square root with implied row: "
     40        RenderMathMLMath {math} at (222,0) size 63x19 [padding: 0 1 0 1]
     41          RenderMathMLRoot {msqrt} at (1,0) size 57x19
     42            RenderMathMLScripts {msup} at (13,2) size 17x15
     43              RenderMathMLToken {mi} at (0,6) size 10x9 [padding: 0 2 0 0]
     44                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
     45                  RenderBlock (anonymous) at (0,0) size 8x8
     46                    RenderText {#text} at (0,-50) size 8x106
     47                      text run at (0,-50) width 8: "x"
     48              RenderMathMLToken {mn} at (9,0) size 7x9
     49                RenderMathMLBlock (anonymous, flex) at (0,0) size 6x9
     50                  RenderBlock (anonymous) at (0,0) size 6x9
     51                    RenderText {#text} at (0,-35) size 6x80
     52                      text run at (0,-35) width 6: "2"
     53            RenderMathMLOperator {mo} at (29,6) size 20x13
     54              RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     55                RenderBlock (anonymous) at (0,0) size 12x12
     56                  RenderText at (0,-47) size 12x106
     57                    text run at (0,-47) width 12: "+"
     58            RenderMathMLToken {mn} at (48,5) size 9x13
     59              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     60                RenderBlock (anonymous) at (0,0) size 8x12
     61                  RenderText {#text} at (0,-46) size 8x106
     62                    text run at (0,-46) width 8: "1"
     63      RenderBlock {p} at (0,103) size 784x40
     64        RenderText {#text} at (0,8) size 113x17
     65          text run at (0,8) width 113: "root of a fraction: "
     66        RenderMathMLMath {math} at (113,0) size 56x41 [padding: 0 1 0 1]
     67          RenderMathMLRoot {msqrt} at (1,0) size 53x41
     68            RenderMathMLFraction {mfrac} at (16,2) size 37x34
    3569              RenderMathMLRow {mrow} at (0,0) size 37x13
    3670                RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
     
    4983                      RenderText {#text} at (0,-46) size 8x106
    5084                        text run at (0,-46) width 8: "1"
    51       RenderBlock {p} at (0,68) size 784x19
    52         RenderText {#text} at (0,2) size 222x17
    53           text run at (0,2) width 222: "long square root with implied row: "
    54         RenderMathMLMath {math} at (222,0) size 63x19 [padding: 0 1 0 1]
    55           RenderMathMLSquareRoot {msqrt} at (1,0) size 61x19
    56             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x19
    57               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x19
    58                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x18
    59                   RenderBlock (anonymous) at (0,0) size 13x18
    60                     RenderText at (0,-56) size 13x106
    61                       text run at (0,-56) width 13: "\x{221A}"
    62             RenderMathMLRootWrapper at (17,2) size 44x17
    63               RenderMathMLScripts {msup} at (0,0) size 17x15
    64                 RenderMathMLToken {mi} at (0,6) size 10x9 [padding: 0 2 0 0]
     85              RenderMathMLRow {mrow} at (0,20) size 37x14
     86                RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
    6587                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
    6688                    RenderBlock (anonymous) at (0,0) size 8x8
    6789                      RenderText {#text} at (0,-50) size 8x106
    6890                        text run at (0,-50) width 8: "x"
    69                 RenderMathMLToken {mn} at (9,0) size 7x9
    70                   RenderMathMLBlock (anonymous, flex) at (0,0) size 6x9
    71                     RenderBlock (anonymous) at (0,0) size 6x9
    72                       RenderText {#text} at (0,-35) size 6x80
    73                         text run at (0,-35) width 6: "2"
    74               RenderMathMLOperator {mo} at (16,4) size 20x12
    75                 RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    76                   RenderBlock (anonymous) at (0,0) size 12x12
    77                     RenderText at (0,-47) size 12x106
    78                       text run at (0,-47) width 12: "+"
    79               RenderMathMLToken {mn} at (35,3) size 9x12
    80                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    81                   RenderBlock (anonymous) at (0,0) size 8x12
    82                     RenderText {#text} at (0,-46) size 8x106
    83                       text run at (0,-46) width 8: "1"
    84       RenderBlock {p} at (0,103) size 784x40
    85         RenderText {#text} at (0,8) size 113x17
    86           text run at (0,8) width 113: "root of a fraction: "
    87         RenderMathMLMath {math} at (113,0) size 56x41 [padding: 0 1 0 1]
    88           RenderMathMLSquareRoot {msqrt} at (1,0) size 54x41
    89             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x41
    90               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x41
    91                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x40
    92                   RenderBlock (anonymous) at (0,0) size 13x40
    93                     RenderText at (0,-56) size 13x106
    94                       text run at (0,-56) width 13: "\x{221A}"
    95             RenderMathMLRootWrapper at (17,2) size 37x39
    96               RenderMathMLFraction {mfrac} at (0,0) size 37x34
    97                 RenderMathMLRow {mrow} at (0,0) size 37x13
    98                   RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
    99                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
    100                       RenderBlock (anonymous) at (0,0) size 8x8
    101                         RenderText {#text} at (0,-50) size 8x106
    102                           text run at (0,-50) width 8: "x"
    103                   RenderMathMLOperator {mo} at (9,1) size 20x12
    104                     RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    105                       RenderBlock (anonymous) at (0,0) size 12x12
    106                         RenderText at (0,-47) size 12x106
    107                           text run at (0,-47) width 12: "+"
    108                   RenderMathMLToken {mn} at (28,0) size 9x12
    109                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    110                       RenderBlock (anonymous) at (0,0) size 8x12
    111                         RenderText {#text} at (0,-46) size 8x106
    112                           text run at (0,-46) width 8: "1"
    113                 RenderMathMLRow {mrow} at (0,20) size 37x14
    114                   RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
    115                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
    116                       RenderBlock (anonymous) at (0,0) size 8x8
    117                         RenderText {#text} at (0,-50) size 8x106
    118                           text run at (0,-50) width 8: "x"
    119                   RenderMathMLOperator {mo} at (9,1) size 20x12
    120                     RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    121                       RenderBlock (anonymous) at (0,0) size 12x12
    122                         RenderText at (0,-47) size 12x106
    123                           text run at (0,-47) width 12: "+"
    124                   RenderMathMLToken {mn} at (28,0) size 9x12
    125                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    126                       RenderBlock (anonymous) at (0,0) size 8x12
    127                         RenderText {#text} at (0,-46) size 8x106
    128                           text run at (0,-46) width 8: "2"
     91                RenderMathMLOperator {mo} at (9,1) size 20x12
     92                  RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     93                    RenderBlock (anonymous) at (0,0) size 12x12
     94                      RenderText at (0,-47) size 12x106
     95                        text run at (0,-47) width 12: "+"
     96                RenderMathMLToken {mn} at (28,0) size 9x12
     97                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     98                    RenderBlock (anonymous) at (0,0) size 8x12
     99                      RenderText {#text} at (0,-46) size 8x106
     100                        text run at (0,-46) width 8: "2"
    129101      RenderBlock {p} at (0,159) size 784x18
    130102        RenderText {#text} at (0,0) size 173x17
    131103          text run at (0,0) width 173: "cube root (should be blue): "
    132104        RenderMathMLMath {math} at (173,1) size 28x18 [color=#0000FF] [padding: 0 1 0 1]
    133           RenderMathMLRoot {mroot} at (1,0) size 26x18
    134             RenderMathMLRootWrapper at (4,0) size 6x18
    135               RenderMathMLToken {mn} at (0,0) size 5x7
    136                 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    137                   RenderBlock (anonymous) at (0,0) size 5x7
    138                     RenderText {#text} at (0,-27) size 5x61
    139                       text run at (0,-27) width 5: "3"
    140             RenderMathMLBlock (anonymous, flex) at (0,0) size 18x18
    141               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x18
    142                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    143                   RenderBlock (anonymous) at (0,0) size 13x17
    144                     RenderText at (0,-56) size 13x106
    145                       text run at (0,-56) width 13: "\x{221A}"
    146             RenderMathMLRootWrapper at (17,2) size 9x16
    147               RenderMathMLToken {mn} at (0,0) size 8x12
    148                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    149                   RenderBlock (anonymous) at (0,0) size 8x12
    150                     RenderText {#text} at (0,-46) size 8x106
    151                       text run at (0,-46) width 8: "2"
     105          RenderMathMLRoot {mroot} at (1,0) size 22x18
     106            RenderMathMLToken {mn} at (13,2) size 9x13
     107              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     108                RenderBlock (anonymous) at (0,0) size 8x12
     109                  RenderText {#text} at (0,-46) size 8x106
     110                    text run at (0,-46) width 8: "2"
     111            RenderMathMLToken {mn} at (4,0) size 6x8
     112              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     113                RenderBlock (anonymous) at (0,0) size 5x7
     114                  RenderText {#text} at (0,-27) size 5x61
     115                    text run at (0,-27) width 5: "3"
    152116      RenderBlock {p} at (0,193) size 784x18
    153117        RenderText {#text} at (0,0) size 75x17
    154118          text run at (0,0) width 75: "long index: "
    155119        RenderMathMLMath {math} at (75,0) size 62x19 [padding: 0 1 0 1]
    156           RenderMathMLRoot {mroot} at (1,0) size 60x19
    157             RenderMathMLRootWrapper at (4,0) size 40x19
    158               RenderMathMLRow {mrow} at (0,0) size 39x8
    159                 RenderMathMLToken {mi} at (0,2) size 6x5 [padding: 0 1 0 0]
     120          RenderMathMLRoot {mroot} at (1,0) size 56x19
     121            RenderMathMLToken {mn} at (47,2) size 9x13
     122              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     123                RenderBlock (anonymous) at (0,0) size 8x12
     124                  RenderText {#text} at (0,-46) size 8x106
     125                    text run at (0,-46) width 8: "2"
     126            RenderMathMLRow {mrow} at (4,0) size 40x8
     127              RenderMathMLToken {mi} at (0,2) size 6x5 [padding: 0 1 0 0]
     128                RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
     129                  RenderBlock (anonymous) at (0,0) size 5x5
     130                    RenderText {#text} at (0,-29) size 5x61
     131                      text run at (0,-29) width 5: "x"
     132              RenderMathMLOperator {mo} at (5,0) size 12x7
     133                RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
     134                  RenderBlock (anonymous) at (0,0) size 7x7
     135                    RenderText at (0,-27) size 7x61
     136                      text run at (0,-27) width 7: "+"
     137              RenderMathMLToken {mi} at (16,2) size 7x6 [padding: 0 1 0 0]
     138                RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
     139                  RenderBlock (anonymous) at (0,0) size 5x6
     140                    RenderText {#text} at (0,-29) size 5x61
     141                      text run at (0,-29) width 5: "y"
     142              RenderMathMLOperator {mo} at (22,0) size 12x7
     143                RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
     144                  RenderBlock (anonymous) at (0,0) size 7x7
     145                    RenderText at (0,-27) size 7x61
     146                      text run at (0,-27) width 7: "+"
     147              RenderMathMLToken {mi} at (33,2) size 6x5 [padding: 0 1 0 0]
     148                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     149                  RenderBlock (anonymous) at (0,0) size 4x5
     150                    RenderText {#text} at (0,-29) size 4x61
     151                      text run at (0,-29) width 4: "z"
     152      RenderBlock {p} at (0,227) size 784x40
     153        RenderText {#text} at (0,8) size 185x17
     154          text run at (0,8) width 185: "long index w/ complex base: "
     155        RenderMathMLMath {math} at (185,0) size 90x41 [padding: 0 1 0 1]
     156          RenderMathMLRoot {mroot} at (1,0) size 87x41
     157            RenderMathMLFraction {mfrac} at (50,2) size 37x34
     158              RenderMathMLRow {mrow} at (0,0) size 37x13
     159                RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
     160                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
     161                    RenderBlock (anonymous) at (0,0) size 8x8
     162                      RenderText {#text} at (0,-50) size 8x106
     163                        text run at (0,-50) width 8: "x"
     164                RenderMathMLOperator {mo} at (9,1) size 20x12
     165                  RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     166                    RenderBlock (anonymous) at (0,0) size 12x12
     167                      RenderText at (0,-47) size 12x106
     168                        text run at (0,-47) width 12: "+"
     169                RenderMathMLToken {mn} at (28,0) size 9x12
     170                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     171                    RenderBlock (anonymous) at (0,0) size 8x12
     172                      RenderText {#text} at (0,-46) size 8x106
     173                        text run at (0,-46) width 8: "1"
     174              RenderMathMLRow {mrow} at (0,20) size 37x14
     175                RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
     176                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
     177                    RenderBlock (anonymous) at (0,0) size 8x8
     178                      RenderText {#text} at (0,-50) size 8x106
     179                        text run at (0,-50) width 8: "x"
     180                RenderMathMLOperator {mo} at (9,1) size 20x12
     181                  RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     182                    RenderBlock (anonymous) at (0,0) size 12x12
     183                      RenderText at (0,-47) size 12x106
     184                        text run at (0,-47) width 12: "+"
     185                RenderMathMLToken {mn} at (28,0) size 9x12
     186                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     187                    RenderBlock (anonymous) at (0,0) size 8x12
     188                      RenderText {#text} at (0,-46) size 8x106
     189                        text run at (0,-46) width 8: "2"
     190            RenderMathMLRow {mrow} at (4,8) size 40x9
     191              RenderMathMLToken {mi} at (0,2) size 6x5 [padding: 0 1 0 0]
     192                RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
     193                  RenderBlock (anonymous) at (0,0) size 5x5
     194                    RenderText {#text} at (0,-29) size 5x61
     195                      text run at (0,-29) width 5: "x"
     196              RenderMathMLOperator {mo} at (5,0) size 12x7
     197                RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
     198                  RenderBlock (anonymous) at (0,0) size 7x7
     199                    RenderText at (0,-27) size 7x61
     200                      text run at (0,-27) width 7: "+"
     201              RenderMathMLToken {mi} at (16,2) size 7x6 [padding: 0 1 0 0]
     202                RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
     203                  RenderBlock (anonymous) at (0,0) size 5x6
     204                    RenderText {#text} at (0,-29) size 5x61
     205                      text run at (0,-29) width 5: "y"
     206              RenderMathMLOperator {mo} at (22,0) size 12x7
     207                RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
     208                  RenderBlock (anonymous) at (0,0) size 7x7
     209                    RenderText at (0,-27) size 7x61
     210                      text run at (0,-27) width 7: "+"
     211              RenderMathMLToken {mi} at (33,2) size 6x5 [padding: 0 1 0 0]
     212                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     213                  RenderBlock (anonymous) at (0,0) size 4x5
     214                    RenderText {#text} at (0,-29) size 4x61
     215                      text run at (0,-29) width 4: "z"
     216      RenderBlock {p} at (0,283) size 784x34
     217        RenderText {#text} at (0,16) size 75x17
     218          text run at (0,16) width 75: "high index: "
     219        RenderMathMLMath {math} at (75,0) size 29x35 [padding: 0 1 0 1]
     220          RenderMathMLRoot {mroot} at (1,0) size 23x35
     221            RenderMathMLToken {mn} at (14,18) size 9x13
     222              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     223                RenderBlock (anonymous) at (0,0) size 8x12
     224                  RenderText {#text} at (0,-46) size 8x106
     225                    text run at (0,-46) width 8: "2"
     226            RenderMathMLFraction {mfrac} at (4,0) size 7x24
     227              RenderMathMLFraction {mfrac} at (0,0) size 6x15
     228                RenderMathMLToken {mi} at (0,0) size 6x5 [padding: 0 1 0 0]
    160229                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
    161230                    RenderBlock (anonymous) at (0,0) size 5x5
    162231                      RenderText {#text} at (0,-29) size 5x61
    163232                        text run at (0,-29) width 5: "x"
    164                 RenderMathMLOperator {mo} at (5,0) size 12x7
    165                   RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
    166                     RenderBlock (anonymous) at (0,0) size 7x7
    167                       RenderText at (0,-27) size 7x61
    168                         text run at (0,-27) width 7: "+"
    169                 RenderMathMLToken {mi} at (16,2) size 7x6 [padding: 0 1 0 0]
     233                RenderMathMLToken {mi} at (0,8) size 6x7 [padding: 0 1 0 0]
    170234                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
    171235                    RenderBlock (anonymous) at (0,0) size 5x6
    172236                      RenderText {#text} at (0,-29) size 5x61
    173237                        text run at (0,-29) width 5: "y"
    174                 RenderMathMLOperator {mo} at (22,0) size 12x7
    175                   RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
    176                     RenderBlock (anonymous) at (0,0) size 7x7
    177                       RenderText at (0,-27) size 7x61
    178                         text run at (0,-27) width 7: "+"
    179                 RenderMathMLToken {mi} at (33,2) size 6x5 [padding: 0 1 0 0]
    180                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    181                     RenderBlock (anonymous) at (0,0) size 4x5
    182                       RenderText {#text} at (0,-29) size 4x61
    183                         text run at (0,-29) width 4: "z"
    184             RenderMathMLBlock (anonymous, flex) at (34,0) size 18x19
    185               RenderMathMLRadicalOperator (anonymous) at (0,1) size 17x18
    186                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    187                   RenderBlock (anonymous) at (0,0) size 13x17
    188                     RenderText at (0,-56) size 13x106
    189                       text run at (0,-56) width 13: "\x{221A}"
    190             RenderMathMLRootWrapper at (51,3) size 9x16
    191               RenderMathMLToken {mn} at (0,0) size 8x12
    192                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    193                   RenderBlock (anonymous) at (0,0) size 8x12
    194                     RenderText {#text} at (0,-46) size 8x106
    195                       text run at (0,-46) width 8: "2"
    196       RenderBlock {p} at (0,227) size 784x40
    197         RenderText {#text} at (0,8) size 185x17
    198           text run at (0,8) width 185: "long index w/ complex base: "
    199         RenderMathMLMath {math} at (185,0) size 90x41 [padding: 0 1 0 1]
    200           RenderMathMLRoot {mroot} at (1,0) size 88x41
    201             RenderMathMLRootWrapper at (4,6) size 40x35
    202               RenderMathMLRow {mrow} at (0,0) size 39x8
    203                 RenderMathMLToken {mi} at (0,2) size 6x5 [padding: 0 1 0 0]
    204                   RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
    205                     RenderBlock (anonymous) at (0,0) size 5x5
    206                       RenderText {#text} at (0,-29) size 5x61
    207                         text run at (0,-29) width 5: "x"
    208                 RenderMathMLOperator {mo} at (5,0) size 12x7
    209                   RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
    210                     RenderBlock (anonymous) at (0,0) size 7x7
    211                       RenderText at (0,-27) size 7x61
    212                         text run at (0,-27) width 7: "+"
    213                 RenderMathMLToken {mi} at (16,2) size 7x6 [padding: 0 1 0 0]
    214                   RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
    215                     RenderBlock (anonymous) at (0,0) size 5x6
    216                       RenderText {#text} at (0,-29) size 5x61
    217                         text run at (0,-29) width 5: "y"
    218                 RenderMathMLOperator {mo} at (22,0) size 12x7
    219                   RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
    220                     RenderBlock (anonymous) at (0,0) size 7x7
    221                       RenderText at (0,-27) size 7x61
    222                         text run at (0,-27) width 7: "+"
    223                 RenderMathMLToken {mi} at (33,2) size 6x5 [padding: 0 1 0 0]
    224                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    225                     RenderBlock (anonymous) at (0,0) size 4x5
    226                       RenderText {#text} at (0,-29) size 4x61
    227                         text run at (0,-29) width 4: "z"
    228             RenderMathMLBlock (anonymous, flex) at (34,0) size 18x41
    229               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x41
    230                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x40
    231                   RenderBlock (anonymous) at (0,0) size 13x40
    232                     RenderText at (0,-56) size 13x106
    233                       text run at (0,-56) width 13: "\x{221A}"
    234             RenderMathMLRootWrapper at (51,2) size 37x39
    235               RenderMathMLFraction {mfrac} at (0,0) size 37x34
    236                 RenderMathMLRow {mrow} at (0,0) size 37x13
    237                   RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
    238                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
    239                       RenderBlock (anonymous) at (0,0) size 8x8
    240                         RenderText {#text} at (0,-50) size 8x106
    241                           text run at (0,-50) width 8: "x"
    242                   RenderMathMLOperator {mo} at (9,1) size 20x12
    243                     RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    244                       RenderBlock (anonymous) at (0,0) size 12x12
    245                         RenderText at (0,-47) size 12x106
    246                           text run at (0,-47) width 12: "+"
    247                   RenderMathMLToken {mn} at (28,0) size 9x12
    248                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    249                       RenderBlock (anonymous) at (0,0) size 8x12
    250                         RenderText {#text} at (0,-46) size 8x106
    251                           text run at (0,-46) width 8: "1"
    252                 RenderMathMLRow {mrow} at (0,20) size 37x14
    253                   RenderMathMLToken {mi} at (0,4) size 10x8 [padding: 0 2 0 0]
    254                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x8
    255                       RenderBlock (anonymous) at (0,0) size 8x8
    256                         RenderText {#text} at (0,-50) size 8x106
    257                           text run at (0,-50) width 8: "x"
    258                   RenderMathMLOperator {mo} at (9,1) size 20x12
    259                     RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    260                       RenderBlock (anonymous) at (0,0) size 12x12
    261                         RenderText at (0,-47) size 12x106
    262                           text run at (0,-47) width 12: "+"
    263                   RenderMathMLToken {mn} at (28,0) size 9x12
    264                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    265                       RenderBlock (anonymous) at (0,0) size 8x12
    266                         RenderText {#text} at (0,-46) size 8x106
    267                           text run at (0,-46) width 8: "2"
    268       RenderBlock {p} at (0,283) size 784x34
    269         RenderText {#text} at (0,16) size 75x17
    270           text run at (0,16) width 75: "high index: "
    271         RenderMathMLMath {math} at (75,0) size 29x35 [padding: 0 1 0 1]
    272           RenderMathMLRoot {mroot} at (1,0) size 27x35
    273             RenderMathMLRootWrapper at (4,0) size 7x35
    274               RenderMathMLFraction {mfrac} at (0,0) size 6x24
    275                 RenderMathMLFraction {mfrac} at (0,0) size 6x15
    276                   RenderMathMLToken {mi} at (0,0) size 6x5 [padding: 0 1 0 0]
    277                     RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
    278                       RenderBlock (anonymous) at (0,0) size 5x5
    279                         RenderText {#text} at (0,-29) size 5x61
    280                           text run at (0,-29) width 5: "x"
    281                   RenderMathMLToken {mi} at (0,8) size 6x7 [padding: 0 1 0 0]
    282                     RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
    283                       RenderBlock (anonymous) at (0,0) size 5x6
    284                         RenderText {#text} at (0,-29) size 5x61
    285                           text run at (0,-29) width 5: "y"
    286                 RenderMathMLToken {mi} at (0,18) size 6x6 [padding: 0 1 0 0]
    287                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    288                     RenderBlock (anonymous) at (0,0) size 4x5
    289                       RenderText {#text} at (0,-29) size 4x61
    290                         text run at (0,-29) width 4: "z"
    291             RenderMathMLBlock (anonymous, flex) at (1,0) size 18x35
    292               RenderMathMLRadicalOperator (anonymous) at (0,17) size 17x18
    293                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    294                   RenderBlock (anonymous) at (0,0) size 13x17
    295                     RenderText at (0,-56) size 13x106
    296                       text run at (0,-56) width 13: "\x{221A}"
    297             RenderMathMLRootWrapper at (18,18) size 9x17
    298               RenderMathMLToken {mn} at (0,0) size 8x12
    299                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    300                   RenderBlock (anonymous) at (0,0) size 8x12
    301                     RenderText {#text} at (0,-46) size 8x106
    302                       text run at (0,-46) width 8: "2"
     238              RenderMathMLToken {mi} at (0,18) size 6x6 [padding: 0 1 0 0]
     239                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     240                  RenderBlock (anonymous) at (0,0) size 4x5
     241                    RenderText {#text} at (0,-29) size 4x61
     242                      text run at (0,-29) width 4: "z"
    303243      RenderBlock {p} at (0,333) size 784x54
    304244        RenderText {#text} at (0,14) size 155x17
    305245          text run at (0,14) width 155: "Imbricated square roots: "
    306246        RenderMathMLMath {math} at (155,0) size 342x55 [padding: 0 1 0 1]
    307           RenderMathMLSquareRoot {msqrt} at (1,0) size 340x55
    308             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x55
    309               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x55
    310                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x55
    311                   RenderBlock (anonymous) at (0,0) size 13x55
    312                     RenderText at (0,-56) size 13x106
    313                       text run at (0,-56) width 13: "\x{221A}"
    314             RenderMathMLRootWrapper at (17,2) size 323x53
    315               RenderMathMLToken {mn} at (0,15) size 8x12
    316                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    317                   RenderBlock (anonymous) at (0,0) size 8x12
    318                     RenderText {#text} at (0,-46) size 8x106
    319                       text run at (0,-46) width 8: "1"
    320               RenderMathMLOperator {mo} at (8,16) size 20x12
    321                 RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    322                   RenderBlock (anonymous) at (0,0) size 12x12
    323                     RenderText at (0,-47) size 12x106
    324                       text run at (0,-47) width 12: "+"
    325               RenderMathMLSquareRoot {msqrt} at (27,0) size 296x53
    326                 RenderMathMLBlock (anonymous, flex) at (0,0) size 17x53
    327                   RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x53
    328                     RenderMathMLBlock (anonymous, flex) at (0,0) size 13x53
    329                       RenderBlock (anonymous) at (0,0) size 13x53
    330                         RenderText at (0,-56) size 13x106
    331                           text run at (0,-56) width 13: "\x{221A}"
    332                 RenderMathMLRootWrapper at (17,2) size 279x51
    333                   RenderMathMLRow {mrow} at (0,0) size 279x51
    334                     RenderMathMLToken {mn} at (0,13) size 8x12
     247          RenderMathMLRoot {msqrt} at (1,0) size 332x55
     248            RenderMathMLToken {mn} at (17,17) size 8x13
     249              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     250                RenderBlock (anonymous) at (0,0) size 8x12
     251                  RenderText {#text} at (0,-46) size 8x106
     252                    text run at (0,-46) width 8: "1"
     253            RenderMathMLOperator {mo} at (25,18) size 20x13
     254              RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     255                RenderBlock (anonymous) at (0,0) size 12x12
     256                  RenderText at (0,-47) size 12x106
     257                    text run at (0,-47) width 12: "+"
     258            RenderMathMLRoot {msqrt} at (44,2) size 288x53
     259              RenderMathMLRow {mrow} at (17,2) size 271x51
     260                RenderMathMLToken {mn} at (0,13) size 8x12
     261                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     262                    RenderBlock (anonymous) at (0,0) size 8x12
     263                      RenderText {#text} at (0,-46) size 8x106
     264                        text run at (0,-46) width 8: "2"
     265                RenderMathMLOperator {mo} at (8,14) size 20x12
     266                  RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     267                    RenderBlock (anonymous) at (0,0) size 12x12
     268                      RenderText at (0,-47) size 12x106
     269                        text run at (0,-47) width 12: "+"
     270                RenderMathMLRoot {msqrt} at (27,0) size 244x51
     271                  RenderMathMLRow {mrow} at (17,2) size 227x49
     272                    RenderMathMLToken {mn} at (0,11) size 8x12
    335273                      RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    336274                        RenderBlock (anonymous) at (0,0) size 8x12
    337275                          RenderText {#text} at (0,-46) size 8x106
    338                             text run at (0,-46) width 8: "2"
    339                     RenderMathMLOperator {mo} at (8,14) size 20x12
     276                            text run at (0,-46) width 8: "3"
     277                    RenderMathMLOperator {mo} at (8,12) size 20x12
    340278                      RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    341279                        RenderBlock (anonymous) at (0,0) size 12x12
    342280                          RenderText at (0,-47) size 12x106
    343281                            text run at (0,-47) width 12: "+"
    344                     RenderMathMLSquareRoot {msqrt} at (27,0) size 252x51
    345                       RenderMathMLBlock (anonymous, flex) at (0,0) size 17x51
    346                         RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x51
    347                           RenderMathMLBlock (anonymous, flex) at (0,0) size 13x51
    348                             RenderBlock (anonymous) at (0,0) size 13x51
    349                               RenderText at (0,-56) size 13x106
    350                                 text run at (0,-56) width 13: "\x{221A}"
    351                       RenderMathMLRootWrapper at (17,2) size 235x49
    352                         RenderMathMLRow {mrow} at (0,0) size 235x49
    353                           RenderMathMLToken {mn} at (0,11) size 8x12
    354                             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    355                               RenderBlock (anonymous) at (0,0) size 8x12
    356                                 RenderText {#text} at (0,-46) size 8x106
    357                                   text run at (0,-46) width 8: "3"
    358                           RenderMathMLOperator {mo} at (8,12) size 20x12
    359                             RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    360                               RenderBlock (anonymous) at (0,0) size 12x12
    361                                 RenderText at (0,-47) size 12x106
    362                                   text run at (0,-47) width 12: "+"
    363                           RenderMathMLSquareRoot {msqrt} at (27,0) size 208x49
    364                             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x49
    365                               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x49
    366                                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x48
    367                                   RenderBlock (anonymous) at (0,0) size 13x48
    368                                     RenderText at (0,-56) size 13x106
    369                                       text run at (0,-56) width 13: "\x{221A}"
    370                             RenderMathMLRootWrapper at (17,2) size 190x47
    371                               RenderMathMLRow {mrow} at (0,0) size 190x41
    372                                 RenderMathMLToken {mn} at (0,9) size 8x12
     282                    RenderMathMLRoot {msqrt} at (27,0) size 200x49
     283                      RenderMathMLRow {mrow} at (16,2) size 183x41
     284                        RenderMathMLToken {mn} at (0,9) size 8x12
     285                          RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     286                            RenderBlock (anonymous) at (0,0) size 8x12
     287                              RenderText {#text} at (0,-46) size 8x106
     288                                text run at (0,-46) width 8: "4"
     289                        RenderMathMLOperator {mo} at (8,10) size 20x12
     290                          RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     291                            RenderBlock (anonymous) at (0,0) size 12x12
     292                              RenderText at (0,-47) size 12x106
     293                                text run at (0,-47) width 12: "+"
     294                        RenderMathMLRoot {msqrt} at (27,0) size 156x41
     295                          RenderMathMLRow {mrow} at (16,2) size 140x31
     296                            RenderMathMLToken {mn} at (0,7) size 8x12
     297                              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     298                                RenderBlock (anonymous) at (0,0) size 8x12
     299                                  RenderText {#text} at (0,-46) size 8x106
     300                                    text run at (0,-46) width 8: "5"
     301                            RenderMathMLOperator {mo} at (8,8) size 20x12
     302                              RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     303                                RenderBlock (anonymous) at (0,0) size 12x12
     304                                  RenderText at (0,-47) size 12x106
     305                                    text run at (0,-47) width 12: "+"
     306                            RenderMathMLRoot {msqrt} at (27,0) size 113x31
     307                              RenderMathMLRow {mrow} at (16,2) size 97x21
     308                                RenderMathMLToken {mn} at (0,5) size 8x12
    373309                                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    374310                                    RenderBlock (anonymous) at (0,0) size 8x12
    375311                                      RenderText {#text} at (0,-46) size 8x106
    376                                         text run at (0,-46) width 8: "4"
    377                                 RenderMathMLOperator {mo} at (8,10) size 20x12
     312                                        text run at (0,-46) width 8: "6"
     313                                RenderMathMLOperator {mo} at (8,6) size 20x12
    378314                                  RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    379315                                    RenderBlock (anonymous) at (0,0) size 12x12
    380316                                      RenderText at (0,-47) size 12x106
    381317                                        text run at (0,-47) width 12: "+"
    382                                 RenderMathMLSquareRoot {msqrt} at (27,0) size 163x41
    383                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 17x41
    384                                     RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x41
    385                                       RenderMathMLBlock (anonymous, flex) at (0,0) size 13x40
    386                                         RenderBlock (anonymous) at (0,0) size 13x40
    387                                           RenderText at (0,-56) size 13x106
    388                                             text run at (0,-56) width 13: "\x{221A}"
    389                                   RenderMathMLRootWrapper at (17,2) size 146x39
    390                                     RenderMathMLRow {mrow} at (0,0) size 146x31
    391                                       RenderMathMLToken {mn} at (0,7) size 8x12
    392                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    393                                           RenderBlock (anonymous) at (0,0) size 8x12
    394                                             RenderText {#text} at (0,-46) size 8x106
    395                                               text run at (0,-46) width 8: "5"
    396                                       RenderMathMLOperator {mo} at (8,8) size 20x12
    397                                         RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    398                                           RenderBlock (anonymous) at (0,0) size 12x12
    399                                             RenderText at (0,-47) size 12x106
    400                                               text run at (0,-47) width 12: "+"
    401                                       RenderMathMLSquareRoot {msqrt} at (27,0) size 119x31
    402                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 17x31
    403                                           RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x31
    404                                             RenderMathMLBlock (anonymous, flex) at (0,0) size 13x30
    405                                               RenderBlock (anonymous) at (0,0) size 13x30
    406                                                 RenderText at (0,-56) size 13x106
    407                                                   text run at (0,-56) width 13: "\x{221A}"
    408                                         RenderMathMLRootWrapper at (17,2) size 102x29
    409                                           RenderMathMLRow {mrow} at (0,0) size 102x21
    410                                             RenderMathMLToken {mn} at (0,5) size 8x12
    411                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    412                                                 RenderBlock (anonymous) at (0,0) size 8x12
    413                                                   RenderText {#text} at (0,-46) size 8x106
    414                                                     text run at (0,-46) width 8: "6"
    415                                             RenderMathMLOperator {mo} at (8,6) size 20x12
    416                                               RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    417                                                 RenderBlock (anonymous) at (0,0) size 12x12
    418                                                   RenderText at (0,-47) size 12x106
    419                                                     text run at (0,-47) width 12: "+"
    420                                             RenderMathMLSquareRoot {msqrt} at (27,0) size 75x21
    421                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 17x21
    422                                                 RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x21
    423                                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 13x20
    424                                                     RenderBlock (anonymous) at (0,0) size 13x20
    425                                                       RenderText at (0,-56) size 13x106
    426                                                         text run at (0,-56) width 13: "\x{221A}"
    427                                               RenderMathMLRootWrapper at (17,2) size 58x19
    428                                                 RenderMathMLRow {mrow} at (0,0) size 58x18
    429                                                   RenderMathMLToken {mn} at (0,3) size 8x12
    430                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    431                                                       RenderBlock (anonymous) at (0,0) size 8x12
    432                                                         RenderText {#text} at (0,-46) size 8x106
    433                                                           text run at (0,-46) width 8: "7"
    434                                                   RenderMathMLOperator {mo} at (8,4) size 20x12
    435                                                     RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    436                                                       RenderBlock (anonymous) at (0,0) size 12x12
    437                                                         RenderText at (0,-47) size 12x106
    438                                                           text run at (0,-47) width 12: "+"
    439                                                   RenderMathMLSquareRoot {msqrt} at (27,0) size 31x18
    440                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 17x18
    441                                                       RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x18
    442                                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    443                                                           RenderBlock (anonymous) at (0,0) size 13x17
    444                                                             RenderText at (0,-56) size 13x106
    445                                                               text run at (0,-56) width 13: "\x{221A}"
    446                                                     RenderMathMLRootWrapper at (17,2) size 14x16
    447                                                       RenderMathMLToken {mi} at (0,0) size 14x13 [padding: 0 2 0 0]
    448                                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 12x13
    449                                                           RenderBlock (anonymous) at (0,0) size 12x13
    450                                                             RenderText {#text} at (0,-45) size 12x106
    451                                                               text run at (0,-45) width 12: "A"
     318                                RenderMathMLRoot {msqrt} at (27,0) size 70x21
     319                                  RenderMathMLRow {mrow} at (16,2) size 54x18
     320                                    RenderMathMLToken {mn} at (0,3) size 8x12
     321                                      RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     322                                        RenderBlock (anonymous) at (0,0) size 8x12
     323                                          RenderText {#text} at (0,-46) size 8x106
     324                                            text run at (0,-46) width 8: "7"
     325                                    RenderMathMLOperator {mo} at (8,4) size 20x12
     326                                      RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     327                                        RenderBlock (anonymous) at (0,0) size 12x12
     328                                          RenderText at (0,-47) size 12x106
     329                                            text run at (0,-47) width 12: "+"
     330                                    RenderMathMLRoot {msqrt} at (27,0) size 27x18
     331                                      RenderMathMLToken {mi} at (13,2) size 14x14 [padding: 0 2 0 0]
     332                                        RenderMathMLBlock (anonymous, flex) at (0,0) size 12x13
     333                                          RenderBlock (anonymous) at (0,0) size 12x13
     334                                            RenderText {#text} at (0,-45) size 12x106
     335                                              text run at (0,-45) width 12: "A"
    452336        RenderText {#text} at (0,0) size 0x0
    453337      RenderBlock {p} at (0,403) size 784x56
     
    455339          text run at (0,24) width 110: "Imbricated roots: "
    456340        RenderMathMLMath {math} at (110,0) size 364x57 [padding: 0 1 0 1]
    457           RenderMathMLRoot {mroot} at (1,0) size 362x57
    458             RenderMathMLRootWrapper at (4,15) size 6x42
    459               RenderMathMLToken {mn} at (0,0) size 5x7
    460                 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    461                   RenderBlock (anonymous) at (0,0) size 5x7
    462                     RenderText {#text} at (0,-27) size 5x61
    463                       text run at (0,-27) width 5: "3"
    464             RenderMathMLBlock (anonymous, flex) at (0,0) size 18x57
    465               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x57
    466                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x57
    467                   RenderBlock (anonymous) at (0,0) size 13x57
    468                     RenderText at (0,-56) size 13x106
    469                       text run at (0,-56) width 13: "\x{221A}"
    470             RenderMathMLRootWrapper at (17,2) size 345x55
    471               RenderMathMLRow {mrow} at (0,0) size 344x55
    472                 RenderMathMLToken {mn} at (0,25) size 8x12
    473                   RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    474                     RenderBlock (anonymous) at (0,0) size 8x12
    475                       RenderText {#text} at (0,-46) size 8x106
    476                         text run at (0,-46) width 8: "1"
    477                 RenderMathMLOperator {mo} at (8,26) size 20x12
    478                   RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    479                     RenderBlock (anonymous) at (0,0) size 12x12
    480                       RenderText at (0,-47) size 12x106
    481                         text run at (0,-47) width 12: "+"
    482                 RenderMathMLRoot {mroot} at (27,0) size 317x55
    483                   RenderMathMLRootWrapper at (4,14) size 6x41
    484                     RenderMathMLToken {mn} at (0,0) size 5x8
    485                       RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    486                         RenderBlock (anonymous) at (0,0) size 5x8
    487                           RenderText {#text} at (0,-26) size 5x61
    488                             text run at (0,-26) width 5: "4"
    489                   RenderMathMLBlock (anonymous, flex) at (0,0) size 18x55
    490                     RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x55
    491                       RenderMathMLBlock (anonymous, flex) at (0,0) size 13x55
    492                         RenderBlock (anonymous) at (0,0) size 13x55
    493                           RenderText at (0,-56) size 13x106
    494                             text run at (0,-56) width 13: "\x{221A}"
    495                   RenderMathMLRootWrapper at (17,2) size 300x53
    496                     RenderMathMLRow {mrow} at (0,0) size 300x53
    497                       RenderMathMLToken {mn} at (0,23) size 8x12
     341          RenderMathMLRoot {mroot} at (1,0) size 355x57
     342            RenderMathMLRow {mrow} at (17,2) size 338x55
     343              RenderMathMLToken {mn} at (0,25) size 8x12
     344                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     345                  RenderBlock (anonymous) at (0,0) size 8x12
     346                    RenderText {#text} at (0,-46) size 8x106
     347                      text run at (0,-46) width 8: "1"
     348              RenderMathMLOperator {mo} at (8,26) size 20x12
     349                RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     350                  RenderBlock (anonymous) at (0,0) size 12x12
     351                    RenderText at (0,-47) size 12x106
     352                      text run at (0,-47) width 12: "+"
     353              RenderMathMLRoot {mroot} at (27,0) size 310x55
     354                RenderMathMLRow {mrow} at (17,2) size 293x53
     355                  RenderMathMLToken {mn} at (0,23) size 8x12
     356                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     357                      RenderBlock (anonymous) at (0,0) size 8x12
     358                        RenderText {#text} at (0,-46) size 8x106
     359                          text run at (0,-46) width 8: "2"
     360                  RenderMathMLOperator {mo} at (8,24) size 20x12
     361                    RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     362                      RenderBlock (anonymous) at (0,0) size 12x12
     363                        RenderText at (0,-47) size 12x106
     364                          text run at (0,-47) width 12: "+"
     365                  RenderMathMLRoot {mroot} at (27,0) size 266x53
     366                    RenderMathMLRow {mrow} at (17,2) size 249x51
     367                      RenderMathMLToken {mn} at (0,21) size 8x12
    498368                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    499369                          RenderBlock (anonymous) at (0,0) size 8x12
    500370                            RenderText {#text} at (0,-46) size 8x106
    501                               text run at (0,-46) width 8: "2"
    502                       RenderMathMLOperator {mo} at (8,24) size 20x12
     371                              text run at (0,-46) width 8: "3"
     372                      RenderMathMLOperator {mo} at (8,22) size 20x12
    503373                        RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    504374                          RenderBlock (anonymous) at (0,0) size 12x12
    505375                            RenderText at (0,-47) size 12x106
    506376                              text run at (0,-47) width 12: "+"
    507                       RenderMathMLRoot {mroot} at (27,0) size 273x53
    508                         RenderMathMLRootWrapper at (4,14) size 6x39
    509                           RenderMathMLToken {mn} at (0,0) size 5x7
    510                             RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    511                               RenderBlock (anonymous) at (0,0) size 5x7
    512                                 RenderText {#text} at (0,-27) size 5x61
    513                                   text run at (0,-27) width 5: "5"
    514                         RenderMathMLBlock (anonymous, flex) at (0,0) size 18x53
    515                           RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x53
    516                             RenderMathMLBlock (anonymous, flex) at (0,0) size 13x53
    517                               RenderBlock (anonymous) at (0,0) size 13x53
    518                                 RenderText at (0,-56) size 13x106
    519                                   text run at (0,-56) width 13: "\x{221A}"
    520                         RenderMathMLRootWrapper at (17,2) size 256x51
    521                           RenderMathMLRow {mrow} at (0,0) size 255x51
    522                             RenderMathMLToken {mn} at (0,21) size 8x12
    523                               RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    524                                 RenderBlock (anonymous) at (0,0) size 8x12
    525                                   RenderText {#text} at (0,-46) size 8x106
    526                                     text run at (0,-46) width 8: "3"
    527                             RenderMathMLOperator {mo} at (8,22) size 20x12
    528                               RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    529                                 RenderBlock (anonymous) at (0,0) size 12x12
    530                                   RenderText at (0,-47) size 12x106
    531                                     text run at (0,-47) width 12: "+"
    532                             RenderMathMLRoot {mroot} at (27,0) size 228x51
    533                               RenderMathMLRootWrapper at (4,13) size 6x38
    534                                 RenderMathMLToken {mn} at (0,0) size 5x7
    535                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    536                                     RenderBlock (anonymous) at (0,0) size 5x7
    537                                       RenderText {#text} at (0,-27) size 5x61
    538                                         text run at (0,-27) width 5: "6"
    539                               RenderMathMLBlock (anonymous, flex) at (0,0) size 18x51
    540                                 RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x51
    541                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 13x51
    542                                     RenderBlock (anonymous) at (0,0) size 13x51
    543                                       RenderText at (0,-56) size 13x106
    544                                         text run at (0,-56) width 13: "\x{221A}"
    545                               RenderMathMLRootWrapper at (17,2) size 211x49
    546                                 RenderMathMLRow {mrow} at (0,0) size 210x49
    547                                   RenderMathMLToken {mn} at (0,19) size 8x12
     377                      RenderMathMLRoot {mroot} at (27,0) size 221x51
     378                        RenderMathMLRow {mrow} at (17,2) size 204x49
     379                          RenderMathMLToken {mn} at (0,19) size 8x12
     380                            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     381                              RenderBlock (anonymous) at (0,0) size 8x12
     382                                RenderText {#text} at (0,-46) size 8x106
     383                                  text run at (0,-46) width 8: "4"
     384                          RenderMathMLOperator {mo} at (8,20) size 20x12
     385                            RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     386                              RenderBlock (anonymous) at (0,0) size 12x12
     387                                RenderText at (0,-47) size 12x106
     388                                  text run at (0,-47) width 12: "+"
     389                          RenderMathMLRoot {mroot} at (27,0) size 176x49
     390                            RenderMathMLRow {mrow} at (16,2) size 160x41
     391                              RenderMathMLToken {mn} at (0,17) size 8x12
     392                                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     393                                  RenderBlock (anonymous) at (0,0) size 8x12
     394                                    RenderText {#text} at (0,-46) size 8x106
     395                                      text run at (0,-46) width 8: "5"
     396                              RenderMathMLOperator {mo} at (8,18) size 20x12
     397                                RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     398                                  RenderBlock (anonymous) at (0,0) size 12x12
     399                                    RenderText at (0,-47) size 12x106
     400                                      text run at (0,-47) width 12: "+"
     401                              RenderMathMLRoot {mroot} at (27,0) size 133x41
     402                                RenderMathMLRow {mrow} at (16,2) size 117x31
     403                                  RenderMathMLToken {mn} at (0,15) size 8x12
    548404                                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    549405                                      RenderBlock (anonymous) at (0,0) size 8x12
    550406                                        RenderText {#text} at (0,-46) size 8x106
    551                                           text run at (0,-46) width 8: "4"
    552                                   RenderMathMLOperator {mo} at (8,20) size 20x12
     407                                          text run at (0,-46) width 8: "6"
     408                                  RenderMathMLOperator {mo} at (8,16) size 20x12
    553409                                    RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    554410                                      RenderBlock (anonymous) at (0,0) size 12x12
    555411                                        RenderText at (0,-47) size 12x106
    556412                                          text run at (0,-47) width 12: "+"
    557                                   RenderMathMLRoot {mroot} at (27,0) size 183x49
    558                                     RenderMathMLRootWrapper at (4,9) size 6x40
    559                                       RenderMathMLToken {mn} at (0,0) size 5x8
    560                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    561                                           RenderBlock (anonymous) at (0,0) size 5x8
    562                                             RenderText {#text} at (0,-26) size 5x61
    563                                               text run at (0,-26) width 5: "7"
    564                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 18x49
    565                                       RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x49
    566                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 13x48
    567                                           RenderBlock (anonymous) at (0,0) size 13x48
    568                                             RenderText at (0,-56) size 13x106
    569                                               text run at (0,-56) width 13: "\x{221A}"
    570                                     RenderMathMLRootWrapper at (17,2) size 166x47
    571                                       RenderMathMLRow {mrow} at (0,0) size 166x41
    572                                         RenderMathMLToken {mn} at (0,17) size 8x12
    573                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    574                                             RenderBlock (anonymous) at (0,0) size 8x12
    575                                               RenderText {#text} at (0,-46) size 8x106
    576                                                 text run at (0,-46) width 8: "5"
    577                                         RenderMathMLOperator {mo} at (8,18) size 20x12
    578                                           RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    579                                             RenderBlock (anonymous) at (0,0) size 12x12
    580                                               RenderText at (0,-47) size 12x106
    581                                                 text run at (0,-47) width 12: "+"
    582                                         RenderMathMLRoot {mroot} at (27,0) size 139x41
    583                                           RenderMathMLRootWrapper at (4,6) size 6x35
    584                                             RenderMathMLToken {mn} at (0,0) size 5x7
    585                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    586                                                 RenderBlock (anonymous) at (0,0) size 5x7
    587                                                   RenderText {#text} at (0,-27) size 5x61
    588                                                     text run at (0,-27) width 5: "8"
    589                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 18x41
    590                                             RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x41
    591                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 13x40
    592                                                 RenderBlock (anonymous) at (0,0) size 13x40
    593                                                   RenderText at (0,-56) size 13x106
    594                                                     text run at (0,-56) width 13: "\x{221A}"
    595                                           RenderMathMLRootWrapper at (17,2) size 122x39
    596                                             RenderMathMLRow {mrow} at (0,0) size 121x31
    597                                               RenderMathMLToken {mn} at (0,15) size 8x12
    598                                                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    599                                                   RenderBlock (anonymous) at (0,0) size 8x12
    600                                                     RenderText {#text} at (0,-46) size 8x106
    601                                                       text run at (0,-46) width 8: "6"
    602                                               RenderMathMLOperator {mo} at (8,16) size 20x12
    603                                                 RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    604                                                   RenderBlock (anonymous) at (0,0) size 12x12
    605                                                     RenderText at (0,-47) size 12x106
    606                                                       text run at (0,-47) width 12: "+"
    607                                               RenderMathMLRoot {mroot} at (27,0) size 94x31
    608                                                 RenderMathMLRootWrapper at (4,4) size 6x27
    609                                                   RenderMathMLToken {mn} at (0,0) size 5x7
    610                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    611                                                       RenderBlock (anonymous) at (0,0) size 5x7
    612                                                         RenderText {#text} at (0,-27) size 5x61
    613                                                           text run at (0,-27) width 5: "9"
    614                                                 RenderMathMLBlock (anonymous, flex) at (0,0) size 18x31
    615                                                   RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x31
    616                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 13x30
    617                                                       RenderBlock (anonymous) at (0,0) size 13x30
    618                                                         RenderText at (0,-56) size 13x106
    619                                                           text run at (0,-56) width 13: "\x{221A}"
    620                                                 RenderMathMLRootWrapper at (17,2) size 77x29
    621                                                   RenderMathMLRow {mrow} at (0,0) size 77x28
    622                                                     RenderMathMLToken {mn} at (0,13) size 8x12
    623                                                       RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    624                                                         RenderBlock (anonymous) at (0,0) size 8x12
    625                                                           RenderText {#text} at (0,-46) size 8x106
    626                                                             text run at (0,-46) width 8: "7"
    627                                                     RenderMathMLOperator {mo} at (8,14) size 20x12
    628                                                       RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
    629                                                         RenderBlock (anonymous) at (0,0) size 12x12
    630                                                           RenderText at (0,-47) size 12x106
    631                                                             text run at (0,-47) width 12: "+"
    632                                                     RenderMathMLRoot {mroot} at (27,0) size 50x28
    633                                                       RenderMathMLRootWrapper at (4,0) size 24x28
    634                                                         RenderMathMLFraction {mfrac} at (0,0) size 23x17
    635                                                           RenderMathMLRow {mrow} at (0,0) size 23x8
    636                                                             RenderMathMLToken {mi} at (0,2) size 6x5 [padding: 0 1 0 0]
    637                                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
    638                                                                 RenderBlock (anonymous) at (0,0) size 5x5
    639                                                                   RenderText {#text} at (0,-29) size 5x61
    640                                                                     text run at (0,-29) width 5: "x"
    641                                                             RenderMathMLOperator {mo} at (5,0) size 12x7
    642                                                               RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
    643                                                                 RenderBlock (anonymous) at (0,0) size 7x7
    644                                                                   RenderText at (0,-27) size 7x61
    645                                                                     text run at (0,-27) width 7: "+"
    646                                                             RenderMathMLToken {mi} at (16,2) size 7x6 [padding: 0 1 0 0]
    647                                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
    648                                                                 RenderBlock (anonymous) at (0,0) size 5x6
    649                                                                   RenderText {#text} at (0,-29) size 5x61
    650                                                                     text run at (0,-29) width 5: "y"
    651                                                           RenderMathMLToken {mi} at (8,11) size 6x6 [padding: 0 1 0 0]
    652                                                             RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    653                                                               RenderBlock (anonymous) at (0,0) size 4x5
    654                                                                 RenderText {#text} at (0,-29) size 4x61
    655                                                                   text run at (0,-29) width 4: "z"
    656                                                       RenderMathMLBlock (anonymous, flex) at (18,0) size 18x28
    657                                                         RenderMathMLRadicalOperator (anonymous) at (0,10) size 17x18
    658                                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
    659                                                             RenderBlock (anonymous) at (0,0) size 13x17
    660                                                               RenderText at (0,-56) size 13x106
    661                                                                 text run at (0,-56) width 13: "\x{221A}"
    662                                                       RenderMathMLRootWrapper at (35,11) size 14x17
    663                                                         RenderMathMLToken {mi} at (0,0) size 14x13 [padding: 0 2 0 0]
    664                                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 12x13
    665                                                             RenderBlock (anonymous) at (0,0) size 12x13
    666                                                               RenderText {#text} at (0,-45) size 12x106
    667                                                                 text run at (0,-45) width 12: "A"
     413                                  RenderMathMLRoot {mroot} at (27,0) size 89x31
     414                                    RenderMathMLRow {mrow} at (16,2) size 73x28
     415                                      RenderMathMLToken {mn} at (0,13) size 8x12
     416                                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     417                                          RenderBlock (anonymous) at (0,0) size 8x12
     418                                            RenderText {#text} at (0,-46) size 8x106
     419                                              text run at (0,-46) width 8: "7"
     420                                      RenderMathMLOperator {mo} at (8,14) size 20x12
     421                                        RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     422                                          RenderBlock (anonymous) at (0,0) size 12x12
     423                                            RenderText at (0,-47) size 12x106
     424                                              text run at (0,-47) width 12: "+"
     425                                      RenderMathMLRoot {mroot} at (27,0) size 46x28
     426                                        RenderMathMLToken {mi} at (31,11) size 14x14 [padding: 0 2 0 0]
     427                                          RenderMathMLBlock (anonymous, flex) at (0,0) size 12x13
     428                                            RenderBlock (anonymous) at (0,0) size 12x13
     429                                              RenderText {#text} at (0,-45) size 12x106
     430                                                text run at (0,-45) width 12: "A"
     431                                        RenderMathMLFraction {mfrac} at (4,0) size 24x17
     432                                          RenderMathMLRow {mrow} at (0,0) size 23x8
     433                                            RenderMathMLToken {mi} at (0,2) size 6x5 [padding: 0 1 0 0]
     434                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
     435                                                RenderBlock (anonymous) at (0,0) size 5x5
     436                                                  RenderText {#text} at (0,-29) size 5x61
     437                                                    text run at (0,-29) width 5: "x"
     438                                            RenderMathMLOperator {mo} at (5,0) size 12x7
     439                                              RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
     440                                                RenderBlock (anonymous) at (0,0) size 7x7
     441                                                  RenderText at (0,-27) size 7x61
     442                                                    text run at (0,-27) width 7: "+"
     443                                            RenderMathMLToken {mi} at (16,2) size 7x6 [padding: 0 1 0 0]
     444                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
     445                                                RenderBlock (anonymous) at (0,0) size 5x6
     446                                                  RenderText {#text} at (0,-29) size 5x61
     447                                                    text run at (0,-29) width 5: "y"
     448                                          RenderMathMLToken {mi} at (8,11) size 6x6 [padding: 0 1 0 0]
     449                                            RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     450                                              RenderBlock (anonymous) at (0,0) size 4x5
     451                                                RenderText {#text} at (0,-29) size 4x61
     452                                                  text run at (0,-29) width 4: "z"
     453                                    RenderMathMLToken {mn} at (4,5) size 6x8
     454                                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     455                                        RenderBlock (anonymous) at (0,0) size 5x7
     456                                          RenderText {#text} at (0,-27) size 5x61
     457                                            text run at (0,-27) width 5: "9"
     458                                RenderMathMLToken {mn} at (4,9) size 6x8
     459                                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     460                                    RenderBlock (anonymous) at (0,0) size 5x7
     461                                      RenderText {#text} at (0,-27) size 5x61
     462                                        text run at (0,-27) width 5: "8"
     463                            RenderMathMLToken {mn} at (4,11) size 6x9
     464                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     465                                RenderBlock (anonymous) at (0,0) size 5x8
     466                                  RenderText {#text} at (0,-26) size 5x61
     467                                    text run at (0,-26) width 5: "7"
     468                        RenderMathMLToken {mn} at (4,14) size 6x8
     469                          RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     470                            RenderBlock (anonymous) at (0,0) size 5x7
     471                              RenderText {#text} at (0,-27) size 5x61
     472                                text run at (0,-27) width 5: "6"
     473                    RenderMathMLToken {mn} at (4,15) size 6x8
     474                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     475                        RenderBlock (anonymous) at (0,0) size 5x7
     476                          RenderText {#text} at (0,-27) size 5x61
     477                            text run at (0,-27) width 5: "5"
     478                RenderMathMLToken {mn} at (4,15) size 6x9
     479                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     480                    RenderBlock (anonymous) at (0,0) size 5x8
     481                      RenderText {#text} at (0,-26) size 5x61
     482                        text run at (0,-26) width 5: "4"
     483            RenderMathMLToken {mn} at (4,16) size 6x8
     484              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     485                RenderBlock (anonymous) at (0,0) size 5x7
     486                  RenderText {#text} at (0,-27) size 5x61
     487                    text run at (0,-27) width 5: "3"
    668488        RenderText {#text} at (0,0) size 0x0
     489      RenderBlock {p} at (0,475) size 784x56
     490        RenderText {#text} at (0,24) size 74x17
     491          text run at (0,24) width 74: "RTL roots: "
     492        RenderMathMLMath {math} at (74,0) size 364x57 [padding: 0 1 0 1]
     493          RenderMathMLRoot {mroot} at (8,0) size 355x57
     494            RenderMathMLRow {mrow} at (0,2) size 337x55
     495              RenderMathMLToken {mn} at (328,25) size 9x12
     496                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     497                  RenderBlock (anonymous) at (0,0) size 8x12
     498                    RenderText {#text} at (0,-46) size 8x106
     499                      text run at (0,-46) width 8: "1"
     500              RenderMathMLOperator {mo} at (309,26) size 20x12
     501                RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     502                  RenderBlock (anonymous) at (0,0) size 12x12
     503                    RenderText at (0,-47) size 12x106
     504                      text run at (0,-47) width 12 RTL: "+"
     505              RenderMathMLRoot {mroot} at (0,0) size 310x55
     506                RenderMathMLRow {mrow} at (0,2) size 293x53
     507                  RenderMathMLToken {mn} at (284,23) size 9x12
     508                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     509                      RenderBlock (anonymous) at (0,0) size 8x12
     510                        RenderText {#text} at (0,-46) size 8x106
     511                          text run at (0,-46) width 8: "2"
     512                  RenderMathMLOperator {mo} at (265,24) size 20x12
     513                    RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     514                      RenderBlock (anonymous) at (0,0) size 12x12
     515                        RenderText at (0,-47) size 12x106
     516                          text run at (0,-47) width 12 RTL: "+"
     517                  RenderMathMLRoot {mroot} at (0,0) size 266x53
     518                    RenderMathMLRow {mrow} at (0,2) size 248x51
     519                      RenderMathMLToken {mn} at (239,21) size 9x12
     520                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     521                          RenderBlock (anonymous) at (0,0) size 8x12
     522                            RenderText {#text} at (0,-46) size 8x106
     523                              text run at (0,-46) width 8: "3"
     524                      RenderMathMLOperator {mo} at (220,22) size 20x12
     525                        RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     526                          RenderBlock (anonymous) at (0,0) size 12x12
     527                            RenderText at (0,-47) size 12x106
     528                              text run at (0,-47) width 12 RTL: "+"
     529                      RenderMathMLRoot {mroot} at (0,0) size 221x51
     530                        RenderMathMLRow {mrow} at (0,2) size 203x49
     531                          RenderMathMLToken {mn} at (194,19) size 9x12
     532                            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     533                              RenderBlock (anonymous) at (0,0) size 8x12
     534                                RenderText {#text} at (0,-46) size 8x106
     535                                  text run at (0,-46) width 8: "4"
     536                          RenderMathMLOperator {mo} at (175,20) size 20x12
     537                            RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     538                              RenderBlock (anonymous) at (0,0) size 12x12
     539                                RenderText at (0,-47) size 12x106
     540                                  text run at (0,-47) width 12 RTL: "+"
     541                          RenderMathMLRoot {mroot} at (0,0) size 176x49
     542                            RenderMathMLRow {mrow} at (0,2) size 160x41
     543                              RenderMathMLToken {mn} at (151,17) size 9x12
     544                                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     545                                  RenderBlock (anonymous) at (0,0) size 8x12
     546                                    RenderText {#text} at (0,-46) size 8x106
     547                                      text run at (0,-46) width 8: "5"
     548                              RenderMathMLOperator {mo} at (132,18) size 20x12
     549                                RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     550                                  RenderBlock (anonymous) at (0,0) size 12x12
     551                                    RenderText at (0,-47) size 12x106
     552                                      text run at (0,-47) width 12 RTL: "+"
     553                              RenderMathMLRoot {mroot} at (0,0) size 133x41
     554                                RenderMathMLRow {mrow} at (0,2) size 116x31
     555                                  RenderMathMLToken {mn} at (107,15) size 9x12
     556                                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     557                                      RenderBlock (anonymous) at (0,0) size 8x12
     558                                        RenderText {#text} at (0,-46) size 8x106
     559                                          text run at (0,-46) width 8: "6"
     560                                  RenderMathMLOperator {mo} at (88,16) size 20x12
     561                                    RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     562                                      RenderBlock (anonymous) at (0,0) size 12x12
     563                                        RenderText at (0,-47) size 12x106
     564                                          text run at (0,-47) width 12 RTL: "+"
     565                                  RenderMathMLRoot {mroot} at (0,0) size 89x31
     566                                    RenderMathMLRow {mrow} at (0,2) size 73x28
     567                                      RenderMathMLToken {mn} at (64,13) size 9x12
     568                                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     569                                          RenderBlock (anonymous) at (0,0) size 8x12
     570                                            RenderText {#text} at (0,-46) size 8x106
     571                                              text run at (0,-46) width 8: "7"
     572                                      RenderMathMLOperator {mo} at (44,14) size 21x12
     573                                        RenderMathMLBlock (anonymous, flex) at (3,0) size 13x12
     574                                          RenderBlock (anonymous) at (0,0) size 12x12
     575                                            RenderText at (0,-47) size 12x106
     576                                              text run at (0,-47) width 12 RTL: "+"
     577                                      RenderMathMLRoot {mroot} at (0,0) size 45x28
     578                                        RenderMathMLToken {mi} at (0,11) size 14x14 [padding: 0 0 0 2]
     579                                          RenderMathMLBlock (anonymous, flex) at (1,0) size 13x13
     580                                            RenderBlock (anonymous) at (0,0) size 12x13
     581                                              RenderText {#text} at (0,-45) size 12x106
     582                                                text run at (0,-45) width 12: "A"
     583                                        RenderMathMLFraction {mfrac} at (17,0) size 24x17
     584                                          RenderMathMLRow {mrow} at (0,0) size 23x8
     585                                            RenderMathMLToken {mi} at (16,2) size 7x5 [padding: 0 0 0 1]
     586                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 6x5
     587                                                RenderBlock (anonymous) at (0,0) size 5x5
     588                                                  RenderText {#text} at (0,-29) size 5x61
     589                                                    text run at (0,-29) width 5: "x"
     590                                            RenderMathMLOperator {mo} at (5,0) size 12x7
     591                                              RenderMathMLBlock (anonymous, flex) at (2,0) size 7x7
     592                                                RenderBlock (anonymous) at (0,0) size 7x7
     593                                                  RenderText at (0,-27) size 7x61
     594                                                    text run at (0,-27) width 7 RTL: "+"
     595                                            RenderMathMLToken {mi} at (0,2) size 6x6 [padding: 0 0 0 1]
     596                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 6x6
     597                                                RenderBlock (anonymous) at (0,0) size 5x6
     598                                                  RenderText {#text} at (0,-29) size 5x61
     599                                                    text run at (0,-29) width 5: "y"
     600                                          RenderMathMLToken {mi} at (8,11) size 6x6 [padding: 0 0 0 1]
     601                                            RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
     602                                              RenderBlock (anonymous) at (0,0) size 4x5
     603                                                RenderText {#text} at (0,-29) size 4x61
     604                                                  text run at (0,-29) width 4: "z"
     605                                    RenderMathMLToken {mn} at (79,5) size 6x8
     606                                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     607                                        RenderBlock (anonymous) at (0,0) size 5x7
     608                                          RenderText {#text} at (0,-27) size 5x61
     609                                            text run at (0,-27) width 5: "9"
     610                                RenderMathMLToken {mn} at (122,9) size 6x8
     611                                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     612                                    RenderBlock (anonymous) at (0,0) size 5x7
     613                                      RenderText {#text} at (0,-27) size 5x61
     614                                        text run at (0,-27) width 5: "8"
     615                            RenderMathMLToken {mn} at (166,11) size 6x9
     616                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     617                                RenderBlock (anonymous) at (0,0) size 5x8
     618                                  RenderText {#text} at (0,-26) size 5x61
     619                                    text run at (0,-26) width 5: "7"
     620                        RenderMathMLToken {mn} at (211,14) size 6x8
     621                          RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     622                            RenderBlock (anonymous) at (0,0) size 5x7
     623                              RenderText {#text} at (0,-27) size 5x61
     624                                text run at (0,-27) width 5: "6"
     625                    RenderMathMLToken {mn} at (255,15) size 6x8
     626                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     627                        RenderBlock (anonymous) at (0,0) size 5x7
     628                          RenderText {#text} at (0,-27) size 5x61
     629                            text run at (0,-27) width 5: "5"
     630                RenderMathMLToken {mn} at (300,15) size 6x9
     631                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     632                    RenderBlock (anonymous) at (0,0) size 5x8
     633                      RenderText {#text} at (0,-26) size 5x61
     634                        text run at (0,-26) width 5: "4"
     635            RenderMathMLToken {mn} at (344,16) size 6x8
     636              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     637                RenderBlock (anonymous) at (0,0) size 5x7
     638                  RenderText {#text} at (0,-27) size 5x61
     639                    text run at (0,-27) width 5: "3"
     640        RenderText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/gtk/mathml/radical-fallback-expected.txt

    r202161 r202168  
    88          text run at (0,70) width 132: "Large LTR radicals: "
    99        RenderMathMLMath {math} at (132,0) size 28x85 [padding: 0 1 0 1]
    10           RenderMathMLSquareRoot {msqrt} at (1,2) size 17x83
    11             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x83
    12               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x83
    13                 RenderMathMLBlock (anonymous, flex) at (0,0) size 13x82
    14                   RenderBlock (anonymous) at (0,0) size 13x82
    15                     RenderText at (0,-56) size 13x106
    16                       text run at (0,-56) width 13: "\x{221A}"
    17             RenderMathMLRootWrapper at (17,2) size 0x81
    18               RenderMathMLSpace {mspace} at (0,0) size 0x80
    19           RenderMathMLSquareRoot {msqrt} at (18,0) size 9x84
    20             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    21               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    22                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    23                   RenderBlock (anonymous) at (0,0) size 9x83
    24                     RenderText at (0,-1) size 9x17
    25                       text run at (0,-1) width 9: "\x{221A}"
    26             RenderMathMLRootWrapper at (9,3) size 0x81
    27               RenderMathMLSpace {mspace} at (0,0) size 0x80
     10          RenderMathMLRoot {msqrt} at (1,2) size 17x83
     11            RenderMathMLSpace {mspace} at (17,2) size 0x81
     12          RenderMathMLRoot {msqrt} at (18,0) size 9x84
     13            RenderMathMLSpace {mspace} at (9,3) size 0x81
    2814        RenderText {#text} at (0,0) size 0x0
    2915      RenderBlock {P} at (0,103) size 784x87
     
    3117          text run at (0,70) width 132: "Large RTL radicals: "
    3218        RenderMathMLMath {math} at (132,0) size 28x85 [padding: 0 1 0 1]
    33           RenderMathMLSquareRoot {msqrt} at (10,2) size 17x83
    34             RenderMathMLBlock (anonymous, flex) at (0,0) size 17x83
    35               RenderMathMLRadicalOperator (anonymous) at (0,0) size 17x83
    36                 RenderMathMLBlock (anonymous, flex) at (4,0) size 13x82
    37                   RenderBlock (anonymous) at (0,0) size 13x82
    38                     RenderText at (0,-56) size 13x106
    39                       text run at (0,-56) width 13 RTL: "\x{221A}"
    40             RenderMathMLRootWrapper at (0,2) size 0x81
    41               RenderMathMLSpace {mspace} at (0,0) size 0x80
    42           RenderMathMLSquareRoot {msqrt} at (1,0) size 9x84
    43             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    44               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    45                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    46                   RenderBlock (anonymous) at (0,0) size 9x83
    47                     RenderText at (0,-1) size 9x17
    48                       text run at (0,-1) width 9 RTL: "\x{221A}"
    49             RenderMathMLRootWrapper at (0,3) size 0x81
    50               RenderMathMLSpace {mspace} at (0,0) size 0x80
     19          RenderMathMLRoot {msqrt} at (10,2) size 17x83
     20            RenderMathMLSpace {mspace} at (0,2) size 0x81
     21          RenderMathMLRoot {msqrt} at (1,0) size 9x84
     22            RenderMathMLSpace {mspace} at (0,3) size 0x81
    5123        RenderText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/ios-simulator/mathml/presentation/roots-expected.txt

    r202161 r202168  
    11layer at (0,0) size 800x600
    22  RenderView at (0,0) size 800x600
    3 layer at (0,0) size 800x492
    4   RenderBlock {html} at (0,0) size 800x492
    5     RenderBody {body} at (8,16) size 784x460
     3layer at (0,0) size 800x561
     4  RenderBlock {html} at (0,0) size 800x561
     5    RenderBody {body} at (8,16) size 784x529
    66      RenderBlock {p} at (0,0) size 784x20
    77        RenderText {#text} at (0,0) size 181x19
    88          text run at (0,0) width 181: "square root (should be red): "
    9         RenderMathMLMath {math} at (180,0) size 20x17 [padding: 0 1 0 1]
    10           RenderMathMLSquareRoot {msqrt} at (1,0) size 17x17 [color=#FF0000]
    11             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x17
    12               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x17
    13                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    14                   RenderBlock (anonymous) at (0,0) size 9x16
    15                     RenderText at (0,1) size 9x17
    16                       text run at (0,1) width 9: "\x{221A}"
    17             RenderMathMLRootWrapper at (8,3) size 9x14
    18               RenderMathMLToken {mn} at (0,0) size 8x12
     9        RenderMathMLMath {math} at (180,0) size 20x16 [padding: 0 1 0 1]
     10          RenderMathMLRoot {msqrt} at (1,0) size 17x16 [color=#FF0000]
     11            RenderMathMLToken {mn} at (8,3) size 9x13
     12              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     13                RenderBlock (anonymous) at (0,0) size 8x12
     14                  RenderText {#text} at (0,-1) size 8x17
     15                    text run at (0,-1) width 8: "2"
     16      RenderBlock {p} at (0,36) size 784x20
     17        RenderText {#text} at (0,0) size 113x19
     18          text run at (0,0) width 113: "long square root: "
     19        RenderMathMLMath {math} at (112,0) size 44x16 [padding: 0 1 0 1]
     20          RenderMathMLRoot {msqrt} at (1,0) size 42x16
     21            RenderMathMLRow {mrow} at (8,3) size 34x13
     22              RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
     23                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
     24                  RenderBlock (anonymous) at (0,0) size 8x9
     25                    RenderText {#text} at (0,-4) size 8x17
     26                      text run at (0,-4) width 8: "x"
     27              RenderMathMLOperator {mo} at (8,3) size 17x9
     28                RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     29                  RenderBlock (anonymous) at (0,0) size 9x9
     30                    RenderText at (0,-4) size 9x17
     31                      text run at (0,-4) width 9: "+"
     32              RenderMathMLToken {mn} at (24,0) size 9x12
    1933                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    2034                  RenderBlock (anonymous) at (0,0) size 8x12
    2135                    RenderText {#text} at (0,-1) size 8x17
    22                       text run at (0,-1) width 8: "2"
    23       RenderBlock {p} at (0,36) size 784x20
    24         RenderText {#text} at (0,0) size 113x19
    25           text run at (0,0) width 113: "long square root: "
    26         RenderMathMLMath {math} at (112,0) size 44x17 [padding: 0 1 0 1]
    27           RenderMathMLSquareRoot {msqrt} at (1,0) size 42x17
    28             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x17
    29               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x17
    30                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    31                   RenderBlock (anonymous) at (0,0) size 9x16
    32                     RenderText at (0,1) size 9x17
    33                       text run at (0,1) width 9: "\x{221A}"
    34             RenderMathMLRootWrapper at (8,3) size 34x14
     36                      text run at (0,-1) width 8: "1"
     37      RenderBlock {p} at (0,72) size 784x25
     38        RenderText {#text} at (0,5) size 227x19
     39          text run at (0,5) width 227: "long square root with implied row: "
     40        RenderMathMLMath {math} at (226,0) size 54x22 [padding: 0 1 0 1]
     41          RenderMathMLRoot {msqrt} at (1,0) size 51x22
     42            RenderMathMLScripts {msup} at (8,3) size 19x19
     43              RenderMathMLToken {mi} at (0,8) size 9x10 [padding: 0 2 0 0]
     44                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
     45                  RenderBlock (anonymous) at (0,0) size 8x9
     46                    RenderText {#text} at (0,-4) size 8x17
     47                      text run at (0,-4) width 8: "x"
     48              RenderMathMLToken {mn} at (8,0) size 7x10
     49                RenderMathMLBlock (anonymous, flex) at (0,0) size 6x10
     50                  RenderBlock (anonymous) at (0,0) size 6x10
     51                    RenderText {#text} at (0,0) size 6x13
     52                      text run at (0,0) width 6: "2"
     53            RenderMathMLOperator {mo} at (26,11) size 17x10
     54              RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     55                RenderBlock (anonymous) at (0,0) size 9x9
     56                  RenderText at (0,-4) size 9x17
     57                    text run at (0,-4) width 9: "+"
     58            RenderMathMLToken {mn} at (42,8) size 9x13
     59              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     60                RenderBlock (anonymous) at (0,0) size 8x12
     61                  RenderText {#text} at (0,-1) size 8x17
     62                    text run at (0,-1) width 8: "1"
     63      RenderBlock {p} at (0,113) size 784x34
     64        RenderText {#text} at (0,8) size 117x19
     65          text run at (0,8) width 117: "root of a fraction: "
     66        RenderMathMLMath {math} at (116,0) size 44x35 [padding: 0 1 0 1]
     67          RenderMathMLRoot {msqrt} at (1,0) size 42x35
     68            RenderMathMLFraction {mfrac} at (8,3) size 34x32
    3569              RenderMathMLRow {mrow} at (0,0) size 33x12
    3670                RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
     
    4983                      RenderText {#text} at (0,-1) size 8x17
    5084                        text run at (0,-1) width 8: "1"
    51       RenderBlock {p} at (0,72) size 784x25
    52         RenderText {#text} at (0,5) size 227x19
    53           text run at (0,5) width 227: "long square root with implied row: "
    54         RenderMathMLMath {math} at (226,0) size 54x22 [padding: 0 1 0 1]
    55           RenderMathMLSquareRoot {msqrt} at (1,0) size 51x22
    56             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x22
    57               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x22
    58                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x21
    59                   RenderBlock (anonymous) at (0,0) size 9x21
    60                     RenderText at (0,1) size 9x17
    61                       text run at (0,1) width 9: "\x{221A}"
    62             RenderMathMLRootWrapper at (8,3) size 43x19
    63               RenderMathMLScripts {msup} at (0,0) size 18x18
    64                 RenderMathMLToken {mi} at (0,8) size 9x10 [padding: 0 2 0 0]
     85              RenderMathMLRow {mrow} at (0,19) size 33x13
     86                RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
    6587                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
    6688                    RenderBlock (anonymous) at (0,0) size 8x9
    6789                      RenderText {#text} at (0,-4) size 8x17
    6890                        text run at (0,-4) width 8: "x"
    69                 RenderMathMLToken {mn} at (8,0) size 7x10
    70                   RenderMathMLBlock (anonymous, flex) at (0,0) size 6x10
    71                     RenderBlock (anonymous) at (0,0) size 6x10
    72                       RenderText {#text} at (0,0) size 6x13
    73                         text run at (0,0) width 6: "2"
    74               RenderMathMLOperator {mo} at (17,8) size 17x9
     91                RenderMathMLOperator {mo} at (8,3) size 17x9
     92                  RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     93                    RenderBlock (anonymous) at (0,0) size 9x9
     94                      RenderText at (0,-4) size 9x17
     95                        text run at (0,-4) width 9: "+"
     96                RenderMathMLToken {mn} at (24,0) size 9x12
     97                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     98                    RenderBlock (anonymous) at (0,0) size 8x12
     99                      RenderText {#text} at (0,-1) size 8x17
     100                        text run at (0,-1) width 8: "2"
     101      RenderBlock {p} at (0,163) size 784x20
     102        RenderText {#text} at (0,0) size 177x19
     103          text run at (0,0) width 177: "cube root (should be blue): "
     104        RenderMathMLMath {math} at (176,0) size 20x16 [color=#0000FF] [padding: 0 1 0 1]
     105          RenderMathMLRoot {mroot} at (1,0) size 17x16
     106            RenderMathMLToken {mn} at (8,3) size 9x13
     107              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     108                RenderBlock (anonymous) at (0,0) size 8x12
     109                  RenderText {#text} at (0,-1) size 8x17
     110                    text run at (0,-1) width 8: "2"
     111            RenderMathMLToken {mn} at (4,0) size 5x8
     112              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     113                RenderBlock (anonymous) at (0,0) size 5x8
     114                  RenderText {#text} at (0,0) size 5x10
     115                    text run at (0,0) width 5: "3"
     116      RenderBlock {p} at (0,199) size 784x20
     117        RenderText {#text} at (0,0) size 77x19
     118          text run at (0,0) width 77: "long index: "
     119        RenderMathMLMath {math} at (76,0) size 47x16 [padding: 0 1 0 1]
     120          RenderMathMLRoot {mroot} at (1,0) size 45x16
     121            RenderMathMLToken {mn} at (36,3) size 9x13
     122              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     123                RenderBlock (anonymous) at (0,0) size 8x12
     124                  RenderText {#text} at (0,-1) size 8x17
     125                    text run at (0,-1) width 8: "2"
     126            RenderMathMLRow {mrow} at (4,0) size 33x8
     127              RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0]
     128                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     129                  RenderBlock (anonymous) at (0,0) size 4x5
     130                    RenderText {#text} at (0,-3) size 4x10
     131                      text run at (0,-3) width 4: "x"
     132              RenderMathMLOperator {mo} at (4,0) size 10x6
     133                RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
     134                  RenderBlock (anonymous) at (0,0) size 5x6
     135                    RenderText at (0,-2) size 5x10
     136                      text run at (0,-2) width 5: "+"
     137              RenderMathMLToken {mi} at (13,1) size 6x6 [padding: 0 1 0 0]
     138                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
     139                  RenderBlock (anonymous) at (0,0) size 4x6
     140                    RenderText {#text} at (0,-3) size 4x10
     141                      text run at (0,-3) width 4: "y"
     142              RenderMathMLOperator {mo} at (18,0) size 10x6
     143                RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
     144                  RenderBlock (anonymous) at (0,0) size 5x6
     145                    RenderText at (0,-2) size 5x10
     146                      text run at (0,-2) width 5: "+"
     147              RenderMathMLToken {mi} at (27,1) size 6x5 [padding: 0 1 0 0]
     148                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     149                  RenderBlock (anonymous) at (0,0) size 4x5
     150                    RenderText {#text} at (0,-3) size 4x10
     151                      text run at (0,-3) width 4: "z"
     152      RenderBlock {p} at (0,235) size 784x34
     153        RenderText {#text} at (0,8) size 188x19
     154          text run at (0,8) width 188: "long index w/ complex base: "
     155        RenderMathMLMath {math} at (187,0) size 72x35 [padding: 0 1 0 1]
     156          RenderMathMLRoot {mroot} at (1,0) size 70x35
     157            RenderMathMLFraction {mfrac} at (36,3) size 34x32
     158              RenderMathMLRow {mrow} at (0,0) size 33x12
     159                RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
     160                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
     161                    RenderBlock (anonymous) at (0,0) size 8x9
     162                      RenderText {#text} at (0,-4) size 8x17
     163                        text run at (0,-4) width 8: "x"
     164                RenderMathMLOperator {mo} at (8,3) size 17x9
     165                  RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     166                    RenderBlock (anonymous) at (0,0) size 9x9
     167                      RenderText at (0,-4) size 9x17
     168                        text run at (0,-4) width 9: "+"
     169                RenderMathMLToken {mn} at (24,0) size 9x12
     170                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     171                    RenderBlock (anonymous) at (0,0) size 8x12
     172                      RenderText {#text} at (0,-1) size 8x17
     173                        text run at (0,-1) width 8: "1"
     174              RenderMathMLRow {mrow} at (0,19) size 33x13
     175                RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
     176                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
     177                    RenderBlock (anonymous) at (0,0) size 8x9
     178                      RenderText {#text} at (0,-4) size 8x17
     179                        text run at (0,-4) width 8: "x"
     180                RenderMathMLOperator {mo} at (8,3) size 17x9
     181                  RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     182                    RenderBlock (anonymous) at (0,0) size 9x9
     183                      RenderText at (0,-4) size 9x17
     184                        text run at (0,-4) width 9: "+"
     185                RenderMathMLToken {mn} at (24,0) size 9x12
     186                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     187                    RenderBlock (anonymous) at (0,0) size 8x12
     188                      RenderText {#text} at (0,-1) size 8x17
     189                        text run at (0,-1) width 8: "2"
     190            RenderMathMLRow {mrow} at (4,9) size 33x8
     191              RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0]
     192                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     193                  RenderBlock (anonymous) at (0,0) size 4x5
     194                    RenderText {#text} at (0,-3) size 4x10
     195                      text run at (0,-3) width 4: "x"
     196              RenderMathMLOperator {mo} at (4,0) size 10x6
     197                RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
     198                  RenderBlock (anonymous) at (0,0) size 5x6
     199                    RenderText at (0,-2) size 5x10
     200                      text run at (0,-2) width 5: "+"
     201              RenderMathMLToken {mi} at (13,1) size 6x6 [padding: 0 1 0 0]
     202                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
     203                  RenderBlock (anonymous) at (0,0) size 4x6
     204                    RenderText {#text} at (0,-3) size 4x10
     205                      text run at (0,-3) width 4: "y"
     206              RenderMathMLOperator {mo} at (18,0) size 10x6
     207                RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
     208                  RenderBlock (anonymous) at (0,0) size 5x6
     209                    RenderText at (0,-2) size 5x10
     210                      text run at (0,-2) width 5: "+"
     211              RenderMathMLToken {mi} at (27,1) size 6x5 [padding: 0 1 0 0]
     212                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     213                  RenderBlock (anonymous) at (0,0) size 4x5
     214                    RenderText {#text} at (0,-3) size 4x10
     215                      text run at (0,-3) width 4: "z"
     216      RenderBlock {p} at (0,285) size 784x36
     217        RenderText {#text} at (0,16) size 77x19
     218          text run at (0,16) width 77: "high index: "
     219        RenderMathMLMath {math} at (76,0) size 20x33 [padding: 0 1 0 1]
     220          RenderMathMLRoot {mroot} at (1,0) size 18x33
     221            RenderMathMLToken {mn} at (9,20) size 9x13
     222              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     223                RenderBlock (anonymous) at (0,0) size 8x12
     224                  RenderText {#text} at (0,-1) size 8x17
     225                    text run at (0,-1) width 8: "2"
     226            RenderMathMLFraction {mfrac} at (4,0) size 6x25
     227              RenderMathMLFraction {mfrac} at (0,0) size 5x16
     228                RenderMathMLToken {mi} at (0,0) size 5x5 [padding: 0 1 0 0]
     229                  RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     230                    RenderBlock (anonymous) at (0,0) size 4x5
     231                      RenderText {#text} at (0,-3) size 4x10
     232                        text run at (0,-3) width 4: "x"
     233                RenderMathMLToken {mi} at (0,9) size 5x7 [padding: 0 1 0 0]
     234                  RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
     235                    RenderBlock (anonymous) at (0,0) size 4x6
     236                      RenderText {#text} at (0,-3) size 4x10
     237                        text run at (0,-3) width 4: "y"
     238              RenderMathMLToken {mi} at (0,19) size 5x6 [padding: 0 1 0 0]
     239                RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     240                  RenderBlock (anonymous) at (0,0) size 4x5
     241                    RenderText {#text} at (0,-3) size 4x10
     242                      text run at (0,-3) width 4: "z"
     243      RenderBlock {p} at (0,337) size 784x48
     244        RenderText {#text} at (0,28) size 160x19
     245          text run at (0,28) width 160: "Imbricated square roots: "
     246        RenderMathMLMath {math} at (159,0) size 252x44 [padding: 0 1 0 1]
     247          RenderMathMLRoot {msqrt} at (1,0) size 249x44
     248            RenderMathMLToken {mn} at (8,31) size 9x13
     249              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     250                RenderBlock (anonymous) at (0,0) size 8x12
     251                  RenderText {#text} at (0,-1) size 8x17
     252                    text run at (0,-1) width 8: "1"
     253            RenderMathMLOperator {mo} at (16,34) size 17x10
     254              RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     255                RenderBlock (anonymous) at (0,0) size 9x9
     256                  RenderText at (0,-4) size 9x17
     257                    text run at (0,-4) width 9: "+"
     258            RenderMathMLRoot {msqrt} at (32,3) size 217x41
     259              RenderMathMLRow {mrow} at (8,3) size 209x37
     260                RenderMathMLToken {mn} at (0,24) size 8x12
     261                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     262                    RenderBlock (anonymous) at (0,0) size 8x12
     263                      RenderText {#text} at (0,-1) size 8x17
     264                        text run at (0,-1) width 8: "2"
     265                RenderMathMLOperator {mo} at (8,27) size 16x9
     266                  RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     267                    RenderBlock (anonymous) at (0,0) size 9x9
     268                      RenderText at (0,-4) size 9x17
     269                        text run at (0,-4) width 9: "+"
     270                RenderMathMLRoot {msqrt} at (23,0) size 185x36
     271                  RenderMathMLRow {mrow} at (8,3) size 176x33
     272                    RenderMathMLToken {mn} at (0,20) size 8x12
     273                      RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     274                        RenderBlock (anonymous) at (0,0) size 8x12
     275                          RenderText {#text} at (0,-1) size 8x17
     276                            text run at (0,-1) width 8: "3"
     277                    RenderMathMLOperator {mo} at (8,23) size 16x9
     278                      RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     279                        RenderBlock (anonymous) at (0,0) size 9x9
     280                          RenderText at (0,-4) size 9x17
     281                            text run at (0,-4) width 9: "+"
     282                    RenderMathMLRoot {msqrt} at (23,0) size 152x32
     283                      RenderMathMLRow {mrow} at (8,3) size 143x29
     284                        RenderMathMLToken {mn} at (0,16) size 8x12
     285                          RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     286                            RenderBlock (anonymous) at (0,0) size 8x12
     287                              RenderText {#text} at (0,-1) size 8x17
     288                                text run at (0,-1) width 8: "4"
     289                        RenderMathMLOperator {mo} at (8,19) size 16x9
     290                          RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     291                            RenderBlock (anonymous) at (0,0) size 9x9
     292                              RenderText at (0,-4) size 9x17
     293                                text run at (0,-4) width 9: "+"
     294                        RenderMathMLRoot {msqrt} at (23,0) size 119x28
     295                          RenderMathMLRow {mrow} at (8,3) size 111x25
     296                            RenderMathMLToken {mn} at (0,12) size 8x12
     297                              RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     298                                RenderBlock (anonymous) at (0,0) size 8x12
     299                                  RenderText {#text} at (0,-1) size 8x17
     300                                    text run at (0,-1) width 8: "5"
     301                            RenderMathMLOperator {mo} at (8,15) size 16x9
     302                              RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     303                                RenderBlock (anonymous) at (0,0) size 9x9
     304                                  RenderText at (0,-4) size 9x17
     305                                    text run at (0,-4) width 9: "+"
     306                            RenderMathMLRoot {msqrt} at (23,0) size 87x24
     307                              RenderMathMLRow {mrow} at (8,3) size 78x21
     308                                RenderMathMLToken {mn} at (0,8) size 8x12
     309                                  RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     310                                    RenderBlock (anonymous) at (0,0) size 8x12
     311                                      RenderText {#text} at (0,-1) size 8x17
     312                                        text run at (0,-1) width 8: "6"
     313                                RenderMathMLOperator {mo} at (8,11) size 16x9
     314                                  RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     315                                    RenderBlock (anonymous) at (0,0) size 9x9
     316                                      RenderText at (0,-4) size 9x17
     317                                        text run at (0,-4) width 9: "+"
     318                                RenderMathMLRoot {msqrt} at (23,0) size 54x20
     319                                  RenderMathMLRow {mrow} at (8,3) size 45x17
     320                                    RenderMathMLToken {mn} at (0,4) size 8x12
     321                                      RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     322                                        RenderBlock (anonymous) at (0,0) size 8x12
     323                                          RenderText {#text} at (0,-1) size 8x17
     324                                            text run at (0,-1) width 8: "7"
     325                                    RenderMathMLOperator {mo} at (8,7) size 16x9
     326                                      RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     327                                        RenderBlock (anonymous) at (0,0) size 9x9
     328                                          RenderText at (0,-4) size 9x17
     329                                            text run at (0,-4) width 9: "+"
     330                                    RenderMathMLRoot {msqrt} at (23,0) size 22x16
     331                                      RenderMathMLToken {mi} at (8,3) size 13x13 [padding: 0 2 0 0]
     332                                        RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12
     333                                          RenderBlock (anonymous) at (0,0) size 10x12
     334                                            RenderText {#text} at (0,-1) size 10x17
     335                                              text run at (0,-1) width 10: "A"
     336        RenderText {#text} at (0,0) size 0x0
     337      RenderBlock {p} at (0,401) size 784x56
     338        RenderText {#text} at (0,36) size 114x19
     339          text run at (0,36) width 114: "Imbricated roots: "
     340        RenderMathMLMath {math} at (113,0) size 267x52 [padding: 0 1 0 1]
     341          RenderMathMLRoot {mroot} at (1,0) size 264x52
     342            RenderMathMLRow {mrow} at (8,3) size 256x49
     343              RenderMathMLToken {mn} at (0,36) size 8x12
     344                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     345                  RenderBlock (anonymous) at (0,0) size 8x12
     346                    RenderText {#text} at (0,-1) size 8x17
     347                      text run at (0,-1) width 8: "1"
     348              RenderMathMLOperator {mo} at (8,39) size 16x9
    75349                RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    76350                  RenderBlock (anonymous) at (0,0) size 9x9
    77351                    RenderText at (0,-4) size 9x17
    78352                      text run at (0,-4) width 9: "+"
    79               RenderMathMLToken {mn} at (33,5) size 9x12
    80                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    81                   RenderBlock (anonymous) at (0,0) size 8x12
    82                     RenderText {#text} at (0,-1) size 8x17
    83                       text run at (0,-1) width 8: "1"
    84       RenderBlock {p} at (0,113) size 784x34
    85         RenderText {#text} at (0,8) size 117x19
    86           text run at (0,8) width 117: "root of a fraction: "
    87         RenderMathMLMath {math} at (116,0) size 44x35 [padding: 0 1 0 1]
    88           RenderMathMLSquareRoot {msqrt} at (1,0) size 42x35
    89             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x35
    90               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x35
    91                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x35
    92                   RenderBlock (anonymous) at (0,0) size 9x35
    93                     RenderText at (0,1) size 9x17
    94                       text run at (0,1) width 9: "\x{221A}"
    95             RenderMathMLRootWrapper at (8,3) size 34x32
    96               RenderMathMLFraction {mfrac} at (0,0) size 33x32
    97                 RenderMathMLRow {mrow} at (0,0) size 33x12
    98                   RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
    99                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
    100                       RenderBlock (anonymous) at (0,0) size 8x9
    101                         RenderText {#text} at (0,-4) size 8x17
    102                           text run at (0,-4) width 8: "x"
    103                   RenderMathMLOperator {mo} at (8,3) size 17x9
     353              RenderMathMLRoot {mroot} at (23,0) size 232x48
     354                RenderMathMLRow {mrow} at (8,3) size 223x45
     355                  RenderMathMLToken {mn} at (0,32) size 8x12
     356                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     357                      RenderBlock (anonymous) at (0,0) size 8x12
     358                        RenderText {#text} at (0,-1) size 8x17
     359                          text run at (0,-1) width 8: "2"
     360                  RenderMathMLOperator {mo} at (8,35) size 16x9
    104361                    RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    105362                      RenderBlock (anonymous) at (0,0) size 9x9
    106363                        RenderText at (0,-4) size 9x17
    107364                          text run at (0,-4) width 9: "+"
    108                   RenderMathMLToken {mn} at (24,0) size 9x12
    109                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    110                       RenderBlock (anonymous) at (0,0) size 8x12
    111                         RenderText {#text} at (0,-1) size 8x17
    112                           text run at (0,-1) width 8: "1"
    113                 RenderMathMLRow {mrow} at (0,19) size 33x13
    114                   RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
    115                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
    116                       RenderBlock (anonymous) at (0,0) size 8x9
    117                         RenderText {#text} at (0,-4) size 8x17
    118                           text run at (0,-4) width 8: "x"
    119                   RenderMathMLOperator {mo} at (8,3) size 17x9
    120                     RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    121                       RenderBlock (anonymous) at (0,0) size 9x9
    122                         RenderText at (0,-4) size 9x17
    123                           text run at (0,-4) width 9: "+"
    124                   RenderMathMLToken {mn} at (24,0) size 9x12
    125                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    126                       RenderBlock (anonymous) at (0,0) size 8x12
    127                         RenderText {#text} at (0,-1) size 8x17
    128                           text run at (0,-1) width 8: "2"
    129       RenderBlock {p} at (0,163) size 784x21
    130         RenderText {#text} at (0,1) size 177x19
    131           text run at (0,1) width 177: "cube root (should be blue): "
    132         RenderMathMLMath {math} at (176,0) size 20x18 [color=#0000FF] [padding: 0 1 0 1]
    133           RenderMathMLRoot {mroot} at (1,0) size 17x18
    134             RenderMathMLRootWrapper at (4,0) size 5x18
    135               RenderMathMLToken {mn} at (0,0) size 5x8
    136                 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    137                   RenderBlock (anonymous) at (0,0) size 5x8
    138                     RenderText {#text} at (0,0) size 5x10
    139                       text run at (0,0) width 5: "3"
    140             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x18
    141               RenderMathMLRadicalOperator (anonymous) at (0,1) size 9x17
    142                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    143                   RenderBlock (anonymous) at (0,0) size 9x16
    144                     RenderText at (0,1) size 9x17
    145                       text run at (0,1) width 9: "\x{221A}"
    146             RenderMathMLRootWrapper at (8,4) size 9x14
    147               RenderMathMLToken {mn} at (0,0) size 8x12
    148                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    149                   RenderBlock (anonymous) at (0,0) size 8x12
    150                     RenderText {#text} at (0,-1) size 8x17
    151                       text run at (0,-1) width 8: "2"
    152       RenderBlock {p} at (0,200) size 784x20
    153         RenderText {#text} at (0,0) size 77x19
    154           text run at (0,0) width 77: "long index: "
    155         RenderMathMLMath {math} at (76,0) size 47x17 [padding: 0 1 0 1]
    156           RenderMathMLRoot {mroot} at (1,0) size 45x17
    157             RenderMathMLRootWrapper at (4,0) size 33x17
    158               RenderMathMLRow {mrow} at (0,0) size 33x7
    159                 RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0]
    160                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    161                     RenderBlock (anonymous) at (0,0) size 4x5
    162                       RenderText {#text} at (0,-3) size 4x10
    163                         text run at (0,-3) width 4: "x"
    164                 RenderMathMLOperator {mo} at (4,0) size 10x6
    165                   RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
    166                     RenderBlock (anonymous) at (0,0) size 5x6
    167                       RenderText at (0,-2) size 5x10
    168                         text run at (0,-2) width 5: "+"
    169                 RenderMathMLToken {mi} at (13,1) size 6x6 [padding: 0 1 0 0]
    170                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
    171                     RenderBlock (anonymous) at (0,0) size 4x6
    172                       RenderText {#text} at (0,-3) size 4x10
    173                         text run at (0,-3) width 4: "y"
    174                 RenderMathMLOperator {mo} at (18,0) size 10x6
    175                   RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
    176                     RenderBlock (anonymous) at (0,0) size 5x6
    177                       RenderText at (0,-2) size 5x10
    178                         text run at (0,-2) width 5: "+"
    179                 RenderMathMLToken {mi} at (27,1) size 6x5 [padding: 0 1 0 0]
    180                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    181                     RenderBlock (anonymous) at (0,0) size 4x5
    182                       RenderText {#text} at (0,-3) size 4x10
    183                         text run at (0,-3) width 4: "z"
    184             RenderMathMLBlock (anonymous, flex) at (27,0) size 10x17
    185               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x17
    186                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    187                   RenderBlock (anonymous) at (0,0) size 9x16
    188                     RenderText at (0,1) size 9x17
    189                       text run at (0,1) width 9: "\x{221A}"
    190             RenderMathMLRootWrapper at (36,3) size 9x14
    191               RenderMathMLToken {mn} at (0,0) size 8x12
    192                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    193                   RenderBlock (anonymous) at (0,0) size 8x12
    194                     RenderText {#text} at (0,-1) size 8x17
    195                       text run at (0,-1) width 8: "2"
    196       RenderBlock {p} at (0,236) size 784x34
    197         RenderText {#text} at (0,8) size 188x19
    198           text run at (0,8) width 188: "long index w/ complex base: "
    199         RenderMathMLMath {math} at (187,0) size 72x35 [padding: 0 1 0 1]
    200           RenderMathMLRoot {mroot} at (1,0) size 70x35
    201             RenderMathMLRootWrapper at (4,7) size 33x28
    202               RenderMathMLRow {mrow} at (0,0) size 33x7
    203                 RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0]
    204                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    205                     RenderBlock (anonymous) at (0,0) size 4x5
    206                       RenderText {#text} at (0,-3) size 4x10
    207                         text run at (0,-3) width 4: "x"
    208                 RenderMathMLOperator {mo} at (4,0) size 10x6
    209                   RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
    210                     RenderBlock (anonymous) at (0,0) size 5x6
    211                       RenderText at (0,-2) size 5x10
    212                         text run at (0,-2) width 5: "+"
    213                 RenderMathMLToken {mi} at (13,1) size 6x6 [padding: 0 1 0 0]
    214                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
    215                     RenderBlock (anonymous) at (0,0) size 4x6
    216                       RenderText {#text} at (0,-3) size 4x10
    217                         text run at (0,-3) width 4: "y"
    218                 RenderMathMLOperator {mo} at (18,0) size 10x6
    219                   RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
    220                     RenderBlock (anonymous) at (0,0) size 5x6
    221                       RenderText at (0,-2) size 5x10
    222                         text run at (0,-2) width 5: "+"
    223                 RenderMathMLToken {mi} at (27,1) size 6x5 [padding: 0 1 0 0]
    224                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    225                     RenderBlock (anonymous) at (0,0) size 4x5
    226                       RenderText {#text} at (0,-3) size 4x10
    227                         text run at (0,-3) width 4: "z"
    228             RenderMathMLBlock (anonymous, flex) at (27,0) size 10x35
    229               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x35
    230                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x35
    231                   RenderBlock (anonymous) at (0,0) size 9x35
    232                     RenderText at (0,1) size 9x17
    233                       text run at (0,1) width 9: "\x{221A}"
    234             RenderMathMLRootWrapper at (36,3) size 34x32
    235               RenderMathMLFraction {mfrac} at (0,0) size 33x32
    236                 RenderMathMLRow {mrow} at (0,0) size 33x12
    237                   RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
    238                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
    239                       RenderBlock (anonymous) at (0,0) size 8x9
    240                         RenderText {#text} at (0,-4) size 8x17
    241                           text run at (0,-4) width 8: "x"
    242                   RenderMathMLOperator {mo} at (8,3) size 17x9
    243                     RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    244                       RenderBlock (anonymous) at (0,0) size 9x9
    245                         RenderText at (0,-4) size 9x17
    246                           text run at (0,-4) width 9: "+"
    247                   RenderMathMLToken {mn} at (24,0) size 9x12
    248                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    249                       RenderBlock (anonymous) at (0,0) size 8x12
    250                         RenderText {#text} at (0,-1) size 8x17
    251                           text run at (0,-1) width 8: "1"
    252                 RenderMathMLRow {mrow} at (0,19) size 33x13
    253                   RenderMathMLToken {mi} at (0,3) size 9x9 [padding: 0 2 0 0]
    254                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x9
    255                       RenderBlock (anonymous) at (0,0) size 8x9
    256                         RenderText {#text} at (0,-4) size 8x17
    257                           text run at (0,-4) width 8: "x"
    258                   RenderMathMLOperator {mo} at (8,3) size 17x9
    259                     RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    260                       RenderBlock (anonymous) at (0,0) size 9x9
    261                         RenderText at (0,-4) size 9x17
    262                           text run at (0,-4) width 9: "+"
    263                   RenderMathMLToken {mn} at (24,0) size 9x12
    264                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    265                       RenderBlock (anonymous) at (0,0) size 8x12
    266                         RenderText {#text} at (0,-1) size 8x17
    267                           text run at (0,-1) width 8: "2"
    268       RenderBlock {p} at (0,286) size 784x37
    269         RenderText {#text} at (0,17) size 77x19
    270           text run at (0,17) width 77: "high index: "
    271         RenderMathMLMath {math} at (76,0) size 20x34 [padding: 0 1 0 1]
    272           RenderMathMLRoot {mroot} at (1,0) size 18x34
    273             RenderMathMLRootWrapper at (4,0) size 6x34
    274               RenderMathMLFraction {mfrac} at (0,0) size 5x25
    275                 RenderMathMLFraction {mfrac} at (0,0) size 5x16
    276                   RenderMathMLToken {mi} at (0,0) size 5x5 [padding: 0 1 0 0]
    277                     RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    278                       RenderBlock (anonymous) at (0,0) size 4x5
    279                         RenderText {#text} at (0,-3) size 4x10
    280                           text run at (0,-3) width 4: "x"
    281                   RenderMathMLToken {mi} at (0,9) size 5x7 [padding: 0 1 0 0]
    282                     RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
    283                       RenderBlock (anonymous) at (0,0) size 4x6
    284                         RenderText {#text} at (0,-3) size 4x10
    285                           text run at (0,-3) width 4: "y"
    286                 RenderMathMLToken {mi} at (0,19) size 5x6 [padding: 0 1 0 0]
    287                   RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    288                     RenderBlock (anonymous) at (0,0) size 4x5
    289                       RenderText {#text} at (0,-3) size 4x10
    290                         text run at (0,-3) width 4: "z"
    291             RenderMathMLBlock (anonymous, flex) at (0,0) size 10x34
    292               RenderMathMLRadicalOperator (anonymous) at (0,17) size 9x17
    293                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    294                   RenderBlock (anonymous) at (0,0) size 9x16
    295                     RenderText at (0,1) size 9x17
    296                       text run at (0,1) width 9: "\x{221A}"
    297             RenderMathMLRootWrapper at (9,20) size 9x14
    298               RenderMathMLToken {mn} at (0,0) size 8x12
    299                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    300                   RenderBlock (anonymous) at (0,0) size 8x12
    301                     RenderText {#text} at (0,-1) size 8x17
    302                       text run at (0,-1) width 8: "2"
    303       RenderBlock {p} at (0,339) size 784x48
    304         RenderText {#text} at (0,28) size 160x19
    305           text run at (0,28) width 160: "Imbricated square roots: "
    306         RenderMathMLMath {math} at (159,0) size 252x44 [padding: 0 1 0 1]
    307           RenderMathMLSquareRoot {msqrt} at (1,0) size 249x44
    308             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x44
    309               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x44
    310                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x43
    311                   RenderBlock (anonymous) at (0,0) size 9x43
    312                     RenderText at (0,1) size 9x17
    313                       text run at (0,1) width 9: "\x{221A}"
    314             RenderMathMLRootWrapper at (8,3) size 241x41
    315               RenderMathMLToken {mn} at (0,28) size 8x12
    316                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    317                   RenderBlock (anonymous) at (0,0) size 8x12
    318                     RenderText {#text} at (0,-1) size 8x17
    319                       text run at (0,-1) width 8: "1"
    320               RenderMathMLOperator {mo} at (8,31) size 16x9
    321                 RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    322                   RenderBlock (anonymous) at (0,0) size 9x9
    323                     RenderText at (0,-4) size 9x17
    324                       text run at (0,-4) width 9: "+"
    325               RenderMathMLSquareRoot {msqrt} at (23,0) size 217x40
    326                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x40
    327                   RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x40
    328                     RenderMathMLBlock (anonymous, flex) at (0,0) size 9x39
    329                       RenderBlock (anonymous) at (0,0) size 9x39
    330                         RenderText at (0,1) size 9x17
    331                           text run at (0,1) width 9: "\x{221A}"
    332                 RenderMathMLRootWrapper at (8,3) size 209x37
    333                   RenderMathMLRow {mrow} at (0,0) size 208x36
    334                     RenderMathMLToken {mn} at (0,24) size 8x12
    335                       RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    336                         RenderBlock (anonymous) at (0,0) size 8x12
    337                           RenderText {#text} at (0,-1) size 8x17
    338                             text run at (0,-1) width 8: "2"
    339                     RenderMathMLOperator {mo} at (8,27) size 16x9
    340                       RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    341                         RenderBlock (anonymous) at (0,0) size 9x9
    342                           RenderText at (0,-4) size 9x17
    343                             text run at (0,-4) width 9: "+"
    344                     RenderMathMLSquareRoot {msqrt} at (23,0) size 185x36
    345                       RenderMathMLBlock (anonymous, flex) at (0,0) size 9x36
    346                         RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x36
    347                           RenderMathMLBlock (anonymous, flex) at (0,0) size 9x35
    348                             RenderBlock (anonymous) at (0,0) size 9x35
    349                               RenderText at (0,1) size 9x17
    350                                 text run at (0,1) width 9: "\x{221A}"
    351                       RenderMathMLRootWrapper at (8,3) size 176x33
    352                         RenderMathMLRow {mrow} at (0,0) size 175x32
    353                           RenderMathMLToken {mn} at (0,20) size 8x12
     365                  RenderMathMLRoot {mroot} at (23,0) size 199x44
     366                    RenderMathMLRow {mrow} at (8,3) size 191x41
     367                      RenderMathMLToken {mn} at (0,28) size 8x12
     368                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     369                          RenderBlock (anonymous) at (0,0) size 8x12
     370                            RenderText {#text} at (0,-1) size 8x17
     371                              text run at (0,-1) width 8: "3"
     372                      RenderMathMLOperator {mo} at (8,31) size 16x9
     373                        RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     374                          RenderBlock (anonymous) at (0,0) size 9x9
     375                            RenderText at (0,-4) size 9x17
     376                              text run at (0,-4) width 9: "+"
     377                      RenderMathMLRoot {mroot} at (23,0) size 167x40
     378                        RenderMathMLRow {mrow} at (8,3) size 158x37
     379                          RenderMathMLToken {mn} at (0,24) size 8x12
    354380                            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    355381                              RenderBlock (anonymous) at (0,0) size 8x12
    356382                                RenderText {#text} at (0,-1) size 8x17
    357                                   text run at (0,-1) width 8: "3"
    358                           RenderMathMLOperator {mo} at (8,23) size 16x9
     383                                  text run at (0,-1) width 8: "4"
     384                          RenderMathMLOperator {mo} at (8,27) size 16x9
    359385                            RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    360386                              RenderBlock (anonymous) at (0,0) size 9x9
    361387                                RenderText at (0,-4) size 9x17
    362388                                  text run at (0,-4) width 9: "+"
    363                           RenderMathMLSquareRoot {msqrt} at (23,0) size 152x32
    364                             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x32
    365                               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x32
    366                                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x32
    367                                   RenderBlock (anonymous) at (0,0) size 9x32
    368                                     RenderText at (0,1) size 9x17
    369                                       text run at (0,1) width 9: "\x{221A}"
    370                             RenderMathMLRootWrapper at (8,3) size 143x29
    371                               RenderMathMLRow {mrow} at (0,0) size 142x29
    372                                 RenderMathMLToken {mn} at (0,16) size 8x12
    373                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    374                                     RenderBlock (anonymous) at (0,0) size 8x12
    375                                       RenderText {#text} at (0,-1) size 8x17
    376                                         text run at (0,-1) width 8: "4"
    377                                 RenderMathMLOperator {mo} at (8,19) size 16x9
    378                                   RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    379                                     RenderBlock (anonymous) at (0,0) size 9x9
    380                                       RenderText at (0,-4) size 9x17
    381                                         text run at (0,-4) width 9: "+"
    382                                 RenderMathMLSquareRoot {msqrt} at (23,0) size 119x29
    383                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 9x29
    384                                     RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x29
    385                                       RenderMathMLBlock (anonymous, flex) at (0,0) size 9x28
    386                                         RenderBlock (anonymous) at (0,0) size 9x28
    387                                           RenderText at (0,1) size 9x17
    388                                             text run at (0,1) width 9: "\x{221A}"
    389                                   RenderMathMLRootWrapper at (8,3) size 111x26
    390                                     RenderMathMLRow {mrow} at (0,0) size 110x25
     389                          RenderMathMLRoot {mroot} at (23,0) size 134x36
     390                            RenderMathMLRow {mrow} at (8,3) size 125x33
     391                              RenderMathMLToken {mn} at (0,20) size 8x12
     392                                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     393                                  RenderBlock (anonymous) at (0,0) size 8x12
     394                                    RenderText {#text} at (0,-1) size 8x17
     395                                      text run at (0,-1) width 8: "5"
     396                              RenderMathMLOperator {mo} at (8,23) size 16x9
     397                                RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     398                                  RenderBlock (anonymous) at (0,0) size 9x9
     399                                    RenderText at (0,-4) size 9x17
     400                                      text run at (0,-4) width 9: "+"
     401                              RenderMathMLRoot {mroot} at (23,0) size 101x32
     402                                RenderMathMLRow {mrow} at (8,3) size 92x29
     403                                  RenderMathMLToken {mn} at (0,16) size 8x12
     404                                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     405                                      RenderBlock (anonymous) at (0,0) size 8x12
     406                                        RenderText {#text} at (0,-1) size 8x17
     407                                          text run at (0,-1) width 8: "6"
     408                                  RenderMathMLOperator {mo} at (8,19) size 16x9
     409                                    RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     410                                      RenderBlock (anonymous) at (0,0) size 9x9
     411                                        RenderText at (0,-4) size 9x17
     412                                          text run at (0,-4) width 9: "+"
     413                                  RenderMathMLRoot {mroot} at (23,0) size 69x28
     414                                    RenderMathMLRow {mrow} at (8,3) size 60x25
    391415                                      RenderMathMLToken {mn} at (0,12) size 8x12
    392416                                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    393417                                          RenderBlock (anonymous) at (0,0) size 8x12
    394418                                            RenderText {#text} at (0,-1) size 8x17
    395                                               text run at (0,-1) width 8: "5"
     419                                              text run at (0,-1) width 8: "7"
    396420                                      RenderMathMLOperator {mo} at (8,15) size 16x9
    397421                                        RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     
    399423                                            RenderText at (0,-4) size 9x17
    400424                                              text run at (0,-4) width 9: "+"
    401                                       RenderMathMLSquareRoot {msqrt} at (23,0) size 87x25
    402                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 9x25
    403                                           RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x25
    404                                             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x24
    405                                               RenderBlock (anonymous) at (0,0) size 9x24
    406                                                 RenderText at (0,1) size 9x17
    407                                                   text run at (0,1) width 9: "\x{221A}"
    408                                         RenderMathMLRootWrapper at (8,3) size 78x22
    409                                           RenderMathMLRow {mrow} at (0,0) size 77x21
    410                                             RenderMathMLToken {mn} at (0,8) size 8x12
    411                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    412                                                 RenderBlock (anonymous) at (0,0) size 8x12
    413                                                   RenderText {#text} at (0,-1) size 8x17
    414                                                     text run at (0,-1) width 8: "6"
    415                                             RenderMathMLOperator {mo} at (8,11) size 16x9
    416                                               RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    417                                                 RenderBlock (anonymous) at (0,0) size 9x9
    418                                                   RenderText at (0,-4) size 9x17
    419                                                     text run at (0,-4) width 9: "+"
    420                                             RenderMathMLSquareRoot {msqrt} at (23,0) size 54x21
    421                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 9x21
    422                                                 RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x21
    423                                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 9x20
    424                                                     RenderBlock (anonymous) at (0,0) size 9x20
    425                                                       RenderText at (0,1) size 9x17
    426                                                         text run at (0,1) width 9: "\x{221A}"
    427                                               RenderMathMLRootWrapper at (8,3) size 45x18
    428                                                 RenderMathMLRow {mrow} at (0,0) size 45x17
    429                                                   RenderMathMLToken {mn} at (0,4) size 8x12
    430                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    431                                                       RenderBlock (anonymous) at (0,0) size 8x12
    432                                                         RenderText {#text} at (0,-1) size 8x17
    433                                                           text run at (0,-1) width 8: "7"
    434                                                   RenderMathMLOperator {mo} at (8,7) size 16x9
    435                                                     RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    436                                                       RenderBlock (anonymous) at (0,0) size 9x9
    437                                                         RenderText at (0,-4) size 9x17
    438                                                           text run at (0,-4) width 9: "+"
    439                                                   RenderMathMLSquareRoot {msqrt} at (23,0) size 22x17
    440                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 9x17
    441                                                       RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x17
    442                                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    443                                                           RenderBlock (anonymous) at (0,0) size 9x16
    444                                                             RenderText at (0,1) size 9x17
    445                                                               text run at (0,1) width 9: "\x{221A}"
    446                                                     RenderMathMLRootWrapper at (8,3) size 13x14
    447                                                       RenderMathMLToken {mi} at (0,0) size 12x12 [padding: 0 2 0 0]
    448                                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12
    449                                                           RenderBlock (anonymous) at (0,0) size 10x12
    450                                                             RenderText {#text} at (0,-1) size 10x17
    451                                                               text run at (0,-1) width 10: "A"
    452         RenderText {#text} at (0,0) size 0x0
    453       RenderBlock {p} at (0,403) size 784x57
    454         RenderText {#text} at (0,37) size 114x19
    455           text run at (0,37) width 114: "Imbricated roots: "
    456         RenderMathMLMath {math} at (113,0) size 267x53 [padding: 0 1 0 1]
    457           RenderMathMLRoot {mroot} at (1,0) size 264x53
    458             RenderMathMLRootWrapper at (4,13) size 5x40
    459               RenderMathMLToken {mn} at (0,0) size 5x8
    460                 RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    461                   RenderBlock (anonymous) at (0,0) size 5x8
    462                     RenderText {#text} at (0,0) size 5x10
    463                       text run at (0,0) width 5: "3"
    464             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x53
    465               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x53
    466                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x52
    467                   RenderBlock (anonymous) at (0,0) size 9x52
    468                     RenderText at (0,1) size 9x17
    469                       text run at (0,1) width 9: "\x{221A}"
    470             RenderMathMLRootWrapper at (8,3) size 256x50
    471               RenderMathMLRow {mrow} at (0,0) size 255x49
    472                 RenderMathMLToken {mn} at (0,37) size 8x12
    473                   RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    474                     RenderBlock (anonymous) at (0,0) size 8x12
    475                       RenderText {#text} at (0,-1) size 8x17
    476                         text run at (0,-1) width 8: "1"
    477                 RenderMathMLOperator {mo} at (8,40) size 16x9
    478                   RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    479                     RenderBlock (anonymous) at (0,0) size 9x9
    480                       RenderText at (0,-4) size 9x17
    481                         text run at (0,-4) width 9: "+"
    482                 RenderMathMLRoot {mroot} at (23,0) size 232x49
    483                   RenderMathMLRootWrapper at (4,11) size 5x38
    484                     RenderMathMLToken {mn} at (0,0) size 5x8
     425                                      RenderMathMLRoot {mroot} at (23,0) size 36x24
     426                                        RenderMathMLToken {mi} at (23,12) size 12x12 [padding: 0 2 0 0]
     427                                          RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12
     428                                            RenderBlock (anonymous) at (0,0) size 10x12
     429                                              RenderText {#text} at (0,-1) size 10x17
     430                                                text run at (0,-1) width 10: "A"
     431                                        RenderMathMLFraction {mfrac} at (4,0) size 20x17
     432                                          RenderMathMLRow {mrow} at (0,0) size 19x7
     433                                            RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0]
     434                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     435                                                RenderBlock (anonymous) at (0,0) size 4x5
     436                                                  RenderText {#text} at (0,-3) size 4x10
     437                                                    text run at (0,-3) width 4: "x"
     438                                            RenderMathMLOperator {mo} at (4,0) size 10x6
     439                                              RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
     440                                                RenderBlock (anonymous) at (0,0) size 5x6
     441                                                  RenderText at (0,-2) size 5x10
     442                                                    text run at (0,-2) width 5: "+"
     443                                            RenderMathMLToken {mi} at (13,1) size 6x6 [padding: 0 1 0 0]
     444                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
     445                                                RenderBlock (anonymous) at (0,0) size 4x6
     446                                                  RenderText {#text} at (0,-3) size 4x10
     447                                                    text run at (0,-3) width 4: "y"
     448                                          RenderMathMLToken {mi} at (7,11) size 5x6 [padding: 0 1 0 0]
     449                                            RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
     450                                              RenderBlock (anonymous) at (0,0) size 4x5
     451                                                RenderText {#text} at (0,-3) size 4x10
     452                                                  text run at (0,-3) width 4: "z"
     453                                    RenderMathMLToken {mn} at (4,5) size 5x9
     454                                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     455                                        RenderBlock (anonymous) at (0,0) size 5x8
     456                                          RenderText {#text} at (0,0) size 5x10
     457                                            text run at (0,0) width 5: "9"
     458                                RenderMathMLToken {mn} at (4,7) size 5x8
     459                                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     460                                    RenderBlock (anonymous) at (0,0) size 5x8
     461                                      RenderText {#text} at (0,0) size 5x10
     462                                        text run at (0,0) width 5: "8"
     463                            RenderMathMLToken {mn} at (4,9) size 5x8
     464                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     465                                RenderBlock (anonymous) at (0,0) size 5x7
     466                                  RenderText {#text} at (0,-1) size 5x10
     467                                    text run at (0,-1) width 5: "7"
     468                        RenderMathMLToken {mn} at (4,10) size 5x9
     469                          RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     470                            RenderBlock (anonymous) at (0,0) size 5x8
     471                              RenderText {#text} at (0,0) size 5x10
     472                                text run at (0,0) width 5: "6"
     473                    RenderMathMLToken {mn} at (4,11) size 5x9
    485474                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    486475                        RenderBlock (anonymous) at (0,0) size 5x8
    487476                          RenderText {#text} at (0,0) size 5x10
    488                             text run at (0,0) width 5: "4"
    489                   RenderMathMLBlock (anonymous, flex) at (0,0) size 9x49
    490                     RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x49
    491                       RenderMathMLBlock (anonymous, flex) at (0,0) size 9x48
    492                         RenderBlock (anonymous) at (0,0) size 9x48
    493                           RenderText at (0,1) size 9x17
    494                             text run at (0,1) width 9: "\x{221A}"
    495                   RenderMathMLRootWrapper at (8,3) size 223x46
    496                     RenderMathMLRow {mrow} at (0,0) size 222x45
    497                       RenderMathMLToken {mn} at (0,33) size 8x12
     477                            text run at (0,0) width 5: "5"
     478                RenderMathMLToken {mn} at (4,13) size 5x9
     479                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     480                    RenderBlock (anonymous) at (0,0) size 5x8
     481                      RenderText {#text} at (0,0) size 5x10
     482                        text run at (0,0) width 5: "4"
     483            RenderMathMLToken {mn} at (4,15) size 5x8
     484              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     485                RenderBlock (anonymous) at (0,0) size 5x8
     486                  RenderText {#text} at (0,0) size 5x10
     487                    text run at (0,0) width 5: "3"
     488        RenderText {#text} at (0,0) size 0x0
     489      RenderBlock {p} at (0,473) size 784x56
     490        RenderText {#text} at (0,36) size 74x19
     491          text run at (0,36) width 74: "RTL roots: "
     492        RenderMathMLMath {math} at (73,0) size 266x52 [padding: 0 1 0 1]
     493          RenderMathMLRoot {mroot} at (1,0) size 264x52
     494            RenderMathMLRow {mrow} at (0,3) size 255x49
     495              RenderMathMLToken {mn} at (246,36) size 9x12
     496                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     497                  RenderBlock (anonymous) at (0,0) size 8x12
     498                    RenderText {#text} at (0,-1) size 8x17
     499                      text run at (0,-1) width 8: "1"
     500              RenderMathMLOperator {mo} at (230,39) size 17x9
     501                RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     502                  RenderBlock (anonymous) at (0,0) size 9x9
     503                    RenderText at (0,-4) size 9x17
     504                      text run at (0,-4) width 9 RTL: "+"
     505              RenderMathMLRoot {mroot} at (0,0) size 231x48
     506                RenderMathMLRow {mrow} at (0,3) size 222x45
     507                  RenderMathMLToken {mn} at (213,32) size 9x12
     508                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     509                      RenderBlock (anonymous) at (0,0) size 8x12
     510                        RenderText {#text} at (0,-1) size 8x17
     511                          text run at (0,-1) width 8: "2"
     512                  RenderMathMLOperator {mo} at (198,35) size 16x9
     513                    RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     514                      RenderBlock (anonymous) at (0,0) size 9x9
     515                        RenderText at (0,-4) size 9x17
     516                          text run at (0,-4) width 9 RTL: "+"
     517                  RenderMathMLRoot {mroot} at (0,0) size 199x44
     518                    RenderMathMLRow {mrow} at (0,3) size 190x41
     519                      RenderMathMLToken {mn} at (181,28) size 9x12
    498520                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    499521                          RenderBlock (anonymous) at (0,0) size 8x12
    500522                            RenderText {#text} at (0,-1) size 8x17
    501                               text run at (0,-1) width 8: "2"
    502                       RenderMathMLOperator {mo} at (8,36) size 16x9
     523                              text run at (0,-1) width 8: "3"
     524                      RenderMathMLOperator {mo} at (165,31) size 17x9
    503525                        RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    504526                          RenderBlock (anonymous) at (0,0) size 9x9
    505527                            RenderText at (0,-4) size 9x17
    506                               text run at (0,-4) width 9: "+"
    507                       RenderMathMLRoot {mroot} at (23,0) size 199x45
    508                         RenderMathMLRootWrapper at (4,10) size 5x35
    509                           RenderMathMLToken {mn} at (0,0) size 5x8
    510                             RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    511                               RenderBlock (anonymous) at (0,0) size 5x8
    512                                 RenderText {#text} at (0,0) size 5x10
    513                                   text run at (0,0) width 5: "5"
    514                         RenderMathMLBlock (anonymous, flex) at (0,0) size 9x45
    515                           RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x45
    516                             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x44
    517                               RenderBlock (anonymous) at (0,0) size 9x44
    518                                 RenderText at (0,1) size 9x17
    519                                   text run at (0,1) width 9: "\x{221A}"
    520                         RenderMathMLRootWrapper at (8,3) size 191x42
    521                           RenderMathMLRow {mrow} at (0,0) size 190x41
    522                             RenderMathMLToken {mn} at (0,29) size 8x12
    523                               RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    524                                 RenderBlock (anonymous) at (0,0) size 8x12
    525                                   RenderText {#text} at (0,-1) size 8x17
    526                                     text run at (0,-1) width 8: "3"
    527                             RenderMathMLOperator {mo} at (8,32) size 16x9
    528                               RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    529                                 RenderBlock (anonymous) at (0,0) size 9x9
    530                                   RenderText at (0,-4) size 9x17
    531                                     text run at (0,-4) width 9: "+"
    532                             RenderMathMLRoot {mroot} at (23,0) size 167x41
    533                               RenderMathMLRootWrapper at (4,8) size 5x33
    534                                 RenderMathMLToken {mn} at (0,0) size 5x8
     528                              text run at (0,-4) width 9 RTL: "+"
     529                      RenderMathMLRoot {mroot} at (0,0) size 166x40
     530                        RenderMathMLRow {mrow} at (0,3) size 157x37
     531                          RenderMathMLToken {mn} at (148,24) size 9x12
     532                            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     533                              RenderBlock (anonymous) at (0,0) size 8x12
     534                                RenderText {#text} at (0,-1) size 8x17
     535                                  text run at (0,-1) width 8: "4"
     536                          RenderMathMLOperator {mo} at (132,27) size 17x9
     537                            RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     538                              RenderBlock (anonymous) at (0,0) size 9x9
     539                                RenderText at (0,-4) size 9x17
     540                                  text run at (0,-4) width 9 RTL: "+"
     541                          RenderMathMLRoot {mroot} at (0,0) size 133x36
     542                            RenderMathMLRow {mrow} at (0,3) size 124x33
     543                              RenderMathMLToken {mn} at (115,20) size 9x12
     544                                RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     545                                  RenderBlock (anonymous) at (0,0) size 8x12
     546                                    RenderText {#text} at (0,-1) size 8x17
     547                                      text run at (0,-1) width 8: "5"
     548                              RenderMathMLOperator {mo} at (99,23) size 17x9
     549                                RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     550                                  RenderBlock (anonymous) at (0,0) size 9x9
     551                                    RenderText at (0,-4) size 9x17
     552                                      text run at (0,-4) width 9 RTL: "+"
     553                              RenderMathMLRoot {mroot} at (0,0) size 100x32
     554                                RenderMathMLRow {mrow} at (0,3) size 92x29
     555                                  RenderMathMLToken {mn} at (83,16) size 9x12
     556                                    RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     557                                      RenderBlock (anonymous) at (0,0) size 8x12
     558                                        RenderText {#text} at (0,-1) size 8x17
     559                                          text run at (0,-1) width 8: "6"
     560                                  RenderMathMLOperator {mo} at (67,19) size 17x9
     561                                    RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     562                                      RenderBlock (anonymous) at (0,0) size 9x9
     563                                        RenderText at (0,-4) size 9x17
     564                                          text run at (0,-4) width 9 RTL: "+"
     565                                  RenderMathMLRoot {mroot} at (0,0) size 68x28
     566                                    RenderMathMLRow {mrow} at (0,3) size 59x25
     567                                      RenderMathMLToken {mn} at (50,12) size 9x12
     568                                        RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
     569                                          RenderBlock (anonymous) at (0,0) size 8x12
     570                                            RenderText {#text} at (0,-1) size 8x17
     571                                              text run at (0,-1) width 8: "7"
     572                                      RenderMathMLOperator {mo} at (34,15) size 17x9
     573                                        RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
     574                                          RenderBlock (anonymous) at (0,0) size 9x9
     575                                            RenderText at (0,-4) size 9x17
     576                                              text run at (0,-4) width 9 RTL: "+"
     577                                      RenderMathMLRoot {mroot} at (0,0) size 35x24
     578                                        RenderMathMLToken {mi} at (0,12) size 12x12 [padding: 0 0 0 2]
     579                                          RenderMathMLBlock (anonymous, flex) at (1,0) size 11x12
     580                                            RenderBlock (anonymous) at (0,0) size 10x12
     581                                              RenderText {#text} at (0,-1) size 10x17
     582                                                text run at (0,-1) width 10: "A"
     583                                        RenderMathMLFraction {mfrac} at (11,0) size 20x17
     584                                          RenderMathMLRow {mrow} at (0,0) size 19x7
     585                                            RenderMathMLToken {mi} at (13,1) size 6x5 [padding: 0 0 0 1]
     586                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
     587                                                RenderBlock (anonymous) at (0,0) size 4x5
     588                                                  RenderText {#text} at (0,-3) size 4x10
     589                                                    text run at (0,-3) width 4: "x"
     590                                            RenderMathMLOperator {mo} at (4,0) size 10x6
     591                                              RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
     592                                                RenderBlock (anonymous) at (0,0) size 5x6
     593                                                  RenderText at (0,-2) size 5x10
     594                                                    text run at (0,-2) width 5 RTL: "+"
     595                                            RenderMathMLToken {mi} at (0,1) size 5x6 [padding: 0 0 0 1]
     596                                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x6
     597                                                RenderBlock (anonymous) at (0,0) size 4x6
     598                                                  RenderText {#text} at (0,-3) size 4x10
     599                                                    text run at (0,-3) width 4: "y"
     600                                          RenderMathMLToken {mi} at (7,11) size 5x6 [padding: 0 0 0 1]
     601                                            RenderMathMLBlock (anonymous, flex) at (0,0) size 5x5
     602                                              RenderBlock (anonymous) at (0,0) size 4x5
     603                                                RenderText {#text} at (0,-3) size 4x10
     604                                                  text run at (0,-3) width 4: "z"
     605                                    RenderMathMLToken {mn} at (58,5) size 5x9
     606                                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     607                                        RenderBlock (anonymous) at (0,0) size 5x8
     608                                          RenderText {#text} at (0,0) size 5x10
     609                                            text run at (0,0) width 5: "9"
     610                                RenderMathMLToken {mn} at (90,7) size 6x8
    535611                                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    536612                                    RenderBlock (anonymous) at (0,0) size 5x8
    537613                                      RenderText {#text} at (0,0) size 5x10
    538                                         text run at (0,0) width 5: "6"
    539                               RenderMathMLBlock (anonymous, flex) at (0,0) size 9x41
    540                                 RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x41
    541                                   RenderMathMLBlock (anonymous, flex) at (0,0) size 9x40
    542                                     RenderBlock (anonymous) at (0,0) size 9x40
    543                                       RenderText at (0,1) size 9x17
    544                                         text run at (0,1) width 9: "\x{221A}"
    545                               RenderMathMLRootWrapper at (8,3) size 158x38
    546                                 RenderMathMLRow {mrow} at (0,0) size 157x37
    547                                   RenderMathMLToken {mn} at (0,25) size 8x12
    548                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    549                                       RenderBlock (anonymous) at (0,0) size 8x12
    550                                         RenderText {#text} at (0,-1) size 8x17
    551                                           text run at (0,-1) width 8: "4"
    552                                   RenderMathMLOperator {mo} at (8,28) size 16x9
    553                                     RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    554                                       RenderBlock (anonymous) at (0,0) size 9x9
    555                                         RenderText at (0,-4) size 9x17
    556                                           text run at (0,-4) width 9: "+"
    557                                   RenderMathMLRoot {mroot} at (23,0) size 134x37
    558                                     RenderMathMLRootWrapper at (4,7) size 5x30
    559                                       RenderMathMLToken {mn} at (0,0) size 5x7
    560                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
    561                                           RenderBlock (anonymous) at (0,0) size 5x7
    562                                             RenderText {#text} at (0,-1) size 5x10
    563                                               text run at (0,-1) width 5: "7"
    564                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 9x37
    565                                       RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x37
    566                                         RenderMathMLBlock (anonymous, flex) at (0,0) size 9x37
    567                                           RenderBlock (anonymous) at (0,0) size 9x37
    568                                             RenderText at (0,1) size 9x17
    569                                               text run at (0,1) width 9: "\x{221A}"
    570                                     RenderMathMLRootWrapper at (8,3) size 125x34
    571                                       RenderMathMLRow {mrow} at (0,0) size 124x34
    572                                         RenderMathMLToken {mn} at (0,21) size 8x12
    573                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    574                                             RenderBlock (anonymous) at (0,0) size 8x12
    575                                               RenderText {#text} at (0,-1) size 8x17
    576                                                 text run at (0,-1) width 8: "5"
    577                                         RenderMathMLOperator {mo} at (8,24) size 16x9
    578                                           RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    579                                             RenderBlock (anonymous) at (0,0) size 9x9
    580                                               RenderText at (0,-4) size 9x17
    581                                                 text run at (0,-4) width 9: "+"
    582                                         RenderMathMLRoot {mroot} at (23,0) size 101x34
    583                                           RenderMathMLRootWrapper at (4,5) size 5x29
    584                                             RenderMathMLToken {mn} at (0,0) size 5x8
    585                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    586                                                 RenderBlock (anonymous) at (0,0) size 5x8
    587                                                   RenderText {#text} at (0,0) size 5x10
    588                                                     text run at (0,0) width 5: "8"
    589                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 9x34
    590                                             RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x34
    591                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 9x33
    592                                                 RenderBlock (anonymous) at (0,0) size 9x33
    593                                                   RenderText at (0,1) size 9x17
    594                                                     text run at (0,1) width 9: "\x{221A}"
    595                                           RenderMathMLRootWrapper at (8,3) size 92x31
    596                                             RenderMathMLRow {mrow} at (0,0) size 92x30
    597                                               RenderMathMLToken {mn} at (0,17) size 8x12
    598                                                 RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    599                                                   RenderBlock (anonymous) at (0,0) size 8x12
    600                                                     RenderText {#text} at (0,-1) size 8x17
    601                                                       text run at (0,-1) width 8: "6"
    602                                               RenderMathMLOperator {mo} at (8,20) size 16x9
    603                                                 RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    604                                                   RenderBlock (anonymous) at (0,0) size 9x9
    605                                                     RenderText at (0,-4) size 9x17
    606                                                       text run at (0,-4) width 9: "+"
    607                                               RenderMathMLRoot {mroot} at (23,0) size 69x30
    608                                                 RenderMathMLRootWrapper at (4,3) size 5x27
    609                                                   RenderMathMLToken {mn} at (0,0) size 5x8
    610                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
    611                                                       RenderBlock (anonymous) at (0,0) size 5x8
    612                                                         RenderText {#text} at (0,0) size 5x10
    613                                                           text run at (0,0) width 5: "9"
    614                                                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x30
    615                                                   RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x30
    616                                                     RenderMathMLBlock (anonymous, flex) at (0,0) size 9x29
    617                                                       RenderBlock (anonymous) at (0,0) size 9x29
    618                                                         RenderText at (0,1) size 9x17
    619                                                           text run at (0,1) width 9: "\x{221A}"
    620                                                 RenderMathMLRootWrapper at (8,3) size 60x27
    621                                                   RenderMathMLRow {mrow} at (0,0) size 59x26
    622                                                     RenderMathMLToken {mn} at (0,13) size 8x12
    623                                                       RenderMathMLBlock (anonymous, flex) at (0,0) size 8x12
    624                                                         RenderBlock (anonymous) at (0,0) size 8x12
    625                                                           RenderText {#text} at (0,-1) size 8x17
    626                                                             text run at (0,-1) width 8: "7"
    627                                                     RenderMathMLOperator {mo} at (8,16) size 16x9
    628                                                       RenderMathMLBlock (anonymous, flex) at (3,0) size 10x9
    629                                                         RenderBlock (anonymous) at (0,0) size 9x9
    630                                                           RenderText at (0,-4) size 9x17
    631                                                             text run at (0,-4) width 9: "+"
    632                                                     RenderMathMLRoot {mroot} at (23,0) size 36x26
    633                                                       RenderMathMLRootWrapper at (4,0) size 20x26
    634                                                         RenderMathMLFraction {mfrac} at (0,0) size 19x17
    635                                                           RenderMathMLRow {mrow} at (0,0) size 19x7
    636                                                             RenderMathMLToken {mi} at (0,1) size 5x5 [padding: 0 1 0 0]
    637                                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    638                                                                 RenderBlock (anonymous) at (0,0) size 4x5
    639                                                                   RenderText {#text} at (0,-3) size 4x10
    640                                                                     text run at (0,-3) width 4: "x"
    641                                                             RenderMathMLOperator {mo} at (4,0) size 10x6
    642                                                               RenderMathMLBlock (anonymous, flex) at (2,0) size 5x6
    643                                                                 RenderBlock (anonymous) at (0,0) size 5x6
    644                                                                   RenderText at (0,-2) size 5x10
    645                                                                     text run at (0,-2) width 5: "+"
    646                                                             RenderMathMLToken {mi} at (13,1) size 6x6 [padding: 0 1 0 0]
    647                                                               RenderMathMLBlock (anonymous, flex) at (0,0) size 4x6
    648                                                                 RenderBlock (anonymous) at (0,0) size 4x6
    649                                                                   RenderText {#text} at (0,-3) size 4x10
    650                                                                     text run at (0,-3) width 4: "y"
    651                                                           RenderMathMLToken {mi} at (7,11) size 5x6 [padding: 0 1 0 0]
    652                                                             RenderMathMLBlock (anonymous, flex) at (0,0) size 4x5
    653                                                               RenderBlock (anonymous) at (0,0) size 4x5
    654                                                                 RenderText {#text} at (0,-3) size 4x10
    655                                                                   text run at (0,-3) width 4: "z"
    656                                                       RenderMathMLBlock (anonymous, flex) at (14,0) size 10x26
    657                                                         RenderMathMLRadicalOperator (anonymous) at (0,9) size 9x17
    658                                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 9x16
    659                                                             RenderBlock (anonymous) at (0,0) size 9x16
    660                                                               RenderText at (0,1) size 9x17
    661                                                                 text run at (0,1) width 9: "\x{221A}"
    662                                                       RenderMathMLRootWrapper at (23,12) size 12x14
    663                                                         RenderMathMLToken {mi} at (0,0) size 12x12 [padding: 0 2 0 0]
    664                                                           RenderMathMLBlock (anonymous, flex) at (0,0) size 10x12
    665                                                             RenderBlock (anonymous) at (0,0) size 10x12
    666                                                               RenderText {#text} at (0,-1) size 10x17
    667                                                                 text run at (0,-1) width 10: "A"
     614                                        text run at (0,0) width 5: "8"
     615                            RenderMathMLToken {mn} at (123,9) size 6x8
     616                              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x7
     617                                RenderBlock (anonymous) at (0,0) size 5x7
     618                                  RenderText {#text} at (0,-1) size 5x10
     619                                    text run at (0,-1) width 5: "7"
     620                        RenderMathMLToken {mn} at (156,10) size 5x9
     621                          RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     622                            RenderBlock (anonymous) at (0,0) size 5x8
     623                              RenderText {#text} at (0,0) size 5x10
     624                                text run at (0,0) width 5: "6"
     625                    RenderMathMLToken {mn} at (189,11) size 5x9
     626                      RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     627                        RenderBlock (anonymous) at (0,0) size 5x8
     628                          RenderText {#text} at (0,0) size 5x10
     629                            text run at (0,0) width 5: "5"
     630                RenderMathMLToken {mn} at (221,13) size 6x9
     631                  RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     632                    RenderBlock (anonymous) at (0,0) size 5x8
     633                      RenderText {#text} at (0,0) size 5x10
     634                        text run at (0,0) width 5: "4"
     635            RenderMathMLToken {mn} at (254,15) size 6x8
     636              RenderMathMLBlock (anonymous, flex) at (0,0) size 5x8
     637                RenderBlock (anonymous) at (0,0) size 5x8
     638                  RenderText {#text} at (0,0) size 5x10
     639                    text run at (0,0) width 5: "3"
    668640        RenderText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/ios-simulator/mathml/radical-fallback-expected.txt

    r202161 r202168  
    88          text run at (0,69) width 132: "Large LTR radicals: "
    99        RenderMathMLMath {math} at (131,0) size 21x84 [padding: 0 1 0 1]
    10           RenderMathMLSquareRoot {msqrt} at (1,0) size 9x84
    11             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    12               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    13                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    14                   RenderBlock (anonymous) at (0,0) size 9x83
    15                     RenderText at (0,1) size 9x17
    16                       text run at (0,1) width 9: "\x{221A}"
    17             RenderMathMLRootWrapper at (8,3) size 0x81
    18               RenderMathMLSpace {mspace} at (0,0) size 0x80
    19           RenderMathMLSquareRoot {msqrt} at (9,0) size 10x84
    20             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    21               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    22                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    23                   RenderBlock (anonymous) at (0,0) size 9x83
    24                     RenderText at (0,-1) size 9x20
    25                       text run at (0,-1) width 9: "\x{221A}"
    26             RenderMathMLRootWrapper at (8,3) size 0x81
    27               RenderMathMLSpace {mspace} at (0,0) size 0x80
     10          RenderMathMLRoot {msqrt} at (1,0) size 9x84
     11            RenderMathMLSpace {mspace} at (8,3) size 0x81
     12          RenderMathMLRoot {msqrt} at (9,0) size 10x84
     13            RenderMathMLSpace {mspace} at (8,3) size 0x81
    2814        RenderText {#text} at (0,0) size 0x0
    2915      RenderBlock {P} at (0,105) size 784x89
     
    3117          text run at (0,69) width 132: "Large RTL radicals: "
    3218        RenderMathMLMath {math} at (131,0) size 21x84 [padding: 0 1 0 1]
    33           RenderMathMLSquareRoot {msqrt} at (9,0) size 10x84
    34             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    35               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    36                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    37                   RenderBlock (anonymous) at (0,0) size 9x83
    38                     RenderText at (0,1) size 9x17
    39                       text run at (0,1) width 9 RTL: "\x{221A}"
    40             RenderMathMLRootWrapper at (0,3) size 0x81
    41               RenderMathMLSpace {mspace} at (0,0) size 0x80
    42           RenderMathMLSquareRoot {msqrt} at (1,0) size 9x84
    43             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    44               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    45                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    46                   RenderBlock (anonymous) at (0,0) size 9x83
    47                     RenderText at (0,-1) size 9x20
    48                       text run at (0,-1) width 9 RTL: "\x{221A}"
    49             RenderMathMLRootWrapper at (0,3) size 0x81
    50               RenderMathMLSpace {mspace} at (0,0) size 0x80
     19          RenderMathMLRoot {msqrt} at (9,0) size 10x84
     20            RenderMathMLSpace {mspace} at (0,3) size 0x81
     21          RenderMathMLRoot {msqrt} at (1,0) size 9x84
     22            RenderMathMLSpace {mspace} at (0,3) size 0x81
    5123        RenderText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/mac/mathml/radical-fallback-expected.txt

    r202161 r202168  
    88          text run at (0,70) width 132: "Large LTR radicals: "
    99        RenderMathMLMath {math} at (131,0) size 27x84 [padding: 0 1 0 1]
    10           RenderMathMLSquareRoot {msqrt} at (1,0) size 15x84
    11             RenderMathMLBlock (anonymous, flex) at (0,0) size 15x84
    12               RenderMathMLRadicalOperator (anonymous) at (0,0) size 15x84
    13                 RenderMathMLBlock (anonymous, flex) at (0,0) size 15x83
    14                   RenderBlock (anonymous) at (0,0) size 15x83
    15                     RenderText at (0,-1) size 15x24
    16                       text run at (0,-1) width 15: "\x{221A}"
    17             RenderMathMLRootWrapper at (14,3) size 0x81
    18               RenderMathMLSpace {mspace} at (0,0) size 0x80
    19           RenderMathMLSquareRoot {msqrt} at (15,0) size 10x84
    20             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    21               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    22                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    23                   RenderBlock (anonymous) at (0,0) size 9x83
    24                     RenderText at (0,1) size 9x18
    25                       text run at (0,1) width 9: "\x{221A}"
    26             RenderMathMLRootWrapper at (8,3) size 0x81
    27               RenderMathMLSpace {mspace} at (0,0) size 0x80
     10          RenderMathMLRoot {msqrt} at (1,0) size 15x84
     11            RenderMathMLSpace {mspace} at (14,3) size 0x81
     12          RenderMathMLRoot {msqrt} at (15,0) size 10x84
     13            RenderMathMLSpace {mspace} at (8,3) size 0x81
    2814        RenderText {#text} at (0,0) size 0x0
    2915      RenderBlock {P} at (0,104) size 784x88
     
    3117          text run at (0,70) width 132: "Large RTL radicals: "
    3218        RenderMathMLMath {math} at (131,0) size 27x84 [padding: 0 1 0 1]
    33           RenderMathMLSquareRoot {msqrt} at (9,0) size 16x84
    34             RenderMathMLBlock (anonymous, flex) at (0,0) size 15x84
    35               RenderMathMLRadicalOperator (anonymous) at (0,0) size 15x84
    36                 RenderMathMLBlock (anonymous, flex) at (0,0) size 15x83
    37                   RenderBlock (anonymous) at (0,0) size 15x83
    38                     RenderText at (0,-1) size 16x24
    39                       text run at (0,-1) width 15 RTL: "\x{221A}"
    40             RenderMathMLRootWrapper at (0,3) size 0x81
    41               RenderMathMLSpace {mspace} at (0,0) size 0x80
    42           RenderMathMLSquareRoot {msqrt} at (1,0) size 9x84
    43             RenderMathMLBlock (anonymous, flex) at (0,0) size 9x84
    44               RenderMathMLRadicalOperator (anonymous) at (0,0) size 9x84
    45                 RenderMathMLBlock (anonymous, flex) at (0,0) size 9x83
    46                   RenderBlock (anonymous) at (0,0) size 9x83
    47                     RenderText at (0,1) size 9x18
    48                       text run at (0,1) width 9 RTL: "\x{221A}"
    49             RenderMathMLRootWrapper at (0,3) size 0x81
    50               RenderMathMLSpace {mspace} at (0,0) size 0x80
     19          RenderMathMLRoot {msqrt} at (9,0) size 16x84
     20            RenderMathMLSpace {mspace} at (0,3) size 0x81
     21          RenderMathMLRoot {msqrt} at (1,0) size 9x84
     22            RenderMathMLSpace {mspace} at (0,3) size 0x81
    5123        RenderText {#text} at (0,0) size 0x0
  • trunk/Source/WebCore/CMakeLists.txt

    r202063 r202168  
    25312531    rendering/mathml/RenderMathMLMenclose.cpp
    25322532    rendering/mathml/RenderMathMLOperator.cpp
    2533     rendering/mathml/RenderMathMLRadicalOperator.cpp
    25342533    rendering/mathml/RenderMathMLRoot.cpp
    25352534    rendering/mathml/RenderMathMLRow.cpp
    25362535    rendering/mathml/RenderMathMLScripts.cpp
    25372536    rendering/mathml/RenderMathMLSpace.cpp
    2538     rendering/mathml/RenderMathMLSquareRoot.cpp
    25392537    rendering/mathml/RenderMathMLToken.cpp
    25402538    rendering/mathml/RenderMathMLUnderOver.cpp
  • trunk/Source/WebCore/ChangeLog

    r202167 r202168  
     12016-06-17  Frederic Wang  <fwang@igalia.com>
     2
     3        Refactor RenderMathMLRoot layout function to avoid using flexbox
     4        https://bugs.webkit.org/show_bug.cgi?id=153987
     5
     6        Reviewed by Brent Fulgham.
     7
     8        No new tests, already covered by existing tests.
     9        A case for RTL root has been added to roots.xhtml.
     10
     11        We reimplement RenderMathMLRoot without any flexbox or anonymous.
     12        The anonymous RenderMathMLRadicalOperator used to draw the radical sign is replaced with
     13        the MathOperator class introduced in bug 152244.
     14        msqrt (row of children under a square root) is now implemented directly in RenderMathMLRoot,
     15        so RenderMathMLSquareRoot is removed and RenderMathMLRoot now inherits from RenderMathMLRow.
     16
     17        * CMakeLists.txt: Remove files for RenderMathMLRadicalOperator and RenderMathMLSquareRoot.
     18        * WebCore.xcodeproj/project.pbxproj: ditto.
     19        * accessibility/AccessibilityRenderObject.cpp: Update code now that we do not use any
     20        radical wrappers.
     21        (WebCore::AccessibilityRenderObject::isMathRow): Now that RenderMathMLRoot inherits from
     22        RenderMathMLRow, we must exclude MathRoot or otherwise some accessibility code may treat
     23        roots as rows.
     24        (WebCore::AccessibilityRenderObject::mathRadicandObject): Return the first child for
     25        Root/SquareRoot or nullptr.
     26        (WebCore::AccessibilityRenderObject::mathRootIndexObject): Return the second child for
     27        Root and nullptr for SquareRoot.
     28        * mathml/MathMLInlineContainerElement.cpp:
     29        (WebCore::MathMLInlineContainerElement::childrenChanged): We no longer need a special case
     30        for msqrt, it is treated as a normal RenderMathMLRow.
     31        (WebCore::MathMLInlineContainerElement::createElementRenderer): Make msqrt create a
     32        RenderMathMLRoot object.
     33        * rendering/RenderObject.h:
     34        (WebCore::RenderObject::isRenderMathMLRadicalOperator): Deleted.
     35        * rendering/mathml/RenderMathMLBlock.cpp:
     36        (WebCore::RenderMathMLBlock::mirrorIfNeeded): New function to mirror a child horizontal
     37        offset according to the parent width.
     38        (WebCore::RenderMathMLBlock::renderName):
     39        * rendering/mathml/RenderMathMLBlock.h:
     40        (WebCore::RenderMathMLBlock::mirrorIfNeeded): Moved from RenderMathMLScripts, just forward
     41        call to the other mirrorIfNeeded function.
     42        * rendering/mathml/RenderMathMLOperator.cpp: We no longer need this trailingSpaceError hack.
     43        (WebCore::RenderMathMLOperator::trailingSpaceError): Deleted.
     44        * rendering/mathml/RenderMathMLOperator.h: ditto.
     45        * rendering/mathml/RenderMathMLRadicalOperator.cpp: Removed. The radical sign is now drawn
     46        with a MathOperator.
     47        * rendering/mathml/RenderMathMLRadicalOperator.h: Removed.
     48        * rendering/mathml/RenderMathMLRoot.cpp: Complete refactoring to avoid using flexbox and
     49        anonymous wrappers.
     50        (WebCore::RenderMathMLRoot::RenderMathMLRoot): Set m_kind parameters to distinguish between
     51        square root and general root and set the MathOperator member to draw the radical sign.
     52        (WebCore::RenderMathMLRoot::isValid): Helper function to verify whether the child list is valid.
     53        (WebCore::RenderMathMLRoot::getBase): Get the base of an mroot.
     54        (WebCore::RenderMathMLRoot::getIndex): Get the index of an mroot.
     55        (WebCore::RenderMathMLRoot::styleDidChange): Be sure to keep the style of the
     56        MathOperator in sync with ours ; no need to skip empty roots.
     57        (WebCore::RenderMathMLRoot::updateFromElement): Call the function from the new parent class ;
     58        no need to skip empty roots.
     59        (WebCore::RenderMathMLRoot::updateStyle): Remove the isEmpty ASSERT as it is valid to have
     60        empty square root. Set the m_kernBeforeDegree, m_kernBeforeDegree members.
     61        No need to set style for anonymous.
     62        (WebCore::RenderMathMLRoot::computePreferredLogicalWidths): Implement this function.
     63        (WebCore::RenderMathMLRoot::layoutBlock): Implement this function.
     64        (WebCore::RenderMathMLRoot::paintChildren): Implement this function.
     65        (WebCore::RenderMathMLRoot::paint): Remove the trailingSpaceError hack ;
     66        paint the radical sign via MathOperator::paint
     67        (WebCore::RenderMathMLRoot::baseWrapper): Deleted.
     68        (WebCore::RenderMathMLRoot::radicalWrapper): Deleted.
     69        (WebCore::RenderMathMLRoot::indexWrapper): Deleted.
     70        (WebCore::RenderMathMLRoot::radicalOperator): Deleted.
     71        (WebCore::RenderMathMLRoot::restructureWrappers): Deleted.
     72        (WebCore::RenderMathMLRoot::addChild): Deleted.
     73        (WebCore::RenderMathMLRoot::firstLineBaseline): Deleted.
     74        (WebCore::RenderMathMLRoot::layout): Deleted.
     75        (WebCore::RenderMathMLRootWrapper::createAnonymousWrapper): Deleted.
     76        (WebCore::RenderMathMLRootWrapper::removeChildWithoutRestructuring): Deleted.
     77        (WebCore::RenderMathMLRootWrapper::removeChild): Deleted.
     78        * rendering/mathml/RenderMathMLRoot.h: Make RenderMathMLRoot inherit from RenderMathMLRow.
     79        Make RenderMathMLRoot support <msqrt>.
     80        Remove all the anonymous wrapper stuff and instead use a MathOperator for the radical symbol.
     81        Update function declaration to implement layout without flexbox and add some helper functions.
     82        * rendering/mathml/RenderMathMLRow.cpp: Allow to get the exact metrics of the chid row,
     83        for use in RenderMathMLRoot.
     84        (WebCore::RenderMathMLRow::computeLineVerticalStretch): rename parameters.
     85        (WebCore::RenderMathMLRow::layoutRowItems): Set parameters to the final ascent, descent and
     86        logical width of the chid row. Set the temporary logical width for RenderMathRoot before
     87        laying the children out.
     88        (WebCore::RenderMathMLRow::layoutBlock): Rename parameters ; add a dummy logicalWidth
     89        parameter.
     90        * rendering/mathml/RenderMathMLRow.h: Make some functions accessible or overridable by
     91        RenderMathMLRoot. Make layoutRowItems return the final ascent, descent and logical width
     92        after the chid row is laid out.
     93        * rendering/mathml/RenderMathMLScripts.cpp: Move mirrorIfNeeded to RenderMathMLBlock.
     94        (WebCore::RenderMathMLScripts::mirrorIfNeeded): Deleted.
     95        * rendering/mathml/RenderMathMLScripts.h: Move mirrorIfNeeded to RenderMathMLBlock.
     96        * rendering/mathml/RenderMathMLSquareRoot.cpp: Removed.
     97        * rendering/mathml/RenderMathMLSquareRoot.h: Removed.
     98        * rendering/mathml/MathOperator.cpp:
     99        (WebCore::MathOperator::paint): Apply a mirroring scale transform to radical symbol
     100        in RTL direction.
     101
    11022016-06-17  Chris Dumez  <cdumez@apple.com>
    2103
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r202167 r202168  
    16491649                439046DF12DA25E17BAF80A2 /* MathMLOperatorDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CB12DA25E17BAF80A2 /* MathMLOperatorDictionary.cpp */; };
    16501650                439046DF12DA25E800AF80A2 /* RenderMathMLOperator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */; };
    1651                 439046DF12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CB12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp */; };
    16521651                439046E012DA25E17BAF80A2 /* MathMLOperatorDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CC12DA25E17BAF80A2 /* MathMLOperatorDictionary.h */; };
    16531652                439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */; };
    1654                 439046E012DA25E800BF80A3 /* RenderMathMLRadicalOperator.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CC12DA25E800BF80A3 /* RenderMathMLRadicalOperator.h */; };
    16551653                439046E112DA25E800AF80A2 /* RenderMathMLRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */; };
    16561654                439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */; };
    16571655                439046E312DA25E800AF80A2 /* RenderMathMLRow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046CF12DA25E800AF80A2 /* RenderMathMLRow.cpp */; };
    16581656                439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D012DA25E800AF80A2 /* RenderMathMLRow.h */; };
    1659                 439046E512DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046D112DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp */; };
    1660                 439046E612DA25E800AF80A2 /* RenderMathMLSquareRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D212DA25E800AF80A2 /* RenderMathMLSquareRoot.h */; };
    16611657                439046E712DA25E800AF80A2 /* RenderMathMLScripts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 439046D312DA25E800AF80A2 /* RenderMathMLScripts.cpp */; };
    16621658                439046E812DA25E800AF80A2 /* RenderMathMLScripts.h in Headers */ = {isa = PBXBuildFile; fileRef = 439046D412DA25E800AF80A2 /* RenderMathMLScripts.h */; };
     
    92059201                439046CB12DA25E17BAF80A2 /* MathMLOperatorDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLOperatorDictionary.cpp; sourceTree = "<group>"; };
    92069202                439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLOperator.cpp; sourceTree = "<group>"; };
    9207                 439046CB12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLRadicalOperator.cpp; sourceTree = "<group>"; };
    92089203                439046CC12DA25E17BAF80A2 /* MathMLOperatorDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathMLOperatorDictionary.h; sourceTree = "<group>"; };
    92099204                439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLOperator.h; sourceTree = "<group>"; };
    9210                 439046CC12DA25E800BF80A3 /* RenderMathMLRadicalOperator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLRadicalOperator.h; sourceTree = "<group>"; };
    92119205                439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLRoot.cpp; sourceTree = "<group>"; };
    92129206                439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLRoot.h; sourceTree = "<group>"; };
    92139207                439046CF12DA25E800AF80A2 /* RenderMathMLRow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLRow.cpp; sourceTree = "<group>"; };
    92149208                439046D012DA25E800AF80A2 /* RenderMathMLRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLRow.h; sourceTree = "<group>"; };
    9215                 439046D112DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLSquareRoot.cpp; sourceTree = "<group>"; };
    9216                 439046D212DA25E800AF80A2 /* RenderMathMLSquareRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLSquareRoot.h; sourceTree = "<group>"; };
    92179209                439046D312DA25E800AF80A2 /* RenderMathMLScripts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMathMLScripts.cpp; sourceTree = "<group>"; };
    92189210                439046D412DA25E800AF80A2 /* RenderMathMLScripts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMathMLScripts.h; sourceTree = "<group>"; };
     
    1694616938                                439046CB12DA25E800AF80A2 /* RenderMathMLOperator.cpp */,
    1694716939                                439046CC12DA25E800AF80A2 /* RenderMathMLOperator.h */,
    16948                                 439046CB12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp */,
    16949                                 439046CC12DA25E800BF80A3 /* RenderMathMLRadicalOperator.h */,
    1695016940                                439046CD12DA25E800AF80A2 /* RenderMathMLRoot.cpp */,
    1695116941                                439046CE12DA25E800AF80A2 /* RenderMathMLRoot.h */,
     
    1695616946                                DBFCB0EBFF5CD77EBEB35395 /* RenderMathMLSpace.cpp */,
    1695716947                                331FF67DE197B57393C46AA7 /* RenderMathMLSpace.h */,
    16958                                 439046D112DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp */,
    16959                                 439046D212DA25E800AF80A2 /* RenderMathMLSquareRoot.h */,
    1696016948                                439046D712DA25E800AF80A9 /* RenderMathMLToken.cpp */,
    1696116949                                439046D812DA25E800AF80A9 /* RenderMathMLToken.h */,
     
    2768127669                                439046DE12DA25E800AF80A2 /* RenderMathMLMath.h in Headers */,
    2768227670                                439046E012DA25E800AF80A2 /* RenderMathMLOperator.h in Headers */,
    27683                                 439046E012DA25E800BF80A3 /* RenderMathMLRadicalOperator.h in Headers */,
    2768427671                                439046E212DA25E800AF80A2 /* RenderMathMLRoot.h in Headers */,
    2768527672                                439046E412DA25E800AF80A2 /* RenderMathMLRow.h in Headers */,
    2768627673                                439046E812DA25E800AF80A2 /* RenderMathMLScripts.h in Headers */,
    27687                                 439046E612DA25E800AF80A2 /* RenderMathMLSquareRoot.h in Headers */,
    2768827674                                439046EC12DA25E800AF80A9 /* RenderMathMLToken.h in Headers */,
    2768927675                                439046EA12DA25E800AF80A2 /* RenderMathMLUnderOver.h in Headers */,
     
    3136131347                                3571883EEF618793751E4089 /* RenderMathMLMenclose.cpp in Sources */,
    3136231348                                439046DF12DA25E800AF80A2 /* RenderMathMLOperator.cpp in Sources */,
    31363                                 439046DF12DA25E800BF80A3 /* RenderMathMLRadicalOperator.cpp in Sources */,
    3136431349                                439046E112DA25E800AF80A2 /* RenderMathMLRoot.cpp in Sources */,
    3136531350                                439046E312DA25E800AF80A2 /* RenderMathMLRow.cpp in Sources */,
    3136631351                                439046E712DA25E800AF80A2 /* RenderMathMLScripts.cpp in Sources */,
    3136731352                                5B7A208D2E12979B4AE19DE6 /* RenderMathMLSpace.cpp in Sources */,
    31368                                 439046E512DA25E800AF80A2 /* RenderMathMLSquareRoot.cpp in Sources */,
    3136931353                                439046EB12DA25E800AF80A9 /* RenderMathMLToken.cpp in Sources */,
    3137031354                                439046E912DA25E800AF80A2 /* RenderMathMLUnderOver.cpp in Sources */,
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r202014 r202168  
    36303630bool AccessibilityRenderObject::isMathRow() const
    36313631{
    3632     return m_renderer && m_renderer->isRenderMathMLRow();
     3632    return m_renderer && m_renderer->isRenderMathMLRow() && !isMathRoot();
    36333633}
    36343634
     
    37823782    if (!isMathRoot())
    37833783        return nullptr;
    3784     RenderMathMLRoot* root = &downcast<RenderMathMLRoot>(*m_renderer);
    3785     AccessibilityObject* rootRadicandWrapper = axObjectCache()->getOrCreate(root->baseWrapper());
    3786     if (!rootRadicandWrapper)
    3787         return nullptr;
    3788     AccessibilityObject* rootRadicand = rootRadicandWrapper->children().first().get();
    3789     ASSERT(rootRadicand && children().contains(rootRadicand));
    3790     return rootRadicand;
     3784
     3785    // For MathSquareRoot, we actually return the first child of the base.
     3786    // See also https://webkit.org/b/146452
     3787    const auto& children = this->children();
     3788    if (children.size() < 1)
     3789        return nullptr;
     3790
     3791    return children[0].get();
    37913792}
    37923793
    37933794AccessibilityObject* AccessibilityRenderObject::mathRootIndexObject()
    37943795{
    3795     if (!isMathRoot())
    3796         return nullptr;
    3797     RenderMathMLRoot* root = &downcast<RenderMathMLRoot>(*m_renderer);
    3798     AccessibilityObject* rootIndexWrapper = axObjectCache()->getOrCreate(root->indexWrapper());
    3799     if (!rootIndexWrapper)
    3800         return nullptr;
    3801     AccessibilityObject* rootIndex = rootIndexWrapper->children().first().get();
    3802     ASSERT(rootIndex && children().contains(rootIndex));
    3803     return rootIndex;
     3796    if (!isMathRoot() || isMathSquareRoot())
     3797        return nullptr;
     3798
     3799    const auto& children = this->children();
     3800    if (children.size() < 2)
     3801        return nullptr;
     3802
     3803    return children[1].get();
    38043804}
    38053805
  • trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp

    r200041 r202168  
    3939#include "RenderMathMLRow.h"
    4040#include "RenderMathMLScripts.h"
    41 #include "RenderMathMLSquareRoot.h"
    4241#include "RenderMathMLUnderOver.h"
    4342
     
    5857void MathMLInlineContainerElement::childrenChanged(const ChildChange& change)
    5958{
    60     if (renderer()) {
    61         // FIXME: Parsing of operator properties should be done in the element classes rather than in the renderer classes.
    62         // See http://webkit.org/b/156537
    63         if (is<RenderMathMLRow>(*renderer()))
    64             downcast<RenderMathMLRow>(*renderer()).updateOperatorProperties();
    65         else if (hasTagName(msqrtTag)) {
    66             // Update operator properties for the base wrapper.
    67             // FIXME: This won't be necessary when RenderMathMLSquareRoot derives from RenderMathMLRow and does not use anonymous wrappers.
    68             // See http://webkit.org/b/153987
    69             auto* childRenderer = renderer()->lastChild();
    70             if (is<RenderMathMLRow>(childRenderer))
    71                 downcast<RenderMathMLRow>(*childRenderer).updateOperatorProperties();
    72         }
    73     }
     59    // FIXME: Parsing of operator properties should be done in the element classes rather than in the renderer classes.
     60    // See https://webkit.org/b/156537
     61    if (renderer() && is<RenderMathMLRow>(*renderer()))
     62        downcast<RenderMathMLRow>(*renderer()).updateOperatorProperties();
    7463    MathMLElement::childrenChanged(change);
    7564}
     
    9786    if (hasTagName(mfracTag))
    9887        return createRenderer<RenderMathMLFraction>(*this, WTFMove(style));
    99     if (hasTagName(msqrtTag))
    100         return createRenderer<RenderMathMLSquareRoot>(*this, WTFMove(style));
    101     if (hasTagName(mrootTag))
     88    if (hasTagName(msqrtTag) || hasTagName(mrootTag))
    10289        return createRenderer<RenderMathMLRoot>(*this, WTFMove(style));
    10390    if (hasTagName(mfencedTag))
  • trunk/Source/WebCore/rendering/RenderObject.h

    r202167 r202168  
    338338    virtual bool isRenderMathMLTable() const { return false; }
    339339    virtual bool isRenderMathMLOperator() const { return false; }
    340     virtual bool isRenderMathMLRadicalOperator() const { return false; }
    341340    virtual bool isRenderMathMLRow() const { return false; }
    342341    virtual bool isRenderMathMLMath() const { return false; }
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp

    r200041 r202168  
    7373
    7474    return style().fontMetrics().xHeight() / 2;
     75}
     76
     77LayoutUnit RenderMathMLBlock::mirrorIfNeeded(LayoutUnit horizontalOffset, LayoutUnit boxWidth) const
     78{
     79    if (style().direction() == RTL)
     80        return logicalWidth() - boxWidth - horizontalOffset;
     81
     82    return horizontalOffset;
    7583}
    7684
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLBlock.h

    r200041 r202168  
    6666
    6767    LayoutUnit mathAxisHeight() const;
     68    LayoutUnit mirrorIfNeeded(LayoutUnit horizontalOffset, LayoutUnit boxWidth = 0) const;
     69    LayoutUnit mirrorIfNeeded(LayoutUnit horizontalOffset, const RenderBox& child) const { return mirrorIfNeeded(horizontalOffset, child.logicalWidth()); }
    6870   
    6971protected:
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp

    r202156 r202168  
    385385}
    386386
    387 LayoutUnit RenderMathMLOperator::trailingSpaceError()
    388 {
    389     // For OpenType MATH font, the layout is based on RenderMathOperator for which the preferred width is sometimes overestimated (bug https://bugs.webkit.org/show_bug.cgi?id=130326).
    390     // Hence we determine the error in the logical width with respect to the actual width of the glyph(s) used to paint the operator.
    391     return m_mathOperator.maxPreferredWidth() - m_mathOperator.width();
    392 }
    393 
    394387}
    395388
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h

    r202161 r202168  
    6464    void updateOperatorProperties();
    6565    void updateFromElement() final;
    66     LayoutUnit trailingSpaceError();
    6766
    6867protected:
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp

    r200098 r202168  
    22 * Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved.
    33 * Copyright (C) 2010 François Sausset (sausset@gmail.com). All rights reserved.
     4 * Copyright (C) 2016 Igalia S.L.
    45 *
    56 * Redistribution and use in source and binary forms, with or without
     
    3334#include "FontCache.h"
    3435#include "GraphicsContext.h"
     36#include "MathMLNames.h"
    3537#include "PaintInfo.h"
    3638#include "RenderIterator.h"
    37 #include "RenderMathMLRadicalOperator.h"
    38 #include "RenderMathMLSquareRoot.h"
     39#include "RenderMathMLMenclose.h"
     40#include "RenderMathMLOperator.h"
     41
     42static const UChar gRadicalCharacter = 0x221A;
    3943
    4044namespace WebCore {
    41    
    42 // RenderMathMLRoot implements drawing of radicals via the <mroot> and <msqrt> elements. For valid MathML elements, the DOM is
    43 //
    44 // <mroot> Base Index </mroot>
    45 // <msqrt> Child1 Child2 ... ChildN </msqrt>
    46 //
    47 // and the structure of the render tree will be
    48 //
    49 // IndexWrapper RadicalWrapper BaseWrapper
    50 //
    51 // where RadicalWrapper contains an <mo>&#x221A;</mo>.
    52 // For <mroot>, the IndexWrapper and BaseWrapper should contain exactly one child (Index and Base respectively).
    53 // For <msqrt>, the IndexWrapper should be empty and the BaseWrapper can contain any number of children (Child1, ... ChildN).
    54 //
    55 // 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.
    56 // 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.
    5745
    5846RenderMathMLRoot::RenderMathMLRoot(Element& element, RenderStyle&& style)
    59     : RenderMathMLBlock(element, WTFMove(style))
    60 {
    61 }
    62 
    63 RenderMathMLRootWrapper* RenderMathMLRoot::baseWrapper() const
    64 {
    65     ASSERT(!isEmpty());
    66     return downcast<RenderMathMLRootWrapper>(lastChild());
    67 }
    68 
    69 RenderMathMLBlock* RenderMathMLRoot::radicalWrapper() const
    70 {
    71     ASSERT(!isEmpty());
    72     return downcast<RenderMathMLBlock>(lastChild()->previousSibling());
    73 }
    74 
    75 RenderMathMLRootWrapper* RenderMathMLRoot::indexWrapper() const
    76 {
    77     ASSERT(!isEmpty());
    78     return is<RenderMathMLSquareRoot>(*this) ? nullptr : downcast<RenderMathMLRootWrapper>(firstChild());
    79 }
    80 
    81 RenderMathMLRadicalOperator* RenderMathMLRoot::radicalOperator() const
    82 {
    83     ASSERT(!isEmpty());
    84     return downcast<RenderMathMLRadicalOperator>(radicalWrapper()->firstChild());
    85 }
    86 
    87 void RenderMathMLRoot::restructureWrappers()
    88 {
    89     ASSERT(!isEmpty());
    90 
    91     auto base = baseWrapper();
    92     auto index = indexWrapper();
    93     auto radical = radicalWrapper();
    94 
    95     // For visual consistency with the initial state, we remove the radical when the base/index wrappers become empty.
    96     if (base->isEmpty() && (!index || index->isEmpty())) {
    97         if (!radical->isEmpty()) {
    98             auto child = radicalOperator();
    99             radical->removeChild(*child);
    100             child->destroy();
    101         }
    102         // FIXME: early return!!!
    103     }
    104 
    105     if (radical->isEmpty()) {
    106         // We create the radical operator.
    107         RenderPtr<RenderMathMLRadicalOperator> radicalOperator = createRenderer<RenderMathMLRadicalOperator>(document(), RenderStyle::createAnonymousStyleWithDisplay(style(), FLEX));
    108         radicalOperator->initializeStyle();
    109         radical->addChild(radicalOperator.leakPtr());
    110     }
    111 
    112     if (isRenderMathMLSquareRoot())
    113         return;
    114 
    115     if (auto childToMove = base->lastChild()) {
    116         // 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.
    117         if (childToMove->previousSibling() && index->isEmpty()) {
    118             base->removeChildWithoutRestructuring(*childToMove);
    119             index->addChild(childToMove);
    120         }
    121     }
    122 
    123     if (auto childToMove = index->firstChild()) {
    124         // We move the first child of the index wrapper into the base wrapper if:
    125         // - either the index wrapper has at least two children.
    126         // - or the base wrapper is empty but the index wrapper is not.
    127         if (childToMove->nextSibling() || base->isEmpty()) {
    128             index->removeChildWithoutRestructuring(*childToMove);
    129             base->addChild(childToMove);
    130         }
    131     }
    132 }
    133 
    134 void RenderMathMLRoot::addChild(RenderObject* newChild, RenderObject* beforeChild)
    135 {
    136     if (isEmpty()) {
    137         if (!isRenderMathMLSquareRoot()) {
    138             // We add the IndexWrapper.
    139             RenderMathMLBlock::addChild(RenderMathMLRootWrapper::createAnonymousWrapper(this).leakPtr());
    140         }
    141 
    142         // We create the radicalWrapper
    143         RenderMathMLBlock::addChild(RenderMathMLBlock::createAnonymousMathMLBlock().leakPtr());
    144 
    145         // We create the BaseWrapper.
    146         RenderMathMLBlock::addChild(RenderMathMLRootWrapper::createAnonymousWrapper(this).leakPtr());
    147 
    148         updateStyle();
    149     }
    150 
    151     // We insert the child.
    152     auto base = baseWrapper();
    153     auto index = indexWrapper();
    154     RenderElement* actualParent;
    155     RenderElement* actualBeforeChild;
    156     if (is<RenderMathMLSquareRoot>(*this)) {
    157         // For square root, we always insert the child into the base wrapper.
    158         actualParent = base;
    159         if (beforeChild && beforeChild->parent() == base)
    160             actualBeforeChild = downcast<RenderElement>(beforeChild);
    161         else
    162             actualBeforeChild = nullptr;
    163     } else {
    164         // For mroot, we insert the child into the parent of beforeChild, or at the end of the index. The wrapper structure is reorganize below.
    165         actualParent = beforeChild ? beforeChild->parent() : nullptr;
    166         if (actualParent == base || actualParent == index)
    167             actualBeforeChild = downcast<RenderElement>(beforeChild);
    168         else {
    169             actualParent = index;
    170             actualBeforeChild = nullptr;
    171         }
    172     }
    173     actualParent->addChild(newChild, actualBeforeChild);
    174     restructureWrappers();
     47    : RenderMathMLRow(element, WTFMove(style))
     48{
     49    // Determine what kind of expression we have by element name
     50    if (element.hasTagName(MathMLNames::msqrtTag))
     51        m_kind = SquareRoot;
     52    else if (element.hasTagName(MathMLNames::mrootTag))
     53        m_kind = RootWithIndex;
     54
     55    m_radicalOperator.setOperator(RenderMathMLRoot::style(), gRadicalCharacter, MathOperator::Type::VerticalOperator);
     56}
     57
     58bool RenderMathMLRoot::isValid() const
     59{
     60    // Verify whether the list of children is valid:
     61    // <msqrt> child1 child2 ... childN </msqrt>
     62    // <mroot> base index </mroot>
     63    if (m_kind == SquareRoot)
     64        return true;
     65
     66    ASSERT(m_kind == RootWithIndex);
     67    RenderBox* child = firstChildBox();
     68    if (!child)
     69        return false;
     70    child = child->nextSiblingBox();
     71    return child && !child->nextSiblingBox();
     72}
     73
     74RenderBox& RenderMathMLRoot::getBase() const
     75{
     76    ASSERT(isValid());
     77    ASSERT(m_kind == RootWithIndex);
     78    return *firstChildBox();
     79}
     80
     81RenderBox& RenderMathMLRoot::getIndex() const
     82{
     83    ASSERT(isValid());
     84    ASSERT(m_kind == RootWithIndex);
     85    return *firstChildBox()->nextSiblingBox();
    17586}
    17687
    17788void RenderMathMLRoot::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
    17889{
    179     RenderMathMLBlock::styleDidChange(diff, oldStyle);
    180     if (!isEmpty())
    181         updateStyle();
     90    RenderMathMLRow::styleDidChange(diff, oldStyle);
     91    m_radicalOperator.reset(style());
     92    updateStyle();
    18293}
    18394
    18495void RenderMathMLRoot::updateFromElement()
    18596{
    186     RenderMathMLBlock::updateFromElement();
    187     if (!isEmpty())
    188         updateStyle();
     97    RenderMathMLRow::updateFromElement();
     98    updateStyle();
    18999}
    190100
    191101void RenderMathMLRoot::updateStyle()
    192102{
    193     ASSERT(!isEmpty());
    194 
    195103    // We set some constants to draw the radical, as defined in the OpenType MATH tables.
    196104
     
    200108    m_verticalGap = 11 * m_ruleThickness / 4;
    201109    m_extraAscender = m_ruleThickness;
    202     LayoutUnit kernBeforeDegree = 5 * style().fontCascade().size() / 18;
    203     LayoutUnit kernAfterDegree = -10 * style().fontCascade().size() / 18;
     110    m_kernBeforeDegree = 5 * style().fontCascade().size() / 18;
     111    m_kernAfterDegree = -10 * style().fontCascade().size() / 18;
    204112    m_degreeBottomRaisePercent = 0.6f;
    205113
     
    211119        m_extraAscender = mathData->getMathConstant(primaryFont, OpenTypeMathData::RadicalExtraAscender);
    212120
    213         if (!isRenderMathMLSquareRoot()) {
    214             kernBeforeDegree = mathData->getMathConstant(primaryFont, OpenTypeMathData::RadicalKernBeforeDegree);
    215             kernAfterDegree = mathData->getMathConstant(primaryFont, OpenTypeMathData::RadicalKernAfterDegree);
     121        if (m_kind == RootWithIndex) {
     122            m_kernBeforeDegree = mathData->getMathConstant(primaryFont, OpenTypeMathData::RadicalKernBeforeDegree);
     123            m_kernAfterDegree = mathData->getMathConstant(primaryFont, OpenTypeMathData::RadicalKernAfterDegree);
    216124            m_degreeBottomRaisePercent = mathData->getMathConstant(primaryFont, OpenTypeMathData::RadicalDegreeBottomRaisePercent);
    217125        }
    218126    }
    219 
    220     // We set the style of the anonymous wrappers.
    221 
    222     auto radical = radicalWrapper();
    223     auto radicalStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), FLEX);
    224     radicalStyle.setMarginTop(Length(0, Fixed)); // This will be updated in RenderMathMLRoot::layout().
    225     radical->setStyle(WTFMove(radicalStyle));
    226     radical->setNeedsLayoutAndPrefWidthsRecalc();
    227 
    228     auto base = baseWrapper();
    229     auto baseStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), FLEX);
    230     baseStyle.setMarginTop(Length(0, Fixed)); // This will be updated in RenderMathMLRoot::layout().
    231     baseStyle.setAlignItemsPosition(ItemPositionBaseline);
    232     base->setStyle(WTFMove(baseStyle));
    233     base->setNeedsLayoutAndPrefWidthsRecalc();
    234 
    235     if (!isRenderMathMLSquareRoot()) {
    236         // For mroot, we also set the style of the index wrapper.
    237         auto index = indexWrapper();
    238         auto indexStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), FLEX);
    239         indexStyle.setMarginTop(Length(0, Fixed)); // This will be updated in RenderMathMLRoot::layout().
    240         indexStyle.setMarginStart(Length(kernBeforeDegree, Fixed));
    241         indexStyle.setMarginEnd(Length(kernAfterDegree, Fixed));
    242         indexStyle.setAlignItemsPosition(ItemPositionBaseline);
    243         index->setStyle(WTFMove(indexStyle));
    244         index->setNeedsLayoutAndPrefWidthsRecalc();
    245     }
    246 }
    247 
    248 Optional<int> RenderMathMLRoot::firstLineBaseline() const
    249 {
    250     if (!isEmpty()) {
    251         auto base = baseWrapper();
    252         return static_cast<int>(lroundf(base->firstLineBaseline().valueOr(-1) + base->marginTop()));
    253     }
    254 
    255     return RenderMathMLBlock::firstLineBaseline();
    256 }
    257 
    258 void RenderMathMLRoot::layout()
    259 {
    260     if (isEmpty()) {
    261         RenderMathMLBlock::layout();
    262         return;
    263     }
    264 
    265     // FIXME: It seems that changing the top margin of the base below modifies its logical height and leads to reftest failures.
    266     // For now, we workaround that by avoiding to recompute the child margins if they were not reset in updateStyle().
    267     auto base = baseWrapper();
    268     if (base->marginTop() > 0) {
    269         RenderMathMLBlock::layout();
    270         return;
    271     }
    272 
    273     // We layout the children.
    274     for (RenderObject* child = firstChild(); child; child = child->nextSibling()) {
    275         if (child->needsLayout())
    276             downcast<RenderElement>(*child).layout();
    277     }
    278 
    279     auto radical = radicalOperator();
    280     if (radical) {
    281         // We stretch the radical sign to cover the height of the base wrapper.
    282         float baseHeight = base->logicalHeight();
    283         float baseHeightAboveBaseline = base->firstLineBaseline().valueOr(baseHeight);
    284         float baseDepthBelowBaseline = baseHeight - baseHeightAboveBaseline;
    285         baseHeightAboveBaseline += m_verticalGap;
    286         radical->stretchTo(baseHeightAboveBaseline, baseDepthBelowBaseline);
    287 
    288         // We modify the top margins to adjust the vertical positions of wrappers.
    289         float radicalTopMargin = m_extraAscender;
    290         float baseTopMargin = m_verticalGap + m_ruleThickness + m_extraAscender;
    291         if (!isRenderMathMLSquareRoot()) {
    292             // For mroot, we try to place the index so the space below its baseline is m_degreeBottomRaisePercent times the height of the radical.
    293             auto index = indexWrapper();
    294             float indexHeight = 0;
    295             if (!index->isEmpty())
    296                 indexHeight = downcast<RenderBlock>(*index->firstChild()).logicalHeight();
    297             float indexTopMargin = (1.0 - m_degreeBottomRaisePercent) * radical->stretchSize() + radicalTopMargin - indexHeight;
    298             if (indexTopMargin < 0) {
    299                 // If the index is too tall, we must add space at the top of renderer.
    300                 radicalTopMargin -= indexTopMargin;
    301                 baseTopMargin -= indexTopMargin;
    302                 indexTopMargin = 0;
    303             }
    304             index->mutableStyle().setMarginTop(Length(indexTopMargin, Fixed));
    305         }
    306         radical->mutableStyle().setMarginTop(Length(radicalTopMargin, Fixed));
    307         base->mutableStyle().setMarginTop(Length(baseTopMargin, Fixed));
    308     }
    309 
    310     RenderMathMLBlock::layout();
     127}
     128
     129void RenderMathMLRoot::computePreferredLogicalWidths()
     130{
     131    ASSERT(preferredLogicalWidthsDirty());
     132
     133    updateStyle();
     134
     135    if (!isValid()) {
     136        m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = 0;
     137        setPreferredLogicalWidthsDirty(false);
     138        return;
     139    }
     140
     141    LayoutUnit preferredWidth = 0;
     142    if (m_kind == SquareRoot) {
     143        preferredWidth += m_radicalOperator.maxPreferredWidth();
     144        setPreferredLogicalWidthsDirty(true);
     145        RenderMathMLRow::computePreferredLogicalWidths();
     146        preferredWidth += m_maxPreferredLogicalWidth;
     147    } else {
     148        ASSERT(m_kind == RootWithIndex);
     149        preferredWidth += m_kernBeforeDegree;
     150        preferredWidth += getIndex().maxPreferredLogicalWidth();
     151        preferredWidth += m_kernAfterDegree;
     152        preferredWidth += m_radicalOperator.maxPreferredWidth();
     153        preferredWidth += getBase().maxPreferredLogicalWidth();
     154    }
     155
     156    m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = preferredWidth;
     157    setPreferredLogicalWidthsDirty(false);
     158}
     159
     160void RenderMathMLRoot::layoutBlock(bool relayoutChildren, LayoutUnit)
     161{
     162    ASSERT(needsLayout());
     163
     164    if (!relayoutChildren && simplifiedLayout())
     165        return;
     166
     167    updateStyle();
     168    m_radicalOperatorTop = 0;
     169    m_baseWidth = 0;
     170
     171    if (!isValid()) {
     172        setLogicalWidth(0);
     173        setLogicalHeight(0);
     174        clearNeedsLayout();
     175        return;
     176    }
     177
     178    // We layout the children, determine the vertical metrics of the base and set the logical width.
     179    // Note: Per the MathML specification, the children of <msqrt> are wrapped in an inferred <mrow>, which is the desired base.
     180    LayoutUnit baseAscent, baseDescent;
     181    recomputeLogicalWidth();
     182    if (m_kind == SquareRoot) {
     183        baseAscent = baseDescent;
     184        RenderMathMLRow::computeLineVerticalStretch(baseAscent, baseDescent);
     185        RenderMathMLRow::layoutRowItems(baseAscent, baseDescent);
     186        m_baseWidth = logicalWidth();
     187    } else {
     188        getBase().layoutIfNeeded();
     189        m_baseWidth = getBase().logicalWidth();
     190        baseAscent = ascentForChild(getBase());
     191        baseDescent = getBase().logicalHeight() - baseAscent;
     192        getIndex().layoutIfNeeded();
     193    }
     194
     195    // Stretch the radical operator to cover the base height.
     196    // We can then determine the metrics of the radical operator + the base.
     197    m_radicalOperator.stretchTo(style(), baseAscent, baseDescent);
     198    LayoutUnit radicalOperatorHeight = m_radicalOperator.ascent() + m_radicalOperator.descent();
     199    LayoutUnit indexBottomRaise = m_degreeBottomRaisePercent * radicalOperatorHeight;
     200    LayoutUnit radicalAscent = baseAscent + m_verticalGap + m_ruleThickness + m_extraAscender;
     201    LayoutUnit radicalDescent = std::max<LayoutUnit>(baseDescent, radicalOperatorHeight + m_extraAscender - radicalAscent);
     202    LayoutUnit descent = radicalDescent;
     203    LayoutUnit ascent = radicalAscent;
     204
     205    // We set the logical width.
     206    if (m_kind == SquareRoot)
     207        setLogicalWidth(m_radicalOperator.width() + m_baseWidth);
     208    else {
     209        ASSERT(m_kind == RootWithIndex);
     210        setLogicalWidth(m_kernBeforeDegree + getIndex().logicalWidth() + m_kernAfterDegree + m_radicalOperator.width() + m_baseWidth);
     211    }
     212
     213    // For <mroot>, we update the metrics to take into account the index.
     214    LayoutUnit indexAscent, indexDescent;
     215    if (m_kind == RootWithIndex) {
     216        indexAscent = ascentForChild(getIndex());
     217        indexDescent = getIndex().logicalHeight() - indexAscent;
     218        ascent = std::max<LayoutUnit>(radicalAscent, indexBottomRaise + indexDescent + indexAscent - descent);
     219    }
     220
     221    // We set the final position of children.
     222    m_radicalOperatorTop = ascent - radicalAscent + m_extraAscender;
     223    LayoutUnit horizontalOffset = m_radicalOperator.width();
     224    if (m_kind == RootWithIndex)
     225        horizontalOffset += m_kernBeforeDegree + getIndex().logicalWidth() + m_kernAfterDegree;
     226    LayoutPoint baseLocation(mirrorIfNeeded(horizontalOffset, m_baseWidth), ascent - baseAscent);
     227    if (m_kind == SquareRoot) {
     228        for (auto* child = firstChildBox(); child; child = child->nextSiblingBox())
     229            child->setLocation(child->location() + baseLocation);
     230    } else {
     231        ASSERT(m_kind == RootWithIndex);
     232        getBase().setLocation(baseLocation);
     233        LayoutPoint indexLocation(mirrorIfNeeded(m_kernBeforeDegree, getIndex()), ascent + descent - indexBottomRaise - indexDescent - indexAscent);
     234        getIndex().setLocation(indexLocation);
     235    }
     236
     237    setLogicalHeight(ascent + descent);
     238    clearNeedsLayout();
     239}
     240
     241void RenderMathMLRoot::paintChildren(PaintInfo& paintInfo, const LayoutPoint& paintOffset, PaintInfo& paintInfoForChild, bool usePrintRect)
     242{
     243    for (auto* child = firstChildBox(); child; child = child->nextSiblingBox()) {
     244        if (!paintChild(*child, paintInfo, paintOffset, paintInfoForChild, usePrintRect, PaintAsInlineBlock))
     245            return;
     246    }
    311247}
    312248
    313249void RenderMathMLRoot::paint(PaintInfo& info, const LayoutPoint& paintOffset)
    314250{
    315     RenderMathMLBlock::paint(info, paintOffset);
     251    RenderMathMLRow::paint(info, paintOffset);
    316252   
    317     if (isEmpty() || info.context().paintingDisabled() || style().visibility() != VISIBLE)
    318         return;
    319 
    320     auto base = baseWrapper();
    321     auto radical = radicalOperator();
    322     if (!base || !radical || !m_ruleThickness)
    323         return;
     253    if (isEmpty() || info.context().paintingDisabled() || style().visibility() != VISIBLE || !isValid())
     254        return;
     255
     256    // We draw the radical operator.
     257    LayoutPoint radicalOperatorTopLeft = paintOffset + location();
     258    LayoutUnit horizontalOffset = 0;
     259    if (m_kind == RootWithIndex)
     260        horizontalOffset = m_kernBeforeDegree + getIndex().logicalWidth() + m_kernAfterDegree;
     261    radicalOperatorTopLeft.move(mirrorIfNeeded(horizontalOffset, m_radicalOperator.width()), m_radicalOperatorTop);
     262    m_radicalOperator.paint(style(), info, radicalOperatorTopLeft);
    324263
    325264    // We draw the radical line.
     265    if (!m_ruleThickness)
     266        return;
    326267    GraphicsContextStateSaver stateSaver(info.context());
    327268
     
    329270    info.context().setStrokeStyle(SolidStroke);
    330271    info.context().setStrokeColor(style().visitedDependentColor(CSSPropertyColor));
    331 
    332     // 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).
    333     LayoutUnit sizeError = radical->trailingSpaceError();
    334     IntPoint adjustedPaintOffset = roundedIntPoint(paintOffset + location() + base->location() + LayoutPoint(-sizeError, -(m_verticalGap + m_ruleThickness / 2)));
    335     info.context().drawLine(adjustedPaintOffset, roundedIntPoint(LayoutPoint(adjustedPaintOffset.x() + base->offsetWidth() + sizeError, adjustedPaintOffset.y())));
    336 }
    337 
    338 RenderPtr<RenderMathMLRootWrapper> RenderMathMLRootWrapper::createAnonymousWrapper(RenderMathMLRoot* renderObject)
    339 {
    340     RenderPtr<RenderMathMLRootWrapper> newBlock = createRenderer<RenderMathMLRootWrapper>(renderObject->document(), RenderStyle::createAnonymousStyleWithDisplay(renderObject->style(), FLEX));
    341     newBlock->initializeStyle();
    342     return newBlock;
    343 }
    344 
    345 void RenderMathMLRootWrapper::removeChildWithoutRestructuring(RenderObject& child)
    346 {
    347     RenderMathMLBlock::removeChild(child);
    348 }
    349 
    350 void RenderMathMLRootWrapper::removeChild(RenderObject& child)
    351 {
    352     RenderMathMLBlock::removeChild(child);
    353 
    354     if (!(beingDestroyed() || documentBeingDestroyed()))
    355         downcast<RenderMathMLRoot>(*parent()).restructureWrappers();
     272    LayoutPoint ruleOffsetFrom = paintOffset + location() + LayoutPoint(0, m_radicalOperatorTop + m_ruleThickness / 2);
     273    LayoutPoint ruleOffsetTo = ruleOffsetFrom;
     274    horizontalOffset += m_radicalOperator.width();
     275    ruleOffsetFrom.move(mirrorIfNeeded(horizontalOffset), 0);
     276    horizontalOffset += m_baseWidth;
     277    ruleOffsetTo.move(mirrorIfNeeded(horizontalOffset), 0);
     278    info.context().drawLine(ruleOffsetFrom, ruleOffsetTo);
    356279}
    357280
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h

    r200041 r202168  
    11/*
    22 * Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved.
     3 * Copyright (C) 2016 Igalia S.L.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    2930#if ENABLE(MATHML)
    3031
     32#include "MathOperator.h"
    3133#include "RenderMathMLBlock.h"
    3234#include "RenderMathMLRow.h"
     
    3436namespace WebCore {
    3537
    36 class RenderMathMLRadicalOperator;
    37 class RenderMathMLRootWrapper;
    38    
    39 // Render base^(1/index), or sqrt(base) via the derived class RenderMathMLSquareRoot, using radical notation.
    40 class RenderMathMLRoot : public RenderMathMLBlock {
     38class RenderMathMLMenclose;
     39
     40// Render base^(1/index), or sqrt(base) using radical notation.
     41class RenderMathMLRoot : public RenderMathMLRow {
    4142
    4243friend class RenderMathMLRootWrapper;
     
    4445public:
    4546    RenderMathMLRoot(Element&, RenderStyle&&);
     47    void styleDidChange(StyleDifference, const RenderStyle* oldStyle) final;
     48    void updateFromElement() final;
    4649
    47     void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) override;
    48     void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
    49     void updateFromElement() override;
    50    
    51     RenderMathMLRootWrapper* baseWrapper() const;
    52     RenderMathMLRootWrapper* indexWrapper() const;
     50    void computePreferredLogicalWidths() final;
     51    void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) final;
     52    void paintChildren(PaintInfo& forSelf, const LayoutPoint&, PaintInfo& forChild, bool usePrintRect) final;
    5353
    5454protected:
    55     void layout() override;
    56    
    57     void paint(PaintInfo&, const LayoutPoint&) override;
     55    void paint(PaintInfo&, const LayoutPoint&) final;
    5856
    5957private:
     58    bool isValid() const;
     59    RenderBox& getBase() const;
     60    RenderBox& getIndex() const;
    6061    bool isRenderMathMLRoot() const final { return true; }
    61     const char* renderName() const override { return "RenderMathMLRoot"; }
    62     Optional<int> firstLineBaseline() const override;
     62    const char* renderName() const final { return "RenderMathMLRoot"; }
    6363    void updateStyle();
    64     void restructureWrappers();
    6564
    66     RenderMathMLBlock* radicalWrapper() const;
    67     RenderMathMLRadicalOperator* radicalOperator() const;
    68 
     65    MathOperator m_radicalOperator;
    6966    LayoutUnit m_verticalGap;
    7067    LayoutUnit m_ruleThickness;
    7168    LayoutUnit m_extraAscender;
     69    LayoutUnit m_kernBeforeDegree;
     70    LayoutUnit m_kernAfterDegree;
    7271    float m_degreeBottomRaisePercent;
    73 };
     72    LayoutUnit m_radicalOperatorTop;
     73    LayoutUnit m_baseWidth;
    7474
    75 // These are specific wrappers for the index and base, that ask the parent to restructure the renderers after child removal.
    76 class RenderMathMLRootWrapper final : public RenderMathMLRow {
    77 
    78 friend class RenderMathMLRoot;
    79 
    80 public:
    81     RenderMathMLRootWrapper(Document& document, RenderStyle&& style)
    82         : RenderMathMLRow(document, WTFMove(style)) { }
    83 
    84 private:
    85     void removeChildWithoutRestructuring(RenderObject&);
    86     void removeChild(RenderObject&) override;
    87     static RenderPtr<RenderMathMLRootWrapper> createAnonymousWrapper(RenderMathMLRoot* renderObject);
    88     bool isRenderMathMLRootWrapper() const override { return true; }
    89     const char* renderName() const override { return "RenderMathMLRootWrapper"; }
     75    enum RootType { SquareRoot, RootWithIndex };
     76    RootType m_kind;
     77    bool isRenderMathMLSquareRoot() const final { return m_kind == SquareRoot; }
    9078};
    9179
     
    9381
    9482SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRoot, isRenderMathMLRoot())
    95 SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRootWrapper, isRenderMathMLRootWrapper())
    9683
    9784#endif // ENABLE(MATHML)
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp

    r201418 r202168  
    132132
    133133    width += borderEnd() + paddingEnd();
    134     // FIXME: RenderMathMLRoot classes should also recalculate the exact logical width instead of using the preferred width.
    135     // See http://webkit.org/b/153987
    136     if ((!isRenderMathMLMath() || style().display() == INLINE) && !isRenderMathMLRoot())
     134    if ((!isRenderMathMLMath() || style().display() == INLINE))
    137135        setLogicalWidth(width);
    138136
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp

    r200041 r202168  
    304304}
    305305
    306 LayoutUnit RenderMathMLScripts::mirrorIfNeeded(LayoutUnit horizontalOffset, const RenderBox& child)
    307 {
    308     if (style().direction() == RTL)
    309         return logicalWidth() - child.logicalWidth() - horizontalOffset;
    310 
    311     return horizontalOffset;
    312 }
    313 
    314306void RenderMathMLScripts::layoutBlock(bool relayoutChildren, LayoutUnit)
    315307{
  • trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.h

    r200041 r202168  
    5252    void computePreferredLogicalWidths() override;
    5353    void getScriptMetricsAndLayoutIfNeeded(RenderBox* base, RenderBox* script, LayoutUnit& minSubScriptShift, LayoutUnit& minSupScriptShift, LayoutUnit& maxScriptDescent, LayoutUnit& maxScriptAscent);
    54     LayoutUnit mirrorIfNeeded(LayoutUnit horizontalOffset, const RenderBox& child);
    5554
    5655    enum ScriptsType { Sub, Super, SubSup, Multiscripts };
Note: See TracChangeset for help on using the changeset viewer.