You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS如何获取所有已安装字体(含自定义字体)的列表?

获取iOS设备上所有已安装字体(含自定义字体)的解决方案

问题原因

UIFont.familyNames 和 CTFontManagerCopyAvailableFontFamilyNames() 仅返回系统内置字体和当前App内嵌的字体,无法覆盖iOS 16开始支持的用户手动安装的自定义字体。

解决方法

使用CoreText框架提供的 CTFontManagerCopyEnabledFontFamilyNames() 接口,它会返回设备上所有已启用的字体家族名称,包含用户安装的自定义字体。

代码示例(Swift)

  1. 导入CoreText框架:
import CoreText
  1. 实现获取字体列表的方法:
func fetchAllInstalledFontFamilies() -> [String] {
    // 转换为Swift字符串数组
    let enabledFontFamilies = CTFontManagerCopyEnabledFontFamilyNames() as [String]
    // 可选:对列表排序,提升可读性
    return enabledFontFamilies.sorted()
}

扩展:获取字体家族下的具体字体

如果需要获取每个字体家族下的具体字体(如不同字重、样式),可遍历家族名调用 UIFont.fontNames(forFamilyName:):

func fetchAllFonts() -> [(familyName: String, fontNames: [String])] {
    let allFamilies = fetchAllInstalledFontFamilies()
    return allFamilies.map { family in
        let fontNames = UIFont.fontNames(forFamilyName: family).sorted()
        return (familyName: family, fontNames: fontNames)
    }
}

注意事项

  • 该接口支持iOS 13及以上系统,iOS 16及以上才能获取到用户安装的自定义字体。
  • 无需申请额外权限,直接调用即可。

内容的提问来源于stack exchange,提问作者ixany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:09:52