我是否需要在CSS中的字体系列名称周围加上引号?


92

我记得很久以前听说过,在CSS font-family属性中用引号引起来的字体名称包含多个单词,这被认为是“最佳实践”,例如:

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

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

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


我认为引用每个字体系列(而不是通用字体系列)是一个好主意。它使事情保持一致。
米卡·亨宁

Answers:


78

CSS 2.1规范告诉我们:

字体系列名称必须要么用引号引起来,要么用引号引起来,或者不用一个或多个标识符序列来引用。这意味着每个令牌开头的大多数标点符号和数字都必须以未加引号的字体系列名称进行转义。

它继续说:

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

为避免转义时出错,建议引用字体系列名称,其中包含空格,数字或标点符号(连字符除外):

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

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

另请注意标点符号如/或!标识符中的可能还需要加引号或转义。


6
initial并且default也是关键字(它们保留供将来使用)。请参见CSS中未引用的字体系列名称
Mathias Bynens'4

21

根据2013年10月的CSS字体模块级别3规范,“ 除通用系列以外的其他字体系列名称必须以字符串引用或不以一个或多个标识符序列的形式引用 ”。因此,您无需将其用引号引起来。

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

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


0

如果style是inline,例如<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”之类的数字开头的字体名称,这很有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.