语法
@font-face { font-properties }
@font-face 规则示例:
<!DOCTYPE html> <html> <head> <title>Title of the document</title> <style> @font-face { font-family: 'myFont'; src: url('webfont.eot'); /* IE9 Compat Modes */ src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('webfont.woff2') format('woff2'), /* Super Modern Browsers */ url('webfont.woff') format('woff'), /* Pretty Modern Browsers */ url('webfont.ttf') format('truetype'), /* Safari, Android, iOS */ url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */ } div { font-family: myFont, sans-serif; } </style> </head> <body> <h2>@font-face example</h2> <div> @font-face CSS at-rule 指定用于显示文本的自定义字体; 可以从远程服务器或者用户计算机上本地安装的字体加载字体。 如果提供 local() 函数,指定要在用户计算机上查找的字体名称,并且用户代理找到匹配项,则使用该本地字体。 否则,下载并使用使用 url() 函数指定的字体资源。 </div> <p> @font-face at-rule Jan 不仅可以在 CSS 的顶层使用,还可以在任何 CSS 条件组 at-rule 中使用。 </p> </body> </html>
CSS @font-face Rule 属性值说明
Font 描述符 | 价值 | 描述 |
---|---|---|
font-family | 名称 | 它定义了字体的名称,它是一个要求。 |
src | URL. | 它定义了将下载字体的URL,并且它是一个要求。 |
font-stretch | 正常浓缩超浓缩超级浓缩半浓缩 explably 超展开 | 它定义了字体将如何延长。其默认值是正常的,它是可选的。 |
font-style | 正常的斜体斜 | 它定义了字体如何样式。其默认值是正常的,它是可选的。 |
font-weight | 普通股份 900 | 它定义了字体粗体。其默认值是正常的,它是可选的。 |
unicode-range | unicode范围 | 它定义了字体支持的Unicode字符的范围。其默认值为u + 0-10ffff,它是可选的。 |
OTF/TTF
WOFF 是为响应 OpenType 字体和 TrueType 字体而创建的,因为这些格式很容易(并且非法)被复制。
但是,OpenType 功能可能会引起很多设计者的兴趣(例如连字)
SVG/SVGZ
可缩放矢量图形(字体)是字体的矢量重新创建,使其文件大小更轻,非常适合移动使用。
它是 Safari for iPhone 4.1 及以下版本允许的唯一格式。
SVGZ 是 SVG 的压缩版本。
CSS @font-face 是一个规则,它允许网页设计师定义在线字体以在他们的上显示文本。
因此,网页设计师将不再需要使用“网络安全字体”。
我们必须首先在新的@font-face 规则中为字体定义一个名称(如 myFirstFont),然后指向字体文件。
每个浏览器都有自己的格式。
我们使用 ttf、otf、eot、svg、svgz、woff、woff2 格式。
WOFF/WOFF2
Web Open Font Format,为在 Web 上使用而创建并由 Mozilla 与其他组织一起开发,WOFF 字体通常比其他格式加载更快,因为它们使用 OpenType (OTF) 和 TrueType (TTF) 字体使用的结构的压缩版本. WOFF2是新一代的WOFF,压缩性更好。
在使用自定义字体时,我们应该考虑以下几点:
- 文件大小。建议使用较轻版本的选项。
- 字符集限制。我们可以限制字体集以仅加载使用的字体。
- 小屏幕的系统字体。解决方案之一是在使用@media 加载自定义字体时定位更大的屏幕。
初始值 | 取决于浏览器。 |
---|---|
应用于 | 所有元素。它还适用于伪元素::first-letter 和 ::first-line。 |
继承 | 可继承 |
可动画的 | 无效 |
版本 | CSS3. |
DOM 语法 | object.Style.fontFamily =“Verdana,Sans-Serif”; |
EOT
微软(@font-face 的原始创新者)在 15 年前创建的 Embedded Open Type 格式是 IE8 及以下版本在使用 @font-face 时唯一能识别的格式。
浏览器支持
最深入的浏览器支持
这是支持最深的方法。
在任何样式之前,我们应该将 @font-face 规则添加到样式表中。
@font-face { font-family: 'MyWebFont'; src: url('webfont.eot'); /* IE9 Compat Modes */ src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('webfont.woff2') format('woff2'), /* Super Modern Browsers */ url('webfont.woff') format('woff'), /* Pretty Modern Browsers */ url('webfont.ttf') format('truetype'), /* Safari, Android, iOS */ url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */ }
然后,它用于按以下方式设置元素的样式:
body { font-family: 'MyWebFont', Fallback, sans-serif; }
浏览器支持的实际水平
由于 WOFF 和 WOFF2 是常用的,我们可以使用以下内容:
@font-face { font-family: 'MyWebFont'; src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); }
超级渐进式浏览器支持
如果我们正在研究 WOFF,可以预期 WOFF2 可以在某个时候使用:
@font-face { font-family: 'MyWebFont'; src: url('myfont.woff2') format('woff2'); }
替代技术
在某些情况下,最好使用托管字体。
这是由 Google Fonts 提供的,作为使用其字体的一种方式。
在以下代码中,@import 用于从 Google Fonts 加载字体:
@import url(//fonts.googleapis.com/css?family=Open+Sans);
然后它可以用于样式元素:
body { font-family: 'Open Sans', sans-serif; }
托管服务可能具有优势。
它可能会包含字体文件的所有变体,提供深度的跨浏览器兼容性,并且不需要我们自己托管文件。
@import url(//fonts.googleapis.com/css?family=Open+Sans); body { background: #efefef; font-family: 'Open Sans', sans-serif; font-size: 16px; line-height: 24px; padding: 50px; }
同样,样式表可以链接到 HTML 文档的 <head> 中的相同资产,而不是 CSS。
<link href='//fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
然后,元素可以像其他方法一样设置样式:
body { font-family: 'Open Sans', sans-serif; }
同样,@font-face 规则被导入,但它们被添加到 HTML <head>:
body { background: #efefef; font-family: 'Open Sans', sans-serif; font-size: 16px; line-height: 24px; padding: 50px; } h1 { font-size: 30px; line-height: 45px; font-family: 'Open Sans', sans-serif; }
使用 Google 字体的 @font-face 规则示例:
<!DOCTYPE html> <html> <head> <title>Title of the document</title> <link href="https://fonts.googleapis.com/css?family=Courier+Prime:400,700&display=swap" rel="stylesheet"> <style> h2{ font-family: 'Courier Prime', monospace; font-weight:700; } div { font-family: 'Courier Prime', monospace; } p{ font-family: 'Courier Prime', monospace; } </style> </head> <body> <h2>@font-face example</h2> <div> @font-face CSS at-rule 指定用于显示文本的自定义字体; 可以从远程服务器或者用户计算机上本地安装的字体加载字体。 如果提供 local() 函数,指定要在用户计算机上查找的字体名称,并且用户代理找到匹配项,则使用该本地字体。 否则,下载并使用使用 url() 函数指定的字体资源。 </div> <p> @font-face at-rule Jan 不仅可以在 CSS 的顶层使用,还可以在任何 CSS 条件组 at-rule 中使用。 </p> </body> </html>