确定字体是否可以在Cocoa Touch中呈现Unicode字符

时间:2010-04-22 01:22:23

标签: iphone objective-c cocoa-touch unicode uifont

有没有办法确定字体是否可以在Cocoa中呈现特定的Unicode字符?或者,是否可以指定默认替换字符?

3 个答案:

答案 0 :(得分:3)

在Core Text框架中查看CTFontGetGlyphsForCharacters。如果它为给定的Unicode字符的字形索引返回零,则该字体不支持该字符。如果找不到任何字形,则该函数返回false。

答案 1 :(得分:3)

您可以在iOS旧版iOS(2.0)中使用CGFontGetGlyphWithGlyphName()。 Apple似乎没有记录字形名称,但我相信它们对应于此Adobe列表:

http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt

例如,é(U + 00E9)的字形名为“eacute”,获取字形的代码为:

CFStringRef name = CFStringCreateWithCString(NULL, "eacute", kCFStringEncodingUTF8);
CGGlyph glyph = CGFontGetGlyphWithGlyphName(font, name);

答案 2 :(得分:1)

由于它在iOS上,您可能需要构建或查找执行此操作的应用程序。 最终,如果任何单个字形的信息都存在,那么它就在字体文件本身的表格中,这是相当低级别的C工作。

更容易构建一个检查字体并显示字形和字形索引(CGGlyph或NSGlyph值)的工具,然后使用字形索引。