如何生成一组已过滤的可用字体系列名称? (如在Pages或TextEdit中)

时间:2014-01-25 03:41:29

标签: cocoa nsfont nsfontmanager

我想创建一个类似于Pages.app(或TextEdit.app)中的弹出按钮,其菜单是字体系列的过滤列表。

我可以从[NSFontManager availableFontFamilies]获得一系列可用的字体系列名称,但这提供了比在Pages的弹出菜单中更多的字体系列。

另一方面,我可以从[NSFontCollection fontCollectionWithName:NSFontCollectionUser]得到正确过滤的字体描述符集,但也包括该族的每个成员(斜体,粗体等)。我不希望在弹出窗口中包含每个成员,只包括姓氏。

我想要过滤一组系列名称。

我从NSFontManager获取的名称似乎已经为UI清理了,而我从字体描述符的属性字典([myFontDescriptor fontAttributes][NSFontNameAttribute])中获取的名称值则没有。所以我不能只根据字符串值创建两个组的简单集合交集,相同的东西可能有不同的名称。

2 个答案:

答案 0 :(得分:2)

您可以使用-[NSFontDescriptor objectForKey:]来检索-fontAttributes字典中不存在的属性。如果使用属性键NSFontFamilyAttribute,则会为您提供字体系列名称。将其应用于[NSFontCollection fontCollectionWithName:NSFontCollectionUser]中的每个字体描述符应该可以满足您的需求。

答案 1 :(得分:0)

{{1}}

这是我的代码,可以节省一些时间