我使用" FontA"作为UILabel的自定义字体,其中包含非英文字符。 所以iOS似乎使用默认系统字体作为非英文字符。
有没有办法设置" FontB"对于我已经为UILabel设置自定义字体的情况下的非英文字符?
答案 0 :(得分:0)
嗯,有一种方法可以确定字体是否支持字体。
从答案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;
希望这有帮助。