网站首页 > 技术文章 正文
背景
高保真数据可视化大屏页面,设计部同学在提供UI图的同时还会提供UI图中使用到的字体文件,例如:思源字体、微软雅黑等类型的字体。前端需要在CSS中定义自定义字体即可和UI图字体保持一致。但是,通常来说UI提供的字体包都很大,大都在十几M,加载非常缓慢,严重影响用户体验。toB产品没有CDN,只能从字体文件本身去做优化操作。
优化策略:
- 使用压缩率更高的字体类型(推荐woff2格式)。
- 删除生僻字以及不常见的特殊字符。
基础环境
为了避免因为基础环境不一致而产生意料之外的问题,基础环境要尽可能保持一致。
依赖 | 版本 | 说明 |
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个左右,删除特殊字符以及生僻字,可以大大减小字体文件的体积。
# 新建 font.html
# 在 div.text3 元素中添加常见字体
# 执行以下命令
font-spider ./font.html
# 输出结果可查看字体已经被压缩切大小只有 1039.424 KB
ttf格式转woff2格式
源文件大小8.6M,经过删除生僻字以及转为woff2格式后文件大小为552KB。
font-convert --pathIn='./SourceHanSansCN-Bold.ttf' --pathOut='./SourceHanSansCN-Bold.woff2'
验证
从上图可以看出,字体压缩比确实是高达93%,对比网络加载速度,同样6M带宽字体文件由原来的18s到目前的500ms,用户访问网页带来飞升一般的体验。
猜你喜欢
- 2024-10-11 Windows XP、ClearType 和微软雅黑字体的那点事
- 2024-10-11 前后端数据交互(四)——fetch 请求详解
- 2024-10-11 小白总结:前端HTML基础知识点(1)——元素总结
- 2024-10-11 领导给了你大块文字,晦涩难懂,还要有设计感,快来解救我吧!
- 2024-10-11 高薪前端必备,后端工程师带你学canvas,第一节:图片上绘制字体
- 2024-10-11 零基础教你学前端——66、CSS谷歌字体和Icon图标
- 2024-10-11 「前端添加水印」你真的了解全面吗?
- 2024-10-11 前端OCR图片文字提取功能 #ocr识别
- 2024-10-11 一起学 pixijs(4):如何绘制文字 pic字设怎么上色
- 2024-10-11 HTML网页制作常用标签及说明——前端开发入门
你 发表评论:
欢迎- 501℃几个Oracle空值处理函数 oracle处理null值的函数
- 498℃Oracle分析函数之Lag和Lead()使用
- 495℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 482℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 478℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 473℃【数据统计分析】详解Oracle分组函数之CUBE
- 454℃Oracle有哪些常见的函数? oracle中常用的函数
- 452℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Directus 火了!无代码 SQL 数据的协作应用利器!
- PHP和NodeJS的代码执行效率比较(php和nodejs的区别)
- 工商银行获得发明专利授权:“基于数据库映射动态接口的前端页面应用开发方法及装置”
- FAISS和Chroma:两种流行的向量数据库的比较
- 什么是数据库的索引?(数据库索引的定义和作用)
- Vercel和Neon“首次”推出用于前端云的无服务器SQL数据库
- 记一次前端逻辑绕过登录到内网挖掘
- 学Access好还是MySQL好?(access与mysql的语句区别)
- 惬意!清晨慢品 HTML canvas 标签题,面试知识轻松 get
- 前端实现知识图谱-force(d3.js)(前端知识树)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)