【问题标题】:How to set a default font if a customised font does not support non-English character in IOS development?IOS开发中自定义字体不支持非英文字符如何设置默认字体?
【发布时间】:2014-06-06 12:00:16
【问题描述】:

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

如果我已经为UILabel设置了自定义字体,有什么方法可以为非英文字符设置“FontB”?

【问题讨论】:

    标签: ios objective-c fonts


    【解决方案1】:

    好吧,有一种方法可以确定字体是否支持字符。

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 2015-04-01
      • 2012-01-18
      相关资源
      最近更新 更多