有一类名为Pi fonts的字体,其字形在OS X下映射到私有Unicode空间0xF021-0xF0FF,这样,如果您从每个unicode字符中减去0xF000,就可以检索字符的8位版本,并能够像绘制标准罗马字符一样绘制该字符。
我的问题是如何识别这些字体?很明显,系统可以这样做,因为在特殊字符调色板上有一个名为"Pi Fonts“的类别,它显然在我的系统上安装了各种这样的字体。在我的例子中,它们是BookshelSymbolSeven、MSReferenceSpeciality、MT-Extras、Marlett、MonotypeSorts、Webdings和各种Wingdings。如果我使用老式的QuickDraw例程来请求这些字体的TextEncoding,我得到的值是0x20000,这在系统头文件TextCommon.h中看不到。我是否应该将TextEncoding为0x20000的任何字体视为Pi字体?出于显而易见的原因,我不想使用任何QuickDraw字体处理例程。
发布于 2010-04-14 02:34:05
我所知道的最接近的东西是被称为NSFontSymbolicClass of NSFontDescriptor的NSSymbolicTraits。代码
NSFontDescriptor*fontDesc=[NSFontDescriptor fontDescriptorWithFontAttributes:nil];
fontDesc=[fontDesc fontDescriptorWithSymbolicTraits:NSFontSymbolicClass];
NSArray*foo=[fontDesc matchingFontDescriptorsWithMandatoryKeys:[NSSet setWithObject:NSFontTraitsAttribute]];
NSLog(@"%@",foo);给我一个Pi字体+盲文+更多的列表。
https://stackoverflow.com/questions/2625968
复制相似问题