Reviewed by Oliver Hunt.
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Jan 2008 03:38:11 +0000 (03:38 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Jan 2008 03:38:11 +0000 (03:38 +0000)
        - fix an assertion failure in svg/W3C-SVG-1.1/fonts-elem-03-b.svg on
          Tiger and multiple SVG layout test failures on Leopard.

        * css/CSSSegmentedFontFace.cpp:
        (WebCore::CSSSegmentedFontFace::getFontData): Avoid returning an
        empty SegmentedFontData.
        * platform/graphics/mac/FontCustomPlatformData.cpp:
        (WebCore::createFontCustomPlatformData): Avoid creating a font that
        contains no glyphs. On Leopard, ATS might create such a font given
        data in an unsupported format (such as SVG).

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

WebCore/ChangeLog
WebCore/css/CSSSegmentedFontFace.cpp
WebCore/platform/graphics/mac/FontCustomPlatformData.cpp

index a9ffca464175452a99c69c23f91829ea774d7d86..c87f269ea14dff9eb987e75467687f4fa5f168a9 100644 (file)
@@ -1,3 +1,18 @@
+2008-01-07  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Oliver Hunt.
+
+        - fix an assertion failure in svg/W3C-SVG-1.1/fonts-elem-03-b.svg on
+          Tiger and multiple SVG layout test failures on Leopard.
+
+        * css/CSSSegmentedFontFace.cpp:
+        (WebCore::CSSSegmentedFontFace::getFontData): Avoid returning an
+        empty SegmentedFontData.
+        * platform/graphics/mac/FontCustomPlatformData.cpp:
+        (WebCore::createFontCustomPlatformData): Avoid creating a font that
+        contains no glyphs. On Leopard, ATS might create such a font given
+        data in an unsupported format (such as SVG).
+
 2008-01-07  Steve Falkenburg  <sfalken@apple.com>
 
         Build fix.
index 2705bffbca84f467a7656427531582160dd27bf6..05c0c799e683566b3b30b591ab7e2b865a0c334c 100644 (file)
@@ -127,7 +127,12 @@ FontData* CSSSegmentedFontFace::getFontData(const FontDescription& fontDescripti
             fontData->appendRange(FontDataRange(m_ranges[i].from(), m_ranges[i].to(), static_cast<const SimpleFontData*>(rangeFontData)));
         }
     }
-    m_fontDataTable.set(hashKey, fontData);
+    if (fontData->numRanges())
+        m_fontDataTable.set(hashKey, fontData);
+    else {
+        delete fontData;
+        fontData = 0;
+    }
 
     return fontData;
 }
index 439af5049c19fba218c4e046d208d39a521145e7..3c22288c78436f47f5a8e5d0a801ed088ef65a8f 100644 (file)
@@ -64,6 +64,10 @@ FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer* buffer)
     }
     
     CGFontRef cgFontRef = CGFontCreateWithPlatformFont(&fontRef);
+    if (!CGFontGetNumberOfGlyphs(cgFontRef)) {
+        CFRelease(cgFontRef);
+        cgFontRef = 0;
+    }
     if (!cgFontRef) {
         ATSFontDeactivate(containerRef, NULL, kATSOptionFlagsDefault);
         return 0;