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

Posted

技术标签:

【中文标题】如何获取 NSFontCollection 中包含的字体数组?【英文标题】:How to get array of fonts contained in an NSFontCollection? 【发布时间】:2013-05-29 03:10:17 【问题描述】:

您如何获得 NSArray 的字体或字体系列,这些字体或字体系列被 NSFontCollection“包含”?

所有NSFontNSFontManager 方法似乎都需要一个NSFontDescriptor,而NSFontCollection 返回NSArrayNSFontDescriptor 对象。似乎应该有一种方法可以返回与这些匹配的字体。

是否需要针对所有字体手动查询每个字体描述符?

【问题讨论】:

【参考方案1】:
NSArray *familyNames = [[NSFontManager sharedFontManager] availableFontFamilies];

【讨论】:

对不起,我的要求没有做。【参考方案2】:

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

或者,您可以将每个字体描述符转换为字体(通过使用描述符创建字体)并请求其familyName(然后将其唯一)。

使用 Swift 的 compactMap()(丢弃 nils),这两种方法都相当简单。

【讨论】:

有趣。我得看看这个。在valueForKeyPath: 上使用 NSArray KVC 运算符甚至可能值得尝试

以上是关于如何获取 NSFontCollection 中包含的字体数组?的主要内容,如果未能解决你的问题,请参考以下文章

我正在对 api 提出请求,但即将授权失败。如何在获取链接中包含授权令牌

如果 Json 变量在 WCF 中包含空格或任何特殊字符,如何获取 Json 值

在 Keras 中,如何获取与模型中包含的“模型”对象关联的图层名称?

web开发问题HTTP请求POSTDATA中包含多层对象如何获取?

如何获取标签栏控制器中包含的所有视图控制器? iphone开发

如何使用 xpath 检索属性名称中包含冒号的属性的值