HarmonyOS 字体

https://developer.harmonyos.com/cn/docs/design/font-0000001157868583

通过研究用户在不同场景下对多终端设备的阅读反馈,综合考量不同设备的尺寸、使用场景等因素,同时也考虑用户使用设备时因视距、视角的差异带来的字体大小和字重的不同诉求,我们为 HarmonyOS 设计了全新系统默认的字体——HarmonyOS Sans(即鸿蒙字体)。

HarmonyOS 字体效果

通过 BILIBILI(哔哩哔哩)主站的使用效果来看,能明显发现 HarmonyOS 字体在 Windows 低分辨率pixel-ratio < 1.5屏幕上显示更加细腻。

网页加载速度的影响

如果需要全站使用同一种字体,那么我们或许需要同时加载 Regular、Medium、Bold 等不同字重的字体文件,这里给一个参考:
HarmonyOS_Sans_SC_Regular.ttf 文件大小高达 8068KB,注意,这仅仅是 Regular。
所以,如果不对字体文件进行压缩,将其作为 Web 字体是不合理的,这将极大拉缓网页加载速度,严重影响用户体验。

字体压缩

FontTools

What is this?

fontTools is a library for manipulating fonts, written in Python. The project includes the TTX tool, that can convert TrueType and OpenType fonts to and from an XML text format, which is also called TTX. It supports TrueType, OpenType, AFM and to an extent Type 1 and some Mac-specific formats. The project has an MIT open-source licence.

Among other things this means you can use it free of charge.

User documentation and developer documentation are available at Read the Docs.

如何压缩

借助以上工具,我们可以将 unicode 分为多个片段来对字体文件进行压缩:

字符集 字数 Unicode 编码
拉丁字母 0000-007F,0080-00FF等
基本汉字 20902 字 4E00-9FA5
中文字符 3002,FF1F等

我们只需要对这两万多个基本汉字进行分段即可,至于数字、拉丁字母等,其实并不会过多影响字体文件大小。

将 unicode 合理分段后,使用 fonttools subset 对字体进行压缩,命令如下:

pyftsubset ./HarmonyOS_Sans_SC_Bold.ttf --unicodes-file=./unicodes_10.txt --with-zopfli --flavor=woff2# 参数
# pyftsubset <PATH>        # 待压缩字体文件路径
# --unicodes-file=<PATH>   # unicode.txt 文件路径
# --with-zopfli            # 使用 Google 压缩算法
# --flavor=<TYPE>          # 输出字体格式

我们将 unicode 写入 unicode.txt 文件中,使用 --unicodes-file=<PATH>即可使用。
待所有字体压缩完成后,我们在 CSS 中使用 unicode-range属性来调用对应 unicode 区域的字体文件。

具体效果可参考本站 (Windows 且pixel-ratio < 1.5环境下)的字体显示情况。


字节星球 Henry 2022-07-11 未经许可 严禁转载!
https://www.bytecho.net/archives/2042.html

Web使用HarmonyOS字体的压缩方案相关推荐

  1. web socket 心跳包的实现方案

    web socket 心跳包的实现方案05/30/2010 现在网络环境错综复杂,socket心跳包是获得健康强壮的连接的有效解决方案,今天,我们就在web socket中实现心跳包方案,是的,尽管我 ...

  2. 使用 font-spider 对 webfont 网页字体进行压缩

    原文链接:使用 font-spider 对 webfont 网页字体进行压缩 随着当前 Web 技术的日新月异,网页界面内容越来越丰富,让人眼花缭乱,其中就包括了网页中的各种自定义字体. 例如,个人博 ...

  3. WEB高性能开发:HTML压缩

    WEB高性能开发:HTML压缩 [日期:2011-01-09] 来源:     作者: [字体:大 中 小] 上一篇随笔中网友 skyaspnet 问我如何压缩HTML,当时回答是推荐他使用gzip, ...

  4. web引入font字体文件太大,字体抽取

    当只有一个活动页面或者一小段文字需要引入特殊字体,字体文件往往会有十几兆或者几十兆,特别在移动端或者弱网情况下有相当差的体验,一个14M左右的文件就需要加载12秒... 所以针对一些小范围使用字体文件 ...

  5. ttf类型的字体文件压缩

    一般我们会在web项目中用到一些比较漂亮的字体,比如说fangzheng.ttf等这些字体,但是这些字段往往有好几MB,对网页不太友好,此时我们就想到把这些字体进行压缩,这里只说一下结论,font-s ...

  6. Web移动端最强适配方案总结,没想到这么好用!

    点击上方的终端研发部,右上角选择"设为星标" 一.前言 在过去的几年时间里,移动端web野蛮生长,智能机的Android阵营和IOS阵营分庭抗礼,随之产生了多个系统版本(系统版本多 ...

  7. Android中图片压缩方案详解

    如感觉排版不舒服,可移步至此处查看 图片的展示可以说在我们任何一个应用中都避免不了,可是大量的图片就会出现很多的问题,比如加载大图片或者多图时的OOM问题,可以移步到Android高效加载大图.多图避 ...

  8. Unity加载优化-将基于LZMA的ab压缩方案修改为LZ4压缩的过程

    # 观前提示 本文适合需要了解LZMA以及LZ4进行ab打包方案同学,以及会将一些资源管理的方案.如果恰好你也用xlua-framework,那就更适合你了. # 优化起因 最近新游戏在Iphone6 ...

  9. 哈工大+讯飞推出:高效预训练模型压缩方案GRAIN

    每天给你送来NLP技术干货! 来自:哈工大讯飞联合实验室 点击这里进群->加入NLP交流群 哈工大讯飞联合实验室(HFL)2022年终技术发布第三弹,推出一种结合了知识蒸馏和内部注意力裁剪的预训 ...

最新文章

  1. Unreal Engine+Houdini创造程序性游戏场景视频教程
  2. 超越YOLOv5,1.3M超轻量,高效易用,目标检测领域这一个就够了
  3. linux c open fopen freopen 文件操作函数
  4. 史上最纯洁的女孩,看到我实在被雷到了。
  5. django17:importlib应用中间件代码思想
  6. android 空白占位符,android textview空格占位符以及一些其他占位符汇总
  7. SVN创建不了资源库位置 解决方案
  8. android10适配机型华为,EMUI10适配机型进度公布 这10款机型将率先尝鲜
  9. 数据挖掘之模型选择和融合
  10. html rpc文档,HTML5 DRM 正式成为 Web 标准,百度正式开源RPC框架brpc
  11. 算法怎么就这么难?----使用欧几里得算法求两数的最大公约数
  12. 动态规划之马拉车算法(Python解法)
  13. 滚动轴承的代号表示方法
  14. 信号处理:时域和频域的关系
  15. objective-C的内存管理机制琢磨不透
  16. PEANUT-WF模块开发-HslCommunicationEx
  17. Qt之Q_OBJECT
  18. DFS/BFS+思维 HDOJ 5325 Crazy Bobo
  19. 各种RAID磁盘阵列组实际容量计算方法
  20. 动手学深度学习之锚框

热门文章

  1. oracle 11g 11.2.0.3 win32版本
  2. oracle标点符号的书写规则,用电脑顿号怎么打出来(基础标点符号使用规则详解)...
  3. 12.31黄金原油价格投资策略、黄金最新价格布局及操作指导
  4. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十二║Vue实战:个人博客第一版
  5. 渗透测试基础,初识渗透测试
  6. 极端热浪席卷欧洲,高温冲至47度!欧洲市场将迎来哪些机遇?
  7. 抑郁症、乙肝大小三阳买不了重疾险?六六六:我可以
  8. vim之补全2(完全个人定制版)
  9. JAVA组件大全复选框,选项按钮,复选方框,下拉式列表的使用介绍
  10. 正方教务抢课脚本开发,可代开发