在先容 font-display 之前,先理解一下什么是 Web Fonts。在以前利用 CSS 指定字体时只能利用用户电脑本地上现有的字体,而由于每个用户电脑上的字体可能都不一样,以是能用的基本上便是操作系统内置的一些字体,例如微软雅黑,宋体,苹果苹方,这些也叫做安全字体(Web Safe Fonts)。为了使字体显斧正常,我们一样平常会通过 font-family 属性同时指定多个字体,如果第一个字体没有在操作系统中找到,就会利用下一个后备字体( Fallback Font ),以此类推:
{font-family: \"大众PingFang SC\"大众, \"大众Microsoft Yahei\公众, sans-serif;}
后来,CSS 开始支持 @font-face 这个指令,可以加载自定义的字体文件,这个时候可以把字体随网站一起发布,用户在浏览网站的时候,会下载 @font-face 中指定的字体。例如下边的代码加载了 fonts 目录下的 Raleway 字体:
@font-face {font-family: 'Raleway';font-style: normal;font-weight: 500;src: url(/fonts/raleway.woff2) format('woff2');}
src 属性用于指定字体的位置,个中 url() 函数也接管网络地址,来加载第三方供应的字体文件,这样也催生了像 Google Fonts 这样的云字体做事。不过,基本上只有英笔墨体才适宜 Web Fonts,由于它只有 26 个英笔墨母外加数字,体积小,适宜在网络上传输,而中文光常用的就有 3000 个字符,以是一样平常只利用操作系统自带的,不过现在也有字体做事会根据网站上所利用的笔墨去动态的天生字体文件。
浏览器加载 Web Fonts 的期间
浏览器加载 Web Fonts 时按顺序会有三个期间:
至于每个期间有多长,是根据 font-display 属性的值来确定的。
font-display 先容
font-display 确切的说不是 CSS 属性,而是专用于 @font-face 指令的描述符,它可以取如下几个值:
那么在理解 font-display 之后,那么我们该当不丢脸出来,对付大部分情形该当把它的值设置为 swap ,这样在加载网络字体期间,利用后备字体进行渲染,加载完成之后在更换为指定的网络字体。
运用
现在利用谷歌的 Web Fonts 字体做事已经不须要我们用手动去写 @font-face 指令了,而是通过调用它的接口,直接返回一段 @font-face 指令 CSS 代码,同时它也支持 display=swap 参数,来让返回的 CSS 代码中,设置 font-display 为 swap ,这个可以从我的网站上看到:
/ https://fonts.font.im/css?family=Raleway:500,700&display=swap /@font-face {font-family: 'Raleway';font-style: normal;font-weight: 500;font-display: swap;src: url(https://fonts.gstatic.font.im/s/raleway/v19/1Ptug8zYS_SKggPNyCAIT4ttDfCmxA.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}/ ... /
从 caniuse.com[1] 网站上可以查到,这个属性在各个浏览器中的支持程度为(最低版本):
生于2001年的《程序员》曾陪伴了无数开拓者发展,影响了一代又一代的中国技能人。时隔20年,《新程序员》带着环球技能大师深邃思考、精良开拓者技能创造等深度内容回来了!
同时将全方位为所有开拓者呈现国内外核心技能生态体系全景图。扫描下方小程序码即可立即订阅!