React Native Expo 自定义字体权重在 iOS 设备上不起作用

Posted

技术标签:

【中文标题】React Native Expo 自定义字体权重在 iOS 设备上不起作用【英文标题】:Reat Native Expo custom fontWeight doesn't work on iOS device 【发布时间】:2018-07-16 03:01:49 【问题描述】:

我根据博览会网站加载了 open-sans-regular 字体:

async componentDidMount() 
  await Font.loadAsync(
    'open-sans-regular': require('assets/fonts/OpenSans-Regular.ttf')
  )

  this.setState( fontLoaded: true )

当我在文本上应用以下样式时,它适用于 Android 设备,但不适用于 iOS 设备。我是否遗漏了什么或者我需要加载“open-sans-bold”并使用 fontFamily 属性?

<Text style= fontWeight: 'bold' >Testing</Text>

【问题讨论】:

【参考方案1】:

要使用该字体,您还需要安装粗体字体...

await Font.loadAsync(
    'open-sans-regular': require('assets/fonts/OpenSans-Regular.ttf'),
    'open-sans-bold': require('assets/fonts/OpenSans-Bold.ttf'),
  )

并确保您在样式中声明 fontFamily

<Text style= fontFamily: 'open-sans-bold', fontSize: 56 >
  Hello, world!
</Text>

更多信息,请参阅Using Custom Fonts in Expo Docs:

【讨论】:

感谢您的回复。我知道我可以使用 fontFamily,但问题是我可以使用 fontWeight 属性来实现相同的目标。它确实适用于android设备,当我将fontWeight设置为粗体时,文本将变为粗体,但它对iPhone没有任何影响。 是的,我认为这也应该有效,但可能使用该特定字体的“粗体”枚举存在问题。您是否尝试过一个数值,比如 900? enum('normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900')(请参阅fontWeight 的文档)

以上是关于React Native Expo 自定义字体权重在 iOS 设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义字体与expo反应原生,每次加载字体

如何在 expo/react-native 应用程序中添加自定义节点模块?

react-native中expo的真机测试字体不加载的坑

React Native - Expo:fontFamily 'SimpleLineIcons' 不是系统字体,尚未通过 Font.loadAsync 加载

在 React-Native 中使用自定义字体

自定义字体不适用于 React-Native 0.62