网页字体
在本模块的第一篇文章中,我们探讨了可用于样式化字体和文本的基本 CSS 功能。在本文中,我们将更深入地探讨网页字体。我们将了解如何将自定义字体与你的网页一起使用,以便进行更多样化、定制化的文本样式。
先决条件 | HTML 基础(学习 HTML 简介),CSS 基础(学习 CSS 简介),CSS 文本和字体基础知识。 |
---|---|
目标 | 学习如何将网页字体应用于网页,使用第三方服务或编写你自己的代码。 |
字体系列回顾
正如我们在 基本文本和字体样式 中所看到的,应用于 HTML 的字体可以使用 font-family
属性进行控制。这接受一个或多个字体系列名称。在显示网页时,浏览器会遍历字体系列值的列表,直到找到在其运行的系统上可用的字体。
p {
font-family: Helvetica, "Trebuchet MS", Verdana, sans-serif;
}
这个系统运行良好,但传统上网页开发人员的字体选择是有限的。只有少数字体可以保证在所有常见系统上可用,即所谓的 网页安全字体。你可以使用字体栈指定首选字体,然后是网页安全字体,最后是默认系统字体。但是,这会增加你的工作量,因为需要进行测试以确保你的设计在每种字体下都能正常工作。
网页字体
但是有一个非常有效的替代方法。CSS 允许你指定可从网页下载的字体文件,这些字体文件会随着你的网站一起下载。这意味着任何支持此 CSS 功能的浏览器都可以显示你选择的字体。太棒了!所需的语法如下所示
首先,在 CSS 的开头有一个 @font-face
规则集,它指定要下载的字体文件。
@font-face {
font-family: "myFont";
src: url("myFont.woff2");
}
在此之后,你使用在 @font-face
中指定的字体系列名称将你自定义的字体应用于你喜欢的任何内容,就像平常一样。
html {
font-family: "myFont", "Bitstream Vera Serif", serif;
}
语法比这稍微复杂一些。我们将在下面详细介绍。
以下是一些关于网页字体的注意事项:
- 字体通常不是免费使用的。你需要付费或遵守其他许可条件,例如在你的代码(或你的网站上)中注明字体创建者的署名。你不应该盗用字体并在未经适当署名的情况下使用它们。
- 所有主流浏览器都支持 WOFF/WOFF2(Web 开放字体格式版本 1 和 2)。即使是 IE9(于 2011 年发布)等旧版浏览器也支持 WOFF 格式。
- WOFF2 支持 TrueType 和 OpenType 规范的全部内容,包括可变字体、色度字体和字体集合。
- 列出字体文件的顺序很重要。如果你为浏览器提供多个要下载的字体文件,浏览器将选择它能够使用的第一个字体文件。这就是为什么你首先列出的格式应该是首选格式,即 WOFF2,然后是较旧的格式。不支持一种格式的浏览器将回退到列表中的下一种格式。
- 如果你需要处理旧版浏览器,则应提供 EOT(嵌入式 OpenType)、TTF(TrueType 字体)和 SVG 网页字体以供下载。本文介绍了如何使用 Fontsquirrel 网页字体生成器生成所需的文件。
你可以使用 Firefox 字体编辑器 来调查和操作页面上使用的字体,无论是网页字体还是其他字体。此视频提供了一个很好的逐步说明。
主动学习:网页字体示例
考虑到这一点,让我们从基本原理开始构建一个基本的网页字体示例。使用嵌入式实时示例很难演示这一点。因此,我们希望您按照以下各节中详细介绍的步骤来了解这个过程。
您应该使用 web-font-start.html 和 web-font-start.css 文件作为起点来添加您的代码(请查看 实时示例)。现在在您的计算机上的新目录中复制这些文件。在 web-font-start.css
文件中,您将找到一些最小的 CSS 来处理示例的基本布局和排版。
查找字体
在这个示例中,我们将使用两种网页字体:一种用于标题,另一种用于正文文本。首先,我们需要找到包含字体的字体文件。字体是由字体铸造厂创建的,并存储在不同的文件格式中。通常有三种类型的网站可以获取字体
- 免费字体分发商:这是一个提供免费字体下载的网站(可能仍然有一些许可条件,例如为字体创建者提供署名)。例如 Font Squirrel、dafont 和 Everything Fonts。
- 付费字体分发商:这是一个收费提供字体的网站,例如 fonts.com 或 myfonts.com。您也可以直接从字体铸造厂购买字体,例如 Linotype、Monotype 或 Exljbris。
- 在线字体服务:这是一个为您存储和提供字体的网站,使整个过程更加轻松。有关更多详细信息,请参阅 使用在线字体服务 部分。
让我们找到一些字体!访问 Font Squirrel 并选择两种字体:一种有趣的标题字体(可能是一个漂亮的显示字体或衬线字体),以及一种不太花哨且更易读的段落字体。找到字体后,按下下载按钮并将文件保存到与您之前保存的 HTML 和 CSS 文件相同的目录中。它们是 TTF(True Type Fonts)还是 OTF(Open Type Fonts)并不重要。
解压缩这两个字体包(网页字体通常以 ZIP 文件的形式分发,其中包含字体文件和许可信息)。您可能会在包中找到多个字体文件 - 一些字体作为具有不同变体的系列分发,例如细体、中等、粗体、斜体、细斜体等。在这个示例中,我们只希望您关注每个选择的单个字体文件。
注意:在 Font Squirrel 中,在右侧列的“查找字体”部分中,您可以点击不同的标签和分类来过滤显示的选择。
生成所需的代码
现在您需要生成所需的代码(和字体格式)。对于每种字体,请按照以下步骤操作
- 如果您要在商业和/或 Web 项目中使用它,请确保您已满足任何许可要求。
- 访问 Fontsquirrel 的 Webfont Generator。
- 使用“上传字体”按钮上传您的两个字体文件。
- 选中“是的,我上传的字体在法律上符合网页嵌入资格”复选框。
- 点击“下载您的工具包”。
生成器处理完成后,您应该会得到一个 ZIP 文件供下载。将其保存到与您的 HTML 和 CSS 相同的目录中。
如果您需要支持旧浏览器,请在 Fontsquirrel Webfont Generator 中选择“专家”模式,在下载您的工具包之前选择 SVG、EOT 和 TTF 格式。
字体生成网页服务通常限制文件大小。在这种情况下,请考虑使用以下工具
- sfnt2woff-zopfli 用于将 ttf 转换为 woff
- fontforge 用于将 ttf 转换为 svg
- batik ttf2svg 用于将 ttf 转换为 svg
- woff2 用于将 ttf 转换为 woff2
在您的演示中实现代码
此时,解压缩您刚刚生成的网页字体工具包。在解压缩的目录中,您会看到一些有用的项目
- 每种字体的两个版本:
.woff
、.woff2
文件。 - 每个字体的演示 HTML 文件 - 在浏览器中加载这些文件以查看字体在不同使用环境中的显示效果。
- 一个
stylesheet.css
文件,其中包含您需要的生成的 @font-face 代码。
要在您的演示中实现这些字体,请按照以下步骤操作
- 将解压缩的目录重命名为一个简单易懂的名称,例如
fonts
。 - 打开
stylesheet.css
文件并将两个@font-face
规则集复制到您的web-font-start.css
文件中 - 您需要将它们放在最顶部,位于任何 CSS 之前,因为字体需要在您可以在网站上使用它们之前导入。 - 每个
url()
函数都指向我们想要导入 CSS 的字体文件。我们需要确保文件路径是正确的,因此在每个路径的开头添加fonts/
(根据需要调整)。 - 现在您可以在您的字体栈中使用这些字体,就像任何网页安全字体或默认系统字体一样。例如css
@font-face { font-family: "zantrokeregular"; src: url("fonts/zantroke-webfont.woff2") format("woff2"), url("fonts/zantroke-webfont.woff") format("woff"); font-weight: normal; font-style: normal; }
cssfont-family: "zantrokeregular", serif;
您应该最终得到一个演示页面,其中实现了一些不错的字体。由于不同的字体在不同的尺寸下创建,您可能需要调整尺寸、间距等,以解决外观和感觉。
注意:如果您在操作过程中遇到任何问题,请随时将您的版本与我们的完成文件进行比较 - 请查看 web-font-finished.html 和 web-font-finished.css。您也可以从 GitHub 下载代码 或 运行已完成的实时示例。
使用在线字体服务
在线字体服务通常为您存储和提供字体,因此您不必担心编写 @font-face
代码。相反,您通常只需要在您的网站中插入一两行代码即可使一切正常工作。示例包括 Adobe Fonts 和 Cloud.typography。这些服务中的大多数都是基于订阅的,但 Google Fonts 是一个有用的免费服务,尤其适合快速测试工作和编写演示,是一个值得注意的例外。
这些服务中的大多数都很容易使用,因此我们不会详细介绍它们。让我们快速看一下 Google Fonts,以便您了解其原理。同样,使用 web-font-start.html
和 web-font-start.css
的副本作为您的起点。
- 访问 Google Fonts。
- 搜索您喜欢的字体,或使用页面顶部的过滤器来显示您想要选择的字体类型,然后选择几个您喜欢的字体。
- 要选择一个字体系列,请点击字体预览并按下字体旁边的 ⊕ 按钮。
- 选择完字体系列后,按下页面右上角的“查看您选择的字体系列”按钮。
- 在结果屏幕中,您首先需要复制显示的 HTML 代码行并将其粘贴到 HTML 文件的头部。将其放在现有的
<link>
元素之上,以便在尝试在 CSS 中使用字体之前导入字体。 - 然后,您需要将列出的 CSS 声明复制到您的 CSS 中,以将自定义字体应用于您的 HTML。
注意:如果您需要将您的工作与我们的工作进行比较,可以在 google-font.html 和 google-font.css 中找到完成的版本(查看实时示例)。
@font-face 详细介绍
让我们探索 Fontsquirrel 为您生成的 @font-face
语法。以下是一个规则集的外观
@font-face {
font-family: "zantrokeregular";
src:
url("zantroke-webfont.woff2") format("woff2"),
url("zantroke-webfont.woff") format("woff");
font-weight: normal;
font-style: normal;
}
让我们通读它,看看它做了什么
font-family
:这行指定您要用来引用字体的名称。只要您在整个 CSS 中始终如一地使用它,它可以是您喜欢的任何名称。src
:这些行指定要导入 CSS 的字体文件的路径(url
部分)和每个字体文件的格式(format
部分)。每个情况下的后半部分是可选的,但声明它是很有用的,因为它允许浏览器更快地确定它们可以使用哪个字体。可以列出多个声明,用逗号分隔。由于浏览器会根据级联规则在其中搜索,因此最好将首选格式(如 WOFF2)放在开头。font-weight
/font-style
:这些行指定字体的粗细和是否为斜体。如果您要导入同一字体的多个粗细,您可以指定它们的粗细/样式,然后使用font-weight
/font-style
的不同值在它们之间进行选择,而不是必须为字体系列的所有不同成员赋予不同的名称。@font-face 技巧:定义 font-weight 和 font-style 以使您的 CSS 更简洁,由 Roger Johansson 详细介绍了该怎么做。
注意:您还可以为您的网页字体指定特定的 font-variant
和 font-stretch
值。在较新的浏览器中,您还可以指定 unicode-range
值,它是在网页字体中可能想要使用的特定字符范围。在支持的浏览器中,只有当页面包含那些指定的字符时,才会下载字体,从而节省不必要的下载。使用 Unicode-Range 创建自定义字体栈,由 Drew McLellan 提供了一些关于如何利用它的有用想法。
可变字体
浏览器中有一种较新的字体技术,称为可变字体。这些字体允许将字体的许多不同变体合并到一个文件中,而不是为每种宽度、粗细或样式创建一个单独的字体文件。它们对于我们的初学者课程来说有点先进,但如果您想挑战自己并研究它们,请阅读我们的 可变字体指南。
总结
既然您已经完成了我们关于文本样式基础知识的文章,现在是时候用我们为该模块提供的评估来测试您的理解了:排版社区学校主页。