对android小程序的结论,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...
最近有个项目需求,需要改变小程序所有文字的字体。
查了资料后发现,本地加载字体文件导致小程序太大。动态加载文件,苹果真机完美,但是在安卓的真机上引入的外部字体加载会很慢,会有很明显的默认字体切换到外部字体的过程,体验极差。
最后采用小程序分包的形式完美解决,所以做下总结,希望帮助到有需要的人。
引入外部字体,已知的有两种方式。
1.本地加载。
将外部字体文件(类型为.ttf、.eot等)上传至https://transfonter.org/网站,转化为base64码的形式,然后将转化后的css文件中的64码粘贴至小程序的公共app.css样式文件中引用。
(这里注意:在网站中转换字体为64码的时候,勾选的后缀越多(如ttf、woff),生成的64码大小越大,这里不知道勾选不一样会有什么区别,我想的应该是适用的环境不一样可能就会出现一些区别,有明白的老哥希望不吝赐教。我当时为了极致小,只勾选了woff,生成了1M的64码,安卓和苹果都暂时未出现显示问题。)
引入方式为:
@font-face {
font-family: 'FZBYS';
src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAADTxgABAAAAAW4twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNA后面一长串省略。。。
(font-family:'FZBYS’中的FZBYS为变量名,可自行设置。)
引用方式为:
(不需要在css文件顶部写@import ‘…/…/…’)
page{
font-family:'FZBYS';
}
优点:1.加载方式为本地加载,加载速度快。进入小程序页面(包括安卓)字体已经被新的字体替换,不会有转变过程。
缺点:1.大部分从网上直接下载下来的源文件都较大,3-8M左右,甚至10多M,被转化的64码代码大小和字体文件差不多,所以大部分情况引入64码后,小程序大小会超过2M,导致无法上传。
解决办法:只需将自己需要改变字体的文字内容从字体源文件中"脱离"出来,减小字体文件大小,因为字体源文件中大部分复杂字和符号我们都用不到。具体方法为使用Node字体压缩插件font-spider,附上一篇font-spider使用的参考链接
https://www.jianshu.com/p/b5f9605951f5
2.动态加载
动态加载分为两种
1.css链接外部字体
在公共css样式文件中写入下面代码,然后在需要引用字体样式的css文件中使用。
引入方式为:
@font-face {
font-family:'FZBYS';
src:url('https://***.com/***/***/FZBYS.TTF') format('truetype');
}
引用方式为:
page{
font-family:'FZBYS';
}
2.js链接外部字体
引入方式为:
wx.loadFontFace({
family: 'FZBYS',
source: 'url("https://***.****.com/font/FZBYS.TTF")',
success: function (e) {
console.log(e, '动态加载字体成功')
},
fail: function (e) {
console.log(e, '动态加载字体失败')
},
})
引用方式为:
page{
font-family:'FZBYS';
}
优点:1.不需要将字体文件转化为64码,比较方便。
缺点:1.动态加载字体文件,苹果真机上完美,但是在安卓的真机上引入的外部字体加载会很慢,会有明显的默认字体切换到外部字体的过程,体验教差,特别是字体文件越大,加载的速度越慢,有些小程序页面甚至无法加载成功。
解决办法:1.将字体文件压缩小一点 2.若不在乎体验,那这个字体切换的过程也就不用在意 3.建议使用本地加载。
最后我的情况的解决办法是将小程序进行分包,如何分包可参考下面这条链接https://blog.csdn.net/weixin_44510465/article/details/89208139
分包的基本要求是将小程序的大小限制从2M扩大到8M,小程序的结构从没有包,变成由一个主包和多个子包构成,子包可以有2个、3个、4个,很多个,只要总体大小不超过8M,并且每个子包大小不超过2M。
本地加载字体文件,将已经转化成64码的字体样式放入app.wxss里后(app.wxss属于主包内,详情参考上面分享的链接),只要主包的大小不超过2M,就算成功了。
对android小程序的结论,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...相关推荐
- css3如何链如外部字体,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...
最近有个项目需求,须要改变小程序全部文字的字体. 查了资料后发现,本地加载字体文件致使小程序太大.动态加载文件,苹果然机完美,可是在安卓的真机上引入的外部字体加载会很慢,会有很明显的默认字体切换到外部 ...
- Android 框架学习5:微信热修复框架 Tinker 从使用到 patch 加载、生成、合成原理分析
这篇文章是基于内部分享的逐字稿内容整理的,现在比较喜欢写逐字稿,方便整理成文章. 文章目录 目录 Tinker 介绍 使用 TinkerApplicaition ``SampleApplicaitio ...
- 微信 android兼容性问题怎么解决方案,微信小程序兼容性问题
本文我们来谈谈微信小程序系统兼容性的那些坑. 微信小程序兼容性问题 微信小程序发布一周多了,兼容性问题,特别是 Android 平台兼容性问题特别严重.据我观察,好多小程序掉到兼容性的坑里.掉坑里不要 ...
- 微信小程序开发学习笔记001--认识微信小程序,第一个微信小程序
第一天,认识微信小程序,第一个微信小程序 1.什么是微信小程序? 是h5网页嘛?不是 微信张小龙说: 小程序是一种不需要下载安装即可使用的应用, 它实现了应用"触手可及"的梦想,用 ...
- [转]微信小程序之购物车 —— 微信小程序实战商城系列(5)
本文转自:http://blog.csdn.net/michael_ouyang/article/details/70755892 续上一篇的文章:微信小程序之商品属性分类 -- 微信小程序实战商城 ...
- 微信小程序全选,微信小程序checkbox,微信小程序购物车
微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组 1.标题titl ...
- python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...
- 微信小程序之组件 —— 微信小程序教程系列(19)
什么是组件: 组件是视图层的基本组成单元. 组件自带一些功能与微信风格的样式. 一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内. <tagname property ...
- 微信小程序的文件结构 —— 微信小程序教程系列(1)
文件结构 示例目录:HelloWorld *******************************************************分割线********************* ...
最新文章
- c语言程序设计第二版第五章课后答案甘勇,郑州工程技术学院副院长甘勇来校讲学和指导工作...
- coverage代码覆盖率测试工具:基本原理分析与使用
- mysql选出重复的字段_mysql查询表里的重复数据方法:
- Django Admin 录入中文错误解决办法
- ThreadLocal管理Connection
- RGB_D_开发征程(使用Kinect)
- UI代码练习-视图的层次关系
- golang如何生成随机数
- ArrayList 动态数组 0119
- echarts隐藏之后的显示问题
- mysql8.0.17压缩包安装教程_mysql 8.0.17 解压版安装配置方法图文教程
- android textview显示表情,在Android TextView中显示表情符号/情感图标
- Citrix 桌面云 XenApp_XenDesktop_7.15 部署系列(二)XenServer7.5安装
- IT软件开发人员必去的10个社区
- StringUtil工具类 之 字符串长度截取函数
- mysql好玩的代码_搞一些好玩的东西redis
- 学术论文的word排版
- 机器视觉的四大类应用
- matlab中在xls单元格中填充颜色,!Excel中如何根据某一列的值对整行进行颜色填充?...
- 计算机管理 未分配磁盘,磁盘显示未分配怎么办?