react-native android fontFamily不生效

时间:2015-10-12 19:11:13

标签: android react-native

问题1:

我将indexFamily添加到index.android.js的欢迎样式,但它不起作用。 fontFamily实际上是否适用于android?

欢迎:{ 字体:20, fontFamily中:'的Roboto薄&#39 ;, textAlign设置:'中心&#39 ;, 余量:10}

问题2:

如果fontFamily在android上工作,有没有办法从资产加载自定义字体?或者这是一个由react-native实现的功能?

7 个答案:

答案 0 :(得分:41)

对于Android: 自定义字体添加了0.16.0-rc。因此,您需要先安装0.16.0-rc版本,然后才能从网上下载任何字体。

  1. 将您的字体文件放入projectfolder / android / app / src / main / assets / fonts / font_name.ttf
  2. 请记住重新编译:{{1​​}}
  3. 然后你可以在你的风格中使用react-native run-android

答案 1 :(得分:32)

另请注意react-native中自定义Android字体的以下限制:

  • 字体必须放在android/app/src/main/assets/fonts
  • 仅支持.ttf个文件
  • 文件名必须与fontFamily完全匹配。例如,如果fontFamily'Source Sans Pro', 该文件必须被称为Source Sans Pro.ttf(而不是SourceSansPro.ttf)。以下段落中提到的任何后缀都会自动从文件中删除。
  • 当字体以粗体和/或斜体显示时,必须使用以下后缀:
    • _bold(例如Source Sans Pro_bold.ttf
    • _italic
    • _bold_italic

答案 2 :(得分:3)

我认为以下是对此处已解释过的方法的更清晰的替代方法:

将所有字体放入React-Native项目目录

./assets/fonts/

在package.json

中添加以下行
"rnpm": {
  "assets": ["./assets/fonts"]
}

最终从项目目录

在终端中运行
$ react-native link

使用它在你的样式中声明这种方式

fontFamily: 'your-font-name without extension'

如果你的字体是 Raleway-Bold.ttf 那么,

fontFamily: 'Raleway-Bold'

来源https://medium.com/@danielskripnik/how-to-add-and-remove-custom-fonts-in-react-native-b2830084b0e4

答案 3 :(得分:2)

此功能尚未实施。请参阅github here上的相关问题。

答案 4 :(得分:1)

答案 5 :(得分:0)

您好,这个问题对我来说已经超过两天了,其字体为“ El + Messiri”字体“ https://fonts.google.com/specimen/El+Messiri

我正在尽一切可能写:

  1. 将字体文件放入 projectfolder / android / app / src / main / assets / fonts / ElMessiri-Regular.ttf
  2. 记住要重新编译,即:react-native run-android然后
  3. 您可以在样式中使用fontFamily:'ElMessiri-Regular'。

    故障是在 fontFamily:“ ElMessiri-Regular” 之后使用了 fontWeight:“粗体” ,并且fontWeight覆盖了fontFamily,因为“ El + Messiri”字体具有自己的fontFamily粗体,它是“ ElMessiri-Bold”

答案 6 :(得分:0)

仅针对那些面临iOS问题的人-有时无法正确识别fontFamily名称:

解决我问题的唯一方法是记录所有字体以找出正确的命名

(确保仅在添加资产/字体并运行react-native link之后执行以下步骤):

无论如何,要记录它们,请使用xcode打开appName.xcworkspace文件,然后编辑AppDelegate.m将此行放在didFinishLaunchingWithOptions方法的末尾(在return语句之前):

for (NSString* family in [UIFont familyNames])
  {
    NSLog(@"%@", family);
    for (NSString* name in [UIFont fontNamesForFamilyName: family])
    {
      NSLog(@" %@", name);
    }
  }

因此,当您从xcode运行应用程序时,它会输出如下内容:

Output print screen from Xcode logs

这样,我可以在我的本机样式中使用fontFamily Barow-Light Zapfino

希望它有所帮助!