Fixed <rdar://problem/3782533> CrashTracer: .1459 crashes at com.apple.WebKit...
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Sep 2004 23:26:36 +0000 (23:26 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Sep 2004 23:26:36 +0000 (23:26 +0000)
        We were explicitly failing when we encountered deprecated fonts.
        (Those with unsupported glyph packings).
        Deprecated fonts should only appear on a system that have
        stuff migrated from OS 9.  Ugh, thats probably why we've never seen
        the problem here.

        Reviewed by John.

        * WebCoreSupport.subproj/WebTextRenderer.m:
        (-[WebTextRenderer initWithFont:usingPrinterFont:]):

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

WebKit/ChangeLog
WebKit/WebCoreSupport.subproj/WebTextRenderer.m

index 772f1818e8b3bdcdc72ba8260488d1bc04812a9c..7c3818a35b40ada17376bedc7398e0ac78176c9a 100644 (file)
@@ -1,3 +1,18 @@
+2004-09-10  Richard Williamson   <rjw@apple.com>
+
+        Fixed <rdar://problem/3782533> CrashTracer: .1459 crashes at com.apple.WebKit: -[WebTextRenderer initWithFont:usingPrinterFont:] + 0x138
+
+        We were explicitly failing when we encountered deprecated fonts.
+        (Those with unsupported glyph packings).
+        Deprecated fonts should only appear on a system that have 
+        stuff migrated from OS 9.  Ugh, thats probably why we've never seen
+        the problem here.
+        
+        Reviewed by John.
+
+        * WebCoreSupport.subproj/WebTextRenderer.m:
+        (-[WebTextRenderer initWithFont:usingPrinterFont:]):
+
 2004-09-10  John Sullivan  <sullivan@apple.com>
 
         Reviewed by Chris.
index 564400f9343e5654a3f9cc310ef7931aee71a421..581d36778bc1abd0fe1430829f55c8e3b4c3ac87 100644 (file)
@@ -284,15 +284,24 @@ static BOOL alwaysUseATSU = NO;
 {
     [super init];
     
+    // Quartz can only handle fonts with these glyph packings.  Other packings have
+    // been deprecated.
+    if ([font glyphPacking] != NSNativeShortGlyphPacking &&
+        [font glyphPacking] != NSTwoByteGlyphPacking) {
+        // Apparantly there are many deprecated fonts out there with unsupported packing types.
+        // Log and use fallback font.
+        // This change fixes the many crashes reported in 3782533.  Most likely, the
+        // problem is encountered when people upgrade from OS 9, or have OS 9
+        // fonts installed on OS X.
+        NSLog (@"%s:%d  Unable to use deprecated font %@ %f, using system font instead", __FILE__, __LINE__, [font displayName], [font pointSize]);
+        font = [NSFont systemFontOfSize:[font pointSize]];
+    }
+        
     maxSubstituteFontWidthMaps = NUM_SUBSTITUTE_FONT_MAPS;
     substituteFontWidthMaps = calloc (1, maxSubstituteFontWidthMaps * sizeof(SubstituteFontWidthMap));
     font = [(p ? [f printerFont] : [f screenFont]) retain];
     usingPrinterFont = p;
     
-    if ([font glyphPacking] != NSNativeShortGlyphPacking &&
-        [font glyphPacking] != NSTwoByteGlyphPacking)
-        FATAL_ALWAYS ("%@: Don't know how to pack glyphs for font %@ %f", self, [font displayName], [font pointSize]);
-        
     if (![self _setupFont]){
         // Ack!  Something very bad happened, like a corrupt font.  Try
         // looking for an alternate 'base' font for this renderer.