React Native应用中是否可以添加自定义字体?
解答
当然可以,React Native 原生就支持自定义字体接入,整个流程对新手很友好,不需要写复杂的原生代码,按下面的步骤操作就能搞定:
第一步:准备字体资源
优先选.ttf、.otf格式的字体文件,不要用小众格式避免兼容问题。注意提前确认字体版权,商用场景一定要拿到合法授权,避免侵权纠纷。第二步:放置字体文件
在你的React Native项目根目录新建assets/fonts/文件夹,把所有需要用到的字体文件全部放到这个目录下。第三步:添加资源路径配置
在项目根目录找到(没有就手动新建)react-native.config.js文件,写入以下配置:module.exports = { project: { ios: {}, android: {}, }, assets: ['./assets/fonts/'], };第四步:自动关联字体到原生项目
在项目根目录的终端执行命令npx react-native-asset,这个脚本会自动把字体文件同步到安卓、iOS两端的原生资源配置里,不需要你手动改Xcode或者安卓工程的配置。如果是iOS端,执行完上述命令后记得进入ios目录跑一次pod install,避免资源关联失效。第五步:代码中调用自定义字体
直接在样式的fontFamily字段填写字体的实际名称即可。这里提一个新手十有八九会踩的坑:fontFamily要填的不是字体文件的文件名,是字体文件内置的PostScript名称,比如你文件名叫ZcoolKuaiLe-Regular.ttf,实际内置名称可能是ZCOOL KuaiLe,填错的话字体会加载失败,自动回退到系统默认字体。
调用示例:import { Text, StyleSheet } from 'react-native'; export default function FontDemo() { return <Text style={styles.title}>测试自定义字体效果</Text> } const styles = StyleSheet.create({ title: { fontFamily: 'ZCOOL KuaiLe', // 填写字体实际内置名称 fontSize: 20, } })
几个实用注意事项
- 如果你是用Expo搭建的项目,不需要跑
react-native-asset命令,直接用expo-font模块加载字体即可,流程更简单。 - 配置完成后一定要重启开发服务、重新编译安装APP,字体属于原生静态资源,热重载/快速刷新不会让新配置生效。
- 不同字重、斜体的字体样式建议单独引入对应的字体文件,不要依赖系统自动模拟加粗、斜体效果,否则安卓和iOS端的显示差异会非常大。
内容的提问来源于stack exchange,提问作者MegaMindTheCoder
相关产品推荐
相关产品推荐

