Title: [188146] trunk
Revision
188146
Author
[email protected]
Date
2015-08-07 12:09:59 -0700 (Fri, 07 Aug 2015)

Log Message

Implement font-feature-settings
https://bugs.webkit.org/show_bug.cgi?id=147722

Reviewed by Simon Fraser.

Source/WebCore:

Fonts with features are simply modeled as new font objects. Font
feature information is contained within FontDescription, and our
caches are correctly sensitive to this information. Therefore,
we just need to make our font lookup code honor the request to
use certain features.

This patch creates a file, FontCacheCoreText.cpp, which will be the
new home of all shared OS X / iOS FontCache code. Over time, I will
be moving more and more source into this file, until there is
nothing left of FontCacheMac.mm and FontCacheIOS.mm. For now, the
only function in this file is the code which applies font features.

Test: css3/font-feature-settings-preinstalled-fonts.html

* WebCore.xcodeproj/project.pbxproj: Add FontCacheCoreText.cpp.
* platform/graphics/FontCache.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp: Added.
(WebCore::appendTrueTypeFeature): What the name says.
(WebCore::appendOpenTypeFeature): Ditto.
(WebCore::applyFontFeatureSettings): Ditto.
* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::FontCache::getSystemFontFallbackForCharacters): Call
applyFontFeatureSettings().
(WebCore::FontCache::createFontPlatformData): Ditto.
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::fontWithFamily): Ditto.
(WebCore::FontCache::systemFallbackForCharacters): Ditto.
(WebCore::FontCache::createFontPlatformData): Ditto.
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData): Ditto.
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::updateCachedSystemFontDescription):
Ditto.

LayoutTests:

Until I can make a custom font for reference tests, use a simple dump-render-tree test.

* css3/font-feature-settings-preinstalled-fonts.html: Added.
* platform/mac-yosemite/css3/font-feature-settings-preinstalled-fonts-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (188145 => 188146)


--- trunk/LayoutTests/ChangeLog	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/LayoutTests/ChangeLog	2015-08-07 19:09:59 UTC (rev 188146)
@@ -1,3 +1,15 @@
+2015-08-07  Myles C. Maxfield  <[email protected]>
+
+        Implement font-feature-settings
+        https://bugs.webkit.org/show_bug.cgi?id=147722
+
+        Reviewed by Simon Fraser.
+
+        Until I can make a custom font for reference tests, use a simple dump-render-tree test.
+
+        * css3/font-feature-settings-preinstalled-fonts.html: Added.
+        * platform/mac-yosemite/css3/font-feature-settings-preinstalled-fonts-expected.txt: Added.
+
 2015-08-07  Simon Fraser  <[email protected]>
 
         Remove platform/ios-sim-deprecated. All of the tests here exist elsewhere already.

Added: trunk/LayoutTests/css3/font-feature-settings-preinstalled-fonts.html (0 => 188146)


--- trunk/LayoutTests/css3/font-feature-settings-preinstalled-fonts.html	                        (rev 0)
+++ trunk/LayoutTests/css3/font-feature-settings-preinstalled-fonts.html	2015-08-07 19:09:59 UTC (rev 188146)
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+</head>
+<body>
+<p>
+This test dumps render tree information for text styled with font-feature-settings.
+</p>
+<script>
+var fonts = ["Andale Mono", "Arial", "Didot", "Geneva", "Georgia", "Gill Sans", "Helvetica", "Helvetica Neue", "Hoefler Text", "Impact", "Lucida Grande", "Menlo", "Monaco", "Optima", "Tahoma", "Times", "Verdana", "Zapfino"];
+var features = ['"smcp" 1', '"c2sc" 1', '"zero" 1', '"nalt" 1', '"kern" 1', '"liga" 1', '"dlig" 1', '"hlig" 1', '"clig" 1', '"swsh" 1', '"calt" 1', '"hist" 1', '"salt" 1', '"ss01" 1', '"ss02" 1', '"ss03" 1', '"ss04" 1', '"ss05" 1', '"lnum" 1', '"onum" 1', '"pnum" 1', '"tnum" 1', '"frac" 1', '"afrc" 1'];
+fonts.map(function(font) {
+    features.map(function(feature) {
+        var element = document.createElement("div");
+        element.textContent = "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord.";
+        element.style.fontFamily = font;
+        element.style.webkitFontFeatureSettings = feature;
+        document.body.appendChild(element);
+    });
+});
+</script>
+</body>
+</html>

Added: trunk/LayoutTests/platform/mac-yosemite/css3/font-feature-settings-preinstalled-fonts-expected.txt (0 => 188146)


--- trunk/LayoutTests/platform/mac-yosemite/css3/font-feature-settings-preinstalled-fonts-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac-yosemite/css3/font-feature-settings-preinstalled-fonts-expected.txt	2015-08-07 19:09:59 UTC (rev 188146)
@@ -0,0 +1,1376 @@
+layer at (0,0) size 785x10402
+  RenderView at (0,0) size 785x600
+layer at (0,0) size 785x10402
+  RenderBlock {HTML} at (0,0) size 785x10402
+    RenderBody {BODY} at (8,16) size 769x10378
+      RenderBlock {P} at (0,0) size 769x18
+        RenderText {#text} at (0,0) size 517x18
+          text run at (0,0) width 517: "This test dumps render tree information for text styled with font-feature-settings."
+      RenderBlock {DIV} at (0,34) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,70) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,106) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,142) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,178) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,214) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,250) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,286) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,322) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,358) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,394) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,430) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,466) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,502) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,538) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,574) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,610) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,646) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,682) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,718) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,754) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,790) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,826) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,862) size 769x36
+        RenderText {#text} at (0,0) size 711x36
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,18) width 58: "fjord."
+      RenderBlock {DIV} at (0,898) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,916) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,934) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,952) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,970) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,988) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1006) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1024) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1042) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1060) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1078) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1096) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1114) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1132) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1150) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1168) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1186) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1204) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1222) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1240) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1258) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1276) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1294) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1312) size 769x18
+        RenderText {#text} at (0,0) size 548x17
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1330) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1350) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1370) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1390) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1410) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1430) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1450) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1470) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1490) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1510) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1530) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1550) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1570) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1590) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1610) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1630) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1650) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1670) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1690) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1710) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1730) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1750) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1770) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1790) size 769x20
+        RenderText {#text} at (0,0) size 559x20
+          text run at (0,0) width 559: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1810) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1831) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1852) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1873) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1894) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1915) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1936) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1957) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1978) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,1999) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2020) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2041) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2062) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2083) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2104) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2125) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2146) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2167) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2188) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2209) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2230) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2251) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2272) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2293) size 769x21
+        RenderText {#text} at (0,0) size 613x20
+          text run at (0,0) width 613: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2314) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2333) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2352) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2371) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2390) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2409) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2428) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2447) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2466) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2485) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2504) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2523) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2542) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2561) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2580) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2599) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2618) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2637) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2656) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2675) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2694) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2713) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2732) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2751) size 769x19
+        RenderText {#text} at (0,0) size 546x19
+          text run at (0,0) width 546: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2770) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2789) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2808) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2827) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2846) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2865) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2884) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2903) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2922) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2941) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2960) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2979) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,2998) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3017) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3036) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3055) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3074) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3093) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3112) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3131) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3150) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3169) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3188) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3207) size 769x19
+        RenderText {#text} at (0,0) size 501x19
+          text run at (0,0) width 501: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3226) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3244) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3262) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3280) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3298) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3316) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3334) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3352) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3370) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3388) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3406) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3424) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3442) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3460) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3478) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3496) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3514) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3532) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3550) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3568) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3586) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3604) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3622) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3640) size 769x18
+        RenderText {#text} at (0,0) size 548x18
+          text run at (0,0) width 548: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3658) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3676) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3694) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3712) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3730) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3748) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3766) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3784) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3802) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3820) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3838) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3856) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3874) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3892) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3910) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3928) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3946) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3964) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,3982) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4000) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4018) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4036) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4054) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4072) size 769x18
+        RenderText {#text} at (0,0) size 556x18
+          text run at (0,0) width 556: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4090) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4106) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4122) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4138) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4154) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4170) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4186) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4202) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4218) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4234) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4250) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4266) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4282) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4298) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4314) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4330) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4346) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4362) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4378) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4394) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4410) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4426) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4442) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4458) size 769x16
+        RenderText {#text} at (0,0) size 522x16
+          text run at (0,0) width 522: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4474) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4493) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4512) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4531) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4550) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4569) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4588) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4607) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4626) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4645) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4664) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4683) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4702) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4721) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4740) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4759) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4778) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4797) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4816) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4835) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4854) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4873) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4892) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4911) size 769x19
+        RenderText {#text} at (0,0) size 505x19
+          text run at (0,0) width 505: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4930) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4948) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4966) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,4984) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5002) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5020) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5038) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5056) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5074) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5092) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5110) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5128) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5146) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5164) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5182) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5200) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5218) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5236) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5254) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5272) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5290) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5308) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5326) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5344) size 769x18
+        RenderText {#text} at (0,0) size 612x18
+          text run at (0,0) width 612: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,5362) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5400) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5438) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5476) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5514) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5552) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5590) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5628) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5666) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5704) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5742) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5780) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5818) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5856) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5894) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5932) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,5970) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6008) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6046) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6084) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6122) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6160) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6198) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6236) size 769x38
+        RenderText {#text} at (0,0) size 713x38
+          text run at (0,0) width 713: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,19) width 58: "fjord."
+      RenderBlock {DIV} at (0,6274) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6316) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6358) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6400) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6442) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6484) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6526) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6568) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6610) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6652) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6694) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6736) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6778) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6820) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6862) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6904) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6946) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,6988) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7030) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7072) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7114) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7156) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7198) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7240) size 769x42
+        RenderText {#text} at (0,0) size 711x41
+          text run at (0,0) width 711: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in"
+          text run at (0,21) width 58: "fjord."
+      RenderBlock {DIV} at (0,7282) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7301) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7320) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7339) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7358) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7377) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7396) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7415) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7434) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7453) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7472) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7491) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7510) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7529) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7548) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7567) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7586) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7605) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7624) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7643) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7662) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7681) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7700) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7719) size 769x19
+        RenderText {#text} at (0,0) size 534x19
+          text run at (0,0) width 534: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7738) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7757) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7776) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7795) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7814) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7833) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7852) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7871) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7890) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7909) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7928) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7947) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7966) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,7985) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8004) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8023) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8042) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8061) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8080) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8099) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8118) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8137) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8156) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8175) size 769x19
+        RenderText {#text} at (0,0) size 552x19
+          text run at (0,0) width 552: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8194) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8212) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8230) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8248) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8266) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8284) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8302) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8320) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8338) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8356) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8374) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8392) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8410) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8428) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8446) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8464) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8482) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8500) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8518) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8536) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8554) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8572) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8590) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8608) size 769x18
+        RenderText {#text} at (0,0) size 502x18
+          text run at (0,0) width 502: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8626) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8645) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8664) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8683) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8702) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8721) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8740) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8759) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8778) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8797) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8816) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8835) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8854) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8873) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8892) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8911) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8930) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8949) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8968) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,8987) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9006) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9025) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9044) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9063) size 769x19
+        RenderText {#text} at (0,0) size 633x19
+          text run at (0,0) width 633: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9082) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9136) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9190) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9244) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9298) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9352) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9406) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9460) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9514) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9568) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9622) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9676) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9730) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9784) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9838) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9892) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,9946) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10000) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10054) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10108) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10162) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10216) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10270) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."
+      RenderBlock {DIV} at (0,10324) size 769x54
+        RenderText {#text} at (0,0) size 764x54
+          text run at (0,0) width 764: "Lucky affluent actor asks to feast on giant 10.34\" cheese-filled quiche in fjord."

Modified: trunk/Source/WebCore/ChangeLog (188145 => 188146)


--- trunk/Source/WebCore/ChangeLog	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/ChangeLog	2015-08-07 19:09:59 UTC (rev 188146)
@@ -1,3 +1,44 @@
+2015-08-07  Myles C. Maxfield  <[email protected]>
+
+        Implement font-feature-settings
+        https://bugs.webkit.org/show_bug.cgi?id=147722
+
+        Reviewed by Simon Fraser.
+
+        Fonts with features are simply modeled as new font objects. Font
+        feature information is contained within FontDescription, and our
+        caches are correctly sensitive to this information. Therefore,
+        we just need to make our font lookup code honor the request to
+        use certain features.
+
+        This patch creates a file, FontCacheCoreText.cpp, which will be the
+        new home of all shared OS X / iOS FontCache code. Over time, I will
+        be moving more and more source into this file, until there is
+        nothing left of FontCacheMac.mm and FontCacheIOS.mm. For now, the
+        only function in this file is the code which applies font features.
+
+        Test: css3/font-feature-settings-preinstalled-fonts.html
+
+        * WebCore.xcodeproj/project.pbxproj: Add FontCacheCoreText.cpp.
+        * platform/graphics/FontCache.h:
+        * platform/graphics/cocoa/FontCacheCoreText.cpp: Added.
+        (WebCore::appendTrueTypeFeature): What the name says.
+        (WebCore::appendOpenTypeFeature): Ditto.
+        (WebCore::applyFontFeatureSettings): Ditto.
+        * platform/graphics/ios/FontCacheIOS.mm:
+        (WebCore::FontCache::getSystemFontFallbackForCharacters): Call
+        applyFontFeatureSettings().
+        (WebCore::FontCache::createFontPlatformData): Ditto.
+        * platform/graphics/mac/FontCacheMac.mm:
+        (WebCore::fontWithFamily): Ditto.
+        (WebCore::FontCache::systemFallbackForCharacters): Ditto.
+        (WebCore::FontCache::createFontPlatformData): Ditto.
+        * platform/graphics/mac/FontCustomPlatformData.cpp:
+        (WebCore::FontCustomPlatformData::fontPlatformData): Ditto.
+        * rendering/RenderThemeIOS.mm:
+        (WebCore::RenderThemeIOS::updateCachedSystemFontDescription):
+        Ditto.
+
 2015-08-07  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r187907.

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (188145 => 188146)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2015-08-07 19:09:59 UTC (rev 188146)
@@ -951,6 +951,7 @@
 		1C2417BA1992C04100EF9938 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 1C2417B91992C04100EF9938 /* [email protected] */; };
 		1C26497A0D7E248A00BD10F2 /* DocumentLoaderMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */; };
 		1C26497C0D7E24EC00BD10F2 /* PageMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */; };
+		1C3969D01B74211E002BCFA7 /* FontCacheCoreText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C3969CF1B74211E002BCFA7 /* FontCacheCoreText.cpp */; };
 		1C6466251A12C38E0094603C /* CoreTextSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C5E980F1A02CEFA002DB55F /* CoreTextSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1C6466281A12C4200094603C /* NSFontSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C6466271A12C3F90094603C /* NSFontSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1C81B95A0E97330800266E07 /* InspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81B9560E97330800266E07 /* InspectorController.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -8116,6 +8117,7 @@
 		1C2417B91992C04100EF9938 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
 		1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoaderMac.cpp; sourceTree = "<group>"; };
 		1C26497B0D7E24EC00BD10F2 /* PageMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageMac.cpp; sourceTree = "<group>"; };
+		1C3969CF1B74211E002BCFA7 /* FontCacheCoreText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontCacheCoreText.cpp; sourceTree = "<group>"; };
 		1C5E980F1A02CEFA002DB55F /* CoreTextSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreTextSPI.h; sourceTree = "<group>"; };
 		1C6466271A12C3F90094603C /* NSFontSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSFontSPI.h; sourceTree = "<group>"; };
 		1C81B9560E97330800266E07 /* InspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorController.h; sourceTree = "<group>"; };
@@ -21258,6 +21260,7 @@
 		B5320D68122A24E9002D1440 /* cocoa */ = {
 			isa = PBXGroup;
 			children = (
+				1C3969CF1B74211E002BCFA7 /* FontCacheCoreText.cpp */,
 				B2AFFC780D00A5C10030074D /* FontCascadeCocoa.mm */,
 				7C4EDD731A7B607800198C4D /* FontCocoa.mm */,
 				B5320D6A122A24E9002D1440 /* FontPlatformDataCocoa.mm */,
@@ -29996,6 +29999,7 @@
 				BCEA4888097D93020094C9E4 /* RenderThemeMac.mm in Sources */,
 				93F19AD508245E59001E9ABC /* RenderTreeAsText.cpp in Sources */,
 				5824ABAA1AE849C8009074B7 /* RenderTreePosition.cpp in Sources */,
+				1C3969D01B74211E002BCFA7 /* FontCacheCoreText.cpp in Sources */,
 				E44614510CD68A3500FADA75 /* RenderVideo.cpp in Sources */,
 				BCEA4867097D93020094C9E4 /* RenderView.cpp in Sources */,
 				BE20507D18A458BF0080647E /* RenderVTTCue.cpp in Sources */,

Modified: trunk/Source/WebCore/platform/graphics/FontCache.h (188145 => 188146)


--- trunk/Source/WebCore/platform/graphics/FontCache.h	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/platform/graphics/FontCache.h	2015-08-07 19:09:59 UTC (rev 188146)
@@ -40,7 +40,7 @@
 #include <wtf/text/AtomicStringHash.h>
 #include <wtf/text/WTFString.h>
 
-#if PLATFORM(IOS)
+#if PLATFORM(COCOA)
 #include <CoreText/CTFont.h>
 #endif
 
@@ -214,6 +214,10 @@
     friend class Font;
 };
 
+#if PLATFORM(COCOA)
+RetainPtr<CTFontRef> applyFontFeatureSettings(CTFontRef, const FontFeatureSettings&);
+#endif
+
 #if !PLATFORM(MAC)
 inline void FontCache::platformPurgeInactiveFontData()
 {

Added: trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp (0 => 188146)


--- trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp	2015-08-07 19:09:59 UTC (rev 188146)
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "FontCache.h"
+
+namespace WebCore {
+
+static inline void appendTrueTypeFeature(CFMutableArrayRef features, const FontFeature& feature)
+{
+    // FIXME: We should map OpenType feature strings to the TrueType feature type identifiers listed in <CoreText/SFNTLayoutTypes.h>
+    UNUSED_PARAM(features);
+    UNUSED_PARAM(feature);
+}
+
+static inline void appendOpenTypeFeature(CFMutableArrayRef features, const FontFeature& feature)
+{
+#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000)
+    RetainPtr<CFStringRef> featureKey = feature.tag().string().createCFString();
+    int rawFeatureValue = feature.value();
+    RetainPtr<CFNumberRef> featureValue = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &rawFeatureValue));
+    CFStringRef featureDictionaryKeys[] = {kCTFontOpenTypeFeatureTag, kCTFontOpenTypeFeatureValue};
+    CFTypeRef featureDictionaryValues[] = {featureKey.get(), featureValue.get()};
+    RetainPtr<CFDictionaryRef> featureDictionary = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, (const void**)featureDictionaryKeys, featureDictionaryValues, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
+    CFArrayAppendValue(features, featureDictionary.get());
+#else
+    UNUSED_PARAM(features);
+    UNUSED_PARAM(feature);
+#endif
+}
+
+RetainPtr<CTFontRef> applyFontFeatureSettings(CTFontRef originalFont, const FontFeatureSettings& features)
+{
+    RetainPtr<CFMutableArrayRef> featureArray = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, features.size(), &kCFTypeArrayCallBacks));
+    for (size_t i = 0; i < features.size(); ++i) {
+        appendTrueTypeFeature(featureArray.get(), features[i]);
+        appendOpenTypeFeature(featureArray.get(), features[i]);
+    }
+    CFArrayRef featureArrayPtr = featureArray.get();
+    RetainPtr<CFDictionaryRef> dictionary = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, (const void**)&kCTFontFeatureSettingsAttribute, (const void**)&featureArrayPtr, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
+    RetainPtr<CTFontDescriptorRef> descriptor = adoptCF(CTFontDescriptorCreateWithAttributes(dictionary.get()));
+    return adoptCF(CTFontCreateCopyWithAttributes(originalFont, CTFontGetSize(originalFont), nullptr, descriptor.get()));
+}
+
+}

Modified: trunk/Source/WebCore/platform/graphics/ios/FontCacheIOS.mm (188145 => 188146)


--- trunk/Source/WebCore/platform/graphics/ios/FontCacheIOS.mm	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/platform/graphics/ios/FontCacheIOS.mm	2015-08-07 19:09:59 UTC (rev 188146)
@@ -85,6 +85,9 @@
     if (!substituteFont)
         return nullptr;
 
+    if (substituteFont && description.featureSettings() && description.featureSettings()->size())
+        substituteFont = applyFontFeatureSettings(substituteFont.get(), *description.featureSettings());
+
     CTFontSymbolicTraits originalTraits = CTFontGetSymbolicTraits(ctFont);
     CTFontSymbolicTraits actualTraits = 0;
     if (isFontWeightBold(description.weight()) || description.italic())
@@ -692,6 +695,9 @@
     if (!ctFont)
         return nullptr;
 
+    if (ctFont && fontDescription.featureSettings() && fontDescription.featureSettings()->size())
+        ctFont = applyFontFeatureSettings(ctFont.get(), *fontDescription.featureSettings());
+
     CTFontSymbolicTraits actualTraits = 0;
     if (isFontWeightBold(fontDescription.weight()) || fontDescription.italic())
         actualTraits = CTFontGetSymbolicTraits(ctFont.get());

Modified: trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm (188145 => 188146)


--- trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm	2015-08-07 19:09:59 UTC (rev 188146)
@@ -264,7 +264,7 @@
 // Family name is somewhat of a misnomer here. We first attempt to find an exact match
 // comparing the desiredFamily to the PostScript name of the installed fonts. If that fails
 // we then do a search based on the family names of the installed fonts.
-static NSFont *fontWithFamily(const AtomicString& family, NSFontTraitMask desiredTraits, FontWeight weight, float size)
+static NSFont *fontWithFamily(const AtomicString& family, NSFontTraitMask desiredTraits, FontWeight weight, const FontFeatureSettings* featureSettings, float size)
 {
     if (const auto& specialCase = fontWithFamilySpecialCase(family, weight, desiredTraits, size))
         return specialCase.value();
@@ -286,12 +286,19 @@
         requestedTraits |= kCTFontBoldTrait;
 
     NSString *desiredFamily = family;
-    font = CFBridgingRelease(CTFontCreateForCSS((CFStringRef)desiredFamily, toCoreTextFontWeight(weight), requestedTraits, size));
+    RetainPtr<CTFontRef> foundFont = adoptCF(CTFontCreateForCSS((CFStringRef)desiredFamily, toCoreTextFontWeight(weight), requestedTraits, size));
+    if (!foundFont)
+        return nil;
+    if (featureSettings && featureSettings->size())
+        foundFont = applyFontFeatureSettings(foundFont.get(), *featureSettings);
+    font = CFBridgingRelease(CFRetain(foundFont.get()));
     availableFamily = [font familyName];
     chosenWeight = [fontManager weightOfFont:font];
 
 #else
 
+    UNUSED_PARAM(featureSettings);
+
     NSFontTraitMask desiredTraitsForNameMatch = desiredTraits | (weight >= FontWeight600 ? NSBoldFontMask : 0);
     if (hasDesiredFamilyToAvailableFamilyMapping(family, desiredTraitsForNameMatch, availableFamily)) {
         if (!availableFamily) {
@@ -506,6 +513,8 @@
     const FontPlatformData& platformData = originalFontData->platformData();
     NSFont *nsFont = platformData.nsFont();
     RetainPtr<CTFontRef> result = lookupCTFont(platformData.font(), platformData.size(), characters, length);
+    if (result && description.featureSettings() && description.featureSettings()->size())
+        result = applyFontFeatureSettings(result.get(), *description.featureSettings());
     if (!result)
         return nullptr;
 
@@ -664,7 +673,7 @@
     NSFontTraitMask traits = fontDescription.italic() ? NSFontItalicTrait : 0;
     float size = fontDescription.computedPixelSize();
 
-    NSFont *nsFont = fontWithFamily(family, traits, fontDescription.weight(), size);
+    NSFont *nsFont = fontWithFamily(family, traits, fontDescription.weight(), fontDescription.featureSettings(), size);
     if (!nsFont) {
         if (!shouldAutoActivateFontIfNeeded(family))
             return nullptr;
@@ -673,7 +682,7 @@
         // Ignore the result because we want to use our own algorithm to actually find the font.
         [NSFont fontWithName:family size:size];
 
-        nsFont = fontWithFamily(family, traits, fontDescription.weight(), size);
+        nsFont = fontWithFamily(family, traits, fontDescription.weight(), fontDescription.featureSettings(), size);
         if (!nsFont)
             return nullptr;
     }

Modified: trunk/Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp (188145 => 188146)


--- trunk/Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp	2015-08-07 19:09:59 UTC (rev 188146)
@@ -21,6 +21,7 @@
 #include "config.h"
 #include "FontCustomPlatformData.h"
 
+#include "FontCache.h"
 #include "FontDescription.h"
 #include "FontPlatformData.h"
 #include "SharedBuffer.h"
@@ -39,7 +40,10 @@
     FontOrientation orientation = fontDescription.orientation();
     FontWidthVariant widthVariant = fontDescription.widthVariant();
 #if CORETEXT_WEB_FONTS
-    return FontPlatformData(adoptCF(CTFontCreateWithFontDescriptor(m_fontDescriptor.get(), size, nullptr)).get(), size, bold, italic, orientation, widthVariant);
+    RetainPtr<CTFontRef> font = adoptCF(CTFontCreateWithFontDescriptor(m_fontDescriptor.get(), size, nullptr));
+    if (font && fontDescription.featureSettings() && fontDescription.featureSettings()->size())
+        font = applyFontFeatureSettings(font.get(), *fontDescription.featureSettings());
+    return FontPlatformData(font.get(), size, bold, italic, orientation, widthVariant);
 #else
     return FontPlatformData(m_cgFont.get(), size, bold, italic, orientation, widthVariant);
 #endif

Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (188145 => 188146)


--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm	2015-08-07 19:08:06 UTC (rev 188145)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm	2015-08-07 19:09:59 UTC (rev 188146)
@@ -1261,6 +1261,8 @@
 
     ASSERT(fontDescriptor);
     RetainPtr<CTFontRef> font = adoptCF(CTFontCreateWithFontDescriptor(fontDescriptor.get(), 0, nullptr));
+    if (font && fontDescription.featureSettings() && fontDescription.featureSettings()->size())
+        font = applyFontFeatureSettings(font.get(), *fontDescription.featureSettings());
     fontDescription.setIsAbsoluteSize(true);
     fontDescription.setOneFamily(textStyle);
     fontDescription.setSpecifiedSize(CTFontGetSize(font.get()));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to