<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[177527] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/177527">177527</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2014-12-18 14:32:43 -0800 (Thu, 18 Dec 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unify the Mac and iOS implementations of FontPlatformData a bit
https://bugs.webkit.org/show_bug.cgi?id=139721

Reviewed by Anders Carlsson.

Source/WebCore:

This is a first pass of unifying the Mac and iOS implementations of FontPlatformData.
Notable changes:
- Change the storage of the platform font to be CTFontRef across the board. Adds NSFont
  setter/getter/constructor as a temporary measures during the transition away from NSFont.
- Removes duplicate code that only differed by whether the type was NSFont or CTFontRef.
- Reduces the number of #ifdefs.

* platform/graphics/FontPlatformData.cpp:
(WebCore::FontPlatformData::FontPlatformData):
(WebCore::FontPlatformData::operator=):
(WebCore::FontPlatformData::openTypeTable): Deleted.
* platform/graphics/FontPlatformData.h:
(WebCore::FontPlatformData::nsFont):
(WebCore::FontPlatformData::setNSFont):
(WebCore::FontPlatformData::hash):
(WebCore::FontPlatformData::operator==):
(WebCore::FontPlatformData::isHashTableDeletedValue):
(WebCore::toCTFontRef): Deleted.
(WebCore::FontPlatformData::font): Deleted.
(WebCore::FontPlatformData::roundsGlyphAdvances): Deleted.
(WebCore::FontPlatformData::cgFont): Deleted.
(WebCore::FontPlatformData::hashTableDeletedFontValue): Deleted.
* platform/graphics/SimpleFontData.h:
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::FontPlatformData::FontPlatformData):
(WebCore::FontPlatformData::~FontPlatformData):
(WebCore::FontPlatformData::platformDataInit):
(WebCore::FontPlatformData::platformDataAssign):
(WebCore::FontPlatformData::setFont):
(WebCore::FontPlatformData::roundsGlyphAdvances):
(WebCore::FontPlatformData::allowsLigatures):
(WebCore::FontPlatformData::ctFont):
(WebCore::FontPlatformData::openTypeTable):
(WebCore::FontPlatformData::loadFont): Deleted.
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::FontCache::systemFallbackForCharacters):
* platform/graphics/mac/FontMac.mm:
(WebCore::Font::drawGlyphs):
* platform/graphics/mac/SimpleFontDataMac.mm:
(WebCore::SimpleFontData::getCompositeFontReferenceFontData):
(WebCore::SimpleFontData::platformInit):
(WebCore::SimpleFontData::platformCreateScaledFontData):
(WebCore::SimpleFontData::containsCharacters):
(WebCore::SimpleFontData::determinePitch):
(WebCore::SimpleFontData::renderingStyle):
(WebCore::SimpleFontData::advanceForColorBitmapFont):

Source/WebKit/mac:

* WebView/WebHTMLView.mm:
(fontNameForDescription):
Update for new function name.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontPlatformDatacpp">trunk/Source/WebCore/platform/graphics/FontPlatformData.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontPlatformDatah">trunk/Source/WebCore/platform/graphics/FontPlatformData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsSimpleFontDatah">trunk/Source/WebCore/platform/graphics/SimpleFontData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaFontPlatformDataCocoamm">trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsmacFontCacheMacmm">trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsmacFontMacmm">trunk/Source/WebCore/platform/graphics/mac/FontMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsmacSimpleFontDataMacmm">trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebHTMLViewmm">trunk/Source/WebKit/mac/WebView/WebHTMLView.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/ChangeLog        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -1,3 +1,57 @@
</span><ins>+2014-12-16  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Unify the Mac and iOS implementations of FontPlatformData a bit
+        https://bugs.webkit.org/show_bug.cgi?id=139721
+
+        Reviewed by Anders Carlsson.
+
+        This is a first pass of unifying the Mac and iOS implementations of FontPlatformData.
+        Notable changes:
+        - Change the storage of the platform font to be CTFontRef across the board. Adds NSFont
+          setter/getter/constructor as a temporary measures during the transition away from NSFont.
+        - Removes duplicate code that only differed by whether the type was NSFont or CTFontRef.
+        - Reduces the number of #ifdefs.
+
+        * platform/graphics/FontPlatformData.cpp:
+        (WebCore::FontPlatformData::FontPlatformData):
+        (WebCore::FontPlatformData::operator=):
+        (WebCore::FontPlatformData::openTypeTable): Deleted.
+        * platform/graphics/FontPlatformData.h:
+        (WebCore::FontPlatformData::nsFont):
+        (WebCore::FontPlatformData::setNSFont):
+        (WebCore::FontPlatformData::hash):
+        (WebCore::FontPlatformData::operator==):
+        (WebCore::FontPlatformData::isHashTableDeletedValue):
+        (WebCore::toCTFontRef): Deleted.
+        (WebCore::FontPlatformData::font): Deleted.
+        (WebCore::FontPlatformData::roundsGlyphAdvances): Deleted.
+        (WebCore::FontPlatformData::cgFont): Deleted.
+        (WebCore::FontPlatformData::hashTableDeletedFontValue): Deleted.
+        * platform/graphics/SimpleFontData.h:
+        * platform/graphics/cocoa/FontPlatformDataCocoa.mm:
+        (WebCore::FontPlatformData::FontPlatformData):
+        (WebCore::FontPlatformData::~FontPlatformData):
+        (WebCore::FontPlatformData::platformDataInit):
+        (WebCore::FontPlatformData::platformDataAssign):
+        (WebCore::FontPlatformData::setFont):
+        (WebCore::FontPlatformData::roundsGlyphAdvances):
+        (WebCore::FontPlatformData::allowsLigatures):
+        (WebCore::FontPlatformData::ctFont):
+        (WebCore::FontPlatformData::openTypeTable):
+        (WebCore::FontPlatformData::loadFont): Deleted.
+        * platform/graphics/mac/FontCacheMac.mm:
+        (WebCore::FontCache::systemFallbackForCharacters):
+        * platform/graphics/mac/FontMac.mm:
+        (WebCore::Font::drawGlyphs):
+        * platform/graphics/mac/SimpleFontDataMac.mm:
+        (WebCore::SimpleFontData::getCompositeFontReferenceFontData):
+        (WebCore::SimpleFontData::platformInit):
+        (WebCore::SimpleFontData::platformCreateScaledFontData):
+        (WebCore::SimpleFontData::containsCharacters):
+        (WebCore::SimpleFontData::determinePitch):
+        (WebCore::SimpleFontData::renderingStyle):
+        (WebCore::SimpleFontData::advanceForColorBitmapFont):
+
</ins><span class="cx"> 2014-12-18  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Build fix.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontPlatformDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontPlatformData.cpp (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontPlatformData.cpp        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/FontPlatformData.cpp        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -35,60 +35,18 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> FontPlatformData::FontPlatformData(WTF::HashTableDeletedValueType)
</span><del>-    : m_syntheticBold(false)
-    , m_syntheticOblique(false)
-    , m_orientation(Horizontal)
-#if PLATFORM(IOS)
-    , m_isEmoji(false)
-#endif
-    , m_size(0)
-    , m_widthVariant(RegularWidth)
</del><span class="cx"> #if PLATFORM(WIN)
</span><del>-    , m_font(WTF::HashTableDeletedValue)
-#elif OS(DARWIN)
-    , m_font(hashTableDeletedFontValue())
</del><ins>+    : m_font(WTF::HashTableDeletedValue)
+#elif PLATFORM(COCOA)
+    : m_font(hashTableDeletedFontValue())
</ins><span class="cx"> #endif
</span><del>-#if USE(CG) &amp;&amp; PLATFORM(WIN)
-    , m_cgFont(0)
-#elif USE(CAIRO)
-    , m_scaledFont(hashTableDeletedFontValue())
-#endif
-    , m_isColorBitmapFont(false)
-    , m_isCompositeFontReference(false)
-#if OS(DARWIN)
-    , m_isPrinterFont(false)
-#endif
-#if PLATFORM(WIN)
-    , m_useGDI(false)
-#endif
</del><span class="cx"> {
</span><ins>+#if USE(CAIRO)
+    m_scaledFont = hashTableDeletedFontValue();
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FontPlatformData::FontPlatformData()
</span><del>-    : m_syntheticBold(false)
-    , m_syntheticOblique(false)
-    , m_orientation(Horizontal)
-#if PLATFORM(IOS)
-    , m_isEmoji(false)
-#endif
-    , m_size(0)
-    , m_widthVariant(RegularWidth)
-#if OS(DARWIN)
-    , m_font(0)
-#endif
-#if USE(CG) &amp;&amp; PLATFORM(WIN)
-    , m_cgFont(0)
-#elif USE(CAIRO)
-    , m_scaledFont(0)
-#endif
-    , m_isColorBitmapFont(false)
-    , m_isCompositeFontReference(false)
-#if OS(DARWIN)
-    , m_isPrinterFont(false)
-#endif
-#if PLATFORM(WIN)
-    , m_useGDI(false)
-#endif
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -96,45 +54,19 @@
</span><span class="cx">     : m_syntheticBold(syntheticBold)
</span><span class="cx">     , m_syntheticOblique(syntheticOblique)
</span><span class="cx">     , m_orientation(orientation)
</span><del>-#if PLATFORM(IOS)
-    , m_isEmoji(false)
-#endif
</del><span class="cx">     , m_size(size)
</span><span class="cx">     , m_widthVariant(widthVariant)
</span><del>-#if OS(DARWIN)
-    , m_font(0)
-#endif
-#if USE(CG) &amp;&amp; PLATFORM(WIN)
-    , m_cgFont(0)
-#elif USE(CAIRO)
-    , m_scaledFont(0)
-#endif
-    , m_isColorBitmapFont(false)
-    , m_isCompositeFontReference(false)
-#if OS(DARWIN)
-    , m_isPrinterFont(false)
-#endif
-#if PLATFORM(WIN)
-    , m_useGDI(false)
-#endif
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if OS(DARWIN) &amp;&amp; USE(CG)
</del><ins>+#if USE(CG)
</ins><span class="cx"> FontPlatformData::FontPlatformData(CGFontRef cgFont, float size, bool syntheticBold, bool syntheticOblique, FontOrientation orientation, FontWidthVariant widthVariant)
</span><span class="cx">     : m_syntheticBold(syntheticBold)
</span><span class="cx">     , m_syntheticOblique(syntheticOblique)
</span><span class="cx">     , m_orientation(orientation)
</span><del>-#if PLATFORM(IOS)
-    , m_isEmoji(false)
-#endif
</del><span class="cx">     , m_size(size)
</span><span class="cx">     , m_widthVariant(widthVariant)
</span><del>-    , m_font(0)
</del><span class="cx">     , m_cgFont(cgFont)
</span><del>-    , m_isColorBitmapFont(false)
-    , m_isCompositeFontReference(false)
-    , m_isPrinterFont(false)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="lines">@@ -147,9 +79,6 @@
</span><span class="cx">     , m_widthVariant(source.m_widthVariant)
</span><span class="cx">     , m_isColorBitmapFont(source.m_isColorBitmapFont)
</span><span class="cx">     , m_isCompositeFontReference(source.m_isCompositeFontReference)
</span><del>-#if OS(DARWIN)
-    , m_isPrinterFont(source.m_isPrinterFont)
-#endif
</del><span class="cx"> {
</span><span class="cx">     platformDataInit(source);
</span><span class="cx"> }
</span><span class="lines">@@ -167,21 +96,8 @@
</span><span class="cx">     m_widthVariant = other.m_widthVariant;
</span><span class="cx">     m_isColorBitmapFont = other.m_isColorBitmapFont;
</span><span class="cx">     m_isCompositeFontReference = other.m_isCompositeFontReference;
</span><del>-#if OS(DARWIN)
-    m_isPrinterFont = other.m_isPrinterFont;
-#endif
</del><span class="cx"> 
</span><span class="cx">     return platformDataAssign(other);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if OS(DARWIN) &amp;&amp; USE(CG)
-PassRefPtr&lt;SharedBuffer&gt; FontPlatformData::openTypeTable(uint32_t table) const
-{
-    if (RetainPtr&lt;CFDataRef&gt; data = adoptCF(CGFontCopyTableForTag(cgFont(), table)))
-        return SharedBuffer::wrapCFData(data.get());
-    
-    return nullptr;
</del><span class="cx"> }
</span><del>-#endif
-
-}
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontPlatformDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontPlatformData.h (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontPlatformData.h        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/FontPlatformData.h        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -42,17 +42,25 @@
</span><span class="cx"> #include &lt;cairo.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if OS(DARWIN)
-OBJC_CLASS NSFont;
-
</del><ins>+#if PLATFORM(COCOA)
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> #import &lt;CoreGraphics/CoreGraphics.h&gt;
</span><span class="cx"> #endif
</span><ins>+#if USE(APPKIT)
+OBJC_CLASS NSFont;
+#endif
</ins><span class="cx"> 
</span><del>-typedef struct CGFont* CGFontRef;
</del><span class="cx"> typedef const struct __CTFont* CTFontRef;
</span><ins>+typedef UInt32 FMFont;
+typedef FMFont ATSUFontID;
+typedef UInt32 ATSFontRef;
+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(CG)
+typedef struct CGFont* CGFontRef;
+#endif
+
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/PassRefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="lines">@@ -64,25 +72,12 @@
</span><span class="cx"> typedef struct HFONT__* HFONT;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if USE(CG)
-typedef struct CGFont* CGFontRef;
-#if OS(DARWIN)
-typedef const struct __CTFont* CTFontRef;
-typedef UInt32 FMFont;
-typedef FMFont ATSUFontID;
-typedef UInt32 ATSFontRef;
-#endif
-#endif
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class FontDescription;
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><del>-#if OS(DARWIN) &amp;&amp; USE(APPKIT)
-inline CTFontRef toCTFontRef(NSFont *nsFont) { return reinterpret_cast&lt;CTFontRef&gt;(nsFont); }
-#endif
-
</del><span class="cx"> class FontPlatformData {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="lines">@@ -92,21 +87,21 @@
</span><span class="cx">     FontPlatformData(const FontDescription&amp;, const AtomicString&amp; family);
</span><span class="cx">     FontPlatformData(float size, bool syntheticBold, bool syntheticOblique, FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
</span><span class="cx"> 
</span><del>-#if OS(DARWIN)
</del><ins>+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT FontPlatformData(CTFontRef, float size, bool isPrinterFont = false, bool syntheticBold = false, bool syntheticOblique = false, FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
</ins><span class="cx"> #if USE(APPKIT)
</span><del>-    WEBCORE_EXPORT FontPlatformData(NSFont*, float size, bool isPrinterFont = false, bool syntheticBold = false, bool syntheticOblique = false,
-                     FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
-#else
-    WEBCORE_EXPORT FontPlatformData(CTFontRef, float size, bool isPrinterFont = false, bool syntheticBold = false, bool syntheticOblique = false,
-                     FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
</del><ins>+    // FIXME: Remove this when all NSFont usage is removed.
+    WEBCORE_EXPORT FontPlatformData(NSFont *, float size, bool isPrinterFont = false, bool syntheticBold = false, bool syntheticOblique = false, FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
</ins><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if USE(CG)
</span><span class="cx">     FontPlatformData(CGFontRef, float size, bool syntheticBold, bool syntheticOblique, FontOrientation, FontWidthVariant);
</span><span class="cx"> #endif
</span><del>-#endif
</del><ins>+
</ins><span class="cx"> #if PLATFORM(WIN)
</span><span class="cx">     FontPlatformData(GDIObject&lt;HFONT&gt;, float size, bool syntheticBold, bool syntheticOblique, bool useGDI);
</span><ins>+
</ins><span class="cx"> #if USE(CG)
</span><span class="cx">     FontPlatformData(GDIObject&lt;HFONT&gt;, CGFontRef, float size, bool syntheticBold, bool syntheticOblique, bool useGDI);
</span><span class="cx"> #elif USE(CAIRO)
</span><span class="lines">@@ -114,38 +109,33 @@
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-    FontPlatformData(CTFontRef, float size, bool syntheticBold = false, bool syntheticOblique = false, FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
-#endif
-
</del><span class="cx">     WEBCORE_EXPORT ~FontPlatformData();
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(WIN)
</span><span class="cx">     HFONT hfont() const { return m_font ? m_font-&gt;get() : 0; }
</span><span class="cx">     bool useGDI() const { return m_useGDI; }
</span><del>-#elif PLATFORM(IOS)
</del><ins>+#elif PLATFORM(COCOA)
+    // 
</ins><span class="cx">     CTFontRef font() const { return m_font; }
</span><span class="cx">     void setFont(CTFontRef);
</span><del>-#elif OS(DARWIN)
-    NSFont* font() const { return m_font; }
-    void setFont(NSFont*);
-#endif
</del><span class="cx"> 
</span><del>-#if USE(CG)
-#if OS(DARWIN)
-    CGFontRef cgFont() const { return m_cgFont.get(); }
</del><span class="cx">     CTFontRef ctFont() const;
</span><span class="cx"> 
</span><del>-#if !PLATFORM(IOS)
</del><ins>+    bool allowsLigatures() const;
</ins><span class="cx">     bool roundsGlyphAdvances() const;
</span><del>-#else
-    bool roundsGlyphAdvances() const { return false; }
-#endif // !PLATFORM(IOS)
</del><span class="cx"> 
</span><del>-    bool allowsLigatures() const;
-#else
</del><ins>+#if USE(APPKIT)
+    // FIXME: Remove this when all NSFont usage is removed.
+    NSFont *nsFont() const { return (NSFont *)m_font; }
+    void setNSFont(NSFont *font) { setFont((CTFontRef)font); }
+#endif
+#endif
+
+#if USE(CG)
</ins><span class="cx">     CGFontRef cgFont() const { return m_cgFont.get(); }
</span><span class="cx"> #endif
</span><ins>+
+#if PLATFORM(COCOA)
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     bool isFixedPitch() const;
</span><span class="lines">@@ -155,7 +145,7 @@
</span><span class="cx">     bool syntheticOblique() const { return m_syntheticOblique; }
</span><span class="cx">     bool isColorBitmapFont() const { return m_isColorBitmapFont; }
</span><span class="cx">     bool isCompositeFontReference() const { return m_isCompositeFontReference; }
</span><del>-#if OS(DARWIN)
</del><ins>+#if PLATFORM(COCOA)
</ins><span class="cx">     bool isPrinterFont() const { return m_isPrinterFont; }
</span><span class="cx"> #endif
</span><span class="cx">     FontOrientation orientation() const { return m_orientation; }
</span><span class="lines">@@ -172,10 +162,8 @@
</span><span class="cx"> #if PLATFORM(WIN) &amp;&amp; !USE(CAIRO)
</span><span class="cx">         return m_font ? m_font-&gt;hash() : 0;
</span><span class="cx"> #elif OS(DARWIN)
</span><del>-#if !PLATFORM(IOS)
-#if USE(CG)
</del><ins>+#if USE(APPKIT)
</ins><span class="cx">         ASSERT(m_font || !m_cgFont);
</span><del>-#endif
</del><span class="cx">         uintptr_t hashCodes[3] = { (uintptr_t)m_font, m_widthVariant, static_cast&lt;uintptr_t&gt;(m_isPrinterFont &lt;&lt; 3 | m_orientation &lt;&lt; 2 | m_syntheticBold &lt;&lt; 1 | m_syntheticOblique) };
</span><span class="cx"> #else
</span><span class="cx">         ASSERT(m_font || !m_cgFont || m_isEmoji);
</span><span class="lines">@@ -197,7 +185,7 @@
</span><span class="cx">             &amp;&amp; m_syntheticOblique == other.m_syntheticOblique
</span><span class="cx">             &amp;&amp; m_isColorBitmapFont == other.m_isColorBitmapFont
</span><span class="cx">             &amp;&amp; m_isCompositeFontReference == other.m_isCompositeFontReference
</span><del>-#if OS(DARWIN)
</del><ins>+#if PLATFORM(COCOA)
</ins><span class="cx">             &amp;&amp; m_isPrinterFont == other.m_isPrinterFont
</span><span class="cx"> #endif
</span><span class="cx">             &amp;&amp; m_orientation == other.m_orientation
</span><span class="lines">@@ -208,14 +196,14 @@
</span><span class="cx">     {
</span><span class="cx"> #if PLATFORM(WIN) &amp;&amp; !USE(CAIRO)
</span><span class="cx">         return m_font.isHashTableDeletedValue();
</span><del>-#elif OS(DARWIN)
</del><ins>+#elif PLATFORM(COCOA)
</ins><span class="cx">         return m_font == hashTableDeletedFontValue();
</span><span class="cx"> #elif USE(CAIRO)
</span><span class="cx">         return m_scaledFont == hashTableDeletedFontValue();
</span><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-#if (OS(DARWIN) &amp;&amp; USE(CG)) || (PLATFORM(WIN) &amp;&amp; (USE(CG) || USE(CAIRO)))
</del><ins>+#if PLATFORM(COCOA) || PLATFORM(WIN)
</ins><span class="cx">     PassRefPtr&lt;SharedBuffer&gt; openTypeTable(uint32_t table) const;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -227,60 +215,49 @@
</span><span class="cx">     bool platformIsEqual(const FontPlatformData&amp;) const;
</span><span class="cx">     void platformDataInit(const FontPlatformData&amp;);
</span><span class="cx">     const FontPlatformData&amp; platformDataAssign(const FontPlatformData&amp;);
</span><del>-#if PLATFORM(IOS)
</del><ins>+#if PLATFORM(COCOA)
</ins><span class="cx">     static CTFontRef hashTableDeletedFontValue() { return reinterpret_cast&lt;CTFontRef&gt;(-1); }
</span><del>-#elif OS(DARWIN)
-    // Load various data about the font specified by |nsFont| with the size fontSize into the following output paramters:
-    void loadFont(NSFont*, float fontSize, NSFont*&amp; outNSFont, CGFontRef&amp;);
-    static NSFont* hashTableDeletedFontValue() { return reinterpret_cast&lt;NSFont *&gt;(-1); }
-#elif PLATFORM(WIN)
</del><ins>+#endif
+#if PLATFORM(WIN)
</ins><span class="cx">     void platformDataInit(HFONT, float size, HDC, WCHAR* faceName);
</span><span class="cx"> #endif
</span><del>-
</del><span class="cx"> #if USE(CAIRO)
</span><span class="cx">     static cairo_scaled_font_t* hashTableDeletedFontValue() { return reinterpret_cast&lt;cairo_scaled_font_t*&gt;(-1); }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> public:
</span><del>-    bool m_syntheticBold;
-    bool m_syntheticOblique;
-    FontOrientation m_orientation;
</del><ins>+    bool m_syntheticBold { false };
+    bool m_syntheticOblique { false };
+    FontOrientation m_orientation { Horizontal };
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    bool m_isEmoji;
</del><ins>+    bool m_isEmoji { false };
</ins><span class="cx"> #endif
</span><del>-    float m_size;
-    FontWidthVariant m_widthVariant;
</del><ins>+    float m_size { 0 };
+    FontWidthVariant m_widthVariant { RegularWidth };
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-#if PLATFORM(IOS)
-    CTFontRef m_font;
-#elif OS(DARWIN)
-    NSFont* m_font;
</del><ins>+#if PLATFORM(COCOA)
+    CTFontRef m_font { nullptr };
+    mutable RetainPtr&lt;CTFontRef&gt; m_ctFont;
</ins><span class="cx"> #elif PLATFORM(WIN)
</span><span class="cx">     RefPtr&lt;SharedGDIObject&lt;HFONT&gt;&gt; m_font;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if USE(CG)
</span><del>-#if PLATFORM(WIN)
</del><span class="cx">     RetainPtr&lt;CGFontRef&gt; m_cgFont;
</span><del>-#else
-    RetainPtr&lt;CGFontRef&gt; m_cgFont;
-    mutable RetainPtr&lt;CTFontRef&gt; m_CTFont;
</del><span class="cx"> #endif
</span><del>-#endif
-
</del><span class="cx"> #if USE(CAIRO)
</span><del>-    cairo_scaled_font_t* m_scaledFont;
</del><ins>+    cairo_scaled_font_t* m_scaledFont { nullptr };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool m_isColorBitmapFont;
-    bool m_isCompositeFontReference;
-#if OS(DARWIN)
-    bool m_isPrinterFont;
</del><ins>+    bool m_isColorBitmapFont { false };
+    bool m_isCompositeFontReference { false };
+#if PLATFORM(COCOA)
+    bool m_isPrinterFont { false };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(WIN)
</span><del>-    bool m_useGDI;
</del><ins>+    bool m_useGDI { false };
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsSimpleFontDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/SimpleFontData.h (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/SimpleFontData.h        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/SimpleFontData.h        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(APPKIT)
</span><span class="cx">     const SimpleFontData* getCompositeFontReferenceFontData(NSFont *key) const;
</span><del>-    NSFont* getNSFont() const { return m_platformData.font(); }
</del><ins>+    NSFont* getNSFont() const { return m_platformData.nsFont(); }
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaFontPlatformDataCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -24,7 +24,10 @@
</span><span class="cx"> #import &quot;config.h&quot;
</span><span class="cx"> #import &quot;FontPlatformData.h&quot;
</span><span class="cx"> 
</span><ins>+#import &quot;SharedBuffer.h&quot;
</ins><span class="cx"> #import &quot;WebCoreSystemInterface.h&quot;
</span><ins>+#import &lt;wtf/text/WTFString.h&gt;
+
</ins><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> #import &lt;AppKit/NSFont.h&gt;
</span><span class="cx"> #else
</span><span class="lines">@@ -32,91 +35,51 @@
</span><span class="cx"> #import &lt;CoreText/CoreText.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#import &lt;wtf/text/WTFString.h&gt;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> // These CoreText Text Spacing feature selectors are not defined in CoreText.
</span><span class="cx"> enum TextSpacingCTFeatureSelector { TextSpacingProportional, TextSpacingFullWidth, TextSpacingHalfWidth, TextSpacingThirdWidth, TextSpacingQuarterWidth };
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
-void FontPlatformData::loadFont(NSFont* nsFont, float, NSFont*&amp; outNSFont, CGFontRef&amp; cgFont)
-{
-    outNSFont = nsFont;
-    cgFont = CTFontCopyGraphicsFont(toCTFontRef(nsFont), 0);
-}
-#endif  // PLATFORM(MAC)
-
-#if !PLATFORM(IOS)
-FontPlatformData::FontPlatformData(NSFont *nsFont, float size, bool isPrinterFont, bool syntheticBold, bool syntheticOblique, FontOrientation orientation, FontWidthVariant widthVariant)
</del><ins>+FontPlatformData::FontPlatformData(CTFontRef font, float size, bool isPrinterFont, bool syntheticBold, bool syntheticOblique, FontOrientation orientation, FontWidthVariant widthVariant)
</ins><span class="cx">     : m_syntheticBold(syntheticBold)
</span><span class="cx">     , m_syntheticOblique(syntheticOblique)
</span><span class="cx">     , m_orientation(orientation)
</span><span class="cx">     , m_size(size)
</span><span class="cx">     , m_widthVariant(widthVariant)
</span><del>-    , m_font(nsFont)
-    , m_isColorBitmapFont(false)
-#else
-FontPlatformData::FontPlatformData(CTFontRef ctFont, float size, bool isPrinterFont, bool syntheticBold, bool syntheticOblique, FontOrientation orientation, FontWidthVariant widthVariant)
-    : m_syntheticBold(syntheticBold)
-    , m_syntheticOblique(syntheticOblique)
-    , m_orientation(orientation)
-    , m_isEmoji(false)
-    , m_size(size)
-    , m_widthVariant(widthVariant)
-    , m_font(ctFont)
-    , m_cgFont(adoptCF(CTFontCopyGraphicsFont(ctFont, NULL)))
-    , m_isColorBitmapFont(CTFontGetSymbolicTraits(ctFont) &amp; kCTFontTraitColorGlyphs)
-#endif // !PLATFORM(IOS)
-    , m_isCompositeFontReference(false)
</del><ins>+    , m_font(font)
+    , m_cgFont(adoptCF(CTFontCopyGraphicsFont(font, NULL)))
+    , m_isColorBitmapFont(CTFontGetSymbolicTraits(font) &amp; kCTFontTraitColorGlyphs)
+    , m_isCompositeFontReference(CTFontGetSymbolicTraits(font) &amp; kCTFontCompositeTrait)
</ins><span class="cx">     , m_isPrinterFont(isPrinterFont)
</span><span class="cx"> {
</span><del>-#if !PLATFORM(IOS)
-    ASSERT_ARG(nsFont, nsFont);
</del><ins>+    ASSERT_ARG(font, font);
+    CFRetain(m_font);
+}
</ins><span class="cx"> 
</span><del>-    CGFontRef cgFont = 0;
-    loadFont(nsFont, size, m_font, cgFont);
-    {
-        CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(toCTFontRef(m_font));
-        m_isColorBitmapFont = traits &amp; kCTFontColorGlyphsTrait;
-        m_isCompositeFontReference = traits &amp; kCTFontCompositeTrait;
-    }
-
-    if (m_font)
-        CFRetain(m_font);
-
-    m_cgFont = adoptCF(cgFont);
-#else
-    ASSERT_ARG(ctFont, ctFont);
-
-    CFRetain(ctFont);
-#endif // !PLATFORM(IOS)
</del><ins>+#if USE(APPKIT)
+// FIXME: Remove this when all NSFont usage is removed.
+FontPlatformData::FontPlatformData(NSFont *font, float size, bool isPrinterFont, bool syntheticBold, bool syntheticOblique, FontOrientation orientation, FontWidthVariant widthVariant)
+    : FontPlatformData((CTFontRef)font, size, isPrinterFont, syntheticBold, syntheticOblique, orientation, widthVariant)
+{
</ins><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> FontPlatformData::~FontPlatformData()
</span><span class="cx"> {
</span><del>-#if !PLATFORM(IOS)
-    if (m_font &amp;&amp; m_font != reinterpret_cast&lt;NSFont *&gt;(-1))
-        CFRelease(m_font);
-#else
</del><span class="cx">     if (m_font &amp;&amp; m_font != reinterpret_cast&lt;CTFontRef&gt;(-1))
</span><span class="cx">         CFRelease(m_font);
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FontPlatformData::platformDataInit(const FontPlatformData&amp; f)
</span><span class="cx"> {
</span><del>-#if !PLATFORM(IOS)
-    m_font = f.m_font &amp;&amp; f.m_font != reinterpret_cast&lt;NSFont *&gt;(-1) ? const_cast&lt;NSFont *&gt;(static_cast&lt;const NSFont *&gt;(CFRetain(f.m_font))) : f.m_font;
-#else
</del><span class="cx">     m_font = f.m_font &amp;&amp; f.m_font != reinterpret_cast&lt;CTFontRef&gt;(-1) ? static_cast&lt;CTFontRef&gt;(const_cast&lt;void *&gt;(CFRetain(f.m_font))) : f.m_font;
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     m_isEmoji = f.m_isEmoji;
</span><span class="cx"> #endif
</span><span class="cx">     m_cgFont = f.m_cgFont;
</span><del>-    m_CTFont = f.m_CTFont;
</del><ins>+    m_ctFont = f.m_ctFont;
+    m_isPrinterFont = f.m_isPrinterFont;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const FontPlatformData&amp; FontPlatformData::platformDataAssign(const FontPlatformData&amp; f)
</span><span class="lines">@@ -125,23 +88,16 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     m_isEmoji = f.m_isEmoji;
</span><span class="cx"> #endif
</span><del>-#if !PLATFORM(IOS)
-    if (m_font == f.m_font)
-        return *this;
-    if (f.m_font &amp;&amp; f.m_font != reinterpret_cast&lt;NSFont *&gt;(-1))
-        CFRetain(f.m_font);
-    if (m_font &amp;&amp; m_font != reinterpret_cast&lt;NSFont *&gt;(-1))
-        CFRelease(m_font);
-#else
</del><span class="cx">     if (m_font &amp;&amp; m_font != reinterpret_cast&lt;CTFontRef&gt;(-1) &amp;&amp; f.m_font &amp;&amp; f.m_font != reinterpret_cast&lt;CTFontRef&gt;(-1) &amp;&amp; CFEqual(m_font, f.m_font))
</span><span class="cx">         return *this;
</span><span class="cx">     if (f.m_font &amp;&amp; f.m_font != reinterpret_cast&lt;CTFontRef&gt;(-1))
</span><span class="cx">         CFRetain(f.m_font);
</span><span class="cx">     if (m_font &amp;&amp; m_font != reinterpret_cast&lt;CTFontRef&gt;(-1))
</span><span class="cx">         CFRelease(m_font);
</span><del>-#endif
</del><span class="cx">     m_font = f.m_font;
</span><del>-    m_CTFont = f.m_CTFont;
</del><ins>+    m_ctFont = f.m_ctFont;
+    m_isPrinterFont = f.m_isPrinterFont;
+
</ins><span class="cx">     return *this;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -169,34 +125,6 @@
</span><span class="cx">     return m_cgFont == other.m_cgFont;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !PLATFORM(IOS)
-void FontPlatformData::setFont(NSFont *font)
-{
-    ASSERT_ARG(font, font);
-    ASSERT(m_font != reinterpret_cast&lt;NSFont *&gt;(-1));
-
-    if (m_font == font)
-        return;
-
-    CFRetain(font);
-    if (m_font)
-        CFRelease(m_font);
-    m_font = font;
-    m_size = [font pointSize];
-    
-    CGFontRef cgFont = 0;
-    NSFont* loadedFont = 0;
-    loadFont(m_font, m_size, loadedFont, cgFont);
-
-    m_cgFont = adoptCF(cgFont);
-    {
-        CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(toCTFontRef(m_font));
-        m_isColorBitmapFont = traits &amp; kCTFontColorGlyphsTrait;
-        m_isCompositeFontReference = traits &amp; kCTFontCompositeTrait;
-    }
-    m_CTFont = 0;
-}
-#else
</del><span class="cx"> void FontPlatformData::setFont(CTFontRef font)
</span><span class="cx"> {
</span><span class="cx">     ASSERT_ARG(font, font);
</span><span class="lines">@@ -211,21 +139,28 @@
</span><span class="cx">     m_font = font;
</span><span class="cx">     m_size = CTFontGetSize(font);
</span><span class="cx">     m_cgFont = adoptCF(CTFontCopyGraphicsFont(font, nullptr));
</span><del>-    m_isColorBitmapFont = CTFontGetSymbolicTraits(font) &amp; kCTFontTraitColorGlyphs;
</del><ins>+
+    CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(m_font);
+    m_isColorBitmapFont = traits &amp; kCTFontTraitColorGlyphs;
+    m_isCompositeFontReference = traits &amp; kCTFontCompositeTrait;
+    
+    m_ctFont = nullptr;
</ins><span class="cx"> }
</span><del>-#endif
</del><span class="cx"> 
</span><del>-#if !PLATFORM(IOS)
</del><span class="cx"> bool FontPlatformData::roundsGlyphAdvances() const
</span><span class="cx"> {
</span><del>-    return [m_font renderingMode] == NSFontAntialiasedIntegerAdvancementsRenderingMode;
-}
</del><ins>+#if USE(APPKIT)
+    return [(NSFont *)m_font renderingMode] == NSFontAntialiasedIntegerAdvancementsRenderingMode;
+#else
+    return false;
</ins><span class="cx"> #endif
</span><ins>+}
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> bool FontPlatformData::allowsLigatures() const
</span><span class="cx"> {
</span><del>-#if !PLATFORM(IOS)
-    return ![[m_font coveredCharacterSet] characterIsMember:'a'];
</del><ins>+#if USE(APPKIT)
+    return ![[(NSFont *)m_font coveredCharacterSet] characterIsMember:'a'];
</ins><span class="cx"> #else
</span><span class="cx">     if (!m_font)
</span><span class="cx">         return false;
</span><span class="lines">@@ -309,23 +244,23 @@
</span><span class="cx"> 
</span><span class="cx"> CTFontRef FontPlatformData::ctFont() const
</span><span class="cx"> {
</span><del>-    if (m_CTFont)
-        return m_CTFont.get();
</del><ins>+    if (m_ctFont)
+        return m_ctFont.get();
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(m_cgFont.get());
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    m_CTFont = toCTFontRef(m_font);
-    if (m_CTFont) {
</del><ins>+    m_ctFont = m_font;
+    if (m_ctFont) {
</ins><span class="cx">         CTFontDescriptorRef fontDescriptor;
</span><del>-        RetainPtr&lt;CFStringRef&gt; postScriptName = adoptCF(CTFontCopyPostScriptName(m_CTFont.get()));
</del><ins>+        RetainPtr&lt;CFStringRef&gt; postScriptName = adoptCF(CTFontCopyPostScriptName(m_ctFont.get()));
</ins><span class="cx">         // Hoefler Text Italic has line-initial and -final swashes enabled by default, so disable them.
</span><span class="cx">         if (CFEqual(postScriptName.get(), CFSTR(&quot;HoeflerText-Italic&quot;)) || CFEqual(postScriptName.get(), CFSTR(&quot;HoeflerText-BlackItalic&quot;)))
</span><span class="cx">             fontDescriptor = cascadeToLastResortAndDisableSwashesFontDescriptor();
</span><span class="cx">         else
</span><span class="cx">             fontDescriptor = cascadeToLastResortFontDescriptor();
</span><del>-        m_CTFont = adoptCF(CTFontCreateCopyWithAttributes(m_CTFont.get(), m_size, 0, fontDescriptor));
</del><ins>+        m_ctFont = adoptCF(CTFontCreateCopyWithAttributes(m_ctFont.get(), m_size, 0, fontDescriptor));
</ins><span class="cx">     } else
</span><del>-        m_CTFont = adoptCF(CTFontCreateWithGraphicsFont(m_cgFont.get(), m_size, 0, cascadeToLastResortFontDescriptor()));
</del><ins>+        m_ctFont = adoptCF(CTFontCreateWithGraphicsFont(m_cgFont.get(), m_size, 0, cascadeToLastResortFontDescriptor()));
</ins><span class="cx"> #else
</span><span class="cx">     // Apple Color Emoji size is adjusted (and then re-adjusted by Core Text) and capped.
</span><span class="cx">     CGFloat size = !m_isEmoji ? m_size : m_size &lt;= 15 ? 4 * (m_size + 2) / static_cast&lt;CGFloat&gt;(5) : 16;
</span><span class="lines">@@ -335,25 +270,33 @@
</span><span class="cx">         fontDescriptor = cascadeToLastResortAndDisableSwashesFontDescriptor();
</span><span class="cx">     else
</span><span class="cx">         fontDescriptor = cascadeToLastResortFontDescriptor();
</span><del>-    m_CTFont = adoptCF(CTFontCreateWithGraphicsFont(m_cgFont.get(), size, 0, fontDescriptor));
</del><ins>+    m_ctFont = adoptCF(CTFontCreateWithGraphicsFont(m_cgFont.get(), size, 0, fontDescriptor));
</ins><span class="cx"> #endif // !PLATFORM(IOS)
</span><span class="cx"> 
</span><span class="cx">     if (m_widthVariant != RegularWidth) {
</span><span class="cx">         int featureTypeValue = kTextSpacingType;
</span><span class="cx">         int featureSelectorValue = mapFontWidthVariantToCTFeatureSelector(m_widthVariant);
</span><del>-        RetainPtr&lt;CTFontDescriptorRef&gt; sourceDescriptor = adoptCF(CTFontCopyFontDescriptor(m_CTFont.get()));
</del><ins>+        RetainPtr&lt;CTFontDescriptorRef&gt; sourceDescriptor = adoptCF(CTFontCopyFontDescriptor(m_ctFont.get()));
</ins><span class="cx">         RetainPtr&lt;CFNumberRef&gt; featureType = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;featureTypeValue));
</span><span class="cx">         RetainPtr&lt;CFNumberRef&gt; featureSelector = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;featureSelectorValue));
</span><span class="cx">         RetainPtr&lt;CTFontDescriptorRef&gt; newDescriptor = adoptCF(CTFontDescriptorCreateCopyWithFeature(sourceDescriptor.get(), featureType.get(), featureSelector.get()));
</span><span class="cx">         RetainPtr&lt;CTFontRef&gt; newFont = adoptCF(CTFontCreateWithFontDescriptor(newDescriptor.get(), m_size, 0));
</span><span class="cx"> 
</span><span class="cx">         if (newFont)
</span><del>-            m_CTFont = newFont;
</del><ins>+            m_ctFont = newFont;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return m_CTFont.get();
</del><ins>+    return m_ctFont.get();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+PassRefPtr&lt;SharedBuffer&gt; FontPlatformData::openTypeTable(uint32_t table) const
+{
+    if (RetainPtr&lt;CFDataRef&gt; data = adoptCF(CGFontCopyTableForTag(cgFont(), table)))
+        return SharedBuffer::wrapCFData(data.get());
+    
+    return nullptr;
+}
+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> String FontPlatformData::description() const
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsmacFontCacheMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/mac/FontCacheMac.mm        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -342,7 +342,7 @@
</span><span class="cx">     UChar32 character;
</span><span class="cx">     U16_GET(characters, 0, 0, length, character);
</span><span class="cx">     const FontPlatformData&amp; platformData = originalFontData-&gt;platformData();
</span><del>-    NSFont *nsFont = platformData.font();
</del><ins>+    NSFont *nsFont = platformData.nsFont();
</ins><span class="cx"> 
</span><span class="cx">     NSString *string = [[NSString alloc] initWithCharactersNoCopy:const_cast&lt;UChar*&gt;(characters) length:length freeWhenDone:NO];
</span><span class="cx">     NSFont *substituteFont = [NSFont findFontLike:nsFont forString:string withRange:NSMakeRange(0, [string length]) inLanguage:nil];
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsmacFontMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/mac/FontMac.mm (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/mac/FontMac.mm        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/mac/FontMac.mm        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -248,16 +248,18 @@
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">     NSFont* drawFont;
</span><span class="cx">     if (!isPrinterFont()) {
</span><del>-        drawFont = [platformData.font() screenFont];
-        if (drawFont != platformData.font())
</del><ins>+        drawFont = [platformData.nsFont() screenFont];
+        if (drawFont != platformData.nsFont()) {
</ins><span class="cx">             // We are getting this in too many places (3406411); use ERROR so it only prints on debug versions for now. (We should debug this also, eventually).
</span><span class="cx">             LOG_ERROR(&quot;Attempting to set non-screen font (%@) when drawing to screen.  Using screen font anyway, may result in incorrect metrics.&quot;,
</span><del>-                [[[platformData.font() fontDescriptor] fontAttributes] objectForKey:NSFontNameAttribute]);
</del><ins>+                [[[platformData.nsFont() fontDescriptor] fontAttributes] objectForKey:NSFontNameAttribute]);
+        }
</ins><span class="cx">     } else {
</span><del>-        drawFont = [platformData.font() printerFont];
-        if (drawFont != platformData.font())
</del><ins>+        drawFont = [platformData.nsFont() printerFont];
+        if (drawFont != platformData.nsFont()) {
</ins><span class="cx">             NSLog(@&quot;Attempting to set non-printer font (%@) when printing.  Using printer font anyway, may result in incorrect metrics.&quot;,
</span><del>-                [[[platformData.font() fontDescriptor] fontAttributes] objectForKey:NSFontNameAttribute]);
</del><ins>+                [[[platformData.nsFont() fontDescriptor] fontAttributes] objectForKey:NSFontNameAttribute]);
+        }
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsmacSimpleFontDataMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx">             bool isUsingPrinterFont = platformData().isPrinterFont();
</span><span class="cx">             NSFont *substituteFont = isUsingPrinterFont ? [key printerFont] : [key screenFont];
</span><span class="cx"> 
</span><del>-            CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(toCTFontRef(substituteFont));
</del><ins>+            CTFontSymbolicTraits traits = CTFontGetSymbolicTraits((CTFontRef)substituteFont);
</ins><span class="cx">             bool syntheticBold = platformData().syntheticBold() &amp;&amp; !(traits &amp; kCTFontBoldTrait);
</span><span class="cx">             bool syntheticOblique = platformData().syntheticOblique() &amp;&amp; !(traits &amp; kCTFontItalicTrait);
</span><span class="cx"> 
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">         // It overrides the normal &quot;Times&quot; family font.
</span><span class="cx">         // It also appears to have a corrupt regular variant.
</span><span class="cx">         NSString *fallbackFontFamily;
</span><del>-        if ([[m_platformData.font() familyName] isEqual:@&quot;Times&quot;])
</del><ins>+        if ([[m_platformData.nsFont() familyName] isEqual:@&quot;Times&quot;])
</ins><span class="cx">             fallbackFontFamily = @&quot;Times New Roman&quot;;
</span><span class="cx">         else
</span><span class="cx">             fallbackFontFamily = webFallbackFontFamily();
</span><span class="lines">@@ -138,17 +138,17 @@
</span><span class="cx">         // Try setting up the alternate font.
</span><span class="cx">         // This is a last ditch effort to use a substitute font when something has gone wrong.
</span><span class="cx"> #if !ERROR_DISABLED
</span><del>-        RetainPtr&lt;NSFont&gt; initialFont = m_platformData.font();
</del><ins>+        RetainPtr&lt;NSFont&gt; initialFont = m_platformData.nsFont();
</ins><span class="cx"> #endif
</span><span class="cx">         if (m_platformData.font())
</span><del>-            m_platformData.setFont([[NSFontManager sharedFontManager] convertFont:m_platformData.font() toFamily:fallbackFontFamily]);
</del><ins>+            m_platformData.setNSFont([[NSFontManager sharedFontManager] convertFont:m_platformData.nsFont() toFamily:fallbackFontFamily]);
</ins><span class="cx">         else
</span><del>-            m_platformData.setFont([NSFont fontWithName:fallbackFontFamily size:m_platformData.size()]);
</del><ins>+            m_platformData.setNSFont([NSFont fontWithName:fallbackFontFamily size:m_platformData.size()]);
</ins><span class="cx">         if (!initFontData(this)) {
</span><span class="cx">             if ([fallbackFontFamily isEqual:@&quot;Times New Roman&quot;]) {
</span><span class="cx">                 // OK, couldn't setup Times New Roman as an alternate to Times, fallback
</span><span class="cx">                 // on the system font.  If this fails we have no alternative left.
</span><del>-                m_platformData.setFont([[NSFontManager sharedFontManager] convertFont:m_platformData.font() toFamily:webFallbackFontFamily()]);
</del><ins>+                m_platformData.setNSFont([[NSFontManager sharedFontManager] convertFont:m_platformData.nsFont() toFamily:webFallbackFontFamily()]);
</ins><span class="cx">                 if (!initFontData(this)) {
</span><span class="cx">                     // We tried, Times, Times New Roman, and the system font. No joy. We have to give up.
</span><span class="cx">                     LOG_ERROR(&quot;unable to initialize with font %@&quot;, initialFont.get());
</span><span class="lines">@@ -163,13 +163,13 @@
</span><span class="cx"> 
</span><span class="cx">         // Report the problem.
</span><span class="cx">         LOG_ERROR(&quot;Corrupt font detected, using %@ in place of %@.&quot;,
</span><del>-            [m_platformData.font() familyName], [initialFont.get() familyName]);
</del><ins>+            [m_platformData.nsFont() familyName], [initialFont.get() familyName]);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // If all else fails, try to set up using the system font.
</span><span class="cx">     // This is probably because Times and Times New Roman are both unavailable.
</span><span class="cx">     if (failedSetup) {
</span><del>-        m_platformData.setFont([NSFont systemFontOfSize:[m_platformData.font() pointSize]]);
</del><ins>+        m_platformData.setNSFont([NSFont systemFontOfSize:[m_platformData.nsFont() pointSize]]);
</ins><span class="cx">         LOG_ERROR(&quot;failed to set up font, using system font %s&quot;, m_platformData.font());
</span><span class="cx">         initFontData(this);
</span><span class="cx">     }
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx">     // web standard. The AppKit adjustment of 20% is too big and is
</span><span class="cx">     // incorrectly added to line spacing, so we use a 15% adjustment instead
</span><span class="cx">     // and add it to the ascent.
</span><del>-    NSString *familyName = [m_platformData.font() familyName];
</del><ins>+    NSString *familyName = [m_platformData.nsFont() familyName];
</ins><span class="cx">     if ([familyName isEqualToString:@&quot;Times&quot;] || [familyName isEqualToString:@&quot;Helvetica&quot;] || [familyName isEqualToString:@&quot;Courier&quot;])
</span><span class="cx">         ascent += floorf(((ascent + descent) * 0.15f) + 0.5f);
</span><span class="cx"> 
</span><span class="lines">@@ -294,22 +294,22 @@
</span><span class="cx"> 
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx">     float size = m_platformData.size() * scaleFactor;
</span><del>-    FontPlatformData scaledFontData([[NSFontManager sharedFontManager] convertFont:m_platformData.font() toSize:size], size, m_platformData.isPrinterFont(), false, false, m_platformData.orientation());
</del><ins>+    FontPlatformData scaledFontData([[NSFontManager sharedFontManager] convertFont:m_platformData.nsFont() toSize:size], size, m_platformData.isPrinterFont(), false, false, m_platformData.orientation());
</ins><span class="cx"> 
</span><span class="cx">     // AppKit resets the type information (screen/printer) when you convert a font to a different size.
</span><span class="cx">     // We have to fix up the font that we're handed back.
</span><del>-    scaledFontData.setFont(fontDescription.usePrinterFont() ? [scaledFontData.font() printerFont] : [scaledFontData.font() screenFont]);
</del><ins>+    scaledFontData.setNSFont(fontDescription.usePrinterFont() ? [scaledFontData.nsFont() printerFont] : [scaledFontData.nsFont() screenFont]);
</ins><span class="cx"> 
</span><span class="cx">     if (scaledFontData.font()) {
</span><span class="cx">         NSFontManager *fontManager = [NSFontManager sharedFontManager];
</span><del>-        NSFontTraitMask fontTraits = [fontManager traitsOfFont:m_platformData.font()];
</del><ins>+        NSFontTraitMask fontTraits = [fontManager traitsOfFont:m_platformData.nsFont()];
</ins><span class="cx"> 
</span><span class="cx">         if (m_platformData.m_syntheticBold)
</span><span class="cx">             fontTraits |= NSBoldFontMask;
</span><span class="cx">         if (m_platformData.m_syntheticOblique)
</span><span class="cx">             fontTraits |= NSItalicFontMask;
</span><span class="cx"> 
</span><del>-        NSFontTraitMask scaledFontTraits = [fontManager traitsOfFont:scaledFontData.font()];
</del><ins>+        NSFontTraitMask scaledFontTraits = [fontManager traitsOfFont:scaledFontData.nsFont()];
</ins><span class="cx">         scaledFontData.m_syntheticBold = (fontTraits &amp; NSBoldFontMask) &amp;&amp; !(scaledFontTraits &amp; NSBoldFontMask);
</span><span class="cx">         scaledFontData.m_syntheticOblique = (fontTraits &amp; NSItalicFontMask) &amp;&amp; !(scaledFontTraits &amp; NSItalicFontMask);
</span><span class="cx"> 
</span><span class="lines">@@ -326,7 +326,7 @@
</span><span class="cx"> bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
</span><span class="cx"> {
</span><span class="cx">     NSString *string = [[NSString alloc] initWithCharactersNoCopy:const_cast&lt;unichar*&gt;(characters) length:length freeWhenDone:NO];
</span><del>-    NSCharacterSet *set = [[m_platformData.font() coveredCharacterSet] invertedSet];
</del><ins>+    NSCharacterSet *set = [[m_platformData.nsFont() coveredCharacterSet] invertedSet];
</ins><span class="cx">     bool result = set &amp;&amp; [string rangeOfCharacterFromSet:set].location == NSNotFound;
</span><span class="cx">     [string release];
</span><span class="cx">     return result;
</span><span class="lines">@@ -334,7 +334,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SimpleFontData::determinePitch()
</span><span class="cx"> {
</span><del>-    NSFont* f = m_platformData.font();
</del><ins>+    NSFont* f = m_platformData.nsFont();
</ins><span class="cx">     // Special case Osaka-Mono.
</span><span class="cx">     // According to &lt;rdar://problem/3999467&gt;, we should treat Osaka-Mono as fixed pitch.
</span><span class="cx">     // Note that the AppKit does not report Osaka-Mono as fixed pitch.
</span><span class="lines">@@ -370,7 +370,7 @@
</span><span class="cx"> inline CGFontRenderingStyle SimpleFontData::renderingStyle() const
</span><span class="cx"> {
</span><span class="cx">     CGFontRenderingStyle style = kCGFontRenderingStyleAntialiasing | kCGFontRenderingStyleSubpixelPositioning | kCGFontRenderingStyleSubpixelQuantization;
</span><del>-    NSFont *font = platformData().font();
</del><ins>+    NSFont *font = platformData().nsFont();
</ins><span class="cx">     if (font) {
</span><span class="cx">         switch ([font renderingMode]) {
</span><span class="cx">         case NSFontIntegerAdvancementsRenderingMode:
</span><span class="lines">@@ -388,7 +388,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline bool SimpleFontData::advanceForColorBitmapFont(Glyph glyph, CGSize&amp; advance) const
</span><span class="cx"> {
</span><del>-    NSFont *font = platformData().font();
</del><ins>+    NSFont *font = platformData().nsFont();
</ins><span class="cx">     if (!font || !platformData().isColorBitmapFont())
</span><span class="cx">         return false;
</span><span class="cx">     advance = NSSizeToCGSize([font advancementForGlyph:glyph]);
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebKit/mac/ChangeLog        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2014-12-16  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Unify the Mac and iOS implementations of FontPlatformData a bit
+        https://bugs.webkit.org/show_bug.cgi?id=139721
+
+        Reviewed by Anders Carlsson.
+
+        * WebView/WebHTMLView.mm:
+        (fontNameForDescription):
+        Update for new function name.
+
</ins><span class="cx"> 2014-12-18  Antti Koivisto  &lt;antti@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove alwaysUseBaselineOfPrimaryFont setting
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebHTMLViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebHTMLView.mm (177526 => 177527)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebHTMLView.mm        2014-12-18 22:32:37 UTC (rev 177526)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLView.mm        2014-12-18 22:32:43 UTC (rev 177527)
</span><span class="lines">@@ -4880,7 +4880,7 @@
</span><span class="cx">     fontDescription.setSpecifiedSize(pointSize);
</span><span class="cx">     FontCachePurgePreventer purgePreventer;
</span><span class="cx">     RefPtr&lt;SimpleFontData&gt; simpleFontData = fontCache().getCachedFontData(fontDescription, familyName, false, WebCore::FontCache::DoNotRetain);
</span><del>-    return [simpleFontData-&gt;platformData().font() fontName];
</del><ins>+    return [simpleFontData-&gt;platformData().nsFont() fontName];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)_addToStyle:(DOMCSSStyleDeclaration *)style fontA:(NSFont *)a fontB:(NSFont *)b
</span></span></pre>
</div>
</div>

</body>
</html>