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

Android可渲染的自定义字体在iOS无法显示,按规范操作仍未解决

iOS端自定义字体不显示排查方案
  • 确认字体文件名与PostScript名称匹配
    iOS识别字体依赖PostScript名称而非文件名,你可以通过以下方式确认:

    • Mac系统双击字体文件打开Font Book,顶部显示的名称即为PostScript名称(例如可能是FaktPro-Normal而非fakt_pro_normal)
    • 用代码打印设备可用字体列表验证:
      import { Platform } from 'react-native';
      if (Platform.OS === 'ios') {
        require('react-native').NativeModules.RNFontManager.getFonts((err, fonts) => {
          console.log('可用字体列表:', fonts);
        });
      }
      

    确保样式代码中使用的是这个PostScript名称,而非本地文件名。

  • 检查Info.plist的字体注册配置
    iOS要求在Info.plist中声明使用的自定义字体,即使执行过react-native-asset也可能出现自动配置失效的情况。手动添加配置:
    打开ios/[你的项目名]/Info.plist,添加Fonts provided by application数组,将字体文件名填入:

    <key>UIAppFonts</key>
    <array>
      <string>fakt_pro_normal.otf</string>
      <string>fakt_pro_medium.otf</string>
    </array>
    
  • 验证Copy Bundle Resources的有效性
    虽然你已添加字体到该列表,仍需确认:

    • 字体文件已勾选对应目标项目
    • 右键点击字体文件选择Show in Finder,确认文件实际路径与项目引用路径一致,无缺失或重复
    • 执行Product > Clean Build Folder清理Xcode缓存后重新编译
  • 排查字体文件兼容性
    部分Windows优化的OTF字体可能不兼容iOS,可通过以下方式验证:

    • 用Font Book打开字体,查看是否有报错提示
    • 将字体转换为TTF格式,或重新下载官方标注支持iOS的版本
  • 确认样式中的字体名称正确
    示例正确写法:

    const styles = StyleSheet.create({
      text: {
        fontFamily: 'FaktPro-Normal', // 此处为PostScript名称,非文件名
        fontSize: 16,
      },
    });
    
  • 重新执行资源关联流程
    若npx react-native-asset未生效,按以下步骤重试:

    1. 删除ios/build文件夹
    2. 运行npx react-native-asset
    3. 用Xcode重新打开项目并编译

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:53:12