2

我无法找到一种简单的方法来确定字体是否支持 iOS 上的粗体或斜体字体样式。我当前的解决方案是基于尝试创建具有所需字体样式的 CTFont:

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

虽然这很好用,但不知何故,它并不是最好的方法。有没有更好的办法?

4

2 回答 2

2

如果您使用 UIFont,我想您可以只迭代 fontNamesForFamilyName:

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

也许没有那么好……而且粗体字体并不总是用文本“粗体”来定义,有些人使用浅色和中等字体。 http://www.iphonedevsdk.com/forum/iphone-sdk-development/6000-list-uifonts-available.html

于 2011-04-27T15:27:12.357 回答
1

有时甚至很难弄清楚姓氏,尤其是对于自定义字体。通常只需打印出所有字体以检查可用字体。您可以从中找出所有样式,例如粗体、斜体、浓缩粗体等

NSArray *familyNames = [UIFont familyNames];
for (NSString *familyName in familyNames)
{
    NSSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    NSLog(@"%@", fontNames);
}
于 2011-04-27T16:40:31.857 回答