为理解决这个问题,CSS 引入 web 字体,许可浏览器从做事器下载字体,下载完成后再重新渲染字体。

字体文件格式

利用 web 字体前,须要理解常用的字体文件格式。

TTF 字体文件,即 TrueType 字体,是由苹果和微软在 20 世纪 80 年代末开拓的字体标准。
它是 macOS 和 Windows 操作系统利用最广泛的字体格式。

html字体为宋体若何在网页中应用 web 字体 Bootstrap

OTF 字体文件,即 OpenType 字体,是一种可缩放的打算机字体格式。
它建立在 TrueType 根本上,是微软的注册牌号。
OpenType 字体目前在紧张的打算机平台上广泛利用。

WOFF 字体文件,即 The Web Open Font Format 字体,是一种用于网页的字体格式,2009 年开拓,如今是 W3C(万维网同盟)的推举标准。
WOFF 实质是 OpenType 或 TrueType 字体,但是经由压缩并附加额外的元数据。
在带宽受限的网络中,WOFF 能更好的支持从做事器到客户真个字体传输。

WOFF 2.0 字体文件,比较于 WOFF,供应了更高的压缩效率。

SVG 字体,将 SVG 用作显示文本时的字形。
SVG 1.1 规范定义了一个字体规范,许可在 SVG 文档中创建字体。

EOT 字体文件,即 Embedded OpenType Fonts 文件,是微软设计的一种用于网页的嵌入式字体,它是 OpenType 字体的紧凑形式。

不同字体格式的浏览器兼容性下图所示:

不同字体格式的浏览器兼容性,截图数据来自 w3schools.com

利用自定义字体

利用 @font-face CSS 指令定义自定义字体。
利用前须要把字体文件放在做事器目录,然后定义新的字体名称,并指向字体所在位置。

以京華老宋体为例,这是一款可以免费商用的中笔墨体。
下载字体文件后,放到和 index.html 同级的目录,重命名为 jh-song.ttf。

下载字体文件

在 @font-face 指令内,利用 font-family 定义字体名称,src 属性定义字体文件路径。

定义 web 字体

然后,像利用普通字体一样,利用自定义字体样式:

利用 web 字体

完全 HTML 代码如下:

完全的 HTML 代码

浏览器显示效果如下:

web 字体显示效果

转换字体格式

在开拓者工具可以看到,上面中笔墨体的 ttf 文件体积高达 36.7MB。

考试测验转换为 woff 格式,看看体积会有什么变革。
我们在这里利用一个 Node.js 工具 ttf2woff。

ttf2woff 的自我介绍

实行命令,创造 woff 文件比 ttf 小了 11MB 旁边。

转换字体文件格式

@font-face 指令的 src 属性支持多个字体格式,浏览器会根据自身支持情形,从前今后挨个匹配,终极渲染的字体是首个命中的字体。
因此,一样平常把新字体放前面,旧字体放后面兜底。

利用多个字体文件格式

此时,浏览器会下载 .woff 文件:

浏览器自动识别下载 woff 字体

24MB 的字体依然不小,如果希望连续优化字体大小,可以利用百度前端团队出品的 fontmin 工具。
它的事理是只提取用到的字符信息,重新天生新的字体文件。

Fontmin 自我介绍

Fontmin 的例子

参考资料CSS Web Fonts,https://www.w3schools.com/css/css3_fonts.asp@font-face,https://developer.mozilla.org/en-US/docs/Web/CSS/@font-faceThe Web Open Font Format (WOFF), https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_fonts/WOFFTracking the History of CSS Fonts,https://css-tricks.com/tracing-history-css-fonts/,by Robin Rendle, 2017-05-11京華老宋体(已更新2.0),https://zhuanlan.zhihu.com/p/637491623,特里王,2024-04-07Converting TTF fonts to WOFF2 (and WOFF),https://dev.to/benjaminblack/converting-ttf-fonts-to-woff2-and-woff-3f5b,by Benjamin Black, 2018-09-11fontello/ttf2woff, https://github.com/fontello/ttf2woffecomefe/fontmin,https://github.com/ecomfe/fontmin