💡 在网页设计的世界中,字体是一种强大的表达工具,能够赋予文字以独特的风格、情感和身份。随着互联网的不断发展,网页字体的选择和优化变得至关重要,直接影响用户体验和网站整体的视觉吸引力。
这就引出了一个重要问题:在网页上使用什么样的字体?如何确保字体在不同设备和浏览器中都能呈现出最佳效果?本文将带你深入探讨网页字体的世界,从字体的基础知识到Web字体的应用,揭示字体背后的艺术和科学。
无论你是一位网页设计师、开发者,还是对字体设计感兴趣的普通用户,通过这篇科普博客,你将对网页字体有一个更全面的了解,并学到如何选择、应用和优化字体以提升网站的视觉吸引力。
font-family字体族
字体族(font family)是一组字体的集合,它包括相似风格和设计的字体。在 CSS 中,可以使用 font-family 属性来指定字体族。当指定字体族时,浏览器会按照优先级选择用户设备上可用的字体。下面是常见的字体族及其在具体设计上的特点:
1. serif 字体族
- 特点:
serif字体具有衬线,衬线是在字符的末端添加的额外笔画,如 “Times New Roman” 中的 “T” 的底部。 - 示例: Times New Roman, Georgia, Palatino
- 用途: 适合正式文档和印刷品,因为衬线有助于提高可读性。

2. sans-serif 字体族
- 特点:
sans-serif字体没有衬线,字符的末端是直的。 - 示例: Arial, Helvetica, Verdana
- 用途: 适合屏幕显示,特别是小字体大小下更易阅读。

3. monospace 字体族
- 特点:
monospace字体中的每个字符都具有相同的宽度,适合排列文本以保持字符对齐。 - 示例: Courier New, Monaco, Consolas
- 用途: 适合用于编程代码和等宽排列文本的场合。

4. cursive 字体族
- 特点:
cursive字体模仿手写风格,通常包含连写的字符。 - 示例: Comic Sans MS, Brush Script
- 用途: 适合强调和创意性的场合,但不适合正式文档。

5. fantasy 字体族
- 特点:
fantasy字体是一类装饰性的字体,通常不符合常规的字体分类。 - 示例: Impact, Western
- 用途: 适合用于标题和特殊效果,不适合大篇幅的正文。

示例
1 | body { |
具体是根据哪款字体来渲染?
font-family属性可以定义一个或多个字体的名称,用于渲染文本。当使用font-family定义多款字体时,具体使用哪款字体渲染,取决于以下几个因素:
- 字体的可用性:浏览器会按照font-family属性的顺序,从左到右,依次尝试使用每个字体。如果浏览器支持并且能够找到第一个字体,就会使用它。如果第一个字体不可用,就会尝试使用第二个字体,以此类推,直到找到一个可用的字体。如果所有的字体都不可用,就会使用浏览器的默认字体。
- 字体的匹配度:如果一个字体不能完全覆盖文本中的所有字符,浏览器会尝试使用其他字体来补充缺失的字符。这种情况下,浏览器会根据字体的匹配度,即字体的样式,重量,斜度,等等,来选择最合适的字体。如果没有找到合适的字体,就会使用浏览器的默认字体。
- 字体的优先级:如果一个字体是用户在操作系统或浏览器中设置的首选字体,或者是一个通用的字体族,如serif,sans-serif,monospace,等等,它会有更高的优先级,被更容易地使用。如果一个字体是一个特定的字体名称,如Arial,Times New Roman,等等,它会有更低的优先级,被更难地使用。
因此,当使用font-family定义多款字体时,具体使用哪款字体渲染,是一个动态的过程,需要考虑字体的可用性,匹配度,和优先级。为了保证文本的渲染效果,建议在font-family属性中,既指定特定的字体名称,又指定通用的字体族,以提供更多的备选方案。
font-weight 字重
font-weight 是 CSS 中用于设置字体粗细的属性。它的值可以是以下几种:
- 数值: 100、200、300、400、500、600、700、800、900。数值越大,字体越粗。常见的使用是
normal对应 400,bold对应 700。 - 关键字:
normal:定义标准的字符。bold:定义粗体字符。
- 全局关键字:
initial:设置属性为其默认值。inherit:从父元素继承属性值。
使用示例
1 | /* 使用关键字 */ |
在上述示例中,.normal-text 使用 font-weight: normal; 设置为标准字体,.bold-text 使用 font-weight: bold; 设置为粗体,.light-text 使用 font-weight: 300; 设置为较轻的字体。.default-weight 使用 font-weight: initial; 将属性值重置为默认值,而 .inherited-weight 使用 font-weight: inherit; 从父元素继承字体粗细。
这些设置可以根据设计需要和品牌规范来选择,以确保网页文本的良好可读性和一致性。
常见粗细值名称和数值对应
100 到 900 之间的数值大致对应如下的常见粗细值名称:
| 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |
|---|---|---|---|---|---|---|---|---|
| Thin | ||||||||
| (Hairline) | Extra Light | |||||||
| (Ultra Light) | Light | Normal | Medium | Semi Bold | ||||
| (Demi Bold) | Bold | Extra Bold | ||||||
| (Ultra Bold) | Black | |||||||
| (Heavy) |
关于Regular的定义
在 CSS 中,
regular字重并没有一个具体的数值标准,它通常是指字体家族中的默认或普通字重。具体的字体家族和其对应的字重可能有所不同,因为这是由字体设计者和字体提供商决定的。一般而言,
regular字重对应于数值400。在某些字体家族中,regular也可能对应于normal关键字。
@font-face 自定义字体
@font-face 是 CSS 中的一个规则,用于定义自定义字体。通过 @font-face 规则,你可以引入并使用网页上没有安装的字体。这对于网页设计中的字体定制非常有用,可以确保你的网页在用户端正确显示所需的字体。
语法
1 | @font-face { |
详解
- font-family: 指定字体的名称,以供后续在 CSS 中使用。这是你在
font-family属性中引用字体时所使用的名称。 - src: 指定字体文件的路径和格式。通常,你需要提供字体文件的绝对或相对路径,并指定字体的格式(如
woff2、woff、ttf等)。可以提供多个src声明,以提供备用字体文件,以备不同浏览器和操作系统使用不同的格式。 - font-weight 和 font-style: 这两个属性是可选的。它们允许你指定字体的粗细和风格。如果没有指定,将使用字体文件中的默认值。
使用示例
1 | @font-face { |
在这个例子中:
@font-face规则定义了一个名为'MyCustomFont'的自定义字体,它的来源是'path/to/your/font.woff2'文件。- 在
body中,通过font-family属性将整个页面的默认字体设置为'MyCustomFont'。这样,整个页面的文字都会使用这个自定义字体。
确保替换 'path/to/your/font.woff2' 为你实际字体文件的路径。此外,你可以提供多个字体格式,以提高在不同浏览器和操作系统上的兼容性。
format() 的作用
format() 是 @font-face 规则中的一个子属性,用于指定字体文件的格式。不同的浏览器和操作系统支持不同的字体文件格式,因此通过 format() 属性,你可以告诉浏览器如何解释字体文件。
常见的字体文件格式包括 WOFF(Web Open Font Format)、WOFF2(Web Open Font Format 2.0)、TTF(TrueType Font)、OTF(OpenType Font)等。通过提供适当的格式,你可以增加网页在各种设备和浏览器上正确显示字体的机会。
语法
1 | @font-face { |
在这个例子中,format('woff') 表示字体文件的格式是 WOFF。
常见的 format 值
format('woff'): WOFF 格式的字体文件。format('woff2'): WOFF 2.0 格式的字体文件,是 WOFF 的升级版,通常更加高效。format('truetype'): TrueType 字体文件格式。format('opentype'): OpenType 字体文件格式。format('embedded-opentype'): 嵌入式 OpenType 字体文件格式,通常用于旧版 Internet Explorer。
使用示例
1 | @font-face { |
在这个例子中,@font-face 规则指定了两个字体文件,一个是 WOFF2 格式的,另一个是 WOFF 格式的。浏览器会根据支持的格式选择合适的字体文件来加载。
字体格式的建议
在网页开发中,字体有不同的格式,因为不同的浏览器和设备支持不同的字体格式。为了确保字体在各种环境中都能正确加载,通常会使用以下常见的字体格式:
WOFF (Web Open Font Format):
WOFF 是专门为 Web 设计的字体格式,提供了压缩和高效的字体传输。绝大多数现代浏览器都支持 WOFF 格式。
1
2
3
4
5
6
7/* 引入 WOFF 格式的字体 */
@font-face {
font-family: 'YourFont';
src: url('your-font.woff') format('woff');
font-weight: normal;
font-style: normal;
}
WOFF2 (Web Open Font Format 2):
WOFF2 是 WOFF 的升级版,具有更好的压缩效果,但它支持的浏览器较少。然而,对于支持的浏览器,WOFF2 是首选的字体格式。
1
2
3
4
5
6
7/* 引入 WOFF2 格式的字体 */
@font-face {
font-family: 'YourFont';
src: url('your-font.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}
TTF/OTF (TrueType/OpenType):
TTF 和 OTF 是传统的字体格式,适用于许多设备和浏览器。但它们相对于 WOFF 来说文件大小较大,因此在 Web 中使用时可能不如 WOFF/WOFF2 效率高。
1
2
3
4
5
6
7/* 引入 TTF 格式的字体 */
@font-face {
font-family: 'YourFont';
src: url('your-font.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
在使用字体时,可以使用多个格式,以提供对不同浏览器的更好支持。例如:
1 | @font-face { |
这样,浏览器将根据支持的格式选择合适的字体。确保字体文件在服务器上正确托管,并且在 CSS 中正确引用字体路径。