什么是正确的指定为 CSS 字体系列值:字体、字体或字体系列?

Posted

技术标签:

【中文标题】什么是正确的指定为 CSS 字体系列值:字体、字体或字体系列?【英文标题】:What is correct to specify as CSS font-family value: typeface, font or font-family? 【发布时间】:2014-02-02 08:44:31 【问题描述】:

这里是字体、字体和字体系列的定义:

    字体是一组字符的设计。 字体是字体和其他特性(例如大小、间距和间距)的组合。 字体系列是一组字体,所有字体都相同,但大小、粗细和倾斜度不同。

那么我可以将这 3 个中的哪一个指定为 css font-family 属性的值? 如果我应该只指定 3) 即字体系列,那么当我指定无衬线字体时,浏览器将从用户系统中选择哪种无衬线字体来显示内容?用户系统上可以有很多无衬线字体。

提前致谢, 苏仁

【问题讨论】:

【参考方案1】:

没有。 font-family 的值是字体系列的逗号分隔列表(按优先顺序)。字体系列是一组(一个或多个)具有相似设计的字体,通常由印刷师设计,以便它们在风格上保持一致。例如,字体系列 Georgia 包含可能具有名称 Georgia Regular、Georgia Italic、Georgia Bold 和 Georgia Bold Italic 的字体。字体的名称可能与语言有关,并不打算在 CSS 中使用。相反,您使用各种 CSS 结构来选择字体;例如,font-style: italic 从正在使用的字体系列中选择一个斜体字体(或者,如果它没有这样的字体,可以通过在常规字体中倾斜字形来创建“仿斜体”)。

标识符sans-serif 表示所谓的通用无衬线字体系列。这意味着依赖于浏览器的字体系列。浏览器有默认设置,用户可以在浏览器设置中更改(尽管很少有人知道和关心这一点)。

【讨论】:

【参考方案2】:

在 CSS 中使用 font-family 时,最好构建一个“字体堆栈”。 This website 为您提供了一些标准字体,您无需下载任何额外字体即可使用。

字体堆栈的思想是用户计算机在列表(堆栈)中查找第一个字体,如果找不到,它将移动到列表中的下一个字体

举个例子:

font-family: 'Open Sans', Arial, "Helvetica Neue", Helvetica, sans-serif;

首先查找字体“Open Sans”。如果找不到,它会移动到“Arial”等等。就在最后,看起来像另一个字体名称“sans-serif”。有点混乱,因为这是一种类型,而不是字体的名称。在大多数系统上,这仅意味着无衬线字体将退回到您最基本的无衬线字体(在大多数情况下,这基本上只是 Windows 上的 Arial,可能是 Mac 上的 Helvetica)。了解它的最佳方式就是尝试一下!

【讨论】:

【参考方案3】:

我不完全确定问题的第一部分是什么意思。但是,如果你写:

p
font-family: sans-serif;

那么您没有指定特定字体,仅指定默认的无衬线/衬线字体。浏览器将选择浏览器内置的默认浏览器(例如,在 Mac 的情况下,这将是 Helvetica,Windows 将默认为 Arial)或已由用户指定 - 仅在以下情况下由用户覆盖他们在浏览器中更改了默认设置。

如果要使用特定字体,则必须指定该字体。在行尾添加“sans-serif”或“serif”是一种很好的做法,因为它会使页面回退到默认字体。

例如:

 p 
        font-family: 'Lobster font', 'Tahoma', sans-serif;
  

在本例中,我们查找“龙虾字体”,如果找不到,我们会查找“Tahoma”,如果找不到,则回退到浏览器默认设置。

【讨论】:

表达式'sans-serif' 表示具有专有名称sans-serif 的字体系列。顺便说一句,这样的字体不存在。不带引号的表达式sans-serif 表示依赖于浏览器的(通用)字体系列。 已修改以反映这一点。

以上是关于什么是正确的指定为 CSS 字体系列值:字体、字体或字体系列?的主要内容,如果未能解决你的问题,请参考以下文章

CSS 字体

如何用css设置网页字体[多图]

文本输入中自动填充的 CSS 字体系列问题

如何指定系统的默认serif和sans-serif字体系列?

CSS中设定字体为微软雅黑 Bold字体,如何设定?

为选择标签中的单独选项更改 css 字体系列