SVG 1.1(第二版)– 2011年8月16日首页目录上页下页元素属性属性

20 字体

内容

20.1 简介

可靠的字体交付是 SVG 的一项要求。设计师需要使用任意字体创建 SVG 内容,并确保所有终端用户在查看该内容时都能获得相同的图形效果,即使终端用户在其计算机上未安装必要的字体。这与印刷界的情况类似,设计师在创作印刷绘图时使用特定的字体,图形内容在印刷版本中与在设计师的创作系统上显示的效果完全一致。

SVG 利用 WebFonts 设施(在 CSS2 中定义,参见 CSS2 第 15.1 节)作为将字体数据可靠地交付给最终用户的关键机制。 在常见场景中,SVG 创作应用程序为给定 SVG 文档片段使用的所有文本元素生成压缩、子集化的 WebFonts。 通常,WebFonts 被保存于相对于引用文档的位置。

到目前为止,WebFont 设施的一个缺点是 CSS2 等规范并未要求支持特定的字体格式。 其结果是不同实现支持不同的 Web 字体格式,从而使网站创建者很难只发布一个使用 WebFonts 的站点,而该站点能够在所有用户代理上工作。

为了为 SVG 提供一种所有 符合规范的 SVG 查看器 都保证支持的通用字体格式,SVG 提供了一种在 SVG 中定义字体的机制。 该机制称为 SVG 字体

SVG 字体可以提升表示文本的图形的语义丰富度。 例如,许多公司的标志是以艺术化的方式绘制公司名称。 在某些情况下,可访问性 可以通过将标志表示为 SVG 字体中的一系列字形(glyph),随后使用引用该字体的 ‘text’ 元素来渲染标志而得到增强。

20.2 SVG 字体概述

一个 SVG 字体 是使用 SVG 的 ‘font’ 元素定义的字体。

SVG 字体的目的在于在仅用于显示的环境中交付字形轮廓。 随网页一起提供的 SVG 字体仅须在浏览和查看情境中得到支持。 图形编辑应用或文件转换工具不得尝试将 SVG 字体转换为系统字体。 其意图是 SVG 文件可以在两个内容创建者之间互换,但不包括可能随这些 SVG 文件一起提供的 SVG 字体。 相反,每个内容创建者在能够成功编辑 SVG 文件之前都需要获得相应字体的授权。 ‘font-face-name’ 元素指示用于编辑的已授权字体名称。

SVG 字体包含未进行 hinting(微调)的字体轮廓。 因此,在许多实现中,小字号文本的质量和可读性可能受限。 为了在小字号下获得更高的质量和可读性,内容创建者可能需要使用其他字体技术,例如操作系统自带的字体或其他 WebFont 格式。

由于 SVG 字体是使用 SVG 元素和属性表达的,在某些情况下它们占用的空间会比专为紧凑表达字体数据而设计的 WebFont 格式更大。 为了实现网页的最快交付,内容创建者可能希望使用其他字体技术。

SVG 字体的一个关键价值是保证在 SVG 用户代理中可用。在某些情况下,SVG 字体作为某些文本渲染的首选可能是合适的。在其他情况下,SVG 字体可能是首选字体(可能是经过字形提示的系统字体)对于给定用户不可用时的替代备份字体。

SVG 字体的特性和属性与 Fonts 章节 中描述的 Cascading Style Sheets (CSS) level 2 规范(CSS2 第 15 章)中的字体特性和参数高度吻合。 在该模型中,各种字体度量(例如 advance 值和基线位置)以及字形轮廓本身,都用相对于一个抽象方形的单位来表示;该方形的高度等于同一字号排版时行间的预期距离。 这个方形被称为 em 方形,是定义字形轮廓的设计网格。 ‘units-per-em’ 属性的值指明了 em 方形被划分为多少单位。 其他字体类型常见的取值例如 250(Intellifont)、1000(Type 1)以及 2048(TrueType、TrueType GX 与 Open‑Type)。 与 SVG 中的标准图形不同,后者的初始坐标系 y 轴向下(参见 初始坐标系),SVG 字体的设计网格及字形的初始坐标系 y 轴向上,以与多数流行字体格式的行业惯例保持一致。

SVG 字体及其关联的字形不提供边界框信息。由于字形轮廓以 SVG 图形元素表达,实现可以选择使用标准图形调用渲染字形,或使用专用的字体渲染技术,此时可以通过分析字形轮廓中包含的图形元素来计算必要的最大边界框和溢出。

SVG 字体既可以嵌入到使用该字体的同一文档中,也可以作为外部资源的一部分保存。

以下是如何在 SVG 文档中嵌入 SVG 字体的示例。

<?xml version="1.0" standalone="yes"?>
<svg width="400px" height="300px" version="1.1"
  xmlns = 'https://w3org.cn/2000/svg'>
  <defs>
    <font id="Font1" horiz-adv-x="1000">
      <font-face font-family="Super Sans" font-weight="bold" font-style="normal"
          units-per-em="1000" cap-height="600" x-height="400"
          ascent="700" descent="300"
          alphabetic="0" mathematical="350" ideographic="400" hanging="500">
        <font-face-src>
          <font-face-name name="Super Sans Bold"/>
        </font-face-src>
      </font-face>
      <missing-glyph><path d="M0,0h200v200h-200z"/></missing-glyph>
      <glyph unicode="!" horiz-adv-x="300"><!-- Outline of exclam. pt. glyph --></glyph>
      <glyph unicode="@"><!-- Outline of @ glyph --></glyph>
      <!-- more glyphs -->
    </font>
  </defs>
  <text x="100" y="100" 
           style="font-family: 'Super Sans', Helvetica, sans-serif;
                  font-weight: bold; font-style: normal">Text 
    using embedded font</text>
</svg>

下面给出一个使用 CSS @font-face 设施CSS2 第 15.3.1 节)引用保存在外部文件中的 SVG 字体的示例。 第一个引用的 SVG 字体文件

<?xml version="1.0" standalone="yes"?>
<svg width="100%" height="100%" version="1.1"
 xmlns = 'https://w3org.cn/2000/svg'>
  <defs>
    <font id="Font2" horiz-adv-x="1000">
      <font-face font-family="Super Sans" font-weight="normal" font-style="italic"
          units-per-em="1000" cap-height="600" x-height="400"
          ascent="700" descent="300"
          alphabetic="0" mathematical="350" ideographic="400" hanging="500">
        <font-face-src>
          <font-face-name name="Super Sans Italic"/>
        </font-face-src>
      </font-face>
      <missing-glyph><path d="M0,0h200v200h-200z"/></missing-glyph>
      <glyph unicode="!" horiz-adv-x="300"><!-- Outline of exclam. pt. glyph --></glyph>
      <glyph unicode="@"><!-- Outline of @ glyph --></glyph>
      <!-- more glyphs -->
    </font>
  </defs>
</svg>

使用/引用上述 SVG 字体的 SVG 文件

<?xml version="1.0" standalone="yes"?>
<svg width="400px" height="300px" version="1.1"
 xmlns = 'https://w3org.cn/2000/svg'>  
  <defs>
    <style type="text/css">
      <![CDATA[
        @font-face {
          font-family: 'Super Sans'; 
          font-weight: normal;
          font-style: italic;
          src: url("myfont.svg#Font2") format("svg")
        }
      ]]>
   </style>
  </defs>
  <text x="100" y="100"
           style="font-family: 'Super Sans'; font-weight:normal;
                  font-style: italic">Text using referenced font</text>
</svg>

20.3 ‘font’ 元素

‘font’ 元素定义一个 SVG 字体。

‘font’
类别
内容模型
任意数量的以下元素,顺序不限:
属性
DOM 接口

属性定义

horiz-origin-x = "<number>"
字体坐标系中用于绘制水平方向文本时字形原点的 X 坐标。(注意,该原点适用于字体中的所有字形。)
如果未指定该属性,其效果如同指定了 '0'
Animatable: 否。
horiz-origin-y = "<number>"
字体坐标系中用于水平排版文本时字形原点的 Y 坐标。(此原点适用于字体中的所有字形。)
如果未指定该属性,其效果如同指定了 '0'
Animatable: 否。
horiz-adv-x = "<number>"
水平方向渲染字形后的默认水平进位。字形宽度要求为非负数,即使该字形通常是从右向左渲染的(如希伯来语和阿拉伯语脚本)。
Animatable: 否。
vert-origin-x = "<number>"
在字体坐标系中用于垂直排版文本时字形原点的默认 X 坐标。
如果未指定该属性,则相当于将其设置为属性 ‘horiz-adv-x’ 有效值的一半。
Animatable: 否。
vert-origin-y = "<number>"
在字体坐标系中用于垂直排版文本时字形原点的默认 Y 坐标。
如果未指定该属性,则相当于将其设置为字体的 ‘ascent’ 属性所指定的位置。
Animatable: 否。
vert-adv-y = "<number>"
在垂直方向渲染字形后默认的垂直前进距离。
如果未指定该属性,则相当于指定了一个等同于一个 em 的值(参见 ‘units-per-em’)。
Animatable: 否。

每个 ‘font’ 元素必须包含一个 ‘font-face’ 子元素,用来描述该字体的各种特性。

20.4 ‘glyph’ 元素

‘glyph’ 元素定义给定字形的图形。该字形的坐标系由 ‘font’ 元素中的各种属性定义。

构成 ‘glyph’ 的图形可以是位于 ‘d’ 属性中的单个 路径数据 说明,也可以是 ‘glyph’ 内容中的任意 SVG,亦或两者兼有。这两种形式的处理方式不同(见下文)。

‘glyph’
类别
容器元素
内容模型
任意数量的以下元素,顺序不限:
属性
DOM 接口

属性定义

unicode = "<string>"
一个或多个 Unicode 字符,指示与此字形对应的 Unicode 字符序列。如果提供了单个字符,则此字形对应该 Unicode 字符。如果提供了多个字符,则此字形对应给定的 Unicode 字符序列。字符序列的一个用途是连字。例如,若 unicode="ffl",则该字形用于渲染字符序列 "f", "f" 和 "l"。

使用以十六进制或十进制表示的 XML 字符引用来引用字符通常很有用。例如,unicode="ffl" 可以表示为十六进制 XML 字符引用 unicode="&#x66;&#x66;&#x6c;" 或十进制表示为 unicode="&#102;&#102;&#108;"

‘unicode’ 属性参与决定哪一个或哪些字形用于表示哪些字符。参见 字形选择规则。如果未为某个 ‘glyph’ 提供 ‘unicode’,则只能通过 ‘altGlyph’ 引用来使用该字形。
Animatable: 否。
glyph-name = "<name> [, <name> ]* "
字形的名称。建议在同一字体内部保持字形名称的唯一性。字形名称可用于 Unicode 编码不足以唯一定位字形的情形,例如同一 Unicode 字符对应多个字形时。字形名称也可在 字距对 定义中被引用。
Animatable: 否。
d = "path data"
字形轮廓的定义采用与 ‘d’ 属性在 ‘path’ 元素中的语法相同的形式。参见 路径数据
有关此属性的讨论,请参阅下文。
Animatable: 否。
orientation = "h | v"
指示给定字形仅用于特定的行进方向(即水平或垂直)。如果未指定此属性,则字形可在所有情况下使用(即水平和垂直行进方向均可)。
Animatable: 否。
arabic-form = "initial | medial | terminal | isolated"
针对阿拉伯字形,指示此字形表示的四种可能形式中的哪一种。
Animatable: 否。
lang = "%LanguageCodes;"
属性值为以逗号分隔的语言名称列表,符合 BCP 47 标准 [BCP47]。如果 ‘xml:lang’ 属性的值完全匹配该列表中的某一语言,或其值恰好等于列表中某语言的前缀且紧随该前缀的字符为 “-”,则该字形可被使用。
Animatable: 否。
horiz-adv-x = "<number>"
水平排列时渲染字形后的水平 advance 值。若未指定该属性,则等效于使用字体的 ‘horiz-adv-x’ 属性值。
字形宽度要求为非负数,即使该字形通常是从右向左渲染的(如希伯来语和阿拉伯语脚本)。
Animatable: 否。
vert-origin-x = "<number>"
在字体坐标系中用于垂直排版文本时字形原点的 X 坐标。
若未指定该属性,则等效于使用字体的 ‘vert-origin-x’ 属性值。
Animatable: 否。
vert-origin-y = "<number>"
在字体坐标系中用于垂直排版文本时字形原点的 Y 坐标。
若未指定该属性,则等效于使用字体的 ‘vert-origin-y’ 属性值。
Animatable: 否。
vert-adv-y = "<number>"
在垂直方向渲染字形后的默认垂直前进距离。
若未指定该属性,则等效于使用字体的 ‘vert-adv-y’ 属性值。
Animatable: 否。

字形的图形可以通过 ‘d’ 属性或作为 ‘glyph’ 内容的任意 SVG 来指定。

如果指定了 ‘d’,则该属性中的路径数据将按如下方式处理:

如果 ‘glyph’ 具有子元素,则这些子元素的渲染方式类似于 ‘use’ 元素渲染被引用符号的方式。渲染效果等同于将被引用的 ‘glyph’ 内容深度克隆到一个独立的、未暴露的 DOM 树中。由于该克隆的 DOM 树未暴露,SVG DOM 不会显示克隆实例。

对于支持 CSS 样式化 的用户代理,概念上的深度克隆同样会复制引用的 ‘glyph’ 以及其内容上由 CSS 层叠CSS2 第 6 章)产生的属性值,还会应用于 ‘font’ 元素上的属性值。CSS2 选择器可以作用于原始(即被引用的)元素,因为它们是正式文档结构的一部分;但选择器不能作用于概念上的克隆 DOM 树,因为其内容不属于正式文档结构。

属性继承的行为则如同引用的 ‘glyph’ 已经作为深度克隆的子节点文本包含在文档树中一样。引用的 ‘glyph’ 会继承包含对应字符的元素的属性,而不会继承其原始父节点 ‘font’ 的属性。

在生成的内容中,对于每一次出现的特定 ‘glyph’,会创建一个 ‘g’,该 ‘g’ 承载所有由 CSS 层叠在 ‘font’ 上产生的属性值。该 ‘g’ 内部再包含一个 ‘g’,承载所有由 CSS 层叠在 ‘glyph’ 本身上产生的属性值。原始的 ‘glyph’ 内容会在内部 ‘g’ 中被深度克隆。

如果 ‘glyph’ 同时具有 ‘d’ 属性和子元素,则先渲染 ‘d’,随后渲染子元素。

总体而言,‘d’ 的渲染方式与系统字体相同。例如,若在系统字体或使用 ‘d’ 定义字形的 SVG 字体上应用虚线样式,通常会得到相同的视觉效果。许多实现能够快速渲染带有 ‘d’ 的字形,并且能够利用字体缓存来进一步提升性能。

通过在 ‘glyph’ 中包含子元素来定义字形能够提供更大的灵活性,却也带来更高的复杂度。不同的填充和描边技术可以分别应用于字形的不同部分。例如,字母 “i” 的主体可以是红色,而点可以是蓝色。此方式的一个固有复杂点是单位的处理。任何在表示长度的文本属性上指定的属性(例如 ‘stroke-width’)都可能产生意外结果,因为长度值会在字形的坐标系中进行处理。

20.5 ‘missing-glyph’ 元素

‘missing-glyph’ 元素定义在尝试绘制某字体中未定义的字形时所使用的图形。该元素上的属性意义与 ‘glyph’ 元素上的相对应属性相同。

‘missing-glyph’
类别
容器元素
内容模型
任意数量的以下元素,顺序不限:
属性
DOM 接口

20.6 字形选择规则

在决定要绘制哪一个或哪些字形以表示给定的字符序列时,会按逻辑顺序从 ‘font’ 元素的第一个 ‘glyph’ 到最后一个 ‘glyph’ 进行搜索,检查即将渲染的 Unicode 字符序列是否与该字形的 ‘unicode’ 属性中指定的序列匹配。首次成功匹配即被采用。因此,若要使用 “ffl” 连写字形,则必须先在字体中定义该连写字形,随后再定义单独的 “f” 字形;否则 “ffl” 将永远不会被选中。

请注意,任何 ‘altGlyph’ 的出现都优先于上述 SVG 字体内部的字形选择规则。

20.7 ‘hkern’‘vkern’ 元素

‘hkern’‘vkern’ 元素分别定义水平和垂直方向上字形对的字距调整。

字距对标识同一字体内部的两字形,在它们相邻渲染时需要调整字形间距。除了要求两字形必须属于同一字体外,SVG 字体的字距调整仅在这两个字形对应的字符在属性 ‘font-family’‘font-size’‘font-style’‘font-weight’‘font-variant’‘font-stretch’‘font-size-adjust’‘font’ 这几项属性值相同的情况下才会生效。

字距调整对的一个例子是字母 "Va",如果字母 "V" 和 "a" 靠得更近一些,印刷效果可能会更好。

Right-to-left and bidirectional text in SVG is laid out in a two-step process, which is described in Relationship with bidirectionality. If SVG fonts are used, before kerning is applied, characters are re-ordered into left-to-right (or top-to-bottom, for vertical text) visual rendering order. Kerning from SVG fonts is then applied on pairs of glyphs which are rendered contiguously. The first glyph in the kerning pair is the left (or top) glyph in visual rendering order. The second glyph in the kerning pair is the right (or bottom) glyph in the pair.

为了方便字体设计者并缩小文件体积,单个 ‘hkern’‘vkern’ 元素可以对一组字形(例如一段 Unicode 字符)和另一组字形(例如另一段 Unicode 字符)之间的所有配对指定同一个字距调整值。

‘hkern’ 元素在水平排列(即并排放置)的连续字形对之间定义字距对和水平 advance 调整值。字距调整会减小字符之间的间距(负值会增大间距)。

‘vkern’ 元素在垂直堆叠的字形对之间定义字距对和垂直 advance 调整值,同样会减小字符之间的间距。

‘hkern’
类别
内容模型
空。
属性
DOM 接口
‘vkern’
类别
内容模型
空。
属性
DOM 接口

属性定义

u1 = "[<character> | <urange> ] [, [<character> | <urange>] ]* "
一系列(逗号分隔)的 Unicode 字符(参见 ‘unicode’ 对单个字符的表达方式)以及/或 Unicode 字符范围(参见 CSS2 中的 Unicode 范围描述;[CSS2 第 15.3.3 节)),用于标识在字距对中可能出现的第一个字形集合。如果集合中的某个 Unicode 字符对应多个 ‘glyph’(即拥有相同 ‘unicode’ 但不同 ‘glyph-name’ 的字形),则这些字形全部纳入集合。逗号是分隔符;因此若要对逗号本身进行字距调整,需要在 Unicode 范围中包含逗号或使用 ‘g1’ 以字形名称的形式指定。可能的第一个字形集合是 ‘u1’‘g1’ 两属性所指定集合的并集。
Animatable: 否。
g1 = "<name> [, <name> ]* "
一系列(逗号分隔)的字形名称(即匹配 ‘glyph-name’ 的值的名称),用于标识在字距对中可能出现的第一个字形集合。所有具有该名称的字形都会被包含。可能的第一个字形集合同样是 ‘u1’‘g1’ 两属性所指定集合的并集。
Animatable: 否。
u2 = "[<character> | <urange>] [, [<character> | <urange>] ]* "
‘u1’ 属性相同,只是 ‘u2’ 标识的是字距对中的可能第二个字形。
Animatable: 否。
g2 = "<name> [, <name> ]* "
‘g1’ 属性相同,只是 ‘g2’ 标识的是字距对中的可能第二个字形。
Animatable: 否。
k = "<number>"
用于在字距对中减小两个字形之间间距的数值。该值在字体坐标系中表示。此属性为必需属性。
Animatable: 否。

必须同时提供 ‘u1’‘g1’ 中的至少一个,以及 ‘u2’‘g2’ 中的至少一个。

20.8 描述字体

20.8.1 字体描述概述

字体描述在作者的字体规范与实际字体数据(即用于排版文本并将抽象字形映射为实际可伸缩轮廓或位图的必要数据)之间架起桥梁。字体通过属性(例如 ‘font-family’)进行引用。

每个指定的字体描述都会被添加到字体数据库中,以便用于选择相应的字体数据。字体描述包含诸如字体数据在 Web 上的位置以及该字体数据的特性等描述符。字体描述同样用于将字体属性匹配到特定的字体数据。字体描述的细节程度可以从仅包含字体名称到列出字形宽度不等。

欲了解更多关于字体描述的内容,请参阅 CSS2 规范中的 Fonts 章节CSS2 第 15 章)。

20.8.2 提供字体描述的替代方法

字体描述可以通过以下任一方式指定:

20.8.3 ‘font-face’ 元素

‘font-face’ 元素直接对应 CSS2 中的 @font-face 设施CSS2 第 15.3.1 节),可用于描述任意字体(包括 SVG 字体)的特性。

当用于描述同一文档中包含的 SVG 字体的特性时,建议将 ‘font-face’ 元素作为其所描述的 ‘font’ 元素的子元素,以便 ‘font’ 元素能够自给自足并完整描述。在这种情况下,任何 ‘font-face-src’ 元素位于 ‘font-face’ 元素内部时均被忽略,因为假设该 ‘font-face’ 元素正在描述其父 ‘font’ 元素的特性。

‘font-face’
类别
内容模型
任意数量的 描述性元素,以及最多一个 ‘font-face-src’ 元素,顺序不限。
属性
DOM 接口

属性定义

font-family = "<string>"
‘font-family’ 描述符在 @font-face 规则 中的语法和语义相同。
Animatable: 否。
font-style = "all | [ normal | italic | oblique] [, [normal | italic | oblique]]*"
‘font-style’ 描述符在 @font-face 规则 中的语法和语义相同。字体的样式。取值与 ‘font-style’ 属性相同,只是允许使用逗号分隔的列表。
如果未指定该属性,则其效果等同于指定值 'all'
Animatable: 否。
font-variant = "[normal | small-caps] [,[normal | small-caps]]*"
‘font-variant’ 描述符在 @font-face 规则 中的语法和语义相同。指示此字形是否为字体的小型大写变体。取值与 ‘font-variant’ 属性相同,只是允许使用逗号分隔的列表。
如果未指定该属性,则其效果等同于指定值 'normal'
Animatable: 否。
font-weight = "all | [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900] [, [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]]*"
‘font-weight’ 描述符在 @font-face 规则 中的语法和语义相同。
字形相对于同一字体族中其他字形的粗细。取值与 ‘font-weight’ 属性相同,但有三点例外:
  • 不允许使用相对关键词 (bolderlighter)。
  • 允许使用逗号分隔的值列表,以适用于包含多种粗细的字体
  • 允许使用额外关键词 'all',表示该字体能够匹配所有可能的粗细——要么因为它包含多种粗细,要么因为该字形只有单一粗细。
如果未指定该属性,则其效果等同于指定值 'all'
Animatable: 否。
font-stretch = "all | [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] [, [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] ]*"
‘font-stretch’ 描述符在 @font-face 规则 中的语法和语义相同。指示字形相对于同一字体族中其他字形的压缩或展开程度。取值与 ‘font-stretch’ 属性相同,只是:
  • 不允许使用相对关键词 (widernarrower)。
  • 允许使用逗号分隔的列表
  • 允许使用关键词 'all'
如果未指定该属性,则其效果等同于指定值 'normal'
Animatable: 否。
font-size = "<string>"
‘font-size’ 描述符在 @font-face 规则 中的语法和语义相同。
Animatable: 否。
unicode-range = "<urange> [, <urange>]*"
‘unicode-range’ 描述符在 @font-face 规则 中的语法和语义相同。该范围指可能被字体字形覆盖的 ISO 10646(UNICODE)字符集。除本规范提供的额外信息外,该属性的规范定义在 CSS2(CSS2,第 15.3.3 节)。
如果未指定该属性,则其效果等同于指定值 'U+0-10FFFF'
Animatable: 否。
units-per-em = "<number>"
‘units-per-em’ 描述符在 @font-face 规则 中的语法和语义相同。指 em 方格上的坐标单位数,即字形布局所使用的设计网格大小。
几乎所有其他属性都需要设计网格的定义,因此此值几乎总是必需的。
如果未指定该属性,则其效果等同于指定值 '1000'
Animatable: 否。
panose-1 = "[<integer>]{10}"
‘panose-1’ 描述符在 @font-face 规则 中的语法和语义相同。Panose-1 编号,由十个十进制整数组成,以空白分隔。除本规范提供的额外信息外,该属性的规范定义在 CSS2(CSS2,第 15.3.6 节)。
如果未指定该属性,则其效果等同于指定值 '0 0 0 0 0 0 0 0 0 0'
Animatable: 否。
stemv = "<number>"
‘stemv’ 描述符在 @font-face 规则 中的语法和语义相同。
Animatable: 否。
stemh = "<number>"
‘stemh’ 描述符在 @font-face 规则 中的语法和语义相同。
Animatable: 否。
slope = "<number>"
‘slope’ 描述符在 @font-face 规则 中的语法和语义相同。字体的垂直笔画倾角。除本规范提供的额外信息外,该属性的规范定义在 CSS2(CSS2,第 15.3.6 节)。
如果未指定该属性,其效果如同指定了 '0'
Animatable: 否。
cap-height = "<number>"
‘cap-height’ 描述符在 @font-face 规则 中的语法和语义相同。指字体坐标系中大写字形的高度。
Animatable: 否。
x-height = "<number>"
‘x-height’ 描述符在 @font-face 规则 中的语法和语义相同。指字体坐标系中小写字形的高度。
Animatable: 否。
accent-height = "<number>"
从原点到变音符号顶部的距离,以字体坐标系内的距离度量。
如果未指定该属性,则其效果等同于将属性设置为 ‘ascent’ 属性的值。
Animatable: 否。
ascent = "<number>"
‘ascent’ 描述符在 @font-face 规则 中的语法和语义相同。指字体坐标系中未加重音的最大上高度。
如果未指定该属性,则其效果等同于将属性设置为对应字体的 ‘units-per-em’ 值减去 ‘vert-origin-y’ 值的差。
Animatable: 否。
descent = "<number>"
‘descent’ 描述符在 @font-face 规则 中的语法和语义相同。指字体坐标系中未加重音的最大下深度。
如果未指定该属性,则其效果等同于将属性设置为对应字体的 ‘vert-origin-y’ 值。
Animatable: 否。
widths = "<string>"
‘widths’ 描述符在 @font-face 规则 中的语法和语义相同。
Animatable: 否。
bbox = "<string>"
‘bbox’ 描述符在 @font-face 规则 中的语法和语义相同。
Animatable: 否。
ideographic = "<number>"
对于水平排布的字形,此属性指示实现表意基线对齐所需的对齐坐标。该值为字体坐标系中的偏移量。
Animatable: 否。
alphabetic = "<number>"
‘baseline’ 描述符在 @font-face 规则 中的语法和语义相同。对于水平排布的字形,此属性指示实现字母基线对齐所需的对齐坐标。该值为字体坐标系中的偏移量。
Animatable: 否。
mathematical = "<number>"
‘mathline’ 描述符在 @font-face 规则 中的语法和语义相同。对于水平排布的字形,此属性指示实现数学基线对齐所需的对齐坐标。该值为字体坐标系中的偏移量。
Animatable: 否。
hanging = "<number>"
对于水平排布的字形,此属性指示实现悬挂基线对齐所需的对齐坐标。该值为字体坐标系中的偏移量。
Animatable: 否。
v-ideographic = "<number>"
对于垂直排布的字形,此属性指示实现表意基线对齐所需的对齐坐标。该值相对于字形特定的 ‘vert-origin-x’ 属性,以字体坐标系计。
Animatable: 否。
v-alphabetic = "<number>"
对于垂直排布的字形,此属性指示实现字母基线对齐所需的对齐坐标。该值相对于字形特定的 ‘vert-origin-x’ 属性,以字体坐标系计。
Animatable: 否。
v-mathematical = "<number>"
对于垂直排布的字形,此属性指示实现数学基线对齐所需的对齐坐标。该值相对于字形特定的 ‘vert-origin-x’ 属性,以字体坐标系计。
Animatable: 否。
v-hanging = "<number>"
对于垂直排布的字形,此属性指示实现悬挂基线对齐所需的对齐坐标。该值相对于字形特定的 ‘vert-origin-x’ 属性,以字体坐标系计。
Animatable: 否。
underline-position = "<number>"
下划线在字体坐标系中的理想位置。
Animatable: 否。
underline-thickness = "<number>"
下划线的理想粗细,以字体坐标系中的长度表示。
Animatable: 否。
strikethrough-position = "<number>"
删除线在字体坐标系中的理想位置。
Animatable: 否。
strikethrough-thickness = "<number>"
删除线的理想粗细,以字体坐标系中的长度表示。
Animatable: 否。
overline-position = "<number>"
上划线在字体坐标系中的理想位置。
Animatable: 否。
overline-thickness = "<number>"
上划线的理想粗细,以字体坐标系中的长度表示。
Animatable: 否。

以下元素和属性对应 @font-face 规则中的 ‘src’ 描述符。(参见 CSS2 规范中 @font-face 规则'src' 描述符 的章节[CSS2],第 15.3.1 与 15.3.5 节。)

20.8.4 ‘font-face-src’ 元素

‘font-face-src’ 元素与后续章节中描述的 ‘font-face-uri’‘font-face-format’ 元素共同对应 @font-face 规则中的 ‘src’ 描述符。(参见 CSS2 规范中 @font-face 规则'src' 描述符 的章节[CSS2],第 15.3.1 与 15.3.5 节。)

‘font-face-src’ 元素包含 ‘font-face-uri’‘font-face-name’ 元素,前者用于引用外部字体,后者用于引用本地字体。

‘font-face-src’
类别
内容模型
以下任意顺序出现的一个或多个元素
属性
DOM 接口

20.8.5 ‘font-face-uri’‘font-face-format’ 元素

‘font-face-uri’ 元素在 ‘font-face-src’ 元素内部使用,用于引用定义在当前 SVG 文档内或外的字体。

‘font-face-uri’ 引用的是 SVG 字体 时,引用必须指向一个 SVG ‘font’ 元素,因此需要使用片段标识符 [RFC3986]。被引用的 ‘font’ 元素可以是本地的(即与 ‘font-face-uri’ 同在一个文档中)或远程的(即位于不同文档中)。

‘font-face-uri’
类别
内容模型
任意数量的以下元素,顺序不限:
属性
DOM 接口

属性定义

xlink:href = "<IRI>"
‘xlink:href’ 属性指定被引用字体的位置。
Animatable: 否。

子元素 ‘font-face-format’(属于 ‘font-face-uri’)用于指明该 ‘font-face-uri’ 所引用字体所支持的格式。它们对应于 @font-face 规则中 ‘src’ 描述符的 format(…) 子句。

‘font-face-format’
类别
内容模型
空。
属性
DOM 接口

属性定义

string = "<anything>"
‘string’ 属性是对用户代理的提示,指明父 ‘font-face-uri’ 元素所引用的字体支持的格式列表。属性值的语法为 CSS2 中定义的格式字符串 (参见 CSS2),如 'truetype'。有关格式提示的解释方式,请参见 CSS2 中 'src' 描述符([CSS2],第 15.3.5 节)。
Animatable: 否。

20.8.6 ‘font-face-name’ 元素

‘font-face-name’ 元素在 ‘font-face-src’ 元素内部使用,以名称引用本地字体。它对应于 @font-face 规则中 ‘src’ 描述符的 local(…) 子句。

‘font-face-name’
类别
内容模型
空。
属性
DOM 接口

属性定义

name = "<anything>"
‘name’ 属性指定本地字体的名称。与 @font-face 规则中 local(…) 子句的括号内语法不同,此属性中的字体名称不需要使用单引号或双引号括起。有关字体名称的解释方式,请参见 CSS2 中的 'src' 描述符([CSS2],第 15.3.5 节)。
Animatable: 否。

20.9 DOM 接口

SVGFontElement 接口

The SVGFontElement interface corresponds to the ‘font’ element.

Object-oriented access to the attributes of the ‘font’ element via the SVG DOM is not available.

interface SVGFontElement : SVGElement,
                           SVGExternalResourcesRequired,
                           SVGStylable {
};

SVGGlyphElement 接口

The SVGGlyphElement interface corresponds to the ‘glyph’ element.

Object-oriented access to the attributes of the ‘glyph’ element via the SVG DOM is not available.

interface SVGGlyphElement : SVGElement,
                            SVGStylable {
};

SVGMissingGlyphElement 接口

The SVGMissingGlyphElement interface corresponds to the ‘missing-glyph’ element.

Object-oriented access to the attributes of the ‘missing-glyph’ element via the SVG DOM is not available.

interface SVGMissingGlyphElement : SVGElement,
                                   SVGStylable {
};

SVGHKernElement 接口

The SVGHKernElement interface corresponds to the ‘hkern’ element.

Object-oriented access to the attributes of the ‘hkern’ element via the SVG DOM is not available.

interface SVGHKernElement : SVGElement {
};

SVGVKernElement 接口

The SVGVKernElement interface corresponds to the ‘vkern’ element.

Object-oriented access to the attributes of the ‘vkern’ element via the SVG DOM is not available.

interface SVGVKernElement : SVGElement {
};

SVGFontFaceElement 接口

The SVGFontFaceElement interface corresponds to the ‘font-face’ element.

Object-oriented access to the attributes of the ‘font-face’ element via the SVG DOM is not available.

interface SVGFontFaceElement : SVGElement {
};

SVGFontFaceSrcElement 接口

The SVGFontFaceSrcElement interface corresponds to the ‘font-face-src’ element.

Object-oriented access to the attributes of the ‘font-face-src’ element via the SVG DOM is not available.

interface SVGFontFaceSrcElement : SVGElement {
};

SVGFontFaceUriElement 接口

The SVGFontFaceUriElement interface corresponds to the ‘font-face-uri’ element.

Object-oriented access to the attributes of the ‘font-face-uri’ element via the SVG DOM is not available.

interface SVGFontFaceUriElement : SVGElement {
};

SVGFontFaceFormatElement 接口

The SVGFontFaceFormatElement interface corresponds to the ‘font-face-format’ element.

Object-oriented access to the attributes of the ‘font-face-format’ element via the SVG DOM is not available.

interface SVGFontFaceFormatElement : SVGElement {
};

SVGFontFaceNameElement 接口

The SVGFontFaceNameElement interface corresponds to the ‘font-face-name’ element.

Object-oriented access to the attributes of the ‘font-face-name’ element via the SVG DOM is not available.

interface SVGFontFaceNameElement : SVGElement {
};
SVG 1.1(第二版)– 2011年8月16日首页目录上页下页元素属性属性