【问题标题】:Do I need to wrap quotes around font family names in CSS?我是否需要在 CSS 中为字体系列名称加上引号?
【发布时间】:2011-11-30 03:02:40
【问题描述】:

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

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

为了它,我尝试从 "Arial Narrow" 中删除引号,而 Safari 和 Firefox 渲染它没有任何问题。

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

【问题讨论】:

  • 我认为引用每个字体系列是个好主意,而不是通用字体系列。它使事情保持一致。

标签: css font-family quotation-marks


【解决方案1】:

CSS 2.1 spec 告诉我们:

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

接着说:

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

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

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

恰好与关键字值相同的字体系列名称 (“继承”、“衬线”、“无衬线”、“等宽”、“幻想”和 'cursive') 必须加引号以防止与关键字混淆 相同的名字。关键字“initial”和“default”保留用于 将来使用,并且在用作字体名称时也必须加引号。

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

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    如果样式是内联的,比如<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”。

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2021-10-27
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多