<!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>[161521] 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/161521">161521</a></dd>
<dt>Author</dt> <dd>mmaxfield@apple.com</dd>
<dt>Date</dt> <dd>2014-01-08 14:22:50 -0800 (Wed, 08 Jan 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>a fractional value of the css letter-spacing property is not rendered as expected
https://bugs.webkit.org/show_bug.cgi?id=20606
Reviewed by Simon Fraser.
Source/WebCore:
This turns on fractional letter-spacing and word-spacing CSS values.
It is taken mostly from Blink <a href="http://trac.webkit.org/projects/webkit/changeset/153727">r153727</a> and iOS. Updating the relevant
types is all that is necessary
Existing tests have been updated.
* css/DeprecatedStyleBuilder.cpp:
(WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
* platform/graphics/Font.cpp:
(WebCore::Font::Font):
(WebCore::Font::width):
* platform/graphics/Font.h:
(WebCore::Font::wordSpacing):
(WebCore::Font::letterSpacing):
(WebCore::Font::setWordSpacing):
(WebCore::Font::setLetterSpacing):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::wordSpacing):
(WebCore::RenderStyle::letterSpacing):
(WebCore::RenderStyle::setWordSpacing):
(WebCore::RenderStyle::setLetterSpacing):
* rendering/style/RenderStyle.h:
LayoutTests:
Manually verified that these tests are correct after enabling fractional letter-spacing and word spacing
* platform/mac/css1/text_properties/letter_spacing-expected.png:
* platform/mac/css1/text_properties/letter_spacing-expected.txt:
* platform/mac/css1/text_properties/word_spacing-expected.png:
* platform/mac/css1/text_properties/word_spacing-expected.txt:
* platform/mac/fast/text/basic/013-expected.png:
* platform/mac/fast/text/basic/013-expected.txt:
* platform/mac/fast/text/text-letter-spacing-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png:
* platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt:
* platform/mac/svg/batik/text/textLayout-expected.txt:
* platform/mac/svg/custom/text-letter-spacing-expected.png:
* platform/mac/svg/custom/text-letter-spacing-expected.txt:
* platform/mac/svg/text/text-spacing-01-b-expected.png:
* platform/mac/svg/text/text-spacing-01-b-expected.txt:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformmaccss1text_propertiesletter_spacingexpectedpng">trunk/LayoutTests/platform/mac/css1/text_properties/letter_spacing-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmaccss1text_propertiesletter_spacingexpectedtxt">trunk/LayoutTests/platform/mac/css1/text_properties/letter_spacing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmaccss1text_propertiesword_spacingexpectedpng">trunk/LayoutTests/platform/mac/css1/text_properties/word_spacing-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmaccss1text_propertiesword_spacingexpectedtxt">trunk/LayoutTests/platform/mac/css1/text_properties/word_spacing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfasttextbasic013expectedpng">trunk/LayoutTests/platform/mac/fast/text/basic/013-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacfasttextbasic013expectedtxt">trunk/LayoutTests/platform/mac/fast/text/basic/013-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfasttexttextletterspacingexpectedtxt">trunk/LayoutTests/platform/mac/fast/text/text-letter-spacing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgW3CSVG11textspacing01bexpectedpng">trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgW3CSVG11textspacing01bexpectedtxt">trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgbatiktexttextLayoutexpectedtxt">trunk/LayoutTests/platform/mac/svg/batik/text/textLayout-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomtextletterspacingexpectedpng">trunk/LayoutTests/platform/mac/svg/custom/text-letter-spacing-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomtextletterspacingexpectedtxt">trunk/LayoutTests/platform/mac/svg/custom/text-letter-spacing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgtexttextspacing01bexpectedpng">trunk/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgtexttextspacing01bexpectedtxt">trunk/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssDeprecatedStyleBuildercpp">trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorepageanimationCSSPropertyAnimationcpp">trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontcpp">trunk/Source/WebCore/platform/graphics/Font.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFonth">trunk/Source/WebCore/platform/graphics/Font.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStylecpp">trunk/Source/WebCore/rendering/style/RenderStyle.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/ChangeLog        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2014-01-07 Myles C. Maxfield <mmaxfield@apple.com>
+
+ a fractional value of the css letter-spacing property is not rendered as expected
+ https://bugs.webkit.org/show_bug.cgi?id=20606
+
+ Reviewed by Simon Fraser.
+
+ Manually verified that these tests are correct after enabling fractional letter-spacing and word spacing
+
+ * platform/mac/css1/text_properties/letter_spacing-expected.png:
+ * platform/mac/css1/text_properties/letter_spacing-expected.txt:
+ * platform/mac/css1/text_properties/word_spacing-expected.png:
+ * platform/mac/css1/text_properties/word_spacing-expected.txt:
+ * platform/mac/fast/text/basic/013-expected.png:
+ * platform/mac/fast/text/basic/013-expected.txt:
+ * platform/mac/fast/text/text-letter-spacing-expected.txt:
+ * platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png:
+ * platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt:
+ * platform/mac/svg/batik/text/textLayout-expected.txt:
+ * platform/mac/svg/custom/text-letter-spacing-expected.png:
+ * platform/mac/svg/custom/text-letter-spacing-expected.txt:
+ * platform/mac/svg/text/text-spacing-01-b-expected.png:
+ * platform/mac/svg/text/text-spacing-01-b-expected.txt:
+
</ins><span class="cx"> 2014-01-08 Alexey Proskuryakov <ap@apple.com>
</span><span class="cx">
</span><span class="cx"> Flaky Test: http/tests/xmlhttprequest/xmlhttprequest-50ms-download-dispatch.html
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmaccss1text_propertiesletter_spacingexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/css1/text_properties/letter_spacing-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmaccss1text_propertiesletter_spacingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/css1/text_properties/letter_spacing-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/css1/text_properties/letter_spacing-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/css1/text_properties/letter_spacing-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -32,21 +32,21 @@
</span><span class="cx"> text run at (264,150) width 0: " "
</span><span class="cx"> RenderBlock {HR} at (0,212) size 769x2 [border: (1px inset #000000)]
</span><span class="cx"> RenderBlock {P} at (0,230) size 769x72
</span><del>- RenderText {#text} at (0,0) size 694x72
- text run at (0,0) width 671: "This letters in this"
- text run at (0,18) width 694: "sentence should have"
- text run at (0,36) width 659: "extra space between"
- text run at (0,54) width 175: "them."
</del><ins>+ RenderText {#text} at (0,0) size 710x72
+ text run at (0,0) width 687: "This letters in this"
+ text run at (0,18) width 710: "sentence should have"
+ text run at (0,36) width 675: "extra space between"
+ text run at (0,54) width 179: "them."
</ins><span class="cx"> RenderBlock {P} at (0,318) size 769x54
</span><del>- RenderText {#text} at (0,0) size 765x54
- text run at (0,0) width 691: "This letters in this sentence"
- text run at (0,18) width 765: "should have extra space between"
- text run at (0,36) width 125: "them."
</del><ins>+ RenderText {#text} at (0,0) size 718x54
+ text run at (0,0) width 718: "This letters in this sentence"
+ text run at (0,18) width 585: "should have extra space"
+ text run at (0,36) width 338: "between them."
</ins><span class="cx"> RenderBlock {P} at (0,388) size 769x54
</span><del>- RenderText {#text} at (0,0) size 765x54
- text run at (0,0) width 691: "This letters in this sentence"
- text run at (0,18) width 765: "should have extra space between"
- text run at (0,36) width 125: "them."
</del><ins>+ RenderText {#text} at (0,0) size 718x54
+ text run at (0,0) width 718: "This letters in this sentence"
+ text run at (0,18) width 585: "should have extra space"
+ text run at (0,36) width 338: "between them."
</ins><span class="cx"> RenderBlock {P} at (0,458) size 769x18
</span><span class="cx"> RenderText {#text} at (0,0) size 687x18
</span><span class="cx"> text run at (0,0) width 687: "This letters in this sentence should have extra space between them."
</span><span class="lines">@@ -59,9 +59,9 @@
</span><span class="cx"> text run at (0,18) width 703: "should have extra space between"
</span><span class="cx"> text run at (0,36) width 115: "them."
</span><span class="cx"> RenderBlock {P} at (0,596) size 769x36
</span><del>- RenderText {#text} at (0,0) size 694x36
- text run at (0,0) width 694: "This letters in this sentence should have extra space"
- text run at (0,18) width 183: "between them."
</del><ins>+ RenderText {#text} at (0,0) size 704x36
+ text run at (0,0) width 704: "This letters in this sentence should have extra space"
+ text run at (0,18) width 186: "between them."
</ins><span class="cx"> RenderBlock {P} at (0,648) size 769x36
</span><span class="cx"> RenderText {#text} at (0,0) size 754x36
</span><span class="cx"> text run at (0,0) width 754: "This letters in this sentence should have extra space between them,"
</span><span class="lines">@@ -76,8 +76,8 @@
</span><span class="cx"> text run at (0,0) width 731: "This letters in this sentence should have normal space between them, since percentage values are not allowed on this"
</span><span class="cx"> text run at (0,18) width 57: "property."
</span><span class="cx"> RenderBlock {P} at (0,752) size 769x18
</span><del>- RenderText {#text} at (0,0) size 638x18
- text run at (0,0) width 638: "This letters in this sentence should have reduced space between them, since negative values are allowed on this property."
</del><ins>+ RenderText {#text} at (0,0) size 566x18
+ text run at (0,0) width 566: "This letters in this sentence should have reduced space between them, since negative values are allowed on this property."
</ins><span class="cx"> RenderTable {TABLE} at (0,786) size 769x576 [border: (1px outset #808080)]
</span><span class="cx"> RenderTableSection {TBODY} at (1,1) size 767x574
</span><span class="cx"> RenderTableRow {TR} at (0,0) size 767x26
</span><span class="lines">@@ -91,21 +91,21 @@
</span><span class="cx"> text run at (4,4) width 4: " "
</span><span class="cx"> RenderTableCell {TD} at (12,26) size 755x548 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
</span><span class="cx"> RenderBlock {P} at (4,4) size 747x72
</span><del>- RenderText {#text} at (0,0) size 694x72
- text run at (0,0) width 671: "This letters in this"
- text run at (0,18) width 694: "sentence should have"
- text run at (0,36) width 659: "extra space between"
- text run at (0,54) width 175: "them."
</del><ins>+ RenderText {#text} at (0,0) size 710x72
+ text run at (0,0) width 687: "This letters in this"
+ text run at (0,18) width 710: "sentence should have"
+ text run at (0,36) width 675: "extra space between"
+ text run at (0,54) width 179: "them."
</ins><span class="cx"> RenderBlock {P} at (4,92) size 747x54
</span><del>- RenderText {#text} at (0,0) size 691x54
- text run at (0,0) width 691: "This letters in this sentence"
- text run at (0,18) width 564: "should have extra space"
- text run at (0,36) width 326: "between them."
</del><ins>+ RenderText {#text} at (0,0) size 718x54
+ text run at (0,0) width 718: "This letters in this sentence"
+ text run at (0,18) width 585: "should have extra space"
+ text run at (0,36) width 338: "between them."
</ins><span class="cx"> RenderBlock {P} at (4,162) size 747x54
</span><del>- RenderText {#text} at (0,0) size 691x54
- text run at (0,0) width 691: "This letters in this sentence"
- text run at (0,18) width 564: "should have extra space"
- text run at (0,36) width 326: "between them."
</del><ins>+ RenderText {#text} at (0,0) size 718x54
+ text run at (0,0) width 718: "This letters in this sentence"
+ text run at (0,18) width 585: "should have extra space"
+ text run at (0,36) width 338: "between them."
</ins><span class="cx"> RenderBlock {P} at (4,232) size 747x18
</span><span class="cx"> RenderText {#text} at (0,0) size 687x18
</span><span class="cx"> text run at (0,0) width 687: "This letters in this sentence should have extra space between them."
</span><span class="lines">@@ -118,9 +118,9 @@
</span><span class="cx"> text run at (0,18) width 703: "should have extra space between"
</span><span class="cx"> text run at (0,36) width 115: "them."
</span><span class="cx"> RenderBlock {P} at (4,370) size 747x36
</span><del>- RenderText {#text} at (0,0) size 694x36
- text run at (0,0) width 694: "This letters in this sentence should have extra space"
- text run at (0,18) width 183: "between them."
</del><ins>+ RenderText {#text} at (0,0) size 704x36
+ text run at (0,0) width 704: "This letters in this sentence should have extra space"
+ text run at (0,18) width 186: "between them."
</ins><span class="cx"> RenderBlock {P} at (4,422) size 747x36
</span><span class="cx"> RenderText {#text} at (0,0) size 685x36
</span><span class="cx"> text run at (0,0) width 685: "This letters in this sentence should have extra space between"
</span><span class="lines">@@ -135,5 +135,5 @@
</span><span class="cx"> text run at (0,0) width 731: "This letters in this sentence should have normal space between them, since percentage values are not allowed on this"
</span><span class="cx"> text run at (0,18) width 57: "property."
</span><span class="cx"> RenderBlock {P} at (4,526) size 747x18
</span><del>- RenderText {#text} at (0,0) size 638x18
- text run at (0,0) width 638: "This letters in this sentence should have reduced space between them, since negative values are allowed on this property."
</del><ins>+ RenderText {#text} at (0,0) size 566x18
+ text run at (0,0) width 566: "This letters in this sentence should have reduced space between them, since negative values are allowed on this property."
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmaccss1text_propertiesword_spacingexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/css1/text_properties/word_spacing-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmaccss1text_propertiesword_spacingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/css1/text_properties/word_spacing-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/css1/text_properties/word_spacing-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/css1/text_properties/word_spacing-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -33,14 +33,14 @@
</span><span class="cx"> text run at (0,165) width 0: " "
</span><span class="cx"> RenderBlock {HR} at (0,227) size 769x2 [border: (1px inset #000000)]
</span><span class="cx"> RenderBlock {P} at (0,245) size 769x18
</span><del>- RenderText {#text} at (0,0) size 701x18
- text run at (0,0) width 701: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 709x18
+ text run at (0,0) width 709: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (0,279) size 769x18
</span><del>- RenderText {#text} at (0,0) size 601x18
- text run at (0,0) width 601: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 610x18
+ text run at (0,0) width 610: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (0,313) size 769x18
</span><del>- RenderText {#text} at (0,0) size 601x18
- text run at (0,0) width 601: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 610x18
+ text run at (0,0) width 610: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (0,347) size 769x18
</span><span class="cx"> RenderText {#text} at (0,0) size 461x18
</span><span class="cx"> text run at (0,0) width 461: "This words in this sentence should have extra space between them."
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx"> RenderText {#text} at (0,0) size 581x18
</span><span class="cx"> text run at (0,0) width 581: "This words in this sentence should have extra space between them."
</span><span class="cx"> RenderBlock {P} at (0,449) size 769x18
</span><del>- RenderText {#text} at (0,0) size 491x18
- text run at (0,0) width 491: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 493x18
+ text run at (0,0) width 493: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (0,483) size 769x36
</span><span class="cx"> RenderText {#text} at (0,0) size 751x18
</span><span class="cx"> text run at (0,0) width 751: "This words in this sentence should have extra space between them, but the last few words in the sentence"
</span><span class="lines">@@ -65,8 +65,8 @@
</span><span class="cx"> RenderText {#text} at (0,0) size 668x18
</span><span class="cx"> text run at (0,0) width 668: "This sentence should have normal word-spacing, since percentage values are not allowed on this property."
</span><span class="cx"> RenderBlock {P} at (0,569) size 769x18
</span><del>- RenderText {#text} at (0,0) size 707x18
- text run at (0,0) width 707: "This words in this sentence should have reduced space between them, since negative values are allowed on this property."
</del><ins>+ RenderText {#text} at (0,0) size 704x18
+ text run at (0,0) width 704: "This words in this sentence should have reduced space between them, since negative values are allowed on this property."
</ins><span class="cx"> RenderTable {TABLE} at (0,603) size 769x378 [border: (1px outset #808080)]
</span><span class="cx"> RenderTableSection {TBODY} at (1,1) size 767x376
</span><span class="cx"> RenderTableRow {TR} at (0,0) size 767x26
</span><span class="lines">@@ -80,14 +80,14 @@
</span><span class="cx"> text run at (4,4) width 4: " "
</span><span class="cx"> RenderTableCell {TD} at (12,26) size 755x350 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
</span><span class="cx"> RenderBlock {P} at (4,4) size 747x18
</span><del>- RenderText {#text} at (0,0) size 701x18
- text run at (0,0) width 701: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 709x18
+ text run at (0,0) width 709: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (4,38) size 747x18
</span><del>- RenderText {#text} at (0,0) size 601x18
- text run at (0,0) width 601: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 610x18
+ text run at (0,0) width 610: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (4,72) size 747x18
</span><del>- RenderText {#text} at (0,0) size 601x18
- text run at (0,0) width 601: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 610x18
+ text run at (0,0) width 610: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (4,106) size 747x18
</span><span class="cx"> RenderText {#text} at (0,0) size 461x18
</span><span class="cx"> text run at (0,0) width 461: "This words in this sentence should have extra space between them."
</span><span class="lines">@@ -98,8 +98,8 @@
</span><span class="cx"> RenderText {#text} at (0,0) size 581x18
</span><span class="cx"> text run at (0,0) width 581: "This words in this sentence should have extra space between them."
</span><span class="cx"> RenderBlock {P} at (4,208) size 747x18
</span><del>- RenderText {#text} at (0,0) size 491x18
- text run at (0,0) width 491: "This words in this sentence should have extra space between them."
</del><ins>+ RenderText {#text} at (0,0) size 493x18
+ text run at (0,0) width 493: "This words in this sentence should have extra space between them."
</ins><span class="cx"> RenderBlock {P} at (4,242) size 747x36
</span><span class="cx"> RenderText {#text} at (0,0) size 688x36
</span><span class="cx"> text run at (0,0) width 688: "This words in this sentence should have extra space between them, but the last few words in the"
</span><span class="lines">@@ -113,5 +113,5 @@
</span><span class="cx"> RenderText {#text} at (0,0) size 668x18
</span><span class="cx"> text run at (0,0) width 668: "This sentence should have normal word-spacing, since percentage values are not allowed on this property."
</span><span class="cx"> RenderBlock {P} at (4,328) size 747x18
</span><del>- RenderText {#text} at (0,0) size 707x18
- text run at (0,0) width 707: "This words in this sentence should have reduced space between them, since negative values are allowed on this property."
</del><ins>+ RenderText {#text} at (0,0) size 704x18
+ text run at (0,0) width 704: "This words in this sentence should have reduced space between them, since negative values are allowed on this property."
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfasttextbasic013expectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/fast/text/basic/013-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfasttextbasic013expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/text/basic/013-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/text/basic/013-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/fast/text/basic/013-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -37,34 +37,34 @@
</span><span class="cx"> text run at (0,18) width 296: "be inherited. This was discovered in Safari 1.0."
</span><span class="cx"> RenderBlock {DIV} at (0,110) size 784x120
</span><span class="cx"> RenderBlock {P} at (0,0) size 784x18
</span><del>- RenderText {#text} at (0,0) size 122x18
- text run at (0,0) width 122: "Text inside "
- RenderInline {B} at (0,0) size 46x18
- RenderText {#text} at (122,0) size 46x18
- text run at (122,0) width 46: "bold"
- RenderText {#text} at (168,0) size 93x18
- text run at (168,0) width 93: " element."
</del><ins>+ RenderText {#text} at (0,0) size 132x18
+ text run at (0,0) width 132: "Text inside "
+ RenderInline {B} at (0,0) size 50x18
+ RenderText {#text} at (131,0) size 50x18
+ text run at (131,0) width 50: "bold"
+ RenderText {#text} at (180,0) size 101x18
+ text run at (180,0) width 101: " element."
</ins><span class="cx"> RenderBlock {P} at (0,34) size 784x18
</span><del>- RenderText {#text} at (0,0) size 122x18
- text run at (0,0) width 122: "Text inside "
- RenderInline {STRONG} at (0,0) size 67x18
- RenderText {#text} at (122,0) size 67x18
- text run at (122,0) width 67: "strong"
- RenderText {#text} at (189,0) size 93x18
- text run at (189,0) width 93: " element."
</del><ins>+ RenderText {#text} at (0,0) size 132x18
+ text run at (0,0) width 132: "Text inside "
+ RenderInline {STRONG} at (0,0) size 73x18
+ RenderText {#text} at (131,0) size 73x18
+ text run at (131,0) width 73: "strong"
+ RenderText {#text} at (203,0) size 101x18
+ text run at (203,0) width 101: " element."
</ins><span class="cx"> RenderBlock {P} at (0,68) size 784x18
</span><del>- RenderText {#text} at (0,0) size 122x18
- text run at (0,0) width 122: "Text inside "
- RenderInline {I} at (0,0) size 55x18
- RenderText {#text} at (122,0) size 55x18
- text run at (122,0) width 55: "italic"
- RenderText {#text} at (177,0) size 93x18
- text run at (177,0) width 93: " element."
</del><ins>+ RenderText {#text} at (0,0) size 132x18
+ text run at (0,0) width 132: "Text inside "
+ RenderInline {I} at (0,0) size 61x18
+ RenderText {#text} at (131,0) size 61x18
+ text run at (131,0) width 61: "italic"
+ RenderText {#text} at (191,0) size 101x18
+ text run at (191,0) width 101: " element."
</ins><span class="cx"> RenderBlock {P} at (0,102) size 784x18
</span><del>- RenderText {#text} at (0,0) size 122x18
- text run at (0,0) width 122: "Text inside "
- RenderInline {EM} at (0,0) size 91x18
- RenderText {#text} at (122,0) size 91x18
- text run at (122,0) width 91: "emphasis"
- RenderText {#text} at (213,0) size 93x18
- text run at (213,0) width 93: " element."
</del><ins>+ RenderText {#text} at (0,0) size 132x18
+ text run at (0,0) width 132: "Text inside "
+ RenderInline {EM} at (0,0) size 99x18
+ RenderText {#text} at (131,0) size 99x18
+ text run at (131,0) width 99: "emphasis"
+ RenderText {#text} at (229,0) size 101x18
+ text run at (229,0) width 101: " element."
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfasttexttextletterspacingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/text/text-letter-spacing-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/text/text-letter-spacing-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/fast/text/text-letter-spacing-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-layer at (0,0) size 163023x1728
</del><ins>+layer at (0,0) size 9600207x1728
</ins><span class="cx"> RenderView at (0,0) size 785x585
</span><span class="cx"> layer at (0,0) size 785x1728
</span><span class="cx"> RenderBlock {HTML} at (0,0) size 785x1728
</span><span class="lines">@@ -40,10 +40,10 @@
</span><span class="cx"> text run at (0,18) width 37: "a 'w', "
</span><span class="cx"> text run at (37,18) width 407: "perhaps on two different lines, unless you scroll way to the right."
</span><span class="cx"> RenderBlock {P} at (0,398) size 769x36 [bgcolor=#EEEEEE]
</span><del>- RenderInline {SPAN} at (0,0) size 163015x36
- RenderText {#text} at (160,0) size 163015x36
- text run at (160,0) width 162855: "Hello,"
- text run at (0,18) width 135717: "world"
</del><ins>+ RenderInline {SPAN} at (0,0) size 9600199x36
+ RenderText {#text} at (160,0) size 9600199x36
+ text run at (160,0) width 9600039: "Hello,"
+ text run at (0,18) width 8000037: "world"
</ins><span class="cx"> RenderBlock {P} at (0,450) size 769x18 [bgcolor=#FFFFFF]
</span><span class="cx"> RenderText {#text} at (0,0) size 528x18
</span><span class="cx"> text run at (0,0) width 528: "The next line tests a small negative line spacing, and should be crammed backwards"
</span><span class="lines">@@ -158,11 +158,11 @@
</span><span class="cx"> RenderText {#text} at (160,0) size 19399x36
</span><span class="cx"> text run at (160,0) width 19239: "Hello,"
</span><span class="cx"> text run at (0,18) width 16037: "world"
</span><del>-layer at (8,944) size 163015x36
- RenderInline {SPAN} at (0,0) size 163015x36 [bgcolor=#CCCCFF]
- RenderText {#text} at (160,0) size 163015x36
- text run at (160,0) width 162855: "Hello,"
- text run at (0,18) width 135717: "world"
</del><ins>+layer at (8,944) size 9600199x36
+ RenderInline {SPAN} at (0,0) size 9600199x36 [bgcolor=#CCCCFF]
+ RenderText {#text} at (160,0) size 9600199x36
+ text run at (160,0) width 9600039: "Hello,"
+ text run at (0,18) width 8000037: "world"
</ins><span class="cx"> layer at (8,1030) size 0x18
</span><span class="cx"> RenderInline {SPAN} at (0,0) size 0x18 [bgcolor=#CCCCFF]
</span><span class="cx"> RenderText {#text} at (160,0) size 0x18
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgW3CSVG11textspacing01bexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgW3CSVG11textspacing01bexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -26,9 +26,25 @@
</span><span class="cx"> chunk 1 text run 15 at (37.33,16.00) startOffset 14 endOffset 15 width 2.17: ":"
</span><span class="cx"> chunk 1 text run 16 at (38.50,16.00) startOffset 15 endOffset 16 width 2.67: "-"
</span><span class="cx"> chunk 1 text run 17 at (40.17,16.00) startOffset 16 endOffset 17 width 4.50: "1"
</span><del>- RenderSVGText {text} at (3,16) size 58x9 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,0) size 58x9
- chunk 1 text run 1 at (3.00,24.00) startOffset 0 endOffset 17 width 57.17: "letter-spacing:.3"
</del><ins>+ RenderSVGText {text} at (3,16) size 62x9 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,0) size 62x9
+ chunk 1 text run 1 at (3.00,24.00) startOffset 0 endOffset 1 width 1.83: "l"
+ chunk 1 text run 2 at (5.13,24.00) startOffset 1 endOffset 2 width 4.50: "e"
+ chunk 1 text run 3 at (9.93,24.00) startOffset 2 endOffset 3 width 2.17: "t"
+ chunk 1 text run 4 at (12.40,24.00) startOffset 3 endOffset 4 width 2.17: "t"
+ chunk 1 text run 5 at (14.87,24.00) startOffset 4 endOffset 5 width 4.50: "e"
+ chunk 1 text run 6 at (19.67,24.00) startOffset 5 endOffset 6 width 2.67: "r"
+ chunk 1 text run 7 at (22.63,24.00) startOffset 6 endOffset 7 width 2.67: "-"
+ chunk 1 text run 8 at (25.60,24.00) startOffset 7 endOffset 8 width 4.00: "s"
+ chunk 1 text run 9 at (29.90,24.00) startOffset 8 endOffset 9 width 4.50: "p"
+ chunk 1 text run 10 at (34.70,24.00) startOffset 9 endOffset 10 width 4.50: "a"
+ chunk 1 text run 11 at (39.50,24.00) startOffset 10 endOffset 11 width 4.00: "c"
+ chunk 1 text run 12 at (43.80,24.00) startOffset 11 endOffset 12 width 1.83: "i"
+ chunk 1 text run 13 at (45.93,24.00) startOffset 12 endOffset 13 width 4.50: "n"
+ chunk 1 text run 14 at (50.73,24.00) startOffset 13 endOffset 14 width 4.50: "g"
+ chunk 1 text run 15 at (55.53,24.00) startOffset 14 endOffset 15 width 2.17: ":"
+ chunk 1 text run 16 at (58.00,24.00) startOffset 15 endOffset 16 width 2.17: "."
+ chunk 1 text run 17 at (60.47,24.00) startOffset 16 endOffset 17 width 4.50: "3"
</ins><span class="cx"> RenderSVGText {text} at (3,25) size 64x9 contains 1 chunk(s)
</span><span class="cx"> RenderSVGInlineText {#text} at (0,0) size 64x9
</span><span class="cx"> chunk 1 text run 1 at (3.00,33.00) startOffset 0 endOffset 16 width 64.00: "ws:0 - Two Words"
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgbatiktexttextLayoutexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/svg/batik/text/textLayout-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/batik/text/textLayout-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/svg/batik/text/textLayout-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -117,15 +117,15 @@
</span><span class="cx"> RenderSVGText {text} at (290,233) size 104x9 contains 1 chunk(s)
</span><span class="cx"> RenderSVGInlineText {#text} at (0,0) size 104x9
</span><span class="cx"> chunk 1 text run 1 at (290.00,240.00) startOffset 0 endOffset 29 width 104.00: "textLength=\"120\",kerning=\"10\""
</span><del>- RenderSVGContainer {g} at (40,253) size 104x39
- RenderSVGText {text} at (40,253) size 104x28 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,0) size 104x28
</del><ins>+ RenderSVGContainer {g} at (40,253) size 105x39
+ RenderSVGText {text} at (40,253) size 105x28 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,0) size 105x28
</ins><span class="cx"> chunk 1 text run 1 at (40.00,275.00) startOffset 0 endOffset 1 width 9.00: "s"
</span><del>- chunk 1 text run 2 at (56.00,275.00) startOffset 1 endOffset 2 width 11.00: "a"
- chunk 1 text run 3 at (74.00,275.00) startOffset 2 endOffset 3 width 19.00: "m"
- chunk 1 text run 4 at (100.00,275.00) startOffset 3 endOffset 4 width 12.00: "p"
- chunk 1 text run 5 at (119.00,275.00) startOffset 4 endOffset 5 width 7.00: "l"
- chunk 1 text run 6 at (133.00,275.00) startOffset 5 endOffset 6 width 11.00: "e"
</del><ins>+ chunk 1 text run 2 at (56.20,275.00) startOffset 1 endOffset 2 width 11.00: "a"
+ chunk 1 text run 3 at (74.40,275.00) startOffset 2 endOffset 3 width 19.00: "m"
+ chunk 1 text run 4 at (100.60,275.00) startOffset 3 endOffset 4 width 12.00: "p"
+ chunk 1 text run 5 at (119.80,275.00) startOffset 4 endOffset 5 width 7.00: "l"
+ chunk 1 text run 6 at (134.00,275.00) startOffset 5 endOffset 6 width 11.00: "e"
</ins><span class="cx"> RenderSVGText {text} at (40,283) size 76x9 contains 1 chunk(s)
</span><span class="cx"> RenderSVGInlineText {#text} at (0,0) size 76x9
</span><span class="cx"> chunk 1 text run 1 at (40.00,290.00) startOffset 0 endOffset 22 width 76.00: "letter-spacing=\"0.3em\""
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomtextletterspacingexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/svg/custom/text-letter-spacing-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomtextletterspacingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/svg/custom/text-letter-spacing-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/custom/text-letter-spacing-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/svg/custom/text-letter-spacing-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -1,30 +1,30 @@
</span><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx"> RenderView at (0,0) size 800x600
</span><span class="cx"> layer at (0,0) size 800x600
</span><del>- RenderSVGRoot {svg} at (20,10) size 350x158
- RenderSVGContainer {g} at (20,10) size 350x158
- RenderSVGText {text} at (10,5) size 175x19 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,0) size 175x19
</del><ins>+ RenderSVGRoot {svg} at (20,10) size 362x158
+ RenderSVGContainer {g} at (20,10) size 362x158
+ RenderSVGText {text} at (10,5) size 181x19 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,0) size 181x19
</ins><span class="cx"> chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 1 width 11.50: "A"
</span><del>- chunk 1 text run 2 at (39.50,20.00) startOffset 1 endOffset 2 width 10.50: "B"
- chunk 1 text run 3 at (68.00,20.00) startOffset 2 endOffset 3 width 10.50: "C"
- chunk 1 text run 4 at (96.50,20.00) startOffset 3 endOffset 4 width 4.00: " "
- chunk 1 text run 5 at (118.50,20.00) startOffset 4 endOffset 5 width 11.50: "D"
- chunk 1 text run 6 at (148.00,20.00) startOffset 5 endOffset 6 width 10.00: "E"
- chunk 1 text run 7 at (176.00,20.00) startOffset 6 endOffset 7 width 9.00: "F"
- RenderSVGText {text} at (10,25) size 175x19 contains 1 chunk(s)
</del><ins>+ chunk 1 text run 2 at (40.40,20.00) startOffset 1 endOffset 2 width 10.50: "B"
+ chunk 1 text run 3 at (69.80,20.00) startOffset 2 endOffset 3 width 10.50: "C"
+ chunk 1 text run 4 at (99.19,20.00) startOffset 3 endOffset 4 width 4.00: " "
+ chunk 1 text run 5 at (122.09,20.00) startOffset 4 endOffset 5 width 11.50: "D"
+ chunk 1 text run 6 at (152.49,20.00) startOffset 5 endOffset 6 width 10.00: "E"
+ chunk 1 text run 7 at (181.39,20.00) startOffset 6 endOffset 7 width 9.00: "F"
+ RenderSVGText {text} at (10,25) size 181x19 contains 1 chunk(s)
+ RenderSVGTSpan {tspan} at (0,0) size 71x19
+ RenderSVGInlineText {#text} at (0,0) size 71x19
+ chunk 1 text run 1 at (10.00,40.00) startOffset 0 endOffset 1 width 11.50: "A"
+ chunk 1 text run 2 at (40.40,40.00) startOffset 1 endOffset 2 width 10.50: "B"
+ chunk 1 text run 3 at (69.80,40.00) startOffset 2 endOffset 3 width 10.50: "C"
+ RenderSVGInlineText {#text} at (89,0) size 4x19
+ chunk 1 text run 1 at (99.19,40.00) startOffset 0 endOffset 1 width 4.00: " "
</ins><span class="cx"> RenderSVGTSpan {tspan} at (0,0) size 69x19
</span><del>- RenderSVGInlineText {#text} at (0,0) size 69x19
- chunk 1 text run 1 at (10.00,40.00) startOffset 0 endOffset 1 width 11.50: "A"
- chunk 1 text run 2 at (39.50,40.00) startOffset 1 endOffset 2 width 10.50: "B"
- chunk 1 text run 3 at (68.00,40.00) startOffset 2 endOffset 3 width 10.50: "C"
- RenderSVGInlineText {#text} at (86,0) size 4x19
- chunk 1 text run 1 at (96.50,40.00) startOffset 0 endOffset 1 width 4.00: " "
- RenderSVGTSpan {tspan} at (0,0) size 67x19
- RenderSVGInlineText {#text} at (108,0) size 67x19
- chunk 1 text run 1 at (118.50,40.00) startOffset 0 endOffset 1 width 11.50: "D"
- chunk 1 text run 2 at (148.00,40.00) startOffset 1 endOffset 2 width 10.00: "E"
- chunk 1 text run 3 at (176.00,40.00) startOffset 2 endOffset 3 width 9.00: "F"
</del><ins>+ RenderSVGInlineText {#text} at (112,0) size 69x19
+ chunk 1 text run 1 at (122.09,40.00) startOffset 0 endOffset 1 width 11.50: "D"
+ chunk 1 text run 2 at (152.49,40.00) startOffset 1 endOffset 2 width 10.00: "E"
+ chunk 1 text run 3 at (181.39,40.00) startOffset 2 endOffset 3 width 9.00: "F"
</ins><span class="cx"> RenderSVGText {text} at (10,45) size 129x19 contains 1 chunk(s)
</span><span class="cx"> RenderSVGInlineText {#text} at (0,0) size 129x19
</span><span class="cx"> chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 11.50: "A"
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgtexttextspacing01bexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgtexttextspacing01bexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.txt (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.txt        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.txt        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -26,9 +26,25 @@
</span><span class="cx"> chunk 1 text run 15 at (36.80,16.00) startOffset 14 endOffset 15 width 2.20: ":"
</span><span class="cx"> chunk 1 text run 16 at (38.00,16.00) startOffset 15 endOffset 16 width 2.70: "-"
</span><span class="cx"> chunk 1 text run 17 at (39.70,16.00) startOffset 16 endOffset 17 width 4.40: "1"
</span><del>- RenderSVGText {text} at (3,16) size 57x9 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,0) size 57x9
- chunk 1 text run 1 at (3.00,24.00) startOffset 0 endOffset 17 width 56.60: "letter-spacing:.3"
</del><ins>+ RenderSVGText {text} at (3,16) size 62x9 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,0) size 62x9
+ chunk 1 text run 1 at (3.00,24.00) startOffset 0 endOffset 1 width 1.80: "l"
+ chunk 1 text run 2 at (5.10,24.00) startOffset 1 endOffset 2 width 4.40: "e"
+ chunk 1 text run 3 at (9.80,24.00) startOffset 2 endOffset 3 width 2.20: "t"
+ chunk 1 text run 4 at (12.30,24.00) startOffset 3 endOffset 4 width 2.20: "t"
+ chunk 1 text run 5 at (14.80,24.00) startOffset 4 endOffset 5 width 4.40: "e"
+ chunk 1 text run 6 at (19.50,24.00) startOffset 5 endOffset 6 width 2.70: "r"
+ chunk 1 text run 7 at (22.50,24.00) startOffset 6 endOffset 7 width 2.70: "-"
+ chunk 1 text run 8 at (25.50,24.00) startOffset 7 endOffset 8 width 4.00: "s"
+ chunk 1 text run 9 at (29.80,24.00) startOffset 8 endOffset 9 width 4.40: "p"
+ chunk 1 text run 10 at (34.50,24.00) startOffset 9 endOffset 10 width 4.40: "a"
+ chunk 1 text run 11 at (39.20,24.00) startOffset 10 endOffset 11 width 4.00: "c"
+ chunk 1 text run 12 at (43.50,24.00) startOffset 11 endOffset 12 width 1.80: "i"
+ chunk 1 text run 13 at (45.60,24.00) startOffset 12 endOffset 13 width 4.40: "n"
+ chunk 1 text run 14 at (50.30,24.00) startOffset 13 endOffset 14 width 4.40: "g"
+ chunk 1 text run 15 at (55.00,24.00) startOffset 14 endOffset 15 width 2.20: ":"
+ chunk 1 text run 16 at (57.50,24.00) startOffset 15 endOffset 16 width 2.20: "."
+ chunk 1 text run 17 at (60.00,24.00) startOffset 16 endOffset 17 width 4.40: "3"
</ins><span class="cx"> RenderSVGText {text} at (3,25) size 64x9 contains 1 chunk(s)
</span><span class="cx"> RenderSVGInlineText {#text} at (0,0) size 64x9
</span><span class="cx"> chunk 1 text run 1 at (3.00,33.00) startOffset 0 endOffset 16 width 63.90: "ws:0 - Two Words"
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/ChangeLog        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -1,3 +1,35 @@
</span><ins>+2014-01-07 Myles C. Maxfield <mmaxfield@apple.com>
+
+ a fractional value of the css letter-spacing property is not rendered as expected
+ https://bugs.webkit.org/show_bug.cgi?id=20606
+
+ Reviewed by Simon Fraser.
+
+ This turns on fractional letter-spacing and word-spacing CSS values.
+ It is taken mostly from Blink r153727 and iOS. Updating the relevant
+ types is all that is necessary
+
+ Existing tests have been updated.
+
+ * css/DeprecatedStyleBuilder.cpp:
+ (WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):
+ * page/animation/CSSPropertyAnimation.cpp:
+ (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::Font):
+ (WebCore::Font::width):
+ * platform/graphics/Font.h:
+ (WebCore::Font::wordSpacing):
+ (WebCore::Font::letterSpacing):
+ (WebCore::Font::setWordSpacing):
+ (WebCore::Font::setLetterSpacing):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::wordSpacing):
+ (WebCore::RenderStyle::letterSpacing):
+ (WebCore::RenderStyle::setWordSpacing):
+ (WebCore::RenderStyle::setLetterSpacing):
+ * rendering/style/RenderStyle.h:
+
</ins><span class="cx"> 2014-01-08 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><span class="cx"> Add WTF::StringView and use it for grammar checking
</span></span></pre></div>
<a id="trunkSourceWebCorecssDeprecatedStyleBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -2312,15 +2312,8 @@
</span><span class="cx"> setPropertyHandler(CSSPropertyImageResolution, ApplyPropertyImageResolution::createHandler());
</span><span class="cx"> #endif
</span><span class="cx"> setPropertyHandler(CSSPropertyLeft, ApplyPropertyLength<&RenderStyle::left, &RenderStyle::setLeft, &RenderStyle::initialOffset, AutoEnabled>::createHandler());
</span><ins>+ setPropertyHandler(CSSPropertyLetterSpacing, ApplyPropertyComputeLength<float, &RenderStyle::letterSpacing, &RenderStyle::setLetterSpacing, &RenderStyle::initialLetterSpacing, NormalEnabled, ThicknessDisabled, SVGZoomEnabled>::createHandler());
</ins><span class="cx">
</span><del>- // FIXME: We should reconcile the difference in datatype between iOS and OpenSource. On iOS we want letter spacing to
- // be float for sub-pixel kerning. See <https://bugs.webkit.org/show_bug.cgi?id=20606>.
-#if !PLATFORM(IOS)
- setPropertyHandler(CSSPropertyLetterSpacing, ApplyPropertyComputeLength<int, &RenderStyle::letterSpacing, &RenderStyle::setLetterSpacing, &RenderStyle::initialLetterWordSpacing, NormalEnabled, ThicknessDisabled, SVGZoomEnabled>::createHandler());
-#else
- setPropertyHandler(CSSPropertyLetterSpacing, ApplyPropertyComputeLength<float, &RenderStyle::letterSpacing, &RenderStyle::setLetterSpacing, &RenderStyle::initialLetterWordSpacing, NormalEnabled, ThicknessDisabled, SVGZoomEnabled>::createHandler());
-#endif
-
</del><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx"> setPropertyHandler(CSSPropertyLineHeight, ApplyPropertyLineHeightForIOSTextAutosizing::createHandler());
</span><span class="cx"> #else
</span><span class="lines">@@ -2536,15 +2529,8 @@
</span><span class="cx"> setPropertyHandler(CSSPropertyWidows, ApplyPropertyAuto<short, &RenderStyle::widows, &RenderStyle::setWidows, &RenderStyle::hasAutoWidows, &RenderStyle::setHasAutoWidows>::createHandler());
</span><span class="cx"> setPropertyHandler(CSSPropertyWidth, ApplyPropertyLength<&RenderStyle::width, &RenderStyle::setWidth, &RenderStyle::initialSize, AutoEnabled, LegacyIntrinsicEnabled, IntrinsicEnabled, NoneDisabled, UndefinedDisabled>::createHandler());
</span><span class="cx"> setPropertyHandler(CSSPropertyWordBreak, ApplyPropertyDefault<EWordBreak, &RenderStyle::wordBreak, EWordBreak, &RenderStyle::setWordBreak, EWordBreak, &RenderStyle::initialWordBreak>::createHandler());
</span><ins>+ setPropertyHandler(CSSPropertyWordSpacing, ApplyPropertyComputeLength<float, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing, &RenderStyle::initialWordSpacing, NormalEnabled, ThicknessDisabled, SVGZoomEnabled>::createHandler());
</ins><span class="cx">
</span><del>- // FIXME: We should reconcile the difference in datatype between iOS and OpenSource. On iOS we want word spacing to
- // be float for sub-pixel kerning. See <https://bugs.webkit.org/show_bug.cgi?id=20606>.
-#if !PLATFORM(IOS)
- setPropertyHandler(CSSPropertyWordSpacing, ApplyPropertyComputeLength<int, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing, &RenderStyle::initialLetterWordSpacing, NormalEnabled, ThicknessDisabled, SVGZoomEnabled>::createHandler());
-#else
- setPropertyHandler(CSSPropertyWordSpacing, ApplyPropertyComputeLength<float, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing, &RenderStyle::initialLetterWordSpacing, NormalEnabled, ThicknessDisabled, SVGZoomEnabled>::createHandler());
-#endif
-
</del><span class="cx"> // UAs must treat 'word-wrap' as an alternate name for the 'overflow-wrap' property. So using the same handlers.
</span><span class="cx"> setPropertyHandler(CSSPropertyWordWrap, ApplyPropertyDefault<EOverflowWrap, &RenderStyle::overflowWrap, EOverflowWrap, &RenderStyle::setOverflowWrap, EOverflowWrap, &RenderStyle::initialOverflowWrap>::createHandler());
</span><span class="cx"> setPropertyHandler(CSSPropertyZIndex, ApplyPropertyAuto<int, &RenderStyle::zIndex, &RenderStyle::setZIndex, &RenderStyle::hasAutoZIndex, &RenderStyle::setHasAutoZIndex>::createHandler());
</span></span></pre></div>
<a id="trunkSourceWebCorepageanimationCSSPropertyAnimationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -1212,16 +1212,8 @@
</span><span class="cx"> new LengthPropertyWrapper<Length>(CSSPropertyLineHeight, &RenderStyle::specifiedLineHeight, &RenderStyle::setLineHeight),
</span><span class="cx"> new PropertyWrapper<int>(CSSPropertyOutlineOffset, &RenderStyle::outlineOffset, &RenderStyle::setOutlineOffset),
</span><span class="cx"> new PropertyWrapper<unsigned short>(CSSPropertyOutlineWidth, &RenderStyle::outlineWidth, &RenderStyle::setOutlineWidth),
</span><del>-
- // FIXME: We should reconcile the difference in datatype between iOS and OpenSource. On iOS we want these properties to
- // be float for sub-pixel kerning. See <rdar://problem/5020763>.
-#if !PLATFORM(IOS)
- new PropertyWrapper<int>(CSSPropertyLetterSpacing, &RenderStyle::letterSpacing, &RenderStyle::setLetterSpacing),
- new PropertyWrapper<int>(CSSPropertyWordSpacing, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing),
-#else
</del><span class="cx"> new PropertyWrapper<float>(CSSPropertyLetterSpacing, &RenderStyle::letterSpacing, &RenderStyle::setLetterSpacing),
</span><span class="cx"> new PropertyWrapper<float>(CSSPropertyWordSpacing, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing),
</span><del>-#endif
</del><span class="cx"> new LengthPropertyWrapper<Length>(CSSPropertyTextIndent, &RenderStyle::textIndent, &RenderStyle::setTextIndent),
</span><span class="cx">
</span><span class="cx"> new PropertyWrapper<float>(CSSPropertyWebkitPerspective, &RenderStyle::perspective, &RenderStyle::setPerspective),
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/Font.cpp (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/Font.cpp        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/platform/graphics/Font.cpp        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Font::Font(const FontDescription& fd, short letterSpacing, short wordSpacing)
</del><ins>+Font::Font(const FontDescription& fd, float letterSpacing, float wordSpacing)
</ins><span class="cx"> : m_fontDescription(fd)
</span><span class="cx"> , m_letterSpacing(letterSpacing)
</span><span class="cx"> , m_wordSpacing(wordSpacing)
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool hasKerningOrLigatures = typesettingFeatures() & (Kerning | Ligatures);
</span><del>- bool hasWordSpacingOrLetterSpacing = wordSpacing() | letterSpacing();
</del><ins>+ bool hasWordSpacingOrLetterSpacing = wordSpacing() || letterSpacing();
</ins><span class="cx"> float* cacheEntry = m_glyphs->widthCache().add(run, std::numeric_limits<float>::quiet_NaN(), hasKerningOrLigatures, hasWordSpacingOrLetterSpacing, glyphOverflow);
</span><span class="cx"> if (cacheEntry && !std::isnan(*cacheEntry))
</span><span class="cx"> return *cacheEntry;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFonth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/Font.h (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/Font.h        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/platform/graphics/Font.h        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> class Font {
</span><span class="cx"> public:
</span><span class="cx"> Font();
</span><del>- Font(const FontDescription&, short letterSpacing, short wordSpacing);
</del><ins>+ Font(const FontDescription&, float letterSpacing, float wordSpacing);
</ins><span class="cx"> // This constructor is only used if the platform wants to start with a native font.
</span><span class="cx"> Font(const FontPlatformData&, bool isPrinting, FontSmoothingMode = AutoSmoothing);
</span><span class="cx"> ~Font();
</span><span class="lines">@@ -115,10 +115,10 @@
</span><span class="cx">
</span><span class="cx"> bool isSmallCaps() const { return m_fontDescription.smallCaps(); }
</span><span class="cx">
</span><del>- short wordSpacing() const { return m_wordSpacing; }
- short letterSpacing() const { return m_letterSpacing; }
- void setWordSpacing(short s) { m_wordSpacing = s; }
- void setLetterSpacing(short s) { m_letterSpacing = s; }
</del><ins>+ float wordSpacing() const { return m_wordSpacing; }
+ float letterSpacing() const { return m_letterSpacing; }
+ void setWordSpacing(float s) { m_wordSpacing = s; }
+ void setLetterSpacing(float s) { m_letterSpacing = s; }
</ins><span class="cx"> bool isFixedPitch() const;
</span><span class="cx"> bool isPrinterFont() const { return m_fontDescription.usePrinterFont(); }
</span><span class="cx"> bool isSVGFont() const { return primaryFont()->isSVGFont(); }
</span><span class="lines">@@ -304,8 +304,8 @@
</span><span class="cx">
</span><span class="cx"> FontDescription m_fontDescription;
</span><span class="cx"> mutable RefPtr<FontGlyphs> m_glyphs;
</span><del>- short m_letterSpacing;
- short m_wordSpacing;
</del><ins>+ float m_letterSpacing;
+ float m_wordSpacing;
</ins><span class="cx"> mutable bool m_useBackslashAsYenSymbol;
</span><span class="cx"> mutable unsigned m_typesettingFeatures : 2; // (TypesettingFeatures) Caches values computed from m_fontDescription.
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -1399,8 +1399,8 @@
</span><span class="cx"> float RenderStyle::computedFontSize() const { return fontDescription().computedSize(); }
</span><span class="cx"> int RenderStyle::fontSize() const { return inherited->font.pixelSize(); }
</span><span class="cx">
</span><del>-int RenderStyle::wordSpacing() const { return inherited->font.wordSpacing(); }
-int RenderStyle::letterSpacing() const { return inherited->font.letterSpacing(); }
</del><ins>+float RenderStyle::wordSpacing() const { return inherited->font.wordSpacing(); }
+float RenderStyle::letterSpacing() const { return inherited->font.letterSpacing(); }
</ins><span class="cx">
</span><span class="cx"> bool RenderStyle::setFontDescription(const FontDescription& v)
</span><span class="cx"> {
</span><span class="lines">@@ -1451,8 +1451,8 @@
</span><span class="cx"> return lh.value();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderStyle::setWordSpacing(int v) { inherited.access()->font.setWordSpacing(v); }
-void RenderStyle::setLetterSpacing(int v) { inherited.access()->font.setLetterSpacing(v); }
</del><ins>+void RenderStyle::setWordSpacing(float v) { inherited.access()->font.setWordSpacing(v); }
+void RenderStyle::setLetterSpacing(float v) { inherited.access()->font.setLetterSpacing(v); }
</ins><span class="cx">
</span><span class="cx"> void RenderStyle::setFontSize(float size)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (161520 => 161521)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h        2014-01-08 21:45:36 UTC (rev 161520)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h        2014-01-08 22:22:50 UTC (rev 161521)
</span><span class="lines">@@ -580,8 +580,8 @@
</span><span class="cx"> #else
</span><span class="cx"> TextDecorationStyle textDecorationStyle() const { return TextDecorationStyleSolid; }
</span><span class="cx"> #endif
</span><del>- int wordSpacing() const;
- int letterSpacing() const;
</del><ins>+ float wordSpacing() const;
+ float letterSpacing() const;
</ins><span class="cx">
</span><span class="cx"> float zoom() const { return visual->m_zoom; }
</span><span class="cx"> float effectiveZoom() const { return rareInheritedData->m_effectiveZoom; }
</span><span class="lines">@@ -1189,8 +1189,8 @@
</span><span class="cx">
</span><span class="cx"> void setWhiteSpace(EWhiteSpace v) { inherited_flags._white_space = v; }
</span><span class="cx">
</span><del>- void setWordSpacing(int);
- void setLetterSpacing(int);
</del><ins>+ void setWordSpacing(float);
+ void setLetterSpacing(float);
</ins><span class="cx">
</span><span class="cx"> void clearBackgroundLayers() { m_background.access()->m_background = FillLayer(BackgroundFillLayer); }
</span><span class="cx"> void inheritBackgroundLayers(const FillLayer& parent) { m_background.access()->m_background = parent; }
</span><span class="lines">@@ -1663,7 +1663,8 @@
</span><span class="cx"> static unsigned initialBorderWidth() { return 3; }
</span><span class="cx"> static unsigned short initialColumnRuleWidth() { return 3; }
</span><span class="cx"> static unsigned short initialOutlineWidth() { return 3; }
</span><del>- static int initialLetterWordSpacing() { return 0; }
</del><ins>+ static float initialLetterSpacing() { return 0; }
+ static float initialWordSpacing() { return 0; }
</ins><span class="cx"> static Length initialSize() { return Length(); }
</span><span class="cx"> static Length initialMinSize() { return Length(Fixed); }
</span><span class="cx"> static Length initialMaxSize() { return Length(Undefined); }
</span></span></pre>
</div>
</div>
</body>
</html>