Rolling out the following change because this crash:
[WebKit-https.git] / WebCore / platform / mac / WebFontCache.mm
index 084c45c58099e8fdf9d04ae1bef3e6f32201655f..efc2aacf2a88bef3e873da0b6f103c0d470873ce 100644 (file)
@@ -113,32 +113,30 @@ static BOOL betterChoice(NSFontTraitMask desiredTraits, int desiredWeight,
 + (NSFont *)fontWithFamily:(NSString *)desiredFamily traits:(NSFontTraitMask)desiredTraits size:(float)size
 {
     NSFontManager *fontManager = [NSFontManager sharedFontManager];
+    NSFont *font= nil;
+    
+    // Look for an exact match first.
     NSEnumerator *availableFonts = [[fontManager availableFonts] objectEnumerator];
-    NSFont *font = nil;
     NSString *availableFont;
-
     while ((availableFont = [availableFonts nextObject])) {
         if ([desiredFamily caseInsensitiveCompare:availableFont] == NSOrderedSame) {
-            font = [NSFont fontWithName:availableFont size:size];
+            NSFont *nameMatchedFont = [NSFont fontWithName:availableFont size:size];
+    
+            // Special case Osaka-Mono.  According to <rdar://problem/3999467>, we need to 
+            // treat Osaka-Mono as fixed pitch.
+            if ([desiredFamily caseInsensitiveCompare:@"Osaka-Mono"] == NSOrderedSame && desiredTraits == 0)
+               return nameMatchedFont;
+
+            NSFontTraitMask traits = [fontManager traitsOfFont:nameMatchedFont];
+            
+            if ((traits & desiredTraits) == desiredTraits){
+                font = [fontManager convertFont:nameMatchedFont toHaveTrait:desiredTraits];
+                return font;
+            }
             break;
         }
     }
-
-    // font was not immediately available, try auto activated fonts <rdar://problem/4564955>
-    if (!font)
-        font = [NSFont fontWithName:desiredFamily size:size];
-
-    if (font) {
-        // Special case Osaka-Mono.  According to <rdar://problem/3999467>, we need to 
-        // treat Osaka-Mono as fixed pitch.
-        if ([desiredFamily caseInsensitiveCompare:@"Osaka-Mono"] == NSOrderedSame && desiredTraits == 0)
-           return font;
-
-        NSFontTraitMask traits = [fontManager traitsOfFont:font];
-        if ((traits & desiredTraits) == desiredTraits)
-            return [fontManager convertFont:font toHaveTrait:desiredTraits];
-    }
-
+    
     // Do a simple case insensitive search for a matching font family.
     // NSFontManager requires exact name matches.
     // This addresses the problem of matching arial to Arial, etc., but perhaps not all the issues.