当前位置: 首页 > 知识库问答 >
问题:

如何使用react native处理自定义字体和字体权重

薛英卫
2023-03-14

我按照官方文档在react native expo应用程序中加载了自定义字体:

const App = () => {
  let [fontsLoaded] = useFonts({
    'Lato-Regular': require('../assets/fonts/Lato-Regular.ttf'),
    'Lato-Bold': require('../assets/fonts/Lato-Bold.ttf'),
    'Poppins-Light': require('../assets/fonts/Poppins-Light.ttf'),
    'Poppins-Bold': require('../assets/fonts/Poppins-Bold.ttf'),
  });

所以我可以把它与组件样式一起使用:

<Text style={{
  fontFamily: 'Lato-Bold'
}}>Home page.</Text>

但我想这样使用它:

<Text style={{
  fontFamily: 'Lato',
  fontWeight: 'bold',
}}>Home page.</Text>

这适用于系统字体,但不适用于自定义字体。

我该怎么处理?

共有1个答案

葛承教
2023-03-14

您必须使用自定义组件并从中提取字体权重。这就是它的样子

import React from 'react';
import { View, Text as RnText, StyleSheet } from 'react-native';

const Text = ({ style, children, ...rest }) => {
  let baseStyle = styles.medium;

  // Multiple styles may be provided.
  (Array.isArray(style) ? style : [style]).forEach((style) => {
    if (style && style.fontWeight) {
      baseStyle = style.fontWeight === 'bold' ? styles.bold : styles.medium;
    }
  });

  // We need to force fontWeight to match the right font family.
  return <RnText style={[baseStyle, style, { fontWeight: 'normal' }]} {...rest}>{children}</RnText>;
};

const styles = StyleSheet.create({
  bold: {
    fontFamily: 'Lato-Bold',
  },
  light: {
    fontFamily: 'Lato-Light',
  },
  medium: {
    fontFamily: 'Lato-Black',
  },
});

export default Text;
 类似资料:
  • 字体始终显示默认字体。 我的字体存储在资源/字体中。我尝试使用其他字体,并对字体进行重新编码。此外,PixlUI库并没有解决这个问题。 主要活动。Java语言 activity\u main。xml

  • 我正在使用IText7从html字符串生成pdf。现在,我需要对段落应用自定义颜色和自定义字体或字体系列。 如何使用Itext7实现这一点? 谢谢

  • 问题内容: 我看到一些新网站在其网站上使用自定义字体(常规Arial,Tahoma等除外)。 并且它们支持大量的浏览器。 怎么做到的?同时,如果可能的话,还会阻止人们自由下载字体。 问题答案: 通常,您可以在CSS中使用自定义字体。这是一个非常基本的示例: 然后,简单地在特定元素上使用字体: (是您的选择器)。 请注意,某些字体格式并非在所有浏览器上都有效;您可以使用fontsquirrel.co

  • 问题内容: 我正在尝试在JFrame中使用特殊字体,但遇到了问题。我有一个这样定义的JLabel: 并且我有一个名为CUSTOMFONT-MEDIUM.TTF(TrueType字体)的文件,但是编写了以下内容: 代码会编译,并且一切正常,除了不会显示“ lab”,因此没有文本。我想这是因为我从未指定字体大小,但是我所做的任何尝试都失败了。有人可以帮我吗? 问题答案: 您创建的字体必须先在中注册,以

  • 我正在尝试使用这个文档https://developer . Android . com/guide/topics/ui/look-and-feel/Fonts-in-xml . html创建自定义字体系列,问题在于没有bold属性,我无法以编程方式在XML中设置字体?

  • 问题内容: 我正在尝试在使用wkhtmltopdf生成的PDF中使用自定义字体。我读到您不能使用google webfonts,而wkhtmltopdf使用truetype .ttf文件。谁能确认?因此,我从Google webfont下载了一个.ttf文件,并将其放入服务器中,然后使用了字体: 和字体系列: 现在应该以Jolly Lodger字体呈现的文本根本没有出现,页面为空白。 我究竟做错了