Каков наилучший способ определения поддерживаемых стилей шрифта на iOS? - PullRequest
2 голосов
/ 27 апреля 2011

Я не могу найти простой способ определить, поддерживает ли шрифт полужирный или курсивный стиль шрифта в iOS. Мое текущее решение основано на попытке создать CTFont с желаемым стилем шрифта:

CTFontRef ctFont = CTFontCreateWithName(fontName, pointSize, NULL);
CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(ctFont, 0.0, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
if (boldFont) {
// supports bold font face
}

Хотя это работает нормально, но это не лучший способ сделать это. Есть ли способ лучше?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Если вы используете UIFont, я думаю, вы могли бы просто повторить fontNamesForFamilyName:

for (NSString *fontName : [UIFont fontNamesForFamilyName:fontName]) {
    if ([fontName rangeOfString:@"Bold"].location != NSNotFound) {
       //supports bold font face
    }
}

Может быть, не намного лучше ... И жирный шрифт не всегда определяется с текстом 'Bold', некоторыеиспользовать легкий и средний.http://www.iphonedevsdk.com/forum/iphone-sdk-development/6000-list-uifonts-available.html

1 голос
/ 27 апреля 2011

Иногда трудно даже определить фамилию, особенно для пользовательских шрифтов. Обычно просто распечатайте все шрифты, чтобы проверить наличие доступных шрифтов. Вы можете выяснить все стили, например Жирный, курсив, сжатый жирный и т. Д., Из этого

NSArray *familyNames = [UIFont familyNames];
for (NSString *familyName in familyNames)
{
    NSSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    NSLog(@"%@", fontNames);
}
...