<!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>[185266] 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/185266">185266</a></dd>
<dt>Author</dt> <dd>mmaxfield@apple.com</dd>
<dt>Date</dt> <dd>2015-06-05 14:46:25 -0700 (Fri, 05 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS] Emoji overlap preceeding lines
https://bugs.webkit.org/show_bug.cgi?id=145678
&lt;rdar://problem/10684914&gt;

Reviewed by Enrica Casucci.

Source/WebCore:

In WebKit, we first lay out lines, and then we lay out text inside those lines. Text is vertically centered in
its containing line. If the author has not specified a particular line-height, the height of a line comes from
the font metrics for the primary font of the line.

In iOS, we were specifically hardcoding the line height metric of Apple Color Emoji to be 0. This means that,
if Apple Color Emoji is the primary font for a line, and an explicit line-height was not specified, the lines
are laid out with 0 height. Then, when we vertically center the text inside the line, the top half of the text
overlaps the preceeding line.

I'm not sure exactly why were were hardcoding this value to 0, as it is surely wrong. I'm going to ask Enrica
to review this patch; hopefully she knows the answer.

Test: fast/text/emoji.html

* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::Font::platformInit):

LayoutTests:

* fast/text/emoji.html:
* platform/mac/TestExpectations: Removed unnecessary line.
* platform/mac-mavericks/fast/text/emoji-expected.html:
* platform/mac/fast/text/emoji-expected.html:
* platform/ios-simulator/fast/text/emoji-expected.html:
* TestExpectations: Removed unnecessary line.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsfasttextemojihtml">trunk/LayoutTests/fast/text/emoji.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacTestExpectations">trunk/LayoutTests/platform/mac/TestExpectations</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaFontCocoamm">trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsplatformiossimulatorfasttextemojiexpectedtxt">trunk/LayoutTests/platform/ios-simulator/fast/text/emoji-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfasttextemojiexpectedtxt">trunk/LayoutTests/platform/mac/fast/text/emoji-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksfasttextemojiexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/fast/text/emoji-expected.txt</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasttextemojiexpectedtxt">trunk/LayoutTests/fast/text/emoji-expected.txt</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/LayoutTests/ChangeLog        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-06-05  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
+
+        [iOS] Emoji overlap preceeding lines
+        https://bugs.webkit.org/show_bug.cgi?id=145678
+        &lt;rdar://problem/10684914&gt;
+
+        Reviewed by Enrica Casucci.
+
+        * fast/text/emoji.html:
+        * platform/mac/TestExpectations: Removed unnecessary line.
+        * platform/mac-mavericks/fast/text/emoji-expected.html:
+        * platform/mac/fast/text/emoji-expected.html:
+        * platform/ios-simulator/fast/text/emoji-expected.html:
+        * TestExpectations: Removed unnecessary line.
+
</ins><span class="cx"> 2015-06-05  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         finally blocks should not set the exception stack trace when re-throwing the exception.
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/LayoutTests/TestExpectations        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -120,7 +120,6 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/133057 fast/table/border-collapsing/collapsed-borders-adjoining-sections.html [ ImageOnlyFailure ]
</span><span class="cx"> 
</span><del>-webkit.org/b/141661 fast/text/emoji.html [ Failure ]
</del><span class="cx"> webkit.org/b/142548 editing/selection/extend-by-character-007.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/128736 inspector-protocol/debugger/setBreakpoint-dfg.html [ Failure Pass ]
</span></span></pre></div>
<a id="trunkLayoutTestsfasttextemojiexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/text/emoji-expected.txt (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/emoji-expected.txt        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/LayoutTests/fast/text/emoji-expected.txt        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -1,23 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock (anonymous) at (0,0) size 784x18
-        RenderText {#text} at (0,0) size 470x18
-          text run at (0,0) width 470: &quot;This test validate rendering of emoji sequences and emoji with modifiers.&quot;
-      RenderBlock {DIV} at (0,18) size 784x235
-        RenderText {#text} at (0,4) size 180x41
-          text run at (0,4) width 180: &quot;\x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}\x{2764}\x{FE0F}\x{D83D}\x{DC8B}&quot;
-        RenderBR {BR} at (180,36) size 0x0
-        RenderText {#text} at (0,51) size 243x41
-          text run at (0,51) width 243: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC6A} \x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}&quot;
-        RenderBR {BR} at (243,83) size 0x0
-        RenderText {#text} at (0,98) size 216x41
-          text run at (0,98) width 216: &quot;\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
-        RenderBR {BR} at (216,130) size 0x0
-        RenderText {#text} at (0,145) size 216x41
-          text run at (0,145) width 216: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
-        RenderBR {BR} at (216,177) size 0x0
-        RenderText {#text} at (0,192) size 216x41
-          text run at (0,192) width 216: &quot;\x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69}&quot;
</del></span></pre></div>
<a id="trunkLayoutTestsfasttextemojihtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/text/emoji.html (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/emoji.html        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/LayoutTests/fast/text/emoji.html        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">     This test validate rendering of emoji sequences and emoji with modifiers.
</span><ins>+&lt;div style=&quot;font-family: 'Apple Color Emoji';&quot;&gt;&amp;#x1f601;&lt;/div&gt;
</ins><span class="cx"> &lt;div style='font-size: 36px'&gt;
</span><span class="cx"> &amp;#x1F466;&amp;#x1F3FB;&amp;#x1F469;&amp;#x1F3FC;&amp;#x1F466;&amp;#x1F3FE;&amp;#x2764;&amp;#xFE0F;&amp;#x1F48B;&lt;br&gt;
</span><span class="cx"> &amp;#x1F468;&amp;#x200D;&amp;#x1F469;&amp;#x200D;&amp;#x1F466; &amp;#x1F468;&amp;#x200D;&amp;#x1F469;&amp;#x200D;&amp;#x1F467; &amp;#x1F46A; &amp;#x1F466;&amp;#x1F3FB;&amp;#x1F469;&amp;#x1F3FC;&amp;#x1F466;&amp;#x1F3FE;&lt;br&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorfasttextemojiexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/fast/text/emoji-expected.txt (0 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/fast/text/emoji-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/fast/text/emoji-expected.txt        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock (anonymous) at (0,0) size 784x20
+        RenderText {#text} at (0,0) size 471x19
+          text run at (0,0) width 471: &quot;This test validate rendering of emoji sequences and emoji with modifiers.&quot;
+      RenderBlock {DIV} at (0,20) size 784x27
+        RenderText {#text} at (0,8) size 21x10
+          text run at (0,8) width 21: &quot;\x{D83D}\x{DE01}&quot;
+      RenderBlock {DIV} at (0,47) size 784x295
+        RenderText {#text} at (0,1) size 105x41
+          text run at (0,1) width 105: &quot;\x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}\x{2764}\x{FE0F}\x{D83D}\x{DC8B}&quot;
+        RenderBR {BR} at (105,34) size 0x0
+        RenderText {#text} at (0,60) size 153x41
+          text run at (0,60) width 153: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC6A} \x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}&quot;
+        RenderBR {BR} at (153,93) size 0x0
+        RenderText {#text} at (0,119) size 141x41
+          text run at (0,119) width 141: &quot;\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
+        RenderBR {BR} at (141,152) size 0x0
+        RenderText {#text} at (0,178) size 141x41
+          text run at (0,178) width 141: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
+        RenderBR {BR} at (141,211) size 0x0
+        RenderText {#text} at (0,237) size 141x41
+          text run at (0,237) width 141: &quot;\x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69}&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/TestExpectations (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/TestExpectations        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/LayoutTests/platform/mac/TestExpectations        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -1260,6 +1260,5 @@
</span><span class="cx"> 
</span><span class="cx"> # OS X 10.10.3+ has the necessary glyphs.
</span><span class="cx"> webkit.org/b/142548 [ Yosemite+ ] editing/selection/extend-by-character-007.html [ Pass ]
</span><del>-webkit.org/b/141661 [ Yosemite+ ] fast/text/emoji.html [ Pass ]
</del><span class="cx"> 
</span><span class="cx"> media/accessiblity-describes-video.html [ Pass Failure ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfasttextemojiexpectedtxtfromrev185265trunkLayoutTestsfasttextemojiexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/mac/fast/text/emoji-expected.txt (from rev 185265, trunk/LayoutTests/fast/text/emoji-expected.txt) (0 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/text/emoji-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/text/emoji-expected.txt        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock (anonymous) at (0,0) size 784x18
+        RenderText {#text} at (0,0) size 470x18
+          text run at (0,0) width 470: &quot;This test validate rendering of emoji sequences and emoji with modifiers.&quot;
+      RenderBlock {DIV} at (0,18) size 784x21
+        RenderText {#text} at (0,0) size 21x21
+          text run at (0,0) width 21: &quot;\x{D83D}\x{DE01}&quot;
+      RenderBlock {DIV} at (0,39) size 784x235
+        RenderText {#text} at (0,4) size 180x41
+          text run at (0,4) width 180: &quot;\x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}\x{2764}\x{FE0F}\x{D83D}\x{DC8B}&quot;
+        RenderBR {BR} at (180,36) size 0x0
+        RenderText {#text} at (0,51) size 243x41
+          text run at (0,51) width 243: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC6A} \x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}&quot;
+        RenderBR {BR} at (243,83) size 0x0
+        RenderText {#text} at (0,98) size 216x41
+          text run at (0,98) width 216: &quot;\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
+        RenderBR {BR} at (216,130) size 0x0
+        RenderText {#text} at (0,145) size 216x41
+          text run at (0,145) width 216: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
+        RenderBR {BR} at (216,177) size 0x0
+        RenderText {#text} at (0,192) size 216x41
+          text run at (0,192) width 216: &quot;\x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69}&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksfasttextemojiexpectedtxtfromrev185265trunkLayoutTestsfasttextemojiexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/mac-mavericks/fast/text/emoji-expected.txt (from rev 185265, trunk/LayoutTests/fast/text/emoji-expected.txt) (0 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/fast/text/emoji-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-mavericks/fast/text/emoji-expected.txt        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock (anonymous) at (0,0) size 784x18
+        RenderText {#text} at (0,0) size 470x18
+          text run at (0,0) width 470: &quot;This test validate rendering of emoji sequences and emoji with modifiers.&quot;
+      RenderBlock {DIV} at (0,18) size 784x21
+        RenderText {#text} at (0,0) size 20x21
+          text run at (0,0) width 20: &quot;\x{D83D}\x{DE01}&quot;
+      RenderBlock {DIV} at (0,39) size 784x235
+        RenderText {#text} at (0,4) size 258x41
+          text run at (0,4) width 258: &quot;\x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}\x{2764}\x{FE0F}\x{D83D}\x{DC8B}&quot;
+        RenderBR {BR} at (257,36) size 1x0
+        RenderText {#text} at (0,51) size 465x41
+          text run at (0,51) width 465: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC6A} \x{D83D}\x{DC66}\x{D83C}\x{DFFB}\x{D83D}\x{DC69}\x{D83C}\x{DFFC}\x{D83D}\x{DC66}\x{D83C}\x{DFFE}&quot;
+        RenderBR {BR} at (464,83) size 1x0
+        RenderText {#text} at (0,98) size 685x41
+          text run at (0,98) width 685: &quot;\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC69}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
+        RenderBR {BR} at (684,130) size 1x0
+        RenderText {#text} at (0,145) size 685x41
+          text run at (0,145) width 685: &quot;\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC66}\x{200D}\x{D83D}\x{DC66} \x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC68}\x{200D}\x{D83D}\x{DC67}\x{200D}\x{D83D}\x{DC67}&quot;
+        RenderBR {BR} at (684,177) size 1x0
+        RenderText {#text} at (0,192) size 649x41
+          text run at (0,192) width 649: &quot;\x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC69} \x{D83D}\x{DC68}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC8B}\x{200D}\x{D83D}\x{DC68} \x{D83D}\x{DC69}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{D83D}\x{DC69}&quot;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/Source/WebCore/ChangeLog        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2015-06-05  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
+
+        [iOS] Emoji overlap preceeding lines
+        https://bugs.webkit.org/show_bug.cgi?id=145678
+        &lt;rdar://problem/10684914&gt;
+
+        Reviewed by Enrica Casucci.
+
+        In WebKit, we first lay out lines, and then we lay out text inside those lines. Text is vertically centered in
+        its containing line. If the author has not specified a particular line-height, the height of a line comes from
+        the font metrics for the primary font of the line.
+
+        In iOS, we were specifically hardcoding the line height metric of Apple Color Emoji to be 0. This means that,
+        if Apple Color Emoji is the primary font for a line, and an explicit line-height was not specified, the lines
+        are laid out with 0 height. Then, when we vertically center the text inside the line, the top half of the text
+        overlaps the preceeding line.
+
+        I'm not sure exactly why were were hardcoding this value to 0, as it is surely wrong. I'm going to ask Enrica
+        to review this patch; hopefully she knows the answer.
+
+        Test: fast/text/emoji.html
+
+        * platform/graphics/cocoa/FontCocoa.mm:
+        (WebCore::Font::platformInit):
+
</ins><span class="cx"> 2015-06-05  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         [Web Timing] Use new SPI to enable data collection.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaFontCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm (185265 => 185266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm        2015-06-05 21:42:22 UTC (rev 185265)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm        2015-06-05 21:46:25 UTC (rev 185266)
</span><span class="lines">@@ -272,7 +272,6 @@
</span><span class="cx">         m_fontMetrics.setAscent(thirdOfSize);
</span><span class="cx">         m_fontMetrics.setDescent(thirdOfSize);
</span><span class="cx">         m_fontMetrics.setLineGap(thirdOfSize);
</span><del>-        m_fontMetrics.setLineSpacing(0);
</del><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>