Flutter自定义字体权重在iOS真机不生效问题求助
iOS真机自定义字体Uncut Sans权重失效解决方案
1. 必须在iOS Info.plist中声明字体文件
iOS真机要求显式注册自定义字体,模拟器可跳过此步骤,但真机必须配置:
- 打开项目的
ios/Runner/Info.plist文件 - 添加
UIAppFonts数组,将所有用到的Uncut Sans字体文件名逐一加入:
<key>UIAppFonts</key> <array> <string>UncutSans-Bold.ttf</string> <string>UncutSans-Semibold.ttf</string> <string>UncutSans-Light.ttf</string> <string>UncutSans-Regular.ttf</string> <string>UncutSans-Medium.ttf</string> </array>
2. 验证字体文件的内部元数据
部分字体文件的内部家族名称与文件名不一致,会导致iOS无法正确映射权重:
- 用Mac「字体册」打开每个.ttf文件,查看字体家族名称是否统一为
UncutSans - 如果某款字体的内部家族名称不同(比如
UncutSans-Light),需要调整pubspec.yaml中对应字体的family字段,或者更换内部元数据统一的字体文件
3. 彻底清理构建缓存
缓存残留可能导致配置不生效,执行以下操作:
- 清理Flutter项目缓存:
flutter clean && flutter pub get
- 进入iOS目录清理Pod缓存:
cd ios && pod deintegrate && pod install
- 在Xcode中按下
Cmd+Shift+K清理构建文件夹,重新运行项目
4. 可变字体配置检查(若使用)
如果尝试过可变字体版本,确保pubspec.yaml配置覆盖完整权重范围:
fonts: - family: UncutSans fonts: - asset: lib/theme/fonts/UncutSans[wght].ttf style: normal range: minWeight: 300 maxWeight: 700
内容的提问来源于stack exchange,提问作者Marcel Dz
相关产品推荐
相关产品推荐

