98

我记得很久以前听说过,在 CSS font-family 属性中包含多个单词的字体名称周围加上引号被认为是“最佳实践”,如下所示:

font-family: "Arial Narrow", Arial, Helvetica, sans-serif;

无论如何,我尝试从中删除引号,"Arial Narrow"并且 Safari 和 Firefox 渲染它没有任何问题。

那么,这个经验法则有什么逻辑,还是只是一个神话?不再适用于当前版本的旧浏览器是否存在问题?我已经这样做了很长时间,以至于我从未停下来思考是否真的有必要。

4

3 回答 3

82

CSS 2.1 规范告诉我们:

字体系列名称必须作为字符串引用,或者作为一个或多个标识符的序列不引用。这意味着每个标记开头的大多数标点字符和数字必须以不带引号的字体系列名称进行转义。

它接着说:

如果将标识符序列作为字体系列名称给出,则计算值是通过单个空格连接序列中的所有标识符而转换为字符串的名称。

为避免转义错误,建议引用包含空格、数字或连字符以外的标点符号的字体系列名称:

所以是的,有区别,但不太可能引起任何问题。就个人而言,当字体名称包含空格时,我总是引用它们。在少数(可能非常罕见)的情况下,引号是绝对需要的:

必须引用恰好与关键字值相同的字体系列名称(“inherit”、“serif”、“sans-serif”、“monospace”、“fantasy”和“cursive”),以防止与关键字混淆同名。关键字“initial”和“default”保留供将来使用,在用作字体名称时也必须引用。

还要注意标点符号,例如 / 或 ! 在标识符内也可能需要被引用或转义。

于 2011-10-03T18:04:01.123 回答
24

根据 2013 年 10 月的CSS 字体模块第 3 级规范,“除通用系列之外的字体系列名称必须作为字符串引用,或者作为一个或多个标识符的序列不加引号”。因此,您不需要将它们括在引号中。

但是,如果您不“必须对每个标记开头的大多数标点符号和数字进行转义”。为了避免转义错误,W3C 实际上建议引用包含空格、数字、标点符号或关键字值('inherit'、'serif' 等)的字体系列名称。

不得引用通用字体系列名称(“serif”、“sans-serif”、“cursive”、“fantasy”和“monospace”),因为它们实际上是关键字。

于 2013-10-17T15:44:34.787 回答
0

如果 style 是内联的,比如<font style="font-family:Arial Narrow">some texte</font>,它可以工作。

但是如果警察字体的名称包含一些特殊字符,或者以数字开头包含引号或其他奇怪的东西(如“01 Digitall”或“a_CityNovaTitulB&WLt”或“Bailey'sCar”),则必须使用特殊语法与它可以应用于各种奇怪的字体名称:

<font style="font-family:&quot;a_CityNovaTitulB&WLt&quot; , &quot;Bailey'sCar&quot;">some text</font>

在 FireFox 中,源代码将显示像这样:

没有这个技巧,这个:

<font style="font-family:a_CityNovaTitulB&WLt ,Bailey'sCar">some text</font>

不会自动在每个浏览器中运行。这对于以数字开头的字体名称很有用,例如“8 Pin”。

于 2015-07-07T02:54:27.920 回答