React Native安卓端自定义字体不生效问题求助
排查React Native安卓端自定义字体不生效的问题
我来帮你梳理几个实际项目中常见的坑,这些都可能导致安卓端自定义字体不生效:
1. fontWeight属性大概率是问题根源
你设置了fontWeight: 'bold',但如果你的Good Feeling Sans.ttf不是专门的粗体版本字体文件,安卓系统会自动 fallback 到系统默认粗体字体,完全忽略你的自定义字体。解决方式分两种:
- 如果你有单独的粗体字体文件(比如
Good Feeling Sans Bold.ttf),把它也放进assets/fonts,然后样式里直接指定该字体文件名作为fontFamily,删掉fontWeight属性:const styles = StyleSheet.create({ textStyles: { fontFamily: 'Good Feeling Sans Bold', // 和粗体字体文件名完全一致 fontSize: 20, margin: 10 } }) - 如果没有粗体字体文件,直接移除
fontWeight: 'bold',只用自定义字体的常规版本。
2. 严格匹配字体文件名与fontFamily(大小写敏感!)
安卓对文件大小写是严格区分的,比如你的字体文件名叫GoodFeelingSans.ttf,但你写的是'Good Feeling Sans',这就会完全匹配失败。务必保证:
fontFamily的值和ttf文件的**完整文件名(不含.ttf后缀)**完全一致,包括空格、大小写、连字符等细节。- 比如文件是
GoodFeelingSans-Regular.ttf,那fontFamily就必须写'GoodFeelingSans-Regular'。
3. 移除旧版rnpm配置,只保留新版配置
React Native 0.60+版本已经废弃了rnpm配置,改用react-native.config.js。同时存在两个配置会导致冲突:
- 删掉
package.json里的"rnpm"节点。 - 确保
react-native.config.js语法正确、路径无误:module.exports = { assets: ['./assets/fonts/'] };
4. 清空所有缓存后重新构建
缓存是字体不生效的高频诱因,按顺序执行以下命令:
- 清除RN打包缓存:
npx react-native start --reset-cache - 清除安卓构建缓存:
cd android ./gradlew clean cd .. - 卸载模拟器/真机上的旧APP,再重新运行:
npx react-native run-android
5. 手动确认字体是否被打包进安卓项目
自动link有时会失效,你可以手动检查:
- 打开
android/app/src/main/assets/fonts文件夹,看看是否存在你的Good Feeling Sans.ttf文件。 - 如果没有,直接把
assets/fonts下的所有ttf文件复制到这个目录,再重新构建。
6. 排查字体文件本身的问题
有些下载的ttf文件可能损坏或不兼容安卓:
- 在电脑上打开该ttf文件,确认能正常显示字符。
- 换一个已知可用的ttf文件测试,排除字体文件本身的问题。
内容的提问来源于stack exchange,提问作者Ajith Kumar
相关产品推荐
相关产品推荐

