html优化字体包,『前端开发』- 字体文件大小优化实践
这次项目中UI小姐姐要求用平方等其他字体,遂引入了这些字体,打包的时候发现,OMG,一个字体文件竟然要10M,实在不能忍,于是开始了字体文件大小的优化实践,最后变成38KB一个,还行吧。
解决思路
font-spider 字蛛 原理是通过爬取 HTML 文件以及关联的CSS,找到设置了字体的样式,再爬取相关的的字符,排序去重,最后只针对这些字符保留字体文件相应的字符,从而达到大大缩小文件体积大小的目的。
缺点 :从它的原理可易知,它的致命缺陷就是有可能无法保留js脚本动态添加的字符的字体文件,及对于页面中存在大量文字动态删减增加等情况不够友好,如果是这种情况下,建议再找别的解决方案。
打包 :存在 gulp 以及 grunt 相关插件的解决方案,也可以通过控制台输入指令来生成压缩后的字体文件
FontMin 其实这个与字蛛差不多相同,字蛛有的它都有,但值得一提的是,FontMin 还有个应用文件版本,可以通过拖动字体文件和手动输入可能存在的字符来压缩字体文件。
font-spider
gulp-font-spider
可能存在的坑!!!
当然你都用 gulp 了,肯定得先 安装 node ,把gulp相关的大概整明白(了解?)吧
需要有 python 环境 ,推荐 python 2.7 版本的
文件路径确保正确且当你运行 fontSpider 已存在
如果压缩后的字体文件出现了,但是大小没变或者变化不明显,很大可能是源字体文件的问题!!我当初一开始使用的平方字体就总是压缩后体积一点没变,这几种方法我都试了,但结果都一样,我去它们的 GitHub 上看 issue 找到了灵感,当我换了别的字体果然可以了,最后找到了个可以压缩的平方字体,遂。
安装
npm install gulp-font-spider --save-dev
复制代码
确保安装成功,缺啥再 npm install 啥
CSS
// html没什么特别的,引入CSS文件的时候路径注意就好了
@charset "UTF-8";
// 注意引入时使用相对路径
@font-face {
font-family: 'pinghei';
src: url('../../assets/font/pinghei.eot');
src:
url('../../assets/font/pinghei.eot?#font-spider') format('embedded-opentype'),
url('../../assets/font/pinghei.woff') format('woff'),
url('../../assets/font/pinghei.ttf') format('truetype'), // 只要确保运行时这个ttf文件在就好了,其它不用管
url('../../assets/font/pinghei.svg') format('svg');
font-weight: normal;
font-style: normal;
}
body {
font-family: pinghei; //使用字体
}
复制代码
gulpfile.js
/**
* 此为gulp4.0的配置文件
*/
var gulp = require('gulp'),
fontSpider = require( 'gulp-font-spider'); //字体文件优化--字蛛
/**
* fontSpider
*/
gulp.task('fontSpider', done => {
gulp
.src(buildPath.html) // 引入相应的html文件
.pipe(fontSpider({
backup: false // 不备份源字体,默认开启备份
}))
.pipe(notify({
message: "font compress done" // 完成后通知
}))
done(); //结束这个task
});
/**
* gulp 默认指令
*/
// 其实开发阶段无所谓压不压缩字体,所以开发阶段,我只是将源字体copy过去即可
/**
* gulp build
* 这里我将fontSpider这个task在最后执行,因为这样确保打包后的html和css文件都已存在了,
* 此时在针对编译后的dist里的html文件里进行筛选字体文件压缩,这样更有效
*/
gulp.task('build',
gulp.series('clean', 'styles', 'html', // 串行运行
gulp.parallel('js', 'vendor', 'copyAssets'), //并行运行
'fontSpider') //最后运行
);
复制代码
截图展示
gulp build
文件夹检查(如果开启备份,则源字体文件在.font-spider中,图中我关闭了自然没有)
html优化字体包,『前端开发』- 字体文件大小优化实践相关推荐
- 『iOS开发』 —— UITextView实现信纸效果
文章首发地址见个人博客 # 『iOS开发』 -- UITextView实现信纸效果 预览图 说明 要实现类似的效果首先想到的方法应该是给文字加下划线,但是这样的话,当文字不足一页或者不足一行的时候,后 ...
- 基于英特尔® 优化分析包(OAP)的 Spark 性能优化方案
简介: Spark SQL 作为 Spark 用来处理结构化数据的一个基本模块,已经成为多数企业构建大数据应用的重要选择.但是,在大规模连接(Join).聚合(Aggregate)等工作负载下,Spa ...
- 前端开发之字体大小px,em,rem,pt
在前端开发中尤其是响应式的开发中,字体的大小在不同的屏幕尺寸下发生变化,从而使画面更优的呈现. 下面说一下常用的字体大小的标示方式: 1:px: 这个应该是国内使用较多的单位,意思为像素.因此,其视觉 ...
- html如何添加web字体,html中字体如何实现加粗(方法介绍)_WEB前端开发,html,字体加粗...
PS五角星形状使用方法?_WEB前端开发 PS五角星形状使用方法:首先点击左侧工具栏中的"矩形工具"子选项中的"多边形工具":然后点击上方工具栏中的" ...
- 前端开发:Web性能优化有哪些方法?
Web性能优化,主要分为前端和后台两个部分性能优化,后台性能优化决定了Web能不能用,前端优化决定了其好不好用,也就是牵涉到前端用户体验和Web易用性等情况,所以前端性能与用户体验是有着极大的关联的. ...
- html 中加载字体太慢,前端解决中文字体加载慢的问题
CSS3中,使用@font-face即可加载自定义字体了. 推荐的跨浏览器 @font-face CSS 写法: /*声明 WebFont*/ @font-face { font-family: 'f ...
- 技术人的成长手册|勤思考、反内卷,史海峰关于技术人职业『高可用』的探索与实践...
经历过谷底的低迷,也有过高潮的狂欢.也许史海峰的经历和思考,能够给那些只经历过互联网繁荣.时下正在经受所谓『互联网寒冬』的年轻工程师们一些新的职业感悟. 2022 年虽然还有 3 个月,但这已经注定是 ...
- ttf字体包瘦身,ttf字体包提取指定字体,缩小ttf文件体积。
ttf字体包瘦身 注:此方法只试用于只需要少数字体的情况. 需求 做APP时出现了一个需求,应用登录页面和主页面的系统名称需要根据用户所属行政区划进行动态调节. 为了突出系统名和样式的美观,系统名在显 ...
- pink老师课堂案例:简易的ATM机,学习前端开发一定要多动手实践
一个js小案例,2021我正在学习前端开发,您呢? var operate = prompt('选择操作:\n 1.查询余额\n 2.存钱\n 3.取钱\n 4.退出');var money = 0; ...
- 『前端规范化』CSS命名规范化
CSS命名规范化 CSS命名规范化,有利于代码阅读和维护,在大型项目及团队协作开发中有着重要的意义.这里我推荐采用BEM命名规范+适当的语义理解简写.因为BEM命名常常会因为太长而被人诟病,所以适当加 ...
最新文章
- java pkcs1转pkcs8_.NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接...
- Seven Microservices Anti-patterns
- 从卖冰箱到卖年夜饭,看海尔智家生态品牌新成果
- leetcode 551. 学生出勤记录 I(Java版)
- Java EE 8 MVC:控制器的详细介绍
- ubuntu 14.04 LTS(64bit) Anaconda2 + Theano(1.0.2) + Keras安装
- 分组交换技术HDLC配置简述
- NYOJ259 - 茵茵的第一课
- iOS 9 Safari广告拦截插件
- 计算机图形学课本pdf,计算机图形学教材.pdf
- 用c语言输出一个菱形
- 国内外20多个科研论文下载神器(科研小白成长记 番外篇)
- oracle 取现在的时间,Oracle 获取当前日期及日期格式
- 芝士合集(以便查看)
- 进化算法EA——多对象优化遗传(MOO),差分进化法(DE),遗传编程(GP)
- springboot整合liquibase(补充)
- 线下店迎来“文艺复兴”,三只松鼠哪里寻“独门妙方”?
- 日本小学生入校时校长说的话
- 持续不断更新中... 自己整理的一些前端知识点以及前端面试题,包括vue2,vue3,js,ts,css,微信小程序等
- leetcode--最长回文串(C语言)