【发布时间】:2014-06-01 21:33:00
【问题描述】:
我正在开发一个带有文本字段的应用程序。在此字段中写入的文本将被打印,我对某些字符(如表情符号、汉字等)有疑问...因为字体不提供这些字符。
这就是为什么我想获取字体提供的所有字符(字体已下载,因此我可以直接处理文件或 UIFont 对象)。
我听说过CTFontGetGlyphsForCharacters,但我不确定这个功能是否能满足我的要求,我无法让它发挥作用。
这是我的代码:
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)font.fontName, font.pointSize, NULL);
NSString *characters = @"????"; // emoji character
NSUInteger count = characters.length;
CGGlyph glyphs[count];
if (CTFontGetGlyphsForCharacters(fontRef, (const unichar*)[characters cStringUsingEncoding:NSUTF8StringEncoding], glyphs, count) == false)
NSLog(@"CTFontGetGlyphsForCharacters failed.");
这里CTFontGetGlyphsForCharacters 返回false。这就是我想要的,因为角色'????'不是由所使用的字体提供的。
问题是当我用NSString *characters = @"abc" 替换NSString *characters = @"????" 时,CTFontGetGlyphsForCharacters 再次返回false。显然,我的字体为所有 ASCII 字符提供了一个字形。
【问题讨论】:
-
您尝试使用“abc”。您是否尝试过使用单个字符“a”?
-
是的,但我得到了相同的结果。
标签: ios objective-c fonts uifont emoji