如果自定义字体在IOS开发中不支持非英文字符,如何设置默认字体?

时间:2014-06-06 02:47:28

标签: ios objective-c fonts

我使用" FontA"作为UILabel的自定义字体,其中包含非英文字符。 所以iOS似乎使用默认系统字体作为非英文字符。

有没有办法设置" FontB"对于我已经为UILabel设置自定义字体的情况下的非英文字符?

1 个答案:

答案 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;

希望这有帮助。