Use size variants and glyph assembly from the MATH data.
authorfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 24 May 2014 04:56:50 +0000 (04:56 +0000)
committerfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 24 May 2014 04:56:50 +0000 (04:56 +0000)
https://bugs.webkit.org/show_bug.cgi?id=130322

Reviewed by Chris Fleizach.

Source/WebCore:
This patch modifies the RenderMathMLOperator code to use the MATH table
when one is provided in the current font on the <math> tag. More
precisely, the MathVariants table is used to draw a size variant or
a glyph assembly. The displaystyle attribute is not supported yet, so
for now large operators are always assumed to be in display style. The
MATH support does not work well with all platforms+fonts, so at the
moment the default font-family on the <math> is not changed.

Tests: mathml/opentype/large-operators-LatinModern.html
       mathml/opentype/opentype-stretchy.html
       mathml/opentype/vertical-LatinModern.html

* css/mathml.css: We only specify the default font-family on the math root, so that people can easily style the mathematics.
For now, old fonts without the MATH table are still used as the default.
(math):
(math, mfenced > *): Deleted.
(mo, mfenced): Deleted.
* platform/graphics/SimpleFontData.cpp: don't return the math data if the font is loading.
(WebCore::SimpleFontData::mathData):
* platform/graphics/opentype/OpenTypeMathData.cpp: update #ifdef so that disabling ENABLE_OPENTYPE_MATH won't lead to errors with unused parameters.
(WebCore::OpenTypeMathData::OpenTypeMathData):
(WebCore::OpenTypeMathData::getMathConstant):
(WebCore::OpenTypeMathData::getItalicCorrection):
(WebCore::OpenTypeMathData::getMathVariants):
* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::boundsForGlyph):
(WebCore::RenderMathMLOperator::heightForGlyph):
(WebCore::RenderMathMLOperator::advanceForGlyph):
(WebCore::RenderMathMLOperator::computePreferredLogicalWidths): We handle preferred width of size variants.
(WebCore::RenderMathMLOperator::shouldAllowStretching): This function now only returns whether the operator will stretch and no longer has side effect.
(WebCore::RenderMathMLOperator::getGlyphAssemblyFallBack): We add a function to convert from the MathVariant table data to the format supported by RenderMathMLOperator.
(WebCore::RenderMathMLOperator::getDisplayStyleLargeOperator): We add a function to get the glyph that will be used for large operators in display style.
(WebCore::RenderMathMLOperator::findStretchyData): We make this function handle size variants.
(WebCore::RenderMathMLOperator::updateStyle): We handle size variants.
(WebCore::RenderMathMLOperator::paint): We handle size variants.
* rendering/mathml/RenderMathMLOperator.h:

LayoutTests:
This adds some pixel tests for large operators and vertical stretchy operators.

* mathml/opentype/LICENSE-LatinModern.txt: Added.
* mathml/opentype/large-operators-LatinModern.html: Added.
* mathml/opentype/latinmodern-math.woff: Added.
* mathml/opentype/opentype-stretchy.html: Added.
* mathml/opentype/stretchy.woff: Added.
* mathml/opentype/vertical-LatinModern.html: Added.
* platform/efl/mathml/opentype/large-operators-LatinModern-expected.png: Added.
* platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/efl/mathml/opentype/opentype-stretchy-expected.png: Added.
* platform/efl/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/efl/mathml/opentype/vertical-LatinModern-expected.png: Added.
* platform/efl/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png: Added.
* platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/gtk/mathml/opentype/opentype-stretchy-expected.png: Added.
* platform/gtk/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/gtk/mathml/opentype/vertical-LatinModern-expected.png: Added.
* platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/gtk/mathml/presentation/mo-stretch-expected.png: update reference due to change in mathml.css
* platform/gtk/mathml/presentation/mo-stretch-expected.txt: ditto
* platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/mac/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/mac/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/win/TestExpectations: Mark the OpenType MATH tests as failing

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@169305 268f45cc-cd09-0410-ab3c-d52691b4dbfc

34 files changed:
LayoutTests/ChangeLog
LayoutTests/mathml/opentype/LICENSE-LatinModern.txt [new file with mode: 0644]
LayoutTests/mathml/opentype/large-operators-LatinModern.html [new file with mode: 0644]
LayoutTests/mathml/opentype/latinmodern-math.woff [new file with mode: 0644]
LayoutTests/mathml/opentype/opentype-stretchy.html [new file with mode: 0644]
LayoutTests/mathml/opentype/stretchy.woff [new file with mode: 0644]
LayoutTests/mathml/opentype/vertical-LatinModern.html [new file with mode: 0644]
LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.png [new file with mode: 0644]
LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.png [new file with mode: 0644]
LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.txt [new file with mode: 0644]
LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.png [new file with mode: 0644]
LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/mathml/presentation/mo-stretch-expected.png
LayoutTests/platform/gtk/mathml/presentation/mo-stretch-expected.txt
LayoutTests/platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/mathml/opentype/vertical-LatinModern-expected.txt [new file with mode: 0644]
LayoutTests/platform/win/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/css/mathml.css
Source/WebCore/platform/graphics/SimpleFontData.cpp
Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp
Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp
Source/WebCore/rendering/mathml/RenderMathMLOperator.h

index 9f04745..3db72f5 100644 (file)
@@ -1,3 +1,40 @@
+2014-05-24  Frédéric Wang  <fred.wang@free.fr>
+
+        Use size variants and glyph assembly from the MATH data.
+        https://bugs.webkit.org/show_bug.cgi?id=130322
+
+        Reviewed by Chris Fleizach.
+
+        This adds some pixel tests for large operators and vertical stretchy operators.
+
+        * mathml/opentype/LICENSE-LatinModern.txt: Added.
+        * mathml/opentype/large-operators-LatinModern.html: Added.
+        * mathml/opentype/latinmodern-math.woff: Added.
+        * mathml/opentype/opentype-stretchy.html: Added.
+        * mathml/opentype/stretchy.woff: Added.
+        * mathml/opentype/vertical-LatinModern.html: Added.
+        * platform/efl/mathml/opentype/large-operators-LatinModern-expected.png: Added.
+        * platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
+        * platform/efl/mathml/opentype/opentype-stretchy-expected.png: Added.
+        * platform/efl/mathml/opentype/opentype-stretchy-expected.txt: Added.
+        * platform/efl/mathml/opentype/vertical-LatinModern-expected.png: Added.
+        * platform/efl/mathml/opentype/vertical-LatinModern-expected.txt: Added.
+        * platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png: Added.
+        * platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
+        * platform/gtk/mathml/opentype/opentype-stretchy-expected.png: Added.
+        * platform/gtk/mathml/opentype/opentype-stretchy-expected.txt: Added.
+        * platform/gtk/mathml/opentype/vertical-LatinModern-expected.png: Added.
+        * platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt: Added.
+        * platform/gtk/mathml/presentation/mo-stretch-expected.png: update reference due to change in mathml.css
+        * platform/gtk/mathml/presentation/mo-stretch-expected.txt: ditto
+        * platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
+        * platform/mac/mathml/opentype/opentype-stretchy-expected.txt: Added.
+        * platform/mac/mathml/opentype/vertical-LatinModern-expected.txt: Added.
+        * platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
+        * platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt: Added.
+        * platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt: Added.
+        * platform/win/TestExpectations: Mark the OpenType MATH tests as failing
+
 2014-05-23  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         CSS JIT: Apply backtracking optimization to adjacent backtracking
diff --git a/LayoutTests/mathml/opentype/LICENSE-LatinModern.txt b/LayoutTests/mathml/opentype/LICENSE-LatinModern.txt
new file mode 100644 (file)
index 0000000..60b5500
--- /dev/null
@@ -0,0 +1,30 @@
+% This is a preliminary version (2006-09-30), barring acceptance from
+% the LaTeX Project Team and other feedback, of the GUST Font License.
+% (GUST is the Polish TeX Users Group, http://www.gust.org.pl)
+%
+% For the most recent version of this license see
+% http://www.gust.org.pl/fonts/licenses/GUST-FONT-LICENSE.txt
+% or
+% http://tug.org/fonts/licenses/GUST-FONT-LICENSE.txt
+%
+% This work may be distributed and/or modified under the conditions
+% of the LaTeX Project Public License, either version 1.3c of this
+% license or (at your option) any later version.
+% 
+% Please also observe the following clause:
+% 1) it is requested, but not legally required, that derived works be
+%    distributed only after changing the names of the fonts comprising this
+%    work and given in an accompanying "manifest", and that the
+%    files comprising the Work, as listed in the manifest, also be given
+%    new names. Any exceptions to this request are also given in the
+%    manifest.
+%    
+%    We recommend the manifest be given in a separate file named
+%    MANIFEST-<fontid>.txt, where <fontid> is some unique identification
+%    of the font family. If a separate "readme" file accompanies the Work, 
+%    we recommend a name of the form README-<fontid>.txt.
+%
+% The latest version of the LaTeX Project Public License is in
+% http://www.latex-project.org/lppl.txt and version 1.3c or later
+% is part of all distributions of LaTeX version 2006/05/20 or later.
+
diff --git a/LayoutTests/mathml/opentype/large-operators-LatinModern.html b/LayoutTests/mathml/opentype/large-operators-LatinModern.html
new file mode 100644 (file)
index 0000000..563a184
--- /dev/null
@@ -0,0 +1,20 @@
+<!doctype html>
+<html>
+  <head>
+    <title>Large Operator Latin Modern</title>
+    <meta charset="utf-8"/>
+    <style type="text/css">
+      @font-face {
+        font-family: "Latin Modern Math";
+        src: local("Latin Modern Math"), local("LatinModernMath-Regular"), url("latinmodern-math.woff");
+      }
+      math {
+        font-family: "Latin Modern Math";
+      }      
+    </style>
+  </head>
+  <body>
+
+    <math display="block"><mo>∑</mo><mo>∫</mo><mo>∬</mo><mo>∭</mo><mo>⨌</mo><mo>⨁</mo><mo>∮</mo><mo>∯</mo><mo>∰</mo><mo>⋃</mo><mo>⋀</mo><mo>⋁</mo><mo>⋂</mo><mo>⨂</mo><mo>∏</mo><mo>∐</mo></math>
+  </body>
+</html>
diff --git a/LayoutTests/mathml/opentype/latinmodern-math.woff b/LayoutTests/mathml/opentype/latinmodern-math.woff
new file mode 100644 (file)
index 0000000..0b46642
Binary files /dev/null and b/LayoutTests/mathml/opentype/latinmodern-math.woff differ
diff --git a/LayoutTests/mathml/opentype/opentype-stretchy.html b/LayoutTests/mathml/opentype/opentype-stretchy.html
new file mode 100644 (file)
index 0000000..e307491
--- /dev/null
@@ -0,0 +1,41 @@
+<!doctype html>
+<html>
+  <head>
+    <title>Open Type MATH - stretchy operator</title>
+    <meta charset="utf-8"/>
+    <style type="text/css">
+      /* This font is taken from Mozilla's test suite. */
+      @font-face {
+        font-family: stretchy;
+        src: url("stretchy.woff");
+      }
+      math {
+        font-family: stretchy;
+        font-size: 10px;
+      }
+    </style>
+  </head>
+  <body>
+
+    <!-- This checks various vertical size variants. -->
+
+    <p>
+      <math><mrow><mo symmetric="false" stretchy="true" minsize="1em">&#x219F;</mo></mrow></math>
+      <math><mrow><mo symmetric="false" stretchy="true" minsize="2em">&#x219F;</mo></mrow></math>
+      <math><mrow><mo symmetric="false" stretchy="true" minsize="3em">&#x219F;</mo></mrow></math>
+    </p>
+
+    <!-- This checks vertical glyph assembly. -->
+    <p>
+      <math><mrow><mo symmetric="false" stretchy="true" minsize="15em">&#x219F;</mo></mrow></math>
+    </p>
+
+    <!-- This checks large operator in display style. -->
+    <p>
+      <math displaystyle="true">
+        <mrow><mo>&#x2A1B;</mo></mrow>
+      </math>
+    </p>
+
+  </body>
+</html>
diff --git a/LayoutTests/mathml/opentype/stretchy.woff b/LayoutTests/mathml/opentype/stretchy.woff
new file mode 100644 (file)
index 0000000..db7fafd
Binary files /dev/null and b/LayoutTests/mathml/opentype/stretchy.woff differ
diff --git a/LayoutTests/mathml/opentype/vertical-LatinModern.html b/LayoutTests/mathml/opentype/vertical-LatinModern.html
new file mode 100644 (file)
index 0000000..3a6ccd5
--- /dev/null
@@ -0,0 +1,166 @@
+<!doctype html>
+<html> 
+  <head>
+    <title>Large Operator Latin Modern</title>
+    <meta charset="utf-8"/>
+    <style type="text/css">
+      @font-face {
+        font-family: "Latin Modern Math";
+        src: local("Latin Modern Math"), local("LatinModernMath-Regular"), url("latinmodern-math.woff");
+      }
+      math {
+        font-family: "Latin Modern Math";
+      }      
+    </style>
+  </head>
+  <body>
+
+    <p>
+      <math>
+        <mo>[</mo>
+        <mo>]</mo>
+        <mo>{</mo>
+        <mo>}</mo>
+        <mo>(</mo>
+        <mo>)</mo>
+        <mo>|</mo>
+        <mo>⌈</mo>
+        <mo>⌉</mo>
+        <mo>⌊</mo>
+        <mo>⌋</mo>
+        <mo>⟦</mo>
+        <mo>⟧</mo>
+        <mo>⟨</mo>
+        <mo>⟩</mo>
+        <mspace height=".5em"/>
+      </math>
+    </p>
+    <p>
+      <math>
+        <mo>[</mo>
+        <mo>]</mo>
+        <mo>{</mo>
+        <mo>}</mo>
+        <mo>(</mo>
+        <mo>)</mo>
+        <mo>|</mo>
+        <mo>⌈</mo>
+        <mo>⌉</mo>
+        <mo>⌊</mo>
+        <mo>⌋</mo>
+        <mo>⟦</mo>
+        <mo>⟧</mo>
+        <mo>⟨</mo>
+        <mo>⟩</mo>
+        <mspace height="1em"/>
+      </math>
+      <math>
+        <mo>↑</mo>
+        <mo>↓</mo>
+        <mo>↕</mo>
+        <mo>↥</mo>
+        <mo>↧</mo>
+        <mo>↾</mo>
+        <mo>⇂</mo>
+        <mo>↿</mo>
+        <mo>⇃</mo>
+        <mo>⇑</mo>
+        <mo>⇓</mo>
+        <mo>⇕</mo>
+        <mspace height="1em"/>
+      </math>
+    </p>
+    <p>
+      <math>
+        <mo>[</mo>
+        <mo>]</mo>
+        <mo>{</mo>
+        <mo>}</mo>
+        <mo>(</mo>
+        <mo>)</mo>
+        <mo>|</mo>
+        <mo>⌈</mo>
+        <mo>⌉</mo>
+        <mo>⌊</mo>
+        <mo>⌋</mo>
+        <mo>⟦</mo>
+        <mo>⟧</mo>
+        <mo>⟨</mo>
+        <mo>⟩</mo>
+        <mspace height="1.5em"/>
+      </math>
+    </p>
+    <p>
+      <math>
+        <mo>[</mo>
+        <mo>]</mo>
+        <mo>{</mo>
+        <mo>}</mo>
+        <mo>(</mo>
+        <mo>)</mo>
+        <mo>|</mo>
+        <mo>⌈</mo>
+        <mo>⌉</mo>
+        <mo>⌊</mo>
+        <mo>⌋</mo>
+        <mo>⟦</mo>
+        <mo>⟧</mo>
+        <mo>⟨</mo>
+        <mo>⟩</mo>
+        <mspace height="2em"/>
+      </math>
+      <math>
+        <mo>↑</mo>
+        <mo>↓</mo>
+        <mo>↕</mo>
+        <mo>↥</mo>
+        <mo>↧</mo>
+        <mo>↾</mo>
+        <mo>⇂</mo>
+        <mo>↿</mo>
+        <mo>⇃</mo>
+        <mo>⇑</mo>
+        <mo>⇓</mo>
+        <mo>⇕</mo>
+        <mspace height="2em"/>
+      </math>
+    </p>
+    <p>
+      <math>
+        <mo>[</mo>
+        <mo>]</mo>
+        <mo>{</mo>
+        <mo>}</mo>
+        <mo>(</mo>
+        <mo>)</mo>
+        <mo>|</mo>
+        <mo>⌈</mo>
+        <mo>⌉</mo>
+        <mo>⌊</mo>
+        <mo>⌋</mo>
+        <mo>⟦</mo>
+        <mo>⟧</mo>
+        <mo>⟨</mo>
+        <mo>⟩</mo>
+        <mspace height="4em"/>
+      </math>
+      <math>
+        <mo>↑</mo>
+        <mo>↓</mo>
+        <mo>↕</mo>
+        <mo>↥</mo>
+        <mo>↧</mo>
+        <mo>↾</mo>
+        <mo>⇂</mo>
+        <mo>↿</mo>
+        <mo>⇃</mo>
+        <mo>⇑</mo>
+        <mo>⇓</mo>
+        <mo>⇕</mo>
+        <mspace height="4em"/>
+      </math>
+    </p>
+
+
+  </body>
+</html>
diff --git a/LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.png b/LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.png
new file mode 100644 (file)
index 0000000..5936e0b
Binary files /dev/null and b/LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.png differ
diff --git a/LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt b/LayoutTests/platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..21480e7
--- /dev/null
@@ -0,0 +1,86 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x60
+  RenderBlock {HTML} at (0,0) size 800x60
+    RenderBody {BODY} at (8,8) size 784x36
+      RenderMathMLMath {math} at (0,0) size 784x36 [padding: 0 1 0 1]
+        RenderMathMLOperator {mo} at (205,6) size 27x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 24x16
+            RenderBlock (anonymous) at (0,0) size 17x16
+              RenderText at (0,-45) size 17x106
+                text run at (0,-45) width 17: "\x{2211}"
+        RenderMathMLOperator {mo} at (231,0) size 18x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
+            RenderBlock (anonymous) at (0,0) size 11x18
+              RenderText at (0,-44) size 11x106
+                text run at (0,-44) width 11: "\x{222B}"
+        RenderMathMLOperator {mo} at (248,0) size 23x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 22x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{222C}"
+        RenderMathMLOperator {mo} at (270,0) size 31x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 29x18
+            RenderBlock (anonymous) at (0,0) size 22x18
+              RenderText at (0,-44) size 22x106
+                text run at (0,-44) width 22: "\x{222D}"
+        RenderMathMLOperator {mo} at (300,0) size 38x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 36x18
+            RenderBlock (anonymous) at (0,0) size 28x18
+              RenderText at (0,-44) size 28x106
+                text run at (0,-44) width 28: "\x{2A0C}"
+        RenderMathMLOperator {mo} at (337,7) size 26x22
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 23x16
+            RenderBlock (anonymous) at (0,0) size 18x16
+              RenderText at (0,-45) size 18x106
+                text run at (0,-45) width 18: "\x{2A01}"
+        RenderMathMLOperator {mo} at (362,0) size 18x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
+            RenderBlock (anonymous) at (0,0) size 11x18
+              RenderText at (0,-44) size 11x106
+                text run at (0,-44) width 11: "\x{222E}"
+        RenderMathMLOperator {mo} at (379,0) size 24x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 22x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{222F}"
+        RenderMathMLOperator {mo} at (402,0) size 30x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 29x18
+            RenderBlock (anonymous) at (0,0) size 22x18
+              RenderText at (0,-44) size 22x106
+                text run at (0,-44) width 22: "\x{2230}"
+        RenderMathMLOperator {mo} at (431,7) size 20x23
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x17
+            RenderBlock (anonymous) at (0,0) size 13x17
+              RenderText at (0,-45) size 13x106
+                text run at (0,-45) width 13: "\x{22C3}"
+        RenderMathMLOperator {mo} at (450,6) size 21x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 18x18
+            RenderBlock (anonymous) at (0,0) size 13x18
+              RenderText at (0,-44) size 13x106
+                text run at (0,-44) width 13: "\x{22C0}"
+        RenderMathMLOperator {mo} at (470,6) size 20x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 18x18
+            RenderBlock (anonymous) at (0,0) size 13x18
+              RenderText at (0,-44) size 13x106
+                text run at (0,-44) width 13: "\x{22C1}"
+        RenderMathMLOperator {mo} at (489,6) size 20x23
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x17
+            RenderBlock (anonymous) at (0,0) size 13x17
+              RenderText at (0,-44) size 13x106
+                text run at (0,-44) width 13: "\x{22C2}"
+        RenderMathMLOperator {mo} at (508,7) size 26x22
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 23x16
+            RenderBlock (anonymous) at (0,0) size 18x16
+              RenderText at (0,-45) size 18x106
+                text run at (0,-45) width 18: "\x{2A02}"
+        RenderMathMLOperator {mo} at (533,6) size 23x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 21x16
+            RenderBlock (anonymous) at (0,0) size 15x16
+              RenderText at (0,-45) size 15x106
+                text run at (0,-45) width 15: "\x{220F}"
+        RenderMathMLOperator {mo} at (555,6) size 24x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 21x16
+            RenderBlock (anonymous) at (0,0) size 15x16
+              RenderText at (0,-45) size 15x106
+                text run at (0,-45) width 15: "\x{2210}"
diff --git a/LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.png b/LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.png
new file mode 100644 (file)
index 0000000..fe91b5f
Binary files /dev/null and b/LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.png differ
diff --git a/LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.txt b/LayoutTests/platform/efl/mathml/opentype/opentype-stretchy-expected.txt
new file mode 100644 (file)
index 0000000..745228e
--- /dev/null
@@ -0,0 +1,50 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x347
+  RenderBlock {HTML} at (0,0) size 800x347
+    RenderBody {BODY} at (8,16) size 784x315
+      RenderBlock {P} at (0,0) size 784x34
+        RenderMathMLMath {math} at (0,20) size 49x11 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x11
+            RenderMathMLOperator {mo} at (0,0) size 47x11
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (48,17) size 5x17
+          text run at (48,17) width 5: " "
+        RenderMathMLMath {math} at (52,10) size 50x21 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x21
+            RenderMathMLOperator {mo} at (0,0) size 47x21
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (101,17) size 5x17
+          text run at (101,17) width 5: " "
+        RenderMathMLMath {math} at (105,0) size 49x31 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x31
+            RenderMathMLOperator {mo} at (0,0) size 47x31
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,50) size 784x153
+        RenderMathMLMath {math} at (0,0) size 49x150 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x150
+            RenderMathMLOperator {mo} at (0,0) size 47x150
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,219) size 784x96
+        RenderMathMLMath {math} at (0,0) size 97x93 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 95x93
+            RenderMathMLOperator {mo} at (0,0) size 95x93
+              RenderMathMLBlock (anonymous, flex) at (0,0) size 94x12
+                RenderBlock (anonymous) at (0,0) size 10x12
+                  RenderText at (0,6) size 10x0
+                    text run at (0,6) width 10: "\x{2A1B}"
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.png b/LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.png
new file mode 100644 (file)
index 0000000..8aa39bd
Binary files /dev/null and b/LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.png differ
diff --git a/LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.txt b/LayoutTests/platform/efl/mathml/opentype/vertical-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..9ebbd8f
--- /dev/null
@@ -0,0 +1,592 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x371
+  RenderBlock {HTML} at (0,0) size 800x371
+    RenderBody {BODY} at (8,16) size 784x339
+      RenderBlock {P} at (0,0) size 784x18
+        RenderMathMLMath {math} at (0,2) size 194x16 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,0) size 8x16
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,0) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,0) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,4) size 1x8
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,34) size 784x32
+        RenderMathMLMath {math} at (0,3) size 194x30 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,2) size 8x28
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,0) size 16x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,0) size 16x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,3) size 1x16
+        RenderText {#text} at (193,8) size 5x17
+          text run at (193,8) width 5: " "
+        RenderMathMLMath {math} at (197,0) size 213x27 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 17x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,0) size 18x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,9) size 19x18
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 10x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (52,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A5}"
+          RenderMathMLOperator {mo} at (71,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A7}"
+          RenderMathMLOperator {mo} at (90,10) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BE}"
+          RenderMathMLOperator {mo} at (106,10) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C2}"
+          RenderMathMLOperator {mo} at (122,10) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BF}"
+          RenderMathMLOperator {mo} at (138,10) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (172,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (191,10) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (210,6) size 1x16
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,82) size 784x47
+        RenderMathMLMath {math} at (0,0) size 194x48 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,4) size 8x42
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,0) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,0) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,4) size 1x24
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,145) size 784x57
+        RenderMathMLMath {math} at (0,0) size 194x58 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,0) size 8x58
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,6) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,6) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,0) size 1x32
+        RenderText {#text} at (193,18) size 5x17
+          text run at (193,18) width 5: " "
+        RenderMathMLMath {math} at (197,0) size 213x32 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 17x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,0) size 18x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,0) size 19x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 10x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (52,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A5}"
+          RenderMathMLOperator {mo} at (71,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A7}"
+          RenderMathMLOperator {mo} at (90,0) size 17x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BE}"
+          RenderMathMLOperator {mo} at (106,0) size 17x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C2}"
+          RenderMathMLOperator {mo} at (122,0) size 16x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BF}"
+          RenderMathMLOperator {mo} at (138,0) size 16x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (172,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (191,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (210,0) size 1x32
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,218) size 784x121
+        RenderMathMLMath {math} at (0,0) size 194x121 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,39) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,39) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,0) size 1x64
+        RenderText {#text} at (193,50) size 5x17
+          text run at (193,50) width 5: " "
+        RenderMathMLMath {math} at (197,0) size 213x64 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 17x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,0) size 18x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,0) size 19x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 10x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (52,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A5}"
+          RenderMathMLOperator {mo} at (71,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A7}"
+          RenderMathMLOperator {mo} at (90,0) size 17x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BE}"
+          RenderMathMLOperator {mo} at (106,0) size 17x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C2}"
+          RenderMathMLOperator {mo} at (122,0) size 16x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BF}"
+          RenderMathMLOperator {mo} at (138,0) size 16x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (172,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (191,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (210,0) size 1x64
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png b/LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png
new file mode 100644 (file)
index 0000000..5936e0b
Binary files /dev/null and b/LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png differ
diff --git a/LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt b/LayoutTests/platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..21480e7
--- /dev/null
@@ -0,0 +1,86 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x60
+  RenderBlock {HTML} at (0,0) size 800x60
+    RenderBody {BODY} at (8,8) size 784x36
+      RenderMathMLMath {math} at (0,0) size 784x36 [padding: 0 1 0 1]
+        RenderMathMLOperator {mo} at (205,6) size 27x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 24x16
+            RenderBlock (anonymous) at (0,0) size 17x16
+              RenderText at (0,-45) size 17x106
+                text run at (0,-45) width 17: "\x{2211}"
+        RenderMathMLOperator {mo} at (231,0) size 18x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
+            RenderBlock (anonymous) at (0,0) size 11x18
+              RenderText at (0,-44) size 11x106
+                text run at (0,-44) width 11: "\x{222B}"
+        RenderMathMLOperator {mo} at (248,0) size 23x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 22x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{222C}"
+        RenderMathMLOperator {mo} at (270,0) size 31x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 29x18
+            RenderBlock (anonymous) at (0,0) size 22x18
+              RenderText at (0,-44) size 22x106
+                text run at (0,-44) width 22: "\x{222D}"
+        RenderMathMLOperator {mo} at (300,0) size 38x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 36x18
+            RenderBlock (anonymous) at (0,0) size 28x18
+              RenderText at (0,-44) size 28x106
+                text run at (0,-44) width 28: "\x{2A0C}"
+        RenderMathMLOperator {mo} at (337,7) size 26x22
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 23x16
+            RenderBlock (anonymous) at (0,0) size 18x16
+              RenderText at (0,-45) size 18x106
+                text run at (0,-45) width 18: "\x{2A01}"
+        RenderMathMLOperator {mo} at (362,0) size 18x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
+            RenderBlock (anonymous) at (0,0) size 11x18
+              RenderText at (0,-44) size 11x106
+                text run at (0,-44) width 11: "\x{222E}"
+        RenderMathMLOperator {mo} at (379,0) size 24x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 22x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{222F}"
+        RenderMathMLOperator {mo} at (402,0) size 30x36
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 29x18
+            RenderBlock (anonymous) at (0,0) size 22x18
+              RenderText at (0,-44) size 22x106
+                text run at (0,-44) width 22: "\x{2230}"
+        RenderMathMLOperator {mo} at (431,7) size 20x23
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x17
+            RenderBlock (anonymous) at (0,0) size 13x17
+              RenderText at (0,-45) size 13x106
+                text run at (0,-45) width 13: "\x{22C3}"
+        RenderMathMLOperator {mo} at (450,6) size 21x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 18x18
+            RenderBlock (anonymous) at (0,0) size 13x18
+              RenderText at (0,-44) size 13x106
+                text run at (0,-44) width 13: "\x{22C0}"
+        RenderMathMLOperator {mo} at (470,6) size 20x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 18x18
+            RenderBlock (anonymous) at (0,0) size 13x18
+              RenderText at (0,-44) size 13x106
+                text run at (0,-44) width 13: "\x{22C1}"
+        RenderMathMLOperator {mo} at (489,6) size 20x23
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x17
+            RenderBlock (anonymous) at (0,0) size 13x17
+              RenderText at (0,-44) size 13x106
+                text run at (0,-44) width 13: "\x{22C2}"
+        RenderMathMLOperator {mo} at (508,7) size 26x22
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 23x16
+            RenderBlock (anonymous) at (0,0) size 18x16
+              RenderText at (0,-45) size 18x106
+                text run at (0,-45) width 18: "\x{2A02}"
+        RenderMathMLOperator {mo} at (533,6) size 23x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 21x16
+            RenderBlock (anonymous) at (0,0) size 15x16
+              RenderText at (0,-45) size 15x106
+                text run at (0,-45) width 15: "\x{220F}"
+        RenderMathMLOperator {mo} at (555,6) size 24x24
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 21x16
+            RenderBlock (anonymous) at (0,0) size 15x16
+              RenderText at (0,-45) size 15x106
+                text run at (0,-45) width 15: "\x{2210}"
diff --git a/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.png b/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.png
new file mode 100644 (file)
index 0000000..fe91b5f
Binary files /dev/null and b/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.png differ
diff --git a/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.txt b/LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.txt
new file mode 100644 (file)
index 0000000..745228e
--- /dev/null
@@ -0,0 +1,50 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x347
+  RenderBlock {HTML} at (0,0) size 800x347
+    RenderBody {BODY} at (8,16) size 784x315
+      RenderBlock {P} at (0,0) size 784x34
+        RenderMathMLMath {math} at (0,20) size 49x11 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x11
+            RenderMathMLOperator {mo} at (0,0) size 47x11
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (48,17) size 5x17
+          text run at (48,17) width 5: " "
+        RenderMathMLMath {math} at (52,10) size 50x21 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x21
+            RenderMathMLOperator {mo} at (0,0) size 47x21
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (101,17) size 5x17
+          text run at (101,17) width 5: " "
+        RenderMathMLMath {math} at (105,0) size 49x31 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x31
+            RenderMathMLOperator {mo} at (0,0) size 47x31
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,50) size 784x153
+        RenderMathMLMath {math} at (0,0) size 49x150 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 47x150
+            RenderMathMLOperator {mo} at (0,0) size 47x150
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 42x3
+                RenderBlock (anonymous) at (0,0) size 2x3
+                  RenderText at (0,-3) size 2x0
+                    text run at (0,-3) width 2: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,219) size 784x96
+        RenderMathMLMath {math} at (0,0) size 97x93 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 95x93
+            RenderMathMLOperator {mo} at (0,0) size 95x93
+              RenderMathMLBlock (anonymous, flex) at (0,0) size 94x12
+                RenderBlock (anonymous) at (0,0) size 10x12
+                  RenderText at (0,6) size 10x0
+                    text run at (0,6) width 10: "\x{2A1B}"
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.png b/LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.png
new file mode 100644 (file)
index 0000000..8aa39bd
Binary files /dev/null and b/LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.png differ
diff --git a/LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt b/LayoutTests/platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..9ebbd8f
--- /dev/null
@@ -0,0 +1,592 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x371
+  RenderBlock {HTML} at (0,0) size 800x371
+    RenderBody {BODY} at (8,16) size 784x339
+      RenderBlock {P} at (0,0) size 784x18
+        RenderMathMLMath {math} at (0,2) size 194x16 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,0) size 8x16
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,0) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,0) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,4) size 1x8
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,34) size 784x32
+        RenderMathMLMath {math} at (0,3) size 194x30 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,2) size 8x28
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,0) size 16x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,0) size 16x30
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,3) size 1x16
+        RenderText {#text} at (193,8) size 5x17
+          text run at (193,8) width 5: " "
+        RenderMathMLMath {math} at (197,0) size 213x27 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 17x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,0) size 18x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,9) size 19x18
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 10x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (52,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A5}"
+          RenderMathMLOperator {mo} at (71,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A7}"
+          RenderMathMLOperator {mo} at (90,10) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BE}"
+          RenderMathMLOperator {mo} at (106,10) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C2}"
+          RenderMathMLOperator {mo} at (122,10) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BF}"
+          RenderMathMLOperator {mo} at (138,10) size 16x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (172,0) size 20x22
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (191,10) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (210,6) size 1x16
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,82) size 784x47
+        RenderMathMLMath {math} at (0,0) size 194x48 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,4) size 8x42
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,0) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,0) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,4) size 1x24
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,145) size 784x57
+        RenderMathMLMath {math} at (0,0) size 194x58 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,0) size 8x58
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,6) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,6) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,0) size 1x32
+        RenderText {#text} at (193,18) size 5x17
+          text run at (193,18) width 5: " "
+        RenderMathMLMath {math} at (197,0) size 213x32 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 17x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,0) size 18x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,0) size 19x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 10x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (52,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A5}"
+          RenderMathMLOperator {mo} at (71,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A7}"
+          RenderMathMLOperator {mo} at (90,0) size 17x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BE}"
+          RenderMathMLOperator {mo} at (106,0) size 17x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C2}"
+          RenderMathMLOperator {mo} at (122,0) size 16x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BF}"
+          RenderMathMLOperator {mo} at (138,0) size 16x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (172,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (191,0) size 20x32
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (210,0) size 1x32
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,218) size 784x121
+        RenderMathMLMath {math} at (0,0) size 194x121 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "["
+          RenderMathMLOperator {mo} at (12,0) size 11x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "]"
+          RenderMathMLOperator {mo} at (23,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "{"
+          RenderMathMLOperator {mo} at (37,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "("
+          RenderMathMLOperator {mo} at (65,0) size 14x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: ")"
+          RenderMathMLOperator {mo} at (79,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 5x16
+              RenderBlock (anonymous) at (0,0) size 4x16
+                RenderText at (0,-45) size 4x106
+                  text run at (0,-45) width 4: "|"
+          RenderMathMLOperator {mo} at (86,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (130,0) size 17x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (146,0) size 17x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (162,39) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (177,39) size 16x48
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
+              RenderBlock (anonymous) at (0,0) size 6x16
+                RenderText at (0,-45) size 6x106
+                  text run at (0,-45) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (192,0) size 1x64
+        RenderText {#text} at (193,50) size 5x17
+          text run at (193,50) width 5: " "
+        RenderMathMLMath {math} at (197,0) size 213x64 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 17x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,0) size 18x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,0) size 19x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 10x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (52,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A5}"
+          RenderMathMLOperator {mo} at (71,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 10x14
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21A7}"
+          RenderMathMLOperator {mo} at (90,0) size 17x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BE}"
+          RenderMathMLOperator {mo} at (106,0) size 17x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C2}"
+          RenderMathMLOperator {mo} at (122,0) size 16x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21BF}"
+          RenderMathMLOperator {mo} at (138,0) size 16x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (172,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (191,0) size 20x64
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (210,0) size 1x64
+        RenderText {#text} at (0,0) size 0x0
index 855c6a5..a9e1184 100644 (file)
Binary files a/LayoutTests/platform/gtk/mathml/presentation/mo-stretch-expected.png and b/LayoutTests/platform/gtk/mathml/presentation/mo-stretch-expected.png differ
index a15b6e3..a42b566 100644 (file)
@@ -1,84 +1,84 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x256
-  RenderBlock {HTML} at (0,0) size 800x256
-    RenderBody {BODY} at (8,8) size 784x240
-      RenderMathMLMath {math} at (0,0) size 126x20 [padding: 0 1 0 1]
-        RenderMathMLRow {mrow} at (1,0) size 124x20
-          RenderMathMLOperator {mo} at (0,3) size 7x14
+layer at (0,0) size 800x260
+  RenderBlock {HTML} at (0,0) size 800x260
+    RenderBody {BODY} at (8,8) size 784x244
+      RenderMathMLMath {math} at (0,0) size 126x24 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 124x24
+          RenderMathMLOperator {mo} at (0,5) size 7x14
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
               RenderBlock (anonymous) at (0,0) size 5x14
                 RenderText at (0,-6) size 5x25
                   text run at (0,-6) width 5: "("
-          RenderMathMLOperator {mo} at (7,3) size 7x14
+          RenderMathMLOperator {mo} at (7,5) size 7x14
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
               RenderBlock (anonymous) at (0,0) size 5x14
                 RenderText at (0,-6) size 5x25
                   text run at (0,-6) width 5: ")"
-          RenderMathMLOperator {mo} at (14,3) size 10x14
+          RenderMathMLOperator {mo} at (14,5) size 10x14
             RenderMathMLBlock (anonymous, flex) at (0,0) size 10x14
               RenderBlock (anonymous) at (0,0) size 8x14
                 RenderText at (0,-6) size 8x25
                   text run at (0,-6) width 8: "{"
-          RenderMathMLOperator {mo} at (24,3) size 10x14
+          RenderMathMLOperator {mo} at (24,5) size 10x14
             RenderMathMLBlock (anonymous, flex) at (0,0) size 10x14
               RenderBlock (anonymous) at (0,0) size 8x14
                 RenderText at (0,-6) size 8x25
                   text run at (0,-6) width 8: "}"
-          RenderMathMLOperator {mo} at (34,3) size 7x14
+          RenderMathMLOperator {mo} at (34,5) size 7x14
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
               RenderBlock (anonymous) at (0,0) size 5x14
                 RenderText at (0,-6) size 5x25
                   text run at (0,-6) width 5: "["
-          RenderMathMLOperator {mo} at (41,3) size 7x14
+          RenderMathMLOperator {mo} at (41,5) size 7x14
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
               RenderBlock (anonymous) at (0,0) size 5x14
                 RenderText at (0,-6) size 5x25
                   text run at (0,-6) width 5: "]"
-          RenderMathMLOperator {mo} at (48,2) size 8x16
+          RenderMathMLOperator {mo} at (48,4) size 8x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x16
               RenderBlock (anonymous) at (0,0) size 8x16
                 RenderText at (0,-5) size 8x25
                   text run at (0,-5) width 8: "\x{2308}"
-          RenderMathMLOperator {mo} at (56,2) size 8x16
+          RenderMathMLOperator {mo} at (56,4) size 8x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x16
               RenderBlock (anonymous) at (0,0) size 8x16
                 RenderText at (0,-5) size 8x25
                   text run at (0,-5) width 8: "\x{2309}"
-          RenderMathMLOperator {mo} at (64,2) size 8x16
+          RenderMathMLOperator {mo} at (64,4) size 8x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x16
               RenderBlock (anonymous) at (0,0) size 8x16
                 RenderText at (0,-5) size 8x25
                   text run at (0,-5) width 8: "\x{230A}"
-          RenderMathMLOperator {mo} at (72,2) size 8x16
+          RenderMathMLOperator {mo} at (72,4) size 8x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x16
               RenderBlock (anonymous) at (0,0) size 8x16
                 RenderText at (0,-5) size 8x25
                   text run at (0,-5) width 8: "\x{230B}"
-          RenderMathMLOperator {mo} at (80,0) size 12x20
+          RenderMathMLOperator {mo} at (80,2) size 12x20
             RenderMathMLBlock (anonymous, flex) at (0,0) size 11x20
               RenderBlock (anonymous) at (0,0) size 7x20
                 RenderText at (0,-3) size 7x25
                   text run at (0,-3) width 7: "\x{222B}"
-          RenderMathMLOperator {mo} at (91,3) size 8x12
+          RenderMathMLOperator {mo} at (91,0) size 8x24
             RenderMathMLBlock (anonymous, flex) at (1,0) size 4x12
               RenderBlock (anonymous) at (0,0) size 3x12
                 RenderText at (0,-6) size 3x25
                   text run at (0,-6) width 3: "|"
-          RenderMathMLOperator {mo} at (98,2) size 9x16
+          RenderMathMLOperator {mo} at (98,4) size 9x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x16
               RenderBlock (anonymous) at (0,0) size 8x16
                 RenderText at (0,-5) size 8x25
                   text run at (0,-5) width 8: "\x{2016}"
-          RenderMathMLOperator {mo} at (106,2) size 18x16
+          RenderMathMLOperator {mo} at (106,4) size 18x16
             RenderMathMLBlock (anonymous, flex) at (4,0) size 9x16
               RenderBlock (anonymous) at (0,0) size 8x16
                 RenderText at (0,-5) size 8x25
                   text run at (0,-5) width 8: "\x{2225}"
-      RenderText {#text} at (125,0) size 5x17
-        text run at (125,0) width 5: " "
+      RenderText {#text} at (125,2) size 5x17
+        text run at (125,2) width 5: " "
       RenderBR {BR} at (0,0) size 0x0
-      RenderMathMLMath {math} at (0,20) size 126x142 [padding: 0 1 0 1]
+      RenderMathMLMath {math} at (0,24) size 126x142 [padding: 0 1 0 1]
         RenderMathMLRow {mrow} at (1,0) size 124x142
           RenderMathMLOperator {mo} at (0,0) size 7x142
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
diff --git a/LayoutTests/platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt b/LayoutTests/platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..12b7b83
--- /dev/null
@@ -0,0 +1,86 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x42
+  RenderBlock {HTML} at (0,0) size 800x42
+    RenderBody {BODY} at (8,8) size 784x18
+      RenderMathMLMath {math} at (0,0) size 784x18 [padding: 0 1 0 1]
+        RenderMathMLOperator {mo} at (245,0) size 20x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 18x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{2211}"
+        RenderMathMLOperator {mo} at (264,0) size 13x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+            RenderBlock (anonymous) at (0,0) size 11x18
+              RenderText at (0,-44) size 11x106
+                text run at (0,-44) width 11: "\x{222B}"
+        RenderMathMLOperator {mo} at (276,0) size 18x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{222C}"
+        RenderMathMLOperator {mo} at (293,0) size 25x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 23x18
+            RenderBlock (anonymous) at (0,0) size 23x18
+              RenderText at (0,-44) size 23x106
+                text run at (0,-44) width 23: "\x{222D}"
+        RenderMathMLOperator {mo} at (317,0) size 30x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 29x18
+            RenderBlock (anonymous) at (0,0) size 29x18
+              RenderText at (0,-44) size 29x106
+                text run at (0,-44) width 29: "\x{2A0C}"
+        RenderMathMLOperator {mo} at (346,1) size 21x16
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 19x16
+            RenderBlock (anonymous) at (0,0) size 18x16
+              RenderText at (0,-45) size 18x106
+                text run at (0,-45) width 18: "\x{2A01}"
+        RenderMathMLOperator {mo} at (366,0) size 13x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+            RenderBlock (anonymous) at (0,0) size 11x18
+              RenderText at (0,-44) size 11x106
+                text run at (0,-44) width 11: "\x{222E}"
+        RenderMathMLOperator {mo} at (378,0) size 18x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x18
+            RenderBlock (anonymous) at (0,0) size 17x18
+              RenderText at (0,-44) size 17x106
+                text run at (0,-44) width 17: "\x{222F}"
+        RenderMathMLOperator {mo} at (395,0) size 25x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 23x18
+            RenderBlock (anonymous) at (0,0) size 23x18
+              RenderText at (0,-44) size 23x106
+                text run at (0,-44) width 23: "\x{2230}"
+        RenderMathMLOperator {mo} at (419,1) size 16x17
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x17
+            RenderBlock (anonymous) at (0,0) size 14x17
+              RenderText at (0,-45) size 14x106
+                text run at (0,-45) width 14: "\x{22C3}"
+        RenderMathMLOperator {mo} at (434,0) size 17x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+            RenderBlock (anonymous) at (0,0) size 14x18
+              RenderText at (0,-44) size 14x106
+                text run at (0,-44) width 14: "\x{22C0}"
+        RenderMathMLOperator {mo} at (450,0) size 17x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+            RenderBlock (anonymous) at (0,0) size 14x18
+              RenderText at (0,-44) size 14x106
+                text run at (0,-44) width 14: "\x{22C1}"
+        RenderMathMLOperator {mo} at (466,0) size 17x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+            RenderBlock (anonymous) at (0,0) size 14x18
+              RenderText at (0,-44) size 14x106
+                text run at (0,-44) width 14: "\x{22C2}"
+        RenderMathMLOperator {mo} at (482,1) size 22x16
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 19x16
+            RenderBlock (anonymous) at (0,0) size 18x16
+              RenderText at (0,-45) size 18x106
+                text run at (0,-45) width 18: "\x{2A02}"
+        RenderMathMLOperator {mo} at (503,0) size 18x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
+            RenderBlock (anonymous) at (0,0) size 16x18
+              RenderText at (0,-44) size 16x106
+                text run at (0,-44) width 16: "\x{220F}"
+        RenderMathMLOperator {mo} at (520,0) size 19x18
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x18
+            RenderBlock (anonymous) at (0,0) size 16x18
+              RenderText at (0,-44) size 16x106
+                text run at (0,-44) width 16: "\x{2210}"
diff --git a/LayoutTests/platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt b/LayoutTests/platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt
new file mode 100644 (file)
index 0000000..632b911
--- /dev/null
@@ -0,0 +1,50 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x118
+  RenderBlock {HTML} at (0,0) size 800x118
+    RenderBody {BODY} at (8,16) size 784x86
+      RenderBlock {P} at (0,0) size 784x18
+        RenderMathMLMath {math} at (0,12) size 10x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 8x3
+            RenderMathMLOperator {mo} at (0,0) size 8x3
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 3x3
+                RenderBlock (anonymous) at (0,0) size 3x3
+                  RenderText at (0,-3) size 3x10
+                    text run at (0,-3) width 3: "\x{219F}"
+        RenderText {#text} at (9,0) size 5x18
+          text run at (9,0) width 5: " "
+        RenderMathMLMath {math} at (13,12) size 11x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 8x3
+            RenderMathMLOperator {mo} at (0,0) size 8x3
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 3x3
+                RenderBlock (anonymous) at (0,0) size 3x3
+                  RenderText at (0,-3) size 3x10
+                    text run at (0,-3) width 3: "\x{219F}"
+        RenderText {#text} at (23,0) size 5x18
+          text run at (23,0) width 5: " "
+        RenderMathMLMath {math} at (27,12) size 10x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 8x3
+            RenderMathMLOperator {mo} at (0,0) size 8x3
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 3x3
+                RenderBlock (anonymous) at (0,0) size 3x3
+                  RenderText at (0,-3) size 3x10
+                    text run at (0,-3) width 3: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,34) size 784x18
+        RenderMathMLMath {math} at (0,12) size 10x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 8x3
+            RenderMathMLOperator {mo} at (0,0) size 8x3
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 3x3
+                RenderBlock (anonymous) at (0,0) size 3x3
+                  RenderText at (0,-3) size 3x10
+                    text run at (0,-3) width 3: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,68) size 784x18
+        RenderMathMLMath {math} at (0,3) size 14x12 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 12x12
+            RenderMathMLOperator {mo} at (0,0) size 12x12
+              RenderMathMLBlock (anonymous, flex) at (0,0) size 11x12
+                RenderBlock (anonymous) at (0,0) size 11x12
+                  RenderText at (0,6) size 11x10
+                    text run at (0,6) width 11: "\x{2A1B}"
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt b/LayoutTests/platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..7ab3ccf
--- /dev/null
@@ -0,0 +1,592 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x355
+  RenderBlock {HTML} at (0,0) size 800x355
+    RenderBody {BODY} at (8,16) size 784x323
+      RenderBlock {P} at (0,0) size 784x19
+        RenderMathMLMath {math} at (0,1) size 157x18 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "["
+          RenderMathMLOperator {mo} at (11,0) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "]"
+          RenderMathMLOperator {mo} at (22,0) size 15x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "{"
+          RenderMathMLOperator {mo} at (36,0) size 16x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "}"
+          RenderMathMLOperator {mo} at (51,1) size 15x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "("
+          RenderMathMLOperator {mo} at (65,1) size 15x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: ")"
+          RenderMathMLOperator {mo} at (79,0) size 9x18
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 6x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "|"
+          RenderMathMLOperator {mo} at (87,0) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230B}"
+          RenderMathMLOperator {mo} at (129,0) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (136,0) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (142,0) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E8}"
+          RenderMathMLOperator {mo} at (149,0) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (155,5) size 0x8
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,35) size 784x21
+        RenderMathMLMath {math} at (0,0) size 157x21 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,3) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "["
+          RenderMathMLOperator {mo} at (11,3) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "]"
+          RenderMathMLOperator {mo} at (22,3) size 15x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "{"
+          RenderMathMLOperator {mo} at (36,3) size 16x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "}"
+          RenderMathMLOperator {mo} at (51,4) size 15x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "("
+          RenderMathMLOperator {mo} at (65,4) size 15x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: ")"
+          RenderMathMLOperator {mo} at (79,3) size 9x18
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 6x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "|"
+          RenderMathMLOperator {mo} at (87,3) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,3) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,3) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,3) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230B}"
+          RenderMathMLOperator {mo} at (129,3) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (136,3) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (142,3) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E8}"
+          RenderMathMLOperator {mo} at (149,3) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (155,0) size 0x16
+        RenderText {#text} at (156,2) size 5x18
+          text run at (156,2) width 5: " "
+        RenderMathMLMath {math} at (160,0) size 211x21 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,5) size 17x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,4) size 18x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,3) size 18x18
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (51,5) size 20x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-46) size 11x106
+                  text run at (0,-46) width 11: "\x{21A5}"
+          RenderMathMLOperator {mo} at (70,5) size 20x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-46) size 11x106
+                  text run at (0,-46) width 11: "\x{21A7}"
+          RenderMathMLOperator {mo} at (89,4) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21BE}"
+          RenderMathMLOperator {mo} at (105,4) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21C2}"
+          RenderMathMLOperator {mo} at (121,4) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21BF}"
+          RenderMathMLOperator {mo} at (137,4) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,5) size 19x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (171,4) size 20x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (190,4) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (209,0) size 0x16
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,72) size 784x41
+        RenderMathMLMath {math} at (0,0) size 157x42 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,11) size 11x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "["
+          RenderMathMLOperator {mo} at (11,11) size 12x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "]"
+          RenderMathMLOperator {mo} at (22,11) size 15x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "{"
+          RenderMathMLOperator {mo} at (36,11) size 16x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "}"
+          RenderMathMLOperator {mo} at (51,12) size 15x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "("
+          RenderMathMLOperator {mo} at (65,12) size 15x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: ")"
+          RenderMathMLOperator {mo} at (79,0) size 9x42
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 6x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "|"
+          RenderMathMLOperator {mo} at (87,0) size 11x42
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x42
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x42
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 11x42
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230B}"
+          RenderMathMLOperator {mo} at (129,11) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (136,11) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (142,11) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E8}"
+          RenderMathMLOperator {mo} at (149,11) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (155,0) size 0x24
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,129) size 784x57
+        RenderMathMLMath {math} at (0,0) size 157x58 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "["
+          RenderMathMLOperator {mo} at (11,0) size 12x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "]"
+          RenderMathMLOperator {mo} at (22,0) size 15x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "{"
+          RenderMathMLOperator {mo} at (36,0) size 16x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 15x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "("
+          RenderMathMLOperator {mo} at (65,0) size 15x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: ")"
+          RenderMathMLOperator {mo} at (79,0) size 9x58
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 6x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "|"
+          RenderMathMLOperator {mo} at (87,0) size 11x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 11x58
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230B}"
+          RenderMathMLOperator {mo} at (129,19) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (136,19) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (142,19) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E8}"
+          RenderMathMLOperator {mo} at (149,19) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (155,0) size 0x32
+        RenderText {#text} at (156,18) size 5x18
+          text run at (156,18) width 5: " "
+        RenderMathMLMath {math} at (160,0) size 211x37 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,21) size 17x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,20) size 18x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,19) size 18x18
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (51,21) size 20x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-46) size 11x106
+                  text run at (0,-46) width 11: "\x{21A5}"
+          RenderMathMLOperator {mo} at (70,21) size 20x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-46) size 11x106
+                  text run at (0,-46) width 11: "\x{21A7}"
+          RenderMathMLOperator {mo} at (89,20) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21BE}"
+          RenderMathMLOperator {mo} at (105,20) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21C2}"
+          RenderMathMLOperator {mo} at (121,20) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21BF}"
+          RenderMathMLOperator {mo} at (137,20) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,21) size 19x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (171,20) size 20x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (190,20) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (209,0) size 0x32
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,202) size 784x121
+        RenderMathMLMath {math} at (0,0) size 157x122 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 11x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "["
+          RenderMathMLOperator {mo} at (11,0) size 12x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "]"
+          RenderMathMLOperator {mo} at (22,0) size 15x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "{"
+          RenderMathMLOperator {mo} at (36,0) size 16x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 15x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "}"
+          RenderMathMLOperator {mo} at (51,0) size 15x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: "("
+          RenderMathMLOperator {mo} at (65,0) size 15x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
+              RenderBlock (anonymous) at (0,0) size 7x16
+                RenderText at (0,-45) size 7x106
+                  text run at (0,-45) width 7: ")"
+          RenderMathMLOperator {mo} at (79,0) size 9x122
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 6x18
+              RenderBlock (anonymous) at (0,0) size 5x18
+                RenderText at (0,-44) size 5x106
+                  text run at (0,-44) width 5: "|"
+          RenderMathMLOperator {mo} at (87,0) size 11x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2308}"
+          RenderMathMLOperator {mo} at (97,0) size 12x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2309}"
+          RenderMathMLOperator {mo} at (108,0) size 12x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230A}"
+          RenderMathMLOperator {mo} at (119,0) size 11x122
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 11x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{230B}"
+          RenderMathMLOperator {mo} at (129,51) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (136,51) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (142,51) size 8x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E8}"
+          RenderMathMLOperator {mo} at (149,51) size 7x18
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x18
+              RenderBlock (anonymous) at (0,0) size 7x18
+                RenderText at (0,-44) size 7x106
+                  text run at (0,-44) width 7: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (155,0) size 0x64
+        RenderText {#text} at (156,50) size 5x18
+          text run at (156,50) width 5: " "
+        RenderMathMLMath {math} at (160,0) size 211x69 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,53) size 17x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-46) size 8x106
+                  text run at (0,-46) width 8: "\x{2191}"
+          RenderMathMLOperator {mo} at (17,52) size 18x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x15
+              RenderBlock (anonymous) at (0,0) size 8x15
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{2193}"
+          RenderMathMLOperator {mo} at (34,51) size 18x18
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x18
+              RenderBlock (anonymous) at (0,0) size 8x18
+                RenderText at (0,-44) size 8x106
+                  text run at (0,-44) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (51,53) size 20x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-46) size 11x106
+                  text run at (0,-46) width 11: "\x{21A5}"
+          RenderMathMLOperator {mo} at (70,53) size 20x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-46) size 11x106
+                  text run at (0,-46) width 11: "\x{21A7}"
+          RenderMathMLOperator {mo} at (89,52) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21BE}"
+          RenderMathMLOperator {mo} at (105,52) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21C2}"
+          RenderMathMLOperator {mo} at (121,52) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21BF}"
+          RenderMathMLOperator {mo} at (137,52) size 17x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 8x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-45) size 8x106
+                  text run at (0,-45) width 8: "\x{21C3}"
+          RenderMathMLOperator {mo} at (153,53) size 19x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-46) size 10x106
+                  text run at (0,-46) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (171,52) size 20x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (190,52) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-45) size 10x106
+                  text run at (0,-45) width 10: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (209,0) size 0x64
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt b/LayoutTests/platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..f9fda2a
--- /dev/null
@@ -0,0 +1,86 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x41
+  RenderBlock {HTML} at (0,0) size 800x41
+    RenderBody {BODY} at (8,8) size 784x17
+      RenderMathMLMath {math} at (0,0) size 784x17 [padding: 0 1 0 1]
+        RenderMathMLOperator {mo} at (270,2) size 15x13
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 12x13
+            RenderBlock (anonymous) at (0,0) size 11x13
+              RenderText at (0,-3) size 11x18
+                text run at (0,-3) width 11: "\x{2211}"
+        RenderMathMLOperator {mo} at (284,0) size 6x16
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 4x16
+            RenderBlock (anonymous) at (0,0) size 4x16
+              RenderText at (0,-1) size 4x18
+                text run at (0,-1) width 4: "\x{222B}"
+        RenderMathMLOperator {mo} at (289,2) size 17x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x15
+            RenderBlock (anonymous) at (0,0) size 15x15
+              RenderText at (0,-3) size 15x18
+                text run at (0,-3) width 15: "\x{222C}"
+        RenderMathMLOperator {mo} at (305,2) size 19x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 18x15
+            RenderBlock (anonymous) at (0,0) size 18x15
+              RenderText at (0,-3) size 18x18
+                text run at (0,-3) width 18: "\x{222D}"
+        RenderMathMLOperator {mo} at (323,2) size 26x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 24x15
+            RenderBlock (anonymous) at (0,0) size 24x15
+              RenderText at (0,-3) size 24x18
+                text run at (0,-3) width 24: "\x{2A0C}"
+        RenderMathMLOperator {mo} at (348,2) size 18x13
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x13
+            RenderBlock (anonymous) at (0,0) size 14x13
+              RenderText at (0,-3) size 14x18
+                text run at (0,-3) width 14: "\x{2A01}"
+        RenderMathMLOperator {mo} at (365,2) size 13x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 11x15
+            RenderBlock (anonymous) at (0,0) size 11x15
+              RenderText at (0,-3) size 11x18
+                text run at (0,-3) width 11: "\x{222E}"
+        RenderMathMLOperator {mo} at (377,2) size 17x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x15
+            RenderBlock (anonymous) at (0,0) size 15x15
+              RenderText at (0,-3) size 15x18
+                text run at (0,-3) width 15: "\x{222F}"
+        RenderMathMLOperator {mo} at (393,2) size 21x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 19x15
+            RenderBlock (anonymous) at (0,0) size 19x15
+              RenderText at (0,-3) size 19x18
+                text run at (0,-3) width 19: "\x{2230}"
+        RenderMathMLOperator {mo} at (413,4) size 13x10
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 11x10
+            RenderBlock (anonymous) at (0,0) size 10x10
+              RenderText at (0,-5) size 10x18
+                text run at (0,-5) width 10: "\x{22C3}"
+        RenderMathMLOperator {mo} at (425,4) size 15x10
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+            RenderBlock (anonymous) at (0,0) size 11x10
+              RenderText at (0,-5) size 11x18
+                text run at (0,-5) width 11: "\x{22C0}"
+        RenderMathMLOperator {mo} at (439,4) size 15x10
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+            RenderBlock (anonymous) at (0,0) size 11x10
+              RenderText at (0,-5) size 11x18
+                text run at (0,-5) width 11: "\x{22C1}"
+        RenderMathMLOperator {mo} at (453,4) size 13x10
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 11x10
+            RenderBlock (anonymous) at (0,0) size 10x10
+              RenderText at (0,-5) size 10x18
+                text run at (0,-5) width 10: "\x{22C2}"
+        RenderMathMLOperator {mo} at (465,2) size 18x13
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 15x13
+            RenderBlock (anonymous) at (0,0) size 14x13
+              RenderText at (0,-3) size 14x18
+                text run at (0,-3) width 14: "\x{2A02}"
+        RenderMathMLOperator {mo} at (482,2) size 16x13
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 14x13
+            RenderBlock (anonymous) at (0,0) size 13x13
+              RenderText at (0,-3) size 13x18
+                text run at (0,-3) width 13: "\x{220F}"
+        RenderMathMLOperator {mo} at (497,1) size 17x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 14x15
+            RenderBlock (anonymous) at (0,0) size 13x15
+              RenderText at (0,-2) size 13x18
+                text run at (0,-2) width 13: "\x{2210}"
diff --git a/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt b/LayoutTests/platform/mac/mathml/opentype/opentype-stretchy-expected.txt
new file mode 100644 (file)
index 0000000..c65fbe4
--- /dev/null
@@ -0,0 +1,50 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x118
+  RenderBlock {HTML} at (0,0) size 800x118
+    RenderBody {BODY} at (8,16) size 784x86
+      RenderBlock {P} at (0,0) size 784x18
+        RenderMathMLMath {math} at (0,7) size 15x8 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 13x8
+            RenderMathMLOperator {mo} at (0,0) size 13x8
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 8x8
+                RenderBlock (anonymous) at (0,0) size 7x8
+                  RenderText at (0,-3) size 7x13
+                    text run at (0,-3) width 7: "\x{219F}"
+        RenderText {#text} at (14,0) size 5x18
+          text run at (14,0) width 5: " "
+        RenderMathMLMath {math} at (18,7) size 16x8 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 13x8
+            RenderMathMLOperator {mo} at (0,0) size 13x8
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 8x8
+                RenderBlock (anonymous) at (0,0) size 7x8
+                  RenderText at (0,-3) size 7x13
+                    text run at (0,-3) width 7: "\x{219F}"
+        RenderText {#text} at (33,0) size 5x18
+          text run at (33,0) width 5: " "
+        RenderMathMLMath {math} at (37,7) size 15x8 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 13x8
+            RenderMathMLOperator {mo} at (0,0) size 13x8
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 8x8
+                RenderBlock (anonymous) at (0,0) size 7x8
+                  RenderText at (0,-3) size 7x13
+                    text run at (0,-3) width 7: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,34) size 784x18
+        RenderMathMLMath {math} at (0,7) size 15x8 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 13x8
+            RenderMathMLOperator {mo} at (0,0) size 13x8
+              RenderMathMLBlock (anonymous, flex) at (2,0) size 8x8
+                RenderBlock (anonymous) at (0,0) size 7x8
+                  RenderText at (0,-3) size 7x13
+                    text run at (0,-3) width 7: "\x{219F}"
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,68) size 784x18
+        RenderMathMLMath {math} at (0,6) size 10x11 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 8x11
+            RenderMathMLOperator {mo} at (0,0) size 8x11
+              RenderMathMLBlock (anonymous, flex) at (0,0) size 7x11
+                RenderBlock (anonymous) at (0,0) size 6x11
+                  RenderText at (0,-2) size 6x13
+                    text run at (0,-2) width 6: "\x{2A1B}"
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/mac/mathml/opentype/vertical-LatinModern-expected.txt b/LayoutTests/platform/mac/mathml/opentype/vertical-LatinModern-expected.txt
new file mode 100644 (file)
index 0000000..a9558ae
--- /dev/null
@@ -0,0 +1,592 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x354
+  RenderBlock {HTML} at (0,0) size 800x354
+    RenderBody {BODY} at (8,16) size 784x322
+      RenderBlock {P} at (0,0) size 784x18
+        RenderMathMLMath {math} at (0,2) size 103x16 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,1) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "["
+          RenderMathMLOperator {mo} at (7,1) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "]"
+          RenderMathMLOperator {mo} at (13,1) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "{"
+          RenderMathMLOperator {mo} at (21,1) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "}"
+          RenderMathMLOperator {mo} at (29,1) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "("
+          RenderMathMLOperator {mo} at (35,1) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: ")"
+          RenderMathMLOperator {mo} at (41,1) size 7x12
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 4x12
+              RenderBlock (anonymous) at (0,0) size 3x12
+                RenderText at (0,-3) size 3x18
+                  text run at (0,-3) width 3: "|"
+          RenderMathMLOperator {mo} at (47,0) size 8x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (54,0) size 8x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (61,4) size 8x12
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (68,4) size 8x12
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (75,1) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (82,1) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (89,1) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (95,1) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (101,4) size 0x8
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,34) size 784x24
+        RenderMathMLMath {math} at (0,0) size 103x25 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,5) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "["
+          RenderMathMLOperator {mo} at (7,5) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "]"
+          RenderMathMLOperator {mo} at (13,5) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "{"
+          RenderMathMLOperator {mo} at (21,5) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "}"
+          RenderMathMLOperator {mo} at (29,5) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "("
+          RenderMathMLOperator {mo} at (35,5) size 6x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: ")"
+          RenderMathMLOperator {mo} at (41,0) size 7x25
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 4x12
+              RenderBlock (anonymous) at (0,0) size 3x12
+                RenderText at (0,-3) size 3x18
+                  text run at (0,-3) width 3: "|"
+          RenderMathMLOperator {mo} at (47,4) size 8x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (54,4) size 8x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (61,8) size 8x12
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (68,8) size 8x12
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (75,5) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (82,5) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (89,5) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (95,5) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (101,0) size 0x16
+        RenderText {#text} at (102,2) size 5x18
+          text run at (102,2) width 5: " "
+        RenderMathMLMath {math} at (106,0) size 235x20 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,4) size 19x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{2191}"
+          RenderMathMLOperator {mo} at (19,4) size 20x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{2193}"
+          RenderMathMLOperator {mo} at (38,4) size 18x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-2) size 8x18
+                  text run at (0,-2) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (55,5) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21A5}"
+          RenderMathMLOperator {mo} at (75,5) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21A7}"
+          RenderMathMLOperator {mo} at (95,5) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21BE}"
+          RenderMathMLOperator {mo} at (115,5) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21C2}"
+          RenderMathMLOperator {mo} at (135,5) size 20x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21BF}"
+          RenderMathMLOperator {mo} at (155,5) size 20x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21C3}"
+          RenderMathMLOperator {mo} at (174,4) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (193,4) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (212,3) size 21x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-1) size 11x18
+                  text run at (0,-1) width 11: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (232,0) size 0x16
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,74) size 784x40
+        RenderMathMLMath {math} at (0,0) size 103x41 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 6x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "["
+          RenderMathMLOperator {mo} at (7,0) size 6x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "]"
+          RenderMathMLOperator {mo} at (13,13) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "{"
+          RenderMathMLOperator {mo} at (21,13) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "}"
+          RenderMathMLOperator {mo} at (29,0) size 6x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "("
+          RenderMathMLOperator {mo} at (35,0) size 6x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: ")"
+          RenderMathMLOperator {mo} at (41,0) size 7x41
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 4x12
+              RenderBlock (anonymous) at (0,0) size 3x12
+                RenderText at (0,-3) size 3x18
+                  text run at (0,-3) width 3: "|"
+          RenderMathMLOperator {mo} at (47,0) size 8x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (54,0) size 8x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (61,0) size 8x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (68,0) size 8x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (75,13) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (82,13) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (89,13) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (95,13) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (101,0) size 0x24
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,130) size 784x56
+        RenderMathMLMath {math} at (0,0) size 103x57 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 6x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "["
+          RenderMathMLOperator {mo} at (7,0) size 6x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "]"
+          RenderMathMLOperator {mo} at (13,0) size 8x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "{"
+          RenderMathMLOperator {mo} at (21,0) size 8x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "}"
+          RenderMathMLOperator {mo} at (29,0) size 6x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "("
+          RenderMathMLOperator {mo} at (35,0) size 6x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: ")"
+          RenderMathMLOperator {mo} at (41,0) size 7x57
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 4x12
+              RenderBlock (anonymous) at (0,0) size 3x12
+                RenderText at (0,-3) size 3x18
+                  text run at (0,-3) width 3: "|"
+          RenderMathMLOperator {mo} at (47,0) size 8x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (54,0) size 8x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (61,0) size 8x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (68,0) size 8x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (75,21) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (82,21) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (89,21) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (95,21) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (101,0) size 0x32
+        RenderText {#text} at (102,18) size 5x18
+          text run at (102,18) width 5: " "
+        RenderMathMLMath {math} at (106,0) size 235x36 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,20) size 19x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{2191}"
+          RenderMathMLOperator {mo} at (19,20) size 20x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{2193}"
+          RenderMathMLOperator {mo} at (38,20) size 18x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-2) size 8x18
+                  text run at (0,-2) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (55,21) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21A5}"
+          RenderMathMLOperator {mo} at (75,21) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21A7}"
+          RenderMathMLOperator {mo} at (95,21) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21BE}"
+          RenderMathMLOperator {mo} at (115,21) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21C2}"
+          RenderMathMLOperator {mo} at (135,21) size 20x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21BF}"
+          RenderMathMLOperator {mo} at (155,21) size 20x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21C3}"
+          RenderMathMLOperator {mo} at (174,20) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (193,20) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (212,19) size 21x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-1) size 11x18
+                  text run at (0,-1) width 11: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (232,0) size 0x32
+        RenderText {#text} at (0,0) size 0x0
+      RenderBlock {P} at (0,202) size 784x120
+        RenderMathMLMath {math} at (0,0) size 103x121 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,0) size 6x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "["
+          RenderMathMLOperator {mo} at (7,0) size 6x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "]"
+          RenderMathMLOperator {mo} at (13,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "{"
+          RenderMathMLOperator {mo} at (21,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 8x14
+              RenderBlock (anonymous) at (0,0) size 8x14
+                RenderText at (0,-3) size 8x18
+                  text run at (0,-3) width 8: "}"
+          RenderMathMLOperator {mo} at (29,0) size 6x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: "("
+          RenderMathMLOperator {mo} at (35,0) size 6x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x14
+              RenderBlock (anonymous) at (0,0) size 5x14
+                RenderText at (0,-3) size 5x18
+                  text run at (0,-3) width 5: ")"
+          RenderMathMLOperator {mo} at (41,0) size 7x121
+            RenderMathMLBlock (anonymous, flex) at (1,0) size 4x12
+              RenderBlock (anonymous) at (0,0) size 3x12
+                RenderText at (0,-3) size 3x18
+                  text run at (0,-3) width 3: "|"
+          RenderMathMLOperator {mo} at (47,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2308}"
+          RenderMathMLOperator {mo} at (54,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x13
+              RenderBlock (anonymous) at (0,0) size 7x13
+                RenderText at (0,-2) size 7x18
+                  text run at (0,-2) width 7: "\x{2309}"
+          RenderMathMLOperator {mo} at (61,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230A}"
+          RenderMathMLOperator {mo} at (68,0) size 8x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x12
+              RenderBlock (anonymous) at (0,0) size 7x12
+                RenderText at (0,-6) size 7x18
+                  text run at (0,-6) width 7: "\x{230B}"
+          RenderMathMLOperator {mo} at (75,53) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E6}"
+          RenderMathMLOperator {mo} at (82,53) size 8x14
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x14
+              RenderBlock (anonymous) at (0,0) size 7x14
+                RenderText at (0,-3) size 7x18
+                  text run at (0,-3) width 7: "\x{27E7}"
+          RenderMathMLOperator {mo} at (89,53) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E8}"
+          RenderMathMLOperator {mo} at (95,53) size 7x13
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 6x13
+              RenderBlock (anonymous) at (0,0) size 6x13
+                RenderText at (0,-3) size 6x18
+                  text run at (0,-3) width 6: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (101,0) size 0x64
+        RenderText {#text} at (102,50) size 5x18
+          text run at (102,50) width 5: " "
+        RenderMathMLMath {math} at (106,0) size 235x68 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,52) size 19x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{2191}"
+          RenderMathMLOperator {mo} at (19,52) size 20x15
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
+              RenderBlock (anonymous) at (0,0) size 10x15
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{2193}"
+          RenderMathMLOperator {mo} at (38,52) size 18x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 9x16
+              RenderBlock (anonymous) at (0,0) size 8x16
+                RenderText at (0,-2) size 8x18
+                  text run at (0,-2) width 8: "\x{2195}"
+          RenderMathMLOperator {mo} at (55,53) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21A5}"
+          RenderMathMLOperator {mo} at (75,53) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21A7}"
+          RenderMathMLOperator {mo} at (95,53) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21BE}"
+          RenderMathMLOperator {mo} at (115,53) size 21x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21C2}"
+          RenderMathMLOperator {mo} at (135,53) size 20x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21BF}"
+          RenderMathMLOperator {mo} at (155,53) size 20x12
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x12
+              RenderBlock (anonymous) at (0,0) size 11x12
+                RenderText at (0,-3) size 11x18
+                  text run at (0,-3) width 11: "\x{21C3}"
+          RenderMathMLOperator {mo} at (174,52) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{21D1}"
+          RenderMathMLOperator {mo} at (193,52) size 20x16
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 11x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,-2) size 10x18
+                  text run at (0,-2) width 10: "\x{21D3}"
+          RenderMathMLOperator {mo} at (212,51) size 21x14
+            RenderMathMLBlock (anonymous, flex) at (4,0) size 12x14
+              RenderBlock (anonymous) at (0,0) size 11x14
+                RenderText at (0,-1) size 11x18
+                  text run at (0,-1) width 11: "\x{21D5}"
+          RenderMathMLSpace {mspace} at (232,0) size 0x64
+        RenderText {#text} at (0,0) size 0x0
index 20592f5..ae659aa 100644 (file)
@@ -2744,3 +2744,7 @@ media/track/track-in-band-legacy-api.html [ Crash ]
 media/track/track-in-band-mode.html     [ Crash ]
 fast/canvas/canvas-path-addPath.html [ Crash ]
 
+# Missing references on Windows
+webkit.org/b/130322 mathml/opentype/large-operators-LatinModern.html [ Failure ]
+webkit.org/b/130322 mathml/opentype/opentype-stretchy.html [ Failure ]
+webkit.org/b/130322 mathml/opentype/vertical-LatinModern.html [ Failure ]
index c1cccbd..656fcfd 100644 (file)
@@ -1,3 +1,47 @@
+2014-05-24  Frédéric Wang  <fred.wang@free.fr>
+
+        Use size variants and glyph assembly from the MATH data.
+        https://bugs.webkit.org/show_bug.cgi?id=130322
+
+        Reviewed by Chris Fleizach.
+
+        This patch modifies the RenderMathMLOperator code to use the MATH table
+        when one is provided in the current font on the <math> tag. More
+        precisely, the MathVariants table is used to draw a size variant or
+        a glyph assembly. The displaystyle attribute is not supported yet, so
+        for now large operators are always assumed to be in display style. The
+        MATH support does not work well with all platforms+fonts, so at the
+        moment the default font-family on the <math> is not changed.
+
+        Tests: mathml/opentype/large-operators-LatinModern.html
+               mathml/opentype/opentype-stretchy.html
+               mathml/opentype/vertical-LatinModern.html
+
+        * css/mathml.css: We only specify the default font-family on the math root, so that people can easily style the mathematics.
+        For now, old fonts without the MATH table are still used as the default.
+        (math):
+        (math, mfenced > *): Deleted.
+        (mo, mfenced): Deleted.
+        * platform/graphics/SimpleFontData.cpp: don't return the math data if the font is loading.
+        (WebCore::SimpleFontData::mathData):
+        * platform/graphics/opentype/OpenTypeMathData.cpp: update #ifdef so that disabling ENABLE_OPENTYPE_MATH won't lead to errors with unused parameters.
+        (WebCore::OpenTypeMathData::OpenTypeMathData):
+        (WebCore::OpenTypeMathData::getMathConstant):
+        (WebCore::OpenTypeMathData::getItalicCorrection):
+        (WebCore::OpenTypeMathData::getMathVariants):
+        * rendering/mathml/RenderMathMLOperator.cpp:
+        (WebCore::RenderMathMLOperator::boundsForGlyph):
+        (WebCore::RenderMathMLOperator::heightForGlyph):
+        (WebCore::RenderMathMLOperator::advanceForGlyph):
+        (WebCore::RenderMathMLOperator::computePreferredLogicalWidths): We handle preferred width of size variants.
+        (WebCore::RenderMathMLOperator::shouldAllowStretching): This function now only returns whether the operator will stretch and no longer has side effect.
+        (WebCore::RenderMathMLOperator::getGlyphAssemblyFallBack): We add a function to convert from the MathVariant table data to the format supported by RenderMathMLOperator.
+        (WebCore::RenderMathMLOperator::getDisplayStyleLargeOperator): We add a function to get the glyph that will be used for large operators in display style.
+        (WebCore::RenderMathMLOperator::findStretchyData): We make this function handle size variants.
+        (WebCore::RenderMathMLOperator::updateStyle): We handle size variants.
+        (WebCore::RenderMathMLOperator::paint): We handle size variants.
+        * rendering/mathml/RenderMathMLOperator.h:
+
 2014-05-23  Tim Horton  <timothy_horton@apple.com>
 
         REGRESSION (iOS WebKit2): requestAnimationFrame fires more than once between layer tree commits
index 203c165..362c1c3 100644 (file)
@@ -10,21 +10,12 @@ mtext {
 }
 
 /* Keep font-family and other defaults here consistent with http://mxr.mozilla.org/mozilla-central/source/layout/mathml/mathml.css and feedback from www-math. */
-math, mfenced > * {
-#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
-    /* We explicitly include the font Symbol as it's the iOS equivalent of font STIXGeneral. */
-    font-family: STIXGeneral, Symbol, "Times New Roman", sans-serif;
-#else
-    font-family: MathJax_Main, STIXGeneral, "DejaVu Serif", Cambria, "Cambria Math", Times, serif;
-#endif
-}
-mo, mfenced {
+math {
 #if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
     /* We explicitly include the font Symbol as it's the iOS equivalent of font STIXGeneral. */
     font-family: STIXGeneral, Symbol, "Times New Roman", sans-serif;
 #else
-    font-family: MathJax_Main, STIXGeneral, STIXSizeOneSym, "DejaVu Sans", "DejaVu Serif", Cambria, "Cambria Math",
-        "Lucida Sans Unicode", "Arial Unicode MS", "Lucida Grande", OpenSymbol, "Standard Symbols L", sans-serif;
+    font-family: MathJax_Main, STIXGeneral, STIXSizeOneSym, "DejaVu Sans", "DejaVu Serif", Cambria, "Cambria Math", "Lucida Sans Unicode", "Arial Unicode MS", "Lucida Grande", OpenSymbol, "Standard Symbols L", Times, serif;
 #endif
 }
 
index b8327bb..bae6acc 100644 (file)
@@ -261,6 +261,8 @@ String SimpleFontData::description() const
 
 const OpenTypeMathData* SimpleFontData::mathData() const
 {
+    if (m_isLoading)
+        return nullptr;
     if (!m_mathData) {
         m_mathData = OpenTypeMathData::create(m_platformData);
         if (!m_mathData->hasMathData())
index 875d96a..4fa17d4 100644 (file)
@@ -229,9 +229,9 @@ struct MATHTable : TableBase {
 } // namespace OpenType
 #endif // ENABLE(OPENTYPE_MATH)
 
+#if ENABLE(OPENTYPE_MATH)
 OpenTypeMathData::OpenTypeMathData(const FontPlatformData& fontData)
 {
-#if ENABLE(OPENTYPE_MATH)
     m_mathBuffer = fontData.openTypeTable(OpenType::MATHTag);
     const OpenType::MATHTable* math = OpenType::validateTable<OpenType::MATHTable>(m_mathBuffer);
     if (!math) {
@@ -249,13 +249,15 @@ OpenTypeMathData::OpenTypeMathData(const FontPlatformData& fontData)
     if (!mathVariants)
         m_mathBuffer = nullptr;
 #else
+OpenTypeMathData::OpenTypeMathData(const FontPlatformData&)
+{
     m_mathBuffer = nullptr;
 #endif
 }
 
+#if ENABLE(OPENTYPE_MATH)
 float OpenTypeMathData::getMathConstant(const SimpleFontData* font, MathConstant constant) const
 {
-#if ENABLE(OPENTYPE_MATH)
     int32_t value = 0;
 
     const OpenType::MATHTable* math = OpenType::validateTable<OpenType::MATHTable>(m_mathBuffer);
@@ -277,14 +279,16 @@ float OpenTypeMathData::getMathConstant(const SimpleFontData* font, MathConstant
 
     return value * font->sizePerUnit();
 #else
+float OpenTypeMathData::getMathConstant(const SimpleFontData*, MathConstant) const
+{
     ASSERT_NOT_REACHED();
     return 0;
 #endif
 }
 
+#if ENABLE(OPENTYPE_MATH)
 float OpenTypeMathData::getItalicCorrection(const SimpleFontData* font, Glyph glyph) const
 {
-#if ENABLE(OPENTYPE_MATH)
     const OpenType::MATHTable* math = OpenType::validateTable<OpenType::MATHTable>(m_mathBuffer);
     ASSERT(math);
     const OpenType::MathGlyphInfo* mathGlyphInfo = math->mathGlyphInfo(*m_mathBuffer);
@@ -297,16 +301,18 @@ float OpenTypeMathData::getItalicCorrection(const SimpleFontData* font, Glyph gl
 
     return mathItalicsCorrectionInfo->getItalicCorrection(*m_mathBuffer, glyph) * font->sizePerUnit();
 #else
+float OpenTypeMathData::getItalicCorrection(const SimpleFontData*, Glyph) const
+{
     ASSERT_NOT_REACHED();
     return 0;
 #endif
 }
 
+#if ENABLE(OPENTYPE_MATH)
 void OpenTypeMathData::getMathVariants(Glyph glyph, bool isVertical, Vector<Glyph>& sizeVariants, Vector<AssemblyPart>& assemblyParts) const
 {
     sizeVariants.clear();
     assemblyParts.clear();
-#if ENABLE(OPENTYPE_MATH)
     const OpenType::MATHTable* math = OpenType::validateTable<OpenType::MATHTable>(m_mathBuffer);
     ASSERT(math);
     const OpenType::MathVariants* mathVariants = math->mathVariants(*m_mathBuffer);
@@ -319,6 +325,8 @@ void OpenTypeMathData::getMathVariants(Glyph glyph, bool isVertical, Vector<Glyp
     mathGlyphConstruction->getSizeVariants(*m_mathBuffer, sizeVariants);
     mathGlyphConstruction->getAssemblyParts(*m_mathBuffer, assemblyParts);
 #else
+void OpenTypeMathData::getMathVariants(Glyph, bool, Vector<Glyph>&, Vector<AssemblyPart>&) const
+{
     ASSERT_NOT_REACHED();
 #endif
 }
index 05f8d29..30ffbf6 100644 (file)
@@ -25,6 +25,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define _USE_MATH_DEFINES 1
 #include "config.h"
 
 #if ENABLE(MATHML)
@@ -1282,17 +1283,17 @@ void RenderMathMLOperator::stretchTo(LayoutUnit heightAboveBaseline, LayoutUnit
     updateStyle();
 }
 
-FloatRect RenderMathMLOperator::boundsForGlyph(const GlyphData& data)
+FloatRect RenderMathMLOperator::boundsForGlyph(const GlyphData& data) const
 {
     return data.fontData->boundsForGlyph(data.glyph);
 }
 
-float RenderMathMLOperator::heightForGlyph(const GlyphData& data)
+float RenderMathMLOperator::heightForGlyph(const GlyphData& data) const
 {
     return boundsForGlyph(data).height();
 }
 
-float RenderMathMLOperator::advanceForGlyph(const GlyphData& data)
+float RenderMathMLOperator::advanceForGlyph(const GlyphData& data) const
 {
     return data.fontData->widthForGlyph(data.glyph);
 }
@@ -1302,9 +1303,7 @@ void RenderMathMLOperator::computePreferredLogicalWidths()
     ASSERT(preferredLogicalWidthsDirty());
 
     SetOperatorProperties();
-    UChar stretchedCharacter;
-    bool allowStretching = shouldAllowStretching(stretchedCharacter);
-    if (!allowStretching) {
+    if (!shouldAllowStretching()) {
         RenderMathMLToken::computePreferredLogicalWidths();
         if (isInvisibleOperator()) {
             // In some fonts, glyphs for invisible operators have nonzero width. Consequently, we subtract that width here to avoid wide gaps.
@@ -1317,9 +1316,17 @@ void RenderMathMLOperator::computePreferredLogicalWidths()
         return;
     }
 
-    GlyphData data = style().font().glyphDataForCharacter(stretchedCharacter, false);
+    GlyphData data = style().font().glyphDataForCharacter(m_operator, false);
     float maximumGlyphWidth = advanceForGlyph(data);
-    findStretchyData(stretchedCharacter, &maximumGlyphWidth);
+    if (isLargeOperatorInDisplayStyle()) {
+        // Large operators in STIX Word have incorrect advance width, causing misplacement of superscript, so we use the glyph bound instead (http://sourceforge.net/p/stixfonts/tracking/49/).
+        StretchyData largeOperator = getDisplayStyleLargeOperator(m_operator);
+        if (largeOperator.mode() == DrawSizeVariant)
+            maximumGlyphWidth = boundsForGlyph(largeOperator.variant()).width();
+    } else {
+        // FIXME: some glyphs (e.g. the one for "FRACTION SLASH" in the STIX Math font or large operators) have a width that depends on the height, resulting in large gaps (https://bugs.webkit.org/show_bug.cgi?id=130326).
+        findStretchyData(m_operator, &maximumGlyphWidth);
+    }
     m_maxPreferredLogicalWidth = m_minPreferredLogicalWidth = m_leadingSpace + maximumGlyphWidth + m_trailingSpace;
 }
 
@@ -1371,78 +1378,221 @@ void RenderMathMLOperator::updateOperatorProperties()
     setNeedsLayoutAndPrefWidthsRecalc();
 }
 
-bool RenderMathMLOperator::shouldAllowStretching(UChar& stretchedCharacter)
+bool RenderMathMLOperator::shouldAllowStretching() const
+{
+    return m_operator && (hasOperatorFlag(MathMLOperatorDictionary::Stretchy) || isLargeOperatorInDisplayStyle());
+}
+
+bool RenderMathMLOperator::getGlyphAssemblyFallBack(Vector<OpenTypeMathData::AssemblyPart> assemblyParts, StretchyData& stretchyData) const
 {
-    if (!hasOperatorFlag(MathMLOperatorDictionary::Stretchy))
-        return false;
+    GlyphData top;
+    GlyphData extension;
+    GlyphData bottom;
+    GlyphData middle;
+
+    // The structure of the Open Type Math table is a bit more general than the one currently used by the RenderMathMLOperator code, so we try to fallback in a reasonable way.
+    // FIXME: RenderMathMLOperator should support the most general format (https://bugs.webkit.org/show_bug.cgi?id=130327).
+    // We use the approach of the copyComponents function in github.com/mathjax/MathJax-dev/blob/master/fonts/OpenTypeMath/fontUtil.py
+
+    // We count the number of non extender pieces.
+    int nonExtenderCount = 0;
+    for (auto& part : assemblyParts) {
+        if (!part.isExtender)
+            nonExtenderCount++;
+    }
+    if (nonExtenderCount > 3)
+        return false; // This is not supported: there are too many pieces.
+
+    // We now browse the list of pieces.
+    // 1 = look for a left/bottom glyph
+    // 2 = look for an extender between left/bottom and mid
+    // 4 = look for a middle glyph
+    // 5 = look for an extender between middle and right/top
+    // 5 = look for a right/top glyph
+    // 6 = no more piece expected
+    unsigned state = 1;
+
+    extension.glyph = 0;
+    middle.glyph = 0;
+    for (auto& part : assemblyParts) {
+        if ((state == 2 || state == 3) && nonExtenderCount < 3) {
+            // We do not try to find a middle glyph.
+            state += 2;
+        }
+        if (part.isExtender) {
+            if (!extension.glyph)
+                extension.glyph = part.glyph;
+            else if (extension.glyph != part.glyph)
+                return false; // This is not supported: the assembly has different extenders.
+
+            if (state == 1) {
+                // We ignore left/bottom piece and multiple successive extenders.
+                state = 2;
+            } else if (state == 3) {
+                // We ignore middle piece and multiple successive extenders.
+                state = 4;
+            } else if (state >= 5)
+                return false; // This is not supported: we got an unexpected extender.
+            continue;
+        }
+
+        if (state == 1) {
+            // We copy the left/bottom part.
+            bottom.glyph = part.glyph;
+            state = 2;
+            continue;
+        }
+
+        if (state == 2 || state == 3) {
+            // We copy the middle part.
+            middle.glyph = part.glyph;
+            state = 4;
+            continue;
+        }
+
+        if (state == 4 || state == 5) {
+            // We copy the right/top part.
+            top.glyph = part.glyph;
+            state = 6;
+        }
+    }
+
+    if (!extension.glyph)
+        return false; // This is not supported: we always assume that we have an extension glyph.
+
+    // If we don't have top/bottom glyphs, we use the extension glyph.
+    if (!top.glyph)
+        top.glyph = extension.glyph;
+    if (!bottom.glyph)
+        bottom.glyph = extension.glyph;
+
+    top.fontData = style().font().primaryFont();
+    extension.fontData = top.fontData;
+    bottom.fontData = top.fontData;
+    if (middle.glyph)
+        middle.fontData = top.fontData;
+
+    stretchyData.setGlyphAssemblyMode(top, extension, bottom, middle);
+
+    return true;
+}
+
+RenderMathMLOperator::StretchyData RenderMathMLOperator::getDisplayStyleLargeOperator(UChar character) const
+{
+    StretchyData data;
+
+    ASSERT(isLargeOperatorInDisplayStyle());
+
+    const auto& primaryFontData = style().font().primaryFont();
+    GlyphData baseGlyph = style().font().glyphDataForCharacter(character, false);
+    if (!primaryFontData || !primaryFontData->mathData() || baseGlyph.fontData != primaryFontData)
+        return data;
+
+    Vector<Glyph> sizeVariants;
+    Vector<OpenTypeMathData::AssemblyPart> assemblyParts;
 
-    stretchedCharacter = m_operator;
-    return stretchedCharacter;
+    // The value of displayOperatorMinHeight is sometimes too small, so we ensure that it is at least \sqrt{2} times the size of the base glyph.
+    float displayOperatorMinHeight = std::max(baseGlyph.fontData->boundsForGlyph(baseGlyph.glyph).height() * float(M_SQRT2), primaryFontData->mathData()->getMathConstant(primaryFontData, OpenTypeMathData::DisplayOperatorMinHeight));
+
+    primaryFontData->mathData()->getMathVariants(baseGlyph.glyph, true, sizeVariants, assemblyParts);
+
+    // We choose the first size variant that is larger than the expected displayOperatorMinHeight and otherwise fallback to the largest variant.
+    for (auto& variant : sizeVariants) {
+        GlyphData sizeVariant;
+        sizeVariant.glyph = variant;
+        sizeVariant.fontData = primaryFontData;
+        data.setSizeVariantMode(sizeVariant);
+        if (boundsForGlyph(sizeVariant).height() >= displayOperatorMinHeight)
+            return data;
+    }
+    return data;
 }
 
-// FIXME: We should also look at alternate characters defined in the OpenType MATH table (http://wkbug/122297).
 RenderMathMLOperator::StretchyData RenderMathMLOperator::findStretchyData(UChar character, float* maximumGlyphWidth)
 {
-    // FIXME: This function should first try size variants.
     StretchyData data;
+    StretchyData assemblyData;
 
-    const StretchyCharacter* stretchyCharacter = 0;
-    const int maxIndex = WTF_ARRAY_LENGTH(stretchyCharacters);
-    for (int index = 0; index < maxIndex; ++index) {
-        if (stretchyCharacters[index].character == character) {
-            stretchyCharacter = &stretchyCharacters[index];
-            break;
+    const auto& primaryFontData = style().font().primaryFont();
+    GlyphData baseGlyph = style().font().glyphDataForCharacter(character, false);
+    
+    if (primaryFontData && primaryFontData->mathData() && baseGlyph.fontData == primaryFontData) {
+        Vector<Glyph> sizeVariants;
+        Vector<OpenTypeMathData::AssemblyPart> assemblyParts;
+        primaryFontData->mathData()->getMathVariants(baseGlyph.glyph, true, sizeVariants, assemblyParts);
+        // We verify the size variants.
+        for (auto& variant : sizeVariants) {
+            GlyphData sizeVariant;
+            sizeVariant.glyph = variant;
+            sizeVariant.fontData = primaryFontData;
+            if (maximumGlyphWidth)
+                *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(sizeVariant));
+            else {
+                data.setSizeVariantMode(sizeVariant);
+                if (heightForGlyph(sizeVariant) >= stretchSize())
+                    return data;
+            }
         }
-    }
 
-    // If we didn't find a stretchy character set for this character, we don't know how to stretch it.
-    if (!stretchyCharacter)
-        return data;
+        // We verify if there is a construction.
+        if (!getGlyphAssemblyFallBack(assemblyParts, assemblyData))
+            return data;
+    } else {
+        // If the font does not have a MATH table, we fallback to the Unicode-only constructions.
+        const StretchyCharacter* stretchyCharacter = nullptr;
+        const unsigned maxIndex = WTF_ARRAY_LENGTH(stretchyCharacters);
+        for (unsigned index = 0; index < maxIndex; ++index) {
+            if (stretchyCharacters[index].character == character) {
+                stretchyCharacter = &stretchyCharacters[index];
+                break;
+            }
+        }
 
-    // We convert the list of Unicode characters into a list of glyph data.
-    GlyphData top = style().font().glyphDataForCharacter(stretchyCharacter->topChar, false);
-    GlyphData extension = style().font().glyphDataForCharacter(stretchyCharacter->extensionChar, false);
-    GlyphData bottom = style().font().glyphDataForCharacter(stretchyCharacter->bottomChar, false);
-    GlyphData middle;
-    if (stretchyCharacter->middleChar)
-        middle = style().font().glyphDataForCharacter(stretchyCharacter->middleChar, false);
+        // If we didn't find a stretchy character set for this character, we don't know how to stretch it.
+        if (!stretchyCharacter)
+            return data;
+
+        // We convert the list of Unicode characters into a list of glyph data.
+        GlyphData top = style().font().glyphDataForCharacter(stretchyCharacter->topChar, false);
+        GlyphData extension = style().font().glyphDataForCharacter(stretchyCharacter->extensionChar, false);
+        GlyphData bottom = style().font().glyphDataForCharacter(stretchyCharacter->bottomChar, false);
+        GlyphData middle;
+        if (stretchyCharacter->middleChar)
+            middle = style().font().glyphDataForCharacter(stretchyCharacter->middleChar, false);
+        assemblyData.setGlyphAssemblyMode(top, extension, bottom, middle);
+    }
+
+    ASSERT(assemblyData.mode() == DrawGlyphAssembly);
 
     // If we are measuring the maximum width, verify each component.
     if (maximumGlyphWidth) {
-        *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(top));
-        *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(extension));
-        if (middle.glyph)
-            *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(middle));
-        *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(bottom));
-        return data;
+        *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(assemblyData.top()));
+        *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(assemblyData.extension()));
+        if (assemblyData.middle().glyph)
+            *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(assemblyData.middle()));
+        *maximumGlyphWidth = std::max(*maximumGlyphWidth, advanceForGlyph(assemblyData.bottom()));
+        return assemblyData;
     }
 
-    float height = heightForGlyph(top) + heightForGlyph(bottom);
-    if (middle.glyph)
-        height += heightForGlyph(middle);
+    // We ensure that the stretch height is large enough to avoid glyph overlaps.
+    float height = heightForGlyph(assemblyData.top()) + heightForGlyph(assemblyData.bottom());
+    if (assemblyData.middle().glyph)
+        height += heightForGlyph(assemblyData.middle());
     if (height > stretchSize())
         return data;
 
-    data.setGlyphAssemblyMode(top, extension, bottom, middle);
-    return data;
+    return assemblyData;
 }
 
 void RenderMathMLOperator::updateStyle()
 {
+    FontCachePurgePreventer fontCachePurgePreventer;
+
     ASSERT(firstChild());
     if (!firstChild())
         return;
 
-    UChar stretchedCharacter;
-    bool allowStretching = shouldAllowStretching(stretchedCharacter);
-
-    float stretchedCharacterHeight = style().fontMetrics().floatHeight();
     m_stretchyData.setNormalMode();
-
-    // Sometimes we cannot stretch an operator properly, so in that case, we should just use the original size.
-    if (allowStretching && stretchSize() > stretchedCharacterHeight)
-        m_stretchyData = findStretchyData(stretchedCharacter, nullptr);
-
     // We add spacing around the operator.
     // FIXME: The spacing should be added to the whole embellished operator (https://bugs.webkit.org/show_bug.cgi?id=124831).
     // FIXME: The spacing should only be added inside (perhaps inferred) mrow (http://www.w3.org/TR/MathML/chapter3.html#presm.opspacing).
@@ -1452,6 +1602,38 @@ void RenderMathMLOperator::updateStyle()
     newStyle.get().setMarginEnd(Length(m_trailingSpace, Fixed));
     wrapper->setStyle(std::move(newStyle));
     wrapper->setNeedsLayoutAndPrefWidthsRecalc();
+
+    if (!shouldAllowStretching())
+        return;
+
+    if (isLargeOperatorInDisplayStyle())
+        m_stretchyData = getDisplayStyleLargeOperator(m_operator);
+    else {
+        // We do not stretch if the base glyph is large enough.
+        GlyphData baseGlyph = style().font().glyphDataForCharacter(m_operator, false);
+        float baseHeight = heightForGlyph(baseGlyph);
+        if (stretchSize() <= baseHeight)
+            return;
+        m_stretchyData = findStretchyData(m_operator, nullptr);
+    }
+
+    if (m_stretchyData.mode() == DrawSizeVariant) {
+        // We resize the operator to match the one of the size variant.
+        if (isLargeOperatorInDisplayStyle()) {
+            // The stretch size is actually not involved in the selection of the size variant in getDisplayStyleLargeOperator.
+            // We simply use the height and depth of the selected size variant glyph.
+            FloatRect glyphBounds = boundsForGlyph(m_stretchyData.variant());
+            m_stretchHeightAboveBaseline = -glyphBounds.y();
+            m_stretchDepthBelowBaseline = glyphBounds.maxY();
+        } else {
+            // We rescale the height and depth proportionately.
+            float variantSize = heightForGlyph(m_stretchyData.variant());
+            float size = stretchSize();
+            float aspect = size > 0 ? variantSize / size : 1.0;
+            m_stretchHeightAboveBaseline *= aspect;
+            m_stretchDepthBelowBaseline *= aspect;
+        }
+    }
 }
 
 int RenderMathMLOperator::firstLineBaseline() const
@@ -1557,6 +1739,17 @@ void RenderMathMLOperator::paint(PaintInfo& info, const LayoutPoint& paintOffset
     GraphicsContextStateSaver stateSaver(*info.context);
     info.context->setFillColor(style().visitedDependentColor(CSSPropertyColor), style().colorSpace());
 
+    if (m_stretchyData.mode() == DrawSizeVariant) {
+        ASSERT(m_stretchyData.variant().glyph);
+        GlyphBuffer buffer;
+        buffer.add(m_stretchyData.variant().glyph, m_stretchyData.variant().fontData, advanceForGlyph(m_stretchyData.variant()));
+        LayoutPoint operatorTopLeft = ceiledIntPoint(paintOffset + location());
+        FloatRect glyphBounds = boundsForGlyph(m_stretchyData.variant());
+        LayoutPoint operatorOrigin(operatorTopLeft.x(), operatorTopLeft.y() - glyphBounds.y());
+        info.context->drawGlyphs(style().font(), *m_stretchyData.variant().fontData, buffer, 0, 1, operatorOrigin);
+        return;
+    }
+
     ASSERT(m_stretchyData.mode() == DrawGlyphAssembly);
     ASSERT(m_stretchyData.top().glyph);
     ASSERT(m_stretchyData.bottom().glyph);
index fe2fa05..e12d4e0 100644 (file)
@@ -30,7 +30,9 @@
 
 #include "GlyphPage.h"
 #include "MathMLElement.h"
+#include "OpenTypeMathData.h"
 #include "RenderMathMLToken.h"
+#include "SimpleFontData.h"
 
 namespace WebCore {
     
@@ -40,7 +42,7 @@ enum Form { Infix, Prefix, Postfix };
 enum Flag {
     Accent = 0x1, // FIXME: This must be used to implement accentunder/accent on munderover (https://bugs.webkit.org/show_bug.cgi?id=124826).
     Fence = 0x2, // This has no visual effect but allows to expose semantic information via the accessibility tree.
-    LargeOp = 0x4, // FIXME: This must be used to implement displaystyle (https://bugs.webkit.org/show_bug.cgi?id=118737)
+    LargeOp = 0x4,
     MovableLimits = 0x8, // FIXME: This must be used to implement displaystyle  (https://bugs.webkit.org/show_bug.cgi?id=118737).
     Separator = 0x10, // This has no visual effect but allows to expose semantic information via the accessibility tree.
     Stretchy = 0x20,
@@ -65,6 +67,8 @@ public:
     LayoutUnit stretchSize() const { return m_stretchHeightAboveBaseline + m_stretchDepthBelowBaseline; }
     
     bool hasOperatorFlag(MathMLOperatorDictionary::Flag flag) const { return m_operatorFlags & flag; }
+    // FIXME: The displaystyle property is not implemented (https://bugs.webkit.org/show_bug.cgi?id=118737).
+    bool isLargeOperatorInDisplayStyle() const { return !hasOperatorFlag(MathMLOperatorDictionary::Stretchy) && hasOperatorFlag(MathMLOperatorDictionary::LargeOp); }
 
     void updateStyle() override final;
 
@@ -89,13 +93,12 @@ private:
     void rebuildTokenContent(const String& operatorString);
     void updateFromElement() override;
 
-    bool shouldAllowStretching(UChar& characterForStretching);
+    bool shouldAllowStretching() const;
 
-    FloatRect boundsForGlyph(const GlyphData&);
-    float heightForGlyph(const GlyphData&);
-    float advanceForGlyph(const GlyphData&);
+    FloatRect boundsForGlyph(const GlyphData&) const;
+    float heightForGlyph(const GlyphData&) const;
+    float advanceForGlyph(const GlyphData&) const;
 
-    // FIXME: DrawSizeVariant is not implemented yet.
     enum DrawMode {
         DrawNormal, DrawSizeVariant, DrawGlyphAssembly
     };
@@ -146,6 +149,8 @@ private:
         // FIXME: For OpenType fonts with a MATH table all the glyphs are from the same font, so we would only need to store the glyph indices here.
         GlyphData m_data[4];
     };
+    bool getGlyphAssemblyFallBack(Vector<OpenTypeMathData::AssemblyPart>, StretchyData&) const;
+    StretchyData getDisplayStyleLargeOperator(UChar) const;
     StretchyData findStretchyData(UChar, float* maximumGlyphWidth);
     
     enum GlyphPaintTrimming {