Diff
Modified: trunk/Source/WebCore/ChangeLog (133361 => 133362)
--- trunk/Source/WebCore/ChangeLog 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/ChangeLog 2012-11-02 22:30:14 UTC (rev 133362)
@@ -1,3 +1,39 @@
+2012-11-02 Stephen Chenney <schen...@chromium.org>
+
+ Reduce redundant code in SimpleFontData[platform]
+ https://bugs.webkit.org/show_bug.cgi?id=97245
+
+ Reviewed by Eric Seidel.
+
+ Move duplicated code out of platform specific files and into the common file.
+ This represents all of the methods in SimpleFontData that do not have genuine
+ platform specific code.
+
+ No new tests because there is no change at all in the functionality.
+
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore):
+ (WebCore::SimpleFontData::smallCapsFontData): Implementation from platform files.
+ (WebCore::SimpleFontData::emphasisMarkFontData): Implementation from platform files.
+ * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore): Removed common code.
+ * platform/graphics/pango/SimpleFontDataPango.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/qt/SimpleFontDataQt.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/skia/SimpleFontDataSkia.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/wince/SimpleFontDataWinCE.cpp:
+ (WebCore): Removed common code.
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore): Removed common code.
+
2012-11-02 Adam Barth <aba...@webkit.org>
memory-instrumentation-cached-images.html is crashing
Modified: trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -41,6 +41,9 @@
namespace WebCore {
+const float smallCapsFontSizeMultiplier = 0.7f;
+const float emphasisMarkFontSizeMultiplier = 0.5f;
+
SimpleFontData::SimpleFontData(const FontPlatformData& platformData, bool isCustomFont, bool isLoading, bool isTextOrientationFallback)
: m_maxCharWidth(-1)
, m_avgCharWidth(-1)
@@ -193,6 +196,26 @@
return m_derivedFontData->uprightOrientation;
}
+PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
+{
+ if (!m_derivedFontData)
+ m_derivedFontData = DerivedFontData::create(isCustomFont());
+ if (!m_derivedFontData->smallCaps)
+ m_derivedFontData->smallCaps = createScaledFontData(fontDescription, smallCapsFontSizeMultiplier);
+
+ return m_derivedFontData->smallCaps;
+}
+
+PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
+{
+ if (!m_derivedFontData)
+ m_derivedFontData = DerivedFontData::create(isCustomFont());
+ if (!m_derivedFontData->emphasisMark)
+ m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, emphasisMarkFontSizeMultiplier);
+
+ return m_derivedFontData->emphasisMark;
+}
+
PassRefPtr<SimpleFontData> SimpleFontData::brokenIdeographFontData() const
{
if (!m_derivedFontData)
Modified: trunk/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -119,26 +119,6 @@
return SimpleFontData::create(FontPlatformData(hfont, scaledSize, m_platformData.orientation()), isCustomFont(), false);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, .7);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
// This used to be implemented with IMLangFontLink2, but since that code has
Modified: trunk/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -98,27 +98,6 @@
m_platformData.syntheticOblique()), isCustomFont(), false);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- // FIXME: I think we want to ask FontConfig for the right font again.
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, .7);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
ASSERT(m_platformData.scaledFont());
Modified: trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm 2012-11-02 22:30:14 UTC (rev 133362)
@@ -52,8 +52,6 @@
namespace WebCore {
-const float smallCapsFontSizeMultiplier = 0.7f;
-
static bool fontHasVerticalGlyphs(CTFontRef ctFont)
{
// The check doesn't look neat but this is what AppKit does for vertical writing...
@@ -352,26 +350,6 @@
return 0;
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, smallCapsFontSizeMultiplier);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5f);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
NSString *string = [[NSString alloc] initWithCharactersNoCopy:const_cast<unichar*>(characters) length:length freeWhenDone:NO];
Modified: trunk/Source/WebCore/platform/graphics/pango/SimpleFontDataPango.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/pango/SimpleFontDataPango.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/pango/SimpleFontDataPango.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -92,26 +92,6 @@
return SimpleFontData::create(platformData);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, .7);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
bool result = true;
Modified: trunk/Source/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -34,9 +34,6 @@
m_treatAsFixedPitch = false;
}
-static const float smallCapsFraction = 0.7;
-static const float emphasisMarkFraction = 0.5;
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
QRawFont rawFont(m_platformData.rawFont());
@@ -67,26 +64,6 @@
return SimpleFontData::create(FontPlatformData(m_platformData, scaledSize), isCustomFont(), false);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, smallCapsFraction);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, emphasisMarkFraction);
-
- return m_derivedFontData->emphasisMark;
-}
-
FloatRect SimpleFontData::platformBoundsForGlyph(Glyph) const
{
notImplemented();
Modified: trunk/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -47,9 +47,6 @@
namespace WebCore {
-// Smallcaps versions of fonts are 70% the size of the normal font.
-static const float smallCapsFraction = 0.7f;
-static const float emphasisMarkFraction = .5;
// This is the largest VDMX table which we'll try to load and parse.
static const size_t maxVDMXTableSize = 1024 * 1024; // 1 MB
@@ -183,26 +180,6 @@
return SimpleFontData::create(FontPlatformData(m_platformData, scaledSize), isCustomFont(), false);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, smallCapsFraction);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, emphasisMarkFraction);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
SkPaint paint;
Modified: trunk/Source/WebCore/platform/graphics/win/SimpleFontDataWin.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/win/SimpleFontDataWin.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/win/SimpleFontDataWin.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -148,26 +148,6 @@
return SimpleFontData::create(FontPlatformData(hfont, scaledSize, m_platformData.syntheticBold(), m_platformData.syntheticOblique(), m_platformData.useGDI()), isCustomFont(), false);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, cSmallCapsFontSizeMultiplier);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
// FIXME: Support custom fonts.
Modified: trunk/Source/WebCore/platform/graphics/wince/SimpleFontDataWinCE.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/wince/SimpleFontDataWinCE.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/wince/SimpleFontDataWinCE.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -75,26 +75,6 @@
return SimpleFontData::create(*result);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, .7);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5);
-
- return m_derivedFontData->emphasisMark;
-}
-
DWORD getKnownFontCodePages(const wchar_t* family);
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
Modified: trunk/Source/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp (133361 => 133362)
--- trunk/Source/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp 2012-11-02 22:27:19 UTC (rev 133361)
+++ trunk/Source/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp 2012-11-02 22:30:14 UTC (rev 133362)
@@ -98,26 +98,6 @@
return SimpleFontData::create(platformData, isCustomFont(), false);
}
-PassRefPtr<SimpleFontData> SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->smallCaps)
- m_derivedFontData->smallCaps = createScaledFontData(fontDescription, .7);
-
- return m_derivedFontData->smallCaps;
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::emphasisMarkFontData(const FontDescription& fontDescription) const
-{
- if (!m_derivedFontData)
- m_derivedFontData = DerivedFontData::create(isCustomFont());
- if (!m_derivedFontData->emphasisMark)
- m_derivedFontData->emphasisMark = createScaledFontData(fontDescription, .5);
-
- return m_derivedFontData->emphasisMark;
-}
-
bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
{
// FIXME: We will need to implement this to load non-ASCII encoding sites