代码之家  ›  专栏  ›  技术社区  ›  Glenn Howes

如何在OS X下编程识别PI字体(Dingbat)

  •  0
  • Glenn Howes  · 技术社区  · 14 年前

    有一类称为Pi字体的字体,其字形在OS X下被映射到专用Unicode空间0xF021-0xF0FF,这样,如果您从每个Unicode字符中减去0xF000来检索字符的8位版本,并且能够像绘制标准罗马字符一样绘制该字符。

    我的问题是如何识别这些字体?很明显,系统可以这样做,因为在特殊字符调色板上有一个名为“Pi字体”的类别,显然在我的系统上安装了各种这样的字体。在我的例子中,它们是书架符号even、MSReferenceSpeciality、MT Extras、Marlett、MonotypeSorts、Webdings和各种Wingdings。如果我使用老式的QuickDraw例程来请求这些字体的文本编码,那么我得到的值是0x20000,这在系统头文件textcomon.h中是看不到的。我是否应该将任何文本编码为0x20000的字体视为Pi字体?出于明显的原因,我不想使用任何QuickDraw字体处理例程。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Yuji    14 年前

    我知道的最接近的是 NSSymbolicTraits 打电话 NSFontSymbolicClass 属于 NSFontDescriptor . 守则

    NSFontDescriptor*fontDesc=[NSFontDescriptor fontDescriptorWithFontAttributes:nil]; 
    fontDesc=[fontDesc fontDescriptorWithSymbolicTraits:NSFontSymbolicClass];
    NSArray*foo=[fontDesc matchingFontDescriptorsWithMandatoryKeys:[NSSet setWithObject:NSFontTraitsAttribute]];
    NSLog(@"%@",foo);
    

    给我一个Pi字体+盲文+多一点的列表。