我正在制作自己的字体对话,但它嵌入在 WebKit 中。它几乎按照我想要的方式工作,除了一部分。它显示了无法使用标准 ASCII 字符编写的字体。它们以标准拉丁字符出现,如下所示。(注意我正在使用 CSS 设置菜单字体)
这发生在诸如 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);