Title: [146623] branches/chromium/1410
Revision
146623
Author
[email protected]
Date
2013-03-22 09:41:54 -0700 (Fri, 22 Mar 2013)

Log Message

Merge 146129 "Variant of non-primary fell-back SVGFont causes cr..."

> Variant of non-primary fell-back SVGFont causes crash.
> https://bugs.webkit.org/show_bug.cgi?id=112367
> 
> Reviewed by Stephen Chenney.
> 
> Source/WebCore:
> 
> Don't go to PlatformFontData path for SimpleFontData::createScaledFontData()
> for SVG fonts.
> 
> Test: svg/css/font-face-variant-crash.html
> 
> * platform/graphics/SimpleFontData.cpp:
> (WebCore::SimpleFontData::~SimpleFontData):
> (WebCore::SimpleFontData::createScaledFontData): Don't go to PlatformFontData path for SVG fonts.
> (WebCore):
> * platform/graphics/SimpleFontData.h:
> (SimpleFontData): Added createScaledFontData and renamed the original createScaledFontData to platformCreateScaledFontData.
>                   BTW, Removed unreferenced commonInit.
> * platform/graphics/blackberry/SimpleFontDataBlackBerry.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Renamed from createScaledFontData.
> * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/mac/SimpleFontDataMac.mm:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/qt/SimpleFontDataQt.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/skia/SimpleFontDataSkia.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/win/SimpleFontDataWin.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/wince/SimpleFontDataWinCE.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> * platform/graphics/wx/SimpleFontDataWx.cpp:
> (WebCore::SimpleFontData::platformCreateScaledFontData): Ditto.
> 
> LayoutTests:
> 
> * resources/SpaceOnly.otf: Added. A font containing only the space glyph for testing font fallback.
> * svg/css/font-face-variant-crash-expected.txt: Added.
> * svg/css/font-face-variant-crash.html: Added.
> 

[email protected]

Modified Paths

Added Paths

Diff

Copied: branches/chromium/1410/LayoutTests/resources/SpaceOnly.otf (from rev 146129, trunk/LayoutTests/resources/SpaceOnly.otf) (0 => 146623)


--- branches/chromium/1410/LayoutTests/resources/SpaceOnly.otf	                        (rev 0)
+++ branches/chromium/1410/LayoutTests/resources/SpaceOnly.otf	2013-03-22 16:41:54 UTC (rev 146623)
@@ -0,0 +1,5 @@
+OTTO\x80@CFF \xBCP\x8D\x88\xE9DSIGtFFTMdYDN|OS/2U\xFF_\xDA0`PfEd\xD1\xCC{\xB3\x98,cmap
+\xC6$Bhead\xF9\xEE}\xCC6hhea|#$hmtx\xD0\xC4maxpP(name\xB0\xCB
+	\x90\x91post\xFF\x863h \xB9\x9DI_<\xF5\xE8\xCDg\xECL\xCDg\xECL \xFF8Z\xE8P\xE8\xF4\x8A\xBC\x8C\x8A\xBC\xE01	PfEd\xC0   \xFF8Z  \xAED\x8A	\xE3\xFB%N	\x88\xB4	\xD9	\x88	\xCF	\xED	J	t	 \x92	\xC5Created by Xianzhu Wang with FontForge 2.0 (http://fontforge.sf.net)Created by Xianzhu Wang with FontForge 2.0 (http://fontforge.sf.net)Untitled1Untitled1MediumMediumFontForge 2.0 : Untitled1 : 14-3-2013FontForge 2.0 : Untitled1 : 14-3-2013Untitled1Untitled1Version 001.000 Version 001.000 Untitled1Untitled1<  \xFF\xFF \xFF\xFF\xFF\xE1\xFF\x832
+Untitled1+\xF8\xF8\xF8\xF8\xF8\x8C\x8B\x8B\x8B\x8B\xA6\xA9\xE1ENWCreated by Xianzhu Wang with FontForge 2.0 (http://fontforge.sf.net)Untitled1Untitled1"3\x8B\xBD\xF8E\xBD\xBD\xBD\xF9\xB4\xBD\xBD\xFA\xF8\xA9\xFE\xBD\xFCw\xF8E\xF9\xB4\xFCE\xFFt\xFF\xFC\xF9a\xFF\xFEt\xFC\xFE\xFA|\x8B\x8B
+ɉo1\xCDg\xE91\xCDg\xEB\xEBfcmt2013-3-14: Created.\xE8\xE8
\ No newline at end of file

Copied: branches/chromium/1410/LayoutTests/svg/css/font-face-variant-crash-expected.txt (from rev 146129, trunk/LayoutTests/svg/css/font-face-variant-crash-expected.txt) (0 => 146623)


--- branches/chromium/1410/LayoutTests/svg/css/font-face-variant-crash-expected.txt	                        (rev 0)
+++ branches/chromium/1410/LayoutTests/svg/css/font-face-variant-crash-expected.txt	2013-03-22 16:41:54 UTC (rev 146623)
@@ -0,0 +1 @@
+This test passes if it doesn't crash.

Copied: branches/chromium/1410/LayoutTests/svg/css/font-face-variant-crash.html (from rev 146129, trunk/LayoutTests/svg/css/font-face-variant-crash.html) (0 => 146623)


--- branches/chromium/1410/LayoutTests/svg/css/font-face-variant-crash.html	                        (rev 0)
+++ branches/chromium/1410/LayoutTests/svg/css/font-face-variant-crash.html	2013-03-22 16:41:54 UTC (rev 146623)
@@ -0,0 +1,23 @@
+<html>
+  <style>
+    @font-face {
+      font-family: test1;
+      src: url(../../resources/SpaceOnly.otf);
+    }
+    @font-face {
+      font-family: test2;
+      src: url(../custom/resources/SVGFreeSans.svg) format('svg');
+    }
+    body {
+      font-family: test1,test2;
+      font-variant: small-caps;
+    }
+  </style>
+  <script>
+    if (window.testRunner)
+      testRunner.dumpAsText();
+  </script>
+  <body>
+    This test passes if it doesn't crash.
+  </body>
+</html>

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/SimpleFontData.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/SimpleFontData.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/SimpleFontData.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -148,9 +148,7 @@
 
 SimpleFontData::~SimpleFontData()
 {
-#if ENABLE(SVG_FONTS)
     if (!m_fontData)
-#endif
         platformDestroy();
 
     if (isCustomFont())
@@ -276,4 +274,13 @@
 #endif
 }
 
+PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+{
+    // FIXME: Support scaled fonts that used AdditionalFontData.
+    if (m_fontData)
+        return 0;
+
+    return platformCreateScaledFontData(fontDescription, scaleFactor);
+}
+
 } // namespace WebCore

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/SimpleFontData.h (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/SimpleFontData.h	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/SimpleFontData.h	2013-03-22 16:41:54 UTC (rev 146623)
@@ -244,9 +244,8 @@
     
     void initCharWidths();
 
-    void commonInit();
-
     PassRefPtr<SimpleFontData> createScaledFontData(const FontDescription&, float scaleFactor) const;
+    PassRefPtr<SimpleFontData> platformCreateScaledFontData(const FontDescription&, float scaleFactor) const;
 
 #if (PLATFORM(WIN) && !OS(WINCE)) \
     || (OS(WINDOWS) && PLATFORM(WX))

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -108,7 +108,7 @@
 {
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     LOGFONT winFont;
     GetObject(m_platformData.hfont(), sizeof(LOGFONT), &winFont);

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -94,7 +94,7 @@
 {
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     ASSERT(m_platformData.scaledFont());
     return SimpleFontData::create(FontPlatformData(cairo_scaled_font_get_font_face(m_platformData.scaledFont()),

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm	2013-03-22 16:41:54 UTC (rev 146623)
@@ -313,7 +313,7 @@
     }
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     if (isCustomFont()) {
         FontPlatformData scaledFontData(m_platformData);

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -58,7 +58,7 @@
     return advances.at(0).x();
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     const float scaledSize = lroundf(fontDescription.computedSize() * scaleFactor);
     return SimpleFontData::create(FontPlatformData(m_platformData, scaledSize), isCustomFont(), false);

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -174,7 +174,7 @@
 {
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     const float scaledSize = lroundf(fontDescription.computedSize() * scaleFactor);
     return SimpleFontData::create(FontPlatformData(m_platformData, scaledSize), isCustomFont(), false);

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/win/SimpleFontDataWin.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/win/SimpleFontDataWin.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/win/SimpleFontDataWin.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -126,7 +126,7 @@
 #endif
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     float scaledSize = scaleFactor * m_platformData.size();
     if (isCustomFont()) {

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/wince/SimpleFontDataWinCE.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/wince/SimpleFontDataWinCE.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/wince/SimpleFontDataWinCE.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -63,7 +63,7 @@
 {
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     FontDescription fontDesc(fontDescription);
     fontDesc.setComputedSize(lroundf(scaleFactor * fontDesc.computedSize()));

Modified: branches/chromium/1410/Source/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp (146622 => 146623)


--- branches/chromium/1410/Source/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp	2013-03-22 16:24:48 UTC (rev 146622)
+++ branches/chromium/1410/Source/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp	2013-03-22 16:41:54 UTC (rev 146623)
@@ -90,7 +90,7 @@
 #endif
 }
 
-PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
+PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
 {
     FontDescription desc = FontDescription(fontDescription);
     desc.setSpecifiedSize(scaleFactor * fontDescription.computedSize());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to