Title: [208892] trunk/Source/WebCore
- Revision
- 208892
- Author
- [email protected]
- Date
- 2016-11-18 13:41:40 -0800 (Fri, 18 Nov 2016)
Log Message
[CSS Parser] Support font-variation-settings
https://bugs.webkit.org/show_bug.cgi?id=164947
Reviewed by Myles Maxfield.
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeFontVariationTag):
(WebCore::consumeFontVariationSettings):
(WebCore::CSSPropertyParser::parseSingleValue):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (208891 => 208892)
--- trunk/Source/WebCore/ChangeLog 2016-11-18 21:31:42 UTC (rev 208891)
+++ trunk/Source/WebCore/ChangeLog 2016-11-18 21:41:40 UTC (rev 208892)
@@ -1,3 +1,15 @@
+2016-11-18 Dave Hyatt <[email protected]>
+
+ [CSS Parser] Support font-variation-settings
+ https://bugs.webkit.org/show_bug.cgi?id=164947
+
+ Reviewed by Myles Maxfield.
+
+ * css/parser/CSSPropertyParser.cpp:
+ (WebCore::consumeFontVariationTag):
+ (WebCore::consumeFontVariationSettings):
+ (WebCore::CSSPropertyParser::parseSingleValue):
+
2016-11-17 Jiewen Tan <[email protected]>
Update SubtleCrypto::encrypt to match the latest spec
Modified: trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp (208891 => 208892)
--- trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp 2016-11-18 21:31:42 UTC (rev 208891)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp 2016-11-18 21:41:40 UTC (rev 208892)
@@ -39,6 +39,9 @@
#include "CSSCustomIdentValue.h"
#include "CSSFontFaceSrcValue.h"
#include "CSSFontFeatureValue.h"
+#if ENABLE(VARIATION_FONTS)
+#include "CSSFontVariationValue.h"
+#endif
#include "CSSFunctionValue.h"
#include "CSSGridAutoRepeatValue.h"
#include "CSSGridLineNamesValue.h"
@@ -490,6 +493,53 @@
return settings;
}
+#if ENABLE(VARIATION_FONTS)
+static RefPtr<CSSValue> consumeFontVariationTag(CSSParserTokenRange& range)
+{
+ if (range.peek().type() != StringToken)
+ return nullptr;
+
+ auto string = range.consumeIncludingWhitespace().value().toString();
+
+ FontTag tag;
+ if (string.length() != tag.size())
+ return nullptr;
+ 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 = string[i];
+ if (character < 0x20 || character > 0x7E)
+ return nullptr;
+ tag[i] = character;
+ }
+
+ if (range.atEnd() || range.peek().type() != NumberToken)
+ return nullptr;
+
+ float tagValue = range.consumeIncludingWhitespace().numericValue();
+
+ return CSSFontVariationValue::create(tag, tagValue);
+}
+
+static RefPtr<CSSValue> consumeFontVariationSettings(CSSParserTokenRange& range)
+{
+ if (range.peek().id() == CSSValueNormal)
+ return consumeIdent(range);
+
+ auto settings = CSSValueList::createCommaSeparated();
+ do {
+ RefPtr<CSSValue> variationValue = consumeFontVariationTag(range);
+ if (!variationValue)
+ return nullptr;
+ settings->append(variationValue.releaseNonNull());
+ } while (consumeCommaIncludingWhitespace(range));
+
+ if (!settings->length())
+ return nullptr;
+
+ return WTFMove(settings);
+}
+#endif // ENABLE(VARIATION_FONTS)
+
static RefPtr<CSSValue> consumePage(CSSParserTokenRange& range)
{
if (range.peek().id() == CSSValueAuto)
@@ -3393,6 +3443,12 @@
return consumeFontWeight(m_range);
case CSSPropertyFontSynthesis:
return consumeFontSynthesis(m_range);
+#if ENABLE(VARIATION_FONTS)
+ case CSSPropertyFontVariationSettings:
+ if (m_context.variationFontsEnabled)
+ return consumeFontVariationSettings(m_range);
+ return nullptr;
+#endif
case CSSPropertyLetterSpacing:
return consumeLetterSpacing(m_range, m_context.mode);
case CSSPropertyWordSpacing:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes