Как определить, установлен ли NSFont на компьютере Mac OSX в Objective-C? - PullRequest
4 голосов
/ 03 декабря 2010

Есть ли способ проверить, установлен ли системой NSFont со строковым именем?

Ответы [ 2 ]

5 голосов
/ 03 декабря 2010

Проверьте, присутствует ли он в этом массиве:

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

по телефону

[fonts containsObject:@"Times"];

containsObject использует метод isEqual: для сравнения двух объектов. Поскольку вы знаете, что каждый объект в массиве fonts является NSString, вы знаете, что вы получите YES, если массив содержит @"Times", и NO, если его нет. *

0 голосов
/ 17 ноября 2014

Вы должны обратиться к

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];

, например

- (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...