我记得很久以前听过,在CSS font-family属性中包含多个单词的字体名称被引用为“最佳做法”,如下所示:
font-family: "Arial Narrow", Arial, Helvetica, sans-serif;
对于它,我尝试删除"Arial Narrow"
中的引号,Safari和Firefox在呈现它时没有任何问题。
那么,这个经验法则是否有任何逻辑,或者它只是一个神话?旧版浏览器的问题是否已不再适用于当前版本?我已经这么做了很长时间以至于我从未停下来思考是否真的有必要。
答案 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:"a_CityNovaTitulB&WLt" , "Bailey'sCar"">some text</font>
在FireFox中,来源会将&amp; quot; 显示为:“
没有这个技巧,这个:
<font style="font-family:a_CityNovaTitulB&WLt ,Bailey'sCar">some text</font>
不会自动在每个浏览器中运行。 对于字体名称来说,它可以用数字开头,比如“8 Pin”。