<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[205111] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/205111">205111</a></dd>
<dt>Author</dt> <dd>fred.wang@free.fr</dd>
<dt>Date</dt> <dd>2016-08-28 23:55:59 -0700 (Sun, 28 Aug 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add support for non-BMP operators U+1EEF0 and U+1EEF1
https://bugs.webkit.org/show_bug.cgi?id=153984

Source/WebCore:

Patch by Frederic Wang &lt;fwang@igalia.com&gt; on 2016-08-25
Reviewed by Darin Adler.

Tests: mathml/presentation/non-bmp-operators-spacing.html
       mathml/presentation/non-bmp-operators-stretching.html

* mathml/MathMLOperatorDictionary.cpp: We move the definition of operator dictionary Entry
here as it is not used by external code.
We now also accept non-BMP operators and add entries for U+1EEF0 and U+1EEF1.
(WebCore::extractProperty): Helper function to convert from Entry structure to a Property
structure.
(WebCore::MathMLOperatorDictionary::search): This function now accepts a non-BMP parameter
and returns a Property structure.
(WebCore::MathMLOperatorDictionary::isVertical): This function now accepts a non-BMP parameter.
* mathml/MathMLOperatorDictionary.h: Replace the Entry structure with a Property structure
which was used by MathMLOperatorElement. Update the signatures of search and isVertical.
* mathml/MathMLOperatorElement.cpp:
(WebCore::MathMLOperatorElement::parseOperatorChar): Remove the special case that excludes
non-BMP operators.
(WebCore::MathMLOperatorElement::computeDictionaryProperty): Rename the property structure
to use the one moved into MathMLOperatorDictionary.h. We no longer need to convert the result
of the search call.
(WebCore::MathMLOperatorElement::dictionaryProperty): Rename the property structure.
* mathml/MathMLOperatorElement.h: Make OperatorChar accept non-BMP operators.
MathMLOperatorElement::DictionaryProperty is now moved into MathMLOperatorDictionary
and renamed Property.
* rendering/mathml/MathOperator.cpp: Accept non-BMP operators.
* rendering/mathml/MathOperator.h: Ditto.
* rendering/mathml/RenderMathMLFencedOperator.cpp:
(WebCore::RenderMathMLFencedOperator::updateOperatorContent):  Adjust code to use the new
return type of MathMLOperatorDictionary::search.
* rendering/mathml/RenderMathMLFencedOperator.h: Accept non-BMP operators.
* rendering/mathml/RenderMathMLOperator.cpp: Ditto.
* rendering/mathml/RenderMathMLOperator.h: Ditto.

LayoutTests:

We add two reftests to check that the non-BMP operators are properly
handled by the MathML dictionary (form, properties, direction) as well
as the rendering code (spacing, stretching). We test the new horizontal
strechy operators U+1EEF0 and U+1EEF1 as well as the letter U+1D400
which is not a real mathematical operator. We add a minimal test
font which contains a black square for U+005F, U+1EEF0, U+1EEF1, U+1D400
and the data that can be used to stretch them horizontally.

Patch by Frederic Wang &lt;fwang@igalia.com&gt; on 2016-08-25
Reviewed by Darin Adler.

* mathml/presentation/non-bmp-operators-spacing-expected.html: Added.
* mathml/presentation/non-bmp-operators-spacing.html: Added.
* mathml/presentation/non-bmp-operators-stretching-expected.html: Added.
* mathml/presentation/non-bmp-operators-stretching.html: Added.
* mathml/presentation/non-bmp-operators.woff: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLOperatorDictionarycpp">trunk/Source/WebCore/mathml/MathMLOperatorDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLOperatorDictionaryh">trunk/Source/WebCore/mathml/MathMLOperatorDictionary.h</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLOperatorElementcpp">trunk/Source/WebCore/mathml/MathMLOperatorElement.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLOperatorElementh">trunk/Source/WebCore/mathml/MathMLOperatorElement.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlMathOperatorcpp">trunk/Source/WebCore/rendering/mathml/MathOperator.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlMathOperatorh">trunk/Source/WebCore/rendering/mathml/MathOperator.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLFencedOperatorcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLFencedOperatorh">trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLOperatorcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLOperatorh">trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsmathmlpresentationnonbmpoperatorsspacingexpectedhtml">trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing-expected.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationnonbmpoperatorsspacinghtml">trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationnonbmpoperatorsstretchingexpectedhtml">trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching-expected.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationnonbmpoperatorsstretchinghtml">trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationnonbmpoperatorswoff">trunk/LayoutTests/mathml/presentation/non-bmp-operators.woff</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/LayoutTests/ChangeLog        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-08-25  Frederic Wang  &lt;fwang@igalia.com&gt;
+
+        Add support for non-BMP operators U+1EEF0 and U+1EEF1
+        https://bugs.webkit.org/show_bug.cgi?id=153984
+
+        We add two reftests to check that the non-BMP operators are properly
+        handled by the MathML dictionary (form, properties, direction) as well
+        as the rendering code (spacing, stretching). We test the new horizontal
+        strechy operators U+1EEF0 and U+1EEF1 as well as the letter U+1D400
+        which is not a real mathematical operator. We add a minimal test
+        font which contains a black square for U+005F, U+1EEF0, U+1EEF1, U+1D400
+        and the data that can be used to stretch them horizontally.
+
+        Reviewed by Darin Adler.
+
+        * mathml/presentation/non-bmp-operators-spacing-expected.html: Added.
+        * mathml/presentation/non-bmp-operators-spacing.html: Added.
+        * mathml/presentation/non-bmp-operators-stretching-expected.html: Added.
+        * mathml/presentation/non-bmp-operators-stretching.html: Added.
+        * mathml/presentation/non-bmp-operators.woff: Added.
+
</ins><span class="cx"> 2016-08-28  Youenn Fablet  &lt;youenn@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Fetch API] Ensure response cloning works when data is loading
</span></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationnonbmpoperatorsspacingexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing-expected.html (0 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing-expected.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing-expected.html        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;Spacing of non-BMP operators&lt;/title&gt;
+    &lt;meta charset=&quot;utf-8&quot;/&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+      @font-face {
+        font-family: non-bmp-operators;
+        src: url(&quot;non-bmp-operators.woff&quot;);
+      }
+      math {
+        font-family: non-bmp-operators;
+      }
+    &lt;/style&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+
+    &lt;p&gt;
+      This test verifies the spacing of some non-BMP operators. It is assumed
+      that U+1EEF0 and U+1EEF1 only have a prefix form with zero lspace/rspace
+      and that U+1D400 is not in the operator dictionary. Hence the operator
+      spacing use zero for prefix U+1EEF0/U+1EEF1 and will use the default
+      thickmathspace value otherwise. Note that for implicit form, WebKit has a
+      workaround for bad markup and will fallback to the form of a dictionary
+      entry if one is found.
+    &lt;/p&gt;
+
+    &lt;p&gt;Prefix:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot; form=&quot;prefix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot; form=&quot;prefix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot; form=&quot;prefix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Postfix:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot; form=&quot;postfix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot; form=&quot;postfix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot; form=&quot;postfix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Infix:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;  form=&quot;infix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;  form=&quot;infix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;  form=&quot;infix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Prefix (implicit):&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Infix (implicit):&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Postfix (implicit):&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing-expected.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+LF
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/html
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsmathmlpresentationnonbmpoperatorsspacinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing.html (0 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing.html        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;Spacing of non-BMP operators&lt;/title&gt;
+    &lt;meta charset=&quot;utf-8&quot;/&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+      @font-face {
+        font-family: non-bmp-operators;
+        src: url(&quot;non-bmp-operators.woff&quot;);
+      }
+      math {
+        font-family: non-bmp-operators;
+      }
+    &lt;/style&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+
+    &lt;p&gt;
+      This test verifies the spacing of some non-BMP operators. It is assumed
+      that U+1EEF0 and U+1EEF1 only have a prefix form with zero lspace/rspace
+      and that U+1D400 is not in the operator dictionary. Hence the operator
+      spacing use zero for prefix U+1EEF0/U+1EEF1 and will use the default
+      thickmathspace value otherwise. Note that for implicit form, WebKit has a
+      workaround for bad markup and will fallback to the form of a dictionary
+      entry if one is found.
+    &lt;/p&gt;
+
+    &lt;p&gt;Prefix:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo form=&quot;prefix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo form=&quot;prefix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo form=&quot;prefix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Postfix:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo form=&quot;postfix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo form=&quot;postfix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo form=&quot;postfix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Infix:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo form=&quot;infix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo form=&quot;infix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo form=&quot;infix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Prefix (implicit):&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mo&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mo&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mo&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Infix (implicit):&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mn&gt;&lt;/mn&gt;&lt;/math&gt;_
+
+    &lt;p&gt;Postfix (implicit):&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;/math&gt;_
+    U+1EEF1:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;/math&gt;_
+    U+1D400:&lt;math&gt;&lt;mn&gt;&lt;/mn&gt;&lt;mo&gt;&amp;#x1D400;&lt;/mo&gt;&lt;/math&gt;_
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/non-bmp-operators-spacing.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+LF
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/html
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsmathmlpresentationnonbmpoperatorsstretchingexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching-expected.html (0 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching-expected.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching-expected.html        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;Stretching of non-BMP operators&lt;/title&gt;
+    &lt;meta charset=&quot;utf-8&quot;/&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+      @font-face {
+        font-family: non-bmp-operators;
+        src: url(&quot;non-bmp-operators.woff&quot;);
+      }
+      math {
+        font-family: non-bmp-operators;
+      }
+    &lt;/style&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+
+    &lt;p&gt;
+      This test verifies the stretching of some non-BMP operators. The font
+      used by this test provides horizontal stretching data for U+1EEF0,
+      U+1EEF1 and U+1D400. It is assumed that U+1EEF0 and U+1EEF1 are
+      horizontal and only have a prefix form with property stretchy. It is also
+      assumed that U+1D400 is not in the operator dictionary. Hence only the
+      prefix operators U+1EEF0 and U+1EEF1 will stretch horizontally.
+    &lt;/p&gt;
+
+    &lt;p&gt;Prefix form:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;prefix&quot; stretchy=&quot;true&quot; lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1EEF1:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;prefix&quot; stretchy=&quot;true&quot; lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1D400:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;prefix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+
+    &lt;p&gt;Infix form:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;infix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1EEF1:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;infix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1D400:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;infix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+
+    &lt;p&gt;Postfix form:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;postfix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1EEF1:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;postfix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1D400:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;postfix&quot; stretchy=&quot;false&quot; lspace=&quot;thickmathspace&quot; rspace=&quot;thickmathspace&quot;&gt;_&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching-expected.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+LF
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/html
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsmathmlpresentationnonbmpoperatorsstretchinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching.html (0 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching.html        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;Stretching of non-BMP operators&lt;/title&gt;
+    &lt;meta charset=&quot;utf-8&quot;/&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+      @font-face {
+        font-family: non-bmp-operators;
+        src: url(&quot;non-bmp-operators.woff&quot;);
+      }
+      math {
+        font-family: non-bmp-operators;
+      }
+    &lt;/style&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+
+    &lt;p&gt;
+      This test verifies the stretching of some non-BMP operators. The font
+      used by this test provides horizontal stretching data for U+1EEF0,
+      U+1EEF1 and U+1D400. It is assumed that U+1EEF0 and U+1EEF1 are
+      horizontal and only have a prefix form with property stretchy. It is also
+      assumed that U+1D400 is not in the operator dictionary. Hence only the
+      prefix operators U+1EEF0 and U+1EEF1 will stretch horizontally.
+    &lt;/p&gt;
+
+    &lt;p&gt;Prefix form:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;prefix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1EEF1:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;prefix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1D400:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;prefix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+
+    &lt;p&gt;Infix form:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;infix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1EEF1:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;infix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1D400:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;infix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+
+    &lt;p&gt;Postfix form:&lt;/p&gt;
+    U+1EEF0:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;postfix&quot;&gt;&amp;#x1EEF0;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1EEF1:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;postfix&quot;&gt;&amp;#x1EEF1;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+    U+1D400:&lt;math&gt;&lt;munder&gt;&lt;mo form=&quot;postfix&quot;&gt;&amp;#x1D400;&lt;/mo&gt;&lt;mspace width=&quot;100px&quot;/&gt;&lt;/munder&gt;&lt;/math&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/non-bmp-operators-stretching.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+LF
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/html
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsmathmlpresentationnonbmpoperatorswoff"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/non-bmp-operators.woff (0 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/non-bmp-operators.woff                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/non-bmp-operators.woff        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+wOFFOTTO\xA4 =\xE4CFF \xB3c\xD4.\xE6SFFTM\xD0z\xDDJ\MATH\xEC\xA1h883\x8FOS/2XA`\xD9\xE9cmap\x94p\x9Aɋ\xF4head,6
+\xCFg\xB9hhea4$=\xEBhmtx\x90        `maxpP+Pname\x9C\xF55\x9DS}c%post \xFF\x863x\x9Cc`d``b\xBB\x8ED\x91x~\x9B\xAF \xDC\xCC/\x80&quot; \x97\x9FL,C\xA6\x99_\x80\xC59\x98@&lt;8B /x\x9Cc`d``~\xC1\xC0\xC0\x90&amp;AlFT\xC0P\xA02P+x\x9Cc`a~\xC18\x81\x81\x95\x81\x81\x99\x87ك\x81\x81a\x84fr`\xB0f4\xD2 \xAC\x9C 0\xC0\xC8\xC4A+
+\xFF\xFF3\xBF\xB2r`j\xE0r
+@\xC8\xA0b\xE2x\x9C\xC5[ێ\xC9y\xAE\xB5׎]6\xDE\xDB
+sah\x80j$ͮ+\xDD\xD9\xD4\xCB!gI\x8Ed\xF0E\xB3Y$\xDBbw\xD3\xDD\xCD\xF1\xF2Nr\x9DW\xC9k\xE4\xFB\xFF\xAA\xEA3c%\x81W;\xC3bu\xD5\xF8\xFEcUKB\x88߉\xFF\xDF\xFE\xEF\xFBoϤ#\xBE\xF3Ǝ!\xFE\xE1͝\xFFR\\xBC\xF9;\xFEV|\xF5\x8Fv\xFC+\xF1\xBB\xAB\xB5\xE3_c\xBE\xB0\xE3\xEF\xC4?_\xFD'v}\xF3\xEDo\x858\xFB+S\xA0\xF17\xE2\xEC\xCD?\xD9\xF1/\xC4wo|;\xFE\xA5\xF8\xB77\xB6\xE3o\xB1\xE6\xBF\xED\xF8WB]\xFD\x8B\xFFZ\x9C]\xDD\xDA\xF1w\xE2\xEA\xEA\xDFEG\xA4b#v&quot;\x91X\x8A\x95(\x84/D(\xCE\xF1\xF9Z\\x8AW\xE2G\xE1a\xDC\xC7\xD3@\xAC\xB1*\xC0\xB7\x89h\x89~h-\xED)@\xE3\xADx\x89?Qm] tRc\xF6\H\xFC\x99bm$r\xEC\xEAa&gt;a^\x8C=`}&amp;4f\xCC
+\xA2\xE2{\x82oZ\xCC1\xB3\xC5x\x8Eq\x86qJ\x9Aw\xF7!\x87#\xF0\xA7\xB5uʃ\xD2\xE1\xEF\xCE1\x9F\xF2\xDAW\x90\x90~\xEA\x925\xF9:iBF)\xB2\x92\xCC\xF0\xB9\xC6\xCCS+X.\xB7\x92t\xCF\xF1\x8CF\xF7\xF8\x89\xF0=\xC0\x8E5S{\xC0w\x92]1\x8A=\xD1?\xF3\xB8zr\xC9\\xC9*\xCC\xE5\x902gZ-\xD0΀\xF1K\xE8܃\x8E\x92\xFF\\xFC]\xFE\xC8\xFE\xB7\xC2C\xD6i\x84\xCF)\xE3߇w\xD1\xEC\xBFO\xA1\xAF@\x87&lt;\xEDGޫ\x81TK\x93/\xEC\xAC^\x8A?\xFC5\x94\xD0l \xF9\xDB\xE2F\xBC\x83N\xBE\xF5\xB2\xE6\x9A{+\xF6\xE2\xCA/\x9F\xF6G\x8Ac\xC1s\xF6\xE3\xFB{N\x8E\xCFq\xB3e\xDF)\xAC\xE7\x90\xDD\xD7\xF04\xF2!\x8Aɿ\xEF\xAD/n\xB0^[NF\xF2ٵ\xF5&gt;\xDA0\xD5{\xA6\xB6(\xA5\xDA\xE0I*\xFE\x82ِ\xFD̫I\xB1\xC5\xD3+\xEF-j\xBAU{C\x96\xDAХ9\x89o ~\x9E1-'I\x80\x95K3U\xCCP\xB4%\xC0q\xCB\xD1Sا&amp;k\xC4\xF1\xCFj+\x99\xDBg$4\xB2\xDF[&lt;LL-X&amp;]\xAE\x95\x8C\x8D\xB1łQ \x9C \x9A\x9F9jFwżW5\xFDH\xFE\xEBw6\xE2        \x91\x95\xB5Լ\xF7q)\x89\xB63        K0\x89\xF5\xFBDz\xAC\xE5\x80\xD4b\x9Aq|˚g\xCF0\xD9\xC4d\x9A\x
 BCf\x81\xC3\xDCX\x97\xD9`c$\xDE\xDA\x9E\xF5\xAA-\xC6Q9c%}_\x94\x99\xCDaft46\xA14\xC3΢\xE4e^32\x81͚)\xDB\xD1}7\x92\xEEj\x9E\x9D\xB0\xB6\x8As\xE3\xDAf\xD1]\xB92f9׌`\xCEu\xC5 !k\x9Ay\xD9\xEB\x8C\x8Ec”Lm\x888\xEBV\x9E\xEE,m\xF6\x87\xBCڡ3\xB35e]&quot;B\x92\xCC\xF8ۼ\x9C{+\x83\xD8K\xE6R׮\x9E\xE9\x8D|\xF9A\xA5k\xFA\xEFܢ0NnWƈ\x90fƻ$\xE6\x8D\xE7G\xD0ݖ1{&amp;\xD2Mr\xBE}l?!I\xB5\x8A\xBC\xD2䟬\x86\xAD\x93\xC4 \x9C\xB1U5{\xC5aw:Vq@\xEC8^]\xEEh\xFAz\xDD3\x88\xF6_9sdl7\x97\xFD\xD6\x871a\xD66&gt;\xF7\xFB\x89\xE3\xF5\x8E\x9Dk\xA7Y\xC0Y\x91\xBC_Z\xBA\x95\xA6ػ\xAD\xC9ReH\xA7}^\xFA\xED~&gt;5\xF9\xB2\xEAn&quot;\xB7\x80\xC9]T\xA3\xAA\xEC?S\xFC\x8C\xB8\xD6Jq\xF6HufqXؼ\xE3\xB0qҐ\xD6U+Yp\xCFa\xF4?\xB4e=\x82ՑNR\x8Ak\xC4\xEB\xF6\x9D?w灡\xE5\x99\xD9|\xF3\xF8s}\xB9\xADT\x94\xBB\x9DwD\xB5\xDC-9C\xDB8܂Fh\xD1wz6#D6\x82\x9B\xFDW=&amp;\x9AV\xAE꟱\xCA\xFA\x85f\xCCֻ\x80\xA1\x8D\xDESvp\xBET\x8F\xF2\x9C#&quot;\xDC\xCB\xD4u\xCD\xE9\xFB\x82\xBD\xAC\xF2i\xB
 B\xD6fo\x9F[\x89\xAB\x881vq\xB2\x8F\xEC\xEA\x88%X\x8B\xFD\xBE\xED)\xFFq]\x87\xE9'\\xAFg\xBC鱮\xDF\xD4\xFC+\xAFе&lt;\x94s\x9Fs&lt;\xF7&gt;\xE5\xEA\x88\xFF9=oj\xDF\xF3\xF4|\xBC\xDAĶ\xCFq\xB2\I\xAA\x88O\xD9\xCB\xE66\x92
+\xFB\xC4\xE3.%\xB3\xF6\x9C\xD9N\xA8`M\xDD\xDE \x9D\x85\xCBU\x93\xDAs\x86Y]\xE5\xD7Ş\x85\x91\xAE\xAF\x91Oz\x81Wjr\xC5J\xEC\xDAe\x99cƥ\xCAif\xB5\xEB&amp;\xF7s\xE0c\x9E\xE1p\x97,\xEF\x83P,\xF5=\xE7G\xDA\xE5\xFC\xD8Y\xB6͸\xAD\x98\xD3s\xAC\x98\xB3\xA6IY\xC7t\xA9\x8D.\xE7L\xA5^\xDA\xFE1.\xE7 \xF6\xF3\xF7\xA9!#E\xFD]\xC6\xD63\xB1\x98\xDA\xDFU\x85\xDBXYҚՌU\x92#&gt;ތ\xAE\xD38\xB5\xECY\xC5G\xF6\xB9A-\x98\xF0\xD9l\xC4g\xB2\xDFstи\xBBW)nY\x96\x98\xE3\xAB:\x99\x99\xFCi\xE4\xD5\xD6rF\xF7\xC4\xCA\xE5\x89z\xA7\xED\xCE\xA6;^
+];E8\xA4\x9BZ\xA7\xA0Z\xD8Jl|Ar\xF7\xEE2־Ϟֻ\xE2\xB4-\xCF\xF9\xAE\xD3\xDDپ\xC4\xD04\xAF\xAEIXu{\xCDnx\xC7y\xAA뫟CL׺\xA7{iS\xEF\x9FV7
+\x87\xA7G\xA7\xAD&lt;\xAA\xAD\xC9\xEEĶ\xEF! \x9BS\xEE@M\x94ߚ۳T\xCA5\xF6-\xFB\xCB+\xAE\xC8C\xEE6\xEA=\xD8\xD3Q\x99X\xCFn\xE6\x98\xC8\xC6|d\xF9\x99\xDEvksȱ\xCC\xE3\xD9
+\xAD\x8E\xE4\xC3\xE1\xA9L\x9D[\xEB5Oj\xCDS\x86\x91\x8Bl\xB5\xB0\x91\xF2\x9A5\xFFz\x9E\xCF\xF7\xD0}\xD9\xF6O\xFF_\xE7\x8B*o?ah&gt;\x97\xAFj&quot;\xCB,d&quot;\xB3~\xE64\xB7\xF7eٯ\xB4\xA6;\x8ElWU\x9Dӏ\xF7wU\x9F[\x8Aչl\xBFc\x9B\xB3\xACu\xFFt\xBDOa\xF9\\xB0\xED\x8CW\x99\x9C\xFCŞ\xEA\xBD݊{6\xDAqa\xBB\xF2y\xEDfneg\\x9D \xBC\x9DgVl,\xA2\xD6\xDD\xDD\xCD\xC4IS3\x8EQ\x8F\xB9ڛ\xB9\xC2\xDESD\xEC\x8Fs\xE6\xE6\xAC\xE9\xF89+\x8C3\xEB\x9F\xE6N\xACޓ\x9F&gt;}\xA7\xD9&amp;\x9F\xE6\xF9\xD7\xF4\xF2\x91\xED\xAC\xEFy\xE5\xC3\xD1\xDEjk\xFBY;ol\xD6H\x9F)_'[+\xBB\xDBs\xBA\x9F\x96e?]?]tr\xD6\xF0 \x9F\xD5&quot;\xEE\x9E F\xDAT\xE7Bh\xDBK\x9D\xAE\x80͚\xB7\x8FI\xC8\xD61\xE7\xF3M\x99aM-{\xAAm\x9ET +\xFBͮ9)oY6V}\xA4\xE76\xDE\xD7&lt;\xC4a\xECN\xAE\x93ޔ\xF7        \x95VMZ\xCE\xD2\xEE\x8CyŨ\xBA;\x82d\xED\xA6m\x9Fׁ7O\xB9\xAAѯ\xA7{\xBA\xBA;9S\x83\x9Bw\xD5]H\xFD\xB60\xE65\xBA\xEC\xF4\xE6\xCC7\xB7}\x8C\xC9.s{\xABQ\xB0}\&gt;\xA3\xFC\xF8\x94\xB7{\xD6\xE7(\xD3mjՙ\xF2\xC3g\x96\xEF\xC1
 \xE6\xFDe\xC3\xC3\xBB?C\xEFO{\x97\xDBU\xCF§\x91\xCEդ~\xF7\xF0T\xF4ȣ\xD1c\xFC懆\xDF&lt;޿vGF\xAAc\x9D\x93\xBB|\xFAD\x955f/\xA8|\xE2T\x955\xF1\xD9;\x8E\x9Dx\xDE-E\xBD\xAC8ս\xF0\xF4\xD9\xF5\xA9{\xB0S\xF5\xD2d\x8B\xBF\xE5\xDEK\x8A\xFF\xEB{\xAF\xC3S\xD4\xE3\xF7^\xF2\xE8\xBD\xD7Sg\x99iy\x96\xC2sݩ\xE5\xB1wu\x84\xB8\xE91\x9D\xE4[\x9B\x9C\x95\xEE\xF14\xE6\x8E~!N\x9D\x90\xF7{\x9D\xFD\xDE\xD9ݻ\xCAS\xDFݭ\x9D\xBE:b\xA9\xFB\x90\x9F\xB4 \xA9\xAF\xF9-X\xF5~l·\xFCS\xF1\xEB\xC6\xFC\x8C\xF6)~\xDF4B^\xE9\xF3\xFD^3t\xA6\x9D\xD8\xE7g\xECu\xF9w\x8DuwL\xCB\xD0\xE37\xD1\xFE$\xCC\xC5\xDF\xE9\xDBO\x8Cb\x97c\xC2\xB2\xEF\xB4&amp;Lu\x84\xB1bIo\xF9\x9D\x9D\xCF\xEB\xEF -\xEEX\xA3\xA1x\x8F\xB9w\x96\xDF\xBB\xDC;\xBE\x96\xC5H:\xC5|ŵ)U\x9F9ɤť\xCC\xD36h\xF7\x99\xC9\xEF1R4\x96r\xF6\xAC\xA4mƈ(O\xF9+\xE3#=\xE6\xD9;|\xDEb\x9Dy\xE3\xD8f\x9D\x8D\xB4C֡\x87\xE7F\x9F% \xCE\xD2b\xD5ᷘ\x9Fx\xC5{\xC85e)n\xD9\xF7\xCCJ\x8F5$}\xBA\xBC\x9F\xB8\xFEijF\xB2\x91\xB52\x8D+*-\x8B\xA
 5\x91C\xE1\xF9K\x8F|\x80\xF4\xF0\xBB\xB3W\x91C\xB1\xA5\xCCu\xCCV\xF0-\xF6m\xFBN\xB2\x8E\x8E\xC1\xBE\xF2?\x92\xAF\xCB\xEF/۬\xF7䨼\x8EZ\xDD\xF2\xA88\xEFY \x9F\xF10\x97        \xDF?t\x98Ҡ\xF4!\xDA9\xE6\xF9iͯ\x8Cw\xCBjv\xEC݄/~W\xDFzN\x9B\xDFt7\xB50q@\xF2WZ\x9C\xDB\xF6w\xA7\xCC\xAAf㡵a\xA7\xB4\xE8\x88}\xE9\x95\x8Fq&gt;\xAFj\xB3=&amp;ɞ4\xB2\xE8\xBA(4&lt;\\xA4\xDFY/\x95\x925\xF1u\xD1\xE2\xD6='CZ\x8E\xB7lX\xB0\xCBo\xA9V\xC2I\x89\xC6\xD3t)o\x89N\xBA\xD9e\xD1rU\xA8\xE1\xB9z}\xF9\xEAGO\xF5\x97\xC1:
+Ԥ5h\xA9\xAB\xA2ؼ}\xF92\xE2\xB9V\x98\xC6/ϥ\x9C\xAE\xA2\\xF5ҤP\x93tQ&lt;\x99V\x98XG\xA1Nr=W\xDBd\xAE3U\xAC\xB4\x9A\xF4j\xB4щY&lt;0 &lt;\xF5Agy\x94&amp;\xEAU\xEBU\xCB\xB3{\x89L\x98n&quot;\x99\xE9u\xFA\xE0\xA9 \x99\xD3d\xB0\xCES\xDC\xD1:\x98\xAD\xB5z\x88\x8A\x95
+T\xAF\xFD\xB3
+\x8A\xB7\xD2
+\x99\x87Y\xB4)\xF2V\xAD[i\xB6|9\xEA+\xA4\x94_\xFF\x9Fd\xF9o\xFD\xA1ꍆS5\xE8w\xFC\xE1į\x8B\xAF.\xD4\xEBUOϲm\x90\xED\xE0\xE5\xFEW \xE5\xED\xD8o߼\xF8\x80E\xABe
+\xBDU\xBA`,pT/\xA0\xE0\xB9&quot;\xF4\x8BT\xE5Eo\xD7Ap\xD2l=\x88\xE6Z\xCE\xF5=P\xDC\xC4\x9B@%L׀/͂&quot;\xBA\xD7jA\xA46Y\xFA\xB9\xC7$\xB6\x9BM\x9A̍\x9F\x86\x99\xC6\xDA4\x91z\xB1\xC0%\x83\xB9\x8E\xA3\x90-\xB3\x8E\x92\xE56\xEB\xC4\xE3x\x9BDE\xA4sc5\xF5{\xC8K-2\xADiV\xA6\xA4\xC5&quot; b+1?\xAB(Q\xAB(\1\xBF\\xC5\xC1\x86W\xF9
+J͍\xEDc&quot;\x82/X\xB9        \xB2&quot;\xF6\xABh#\xD9RH\x9A\xE5-\xC9` \xB8        \x9C&amp;gJo4\x94!+o1\xE1\xAA\xED&lt;\xA2A\x9CΣEd8Ip\x84&amp;Y4\xDB\xB4 \xAFw*\x80k\xA6ɒ&gt;At\xC7`'i\xA1\xF2t+\xDD\xD1d\x9C\xEB\xF5\xBD\xCE[
+BHf\xE6A\xD8p+\xB41\xD9)DCto@'\xA5\xF1&lt; g\x86HY\x93 :\x9E\xE9\xF9\x9CF{b@\xB0\x97if\xD8\xA7\xBD\xDC\x9D\xC5X\xAF\x82\x82e:\xD7\xE0\x92        \xCEKqIow_\xDA&quot;DhW\xCFsO\xAE\xD2\xF8O\xC6\xD2\x9C\xE9\xB5\xAA'\x8ElU\xEC6\x9A\xBCân\xC0\xC8\xF4_\xB7Q\xA6\xD9\xFD\xE0?\x95%0\xC0\x9E.O\xD4\xE2\x9EBjbl6\xEB\x9D\xC4Z0+\xB7L\x85\x92\xD8\xE7\x84mQʞr\xBA\x89\xB2\xBAp\x8B\xAE\xDF\xEB\xFB\xD3\xFEh8\x91g\x8D|u\xF0\x92\x86\xC8\xE4\x9A#d\xAD\xC1\xBF\xD4\xD2X\x95IR^\xC3:{\x91\x9F\x93\x9D \xB13\x83\xDF\xC4A\xF6\x99̗#\xA8\xC2\xC1\xB1wK\xE3`\x98n\xB3P\x86!\x82\x81m\xFE2\x96\xB0*s\xFCA\x95\xB3\xB1\xB5\xACIC\x98\xB7\xAE\xA1dL\x9Eoth\x9D\xDA0W\xC1\xA20\xE9X\x86e\xB6\xCFA\x98+]\x88\xFA\xD3Q\xAC]n\xDBLJR\xF2e=\xC0\xD4L\xFD\x88\xFCM\x9Ah\xF6\xA1\ֽw?U\xE2G&lt;o\\xF4\xE1\xB961rQ \xE6TE\xEA\xE1\xE9Z\xF8\xE2I\x8A\x8F\xED I\xA8\xD8҄\xBA\xB8pɂ\xFC\x823L\x8A\x9A\x81i\xF6ׅU\xA8\xDA\xCC\xC8}&lt;b\xAE\x82dID\xE1\xBFq`&lt;+Ӕ&amp;\x9D6\xC1 \xD9e
 \xA2\x94N\xEE\xA3,McR\xB6\xBD-Viv\xA8b-\x8A1Ml4\x8D\xD4K\xE4ǘƅWIk\xF9\x90EdE\xB07\xB7\x95\x94U\x83*I\x89\xB85WC&amp;\xB0\xBF\xF5\xC77\xFD\xC9\x81\xA0~\xAF:\xA3a\xD7ŭ\xCE\xE2(\xE7b\xFF]+\xE5\xC0=)(qҦ\xBA\x81t\xBCԞڲNg\x82(Ȁjv\x89l\x837o\xDARͧ\xA4\xBB\xF3x%\xAFf\x82\x9C\xF6l\xDEy\x8D\xD4gjR뺑\xA5w\xE5Wn\xF2:[Y\xB1\x85GPas\x80,R\xAA d2\xA05\x8Fȑ\xF3\xB7R\xBE:WC\x99 v`\xCA$͜\xC7D\xB0|\x84}ȶ[xH\xE5&lt;Z\x95\x9E\x83+\xFBN\x8D\xE0vE͖ \xD0\xD2\xEB\x8C\xF2\xFA\xFC\xF1\x9DGu\xD4\\xE9\xF8[ꅷW0t\x80\xEC@\x91\xE4B0\xA6\xA9\x9Chr\xD212\x9C\xA9\xE9\xB5|\xC79i\xCF\xD42\x97\xD8\xE6\xCA\xE2I٧\xC0\x9E\x8Bq\xA1\xBF.ۭ\xB6q\x90\ \x95Ϲ\x99[a@1\x91f&amp;K\xB0\x81\xA0\x9B,\xA2n&amp;\x86\x90\x88\x8Cjy\xAC \x8C
+\xF4\x91^\xCFsV\x93\xF6\x90\x98Otb&amp;\x937\xCAw\x9Ak\xB7\xC7\xD6_d\xF9\xC9\xFA&gt;\xD2U\xB6\x82\xB7f\xB0\xCE\xB8Fz`\x94\xD36\xC16~\xD2\xC8Ӓ\xF2\xB4)'W\xFA\xCB\xE8E\x85\xA2p.\xD0        mh#\xCFI\xA6\xEA\xF9\x86Q\xB6\x9FEmQ\xC1
+Xߦ\xE6\x84ZTN\x8A \xEB\xF9\x801f@Hb*\x94\xA47\xD4'$\xB5\x84AJSż:\xE7\x8E \xB1b[m\x8F$p[r\x95\xC9k\xB5\xB5\x8D8\xA4Nl\xBB\xEEBL[\xA7\xE2:\x99\xA7p\xA3@\x9B\xA3\xD5(&quot;.\xA3;\xB9;\x96~        \xF5\x86\xC39?'\xE9|\xA9-J6\xFDa]%\xC7\\xF4ȸpC\xE8̄\x89\xE9\xF6\xCD#+\xF3\x9B 6{\xF9\xADLG U%'\xEFX        \xF2d\xBC\xCD\x89z\xC8\xC2h\x92`\xB8Ö\xC2$A\xDEd lT\xD7\xFD\xAC\x97\xEAT\xEF%\x9F\xDB{\xA9\xBD\x97\xACz\xAF\xFD*3\xA5*3lSii\x9E\xEAf\x93\x88o\xE1 \xA4\xD2}\xA1\xA3_\xD4 \xB2\xCB:.;S\xEF*I\xC4;\xB5r\xFDIg\xD0\xEE\xDF\xF8c9\xBD\xF6\xCDyl2\xEAM?\xB6Ǿ\xEAO\xD4\xEDx\xF4\xA1\xDF\xF5\xBB\xEA\xAC=\xC1\xF73O}\xECO\xAFGwS\x85\xE3\xF6p\xFA        \xD5~R?\xF5\x87]O\xFA\xC2Ik2Q\xA3\xB1\xEA\xDF\xDC\xFA~\xDFagp\xD7\xED߫w\xD87щ\xEF\xA6?\xD1鈷ZR}\xFBz\xB2t\xAE\xF1\xB5\xFD\xAE?\xE8O?y\xAAן\x89fD\xDB\xEA\xB6=\x9E\xF6;w\x83\xF6X\xDDލoG88\xB6\x87]\x90\xF6\x87\xBD1\xB8\xF87\xFEp*!Ugt\xFBi\xDC=\xF5\xB0i\x8AIOM\xC7\xED\xAE\xD3\xFF䑄#\xA8&lt;V\xBC\xA4)AC\xF9|B\xE0\xBA
 =(&lt;\x95%+u=t\xB1\xFA\x9D\xE9\xDB8Iq =\xE3\xE7\xA9n\xFB\xA6\xFDޟTti\x99\xD1@VІ\xF7\xFE\xD0\xB7\x9E\x9A\xDC\xFA\x9D&gt;+]\xECw\xA6\x8C\xE0\x86\xF2\x96=\xC5\xC4\xFF\xF9X'- \xD8\xE0\xDAg\x90\xB9\x8D\xFF;\xE4\x8A5BC\xA23\x8D\xA7\xA5(\xFB\xDFS\xEDqdo&lt;\x82\xB8dB\xEC \xA3\xDFB\xB2\xD7\xD0\xCAKf\xA1\xB9C\x87\xC0*\xDA-\x8D\x82]\xBF=\xC1        \x89q\xB0\xB6%_\xE8\xD2 \xE2\xFFE\x85 \x91\xDAW_yӋ\x91\xA4\xC9\xC5,\xDE\\xE0\xFC\x8A\xF33\xB2\x96\xE0\x94K\xFB\xD7\xF53|\xD5K\x9C\xBF1pW\xDC=\x91ڿvB\xFF\xA4\xA1%.\xF1\xF9\xD6^\xAD?\xCEͬ{-~\xC0\xD3?\xE2\xC7\xFD\x93A\xD7K\xD1;\xA9׭K\xF5VH\x85\xB9\xD7?\\xFC\xF1\x82nr\xBEV\xAF\xFDW\xB9\x97̽ş\xA4\x83p\xB5\xF0\xF2\xF2U\xEB\xF2\xF2R}-\xA3\xAF\xF9\x97/\xE2\xF4]\x8F\xF8&quot;F\xEB\x9Dx\x9Cc```e```b \xE6\xE2F\x98e\x8B3C\xC5Y4\x804\x90fd`bP`\x88\xFF\xFF\xC8\xD3\xFF\xFE_ \xD5\xC7\xC0\xC0&amp;\xA0&lt;\xB0\xA9\x88\x87b&amp;\xC6+ ` \xB2\x9F\xF1\xDD \xFEQ\xCF\xC8\xC67  $O0Q\xA6\x9D\xF6\
 x97\xF2;x\x9Cc`f\x83\xFF\xCD F@\x8A\x91+(U\xB9x\x9C\x8DRKK\xEB@&gt;\xA7\xC9m\xB9\xB5\xADZ_\xE2%h}!-\xAD\xA8\xB8\xA0\xDC\xDD]\xB80\x9BX\xA2bSb\xEE%׭\x8F\xF1\xB5w㏘\x95\x90?\xD0\xE0_p-d\xD3\xE2L\xAB&quot;\xB8q`&gt;\xCE\xCC\xF7\x9D\xEF\x9C\x82,&quot;fkV\xAD\xB0sP/Xu\xC3\xD6\xCB&gt;\x8CB\x81uG6c\x93\xCBɗ)$$tC\xF7\x87O\xDD
+@\x8F\x82R\xAF\xBF\x94\xD8b\xD2&quot;%i\xE8\x83a\x81Q\x87\x98\x87%\xD8\xFE\x95W\xE7J\xA5\xA3\xF2\xDA\xDAz\xCB\xA3\xE6\xB6i\xEC:vuo\xDFq\xAC\xFA\x8E\xC5\xF1`߲\xAB\xFF\xAC\x9A\xA3\x9Bdž\xEDT+\xBA\xB9b\xD5\xFF\xB65\xEATeZ\x9D-\x95ԍ=ݬ\xEA\xEA\x9F\xE2\xEF\xE2\x97濾\x86/\x84e&lt;\xC53&lt;\xC7 $x\x89Wx\x8D7x\xDB\xE9zƠ\xC4;݄-8\x81;x\x80GxF\x87\x88\xC7z^@=\xC9 sA\xB1\x95\x8B{Q4\xC0\x8D\x89L\x86\xFF\xF2-YM~\xF7p\xCC\xF2\xBE\x86$\x96\xF45\x96q\xC4\xF1\x85cđ\xE5\xE3\xEF2\xC2UD\xA2\x80\xFAZ\x93
+\xD1)\xAE\xA4\x80r\x8F\xD0\xB9M\xFA\xA2TЂ\xF9T&quot;\xA0&quot;n\xB9k\xF2\xCE9tE\xE5\x80\xE75iĩ\xB7\xD6\xDA\xF7-W8}rE\xE2\x99\xD0\xED'$\x95\xF4\xB5\xA40N\xA5|\xAD\xAB\xA4\xF9,\xF4\x89\x89\xFA)\xA6\x84gw\xBD\x9E(\xEC\x8Fx\x9Cc```d\x82\xCB&quot;\xEA\xF9`\xFA\xC9\xC42+AZ\xFBx\x9Cc`d``\xE0bx\xC0\xE8\xC4\xC0`\xC3z\x87\x814pJk\xA1vc\xEA\x8C j\xC14\x8C\x8Dd\x8A\xB8v\xCC(\xCA\xC0\xF0\xF7*\x90m\xC3\xC0\xC1\xA0\xA4-$X\xB1\xDA\xC6\xC4\xC0\x84 9F\xB0#\xAA1\x83P\x9FN\x97BT1\x8A1ʀ\xCD\xAAUڧvDF Y.@\\xC4k\xA0\xFAY؁*\x8D\x98_\xD9\xDCP#1\xB8\xD8P\xD1\xF15&lt;t\x9Dl*
+x\x9Cc~\xC1\xC0\xC0 \xC4\xD8\xE32Hh
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/ChangeLog        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2016-08-25  Frederic Wang  &lt;fwang@igalia.com&gt;
+
+        Add support for non-BMP operators U+1EEF0 and U+1EEF1
+        https://bugs.webkit.org/show_bug.cgi?id=153984
+
+        Reviewed by Darin Adler.
+
+        Tests: mathml/presentation/non-bmp-operators-spacing.html
+               mathml/presentation/non-bmp-operators-stretching.html
+
+        * mathml/MathMLOperatorDictionary.cpp: We move the definition of operator dictionary Entry
+        here as it is not used by external code.
+        We now also accept non-BMP operators and add entries for U+1EEF0 and U+1EEF1.
+        (WebCore::extractProperty): Helper function to convert from Entry structure to a Property
+        structure.
+        (WebCore::MathMLOperatorDictionary::search): This function now accepts a non-BMP parameter
+        and returns a Property structure.
+        (WebCore::MathMLOperatorDictionary::isVertical): This function now accepts a non-BMP parameter.
+        * mathml/MathMLOperatorDictionary.h: Replace the Entry structure with a Property structure
+        which was used by MathMLOperatorElement. Update the signatures of search and isVertical.
+        * mathml/MathMLOperatorElement.cpp:
+        (WebCore::MathMLOperatorElement::parseOperatorChar): Remove the special case that excludes
+        non-BMP operators.
+        (WebCore::MathMLOperatorElement::computeDictionaryProperty): Rename the property structure
+        to use the one moved into MathMLOperatorDictionary.h. We no longer need to convert the result
+        of the search call.
+        (WebCore::MathMLOperatorElement::dictionaryProperty): Rename the property structure.
+        * mathml/MathMLOperatorElement.h: Make OperatorChar accept non-BMP operators.
+        MathMLOperatorElement::DictionaryProperty is now moved into MathMLOperatorDictionary
+        and renamed Property.
+        * rendering/mathml/MathOperator.cpp: Accept non-BMP operators.
+        * rendering/mathml/MathOperator.h: Ditto.
+        * rendering/mathml/RenderMathMLFencedOperator.cpp:
+        (WebCore::RenderMathMLFencedOperator::updateOperatorContent):  Adjust code to use the new
+        return type of MathMLOperatorDictionary::search.
+        * rendering/mathml/RenderMathMLFencedOperator.h: Accept non-BMP operators.
+        * rendering/mathml/RenderMathMLOperator.cpp: Ditto.
+        * rendering/mathml/RenderMathMLOperator.h: Ditto.
+
</ins><span class="cx"> 2016-08-28  Youenn Fablet  &lt;youenn@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Fetch API] Ensure response cloning works when data is loading
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLOperatorDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLOperatorDictionary.cpp (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLOperatorDictionary.cpp        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/mathml/MathMLOperatorDictionary.cpp        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -32,13 +32,29 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace MathMLOperatorDictionary;
</span><span class="cx"> 
</span><del>-typedef std::pair&lt;UChar, Form&gt; Key;
</del><ins>+typedef std::pair&lt;UChar32, Form&gt; Key;
+struct Entry {
+    UChar32 character;
+    unsigned form : 2;
+    unsigned lspace : 3;
+    unsigned rspace : 3;
+    unsigned flags : 8;
+};
</ins><span class="cx"> static inline Key ExtractKey(const Entry* entry) { return Key(entry-&gt;character, static_cast&lt;Form&gt;(entry-&gt;form)); }
</span><del>-static inline UChar ExtractChar(const Entry* entry) { return entry-&gt;character; }
</del><ins>+static inline UChar32 ExtractChar(const Entry* entry) { return entry-&gt;character; }
+static inline Property ExtractProperty(const Entry&amp; entry)
+{
+    Property property;
+    property.form = static_cast&lt;Form&gt;(entry.form);
+    property.leadingSpaceInMathUnit = entry.lspace;
+    property.trailingSpaceInMathUnit = entry.rspace;
+    property.flags = entry.flags;
+    return property;
+}
</ins><span class="cx"> 
</span><span class="cx"> // This table has been automatically generated from the Operator Dictionary of the MathML3 specification (appendix C).
</span><span class="cx"> // Some people use the binary operator &quot;U+2225 PARALLEL TO&quot; as an opening and closing delimiter, so we add the corresponding stretchy prefix and postfix forms.
</span><del>-static const unsigned dictionarySize = 1041;
</del><ins>+static const unsigned dictionarySize = 1043;
</ins><span class="cx"> static const Entry dictionary[dictionarySize] = {
</span><span class="cx">     { 0x21, Postfix, 1, 0, 0}, // EXCLAMATION MARK
</span><span class="cx">     { 0x25, Infix, 3, 3, 0}, // PERCENT SIGN
</span><span class="lines">@@ -1080,16 +1096,18 @@
</span><span class="cx">     { 0x2AFE, Infix, 3, 3, 0}, // WHITE VERTICAL BAR
</span><span class="cx">     { 0x2AFF, Prefix, 1, 2, Symmetric | LargeOp | MovableLimits}, // N-ARY WHITE VERTICAL BAR
</span><span class="cx">     { 0x2B45, Infix, 5, 5, Stretchy}, // LEFTWARDS QUADRUPLE ARROW
</span><del>-    { 0x2B46, Infix, 5, 5, Stretchy} // RIGHTWARDS QUADRUPLE ARROW
</del><ins>+    { 0x2B46, Infix, 5, 5, Stretchy}, // RIGHTWARDS QUADRUPLE ARROW
+    { 0x1EEF0, Prefix, 0, 0, Stretchy }, // ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL
+    { 0x1EEF1, Prefix, 0, 0, Stretchy } // ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // A list of operators that stretch in the horizontal direction. This has been generated from Mozilla's MathML operator dictionary.
</span><del>-static inline UChar ExtractKeyHorizontal(const UChar* entry) { return *entry; }
-static const UChar horizontalOperators[] = {
-    0x003D, 0x005E, 0x005F, 0x007E, 0x00AF, 0x02C6, 0x02C7, 0x02C9, 0x02CD, 0x02DC, 0x02F7, 0x0302, 0x0332, 0x203E, 0x20D0, 0x20D1, 0x20D6, 0x20D7, 0x20E1, 0x2190, 0x2192, 0x2194, 0x2198, 0x2199, 0x219C, 0x219D, 0x219E, 0x21A0, 0x21A2, 0x21A3, 0x21A4, 0x21A6, 0x21A9, 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21B4, 0x21B9, 0x21BC, 0x21BD, 0x21C0, 0x21C1, 0x21C4, 0x21C6, 0x21C7, 0x21C9, 0x21CB, 0x21CC, 0x21D0, 0x21D2, 0x21D4, 0x21DA, 0x21DB, 0x21DC, 0x21DD, 0x21E0, 0x21E2, 0x21E4, 0x21E5, 0x21E6, 0x21E8, 0x21F0, 0x21F6, 0x21FD, 0x21FE, 0x21FF, 0x23B4, 0x23B5, 0x23DC, 0x23DD, 0x23DE, 0x23DF, 0x23E0, 0x23E1, 0x2500, 0x27F5, 0x27F6, 0x27F7, 0x27F8, 0x27F9, 0x27FA, 0x27FB, 0x27FC, 0x27FD, 0x27FE, 0x27FF, 0x290C, 0x290D, 0x290E, 0x290F, 0x2910, 0x294E, 0x2950, 0x2952, 0x2953, 0x2956, 0x2957, 0x295A, 0x295B, 0x295E, 0x295F, 0x2B45, 0x2B46, 0xFE35, 0xFE36, 0xFE37, 0xFE38
</del><ins>+static inline UChar32 ExtractKeyHorizontal(const UChar32* entry) { return *entry; }
+static const UChar32 horizontalOperators[] = {
+    0x003D, 0x005E, 0x005F, 0x007E, 0x00AF, 0x02C6, 0x02C7, 0x02C9, 0x02CD, 0x02DC, 0x02F7, 0x0302, 0x0332, 0x203E, 0x20D0, 0x20D1, 0x20D6, 0x20D7, 0x20E1, 0x2190, 0x2192, 0x2194, 0x2198, 0x2199, 0x219C, 0x219D, 0x219E, 0x21A0, 0x21A2, 0x21A3, 0x21A4, 0x21A6, 0x21A9, 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21B4, 0x21B9, 0x21BC, 0x21BD, 0x21C0, 0x21C1, 0x21C4, 0x21C6, 0x21C7, 0x21C9, 0x21CB, 0x21CC, 0x21D0, 0x21D2, 0x21D4, 0x21DA, 0x21DB, 0x21DC, 0x21DD, 0x21E0, 0x21E2, 0x21E4, 0x21E5, 0x21E6, 0x21E8, 0x21F0, 0x21F6, 0x21FD, 0x21FE, 0x21FF, 0x23B4, 0x23B5, 0x23DC, 0x23DD, 0x23DE, 0x23DF, 0x23E0, 0x23E1, 0x2500, 0x27F5, 0x27F6, 0x27F7, 0x27F8, 0x27F9, 0x27FA, 0x27FB, 0x27FC, 0x27FD, 0x27FE, 0x27FF, 0x290C, 0x290D, 0x290E, 0x290F, 0x2910, 0x294E, 0x2950, 0x2952, 0x2953, 0x2956, 0x2957, 0x295A, 0x295B, 0x295E, 0x295F, 0x2B45, 0x2B46, 0xFE35, 0xFE36, 0xFE37, 0xFE38, 0x1EEF0, 0x1EEF1
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-Optional&lt;Entry&gt; MathMLOperatorDictionary::search(UChar character, Form form, bool explicitForm)
</del><ins>+Optional&lt;Property&gt; MathMLOperatorDictionary::search(UChar32 character, Form form, bool explicitForm)
</ins><span class="cx"> {
</span><span class="cx">     if (!character)
</span><span class="cx">         return Nullopt;
</span><span class="lines">@@ -1096,7 +1114,7 @@
</span><span class="cx"> 
</span><span class="cx">     // We try and find the default values from the operator dictionary.
</span><span class="cx">     if (auto* entry = tryBinarySearch&lt;const Entry, Key&gt;(dictionary, dictionarySize, Key(character, form), ExtractKey))
</span><del>-        return *entry;
</del><ins>+        return ExtractProperty(*entry);
</ins><span class="cx"> 
</span><span class="cx">     if (explicitForm)
</span><span class="cx">         return Nullopt;
</span><span class="lines">@@ -1103,21 +1121,21 @@
</span><span class="cx"> 
</span><span class="cx">     // If we did not find the desired operator form and if it was not set explicitely, we use the first one in the following order: Infix, Prefix, Postfix.
</span><span class="cx">     // This is to handle bad MathML markup without explicit &lt;mrow&gt; delimiters like &quot;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&quot; where innerfences should not be considered infix.
</span><del>-    if (auto* entry = tryBinarySearch&lt;const Entry, UChar&gt;(dictionary, dictionarySize, character, ExtractChar)) {
</del><ins>+    if (auto* entry = tryBinarySearch&lt;const Entry, UChar32&gt;(dictionary, dictionarySize, character, ExtractChar)) {
</ins><span class="cx">         // There are at most two other entries before the one found.
</span><span class="cx">         if (entry != dictionary &amp;&amp; (entry - 1)-&gt;character == character)
</span><span class="cx">             entry--;
</span><span class="cx">         if (entry != dictionary &amp;&amp; (entry - 1)-&gt;character == character)
</span><span class="cx">             entry--;
</span><del>-        return *entry;
</del><ins>+        return ExtractProperty(*entry);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return Nullopt;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool MathMLOperatorDictionary::isVertical(UChar textContent)
</del><ins>+bool MathMLOperatorDictionary::isVertical(UChar32 textContent)
</ins><span class="cx"> {
</span><del>-    return !tryBinarySearch&lt;const UChar, UChar&gt;(horizontalOperators, WTF_ARRAY_LENGTH(horizontalOperators), textContent, ExtractKeyHorizontal);
</del><ins>+    return !tryBinarySearch&lt;const UChar32, UChar32&gt;(horizontalOperators, WTF_ARRAY_LENGTH(horizontalOperators), textContent, ExtractKeyHorizontal);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLOperatorDictionaryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLOperatorDictionary.h (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLOperatorDictionary.h        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/mathml/MathMLOperatorDictionary.h        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -44,15 +44,16 @@
</span><span class="cx">     Symmetric = 0x40
</span><span class="cx"> };
</span><span class="cx"> const unsigned allFlags = Accent | Fence | LargeOp | MovableLimits | Separator | Stretchy | Symmetric;
</span><del>-struct Entry {
-    UChar character;
-    unsigned form : 2;
-    unsigned lspace : 3;
-    unsigned rspace : 3;
-    unsigned flags : 8;
</del><ins>+struct Property {
+    MathMLOperatorDictionary::Form form;
+    // Default leading and trailing spaces are &quot;thickmathspace&quot;.
+    unsigned short leadingSpaceInMathUnit { 5 };
+    unsigned short trailingSpaceInMathUnit { 5 };
+    // Default operator properties are all set to &quot;false&quot;.
+    unsigned short flags { 0 };
</ins><span class="cx"> };
</span><del>-Optional&lt;Entry&gt; search(UChar, Form, bool explicitForm);
-bool isVertical(UChar);
</del><ins>+Optional&lt;Property&gt; search(UChar32, Form, bool explicitForm);
+bool isVertical(UChar32);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLOperatorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLOperatorElement.cpp (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLOperatorElement.cpp        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/mathml/MathMLOperatorElement.cpp        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -52,15 +52,12 @@
</span><span class="cx">     OperatorChar operatorChar;
</span><span class="cx">     // FIXME: This operator dictionary does not accept multiple characters (https://webkit.org/b/124828).
</span><span class="cx">     if (auto codePoint = convertToSingleCodePoint(string)) {
</span><del>-        // FIXME: MathMLOperatorDictionary/RenderMathMLOperator/MathOperator do not support non-BMP characters (https://webkit.org/b/122296).
-        if (U_IS_BMP(codePoint.value())) {
-            UChar character = codePoint.value();
-            // The minus sign renders better than the hyphen sign used in some MathML formulas.
-            if (character == hyphenMinus)
-                character = minusSign;
-            operatorChar.character = character;
-            operatorChar.isVertical = MathMLOperatorDictionary::isVertical(operatorChar.character);
-        }
</del><ins>+        auto character = codePoint.value();
+        // The minus sign renders better than the hyphen sign used in some MathML formulas.
+        if (character == hyphenMinus)
+            character = minusSign;
+        operatorChar.character = character;
+        operatorChar.isVertical = isVertical(operatorChar.character);
</ins><span class="cx">     }
</span><span class="cx">     return operatorChar;
</span><span class="cx"> }
</span><span class="lines">@@ -72,9 +69,9 @@
</span><span class="cx">     return m_operatorChar.value();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MathMLOperatorElement::DictionaryProperty MathMLOperatorElement::computeDictionaryProperty()
</del><ins>+Property MathMLOperatorElement::computeDictionaryProperty()
</ins><span class="cx"> {
</span><del>-    DictionaryProperty dictionaryProperty;
</del><ins>+    Property dictionaryProperty;
</ins><span class="cx"> 
</span><span class="cx">     // We first determine the form attribute and use the default spacing and properties.
</span><span class="cx">     const auto&amp; value = attributeWithoutSynchronization(formAttr);
</span><span class="lines">@@ -97,17 +94,13 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // We then try and find an entry in the operator dictionary to override the default values.
</span><del>-    if (auto entry = search(operatorChar().character, dictionaryProperty.form, explicitForm)) {
-        dictionaryProperty.form = static_cast&lt;MathMLOperatorDictionary::Form&gt;(entry.value().form);
-        dictionaryProperty.leadingSpaceInMathUnit = entry.value().lspace;
-        dictionaryProperty.trailingSpaceInMathUnit = entry.value().rspace;
-        dictionaryProperty.flags = entry.value().flags;
-    }
</del><ins>+    if (auto entry = search(operatorChar().character, dictionaryProperty.form, explicitForm))
+        dictionaryProperty = entry.value();
</ins><span class="cx"> 
</span><span class="cx">     return dictionaryProperty;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const MathMLOperatorElement::DictionaryProperty&amp; MathMLOperatorElement::dictionaryProperty()
</del><ins>+const Property&amp; MathMLOperatorElement::dictionaryProperty()
</ins><span class="cx"> {
</span><span class="cx">     if (!m_dictionaryProperty)
</span><span class="cx">         m_dictionaryProperty = computeDictionaryProperty();
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLOperatorElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLOperatorElement.h (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLOperatorElement.h        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/mathml/MathMLOperatorElement.h        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;MathMLOperatorElement&gt; create(const QualifiedName&amp; tagName, Document&amp;);
</span><span class="cx">     struct OperatorChar {
</span><del>-        UChar character { 0 };
</del><ins>+        UChar32 character { 0 };
</ins><span class="cx">         bool isVertical { true };
</span><span class="cx">     };
</span><span class="cx">     static OperatorChar parseOperatorChar(const String&amp;);
</span><span class="lines">@@ -59,17 +59,9 @@
</span><span class="cx"> 
</span><span class="cx">     Optional&lt;OperatorChar&gt; m_operatorChar;
</span><span class="cx"> 
</span><del>-    struct DictionaryProperty {
-        MathMLOperatorDictionary::Form form;
-        // Default leading and trailing spaces are &quot;thickmathspace&quot;.
-        unsigned short leadingSpaceInMathUnit { 5 };
-        unsigned short trailingSpaceInMathUnit { 5 };
-        // Default operator properties are all set to &quot;false&quot;.
-        unsigned short flags { 0 };
-    };
-    Optional&lt;DictionaryProperty&gt; m_dictionaryProperty;
-    DictionaryProperty computeDictionaryProperty();
-    const DictionaryProperty&amp; dictionaryProperty();
</del><ins>+    Optional&lt;MathMLOperatorDictionary::Property&gt; m_dictionaryProperty;
+    MathMLOperatorDictionary::Property computeDictionaryProperty();
+    const MathMLOperatorDictionary::Property&amp; dictionaryProperty();
</ins><span class="cx"> 
</span><span class="cx">     struct OperatorProperties {
</span><span class="cx">         unsigned short flags;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlMathOperatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/MathOperator.cpp (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/MathOperator.cpp        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/rendering/mathml/MathOperator.cpp        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> 
</span><span class="cx"> // FIXME: This hardcoded data can be removed when OpenType MATH font are widely available (http://wkbug/156837).
</span><span class="cx"> struct StretchyCharacter {
</span><del>-    UChar character;
</del><ins>+    UChar32 character;
</ins><span class="cx">     UChar topChar;
</span><span class="cx">     UChar extensionChar;
</span><span class="cx">     UChar bottomChar;
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx">     { 0x222b, 0x2320, 0x23ae, 0x2321, 0x0    } // integral sign
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-void MathOperator::setOperator(const RenderStyle&amp; style, UChar baseCharacter, Type operatorType)
</del><ins>+void MathOperator::setOperator(const RenderStyle&amp; style, UChar32 baseCharacter, Type operatorType)
</ins><span class="cx"> {
</span><span class="cx">     m_baseCharacter = baseCharacter;
</span><span class="cx">     m_operatorType = operatorType;
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">     return m_operatorType == Type::VerticalOperator ? m_ascent + m_descent : m_width;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool MathOperator::getGlyph(const RenderStyle&amp; style, UChar character, GlyphData&amp; glyph) const
</del><ins>+bool MathOperator::getGlyph(const RenderStyle&amp; style, UChar32 character, GlyphData&amp; glyph) const
</ins><span class="cx"> {
</span><span class="cx">     glyph = style.fontCascade().glyphDataForCharacter(character, !style.isLeftToRightDirection());
</span><span class="cx">     return glyph.font &amp;&amp; glyph.font == &amp;style.fontCascade().primaryFont();
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> // See https://www.w3.org/TR/MathML/chapter7.html#chars.comb-chars
</span><span class="cx"> // However, many math fonts do not provide constructions for the non-combining equivalent.
</span><span class="cx"> const unsigned maxFallbackPerCharacter = 3;
</span><del>-static const UChar characterFallback[][maxFallbackPerCharacter] = {
</del><ins>+static const UChar32 characterFallback[][maxFallbackPerCharacter] = {
</ins><span class="cx">     { 0x005E, 0x0302, 0 }, // CIRCUMFLEX ACCENT
</span><span class="cx">     { 0x005F, 0x0332, 0 }, // LOW LINE
</span><span class="cx">     { 0x007E, 0x0303, 0 }, // TILDE
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlMathOperatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/MathOperator.h (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/MathOperator.h        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/rendering/mathml/MathOperator.h        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> public:
</span><span class="cx">     MathOperator() { }
</span><span class="cx">     enum class Type { NormalOperator, DisplayOperator, VerticalOperator, HorizontalOperator };
</span><del>-    void setOperator(const RenderStyle&amp;, UChar baseCharacter, Type);
</del><ins>+    void setOperator(const RenderStyle&amp;, UChar32 baseCharacter, Type);
</ins><span class="cx">     void reset(const RenderStyle&amp;);
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit width() const { return m_width; }
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit stretchSize() const;
</span><del>-    bool getGlyph(const RenderStyle&amp;, UChar character, GlyphData&amp;) const;
</del><ins>+    bool getGlyph(const RenderStyle&amp;, UChar32 character, GlyphData&amp;) const;
</ins><span class="cx">     bool getBaseGlyph(const RenderStyle&amp; style, GlyphData&amp; baseGlyph) const { return getGlyph(style, m_baseCharacter, baseGlyph); }
</span><span class="cx">     void setSizeVariant(const GlyphData&amp;);
</span><span class="cx">     void setGlyphAssembly(const GlyphAssemblyData&amp;);
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">     void paintVerticalGlyphAssembly(const RenderStyle&amp;, PaintInfo&amp;, const LayoutPoint&amp;);
</span><span class="cx">     void paintHorizontalGlyphAssembly(const RenderStyle&amp;, PaintInfo&amp;, const LayoutPoint&amp;);
</span><span class="cx"> 
</span><del>-    UChar m_baseCharacter { 0 };
</del><ins>+    UChar32 m_baseCharacter { 0 };
</ins><span class="cx">     Type m_operatorType { Type::NormalOperator };
</span><span class="cx">     StretchType m_stretchType { StretchType::Unstretched };
</span><span class="cx">     union {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLFencedOperatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.cpp (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.cpp        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.cpp        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -50,8 +50,8 @@
</span><span class="cx">     // We try and read spacing and boolean properties from the operator dictionary.
</span><span class="cx">     // However we preserve the Fence and Separator properties specified in the constructor.
</span><span class="cx">     if (auto entry = search(m_operatorChar.character, m_operatorForm, true)) {
</span><del>-        m_leadingSpaceInMathUnit = entry.value().lspace;
-        m_trailingSpaceInMathUnit = entry.value().rspace;
</del><ins>+        m_leadingSpaceInMathUnit = entry.value().leadingSpaceInMathUnit;
+        m_trailingSpaceInMathUnit = entry.value().trailingSpaceInMathUnit;
</ins><span class="cx">         m_operatorFlags = (m_operatorFlags &amp; (MathMLOperatorDictionary::Fence | MathMLOperatorDictionary::Separator)) | entry.value().flags;
</span><span class="cx">     } else {
</span><span class="cx">         m_operatorFlags &amp;= MathMLOperatorDictionary::Fence | MathMLOperatorDictionary::Separator; // Flags are disabled by default.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLFencedOperatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.h (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.h        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLFencedOperator.h        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> private:
</span><span class="cx">     bool isRenderMathMLFencedOperator() const final { return true; }
</span><span class="cx">     bool isVertical() const final { return m_operatorChar.isVertical; }
</span><del>-    UChar textContent() const final { return m_operatorChar.character; }
</del><ins>+    UChar32 textContent() const final { return m_operatorChar.character; }
</ins><span class="cx">     LayoutUnit leadingSpace() const final;
</span><span class="cx">     LayoutUnit trailingSpace() const final;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLOperatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">     return static_cast&lt;MathMLOperatorElement&amp;&gt;(nodeForNonAnonymous());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-UChar RenderMathMLOperator::textContent() const
</del><ins>+UChar32 RenderMathMLOperator::textContent() const
</ins><span class="cx"> {
</span><span class="cx">     return element().operatorChar().character;
</span><span class="cx"> }
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx"> bool RenderMathMLOperator::isInvisibleOperator() const
</span><span class="cx"> {
</span><span class="cx">     // The following operators are invisible: U+2061 FUNCTION APPLICATION, U+2062 INVISIBLE TIMES, U+2063 INVISIBLE SEPARATOR, U+2064 INVISIBLE PLUS.
</span><del>-    UChar character = textContent();
</del><ins>+    UChar32 character = textContent();
</ins><span class="cx">     return 0x2061 &lt;= character &amp;&amp; character &lt;= 0x2064;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLOperatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h (205110 => 205111)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h        2016-08-29 06:49:42 UTC (rev 205110)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h        2016-08-29 06:55:59 UTC (rev 205111)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> 
</span><span class="cx">     void updateTokenContent() final;
</span><span class="cx">     void updateFromElement() final;
</span><del>-    virtual UChar textContent() const;
</del><ins>+    virtual UChar32 textContent() const;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     virtual void updateMathOperator();
</span></span></pre>
</div>
</div>

</body>
</html>