React Native中的Google字体

时间:2015-11-28 12:14:45

标签: fonts react-native webfonts

我想知道是否可以在我的React Native项目中使用Google字体。

我一直在寻找一些信息,但我找不到任何信息。

有可能吗?

感谢。

P.D。:我知道我可以下载它并将其包含在我的项目中。

2 个答案:

答案 0 :(得分:7)

如果您的React Native项目是用Expo CLI引导的,那么您现在可以使用expo-google-fonts软件包将Google字体合并到项目中。

安装软件包:

expo install @expo-google-fonts/dev expo-font

注意dev将允许您从Expo Google Fonts packages中的任何一个导入任何字体样式。这将在运行时通过网络加载字体,而不是将资产作为文件添加到项目中(如果您不知道使用哪种字体,则很好):

import {
  useFonts,
  Roboto_400Regular,
  Bangers_400Regular,
  OpenSans_400Regular
} from "@expo-google-fonts/dev";

如果您已经知道要使用哪种字体,请运行:

expo install @expo-google-fonts/FONT_FAMILY_NAME expo-font

例如,如果您选择使用Roboto,我们将安装:

expo install @expo-google-fonts/roboto expo-font

然后在您的项目文件中按以下方式使用它:

import React from "react";
import { StyleSheet, Text, View } from "react-native";
import { AppLoading } from "expo";
import {
  useFonts,
  Roboto_400Regular,
  Roboto_400Regular_Italic
} from "@expo-google-fonts/roboto";

export default function App() {
  let [fontsLoaded] = useFonts({
    Roboto_400Regular,
    Roboto_400Regular_Italic
  });

  if (!fontsLoaded) {
    return <AppLoading />;
  } else {
    return (
      <View style={{flex: 1, alignItems: "center", justifyContent: "center" }}>
        <Text style={{ fontFamily: "Roboto_400Regular", fontSize: 28 }}>
          Nice! Support for Google Fonts!
        </Text>
      </View>
    );
  }
}

答案 1 :(得分:5)

从此处下载谷歌字体:Github Google Fonts

假设您的字体是Quicksand,您可以在index.ios.js中执行以下操作:

import _ from 'lodash';

var OldText = Text;

class NewText extends OldText {
  defaultProps = {
    customFont: false
  }

  render() {
    var props = _.clone(this.props);

    if (this.props.customFont) {
      return super.render();
    }

    if (_.isArray(this.props.style)){
      props.style.push({fontFamily: 'Quicksand-Regular', fontSize: 12});
    } else if (props.style) {
      props.style = [props.style, {fontFamily: 'Quicksand-Regular', fontSize: 12}];
    } else {
      props.style = {fontFamily: 'Quicksand-Regular', fontSize: 12};
    }

    this.props = props;

    return super.render();
  }
}

Object.defineProperty(React, 'Text', {value: NewText});

然后在xCo​​de in =&gt;中添加字体Build Phases =&gt;复制捆绑资源

然后检查项目Info.plist中是否有以下内容:

<key>UIAppFonts</key>
<array>
    <string>Quicksand-Bold.otf</string>
    <string>Quicksand-BoldItalic.otf</string>
    <string>Quicksand-Italic.otf</string>
    <string>Quicksand-Light.otf</string>
    <string>Quicksand-LightItalic.otf</string>
    <string>Quicksand-Regular.otf</string>
    <string>Quicksand_Dash.otf</string>
</array>

这对我有用。