【发布时间】:2014-06-06 12:00:16
【问题描述】:
我使用“FontA”作为 UILabel 的自定义字体,其中包含非英文字符。 所以iOS似乎对非英文字符使用默认系统字体。
如果我已经为UILabel设置了自定义字体,有什么方法可以为非英文字符设置“FontB”?
【问题讨论】:
标签: ios objective-c fonts
我使用“FontA”作为 UILabel 的自定义字体,其中包含非英文字符。 所以iOS似乎对非英文字符使用默认系统字体。
如果我已经为UILabel设置了自定义字体,有什么方法可以为非英文字符设置“FontB”?
【问题讨论】:
标签: ios objective-c fonts
好吧,有一种方法可以确定字体是否支持字符。
从答案here 复制/粘贴:
- (BOOL)isCharacter:(unichar)character supportedByFont:(UIFont *)aFont
{
UniChar characters[] = { character }; // e.g ÷, ®, †, ƒ, å, ç etc.
CGGlyph glyphs[1] = { };
CTFontRef ctFont = CTFontCreateWithName((CFStringRef)aFont.fontName, aFont.pointSize, NULL);
BOOL ret = CTFontGetGlyphsForCharacters(ctFont, characters, glyphs, 1);
CFRelease(ctFont);
return ret;
}
考虑到你的目标是iOS6+,你需要创建一个NSMutableAttributedString并为每个字符设置字体,同时用上面的方法检查它。
这是为NSMutableAttributedString设置字体属性的方法
[mutAttString addAttribute:NSFontAttributeName
value:[UIFont boldSystemFontOfSize:17]
range:NSMakeRange(characterIndex, 1)];
一旦你准备好属性字符串。最后,
UILabel *label;
label.attributedText = attributedText;
希望这会有所帮助。
【讨论】: