如何检测Unicode字符是否映射到缺失符号方块?

10

有没有办法在 iPhone 上检测 Unicode 字符是否存在于字体中,即检测该字符是否映射到可打印的字形或者是方块“缺失字符”符号?

例如,如果我想要用以下代码片段生成一个随机的 Wingding 字符:

NSString *s = [NSString stringWithFormat:@"%C", (0x2700 + (arc4random() % 0x0100))];

有没有办法告诉我,当使用这个方法绘制生成的字符串时,它会呈现为小方块还是真正的字形?

[s drawAtPoint:x withFont:[UIFont systemFontOfSize:30]];

谢谢!

...R

4个回答

2

我使用Core Text的CTFontGetGlyphsForCharacters实现了这一点:

- (BOOL)isInCharSet:(unichar)character
{
    CTFontRef fontRef = CTFontCreateWithName((CFStringRef)@"Arial", 0.0, NULL);
    unichar characters[] = {character};
    CGGlyph glyphs[] = {};

    return (BOOL)CTFontGetGlyphsForCharacters(fontRef, characters, glyphs, 1);
}

1

0

我不知道有什么具体检查这个的方法,但我想可能可以设置一个NSDictionary,为每个字符表编码成Unicode时配对值,然后运行检查以确保生成的值落在任意一个配对值指定的范围内。


0
为什么不在你的电脑上生成它呢?如果你正在使用系统字体,那么它应该是Helvetica,并且几乎任何程序的字体菜单选项中都有字符映射。

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