[prev in list] [next in list] [prev in thread] [next in thread]
List: webkit-changes
Subject: [webkit-changes] [206679] trunk
From: mmaxfield () apple ! com
Date: 2016-09-30 21:59:15
Message-ID: 20160930215916.0D61F2E5F1C () svn ! webkit ! org
[Download RAW message or body]
[Attachment #2 (text/html)]
<!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>[206679] 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/206679">206679</a></dd> \
<dt>Author</dt> <dd>mmaxfield@apple.com</dd> <dt>Date</dt> <dd>2016-09-30 14:59:15 \
-0700 (Fri, 30 Sep 2016)</dd> </dl>
<h3>Log Message</h3>
<pre>Parse font-variation-settings
https://bugs.webkit.org/show_bug.cgi?id=162781
Reviewed by Simon Fraser.
Source/WebCore:
CSS Fonts level 4 [1] details the font-variation-settings property which allows \
variations to be applied to fonts which accept it. The property accepts a list of \
key/value pairs where the keys are four-character Ascii codes and the values are \
floating point values. The implementation uses font-feature-settings as a model, but \
with one big difference: font-variation-settings can be animated. The set of \
variation points are animated individually.
This font variations work is being done behind a run-time switch, which is settable \
from the Safari Develop menu.
Now that FontDescription is growing, I'd like to do an investigation into the \
possibility of moving some of the rare pieces of it into their own class to reduce \
memory. However, upon advice, this investigation will be fairly involved and should \
be done in its own bug.
Test: fast/text/variations/getComputedStyle.html
* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSAllInOne.cpp:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSFontVariationValue.cpp: Copied from \
Source/WebCore/platform/graphics/FontTaggedSettings.cpp. \
(WebCore::CSSFontVariationValue::CSSFontVariationValue): \
(WebCore::CSSFontVariationValue::customCSSText): \
(WebCore::CSSFontVariationValue::equals):
* css/CSSFontVariationValue.h: Copied from \
Source/WebCore/platform/graphics/FontTaggedSettings.cpp.
* css/CSSPropertyNames.in:
* css/CSSValue.cpp:
(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
* css/CSSValue.h:
(WebCore::CSSValue::isFontVariationValue):
(WebCore::CSSValue::isFontFeatureValue): Deleted.
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertFontVariationSettings):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyInitialFontVariationSettings):
(WebCore::StyleBuilderCustom::applyInheritFontVariationSettings):
(WebCore::StyleBuilderCustom::applyInheritFontFeatureSettings): Deleted.
* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseFontFeatureSettings):
(WebCore::CSSParser::parseFontVariationTag):
(WebCore::CSSParser::parseFontVariationSettings):
* css/parser/CSSParser.h:
* css/parser/CSSParserMode.h:
* platform/graphics/FontCache.h:
(WebCore::FontDescriptionKey::FontDescriptionKey):
(WebCore::FontDescriptionKey::operator==):
(WebCore::FontDescriptionKey::computeHash):
* platform/graphics/FontDescription.cpp:
* platform/graphics/FontDescription.h:
(WebCore::FontDescription::variationSettings):
(WebCore::FontDescription::setVariationSettings):
(WebCore::FontDescription::operator==):
(WebCore::FontDescription::featureSettings): Deleted.
(WebCore::FontDescription::setFeatureSettings): Deleted.
* platform/graphics/FontTaggedSettings.cpp:
(WebCore::FontVariationSettings::hash):
(WebCore::operator<<):
* platform/graphics/FontTaggedSettings.h:
LayoutTests:
* fast/text/variations/getComputedStyle-expected.txt: Added.
* fast/text/variations/getComputedStyle.html: Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorecssCSSAllInOnecpp">trunk/Source/WebCore/css/CSSAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkSourceWebCorecssCSSValuecpp">trunk/Source/WebCore/css/CSSValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueh">trunk/Source/WebCore/css/CSSValue.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderConverterh">trunk/Source/WebCore/css/StyleBuilderConverter.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderCustomh">trunk/Source/WebCore/css/StyleBuilderCustom.h</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParsercpp">trunk/Source/WebCore/css/parser/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserh">trunk/Source/WebCore/css/parser/CSSParser.h</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserModeh">trunk/Source/WebCore/css/parser/CSSParserMode.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontCacheh">trunk/Source/WebCore/platform/graphics/FontCache.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontDescriptioncpp">trunk/Source/WebCore/platform/graphics/FontDescription.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontDescriptionh">trunk/Source/WebCore/platform/graphics/FontDescription.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontTaggedSettingscpp">trunk/Source/WebCore/platform/graphics/FontTaggedSettings.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontTaggedSettingsh">trunk/Source/WebCore/platform/graphics/FontTaggedSettings.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/fast/text/variations/</li>
<li><a href="#trunkLayoutTestsfasttextvariationsgetComputedStyleexpectedtxt">trunk/LayoutTests/fast/text/variations/getComputedStyle-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasttextvariationsgetComputedStylehtml">trunk/LayoutTests/fast/text/variations/getComputedStyle.html</a></li>
<li><a href="#trunkSourceWebCorecssCSSFontVariationValuecpp">trunk/Source/WebCore/css/CSSFontVariationValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSFontVariationValueh">trunk/Source/WebCore/css/CSSFontVariationValue.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (206678 => \
206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog 2016-09-30 21:53:38 UTC (rev \
206678)
+++ trunk/LayoutTests/ChangeLog 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2016-09-30 Myles C. Maxfield <mmaxfield@apple.com>
+
+ Parse font-variation-settings
+ https://bugs.webkit.org/show_bug.cgi?id=162781
+
+ Reviewed by Simon Fraser.
+
+ * fast/text/variations/getComputedStyle-expected.txt: Added.
+ * fast/text/variations/getComputedStyle.html: Added.
+
</ins><span class="cx"> 2016-09-30 Ryan Haddad <ryanhaddad@apple.com>
</span><span class="cx">
</span><span class="cx"> Mark inspector/debugger/breakpoints tests as slow on \
release, skipped on debug. </span></span></pre></div>
<a id="trunkLayoutTestsfasttextvariationsgetComputedStyleexpectedtxt"></a>
<div class="addfile"><h4>Added: \
trunk/LayoutTests/fast/text/variations/getComputedStyle-expected.txt (0 => \
206679)</h4> <pre class="diff"><span>
<span class="info">--- \
trunk/LayoutTests/fast/text/variations/getComputedStyle-expected.txt \
(rev 0)
+++ trunk/LayoutTests/fast/text/variations/getComputedStyle-expected.txt 2016-09-30 \
21:59:15 UTC (rev 206679) </span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+PASS window.getComputedStyle(document.getElementById('test0')).getPropertyValue('font-variation-settings') \
is "'wght' 2" +PASS \
window.getComputedStyle(document.getElementById('test1')).getPropertyValue('font-variation-settings') \
is "'wght' 3" +PASS \
window.getComputedStyle(document.getElementById('test2')).getPropertyValue('font-variation-settings') \
is "'wght' 2, 'wdth' 1.2" +PASS \
window.getComputedStyle(document.getElementById('test2')).getPropertyValue('font-variation-settings') \
is window.getComputedStyle(document.getElementById('test3')).getPropertyValue('font-variation-settings')
+PASS window.getComputedStyle(document.getElementById('test4')).getPropertyValue('font-variation-settings') \
is "normal" +PASS \
window.getComputedStyle(document.getElementById('test5')).getPropertyValue('font-variation-settings') \
is "normal" +PASS \
window.getComputedStyle(document.getElementById('test6')).getPropertyValue('font-variation-settings') \
is "normal" +PASS \
window.getComputedStyle(document.getElementById('test7')).getPropertyValue('font-variation-settings') \
is "'wght' 27" +PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins><span class="cx">Property changes on: \
trunk/LayoutTests/fast/text/variations/getComputedStyle-expected.txt </span><span \
class="cx">___________________________________________________________________ \
</span></span></pre></div> <a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+native
</ins><span class="cx">\ No newline at end of property
</span><a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<ins>+Author Date Id Rev URL
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsfasttextvariationsgetComputedStylehtml"></a>
<div class="addfile"><h4>Added: \
trunk/LayoutTests/fast/text/variations/getComputedStyle.html (0 => 206679)</h4> <pre \
class="diff"><span> <span class="info">--- \
trunk/LayoutTests/fast/text/variations/getComputedStyle.html \
(rev 0)
+++ trunk/LayoutTests/fast/text/variations/getComputedStyle.html 2016-09-30 21:59:15 \
UTC (rev 206679) </span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<script>
+if (window.internals)
+ window.internals.settings.setVariationFontsEnabled(true);
+</script>
+<script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+<div id="test0" style="font-family: 'Skia'; \
font-variation-settings: 'wght' 2;"></div> +<div \
id="test1" style="font-family: 'Skia'; font-variation-settings: 'wght' \
2, 'wght' 3;"></div> +<div id="test2" \
style="font-family: 'Skia'; font-variation-settings: 'wght' 2, 'wdth' \
1.2;"></div> +<div id="test3" style="font-family: \
'Skia'; font-variation-settings: 'wdth' 1.2, 'wght' 2;"></div> +<div \
id="test4" style="font-family: 'Skia'; font-variation-settings: \
normal;"></div> +<div id="test5" style="font-family: \
'Skia'; font-variation-settings: 'abcde' 3;"></div> +<div \
id="test6" style="font-family: 'Skia'; font-variation-settings: \
'abc한국어e' 3;"></div> +<div id="test7" \
style="font-family: 'Skia'; font-variation-settings: 'wght' \
27;"></div> +<script>
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test0')).getPropertyValue('font-variation-settings')", \
"'wght' 2"); \
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test1')).getPropertyValue('font-variation-settings')", \
"'wght' 3"); \
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test2')).getPropertyValue('font-variation-settings')", \
"'wght' 2, 'wdth' 1.2"); \
+shouldBe("window.getComputedStyle(document.getElementById('test2')).getPropertyValue('font-variation-settings')", \
"window.getComputedStyle(document.getElementById('test3')).getPropertyValue('font-variation-settings')");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test4')).getPropertyValue('font-variation-settings')", \
"normal"); \
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test5')).getPropertyValue('font-variation-settings')", \
"normal"); \
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test6')).getPropertyValue('font-variation-settings')", \
"normal"); \
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test7')).getPropertyValue('font-variation-settings')", \
"'wght' 27"); +</script>
+<script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (206678 => \
206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt 2016-09-30 21:53:38 UTC \
(rev 206678)
+++ trunk/Source/WebCore/CMakeLists.txt 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -1266,6 +1266,7 @@
</span><span class="cx"> css/CSSFontFeatureValue.cpp
</span><span class="cx"> css/CSSFontSelector.cpp
</span><span class="cx"> css/CSSFontValue.cpp
</span><ins>+ css/CSSFontVariationValue.cpp
</ins><span class="cx"> css/CSSFunctionValue.cpp
</span><span class="cx"> css/CSSGradientValue.cpp
</span><span class="cx"> css/CSSGridAutoRepeatValue.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (206678 => \
206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog 2016-09-30 21:53:38 UTC (rev \
206678)
+++ trunk/Source/WebCore/ChangeLog 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -1,5 +1,77 @@
</span><span class="cx"> 2016-09-30 Myles C. Maxfield <mmaxfield@apple.com>
</span><span class="cx">
</span><ins>+ Parse font-variation-settings
+ https://bugs.webkit.org/show_bug.cgi?id=162781
+
+ Reviewed by Simon Fraser.
+
+ CSS Fonts level 4 [1] details the font-variation-settings property which \
allows variations + to be applied to fonts which accept it. The property \
accepts a list of key/value + pairs where the keys are four-character Ascii \
codes and the values are floating + point values. The implementation uses \
font-feature-settings as a model, but with one + big difference: \
font-variation-settings can be animated. The set of variation points + are \
animated individually. +
+ This font variations work is being done behind a run-time switch, which is \
settable from + the Safari Develop menu.
+
+ Now that FontDescription is growing, I'd like to do an investigation into \
the possibility of + moving some of the rare pieces of it into their own class \
to reduce memory. However, upon + advice, this investigation will be fairly \
involved and should be done in its own bug. +
+ Test: fast/text/variations/getComputedStyle.html
+
+ * CMakeLists.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * css/CSSAllInOne.cpp:
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::ComputedStyleExtractor::propertyValue):
+ * css/CSSFontVariationValue.cpp: Copied from \
Source/WebCore/platform/graphics/FontTaggedSettings.cpp. + \
(WebCore::CSSFontVariationValue::CSSFontVariationValue): + \
(WebCore::CSSFontVariationValue::customCSSText): + \
(WebCore::CSSFontVariationValue::equals): + * css/CSSFontVariationValue.h: \
Copied from Source/WebCore/platform/graphics/FontTaggedSettings.cpp. + * \
css/CSSPropertyNames.in: + * css/CSSValue.cpp:
+ (WebCore::CSSValue::equals):
+ (WebCore::CSSValue::cssText):
+ (WebCore::CSSValue::destroy):
+ * css/CSSValue.h:
+ (WebCore::CSSValue::isFontVariationValue):
+ (WebCore::CSSValue::isFontFeatureValue): Deleted.
+ * css/StyleBuilderConverter.h:
+ (WebCore::StyleBuilderConverter::convertFontVariationSettings):
+ * css/StyleBuilderCustom.h:
+ (WebCore::StyleBuilderCustom::applyInitialFontVariationSettings):
+ (WebCore::StyleBuilderCustom::applyInheritFontVariationSettings):
+ (WebCore::StyleBuilderCustom::applyInheritFontFeatureSettings): Deleted.
+ * css/parser/CSSParser.cpp:
+ (WebCore::CSSParserContext::CSSParserContext):
+ (WebCore::operator==):
+ (WebCore::CSSParser::parseValue):
+ (WebCore::CSSParser::parseFontFeatureSettings):
+ (WebCore::CSSParser::parseFontVariationTag):
+ (WebCore::CSSParser::parseFontVariationSettings):
+ * css/parser/CSSParser.h:
+ * css/parser/CSSParserMode.h:
+ * platform/graphics/FontCache.h:
+ (WebCore::FontDescriptionKey::FontDescriptionKey):
+ (WebCore::FontDescriptionKey::operator==):
+ (WebCore::FontDescriptionKey::computeHash):
+ * platform/graphics/FontDescription.cpp:
+ * platform/graphics/FontDescription.h:
+ (WebCore::FontDescription::variationSettings):
+ (WebCore::FontDescription::setVariationSettings):
+ (WebCore::FontDescription::operator==):
+ (WebCore::FontDescription::featureSettings): Deleted.
+ (WebCore::FontDescription::setFeatureSettings): Deleted.
+ * platform/graphics/FontTaggedSettings.cpp:
+ (WebCore::FontVariationSettings::hash):
+ (WebCore::operator<<):
+ * platform/graphics/FontTaggedSettings.h:
+
+2016-09-30 Myles C. Maxfield <mmaxfield@apple.com>
+
</ins><span class="cx"> Followup patch to r206664
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=162774
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: \
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (206678 => 206679)</h4> <pre \
class="diff"><span> <span class="info">--- \
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2016-09-30 21:53:38 UTC (rev \
206678)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2016-09-30 21:59:15 UTC \
(rev 206679) </span><span class="lines">@@ -5469,6 +5469,8 @@
</span><span class="cx"> C105DA620F3AA68F001DD44F /* TextEncodingDetectorICU.cpp in \
Sources */ = {isa = PBXBuildFile; fileRef = C105DA610F3AA68F001DD44F /* \
TextEncodingDetectorICU.cpp */; }; </span><span class="cx"> \
C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */ = {isa = \
PBXBuildFile; fileRef = C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */; }; \
</span><span class="cx"> C2015C0A1BE6FEB200822389 /* FontVariantBuilder.h in \
Headers */ = {isa = PBXBuildFile; fileRef = C2015C091BE6FE2C00822389 /* \
FontVariantBuilder.h */; }; </span><ins>+ C21DF2E91D9E4E9900F5B24C /* \
CSSFontVariationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = \
C21DF2E71D9E4E9900F5B24C /* CSSFontVariationValue.cpp */; }; \
+ C21DF2EA1D9E4E9900F5B24C /* CSSFontVariationValue.h in Headers */ = {isa = \
PBXBuildFile; fileRef = C21DF2E81D9E4E9900F5B24C /* CSSFontVariationValue.h */; }; \
</ins><span class="cx"> C26017A31C72DC9900F74A16 /* CSSFontFaceSet.cpp in Sources \
*/ = {isa = PBXBuildFile; fileRef = C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp \
*/; }; </span><span class="cx"> C26017A41C72DC9900F74A16 /* CSSFontFaceSet.h in \
Headers */ = {isa = PBXBuildFile; fileRef = C26017A21C72DC9900F74A16 /* \
CSSFontFaceSet.h */; }; </span><span class="cx"> C280833F1C6DC26F001451B6 /* \
JSFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = C280833E1C6DC22C001451B6 \
/* JSFontFace.h */; }; </span><span class="lines">@@ -12970,6 +12972,8 @@
</span><span class="cx"> C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */ \
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; \
path = TextEncodingDetectorICU.cpp; sourceTree = "<group>"; }; \
</span><span class="cx"> C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */ = \
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \
TextEncodingDetector.h; sourceTree = "<group>"; }; </span><span \
class="cx"> C2015C091BE6FE2C00822389 /* FontVariantBuilder.h */ = {isa = \
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontVariantBuilder.h; \
sourceTree = "<group>"; }; </span><ins>+ C21DF2E71D9E4E9900F5B24C /* \
CSSFontVariationValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; \
lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontVariationValue.cpp; sourceTree \
= "<group>"; }; + C21DF2E81D9E4E9900F5B24C /* \
CSSFontVariationValue.h */ = {isa = PBXFileReference; fileEncoding = 4; \
lastKnownFileType = sourcecode.c.h; path = CSSFontVariationValue.h; sourceTree = \
"<group>"; }; </ins><span class="cx"> C24685131A148E1800811792 /* \
CoreGraphicsSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = \
sourcecode.c.h; path = CoreGraphicsSPI.h; sourceTree = "<group>"; }; \
</span><span class="cx"> C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */ = {isa = \
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = \
CSSFontFaceSet.cpp; sourceTree = "<group>"; }; </span><span \
class="cx"> C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */ = {isa = \
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \
CSSFontFaceSet.h; sourceTree = "<group>"; }; </span><span \
class="lines">@@ -22600,6 +22604,8 @@ </span><span class="cx"> \
3FFFF9A6159D9A550020BBD5 /* WebKitCSSViewportRule.cpp */, </span><span class="cx"> \
3FFFF9A7159D9A550020BBD5 /* WebKitCSSViewportRule.h */, </span><span class="cx"> \
3F2B33E3165ABD3500E3987C /* WebKitCSSViewportRule.idl */, \
</span><ins>+ C21DF2E71D9E4E9900F5B24C /* CSSFontVariationValue.cpp */, \
+ C21DF2E81D9E4E9900F5B24C /* CSSFontVariationValue.h */, </ins><span class="cx"> \
); </span><span class="cx"> path = css;
</span><span class="cx"> sourceTree = "<group>";
</span><span class="lines">@@ -24709,6 +24715,7 @@
</span><span class="cx"> A8D223FE16B52E4E00157288 /* HTMLResourcePreloader.h in \
Headers */, </span><span class="cx"> A871DC250A15205700B12A68 /* \
HTMLScriptElement.h in Headers */, </span><span class="cx"> \
977B3875122883E900B81FF8 /* HTMLScriptRunner.h in Headers */, \
</span><ins>+ C21DF2EA1D9E4E9900F5B24C /* CSSFontVariationValue.h in Headers */, \
</ins><span class="cx"> 977B3876122883E900B81FF8 /* HTMLScriptRunnerHost.h in \
Headers */, </span><span class="cx"> A81369D8097374F600D74463 /* \
HTMLSelectElement.h in Headers */, </span><span class="cx"> \
9B69D3B51B98FFE900E3512B /* HTMLSlotElement.h in Headers */, </span><span \
class="lines">@@ -28470,6 +28477,7 @@ </span><span class="cx"> \
DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */, </span><span \
class="cx"> 517138EF1BED1D1A000D5F01 /* IndexKey.cpp in Sources */, </span><span \
class="cx"> 51EEAA731BEFFAB100218008 /* IndexValueEntry.cpp in Sources */, \
</span><ins>+ C21DF2E91D9E4E9900F5B24C /* CSSFontVariationValue.cpp in Sources */, \
</ins><span class="cx"> 517138F71BF128BB000D5F01 /* IndexValueStore.cpp in \
Sources */, </span><span class="cx"> A8CFF5E60A155A05000A4234 /* InlineBox.cpp in \
Sources */, </span><span class="cx"> B57CB52D182A3EED0079A647 /* \
InlineElementBox.cpp in Sources */, </span></span></pre></div>
<a id="trunkSourceWebCorecssCSSAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSAllInOne.cpp (206678 \
=> 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSAllInOne.cpp 2016-09-30 21:53:38 \
UTC (rev 206678)
+++ trunk/Source/WebCore/css/CSSAllInOne.cpp 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx"> #include "CSSFontFeatureValue.cpp"
</span><span class="cx"> #include "CSSFontSelector.cpp"
</span><span class="cx"> #include "CSSFontValue.cpp"
</span><ins>+#include "CSSFontVariationValue.cpp"
</ins><span class="cx"> #include "CSSFunctionValue.cpp"
</span><span class="cx"> #include "CSSGradientValue.cpp"
</span><span class="cx"> #include "CSSGridLineNamesValue.cpp"
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: \
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (206678 => 206679)</h4> <pre \
class="diff"><span> <span class="info">--- \
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2016-09-30 21:53:38 UTC (rev \
206678)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2016-09-30 21:59:15 UTC \
(rev 206679) </span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include "CSSCustomPropertyValue.h"
</span><span class="cx"> #include "CSSFontFeatureValue.h"
</span><span class="cx"> #include "CSSFontValue.h"
</span><ins>+#include "CSSFontVariationValue.h"
</ins><span class="cx"> #include "CSSFunctionValue.h"
</span><span class="cx"> #include "CSSLineBoxContainValue.h"
</span><span class="cx"> #include "CSSParser.h"
</span><span class="lines">@@ -62,6 +63,7 @@
</span><span class="cx"> #include "RenderBox.h"
</span><span class="cx"> #include "RenderStyle.h"
</span><span class="cx"> #include "SVGElement.h"
</span><ins>+#include "Settings.h"
</ins><span class="cx"> #include "ShapeValue.h"
</span><span class="cx"> #include "StyleInheritedData.h"
</span><span class="cx"> #include "StyleProperties.h"
</span><span class="lines">@@ -2879,6 +2881,18 @@
</span><span class="cx"> \
list->append(CSSFontFeatureValue::create(FontTag(feature.tag()), \
feature.value())); </span><span class="cx"> return list;
</span><span class="cx"> }
</span><ins>+ case CSSPropertyFontVariationSettings: {
+ if (styledNode->document().settings() && \
styledNode->document().settings()->variationFontsEnabled()) { + \
const FontVariationSettings& variationSettings = \
style->fontDescription().variationSettings(); + if \
(variationSettings.isEmpty()) + return \
cssValuePool.createIdentifierValue(CSSValueNormal); + \
RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); + \
for (auto& feature : variationSettings) + \
list->append(CSSFontVariationValue::create(feature.tag(), feature.value())); + \
return list; + }
+ break;
+ }
</ins><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx"> case CSSPropertyGridAutoFlow: {
</span><span class="cx"> RefPtr<CSSValueList> list = \
CSSValueList::createSpaceSeparated(); </span></span></pre></div>
<a id="trunkSourceWebCorecssCSSFontVariationValuecppfromrev206678trunkSourceWebCoreplatformgraphicsFontTaggedSettingscpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/css/CSSFontVariationValue.cpp \
(from rev 206678, trunk/Source/WebCore/platform/graphics/FontTaggedSettings.cpp) (0 \
=> 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSFontVariationValue.cpp \
(rev 0)
+++ trunk/Source/WebCore/css/CSSFontVariationValue.cpp 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSFontVariationValue.h"
+
+#include <wtf/text/StringBuilder.h>
+
+namespace WebCore {
+
+CSSFontVariationValue::CSSFontVariationValue(FontTag tag, float value)
+ : CSSValue(FontVariationClass)
+ , m_tag(tag)
+ , m_value(value)
+{
+}
+
+String CSSFontVariationValue::customCSSText() const
+{
+ StringBuilder builder;
+ builder.append('\'');
+ for (char c : m_tag)
+ builder.append(c);
+ builder.appendLiteral("' ");
+ builder.appendNumber(m_value);
+ return builder.toString();
+}
+
+bool CSSFontVariationValue::equals(const CSSFontVariationValue& other) const
+{
+ return m_tag == other.m_tag && m_value == other.m_value;
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorecssCSSFontVariationValuehfromrev206678trunkSourceWebCoreplatformgraphicsFontTaggedSettingscpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/css/CSSFontVariationValue.h \
(from rev 206678, trunk/Source/WebCore/platform/graphics/FontTaggedSettings.cpp) (0 \
=> 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSFontVariationValue.h \
(rev 0)
+++ trunk/Source/WebCore/css/CSSFontVariationValue.h 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "CSSValue.h"
+#include "FontTaggedSettings.h"
+
+namespace WebCore {
+
+class CSSFontVariationValue final : public CSSValue {
+public:
+ static Ref<CSSFontVariationValue> create(FontTag tag, float value)
+ {
+ return adoptRef(*new CSSFontVariationValue(tag, value));
+ }
+
+ const FontTag& tag() const { return m_tag; }
+ float value() const { return m_value; }
+ String customCSSText() const;
+
+ bool equals(const CSSFontVariationValue&) const;
+
+private:
+ CSSFontVariationValue(FontTag, float);
+
+ FontTag m_tag;
+ const float m_value;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CSS_VALUE(CSSFontVariationValue, isFontVariationValue())
</ins></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPropertyNames.in \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -105,6 +105,7 @@
</span><span class="cx"> font-weight [Inherited, Custom=All]
</span><span class="cx"> text-rendering [Inherited, FontProperty, \
NameForMethods=TextRenderingMode] </span><span class="cx"> font-feature-settings \
[Inherited, FontProperty, Custom=Initial|Inherit, Converter=FontFeatureSettings, \
NameForMethods=FeatureSettings] </span><ins>+font-variation-settings [Inherited, \
FontProperty, Custom=Initial|Inherit, Converter=FontVariationSettings, \
NameForMethods=VariationSettings] </ins><span class="cx"> -webkit-font-kerning \
[Inherited, FontProperty, NameForMethods=Kerning] </span><span class="cx"> \
font-kerning = -webkit-font-kerning </span><span class="cx"> -webkit-font-smoothing \
[Inherited, FontProperty] </span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValue.cpp (206678 => \
206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValue.cpp 2016-09-30 21:53:38 UTC \
(rev 206678)
+++ trunk/Source/WebCore/css/CSSValue.cpp 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> #include "CSSFontFaceSrcValue.h"
</span><span class="cx"> #include "CSSFontFeatureValue.h"
</span><span class="cx"> #include "CSSFontValue.h"
</span><ins>+#include "CSSFontVariationValue.h"
</ins><span class="cx"> #include "CSSFunctionValue.h"
</span><span class="cx"> #include "CSSGradientValue.h"
</span><span class="cx"> #include "CSSImageSetValue.h"
</span><span class="lines">@@ -176,6 +177,8 @@
</span><span class="cx"> return \
compareCSSValues<CSSFontFaceSrcValue>(*this, other); </span><span class="cx"> \
case FontFeatureClass: </span><span class="cx"> return \
compareCSSValues<CSSFontFeatureValue>(*this, other); </span><ins>+ case \
FontVariationClass: + return \
compareCSSValues<CSSFontVariationValue>(*this, other); </ins><span class="cx"> \
case FunctionClass: </span><span class="cx"> return \
compareCSSValues<CSSFunctionValue>(*this, other); </span><span class="cx"> \
case LinearGradientClass: </span><span class="lines">@@ -282,6 +285,8 @@
</span><span class="cx"> return \
downcast<CSSFontFaceSrcValue>(*this).customCSSText(); </span><span class="cx"> \
case FontFeatureClass: </span><span class="cx"> return \
downcast<CSSFontFeatureValue>(*this).customCSSText(); </span><ins>+ case \
FontVariationClass: + return \
downcast<CSSFontVariationValue>(*this).customCSSText(); </ins><span class="cx"> \
case FunctionClass: </span><span class="cx"> return \
downcast<CSSFunctionValue>(*this).customCSSText(); </span><span class="cx"> \
case LinearGradientClass: </span><span class="lines">@@ -396,6 +401,9 @@
</span><span class="cx"> case FontFeatureClass:
</span><span class="cx"> delete downcast<CSSFontFeatureValue>(this);
</span><span class="cx"> return;
</span><ins>+ case FontVariationClass:
+ delete downcast<CSSFontVariationValue>(this);
+ return;
</ins><span class="cx"> case FunctionClass:
</span><span class="cx"> delete downcast<CSSFunctionValue>(this);
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValue.h (206678 => \
206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValue.h 2016-09-30 21:53:38 UTC \
(rev 206678)
+++ trunk/Source/WebCore/css/CSSValue.h 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -83,6 +83,7 @@
</span><span class="cx"> bool isVariableValue() const { return m_classType == \
VariableClass; } </span><span class="cx"> bool isFunctionValue() const { return \
m_classType == FunctionClass; } </span><span class="cx"> bool \
isFontFeatureValue() const { return m_classType == FontFeatureClass; } </span><ins>+ \
bool isFontVariationValue() const { return m_classType == FontVariationClass; } \
</ins><span class="cx"> bool isFontFaceSrcValue() const { return m_classType == \
FontFaceSrcClass; } </span><span class="cx"> bool isFontValue() const { return \
m_classType == FontClass; } </span><span class="cx"> bool isImageGeneratorValue() \
const { return m_classType >= CanvasClass && m_classType <= \
RadialGradientClass; } </span><span class="lines">@@ -169,6 +170,7 @@
</span><span class="cx"> AspectRatioClass,
</span><span class="cx"> BorderImageSliceClass,
</span><span class="cx"> FontFeatureClass,
</span><ins>+ FontVariationClass,
</ins><span class="cx"> FontClass,
</span><span class="cx"> FontFaceSrcClass,
</span><span class="cx"> FunctionClass,
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderConverterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderConverter.h \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderConverter.h 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/css/StyleBuilderConverter.h 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include "CSSCalculationValue.h"
</span><span class="cx"> #include "CSSContentDistributionValue.h"
</span><span class="cx"> #include "CSSFontFeatureValue.h"
</span><ins>+#include "CSSFontVariationValue.h"
</ins><span class="cx"> #include "CSSFunctionValue.h"
</span><span class="cx"> #include "CSSGridAutoRepeatValue.h"
</span><span class="cx"> #include "CSSGridLineNamesValue.h"
</span><span class="lines">@@ -120,6 +121,7 @@
</span><span class="cx"> static bool convertOverflowScrolling(StyleResolver&, \
CSSValue&); </span><span class="cx"> #endif
</span><span class="cx"> static FontFeatureSettings \
convertFontFeatureSettings(StyleResolver&, CSSValue&); </span><ins>+ \
static FontVariationSettings convertFontVariationSettings(StyleResolver&, \
CSSValue&); </ins><span class="cx"> static SVGLength \
convertSVGLength(StyleResolver&, CSSValue&); </span><span class="cx"> \
static Vector<SVGLength> convertSVGLengthVector(StyleResolver&, \
CSSValue&); </span><span class="cx"> static Vector<SVGLength> \
convertStrokeDashArray(StyleResolver&, CSSValue&); </span><span \
class="lines">@@ -1144,6 +1146,21 @@ </span><span class="cx"> return settings;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+inline FontVariationSettings \
StyleBuilderConverter::convertFontVariationSettings(StyleResolver&, CSSValue& \
value) +{
+ if (is<CSSPrimitiveValue>(value)) {
+ ASSERT(downcast<CSSPrimitiveValue>(value).getValueID() == \
CSSValueNormal); + return { };
+ }
+
+ FontVariationSettings settings;
+ for (auto& item : downcast<CSSValueList>(value)) {
+ auto& feature = downcast<CSSFontVariationValue>(item.get());
+ settings.insert({ feature.tag(), feature.value() });
+ }
+ return settings;
+}
+
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> inline bool \
StyleBuilderConverter::convertTouchCallout(StyleResolver&, CSSValue& value) \
</span><span class="cx"> { </span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderCustom.h \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderCustom.h 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/css/StyleBuilderCustom.h 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -112,6 +112,8 @@
</span><span class="cx"> static void \
applyInheritWebkitMaskImage(StyleResolver&) { } </span><span class="cx"> \
static void applyInitialFontFeatureSettings(StyleResolver&) { } </span><span \
class="cx"> static void applyInheritFontFeatureSettings(StyleResolver&) { } \
</span><ins>+ static void applyInitialFontVariationSettings(StyleResolver&) { \
} + static void applyInheritFontVariationSettings(StyleResolver&) { }
</ins><span class="cx">
</span><span class="cx"> // Custom handling of inherit + value setting only.
</span><span class="cx"> static void applyInheritDisplay(StyleResolver&);
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParser.cpp \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParser.cpp 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/css/parser/CSSParser.cpp 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> #include "CSSFontFaceSrcValue.h"
</span><span class="cx"> #include "CSSFontFeatureValue.h"
</span><span class="cx"> #include "CSSFontValue.h"
</span><ins>+#include "CSSFontVariationValue.h"
</ins><span class="cx"> #include "CSSFunctionValue.h"
</span><span class="cx"> #include "CSSGradientValue.h"
</span><span class="cx"> #include "CSSImageSetValue.h"
</span><span class="lines">@@ -271,6 +272,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> springTimingFunctionEnabled = \
settings->springTimingFunctionEnabled(); </span><span class="cx"> \
useNewParser = settings->newCSSParserEnabled(); </span><ins>+ \
variationFontsEnabled = settings->variationFontsEnabled(); </ins><span class="cx"> \
} </span><span class="cx">
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="lines">@@ -293,7 +295,8 @@
</span><span class="cx"> && a.needsSiteSpecificQuirks == \
b.needsSiteSpecificQuirks </span><span class="cx"> && \
a.enforcesCSSMIMETypeInNoQuirksMode == b.enforcesCSSMIMETypeInNoQuirksMode \
</span><span class="cx"> && \
a.useLegacyBackgroundSizeShorthandBehavior == \
b.useLegacyBackgroundSizeShorthandBehavior </span><del>- && \
a.springTimingFunctionEnabled == b.springTimingFunctionEnabled; </del><ins>+ \
&& a.springTimingFunctionEnabled == b.springTimingFunctionEnabled + \
&& a.variationFontsEnabled == b.variationFontsEnabled; </ins><span \
class="cx"> } </span><span class="cx">
</span><span class="cx"> CSSParser::CSSParser(const CSSParserContext& context)
</span><span class="lines">@@ -2971,6 +2974,14 @@
</span><span class="cx"> else
</span><span class="cx"> return parseFontFeatureSettings(important);
</span><span class="cx"> break;
</span><ins>+ case CSSPropertyFontVariationSettings:
+ if (m_context.variationFontsEnabled) {
+ if (id == CSSValueNormal)
+ validPrimitive = true;
+ else
+ return parseFontVariationSettings(important);
+ }
+ break;
</ins><span class="cx"> case CSSPropertyFontVariantLigatures:
</span><span class="cx"> if (id == CSSValueNormal || id == CSSValueNone)
</span><span class="cx"> validPrimitive = true;
</span><span class="lines">@@ -10625,6 +10636,60 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool CSSParser::parseFontVariationTag(CSSValueList& settings)
+{
+ CSSParserValue* value = m_valueList->current();
+ // Feature tag name comes first
+ if (value->unit != CSSPrimitiveValue::CSS_STRING)
+ return false;
+ FontTag tag;
+ if (value->string.length() != tag.size())
+ return false;
+ for (unsigned i = 0; i < tag.size(); ++i) {
+ // Limits the range of characters to 0x20-0x7E, following the tag name rules \
defiend in the OpenType specification. + UChar character = \
value->string[i]; + if (character < 0x20 || character > 0x7E)
+ return false;
+ tag[i] = toASCIILower(character);
+ }
+
+ value = m_valueList->next();
+ if (!value || value->unit != CSSPrimitiveValue::CSS_NUMBER)
+ return false;
+
+ float tagValue = value->fValue;
+ m_valueList->next();
+
+ settings.append(CSSFontVariationValue::create(tag, tagValue));
+ return true;
+}
+
+bool CSSParser::parseFontVariationSettings(bool important)
+{
+ if (m_valueList->size() == 1 && m_valueList->current()->id == \
CSSValueNormal) { + auto normalValue = \
CSSValuePool::singleton().createIdentifierValue(CSSValueNormal); + \
m_valueList->next(); + addProperty(CSSPropertyFontVariationSettings, \
WTFMove(normalValue), important); + return true;
+ }
+
+ auto settings = CSSValueList::createCommaSeparated();
+ for (CSSParserValue* value = m_valueList->current(); value; value = \
m_valueList->next()) { + if (!parseFontVariationTag(settings))
+ return false;
+
+ // If the list isn't parsed fully, the current value should be comma.
+ value = m_valueList->current();
+ if (value && !isComma(value))
+ return false;
+ }
+ if (settings->length()) {
+ addProperty(CSSPropertyFontVariationSettings, WTFMove(settings), important);
+ return true;
+ }
+ return false;
+}
+
</ins><span class="cx"> bool CSSParser::parseFontVariantLigatures(bool important, \
bool unknownIsFailure, bool implicit) </span><span class="cx"> {
</span><span class="cx"> auto values = CSSValueList::createSpaceSeparated();
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParser.h \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParser.h 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/css/parser/CSSParser.h 2016-09-30 21:59:15 UTC (rev 206679)
</span><span class="lines">@@ -364,6 +364,9 @@
</span><span class="cx"> bool parseFontFeatureTag(CSSValueList&);
</span><span class="cx"> bool parseFontFeatureSettings(bool important);
</span><span class="cx">
</span><ins>+ bool parseFontVariationTag(CSSValueList&);
+ bool parseFontVariationSettings(bool important);
+
</ins><span class="cx"> bool parseFlowThread(CSSPropertyID, bool important);
</span><span class="cx"> bool parseRegionThread(CSSPropertyID, bool important);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParserModeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParserMode.h \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParserMode.h 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/css/parser/CSSParserMode.h 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -104,6 +104,7 @@
</span><span class="cx"> bool useLegacyBackgroundSizeShorthandBehavior { false };
</span><span class="cx"> bool springTimingFunctionEnabled { false };
</span><span class="cx"> bool useNewParser { false };
</span><ins>+ bool variationFontsEnabled { false };
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> bool operator==(const CSSParserContext&, const \
CSSParserContext&); </span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontCache.h \
(206678 => 206679)</h4> <pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontCache.h 2016-09-30 \
21:53:38 UTC (rev 206678)
+++ trunk/Source/WebCore/platform/graphics/FontCache.h 2016-09-30 21:59:15 UTC (rev \
206679) </span><span class="lines">@@ -76,6 +76,7 @@
</span><span class="cx"> , m_weight(description.weight())
</span><span class="cx"> , m_flags(makeFlagsKey(description))
</span><span class="cx"> , m_featureSettings(description.featureSettings())
</span><ins>+ , m_variationSettings(description.variationSettings())
</ins><span class="cx"> { }
</span><span class="cx">
</span><span class="cx"> explicit \
FontDescriptionKey(WTF::HashTableDeletedValueType) </span><span class="lines">@@ \
-85,7 +86,7 @@ </span><span class="cx"> bool operator==(const \
FontDescriptionKey& other) const </span><span class="cx"> {
</span><span class="cx"> return m_size == other.m_size && m_weight == \
other.m_weight && m_flags == other.m_flags </span><del>- \
&& m_featureSettings == other.m_featureSettings; </del><ins>+ \
&& m_featureSettings == other.m_featureSettings && \
m_variationSettings == other.m_variationSettings; </ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool operator!=(const FontDescriptionKey& other) \
const </span><span class="lines">@@ -103,6 +104,7 @@
</span><span class="cx"> for (unsigned flagItem : m_flags)
</span><span class="cx"> hasher.add(flagItem);
</span><span class="cx"> hasher.add(m_featureSettings.hash());
</span><ins>+ hasher.add(m_variationSettings.hash());
</ins><span class="cx"> return hasher.hash();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -143,6 +145,7 @@
</span><span class="cx"> unsigned m_weight { 0 };
</span><span class="cx"> std::array<unsigned, 2> m_flags {{ 0, 0 }};
</span><span class="cx"> FontFeatureSettings m_featureSettings;
</span><ins>+ FontVariationSettings m_variationSettings;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> struct FontDescriptionKeyHash {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontDescriptioncpp"></a>
<div class="modfile"><h4>Modified: \
trunk/Source/WebCore/platform/graphics/FontDescription.cpp (206678 => 206679)</h4> \
<pre class="diff"><span> <span class="info">--- \
trunk/Source/WebCore/platform/graphics/FontDescription.cpp 2016-09-30 21:53:38 UTC \
(rev 206678)
+++ trunk/Source/WebCore/platform/graphics/FontDescription.cpp 2016-09-30 21:59:15 \
UTC (rev 206679) </span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> struct SameSizeAsFontCascadeDescription {
</span><del>- Vector<void*> vector;
</del><ins>+ Vector<void*> vector[2];
</ins><span class="cx"> AtomicString string;
</span><span class="cx"> float size;
</span><span class="cx"> unsigned bitfields1;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontDescriptionh"></a>
<div class="modfile"><h4>Modified: \
trunk/Source/WebCore/platform/graphics/FontDescription.h (206678 => 206679)</h4> <pre \
class="diff"><span> <span class="info">--- \
trunk/Source/WebCore/platform/graphics/FontDescription.h 2016-09-30 21:53:38 UTC (rev \
206678)
+++ trunk/Source/WebCore/platform/graphics/FontDescription.h 2016-09-30 21:59:15 UTC \
(rev 206679) </span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx"> NonCJKGlyphOrientation nonCJKGlyphOrientation() const { \
return static_cast<NonCJKGlyphOrientation>(m_nonCJKGlyphOrientation); } \
</span><span class="cx"> FontWidthVariant widthVariant() const { return \
static_cast<FontWidthVariant>(m_widthVariant); } </span><span class="cx"> \
const FontFeatureSettings& featureSettings() const { return m_featureSettings; } \
</span><ins>+ const FontVariationSettings& variationSettings() const { return \
m_variationSettings; } </ins><span class="cx"> FontSynthesis fontSynthesis() \
const { return static_cast<FontSynthesis>(m_fontSynthesis); } </span><span \
class="cx"> FontVariantLigatures variantCommonLigatures() const { return \
static_cast<FontVariantLigatures>(m_variantCommonLigatures); } </span><span \
class="cx"> FontVariantLigatures variantDiscretionaryLigatures() const { return \
static_cast<FontVariantLigatures>(m_variantDiscretionaryLigatures); } \
</span><span class="lines">@@ -105,6 +106,7 @@ </span><span class="cx"> void \
setWidthVariant(FontWidthVariant widthVariant) { m_widthVariant = widthVariant; } // \
Make sure new callers of this sync with FontPlatformData::isForTextCombine()! \
</span><span class="cx"> void setLocale(const AtomicString&); </span><span \
class="cx"> void setFeatureSettings(FontFeatureSettings&& settings) { \
m_featureSettings = WTFMove(settings); } </span><ins>+ void \
setVariationSettings(FontVariationSettings&& settings) { m_variationSettings \
= WTFMove(settings); } </ins><span class="cx"> void \
setFontSynthesis(FontSynthesis fontSynthesis) { m_fontSynthesis = fontSynthesis; } \
</span><span class="cx"> void setVariantCommonLigatures(FontVariantLigatures \
variant) { m_variantCommonLigatures = static_cast<unsigned>(variant); } \
</span><span class="cx"> void \
setVariantDiscretionaryLigatures(FontVariantLigatures variant) { \
m_variantDiscretionaryLigatures = static_cast<unsigned>(variant); } \
</span><span class="lines">@@ -125,7 +127,9 @@ </span><span class="cx"> \
FontTraitsMask traitsMask() const; </span><span class="cx">
</span><span class="cx"> private:
</span><ins>+ // FIXME: Investigate moving these into their own object on the heap \
(to save memory). </ins><span class="cx"> FontFeatureSettings m_featureSettings;
</span><ins>+ FontVariationSettings m_variationSettings;
</ins><span class="cx"> AtomicString m_locale;
</span><span class="cx">
</span><span class="cx"> float m_computedSize { 0 }; // Computed size adjusted \
for the minimum font size and the zoom factor. </span><span class="lines">@@ -167,6 \
+171,7 @@ </span><span class="cx"> && m_widthVariant == \
other.m_widthVariant </span><span class="cx"> && m_locale == \
other.m_locale </span><span class="cx"> && m_featureSettings == \
other.m_featureSettings </span><ins>+ && m_variationSettings == \
other.m_variationSettings </ins><span class="cx"> && m_fontSynthesis \
== other.m_fontSynthesis </span><span class="cx"> && \
m_variantCommonLigatures == other.m_variantCommonLigatures </span><span class="cx"> \
&& m_variantDiscretionaryLigatures == other.m_variantDiscretionaryLigatures \
</span></span></pre></div> <a \
id="trunkSourceWebCoreplatformgraphicsFontTaggedSettingscpp"></a> <div \
class="modfile"><h4>Modified: \
trunk/Source/WebCore/platform/graphics/FontTaggedSettings.cpp (206678 => 206679)</h4> \
<pre class="diff"><span> <span class="info">--- \
trunk/Source/WebCore/platform/graphics/FontTaggedSettings.cpp 2016-09-30 21:53:38 UTC \
(rev 206678)
+++ trunk/Source/WebCore/platform/graphics/FontTaggedSettings.cpp 2016-09-30 21:59:15 \
UTC (rev 206679) </span><span class="lines">@@ -44,4 +44,36 @@
</span><span class="cx"> return hasher.hash();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+template <>
+unsigned FontVariationSettings::hash() const
+{
+ static_assert(sizeof(float) == sizeof(int), "IntegerHasher needs to accept \
floats too"); + union {
+ float f;
+ int i;
+ } floatToInt;
+
+ IntegerHasher hasher;
+ for (auto& variation : m_list) {
+ hasher.add(FourCharacterTagHash::hash(variation.tag()));
+ floatToInt.f = variation.value();
+ hasher.add(floatToInt.i);
+ }
+ return hasher.hash();
</ins><span class="cx"> }
</span><ins>+
+TextStream& operator<<(TextStream& ts, const \
FontVariationSettings& item) +{
+ for (unsigned i = 0; i < item.size(); ++i) {
+ auto& variation = item.at(i);
+ StringBuilder s;
+ s.append(variation.tag()[0]);
+ s.append(variation.tag()[1]);
+ s.append(variation.tag()[2]);
+ s.append(variation.tag()[3]);
+ ts.dumpProperty(s.toString(), item.at(i).value());
+ }
+ return ts;
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontTaggedSettingsh"></a>
<div class="modfile"><h4>Modified: \
trunk/Source/WebCore/platform/graphics/FontTaggedSettings.h (206678 => 206679)</h4> \
<pre class="diff"><span> <span class="info">--- \
trunk/Source/WebCore/platform/graphics/FontTaggedSettings.h 2016-09-30 21:53:38 UTC \
(rev 206678)
+++ trunk/Source/WebCore/platform/graphics/FontTaggedSettings.h 2016-09-30 21:59:15 \
UTC (rev 206679) </span><span class="lines">@@ -136,5 +136,8 @@
</span><span class="cx">
</span><span class="cx"> typedef FontTaggedSetting<int> FontFeature;
</span><span class="cx"> typedef FontTaggedSettings<int> FontFeatureSettings;
</span><ins>+typedef FontTaggedSettings<float> FontVariationSettings;
</ins><span class="cx">
</span><ins>+TextStream& operator<<(TextStream&, const \
FontVariationSettings&); +
</ins><span class="cx"> }
</span></span></pre>
</div>
</div>
</body>
</html>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic