React-Native项目 — 自定义字体的使用

系列文章目录

  1. React-Native环境搭建(IOS)
  2. React-Native项目 — 关于IOS知识储备
  3. React-Native项目工程搭建(开发模板搭建)
  4. React-Native项目矢量图标库(react-native-vector-icons)

目录

  • 系列文章目录
  • 前言
  • 一、自定义字体是什么
  • 二、自定义字体如何使用
    • 1、必须先有一个字体文件
    • 2、定义公共asset目录
    • 3、配置文件link规则
    • 4、link
    • 5、代码示范
  • 二、自定义字体包大小优化
    • 1、字体文件压缩原理
    • 2、执行步骤

前言

在实际的移动端项目开发中,原生安卓和Ios自带的字体,虽然足够工整、耐看、适配大多数的场景。

但是在一些特殊场合下,那些规范的字体,可能不太适合我们的app设计,而且,通常情况下,设计师的设计元素里面,本身也包含了一些第三方的特殊字体的使用,这就使得我们的项目中,有足够的能力,支持第三方的字体使用。

阿里妈妈刀隶体

一、自定义字体是什么

计算机中,针对全世界的语言符号,进行了一次标准的排序,每一个专门的文字符号,都有对应的一个字符编码,我们汉语也是一样,每一个单独的汉字,都有其特定的编码。

每一种字体,就是需要设计这些编码,所对应的文字符号长什么样。而我们的浏览器中,移动端app中,都会有自己的默认字体,这就是我们能够正常的打字的原因。

第三方的自定义字体,就是把这些编码,重新规划了一套自己所设计的风格,每一个字符编码,都对应一个自定义风格的字体设计,这就是我们的三方字体的基本原理。

二、自定义字体如何使用

1、必须先有一个字体文件

每一套自定义字体,归根到底都会是一个字体文件,一般常用的字体文件以.ttf为文件后缀。

这个字体文件,里面存放的就是一个个字体编码,以及对应的字体符号的一个映射表。

一般而言,我们都会从设计师那里,拿到这个字体文件。

2、定义公共asset目录

一般在 RN 项目的 /assets/fonts 目录里面,把获取到的字体文件放到该目录下。

在这里插入图片描述

3、配置文件link规则

项目根目录下创建 react-native.config.js 文件

module.exports = {
  project: {
    ios: {},
    android: {},
  },
  assets: ["./assets/fonts"],
};

4、link

执行 npx react-native link(RN 版本 < 0.69 版本)

或者,npx react-native-asset(RN 版本 >= 0.69 版本)
在这里插入图片描述

5、代码示范

import React from 'react';
import {Text, View, StyleSheet} from 'react-native';
import commonStyles from '../../styles/common';

export default function ChatScreen() {
  return (
    <View style={commonStyles.center}>
      <Text>ChatScreen</Text>
      <Text style={styles.textStyle}>阿里妈妈刀隶体</Text>
    </View>
  );
}
const styles = StyleSheet.create({
  textStyle: {
    fontFamily: 'AlimamaDaoLiTi',
    fontSize: 30,
  },
});

二、自定义字体包大小优化

三方字体的引入,让我们方便的使用任何我们想要的字体特效,但是也带来了缺点,这个缺点就是每一个字体文件,都比较大,如果我们使用多个字体文件,那字体文件的大小更要成倍的增加,这对项目而言,不是一个好消息。

在我们的社区中,当然有一些解决方案,比如 font-spider进行字体文件的压缩。

1、字体文件压缩原理

字体文件之所以大,是因为它几乎枚举了我们所使用的所有字符的映射表,但是其实我们真正的使用过程中,只需要把项目中使用到的文字的映射表集成下来即可,而字体文件的压缩,本质上也是这样的一个原理,把使用到的文字的映射摘录出来,用不到的直接丢弃,这样的过程就是字体文件的压缩。

2、执行步骤

参考npm官方:
https://www.npmjs.com/package/font-spider

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/347153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux多线程——生产消费者模型

Gitee仓库&#xff1a;阻塞队列、环形队列 文章目录 1. 死锁1. 1 死锁概念1.2 死锁的四个必要条件1.3 解决死锁 2. 线程同步3. 条件变量3.1 举个例子3.2 接口 4. 生产消费者模型4.1 什么是生产消费者模型4.2 基于阻塞队列的生产消费模型4.3 环形队列&#xff08;信号量&#xf…

electron-vue更新到最新版本无法使用解决

更新版本&#xff1a; 网上说使用yarn upgrade-interactive --latest但是我这无法运行 所以我是使用以下命令进行更新的&#xff0c;不要急一条一条执行&#xff1a; yarn add electron yarn add electron-builder yarn add electron-debug yarn add electron-devtools-insta…

数据目录驱动测试——深入探讨Pytest插件 pytest-datadir

在软件测试中,有效管理测试数据对于编写全面的测试用例至关重要。Pytest插件 pytest-datadir 提供了一种优雅的解决方案,使得数据目录驱动测试变得更加简单而灵活。本文将深入介绍 pytest-datadir 插件的基本用法和实际案例,助你更好地组织和利用测试数据。 什么是pytest-da…

centos 安装mysql5.7教程

一&#xff0c;配置yum mysql5.7安装源 配置yum mysql5.7安装源 yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 配置mysql5.7安装源成功 查看配置成功的安装源 yum repolist enabled | grep "mysql*" 执行后看到已配…

matlab窗函数-hann窗和hamming窗函数

窗函数的作用 在时域上&#xff0c;窗函数可以看作是对原始信号进行截断或调制的加权函数。这些窗函数通常在时域上是有限的宽度&#xff0c;并且具有对称性&#xff0c;如矩形窗、汉宁窗、汉明窗和布莱克曼窗等。例如&#xff0c;汉明窗是一种对称窗函数&#xff0c;它可以用…

揭秘淘宝图片搜索商品接口:一键上传,海量相似商品即刻到手!

淘宝图片搜索商品接口技术详解 一、概述 淘宝图片搜索商品接口是淘宝开放平台提供的一项创新功能&#xff0c;允许第三方开发者通过上传图片进行商品搜索。通过使用这个接口&#xff0c;开发者可以快速地获取与图片相似的商品信息&#xff0c;为消费者提供更精准的购物体验。…

【嵌入式学习】C++QT-Day1-C++基础

思维导图&&笔记 见我的博客&#xff1a;https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业&#xff1a; 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream&…

深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析

UIAbility组件概述 UIAbility组件是HarmonyOS中一种包含UI界面的应用组件&#xff0c;主要用于与用户进行交互。每个UIAbility组件实例对应最近任务列表中的一个任务&#xff0c;可以包含多个页面来实现不同功能模块。 声明配置 为了使用UIAbility&#xff0c;首先需要在mod…

Python环境的安装和Pycharm的安装

Python环境的安装 英文版官网&#xff1a;Welcome to Python.org&#xff0c; 因为是外网&#xff0c;加载可能会很慢 首先呢&#xff0c;我们先去官网查找&#xff1a;Python中文网 官网&#xff0c;这个官网是中文版的&#xff0c;点进去之后是这个页面 然后点击下载&#…

【LeetCode每日一题】2859. 计算 K 置位下标对应元素的和

2024-1-25 文章目录 [2859. 计算 K 置位下标对应元素的和](https://leetcode.cn/problems/sum-of-values-at-indices-with-k-set-bits/)思路&#xff1a; 2859. 计算 K 置位下标对应元素的和 思路&#xff1a; 遍历输入列表&#xff0c;对于满足特定条件的元素做一些操作并将结…

Django从入门到精通(二)

目录 三、视图 3.1、文件or文件夹 3.2、相对和绝对导入urls 3.3、视图参数requests 3.4、返回值 3.5、响应头 3.6、FBV和CBV FBV 四、静态资源 4.1、静态文件 4.2、媒体文件 五、模板 5.1、寻找html模板 5.2、模板处理的本质 5.3、常见模板语法 5.4、内置模板函…

Sketch怎么增加组件?

Sketch怎么增加组件&#xff1f;Sketch组件库经常使用&#xff0c;想要添加一些新的组件&#xff0c;该怎么添加呢&#xff1f;下面我们就来看看Sketch组件库添加新组建的技巧&#xff0c;详细请看下文介绍 打开电脑&#xff0c;找到sketch软件的图标&#xff0c;点击进入 新建…

鸿蒙开发-UI-布局-轮播

鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 鸿蒙开发-UI-布局-弹性布局 鸿蒙开发-UI-布局-相对布局 鸿蒙开发-UI-布局-格栅布局 鸿蒙开发-UI-布局-列表 鸿蒙开发-UI-布局-网格 文章目录 前言 一、基本概念 二、开发布局 三、应用特性 1.循环播放 2…

docker(上)

笔记资料参考与尚硅谷 前提知识课程介绍课程定位学习建议 1前提知识 boot cloud git push pull redis nginx mysql... Linux centos ubuntu 2课程介绍 2.1 2018 vs 2022 2.2 k8s&#xff08;雷峰崖&#xff09; 2.3 大纲 3课程定位&#xff08;因材施教量体裁衣…

电商API接口|爬虫实战-js逆向,以淘宝sign为例

如果我们想要获取某宝的商品信息或者商品的评论信息的话。可能其中的一条途径就是爬虫了【淘宝商品详情API】。放在以前的话&#xff0c;爬虫还是挺简单的。但是放到现在呢&#xff0c;其实并不容易了。因为现在各个平台的反爬机制都加强了。有的会加强监控的&#xff0c;有的则…

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目&#xff01;今天和大家分享一下&#xff0c;如何使用IntelliJ IDEA里面的maven插件&#xff0c;来快速搭建一个简单的Springboot基础项目。 第一步&#xff0c;菜单里面找到&#xff0c;文件-》新建-项目。如图。我们勾选了是…

Zookeeper3.5.7基础学习

文章目录 一、Zookeeper入门1、概述2、特点3、数据结构4、应用场景 二、Zookeeper 安装部署1、本地模式安装1.1 基础操作1.2 配置参数解读 2、集群部署2.1 集群安装2.2 选举机制(面试重点)2.3 ZK 集群启动停止脚本 三、ZK客户端相关操作1、客户端命令行操作1.1 命令行语法1.2 z…

车载显示,“激斗”与“换代”

编者按&#xff1a;车载显示&#xff0c;正在进入新一轮变革周期。 车载显示作为汽车智能化的重要交互终端&#xff0c;在过去几年&#xff0c;持续受益车企的大屏化、多屏化配置趋势&#xff0c;部分头部厂商赚得盆满钵满。 比如&#xff0c;作为京东方旗下唯一的车载显示模组…

携程基于Jira Cloud的敏捷项目管理实践

好的工具可以满足团队在各个成长阶段的管理诉求 实践一&#xff1a;对齐目标/团队OKR/多团队协作战略项目 实践二&#xff1a;以产品为中心的协作框架 实践三&#xff1a;交付团队管理 实践四&#xff1a;和海外子公司对齐&#xff0c;协作

guitarpro8有免费版本吗? Guitar Pro需要多少钱

Guitar Pro8官方并没有提供一个完全免费的版本。然而&#xff0c;根据搜索结果&#xff0c;存在一个声称是Guitar Pro免费版的V8.0.1.28版本&#xff0c;这个版本被描述为一款可以自动谱曲的简单实用的谱曲软件。此外&#xff0c;还有信息称Guitar Pro免费版能够在不需要支付费…
最新文章