Implement font-stretch for installed fonts
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 2 Mar 2017 06:45:29 +0000 (06:45 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 2 Mar 2017 06:45:29 +0000 (06:45 +0000)
https://bugs.webkit.org/show_bug.cgi?id=168888

Reviewed by Darin Adler and Dave Hyatt.

Source/WebCore:

This patch implements the font-stretch property. Both parsing and the implementation is
implemented. Contrary to the name, this property doesn't actually stretch fonts; instead,
it provides one more input to the font selection routine.

The mapping from Core Text's [-1, 1] width values to font-stretch's percentage-based
values is not perfect. For now, I've implemented a piecewise linear curve mapping the
two. However, I expect to be able to improve this transfer function soon.

This patch does not implement the font-stretch descriptor in @font-face, and therefore
does not work with web fonts. I will add this support in
https://bugs.webkit.org/show_bug.cgi?id=168892. The reason it isn't done in this patch is
it requires some architectural changes to our CSSFontFace classes which are large enough
they should be separated into their own patch.

This patch lays the groundwork for implementing the 'wdth' variation axis. It does this
by adding a floating-point value to RenderStyle instead of just an enum. The font-stretch
keywords get converted to these floating-point numbers in accordance with the Fonts spec.
This patch doesn't actually implement the variations piece of font-stretch, because that
piece also requires some architectural changes. This patch just implements the installed
font selection piece.

This patch also fixes the regression introduced in r213163 with Helvetica Neue. Now that
our font selection algorithm has a concept of font stretch, weights 800 and 900 of
Helvetica Neue are rendered as expected. (And this patch updates the tests to make sure.)

Tests: fast/text/font-stretch-parse.html
       fast/text/font-stretch-shorthand.html
       FontCacheTest.FontLookupFromFamilyName

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::fontStretchFromStyle): Map style values to CSS keywords.
(WebCore::ComputedStyleExtractor::propertyValue): Call the above function.
* css/CSSFontValue.cpp:
(WebCore::CSSFontValue::customCSSText): Used in getComputedStyle() for the "font"
shorthand.
(WebCore::CSSFontValue::equals):
* css/CSSFontValue.h:
* css/CSSProperties.json:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertFontStretch): Map CSS keywords to style values.
* css/StyleProperties.cpp:
(WebCore::StyleProperties::appendFontLonghandValueIfExplicit): Used for
Element.style.font.
(WebCore::StyleProperties::fontValue):
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isKeywordPropertyID): Now that variation fonts are being
implemented, font-stretch is no longer a keyword property. Instead, it can also take a
number or percentage.
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeFontStretch): Parse the value.
(WebCore::CSSPropertyParser::parseSingleValue): Call the above function.
(WebCore::CSSPropertyParser::consumeFont): Ditto.
* platform/graphics/FontCache.h:
(WebCore::FontDescriptionKey::FontDescriptionKey): Caches should be sensitive to this
new value.
(WebCore::FontDescriptionKey::operator==):
(WebCore::FontDescriptionKey::computeHash):
* platform/graphics/FontDescription.h:
(WebCore::FontDescription::stretch): The parsed style value.
(WebCore::FontDescription::setStretch):
(WebCore::FontDescription::operator==):
(WebCore::FontCascadeDescription::initialStretch):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::InstalledFont::InstalledFont): Update the installed font selection
algorithm to understand font-stretch.
(WebCore::findClosestStretch):
(WebCore::filterStretch):
(WebCore::findClosestFont):
(WebCore::platformFontLookupWithFamily):
(WebCore::fontWithFamily):
(WebCore::FontCache::createFontPlatformData):

Tools:

Update TestWebKitAPI tests to test font-stretch too.

* TestWebKitAPI/Tests/WebCore/FontCache.cpp:
(TestWebKitAPI::createPlatformFont):
(TestWebKitAPI::compareFonts):
(TestWebKitAPI::TEST_F):

LayoutTests:

Updating tests for the "font" shorthand to include the font-stretch keywords.

* fast/css/font-calculated-value-expected.txt:
* fast/css/font-calculated-value.html:
* fast/css/font-shorthand-expected.txt:
* fast/css/font-shorthand-from-longhands-expected.txt:
* fast/css/font-shorthand-from-longhands.html:
* fast/css/getComputedStyle/computed-style-font-expected.txt:
* fast/css/getComputedStyle/computed-style-font-family-expected.txt:
* fast/css/getComputedStyle/script-tests/computed-style-font.js:
* fast/inspector-support/style-expected.txt:
* fast/text/font-stretch-parse-expected.txt: Added.
* fast/text/font-stretch-parse.html: Added.
* fast/text/font-stretch-shorthand-expected.html: Added.
* fast/text/font-stretch-shorthand.html: Added.
* platform/mac/fast/css/css2-system-fonts-expected.txt:
* platform/mac/fast/text/font-weights-expected.png:
* platform/mac/fast/text/font-weights-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@213267 268f45cc-cd09-0410-ab3c-d52691b4dbfc

33 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/font-calculated-value-expected.txt
LayoutTests/fast/css/font-calculated-value.html
LayoutTests/fast/css/font-shorthand-expected.txt
LayoutTests/fast/css/font-shorthand-from-longhands-expected.txt
LayoutTests/fast/css/font-shorthand-from-longhands.html
LayoutTests/fast/css/getComputedStyle/computed-style-font-expected.txt
LayoutTests/fast/css/getComputedStyle/computed-style-font-family-expected.txt
LayoutTests/fast/css/getComputedStyle/script-tests/computed-style-font.js
LayoutTests/fast/inspector-support/style-expected.txt
LayoutTests/fast/text/font-stretch-parse-expected.txt [new file with mode: 0644]
LayoutTests/fast/text/font-stretch-parse.html [new file with mode: 0644]
LayoutTests/fast/text/font-stretch-shorthand-expected.html [new file with mode: 0644]
LayoutTests/fast/text/font-stretch-shorthand.html [new file with mode: 0644]
LayoutTests/platform/ios-simulator/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/mac/fast/css/css2-system-fonts-expected.txt
LayoutTests/platform/mac/fast/text/font-weights-expected.png
LayoutTests/platform/mac/fast/text/font-weights-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/css/CSSComputedStyleDeclaration.cpp
Source/WebCore/css/CSSFontValue.cpp
Source/WebCore/css/CSSFontValue.h
Source/WebCore/css/CSSProperties.json
Source/WebCore/css/StyleBuilderConverter.h
Source/WebCore/css/StyleProperties.cpp
Source/WebCore/css/parser/CSSParserFastPaths.cpp
Source/WebCore/css/parser/CSSPropertyParser.cpp
Source/WebCore/platform/graphics/FontCache.h
Source/WebCore/platform/graphics/FontDescription.cpp
Source/WebCore/platform/graphics/FontDescription.h
Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WebCore/FontCache.cpp

index 3e7f5eb..c932b27 100644 (file)
@@ -1,3 +1,29 @@
+2017-03-01  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Implement font-stretch for installed fonts
+        https://bugs.webkit.org/show_bug.cgi?id=168888
+
+        Reviewed by Darin Adler and Dave Hyatt.
+
+        Updating tests for the "font" shorthand to include the font-stretch keywords.
+
+        * fast/css/font-calculated-value-expected.txt:
+        * fast/css/font-calculated-value.html:
+        * fast/css/font-shorthand-expected.txt:
+        * fast/css/font-shorthand-from-longhands-expected.txt:
+        * fast/css/font-shorthand-from-longhands.html:
+        * fast/css/getComputedStyle/computed-style-font-expected.txt:
+        * fast/css/getComputedStyle/computed-style-font-family-expected.txt:
+        * fast/css/getComputedStyle/script-tests/computed-style-font.js:
+        * fast/inspector-support/style-expected.txt:
+        * fast/text/font-stretch-parse-expected.txt: Added.
+        * fast/text/font-stretch-parse.html: Added.
+        * fast/text/font-stretch-shorthand-expected.html: Added.
+        * fast/text/font-stretch-shorthand.html: Added.
+        * platform/mac/fast/css/css2-system-fonts-expected.txt:
+        * platform/mac/fast/text/font-weights-expected.png:
+        * platform/mac/fast/text/font-weights-expected.txt:
+
 2017-03-01  Antoine Quint  <graouts@apple.com>
 
         LayoutTest media/modern-media-controls/media-controller/media-controller-resize.html is a flaky failure
index 319f794..ac207ac 100644 (file)
@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS testDiv.style['font'] is ""
 testDiv.style['font'] = 'italic small-caps calc(100 * 9) 12px arial'
 PASS testDiv.style['font'] is "italic small-caps 900 12px arial"
-PASS window.getComputedStyle(testDiv).getPropertyValue('font') is "italic small-caps 900 12px/14px arial"
+PASS window.getComputedStyle(testDiv).getPropertyValue('font') is "italic small-caps 900 normal 12px/14px arial"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 66f8b73..6d4f945 100644 (file)
@@ -10,7 +10,7 @@ var testDiv = document.getElementById("testDiv");
 shouldBeEmptyString("testDiv.style['font']");
 evalAndLog("testDiv.style['font'] = 'italic small-caps calc(100 * 9) 12px arial'");
 shouldBeEqualToString("testDiv.style['font']", "italic small-caps 900 12px arial");
-shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('font')", "italic small-caps 900 12px/14px arial");
+shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('font')", "italic small-caps 900 normal 12px/14px arial");
 
 </script>
 <script src="../../resources/js-test-post.js"></script>
index 477b596..4d6f04b 100644 (file)
@@ -3,6 +3,7 @@ Font for '12px monospace':
 font-style: normal (original property was font and property was implicitly set.)
 font-variant-caps: normal (original property was font and property was implicitly set.)
 font-weight: normal (original property was font and property was implicitly set.)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: normal (original property was font and property was implicitly set.)
 font-family: monospace (original property was font)
@@ -11,6 +12,7 @@ Font for '12px/24px serif':
 font-style: normal (original property was font and property was implicitly set.)
 font-variant-caps: normal (original property was font and property was implicitly set.)
 font-weight: normal (original property was font and property was implicitly set.)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: 24px (original property was font)
 font-family: serif (original property was font)
@@ -19,6 +21,7 @@ Font for 'normal 12px serif':
 font-style: normal (original property was font)
 font-variant-caps: normal (original property was font and property was implicitly set.)
 font-weight: normal (original property was font and property was implicitly set.)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: normal (original property was font and property was implicitly set.)
 font-family: serif (original property was font)
@@ -27,6 +30,7 @@ Font for 'normal normal 12px serif':
 font-style: normal (original property was font)
 font-variant-caps: normal (original property was font)
 font-weight: normal (original property was font and property was implicitly set.)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: normal (original property was font and property was implicitly set.)
 font-family: serif (original property was font)
@@ -35,6 +39,7 @@ Font for 'normal normal normal 12px serif':
 font-style: normal (original property was font)
 font-variant-caps: normal (original property was font)
 font-weight: normal (original property was font)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: normal (original property was font and property was implicitly set.)
 font-family: serif (original property was font)
@@ -43,6 +48,7 @@ Font for 'italic small-caps 12px/24px serif':
 font-style: italic (original property was font)
 font-variant-caps: small-caps (original property was font)
 font-weight: normal (original property was font and property was implicitly set.)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: 24px (original property was font)
 font-family: serif (original property was font)
@@ -51,6 +57,7 @@ Font for 'italic bold 12px/24px serif':
 font-style: italic (original property was font)
 font-variant-caps: normal (original property was font and property was implicitly set.)
 font-weight: bold (original property was font)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 12px (original property was font)
 line-height: 24px (original property was font)
 font-family: serif (original property was font)
@@ -59,6 +66,7 @@ Font for 'small-caps bold 14px/28px Arial, sans-serif':
 font-style: normal (original property was font and property was implicitly set.)
 font-variant-caps: small-caps (original property was font)
 font-weight: bold (original property was font)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 14px (original property was font)
 line-height: 28px (original property was font)
 font-family: Arial, sans-serif (original property was font)
@@ -67,6 +75,7 @@ Font for 'italic small-caps bold 14px/28px Arial, sans-serif':
 font-style: italic (original property was font)
 font-variant-caps: small-caps (original property was font)
 font-weight: bold (original property was font)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 14px (original property was font)
 line-height: 28px (original property was font)
 font-family: Arial, sans-serif (original property was font)
index 913f56c..6c6df9f 100644 (file)
@@ -4,38 +4,38 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS style.font is ''
-PASS computedStyle.font is 'normal normal normal 20px/23px foobar'
+PASS computedStyle.font is 'normal normal normal normal 20px/23px foobar'
 PASS computedStyle.fontSize is '20px'
 PASS checkFontStyleValue() is true
 PASS style.font is '20px sans-serif'
-PASS computedStyle.font is 'normal normal normal 20px/23px sans-serif'
+PASS computedStyle.font is 'normal normal normal normal 20px/23px sans-serif'
 PASS computedStyle.fontFamily is 'sans-serif'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic 20px sans-serif'
-PASS computedStyle.font is 'italic normal normal 20px/23px sans-serif'
+PASS computedStyle.font is 'italic normal normal normal 20px/23px sans-serif'
 PASS computedStyle.fontStyle is 'italic'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic small-caps 20px sans-serif'
-PASS computedStyle.font is 'italic small-caps normal 20px/23px sans-serif'
+PASS computedStyle.font is 'italic small-caps normal normal 20px/23px sans-serif'
 PASS computedStyle.fontVariant is 'small-caps'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic small-caps bold 20px sans-serif'
-PASS computedStyle.font is 'italic small-caps bold 20px/23px sans-serif'
+PASS computedStyle.font is 'italic small-caps bold normal 20px/23px sans-serif'
 PASS computedStyle.fontWeight is 'bold'
 PASS checkFontStyleValue() is true
 PASS style.font is 'italic small-caps bold 20px/40px sans-serif'
-PASS computedStyle.font is 'italic small-caps bold 20px/40px sans-serif'
+PASS computedStyle.font is 'italic small-caps bold normal 20px/40px sans-serif'
 PASS computedStyle.lineHeight is '40px'
 PASS checkFontStyleValue() is true
 PASS style.font is ''
-PASS computedStyle.font is 'normal normal normal 16px/18px foobar'
+PASS computedStyle.font is 'normal normal normal normal 16px/18px foobar'
 PASS checkFontStyleValue() is true
 PASS style.font is ''
-PASS computedStyle.font is 'normal normal bold 16px/18px foobar'
+PASS computedStyle.font is 'normal normal bold normal 16px/18px foobar'
 PASS computedStyle.fontWeight is 'bold'
 PASS checkFontStyleValue() is true
 PASS style.font is 'bold 40px sans-serif'
-PASS computedStyle.font is 'normal normal bold 40px/46px sans-serif'
+PASS computedStyle.font is 'normal normal bold normal 40px/46px sans-serif'
 PASS computedStyle.fontSize is '40px'
 PASS computedStyle.fontFamily is 'sans-serif'
 PASS checkFontStyleValue() is true
index 5411f4a..7e774bf 100644 (file)
@@ -36,50 +36,50 @@ function checkFontStyleValue() {
 style.fontSize = "20px";
 // We need at least the font-family to build the shorthand.
 shouldBe("style.font", "''");
-shouldBe("computedStyle.font", "'normal normal normal 20px/23px foobar'");
+shouldBe("computedStyle.font", "'normal normal normal normal 20px/23px foobar'");
 shouldBe("computedStyle.fontSize", "'20px'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontSize = "20px";
 style.fontFamily = "sans-serif";
 shouldBe("style.font", "'20px sans-serif'");
-shouldBe("computedStyle.font", "'normal normal normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'normal normal normal normal 20px/23px sans-serif'");
 shouldBe("computedStyle.fontFamily", "'sans-serif'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontStyle = "italic";
 shouldBe("style.font", "'italic 20px sans-serif'");
-shouldBe("computedStyle.font", "'italic normal normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'italic normal normal normal 20px/23px sans-serif'");
 shouldBe("computedStyle.fontStyle", "'italic'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontVariant = "small-caps";
 shouldBe("style.font", "'italic small-caps 20px sans-serif'");
-shouldBe("computedStyle.font", "'italic small-caps normal 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'italic small-caps normal normal 20px/23px sans-serif'");
 shouldBe("computedStyle.fontVariant", "'small-caps'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontWeight = "bold";
 shouldBe("style.font", "'italic small-caps bold 20px sans-serif'");
-shouldBe("computedStyle.font", "'italic small-caps bold 20px/23px sans-serif'");
+shouldBe("computedStyle.font", "'italic small-caps bold normal 20px/23px sans-serif'");
 shouldBe("computedStyle.fontWeight", "'bold'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.lineHeight = "40px";
 shouldBe("style.font", "'italic small-caps bold 20px/40px sans-serif'");
-shouldBe("computedStyle.font", "'italic small-caps bold 20px/40px sans-serif'");
+shouldBe("computedStyle.font", "'italic small-caps bold normal 20px/40px sans-serif'");
 shouldBe("computedStyle.lineHeight", "'40px'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.font = "";
 shouldBe("style.font", "''");
-shouldBe("computedStyle.font", "'normal normal normal 16px/18px foobar'");
+shouldBe("computedStyle.font", "'normal normal normal normal 16px/18px foobar'");
 shouldBe("checkFontStyleValue()", "true");
 
 style.fontWeight = "bold";
 // It is normal to return null as the font-size is mandatory to build the shorthand.
 shouldBe("style.font", "''");
-shouldBe("computedStyle.font", "'normal normal bold 16px/18px foobar'");
+shouldBe("computedStyle.font", "'normal normal bold normal 16px/18px foobar'");
 shouldBe("computedStyle.fontWeight", "'bold'");
 shouldBe("checkFontStyleValue()", "true");
 
@@ -87,7 +87,7 @@ style.fontSize = "40px";
 style.fontFamily = "sans-serif";
 style.fontWeight = "bold";
 shouldBe("style.font", "'bold 40px sans-serif'");
-shouldBe("computedStyle.font", "'normal normal bold 40px/46px sans-serif'");
+shouldBe("computedStyle.font", "'normal normal bold normal 40px/46px sans-serif'");
 shouldBe("computedStyle.fontSize", "'40px'");
 shouldBe("computedStyle.fontFamily", "'sans-serif'");
 shouldBe("checkFontStyleValue()", "true");
index c113a0c..8ce5858 100644 (file)
@@ -3,62 +3,62 @@ This test exercises the 'font' shorthand property in CSS computed styles.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS computedFont('10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFont('10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFont('10px SANS-SERIF') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFont('12px sans-serif') is 'normal normal normal 12px/14px sans-serif'
-PASS computedFont('12px  sans-serif') is 'normal normal normal 12px/14px sans-serif'
-PASS computedFont('10px sans-serif, sans-serif') is 'normal normal normal 10px/12px sans-serif, sans-serif'
-PASS computedFont('10px sans-serif, serif') is 'normal normal normal 10px/12px sans-serif, serif'
-PASS computedFont('12px ahem') is 'normal normal normal 12px/12px ahem'
-PASS computedFont('12px unlikely-font-name') is 'normal normal normal 12px/14px unlikely-font-name'
-PASS computedFont('100 10px sans-serif') is 'normal normal 100 10px/12px sans-serif'
-PASS computedFont('200 10px sans-serif') is 'normal normal 200 10px/12px sans-serif'
-PASS computedFont('300 10px sans-serif') is 'normal normal 300 10px/12px sans-serif'
-PASS computedFont('400 10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFont('normal 10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFont('500 10px sans-serif') is 'normal normal 500 10px/12px sans-serif'
-PASS computedFont('600 10px sans-serif') is 'normal normal 600 10px/12px sans-serif'
-PASS computedFont('700 10px sans-serif') is 'normal normal bold 10px/12px sans-serif'
-PASS computedFont('bold 10px sans-serif') is 'normal normal bold 10px/12px sans-serif'
-PASS computedFont('800 10px sans-serif') is 'normal normal 800 10px/12px sans-serif'
-PASS computedFont('900 10px sans-serif') is 'normal normal 900 10px/12px sans-serif'
-PASS computedFont('italic 10px sans-serif') is 'italic normal normal 10px/12px sans-serif'
-PASS computedFont('small-caps 10px sans-serif') is 'normal small-caps normal 10px/12px sans-serif'
-PASS computedFont('italic small-caps 10px sans-serif') is 'italic small-caps normal 10px/12px sans-serif'
-PASS computedFont('italic small-caps bold 10px sans-serif') is 'italic small-caps bold 10px/12px sans-serif'
-PASS computedFont('10px/100% sans-serif') is 'normal normal normal 10px/10px sans-serif'
-PASS computedFont('10px/100px sans-serif') is 'normal normal normal 10px/100px sans-serif'
-PASS computedFont('10px/normal sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFont('10px/normal sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px SANS-SERIF') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('12px sans-serif') is 'normal normal normal 12px/14px sans-serif'
-PASS computedFontCSSValue('12px  sans-serif') is 'normal normal normal 12px/14px sans-serif'
-PASS computedFontCSSValue('10px sans-serif, sans-serif') is 'normal normal normal 10px/12px sans-serif, sans-serif'
-PASS computedFontCSSValue('10px sans-serif, serif') is 'normal normal normal 10px/12px sans-serif, serif'
-PASS computedFontCSSValue('12px ahem') is 'normal normal normal 12px/12px ahem'
-PASS computedFontCSSValue('12px unlikely-font-name') is 'normal normal normal 12px/14px unlikely-font-name'
-PASS computedFontCSSValue('100 10px sans-serif') is 'normal normal 100 10px/12px sans-serif'
-PASS computedFontCSSValue('200 10px sans-serif') is 'normal normal 200 10px/12px sans-serif'
-PASS computedFontCSSValue('300 10px sans-serif') is 'normal normal 300 10px/12px sans-serif'
-PASS computedFontCSSValue('400 10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('normal 10px sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('500 10px sans-serif') is 'normal normal 500 10px/12px sans-serif'
-PASS computedFontCSSValue('600 10px sans-serif') is 'normal normal 600 10px/12px sans-serif'
-PASS computedFontCSSValue('700 10px sans-serif') is 'normal normal bold 10px/12px sans-serif'
-PASS computedFontCSSValue('bold 10px sans-serif') is 'normal normal bold 10px/12px sans-serif'
-PASS computedFontCSSValue('800 10px sans-serif') is 'normal normal 800 10px/12px sans-serif'
-PASS computedFontCSSValue('900 10px sans-serif') is 'normal normal 900 10px/12px sans-serif'
-PASS computedFontCSSValue('italic 10px sans-serif') is 'italic normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('small-caps 10px sans-serif') is 'normal small-caps normal 10px/12px sans-serif'
-PASS computedFontCSSValue('italic small-caps 10px sans-serif') is 'italic small-caps normal 10px/12px sans-serif'
-PASS computedFontCSSValue('italic small-caps bold 10px sans-serif') is 'italic small-caps bold 10px/12px sans-serif'
-PASS computedFontCSSValue('10px/100% sans-serif') is 'normal normal normal 10px/10px sans-serif'
-PASS computedFontCSSValue('10px/100px sans-serif') is 'normal normal normal 10px/100px sans-serif'
-PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal 10px/12px sans-serif'
-PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal 10px/12px sans-serif'
+PASS computedFont('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFont('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFont('10px SANS-SERIF') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFont('12px sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
+PASS computedFont('12px  sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
+PASS computedFont('10px sans-serif, sans-serif') is 'normal normal normal normal 10px/12px sans-serif, sans-serif'
+PASS computedFont('10px sans-serif, serif') is 'normal normal normal normal 10px/12px sans-serif, serif'
+PASS computedFont('12px ahem') is 'normal normal normal normal 12px/12px ahem'
+PASS computedFont('12px unlikely-font-name') is 'normal normal normal normal 12px/14px unlikely-font-name'
+PASS computedFont('100 10px sans-serif') is 'normal normal 100 normal 10px/12px sans-serif'
+PASS computedFont('200 10px sans-serif') is 'normal normal 200 normal 10px/12px sans-serif'
+PASS computedFont('300 10px sans-serif') is 'normal normal 300 normal 10px/12px sans-serif'
+PASS computedFont('400 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFont('normal 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFont('500 10px sans-serif') is 'normal normal 500 normal 10px/12px sans-serif'
+PASS computedFont('600 10px sans-serif') is 'normal normal 600 normal 10px/12px sans-serif'
+PASS computedFont('700 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
+PASS computedFont('bold 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
+PASS computedFont('800 10px sans-serif') is 'normal normal 800 normal 10px/12px sans-serif'
+PASS computedFont('900 10px sans-serif') is 'normal normal 900 normal 10px/12px sans-serif'
+PASS computedFont('italic 10px sans-serif') is 'italic normal normal normal 10px/12px sans-serif'
+PASS computedFont('small-caps 10px sans-serif') is 'normal small-caps normal normal 10px/12px sans-serif'
+PASS computedFont('italic small-caps 10px sans-serif') is 'italic small-caps normal normal 10px/12px sans-serif'
+PASS computedFont('italic small-caps bold 10px sans-serif') is 'italic small-caps bold normal 10px/12px sans-serif'
+PASS computedFont('10px/100% sans-serif') is 'normal normal normal normal 10px/10px sans-serif'
+PASS computedFont('10px/100px sans-serif') is 'normal normal normal normal 10px/100px sans-serif'
+PASS computedFont('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFont('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('10px SANS-SERIF') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('12px sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
+PASS computedFontCSSValue('12px  sans-serif') is 'normal normal normal normal 12px/14px sans-serif'
+PASS computedFontCSSValue('10px sans-serif, sans-serif') is 'normal normal normal normal 10px/12px sans-serif, sans-serif'
+PASS computedFontCSSValue('10px sans-serif, serif') is 'normal normal normal normal 10px/12px sans-serif, serif'
+PASS computedFontCSSValue('12px ahem') is 'normal normal normal normal 12px/12px ahem'
+PASS computedFontCSSValue('12px unlikely-font-name') is 'normal normal normal normal 12px/14px unlikely-font-name'
+PASS computedFontCSSValue('100 10px sans-serif') is 'normal normal 100 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('200 10px sans-serif') is 'normal normal 200 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('300 10px sans-serif') is 'normal normal 300 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('400 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('normal 10px sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('500 10px sans-serif') is 'normal normal 500 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('600 10px sans-serif') is 'normal normal 600 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('700 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
+PASS computedFontCSSValue('bold 10px sans-serif') is 'normal normal bold normal 10px/12px sans-serif'
+PASS computedFontCSSValue('800 10px sans-serif') is 'normal normal 800 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('900 10px sans-serif') is 'normal normal 900 normal 10px/12px sans-serif'
+PASS computedFontCSSValue('italic 10px sans-serif') is 'italic normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('small-caps 10px sans-serif') is 'normal small-caps normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('italic small-caps 10px sans-serif') is 'italic small-caps normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('italic small-caps bold 10px sans-serif') is 'italic small-caps bold normal 10px/12px sans-serif'
+PASS computedFontCSSValue('10px/100% sans-serif') is 'normal normal normal normal 10px/10px sans-serif'
+PASS computedFontCSSValue('10px/100px sans-serif') is 'normal normal normal normal 10px/100px sans-serif'
+PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
+PASS computedFontCSSValue('10px/normal sans-serif') is 'normal normal normal normal 10px/12px sans-serif'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 6b91e60..428203e 100644 (file)
@@ -2,6 +2,7 @@ Font attributes. The font-family should list three families:
 
 font-family: monospace, 'Lucida Grande', sans-serif;
 font-size: 16px;
+font-stretch: normal;
 font-style: normal;
 font-synthesis: style weight small-caps;
 font-variant: normal;
index dd298a0..c3542b9 100644 (file)
@@ -18,60 +18,60 @@ function computedFontCSSValue(fontString) {
     return cssValue.cssText;
 }
 
-shouldBe("computedFont('10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('10px SANS-SERIF')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('12px sans-serif')", "'normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFont('12px  sans-serif')", "'normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFont('10px sans-serif, sans-serif')", "'normal normal normal 10px/12px sans-serif, sans-serif'");
-shouldBe("computedFont('10px sans-serif, serif')", "'normal normal normal 10px/12px sans-serif, serif'");
-shouldBe("computedFont('12px ahem')", "'normal normal normal 12px/12px ahem'");
-shouldBe("computedFont('12px unlikely-font-name')", "'normal normal normal 12px/14px unlikely-font-name'");
-shouldBe("computedFont('100 10px sans-serif')", "'normal normal 100 10px/12px sans-serif'");
-shouldBe("computedFont('200 10px sans-serif')", "'normal normal 200 10px/12px sans-serif'");
-shouldBe("computedFont('300 10px sans-serif')", "'normal normal 300 10px/12px sans-serif'");
-shouldBe("computedFont('400 10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('normal 10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('500 10px sans-serif')", "'normal normal 500 10px/12px sans-serif'");
-shouldBe("computedFont('600 10px sans-serif')", "'normal normal 600 10px/12px sans-serif'");
-shouldBe("computedFont('700 10px sans-serif')", "'normal normal bold 10px/12px sans-serif'");
-shouldBe("computedFont('bold 10px sans-serif')", "'normal normal bold 10px/12px sans-serif'");
-shouldBe("computedFont('800 10px sans-serif')", "'normal normal 800 10px/12px sans-serif'");
-shouldBe("computedFont('900 10px sans-serif')", "'normal normal 900 10px/12px sans-serif'");
-shouldBe("computedFont('italic 10px sans-serif')", "'italic normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('small-caps 10px sans-serif')", "'normal small-caps normal 10px/12px sans-serif'");
-shouldBe("computedFont('italic small-caps 10px sans-serif')", "'italic small-caps normal 10px/12px sans-serif'");
-shouldBe("computedFont('italic small-caps bold 10px sans-serif')", "'italic small-caps bold 10px/12px sans-serif'");
-shouldBe("computedFont('10px/100% sans-serif')", "'normal normal normal 10px/10px sans-serif'");
-shouldBe("computedFont('10px/100px sans-serif')", "'normal normal normal 10px/100px sans-serif'");
-shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px SANS-SERIF')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('12px sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
+shouldBe("computedFont('12px  sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
+shouldBe("computedFont('10px sans-serif, sans-serif')", "'normal normal normal normal 10px/12px sans-serif, sans-serif'");
+shouldBe("computedFont('10px sans-serif, serif')", "'normal normal normal normal 10px/12px sans-serif, serif'");
+shouldBe("computedFont('12px ahem')", "'normal normal normal normal 12px/12px ahem'");
+shouldBe("computedFont('12px unlikely-font-name')", "'normal normal normal normal 12px/14px unlikely-font-name'");
+shouldBe("computedFont('100 10px sans-serif')", "'normal normal 100 normal 10px/12px sans-serif'");
+shouldBe("computedFont('200 10px sans-serif')", "'normal normal 200 normal 10px/12px sans-serif'");
+shouldBe("computedFont('300 10px sans-serif')", "'normal normal 300 normal 10px/12px sans-serif'");
+shouldBe("computedFont('400 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('normal 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('500 10px sans-serif')", "'normal normal 500 normal 10px/12px sans-serif'");
+shouldBe("computedFont('600 10px sans-serif')", "'normal normal 600 normal 10px/12px sans-serif'");
+shouldBe("computedFont('700 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
+shouldBe("computedFont('bold 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
+shouldBe("computedFont('800 10px sans-serif')", "'normal normal 800 normal 10px/12px sans-serif'");
+shouldBe("computedFont('900 10px sans-serif')", "'normal normal 900 normal 10px/12px sans-serif'");
+shouldBe("computedFont('italic 10px sans-serif')", "'italic normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('small-caps 10px sans-serif')", "'normal small-caps normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('italic small-caps 10px sans-serif')", "'italic small-caps normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('italic small-caps bold 10px sans-serif')", "'italic small-caps bold normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px/100% sans-serif')", "'normal normal normal normal 10px/10px sans-serif'");
+shouldBe("computedFont('10px/100px sans-serif')", "'normal normal normal normal 10px/100px sans-serif'");
+shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFont('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
 
-shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px SANS-SERIF')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('12px sans-serif')", "'normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFontCSSValue('12px  sans-serif')", "'normal normal normal 12px/14px sans-serif'");
-shouldBe("computedFontCSSValue('10px sans-serif, sans-serif')", "'normal normal normal 10px/12px sans-serif, sans-serif'");
-shouldBe("computedFontCSSValue('10px sans-serif, serif')", "'normal normal normal 10px/12px sans-serif, serif'");
-shouldBe("computedFontCSSValue('12px ahem')", "'normal normal normal 12px/12px ahem'");
-shouldBe("computedFontCSSValue('12px unlikely-font-name')", "'normal normal normal 12px/14px unlikely-font-name'");
-shouldBe("computedFontCSSValue('100 10px sans-serif')", "'normal normal 100 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('200 10px sans-serif')", "'normal normal 200 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('300 10px sans-serif')", "'normal normal 300 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('400 10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('normal 10px sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('500 10px sans-serif')", "'normal normal 500 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('600 10px sans-serif')", "'normal normal 600 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('700 10px sans-serif')", "'normal normal bold 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('bold 10px sans-serif')", "'normal normal bold 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('800 10px sans-serif')", "'normal normal 800 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('900 10px sans-serif')", "'normal normal 900 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('italic 10px sans-serif')", "'italic normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('small-caps 10px sans-serif')", "'normal small-caps normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('italic small-caps 10px sans-serif')", "'italic small-caps normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('italic small-caps bold 10px sans-serif')", "'italic small-caps bold 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px/100% sans-serif')", "'normal normal normal 10px/10px sans-serif'");
-shouldBe("computedFontCSSValue('10px/100px sans-serif')", "'normal normal normal 10px/100px sans-serif'");
-shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal 10px/12px sans-serif'");
-shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px SANS-SERIF')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('12px sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
+shouldBe("computedFontCSSValue('12px  sans-serif')", "'normal normal normal normal 12px/14px sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif, sans-serif')", "'normal normal normal normal 10px/12px sans-serif, sans-serif'");
+shouldBe("computedFontCSSValue('10px sans-serif, serif')", "'normal normal normal normal 10px/12px sans-serif, serif'");
+shouldBe("computedFontCSSValue('12px ahem')", "'normal normal normal normal 12px/12px ahem'");
+shouldBe("computedFontCSSValue('12px unlikely-font-name')", "'normal normal normal normal 12px/14px unlikely-font-name'");
+shouldBe("computedFontCSSValue('100 10px sans-serif')", "'normal normal 100 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('200 10px sans-serif')", "'normal normal 200 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('300 10px sans-serif')", "'normal normal 300 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('400 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('normal 10px sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('500 10px sans-serif')", "'normal normal 500 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('600 10px sans-serif')", "'normal normal 600 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('700 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('bold 10px sans-serif')", "'normal normal bold normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('800 10px sans-serif')", "'normal normal 800 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('900 10px sans-serif')", "'normal normal 900 normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('italic 10px sans-serif')", "'italic normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('small-caps 10px sans-serif')", "'normal small-caps normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('italic small-caps 10px sans-serif')", "'italic small-caps normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('italic small-caps bold 10px sans-serif')", "'italic small-caps bold normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px/100% sans-serif')", "'normal normal normal normal 10px/10px sans-serif'");
+shouldBe("computedFontCSSValue('10px/100px sans-serif')", "'normal normal normal normal 10px/100px sans-serif'");
+shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
+shouldBe("computedFontCSSValue('10px/normal sans-serif')", "'normal normal normal normal 10px/12px sans-serif'");
index e7dd6b5..06195b0 100644 (file)
@@ -18,6 +18,7 @@ color: white
 font-style: normal (original property was font and property was implicitly set.)
 font-variant-caps: normal (original property was font and property was implicitly set.)
 font-weight: normal (original property was font and property was implicitly set.)
+font-stretch: normal (original property was font and property was implicitly set.)
 font-size: 24px (original property was font)
 line-height: normal (original property was font and property was implicitly set.)
 font-family: 'Lucida Grande' (original property was font)
diff --git a/LayoutTests/fast/text/font-stretch-parse-expected.txt b/LayoutTests/fast/text/font-stretch-parse-expected.txt
new file mode 100644 (file)
index 0000000..a910734
--- /dev/null
@@ -0,0 +1,50 @@
+PASS window.getComputedStyle(document.getElementById('test1')).fontStretch is "normal"
+PASS window.getComputedStyle(document.getElementById('test2')).fontStretch is "1%"
+PASS window.getComputedStyle(document.getElementById('test3')).fontStretch is "2%"
+PASS window.getComputedStyle(document.getElementById('test4')).fontStretch is "ultra-condensed"
+PASS window.getComputedStyle(document.getElementById('test5')).fontStretch is "extra-condensed"
+PASS window.getComputedStyle(document.getElementById('test6')).fontStretch is "condensed"
+PASS window.getComputedStyle(document.getElementById('test7')).fontStretch is "semi-condensed"
+PASS window.getComputedStyle(document.getElementById('test8')).fontStretch is "normal"
+PASS window.getComputedStyle(document.getElementById('test9')).fontStretch is "semi-expanded"
+PASS window.getComputedStyle(document.getElementById('test10')).fontStretch is "expanded"
+PASS window.getComputedStyle(document.getElementById('test11')).fontStretch is "extra-expanded"
+PASS window.getComputedStyle(document.getElementById('test12')).fontStretch is "ultra-expanded"
+PASS window.getComputedStyle(document.getElementById('test13')).fontStretch is "normal"
+PASS window.getComputedStyle(document.getElementById('test14')).fontStretch is "normal"
+PASS window.getComputedStyle(document.getElementById('test15')).fontStretch is "7%"
+PASS window.getComputedStyle(document.getElementById('test16')).fontStretch is "extra-condensed"
+PASS window.getComputedStyle(document.getElementById('test17')).fontStretch is "extra-condensed"
+PASS window.getComputedStyle(document.getElementById('test18')).fontStretch is "normal"
+PASS window.getComputedStyle(document.getElementById('test19')).fontStretch is "normal"
+PASS window.getComputedStyle(document.getElementById('test20')).fontStretch is "extra-expanded"
+PASS window.getComputedStyle(document.getElementById('test1')).font is "normal normal normal normal 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test2')).font is "normal normal normal 1% 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test3')).font is "normal normal normal 2% 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test4')).font is "normal normal normal ultra-condensed 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test5')).font is "normal normal normal extra-condensed 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test6')).font is "normal normal normal condensed 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test7')).font is "normal normal normal semi-condensed 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test8')).font is "normal normal normal normal 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test9')).font is "normal normal normal semi-expanded 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test10')).font is "normal normal normal expanded 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test11')).font is "normal normal normal extra-expanded 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test12')).font is "normal normal normal ultra-expanded 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test13')).font is "normal normal normal normal 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test14')).font is "normal normal normal normal 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test15')).font is "normal normal normal 7% 16px/18px Times"
+PASS window.getComputedStyle(document.getElementById('test16')).font is "normal normal 100 extra-condensed 48px/49px 'Helvetica Neue'"
+PASS window.getComputedStyle(document.getElementById('test17')).font is "normal normal 100 extra-condensed 48px/49px 'Helvetica Neue'"
+PASS window.getComputedStyle(document.getElementById('test18')).font is "normal normal 100 normal 48px/49px 'Helvetica Neue'"
+PASS window.getComputedStyle(document.getElementById('test19')).font is "normal normal 100 normal 48px/49px 'Helvetica Neue'"
+PASS window.getComputedStyle(document.getElementById('test20')).font is "italic small-caps 100 extra-expanded 48px/49px 'Helvetica Neue'"
+PASS document.getElementById('test1').style.font is ""
+PASS document.getElementById('test16').style.font is "100 extra-condensed 48px/49px 'Helvetica Neue'"
+PASS document.getElementById('test17').style.font is "100 extra-condensed 48px/49px 'Helvetica Neue'"
+PASS document.getElementById('test18').style.font is "100 48px/49px 'Helvetica Neue'"
+PASS document.getElementById('test19').style.font is "100 48px/49px 'Helvetica Neue'"
+PASS document.getElementById('test20').style.font is "italic small-caps 100 extra-expanded 48px/49px 'Helvetica Neue'"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/text/font-stretch-parse.html b/LayoutTests/fast/text/font-stretch-parse.html
new file mode 100644 (file)
index 0000000..b7a5a02
--- /dev/null
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+</head>
+<body>
+<div style="font: 16px/18px 'Times';">
+<div id="test1"></div>
+<div id="test2" style="font-stretch: 1%;"></div>
+<div id="test3" style="font-stretch: 2;"></div>
+<div id="test4" style="font-stretch: ultra-condensed;"></div>
+<div id="test5" style="font-stretch: extra-condensed;"></div>
+<div id="test6" style="font-stretch: condensed;"></div>
+<div id="test7" style="font-stretch: semi-condensed;"></div>
+<div id="test8" style="font-stretch: normal;"></div>
+<div id="test9" style="font-stretch: semi-expanded;"></div>
+<div id="test10" style="font-stretch: expanded;"></div>
+<div id="test11" style="font-stretch: extra-expanded;"></div>
+<div id="test12" style="font-stretch: ultra-expanded;"></div>
+<div id="test13" style="font-stretch: garbage;"></div>
+<div id="test14" style="font-stretch: initial;"></div>
+<div id="test15" style="font-stretch: calc(3 + 4);"></div>
+<div id="test16" style="font: 100 extra-condensed 48px/49px 'Helvetica Neue';"></div>
+<div id="test17" style="font: extra-condensed 100 48px/49px 'Helvetica Neue';"></div>
+<div id="test18" style="font: 100 48px/49px 'Helvetica Neue';"></div>
+<div style="font-stretch: extra-expanded;"><div id="test19" style="font: 100 48px/49px 'Helvetica Neue';"></div></div>
+<div id="test20" style="font: italic small-caps 100 extra-expanded 48px/49px 'Helvetica Neue';"></div>
+</div>
+<script>
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test1')).fontStretch", "normal");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test2')).fontStretch", "1%");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test3')).fontStretch", "2%");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test4')).fontStretch", "ultra-condensed");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test5')).fontStretch", "extra-condensed");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test6')).fontStretch", "condensed");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test7')).fontStretch", "semi-condensed");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test8')).fontStretch", "normal");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test9')).fontStretch", "semi-expanded");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test10')).fontStretch", "expanded");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test11')).fontStretch", "extra-expanded");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test12')).fontStretch", "ultra-expanded");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test13')).fontStretch", "normal");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test14')).fontStretch", "normal");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test15')).fontStretch", "7%");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test16')).fontStretch", "extra-condensed");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test17')).fontStretch", "extra-condensed");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test18')).fontStretch", "normal");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test19')).fontStretch", "normal");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test20')).fontStretch", "extra-expanded");
+
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test1')).font", "normal normal normal normal 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test2')).font", "normal normal normal 1% 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test3')).font", "normal normal normal 2% 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test4')).font", "normal normal normal ultra-condensed 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test5')).font", "normal normal normal extra-condensed 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test6')).font", "normal normal normal condensed 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test7')).font", "normal normal normal semi-condensed 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test8')).font", "normal normal normal normal 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test9')).font", "normal normal normal semi-expanded 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test10')).font", "normal normal normal expanded 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test11')).font", "normal normal normal extra-expanded 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test12')).font", "normal normal normal ultra-expanded 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test13')).font", "normal normal normal normal 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test14')).font", "normal normal normal normal 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test15')).font", "normal normal normal 7% 16px/18px Times");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test16')).font", "normal normal 100 extra-condensed 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test17')).font", "normal normal 100 extra-condensed 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test18')).font", "normal normal 100 normal 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test19')).font", "normal normal 100 normal 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("window.getComputedStyle(document.getElementById('test20')).font", "italic small-caps 100 extra-expanded 48px/49px 'Helvetica Neue'");
+
+shouldBeEqualToString("document.getElementById('test1').style.font", "");
+shouldBeEqualToString("document.getElementById('test16').style.font", "100 extra-condensed 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("document.getElementById('test17').style.font", "100 extra-condensed 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("document.getElementById('test18').style.font", "100 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("document.getElementById('test19').style.font", "100 48px/49px 'Helvetica Neue'");
+shouldBeEqualToString("document.getElementById('test20').style.font", "italic small-caps 100 extra-expanded 48px/49px 'Helvetica Neue'");
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/text/font-stretch-shorthand-expected.html b/LayoutTests/fast/text/font-stretch-shorthand-expected.html
new file mode 100644 (file)
index 0000000..042c894
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+</head>
+<body>
+This test makes sure that the "font" shorthand properly accepts font-stretch values.
+<div>
+<span style="font: 100 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 100 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 100 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 100 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 100 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 200 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 200 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 200 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 200 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 200 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 300 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 300 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 300 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 300 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 300 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 400 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 400 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 400 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 400 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 400 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 500 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 500 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 500 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 500 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 500 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 600 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 600 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 600 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 600 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 600 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 700 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 700 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 700 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 700 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 700 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 800 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 800 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 800 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 800 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 800 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+<span style="font: 900 16px 'Helvetica Neue'; font-stretch: ultra-condensed;">Hello</span>
+<span style="font: 900 16px 'Helvetica Neue'; font-stretch: extra-condensed;">Hello</span>
+<span style="font: 900 16px 'Helvetica Neue'; font-stretch: condensed;">Hello</span>
+<span style="font: 900 16px 'Helvetica Neue'; font-stretch: semi-condensed;">Hello</span>
+<span style="font: 900 16px 'Helvetica Neue'; font-stretch: normal;">Hello</span>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/fast/text/font-stretch-shorthand.html b/LayoutTests/fast/text/font-stretch-shorthand.html
new file mode 100644 (file)
index 0000000..0b0400d
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+</head>
+<body>
+This test makes sure that the "font" shorthand properly accepts font-stretch values.
+<div>
+<span style="font: 100 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 100 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 100 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 100 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 100 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 200 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 200 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 200 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 200 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 200 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 300 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 300 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 300 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 300 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 300 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 400 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 400 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 400 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 400 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 400 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 500 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 500 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 500 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 500 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 500 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 600 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 600 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 600 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 600 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 600 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 700 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 700 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 700 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 700 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 700 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 800 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 800 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 800 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 800 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 800 normal 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 900 ultra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 900 extra-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 900 condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 900 semi-condensed 16px 'Helvetica Neue';">Hello</span>
+<span style="font: 900 normal 16px 'Helvetica Neue';">Hello</span>
+</div>
+</body>
+</html>
\ No newline at end of file
index 959b579..cb5ff0d 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal 13px/16px CTFontEmphasizedUsage
-icon: normal normal normal 13px/16px CTFontEmphasizedUsage
-menu: normal normal normal 13px/16px CTFontEmphasizedUsage
-message-box: normal normal normal 13px/16px CTFontEmphasizedUsage
-small-caption: normal normal normal 13px/16px CTFontEmphasizedUsage
-status-bar: normal normal normal 13px/16px CTFontEmphasizedUsage
--webkit-mini-control: normal normal normal 13px/16px CTFontEmphasizedUsage
--webkit-small-control: normal normal normal 13px/16px CTFontEmphasizedUsage
--webkit-control: normal normal normal 13px/16px CTFontEmphasizedUsage
+caption: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+icon: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+menu: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+message-box: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+small-caption: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+status-bar: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+-webkit-mini-control: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+-webkit-small-control: normal normal normal normal 13px/16px CTFontEmphasizedUsage
+-webkit-control: normal normal normal normal 13px/16px CTFontEmphasizedUsage
index 6fd10b0..7741cd8 100644 (file)
@@ -1,10 +1,10 @@
 This tests platform specific system font styles. If any of the styles appear in monospace the test fails.
-caption: normal normal normal 13px/16px system-ui
-icon: normal normal normal 13px/16px system-ui
-menu: normal normal normal 13px/16px -apple-menu
-message-box: normal normal normal 13px/16px system-ui
-small-caption: normal normal normal 11px/13px system-ui
-status-bar: normal normal normal 10px/12px -apple-status-bar
--webkit-mini-control: normal normal normal 9px/11px system-ui
--webkit-small-control: normal normal normal 11px/13px system-ui
--webkit-control: normal normal normal 13px/16px system-ui
+caption: normal normal normal normal 13px/16px system-ui
+icon: normal normal normal normal 13px/16px system-ui
+menu: normal normal normal normal 13px/16px -apple-menu
+message-box: normal normal normal normal 13px/16px system-ui
+small-caption: normal normal normal normal 11px/13px system-ui
+status-bar: normal normal normal normal 10px/12px -apple-status-bar
+-webkit-mini-control: normal normal normal normal 9px/11px system-ui
+-webkit-small-control: normal normal normal normal 11px/13px system-ui
+-webkit-control: normal normal normal normal 13px/16px system-ui
index 8362744..a906cbd 100644 (file)
Binary files a/LayoutTests/platform/mac/fast/text/font-weights-expected.png and b/LayoutTests/platform/mac/fast/text/font-weights-expected.png differ
index 905e615..ba2fdae 100644 (file)
@@ -1,8 +1,8 @@
-layer at (0,0) size 785x6763
+layer at (0,0) size 785x6747
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x6763
-  RenderBlock {HTML} at (0,0) size 785x6763
-    RenderBody {BODY} at (8,8) size 769x6747
+layer at (0,0) size 785x6747
+  RenderBlock {HTML} at (0,0) size 785x6747
+    RenderBody {BODY} at (8,8) size 769x6731
       RenderBlock (anonymous) at (0,0) size 769x144
         RenderText {#text} at (0,0) size 769x72
           text run at (0,0) width 746: "This test is designed to test the interaction between font-family and font-weight. In particular, our implementation of"
@@ -36,1062 +36,1062 @@ layer at (0,0) size 785x6763
       RenderBlock {DIV} at (0,254) size 769x19
         RenderText {#text} at (0,0) size 355x19
           text run at (0,0) width 355: "Font: Helvetica Neue Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,273) size 769x20
-        RenderText {#text} at (0,0) size 309x20
-          text run at (0,0) width 309: "Font: Helvetica Neue Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,293) size 769x20
-        RenderText {#text} at (0,0) size 309x20
-          text run at (0,0) width 309: "Font: Helvetica Neue Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,313) size 769x18
+      RenderBlock {DIV} at (0,273) size 769x19
+        RenderText {#text} at (0,0) size 355x19
+          text run at (0,0) width 355: "Font: Helvetica Neue Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,292) size 769x19
+        RenderText {#text} at (0,0) size 355x19
+          text run at (0,0) width 355: "Font: Helvetica Neue Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,311) size 769x18
         RenderText {#text} at (0,0) size 362x18
           text run at (0,0) width 362: "Font: HelveticaNeue-UltraLight Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,331) size 769x18
+      RenderBlock {DIV} at (0,329) size 769x18
         RenderText {#text} at (0,0) size 362x18
           text run at (0,0) width 362: "Font: HelveticaNeue-UltraLight Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,349) size 769x18
+      RenderBlock {DIV} at (0,347) size 769x18
         RenderText {#text} at (0,0) size 362x18
           text run at (0,0) width 362: "Font: HelveticaNeue-UltraLight Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,367) size 769x18
+      RenderBlock {DIV} at (0,365) size 769x18
         RenderText {#text} at (0,0) size 362x18
           text run at (0,0) width 362: "Font: HelveticaNeue-UltraLight Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,385) size 769x18
+      RenderBlock {DIV} at (0,383) size 769x18
         RenderText {#text} at (0,0) size 362x18
           text run at (0,0) width 362: "Font: HelveticaNeue-UltraLight Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,403) size 769x19
+      RenderBlock {DIV} at (0,401) size 769x19
         RenderText {#text} at (0,0) size 433x19
           text run at (0,0) width 433: "Font: HelveticaNeue-UltraLight Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,422) size 769x19
+      RenderBlock {DIV} at (0,420) size 769x19
         RenderText {#text} at (0,0) size 433x19
           text run at (0,0) width 433: "Font: HelveticaNeue-UltraLight Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,441) size 769x20
-        RenderText {#text} at (0,0) size 376x20
-          text run at (0,0) width 376: "Font: HelveticaNeue-UltraLight Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,461) size 769x20
-        RenderText {#text} at (0,0) size 376x20
-          text run at (0,0) width 376: "Font: HelveticaNeue-UltraLight Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,481) size 769x18
+      RenderBlock {DIV} at (0,439) size 769x19
+        RenderText {#text} at (0,0) size 433x19
+          text run at (0,0) width 433: "Font: HelveticaNeue-UltraLight Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,458) size 769x19
+        RenderText {#text} at (0,0) size 433x19
+          text run at (0,0) width 433: "Font: HelveticaNeue-UltraLight Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,477) size 769x18
         RenderText {#text} at (0,0) size 361x18
           text run at (0,0) width 361: "Font: HelveticaNeue-Light Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,499) size 769x18
+      RenderBlock {DIV} at (0,495) size 769x18
         RenderText {#text} at (0,0) size 361x18
           text run at (0,0) width 361: "Font: HelveticaNeue-Light Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,517) size 769x18
+      RenderBlock {DIV} at (0,513) size 769x18
         RenderText {#text} at (0,0) size 361x18
           text run at (0,0) width 361: "Font: HelveticaNeue-Light Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,535) size 769x18
+      RenderBlock {DIV} at (0,531) size 769x18
         RenderText {#text} at (0,0) size 361x18
           text run at (0,0) width 361: "Font: HelveticaNeue-Light Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,553) size 769x18
+      RenderBlock {DIV} at (0,549) size 769x18
         RenderText {#text} at (0,0) size 361x18
           text run at (0,0) width 361: "Font: HelveticaNeue-Light Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,571) size 769x19
+      RenderBlock {DIV} at (0,567) size 769x19
         RenderText {#text} at (0,0) size 396x19
           text run at (0,0) width 396: "Font: HelveticaNeue-Light Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,590) size 769x19
+      RenderBlock {DIV} at (0,586) size 769x19
         RenderText {#text} at (0,0) size 396x19
           text run at (0,0) width 396: "Font: HelveticaNeue-Light Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,609) size 769x20
-        RenderText {#text} at (0,0) size 344x20
-          text run at (0,0) width 344: "Font: HelveticaNeue-Light Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,629) size 769x20
-        RenderText {#text} at (0,0) size 344x20
-          text run at (0,0) width 344: "Font: HelveticaNeue-Light Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,649) size 769x18
+      RenderBlock {DIV} at (0,605) size 769x19
+        RenderText {#text} at (0,0) size 396x19
+          text run at (0,0) width 396: "Font: HelveticaNeue-Light Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,624) size 769x19
+        RenderText {#text} at (0,0) size 396x19
+          text run at (0,0) width 396: "Font: HelveticaNeue-Light Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,643) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: HelveticaNeue Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,667) size 769x18
+      RenderBlock {DIV} at (0,661) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: HelveticaNeue Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,685) size 769x18
+      RenderBlock {DIV} at (0,679) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: HelveticaNeue Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,703) size 769x18
+      RenderBlock {DIV} at (0,697) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: HelveticaNeue Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,721) size 769x18
+      RenderBlock {DIV} at (0,715) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: HelveticaNeue Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,739) size 769x19
+      RenderBlock {DIV} at (0,733) size 769x19
         RenderText {#text} at (0,0) size 351x19
           text run at (0,0) width 351: "Font: HelveticaNeue Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,758) size 769x19
+      RenderBlock {DIV} at (0,752) size 769x19
         RenderText {#text} at (0,0) size 351x19
           text run at (0,0) width 351: "Font: HelveticaNeue Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,777) size 769x20
-        RenderText {#text} at (0,0) size 305x20
-          text run at (0,0) width 305: "Font: HelveticaNeue Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,797) size 769x20
-        RenderText {#text} at (0,0) size 305x20
-          text run at (0,0) width 305: "Font: HelveticaNeue Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,817) size 769x19
+      RenderBlock {DIV} at (0,771) size 769x19
+        RenderText {#text} at (0,0) size 351x19
+          text run at (0,0) width 351: "Font: HelveticaNeue Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,790) size 769x19
+        RenderText {#text} at (0,0) size 351x19
+          text run at (0,0) width 351: "Font: HelveticaNeue Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,809) size 769x19
         RenderText {#text} at (0,0) size 409x19
           text run at (0,0) width 409: "Font: HelveticaNeue-Medium Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,836) size 769x19
+      RenderBlock {DIV} at (0,828) size 769x19
         RenderText {#text} at (0,0) size 409x19
           text run at (0,0) width 409: "Font: HelveticaNeue-Medium Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,855) size 769x19
+      RenderBlock {DIV} at (0,847) size 769x19
         RenderText {#text} at (0,0) size 409x19
           text run at (0,0) width 409: "Font: HelveticaNeue-Medium Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,874) size 769x19
+      RenderBlock {DIV} at (0,866) size 769x19
         RenderText {#text} at (0,0) size 409x19
           text run at (0,0) width 409: "Font: HelveticaNeue-Medium Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,893) size 769x19
+      RenderBlock {DIV} at (0,885) size 769x19
         RenderText {#text} at (0,0) size 409x19
           text run at (0,0) width 409: "Font: HelveticaNeue-Medium Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,912) size 769x19
+      RenderBlock {DIV} at (0,904) size 769x19
         RenderText {#text} at (0,0) size 419x19
           text run at (0,0) width 419: "Font: HelveticaNeue-Medium Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,931) size 769x19
+      RenderBlock {DIV} at (0,923) size 769x19
         RenderText {#text} at (0,0) size 419x19
           text run at (0,0) width 419: "Font: HelveticaNeue-Medium Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,950) size 769x20
-        RenderText {#text} at (0,0) size 364x20
-          text run at (0,0) width 364: "Font: HelveticaNeue-Medium Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,970) size 769x20
-        RenderText {#text} at (0,0) size 364x20
-          text run at (0,0) width 364: "Font: HelveticaNeue-Medium Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,990) size 769x19
+      RenderBlock {DIV} at (0,942) size 769x19
+        RenderText {#text} at (0,0) size 419x19
+          text run at (0,0) width 419: "Font: HelveticaNeue-Medium Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,961) size 769x19
+        RenderText {#text} at (0,0) size 419x19
+          text run at (0,0) width 419: "Font: HelveticaNeue-Medium Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,980) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,1009) size 769x19
+      RenderBlock {DIV} at (0,999) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,1028) size 769x19
+      RenderBlock {DIV} at (0,1018) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,1047) size 769x19
+      RenderBlock {DIV} at (0,1037) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,1066) size 769x19
+      RenderBlock {DIV} at (0,1056) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,1085) size 769x19
+      RenderBlock {DIV} at (0,1075) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,1104) size 769x19
+      RenderBlock {DIV} at (0,1094) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,1123) size 769x19
+      RenderBlock {DIV} at (0,1113) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,1142) size 769x19
+      RenderBlock {DIV} at (0,1132) size 769x19
         RenderText {#text} at (0,0) size 392x19
           text run at (0,0) width 392: "Font: HelveticaNeue-Bold Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,1161) size 769x18
+      RenderBlock {DIV} at (0,1151) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: HelveticaNeue-UltraLightItalic Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,1179) size 769x18
+      RenderBlock {DIV} at (0,1169) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: HelveticaNeue-UltraLightItalic Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,1197) size 769x18
+      RenderBlock {DIV} at (0,1187) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: HelveticaNeue-UltraLightItalic Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,1215) size 769x18
+      RenderBlock {DIV} at (0,1205) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: HelveticaNeue-UltraLightItalic Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,1233) size 769x18
+      RenderBlock {DIV} at (0,1223) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: HelveticaNeue-UltraLightItalic Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,1251) size 769x19
+      RenderBlock {DIV} at (0,1241) size 769x19
         RenderText {#text} at (0,0) size 470x19
           text run at (0,0) width 470: "Font: HelveticaNeue-UltraLightItalic Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,1270) size 769x19
+      RenderBlock {DIV} at (0,1260) size 769x19
         RenderText {#text} at (0,0) size 470x19
           text run at (0,0) width 470: "Font: HelveticaNeue-UltraLightItalic Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,1289) size 769x20
-        RenderText {#text} at (0,0) size 409x20
-          text run at (0,0) width 409: "Font: HelveticaNeue-UltraLightItalic Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,1309) size 769x20
-        RenderText {#text} at (0,0) size 409x20
-          text run at (0,0) width 409: "Font: HelveticaNeue-UltraLightItalic Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,1329) size 769x18
+      RenderBlock {DIV} at (0,1279) size 769x19
+        RenderText {#text} at (0,0) size 470x19
+          text run at (0,0) width 470: "Font: HelveticaNeue-UltraLightItalic Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,1298) size 769x19
+        RenderText {#text} at (0,0) size 470x19
+          text run at (0,0) width 470: "Font: HelveticaNeue-UltraLightItalic Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,1317) size 769x18
         RenderText {#text} at (0,0) size 391x18
           text run at (0,0) width 391: "Font: HelveticaNeue-LightItalic Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,1347) size 769x18
+      RenderBlock {DIV} at (0,1335) size 769x18
         RenderText {#text} at (0,0) size 391x18
           text run at (0,0) width 391: "Font: HelveticaNeue-LightItalic Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,1365) size 769x18
+      RenderBlock {DIV} at (0,1353) size 769x18
         RenderText {#text} at (0,0) size 391x18
           text run at (0,0) width 391: "Font: HelveticaNeue-LightItalic Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,1383) size 769x18
+      RenderBlock {DIV} at (0,1371) size 769x18
         RenderText {#text} at (0,0) size 391x18
           text run at (0,0) width 391: "Font: HelveticaNeue-LightItalic Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,1401) size 769x18
+      RenderBlock {DIV} at (0,1389) size 769x18
         RenderText {#text} at (0,0) size 391x18
           text run at (0,0) width 391: "Font: HelveticaNeue-LightItalic Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,1419) size 769x19
+      RenderBlock {DIV} at (0,1407) size 769x19
         RenderText {#text} at (0,0) size 433x19
           text run at (0,0) width 433: "Font: HelveticaNeue-LightItalic Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,1438) size 769x19
+      RenderBlock {DIV} at (0,1426) size 769x19
         RenderText {#text} at (0,0) size 433x19
           text run at (0,0) width 433: "Font: HelveticaNeue-LightItalic Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,1457) size 769x20
-        RenderText {#text} at (0,0) size 377x20
-          text run at (0,0) width 377: "Font: HelveticaNeue-LightItalic Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,1477) size 769x20
-        RenderText {#text} at (0,0) size 377x20
-          text run at (0,0) width 377: "Font: HelveticaNeue-LightItalic Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,1497) size 769x18
+      RenderBlock {DIV} at (0,1445) size 769x19
+        RenderText {#text} at (0,0) size 433x19
+          text run at (0,0) width 433: "Font: HelveticaNeue-LightItalic Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,1464) size 769x19
+        RenderText {#text} at (0,0) size 433x19
+          text run at (0,0) width 433: "Font: HelveticaNeue-LightItalic Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,1483) size 769x18
         RenderText {#text} at (0,0) size 371x18
           text run at (0,0) width 371: "Font: HelveticaNeue-Italic Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,1515) size 769x18
+      RenderBlock {DIV} at (0,1501) size 769x18
         RenderText {#text} at (0,0) size 371x18
           text run at (0,0) width 371: "Font: HelveticaNeue-Italic Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,1533) size 769x18
+      RenderBlock {DIV} at (0,1519) size 769x18
         RenderText {#text} at (0,0) size 371x18
           text run at (0,0) width 371: "Font: HelveticaNeue-Italic Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,1551) size 769x18
+      RenderBlock {DIV} at (0,1537) size 769x18
         RenderText {#text} at (0,0) size 371x18
           text run at (0,0) width 371: "Font: HelveticaNeue-Italic Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,1569) size 769x18
+      RenderBlock {DIV} at (0,1555) size 769x18
         RenderText {#text} at (0,0) size 371x18
           text run at (0,0) width 371: "Font: HelveticaNeue-Italic Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,1587) size 769x19
+      RenderBlock {DIV} at (0,1573) size 769x19
         RenderText {#text} at (0,0) size 394x19
           text run at (0,0) width 394: "Font: HelveticaNeue-Italic Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,1606) size 769x19
+      RenderBlock {DIV} at (0,1592) size 769x19
         RenderText {#text} at (0,0) size 394x19
           text run at (0,0) width 394: "Font: HelveticaNeue-Italic Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,1625) size 769x20
-        RenderText {#text} at (0,0) size 344x20
-          text run at (0,0) width 344: "Font: HelveticaNeue-Italic Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,1645) size 769x20
-        RenderText {#text} at (0,0) size 344x20
-          text run at (0,0) width 344: "Font: HelveticaNeue-Italic Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,1665) size 769x19
+      RenderBlock {DIV} at (0,1611) size 769x19
+        RenderText {#text} at (0,0) size 394x19
+          text run at (0,0) width 394: "Font: HelveticaNeue-Italic Weight: 800 Style: normal"
+      RenderBlock {DIV} at (0,1630) size 769x19
+        RenderText {#text} at (0,0) size 394x19
+          text run at (0,0) width 394: "Font: HelveticaNeue-Italic Weight: 900 Style: normal"
+      RenderBlock {DIV} at (0,1649) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,1684) size 769x19
+      RenderBlock {DIV} at (0,1668) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,1703) size 769x19
+      RenderBlock {DIV} at (0,1687) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,1722) size 769x19
+      RenderBlock {DIV} at (0,1706) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,1741) size 769x19
+      RenderBlock {DIV} at (0,1725) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,1760) size 769x19
+      RenderBlock {DIV} at (0,1744) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,1779) size 769x19
+      RenderBlock {DIV} at (0,1763) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,1798) size 769x19
+      RenderBlock {DIV} at (0,1782) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,1817) size 769x19
+      RenderBlock {DIV} at (0,1801) size 769x19
         RenderText {#text} at (0,0) size 431x19
           text run at (0,0) width 431: "Font: HelveticaNeue-BoldItalic Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,1836) size 769x18
+      RenderBlock {DIV} at (0,1820) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Helvetica Neue Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,1854) size 769x18
+      RenderBlock {DIV} at (0,1838) size 769x18
         RenderText {#text} at (0,0) size 299x18
           text run at (0,0) width 299: "Font: Helvetica Neue Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,1872) size 769x18
+      RenderBlock {DIV} at (0,1856) size 769x18
         RenderText {#text} at (0,0) size 308x18
           text run at (0,0) width 308: "Font: Helvetica Neue Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,1890) size 769x18
+      RenderBlock {DIV} at (0,1874) size 769x18
         RenderText {#text} at (0,0) size 320x18
           text run at (0,0) width 320: "Font: Helvetica Neue Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,1908) size 769x19
+      RenderBlock {DIV} at (0,1892) size 769x19
         RenderText {#text} at (0,0) size 329x19
           text run at (0,0) width 329: "Font: Helvetica Neue Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,1927) size 769x19
+      RenderBlock {DIV} at (0,1911) size 769x19
         RenderText {#text} at (0,0) size 340x19
           text run at (0,0) width 340: "Font: Helvetica Neue Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,1946) size 769x19
+      RenderBlock {DIV} at (0,1930) size 769x19
         RenderText {#text} at (0,0) size 340x19
           text run at (0,0) width 340: "Font: Helvetica Neue Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,1965) size 769x19
+      RenderBlock {DIV} at (0,1949) size 769x19
         RenderText {#text} at (0,0) size 340x19
           text run at (0,0) width 340: "Font: Helvetica Neue Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,1984) size 769x19
+      RenderBlock {DIV} at (0,1968) size 769x19
         RenderText {#text} at (0,0) size 340x19
           text run at (0,0) width 340: "Font: Helvetica Neue Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,2003) size 769x18
+      RenderBlock {DIV} at (0,1987) size 769x18
         RenderText {#text} at (0,0) size 345x18
           text run at (0,0) width 345: "Font: HelveticaNeue-UltraLight Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,2021) size 769x18
+      RenderBlock {DIV} at (0,2005) size 769x18
         RenderText {#text} at (0,0) size 361x18
           text run at (0,0) width 361: "Font: HelveticaNeue-UltraLight Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,2039) size 769x18
+      RenderBlock {DIV} at (0,2023) size 769x18
         RenderText {#text} at (0,0) size 376x18
           text run at (0,0) width 376: "Font: HelveticaNeue-UltraLight Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,2057) size 769x18
+      RenderBlock {DIV} at (0,2041) size 769x18
         RenderText {#text} at (0,0) size 391x18
           text run at (0,0) width 391: "Font: HelveticaNeue-UltraLight Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,2075) size 769x19
+      RenderBlock {DIV} at (0,2059) size 769x19
         RenderText {#text} at (0,0) size 404x19
           text run at (0,0) width 404: "Font: HelveticaNeue-UltraLight Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,2094) size 769x19
+      RenderBlock {DIV} at (0,2078) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-UltraLight Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,2113) size 769x19
+      RenderBlock {DIV} at (0,2097) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-UltraLight Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,2132) size 769x19
+      RenderBlock {DIV} at (0,2116) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-UltraLight Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,2151) size 769x19
+      RenderBlock {DIV} at (0,2135) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-UltraLight Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,2170) size 769x18
+      RenderBlock {DIV} at (0,2154) size 769x18
         RenderText {#text} at (0,0) size 317x18
           text run at (0,0) width 317: "Font: HelveticaNeue-Light Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,2188) size 769x18
+      RenderBlock {DIV} at (0,2172) size 769x18
         RenderText {#text} at (0,0) size 331x18
           text run at (0,0) width 331: "Font: HelveticaNeue-Light Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,2206) size 769x18
+      RenderBlock {DIV} at (0,2190) size 769x18
         RenderText {#text} at (0,0) size 344x18
           text run at (0,0) width 344: "Font: HelveticaNeue-Light Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,2224) size 769x18
+      RenderBlock {DIV} at (0,2208) size 769x18
         RenderText {#text} at (0,0) size 357x18
           text run at (0,0) width 357: "Font: HelveticaNeue-Light Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,2242) size 769x19
+      RenderBlock {DIV} at (0,2226) size 769x19
         RenderText {#text} at (0,0) size 368x19
           text run at (0,0) width 368: "Font: HelveticaNeue-Light Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,2261) size 769x19
+      RenderBlock {DIV} at (0,2245) size 769x19
         RenderText {#text} at (0,0) size 381x19
           text run at (0,0) width 381: "Font: HelveticaNeue-Light Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,2280) size 769x19
+      RenderBlock {DIV} at (0,2264) size 769x19
         RenderText {#text} at (0,0) size 381x19
           text run at (0,0) width 381: "Font: HelveticaNeue-Light Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,2299) size 769x19
+      RenderBlock {DIV} at (0,2283) size 769x19
         RenderText {#text} at (0,0) size 381x19
           text run at (0,0) width 381: "Font: HelveticaNeue-Light Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,2318) size 769x19
+      RenderBlock {DIV} at (0,2302) size 769x19
         RenderText {#text} at (0,0) size 381x19
           text run at (0,0) width 381: "Font: HelveticaNeue-Light Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,2337) size 769x18
+      RenderBlock {DIV} at (0,2321) size 769x18
         RenderText {#text} at (0,0) size 282x18
           text run at (0,0) width 282: "Font: HelveticaNeue Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,2355) size 769x18
+      RenderBlock {DIV} at (0,2339) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: HelveticaNeue Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,2373) size 769x18
+      RenderBlock {DIV} at (0,2357) size 769x18
         RenderText {#text} at (0,0) size 304x18
           text run at (0,0) width 304: "Font: HelveticaNeue Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,2391) size 769x18
+      RenderBlock {DIV} at (0,2375) size 769x18
         RenderText {#text} at (0,0) size 315x18
           text run at (0,0) width 315: "Font: HelveticaNeue Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,2409) size 769x19
+      RenderBlock {DIV} at (0,2393) size 769x19
         RenderText {#text} at (0,0) size 325x19
           text run at (0,0) width 325: "Font: HelveticaNeue Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,2428) size 769x19
+      RenderBlock {DIV} at (0,2412) size 769x19
         RenderText {#text} at (0,0) size 336x19
           text run at (0,0) width 336: "Font: HelveticaNeue Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,2447) size 769x19
+      RenderBlock {DIV} at (0,2431) size 769x19
         RenderText {#text} at (0,0) size 336x19
           text run at (0,0) width 336: "Font: HelveticaNeue Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,2466) size 769x19
+      RenderBlock {DIV} at (0,2450) size 769x19
         RenderText {#text} at (0,0) size 336x19
           text run at (0,0) width 336: "Font: HelveticaNeue Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,2485) size 769x19
+      RenderBlock {DIV} at (0,2469) size 769x19
         RenderText {#text} at (0,0) size 336x19
           text run at (0,0) width 336: "Font: HelveticaNeue Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,2504) size 769x18
+      RenderBlock {DIV} at (0,2488) size 769x18
         RenderText {#text} at (0,0) size 339x18
           text run at (0,0) width 339: "Font: HelveticaNeue-Medium Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,2522) size 769x18
+      RenderBlock {DIV} at (0,2506) size 769x18
         RenderText {#text} at (0,0) size 354x18
           text run at (0,0) width 354: "Font: HelveticaNeue-Medium Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,2540) size 769x18
+      RenderBlock {DIV} at (0,2524) size 769x18
         RenderText {#text} at (0,0) size 366x18
           text run at (0,0) width 366: "Font: HelveticaNeue-Medium Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,2558) size 769x18
+      RenderBlock {DIV} at (0,2542) size 769x18
         RenderText {#text} at (0,0) size 379x18
           text run at (0,0) width 379: "Font: HelveticaNeue-Medium Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,2576) size 769x19
+      RenderBlock {DIV} at (0,2560) size 769x19
         RenderText {#text} at (0,0) size 391x19
           text run at (0,0) width 391: "Font: HelveticaNeue-Medium Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,2595) size 769x19
+      RenderBlock {DIV} at (0,2579) size 769x19
         RenderText {#text} at (0,0) size 404x19
           text run at (0,0) width 404: "Font: HelveticaNeue-Medium Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,2614) size 769x19
+      RenderBlock {DIV} at (0,2598) size 769x19
         RenderText {#text} at (0,0) size 404x19
           text run at (0,0) width 404: "Font: HelveticaNeue-Medium Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,2633) size 769x19
+      RenderBlock {DIV} at (0,2617) size 769x19
         RenderText {#text} at (0,0) size 404x19
           text run at (0,0) width 404: "Font: HelveticaNeue-Medium Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,2652) size 769x19
+      RenderBlock {DIV} at (0,2636) size 769x19
         RenderText {#text} at (0,0) size 404x19
           text run at (0,0) width 404: "Font: HelveticaNeue-Medium Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,2671) size 769x18
+      RenderBlock {DIV} at (0,2655) size 769x18
         RenderText {#text} at (0,0) size 316x18
           text run at (0,0) width 316: "Font: HelveticaNeue-Bold Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,2689) size 769x18
+      RenderBlock {DIV} at (0,2673) size 769x18
         RenderText {#text} at (0,0) size 330x18
           text run at (0,0) width 330: "Font: HelveticaNeue-Bold Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,2707) size 769x18
+      RenderBlock {DIV} at (0,2691) size 769x18
         RenderText {#text} at (0,0) size 342x18
           text run at (0,0) width 342: "Font: HelveticaNeue-Bold Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,2725) size 769x18
+      RenderBlock {DIV} at (0,2709) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "Font: HelveticaNeue-Bold Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,2743) size 769x19
+      RenderBlock {DIV} at (0,2727) size 769x19
         RenderText {#text} at (0,0) size 365x19
           text run at (0,0) width 365: "Font: HelveticaNeue-Bold Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,2762) size 769x19
+      RenderBlock {DIV} at (0,2746) size 769x19
         RenderText {#text} at (0,0) size 377x19
           text run at (0,0) width 377: "Font: HelveticaNeue-Bold Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,2781) size 769x19
+      RenderBlock {DIV} at (0,2765) size 769x19
         RenderText {#text} at (0,0) size 377x19
           text run at (0,0) width 377: "Font: HelveticaNeue-Bold Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,2800) size 769x19
+      RenderBlock {DIV} at (0,2784) size 769x19
         RenderText {#text} at (0,0) size 377x19
           text run at (0,0) width 377: "Font: HelveticaNeue-Bold Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,2819) size 769x19
+      RenderBlock {DIV} at (0,2803) size 769x19
         RenderText {#text} at (0,0) size 377x19
           text run at (0,0) width 377: "Font: HelveticaNeue-Bold Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,2838) size 769x18
+      RenderBlock {DIV} at (0,2822) size 769x18
         RenderText {#text} at (0,0) size 372x18
           text run at (0,0) width 372: "Font: HelveticaNeue-UltraLightItalic Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,2856) size 769x18
+      RenderBlock {DIV} at (0,2840) size 769x18
         RenderText {#text} at (0,0) size 372x18
           text run at (0,0) width 372: "Font: HelveticaNeue-UltraLightItalic Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,2874) size 769x18
+      RenderBlock {DIV} at (0,2858) size 769x18
         RenderText {#text} at (0,0) size 372x18
           text run at (0,0) width 372: "Font: HelveticaNeue-UltraLightItalic Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,2892) size 769x18
+      RenderBlock {DIV} at (0,2876) size 769x18
         RenderText {#text} at (0,0) size 372x18
           text run at (0,0) width 372: "Font: HelveticaNeue-UltraLightItalic Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,2910) size 769x18
+      RenderBlock {DIV} at (0,2894) size 769x18
         RenderText {#text} at (0,0) size 372x18
           text run at (0,0) width 372: "Font: HelveticaNeue-UltraLightItalic Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,2928) size 769x19
+      RenderBlock {DIV} at (0,2912) size 769x19
         RenderText {#text} at (0,0) size 455x19
           text run at (0,0) width 455: "Font: HelveticaNeue-UltraLightItalic Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,2947) size 769x19
+      RenderBlock {DIV} at (0,2931) size 769x19
         RenderText {#text} at (0,0) size 455x19
           text run at (0,0) width 455: "Font: HelveticaNeue-UltraLightItalic Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,2966) size 769x19
+      RenderBlock {DIV} at (0,2950) size 769x19
         RenderText {#text} at (0,0) size 455x19
           text run at (0,0) width 455: "Font: HelveticaNeue-UltraLightItalic Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,2985) size 769x19
+      RenderBlock {DIV} at (0,2969) size 769x19
         RenderText {#text} at (0,0) size 455x19
           text run at (0,0) width 455: "Font: HelveticaNeue-UltraLightItalic Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,3004) size 769x18
+      RenderBlock {DIV} at (0,2988) size 769x18
         RenderText {#text} at (0,0) size 375x18
           text run at (0,0) width 375: "Font: HelveticaNeue-LightItalic Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,3022) size 769x18
+      RenderBlock {DIV} at (0,3006) size 769x18
         RenderText {#text} at (0,0) size 375x18
           text run at (0,0) width 375: "Font: HelveticaNeue-LightItalic Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,3040) size 769x18
+      RenderBlock {DIV} at (0,3024) size 769x18
         RenderText {#text} at (0,0) size 375x18
           text run at (0,0) width 375: "Font: HelveticaNeue-LightItalic Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,3058) size 769x18
+      RenderBlock {DIV} at (0,3042) size 769x18
         RenderText {#text} at (0,0) size 375x18
           text run at (0,0) width 375: "Font: HelveticaNeue-LightItalic Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,3076) size 769x18
+      RenderBlock {DIV} at (0,3060) size 769x18
         RenderText {#text} at (0,0) size 375x18
           text run at (0,0) width 375: "Font: HelveticaNeue-LightItalic Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,3094) size 769x19
+      RenderBlock {DIV} at (0,3078) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-LightItalic Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,3113) size 769x19
+      RenderBlock {DIV} at (0,3097) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-LightItalic Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,3132) size 769x19
+      RenderBlock {DIV} at (0,3116) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-LightItalic Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,3151) size 769x19
+      RenderBlock {DIV} at (0,3135) size 769x19
         RenderText {#text} at (0,0) size 418x19
           text run at (0,0) width 418: "Font: HelveticaNeue-LightItalic Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,3170) size 769x18
+      RenderBlock {DIV} at (0,3154) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "Font: HelveticaNeue-Italic Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,3188) size 769x18
+      RenderBlock {DIV} at (0,3172) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "Font: HelveticaNeue-Italic Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,3206) size 769x18
+      RenderBlock {DIV} at (0,3190) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "Font: HelveticaNeue-Italic Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,3224) size 769x18
+      RenderBlock {DIV} at (0,3208) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "Font: HelveticaNeue-Italic Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,3242) size 769x18
+      RenderBlock {DIV} at (0,3226) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "Font: HelveticaNeue-Italic Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,3260) size 769x19
+      RenderBlock {DIV} at (0,3244) size 769x19
         RenderText {#text} at (0,0) size 379x19
           text run at (0,0) width 379: "Font: HelveticaNeue-Italic Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,3279) size 769x19
+      RenderBlock {DIV} at (0,3263) size 769x19
         RenderText {#text} at (0,0) size 379x19
           text run at (0,0) width 379: "Font: HelveticaNeue-Italic Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,3298) size 769x19
+      RenderBlock {DIV} at (0,3282) size 769x19
         RenderText {#text} at (0,0) size 379x19
           text run at (0,0) width 379: "Font: HelveticaNeue-Italic Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,3317) size 769x19
+      RenderBlock {DIV} at (0,3301) size 769x19
         RenderText {#text} at (0,0) size 379x19
           text run at (0,0) width 379: "Font: HelveticaNeue-Italic Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,3336) size 769x19
+      RenderBlock {DIV} at (0,3320) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,3355) size 769x19
+      RenderBlock {DIV} at (0,3339) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,3374) size 769x19
+      RenderBlock {DIV} at (0,3358) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,3393) size 769x19
+      RenderBlock {DIV} at (0,3377) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,3412) size 769x19
+      RenderBlock {DIV} at (0,3396) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,3431) size 769x19
+      RenderBlock {DIV} at (0,3415) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,3450) size 769x19
+      RenderBlock {DIV} at (0,3434) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,3469) size 769x19
+      RenderBlock {DIV} at (0,3453) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,3488) size 769x19
+      RenderBlock {DIV} at (0,3472) size 769x19
         RenderText {#text} at (0,0) size 414x19
           text run at (0,0) width 414: "Font: HelveticaNeue-BoldItalic Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,3507) size 769x18
+      RenderBlock {DIV} at (0,3491) size 769x18
         RenderText {#text} at (0,0) size 254x18
           text run at (0,0) width 254: "Font: Avenir Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,3525) size 769x18
+      RenderBlock {DIV} at (0,3509) size 769x18
         RenderText {#text} at (0,0) size 254x18
           text run at (0,0) width 254: "Font: Avenir Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,3543) size 769x18
+      RenderBlock {DIV} at (0,3527) size 769x18
         RenderText {#text} at (0,0) size 254x18
           text run at (0,0) width 254: "Font: Avenir Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,3561) size 769x18
+      RenderBlock {DIV} at (0,3545) size 769x18
         RenderText {#text} at (0,0) size 254x18
           text run at (0,0) width 254: "Font: Avenir Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,3579) size 769x18
+      RenderBlock {DIV} at (0,3563) size 769x18
         RenderText {#text} at (0,0) size 254x18
           text run at (0,0) width 254: "Font: Avenir Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,3597) size 769x18
+      RenderBlock {DIV} at (0,3581) size 769x18
         RenderText {#text} at (0,0) size 271x18
           text run at (0,0) width 271: "Font: Avenir Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,3615) size 769x18
+      RenderBlock {DIV} at (0,3599) size 769x18
         RenderText {#text} at (0,0) size 271x18
           text run at (0,0) width 271: "Font: Avenir Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,3633) size 769x18
+      RenderBlock {DIV} at (0,3617) size 769x18
         RenderText {#text} at (0,0) size 271x18
           text run at (0,0) width 271: "Font: Avenir Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,3651) size 769x18
+      RenderBlock {DIV} at (0,3635) size 769x18
         RenderText {#text} at (0,0) size 271x18
           text run at (0,0) width 271: "Font: Avenir Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,3669) size 769x18
+      RenderBlock {DIV} at (0,3653) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Light Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,3687) size 769x18
+      RenderBlock {DIV} at (0,3671) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Light Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,3705) size 769x18
+      RenderBlock {DIV} at (0,3689) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Light Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,3723) size 769x18
+      RenderBlock {DIV} at (0,3707) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Light Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,3741) size 769x18
+      RenderBlock {DIV} at (0,3725) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Light Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,3759) size 769x18
+      RenderBlock {DIV} at (0,3743) size 769x18
         RenderText {#text} at (0,0) size 313x18
           text run at (0,0) width 313: "Font: Avenir-Light Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,3777) size 769x18
+      RenderBlock {DIV} at (0,3761) size 769x18
         RenderText {#text} at (0,0) size 313x18
           text run at (0,0) width 313: "Font: Avenir-Light Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,3795) size 769x18
+      RenderBlock {DIV} at (0,3779) size 769x18
         RenderText {#text} at (0,0) size 313x18
           text run at (0,0) width 313: "Font: Avenir-Light Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,3813) size 769x18
+      RenderBlock {DIV} at (0,3797) size 769x18
         RenderText {#text} at (0,0) size 313x18
           text run at (0,0) width 313: "Font: Avenir-Light Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,3831) size 769x18
+      RenderBlock {DIV} at (0,3815) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Book Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,3849) size 769x18
+      RenderBlock {DIV} at (0,3833) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Book Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,3867) size 769x18
+      RenderBlock {DIV} at (0,3851) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Book Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,3885) size 769x18
+      RenderBlock {DIV} at (0,3869) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Book Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,3903) size 769x18
+      RenderBlock {DIV} at (0,3887) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Book Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,3921) size 769x18
+      RenderBlock {DIV} at (0,3905) size 769x18
         RenderText {#text} at (0,0) size 311x18
           text run at (0,0) width 311: "Font: Avenir-Book Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,3939) size 769x18
+      RenderBlock {DIV} at (0,3923) size 769x18
         RenderText {#text} at (0,0) size 311x18
           text run at (0,0) width 311: "Font: Avenir-Book Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,3957) size 769x18
+      RenderBlock {DIV} at (0,3941) size 769x18
         RenderText {#text} at (0,0) size 311x18
           text run at (0,0) width 311: "Font: Avenir-Book Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,3975) size 769x18
+      RenderBlock {DIV} at (0,3959) size 769x18
         RenderText {#text} at (0,0) size 311x18
           text run at (0,0) width 311: "Font: Avenir-Book Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,3993) size 769x18
+      RenderBlock {DIV} at (0,3977) size 769x18
         RenderText {#text} at (0,0) size 314x18
           text run at (0,0) width 314: "Font: Avenir-Medium Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4011) size 769x18
+      RenderBlock {DIV} at (0,3995) size 769x18
         RenderText {#text} at (0,0) size 314x18
           text run at (0,0) width 314: "Font: Avenir-Medium Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,4029) size 769x18
+      RenderBlock {DIV} at (0,4013) size 769x18
         RenderText {#text} at (0,0) size 314x18
           text run at (0,0) width 314: "Font: Avenir-Medium Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,4047) size 769x18
+      RenderBlock {DIV} at (0,4031) size 769x18
         RenderText {#text} at (0,0) size 314x18
           text run at (0,0) width 314: "Font: Avenir-Medium Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,4065) size 769x18
+      RenderBlock {DIV} at (0,4049) size 769x18
         RenderText {#text} at (0,0) size 314x18
           text run at (0,0) width 314: "Font: Avenir-Medium Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,4083) size 769x18
+      RenderBlock {DIV} at (0,4067) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-Medium Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,4101) size 769x18
+      RenderBlock {DIV} at (0,4085) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-Medium Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,4119) size 769x18
+      RenderBlock {DIV} at (0,4103) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-Medium Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,4137) size 769x18
+      RenderBlock {DIV} at (0,4121) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-Medium Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,4155) size 769x18
+      RenderBlock {DIV} at (0,4139) size 769x18
         RenderText {#text} at (0,0) size 297x18
           text run at (0,0) width 297: "Font: Avenir-Black Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4173) size 769x18
+      RenderBlock {DIV} at (0,4157) size 769x18
         RenderText {#text} at (0,0) size 297x18
           text run at (0,0) width 297: "Font: Avenir-Black Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,4191) size 769x18
+      RenderBlock {DIV} at (0,4175) size 769x18
         RenderText {#text} at (0,0) size 297x18
           text run at (0,0) width 297: "Font: Avenir-Black Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,4209) size 769x18
+      RenderBlock {DIV} at (0,4193) size 769x18
         RenderText {#text} at (0,0) size 297x18
           text run at (0,0) width 297: "Font: Avenir-Black Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,4227) size 769x18
+      RenderBlock {DIV} at (0,4211) size 769x18
         RenderText {#text} at (0,0) size 297x18
           text run at (0,0) width 297: "Font: Avenir-Black Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,4245) size 769x18
+      RenderBlock {DIV} at (0,4229) size 769x18
         RenderText {#text} at (0,0) size 315x18
           text run at (0,0) width 315: "Font: Avenir-Black Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,4263) size 769x18
+      RenderBlock {DIV} at (0,4247) size 769x18
         RenderText {#text} at (0,0) size 315x18
           text run at (0,0) width 315: "Font: Avenir-Black Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,4281) size 769x18
+      RenderBlock {DIV} at (0,4265) size 769x18
         RenderText {#text} at (0,0) size 315x18
           text run at (0,0) width 315: "Font: Avenir-Black Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,4299) size 769x18
+      RenderBlock {DIV} at (0,4283) size 769x18
         RenderText {#text} at (0,0) size 315x18
           text run at (0,0) width 315: "Font: Avenir-Black Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,4317) size 769x18
+      RenderBlock {DIV} at (0,4301) size 769x18
         RenderText {#text} at (0,0) size 301x18
           text run at (0,0) width 301: "Font: Avenir-Heavy Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4335) size 769x18
+      RenderBlock {DIV} at (0,4319) size 769x18
         RenderText {#text} at (0,0) size 301x18
           text run at (0,0) width 301: "Font: Avenir-Heavy Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,4353) size 769x18
+      RenderBlock {DIV} at (0,4337) size 769x18
         RenderText {#text} at (0,0) size 301x18
           text run at (0,0) width 301: "Font: Avenir-Heavy Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,4371) size 769x18
+      RenderBlock {DIV} at (0,4355) size 769x18
         RenderText {#text} at (0,0) size 301x18
           text run at (0,0) width 301: "Font: Avenir-Heavy Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,4389) size 769x18
+      RenderBlock {DIV} at (0,4373) size 769x18
         RenderText {#text} at (0,0) size 301x18
           text run at (0,0) width 301: "Font: Avenir-Heavy Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,4407) size 769x18
+      RenderBlock {DIV} at (0,4391) size 769x18
         RenderText {#text} at (0,0) size 319x18
           text run at (0,0) width 319: "Font: Avenir-Heavy Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,4425) size 769x18
+      RenderBlock {DIV} at (0,4409) size 769x18
         RenderText {#text} at (0,0) size 319x18
           text run at (0,0) width 319: "Font: Avenir-Heavy Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,4443) size 769x18
+      RenderBlock {DIV} at (0,4427) size 769x18
         RenderText {#text} at (0,0) size 319x18
           text run at (0,0) width 319: "Font: Avenir-Heavy Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,4461) size 769x18
+      RenderBlock {DIV} at (0,4445) size 769x18
         RenderText {#text} at (0,0) size 319x18
           text run at (0,0) width 319: "Font: Avenir-Heavy Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,4479) size 769x18
+      RenderBlock {DIV} at (0,4463) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-LightOblique Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4497) size 769x18
+      RenderBlock {DIV} at (0,4481) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-LightOblique Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,4515) size 769x18
+      RenderBlock {DIV} at (0,4499) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-LightOblique Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,4533) size 769x18
+      RenderBlock {DIV} at (0,4517) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-LightOblique Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,4551) size 769x18
+      RenderBlock {DIV} at (0,4535) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-LightOblique Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,4569) size 769x18
+      RenderBlock {DIV} at (0,4553) size 769x18
         RenderText {#text} at (0,0) size 368x18
           text run at (0,0) width 368: "Font: Avenir-LightOblique Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,4587) size 769x18
+      RenderBlock {DIV} at (0,4571) size 769x18
         RenderText {#text} at (0,0) size 368x18
           text run at (0,0) width 368: "Font: Avenir-LightOblique Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,4605) size 769x18
+      RenderBlock {DIV} at (0,4589) size 769x18
         RenderText {#text} at (0,0) size 368x18
           text run at (0,0) width 368: "Font: Avenir-LightOblique Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,4623) size 769x18
+      RenderBlock {DIV} at (0,4607) size 769x18
         RenderText {#text} at (0,0) size 368x18
           text run at (0,0) width 368: "Font: Avenir-LightOblique Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,4641) size 769x18
+      RenderBlock {DIV} at (0,4625) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-BookOblique Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4659) size 769x18
+      RenderBlock {DIV} at (0,4643) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-BookOblique Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,4677) size 769x18
+      RenderBlock {DIV} at (0,4661) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-BookOblique Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,4695) size 769x18
+      RenderBlock {DIV} at (0,4679) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-BookOblique Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,4713) size 769x18
+      RenderBlock {DIV} at (0,4697) size 769x18
         RenderText {#text} at (0,0) size 346x18
           text run at (0,0) width 346: "Font: Avenir-BookOblique Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,4731) size 769x18
+      RenderBlock {DIV} at (0,4715) size 769x18
         RenderText {#text} at (0,0) size 366x18
           text run at (0,0) width 366: "Font: Avenir-BookOblique Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,4749) size 769x18
+      RenderBlock {DIV} at (0,4733) size 769x18
         RenderText {#text} at (0,0) size 366x18
           text run at (0,0) width 366: "Font: Avenir-BookOblique Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,4767) size 769x18
+      RenderBlock {DIV} at (0,4751) size 769x18
         RenderText {#text} at (0,0) size 366x18
           text run at (0,0) width 366: "Font: Avenir-BookOblique Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,4785) size 769x18
+      RenderBlock {DIV} at (0,4769) size 769x18
         RenderText {#text} at (0,0) size 366x18
           text run at (0,0) width 366: "Font: Avenir-BookOblique Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,4803) size 769x18
+      RenderBlock {DIV} at (0,4787) size 769x18
         RenderText {#text} at (0,0) size 365x18
           text run at (0,0) width 365: "Font: Avenir-MediumOblique Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4821) size 769x18
+      RenderBlock {DIV} at (0,4805) size 769x18
         RenderText {#text} at (0,0) size 365x18
           text run at (0,0) width 365: "Font: Avenir-MediumOblique Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,4839) size 769x18
+      RenderBlock {DIV} at (0,4823) size 769x18
         RenderText {#text} at (0,0) size 365x18
           text run at (0,0) width 365: "Font: Avenir-MediumOblique Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,4857) size 769x18
+      RenderBlock {DIV} at (0,4841) size 769x18
         RenderText {#text} at (0,0) size 365x18
           text run at (0,0) width 365: "Font: Avenir-MediumOblique Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,4875) size 769x18
+      RenderBlock {DIV} at (0,4859) size 769x18
         RenderText {#text} at (0,0) size 365x18
           text run at (0,0) width 365: "Font: Avenir-MediumOblique Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,4893) size 769x18
+      RenderBlock {DIV} at (0,4877) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: Avenir-MediumOblique Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,4911) size 769x18
+      RenderBlock {DIV} at (0,4895) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: Avenir-MediumOblique Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,4929) size 769x18
+      RenderBlock {DIV} at (0,4913) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: Avenir-MediumOblique Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,4947) size 769x18
+      RenderBlock {DIV} at (0,4931) size 769x18
         RenderText {#text} at (0,0) size 388x18
           text run at (0,0) width 388: "Font: Avenir-MediumOblique Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,4965) size 769x18
+      RenderBlock {DIV} at (0,4949) size 769x18
         RenderText {#text} at (0,0) size 348x18
           text run at (0,0) width 348: "Font: Avenir-BlackOblique Weight: 100 Style: normal"
-      RenderBlock {DIV} at (0,4983) size 769x18
+      RenderBlock {DIV} at (0,4967) size 769x18
         RenderText {#text} at (0,0) size 348x18
           text run at (0,0) width 348: "Font: Avenir-BlackOblique Weight: 200 Style: normal"
-      RenderBlock {DIV} at (0,5001) size 769x18
+      RenderBlock {DIV} at (0,4985) size 769x18
         RenderText {#text} at (0,0) size 348x18
           text run at (0,0) width 348: "Font: Avenir-BlackOblique Weight: 300 Style: normal"
-      RenderBlock {DIV} at (0,5019) size 769x18
+      RenderBlock {DIV} at (0,5003) size 769x18
         RenderText {#text} at (0,0) size 348x18
           text run at (0,0) width 348: "Font: Avenir-BlackOblique Weight: 400 Style: normal"
-      RenderBlock {DIV} at (0,5037) size 769x18
+      RenderBlock {DIV} at (0,5021) size 769x18
         RenderText {#text} at (0,0) size 348x18
           text run at (0,0) width 348: "Font: Avenir-BlackOblique Weight: 500 Style: normal"
-      RenderBlock {DIV} at (0,5055) size 769x18
+      RenderBlock {DIV} at (0,5039) size 769x18
         RenderText {#text} at (0,0) size 370x18
           text run at (0,0) width 370: "Font: Avenir-BlackOblique Weight: 600 Style: normal"
-      RenderBlock {DIV} at (0,5073) size 769x18
+      RenderBlock {DIV} at (0,5057) size 769x18
         RenderText {#text} at (0,0) size 370x18
           text run at (0,0) width 370: "Font: Avenir-BlackOblique Weight: 700 Style: normal"
-      RenderBlock {DIV} at (0,5091) size 769x18
+      RenderBlock {DIV} at (0,5075) size 769x18
         RenderText {#text} at (0,0) size 370x18
           text run at (0,0) width 370: "Font: Avenir-BlackOblique Weight: 800 Style: normal"
-      RenderBlock {DIV} at (0,5109) size 769x18
+      RenderBlock {DIV} at (0,5093) size 769x18
         RenderText {#text} at (0,0) size 370x18
           text run at (0,0) width 370: "Font: Avenir-BlackOblique Weight: 900 Style: normal"
-      RenderBlock {DIV} at (0,5127) size 769x18
+      RenderBlock {DIV} at (0,5111) size 769x18
         RenderText {#text} at (0,0) size 240x18
           text run at (0,0) width 240: "Font: Avenir Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,5145) size 769x18
+      RenderBlock {DIV} at (0,5129) size 769x18
         RenderText {#text} at (0,0) size 240x18
           text run at (0,0) width 240: "Font: Avenir Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,5163) size 769x18
+      RenderBlock {DIV} at (0,5147) size 769x18
         RenderText {#text} at (0,0) size 240x18
           text run at (0,0) width 240: "Font: Avenir Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,5181) size 769x18
+      RenderBlock {DIV} at (0,5165) size 769x18
         RenderText {#text} at (0,0) size 240x18
           text run at (0,0) width 240: "Font: Avenir Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,5199) size 769x18
+      RenderBlock {DIV} at (0,5183) size 769x18
         RenderText {#text} at (0,0) size 240x18
           text run at (0,0) width 240: "Font: Avenir Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,5217) size 769x18
+      RenderBlock {DIV} at (0,5201) size 769x18
         RenderText {#text} at (0,0) size 247x18
           text run at (0,0) width 247: "Font: Avenir Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,5235) size 769x18
+      RenderBlock {DIV} at (0,5219) size 769x18
         RenderText {#text} at (0,0) size 247x18
           text run at (0,0) width 247: "Font: Avenir Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,5253) size 769x18
+      RenderBlock {DIV} at (0,5237) size 769x18
         RenderText {#text} at (0,0) size 247x18
           text run at (0,0) width 247: "Font: Avenir Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,5271) size 769x18
+      RenderBlock {DIV} at (0,5255) size 769x18
         RenderText {#text} at (0,0) size 247x18
           text run at (0,0) width 247: "Font: Avenir Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,5289) size 769x18
+      RenderBlock {DIV} at (0,5273) size 769x18
         RenderText {#text} at (0,0) size 279x18
           text run at (0,0) width 279: "Font: Avenir-Light Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,5307) size 769x18
+      RenderBlock {DIV} at (0,5291) size 769x18
         RenderText {#text} at (0,0) size 279x18
           text run at (0,0) width 279: "Font: Avenir-Light Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,5325) size 769x18
+      RenderBlock {DIV} at (0,5309) size 769x18
         RenderText {#text} at (0,0) size 279x18
           text run at (0,0) width 279: "Font: Avenir-Light Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,5343) size 769x18
+      RenderBlock {DIV} at (0,5327) size 769x18
         RenderText {#text} at (0,0) size 279x18
           text run at (0,0) width 279: "Font: Avenir-Light Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,5361) size 769x18
+      RenderBlock {DIV} at (0,5345) size 769x18
         RenderText {#text} at (0,0) size 279x18
           text run at (0,0) width 279: "Font: Avenir-Light Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,5379) size 769x18
+      RenderBlock {DIV} at (0,5363) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Light Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,5397) size 769x18
+      RenderBlock {DIV} at (0,5381) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Light Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,5415) size 769x18
+      RenderBlock {DIV} at (0,5399) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Light Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,5433) size 769x18
+      RenderBlock {DIV} at (0,5417) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Light Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,5451) size 769x18
+      RenderBlock {DIV} at (0,5435) size 769x18
         RenderText {#text} at (0,0) size 278x18
           text run at (0,0) width 278: "Font: Avenir-Book Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,5469) size 769x18
+      RenderBlock {DIV} at (0,5453) size 769x18
         RenderText {#text} at (0,0) size 278x18
           text run at (0,0) width 278: "Font: Avenir-Book Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,5487) size 769x18
+      RenderBlock {DIV} at (0,5471) size 769x18
         RenderText {#text} at (0,0) size 278x18
           text run at (0,0) width 278: "Font: Avenir-Book Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,5505) size 769x18
+      RenderBlock {DIV} at (0,5489) size 769x18
         RenderText {#text} at (0,0) size 278x18
           text run at (0,0) width 278: "Font: Avenir-Book Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,5523) size 769x18
+      RenderBlock {DIV} at (0,5507) size 769x18
         RenderText {#text} at (0,0) size 278x18
           text run at (0,0) width 278: "Font: Avenir-Book Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,5541) size 769x18
+      RenderBlock {DIV} at (0,5525) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Book Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,5559) size 769x18
+      RenderBlock {DIV} at (0,5543) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Book Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,5577) size 769x18
+      RenderBlock {DIV} at (0,5561) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Book Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,5595) size 769x18
+      RenderBlock {DIV} at (0,5579) size 769x18
         RenderText {#text} at (0,0) size 287x18
           text run at (0,0) width 287: "Font: Avenir-Book Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,5613) size 769x18
+      RenderBlock {DIV} at (0,5597) size 769x18
         RenderText {#text} at (0,0) size 298x18
           text run at (0,0) width 298: "Font: Avenir-Medium Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,5631) size 769x18
+      RenderBlock {DIV} at (0,5615) size 769x18
         RenderText {#text} at (0,0) size 298x18
           text run at (0,0) width 298: "Font: Avenir-Medium Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,5649) size 769x18
+      RenderBlock {DIV} at (0,5633) size 769x18
         RenderText {#text} at (0,0) size 298x18
           text run at (0,0) width 298: "Font: Avenir-Medium Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,5667) size 769x18
+      RenderBlock {DIV} at (0,5651) size 769x18
         RenderText {#text} at (0,0) size 298x18
           text run at (0,0) width 298: "Font: Avenir-Medium Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,5685) size 769x18
+      RenderBlock {DIV} at (0,5669) size 769x18
         RenderText {#text} at (0,0) size 298x18
           text run at (0,0) width 298: "Font: Avenir-Medium Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,5703) size 769x18
+      RenderBlock {DIV} at (0,5687) size 769x18
         RenderText {#text} at (0,0) size 307x18
           text run at (0,0) width 307: "Font: Avenir-Medium Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,5721) size 769x18
+      RenderBlock {DIV} at (0,5705) size 769x18
         RenderText {#text} at (0,0) size 307x18
           text run at (0,0) width 307: "Font: Avenir-Medium Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,5739) size 769x18
+      RenderBlock {DIV} at (0,5723) size 769x18
         RenderText {#text} at (0,0) size 307x18
           text run at (0,0) width 307: "Font: Avenir-Medium Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,5757) size 769x18
+      RenderBlock {DIV} at (0,5741) size 769x18
         RenderText {#text} at (0,0) size 307x18
           text run at (0,0) width 307: "Font: Avenir-Medium Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,5775) size 769x18
+      RenderBlock {DIV} at (0,5759) size 769x18
         RenderText {#text} at (0,0) size 282x18
           text run at (0,0) width 282: "Font: Avenir-Black Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,5793) size 769x18
+      RenderBlock {DIV} at (0,5777) size 769x18
         RenderText {#text} at (0,0) size 282x18
           text run at (0,0) width 282: "Font: Avenir-Black Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,5811) size 769x18
+      RenderBlock {DIV} at (0,5795) size 769x18
         RenderText {#text} at (0,0) size 282x18
           text run at (0,0) width 282: "Font: Avenir-Black Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,5829) size 769x18
+      RenderBlock {DIV} at (0,5813) size 769x18
         RenderText {#text} at (0,0) size 282x18
           text run at (0,0) width 282: "Font: Avenir-Black Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,5847) size 769x18
+      RenderBlock {DIV} at (0,5831) size 769x18
         RenderText {#text} at (0,0) size 282x18
           text run at (0,0) width 282: "Font: Avenir-Black Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,5865) size 769x18
+      RenderBlock {DIV} at (0,5849) size 769x18
         RenderText {#text} at (0,0) size 290x18
           text run at (0,0) width 290: "Font: Avenir-Black Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,5883) size 769x18
+      RenderBlock {DIV} at (0,5867) size 769x18
         RenderText {#text} at (0,0) size 290x18
           text run at (0,0) width 290: "Font: Avenir-Black Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,5901) size 769x18
+      RenderBlock {DIV} at (0,5885) size 769x18
         RenderText {#text} at (0,0) size 290x18
           text run at (0,0) width 290: "Font: Avenir-Black Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,5919) size 769x18
+      RenderBlock {DIV} at (0,5903) size 769x18
         RenderText {#text} at (0,0) size 290x18
           text run at (0,0) width 290: "Font: Avenir-Black Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,5937) size 769x18
+      RenderBlock {DIV} at (0,5921) size 769x18
         RenderText {#text} at (0,0) size 286x18
           text run at (0,0) width 286: "Font: Avenir-Heavy Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,5955) size 769x18
+      RenderBlock {DIV} at (0,5939) size 769x18
         RenderText {#text} at (0,0) size 286x18
           text run at (0,0) width 286: "Font: Avenir-Heavy Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,5973) size 769x18
+      RenderBlock {DIV} at (0,5957) size 769x18
         RenderText {#text} at (0,0) size 286x18
           text run at (0,0) width 286: "Font: Avenir-Heavy Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,5991) size 769x18
+      RenderBlock {DIV} at (0,5975) size 769x18
         RenderText {#text} at (0,0) size 286x18
           text run at (0,0) width 286: "Font: Avenir-Heavy Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,6009) size 769x18
+      RenderBlock {DIV} at (0,5993) size 769x18
         RenderText {#text} at (0,0) size 286x18
           text run at (0,0) width 286: "Font: Avenir-Heavy Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,6027) size 769x18
+      RenderBlock {DIV} at (0,6011) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Heavy Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,6045) size 769x18
+      RenderBlock {DIV} at (0,6029) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Heavy Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,6063) size 769x18
+      RenderBlock {DIV} at (0,6047) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Heavy Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,6081) size 769x18
+      RenderBlock {DIV} at (0,6065) size 769x18
         RenderText {#text} at (0,0) size 294x18
           text run at (0,0) width 294: "Font: Avenir-Heavy Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,6099) size 769x18
+      RenderBlock {DIV} at (0,6083) size 769x18
         RenderText {#text} at (0,0) size 331x18
           text run at (0,0) width 331: "Font: Avenir-LightOblique Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,6117) size 769x18
+      RenderBlock {DIV} at (0,6101) size 769x18
         RenderText {#text} at (0,0) size 331x18
           text run at (0,0) width 331: "Font: Avenir-LightOblique Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,6135) size 769x18
+      RenderBlock {DIV} at (0,6119) size 769x18
         RenderText {#text} at (0,0) size 331x18
           text run at (0,0) width 331: "Font: Avenir-LightOblique Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,6153) size 769x18
+      RenderBlock {DIV} at (0,6137) size 769x18
         RenderText {#text} at (0,0) size 331x18
           text run at (0,0) width 331: "Font: Avenir-LightOblique Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,6171) size 769x18
+      RenderBlock {DIV} at (0,6155) size 769x18
         RenderText {#text} at (0,0) size 331x18
           text run at (0,0) width 331: "Font: Avenir-LightOblique Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,6189) size 769x18
+      RenderBlock {DIV} at (0,6173) size 769x18
         RenderText {#text} at (0,0) size 340x18
           text run at (0,0) width 340: "Font: Avenir-LightOblique Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,6207) size 769x18
+      RenderBlock {DIV} at (0,6191) size 769x18
         RenderText {#text} at (0,0) size 340x18
           text run at (0,0) width 340: "Font: Avenir-LightOblique Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,6225) size 769x18
+      RenderBlock {DIV} at (0,6209) size 769x18
         RenderText {#text} at (0,0) size 340x18
           text run at (0,0) width 340: "Font: Avenir-LightOblique Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,6243) size 769x18
+      RenderBlock {DIV} at (0,6227) size 769x18
         RenderText {#text} at (0,0) size 340x18
           text run at (0,0) width 340: "Font: Avenir-LightOblique Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,6261) size 769x18
+      RenderBlock {DIV} at (0,6245) size 769x18
         RenderText {#text} at (0,0) size 330x18
           text run at (0,0) width 330: "Font: Avenir-BookOblique Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,6279) size 769x18
+      RenderBlock {DIV} at (0,6263) size 769x18
         RenderText {#text} at (0,0) size 330x18
           text run at (0,0) width 330: "Font: Avenir-BookOblique Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,6297) size 769x18
+      RenderBlock {DIV} at (0,6281) size 769x18
         RenderText {#text} at (0,0) size 330x18
           text run at (0,0) width 330: "Font: Avenir-BookOblique Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,6315) size 769x18
+      RenderBlock {DIV} at (0,6299) size 769x18
         RenderText {#text} at (0,0) size 330x18
           text run at (0,0) width 330: "Font: Avenir-BookOblique Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,6333) size 769x18
+      RenderBlock {DIV} at (0,6317) size 769x18
         RenderText {#text} at (0,0) size 330x18
           text run at (0,0) width 330: "Font: Avenir-BookOblique Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,6351) size 769x18
+      RenderBlock {DIV} at (0,6335) size 769x18
         RenderText {#text} at (0,0) size 339x18
           text run at (0,0) width 339: "Font: Avenir-BookOblique Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,6369) size 769x18
+      RenderBlock {DIV} at (0,6353) size 769x18
         RenderText {#text} at (0,0) size 339x18
           text run at (0,0) width 339: "Font: Avenir-BookOblique Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,6387) size 769x18
+      RenderBlock {DIV} at (0,6371) size 769x18
         RenderText {#text} at (0,0) size 339x18
           text run at (0,0) width 339: "Font: Avenir-BookOblique Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,6405) size 769x18
+      RenderBlock {DIV} at (0,6389) size 769x18
         RenderText {#text} at (0,0) size 339x18
           text run at (0,0) width 339: "Font: Avenir-BookOblique Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,6423) size 769x18
+      RenderBlock {DIV} at (0,6407) size 769x18
         RenderText {#text} at (0,0) size 349x18
           text run at (0,0) width 349: "Font: Avenir-MediumOblique Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,6441) size 769x18
+      RenderBlock {DIV} at (0,6425) size 769x18
         RenderText {#text} at (0,0) size 349x18
           text run at (0,0) width 349: "Font: Avenir-MediumOblique Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,6459) size 769x18
+      RenderBlock {DIV} at (0,6443) size 769x18
         RenderText {#text} at (0,0) size 349x18
           text run at (0,0) width 349: "Font: Avenir-MediumOblique Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,6477) size 769x18
+      RenderBlock {DIV} at (0,6461) size 769x18
         RenderText {#text} at (0,0) size 349x18
           text run at (0,0) width 349: "Font: Avenir-MediumOblique Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,6495) size 769x18
+      RenderBlock {DIV} at (0,6479) size 769x18
         RenderText {#text} at (0,0) size 349x18
           text run at (0,0) width 349: "Font: Avenir-MediumOblique Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,6513) size 769x18
+      RenderBlock {DIV} at (0,6497) size 769x18
         RenderText {#text} at (0,0) size 359x18
           text run at (0,0) width 359: "Font: Avenir-MediumOblique Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,6531) size 769x18
+      RenderBlock {DIV} at (0,6515) size 769x18
         RenderText {#text} at (0,0) size 359x18
           text run at (0,0) width 359: "Font: Avenir-MediumOblique Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,6549) size 769x18
+      RenderBlock {DIV} at (0,6533) size 769x18
         RenderText {#text} at (0,0) size 359x18
           text run at (0,0) width 359: "Font: Avenir-MediumOblique Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,6567) size 769x18
+      RenderBlock {DIV} at (0,6551) size 769x18
         RenderText {#text} at (0,0) size 359x18
           text run at (0,0) width 359: "Font: Avenir-MediumOblique Weight: 900 Style: italic"
-      RenderBlock {DIV} at (0,6585) size 769x18
+      RenderBlock {DIV} at (0,6569) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-BlackOblique Weight: 100 Style: italic"
-      RenderBlock {DIV} at (0,6603) size 769x18
+      RenderBlock {DIV} at (0,6587) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-BlackOblique Weight: 200 Style: italic"
-      RenderBlock {DIV} at (0,6621) size 769x18
+      RenderBlock {DIV} at (0,6605) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-BlackOblique Weight: 300 Style: italic"
-      RenderBlock {DIV} at (0,6639) size 769x18
+      RenderBlock {DIV} at (0,6623) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-BlackOblique Weight: 400 Style: italic"
-      RenderBlock {DIV} at (0,6657) size 769x18
+      RenderBlock {DIV} at (0,6641) size 769x18
         RenderText {#text} at (0,0) size 333x18
           text run at (0,0) width 333: "Font: Avenir-BlackOblique Weight: 500 Style: italic"
-      RenderBlock {DIV} at (0,6675) size 769x18
+      RenderBlock {DIV} at (0,6659) size 769x18
         RenderText {#text} at (0,0) size 343x18
           text run at (0,0) width 343: "Font: Avenir-BlackOblique Weight: 600 Style: italic"
-      RenderBlock {DIV} at (0,6693) size 769x18
+      RenderBlock {DIV} at (0,6677) size 769x18
         RenderText {#text} at (0,0) size 343x18
           text run at (0,0) width 343: "Font: Avenir-BlackOblique Weight: 700 Style: italic"
-      RenderBlock {DIV} at (0,6711) size 769x18
+      RenderBlock {DIV} at (0,6695) size 769x18
         RenderText {#text} at (0,0) size 343x18
           text run at (0,0) width 343: "Font: Avenir-BlackOblique Weight: 800 Style: italic"
-      RenderBlock {DIV} at (0,6729) size 769x18
+      RenderBlock {DIV} at (0,6713) size 769x18
         RenderText {#text} at (0,0) size 343x18
           text run at (0,0) width 343: "Font: Avenir-BlackOblique Weight: 900 Style: italic"
index dd50e66..bd5cb67 100644 (file)
@@ -1,3 +1,82 @@
+2017-03-01  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Implement font-stretch for installed fonts
+        https://bugs.webkit.org/show_bug.cgi?id=168888
+
+        Reviewed by Darin Adler and Dave Hyatt.
+
+        This patch implements the font-stretch property. Both parsing and the implementation is
+        implemented. Contrary to the name, this property doesn't actually stretch fonts; instead,
+        it provides one more input to the font selection routine.
+
+        The mapping from Core Text's [-1, 1] width values to font-stretch's percentage-based
+        values is not perfect. For now, I've implemented a piecewise linear curve mapping the
+        two. However, I expect to be able to improve this transfer function soon.
+
+        This patch does not implement the font-stretch descriptor in @font-face, and therefore
+        does not work with web fonts. I will add this support in
+        https://bugs.webkit.org/show_bug.cgi?id=168892. The reason it isn't done in this patch is
+        it requires some architectural changes to our CSSFontFace classes which are large enough
+        they should be separated into their own patch.
+
+        This patch lays the groundwork for implementing the 'wdth' variation axis. It does this
+        by adding a floating-point value to RenderStyle instead of just an enum. The font-stretch
+        keywords get converted to these floating-point numbers in accordance with the Fonts spec.
+        This patch doesn't actually implement the variations piece of font-stretch, because that
+        piece also requires some architectural changes. This patch just implements the installed
+        font selection piece.
+
+        This patch also fixes the regression introduced in r213163 with Helvetica Neue. Now that
+        our font selection algorithm has a concept of font stretch, weights 800 and 900 of
+        Helvetica Neue are rendered as expected. (And this patch updates the tests to make sure.)
+
+        Tests: fast/text/font-stretch-parse.html
+               fast/text/font-stretch-shorthand.html
+               FontCacheTest.FontLookupFromFamilyName
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::fontStretchFromStyle): Map style values to CSS keywords.
+        (WebCore::ComputedStyleExtractor::propertyValue): Call the above function.
+        * css/CSSFontValue.cpp:
+        (WebCore::CSSFontValue::customCSSText): Used in getComputedStyle() for the "font"
+        shorthand.
+        (WebCore::CSSFontValue::equals):
+        * css/CSSFontValue.h:
+        * css/CSSProperties.json:
+        * css/StyleBuilderConverter.h:
+        (WebCore::StyleBuilderConverter::convertFontStretch): Map CSS keywords to style values.
+        * css/StyleProperties.cpp:
+        (WebCore::StyleProperties::appendFontLonghandValueIfExplicit): Used for
+        Element.style.font.
+        (WebCore::StyleProperties::fontValue):
+        * css/parser/CSSParserFastPaths.cpp:
+        (WebCore::CSSParserFastPaths::isKeywordPropertyID): Now that variation fonts are being
+        implemented, font-stretch is no longer a keyword property. Instead, it can also take a
+        number or percentage.
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::consumeFontStretch): Parse the value.
+        (WebCore::CSSPropertyParser::parseSingleValue): Call the above function.
+        (WebCore::CSSPropertyParser::consumeFont): Ditto.
+        * platform/graphics/FontCache.h:
+        (WebCore::FontDescriptionKey::FontDescriptionKey): Caches should be sensitive to this
+        new value.
+        (WebCore::FontDescriptionKey::operator==):
+        (WebCore::FontDescriptionKey::computeHash):
+        * platform/graphics/FontDescription.h:
+        (WebCore::FontDescription::stretch): The parsed style value.
+        (WebCore::FontDescription::setStretch):
+        (WebCore::FontDescription::operator==):
+        (WebCore::FontCascadeDescription::initialStretch):
+        * platform/graphics/cocoa/FontCacheCoreText.cpp:
+        (WebCore::FontDatabase::InstalledFont::InstalledFont): Update the installed font selection
+        algorithm to understand font-stretch.
+        (WebCore::findClosestStretch):
+        (WebCore::filterStretch):
+        (WebCore::findClosestFont):
+        (WebCore::platformFontLookupWithFamily):
+        (WebCore::fontWithFamily):
+        (WebCore::FontCache::createFontPlatformData):
+
 2017-03-01  Antti Koivisto  <antti@apple.com>
 
         Rename recalcStyle to resolveStyle and clean up the signature
index ec6657a..b0961b1 100644 (file)
@@ -155,6 +155,7 @@ static const CSSPropertyID computedProperties[] = {
     CSSPropertyFloat,
     CSSPropertyFontFamily,
     CSSPropertyFontSize,
+    CSSPropertyFontStretch,
     CSSPropertyFontStyle,
     CSSPropertyFontSynthesis,
     CSSPropertyFontVariant,
@@ -1918,6 +1919,30 @@ static Ref<CSSPrimitiveValue> fontStyleFromStyle(const RenderStyle& style)
     return CSSValuePool::singleton().createIdentifierValue(CSSValueNormal);
 }
 
+static Ref<CSSPrimitiveValue> fontStretchFromStyle(const RenderStyle& style)
+{
+    float stretch = style.fontDescription().stretch();
+    if (stretch == 50)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueUltraCondensed);
+    if (stretch == 62.5)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueExtraCondensed);
+    if (stretch == 75)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueCondensed);
+    if (stretch == 87.5)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueSemiCondensed);
+    if (stretch == 100)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueNormal);
+    if (stretch == 112.5)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueSemiExpanded);
+    if (stretch == 125)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueExpanded);
+    if (stretch == 150)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueExtraExpanded);
+    if (stretch == 200)
+        return CSSValuePool::singleton().createIdentifierValue(CSSValueUltraExpanded);
+    return CSSValuePool::singleton().createValue(stretch, CSSPrimitiveValue::CSS_PERCENTAGE);
+}
+
 static Ref<CSSValue> fontVariantFromStyle(const RenderStyle& style)
 {
     if (style.fontDescription().variantSettings().isAllNormal())
@@ -2888,6 +2913,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID,
             else
                 computedFont->variant = CSSValuePool::singleton().createIdentifierValue(CSSValueNormal);
             computedFont->weight = fontWeightFromStyle(*style);
+            computedFont->stretch = fontStretchFromStyle(*style);
             computedFont->size = fontSizeFromStyle(*style);
             computedFont->lineHeight = lineHeightFromStyle(*style);
             computedFont->family = fontFamilyListFromStyle(*style);
@@ -2899,6 +2925,8 @@ RefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID,
             return fontSizeFromStyle(*style);
         case CSSPropertyFontStyle:
             return fontStyleFromStyle(*style);
+        case CSSPropertyFontStretch:
+            return fontStretchFromStyle(*style);
         case CSSPropertyFontVariant:
             return fontVariantFromStyle(*style);
         case CSSPropertyFontWeight:
@@ -3900,7 +3928,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID,
             break;
 
         /* Unimplemented @font-face properties */
-        case CSSPropertyFontStretch:
         case CSSPropertySrc:
         case CSSPropertyUnicodeRange:
             break;
index f80d43d..2392c3a 100644 (file)
@@ -44,6 +44,11 @@ String CSSFontValue::customCSSText() const
             result.append(' ');
         result.append(weight->cssText());
     }
+    if (weight) {
+        if (!result.isEmpty())
+            result.append(' ');
+        result.append(stretch->cssText());
+    }
     if (size) {
         if (!result.isEmpty())
             result.append(' ');
@@ -69,6 +74,7 @@ bool CSSFontValue::equals(const CSSFontValue& other) const
     return compareCSSValuePtr(style, other.style)
         && compareCSSValuePtr(variant, other.variant)
         && compareCSSValuePtr(weight, other.weight)
+        && compareCSSValuePtr(stretch, other.stretch)
         && compareCSSValuePtr(size, other.size)
         && compareCSSValuePtr(lineHeight, other.lineHeight)
         && compareCSSValuePtr(family, other.family);
index 79d548d..70eaf34 100644 (file)
@@ -42,6 +42,7 @@ public:
     RefPtr<CSSPrimitiveValue> style;
     RefPtr<CSSPrimitiveValue> variant;
     RefPtr<CSSPrimitiveValue> weight;
+    RefPtr<CSSPrimitiveValue> stretch;
     RefPtr<CSSPrimitiveValue> size;
     RefPtr<CSSPrimitiveValue> lineHeight;
     RefPtr<CSSValueList> family;
index ea18cf1..776b5f9 100644 (file)
                 "url": "https://www.w3.org/TR/css-fonts-3/#font-weight-prop"
             }
         },
+        "font-stretch": {
+            "inherited": true,
+            "values": [
+                "normal",
+                "ultra-condensed",
+                "extra-condensed",
+                "condensed",
+                "semi-condensed",
+                "semi-expanded",
+                "expanded",
+                "extra-expanded",
+                "ultra-expanded"
+            ],
+            "codegen-properties": {
+                "name-for-methods": "Stretch",
+                "font-property": true,
+                "high-priority": true,
+                "converter": "FontStretch"
+            },
+            "specification": {
+                "category": "css-fonts",
+                "url": "https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"
+            }
+        },
         "text-rendering": {
             "inherited": true,
             "values": [
                     "font-style",
                     "font-variant-caps",
                     "font-weight",
+                    "font-stretch",
                     "line-height"
                 ]
             },
                 "url": "https://www.w3.org/TR/css-fonts-3/#propdef-font-variant"
             }
         },
-        "font-stretch": {
-            "values": [
-                "normal",
-                "ultra-condensed",
-                "extra-condensed",
-                "condensed",
-                "semi-condensed",
-                "semi-expanded",
-                "expanded",
-                "extra-expanded",
-                "ultra-expanded"
-            ],
-            "codegen-properties": {
-                "skip-builder": true
-            },
-            "specification": {
-                "category": "css-fonts",
-                "url": "https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"
-            }
-        },
         "glyph-orientation-horizontal": {
             "inherited": true,
             "codegen-properties": {
index 82a8643..3d1492b 100644 (file)
@@ -114,6 +114,7 @@ public:
     static bool convertOverflowScrolling(StyleResolver&, const CSSValue&);
 #endif
     static FontFeatureSettings convertFontFeatureSettings(StyleResolver&, const CSSValue&);
+    static float convertFontStretch(StyleResolver&, const CSSValue&);
 #if ENABLE(VARIATION_FONTS)
     static FontVariationSettings convertFontVariationSettings(StyleResolver&, const CSSValue&);
 #endif
@@ -1153,6 +1154,38 @@ inline FontFeatureSettings StyleBuilderConverter::convertFontFeatureSettings(Sty
     return settings;
 }
 
+inline float StyleBuilderConverter::convertFontStretch(StyleResolver&, const CSSValue& value)
+{
+    ASSERT(is<CSSPrimitiveValue>(value));
+    const auto& primitiveValue = downcast<CSSPrimitiveValue>(value);
+    if (primitiveValue.isPercentage() || primitiveValue.isNumber())
+        return primitiveValue.floatValue();
+
+    switch (primitiveValue.valueID()) {
+    case CSSValueUltraCondensed:
+        return 50;
+    case CSSValueExtraCondensed:
+        return 62.5;
+    case CSSValueCondensed:
+        return 75;
+    case CSSValueSemiCondensed:
+        return 87.5;
+    case CSSValueNormal:
+        return 100;
+    case CSSValueSemiExpanded:
+        return 112.5;
+    case CSSValueExpanded:
+        return 125;
+    case CSSValueExtraExpanded:
+        return 150;
+    case CSSValueUltraExpanded:
+        return 200;
+    default:
+        ASSERT_NOT_REACHED();
+        return 100;
+    }
+}
+
 #if ENABLE(VARIATION_FONTS)
 inline FontVariationSettings StyleBuilderConverter::convertFontVariationSettings(StyleResolver&, const CSSValue& value)
 {
index 2b3fa3d..78ea3ed 100644 (file)
@@ -282,6 +282,7 @@ void StyleProperties::appendFontLonghandValueIfExplicit(CSSPropertyID propertyID
     case CSSPropertyFontFamily:
     case CSSPropertyFontVariantCaps:
     case CSSPropertyFontWeight:
+    case CSSPropertyFontStretch:
         prefix = ' ';
         break;
     case CSSPropertyLineHeight:
@@ -316,6 +317,7 @@ String StyleProperties::fontValue() const
     appendFontLonghandValueIfExplicit(CSSPropertyFontStyle, result, commonValue);
     appendFontLonghandValueIfExplicit(CSSPropertyFontVariantCaps, result, commonValue);
     appendFontLonghandValueIfExplicit(CSSPropertyFontWeight, result, commonValue);
+    appendFontLonghandValueIfExplicit(CSSPropertyFontStretch, result, commonValue);
     if (!result.isEmpty())
         result.append(' ');
     result.append(fontSizeProperty.value()->cssText());
index 1352dfa..bf16172 100644 (file)
@@ -561,8 +561,6 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId
         return valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueNone;
     case CSSPropertyFontStyle: // normal | italic | oblique
         return valueID == CSSValueNormal || valueID == CSSValueItalic || valueID == CSSValueOblique;
-    case CSSPropertyFontStretch: // normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded
-        return valueID == CSSValueNormal || (valueID >= CSSValueUltraCondensed && valueID <= CSSValueUltraExpanded);
     case CSSPropertyImageRendering: // auto | optimizeContrast | pixelated | optimizeSpeed | crispEdges | optimizeQuality | webkit-crispEdges
         return valueID == CSSValueAuto || valueID == CSSValueOptimizeSpeed || valueID == CSSValueOptimizeQuality || valueID == CSSValueWebkitCrispEdges || valueID == CSSValueWebkitOptimizeContrast || valueID == CSSValueCrispEdges || valueID == CSSValuePixelated;
 #if ENABLE(CSS_COMPOSITING)
@@ -833,7 +831,6 @@ bool CSSParserFastPaths::isKeywordPropertyID(CSSPropertyID propertyId)
     case CSSPropertyFlexDirection:
     case CSSPropertyFlexWrap:
     case CSSPropertyFloat:
-    case CSSPropertyFontStretch:
     case CSSPropertyFontStyle:
     case CSSPropertyFontVariantAlternates:
     case CSSPropertyFontVariantCaps:
index 4c7c7c5..3d36b1f 100644 (file)
@@ -877,6 +877,20 @@ static RefPtr<CSSPrimitiveValue> consumeFontWeight(CSSParserTokenRange& range)
     return CSSValuePool::singleton().createIdentifierValue(static_cast<CSSValueID>(CSSValue100 + weight / 100 - 1));
 }
 
+static RefPtr<CSSPrimitiveValue> consumeFontStretchKeywordValue(CSSParserTokenRange& range)
+{
+    return consumeIdent<CSSValueUltraCondensed, CSSValueExtraCondensed, CSSValueCondensed, CSSValueSemiCondensed, CSSValueNormal, CSSValueSemiExpanded, CSSValueExpanded, CSSValueExtraExpanded, CSSValueUltraExpanded>(range);
+}
+
+static RefPtr<CSSPrimitiveValue> consumeFontStretch(CSSParserTokenRange& range)
+{
+    if (auto result = consumeFontStretchKeywordValue(range))
+        return result;
+    if (auto percent = consumePercent(range, ValueRangeAll))
+        return percent;
+    return consumeNumber(range, ValueRangeAll);
+}
+
 static String concatenateFamilyName(CSSParserTokenRange& range)
 {
     StringBuilder builder;
@@ -3650,6 +3664,8 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
         return consumeFontFamily(m_range);
     case CSSPropertyFontWeight:
         return consumeFontWeight(m_range);
+    case CSSPropertyFontStretch:
+        return consumeFontStretch(m_range);
     case CSSPropertyFontSynthesis:
         return consumeFontSynthesis(m_range);
 #if ENABLE(VARIATION_FONTS)
@@ -4169,6 +4185,10 @@ bool CSSPropertyParser::parseFontFaceDescriptor(CSSPropertyID propId)
         parsedValue = consumeFontFaceUnicodeRange(m_range);
         break;
     case CSSPropertyFontStretch:
+        // FIXME: Implement this.
+        m_range.consumeIncludingWhitespace();
+        parsedValue = CSSValuePool::singleton().createIdentifierValue(CSSValueNormal);
+        break;
     case CSSPropertyFontStyle: {
         CSSValueID id = m_range.consumeIncludingWhitespace().id();
         if (!CSSParserFastPaths::isValidKeywordPropertyAndValue(propId, id, m_context.mode))
@@ -4252,8 +4272,8 @@ bool CSSPropertyParser::consumeFont(bool important)
     RefPtr<CSSPrimitiveValue> fontStyle;
     RefPtr<CSSPrimitiveValue> fontVariantCaps;
     RefPtr<CSSPrimitiveValue> fontWeight;
-    
-    // FIXME-NEWPARSER: Implement. RefPtr<CSSPrimitiveValue> fontStretch;
+    RefPtr<CSSPrimitiveValue> fontStretch;
+
     while (!m_range.atEnd()) {
         CSSValueID id = m_range.peek().id();
         if (!fontStyle && CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyFontStyle, id, m_context.mode)) {
@@ -4272,10 +4292,11 @@ bool CSSPropertyParser::consumeFont(bool important)
             if (fontWeight)
                 continue;
         }
-        /* FIXME-NEWPARSER: Implement
-         if (!fontStretch && CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyFontStretch, id, m_context.mode, m_styleSheetContents))
-            fontStretch = consumeIdent(m_range);
-        else*/
+        if (!fontStretch) {
+            fontStretch = consumeFontStretchKeywordValue(m_range);
+            if (fontStretch)
+                continue;
+        }
         break;
     }
 
@@ -4285,6 +4306,7 @@ bool CSSPropertyParser::consumeFont(bool important)
     bool hasStyle = fontStyle;
     bool hasVariant = fontVariantCaps;
     bool hasWeight = fontWeight;
+    bool hasStretch = fontStretch;
     
     addProperty(CSSPropertyFontStyle, CSSPropertyFont, fontStyle ? fontStyle.releaseNonNull() : CSSValuePool::singleton().createIdentifierValue(CSSValueNormal), important, !hasStyle);
     addProperty(CSSPropertyFontVariantCaps, CSSPropertyFont, fontVariantCaps ? fontVariantCaps.releaseNonNull() : CSSValuePool::singleton().createIdentifierValue(CSSValueNormal), important, !hasVariant);
@@ -4293,8 +4315,9 @@ bool CSSPropertyParser::consumeFont(bool important)
     addProperty(CSSPropertyFontVariantLigatures, CSSPropertyFont, CSSValuePool::singleton().createIdentifierValue(CSSValueNormal), important, true);
     addProperty(CSSPropertyFontVariantNumeric, CSSPropertyFont, CSSValuePool::singleton().createIdentifierValue(CSSValueNormal), important, true);
 */
-    
+
     addProperty(CSSPropertyFontWeight, CSSPropertyFont, fontWeight ? fontWeight.releaseNonNull() : CSSValuePool::singleton().createIdentifierValue(CSSValueNormal), important, !hasWeight);
+    addProperty(CSSPropertyFontStretch, CSSPropertyFont, fontStretch ? fontStretch.releaseNonNull() : CSSValuePool::singleton().createIdentifierValue(CSSValueNormal), important, !hasStretch);
 
     // Now a font size _must_ come.
     RefPtr<CSSValue> fontSize = consumeFontSize(m_range, m_context.mode);
index 9765176..8958635 100644 (file)
@@ -73,6 +73,7 @@ struct FontDescriptionKey {
     FontDescriptionKey(const FontDescription& description)
         : m_size(description.computedPixelSize())
         , m_weight(description.weight())
+        , m_stretch(description.stretch())
         , m_flags(makeFlagsKey(description))
         , m_featureSettings(description.featureSettings())
 #if ENABLE(VARIATION_FONTS)
@@ -88,6 +89,7 @@ struct FontDescriptionKey {
     {
         return m_size == other.m_size
             && m_weight == other.m_weight
+            && m_stretch == other.m_stretch
             && m_flags == other.m_flags
 #if ENABLE(VARIATION_FONTS)
             && m_variationSettings == other.m_variationSettings
@@ -107,6 +109,7 @@ struct FontDescriptionKey {
         IntegerHasher hasher;
         hasher.add(m_size);
         hasher.add(m_weight);
+        hasher.add(m_stretch);
         for (unsigned flagItem : m_flags)
             hasher.add(flagItem);
         hasher.add(m_featureSettings.hash());
@@ -151,6 +154,7 @@ private:
     // FontCascade::locale() is explicitly not included in this struct.
     unsigned m_size { 0 };
     unsigned m_weight { 0 };
+    float m_stretch { 0 };
     std::array<unsigned, 2> m_flags {{ 0, 0 }};
     FontFeatureSettings m_featureSettings;
 #if ENABLE(VARIATION_FONTS)
index 0c03e9a..8efd69d 100644 (file)
@@ -42,7 +42,7 @@ struct SameSizeAsFontCascadeDescription {
     char c;
 #endif
     AtomicString string;
-    float size;
+    float size[2];
     unsigned bitfields1;
     unsigned bitfields2 : 22;
     void* array;
index a7fda40..3b907cb 100644 (file)
@@ -46,6 +46,7 @@ public:
 
     float computedSize() const { return m_computedSize; }
     FontItalic italic() const { return static_cast<FontItalic>(m_italic); }
+    float stretch() const { return m_stretch; }
     int computedPixelSize() const { return int(m_computedSize + 0.5f); }
     FontWeight weight() const { return static_cast<FontWeight>(m_weight); }
     FontWeight lighterWeight() const;
@@ -97,6 +98,7 @@ public:
 
     void setComputedSize(float s) { m_computedSize = clampToFloat(s); }
     void setItalic(FontItalic i) { m_italic = i; }
+    void setStretch(float stretch) { m_stretch = stretch; }
     void setIsItalic(bool i) { setItalic(i ? FontItalicOn : FontItalicOff); }
     void setWeight(FontWeight w) { m_weight = w; }
     void setRenderingMode(FontRenderingMode mode) { m_renderingMode = static_cast<unsigned>(mode); }
@@ -134,6 +136,7 @@ private:
     FontVariationSettings m_variationSettings;
     AtomicString m_locale;
 
+    float m_stretch { 100 }; // Stretch, or "width," of the font
     float m_computedSize { 0 }; // Computed size adjusted for the minimum font size and the zoom factor.
     unsigned m_orientation : 1; // FontOrientation - Whether the font is rendering on a horizontal line or a vertical line.
     unsigned m_nonCJKGlyphOrientation : 1; // NonCJKGlyphOrientation - Only used by vertical text. Determines the default orientation for non-ideograph glyphs.
@@ -164,6 +167,7 @@ private:
 inline bool FontDescription::operator==(const FontDescription& other) const
 {
     return m_computedSize == other.m_computedSize
+        && m_stretch == other.m_stretch
         && m_italic == other.m_italic
         && m_weight == other.m_weight
         && m_renderingMode == other.m_renderingMode
@@ -261,6 +265,7 @@ public:
 
     // Initial values for font properties.
     static FontItalic initialItalic() { return FontItalicOff; }
+    static float initialStretch() { return 100; }
     static FontSmallCaps initialSmallCaps() { return FontSmallCapsOff; }
     static Kerning initialKerning() { return Kerning::Auto; }
     static FontSmoothingMode initialFontSmoothing() { return AutoSmoothing; }
index 9e3c122..37cad7a 100644 (file)
@@ -789,6 +789,7 @@ static inline bool isSystemFont(const AtomicString& family)
 
 #if !SHOULD_USE_CORE_TEXT_FONT_LOOKUP
 
+constexpr float stretchThreshold = 100;
 constexpr float italicThreshold = 20;
 constexpr float weightThreshold = 500;
 
@@ -859,9 +860,11 @@ public:
             if (traits) {
                 auto widthNumber = static_cast<CFNumberRef>(CFDictionaryGetValue(traits.get(), kCTFontWidthTrait));
                 if (widthNumber) {
-                    // FIXME: Normalize this from Core Text's [-1, 1] range to CSS's [50%, 200%] range.
-                    auto success = CFNumberGetValue(widthNumber, kCFNumberFloatType, &width);
+                    // FIXME: The normalization from Core Text's [-1, 1] range to CSS's [50%, 200%] range isn't perfect.
+                    float ctWidth;
+                    auto success = CFNumberGetValue(widthNumber, kCFNumberFloatType, &ctWidth);
                     ASSERT_UNUSED(success, success);
+                    width = ctWidth < 0.5 ? ctWidth * 50 + 100 : ctWidth * 150 + 50;
                 }
 
                 auto symbolicTraitsNumber = static_cast<CFNumberRef>(CFDictionaryGetValue(traits.get(), kCTFontSymbolicTrait));
@@ -999,15 +1002,63 @@ inline void iterateActiveFonts(const FontDatabase::InstalledFontFamily& installe
     });
 }
 
-static inline std::optional<float> findClosestStretch(float, const FontDatabase::InstalledFontFamily&, const std::unique_ptr<bool[]>&)
+static inline std::optional<float> findClosestStretch(float targetStretch, const FontDatabase::InstalledFontFamily& installedFonts, const std::unique_ptr<bool[]>& filter)
 {
-    // FIXME: Implement this.
-    return 0;
+    std::function<float(const FontDatabase::InstalledFont&)> computeScore;
+
+    if (targetStretch >= stretchThreshold) {
+        float threshold = std::max(targetStretch, installedFonts.stretchBounds.maximum);
+        computeScore = [&, threshold](const FontDatabase::InstalledFont& font) -> float {
+            ASSERT(font.stretch.isValid());
+            if (font.stretch.includes(targetStretch))
+                return 0;
+            ASSERT(font.stretch.minimum > targetStretch || font.stretch.maximum < targetStretch);
+            if (font.stretch.minimum > targetStretch)
+                return font.stretch.minimum - targetStretch;
+            ASSERT(font.stretch.maximum < targetStretch);
+            return threshold - font.stretch.maximum;
+        };
+    } else {
+        ASSERT(targetStretch < stretchThreshold);
+        float threshold = std::min(targetStretch, installedFonts.stretchBounds.minimum);
+        computeScore = [&, threshold](const FontDatabase::InstalledFont& font) -> float {
+            if (font.stretch.includes(targetStretch))
+                return 0;
+            ASSERT(font.stretch.minimum > targetStretch || font.stretch.maximum < targetStretch);
+            if (font.stretch.maximum < targetStretch)
+                return targetStretch - font.stretch.maximum;
+            ASSERT(font.stretch.minimum > targetStretch);
+            return font.stretch.minimum - threshold;
+        };
+    }
+
+    size_t closestIndex = 0;
+    std::optional<float> minimumScore;
+    iterateActiveFonts(installedFonts, filter, [&](auto& installedFont, size_t i) {
+        auto score = computeScore(installedFont);
+        if (!minimumScore || score < minimumScore.value()) {
+            minimumScore = score;
+            closestIndex = i;
+        }
+    });
+
+    if (!minimumScore)
+        return std::nullopt;
+    auto& winner = installedFonts.installedFonts[closestIndex];
+    if (winner.stretch.includes(targetStretch))
+        return targetStretch;
+    if (winner.stretch.minimum > targetStretch)
+        return winner.stretch.minimum;
+    ASSERT(winner.stretch.maximum < targetStretch);
+    return winner.stretch.maximum;
 }
 
-static inline void filterStretch(float, const FontDatabase::InstalledFontFamily&, std::unique_ptr<bool[]>&)
+static inline void filterStretch(float target, const FontDatabase::InstalledFontFamily& installedFonts, std::unique_ptr<bool[]>& filter)
 {
-    // FIXME: Implement this.
+    iterateActiveFonts(installedFonts, filter, [&](auto& installedFont, size_t i) {
+        if (!installedFont.stretch.includes(target))
+            filter[i] = false;
+    });
 }
 
 static inline std::optional<float> findClosestStyle(float targetStyle, const FontDatabase::InstalledFontFamily& installedFonts, const std::unique_ptr<bool[]>& filter)
@@ -1207,7 +1258,7 @@ static inline float computeTargetWeight(FontWeight weight)
     }
 }
 
-static const FontDatabase::InstalledFont* findClosestFont(const FontDatabase::InstalledFontFamily& familyFonts, CTFontSymbolicTraits requestedTraits, FontWeight weight)
+static const FontDatabase::InstalledFont* findClosestFont(const FontDatabase::InstalledFontFamily& familyFonts, CTFontSymbolicTraits requestedTraits, FontWeight weight, float stretch)
 {
     ASSERT(!familyFonts.isEmpty());
 
@@ -1217,7 +1268,7 @@ static const FontDatabase::InstalledFont* findClosestFont(const FontDatabase::In
         filter[i] = true;
 
     // FIXME: Implement this.
-    float targetStretch = 0;
+    float targetStretch = stretch;
     if (auto closestStretch = findClosestStretch(targetStretch, familyFonts, filter))
         filterStretch(closestStretch.value(), familyFonts, filter);
     else
@@ -1242,7 +1293,7 @@ static const FontDatabase::InstalledFont* findClosestFont(const FontDatabase::In
 
 #endif // !SHOULD_USE_CORE_TEXT_FONT_LOOKUP
 
-static RetainPtr<CTFontRef> platformFontLookupWithFamily(const AtomicString& family, CTFontSymbolicTraits requestedTraits, FontWeight weight, float size)
+static RetainPtr<CTFontRef> platformFontLookupWithFamily(const AtomicString& family, CTFontSymbolicTraits requestedTraits, FontWeight weight, float stretch, float size)
 {
     const auto& whitelist = fontWhitelist();
     if (!isSystemFont(family) && whitelist.size() && !whitelist.contains(family))
@@ -1250,6 +1301,7 @@ static RetainPtr<CTFontRef> platformFontLookupWithFamily(const AtomicString& fam
 
 
 #if SHOULD_USE_CORE_TEXT_FONT_LOOKUP
+    UNUSED_PARAM(stretch);
     return adoptCF(CTFontCreateForCSS(family.string().createCFString().get(), toCoreTextFontWeight(weight), requestedTraits, size));
 #else
     const auto& familyFonts = FontDatabase::singleton().collectionForFamily(family.string());
@@ -1271,7 +1323,7 @@ static RetainPtr<CTFontRef> platformFontLookupWithFamily(const AtomicString& fam
             const auto& familyFonts = FontDatabase::singleton().collectionForFamily(String(postScriptFamilyName.get()));
             if (familyFonts.isEmpty())
                 return nullptr;
-            if (const auto* installedFont = findClosestFont(familyFonts, requestedTraits, weight)) {
+            if (const auto* installedFont = findClosestFont(familyFonts, requestedTraits, weight, stretch)) {
                 if (!installedFont->fontDescriptor)
                     return nullptr;
                 return adoptCF(CTFontCreateWithFontDescriptor(installedFont->fontDescriptor.get(), size, nullptr));
@@ -1281,7 +1333,7 @@ static RetainPtr<CTFontRef> platformFontLookupWithFamily(const AtomicString& fam
         return adoptCF(CTFontCreateWithFontDescriptor(postScriptFont.fontDescriptor.get(), size, nullptr));
     }
 
-    if (const auto* installedFont = findClosestFont(familyFonts, requestedTraits, weight))
+    if (const auto* installedFont = findClosestFont(familyFonts, requestedTraits, weight, stretch))
         return adoptCF(CTFontCreateWithFontDescriptor(installedFont->fontDescriptor.get(), size, nullptr));
 
     return nullptr;
@@ -1304,14 +1356,14 @@ static void invalidateFontCache()
     FontCache::singleton().invalidate();
 }
 
-static RetainPtr<CTFontRef> fontWithFamily(const AtomicString& family, CTFontSymbolicTraits desiredTraits, FontWeight weight, const FontFeatureSettings& featureSettings, const FontVariantSettings& variantSettings, const FontVariationSettings& variationSettings, const FontFeatureSettings* fontFaceFeatures, const FontVariantSettings* fontFaceVariantSettings, const TextRenderingMode& textRenderingMode, float size)
+static RetainPtr<CTFontRef> fontWithFamily(const AtomicString& family, CTFontSymbolicTraits desiredTraits, FontWeight weight, float stretch, const FontFeatureSettings& featureSettings, const FontVariantSettings& variantSettings, const FontVariationSettings& variationSettings, const FontFeatureSettings* fontFaceFeatures, const FontVariantSettings* fontFaceVariantSettings, const TextRenderingMode& textRenderingMode, float size)
 {
     if (family.isEmpty())
         return nullptr;
 
     auto foundFont = platformFontWithFamilySpecialCase(family, weight, desiredTraits, size);
     if (!foundFont)
-        foundFont = platformFontLookupWithFamily(family, desiredTraits, weight, size);
+        foundFont = platformFontLookupWithFamily(family, desiredTraits, weight, stretch, size);
     return preparePlatformFont(foundFont.get(), textRenderingMode, fontFaceFeatures, fontFaceVariantSettings, featureSettings, variantSettings, variationSettings);
 }
 
@@ -1352,7 +1404,7 @@ std::unique_ptr<FontPlatformData> FontCache::createFontPlatformData(const FontDe
     CTFontSymbolicTraits traits = computeTraits(fontDescription);
     float size = fontDescription.computedPixelSize();
 
-    auto font = fontWithFamily(family, traits, fontDescription.weight(), fontDescription.featureSettings(), fontDescription.variantSettings(), fontDescription.variationSettings(), fontFaceFeatures, fontFaceVariantSettings, fontDescription.textRenderingMode(), size);
+    auto font = fontWithFamily(family, traits, fontDescription.weight(), fontDescription.stretch(), fontDescription.featureSettings(), fontDescription.variantSettings(), fontDescription.variationSettings(), fontFaceFeatures, fontFaceVariantSettings, fontDescription.textRenderingMode(), size);
 
 #if PLATFORM(MAC)
     if (!font) {
@@ -1363,7 +1415,7 @@ std::unique_ptr<FontPlatformData> FontCache::createFontPlatformData(const FontDe
         // Ignore the result because we want to use our own algorithm to actually find the font.
         autoActivateFont(family.string(), size);
 
-        font = fontWithFamily(family, traits, fontDescription.weight(), fontDescription.featureSettings(), fontDescription.variantSettings(), fontDescription.variationSettings(), fontFaceFeatures, fontFaceVariantSettings, fontDescription.textRenderingMode(), size);
+        font = fontWithFamily(family, traits, fontDescription.weight(), fontDescription.stretch(), fontDescription.featureSettings(), fontDescription.variantSettings(), fontDescription.variationSettings(), fontFaceFeatures, fontFaceVariantSettings, fontDescription.textRenderingMode(), size);
     }
 #endif
 
index a013f15..feb0259 100644 (file)
@@ -1,3 +1,17 @@
+2017-03-01  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Implement font-stretch for installed fonts
+        https://bugs.webkit.org/show_bug.cgi?id=168888
+
+        Reviewed by Darin Adler and Dave Hyatt.
+
+        Update TestWebKitAPI tests to test font-stretch too.
+
+        * TestWebKitAPI/Tests/WebCore/FontCache.cpp:
+        (TestWebKitAPI::createPlatformFont):
+        (TestWebKitAPI::compareFonts):
+        (TestWebKitAPI::TEST_F):
+
 2017-03-01  Alex Christensen  <achristensen@webkit.org>
 
         Unreviewed, rolling out r213259.
index 5520319..f52a005 100644 (file)
@@ -49,1347 +49,1370 @@ public:
     }
 };
 
-static std::unique_ptr<FontPlatformData> createPlatformFont(const char* familyName, FontWeight weight, FontItalic italic, float size)
+static std::unique_ptr<FontPlatformData> createPlatformFont(const char* familyName, FontWeight weight, FontItalic italic, float stretch, float size)
 {
     AtomicString familyNameString(familyName);
     FontCascadeDescription description;
     description.setOneFamily(familyNameString);
     description.setWeight(weight);
     description.setItalic(italic);
+    description.setStretch(stretch);
     description.setComputedSize(size);
 
     auto& fontCache = FontCache::singleton();
     return fontCache.createFontPlatformDataForTesting(description, familyNameString);
 }
 
-static bool compareFonts(const char* familyName, FontWeight weight, FontItalic italic, CFStringRef expectedPostScriptName)
+static bool compareFonts(const char* familyName, FontWeight weight, FontItalic italic, float stretch, CFStringRef expectedPostScriptName)
 {
     float size = 80;
-    auto platformFont = createPlatformFont(familyName, weight, italic, size);
+    auto platformFont = createPlatformFont(familyName, weight, italic, stretch, size);
     auto expectedFont = adoptCF(CTFontCreateWithName(expectedPostScriptName, size, nullptr));
     return platformFont && expectedFont && platformFont->font() && CFEqual(platformFont->font(), expectedFont.get());
 }
 
 TEST_F(FontCacheTest, FontLookupFromFamilyName)
 {
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight100, FontItalicOff, CFSTR("ArialMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight100, FontItalicOn , CFSTR("Arial-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight200, FontItalicOff, CFSTR("ArialMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight200, FontItalicOn , CFSTR("Arial-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight300, FontItalicOff, CFSTR("ArialMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight300, FontItalicOn , CFSTR("Arial-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight400, FontItalicOff, CFSTR("ArialMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight400, FontItalicOn , CFSTR("Arial-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight500, FontItalicOff, CFSTR("ArialMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight500, FontItalicOn , CFSTR("Arial-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight600, FontItalicOff, CFSTR("Arial-BoldMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight600, FontItalicOn , CFSTR("Arial-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight700, FontItalicOff, CFSTR("Arial-BoldMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight700, FontItalicOn , CFSTR("Arial-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight800, FontItalicOff, CFSTR("Arial-BoldMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight800, FontItalicOn , CFSTR("Arial-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight900, FontItalicOff, CFSTR("Arial-BoldMT")));
-    EXPECT_TRUE(compareFonts("Arial", FontWeight900, FontItalicOn , CFSTR("Arial-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight100, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight200, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight300, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight400, FontItalicOff, CFSTR("AvenirNext-Regular")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight500, FontItalicOff, CFSTR("AvenirNext-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight100, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight200, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight300, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight400, FontItalicOff, CFSTR("Avenir-Book")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight500, FontItalicOff, CFSTR("Avenir-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight100, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight100, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight200, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight200, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight300, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight300, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight400, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight400, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight500, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight500, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight600, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight600, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight700, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight700, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight800, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight800, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight900, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight900, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight100, FontItalicOff, CFSTR("Didot")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight100, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight200, FontItalicOff, CFSTR("Didot")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight200, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight300, FontItalicOff, CFSTR("Didot")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight300, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight400, FontItalicOff, CFSTR("Didot")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight400, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight500, FontItalicOff, CFSTR("Didot")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight500, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight600, FontItalicOff, CFSTR("Didot-Bold")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight600, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight700, FontItalicOff, CFSTR("Didot-Bold")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight700, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight800, FontItalicOff, CFSTR("Didot-Bold")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight800, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight900, FontItalicOff, CFSTR("Didot-Bold")));
-    EXPECT_TRUE(compareFonts("Didot", FontWeight900, FontItalicOn , CFSTR("Didot-Italic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight100, FontItalicOff, CFSTR("Futura-Medium")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight100, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight200, FontItalicOff, CFSTR("Futura-Medium")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight200, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight300, FontItalicOff, CFSTR("Futura-Medium")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight300, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight400, FontItalicOff, CFSTR("Futura-Medium")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight400, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight500, FontItalicOff, CFSTR("Futura-Medium")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight500, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight600, FontItalicOff, CFSTR("Futura-Bold")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight600, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight700, FontItalicOff, CFSTR("Futura-Bold")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight700, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight800, FontItalicOff, CFSTR("Futura-CondensedExtraBold")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight800, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight900, FontItalicOff, CFSTR("Futura-CondensedExtraBold")));
-    EXPECT_TRUE(compareFonts("Futura", FontWeight900, FontItalicOn , CFSTR("Futura-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight100, FontItalicOff, CFSTR("HelveticaNeue-UltraLight")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight100, FontItalicOn , CFSTR("HelveticaNeue-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight200, FontItalicOff, CFSTR("HelveticaNeue-Thin")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight200, FontItalicOn , CFSTR("HelveticaNeue-ThinItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight300, FontItalicOff, CFSTR("HelveticaNeue-Light")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight300, FontItalicOn , CFSTR("HelveticaNeue-LightItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight400, FontItalicOff, CFSTR("HelveticaNeue")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight400, FontItalicOn , CFSTR("HelveticaNeue-Italic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight500, FontItalicOff, CFSTR("HelveticaNeue-Medium")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight500, FontItalicOn , CFSTR("HelveticaNeue-MediumItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight600, FontItalicOff, CFSTR("HelveticaNeue-Bold")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight600, FontItalicOn , CFSTR("HelveticaNeue-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOff, CFSTR("HelveticaNeue-Bold")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOn , CFSTR("HelveticaNeue-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOff, CFSTR("HelveticaNeue-CondensedBlack")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOn , CFSTR("HelveticaNeue-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOff, CFSTR("HelveticaNeue-CondensedBlack")));
-    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOn , CFSTR("HelveticaNeue-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight100, FontItalicOff, CFSTR("Helvetica-Light")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight100, FontItalicOn , CFSTR("Helvetica-LightOblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight200, FontItalicOff, CFSTR("Helvetica-Light")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight200, FontItalicOn , CFSTR("Helvetica-LightOblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight300, FontItalicOff, CFSTR("Helvetica-Light")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight300, FontItalicOn , CFSTR("Helvetica-LightOblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight400, FontItalicOff, CFSTR("Helvetica")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight400, FontItalicOn , CFSTR("Helvetica-Oblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight500, FontItalicOff, CFSTR("Helvetica")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight500, FontItalicOn , CFSTR("Helvetica-Oblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight600, FontItalicOff, CFSTR("Helvetica-Bold")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight600, FontItalicOn , CFSTR("Helvetica-BoldOblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight700, FontItalicOff, CFSTR("Helvetica-Bold")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight700, FontItalicOn , CFSTR("Helvetica-BoldOblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight800, FontItalicOff, CFSTR("Helvetica-Bold")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight800, FontItalicOn , CFSTR("Helvetica-BoldOblique")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight900, FontItalicOff, CFSTR("Helvetica-Bold")));
-    EXPECT_TRUE(compareFonts("Helvetica", FontWeight900, FontItalicOn , CFSTR("Helvetica-BoldOblique")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight100, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight100, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight200, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight200, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight300, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight300, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight400, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight400, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight500, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight500, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight600, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight600, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight700, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight700, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight800, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight800, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight900, FontItalicOff, CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight900, FontItalicOn , CFSTR("HiraKakuStdN-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight100, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight100, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight200, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight200, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight300, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight300, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight400, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight400, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight500, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight500, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight600, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight600, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight700, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight700, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight800, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight800, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight900, FontItalicOff, CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight900, FontItalicOn , CFSTR("HiraMaruProN-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight100, FontItalicOff, CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight100, FontItalicOn , CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight200, FontItalicOff, CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight200, FontItalicOn , CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight300, FontItalicOff, CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight300, FontItalicOn , CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight400, FontItalicOff, CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight400, FontItalicOn , CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight500, FontItalicOff, CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight500, FontItalicOn , CFSTR("HiraMinProN-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight600, FontItalicOff, CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight600, FontItalicOn , CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight700, FontItalicOff, CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight700, FontItalicOn , CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight800, FontItalicOff, CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight800, FontItalicOn , CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight900, FontItalicOff, CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight900, FontItalicOn , CFSTR("HiraMinProN-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight100, FontItalicOff, CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight100, FontItalicOn , CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight200, FontItalicOff, CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight200, FontItalicOn , CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight300, FontItalicOff, CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight300, FontItalicOn , CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight400, FontItalicOff, CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight400, FontItalicOn , CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight500, FontItalicOff, CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight500, FontItalicOn , CFSTR("HiraginoSansGB-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight600, FontItalicOff, CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight600, FontItalicOn , CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight700, FontItalicOff, CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight700, FontItalicOn , CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight800, FontItalicOff, CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight800, FontItalicOn , CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight900, FontItalicOff, CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight900, FontItalicOn , CFSTR("HiraginoSansGB-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight100, FontItalicOff, CFSTR("HiraginoSans-W0")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight100, FontItalicOn , CFSTR("HiraginoSans-W0")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight200, FontItalicOff, CFSTR("HiraginoSans-W1")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight200, FontItalicOn , CFSTR("HiraginoSans-W1")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight300, FontItalicOff, CFSTR("HiraginoSans-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight300, FontItalicOn , CFSTR("HiraginoSans-W3")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight400, FontItalicOff, CFSTR("HiraginoSans-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight400, FontItalicOn , CFSTR("HiraginoSans-W4")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight500, FontItalicOff, CFSTR("HiraginoSans-W5")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight500, FontItalicOn , CFSTR("HiraginoSans-W5")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight600, FontItalicOff, CFSTR("HiraginoSans-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight600, FontItalicOn , CFSTR("HiraginoSans-W6")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight700, FontItalicOff, CFSTR("HiraginoSans-W7")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight700, FontItalicOn , CFSTR("HiraginoSans-W7")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight800, FontItalicOff, CFSTR("HiraginoSans-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight800, FontItalicOn , CFSTR("HiraginoSans-W8")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight900, FontItalicOff, CFSTR("HiraginoSans-W9")));
-    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight900, FontItalicOn , CFSTR("HiraginoSans-W9")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight100, FontItalicOff, CFSTR("HoeflerText-Regular")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight100, FontItalicOn , CFSTR("HoeflerText-Italic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight200, FontItalicOff, CFSTR("HoeflerText-Regular")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight200, FontItalicOn , CFSTR("HoeflerText-Italic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight300, FontItalicOff, CFSTR("HoeflerText-Regular")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight300, FontItalicOn , CFSTR("HoeflerText-Italic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight400, FontItalicOff, CFSTR("HoeflerText-Regular")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight400, FontItalicOn , CFSTR("HoeflerText-Italic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight500, FontItalicOff, CFSTR("HoeflerText-Regular")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight500, FontItalicOn , CFSTR("HoeflerText-Italic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight600, FontItalicOff, CFSTR("HoeflerText-Black")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight600, FontItalicOn , CFSTR("HoeflerText-BlackItalic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight700, FontItalicOff, CFSTR("HoeflerText-Black")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight700, FontItalicOn , CFSTR("HoeflerText-BlackItalic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight800, FontItalicOff, CFSTR("HoeflerText-Black")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight800, FontItalicOn , CFSTR("HoeflerText-BlackItalic")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight900, FontItalicOff, CFSTR("HoeflerText-Black")));
-    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight900, FontItalicOn , CFSTR("HoeflerText-BlackItalic")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight100, FontItalicOff, CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight100, FontItalicOn , CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight200, FontItalicOff, CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight200, FontItalicOn , CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight300, FontItalicOff, CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight300, FontItalicOn , CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight400, FontItalicOff, CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight400, FontItalicOn , CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight500, FontItalicOff, CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight500, FontItalicOn , CFSTR("LucidaGrande")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight600, FontItalicOff, CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight600, FontItalicOn , CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight700, FontItalicOff, CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight700, FontItalicOn , CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight800, FontItalicOff, CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight800, FontItalicOn , CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight900, FontItalicOff, CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight900, FontItalicOn , CFSTR("LucidaGrande-Bold")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight100, FontItalicOff, CFSTR("Optima-Regular")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight100, FontItalicOn , CFSTR("Optima-Italic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight200, FontItalicOff, CFSTR("Optima-Regular")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight200, FontItalicOn , CFSTR("Optima-Italic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight300, FontItalicOff, CFSTR("Optima-Regular")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight300, FontItalicOn , CFSTR("Optima-Italic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight400, FontItalicOff, CFSTR("Optima-Regular")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight400, FontItalicOn , CFSTR("Optima-Italic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight500, FontItalicOff, CFSTR("Optima-Regular")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight500, FontItalicOn , CFSTR("Optima-Italic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight600, FontItalicOff, CFSTR("Optima-Bold")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight600, FontItalicOn , CFSTR("Optima-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight700, FontItalicOff, CFSTR("Optima-Bold")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight700, FontItalicOn , CFSTR("Optima-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight800, FontItalicOff, CFSTR("Optima-ExtraBlack")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight800, FontItalicOn , CFSTR("Optima-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight900, FontItalicOff, CFSTR("Optima-ExtraBlack")));
-    EXPECT_TRUE(compareFonts("Optima", FontWeight900, FontItalicOn , CFSTR("Optima-BoldItalic")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight100, FontItalicOff, CFSTR("PingFangHK-Ultralight")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight100, FontItalicOn , CFSTR("PingFangHK-Ultralight")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight200, FontItalicOff, CFSTR("PingFangHK-Thin")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight200, FontItalicOn , CFSTR("PingFangHK-Thin")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight300, FontItalicOff, CFSTR("PingFangHK-Light")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight300, FontItalicOn , CFSTR("PingFangHK-Light")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight400, FontItalicOff, CFSTR("PingFangHK-Regular")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight400, FontItalicOn , CFSTR("PingFangHK-Regular")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight500, FontItalicOff, CFSTR("PingFangHK-Medium")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight500, FontItalicOn , CFSTR("PingFangHK-Medium")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight600, FontItalicOff, CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight600, FontItalicOn , CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight700, FontItalicOff, CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight700, FontItalicOn , CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight800, FontItalicOff, CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight800, FontItalicOn , CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight900, FontItalicOff, CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight900, FontItalicOn , CFSTR("PingFangHK-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight100, FontItalicOff, CFSTR("PingFangSC-Ultralight")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight100, FontItalicOn , CFSTR("PingFangSC-Ultralight")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight200, FontItalicOff, CFSTR("PingFangSC-Thin")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight200, FontItalicOn , CFSTR("PingFangSC-Thin")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight300, FontItalicOff, CFSTR("PingFangSC-Light")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight300, FontItalicOn , CFSTR("PingFangSC-Light")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight400, FontItalicOff, CFSTR("PingFangSC-Regular")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight400, FontItalicOn , CFSTR("PingFangSC-Regular")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight500, FontItalicOff, CFSTR("PingFangSC-Medium")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight500, FontItalicOn , CFSTR("PingFangSC-Medium")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight600, FontItalicOff, CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight600, FontItalicOn , CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight700, FontItalicOff, CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight700, FontItalicOn , CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight800, FontItalicOff, CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight800, FontItalicOn , CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight900, FontItalicOff, CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight900, FontItalicOn , CFSTR("PingFangSC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight100, FontItalicOff, CFSTR("PingFangTC-Ultralight")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight100, FontItalicOn , CFSTR("PingFangTC-Ultralight")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight200, FontItalicOff, CFSTR("PingFangTC-Thin")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight200, FontItalicOn , CFSTR("PingFangTC-Thin")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight300, FontItalicOff, CFSTR("PingFangTC-Light")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight300, FontItalicOn , CFSTR("PingFangTC-Light")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight400, FontItalicOff, CFSTR("PingFangTC-Regular")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight400, FontItalicOn , CFSTR("PingFangTC-Regular")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight500, FontItalicOff, CFSTR("PingFangTC-Medium")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight500, FontItalicOn , CFSTR("PingFangTC-Medium")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight600, FontItalicOff, CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight600, FontItalicOn , CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight700, FontItalicOff, CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight700, FontItalicOn , CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight800, FontItalicOff, CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight800, FontItalicOn , CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight900, FontItalicOff, CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight900, FontItalicOn , CFSTR("PingFangTC-Semibold")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight100, FontItalicOff, CFSTR("TimesNewRomanPSMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight100, FontItalicOn , CFSTR("TimesNewRomanPS-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight200, FontItalicOff, CFSTR("TimesNewRomanPSMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight200, FontItalicOn , CFSTR("TimesNewRomanPS-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight300, FontItalicOff, CFSTR("TimesNewRomanPSMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight300, FontItalicOn , CFSTR("TimesNewRomanPS-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight400, FontItalicOff, CFSTR("TimesNewRomanPSMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight400, FontItalicOn , CFSTR("TimesNewRomanPS-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight500, FontItalicOff, CFSTR("TimesNewRomanPSMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight500, FontItalicOn , CFSTR("TimesNewRomanPS-ItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight600, FontItalicOff, CFSTR("TimesNewRomanPS-BoldMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight600, FontItalicOn , CFSTR("TimesNewRomanPS-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight700, FontItalicOff, CFSTR("TimesNewRomanPS-BoldMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight700, FontItalicOn , CFSTR("TimesNewRomanPS-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight800, FontItalicOff, CFSTR("TimesNewRomanPS-BoldMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight800, FontItalicOn , CFSTR("TimesNewRomanPS-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight900, FontItalicOff, CFSTR("TimesNewRomanPS-BoldMT")));
-    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight900, FontItalicOn , CFSTR("TimesNewRomanPS-BoldItalicMT")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight100, FontItalicOff, CFSTR("Times-Roman")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight100, FontItalicOn , CFSTR("Times-Italic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight200, FontItalicOff, CFSTR("Times-Roman")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight200, FontItalicOn , CFSTR("Times-Italic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight300, FontItalicOff, CFSTR("Times-Roman")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight300, FontItalicOn , CFSTR("Times-Italic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight400, FontItalicOff, CFSTR("Times-Roman")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight400, FontItalicOn , CFSTR("Times-Italic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight500, FontItalicOff, CFSTR("Times-Roman")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight500, FontItalicOn , CFSTR("Times-Italic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight600, FontItalicOff, CFSTR("Times-Bold")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight600, FontItalicOn , CFSTR("Times-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight700, FontItalicOff, CFSTR("Times-Bold")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight700, FontItalicOn , CFSTR("Times-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight800, FontItalicOff, CFSTR("Times-Bold")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight800, FontItalicOn , CFSTR("Times-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight900, FontItalicOff, CFSTR("Times-Bold")));
-    EXPECT_TRUE(compareFonts("Times", FontWeight900, FontItalicOn , CFSTR("Times-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("Apple SD Gothic Neo", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight100, FontItalicOff, 100, CFSTR("ArialMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight100, FontItalicOn , 100, CFSTR("Arial-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight200, FontItalicOff, 100, CFSTR("ArialMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight200, FontItalicOn , 100, CFSTR("Arial-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight300, FontItalicOff, 100, CFSTR("ArialMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight300, FontItalicOn , 100, CFSTR("Arial-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight400, FontItalicOff, 100, CFSTR("ArialMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight400, FontItalicOn , 100, CFSTR("Arial-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight500, FontItalicOff, 100, CFSTR("ArialMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight500, FontItalicOn , 100, CFSTR("Arial-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight600, FontItalicOff, 100, CFSTR("Arial-BoldMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight600, FontItalicOn , 100, CFSTR("Arial-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight700, FontItalicOff, 100, CFSTR("Arial-BoldMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight700, FontItalicOn , 100, CFSTR("Arial-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight800, FontItalicOff, 100, CFSTR("Arial-BoldMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight800, FontItalicOn , 100, CFSTR("Arial-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight900, FontItalicOff, 100, CFSTR("Arial-BoldMT")));
+    EXPECT_TRUE(compareFonts("Arial", FontWeight900, FontItalicOn , 100, CFSTR("Arial-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight100, FontItalicOff, 100, CFSTR("AvenirNext-UltraLight")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight100, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight200, FontItalicOff, 100, CFSTR("AvenirNext-UltraLight")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight200, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight300, FontItalicOff, 100, CFSTR("AvenirNext-UltraLight")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight300, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight400, FontItalicOff, 100, CFSTR("AvenirNext-Regular")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight400, FontItalicOn , 100, CFSTR("AvenirNext-Italic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight500, FontItalicOff, 100, CFSTR("AvenirNext-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight500, FontItalicOn , 100, CFSTR("AvenirNext-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight600, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight600, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight700, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight700, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight800, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight800, FontItalicOn , 100, CFSTR("AvenirNext-HeavyItalic")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight900, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir Next", FontWeight900, FontItalicOn , 100, CFSTR("AvenirNext-HeavyItalic")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Book")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight100, FontItalicOff, 100, CFSTR("Baskerville")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight100, FontItalicOn , 100, CFSTR("Baskerville-Italic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight200, FontItalicOff, 100, CFSTR("Baskerville")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight200, FontItalicOn , 100, CFSTR("Baskerville-Italic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight300, FontItalicOff, 100, CFSTR("Baskerville")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight300, FontItalicOn , 100, CFSTR("Baskerville-Italic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight400, FontItalicOff, 100, CFSTR("Baskerville")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight400, FontItalicOn , 100, CFSTR("Baskerville-Italic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight500, FontItalicOff, 100, CFSTR("Baskerville")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight500, FontItalicOn , 100, CFSTR("Baskerville-Italic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight600, FontItalicOff, 100, CFSTR("Baskerville-SemiBold")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight600, FontItalicOn , 100, CFSTR("Baskerville-SemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight700, FontItalicOff, 100, CFSTR("Baskerville-Bold")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight700, FontItalicOn , 100, CFSTR("Baskerville-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight800, FontItalicOff, 100, CFSTR("Baskerville-Bold")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight800, FontItalicOn , 100, CFSTR("Baskerville-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight900, FontItalicOff, 100, CFSTR("Baskerville-Bold")));
+    EXPECT_TRUE(compareFonts("Baskerville", FontWeight900, FontItalicOn , 100, CFSTR("Baskerville-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight100, FontItalicOff, 100, CFSTR("Didot")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight100, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight200, FontItalicOff, 100, CFSTR("Didot")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight200, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight300, FontItalicOff, 100, CFSTR("Didot")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight300, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight400, FontItalicOff, 100, CFSTR("Didot")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight400, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight500, FontItalicOff, 100, CFSTR("Didot")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight500, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight600, FontItalicOff, 100, CFSTR("Didot-Bold")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight600, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight700, FontItalicOff, 100, CFSTR("Didot-Bold")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight700, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight800, FontItalicOff, 100, CFSTR("Didot-Bold")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight800, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight900, FontItalicOff, 100, CFSTR("Didot-Bold")));
+    EXPECT_TRUE(compareFonts("Didot", FontWeight900, FontItalicOn , 100, CFSTR("Didot-Italic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight100, FontItalicOff, 100, CFSTR("Futura-Medium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight100, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight200, FontItalicOff, 100, CFSTR("Futura-Medium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight200, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight300, FontItalicOff, 100, CFSTR("Futura-Medium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight300, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight400, FontItalicOff, 100, CFSTR("Futura-Medium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight400, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight500, FontItalicOff, 100, CFSTR("Futura-Medium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight500, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight600, FontItalicOff, 100, CFSTR("Futura-Bold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight600, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight700, FontItalicOff, 100, CFSTR("Futura-Bold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight700, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight800, FontItalicOff, 100, CFSTR("Futura-Bold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight800, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight900, FontItalicOff, 100, CFSTR("Futura-Bold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight900, FontItalicOn , 100, CFSTR("Futura-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight100, FontItalicOff, 100, CFSTR("HelveticaNeue-UltraLight")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight100, FontItalicOn , 100, CFSTR("HelveticaNeue-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight200, FontItalicOff, 100, CFSTR("HelveticaNeue-Thin")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight200, FontItalicOn , 100, CFSTR("HelveticaNeue-ThinItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight300, FontItalicOff, 100, CFSTR("HelveticaNeue-Light")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight300, FontItalicOn , 100, CFSTR("HelveticaNeue-LightItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight400, FontItalicOff, 100, CFSTR("HelveticaNeue")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight400, FontItalicOn , 100, CFSTR("HelveticaNeue-Italic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight500, FontItalicOff, 100, CFSTR("HelveticaNeue-Medium")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight500, FontItalicOn , 100, CFSTR("HelveticaNeue-MediumItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight600, FontItalicOff, 100, CFSTR("HelveticaNeue-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight600, FontItalicOn , 100, CFSTR("HelveticaNeue-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOff, 100, CFSTR("HelveticaNeue-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOn , 100, CFSTR("HelveticaNeue-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOff, 100, CFSTR("HelveticaNeue-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOn , 100, CFSTR("HelveticaNeue-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOff, 100, CFSTR("HelveticaNeue-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOn , 100, CFSTR("HelveticaNeue-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight100, FontItalicOff, 100, CFSTR("Helvetica-Light")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight100, FontItalicOn , 100, CFSTR("Helvetica-LightOblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight200, FontItalicOff, 100, CFSTR("Helvetica-Light")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight200, FontItalicOn , 100, CFSTR("Helvetica-LightOblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight300, FontItalicOff, 100, CFSTR("Helvetica-Light")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight300, FontItalicOn , 100, CFSTR("Helvetica-LightOblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight400, FontItalicOff, 100, CFSTR("Helvetica")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight400, FontItalicOn , 100, CFSTR("Helvetica-Oblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight500, FontItalicOff, 100, CFSTR("Helvetica")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight500, FontItalicOn , 100, CFSTR("Helvetica-Oblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight600, FontItalicOff, 100, CFSTR("Helvetica-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight600, FontItalicOn , 100, CFSTR("Helvetica-BoldOblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight700, FontItalicOff, 100, CFSTR("Helvetica-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight700, FontItalicOn , 100, CFSTR("Helvetica-BoldOblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight800, FontItalicOff, 100, CFSTR("Helvetica-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight800, FontItalicOn , 100, CFSTR("Helvetica-BoldOblique")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight900, FontItalicOff, 100, CFSTR("Helvetica-Bold")));
+    EXPECT_TRUE(compareFonts("Helvetica", FontWeight900, FontItalicOn , 100, CFSTR("Helvetica-BoldOblique")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight100, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight100, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight200, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight200, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight300, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight300, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight400, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight400, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight500, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight500, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight600, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight600, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight700, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight700, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight800, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight800, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight900, FontItalicOff, 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Kaku Gothic StdN", FontWeight900, FontItalicOn , 100, CFSTR("HiraKakuStdN-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight100, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight100, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight200, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight200, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight300, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight300, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight400, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight400, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight500, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight500, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight600, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight600, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight700, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight700, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight800, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight800, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight900, FontItalicOff, 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Maru Gothic ProN", FontWeight900, FontItalicOn , 100, CFSTR("HiraMaruProN-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight100, FontItalicOff, 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight100, FontItalicOn , 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight200, FontItalicOff, 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight200, FontItalicOn , 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight300, FontItalicOff, 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight300, FontItalicOn , 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight400, FontItalicOff, 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight400, FontItalicOn , 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight500, FontItalicOff, 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight500, FontItalicOn , 100, CFSTR("HiraMinProN-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight600, FontItalicOff, 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight600, FontItalicOn , 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight700, FontItalicOff, 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight700, FontItalicOn , 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight800, FontItalicOff, 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight800, FontItalicOn , 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight900, FontItalicOff, 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Mincho ProN", FontWeight900, FontItalicOn , 100, CFSTR("HiraMinProN-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight100, FontItalicOff, 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight100, FontItalicOn , 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight200, FontItalicOff, 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight200, FontItalicOn , 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight300, FontItalicOff, 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight300, FontItalicOn , 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight400, FontItalicOff, 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight400, FontItalicOn , 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight500, FontItalicOff, 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight500, FontItalicOn , 100, CFSTR("HiraginoSansGB-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight600, FontItalicOff, 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight600, FontItalicOn , 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight700, FontItalicOff, 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight700, FontItalicOn , 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight800, FontItalicOff, 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight800, FontItalicOn , 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight900, FontItalicOff, 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans GB", FontWeight900, FontItalicOn , 100, CFSTR("HiraginoSansGB-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight100, FontItalicOff, 100, CFSTR("HiraginoSans-W0")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight100, FontItalicOn , 100, CFSTR("HiraginoSans-W0")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight200, FontItalicOff, 100, CFSTR("HiraginoSans-W1")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight200, FontItalicOn , 100, CFSTR("HiraginoSans-W1")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight300, FontItalicOff, 100, CFSTR("HiraginoSans-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight300, FontItalicOn , 100, CFSTR("HiraginoSans-W3")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight400, FontItalicOff, 100, CFSTR("HiraginoSans-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight400, FontItalicOn , 100, CFSTR("HiraginoSans-W4")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight500, FontItalicOff, 100, CFSTR("HiraginoSans-W5")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight500, FontItalicOn , 100, CFSTR("HiraginoSans-W5")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight600, FontItalicOff, 100, CFSTR("HiraginoSans-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight600, FontItalicOn , 100, CFSTR("HiraginoSans-W6")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight700, FontItalicOff, 100, CFSTR("HiraginoSans-W7")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight700, FontItalicOn , 100, CFSTR("HiraginoSans-W7")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight800, FontItalicOff, 100, CFSTR("HiraginoSans-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight800, FontItalicOn , 100, CFSTR("HiraginoSans-W8")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight900, FontItalicOff, 100, CFSTR("HiraginoSans-W9")));
+    EXPECT_TRUE(compareFonts("Hiragino Sans", FontWeight900, FontItalicOn , 100, CFSTR("HiraginoSans-W9")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight100, FontItalicOff, 100, CFSTR("HoeflerText-Regular")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight100, FontItalicOn , 100, CFSTR("HoeflerText-Italic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight200, FontItalicOff, 100, CFSTR("HoeflerText-Regular")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight200, FontItalicOn , 100, CFSTR("HoeflerText-Italic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight300, FontItalicOff, 100, CFSTR("HoeflerText-Regular")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight300, FontItalicOn , 100, CFSTR("HoeflerText-Italic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight400, FontItalicOff, 100, CFSTR("HoeflerText-Regular")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight400, FontItalicOn , 100, CFSTR("HoeflerText-Italic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight500, FontItalicOff, 100, CFSTR("HoeflerText-Regular")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight500, FontItalicOn , 100, CFSTR("HoeflerText-Italic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight600, FontItalicOff, 100, CFSTR("HoeflerText-Black")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight600, FontItalicOn , 100, CFSTR("HoeflerText-BlackItalic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight700, FontItalicOff, 100, CFSTR("HoeflerText-Black")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight700, FontItalicOn , 100, CFSTR("HoeflerText-BlackItalic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight800, FontItalicOff, 100, CFSTR("HoeflerText-Black")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight800, FontItalicOn , 100, CFSTR("HoeflerText-BlackItalic")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight900, FontItalicOff, 100, CFSTR("HoeflerText-Black")));
+    EXPECT_TRUE(compareFonts("Hoefler Text", FontWeight900, FontItalicOn , 100, CFSTR("HoeflerText-BlackItalic")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight100, FontItalicOff, 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight100, FontItalicOn , 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight200, FontItalicOff, 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight200, FontItalicOn , 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight300, FontItalicOff, 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight300, FontItalicOn , 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight400, FontItalicOff, 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight400, FontItalicOn , 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight500, FontItalicOff, 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight500, FontItalicOn , 100, CFSTR("LucidaGrande")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight600, FontItalicOff, 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight600, FontItalicOn , 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight700, FontItalicOff, 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight700, FontItalicOn , 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight800, FontItalicOff, 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight800, FontItalicOn , 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight900, FontItalicOff, 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Lucida Grande", FontWeight900, FontItalicOn , 100, CFSTR("LucidaGrande-Bold")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight100, FontItalicOff, 100, CFSTR("Optima-Regular")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight100, FontItalicOn , 100, CFSTR("Optima-Italic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight200, FontItalicOff, 100, CFSTR("Optima-Regular")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight200, FontItalicOn , 100, CFSTR("Optima-Italic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight300, FontItalicOff, 100, CFSTR("Optima-Regular")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight300, FontItalicOn , 100, CFSTR("Optima-Italic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight400, FontItalicOff, 100, CFSTR("Optima-Regular")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight400, FontItalicOn , 100, CFSTR("Optima-Italic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight500, FontItalicOff, 100, CFSTR("Optima-Regular")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight500, FontItalicOn , 100, CFSTR("Optima-Italic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight600, FontItalicOff, 100, CFSTR("Optima-Bold")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight600, FontItalicOn , 100, CFSTR("Optima-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight700, FontItalicOff, 100, CFSTR("Optima-Bold")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight700, FontItalicOn , 100, CFSTR("Optima-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight800, FontItalicOff, 100, CFSTR("Optima-ExtraBlack")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight800, FontItalicOn , 100, CFSTR("Optima-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight900, FontItalicOff, 100, CFSTR("Optima-ExtraBlack")));
+    EXPECT_TRUE(compareFonts("Optima", FontWeight900, FontItalicOn , 100, CFSTR("Optima-BoldItalic")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight100, FontItalicOff, 100, CFSTR("PingFangHK-Ultralight")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight100, FontItalicOn , 100, CFSTR("PingFangHK-Ultralight")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight200, FontItalicOff, 100, CFSTR("PingFangHK-Thin")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight200, FontItalicOn , 100, CFSTR("PingFangHK-Thin")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight300, FontItalicOff, 100, CFSTR("PingFangHK-Light")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight300, FontItalicOn , 100, CFSTR("PingFangHK-Light")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight400, FontItalicOff, 100, CFSTR("PingFangHK-Regular")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight400, FontItalicOn , 100, CFSTR("PingFangHK-Regular")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight500, FontItalicOff, 100, CFSTR("PingFangHK-Medium")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight500, FontItalicOn , 100, CFSTR("PingFangHK-Medium")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight600, FontItalicOff, 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight600, FontItalicOn , 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight700, FontItalicOff, 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight700, FontItalicOn , 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight800, FontItalicOff, 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight800, FontItalicOn , 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight900, FontItalicOff, 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang HK", FontWeight900, FontItalicOn , 100, CFSTR("PingFangHK-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight100, FontItalicOff, 100, CFSTR("PingFangSC-Ultralight")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight100, FontItalicOn , 100, CFSTR("PingFangSC-Ultralight")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight200, FontItalicOff, 100, CFSTR("PingFangSC-Thin")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight200, FontItalicOn , 100, CFSTR("PingFangSC-Thin")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight300, FontItalicOff, 100, CFSTR("PingFangSC-Light")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight300, FontItalicOn , 100, CFSTR("PingFangSC-Light")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight400, FontItalicOff, 100, CFSTR("PingFangSC-Regular")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight400, FontItalicOn , 100, CFSTR("PingFangSC-Regular")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight500, FontItalicOff, 100, CFSTR("PingFangSC-Medium")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight500, FontItalicOn , 100, CFSTR("PingFangSC-Medium")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight600, FontItalicOff, 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight600, FontItalicOn , 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight700, FontItalicOff, 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight700, FontItalicOn , 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight800, FontItalicOff, 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight800, FontItalicOn , 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight900, FontItalicOff, 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang SC", FontWeight900, FontItalicOn , 100, CFSTR("PingFangSC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight100, FontItalicOff, 100, CFSTR("PingFangTC-Ultralight")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight100, FontItalicOn , 100, CFSTR("PingFangTC-Ultralight")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight200, FontItalicOff, 100, CFSTR("PingFangTC-Thin")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight200, FontItalicOn , 100, CFSTR("PingFangTC-Thin")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight300, FontItalicOff, 100, CFSTR("PingFangTC-Light")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight300, FontItalicOn , 100, CFSTR("PingFangTC-Light")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight400, FontItalicOff, 100, CFSTR("PingFangTC-Regular")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight400, FontItalicOn , 100, CFSTR("PingFangTC-Regular")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight500, FontItalicOff, 100, CFSTR("PingFangTC-Medium")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight500, FontItalicOn , 100, CFSTR("PingFangTC-Medium")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight600, FontItalicOff, 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight600, FontItalicOn , 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight700, FontItalicOff, 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight700, FontItalicOn , 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight800, FontItalicOff, 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight800, FontItalicOn , 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight900, FontItalicOff, 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("PingFang TC", FontWeight900, FontItalicOn , 100, CFSTR("PingFangTC-Semibold")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight100, FontItalicOff, 100, CFSTR("TimesNewRomanPSMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight100, FontItalicOn , 100, CFSTR("TimesNewRomanPS-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight200, FontItalicOff, 100, CFSTR("TimesNewRomanPSMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight200, FontItalicOn , 100, CFSTR("TimesNewRomanPS-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight300, FontItalicOff, 100, CFSTR("TimesNewRomanPSMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight300, FontItalicOn , 100, CFSTR("TimesNewRomanPS-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight400, FontItalicOff, 100, CFSTR("TimesNewRomanPSMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight400, FontItalicOn , 100, CFSTR("TimesNewRomanPS-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight500, FontItalicOff, 100, CFSTR("TimesNewRomanPSMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight500, FontItalicOn , 100, CFSTR("TimesNewRomanPS-ItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight600, FontItalicOff, 100, CFSTR("TimesNewRomanPS-BoldMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight600, FontItalicOn , 100, CFSTR("TimesNewRomanPS-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight700, FontItalicOff, 100, CFSTR("TimesNewRomanPS-BoldMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight700, FontItalicOn , 100, CFSTR("TimesNewRomanPS-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight800, FontItalicOff, 100, CFSTR("TimesNewRomanPS-BoldMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight800, FontItalicOn , 100, CFSTR("TimesNewRomanPS-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight900, FontItalicOff, 100, CFSTR("TimesNewRomanPS-BoldMT")));
+    EXPECT_TRUE(compareFonts("Times New Roman", FontWeight900, FontItalicOn , 100, CFSTR("TimesNewRomanPS-BoldItalicMT")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight100, FontItalicOff, 100, CFSTR("Times-Roman")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight100, FontItalicOn , 100, CFSTR("Times-Italic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight200, FontItalicOff, 100, CFSTR("Times-Roman")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight200, FontItalicOn , 100, CFSTR("Times-Italic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight300, FontItalicOff, 100, CFSTR("Times-Roman")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight300, FontItalicOn , 100, CFSTR("Times-Italic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight400, FontItalicOff, 100, CFSTR("Times-Roman")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight400, FontItalicOn , 100, CFSTR("Times-Italic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight500, FontItalicOff, 100, CFSTR("Times-Roman")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight500, FontItalicOn , 100, CFSTR("Times-Italic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight600, FontItalicOff, 100, CFSTR("Times-Bold")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight600, FontItalicOn , 100, CFSTR("Times-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight700, FontItalicOff, 100, CFSTR("Times-Bold")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight700, FontItalicOn , 100, CFSTR("Times-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight800, FontItalicOff, 100, CFSTR("Times-Bold")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight800, FontItalicOn , 100, CFSTR("Times-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight900, FontItalicOff, 100, CFSTR("Times-Bold")));
+    EXPECT_TRUE(compareFonts("Times", FontWeight900, FontItalicOn , 100, CFSTR("Times-BoldItalic")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOff, 87.5, CFSTR("HelveticaNeue-CondensedBold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOff, 87.5, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOff, 87.5, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOff, 75, CFSTR("HelveticaNeue-CondensedBold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOff, 75, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOff, 75, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOn , 87.5, CFSTR("HelveticaNeue-CondensedBold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOn , 87.5, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOn , 87.5, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight700, FontItalicOn , 75, CFSTR("HelveticaNeue-CondensedBold")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight800, FontItalicOn , 75, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Helvetica Neue", FontWeight900, FontItalicOn , 75, CFSTR("HelveticaNeue-CondensedBlack")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight500, FontItalicOff, 87.5, CFSTR("Futura-CondensedMedium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight500, FontItalicOn , 87.5, CFSTR("Futura-CondensedMedium")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight600, FontItalicOff, 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight600, FontItalicOn , 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight700, FontItalicOff, 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight700, FontItalicOn , 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight800, FontItalicOff, 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight800, FontItalicOn , 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight900, FontItalicOff, 87.5, CFSTR("Futura-CondensedExtraBold")));
+    EXPECT_TRUE(compareFonts("Futura", FontWeight900, FontItalicOn , 87.5, CFSTR("Futura-CondensedExtraBold")));
 }
 
 TEST_F(FontCacheTest, FontLookupFromPostScriptName)
 {
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight100, FontItalicOff, CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight100, FontItalicOn , CFSTR("AppleSDGothicNeo-Thin")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight200, FontItalicOff, CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight200, FontItalicOn , CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight300, FontItalicOff, CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight300, FontItalicOn , CFSTR("AppleSDGothicNeo-Light")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight400, FontItalicOff, CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight400, FontItalicOn , CFSTR("AppleSDGothicNeo-Regular")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight500, FontItalicOff, CFSTR("AppleSDGothicNeo-UltraLight")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight500, FontItalicOn , CFSTR("AppleSDGothicNeo-Medium")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight600, FontItalicOff, CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight600, FontItalicOn , CFSTR("AppleSDGothicNeo-SemiBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight700, FontItalicOff, CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight700, FontItalicOn , CFSTR("AppleSDGothicNeo-Bold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight800, FontItalicOff, CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight800, FontItalicOn , CFSTR("AppleSDGothicNeo-ExtraBold")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight900, FontItalicOff, CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight900, FontItalicOn , CFSTR("AppleSDGothicNeo-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight100, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight200, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight300, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight400, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight500, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight900, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight100, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight100, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight200, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight200, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight300, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight300, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight400, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight400, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight500, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight500, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight600, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight700, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight800, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight900, FontItalicOff, CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight900, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight100, FontItalicOff, CFSTR("Avenir-Book")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight200, FontItalicOff, CFSTR("Avenir-Book")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight300, FontItalicOff, CFSTR("Avenir-Book")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight400, FontItalicOff, CFSTR("Avenir-Book")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight500, FontItalicOff, CFSTR("Avenir-Book")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight100, FontItalicOff, CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight100, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight200, FontItalicOff, CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight200, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight300, FontItalicOff, CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight300, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight400, FontItalicOff, CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight500, FontItalicOff, CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight500, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight100, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight200, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight300, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight400, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight500, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight600, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight700, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight800, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight100, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight100, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight200, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight200, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight300, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight300, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight400, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight400, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight500, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight500, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight600, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight600, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight700, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight700, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight800, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight800, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight900, FontItalicOff, CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight100, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight200, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight300, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight400, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight500, FontItalicOff, CFSTR("Avenir-Light")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight100, FontItalicOff, CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight200, FontItalicOff, CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight300, FontItalicOff, CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight400, FontItalicOff, CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight400, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight500, FontItalicOff, CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight500, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight100, FontItalicOff, CFSTR("Avenir-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight200, FontItalicOff, CFSTR("Avenir-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight300, FontItalicOff, CFSTR("Avenir-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight400, FontItalicOff, CFSTR("Avenir-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight500, FontItalicOff, CFSTR("Avenir-Medium")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight100, FontItalicOff, CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight100, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight200, FontItalicOff, CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight200, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight300, FontItalicOff, CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight300, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight400, FontItalicOff, CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight400, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight500, FontItalicOff, CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight100, FontItalicOff, CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight100, FontItalicOn , CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight200, FontItalicOff, CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight200, FontItalicOn , CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight300, FontItalicOff, CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight300, FontItalicOn , CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight400, FontItalicOff, CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight400, FontItalicOn , CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight500, FontItalicOff, CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight500, FontItalicOn , CFSTR("Avenir-Oblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight100, FontItalicOff, CFSTR("Avenir-Roman")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight100, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight200, FontItalicOff, CFSTR("Avenir-Roman")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight200, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight300, FontItalicOff, CFSTR("Avenir-Roman")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight300, FontItalicOn , CFSTR("Avenir-LightOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight400, FontItalicOff, CFSTR("Avenir-Roman")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight400, FontItalicOn , CFSTR("Avenir-BookOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight500, FontItalicOff, CFSTR("Avenir-Roman")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight500, FontItalicOn , CFSTR("Avenir-MediumOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight600, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight600, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight700, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight700, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight800, FontItalicOff, CFSTR("Avenir-Black")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight800, FontItalicOn , CFSTR("Avenir-BlackOblique")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight900, FontItalicOff, CFSTR("Avenir-Heavy")));
-    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight900, FontItalicOn , CFSTR("Avenir-HeavyOblique")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight100, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight200, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight300, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight400, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight500, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight600, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight100, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight200, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight300, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight400, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight500, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight700, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight800, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight900, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight100, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight200, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight300, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight400, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight500, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight600, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-HeavyItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight100, FontItalicOff, CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight100, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight200, FontItalicOff, CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight200, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight300, FontItalicOff, CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight300, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight400, FontItalicOff, CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight500, FontItalicOff, CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight500, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Italic", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight100, FontItalicOff, CFSTR("AvenirNext-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight200, FontItalicOff, CFSTR("AvenirNext-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight300, FontItalicOff, CFSTR("AvenirNext-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight400, FontItalicOff, CFSTR("AvenirNext-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight500, FontItalicOff, CFSTR("AvenirNext-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Medium", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-MediumItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight100, FontItalicOff, CFSTR("AvenirNext-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight200, FontItalicOff, CFSTR("AvenirNext-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight300, FontItalicOff, CFSTR("AvenirNext-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight400, FontItalicOff, CFSTR("AvenirNext-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight500, FontItalicOff, CFSTR("AvenirNext-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-Regular", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight100, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight200, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight300, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight400, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight400, FontItalicOn , CFSTR("AvenirNext-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight500, FontItalicOff, CFSTR("AvenirNext-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight500, FontItalicOn , CFSTR("AvenirNext-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLight", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNext-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNext-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNext-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNext-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNext-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNext-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNext-UltraLightItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNext-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Bold", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-BoldItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBold", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-DemiBoldItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Heavy", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-HeavyItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Italic", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-Medium")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Medium", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-MediumItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-Regular")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-Regular", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-Italic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLight")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-MediumItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLight", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight100, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight100, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight200, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight200, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight300, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight300, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight400, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight400, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight500, FontItalicOff, CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight500, FontItalicOn , CFSTR("AvenirNextCondensed-UltraLightItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight600, FontItalicOff, CFSTR("AvenirNextCondensed-DemiBold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight600, FontItalicOn , CFSTR("AvenirNextCondensed-DemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight700, FontItalicOff, CFSTR("AvenirNextCondensed-Bold")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight700, FontItalicOn , CFSTR("AvenirNextCondensed-BoldItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight800, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight800, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight900, FontItalicOff, CFSTR("AvenirNextCondensed-Heavy")));
-    EXPECT_TRUE(compareFonts("AvenirNextCondensed-UltraLightItalic", FontWeight900, FontItalicOn , CFSTR("AvenirNextCondensed-HeavyItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight100, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight100, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight200, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight200, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight300, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight300, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight400, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight400, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight500, FontItalicOff, CFSTR("Baskerville")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight500, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight600, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight600, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight700, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight700, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight800, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight800, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight900, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville", FontWeight900, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight100, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight100, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight200, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight200, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight300, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight300, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight400, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight400, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight500, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight500, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight600, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight600, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight700, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight700, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight800, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight800, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight900, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Bold", FontWeight900, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight100, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight100, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight200, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight200, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight300, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight300, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight400, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight400, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight500, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight500, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight600, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight600, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight700, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight700, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight800, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight800, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight900, FontItalicOff, CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-BoldItalic", FontWeight900, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight100, FontItalicOff, CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight100, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight200, FontItalicOff, CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight200, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight300, FontItalicOff, CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight300, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight400, FontItalicOff, CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight400, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight500, FontItalicOff, CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight500, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight600, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight600, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight700, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight700, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight800, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight800, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight900, FontItalicOff, CFSTR("Baskerville-Bold")));
-    EXPECT_TRUE(compareFonts("Baskerville-Italic", FontWeight900, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight100, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight100, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight200, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight200, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight300, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight300, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight400, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight400, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight500, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight500, FontItalicOn , CFSTR("Baskerville-Italic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight600, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight600, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight700, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight700, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight800, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight800, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight900, FontItalicOff, CFSTR("Baskerville-SemiBold")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBold", FontWeight900, FontItalicOn , CFSTR("Baskerville-BoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight100, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight100, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight200, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight200, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight300, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight300, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight400, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight400, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight500, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight500, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight600, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight600, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight700, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight700, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight800, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight800, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight900, FontItalicOff, CFSTR("Baskerville-SemiBoldItalic")));
-    EXPECT_TRUE(compareFonts("Baskerville-SemiBoldItalic", FontWeight900, FontItalicOn , CFSTR("Baskerville-SemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Bold", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-ExtraBold", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Heavy", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Light", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Medium", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Regular", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-SemiBold", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-Thin", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight100, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight100, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Thin")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight200, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight200, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight300, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight300, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Light")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight400, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight400, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Regular")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight500, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-UltraLight")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight500, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Medium")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight600, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight600, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-SemiBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight700, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight700, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Bold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight800, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight800, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-ExtraBold")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight900, FontItalicOff, 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("AppleSDGothicNeo-UltraLight", FontWeight900, FontItalicOn , 100, CFSTR("AppleSDGothicNeo-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Black", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BlackOblique", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Book")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Book")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Book")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Book")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Book")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Book", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-BookOblique", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Heavy", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-HeavyOblique", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Light")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Light", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-LightOblique", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Medium")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Medium", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-MediumOblique", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-Oblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Oblique", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight100, FontItalicOff, 100, CFSTR("Avenir-Roman")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight100, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight200, FontItalicOff, 100, CFSTR("Avenir-Roman")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight200, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight300, FontItalicOff, 100, CFSTR("Avenir-Roman")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight300, FontItalicOn , 100, CFSTR("Avenir-LightOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight400, FontItalicOff, 100, CFSTR("Avenir-Roman")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight400, FontItalicOn , 100, CFSTR("Avenir-BookOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight500, FontItalicOff, 100, CFSTR("Avenir-Roman")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight500, FontItalicOn , 100, CFSTR("Avenir-MediumOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight600, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight600, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight700, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight700, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight800, FontItalicOff, 100, CFSTR("Avenir-Black")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight800, FontItalicOn , 100, CFSTR("Avenir-BlackOblique")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight900, FontItalicOff, 100, CFSTR("Avenir-Heavy")));
+    EXPECT_TRUE(compareFonts("Avenir-Roman", FontWeight900, FontItalicOn , 100, CFSTR("Avenir-HeavyOblique")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight100, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight100, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight200, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight200, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight300, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight300, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight400, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight400, FontItalicOn , 100, CFSTR("AvenirNext-Italic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight500, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight500, FontItalicOn , 100, CFSTR("AvenirNext-MediumItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight600, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight600, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight700, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight700, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight800, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight800, FontItalicOn , 100, CFSTR("AvenirNext-HeavyItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight900, FontItalicOff, 100, CFSTR("AvenirNext-Bold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Bold", FontWeight900, FontItalicOn , 100, CFSTR("AvenirNext-HeavyItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight100, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight100, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight200, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight200, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight300, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight300, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight400, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight400, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight500, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight500, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight600, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight600, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight700, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight700, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight800, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight800, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight900, FontItalicOff, 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-BoldItalic", FontWeight900, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight100, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight100, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight200, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight200, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight300, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight300, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight400, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight400, FontItalicOn , 100, CFSTR("AvenirNext-Italic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight500, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight500, FontItalicOn , 100, CFSTR("AvenirNext-MediumItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight600, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight600, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight700, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight700, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight800, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight800, FontItalicOn , 100, CFSTR("AvenirNext-HeavyItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight900, FontItalicOff, 100, CFSTR("AvenirNext-DemiBold")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBold", FontWeight900, FontItalicOn , 100, CFSTR("AvenirNext-HeavyItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight100, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight100, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight200, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight200, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight300, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight300, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight400, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight400, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight500, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight500, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight600, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight600, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight700, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight700, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight800, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight800, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight900, FontItalicOff, 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-DemiBoldItalic", FontWeight900, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight100, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight100, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight200, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight200, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight300, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight300, FontItalicOn , 100, CFSTR("AvenirNext-UltraLightItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight400, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight400, FontItalicOn , 100, CFSTR("AvenirNext-Italic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight500, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight500, FontItalicOn , 100, CFSTR("AvenirNext-MediumItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight600, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight600, FontItalicOn , 100, CFSTR("AvenirNext-DemiBoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight700, FontItalicOff, 100, CFSTR("AvenirNext-Heavy")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight700, FontItalicOn , 100, CFSTR("AvenirNext-BoldItalic")));
+    EXPECT_TRUE(compareFonts("AvenirNext-Heavy", FontWeight800, FontItalicOff, 100, CFSTR("AvenirNext-Heavy"))