uniapp字体ttf在小程序报错,解决方法

news2024/12/22 20:19:33

在这里插入图片描述

文章目录

  • 导文
  • 解决方法1:把字体改成base64格式
  • 解决方法2:改成线上模式


导文

报错1:
uniapp 小程序报错:app.js错误:
Error: Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/postcss-loader/src/index.js):
RangeError: Maximum call stack size exceeded
at String.match ()
at updateDecl (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-urlrewrite\lib\urlrewrite.js:102:26)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:188:28
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:144:26
at AtRule.each (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:110:22)
at AtRule.walk (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:143:21)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:146:32
at Root.each (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:110:22)
at Root.walk (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:143:21)
at Root.walkDecls (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:186:25)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-urlrewrite\lib\urlrewrite.js:112:52
at D:\HBuilderX\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\postcss\index.js:168:7
at LazyResult.run (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:288:14)
at LazyResult.asyncTick (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:212:26)
at LazyResult.asyncTick (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:225:14)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:217:17
at D:\HBuilderX\p
报错二:
uniapp报错:[渲染层网络层错误] Failed to load local font resource /static/fonts/Kingsoft_Cloud_Font.ttf-do-not-use-local-path-./common/main.wxss&2359&7
the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error)
(env: Windows,mp,1.06.2402040; lib: 3.4.7)

解决方法1:把字体改成base64格式

推荐一个转码平台:
https://www.giftofspeed.com/base64-encoder
当有一个字体文件(如 .ttf.woff.woff2)的 base64 编码版本时,可以在 CSS 的 @font-face 规则中直接使用该 base64 编码,而不是通过 URL 链接到字体文件。这样做的好处是字体文件被嵌入到 CSS 文件中,减少了 HTTP 请求的数量,但缺点是 CSS 文件可能会变得非常大。
在这里插入图片描述

以下是如何在 CSS 中使用 base64 编码的字体:

  1. 首先,需要获取字体文件的 base64 编码版本。
  2. 将 base64 编码的字体数据插入到 CSS 文件的 @font-face 规则中。需要使用 url('data:font/woff2;base64,...')(或其他适当的 MIME 类型,如 font/woffapplication/x-font-ttf)来指定 base64 数据。

示例:

@font-face {
    font-family: 'MyCustomFont';
    src: url('data:font/woff2;base64,d09GMgABAAAAAGVUAAEAAAAABigAAAIYAAEACAAAAAgAAAAAIAAAAAEoAAAAJnB....') format('woff2'),
         /* 你可能还需要包含其他格式的 base64 编码,如 woff 或 ttf,但为了简洁这里省略了 */
         fallback: url('fonts/myfont.woff2') format('woff2'); /* 提供一个备选 URL 以防 base64 数据过大或不被支持 */
    font-weight: normal;
    font-style: normal;
}

注意

  • d09GMgABAAAAAGVUAAEAAAAABigAAAIYAAEACAAAAAgAAAAAIAAAAAEoAAAAJnB.... 是假设的 base64 编码数据,你需要替换为实际的编码数据。
  • fallback: url('fonts/myfont.woff2') format('woff2'); 是一个可选的备选方案,用于在 base64 数据过大或不被支持的情况下提供备选字体文件。这个属性不是标准的 CSS 属性,但它可以作为一个注释或用于未来可能的实现。
  • 由于 base64 编码的数据可能会非常长,因此建议只在必要时使用它,并考虑文件大小和加载性能的影响。
  • 确保你的 CSS 文件压缩和缓存策略得当,以减少传输大小和提高加载速度。

解决方法2:改成线上模式

使用wx.loadFontFace加载字体,微信小程序提供了wx.loadFontFace API 来加载自定义字体。通过此API,可以指定字体名称、字体文件路径,并在加载成功后应用该字体。

在你的代码中,你已经尝试使用wx.loadFontFace来加载一个名为BoldFont的字体,字体文件位于https://www.zitixiazai.cn/static/upload/other/20220914/1663119174123134.ttf。但是,如果此代码在运行时报错,可能是由以下几个原因造成的:

示例代码
以下是一个更新后的示例代码,它包括了错误处理的改进:

	wx.loadFontFace({
				family: 'BoldFont',
				source: 'url("https://***/static/upload/other/20220914/1663119174123134.ttf")',
				success(res) {
					console.log(res.status)
					// self.setData({ loaded: true })
				},
				fail: function (res) {
					console.log(res.status)
				},
				complete: function (res) {
					console.log(res.status)
				}
			})
	.body-num-text {
		font-family: 'BoldFont', MyCustomFont, sans-serif; /* 添加默认字体作为备选 */  
	}

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF,libc版本2.31,经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…

Hive-存储-文件格式

一、前言 数据存储是Hive的基础,选择合适的底层数据存储格式,可以在不改变Hql的前提下得到大的性能提升。类似mysql选择适合场景的存储引擎。 Hive支持的存储格式有 文本格式(TextFile) 二进制序列化文件 (SequenceF…

大家都在聊IPD(集成产品开发)?国内IPD体系做的比较好的是哪款项目管理软件?看IBM、华为的研发管理之道!

IPD(集成产品开发)到底是什么?一套体系?一些流程?还是一种模式? 一、回顾一下,什么是IPD? IPD到底是什么?一套体系?一些流程?还是一种模式&#…

Batch学习及应用案例

一、介绍 Batch是一种Windows操作系统中使用的批处理脚本语言,用于自动化执行一系列命令和操作。通过编写批处理脚本,可以实现自动化完成重复性或繁琐的任务,提高工作效率。 Batch脚本可以使用内置的命令和命令行工具,以及调用其…

学校机器该maven环境

在学校机器上 安装maven配置idea中的maven 后,发现无法运行, 推测是学校电脑上idea版本和我们下的maven 可能不太匹配。 学校的电脑上idea有集成的maven,但默认配置是访问国外的服务器 解决办法: 下载分享给各位同学的压缩包m…

顺序表--数据结构第一关

顺序表 数据结构概念 定义:数据结构是计算机存储、组织数据的⽅式 根据学过C语言的基础上,数组是最简单的数据结构 顺序表的底层就是数组 为什么呢? 例子如下: int arr[100]{1,2,3,4,5}; //修改某一个数据:arr[…

vcruntime140_1.dll是什么东东?vcruntime140_1.dll缺失的8个解决方法

当电脑出现找不到vcruntime140_1.dll,或vcruntime140_1.dll丢失无法打开软件怎么办?小编今天在本文详细为大家介绍解决方法与介绍vcruntime140_1.dll究竟是什么等vcruntime140_1.dll的问题。 一、vcruntime140_1.dll文件是什么 文件概述定义与功能 vcruntime140_…

校园圈子小程序系统搭建需求和需要哪些功能?APP小程序H5前后端源码交付

功能:小程序授权登陆,支持app双端,小程序,h5,pc端,手机号登陆,发帖,建圈子、发活动。可置顶推荐帖子,关注、粉 丝、点赞等。可作为圈子贴吧、小红书、校园社区、表白墙、…

【02】从0到1构建AI生成思维导图应用 -- 编写主页

【02】从0到1构建AI生成思维导图应用 – 编写主页 大家好!最近自己做了一个完全免费的AI生成思维导图的网站,支持下载,编辑和对接微信公众号,可以在这里体验:https://lt2mind.zeabur.app/ 上一章:https:/…

【AI大模型RAG】深入探索检索增强生成(RAG)技术

目录 1. 引言2. RAG技术概述2.1 RAG技术的定义2.2 RAG技术的工作原理2.3 RAG技术的优势2.4 RAG技术的应用场景 3. RAG的工作流程3.1 输入处理3.2 索引建立3.3 信息检索3.4 文档生成3.5 融合与优化 4. RAG范式的演变4.1 初级 RAG 模型4.2 高级 RAG 模型4.3 模块化 RAG 模型优化技…

生命在于学习——Python人工智能原理(2.5.1)

五、Python的类与继承 5.1 Python面向对象编程 在现实世界中存在各种不同形态的事物,这些事物之间存在各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象之间的关系描述事物之间的联系,这种思想用在编程中就是面向对象编程。 …

nodejs国内源下载

nodejs的官网下载太慢了 可以尝试网盘下载快一点 夸克网盘分享夸克网盘是夸克推出的一款云服务产品,功能包括云存储、高清看剧、文件在线解压、PDF一键转换等。通过夸克网盘可随时随地管理和使用照片、文档、手机资料,目前支持Android、iOS、PC、iPad。…

2024年公司加密软件排行榜(企业加密软件推荐)

在信息时代,企业数据安全至关重要,防止数据泄露和未授权访问是首要任务之一。以下是2024年备受好评的企业加密软件排行榜: 固信加密软件https://www.gooxion.com/ 1.固信加密软件 固信加密软件是新一代企业级加密解决方案,采用先…

【网络架构】lvs集群

目录 一、集群与分布式 1.1 集群介绍 1.2 分布式系统 1.3 集群设计原则 二、LVS 2.1 lvs工作原理 2.2 lvs集群体系架构 ​编辑 2.3 lvs功能及组织架构 2.4 lvs集群类型中术语 三、LVS工作模式和命令 3.1 lvs集群的工作模式 3.1.1 lvs的nat模式 3.1.2 lvs的dr模式 …

胶质瘤的发病原因及诊断方式有哪些?

胶质瘤,这个听起来有些陌生的名词,实际上是一种起源于神经胶质细胞的常见脑肿瘤。它的发病原因复杂,涉及遗传、环境、年龄及感染等多种因素。 首先,遗传因素在胶质瘤的发病中占据一席之地。某些遗传性疾病,如结节性硬化…

3Dmax模型渲染时的常见问题与解决方法

3Dmax是一个广为人知的三维建模工具,它在建筑、电影制作和游戏开发等多个领域都有着广泛的应用。尽管如此,在进行3Dmax模型渲染的过程中,用户可能会遇到一些常见问题。本文将提供这些常见问题的解决方案,以帮助用户提高渲染效率和…

BIO、NIO编程深入理解与直接内存、零拷贝

网路编程基本常识 一. Socket 什么是Socket Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。它提供了应用层进程利用网络协议交换数据的机制,是应用程序与网络协议栈进行交互的接口。 说白了,Socket就是把TCP/IP协议族进行封装…

JOSEF约瑟 ESRW-322打滑开关 智能运算,工作稳定

产品特点 非接触式检测:ESRW-322打滑开关采用非接触式检测方式,不会对输送带造成磨损,提高了设备的使用寿命。 高精度测量:该开关具有高精度测量能力,可检测到的打滑率范围广泛(0∽100%)&#x…

LangCell:用于细胞注释的语言-细胞预训练模型

细胞身份包括细胞的各种语义,包括细胞类型、pathway信息、疾病信息等。从转录组数据中了解细胞身份,例如注释细胞类型,是一项基础任务。由于语义是由人类赋予的,如果没有cell-label pair提供监督信号,AI模型很难有效地…

文献解读-基因编辑-第十二期|《CRISPR-detector:快速、准确地检测、可视化和注释基因组编辑事件引起的全基因组范围突变》

关键词:基因组变异检测;全基因组测序;基因编辑; 文献简介 标题(英文):CRISPR-detector: fast and accurate detection, visualization, and annotation of genome-wide mutations induced by g…