我是否需要在CSS中使用字体名称来包装引号?

我记得很久以前,听说在CSS font-family属性中包含多个单词的字体名称的引用被认为是“最佳做法”,如下所示:

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

对此,我尝试从"Arial Narrow"删除引号,Safari和Firefox在渲染时没有任何问题。

那么,这个经验法则有没有什么逻辑,还是只是一个神话? 旧版浏览器的问题不再适用于当前版本吗? 我一直这么做,我从来没有停下来想想是否真的有必要。

CSS 2.1规范告诉我们:

字体家族名称必须被引用为string,或者不带引号作为一个或多个标识符的序列。 这意味着每个标记开始处的大多数标点字符和数字必须以未加引号的字体名称进行转义。

它继续说:

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

为避免转义错误,build议引用包含空格,数字或除连字符之外的标点符号的字体名称:

所以是的,有一个区别,但不太可能导致任何问题。 就个人而言,我一直在引用字体名称时,他们包含空格。 在一些(可能非常罕见)的情况下,报价是绝对必要的:

为了防止与关键字混淆,必须引用与关键字值(“inheritance”,“衬线”,“无衬线”,“等宽”,“幻想”和“草书”)相同的字体家族名称同名。 关键字'initial'和'default'被保留以供将来使用,并且在用作字体名称时也必须被引用。

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

根据2013年10月的CSS Fonts Module Level 3规范 ,“ 除了generics族之外的字体族名称必须被引用为string,或者不带引号作为一个或多个标识符的序列 ”。 所以你不需要用引号括起来。

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

通用的字体名称('serif','sans-serif','cursive','fantasy'和'monospace')不能被引用,因为它们实际上是关键字。

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

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

 <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”。