React Native开发Android应用:如何实现文本fontWeight:500效果?
解决React Native Android自定义字体 fontWeight 兼容问题
方案1:生成对应字重的字体文件
- 使用免费在线工具Font Squirrel Webfont Generator,上传你的
Migra Extralight字体文件,切换到「Expert」模式调整字重参数为500,生成新字体包后,将文件放到项目的android/app/src/main/assets/fonts目录。 - 本地工具可选用FontForge:打开原字体后,通过「Element > Font Info > OS/2 > Weight Class」修改为500,导出为TTF/OTF格式再导入项目。
方案2:用缩放模拟字重效果
无需生成新字体,通过微调缩放比例和字间距逼近Web端500字重效果,示例代码:
<Text style={{ fontFamily: 'Migra-Extralight', transform: [{ scaleX: 1.05 }, { scaleY: 1.05 }], letterSpacing: 0.2, }} > 目标文本内容 </Text>
注意:不同字号需对应调整缩放比例,建议多测试适配。
方案3:替换高兼容字体库
放弃react-native-font-weight,改用对高版本React Native更友好的库,比如expo-font(Expo项目适用):
- 安装依赖:
npx expo install expo-font - 加载字体示例:
import { useFonts } from 'expo-font'; export default function App() { const [fontsLoaded] = useFonts({ 'Migra-Extralight': require('./assets/fonts/MigraExtralight.ttf'), 'Migra-Extralight-500': require('./assets/fonts/MigraExtralight-500.ttf'), }); if (!fontsLoaded) { return null; } return <Text style={{ fontFamily: 'Migra-Extralight-500' }}>目标文本内容</Text>; }
字体配置注意事项
Android端字体文件命名需规范,比如MigraExtralight-500.ttf,同时在react-native.config.js中配置:
module.exports = { assets: ['./assets/fonts/'], };
执行npx react-native link确保字体链接生效(RN 0.60+支持自动链接,手动执行更稳妥)。
内容的提问来源于stack exchange,提问作者user89732198
相关产品推荐
相关产品推荐

