有没有办法检测iPhone上的字体中是否存在Unicode字符,即检测字符是映射到可打印字形还是映射到方形“缺少字符”符号?
例如,如果我想使用此代码段生成随机的Wingding字符:
NSString *s = [NSString stringWithFormat:@"%C", (0x2700 + (arc4random() % 0x0100))];
有没有办法判断生成的字符串是否会呈现为小方块,或者当我用它绘制它时是否为真正的字形:
[s drawAtPoint:x withFont:[UIFont systemFontOfSize:30]];
谢谢!
... [R
答案 0 :(得分:1)
NSFont有一个UIFont没有的属性coveredCharacterSet
。因此,我建议您使用台式PC创建coveredCharacterSet信息并将其放入您的iPhone应用程序中。
可在以下网址找到iphone上可用的字体列表:http://daringfireball.net/misc/2007/07/iphone-osx-fonts
答案 1 :(得分:1)
我能够使用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);
}
答案 2 :(得分:0)
我不知道有任何方法可以对此进行特殊检查,但是我想可以为编码为Unicode的每个字符表设置一个带有配对值的NSDictionary,然后运行检查以确保生成的值落在其中一个配对值指定的范围内。
答案 3 :(得分:0)
为什么不在你的计算机上生成它,如果你使用的是系统字体,它应该是Helvetica,几乎所有程序的字体菜单选项都有字符映射。