我找不到一种简单的方法来确定字体是否支持iOS上的粗体或斜体样式。我目前的解决方案是基于尝试创建一个具有所需字体样式的CTFont:
CTFontRef ctFont = CTFontCreateWithName(fontName, pointSize, NULL);
CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(ctFont, 0.0, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
if (boldFont) {
// supports bold font face
}虽然这很好用,但不知何故,它似乎不是最好的方法。有没有更好的方法?
发布于 2011-04-27 23:27:12
如果您使用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
发布于 2011-04-28 00:40:32
有时甚至很难弄清楚家族名称,特别是对于自定义字体。通常只是打印出所有的字体来检查可用的字体。你可以从中找出所有的风格,例如粗体,斜体,缩写粗体等
NSArray *familyNames = [UIFont familyNames];
for (NSString *familyName in familyNames)
{
NSSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
NSLog(@"%@", fontNames);
}https://stackoverflow.com/questions/5806256
复制相似问题