如何获取NSFontCollection中包含的字体数组?

时间:2013-05-29 03:10:17

标签: nsfont nsfontmanager

如何获得由NSFontCollection“包含”的NSArray字体或字体系列?

所有NSFont和NSFontManager方法似乎都需要单个NSFontDescriptor,而NSFontCollection则返回NSFontDescriptor对象的NSArray。似乎应该有一个返回与这些匹配的字体的方法。

是否有必要手动查询所有字体的每个字体描述符?

2 个答案:

答案 0 :(得分:0)

NSArray *familyNames = [[NSFontManager sharedFontManager] availableFontFamilies];

答案 1 :(得分:0)

您可以获取字体集合的matchingDescriptorsNSFontDescriptor的数组),并向每个描述符询问其-objectForKey:NSFontFamilyAttribute,然后将它们(字符串)转储到一个唯一的集合中。

或者,您可以将每个字体描述符变成一种字体(通过使用描述符创建字体)并要求其familyName(然后使它们唯一)。

使用Swift的compactMap()(丢弃nil),这两种方法都非常简单。