但这个方法也不是绝对的好方法,它只适合一些小型字体文件,例如上面提到的使用font-spider
提取后的字体文件,并且该字体文件足够?。蛭痔逦募狟ase64字符串往往会增加体积 。
一般来讲它有以下缺点:
- 字体文件是压缩的二进制对象 , 编码为 Base64 字符串会显着增加大小 。CSS 包的 gzip 或 brotli 压缩并不能完全弥补这种膨胀 。
- 字体将被发送到每个浏览器,即使有的浏览器不能使用
- 字体很少更改,但 CSS 经常更改 , 这将降低字体的缓存效率 , 因为每次 CSS 更改都会使整个包无效
- 膨胀 CSS 大小几乎肯定会延迟页面渲染
- ascent-override (%) : 覆盖分配给上升器的大小
- descent-override (%) : 覆盖分配给下降者的行高
- line-gap-override (%) : 覆盖行间距
- advance-override (#) : 为每个字符设置一个额外的提前量,以帮助匹配行宽并防止单词溢出
这四个描述符的组合允许我们通过告诉浏览器在下载 Web 字体之前字符将占用多少空间来覆盖备用字体的布局以匹配 Web 字体 。
f-mods
只真正修改垂直间距和定位 。这意味着仍然需要处理字符间距和字母间距 , 否则可能会在不同的点出现断行的单词 , 从而导致元素高度发生变化 , 从而导致布局发生变化 。但是@font-face 声明中没有letter-spacing
andword-spacing
属性 , 因此我们必须在主体或元素上声明 。@font-face { font-family: custom-font; src: url("./public/fonts/汉仪旗黑.woff2");}@font-face { font-family: fallback-font; src: local(Arial); ascent-override: 100%; descent-override: 20%; line-gap-override: normal; advance-override: 10;}/* 这些具体数值因字体而已,需要按照自己的字体进行计算调整*/body { font-family: custom-font, fallback-font;}.content { letter-spacing: -1.1px; word-spacing: -0.2px;}总结总之,如果浏览器没有及时获取网络字体,并且可以应用
font-display: optional
到网络字体,让浏览器以备用系统字体呈现来防止布局偏移,否则的话就只能优化我们的字体以尝试在浏览器需要它们之前将它们获取到浏览器:- 使用woff2最小化文件大小
- 优化字体文件
- 加载更少的字体
- 预加载关键字体
- 在CDN上托管字体文件
- 【如何避免由 Web 字体引起的布局偏移】使用 f-mods 减少字体交换的影响
推荐阅读
- Flask框架:如何运用Ajax轮询动态绘图
- 小学生暑假如何赚钱(暑假该如何挣钱)
- 34 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取微信小程序的包-上篇
- 开小学生托管班真能赚钱吗如何做呢(开一家小学生托管班流程有哪些)
- 小学生如何赚零花钱(学生一周20块攒钱大法)
- 小学生如何挣钱攒钱(小学生如何攒钱到5000三个月)
- 小学生如何快速赚钱,给自己补贴些生活费(学校赚钱小妙招)
- 天涯明月刀捏脸数据如何导入导出(天涯明月刀天香捏脸数据)
- 原神如何去雷神的岛屿(原神如何上雷神岛)
- 5.4雷神岛怎么去(如何快速到达雷神岛)