有没有办法确定字体是否可以在Cocoa中呈现特定的Unicode字符?或者,是否可以指定默认替换字符?
答案 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值)的工具,然后使用字形索引。