在iOS 8+中用于显示这些unicode字符的字体

时间:2017-03-15 14:31:10

标签: ios swift xcode unicode fonts

我使用系统中可用的Arial字体来显示一些unicode字符,并且能够显示大部分字符,但以下符号除外,这些符号属于箭头类别:

⟼,⤎,⤏

相应的unicodes是:\ u {27FC},\ u {290E},\ u {290F}

我在UIButton上显示它们。知道什么字体支持iOS 8及以上版本的这些unicode字符?

它显示问号,因为Arial不支持这些字形,这是截图:

enter image description here

感谢任何帮助。谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

答案......没有,我很害怕。

至少不是根据这个非常糟糕的测试......

extension unichar {
    func isSupportedBy(fontName: String) -> Bool {
        let characters = [self]
        var glyphs: [CGGlyph] = []
        let ctFont = CTFontCreateWithName(fontName as CFString, 15, nil)
        return CTFontGetGlyphsForCharacters(ctFont, characters, &glyphs, 1)
    }
}

UIFont.familyNames.map({
    UIFont.fontNames(forFamilyName: $0)
}).joined().forEach({
    for string in ["A", "\u{27FC}", "\u{290E}", "\u{290F}"].map({$0.utf16}){
        if let char = string.first {
            if char.isSupportedBy(fontName: $0) {
                print("\($0) supports \(string)")
            } else {
                print("\($0) does not support \(string)")
            }
        } else {
            print("invalid char \(string)")
        }
    }
})
Copperplate-Light supports A
Copperplate-Light does not support ⟼
Copperplate-Light does not support ⤎
Copperplate-Light does not support ⤏

etc

编辑:

检查macOS中的字符输入窗口,似乎 STIXGeneral-Regular Apple Symbols 字体中的这些特定字形 可用。也许您可以将其中一个作为自定义字体添加到您的iOS应用程序中?

enter image description here