我是否需要在CSS中包含字体系列名称的引号?

时间:2011-10-03 17:57:46

标签: css font-family quotation-marks

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

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

对于它,我尝试删除"Arial Narrow"中的引号,Safari和Firefox在呈现它时没有任何问题。

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

3 个答案:

答案 0 :(得分:74)

CSS 2.1 spec告诉我们:

  

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

接着说:

  

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

     

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

所以是的,存在差异,但不太可能导致任何问题。就个人而言,我总是在它们包含空格时引用字体名称。在一些(可能非常罕见的)案例中,绝对需要引号:

  

字体系列名称恰好与关键字值相同   ('继承','衬线','sans-serif','monospace','幻想'和   必须引用'cursive')以防止与关键字混淆   相同的名字。关键字'initial'和'default'保留用于   将来使用,当用作字体名称时也必须引用。

还要注意标点符号,例如/或!在要引用或转义的标识符may also need内。

答案 1 :(得分:17)

根据2013年10月的CSS Fonts Module Level 3 spec,"除了通用系列之外的其他字体系列名称必须以字符串形式引用,或者不加引号作为一个或多个标识符的序列&#34 ;. 所以你不需要将它们用引号括起来。

但是,如果您没有" ,则必须转义每个令牌开头的大多数标点字符和数字"。 为了避免逃避错误,W3C实际上建议引用包含空格,数字,标点符号或关键字值的字体系列名称('inherit','serif'等)。

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

答案 2 :(得分:0)

如果样式是内联的,例如<font style="font-family:Arial Narrow">some texte</font>,则可行。

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

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

在FireFox中,来源会将&amp; quot; 显示为:

没有这个技巧,这个:

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

不会自动在每个浏览器中运行。 对于字体名称来说,它可以用数字开头,比如“8 Pin”。