在iOS 8+中,用于显示这些Unicode字符的字体是什么?

4
我正在使用系统中可用的Arial字体来显示一些Unicode字符,并能够显示大多数字符,但无法显示以下箭头类别的符号:

⟼、⤎、⤏

对应的Unicode为:\u{27FC}、\u{290E}、\u{290F}

我正在UIButton上显示它们。您知道哪种字体支持iOS 8及以上版本上这些Unicode字符吗?

由于Arial不支持这些字形,因此会显示问号。以下是屏幕截图:

enter image description here

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


您可以在http://apps.timwhitlock.info/emoji/tables/unicode#上检查它们的`Unicode`字符。我相信旧金山字体将完美地工作。 - Adolfo
1
@Adolfo 当你说“我确定”的时候,你有多确定呢?那个页面是一个表情符号字符表,与这个问题无关。 - Ashley Mills
1个回答

6
很遗憾,根据这个相当草率的测试,答案是无。
至少目前还没有其他答案...
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-RegularApple Symbols字体中都是可用的。也许您可以将其中一个添加为自定义字体到您的iOS应用程序中?

在此输入图片描述


哇,感谢您提供的快速测试代码。也许我错了,但这些Unicode是否在16位范围内以便检查utf16? - Tushar
好的,一旦字符串被转换为utf16,它们仍然可以正确地打印,所以看起来这是没问题的。 - Ashley Mills
非常感谢@Ashley。我可以在Mac的路径/System/Library/Fonts/中看到一个"Apple Symbols.ttc"字体。我现在会尝试使用它,看看是否有效。 - Tushar
1
只需将上述字体安装到iOS应用程序中,就可以正常工作,甚至没有在代码中实际使用该字体,而是仍在使用Arial。我认为iOS会自动寻找备用字体。再次感谢@Ashley :) - Tushar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接