纯前端字体文件优化实践,字体文件压缩93%!

这篇具有很好参考价值的文章主要介绍了纯前端字体文件优化实践,字体文件压缩93%!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

字体压缩,前端,css,性能优化

背景

高保真数据可视化大屏页面,设计部同学在提供UI图的同时还会提供UI图中使用到的字体文件,例如:思源字体、微软雅黑等类型的字体。前端需要在CSS中定义自定义字体即可和UI图字体保持一致。但是,通常来说UI提供的字体包都很大,大都在十几M,加载非常缓慢,严重影响用户体验。toB产品没有CDN,只能从字体文件本身去做优化操作。

优化策略:

  1. 使用压缩率更高的字体类型(推荐woff2格式)。
  2. 删除生僻字以及不常见的特殊字符。

基础环境

为了避免因为基础环境不一致而产生意料之外的问题,基础环境要尽可能保持一致。

依赖

版本

说明

node.js

14.21.2

推荐14lts

@hayes0724/web-font-converter

1.0.5

常见字体转换

font-spider

1.3.5

过滤字体数据

ttc2ttf

1.0.96

ttc转ttf格式,@hayes0724/web-font-converter的补充工具。

安装压缩工具

npm install -g font-spider ttc2ttf @hayes0724/web-font-converter

字体文件转换为ttf格式

源文件:思源黑体.otf

font-spider 只压缩ttf格式的字体文件,所以要先将otf转ttf

如果源字体文件是 ttc 格式则可以通过 ttc2ttf 转为 ttf 格式

# 源字体文件 otf 格式
font-convert --pathIn='./SourceHanSansCN-Bold.otf' --pathOut='./SourceHanSansCN-Bold.ttf'

# 源字体文件 ttc 格式
# 在 msyhsb001.ttc 文件目录下执行
ttc2ttf ./msyhsb001.ttc ./

压缩字体文件

字体文件体积大的原因主要是中文有上万个字体,可是常见的中文字体只有3000个左右,删除特殊字符以及生僻字,可以大大减小字体文件的体积。

字体压缩,前端,css,性能优化

# 新建 font.html
# 在 div.text3 元素中添加常见字体
# 执行以下命令
font-spider ./font.html

# 输出结果可查看字体已经被压缩切大小只有 1039.424 KB

字体压缩,前端,css,性能优化

ttf格式转woff2格式

源文件大小8.6M,经过删除生僻字以及转为woff2格式后文件大小为552KB。

font-convert --pathIn='./SourceHanSansCN-Bold.ttf' --pathOut='./SourceHanSansCN-Bold.woff2'

验证

从上图可以看出,字体压缩比确实是高达93%,对比网络加载速度,同样6M带宽字体文件由原来的18s到目前的500ms,用户访问网页带来飞升一般的体验。文章来源地址https://www.toymoban.com/news/detail-840294.html

到了这里,关于纯前端字体文件优化实践,字体文件压缩93%!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端工程化实战:React 模块化开发、性能优化和组件化实践

    前端工程化实战是指通过组织工作流程、使用工具和技术来提高前端开发效率和质量的一种方法。常见的前端工程化实践包括模块化开发、自动化构建、代码检查和测试、性能优化等。下面将简要介绍模块化开发、性能优化和组件化实践。 模块化开发 在 React 中实现模块化开

    2023年04月10日
    浏览(72)
  • 前端食堂技术周刊第 96 期:2023 CSS 状态、Nuxt 3.7、TypeScript 5.2、eBay 性能优化、贝塞尔曲线

    美味值:🌟🌟🌟🌟🌟 口味:冰镇黑乌龙 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下上周的技术资讯。 Nuxt 3.7 发布,新版 CLI、原生 Web Stream 和 Response、HTML 渲染优化、实验性支持 async context。 pnpm v

    2024年02月11日
    浏览(42)
  • Nginx(动静分离、分配缓冲区、资源缓存、防盗链、资源压缩、IP黑白名单、大文件传输配置、跨域配置、高可用、性能优化)

    首先通过SpringBoot+Freemarker快速搭建一个WEB项目:springboot-web-nginx,然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下: index.ftl页面 从响应中获取了port输出 nginx.conf配置文件修改 至此,所有的前提工作准备就绪,紧接着再启动Nginx,然后再启动两个web服务,第一个

    2024年02月09日
    浏览(42)
  • 前端-CSS 字体和文本样式

    字体大小 字体粗细 字体样式 字体系列 文本缩进 取值 数字 + px 数字 + em(推荐:1em=当前标签的 font-size 大小) 文本水平对齐方式 内容居中需要给父元素设置居中属性 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ENfm2r2-1688123416662)(https://note.youda

    2024年02月11日
    浏览(122)
  • 2.前端笔记-CSS-字体属性

    CSS使用font-family属性定义文本的字体系列 建议 :使用英文写字体的属性值,尽量使用系统默认自带字体,保证在任何用户的浏览器都可以显示 微软雅黑-Microsoft YaHei 说明: font-family可以同时赋多个属性值的原因是:如果用户电脑未安装第一种字体,就依次类推用其他字体进行

    2024年02月06日
    浏览(43)
  • 【Web前端开发基础】CSS3之Web字体、字体图标、平面转换、渐变

    1.1 Web字体概述 每种字体都对应着相应的字体文件,没有 @font-face 规则之前,客户端是否能够正确显示 fontfamily 规定的字体,是由该字体的文件是否预装在客户端决定的。而 @font-face 规则可以将字体文件存放在服务器端,渲染页面时客户端请求从服务器端下载改字体文件进行

    2024年01月25日
    浏览(63)
  • nginx开启Gzip压缩,Vue性能优化之使用gzip压缩打包

    不管是vue项目还是react项目在使用webpack打包之后都会生成一个动辄一两兆甚至更大的js文件,在某些情况下严重影响项目性能,打开页面的时候白屏时间会很长,本文将介绍如何使用gzip压缩打包,主要是nginx部署的配置,非常重要,我查阅了很多文章基本都没用说清楚甚至错

    2024年02月02日
    浏览(44)
  • 【零基础学web前端】CSS学习,字体属性,文本属性,背景属性,圆角矩形属性

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们了解了CSS引入方式,CSS基础选择器,CSS复合选择器,今天我们继续学习CSS的相关知识点.💞💞 🧑个人主页:良辰针不戳 📖所属专栏:零基础学web前端 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的

    2024年02月05日
    浏览(80)
  • CSS笔记(黑马程序员pink老师前端)选择器,字体,文本属性,Emmet语法,元素显示模式,CSS背景

    选择器分为基础选择器和复合选择器两大类。 基础选择器 包括:标签选择器、类选择器、id选择器和通配符选择器。 多类名 可以把一些标签元素共同的样式放到一个类里面。这些标签都可以调用这个公共的类,然后再调用自己独有的类。 复合选择器 基础选择器的组合.包括后

    2024年02月09日
    浏览(61)
  • 【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

    序列化和反序列化 序列化就是指把对象转换为字节码; 对象传递和保存时,保证对象的完整性和可传递性。把对象转换为有字节码,以便在网络上传输或保存在本地文件中; 反序列化就是指把字节码恢复为对象; 根据字节流中保存的对象状态及描述信息,通过反序列化重建

    2024年01月22日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包