uniapp加载第三方字体方案对比(附原生微信小程序方案)

官方文档

uniapp文档

https://zh.uniapp.dcloud.io/api/ui/font.html#loadfontface

微信小程序文档

https://developers.weixin.qq.com/miniprogram/dev/api/ui/font/wx.loadFontFace.html

下载字体包

我这里使用的是https://www.fonts.net.cn/
需要注意商用授权的问题哦

引入方案

限制
微信小程序限制

在这里插入图片描述

uniapp的限制

在这里插入图片描述

方案对比
优点缺点
方案1方便,下载下来直接能够使用小程序不支持使用本地文件
方案2不占文件大小需要服务器支持,字体文件太大不能用,安卓没有效果
方案3不需要服务器支持文件太大不能用,而且不美观
方案4(推荐!)没有兼容性问题比较麻烦,需要有https,请求头有限制(但是这个我没有特意处理也是ok的),需要配置开发者后台
方案1:CSS本地加载

(如/static/fonts),然后在app.vuestyle中引入

@font-face {
    font-family: my-font;
    src: url('~@/static/my-font.ttf');
}
方案2:CSS远程加载

app.vuestyle中引入

@font-face {
    font-family: my-font;
    src: url('https://XXXXX/font.ttf');
}
方案3:转换为base64,然后通过css引入

用工具将ttf文字文件,转成base64形式,并通过css引入

可以使用这个网站https://www.giftofspeed.com/base64-encoder/

app.vuestyle中引入(或者新建一个css文件,然后app.vue种进行import也可以)

@font-face {
    font-family: my-font;
	src: url(data:application/font-ttf;charset=utf-8;base64,YOUR BASE64 STRING HERE) format('truetype');
}

或者

@import '~@/static/font/font-name.css';
方案4:使用uni.loadFontFace()

注意!!!:官网说这个api在app.vueonLoad生命周期中调用

但是我调用之后,根本没效果,success fail complete回调都不触发

最后各种尝试,终于在页面文件中的onLoad调用是生效的

uni.loadFontFace({
  family: 'my-font',
  source: 'url("https://xxx.ttf")',
  success() {
      console.log('success')
  }
})

页面使用

就像正常字体一样使用即可

.title {
	font-family: my-font;
}

字体包压缩(这里提供2种自用的方案)

提取常用的几千个字

这种用于原先的字体包就不大的(大概减少40-50%

https://github.com/DeronW/minify-font

比如我压缩了2个字体

  1. 7.09MB => 3.22MB
  2. 1004.46KB => 677.58KB
手动指定需要哪些字

这种适用于用到的文字很少的情况

https://juejin.cn/post/7161359760023879693

遇到的问题

在这里插入图片描述

本地的开发者工具可以查看,但是体验版和真机调试不可以

服务器的链接需要是https

苹果手机可以,但是安卓手机不可以

cors跨域问题,可以参见这篇文章 https://blog.csdn.net/weixin_44786530/article/details/134965082

  1. 需要在微信小程序的开发者后台 => 开发管理 => 服务器域名 => downloadFile合法域名添加字体文件所在的服务器域名

  2. 配置nginx跨域

    location ~ .*\.(eot|otf|ttf|woff|woff2|svg)$
    {
    add_header Access-Control-Allow-Origin *;
    }
    
  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将原生微信小程序转化为uniapp项目,您需要完成以下步骤: 1. 下载并安装uni-app插件 在HBuilderX中,您需要下载并安装uni-app插件,以便将微信小程序转化为uniapp项目。打开HBuilderX,在左侧的插件栏中找到uni-app插件并进行安装。 2. 导入微信小程序项目 在HBuilderX中,选择文件->导入->从微信小程序导入。选择您要导入的微信小程序项目的根目录,并按照提示进行导入。 3. 调整项目结构 导入的微信小程序项目结构与uniapp项目结构不同。您需要调整项目文件夹结构,以符合uniapp项目的结构要求。具体来说,您需要将微信小程序项目中的.wxml文件移到pages文件夹下,并更名为.vue文件;将.wxss文件重命名为.vue文件,并将其放置在与.vue文件同级的目录下;将.js文件中的Page改为Vue。当您完成了这些操作后,您的项目应该符合uniapp项目的结构要求。 4. 编辑代码 在HBuilderX中,打开你的uniapp项目,找到你转换后的.vue文件,对你的代码进行修改,以便它可以运行并在手机上显示。 5. 运行项目 在HBuilderX中,点击运行按钮,选择您的手机或模拟器,并运行项目。您应该能够在设备上看到您的uniapp项目与微信小程序项目具有相同的功能和界面。 请注意,转化微信小程序uniapp项目并不是一次性的,可能需要对您的代码进行多次修改和调整,以确保它能够运行在uniapp平台上。但是,一旦您完成了转换,您的uniapp应用就可以在多个平台上运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值