2010-12-02 51 views

回答

4

检查它是否存在这个数组中:通过调用

[fonts containsObject:@"Times"]; 

containsObject

NSArray *fonts = [[NSFontManager sharedFontManager] availableFontFamilies]; 

使用isEqual:方法来比较两个对象。因为您知道fonts阵列中的每个对象都是NSString,您知道如果阵列包含@"Times",则会得到YES,如果不包含则为NO

+0

我怎么会去通过阵列检查?我需要使用for语句吗? – 2010-12-03 00:00:28

0

你应该参考

https://developer.apple.com/library/mac/documentation/TextFonts/Conceptual/CocoaTextArchitecture/FontHandling/FontHandling.html

查找字体系列(可能包括多种字体(样式)

NSFontDescriptor *helveticaNeueFamily = 
    [NSFontDescriptor fontDescriptorWithFontAttributes: 
     @{ NSFontFamilyAttribute: @"Helvetica Neue" }]; 
NSArray *matches = 
    [helveticaNeueFamily matchingFontDescriptorsWithMandatoryKeys: nil]; 

,然后你也可以检查粗体,斜体, (确切名称)

NSFontDescriptor *fontDescriptor = 
    [NSFontDescriptor fontDescriptorWithFontAttributes: 
     @{ NSFontNameAttribute: @"Bank Gothic Medium" }]; 
NSArray *matches = 
    [fontDescriptor matchingFontDescriptorsWithMandatoryKeys: nil]; 

like

- (BOOL)isFontNameInstalledInSystem { 

    if (self.fontName == nil) { 
     return NO; 
    } 

    NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes:@{NSFontNameAttribute:self.fontName}]; 
    NSArray *matches = [fontDescriptor matchingFontDescriptorsWithMandatoryKeys: nil]; 

    return ([matches count] > 0); 
} 

你也可能需要使用(但一定要在正确的格式的字体名称) 注意,这个保险业监督多一点资源密集型

- (BOOL)isFontNameInstalledInSystem { 
    return ([NSFont fontWithName:self.fontName size:[NSFont systemFontSize]]) != nil; 
}