具有ASCII字符的NSFonts

时间:2014-09-20 03:27:08

标签: objective-c cocoa fonts nsfont nsfontmanager

我正在制作自己的字体对话,但它嵌入在WebKit中。除了一部分之外,它几乎是我想要它的工作方式。它显示的是无法使用标准ASCII字符编写的字体。它们以标准拉丁字符出现,如下图所示。 (注意我正在使用CSS设置菜单字体)

Wingdings is not showing in Wingdings

对于诸如Wingdings之类的字体和诸如中文之类的语言的字体,会出现这种情况。根据我的阅读,这是因为ASCII字符与字体的字符之间没有映射。

我基本上想要过滤掉这些字体,以便只显示实际可以写入且不同的字体。应该可以,Pages设法做到这一点。

我尝试过类似的东西,但它有时会删除不应该删除的字体,并留下应删除的字体。

NSArray *availableFontFamilies = [[NSFontManager sharedFontManager] availableFontFamilies];
NSMutableArray *fontFamilies = [NSMutableArray array];

for (NSString *family in availableFontFamilies) {
    NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithName: family size:16];
    if ([fontDescriptor symbolicTraits] != 0 && ([fontDescriptor symbolicTraits] & NSFontSymbolicClass) == 0) {
        [fontFamilies addObject: family];
    }
}

NSLog(@"Families: %@", fontFamilies);

0 个答案:

没有答案