【问题标题】:'font-' vs 'text-' in CSS property namesCSS 属性名称中的“font-”与“text-”
【发布时间】:2014-01-31 05:52:36
【问题描述】:

CSS 属性名称中使用的术语“文本”和“字体”有什么区别?它们的意思是一样的,还是以font- 开头的CSS 属性名称和以text- 开头的CSS 属性名称之间存在语义差异?

例如,为什么我们有这些 CSS 属性:

font-size: 34px;
text-decoration: underline;

不是这样命名的吗?

font-size: 34px;
font-decoration: underline;

还是这样?

text-size: 34px;
text-decoration: underline;

这里使用font-text- 的方式是否存在语义差异,或者前缀的选择完全是任意的?

【问题讨论】:

    标签: css terminology


    【解决方案1】:

    就我的理解而言:

    文本:布局和演示的计算方式。

    字体:字符到字形的映射。当您考虑连字和其他高级字体功能时,1 对 1 的“映射”并不完全成立,但总的来说它是一个很好的心理模型。字体决定了字符的形状。

    您可以为使用特定字体绘制的文本添加下划线,但不能为字体本身添加下划线。但是,您可以调整形状的大小,使使用该字体绘制的文本具有更大的字形。 (因此,font-size

    这也是为什么你有font-style: italic 而不是text-style: italic 的原因,因为当你用斜体排版时,实际的形状会发生变化。 font-weighttext-weight 也是如此。

    希望这会有所帮助。


    如果您查看以text- 开头的属性和以font- 开头的属性,您会发现明显的区别:

    text-align
    text-decoration
    text-indent
    text-justify
    text-outline
    text-overflow
    text-shadow
    text-transform
    text-wrap
    

    这些都用于文本的布局、定位或视觉呈现。

    font
    font-family
    font-size
    font-style
    font-variant
    font-weight
    @font-face
    font-size-adjust
    font-stretch
    

    这些都用于转换字符的形状,字形。

    【讨论】:

      【解决方案2】:

      CSS 属性名称的各个部分没有意义,而整个属性名称​​只有在 CSS 规范(或草案)中赋予它的含义。通常,这些名称在解释为英语单词时会暗示其含义,但名称​​不定义含义,并且有些名称完全具有误导性。 (例如,white-space 即使在不涉及空白字符的上下文中也会影响到行的划分。)

      所以名称只是标识符,但名称的分配可能存在一些系统性。碰巧的是,以font- 开头的属性名称与用于呈现字符的字体选择或使用字体的特定方式有关。以text- 开头的属性名称与格式化文本(字符)的其他方面有关。

      这种划分比较明确,但取决于技术:格式化的某些特征与字体相关,由于字体技术的工作方式,有些则不是。

      这种划分体现在CSS3“模块”划分中:字体相关的特性在CSS Fonts Module Level 3中定义(定义了名称以font开头的属性),而其他文本格式特性主要在CSS Text Module Level 3中定义(它定义了一些名称以text- 开头的属性,但也定义了其他属性)。

      【讨论】:

        【解决方案3】:

        查看MDN's CSS Reference 上列出的font- 属性,在我看来,以font- 开头的属性会影响,或者至少有可能影响,选择哪种字体从字体系列中用于绘制特定字符。以text- 开头的属性从不这样做,但会执行各种其他操作,包括后期渲染以添加与字形选择无关的阴影等文本效果。

        比如……

        • font-family - 提供字体系列列表,从中选择用于渲染每个字符的字体;显然,这会影响字形选择。
        • font-weight - 在可能的情况下,通过从字体系列中选择适当的粗体字体以正确的粗体显示文本。
        • font-size - 显然可能会影响实际选择的字体,因为并非所有字体格式都可以任意缩放。 font-family docs(强调我的)的以下引用证实了这一点:

          当字体仅在某些样式、变体或尺寸中可用时,这些属性也可能会影响选择的字体系列。

          (虽然我猜这主要是一个历史问题,因为我不认为今天仍在使用不可缩放的字体格式。)

        • font-size-adjust - 很像上面的。

        • font-stretch - 引用文档:

          此属性不会通过拉伸或收缩来更改任意字体的几何形状。与 font-feature-settings 或 font-variant 一样,它只是选择最合适的字体外观的一种手段,如果这个字体提供了其中的几种。

        ...等等。并非所有这些属性总是影响字体选择;例如,font-size 显然是关于字形渲染,而不是字体选择,在可缩放字体的情况下,font-weightfont-style 属性可能导致浏览器合成粗体或斜体字形而不是使用粗体或斜体字体,如noted by W3:

        尽管这种做法不受排版人员的喜爱,但用户代理通常会为缺乏实际粗体面孔的面孔合成粗体。

        不过,font- 属性的共同点在于它们是可能影响字体和字形选择的属性。所以选择何时使用font-text- 前缀似乎不是随意做出的。

        【讨论】:

          猜你喜欢
          • 2012-04-08
          • 1970-01-01
          • 2020-02-09
          • 2016-08-12
          • 1970-01-01
          • 2011-05-28
          • 2012-09-06
          • 2013-06-29
          • 1970-01-01
          相关资源
          最近更新 更多