请参阅本文档的 勘误, 其中可能 包含规范性更正。
Copyright © 2021 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
本文档规定定时文本标记语言 (TTML) 版本 2 的第二版, 亦称 TTML2 (2e),具体规定其词汇及相应的 语义。
定时文本标记语言是一种内容类型,用于表示 定时文本媒体,以便在创作 系统之间交换。定时文本是以内在或 外在方式与定时信息关联的文本信息。
其预期用途是在目前用于 字幕和说明字幕功能的传统分发内容 格式之间,对定时文本信息进行转码或交换。
除了用于传统分发内容
格式之间的交换,TTML 内容也可以直接用作分发格式,
例如,提供一种标准内容格式,供 [HTML] 文档中的 <track>
元素引用,或供 [SMIL 3.0] 文档中的 <text> 或
<textstream> 媒体元素引用。
本节描述本文档发布时的状态。其他文档可能 取代本 文档。当前 W3C 出版物的列表以及本技术报告的最新修订版可 在 W3C 技术报告索引(https://www.w3.org/TR/)中找到。
本文档是定时文本标记语言 2 (TTML2) 第二版的第二份 候选 推荐标准 (CR2), 预计将晋级为提案 推荐标准,时间不早于 2021 年 4 月 6 日。 本第二份 候选推荐标准 (CR2) 未对 先前的第一份 候选 推荐标准 (CR1) 进行技术更改;也就是说,仅进行了编辑性(非实质性)更改。
本规范要退出 CR 阶段,必须满足以下标准:对于受到 本规范引入的实质性 更改影响的每项特性(扩展),必须至少有两个独立实现支持 已经受到 上述影响的特性(扩展)。本次修订未添加或移除任何(底层)特性(扩展),因此, 没有任何特性 (扩展)被标记为有风险。
已提供一份 实现
报告。
相较于 TTML2 第 1 版的技术更改摘要可
在 定时文本标记语言 2 (TTML2) 更改摘要 中查阅。
欢迎通过在 GitHub 上提交
议题 或
发送电子邮件至 public-tt@w3.org
(订阅,
归档)
提交对本文档的意见,主题行须以 [ttml2] 开头。
本文档由 定时文本 (TT) 工作 组 作为候选推荐标准快照发布。
作为候选推荐标准发布并不意味着获得 W3C 会员的认可。 候选推荐标准快照已经过 广泛审查 ,旨在收集实现经验。
本文档由一个依据 W3C 专利 政策 运作的工作组编制。W3C 维护着一份 公开的 专利披露列表,列出与该工作组交付成果相关的所有专利披露;该页面还 包含有关 披露专利的说明。任何实际知晓某项专利且认为该专利 包含 必要权利要求 的个人,必须 依据 W3C 专利政策 第 6 节 披露相关信息。
本文档受 2020 年 9 月 15 日的 W3C 流程文档 管辖。
除非另有规定,本节及其各小节均为非规范性内容。
定时文本标记语言 (TTML) 版本 2,亦称 TTML2, 为文本信息的一个特定子集提供标准化表示, 作者或创作系统为交换和处理目的,将样式、布局和定时语义 与这些文本信息关联。
TTML 专门设计为仅满足一组有限的要求, 这些要求由 [TTAF1-REQ] 确立,并在 M 要求 中汇总。具体而言,仅满足那些服务于 与现有传统分发系统进行交换 这一需求的要求。
除了用于传统分发内容
格式之间的交换,TTML 内容也可以直接用作分发格式,例如,
提供一种标准内容格式,供 <track>
元素(位于 [HTML] 文档中),或 <text> 或
<textstream> 媒体元素(位于 [SMIL 3.0] 文档中)引用。TTML 的某些
特性支持
内容的流式传输,如 R 流式传输 TTML 内容 所述。
注:
虽然 TTML 并非专门为直接(嵌入式)集成到 HTML 或 SMIL 文档实例中而设计,但并不排除这种集成。
注:
在某些使用场景中,使用 动画内容来描绘定时文本 文档实例 所表达的同一内容的 手语表示可能是适当的。这一使用场景 并未 由 TTML 机制明确处理,但可以通过某些 外部多媒体集成技术来处理,例如 SMIL。
注:
在本规范的早期草案中,TTML 被称为 DFXP(分发 格式交换配置规范)。出于历史原因,后一术语在 某些上下文中仍予以保留,例如配置规范名称和指示符。
TTML 预期用于更广泛的定时文本 创作、转码、分发和呈现机制环境,这些机制基于 图 1 – 系统模型 所示的系统模型,其中定时 文本标记语言 充当一组异构 创作系统之间的双向交换格式,并在按需转码 或编译为目标分发格式之后,充当面向 一组异构分发格式的单向交换格式, 其中一种特定的分发格式就是 TTML 内容文档。
这里描述了两类处理器。创作系统和验证处理器 是转换处理器的示例;转码系统和渲染处理器 是呈现处理器的示例。TTML 配置规范文档可以与 TTML 内容文档或处理器关联,使其各自能够表达 可用、禁止或必需的特性。总体而言,这使得从 创作到呈现这一链条上的约束能够用形式语言表达。
处理器可以实现所定义的到 TTML 中间文档的映射。 系统模型描绘了这样一种渲染处理器,它进一步将这些文档映射 为 HTML 和 CSS 片段,这些片段可以插入 [HTML] 文档中, 由用户代理显示。
以下各节描述 TTML 文档 实例 的简单示例:
TTML 文档实例 由一个 tt
文档元素构成,该元素包含
头部和主体,其中头部指定文档级元数据、样式
定义和布局定义,主体则指定文本内容,其中混合了
对样式和布局信息的引用,以及内联样式和定时信息。
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head>
<metadata/>
<styling/>
<layout/>
</head>
<body/>
</tt>
|
文档级元数据可以指定文档标题、描述 和版权信息。此外,也可以指定来自 其他命名空间的任意元数据。
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata"> <ttm:title>定时文本 TTML 示例</ttm:title> <ttm:copyright>作者 (c) 2006</ttm:copyright> </metadata> |
样式信息可以以样式规定定义的形式指定, 由布局和内容信息引用, 也可以与内容信息一起内联指定,或同时采用两种方式。
在 示例片段 – TTML 样式 中,定义了四组 样式 规定,其中一组用作默认样式集合。
<styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
<!-- s1 指定默认颜色、字体和文本对齐方式 -->
<style xml:id="s1"
tts:color="white"
tts:fontFamily="proportionalSansSerif"
tts:fontSize="22px"
tts:textAlign="center"
/>
<!-- 使用黄色文本的替代样式,其余与样式 s1 相同 -->
<style xml:id="s2" style="s1" tts:color="yellow"/>
<!-- 基于 s1 但右对齐的样式 -->
<style xml:id="s1Right" style="s1" tts:textAlign="end" />
<!-- 基于 s2 但左对齐的样式 -->
<style xml:id="s2Left" style="s2" tts:textAlign="start" />
</styling>
|
布局信息定义一个或多个区域,内容
预期在其中呈现 — 此处定义一个区域。区域定义可以引用
一组或
多组样式规定,以允许流入该
区域的内容继承这些样式。
在 示例片段 – TTML 布局 中,区域
定义
引用了样式规定 s1,并通过特定的内联
样式加以补充,这些样式共同允许流入区域的内容继承
该区域的样式(前提是
某样式尚未在内容上显式指定,也未通过
内容层次结构继承。)
<layout xmlns:tts="http://www.w3.org/ns/ttml#styling">
<region xml:id="subtitleArea"
style="s1"
tts:extent="560px 62px"
tts:padding="5px 3px"
tts:backgroundColor="black"
tts:displayAlign="after"
/>
</layout>
|
文档实例 的内容
在其主体中表达,主体按块级和内联文本元素组织。
内容元素的层次组织在
确定空间和时间关系方面起主要作用。例如,在
示例片段 – TTML 主体 中,每个段落
(p 元素)
按指定的词法顺序流入其目标区域;此外,
每个段落的活动时间区间根据适用的
时间包含语义,相对于其父元素或兄弟元素进行定时 —
在此例中,作为父元素的 div 被(默认)解释为并行时间
容器。
<body region="subtitleArea">
<div>
<p xml:id="subtitle1" begin="0.76s" end="3.45s">
这似乎是个悖论,不是吗,
</p>
<p xml:id="subtitle2" begin="5.0s" end="10.0s">
视网膜上形成的图像<br/>
竟然是倒置的?
</p>
<p xml:id="subtitle3" begin="10.0s" end="16.0s" style="s2">
真令人困惑,为什么<br/>
我们看到的东西不是上下颠倒的?
</p>
<p xml:id="subtitle4" begin="17.2s" end="23.0s">
那么,你从未听过这样的理论,<br/>
说大脑也是倒置的?
</p>
<p xml:id="subtitle5" begin="23.0s" end="27.0s" style="s2">
确实没有!多么美妙的事实!
</p>
<p xml:id="subtitle6a" begin="28.0s" end="34.6s" style="s2Left">
但这是怎么证明的?
</p>
<p xml:id="subtitle6b" begin="28.0s" end="34.6s" style="s1Right">
是这样的:我们所说的
</p>
<p xml:id="subtitle7" begin="34.6s" end="45.0s" style="s1Right">
大脑的顶部<br/>
实际上是它的底部
</p>
<p xml:id="subtitle8" begin="45.0s" end="52.0s" style="s1Right">
而我们所说的底部<br/>
实际上是它的顶部,
</p>
<p xml:id="subtitle9a" begin="53.5s" end="58.7s">
这只是个命名问题。
</p>
<p xml:id="subtitle9b" begin="53.5s" end="58.7s" style="s2">
真是令人欣喜!
</p>
</div>
</body>
|
第一条字幕 字幕 1 – 时间区间 [0.76,
3.45)
在 0.76 至 3.45 秒的时间区间内呈现。
这条
字幕从其呈现所在的区域继承字体族、字号、
前景色和文本对齐
方式。由于段落上没有显式指定区域,
指定了区域的最近祖先元素决定
目标区域。还要注意,内容在
包含它的区域底部(后边缘)呈现,这是因为
tts:displayAlign="after"
已在区域定义中指定。
注:
记法 "[X,Y]" 表示 从 X 到 Y 的闭区间,包括 X 和 Y; "[X,Y)" 表示 从 X 到 Y 的右半开区间,包括 X 但不包括 Y; "(X,Y]" 表示 从 X 到 Y 的左半开区间,不包括 X 但包括 Y; "(X,Y)" 表示 从 X 到 Y 的开区间,既不包括 X 也不包括 Y。
注:
在此示例中,p 元素用作呈现
元素,而非语义元素,即语言学意义上的段落。
应由作者决定使用哪些 TTML 元素来传达
预期含义。例如,此示例可以改为在
span 元素上使用定时,以保留
语义段落的完整性。
注:
在此示例中,region 属性
指定在 body 元素上。
如果改为指定在 div
元素上,或确实指定在每个单独的 p 元素上,呈现效果也相同。通常,
region 会指定在文档层次结构的适当位置,
以便于表达,同时减少冗长。
还要注意,将 region 放在 body 上的一个效果
是阻止任何后代元素在不同的
区域中呈现。这是因为任何这样的后代元素都会从呈现中被剪除,
这是
[构建
中间文档]
过程的结果。
![]() |
第二条字幕继续使用默认样式,不过它包含
两行文本,中间由作者指定的换行符分隔。请注意,
使用 tts:textAlign="center" 指定段落在
内联推进方向上的对齐方式所产生的效果。
![]() |
第三条字幕接着出现,使用一种变体样式, 以不同颜色覆盖默认样式的前景色。
![]() |
第四条字幕恢复为默认样式。
![]() |
第五条字幕接着出现,再次使用一种变体样式, 以不同颜色覆盖默认样式的前景色。
![]() |
在下一个活动时间区间内,两条不同的字幕同时处于活动状态, 表达各条字幕的段落使用不同的样式,覆盖默认样式的颜色和段落 文本对齐方式。请注意,流动顺序由元素在内容层次结构中出现的词法 顺序决定。
![]() |
下一条字幕以类似方式指定, 使用样式覆盖,使段落在 内联推进方向上右对齐(末端对齐)。
![]() |
第八条字幕使用与前一条 字幕相同的样式覆盖,以保持段落的右对齐 (末端对齐)。
![]() |
在最后一个(第九个)活动时间区间内,两条不同的 字幕再次同时处于活动状态,但第二个段落应用了 不同的样式,以覆盖默认颜色。 请注意,流动顺序由 元素在内容层次结构中出现的词法顺序决定。
![]() |
上述示例展示了内容按时间和词法顺序 流入单个区域的方式。 这一概念可以扩展到多个区域, 使内容的不同部分在各自独立的时间 流入各个区域。 例如,在 示例文档 – TTML 的 多区域布局 中,有两个 字幕段落,分别位于不同的区域。第二个段落 在第一个段落从视图中移除之前变为可见, 并在此后保持可见,因此可见字幕的数量 依次为一条、两条,再到一条。
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
<style xml:id="pStyle"
tts:backgroundColor="cyan"
tts:textAlign="center"
tts:fontSize="6.7rh"/>
<style xml:id="spanStyle"
tts:color="white"
tts:backgroundColor="black"
tts:fontFamily="proportionalSansSerif"/>
</styling>
<layout xmlns:tts="http://www.w3.org/ns/ttml#styling">
<region xml:id="topCenterArea"
tts:position="center top 10% "
tts:extent="80% 20%"
tts:displayAlign="before"
tts:backgroundColor="purple"
tts:showBackground="whenActive"/>
<region xml:id="bottomLeftArea"
tts:position="left 10% bottom 10% "
tts:extent="60% 20%"
tts:displayAlign="after"
tts:backgroundColor="green"
tts:showBackground="whenActive"/>
</layout>
</head>
<body>
<div>
<p xml:id="subtitle1" begin="00:00:00.500" end="00:00:01.500"
region="topCenterArea" style="pStyle">
<span style="spanStyle">我要问问我们的生理学讲师,为什么<br/>
他从未给我们讲过那个精妙的理论!</span>
</p>
<p xml:id="subtitle2" begin="00:00:01" end="00:00:02"
region="bottomLeftArea" style="pStyle">
<span style="spanStyle">我愿付出些代价,只求在提出<br/>
这个问题时能在场!</span>
</p>
</div>
</body>
</tt>
|
此示例包含两条在时间上重叠的字幕。 它在 0.5s 到 2s 之间产生三个不同的区间。 文档中的时间采用 hh:mm:ss 格式表示。 每个区域和段落均被指定为比其内容更大的尺寸, 并以对比鲜明的背景色显示, 以使其位置及其后代的位置更加清晰可见。 上方区域为紫色,下方区域为绿色。 每个 p 为青色,每个 span 为黑底白字。
![]() |
在第一个区间,即 0.5 到 1.0 秒之间,呈现两行文本, 与顶部居中区域的前边缘对齐。 因此,该区域未被占用的部分在文本的下方显示为紫色 区域。 同样,p 元素未被占用的部分显示为青色, 围绕着表示 span 元素所占空间的黑色背景。
![]() |
在第二个区间,即 1.0 到 1.5 秒之间,第一条字幕保持可见, 由两行文本组成的第二条字幕在左下区域呈现。 新文本与其所在区域的后边缘对齐, 因此,该区域未被占用的部分在文本的上方显示为绿色。
![]() |
在第三个区间,即 1.5 到 2.0 秒之间,第一条字幕不再 呈现。
上述示例展示了可以使用 TTML 创作的主要信息类型:元数据、样式、布局、定时和内容。通常, 样式和布局信息在 文档实例 中分别指定。内容信息 以层次化方式表达,体现空间(流动)和 定时信息的组织方式。内容直接或间接引用样式和布局 信息, 并且可以指定内联样式覆盖。
| BPD |
块推进尺寸 |
| DAR |
显示宽高比 |
| DFXP |
分发格式交换配置规范 |
| IPD |
内联推进尺寸 |
| ISD |
中间同步文档 |
| PAR |
像素宽高比 |
| SAR |
存储宽高比 |
| TT |
定时文本 |
| TTML |
定时文本标记语言 |
| TTAF |
定时文本创作格式 |
| TTWG |
定时文本工作组 |
由 精简的 XML 信息集 表示的抽象数据集实例。
定义一类 XML 信息 集 [XML InfoSet] 的一组约束。
一种 样式属性,或其作为 样式特性 的内部表示, 其定义规定它可以通过 离散 或 连续 动画实现动画效果。 一种 样式属性,如果其定义 (1) 将其可动画性指定为 none,或 (2) 未指定其可动画性,则称为 不可动画化样式。
参见 无指示符配置规范。
一种 span 元素,它不存在于
文档实例 中,而是被合成并插入相应的
文档,
即 抽象文档实例 中,执行此操作的是
[构建匿名
span] 过程,
该过程发生于 11.3.1.3 中间同步
文档构建 或 11.3.1.4 同步流处理
步骤期间。
一组可寻址的 逻辑像素, 表示某种输出介质上某个平面中有界矩形区域的 可视内容,其定义见 [XSL-FO 1.1],矩形 区,§4.2。 也称为盒,尤其是在 [CSS2] 和 [HTML] 的上下文中。
XML 文档中每个显式指定或采用默认值的属性都对应一个属性 信息 项,其定义见 [XML InfoSet],§2.3。
一种上下文,其中 audio
元素被指定
用于呈现(渲染)。这样的 audio 元素
可以通过在
data 元素中内联指定音频数据,该元素位于
source 子元素内;也
可以引用另一个
audio 元素,该元素指定于
音频定义上下文 中;或者同时采用两种方式。
一种 数据资源,包含已编码或未编码的音频 样本。
音频样本序列。
文档坐标空间 中的一个矩形, 背景呈现对象(例如颜色或图像)相对于该矩形 进行(可能的)裁剪和绘制;更 具体地说,它是三个矩形之一:与背景关联的元素生成的区的边框矩形、 内边距矩形或内容 矩形。由 样式属性 tts:backgroundClip 指定的样式特性的计算值决定 应用哪个矩形。
文档坐标空间 中的一个矩形, 背景呈现对象(例如颜色或图像)相对于该矩形 定位或确定尺寸;更 具体地说,它是三个矩形之一:与背景关联的元素生成的区的边框矩形、 内边距矩形或内容 矩形。由 样式属性 tts:backgroundOrigin 指定的样式特性的计算值决定 应用哪个矩形。
一种 配置规范,由
ttp:profile 元素的 use 属性引用,
作为一组基线(初始)规定,用于填充
引用它的配置规范。
区 的一种基本类型,定义见 [XSL-FO 1.1],块区,§4.4,其子项 要么全部为 块区(如果该块区不是 行区), 要么全部为 内联区(如果该块区是 行区)。
块显示是一组布局语义,可以应用于 内容元素, 适用于某些上下文,其中子区沿块推进 方向依次排布。
注:
在 [CSS2] 中,
当值为
block 的 CSS display 属性在呈现处理期间应用于
内容元素 时,就表示块显示。在
[XSL-FO 1.1] 中,块显示
发生于排布 fo:block 元素时。
在某个格式化上下文中,块区推进所采用的方向。在 水平书写模式的上下文中, 块推进方向通常为从上到下;而在 垂直书写模式的上下文中, 通常为从右到左或从左到右。
一种 数据资源,其内容由
内容处理器 提供,而非由
定时文本内容文档
实例 提供,它通过
source 元素,或 src
属性(属于 source 元素
或 嵌入
内容元素)引用。
XML 文档中出现的每个数据字符都对应一个字符信息 项,其定义见 [XML InfoSet],§2.6。 共享同一父 元素信息项 的一个或多个连续字符信息项组成的序列 称为 文本节点。
注:
参见 B.4 字符信息项, 了解更多信息。
一种 data 元素,它直接
嵌入实际字节的表示,
这些字节属于 嵌入数据资源,所采用的方式是使用
子 chunk 元素。
一种 配置规范,其 constituents 分量 属于 组合 规定集,该规定集属于 关联的 配置规范实例,且该分量包含 多于一个非 null 指示符。
(1) 功能单元;(2) 语法表达式的一部分;(3) 状态对象的字段 (或变量)。
单元格的尺寸(范围),其计算方式为:将 根容器区域
的宽度除以单元格列数,即
水平轴 上的单元格数,并将
根容器区域 的高度除以
单元格行数,即垂直轴上的单元格
数,其中单元格列数和行数由
ttp:cellResolution 参数属性决定。
一种 样式集,包含计算样式值,其确定方式 见 10.4.4.3 计算样式集 处理。
本规范定义或供本规范使用的某种类型的任何元素,该类型允许
指定
condition 属性,其求值
结果
决定该元素已定义的语义是适用还是被忽略。如果没有
此
属性,则该元素的语义始终适用。
如果 条件化
元素 的条件表达式求值
为 false,则该元素及其后代元素称为
有条件排除。
如果某元素未被有条件排除,则称为
有条件包含。
注:
一个被有条件包含、但不允许使用或未
指定
condition 属性的元素,可以
称为
无条件包含的元素。
当某元素被有条件排除时,除非另有规定,其所有
语义都被忽略,相关
说明见 condition,其中给出了
有条件排除的详细语义。
注:
对于某些元素,例如
style 元素,
有条件排除会导致忽略该元素的部分而非全部语义,
在这种情况下,会明确描述这种行为。
内容 模块 定义的任何元素类型,以及 音频模块 和 图像模块 定义的任何元素类型,后两者分别出现于 音频呈现上下文 或 图像呈现上下文 中。
注:
tt
和 head 元素类型,
定义于 8.1 内容元素
词汇,
被有意排除在上述定义的范围之外,但包含在
相应模块的定义中,即
文档 和 头部 模块,见
表 5-3 – 元素词汇。
除上述元素类型外,还包括由 扩展模块 指定为内容元素类型的元素类型。
一种 图像资源,包含具有语义意义的 内容,例如,表示字幕渲染结果的 栅格图像。
一种处理系统,能够导入(接收)定时文本标记语言 内容,以转换、呈现或以其他方式处理该内容。
一种 配置规范,满足以下条件:(1)
type 分量
所属的关联
配置规范实例 中,该分量的值为
content,并且
(2) 其中的 特性 和 扩展 集合
是定时文本标记语言内容不得、必须或可以使用的集合。
一个逻辑矩形区域,在执行呈现
处理时,内容被渲染到其中。
当上下文无歧义时,简称为区域。每个内容区域
都
由显式指定或隐含的
region 元素定义,
该元素定义内容区域相对于
根容器区域 的尺寸,
以及其他样式和时间特征。
在本规范正文中定义的 模块, 具体而言,是 表 5-3 – 元素词汇 和 表 5-5 – 属性词汇 定义的模块。
一种上下文,其中 data
元素被指定
用于语义绑定(关联)。这样的 data 元素
可以通过在
data 元素中内联指定数据,该元素位于
source 子元素内;也
可以引用另一个
data 元素,该元素指定于
数据定义上下文 中;或者同时采用两种方式。仅仅
在此(或任何)上下文中
存在
data 元素,并不意味着具有呈现(渲染)
语义。
一种上下文,其中 data
元素被指定为
可共享的定义,供另一个 data 元素
在 数据绑定上下文 中引用,即一种
data 元素,
其父元素为
resources 元素。
数据模块 定义的任何元素类型。
使用 数据元素 表示或引用的任意数据资源。例如, 数据资源可以用于嵌入或引用音频片段、字体、图像,或 任意应用数据,这些内容位于 定时文本内容文档 实例 中。
一种默认的 处理器配置规范,用于计算 有效处理器配置规范,适用于不存在 已声明或推断出的 处理器配置规范 的情况,其中该默认处理器 配置规范由 构建默认处理器配置规范 过程确定。
一种默认的 非内联区域,在
不存在
显式指定的非内联
region 元素时隐含存在,即
未将任何 region 元素指定为
子元素,
其父元素为 layout 元素的情况。
一种 配置规范,它与
<profile-designator> 关联,
关联方式为使用 designator 属性或配置规范定义中的叙述性文字。
参见 DAR 的定义。
一种逻辑坐标空间,用于确定 根容器区域 的宽高比和分辨率,该区域用于格式化和呈现 一个 文档实例,更多信息参见 H 根容器区域语义。
一个 定时文本文档实例。
在 内容 处理器 外部的隐含上下文或环境, 文档交换发生于其中,带外协议或规范 可以在其中定义某些默认行为,例如隐含的配置规范。
在 内容 处理器 内部的隐含上下文或环境, 文档处理发生于其中,带外协议或规范 可以在其中定义某些默认行为,例如建立或创建 合成文档同步基准。
一种时间坐标系,相对于该坐标系解释计算后的时间表达式,这些表达式位于 一个 文档实例 中,更多信息参见 7.2.11 ttp:timeBase。
一种 内容配置规范,由全部 内容配置规范 的集合计算得出, 这些配置规范由 TTML 文档实例 显式或隐式引用,或分配给该实例,并应用任何 显式或隐式的配置规范组合方法和配置规定组合方法,相关说明参见 以下 构建有效内容配置规范 过程。 对给定的 文档 实例 执行验证时, 该验证使用文档的 有效内容配置规范 执行。
一种 处理器配置规范,由全部 处理器配置规范 的集合计算得出, 这些配置规范由 TTML 文档实例 显式或隐式引用,或分配给该实例,并应用任何 显式或隐式的配置规范组合方法和配置规定组合方法,相关说明参见 以下 构建有效处理器配置规范 过程。 在确定 内容处理器 能否处理给定的 文档实例 时, 该判断 使用文档的 有效 处理器配置规范 作出。
一种配置规范,用于选择 验证处理 期间使用的模式(或模式集), 它由 构建有效 验证配置规范 过程确定。
在 验证 处理 期间使用的一组模式, 它由 构建有效 验证模式 过程确定。
注:
由于没有任何模式语言能够表达本规范所定义的针对 TTML 内容的全部 约束,因此预期还将采用额外的 内置程序化(基于代码的)模式,使用这些模式的是 执行验证的内容处理器。
XML 文档中出现的每个元素都对应一个元素信息 项,其定义见 [XML InfoSet],§2.2。 也称为 元素节点。
注:
参见 B.2 元素信息项, 了解更多信息。
一种 数据资源,嵌入在
定时文本内容文档
实例 中,其表示方式为使用
data 元素,无论
该
data 元素表示的是
实际字节,这些字节属于
数据资源,还是引用
外部数据资源。
一种 数据资源,不包含可渲染内容,并且, 进一步而言, 如果尝试将该资源解析为一系列内容样本,则不会产生 任何样本。
一种内容配置规范,服务于一组内容交换需求。
一种语法或语义表达或能力,在另一份(公开或私有) 规范中定义并 标记(使用扩展标识)。
关于某项
扩展 的约束或要求的规定,通常通过
ttp:extension 元素表达。
一种 数据资源,其表示位于
外部(不包含在内部),相对于
定时文本内容文档
实例 而言,它通过
src
属性(属于 source 元素
或 嵌入
内容元素)引用。
一种语法或语义表达或能力,在本规范(或本规范过去或 未来的修订版)中定义并 标记(使用特性标识)。
关于某项
特性 的约束或要求的规定,通常通过
ttp:feature 元素表达。
一种字幕(或说明字幕),即使未启用字幕(说明字幕), 也预期始终显示。强制字幕(说明字幕) 用于避免将有关外语、异族语言,或媒体中出现的文字 (例如标牌中的文字)的翻译字幕(说明字幕) 制作为开放式字幕,即烧录到画面中。
由 呈现 处理器 使用的内部过程,其目的是选择 一组作者定义的字体和平台字体,用于布局和呈现 处理,该过程的输入参数 包括字体相关特性的计算值、 各个字体的能力,以及正在呈现的文本内容。
一种 数据资源,包含字体信息,例如 字符到字形的映射数据、字形轮廓或图像、 字形度量,以及字符到字形的映射和渲染过程中使用的其他数据。
注:
在某些例外情况下,术语高度可能指 水平轴, 更多信息参见 10.2.27 tts:lineHeight。
内联区 的一种类型,定义见 [XSL-FO 1.1],字形区,§4.6.2。 在本规范中,字形区与一个或多个内容字符,以及 来自某个特定字体的一个或多个字形关联,呈现字形区时渲染的 正是这些字形。有间距字形区是 一种字形区,它与 至少一个有间距字形关联,即具有非零前进量(宽度或高度)的字形。 无间距字形区是 非有间距字形区的字形区,即完全由无间距字形构成。
一种 字形区,它是使用上下文所隐含的某个其他区的
后代区。
例如,内联区 I 的一个后代区,如果是
字形区,则是
I 的字形区后代。
一种上下文,其中 image
元素被指定
用于呈现(渲染)。这样的 image 元素
可以使用一个
data 元素内联指定图像数据,该元素位于
source 子元素中;或者
可以引用另一个
image 元素,该元素指定于
图像定义上下文 中;也可以同时采用两种方式。
一种 数据资源,包含栅格图像。
一种 处理器配置规范,由 构建推断的 处理器配置规范 过程确定,它可以 作为 有效处理器配置规范, 用于执行 验证处理。
Animation.class
元素组中的一个元素,
它以内联方式定义,作为
与该动画关联的 内容元素 或 region 元素的直接
子元素。
内联动画元素
与其父 内容
元素 或 region 元素之间存在一对一关系。
区 的一种类型,定义见 [XSL-FO 1.1], 内联区,§4.6,其子项 全部由 内联区 组成,例如 字形区。
内联块显示是一组布局语义,可以应用于 内容元素, 适用于某些上下文,其中生成的块区被视为原子区,在 内联布局上下文中排布,即从外部看, 该块区被视为其本身就是内联区,而从内部看, 则被视为块区。
内联显示是一组布局语义,可以应用于 内容元素, 适用于某些上下文,其中子区沿内联推进 方向依次排布。
注:
在 [CSS2] 中,
当 CSS display 属性的值为
inline,并在呈现处理期间应用于
内容元素 时,就表示内联显示。在
[XSL-FO 1.1] 中,内联显示
发生于排布 fo:inline 元素时。
在某个格式化上下文中,内联区推进所采用的方向。在 水平书写模式的上下文中, 内联推进方向通常为从左到右或从右到左;而在 垂直书写模式的上下文中, 通常为从上到下。
一种 区域,它相对于某个
内容元素 以内联方式定义,该内容元素将被选入(以该区域为目标)
此区域。
内联区域由
region 子元素指定,该子元素属于
某些 内容元素。
内联
region 元素与其
父 内容元素 之间存在一对一关系。内联区域被赋予
其父元素的时间区间,作为自身的活动
时间区间。没有任何 region 属性引用内联区域。
根据使用上下文,指 定时文本中间文档 或
定时文本中间文档
实例,
其根(文档)元素为 isd:isd 元素,表示
一个不重叠的时间区间,该区间与源文档的内容、样式、布局和
定时相交,该源文档为
定时文本内容文档。
根据使用上下文,指 定时文本中间文档 或
定时文本中间文档
实例,
其根(文档)元素为 isd:sequence 元素,并且
表示
一系列 中间同步
文档 实例,
这些实例有效地表示源 定时文本内容文档 的内容、样式、布局和定时。
一种 数据资源,其表示位于
内部(包含于其中),相对于
定时文本内容文档
实例 而言,它通过
src
属性(属于 source 元素
或 嵌入
内容元素)引用。
一系列块级内容的尺寸,即宽度和高度,其确定方式为 将内容格式化到无界的块 容器区中,并确定所得格式化块 容器的宽度和高度。
根据图像自身内部的信息确定的图像尺寸,即宽度和高度, 例如, 图像像素数组的宽度和高度。
一系列内联级内容的尺寸,即宽度和高度,其确定方式为 将内容格式化到无界的内联 容器区中,并确定所得格式化内联 容器的宽度和高度。
属于 文档处理 上下文 的协议或过程, 它不在本规范的范围内。
与地平面平行的轴。
块区 的一种类型,定义见 [XSL-FO 1.1],行区,§4.5,其子项 由一个或多个 内联区 组成。
元数据 模块 定义的任何元素类型。
一组 特性 和(或)扩展 定义,被定义为 核心模块 或 扩展模块。
注:
模块与 配置规范 不同(且相互正交), 因为前者 定义功能(不考虑使用它的应用),而后者选择 功能(供处理器支持 或文档使用)。还要注意,单个规范可以定义 与某个模块相关联(显式或隐式)的功能, 并且同时定义配置规范。例如,本规范定义了 一组 核心模块, 还定义了三个 配置规范,相关说明分别参见 5.4.1 核心目录 和 G 标准配置规范。
一个组成部分 配置规范,属于某个 包含嵌套的配置规范,即
更高层(祖先)ttp:profile 元素的后代
ttp:profile 元素之一。给定的 ttp:profile 可以同时
作为 嵌套配置规范 和 包含嵌套的配置规范。
注:
嵌套配置规范可以出现在 定时文本内容文档 实例 中,或 定时文本配置规范文档 实例 中。
一种 配置规范,通过引用一个或多个子
ttp:profile 元素定义,其中,
配置规范组合方法决定如何组合多个子
ttp:profile 元素中的配置规定。
constituents 分量 所属的
配置规范实例 与
包含嵌套的配置规范关联,该分量不为 null。
一种 source 元素,
它指定了一个子
data 元素,后者嵌入
实际字节,这些字节属于
嵌入数据资源,所采用的方式可以是
简单数据嵌入 或 分块数据嵌入。
一种 配置规范,其 constituents 分量 属于 组合 规定集,该规定集属于 关联的 配置规范实例,且该分量包含 不超过一个非 null 指示符。
一种 图像资源,不包含具有语义 意义的内容,例如,表示背景设计的栅格图像, 即使不呈现它,也不会影响具有语义意义的 内容的呈现。
一种 配置规范,其定义不引用任何子
ttp:profile 元素,即
不包含子 ttp:profile 元素。
constituents 分量 所属的
配置规范实例 与
不包含嵌套的配置规范关联,该分量为 null。
Animation.class
元素组中的一个元素,它以非内联方式定义,独立于
与该动画关联的 内容元素 或 region 元素
之外。
非内联动画作为
animation 元素的子元素出现,后者位于头部
(head 元素)中,
该头部属于 文档实例。一对多
关系存在于
被引用的非内联动画元素与引用它的 内容元素 以及
region 元素之间。
一种 region 元素,它以
非内联方式定义,独立于
与该区域关联(将被选入该区域)的 内容元素
之外。
非内联区域作为
layout 元素的子元素出现,后者位于头部
(head 元素)中,
该头部属于 文档实例。一对多
关系存在于
被引用的非内联区域元素与引用它的 内容元素 之间。
如果未显式指定
非内联区域,则隐含存在一个 默认非内联区域。
一种 处理器配置规范,被确定为覆盖所有 其他 可能确定的 处理器配置规范。
注:
例如,可选的 profile 或 codecs 参数,其定义
见
[TTML Profile Registry],§2,媒体类型注册,可以
由 内容处理器 使用,
作为 更高层协议,
以确定覆盖配置规范。
参见 PAR 的定义。
参见 呈现处理上下文。
与 呈现 上下文 关联的坐标空间。
满足以下任一条件的元素:(1) 包含或表达可呈现内容;或 (2) 影响
内容的呈现。前者的示例
包括所有 内容元素 和某些
嵌入内容元素,尤其是
audio 以及 image。
后者的示例包括内联的 animate 和
set。请特别注意,
元数据元素 不在此定义范围内。
一种 内容处理器,其目的是进行布局、 格式化和渲染, 即呈现 定时文本标记语言 内容,所采用的是 本规范定义的呈现语义。
参见 内容处理器。
一种 配置规范,满足以下条件:(1) 关联实例的 type 分量
的值,该关联实例为
配置规范实例,是
processor,并且
(2) 其中的 特性 和 扩展 集合
是内容处理器必须或可以实现(支持)的集合。
一组 特性 和 扩展 规定,在 内部化(实例化)后,由 配置规范实例 状态对象表示。 配置规范的类型为 内容配置规范 或 处理器配置规范。
根据使用上下文,指 定时文本配置规范文档 或 定时文本配置规范文档 实例。
执行 [若不支持 处理器配置规范则中止] 过程的过程,它附带 确定 有效内容配置规范(如果需要)和 有效处理器配置规范,二者属于 文档实例。
一种 XML 信息集 [XML InfoSet],满足 B 精简的 XML 信息集 规定的约束。
注:
虽然与文档呈现关联的根容器区域只有一个, 且是唯一的, 但本规范不限制随时间推移使用的 内容区域数量, 也不限制给定时刻的数量。不过,某些 内容配置规范 确实 规定了这类限制。
一个(可能为 null 的)媒体对象,它关联于或以其他方式相关于 某个 文档实例。例如,一个聚合的 音频/视频媒体 对象,文档实例 为其提供说明字幕 或字幕 信息,并且该 文档实例 与它 关联。
一个标量值,表示内联推进轴或块推进轴上的长度, 具体依据 适用的书写模式。
一个唯一的逻辑矩形区域,它建立一个坐标系, 内容区域 被放置在其中,并可选择进行裁剪, 相关说明另见 H 根容器区域 语义。
注:
根容器区域 没有边框或 内边距;因此,其边框矩形、内边距矩形和 内容矩形的边界重合。
由 文档实例 的时间起点和终点定义的时间范围(区间), 它相对于某个外部应用或呈现上下文确定。
一种 span 元素,其计算
值,即
tts:ruby 的值,为 "container"、"baseContainer",
或 "textContainer"。
有意义的文本节点是一种 文本节点,它包含 至少一个 有意义的 数据字符, 其中,某个 数据 字符 是否有意义,由 所声明的内容模型以及所定义的元素类型语义决定,该元素类型属于 文本节点 的 父 元素节点,更多信息参见 [XML 1.0],§3.2。 具体而言,如果父元素类型的内容模型为 元素 内容, 则没有任何 数据字符 是有意义的;但是, 如果父元素类型的内容模型为 混合内容, 则父元素类型的语义及其应用的样式特性(由本规范 定义)决定 某个 数据字符 在某个使用上下文中是否有意义(不被忽略), 或没有意义(被忽略)。
一种时间码,其格式和语义由 [SMPTE ST 12-1] 确立, 它可以嵌入媒体内容中,或以其他方式与媒体内容关联, 例如广播音频/视频流。
一种 样式集,包含指定样式值,其确定方式 见 10.4.4.2 指定样式集 处理。
参见 SAR 的定义。
一种样式特性集,其定义 见 样式特性集。
一个已经或可以与 计算 样式集 关联的元素。
一种全局属性,定义于以下二者之一:(1) 某个 TT 样式命名空间;或 (2) 某个 其他命名空间,且 定义它的 模块 将该属性声明为样式属性。
注:
为定义 10.4.4 样式解析 处理 的语义,样式属性(无论是显式指定 还是采用默认值)都预期被内部化(实例化)为 样式特性。
一种文档级 同步基准 [SMIL 3.0],§5.7.1,由 文档处理上下文 根据 相关媒体对象 或其他处理条件合成或以其他方式建立。
一种 合成文档同步基准,其构建依据为 SMPTE 时间码 值,这些值嵌入于或关联于 相关 媒体对象,或 由 文档处理 上下文 以其他方式确定。
一种语法或语义特性,例如元素或元素的呈现, 在所选时间基准的当前时间与 该特性的 活动时间区间相交时,称为时间上活动。
以旋转角度描述 字形区 的
朝向,其中,
0° 表示 upright 朝向,
90°,即顺时针旋转 90 度,表示 sideways 朝向,
相关说明另见 10.2.45
tts:textOrientation。
其类型允许指定
begin 属性的任何元素。
以内在或外在方式 与定时信息关联的文本信息。
能够导入和导出 定时文本标记语言内容的内容创作系统。
一种抽象文档,声称或已确认是 有效抽象文档实例, 属于 TTML 内容文档类型。
以下文档的一种具体实现: 定时文本标记语言 文档, 其具体形式取决于引用上下文。 也称为 TTML 文档实例, 或简称为 文档实例。
一种抽象文档,声称或已确认是 有效抽象文档实例, 属于 TTML 中间文档类型。
一种内容类型,表示定时文本内容、该内容的中间表示, 或该内容或内容处理器的配置规范。
一种抽象文档,声称或已确认是 有效抽象文档实例。
一种抽象文档,声称或已确认是 有效抽象文档实例, 属于 TTML 配置规范文档类型。
定时文本配置规范 文档 的一种具体实现, 相关说明参见 A 具体编码。
一种 配置规范,由 ttp:profile 元素定义,该元素
作为子元素
出现于 head 元素中,该头部元素属于 定时文本内容文档
实例。
一种 内容处理器,其目的是转换或 以其他方式重写 定时文本标记语言 内容,目标格式可以是 定时文本标记语言, 也可以是另一种(任意)内容格式。前者的示例是这样的处理器,它移除 或 重写 TTML 特性,以符合某个 TTML 配置规范。后者的示例是 将 TTML 转换为完全不同的定时文本格式的处理器。由于本 规范没有另行定义转换处理的目标配置规范或 格式, 因此本规范未定义进一步的转换语义。
由 验证 处理器 执行的功能。
一个可选的 组件,属于 内容处理器,其功能是 对候选文档进行验证处理,该 候选文档为 文档实例,验证发生于执行 某些其他类型的处理之前, 并且该验证处理包括执行 [验证文档] 过程, 其定义见 5.3 验证。
一种 内容处理器,实现了 验证处理器 组件,作为预处理步骤,先于其 作为 内容处理器 的主要功能执行。
注:
执行验证的内容处理器可以具有:(1) 验证(或 核验)文档实例这一唯一功能, 在这种情况下,它可以被视为执行验证的 转换处理器,其 输出表明文档是否有效;或 (2) 多项功能,其中第一项 是验证(或核验)文档实例, 随后执行其作为 转换处理器 或 呈现处理器 的主要功能。
注:
在执行验证处理时,符合规范的、执行验证的内容处理器 可以交错执行验证 处理和内容处理,前提是对于给定的内容单元, 后者在时间上不先于前者。
与地平面垂直的轴。
一个枚举标记集合,其中每个标记指定 内联和块方向内容的流动轴及 流动方向的组合,相关说明参见 10.2.51 tts:writingMode。
在本规范的规范性文字中, 可以、应当和必须这些词 定义如下:
符合规范的文档和(或)TTML 处理器被允许 按所述方式行事,但不必如此。
强烈建议符合规范的文档和(或)TTML 处理器 按所述方式行事,但不必如此。
符合规范的文档和(或)TTML 处理器被要求 按所述方式行事;否则即为错误。
如果规范性规定采用祈使句形式, 则应将其视为适用必须 一词。此外,如果规范性文字采用陈述句形式, 且该文字受必须约束, 则也应将其视为适用必须 一词。
注:
例如,“将 X 视为错误”和“认定 X 为错误”这两个短语,在使用上下文中应解读为强制性要求。同样,如果 规范 文字为“X 必须适用”、“X 适用”或“X 是强制性的”,且“X”进一步定义为“X 是 Y 和 Z”, 则通过传递闭包,最后这个陈述性短语在使用上下文中应解读为“Y 是强制性的”和 “Z 是强制性的”。
XML 表示及 其他相关术语的所有规范性语法定义均以浅黄橙色背景 显示,并标记为“XML 表示”或“语法表示”, 例如以下内容:
<example count = <integer> size = ("large" | "medium" | "small" | "tiny" | "micro") : medium> Content: (all | any*) </example> |
在 XML 表示中,粗体属性名(例如上面的 count)
表示必需的属性
信息项,其余则为可选。如果属性
信息项具有枚举类型定义,各个值
以竖线分隔,如上面的 size 所示;如果
存在默认值,则显示在冒号后面。如果
属性信息项 具有内置简单
类型定义,
且该定义来自 [XML Schema Part 2],则会提供指向
其中相应定义的超链接。
除非本规范明确规定,否则不允许使用无限定属性。
注:
除 N.1 元素派生 外,
属性名称(可能带有命名空间限定)
前面会加上 '@'(商业 AT 符)字符,以消除
属性与同名元素类型之间的歧义,在这种情况下,
'@' 字符并非属性字面名称的一部分。
例如,@ttm:agent
指 ttm:agent 属性,而
ttm:agent 指
ttm:agent 元素。
以浅黄橙色背景
显示的信息项已弃用(例如,
上面所示 size 属性的 tiny 值)。
已弃用的信息项可以但不应当出现在
TTML 文档实例中,
如果它确实出现,执行验证的内容处理器 应当报告
警告。
以浅品红色背景
显示的信息项已废止(例如,
上面所示 size 属性的 micro 值)。
已废止的信息项不得出现在 TTML
文档实例中,
如果它确实出现,执行验证的内容处理器 应当报告
错误。
对某个信息项作出的这些标记
也会在规范文字中明确指出。
信息项允许的内容以语法
片段显示,使用 Kleene 运算符 ?、*
和 +。其中的每个元素名称都是一个超链接,指向
其自身的示例表示。
术语线性空白 (LWSP) 应解释为以下字符组成的非空序列:
空格 (U+0020)、制表符 (U+0009)、回车 (U+000D) 或换行 (U+000A),
它对应于 [XML 1.0] 定义的产生式 [3] S。
值语法表达式的规定采用以下约定:
字面项(在引号内指定)如果出现,必须与 指定内容完全一致 (不包括引号本身);
字面量 '\\' 解释为单个反斜杠,即反斜线
(U+005C);
串联(并置)的项表示所有项必须按所述顺序出现,例如,
a b 表示
a 和 b 两项均出现,且前者先于后者;
竖线(|)分隔两个或多个备选项,其中必须恰好有一个
出现;
双竖线(||)分隔两个或多个选项,其中一个或多个
必须以任意顺序出现,不得重复,
并以 <lwsp> 分隔;
左右圆括号(())用于分组和确定运算符
优先级;
左右方括号([])用于表示字符类;
左右花括号({})有两种用法,上下文
通常足以确定
适用哪一种(如果不足以确定,周围的文字会明确说明适用哪一种):
表示重复次数或范围,采用以下形式之一:
{count}
{minimum,maximum}
表示字符集合,其中必须出现一个字符;此外,
集合可以指定为集合之差,例如
{char-{specials}},
表示从所有 XML 字符中减去一组特殊字符。
Kleene 运算符 ?、* 和 + 分别表示
前一项出现零次或一次、
零次或多次,以及一次或多次;
运算符优先级(从高到低)如下,所有运算符均具有从左到右的 结合性
分组
串联(并置)
||
|
除满足以下
||
值语法的表达式之间必须出现的线性空白外,不允许任何空白,除非值语法定义
通过出现
<lwsp> 非终结符明确标记。
除非另有相反说明,术语水平和垂直均按 绝对意义解释,而非相对于书写模式; 宽度指沿水平轴的尺寸, 高度指沿垂直轴的尺寸。所有例外 均在正文中明确注明。
短语“和(或)”表示相容析取(p∨q),而句式 “二者择一……或……”表示互斥析取(p⊕q)。其他情况下,“或”的含义 由 其使用上下文隐含确定。
本规范中所有未明确标记为 非规范性的内容均视为规范性内容。如果某节或附录 标题包含“非规范性”这一表述,则该节或附录的 全部内容均视为非规范性内容。
所有标记为注的段落均视为非规范性内容。
示例代码片段以浅蓝绿色 背景显示,并标记为“示例片段”,例如 以下内容:
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head>
<metadata/>
<styling/>
<layout/>
</head>
<body/>
</tt>
|
注:
虽然本文展示的示例代码片段以良构 XML 表达,但它们 并非旨在成为完整、有效的 TTML 文档; 相反,它们通常经过缩略,以聚焦于预期展示的示例。具体而言, 通常需要为这些片段补充 额外的元素和(或)属性,才能满足 TTML 文档符合性 要求。
除非另有规定,本规范中定义词汇的各节按字母顺序 而非逻辑顺序定义词汇。
本节规定了 TTML2 文档和处理器的一般符合性要求。
一个 定时文本文档实例 符合本规范,前提是 以下条件得到 满足:
当传输一个 文档实例 所用的 文档交换上下文 使用
媒体类型 [MIME Media Types] 标识所交换的
文档实例 的内容类型时,所指定的
媒体类型为
application/ttml+xml,并符合 [TTML Profile
Registry] 第 2 节媒体类型注册的规定。
该 文档实例 是或可以表示为一个 精简的 XML 信息集, 如 B 精简的 XML 信息集 所定义。
该 精简的 XML 信息集 对应于该 文档实例,并且已经或可以 与某个 抽象文档 类型 相关联,这些类型由 4 文档类型 定义。
该 精简的 XML 信息集 对应于该 文档实例,并且是一个 有效的抽象文档实例,其所属类型 为所关联的 抽象文档类型。
该 精简的 XML 信息集 满足本规范定义的所有其他 强制性语法和 语义约束。此外,该信息集 应当满足以下规范规定的 Web 内容无障碍指南: [WCAG]。
本节从以下方面规定 TTML2 处理器的符合性要求: 通用处理器符合性 以及两种专用处理器符合性, 转换处理器符合性 和 呈现处理器符合性。
注:
本节定义的符合性要求适用于处理 静态表示的 TTML 文档实例 的处理器。具体 而言, 修改 TTML 文档实例 的处理器,例如 创作或 编辑工具,不受本规范约束,唯一的例外是: 对 TTML 文档实例 执行一系列修改的最终结果 应满足 TTML 内容的形式有效性,其定义见 3.1 文档符合性。
一个 TTML2 内容处理器 符合本规范, 前提是以下 通用处理器条件得到 满足:
该处理器至少提供一种机制,用于在概念上 实例化一个 精简的 XML 信息集, 作为符合规范的 文档实例 的表示。
该处理器执行 配置规范处理。
如果处理器是一个 执行验证的内容 处理器,那么它
至少提供一种机制,用于将候选文档的 精简的 XML 信息集 表示, 即候选 文档实例 的表示, 隐式或显式地关联到某个 抽象文档类型,这些类型由 4 文档 类型 定义;并且
执行 [验证文档] 过程。
注:
本规范未规定执行 验证处理 与执行 配置规范处理 之间的严格顺序,后者已在前一个条目中介绍。具体而言,这两个 处理步骤可以交错执行(或重复执行),只要二者都在进一步对 文档实例 执行(转换或呈现)处理之前完成即可。
尽管如此,验证处理
与 配置规范处理 之间仍存在隐含的顺序关系;具体而言,为了
执行
验证处理,必须
解析
有效验证配置规范 的值,而为了得到该值,
必须解析
有效内容配置规范 的值,或者,如果该
值为 null,则解析
有效处理器配置规范 的值,后面这两个
值是在
配置规范处理 期间获得的。
注:
关于交错执行 验证 处理 和 配置规范处理 的示例,请考虑以下 场景(按给定顺序):
验证输入文档源的良构性(验证 处理);
将输入文档源实例化为一个可能有效的抽象文档 实例(通用处理);
使用内置的应用程序语义初始化验证状态 (验证处理);
使用内置的应用程序语义初始化配置规范状态(配置规范 处理);
验证与验证相关的词汇(验证处理);
使用有效的、与验证相关的词汇更新验证状态 (验证处理);
验证与配置规范相关的词汇(验证处理);
使用有效的、与配置规范相关的词汇更新配置规范状态(配置规范 处理);
执行 [如果 处理器配置规范不受支持则中止] 过程的中止步骤(配置规范 处理);
验证整个文档,根据新的配置规范状态,按需重新验证与验证及配置规范 相关的词汇(验证处理);
如果处理未中止,则继续执行转换或呈现 处理(通用处理)。
该处理器不会预先拒绝或中止 对符合规范的 文档实例 的处理, 除非:
该处理器支持本规范定义的所有强制性处理语义。
注:
短语强制性语义指所有显式使用符合性 关键短语必须和不得 的情况,以及 可以从这些关键短语合理推断出的任何陈述。
如果该处理器支持本规范定义的某些可选处理 语义, 那么其支持方式应与所定义的语义一致。
注:
短语可选语义指所有显式使用符合性 关键短语应当、不应当 、 可以和可以不的情况, 以及可以从这些关键短语合理推断出的任何 陈述。
一个 TTML 内容处理器 是符合规范的 TTML2 转换处理器, 前提是以下条件得到满足:
该处理器满足以下章节规定的所有要求: 3.2.1 通用处理器符合性。
该处理器支持 TTML 转换配置规范,其规定 见 G.3 TTML2 转换配置规范。
该处理器支持 DFXP 转换配置规范,其规定 见 G.6 DFXP 转换配置规范。
一个 TTML 内容处理器 是符合规范的 TTML2 呈现处理器, 前提是以下条件得到满足:
该处理器满足以下章节规定的所有要求: 3.2.1 通用处理器符合性。
该处理器支持 TTML 呈现配置规范,其规定 见 G.2 TTML2 呈现配置规范。
该处理器支持 DFXP 呈现配置规范,其规定 见 G.5 DFXP 呈现配置规范。
该处理器执行 11.3.1.3 中间 同步文档构建 和 11.3.1.4 同步流 处理。
注:
两个符合规范的呈现处理器在处理同一个符合规范的文档时, 不必产生相同的呈现结果。 例如,不同的呈现处理器可以使用不同的字体、不同的字体 光栅化器、不同的换行算法, 以及对本规范未规定的行为采用不同的实现。
任何关于 TTML 文档实例 或 内容处理器 符合性的声明,都必须 引用一份实现符合性声明(ICS)。
实现符合性声明必须标识本规范中 文档实例或内容处理器实现所满足的所有 强制性和可选特性。具体而言,该声明必须 标识所使用或支持的 TTML 词汇配置规范,其 定义见 5.2 配置规范;如果使用或支持子集或 超集配置规范,还必须标识该子集或超集配置规范 排除或包含了哪些特性。
注:
上文给出的 转换处理器符合性 和 呈现处理器符合性 的定义 要求 这两类处理器各自(至少)支持两个特定的配置规范:一个是 [TTML1] 定义的类型专用配置规范, 另一个是本规范定义的类型专用配置规范。
尽管存在这一要求,仍可以构建一个 TTML 内容处理器, 使其执行转换或呈现处理功能,并满足 通用处理器符合性 要求, 但既不支持 转换 处理器符合性 要求的配置规范,也不支持 呈现处理器符合性 要求的配置规范, 而是 仅支持在本规范范围之外定义的配置规范。在这种情况下,可以声明 该处理器 满足 通用处理器 符合性,并且是一个 TTML 转换处理器 或一个 TTML 呈现处理器, 但不得声明其满足 转换 处理器符合性 或 呈现处理器符合性。
对于提出了符合性声明的 文档实例,它必须 关联以下其中一项:
一个非空的 有效内容配置规范,
该配置规范源自显式指定的 ttp:contentProfiles 属性,
或一个或多个 顶层 内容配置规范;或者
一个非空的 有效处理器配置规范,
该配置规范源自显式指定的 ttp:processorProfiles 或
ttp:profile 属性,
或一个或多个 顶层 处理器配置规范。
本小节为非规范性内容。
符合规范的 TTML1 处理器可能能够处理 TTML2 内容文档实例,前提是它 忽略未知词汇, 并忽略那些出现在符合规范的 TTML1 文档中不允许出现的上下文中的已知词汇, 这里的文档是指 内容文档实例; 然而,这种处理可能会丢弃内容或无法呈现内容,也可能以不同于 符合规范的 TTML2 处理器所预期的 方式呈现内容。
注:
例如,如果 TTML1 处理器忽略 TTML2 中定义的 tts:ruby 属性,
那么该处理器
仍可能呈现使用行间注音特性的 TTML2 内容,尽管呈现结果
不符合预期。类似地,
如果 TTML1 处理器遇到一个 style 元素,而它是另一个
style 元素的子元素,那么前一个
嵌套样式可以被忽略(因为 TTML1 未定义此功能)。
本节定义以下 TTML 抽象文档类型:
每个 抽象文档类型 都由以下 约束组成:
一个非空的元素类型集合,其中每个元素类型由一个名称、 一个(可能为空的)属性集合以及一项内容规定组成
一个非空的元素类型集合,其中的元素类型可以作为文档元素出现
一个 抽象文档实例 可以接受 有效性评估, 并被视为一个 有效的抽象文档 实例,如果它 满足以下条件:在执行下列操作之后
裁剪所有这样的元素信息 项:其名称不属于相关联的 抽象文档类型 所定义的元素类型集合,然后
从任何剩余元素中裁剪字符 信息项子项,前提是该元素的所有 字符子项都表示 XML 空白字符,并且该元素的类型 在相关联的 抽象文档 类型 中被定义为空,然后
裁剪所有这样的属性 信息项:其扩展名称的 命名空间 URI 未列于 表 5-1 – 命名空间,或者虽列于 表 5-1 – 命名空间,但这些属性并非 相关联的 抽象文档类型 为其所属 元素信息项定义的属性集合的成员,
文档元素属于相关联的 抽象文档 类型 所允许的文档元素类型之一, 文档元素的 后代满足各自元素类型的内容 规定,所有必需属性都存在,并且每个属性的声明 值都满足 相关联的 抽象文档类型 所声明的类型。
注:
如下例所示,一个 抽象
文档实例 可以是一个
有效的抽象文档实例,即使它
包含这样的元素和属性:
其命名空间名称列于 表 5-1 – 命名空间,但
其局部名称不属于本版本规范所定义的
词汇。具体而言,元素 foo 和属性
tts:foo 分别由上述步骤 (1) 和 (3) 裁剪,
因为它们不是相关联的 抽象文档类型 的成员,即使它们的
命名空间名称列于 表 5-1 – 命名空间。
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<foo>Foo</foo>
<div>
<p tts:foo="bar">Bar</p>
</div>
</body>
</tt>
|
TTML 内容文档类型是一个 抽象文档 类型,它属于 定时文本标记语言的一个配置规范,并通过一组功能 模块 定义。
本规范引用了两类模式,它们可用于验证一个超集或子集, 该集合由 定时文本内容文档实例 构成:
TTML 内容 文档
实例 的(根)文档元素必须是一个
tt 元素,其定义见 8.1.1
tt。
注:
本规范引用的模式不会验证本规范定义的所有语法
约束,因此,它们表示符合规范的
TTML 内容的一个超集。具体而言,使用上面引用的某个
模式进行验证,可能会产生有效性的假阳性结果。
例如,RNC 和 XSD 模式都规定
tts:fontFamily 属性必须
满足 xsd:string 这一 XSD 数据类型;但是,该数据类型是
允许用于 tts:fontFamily 属性的值的超集。
此外,当外部命名空间中的元素使用 xml:id 属性时,
RNC 模式可能会产生有效性的假阴性
结果,因此它表示符合规范的 TTML 内容的一个子集。这是
由于 Relax NG 模式在表达涉及 xsd:ID
类型属性的通配符模式时存在特定限制。请注意,本规范规定,
文档实例 的形式有效性基于一个
抽象文档实例,
其中所有外部命名空间的元素和属性均已移除。因此,
这一假阴性结果的例外报告不会影响
文档实例 有效性的形式评估。
注:
本规范引用的模式旨在以下裁剪步骤 (1)-(3) 执行之后使用, 这些步骤由 4 文档类型 规定。
TTML 中间文档类型是一个 抽象文档 类型,旨在 用于表示以下文档的内容: 定时文本内容文档, 其定时信息以非层次化(扁平)、时间上线性的 方式表示,并且 某些信息(例如样式内容)可以进行解析或合并,以简化 后续处理。 此文档类型通过一组功能 模块 定义。
本规范引用了两类模式,它们可用于验证 定时文本中间文档 实例:
TTML 中间同步 文档实例 的(根)文档元素必须是一个
isd:sequence 或 isd:isd 元素,其定义见 J
中间文档语法。
TTML 配置规范文档类型是一个 抽象文档 类型,旨在 用于定义和传达对 TTML 特性或扩展的支持或使用所施加的约束。 此文档类型 通过一组功能 模块 定义。
本规范引用了两类模式,它们可用于验证 定时文本配置规范文档实例:
TTML 配置规范 文档
实例 的(根)文档元素必须是一个
ttp:profile 元素,其定义见 6.1.1
ttp:profile。
注:
建议符合规范的 通用处理器
支持接收或处理
定时文本配置规范文档,但这不是强制要求。不过,一个 内容处理器
如果声明支持 http://www.w3.org/ns/ttml/feature/#profile 特性,
就必须支持此功能(接收和处理
定时文本配置规范文档)。
本节定义 定时文本标记语言(TTML)的命名空间、配置规范和词汇 (以元素和属性目录的形式),具体如下:
定时文本标记语言(TTML)采用若干 XML 命名空间 [XML Namespaces 1.0],用于元素和某些 全局属性,它们统称为 TTML 命名空间, 并在 表 5-1 – 命名空间 中定义,其中每个 命名空间都被分配一个描述性名称、 一个默认命名空间前缀和一个 URI。 所有未在 表 5-1 – 命名空间 中定义的命名空间 都称为 其他命名空间。
| 名称 | 前缀 | 值 |
|---|---|---|
| TT | tt |
http://www.w3.org/ns/ttml |
| TT 参数 | ttp |
http://www.w3.org/ns/ttml#parameter |
| TT 样式 | tts |
http://www.w3.org/ns/ttml#styling |
| TT 音频样式 | tta |
http://www.w3.org/ns/ttml#audio |
| TT 元数据 | ttm |
http://www.w3.org/ns/ttml#metadata |
| TT 中间同步文档 | isd |
http://www.w3.org/ns/ttml#isd |
| TT 配置规范 | 无 | http://www.w3.org/ns/ttml/profile/ |
| TT 特性 | 无 | http://www.w3.org/ns/ttml/feature/ |
| TT 扩展 | 无 | http://www.w3.org/ns/ttml/extension/ |
| TT 资源 | 无 | http://www.w3.org/ns/ttml/resource/ |
所有 TTML 命名空间 都是 可变的 [NSState];这些命名空间中所有未定义的名称都保留供 W3C 将来进行标准化。
TT 样式命名空间(http://www.w3.org/ns/ttml#styling)和
TT 音频样式命名空间(http://www.w3.org/ns/ttml#audio)统
称为
TT 样式命名空间。
具体而言,如果规范文本引用这一集合,
就意味着所讨论的词汇项位于 TT 样式命名空间或 TT
音频样式命名空间中。
注:
在特定的 文档实例 中,并不要求 使用上面列出的 默认前缀。可以使用任何满足 XML 命名空间 [XML Namespaces 1.0] 约束,并与指定命名空间 URI 相关联的前缀或命名空间绑定。
注:
如果本规范引用某个元素类型,而该元素类型的 名称未经命名空间限定,则适用 TT 命名空间。
如果本规范引用某个属性,而该属性的 名称未经命名空间限定,则该属性由与其一起使用的 元素类型隐式限定。也就是说,该属性位于所谓的 按元素类型划分的 命名空间分区 [NSOriginal] 中,该分区的成员根据它们所出现于的 元素类型的定义进行解释。
对于上面定义的某些命名空间,如果本规范未在该 命名空间中定义 XML 词汇(也不预期在本规范的 未来版本中定义),则其默认前缀 指定为无。在这些情况下,使用 命名空间 URI 的目的不是定义 XML 词汇, 而是用于指示配置规范、特性、扩展,以及 解引用标准配置规范定义等用途。
本节介绍 TTML 配置规范子系统及适用于该 子系统的高层要求。本节末尾 有一个小节,其中包含配置规定的示例,以及如何引用和使用这些 规定的示例。
本小节为非规范性内容。
定时文本标记语言内容的作者可以使用给定的配置规范来实现以下两种 功能之一:(1) 声明一个 文档实例 遵守一组约束, 这些约束规定 使用哪些词汇以及如何使用;或 (2) 声明一个 处理器 必须满足有关 内容处理方式的某些条件。第一种功能称为 内容配置规范, 第二种称为 处理器配置规范。
一个 内容配置规范 允许作者在 创作时声明, 作者打算对 文档 实例 施加哪些约束。这样的 声明允许下游处理器执行内容验证或核验,并且 指导或限制后续 对内容的转换或编辑,以保持对作者指定的 内容配置规范的遵守。此外, 下游处理器可以使用内容配置规范声明,提前确定 自身能否处理 该内容配置规范所隐含的特性。
内容配置规范通过以下方式声明:(1) 使用 ttp:contentProfiles
属性,该属性位于根 tt 元素上;或 (2) 使用一个或多个顶层 ttp:profile
元素,其类型为 content。如果未声明,则不隐含任何内容配置规范。
注:
当内容配置规范使用 ttp:contentProfiles
属性进行声明时,
一个或多个指定的配置规范指示符可以引用顶层 ttp:profile
元素,因此,
可以结合上述两种配置规范声明机制的功能。
更多详情,请参见
构建有效内容配置规范 过程。
一个 处理器配置规范 允许作者 在创作时声明, 处理 文档 实例 时必须支持哪些处理,从而使得,如果某个 处理器无法执行所指示的处理,就应当中止处理。 这样的声明允许下游 处理器避免处理那些无法以满足 内容作者要求的方式进行处理的内容。
处理器配置规范通过以下方式声明:(1) 使用 ttp:processorProfiles
属性,该属性位于根 tt 元素上;(2) 使用一个或多个 ttp:profile
元素,其类型为 processor;或 (3) 使用 ttp:profile 属性,
该属性位于根 tt 元素上。如果未声明,则从
已声明的内容配置规范或
默认处理器配置规范 推断出一个处理器配置规范。
注:
当处理器配置规范使用 ttp:processorProfiles
属性进行声明时,
一个或多个指定的配置规范指示符可以引用顶层 ttp:profile
元素,因此,
可以结合上述配置规范声明机制中前两种
机制的功能。更多详情,请参见
构建有效处理器配置规范
过程。
注:
对于符合规范的 文档 实例,并不要求在文档中 声明处理器配置规范。更具体地说,允许通过 有效处理器配置规范 的多种后备确定机制来确定它,包括 (1) 从内容配置规范 推断处理器配置规范, (2) 从默认处理器配置规范隐含出处理器配置规范,以及 (3) 允许 文档 处理上下文 覆盖该确定结果,例如,使用 文档 交换上下文 确定一个 覆盖处理器配置规范。
注:
设计意图是:
ttp:processorProfiles 或
ttp:profile 属性用于
作者希望引用一个(或多个)标准的、预定义的处理器配置规范
的情况,这些配置规范属于
TTML 内容,且作者不希望(通过扩充或缩减)
修改该配置规范。作者还可以使用这些属性指示使用
非标准配置规范,在这种情况下,指定的 <profile-designator> 表达
一个 URI,该 URI 表示外部定义的 配置规范定义文档。
但是,并不要求符合规范的 TTML 内容处理器 能够
解引用这种外部指定的配置规范定义。
相比之下,设计意图是:ttp:profile 元素
用于作者希望使用修改后的预定义配置规范,或
希望在 文档实例 中包含一个
非标准配置规范定义的情况,
该定义不基于任何预定义配置规范。
通过将某项特性或扩展指定为
required(强制),可以扩充预定义配置规范,前提是该特性或扩展未在基础的
基线
配置规范中指定,或在基线配置规范中指定为 optional(自愿)。
通过将某项特性或扩展指定为
optional(自愿),可以缩减预定义配置规范,前提是该特性或扩展被指定为 required(强制),
且该指定出现在基础的基线配置规范中。
当通过缩减来修改基线配置规范时,得到的派生配置规范 称为删减型配置规范;当通过扩充进行修改时,得到的结果 称为增补型配置规范。 也可以定义一个同时具有删减性 和增补性的派生配置规范。
内容作者不限于使用单个配置规范,而可以引用上述任一类型的多个 配置规范,即 多个内容配置规范和(或)多个处理器配置规范。当引用多个配置规范时, 它们各自的规定 会组合形成一个适用于文档的有效内容配置规范,以及一个 有效处理器配置规范, 后者在处理器处理该文档时适用。此外,作者也不限于 引用外部 定义的配置规范,而可以在文档内部以内联方式定义一个或多个配置规范。
注:
配置规范组合本身是一项可选 特性,它 根据以下条件确定: 处理器 是否支持 E.1.53 #contentProfiles-combined 或 以下 E.1.173 #processorProfiles-combined 特性。
本小节为非规范性内容。
作者定义的 TTML 呈现配置规范的 增补型派生配置规范的一个示例 如下所示,见 示例片段 – TTML 增补型 配置规范。
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head>
<profile use="ttml2-presentation" xmlns="http://www.w3.org/ns/ttml#parameter">
<features xml:base="http://www.w3.org/ns/ttml/feature/">
<feature value="required">#fontStyle-italic</feature>
</features>
</profile>
</head>
<body/>
</tt>
|
注:
在上面的示例中,基线配置规范被声明为
TTML2 呈现配置规范,随后通过将
#fontStyle-italic 特性设为必需来对其进行增补修改(而不是
将其保留为可选,
如 G.2 TTML2 呈现配置规范 中所定义的那样)。还请
注意,
profile 元素上的默认 XMLNS 绑定被重置为 TT 参数命名空间。
配置规范通过两种方式之一进行引用,具体取决于该配置规范是在引用文档的 外部定义, 还是在引用文档的内部(内联)定义。当在外部定义时,配置规范 通过以下其中一种表达式 <absolute-profile-designator> 或 <relative-profile-designator> 进行引用。 当在内部(内联)定义时,配置规范可以被隐式引用, 也可以通过 <fragment-profile-designator> 表达式引用。
配置规范指示符必须遵守 <uri> 值的 语法。 如果配置规范指示符表示为相对 URI, 则必须对其进行 绝对化,使用 TT 配置规范 命名空间的值 作为基 URI,其中术语 绝对化 表示 按照 [URI] 第 5 节所述,将相对 URL 解析为绝对 URL。
所有以 TT 配置规范命名空间为前缀,但未 列于 表 5-2 – 配置规范 或 [TTML Profile Registry] 第 4 节注册表中的配置规范指示符,都保留供 将来进行标准化,且不得出现在符合规范的 文档实例 中。尽管存在这一约束, 配置规范指示符并不限于 表 5-2 – 配置规范 中列举的指示符集合,而可以是任何 能够实际解引用 TTML 配置规范定义 文档 的 URI, 只要它不使用 TT 配置规范命名空间作为前缀即可。
定时文本标记语言(TTML)采用若干 标准的、预定义的配置规范,用于其 词汇及相关语义。
下表规定了这组 配置规范,并 为每个 预定义配置规范 指明一个规范性名称和一个指示符, 其中每个配置规范都在以下附录中作了正式阐述: G 标准配置规范。
| 名称 | 绝对指示符 |
|---|---|
| DFXP 完整 | http://www.w3.org/ns/ttml/profile/dfxp-full |
| DFXP 呈现 | http://www.w3.org/ns/ttml/profile/dfxp-presentation |
| DFXP 转换 | http://www.w3.org/ns/ttml/profile/dfxp-transformation |
| TTML2 完整 | http://www.w3.org/ns/ttml/profile/ttml2-full |
| TTML2 呈现 | http://www.w3.org/ns/ttml/profile/ttml2-presentation |
| TTML2 转换 | http://www.w3.org/ns/ttml/profile/ttml2-transformation |
注:
关于 DFXP 配置规范的定义,请参见 [TTML1]。 关于其他配置规范指示符,请参见 [TTML Profile Registry] 第 4 节, 注册表。
本节定义若干概念性状态对象,供后续定义的 算法(过程和函数)使用。并不要求 实现以此处规定的形式创建这些对象,而是可以使用任何方便的、 表示等价信息的内部表示形式。
一个 配置规定
表示以下内部状态信息,这些信息对应于
一个 ttp:feature 或 ttp:extension
元素。
一个 <uri> 值,表示特性或
扩展指示符,具体取决于 type。
"feature" | "extension"
"optional" | "required" | "prohibited"
一个 组合 配置规定集 表示以下内部状态信息, 这些信息对应于一组 配置 规定, 并额外记录构成该集合的 配置规范,这些规定从那些配置规范中获取(或派生)。
一个由 <absolute-profile-designator> 表达式组成的有序列表, 其中每个指示符表示一个组成配置规范,即 构成此组合配置规定集的一个配置规范。
一个由 配置 规定 组成的有序列表。
一个 组合 配置规定集,其 constituents 和 specifications 分量 均为空集
一个 配置规范实例 表示
以下内部状态
信息,这些信息对应于一个 ttp:profile
元素,无论该元素是
显式指定的还是隐含的。
一个 <absolute-profile-designator> 表达式, 它与此配置规范相关联(并唯一标识此配置规范)。
"content" | "processor"
"leastRestrictive" | "mostRestrictive" | "replace"
值为 null 或一个 <profile-designator>
表达式,
该表达式表示用作此配置规范的基线配置规范的配置规范。
如果配置规范是一个 包含嵌套的配置规范,则为
一个有序列表,其中包含
<fragment-profile-designator>
表达式,每个指示符表示一个
组成该配置规范的 嵌套配置规范;否则为
null。
注:
如果一个 嵌套配置规范 指定了
一个 xml:id
属性,则可以将该标识符用于
constituents
分量;否则,预期 处理器 实现
使用一个在内部合成的标识符。
如果配置规范是一个 不包含嵌套的配置规范,
则为一个有序列表,其中包含
配置
规定;否则为 null。
一个 组合 配置规定集, 表示对此配置规范指定或引用的 规定进行组合的结果。
每个 TTML 文档实例 都关联着 一个(可能为空的) 有效内容配置规范,它可以 由 内容处理器 用于执行以下任意(或全部) 操作:
有效内容配置规范 按照以下 过程构建:
如果 文档处理 上下文 确定某个特定的 覆盖内容配置规范 PO 将覆盖所有其他确定结果,则 有效内容配置规范 为 PO;
注:
例如,一个 [EBU-TT-D] 文档,如果符合
本规范,
可以指定一个 ebuttm:conformsToStandard 元素,以表明
其符合 [EBU-TT-D] 内容配置规范。
在这种情况下,一个 内容
处理器,如果支持该配置规范,就可以利用
该元素的存在作为覆盖依据,以确定 有效内容
配置规范。
否则,如果根元素上指定了 ttp:contentProfiles 属性,
该根元素为 tt,则
有效内容配置规范 为
一个 配置规范实例,
其 组合
规定集
通过组合以下集合来构建:组合
规定集,这些集合属于所指示的配置规范,其中
应用的内容配置规范组合方法由
ttp:contentProfileCombination
属性指定(或由其默认值指定),该属性位于根 tt 元素上;
否则,如果一个或多个 顶层 内容配置规范
已被定义,则
有效内容配置规范 为
一个 配置规范实例,
其 组合
规定集
通过组合以下集合来构建:组合
规定集,这些集合属于所有此类
顶层 内容配置规范,其中
应用的内容配置规范组合方法由
ttp:contentProfileCombination
属性指定(或由其默认值指定),该属性位于根 tt 元素上;
否则,有效内容
配置规范 为 null。
为了满足 通用
处理器符合性,
在处理给定的 文档实例 时,
有效内容配置规范 一旦
被设置为指向一个
配置规范实例 的非空引用,
就在整个处理期间保持为指向一个不变的 配置规范实例
的不变引用。同样,如果设置为 null
引用,则在整个处理期间保持为不变的 null 引用,
直至该处理结束。
将 EPP 设置为 有效处理器 配置规范,该配置规范通过执行 构建有效处理器配置规范 过程获得;
每个 TTML 文档实例 都关联着 一个(非空的) 有效处理器配置规范,它 由 内容处理器 用于确定自身是否 满足 内容作者所表明的最低处理要求。
有效处理器配置规范 按照以下 过程构建:
如果 文档处理 上下文 确定某个特定的 覆盖处理器配置规范 PO 将覆盖所有其他确定结果,则 有效处理器配置规范 为 PO;
否则,如果 ttp:processorProfiles 属性被指定于
根 tt 元素上,则
如果 ttp:processorProfiles 属性是
使用 all(...) 函数语法指定的,或
未使用函数语法,即仅作为指示符列表指定,则
此时的
有效处理器
配置规范 为一个 配置规范
实例,其 组合
规定集
通过组合以下集合来构建:组合
规定集,这些集合属于所指示的配置规范,其中
应用的内容配置规范组合方法由
ttp:processorProfileCombination
属性指定(或由其默认值指定),该属性位于根 tt 元素上;
否则,如果 ttp:processorProfiles 属性
是使用 any(...) 函数语法指定的,
则对于每个所指示的配置规范,
有效处理器
配置规范 为一个 配置规范
实例,其 组合
规定集
是以下集合的副本:组合
规定集,该集合属于所指示的配置规范列表中
第一个受到支持的配置规范,支持方为
内容处理器;
否则,如果一个或多个 顶层 处理器配置规范
已被定义,则
有效处理器配置规范
为一个 配置规范
实例,其 组合
规定集
通过组合以下集合来构建:组合
规定集,这些集合属于所有此类
顶层 处理器配置规范,其中
应用的处理器配置规范组合方法由
ttp:processorProfileCombination
属性指定(或由其默认值指定),该属性位于根 tt 元素上;
否则,如果 ttp:profile 属性被指定于根
tt 元素上,则
有效处理器配置规范
为一个 配置规范
实例,其 组合
规定集 是以下集合的副本:组合
规定集,
该集合属于此属性所指示的配置规范;
否则,有效 处理器配置规范 为 执行 构建推断的处理器配置规范 过程所得的结果;
为了满足 通用 处理器符合性, 在处理给定的 文档实例 时, 有效处理器配置规范 一旦被设置为指向一个 配置规范实例 的引用, 就保持为指向一个不变的 配置规范实例 的不变引用,直至该处理结束。
将 ECP 设置为 有效 内容配置规范;
如果 ECP 不为 null,则执行以下步骤:
如果
ttp:inferProcessorProfileSource 参数的计算值为
combine,则
推断的处理器
配置规范 为以下应用操作的结果:将
推断处理器配置规范 函数
应用于 组合
规定集,该集合属于 ECP;
否则,如果
ttp:inferProcessorProfileSource 参数的计算值为
first,则
推断的处理器
配置规范 为第一个推断的处理器配置规范,
IPP,
该配置规范通过将 推断处理器配置规范 函数
应用于 组合
规定集 而产生,该集合属于一个 配置规范
实例,
该实例与以下集合的每个组成配置规范相关联:组合
规定集,该集合属于 ECP,并且要求 IPP
受到以下处理器的支持:
内容处理器;
否则,推断的处理器 配置规范 为 执行 构建默认处理器配置规范 过程所得的结果;
如果 文档交换 上下文 关联着一个 处理器配置规范,或关联着一个 内容配置规范, 且可以从中推断出一个 处理器配置规范, 则 默认处理器配置规范 为 该 处理器配置规范;
否则,如果 内容处理器
主要被归类为
呈现处理器,则
默认处理器配置规范
为
一个 配置规范实例,
它通过将 TTML2 呈现配置规范内部化而构建
(http://www.w3.org/ns/ttml/profile/ttml2-presentation);
否则,如果 内容处理器
主要被归类为
转换处理器,则
默认处理器配置规范
为
一个 配置规范实例,
它通过将 TTML2 转换配置规范内部化而构建
(http://www.w3.org/ns/ttml/profile/ttml2-transformation)。
本节介绍 TTML 验证子系统及适用于该 子系统的高层要求。
验证是一项可选功能,由 验证 处理器 执行, 可以在候选 文档实例 被 执行验证的 内容处理器 接收或以其他方式处理时发生。如果进行这种处理, 且出现异常情况,则可以中止处理, 具体细节见下文。
如果处理在 验证处理 期间中止, 则其后果包括:
如果确实因 验证 处理 而中止处理,则 文档实例 中从哪个位置起不再处理后续内容, 本规范并未定义。具体 而言,实现可以在遇到第一个 验证错误 时中止处理,也 可以在遇到任意数量的 验证错误 之后中止处理。因此, 从不符合规范的文档中接收的输入内容量,以及相应的(转换或 呈现)输出,可能因实现而异。
本节定义若干概念性状态对象,供后续定义的 算法(过程和函数)使用。并不 要求实现以此处规定的形式创建这些对象,而是可以使用 任何方便的内部表示形式, 只要其表示等价的信息即可。
一个 验证异常 表示以下内部状态信息,这些信息对应于一种异常 情况,该情况发生在 验证 处理 期间
一个 验证异常,
如果其类型为 error,则称为
验证
错误,
而一个 验证
异常,
如果其类型为 warning,则称为
验证
警告。
除非适用某个 更高层协议, (1) 如果检测到某个 文档实例 违反了本规范的强制要求或禁止规定, 则将其 视为 错误,在这种情况下, 适用一个 验证错误 异常;并且 (2) 如果检测到违反本规范的建议或不建议事项的 情况,则 验证警告 适用。
注:
此上下文中更高层协议的一个示例是由系统或最终用户 定义的 配置选项,该选项属于 文档处理上下文, 并使警告被视为错误,或反之亦然。
否则,有效 验证配置规范 为 有效处理器 配置规范。
为了满足 通用 处理器符合性, 在处理给定的 文档实例 时, 有效验证配置规范 一旦被设置为指向一个 配置规范实例 的引用, 就保持为指向一个不变的 配置规范实例 的不变引用,直至该处理结束。
如果验证被某个 更高
层协议 禁用,
或者 ttp:validation
参数的计算值为 prohibited,
则退出此过程,除非最终用户或应用程序覆盖了这一
禁止规定;
如果 ttp:validation
参数的计算值为 optional,并且
文档处理上下文
确定不执行可选验证,
则退出此过程;
否则,使用 有效 验证模式,并根据需要使用其他 验证工具,验证文档符合性,使得
如果检测到 验证错误 情况,
则执行适用于以下计算值的
语义,该计算值属于 ttp:validationAction
参数特性;
如果检测到 验证警告 情况,
则执行适用于以下计算值的
语义,该计算值属于 ttp:validationAction
参数特性。
执行 验证处理 时, 适用以下语义:
如果输入文档采用具体的 XML 表示形式,例如, 以下附录定义的具体形式: 附录 A 具体编码,则 验证以下事项:
根据文档解析得到的字符编码,输入文档的编码字符 是良构的;并且,
输入文档是一个良构的 XML 文档;并且
验证输入文档相对于 有效验证 模式 是有效的; 并且,
验证输入文档遵守本规范定义的所有其他语法和语义 约束,这些约束未被 有效验证 模式 直接表达。
如果上述任何验证步骤检测到不符合 强制要求(必须)或禁止规定(不得)的状态,则 验证错误 情况适用。如果上述任何验证步骤检测到不符合 建议(应当)或不建议事项 (不应当)的状态,则 验证警告 情况适用。
注:
由于 有效验证模式 的确定 依赖于 实现,并且没有要求 有效验证模式 检测 每一种可能的 验证错误,因此执行 [验证文档] 过程来处理无效文档实例时,不一定会产生 验证 异常,在这种情况下, 验证处理 的结果 可以视为假阳性。
例如,一个 内容配置规范 可以
禁止使用某项特性,具体方式是将
prohibited 用作 value 属性的值,该属性属于一个 ttp:feature
或 ttp:extension
元素;但是,某个特定的
[验证文档]
过程实现可能无法检测到这种被禁止的用法,
即使它出现在 文档实例 中,因此
产生假阳性验证结果。
由于这些限制,[验证文档] 过程的规范措辞以潜在的 验证错误 或 验证 警告 是否被检测到为前提,但并不强制要求所有可能的 验证错误 和 验证 警告 都被检测到。
另请参见 4.1 TTML 内容 文档类型 下的第一条注释,以了解有关假阳性的更多信息。
定时文本标记语言(TTML)的词汇 在以下主要目录(词汇分部)中定义:
核心目录定义 TTML 的基线核心词汇, 尤其是 TTML 内容的词汇。扩展目录 为 TTML 定义的核心词汇的扩展 提供预留位置。
核心词汇目录旨在满足 TTML 的需求,同时为未来的配置规范提供基线词汇。此词汇 分为不同的类别,具体规定 见以下各节:
规定用于 文档 实例 的核心元素词汇 以一组带标签的 模块 的形式列于 表 5-3 – 元素词汇,其中 每个 模块 都被定义为一组元素类型,并且 其成员, 即每个 模块 的成员,可以由一个或 多个 扩展模块 扩展(但不能限制)。
| 模块 | 元素 |
|---|---|
| 动画 | animate, animation, set |
| 音频 | audio |
| 内容 | body, br, div, p, span |
| 数据 | chunk, data, resources, source |
| 文档 | tt |
| 字体 | font |
| 头部 | head |
| 图像 | image |
| 布局 | layout, region |
| 元数据 | metadata |
| 元数据项 | ttm:actor, ttm:agent, ttm:copyright, ttm:desc, ttm:item, ttm:name, ttm:title |
| 配置规范 | ttp:features, ttp:feature, ttp:extensions, ttp:extension, ttp:profile |
| 样式 | initial, styling, style |
用于定义 TTML 元素类型内容模型的元素词汇组 以一组组的形式列于 表 5-4 – 元素词汇组,其中 每个组都被定义为一项内容规定,该规定满足产生式 [46], 此产生式见 [XML 1.0],并且每个组都可以被扩展(但不能限制),扩展由 一个或 多个 扩展模块 提供。
| 组 | 元素 |
|---|---|
| Animation.class | animate | set |
| Block.class | div | p |
| Data.class | data |
| Embedded.class | audio, image |
| Font.class | font |
| Inline.class |
span |
br |
#PCDATA
|
| Layout.class | region |
| Metadata.class | metadata | ttm:agent | ttm:copyright | ttm:desc | ttm:item | ttm:title |
| Profile.class | ttp:profile |
规定用于核心词汇目录的属性词汇以一组 模块的形式 列出,这些 模块 见 表 5-5 – 属性词汇,其中 每个 模块 都被定义为一组属性类型,并且 其成员, 即每个 模块 的成员,可以由一个或 多个 扩展模块 扩展(但不能限制)。
注:
只有被定义为以下两类之一的属性:(1) 全局属性,即经过命名空间限定的属性;或 (2) 共享的元素专用属性,即未经命名空间限定但由多个 元素类型共享的属性,才列于上面的 表 5-5 – 属性 词汇 中。
注:
TTML 定义的所有词汇都一致采用 所谓的 lowerCamelCase 命名约定。在某些情况下,如果某个名称 基于采用不同命名约定的其他规范, 这就会导致该名称发生变化。
本节规定核心词汇目录中的配置规范 内容,其中配置规范内容应理解为表达相关要求或可选性的信息, 这些要求或可选性涉及创作或处理 定时文本内容文档。
以下元素均在 TT 参数 命名空间中定义,用于指定适用于 文档实例 或 内容处理器 的参数信息:
注:
本节的各小节按逻辑顺序排列(从最高层到最低层的构造)。
ttp:profile 元素用于指定一个
内容配置规范 或一个
处理器配置规范。
一个 处理器配置规范 指定一组
必需的(强制性)和可选的(自愿性)特性及扩展,这些特性和扩展必须或
可以由 内容处理器 支持,以便
处理一个
文档实例,该实例使用(或可能使用)这些
特性和
扩展。
一个 内容配置规范 指定一组
禁止的、必需的和可选的特性及扩展,它们分别
不得、必须和可以出现在一个 文档实例 中,
该实例声明
遵守此配置规范。
注:
特性与 扩展之间的区别在于其定义位置和标识方式: 如果在本规范(或其未来修订版)中定义,并且 使用 E 特性 中的特性标识进行标记,则 将其视为特性;如果在其他规范中定义, 并在该规范中使用扩展标识进行标记,则 将其视为扩展。通常,预期特性通过 W3C 标准流程定义,而扩展则预期由 第三方定义。
本规范为 ttp:profile 元素定义了两种不同的使用上下文:
当 ttp:profile 元素出现在 TTML 文档实例 中时,
其目的是表达作者关于以下事项的意图:(1) 接收方内容处理器
为处理该文档,必须或可以支持哪些
特性和扩展;或 (2) 哪些特性和扩展不得、
必须或可以
包含在该 文档实例 中,或以其他方式在其中使用。
当 TTML ttp:profile 元素用于一个 配置规范定义文档
实例时,
它用于发布某个特定 TTML 配置规范的机器
可读规定,该规定可以由 TTML 文档实例 引用。
本规范定义了若干标准的配置规范定义文档,见
G 标准配置规范。
ttp:profile 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,后跟以下两者之一:(1)
零个或多个 ttp:features 元素,后跟
零个或多个 ttp:extensions 元素;或 (2)
零个或多个 ttp:profile 元素。
当 ttp:profile 元素包含一个子 ttp:profile 元素时,
该子元素称为
嵌套配置规范,而父元素称为 包含嵌套的配置规范;
否则,该元素称为 不包含嵌套的配置规范。
<ttp:profile
combine = ("leastRestrictive" | "mostRestrictive" | "replace" | "ignore") : ignore
designator = xsd:string
type = ("processor" | "content") : processor
use = <absolute-profile-designator> | <relative-profile-designator>
xml:base = <uri>
xml:id = ID
Content: Metadata.class*, ((ttp:features*, ttp:extensions*)|ttp:profile*)
</ttp:profile>
|
type 属性用于确定配置规范是
内容配置规范,还是
处理器配置规范。如果未指定,
则将该配置规范视为 处理器配置规范。
如果 ttp:profile 元素引用一个 基线
配置规范 或一个
嵌套配置规范,则被引用配置规范的类型必须
与引用它的配置规范的类型相同。例
如,定义了一个 处理器配置规范 的 ttp:profile 元素只能引用其他
处理器配置规范,不得引用 内容配置规范。
combine 属性用于指定
特性规定或扩展规定的组合方式,适用于
多个规定分别作用于同一特性或扩展的情况。
如果 combine 属性的值为 replace 或
ignore,则
在词法上靠后的特性规定或扩展规定,相应地替换词法上靠
前的
规定,或被忽略,其中规定元素按以下顺序排列:
由 基线配置规范 定义的规定,
该配置规范由 use
属性引用;
由后代 ttp:profile 元素定义的规定,按后序
遍历顺序排列;
作为后代 ttp:feature 或
ttp:extension
元素定义的规定,按后序遍历顺序排列。
如果值为 leastRestrictive,则限制最少的规定值
适用;
如果值为 mostRestrictive,则限制最多的规定值
适用。限制程度的顺序如下(从少到多):
optional、required、prohibited。
如果未指定 combine 属性,则适用 ignore 语义。
如果指定了 designator 属性,它必须遵守
<absolute-profile-designator>
值语法。
designator 属性可以
指定在 ttp:profile 元素上,该元素出现在 TTML
文档实例 中;如果未指定,
则将所定义的配置规范视为无指示符配置规范。
designator 属性应当
指定在 ttp:profile 元素上,该元素出现在 TTML
配置规范定义文档 实例中;
如果未指定,则定义上下文(例如外部规范)必须在其随附的定义文本中
指定一个指示符。
如果指定了 use 属性,它必须遵守
<absolute-profile-designator> 或
<relative-profile-designator>
值语法,并且必须引用以下两者之一:(1) 标准的、预定义的
配置规范,其定义见 5.2.3.1 标准指示符;
或 (2) 一个实际可解引用的资源,表示有效的
配置规范定义文档 实例。
在这两种情况下,被引用的配置规范都充当
基线配置规范,所属元素为指定该属性的
ttp:profile 元素。
如果未指定 use 属性,则 基线配置规范,
即 ttp:profile 元素的基线配置规范,必须被视为
空(null)配置规范,也就是不包含任何
特性规定或扩展规定的无指示符配置规范定义。
组合配置
规定集 CPSS 包含配置规范 P 的特性和扩展,
它按以下有序规则确定,其中,将规定 S
合并到 CPSS 意味着根据
combine 属性的指定值(或默认值)应用组合方法,而将 组合配置
规定集 CPSS' 合并到
CPSS 意味着将 CPSS' 的每个有序规定合并到
CPSS:
将 CPSS 初始化为空集;
对于 P 的每个 ttp:profile 子元素,
使用后序遍历,将 组合
规定集,即该子配置规范的组合规定集,
合并到 CPSS;
对于每个 ttp:feature 和 ttp:extension 子元素,其父元素为
ttp:profile 元素,
使用后序遍历,将特性规定或扩展规定
合并到 CPSS。
符合规范的 TTML 处理器不必能够 解引用 配置规范定义文档,如果该文档 不属于 标准的预定义配置规范,这些配置规范由 G 标准 配置规范 定义。此外, 符合规范的 TTML 处理器可以使用每个标准预定义配置规范的 内置静态形式,从而无需 解引用网络资源。
如果 TTML 处理器无法解引用非标准的 配置规范定义文档,则它不得 继续处理 该文档,除非存在来自最终用户的显式覆盖, 或来自某个实现特定参数的显式覆盖,而该参数可追溯到最终用户、 用户配置设置或系统配置设置。如果 TTML 处理器中止 处理某个 文档实例,原因是无法 引用非标准的 配置规范定义 文档,则应当 向最终用户提供某种通知,除非最终用户或系统 已禁用这种通知,或者处理器不允许 或不涉及最终用户的干预。
符合规范的 TTML 处理器不必能够支持 组合配置规范 或 包含嵌套的配置规范。如果 (1) 组合配置规范 不受支持,并且处理 某个 配置规范 会使其被视为 组合配置规范,或者 (2) 包含嵌套的配置规范 不受支持,并且处理 某个 配置规范 会使其被视为 包含嵌套的配置规范, 则不得继续处理该 配置规范,除非 存在来自最终用户的显式覆盖, 或来自某个实现特定参数的显式覆盖,而该参数可追溯到最终用户、用户配置设置或系统 配置设置。如果 TTML 处理器中止 处理某个 文档实例,原因是缺乏 对 组合配置规范 或 包含嵌套的配置规范 的支持, 则应当向最终用户提供某种通知,除非最终用户或系统已禁用 这种通知, 或者处理器不允许或不涉及最终用户的干预。
注:
如果某个 文档实例 不要求支持 组合配置规范,则它不应当使用:
多个 顶层配置规范,
combine 属性,该属性位于 ttp:profile
元素上,
多个指示符,这些指示符位于 ttp:contentProfiles
属性中,
多个指示符,这些指示符位于 ttp:processorProfiles
属性中,
combined 值,该值用于 ttp:inferProcessorProfileSource
属性。
以下示例展示了 ttp:profile 元素。
<ttp:profile use="ttml2-presentation">
<ttp:features xml:base="http://www.w3.org/ns/ttml/feature/">
<ttp:feature>#text-outline</ttp:feature>
</ttp:features>
</ttp:profile>
|
注:
在上面的示例中,TTML2 呈现配置规范用作
基线配置规范。随后,通过要求支持以下特性来扩充该基线配置规范
(从而创建一个增补型派生配置规范):
#text-outline 特性。
ttp:features 元素是一个容器元素,用于对
有关特性支持和使用要求的信息进行分组。
ttp:features 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,后跟
零个或多个 ttp:feature 元素。
<ttp:features xml:base = <uri> : TT 特性命名空间 xml:id = ID Content: Metadata.class*, ttp:feature* </ttp:features> |
如果指定了 xml:base
属性,它必须 (1) 遵守
<uri> 值语法,(2) 表达一个绝对 URI,该 URI
遵守 [XML Base],并且
(3) 表达一个特性命名空间,其定义见
E.1 特性标识。如果未指定,则
xml:base 属性的默认
值适用,即 TT 特性命名空间。
xml:base 属性
用于允许缩写特性标识 URI,这些 URI 由
子 ttp:feature 元素表达。
ttp:feature 元素用于指定
有关某个特定特性的支持和使用要求的信息。
<ttp:feature extends = xsd:string restricts = xsd:string value = ("optional" | "required" | "use" | "prohibited") : 参见下文 xml:id = ID Content: #PCDATA </ttp:feature> |
ttp:feature 元素的子项必须表达一个非空
序列,其中包含 字符信息项,这些
项连接后的结果须遵守
<uri> 值语法。
如果指定了 extends 属性和(或)restricts
属性,它们必须 (1) 遵守
<uri> 值语法,并且
(2) 表达一个特性标识,其定义见
E.1 特性标识。
extends 属性可以用于表明,正在定义的特性
从语法和(或)语义角度看,是以下特性的真超集:
extends 属性所引用的特性。
restricts 属性可以用于表明,正在定义的特性
从语法和(或)语义角度看,是以下特性的真子集:
restricts 属性所引用的特性。
如果指定了 extends 属性,则 restricts 属性不得
指定在 ttp:feature 元素上;同样,如果 restricts
属性
已被指定,则不得指定 extends 属性。
如果以下来源表达的 URI:(1) ttp:feature
元素的内容,(2) extends 属性,或 (3) restricts 属性,
是相对 URI,则当它与特性命名空间值
组合时,该命名空间值由
xml:base 属性表达,该属性位于
最近的祖先 ttp:features 元素上,组合结果必须表达一个
绝对 URI。无论是哪种情况(原始绝对 URI,还是得到的
绝对化 URI),由
ttp:feature
元素表达的 URI 还必须遵守特性标识的语法,
其定义见 E.1 特性标识,并且,
此外,
此 URI 中出现的具体标识,即特性标识中
以片段标识符分隔符 '#' 开始的部分,必须
由本规范或本规范的某个已发布版本定义(该版本
已达到 REC 状态)。
如果由 ttp:feature 元素内容、
extends 属性或 restricts 属性表达的 URI
是相对 URI,则应当将 xml:base 属性
指定在最近的祖先 ttp:features 元素上。
value 属性根据配置规范类型,指定对所指示特性的
支持或使用所施加的约束。
如果该配置规范是一个 处理器配置规范, 则适用以下语义:
如果 value 属性的值
为 optional,则处理器为了处理该文档,可以但不必
实现该特性或以其他方式支持该特性;
如果值为 required,则执行以下步骤:
如果处理器实现了该特性或以其他方式支持该特性,则 继续处理 该文档;
否则,如果
(1) extends 属性被指定在此
ttp:feature 元素上,
(2) extends 属性的值指示一个特性,该特性
已由处理器实现或
以其他方式得到支持,并且
(3) 以下 ttp:permitFeatureNarrowing
特性在根 tt 元素上的计算值不为 false,
则继续处理该文档;
否则,如果
(1) restricts 属性被指定在此
ttp:feature 元素上,
(2) restricts 属性的值指示一个特性,该特性
已由处理器实现或
以其他方式得到支持,并且
(3) 以下 ttp:permitFeatureWidening
特性在根 tt 元素上的计算值不为 false,
则继续处理该文档;
否则,中止处理该文档,除非最终用户或 某个实现特定参数覆盖了此行为, 而该参数可追溯到最终用户、用户配置设置或系统配置设置。
如果未指定 value 属性,则必须将该特性规定
解释为如同指定了值 required;
如果该配置规范是一个 内容配置规范, 则适用以下语义:
如果 value 属性的值
为 optional,则该特性可以但不必出现在一个文档中,
该文档声明符合此配置规范;
如果 value 属性的值
为 required,则该特性必须出现在一个文档中,
该文档声明符合此配置规范;
如果 value 属性的值
为 prohibited,则该特性不得出现在一个文档中,
该文档声明符合此配置规范;
如果未指定 value 属性,则必须将该特性规定
解释为如同指定了值 optional;
值 use,作为 value 属性的一个值,已
弃用。如果它
出现在配置规定中,则必须将其解释为如同 required
已被指定。
如果某个已定义的(即标准化的)或以其他方式广为人知的特性,未由
内容配置规范中的 ttp:feature 元素指定,则必须将其解释为如同
该特性已被指定,
且其 value 属性等于 optional。但是,如果未在
处理器配置规范中指定,则不隐含
任何关于支持或不支持该特性的声明。
注:
具体而言,如果某个特性未出现在内容配置规范定义中,
则不应将其解释为不允许或以其他方式禁止(在 文档实例 中)
使用该特性。如果某个特性旨在被
内容配置规范禁止,
则应当使用 prohibited 值来指定它。
如果某个 文档实例 使用了以下章节定义的特性: E.1 特性标识,并且该文档的预期 使用 要求识别和处理该特性,则 该文档必须在其某个已声明或引用的配置规范中包含一项 required 特性规定, 以表明此要求。
以下示例展示了 ttp:feature 元素。
<ttp:profile use="http://www.w3.org/ns/ttml/profile/ttml2-presentation">
<ttp:features xml:base="http://www.w3.org/ns/ttml/feature/">
<ttp:feature value="required">#fontStyle-italic</ttp:feature>
<ttp:feature value="required">#textDecoration-under</ttp:feature>
<ttp:feature value="prohibited">#textOutline-blurred</ttp:feature>
</ttp:features>
</ttp:profile>
|
注:
在上面的示例中,TTML 呈现配置规范用作
基线配置规范。随后,通过三个
ttp:feature 元素修改该基线配置规范,以便 (1)
扩充基线配置规范(因为
#fontStyle-italic 和 #textDecoration-under
均不是 TTML 呈现配置规范所必需的),以及
(2) 禁止使用 #textOutline-blurred 特性
(该特性在 TTML 呈现配置规范中是可选的)。
此示例的效果是表达作者的以下意图: 必须支持斜体字体样式和文本 下划线,并且文档不得使用文本轮廓模糊。
ttp:extensions 元素是一个容器元素,用于对
有关扩展支持和使用要求的信息进行分组。
ttp:extensions 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,后跟
零个或多个 ttp:extension 元素。
<ttp:extensions xml:base = <uri> : TT 扩展命名空间 xml:id = ID Content: Metadata.class*, ttp:extension* </ttp:extensions> |
如果指定了 xml:base
属性,它必须 (1) 遵守
<uri> 值语法,(2) 表达一个绝对 URI,该 URI
遵守 [XML Base],并且
(3) 表达一个扩展命名空间,其定义见
F.1 扩展标识。如果未指定,则
xml:base 属性的默认
值适用,即 TT 扩展命名空间。
xml:base 属性
用于允许缩写特性标识 URI,这些 URI 由
子 ttp:extension 元素表达。
ttp:extension 元素用于指定
有关某个特定扩展的支持和使用要求的信息。
<ttp:extension extends = xsd:string restricts = xsd:string value = ("optional" | "required" | "use" | "prohibited") : 参见下文 xml:id = ID Content: #PCDATA </ttp:extension> |
ttp:extension 元素的子项必须表达一个非空
序列,其中包含 字符信息项,这些
项连接后的结果须遵守
<uri> 值语法。
如果指定了 extends 属性和(或)restricts
属性,它们必须 (1) 遵守
<uri> 值语法,并且
(2) 表达一个特性标识或扩展标识,其定义分别见
E.1 特性标识 或 F.1
扩展标识。
extends 属性可以用于表明,正在定义的扩展
从语法和(或)语义角度看,是以下特性或扩展的真超集:
extends 属性所引用的特性或扩展。
restricts 属性可以用于表明,正在定义的扩展
从语法和(或)语义角度看,是以下特性或扩展的真子集:
restricts 属性所引用的特性或扩展。
如果指定了 extends 属性,则 restricts 属性不得
指定在 ttp:extension 元素上;同样,如果 restricts
属性
已被指定,则不得指定 extends 属性。
如果以下来源表达的 URI:(1) ttp:extension
元素的内容,(2) extends 属性,或 (3) restricts 属性,
是相对 URI,则当它与扩展命名空间值
组合时,该命名空间值由
xml:base 属性表达,该属性位于
最近的祖先 ttp:extensions 元素上,组合结果必须表达一个
绝对 URI。无论是哪种情况(原始绝对 URI,还是得到的
绝对化 URI),由
ttp:extension
元素表达的 URI 还必须遵守扩展标识的语法,
其定义见 F.1 扩展标识,
而由 extends 属性和(或)
restricts 属性表达的 URI 必须遵守特性标识
或扩展标识的语法,其定义分别见 E.1 特性
标识 或
F.1 扩展标识。
如果由 ttp:extension 元素内容、
extends 属性或 restricts 属性表达的 URI
是相对 URI,则应当将 xml:base 属性
指定在最近的祖先 ttp:extensions 元素上。
value 属性根据配置规范类型,指定对所指示扩展的
支持或使用所施加的约束。
如果该配置规范是一个 处理器配置规范, 则适用以下语义:
如果 value 属性的值
为 optional,则处理器为了处理该文档,可以但不必
实现该扩展或以其他方式支持该扩展;
如果值为 required,则执行以下步骤:
如果处理器实现了该扩展或以其他方式支持该扩展,则 继续处理 该文档;
否则,如果
(1) extends 属性被指定在此
ttp:extension 元素上,
(2) extends 属性的值指示一个扩展,该扩展
已由处理器实现或
以其他方式得到支持,并且
(3) 以下 ttp:permitFeatureNarrowing
特性在根 tt 元素上的计算值不为 false,
则继续处理该文档;
否则,如果
(1) restricts 属性被指定在此
ttp:extension 元素上,
(2) restricts 属性的值指示一个扩展,
该扩展已由处理器实现或
以其他方式得到支持,并且
(3) 以下 ttp:permitFeatureWidening
特性在根 tt 元素上的计算值不为 false,
则继续处理该文档;
否则,中止处理该文档,除非最终用户或 某个实现特定参数覆盖了此行为, 而该参数可追溯到最终用户、用户配置设置或系统配置设置。
如果未指定 value 属性,则必须将该扩展规定
解释为如同指定了值 required;
如果该配置规范是一个 内容配置规范, 则适用以下语义:
如果 value 属性的值
为 optional,则该扩展可以但不必出现在一个文档中,
该文档声明符合此配置规范;
如果 value 属性的值
为 required,则该扩展必须出现在一个文档中,
该文档声明符合此配置规范;
如果 value 属性的值
为 prohibited,则该扩展不得出现在一个文档中,
该文档声明符合此配置规范;
如果未指定 value 属性,则必须将该扩展规定
解释为如同指定了值 optional;
值 use,作为 value 属性的一个值,已
弃用。如果它
出现在配置规定中,则必须将其解释为如同 required
已被指定。
如果某个广为人知的扩展未由
内容配置规范中的 ttp:extension 元素指定,则必须将其解释为如同
该扩展已被指定,
且其 value 属性等于 optional。但是,如果未在
处理器配置规范中指定,则不隐含
任何关于支持或不支持该扩展的声明。
注:
具体而言,如果某个扩展未出现在内容配置规范定义中,
则不应将其解释为不允许或以其他方式禁止(在 文档实例 中)
使用该扩展。如果某个扩展旨在被
内容配置规范禁止,
则应当使用 prohibited 值来指定它。
如果某个 文档实例 使用 一个可按 F.1 扩展 标识 指示的扩展,并且该文档的预期使用 要求识别和处理该扩展,则该 文档必须包含一项 required 扩展规定, 该规定位于其某个已声明或引用的配置规范中。
以下示例展示了 ttp:extension 元素。
<ttp:profile use="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
<ttp:extensions xml:base="http://example.org/ttml/extension/">
<ttp:extension value="required">#prefilter-by-language</ttp:extension>
</ttp:extensions>
</ttp:profile>
|
注:
在上面的示例中,TTML 转换配置规范用作 基线配置规范。随后,通过指定必须支持一个私有扩展 来扩充该基线配置规范, 该扩展在第三方命名空间中定义。
此示例的效果是表达作者的以下意图: 接收方处理器必须支持 TTML 转换配置规范,并且 还必须支持由第三方定义的一个扩展。
以下属性在 TT 参数命名空间中定义。
ttp:contentProfiles 属性可以由内容作者使用,
用于表达一个或多个 内容配置规范,它们属于
定时文本标记语言(TTML),并且
包含它的文档实例 声明符合
一组配置规范中的全部,
这组配置规范是所指定的 内容配置规范。
如果指定了此属性,其值必须遵守以下语法,
其中每个 profile-designator 项都遵守
<uri> 值语法,并且
还须遵守配置规范指示符的约束,这些约束依据
5.2 配置规范 定义。
ttp:contentProfiles
: designators
| "all(" <lwsp> designators <lwsp> ")"
designators
: designator (<lwsp> designator)*
designator
: <profile-designator>
|
如果指示符列表包含在函数语法 all(...) 中,或者未
使用函数语法,
则声明符合所有指示的 内容
配置规范。
如果指定了多个指示符,则每个指示符的 绝对化 形式必须互不相同;也就是说, 转换为 绝对化 形式后,不允许出现重复的 指示符。
ttp:contentProfiles
属性仅在指定于以下元素上时才被视为有意义:
tt 元素。
ttp:contentProfileCombination 属性用于指定
组合多个 内容配置规范 的方法。
如果指定了此属性,其值必须遵守以下语法:
ttp:contentProfileCombination : "leastRestrictive" | "mostRestrictive" | "replace" | "ignore" |
如果未指定,则必须将此参数的值视为 ignore。
给定两个有序的配置规定值 arg1 和 arg2,以及一种内容 配置规范组合方法, 表 6-1 – 内容配置规范组合 规定了组合这两个规定值的结果,其中实参 顺序根据以下配置规范的词法顺序确定: 内容配置规范,它们位于一个 文档实例 中。
| arg1 | arg2 | leastRestrictive |
mostRestrictive |
replace |
ignore |
|---|---|---|---|---|---|
| optional | optional | optional | optional | optional | optional |
| optional | required | optional | required | required | optional |
| optional | prohibited | optional | prohibited | prohibited | optional |
| required | optional | optional | required | optional | required |
| required | required | required | required | required | required |
| required | prohibited | required | prohibited | prohibited | required |
| prohibited | optional | optional | prohibited | optional | prohibited |
| prohibited | required | required | prohibited | required | prohibited |
| prohibited | prohibited | prohibited | prohibited | prohibited | prohibited |
ttp:contentProfileCombination 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:inferProcessorProfileMethod 属性用于指定
将内容配置规定值映射为相应处理器
配置规定值的方法。
如果指定了此属性,其值必须遵守以下语法:
ttp:inferProcessorProfileMethod : "loose" | "strict" |
如果此参数的值为 loose,则从内容配置规定
推断处理器配置规定时,
适用宽松(宽容)的映射。
如果此参数的值为 strict,则从内容配置规定
推断处理器配置规定时,
适用严格(保守)的映射。
如果未指定,则必须将此参数的值
视为 loose。
给定一个输入的内容配置规定值 input,以及一种推断处理器 配置规范的方法, 表 6-2 – 推断处理器配置规范的 方法 规定了映射该输入规定值的结果。
| input | loose |
strict |
|---|---|---|
| optional | optional | required |
| required | required | required |
| prohibited | optional | optional |
ttp:inferProcessorProfileMethod 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:inferProcessorProfileSource 属性用于指定
将内容配置规定值映射为相应处理器
配置规定值时所使用的来源。
如果指定了此属性,其值必须遵守以下语法:
ttp:inferProcessorProfileSource : "combined" | "first" |
如果此参数的值为 combined,则在推断处理器配置规范时,
组合规定
集,
即 有效内容配置规范 的组合规定集,用作
推断来源。
如果此参数的值为 first,则在推断处理器配置规范时,
选取第一个组成配置规范,该配置规范属于
组合规定
集,而该集合属于 有效内容配置规范,
并且从该组成配置规范推断出的处理器配置规范受到 内容处理器 的支持,
将其用作推断来源,更多详情请参见
构建推断的处理器
配置规范 过程。
如果未指定,则必须将此参数的值
视为 first。
ttp:inferProcessorProfileSource 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:permitFeatureNarrowing 属性用于指定,
与某个特性或扩展相关的要求,是否可以通过对该特性或扩展作
(语法或语义上)更狭窄的解释
来满足。
如果指定了此属性,其值必须遵守以下语法:
ttp:permitFeatureNarrowing : xsd:boolean // 参见 [XML Schema Part 2],第 3.2.2 节 |
如果此参数的值为 true,则对支持某个特性或
扩展的要求可以得到满足,
前提是该特性或扩展的定义指定了 extends 属性,并且
该属性引用的特性或扩展
受到处理器的支持。
如果此参数的值为 false,则对支持某个特性或
扩展的要求不能
由 extends 属性指定的、定义更狭窄的特性或扩展来满足。
如果未指定,则必须将此参数的值
视为 false。
ttp:permitFeatureNarrowing 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:permitFeatureWidening 属性用于指定,
与某个特性或扩展相关的要求,是否可以通过对该特性或扩展作
(语法或语义上)更宽泛的解释
来满足。
如果指定了此属性,其值必须遵守以下语法:
ttp:permitFeatureWidening : xsd:boolean // 参见 [XML Schema Part 2],第 3.2.2 节 |
如果此参数的值为 true,则对支持某个特性或
扩展的要求可以得到满足,
前提是该特性或扩展的定义指定了 restricts 属性,并且
该属性引用的特性或扩展
受到处理器的支持。
如果此参数的值为 false,则对支持某个特性或
扩展的要求不能
由 restricts 属性指定的、定义更宽泛的特性或扩展来满足。
如果未指定,则必须将此参数的值
视为 false。
ttp:permitFeatureWidening 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:profile 属性
表示一个 处理器配置规范,
它属于定时文本标记语言(TTML),适用于处理
文档实例 的情况。
注:
如果作者希望指定一组处理器配置规范中的一个或多个适用,
而非单个处理器配置规范适用,则建议内容作者使用
ttp:processorProfiles,其规定见 6.2.8 ttp:processorProfiles。
注:
有关指明内容配置规范的信息,请参见 6.2.1 ttp:contentProfiles。
如果指定了此属性,其值必须遵守以下语法,
其中 designator 遵守
<uri> 值语法,并且还必须指定一个
配置规范指示符,该指示符符合
5.2 配置规范。
ttp:profile : designator designator : <profile-designator> |
ttp:profile
属性仅在指定于以下元素上时才被视为有意义:
tt 元素。
如果一个 顶层 处理器配置规范
在 文档实例 中被定义,则
ttp:profile
属性不应当指定在 tt 元素上。
注:
请参见 5.2.4 配置规范语义,以了解 如何确定 有效处理器配置规范, 当一个或多个机制 指示了一个或多个配置规范,供处理文档时(可能)使用。
ttp:processorProfiles 属性可以由内容作者使用,
用于表达一个或多个 处理器配置规范,它们属于
定时文本标记语言(TTML),并且
包含它的文档实例 要求支持
(1) 一组配置规范中的全部,
这组配置规范是所指定的 处理器配置规范;或 (2) 一组配置规范中的任意一个,
这组
配置规范是所指定的 处理器配置规范。
如果指定了此属性,其值必须遵守以下语法,
其中每个 profile-designator 项都遵守
<uri> 值语法,并且
还须遵守配置规范指示符的约束,这些约束依据
5.2 配置规范 定义。
如果指示符列表包含在函数语法 all(...) 中,或者未
使用函数语法,
则要求支持所有指示的 处理器
配置规范。如果指示符
列表包含在函数语法 any(...) 中,则要求
至少支持其中一个,
即所指示的 处理器配置规范 中的至少一个。
如果指定了多个指示符,则每个指示符的 绝对化 形式必须互不相同;也就是说, 转换为 绝对化 形式后,不允许出现重复的 指示符。
ttp:processorProfiles
属性仅在指定于以下元素上时才被视为有意义:
tt 元素。
ttp:processorProfileCombination 属性用于指定
组合多个 处理器配置规范 的方法。
如果指定了此属性,其值必须遵守以下语法:
ttp:processorProfileCombination : "leastRestrictive" | "mostRestrictive" | "replace" | "ignore" |
如果未指定,则必须将此参数的值视为 ignore。
给定两个有序的配置规定值 arg1 和 arg2,以及一种处理器 配置规范组合方法, 表 6-3 – 处理器配置规范 组合 规定了组合这两个规定值的结果, 其中实参的 顺序根据以下配置规范的词法顺序确定: 处理器配置规范,它们位于一个 文档实例 中。
| arg1 | arg2 | leastRestrictive |
mostRestrictive |
replace |
ignore |
|---|---|---|---|---|---|
| optional | optional | optional | optional | optional | optional |
| optional | required | optional | required | required | optional |
| required | optional | optional | required | optional | required |
| required | required | required | required | required | required |
ttp:processorProfileCombination 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:validation 属性用于指定 验证处理
是否可以或必须针对 文档实例 执行,执行方为
执行验证的内容处理器。
如果指定了此属性,其值必须遵守以下语法:
ttp:validation : "required" | "optional" | "prohibited" |
如果此参数的值为 required,则一个 执行验证的内容处理器
必须执行 验证处理,处理对象为 TTML 文档实例,且必须在执行
其他类型的处理(例如呈现或转换处理)之前完成。
如果此参数的值为 optional,则一个 执行验证的内容处理器
可以但不必执行 验证处理,处理对象为
TTML 文档实例,执行时机为
其他类型的处理(例如呈现或转换处理)之前。
如果此参数的值为 prohibited,则一个 执行验证的内容处理器
不得执行 验证处理 来处理 TTML 文档实例,如果该验证发生在
其他类型的处理(例如呈现或转换处理)之前,除非最终用户
或应用程序覆盖了这一禁止规定。
如果 验证处理 针对 TTML 文档实例 执行,且验证失败,则
使用计算值,
即 ttp:validationAction 特性的计算值,确定在
继续处理之前应采取什么操作。
如果未指定,则必须将此参数的值
视为 optional。
ttp:validation 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:validationAction 属性用于指定应采取什么操作,
操作执行方为 执行验证的内容处理器,执行时机为
文档实例 的验证失败时。
如果指定了此属性,其值必须遵守以下语法:
ttp:validationAction : "abort" | "warn" | "ignore" |
如果此参数的值为 abort,则除非中止处理的行为被
最终用户或应用程序覆盖,
否则 执行验证的内容处理器
必须中止处理 TTML 文档实例,如果有
验证错误 异常发生。
如果此参数的值为 warn,则一个 执行验证的内容处理器
应当在以下情况发生时警告最终用户:验证错误 或
验证警告 异常
发生,
并让最终用户选择继续还是中止处理。
如果此参数的值为 ignore,则一个 执行验证的内容处理器
不应当中止处理,也不应当警告最终用户,即使 验证异常
发生。
如果未指定,则此参数的值按以下方式确定:
如果以下 ttp:validation 特性的计算值为
required,
则必须将此参数的值视为 abort;
如果该计算值为 optional,
则必须将此参数的值视为 warn;
否则,如果该计算值为 prohibited,
则必须将此参数的值视为 ignore。
ttp:validationAction 属性仅在
指定于 tt 元素上时才被视为有意义。
本节规定核心词汇目录中的参数 内容,其中 参数应理解为以下信息:(1) 必不可少的信息,或 (2) 具有重要意义的信息,其用途是 解释核心词汇项所表达的其他类型信息的 语义,或建立一个 文档 处理上下文,借助 该上下文,可以将 TTML 内容与外部环境关联起来。
以下属性在 TT 参数命名空间中定义。
ttp:cellResolution 属性可以由作者使用,
用于表达水平和垂直方向的单元格数量,根容器区域
所占区域被划分为这些单元格,以便通过
均匀网格表达呈现语义。
如果指定了此属性,其值必须遵守以下语法:
ttp:cellResolution : columns <lwsp> rows // columns != 0; rows != 0 columns | rows : <non-negative-integer> |
如果未指定,则必须将列数和行数分别视为 32 和 15。如果指定,则列数或行数不得为零 (0)。
注:
选择 32 和 15 这两个值,是因为它们是 [CTA-608-E] 定义的最大列数和最大行数。
ttp:cellResolution 属性仅在
指定于 tt 元素上时才被视为有意义。
注:
均匀网格仅用于 测量长度和表达坐标。具体而言,并不 假定文本的呈现或各个 字形区 的对齐 与此网格相协调。这种对齐是可能的,但 需要使用等宽字体,并采用其 EM 方框恰好 匹配单元格大小的字号。
除非另有说明,当一个 <length> 以单元格 表示,且表示平行于内联或块推进尺寸的尺寸时, 分别适用单元格在内联或块推进尺寸上的尺寸。
注:
例如,如果(所有四条边的)内边距指定为 0.1c,单元格分辨率 为 20 × 10,并且 根容器 区域 的大小为 640 × 480,那么,假设采用从上到下、 从左到右的书写模式,起始侧和结束侧的内边距将为 (640 / 20) * 0.1 像素,而 其 前侧和后侧的内边距将为 (480 / 10) * 0.1 像素。
ttp:clockMode 属性用于指定
将时间表达式解释为实时时间坐标的方式,适用于
采用 clock 时基运行的情况,该时基的定义见 7.2.11
ttp:timeBase。
注:
请参见 12.3 时间值表达式,以了解 时间表达式语法和语义的规定。
如果指定了此属性,其值必须遵守以下语法:
ttp:clockMode : "local" | "gps" | "utc" |
如果时基(由 7.2.11
ttp:timeBase 定义)被指定为
clock,则此参数按以下方式适用:如果
参数的值为 local,则将时间表达式
解释为本地挂钟时间(和日期)坐标;
如果为 utc,则将时间表达式
解释为 UTC 时间坐标
[UTC];
如果为 gps,则将时间表达式
解释为 GPS 时间坐标
[GPS]。
注:
当适用以下时钟模式时,时间(和日期)表达式不隐含任何特定时区:
local 时钟模式。具体而言,预期 内容处理器
在处理所在的本地时区中解释本地时间(和日期)表达式,
无论处理发生在何处。
如果作者打算将时间(和日期)表达式固定到特定时区,
则可以将时间(和日期)
表达式转换为 UTC,并指定使用 utc 时钟模式。
注:
GPS 时间与 UTC 时间的主要区别在于,GPS 时间不针对闰秒进行调整,而 UTC 时间按以下方式调整: UTC = TAI(国际原子时) + 自 1972 年以来累计的 闰秒。TAI 由国际 计量局(BIPM)维护,该机构位于法国塞夫尔。 GPS 系统时间受美国海军天文台的主时钟(MC) 校准,该时钟与 TAI 之间保持一个很小但未明确规定的 容差 范围。
如果未指定,则必须将此参数的值
视为 utc。
ttp:clockMode 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:displayAspectRatio 属性用于指定 显示宽高比,该比例属于
根容器区域,具体阐述见 H 根容器区域语义。
如果指定了此属性,其值必须遵守以下语法:
ttp:displayAspectRatio : numerator <lwsp> denominator // numerator != 0; denominator != 0 numerator | denominator : <non-negative-integer> |
如果指定,则分子和分母都必须为非零值。如果未指定,则 显示宽高比, 即 根容器区域 的显示宽高比,由 H 根容器区域语义 确定。
ttp:displayAspectRatio 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:dropMode 属性用于指定
对帧计数的解释和使用的约束,
这些帧计数对应于 [SMPTE ST 12-1] 时间坐标,适用于
采用 smpte 时基运行的情况,该时基的定义见
7.2.11 ttp:timeBase。
如果指定了此属性,其值必须遵守以下语法:
ttp:dropMode : "dropNTSC" | "dropPAL" | "nonDrop" |
如果时基(由 7.2.11
ttp:timeBase 定义)被指定为
smpte,则此参数按以下方式适用:如果
参数的值为 nonDrop,则在时间表达式的任意给定
秒内,帧从 0 计数到
N−1,其中 N 是
ttp:frameRate 参数指定的值,但忽略
ttp:frameRateMultiplier 参数指定的任何值。
注:
当以 nonDrop
模式运行时,在正常(1 倍速)向前播放期间,时间表达式中的一秒
可能等于,也可能不等于实际时间中的
一秒。如果指定了
ttp:frameRateMultiplier 参数,且其值不
等于 1:1,则时间表达式中的一秒会
短于或长于实际播放所经过的
一秒。
如果此参数的值为 dropNTSC,则在时间表达式的任意
给定秒内(秒数为 00 的情况除外),
帧从 0 计数到 N−1,其中 N 是
ttp:frameRate 参数指定的值,但
忽略以下参数指定的任何值:
ttp:frameRateMultiplier 参数。如果时间
表达式的秒数为 00,并且时间表达式的分钟数
不是 00、10、20、30、
40 或 50,则帧码 00
和 01 在该秒内被跳过;否则,这些
帧码不会被跳过。
注:
例如,当以 dropNTSC
模式运行,且 ttp:frameRate 为 30 时,
连续帧之间的帧计数会出现不连续,如以下
时间表达式序列所示:01:08:59:28、
01:08:59:29、01:09:00:02、
01:09:00:03。
如果此参数的值为 dropPAL,则在时间表达式的任意
给定秒内(秒数为 00 的情况除外),
帧从 0 计数到 N−1,其中 N 是
ttp:frameRate 参数指定的值,但
忽略以下参数指定的任何值:
ttp:frameRateMultiplier 参数。如果时间
表达式的秒数为 00,并且时间表达式的分钟数
为偶数,但不是 00、20 或 40,
则帧码 00 到 03
在该秒内被跳过;否则,这些帧码不会被跳过。
注:
例如,当以 dropPAL
模式运行,且 ttp:frameRate 为 30 时,
连续帧之间的帧计数会出现不连续,如以下
时间表达式序列所示:01:09:59:28、
01:09:59:29、01:10:00:04、
01:10:00:05。
注:
dropPAL 模式也称为
M/PAL 或 PAL (M) 丢帧
码,它采用 PAL 调制,并使用约 29.97
帧/秒的 NTSC 帧率。M/PAL 系统主要在巴西使用。
如果未指定,则必须假定适用 nonDrop。
ttp:dropMode 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:frameRate 属性用于指定相关
媒体对象的帧率,或者 文档
实例 的固有帧率,如果该实例打算
作为独立媒体对象发挥作用。
如果指定了此属性,其值必须遵守以下语法:
ttp:frameRate : <non-negative-integer> // value > 0 |
适用于 文档实例 的帧率,其用途 是 解释以帧为单位表达的时间表达式, 这些表达式的定义见 12.3.1 <time-expression>。
如果适用 media 时基,且有效帧率为
整数,则将一帧解释为媒体时间中一秒的一个
分段,即如果帧率指定为 F,则
将媒体时间中的一秒划分为 F 个
持续时间相等的区间,其中每个区间标记为帧 f,
且 f ∈ [0…F−1]。
注:
请参见 I.2 媒体时基,以了解更多
细节,
这些细节涉及 media 时基的时间表达式解释方式。
如果未指定,则必须将帧率视为等于某个 由应用程序定义的帧率;或者,如果没有适用的应用程序定义帧率, 则为每秒三十 (30) 帧。如果指定,则帧率必须 大于零 (0)。
ttp:frameRate 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:frameRateMultiplier 属性用于
指定一个乘数,将其应用于以下属性指定的帧率:
ttp:frameRate 属性,以计算有效
帧率。
如果指定了此属性,其值必须遵守以下语法:
ttp:frameRateMultiplier : numerator <lwsp> denominator // numerator != 0; denominator != 0 numerator | denominator : <non-negative-integer> |
当所需帧率无法 表示为每秒整数帧时,使用帧率乘数。
如果未指定,则必须将帧率乘数视为等于某个由应用程序 定义的帧率乘数; 或者,如果没有适用的应用程序定义帧率乘数,则为一 (1:1)。分子和 分母都必须为非零值。
ttp:frameRateMultiplier 属性仅在
指定于 tt 元素上时才被视为有意义。
注:
用于与 NTSC [SMPTE ST 170] 格式的视频对象在每秒 30 帧下同步的帧率乘数,其标称值为 1000:1001。NTSC 视频的标称帧率定义为色度 副载波频率 3,579,545.45…Hz(= 5.0MHz × 63/88)乘以比例 2/455,再除以 每帧 525 条水平扫描线的数量,从而得到 29.970029970029…(= 30 × 1000/1001)帧/ 秒的帧率。其他帧率乘数适用于不同的 使用地区和视频格式标准。
注:
除 PAL/M 的情况外,用于与 PAL 格式的视频对象在每秒 25 帧下同步的帧率乘数,其标称值为 1:1。
ttp:markerMode 属性用于指定
对时间表达式的解释和使用的约束,
这些表达式对应于 [SMPTE ST 12-1] 时间坐标,适用于
采用 smpte 时基运行的情况,该时基的定义见
7.2.11 ttp:timeBase。
如果指定了此属性,其值必须遵守以下语法:
ttp:markerMode : "continuous" | "discontinuous" |
如果时基(由 7.2.11
ttp:timeBase 定义)被指定为
smpte,则此参数按以下方式适用:如果
参数的值为 continuous,则 [SMPTE ST 12-1] 时间
坐标
可以被假定为线性的,并且单调递增或
递减;但是,如果为 discontinuous,则
不得对时间坐标的线性或单调性作任何假定。
如果未指定,则必须将此参数的值
视为 discontinuous。
注:
此参数的默认值最初
(在 TTML 1.0 第
一版 中)
被指定为 continuous;但是,对行业现状的进一步评估
表明,这一
选择不正确,最常见的默认值是 discontinuous。
ttp:markerMode 属性仅在
指定于 tt 元素上时才被视为有意义。
如果适用的值为 continuous,则时间
表达式可以转换为实时时间
坐标,转换时应考虑计算得到的帧率
以及 ttp:dropMode 参数表达的丢帧模式。
在这种情况下,内容处理器 必须创建并
维护一个
合成 SMPTE 文档同步基准,
这些时间
表达式在该基准内进行解释,进一步说明见
12.4 定时语义。
注:
当采用 smpte 时基和
continuous 标记模式运行时,存在一个隐含的时间坐标
空间,即 合成 SMPTE 文档
同步基准,
它由单调递增(或递减)的
[SMPTE ST 12-1] 时间坐标定义,同时考虑
计算得到的帧率和丢帧模式。所有时间表达式都相对于
此时间坐标空间进行解释,其依据为
SMPTE 时间码 同步事件(标记),
其中 文档处理上下文 发出
这些事件,并隐含以下约束:
关于时间坐标单调性,以及存在丢帧时
重新同步的约束。
将 continuous 标记模式与 smpte
时基一起使用,不同于使用 media 时基,
因为 (1) ttp:dropMode 参数的语义
适用于前者,而不适用于后者;并且 (2) [SMPTE ST 12-1]
时间坐标可以单调地应用于经过
时间扩张、时间收缩或时间
反转的
媒体。
如果适用的值为 discontinuous,则时间
表达式不得转换为实时时间
坐标,不对时间表达式定义算术运算符(加法、乘法),
因此,任何(良构的)
持续时间表达式都必须被视为无效。
注:
当采用 smpte 时基和
discontinuous 标记模式运行时,不存在有效的时间坐标
空间;所有时间表达式都被解释为带标签的
同步事件(标记),其中 文档处理上下文
发出这些事件,当它们与表示相同标签的时间
表达式相对应时,会使一个时间区间
相应地开始或结束。
以 discontinuous
模式运行的另一个副作用是,子元素的时间表达式与其时间容器的
时间表达式没有必然关系;也就
是说,时间容器及这些容器的子元素,
根据带标签的同步(标记)事件的发生,
在时间上独立地激活或停用。
注:
对 <time-expression> 与带标签的同步事件(标记)的比较,被视为依赖于实现。 具体而言,本规范不要求实现使用 特定的内部格式来表示 时间表达式或标记,也不要求采用特定的比较算法。但是,预期 实现 在进行这种比较时,遵守时间表达式的语义, 以及适用于标记标签的任何 隐含语义。
注:
此参数所表达的标记不连续性概念,
在逻辑上独立于帧计数方法,
后者由 ttp:dropMode 参数表达。具体而言,
即使 ttp:dropMode 参数指定为
dropNTSC 或 dropPAL,标记模式也可以
指定为 continuous,即使存在由帧计数
方法引起的帧计数不连续,除非
标记标签中存在其他非线性或不连续情况,例
如,两个连续帧分别标记为 10:00:00:00
和 10:00:01:00。
ttp:pixelAspectRatio 属性用于指定 像素宽高比,该比例属于 根容器区域,具体阐述见 H 根容器区域语义
如果指定了此属性,其值必须遵守以下语法:
ttp:pixelAspectRatio : numerator <lwsp> denominator // numerator != 0; denominator != 0 numerator | denominator : <non-negative-integer> |
如果指定,则分子和分母都必须为非零值。如果未指定,则 像素宽高比, 即 根容器区域 的像素宽高比,由 H 根容器区域语义 确定。
ttp:pixelAspectRatio 属性仅在
指定于 tt 元素上时才被视为有意义。
不应当指定 ttp:pixelAspectRatio 属性,
除非同时指定一个 tts:extent 属性,它由
两个 <length> 规定组成,且使用 px
(像素)单位,
并指定在 tt 元素上,
如果不存在该属性,则使用 ttp:pixelAspectRatio 属性的做法
已被弃用。
ttp:subFrameRate 属性用于指定相关
媒体对象的子帧率,或者 文档
实例 的固有子帧率,如果该实例打算
作为独立媒体对象发挥作用。
如果指定了此属性,其值必须遵守以下语法:
ttp:subFrameRate : <non-negative-integer> // value > 0 |
适用于 文档实例 的子帧率, 用于 解释以子帧为单位表达的时间表达式, 这些表达式的定义见 12.3.1 <time-expression>。
如果适用 media 时基,且有效帧率为
整数,则将子帧解释为媒体时间中一帧的一个
分段,即如果子帧率指定为 S,则
将媒体时间中的一帧划分为 S 个
持续时间相等的区间,其中每个区间标记为子帧 s,
且 s ∈ [0…S−1]。
注:
请参见 I.2 媒体时基,以了解更多
细节,
这些细节涉及 media 时基的时间表达式解释方式。
如果未指定,则必须将子帧率视为等于某个由应用程序定义的 子帧率;或者,如果没有适用的应用程序定义 子帧率,则为一 (1)。如果指定,则子帧率必须大于 零 (0)。
ttp:subFrameRate 属性仅在
指定于 tt 元素上时才被视为有意义。
注:
子帧有时也称为场,适用于 与隔行扫描视频媒体对象同步的上下文。
ttp:tickRate 属性用于指定相关
媒体对象的滴答率,或者一个 文档实例 的内容的固有滴答率,如果该实例打算
作为独立媒体对象发挥作用。
如果指定了此属性,其值必须遵守以下语法:
ttp:tickRate : <non-negative-integer> // value > 0 |
适用于 文档实例 的滴答率,其用途
是
解释以滴答为单位表达的时间表达式,这些表达式
使用 t 度量单位,其定义见 12.3.1
<time-expression>。
如果适用 media 时基,
则将一个滴答解释为媒体时间中一秒的整数
等分之一,即如果滴答率指定为 T,则
将媒体时间中的一秒划分为 T 个
持续时间相等的区间,其中每个区间标记为滴答 t,
且 t ∈ [0…T−1]。
注:
请参见 I.2 媒体时基,以了解更多
细节,
这些细节涉及 media 时基的时间表达式解释方式。
如果未指定,而指定了帧率,则滴答率 必须被视为有效帧率乘以 子帧率(即将滴答解释为子帧);或者,如果未 指定帧率,则必须将滴答率视为媒体时间中每秒一 (1) 个滴答。如果指定,则滴答率 不得为零 (0)。
注:
滴答与帧或子帧之间不存在预定义的 关系。滴答是对秒的任意划分,允许 使用定点算术,而不是以分数形式(并且可能 不精确地)表达秒数。
ttp:tickRate 属性仅在
指定于 tt 元素上时才被视为有意义。
ttp:timeBase 属性用于指定
文档时间坐标空间。
如果指定了此属性,其值必须遵守以下语法:
ttp:timeBase : "media" | "smpte" | "clock" |
如果时基被指定为 media,则时间
表达式表示某个媒体对象时间线中的一个坐标,
其中媒体对象可以是外部媒体对象,
文档实例 的内容将与之同步,或者
它也可以
是 文档实例 本身的内容,适用于以下
情况:
定时文本内容打算建立独立的时间
线。
注:
使用媒体时基时,如果该时基被暂停或 进行正向或负向缩放,即媒体播放速率 不为一,则预期 相关定时文本内容的呈现也会相应地 暂停、加速或减速。 控制外部 媒体时基的方式不在本规范的范围之内。
如果时基被指定为 smpte,
则时间表达式表示一个 [SMPTE ST 12-1] 时间
坐标,文档实例 的内容
将与该坐标
同步。在这种情况下,ttp:markerMode
和 ttp:dropMode 参数的值适用,其定义分别见 7.2.7
ttp:markerMode 和 7.2.4
ttp:dropMode。
注:
当时基被指定为 smpte 时,
每个时间表达式都表示一个媒体标记值,类似于
[SMIL 3.0] 第 5.4.3 节所定义的值,但其区别在于,
它使用结构化的 [SMPTE ST 12-1]
时间坐标作为标记名称,而不是不透明的标记名称。
如果时基被指定为 clock,则时间
表达式表示某个现实世界时间线中的一个坐标,
该时间线由某个实时时钟建立,例如本地挂钟时间
或 UTC(协调世界时)或 GPS(全球定位系统)
时间线。
如果未指定,则必须将默认时基视为
media。
ttp:timeBase 属性仅在
指定于 tt 元素上时才被视为有意义。
当采用 media 或 smpte
时基运行时,文档
实例 的历时呈现可以
受到控制时间线的变换影响,例如
时间反转、扩张(扩展)或收缩
(压缩);但是,当采用 clock
时基运行时,不允许任何变换,历时
呈现沿着一条基于实际时间流逝的线性、
单调递增的时间线进行。
注:
请参见 I 时间表达式语义,以了解更多 细节, 这些细节涉及如何根据指定时基解释时间表达式。
本节规定核心词汇目录中的内容 部分。
以下元素规定结构和主要内容方面的信息,这些信息属于一个 文档实例:
注:
本节的各小节按逻辑顺序排列(从最高层到最低层的构造)。
tt 元素充当一个 文档实例 的根文档元素。
tt 元素接受零个或一个 head 子元素,
后跟
零个或一个 body 元素。
<tt tts:extent = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") : default {TT 参数命名空间中的任意属性} Content: head?, body? </tt> |
根时间范围,即以下时间区间:
文档实例 处于活动状态的时间区间,具有一个隐式
持续时间,它等于
文档的 body 元素的隐式持续时间(如果 body
元素存在),或者等于零(如果 body 元素不存在)。
如果 tts:extent 属性被指定在
tt
元素上,则它必须遵守 10.2.16 tts:extent,
在这种情况下,它
指定 空间范围,该范围属于 根容器区域,
内容区域 在其中定位和呈现。如果没有
tts:extent
属性被指定,则 空间范围,
即
根容器区域 的空间范围,由以下规则确定,
这些规则规定于 H 根容器区域
语义。
根容器区域 的原点
由 文档处理上下文 确定。
注:
如果作者希望指明以下区域的(存储或图像)宽高比:根容器区域,
同时不指定其分辨率,则可以通过使用
ttp:displayAspectRato
参数属性来实现。
xml:lang 属性必须指定在 tt 元素上。
如果属性值为空,则表示不存在适用于
文档实例 内所含文本的默认语言。
如果未在 tt 元素上指定 xml:space 属性,则
必须
将其视为如同已指定该属性,且其值为 default。
head 元素是一个容器元素,用于对头部内容进行分组,其中包括
元数据、
配置规范、嵌入内容资源、样式和布局信息。
head 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,
后跟零个或多个属于以下元素组的元素:
Profile.class 元素组,
后跟零个或一个 resources 元素,
后跟零个或一个 styling 元素,
后跟零个或一个 layout 元素,
后跟零个或一个 animation
元素。
由以下元素组中的子元素指定的任何元数据:Metadata.class
元素组,在语义上适用于 文档
实例 这一
整体,而不只是 head 元素。
由 Parameters.class
元素组中的子元素指定的任何参数,在语义上适用于 文档
实例 这一
整体,而不只是 head 元素。
resources 子元素用于指定嵌入内容构造,
这些构造由某些样式构造以及
嵌入内容元素 引用。
styling 子元素用于指定样式构造,
这些构造由其他样式构造、布局构造以及
内容元素 引用。
layout 子元素用于指定布局构造,
这些构造由 内容元素 引用。
animation 子元素用于指定动画构造,
其目标是可动画化的 内容元素
或 布局 元素。
<head xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") Content: Metadata.class*, Profile.class*, resources?, styling?, layout?, animation? </head> |
在时间语义适用于以下元素内容的范围内:
head 元素,该元素的隐含时间区间被
定义为与 根时间
范围 具有相同的起止点。
body 元素充当逻辑容器和时间
结构化元素,用于一系列文本内容单元,这些单元表示为
逻辑分区。
body 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,
后跟零个或多个
属于 Animation.class
元素组的元素,
后跟零个或多个 div 元素或 Embedded.class 元素组中的元素。
由以下元素组中的子元素指定的任何元数据:Metadata.class
元素组,在语义上适用于 body 元素及其后代这一
整体。
由以下元素组中的子元素指定的任何动画元素:Animation.class
元素组,在语义上适用于 body 元素。
<body animate = IDREFS begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> region = IDREF style = IDREFS timeContainer = ("par" | "seq") xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {TT 元数据命名空间中的任意属性} {任意 样式属性} Content: Metadata.class*, Animation.class*, (div|Embedded.class)* </body> |
作者可以为 body 元素指定一个时间区间,使用
begin、dur 和 end 属性。如果此区间的起始点
仍未指定,则将起始点解释为以下两个
起始
点中较晚的一个:文档时间坐标
空间 的起始点,
以及 根时间范围 的起始点。
如果此区间的结束点仍未指定,则将
结束点解释为 根
时间范围 的结束点。
注:
从 SMIL 呈现中引用的 文档实例, 预期 遵循与其他 SMIL 媒体对象所适用的相同定时 规则。
如果在 body
元素上指定了相对起始或结束时间,则这些时间通过引用以下空间的起始点
来解析:文档时间坐标
空间。
如果 根时间范围 短于
以下元素的计算持续时间:
body 元素,则 body 元素的活动时间区间
将被截断至 根时间
范围 的活动结束点。
作者可以将一组样式特性关联到
body 元素,方式是使用 style
属性、内联样式属性,或二者的组合。
如果未将 timeContainer 属性指定在
body 元素上,则必须将其解释为具有
并行
时间包含语义。
div 元素充当逻辑容器和时间
结构化元素,用于一系列文本内容单元,这些单元表示为
逻辑子分区或段落。
注:
当在连续(非分页)的视觉呈现媒介上渲染时,
预期 div 元素生成
一个或多个块
区,
其中包含零个或多个子块区,
这些子块区由 div 元素的
后代
p 元素生成。
如果某个
由 div 元素生成的块区
不包含任何子区,则预期不会呈现该块区。
div 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,
后跟零个或多个
属于 Animation.class
元素组的元素,
后跟零个或一个
属于 Layout.class 元素
组的元素,
后跟零个或多个属于以下元素组的元素:Block.class 或
Embedded.class 元素组。
由以下元素组中的子元素指定的任何元数据:Metadata.class
元素组,在语义上适用于 div 元素及其后代这一
整体。
由以下元素组中的子元素指定的任何动画元素:Animation.class
元素组,在语义上适用于 div 元素。
<div animate = IDREFS begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> region = IDREF style = IDREFS timeContainer = ("par" | "seq") xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {TT 元数据命名空间中的任意属性} {任意 样式属性} Content: Metadata.class*, Animation.class*, Layout.class?, (Block.class|Embedded.class)* </div> |
作者可以将一组样式特性关联到 div 元素,方式是
使用
style 属性、内联样式属性,或二者的组合。
如果未将 timeContainer 属性指定在
div 元素上,则必须将其解释为具有
并行时间包含语义。
p 元素表示一个逻辑段落,充当
块级与内联级格式化语义之间的过渡。
p 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,
后跟零个或多个
属于 Animation.class
元素组的元素,
后跟零个或一个
属于 Layout.class 元素
组的元素,
后跟零个或多个属于以下元素组的元素:Inline.class 或
Embedded.class 元素组。
由以下元素组中的子元素指定的任何元数据:Metadata.class
元素组,在语义上适用于 p 元素及其后代这一整体。
由以下元素组中的子元素指定的任何动画元素:Animation.class
元素组,在语义上适用于 p 元素。
<p animate = IDREFS begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> region = IDREF style = IDREFS timeContainer = ("par" | "seq") xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {TT 元数据命名空间中的任意属性} {任意 样式属性} Content: Metadata.class*, Animation.class*, Layout.class?, (Inline.class|Embedded.class)* </p> |
作者可以将一组样式特性关联到
p 元素,方式是使用 style
属性、内联样式属性,或二者的组合。
如果未将 timeContainer 属性指定在
p 元素上,则必须将其解释为具有
并行时间包含语义。
如果 p 元素的一系列子项
仅由 字符信息项 组成,
则该序列
须接受 [构建
匿名 span] 处理。
注:
TTML 的呈现语义实际上
隐含了 p 元素构成一次换行。具体而言,
它在第一个生成的行区之前,以及最后一个生成的
行区之后,都关联着块堆叠约束。请参见
11.3.1.4 同步流处理,
以了解更多细节。
span 元素充当逻辑容器和时间
结构化元素,用于一系列具有内联
级格式化语义的文本内容单元。
当在视觉媒介上呈现时,span 元素旨在
生成一系列内联区,每个内联区包含一个或多个 字形区。
span 元素接受零个或多个子元素,
这些元素属于 Metadata.class 元素
组,
后跟零个或多个
属于 Animation.class
元素组的元素,
后跟零个或多个属于以下元素组的元素:Inline.class 或
Embedded.class 元素组。
由以下元素组中的子元素指定的任何元数据:Metadata.class
元素组,在语义上适用于 span 元素及其后代这一
整体。
由以下元素组中的子元素指定的任何动画元素:Animation.class
元素组,在语义上适用于 span 元素。
<span animate = IDREFS begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> region = IDREF style = IDREFS timeContainer = ("par" | "seq") xlink:arcrole = <uri-list> xlink:href = <uri> xlink:role = <uri-list> xlink:show = ("new" | "replace" | "embed" | "other" | "none") : none xlink:title = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {TT 元数据命名空间中的任意属性} {任意 样式属性} Content: Metadata.class*, Animation.class*, (Inline.class|Embedded.class)* </span> |
作者可以将一组样式特性关联到
span 元素,方式是使用 style
属性、内联样式属性,或二者的组合。
如果未将 timeContainer 属性指定在
span 元素上,则必须将其解释为具有
并行时间包含语义。
链接属性 xlink:* 可以用于将 span 元素链接到
相关内容,使用
指定的位置(href)、角色和标题。链接激活的行为
受 xlink:show 属性影响,
该属性的确切含义由 文档处理上下文 确定。
注:
xlink:show 的默认值最初
(在 TTML2 第一版 中)
被指定为 new;但是,进一步考虑后认为,
none 更能反映实现实践,
尤其是因为 none 的语义完全依赖于实现,
而 new 的语义
仅仅是 none 语义的一种可能实现。
如果 span 元素指定了 xlink:href 属性,则后代
元素不得指定
xlink:href 属性;如果指定了,则在
呈现或链接激活处理时,必须忽略后者。
如果 span 元素的一系列子项
仅由 字符信息项 组成,
则该序列
须接受 [构建
匿名 span] 处理。
br 元素表示一次显式换行。
由以下元素组中的子元素指定的任何元数据:Metadata.class
元素组,在语义上适用于 br 元素及其后代这一
整体。
使用 Animation.class 子元素的做法已被弃用。
注:
没有样式属性适用于 br 元素,因此动画不会影响
br。
<br condition = <condition> style = IDREFS xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {TT 元数据命名空间中的任意属性} {任意 样式属性} Content: Metadata.class*, Animation.class* </br> |
当在视觉媒介上呈现时,br 元素的存在必须被
解释为一次强制换行。
注:
br 元素的视觉呈现
旨在产生与以下控制字符相同的效果:
CR (U+000D),
后跟控制码 LF (U+000A),并在电传打字设备上呈现。
因此,连续两个 br 元素将产生
不同于单个 br 元素的效果。
本节定义以下通用属性,它们用于核心词汇目录中的许多或所有 元素类型:
此外,本节定义以下链接词汇,它们用于核心词汇目录中的某些 元素类型:
condition 属性用于从语义处理中按条件排除一个元素
(及其后代),
在这种情况下,该元素称为条件化元素。
注:
元素使用 condition 属性既不会阻止
对该元素(及其后代)的解析,也不会阻止
将该元素(及其后代)的解析表示插入
精简的 XML 信息集,该信息集关联于包含它的
文档实例。
condition 属性可以用于 (1) 核心词汇目录中的任意
元素,
但配置规范相关内容除外,即属于配置规范
模块的元素除外,以及
(2) 由扩展模块定义的任意元素,前提是该
元素的类型
允许指定 condition
属性。
condition 属性的值必须符合
<condition> 表达式,
该表达式在呈现处理时求值(惰性求值)
或在呈现处理之前求值(即时求值),其中即时求值
仅可在求值结果
在呈现处理期间不可能改变或已知不会改变时进行。
注:
例如,如果条件表达式依赖于条件函数的值, 那么该条件表达式的值可能在呈现处理期间改变,在这种 情况下不能使用即时求值。
对于呈现处理,如果元素指定了 condition
属性,并且
其 <condition> 表达式的求值结果为
false,
那么必须忽略该元素及其后代元素的语义,
除非这些语义被明确列为例外,
也就是说,该元素及其后代元素被
按条件排除,
无论这些后代元素上指定的任何 <condition>
表达式
的求值结果如何。
注:
例如,如果 p 元素指定了一个
condition
属性,其求值结果为 false,那么在呈现时,
该元素及其后代的内容将被忽略。
注:
无需对元素的 condition 属性求值(求值也没有意义),
如果该元素被按条件排除,
原因是它的某个祖先元素被按条件排除。
也就是说,元素不能被按条件
包含,
即使对其 condition 属性求值,
只要有一个祖先被按条件
排除。
注:
在某些情况下,通过
condition 属性忽略(排除)元素的语义,
指的是部分而非完全忽略该元素的语义,相关说明请参见
下文以及具体元素的定义。
除非有适用的更高层协议,否则以下
例外适用于
确定应忽略哪些语义的过程,当 <condition> 表达式
的求值结果为 false 时:
注:
上述例外也适用于 按条件排除的元素的后代。
xlink:href 属性的用法遵循 [XLink 1.1] 中的定义。
xlink:href 属性可以用于任意 span 或
image 元素。
为实现 xlink:href 语义,
xlink:type
的语义固定为与 simple 值关联的语义,而
xlink:actuate
的语义固定为与 onRequest 值关联的语义,其定义见 [XLink 1.1]。
注:
xlink:type 和 xlink:actuate 属性均未被定义为
可直接用于
文档实例中的属性。
xml:base 属性的用法遵循
[XML Base] 中的定义。
xml:base 属性可以用于核心词汇目录中的任意元素,
只要该元素允许 (1) condition 属性,
(2) 属于
Metadata.class 元素组的后代
元素,或
(3) 允许 xml:base 属性的后代元素。
xml:lang 属性的用法遵循
[XML 1.0] 第 2.12 节语言标识中的定义。
xml:lang 属性必须在 tt
元素上指定,并且可以由核心词汇目录中除参数词汇以外的
任何其他元素类型的实例指定。
注:
如 [XML 1.0] 第 2.12 节所规定,语言与某个元素的 关联 适用于该元素的所有后代,除非被后代覆盖。换句话 说, 与某个元素关联的语言,要么是在该元素上指定的,要么是 实际上 从该元素最近的祖先元素继承的。
此语言关联过程仅基于 精简的 XML 信息集的结构,该信息集属于一个文档实例, 并且此过程在执行中间 同步文档构建之前发生。
以下示例说明了 xml:lang 在内容元素和元数据元素上的
用法。
<tt ... xml:lang=""> ... <p xml:lang="en">Jean said hello.</p> <p xml:lang="fr">Jean dit bonjour.</p> <p> <image src="#talking-image"> <ttm:item name="altText" xml:lang="en">Talking</ttm:item> <ttm:item name="altText" xml:lang="fr">Parlant</ttm:item> </image> </p> ... </tt> |
注:
在此示例中,根 tt 元素使用空语言标签进行标识,
表示语言未知或未指定,该
标识实际上由后代元素继承(除非被覆盖)。接下来,
前两个 p(段落)元素
分别与 en(英语)和 fr(法语)语言
标识符关联。最后,第三个 p
(段落)元素由一个前景图像组成,该图像与两个替代
文本描述相关联,关联方式是使用
具名元数据项,
而这些文本描述又分别与 en(英语)和
fr(法语)语言标识符关联。
xml:space 属性的用法遵循
[XML 1.0] 第 2.10 节空白处理中的定义。
xml:space 属性可以用于核心词汇目录中的任意
元素,但参数词汇除外。
注:
如 [XML 1.0] 第 2.10 节所规定,适用于某个元素的应用程序空白处理指示 同样 适用于该元素的所有后代,除非被后代覆盖。换句话 说, 适用于某个元素的应用程序空白处理指示,要么是在该 元素上指定的,要么是实际上 从该元素最近的祖先元素继承的。
此应用程序空白处理指示过程仅基于 精简的 XML 信息集的结构,该信息集属于一个文档实例, 并且此过程在执行中间 同步文档构建之前发生。
值 default 的语义固定为:
当对一个文档
实例执行
以下章节所述的呈现处理时:11.3.1.4 同步流
处理,
必须按照
等效中间 XSL-FO 文档中受影响的
元素已指定以下特性的方式进行处理:
suppress-at-line-break="auto"
linefeed-treatment="treat-as-space"
white-space-collapse="true"
white-space-treatment="ignore-if-surrounding-linefeed"
同样,值 preserve 的语义固定为:
执行呈现处理时,必须按照
等效中间 XSL-FO 文档中受影响的
元素已指定以下特性的方式进行处理:
suppress-at-line-break="retain"
linefeed-treatment="preserve"
white-space-collapse="false"
white-space-treatment="preserve"
如果一个未经规范化的水平制表符 	(HT)字符出现
在某个字符信息项中,
而该项属于一个精简的 XML 信息集,那么在进行视觉
呈现时,该制表符
字符被视为单个 (SPACE)字符。
执行其他类型的处理时,如果这些处理旨在最终通过
本规范所述方式以外的方式
实现视觉呈现,则应当遵循上述空白折叠和
保留语义。对于其他类型
的处理,xml:space 属性的处理方式
取决于处理器,但应当尽可能遵循
上述语义。
注:
上述引用的四个 XSL-FO 特性的语义分别由 [XSL-FO 1.1] 第 7.17.3、7.16.7、7.16.12 和 7.16.8 节定义。
注:
未为 TAB(U+0009)字符指定呈现语义。此外,TAB
(U+0009)字符能够生成字形区。
因此,在 #PCDATA 内容中使用 TAB(U+0009)字符,
如果该内容位于 p 和 span 元素内,
则不推荐这样做。
核心词汇可以使用以下表达式:
<absolute-profile-designator> 值表达式用于 (1) 定义绝对 指示符,该指示符关联于 本地定义的配置规范,或 (2) 引用远程定义的配置规范。
<absolute-profile-designator> : <absolute-uri> |
注:
在当前上下文中,本地定义是指在当前文档中定义,而 远程定义 是指在另一个文档中定义。
<absolute-uri> 值表达式用于指定绝对 URI [URI]。
<absolute-uri> : <uri> // 仅限绝对形式 |
在 <absolute-uri> 值表达式的上下文中,<uri> 表达式的值语法 必须符合 [URI] 第 4.3 节定义的 URI 绝对形式。
<arguments> 值是一个子表达式,与 function-expression
非终结符一起使用,该非终结符属于
<expression> 值。
<arguments>
: "(" <lwsp>? ")"
| "(" <lwsp>? argument-list <lwsp>? ")"
argument-list
: <expression> (<lwsp>? "," <lwsp>? <expression>)*
|
<bound-parameter> 值是某个具名参数枚举集合中的一项,这些参数的值 由 内容处理器绑定。
<bound-parameter> : "forced" | "mediaAspectRatio" | "mediaLanguage" | "userLanguage" |
<condition> 值用于指定一个求值结果为二值的表达式, 该二值用于确定 条件化元素的语义是被遵循还是被忽略, 这一判断发生在内容处理期间。
<condition> : <expression> |
出现在 <condition> 值中的 function-expression 必须采用
<condition-function> 表达式的形式。
<condition-function> 值是一个子表达式,可以用于 <condition> 值表达式中。
<condition-function> : <media-function> | <parameter-function> | <supports-function> |
<expression> 值是 <condition> 值的一个子表达式。
<expression> : logical-or-expression logical-or-expression : logical-and-expression | logical-or-expression <lwsp>? "||" <lwsp>? logical-and-expression logical-and-expression : equality-expression | logical-and-expression <lwsp>? "&&" <lwsp>? equality-expression equality-expression : relational-expression | equality-expression <lwsp>? "==" <lwsp>? relational-expression | equality-expression <lwsp>? "!=" <lwsp>? relational-expression relational-expression : additive-expression | relational-expression <lwsp>? "<" <lwsp>? additive-expression | relational-expression <lwsp>? ">" <lwsp>? additive-expression | relational-expression <lwsp>? "<=" <lwsp>? additive-expression | relational-expression <lwsp>? ">=" <lwsp>? additive-expression additive-expression : multiplicitive-expression | additive-expression <lwsp>? "+" <lwsp>? multiplicitive-expression | additive-expression <lwsp>? "-" <lwsp>? multiplicitive-expression multiplicitive-expression : unary-expression | multiplicitive-expression <lwsp>? "*" <lwsp>? unary-expression | multiplicitive-expression <lwsp>? "/" <lwsp>? unary-expression | multiplicitive-expression <lwsp>? "%" <lwsp>? unary-expression unary-expression : primary-or-function-expression | "+" <lwsp>? unary-expression | "-" <lwsp>? unary-expression | "!" <lwsp>? unary-expression primary-or-function-expression : primary-expression | function-expression primary-expression : identifier | literal | "(" <lwsp>? expression <lwsp>? ")" function-expression : identifier <arguments> identifier : xsd:NCName literal : boolean-literal | numeric-literal | string-literal boolean-literal : "true" | "false" numeric-literal : decimal-literal decimal-literal : decimal-integer-literal "." decimal-digits? exponent-part? | decimal-integer-literal exponent-part? | "." decimal-digits exponent-part? decimal-integer-literal : "0" | non-zero-digit decimal-digits? decimal-digits : decimal-digit | decimal-digits decimal-digit decimal-digit : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" non-zero-digit : "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" exponent-part : exponent-indicator signed-integer exponent-indicator : "e" | "E" signed-integer : decimal-digits | "+" decimal-digits | "-" decimal-digits string-literal : <quoted-string> |
注:
为免疑义,请注意,不允许在以下二者之间出现线性空白(LWSP):
identifier 词元和后续表达式起始处的左
圆括号“(”字符,该字符属于后续的 <arguments>
表达式,而该表达式属于一个
function-expression。
<fragment-profile-designator> 值表达式用于通过引用指示一个本地的,即 在内部定义的(内联的)配置规范。
<fragment-profile-designator> : <fragment-uri> |
<fragment-uri> 值表达式用于指定片段 URI [URI]。
<fragment-uri> : <uri> // 仅限片段分量 |
在 <fragment-uri> 值表达式的上下文中,<uri> 表达式的值语法 必须符合 URI 的片段分量,其定义见 [URI] 第 3 节和第 3.5 节, 即方案、授权机构、路径和查询分量为空 (未指定),且只有片段分量非空 (已指定)。
<media-function> 值是一个子表达式,可以用于 <condition> 值表达式中, 以便对相关媒体 对象或 文档处理上下文执行媒体查询。
<media-function>
: "media(" <lwsp>? media-query <lwsp>? ")"
media-query
: <quoted-string>
|
<media-function> 值表达式的 media-query 参数必须符合
media_query_list 的语法,其定义见 [Media
Queries] 第 3 节。
<media-function> 值表达式的求值结果为 true,如果指定的媒体
查询
的求值结果为 true;否则,该值表达式的求值结果为 false。
如果不支持 <media-function> 表达式的语义,那么该表达式的求值结果
必须
为 false。
<profile-designator> 值表达式用于指示配置规范,其目的可以是 定义配置规范, 也可以是引用已定义的配置规范。
<profile-designator> : <absolute-profile-designator> | <relative-profile-designator> | <fragment-profile-designator> |
如果 <profile-designator> 采用 <fragment-profile-designator> 的形式, 那么它必须引用一个顶层配置规范,也就是 说,它不得引用 嵌套配置规范。
<parameter-function> 值是一个子表达式,可以用于 <condition> 值表达式中, 以便获取一个具名参数,该参数属于文档处理上下文。
<parameter-function>
: "parameter(" <lwsp>? parameter-name <lwsp>? ")"
parameter-name
: <quoted-string>
|
去除引号后,<parameter-function> 值表达式的 parameter-name 参数
必须符合
xsd:NCName,而该名称又必须是
以下表达式所枚举
的值之一:<bound-parameter>。
<parameter-function> 值表达式的求值结果为关联于(绑定到) 所指定的 参数名称的值。
<quoted-string> 值表达式用于指定由双引号或单引号括起的字符串。
<quoted-string> : double-quoted-string | single-quoted-string double-quoted-string : '"' ([^"\\] | escape)* '"' single-quoted-string : "'" ([^'\\] | escape)* "'" escape : '\\' char |
注:
为免疑义,请注意,带引号的字符串表达式中允许出现线性空白 (LWSP),但它 受 [XML 1.0] 第 3.3.3 节属性值 规范化的约束, 当构建精简的 XML 信息集时,如果其来源是 定时文本文档实例。
<relative-profile-designator> 值表达式用于引用标准化的配置规范, 该引用相对于 TT 配置规范命名空间,该命名空间用作基准 URI,相对配置规范指示符 依此进行绝对化。
<relative-profile-designator> : <relative-uri> |
注:
对 <relative-profile-designator> 进行绝对化时, 不适用 xml:base 处理(因为 TT 配置规范命名空间 始终用作基准 URI)。
注:
例如,如果 <relative-profile-designator> 表示为
ttml2-presentation,那么经过绝对化的配置规范指示符
将为
http://www.w3.org/ns/ttml/profile/ttml2-presentation。
<relative-uri> 值表达式用于指定相对 URI [URI]。
<relative-uri> : <uri> // 不存在方案分量 |
在 <relative-uri> 值表达式的上下文中,<uri> 表达式的值语法 必须符合 [URI] 第 3 节定义的 URI 相对形式, 即方案和授权机构分量为空(未 指定),但指定了路径,以及可选的查询和片段分量。
<supports-function> 值是一个子表达式,可以用于 <condition> 值表达式中, 以便获取一个布尔值,用于表示指定的特性或扩展 是否受支持。
<supports-function>
: "supports(" <lwsp>? feature-or-extension-designator <lwsp>? ")"
feature-or-extension-designator
: <quoted-string>
|
<supports-function> 值表达式的 feature-or-extension-designator 参数
必须表示
特性标识或扩展标识,其定义分别见
E.1 特性标识和F.1
扩展标识,并且
其中标识的
feature-namespace 或 extension-namespace 分量是可选的,如果
未指定,则视为分别等于 TT 特性命名空间或 TT
扩展命名空间
的值。
<supports-function> 值表达式的求值结果为 true,如果指定的
特性或扩展
指示符在语义上受内容
处理器支持。
<uri> 值表达式用于指定 URI [URI]。
<uri> : xsd:anyURI |
xsd:anyURI 数据类型的值语法必须符合
[XML Schema Part 2] 第 3.2.17 节规定的定义。
本节规定核心词汇目录中的嵌入内容 相关内容,在此上下文中, 内容应理解为任意内容类型(格式)的数据, 而嵌入是指嵌入(内联)这些数据,或嵌入 对外部数据的引用。
以下元素可以用于指定嵌入内容:
9.1.3 data 元素用作 通用容器元素,容纳嵌入数据 资源,该资源可以分块,也可以不分块, 分块时,数据片段使用 9.1.2 chunk 元素表示。 9.1.1 audio、 9.1.4 font 和 9.1.5 image 元素是专用 元素, 用于引用特定类型的嵌入内容。 9.1.6 resources 元素用于 将嵌入内容的定义分组,以供后续元素引用。 9.1.7 source 元素可以用于 表示嵌入内容的来源。
audio 元素用于定义或引用音频资源。
audio 元素可以出现在两种上下文中:(1) 作为 resources 元素的子元素,以及
(2) 作为 body 元素的子元素,
或作为 Block.class 元素组中的元素的子元素,即
作为
div 或 p 元素的子元素,或
作为 span 元素的子元素。前者
称为
音频定义上下文,后者称为音频呈现上下文。
当 audio 元素出现在音频
定义上下文中时,它
用作音频资源的可共享定义,
可以被其他 audio 元素引用,这些元素位于
包含它的文档实例中。
当 audio 元素出现在音频呈现上下文中时,它
用作音频资源的非共享定义,
隐含呈现(渲染)语义,即该资源预期会被播放。
audio 元素接受以下子元素:
零个或多个属于 Metadata.class 元素组的元素,随后
是
零个或多个属于 Animation.class 元素组的元素,
随后是零个或多个
source 元素。
注:
对于文本节点后代,如果其祖先是 audio
元素,则它不是有意义的文本节点,这里指的是
执行
[构建匿名 span] 过程时。
<audio animate = IDREFS begin = <time-expression> clipBegin = <time-expression> clipEnd = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> src = <audio> style = IDREFS timeContainer = ("par" | "seq") type = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意样式属性} {TT 元数据命名空间中的任意属性} Content: Metadata.class*, Animation.class*, source* </audio> |
audio 元素指示一个音频资源,
通过使用
引用式数据嵌入或
源式数据嵌入,这涉及
(1) 引用内置数据资源,
(2) 引用外部数据资源,或
(3) 定义或引用嵌入数据
资源,
其中数据资源包含音频内容。
如果 audio 元素指定了 src
属性,那么它不得
指定
子 source 元素。反之,
如果 audio 元素未指定 src
属性,那么它必须指定
一个或多个
子 source 元素。
如果 audio 元素指定了 src
属性,且其值并未
引用
内部数据资源,那么它应当指定一个
type 属性,在这种情况下,
该
type 属性的值必须与
所引用资源的媒体(内容)类型
对应。否则,type 属性不得被
指定。
如果指定了 clipBegin 属性,其值必须符合
offset-time 形式,该形式属于
12.3.1 <time-expression>,在这种
情况下,此表达式的值表示相对于所引用音频内容
起始位置的正常播放时间偏移,并指示音频呈现
开始的位置。
如果指定的值大于所引用音频内容的固有
持续时间,那么 clipBegin 的解析值被视为
该固有持续时间。
如果未指定 clipBegin 属性,则采用值 0。
同样,如果指定了 clipEnd 属性,其值必须符合
offset-time 形式,该形式属于
12.3.1 <time-expression>,在这种
情况下,此表达式的值表示相对于所引用音频内容
起始位置的正常播放时间偏移,并指示呈现停止的位置。
如果指定的值大于所引用音频内容的固有
持续时间,那么 clipEnd 的解析值被视为
该固有持续时间。
如果未指定 clipEnd 属性,则采用等于音频内容固有持续时间
的值。
以下示例说明了 audio 元素的用法。
... <audio src="http://example.com/audio/description.mp3" type="audio/mp3"/> ... |
chunk 元素用于表示一个独立的数据块(片段)。
chunk 元素可以作为 data
元素的子元素出现。
<chunk encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : base64 length = <non-negative-integer> xml:id = ID Content: #PCDATA </chunk> |
如果指定了 encoding 属性,
那么它必须表示所代表字节序列的实际编码,该字节序列由
chunk 元素表示。如果未指定 encoding 属性,
那么必须将编码视为 base64。
任何线性空白(<lwsp>)
字符,只要出现在此元素的 #PCDATA 内容中,都必须在
执行解码处理时被忽略。
如果指定了 length 属性,那么它必须表示解码后的字节数,
所属字节序列由
chunk 元素表示。解码时,如果指定的长度值与解码后的字节数
不匹配,那么该块及其容器 data
元素必须返回一个长度为零的字节序列。
如果未指定 length 属性,那么该块的长度被视为
等于实际解码后的字节数。
以下示例说明了分块数据的用法。
...
<data type="text/plain; charset=us-ascii" length="44">
<chunk length="19">
VGhlIHF1aWNrIGJyb3duIGZveA==
</chunk>
<chunk length="25">
IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLg==
</chunk>
</data>
...
|
data 元素用作任意数据的通用容器或对任意
数据的引用。
data 元素可以出现在三种上下文中:
(1) 作为 resources
元素的子元素,
称为数据定义上下文,
(2) 作为 metadata 元素的子元素,
称为元数据的
数据绑定上下文,或
(3) 作为 source
元素的子元素,
称为源的
数据绑定上下文,
后两种上下文统称为数据绑定上下文。
当 data 元素出现在数据
定义上下文中时,它
用作数据资源的可共享定义,可以通过 src 属性引用,属性所属元素可以是
(1) 另一个 data 元素,
(2) 嵌入内容元素,或
(3) source 元素。
在这种情况下,data 元素由上下文确定的活动时间区间是
以下两者的交集:
其父 resources 元素的活动时间区间,以及
引用它的元素的活动时间区间。
当 data 元素出现在数据绑定
上下文中时,它
用作数据资源的非共享定义,隐含绑定语义,即
该资源预期会绑定到(关联于)其直接的引用
上下文。在这种情况下,data 元素的活动时间区间
与其最近的祖先定时
元素的活动时间区间相同。
data 元素接受以下四种内容模型之一:
(1) 一个或多个文本节点(即 #PCDATA),
(2) 零个或多个属于 Metadata.class 元素组的元素,前提是
src
属性已指定;
(3) 零个或多个属于 Metadata.class 元素组的元素,随后
是一个或多个
chunk 元素,或
(4) 零个或多个属于 Metadata.class 元素组的元素,随后
是一个或多个
source 元素,其中
第一种称为简单数据嵌入,
第二种称为引用式数据嵌入,
第三种称为分块数据嵌入,
第四种称为源式数据嵌入。
使用简单数据嵌入时,数据资源
通过解码 #PCDATA 内容获得。
使用引用式数据嵌入时,数据
资源通过解引用数据资源获得,
该数据资源由 src 属性引用。
使用分块数据嵌入时,数据
资源通过连接各个解码所得的字节序列获得,解码对象是每个
子 chunk 元素。
使用源式数据嵌入时,数据
资源取自第一个
子 source 元素,该元素能够
解析为
数据资源,如果没有任何元素能够解析,则采用空数据资源。
此外,子 source
元素不得
包含 data 元素,但可以
引用
data 元素,该元素位于数据定义上下文中。
<data condition = <condition> encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : 参见下文 format = <data-format> length = <non-negative-integer> src = <data> type = xsd:string : 参见下文 xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") Content: #PCDATA | (Metadata.class*, (chunk+ | source+)? ) </data> |
如果使用简单数据嵌入,那么
encoding 属性
可以指定,如果未指定,则必须视为 base64。
如果使用引用式数据嵌入、分块数据嵌入或源式数据嵌入,那么
encoding 属性不得
指定,如果指定,则必须在
内容处理时被忽略。
此外,如果使用简单数据嵌入,那么任何线性空白(<lwsp>)
字符,只要出现在此元素的 #PCDATA 内容中,都必须在
执行解码处理时被忽略。
如果指定了 length 属性,那么它必须表示解码后的字节数,
所属字节序列由
data 元素表示。解码时,如果指定的长度值与解码后的字节数
不匹配,那么必须返回一个长度为零的字节序列。
如果未指定 length 属性,那么数据资源的长度被视为
等于实际解码后的字节数。
不得指定 length 属性,如果使用的是引用式数据嵌入或源式数据嵌入。
注:
length 属性旨在提供一种对解码后的数据执行简单
完整性检查的方法。请注意,此检查不保证
传输过程中的数据完整性,即数据可能被修改,而
长度不变。
如果使用引用式数据嵌入,
则必须指定 src 属性;否则(对于所有其他类型的数据嵌入),
则
不得指定 src 属性。
如果使用简单数据嵌入或分块数据嵌入,则必须指定 type 属性,
且其值必须与数据资源的媒体(内容)类型对应。在这些情况下,如果
没有已定义的类型,则应当使用 application/octet-stream 类型。
如果使用引用式数据嵌入,那么,如果它
引用了
外部数据资源,
则应当指定 type 属性,
并且,
如果指定,其值必须与所引用数据资源的媒体(内容)类型对应;
否则(引用的是内部数据资源),
则不得指定 type
属性,
在这种情况下,所引用的 data 元素的媒体(内容)类型用作该类型。
如果使用源式数据嵌入,
则不得指定 type
属性,
在这种情况下,解析得到的 source 元素的媒体(内容)类型用作该类型。
如果 type 属性未指定、
未解析得到,或指定为通用类型,
例如 application/octet-stream,并且已知
所引用数据资源的额外格式信息,而这些信息无法
通过媒体类型 [MIME Media Types] 参数表示,
那么可以指定 format 属性,作为
对内容处理器的提示。
以下示例说明了简单数据嵌入的 用法。
<head>
<resources>
<data xml:id="sharedImageData" type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
<image xml:id="sharedImage">
<source src="#sharedImageData"/>
</image>
</resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
<div tts:backgroundImage="#sharedImage"/>
<div tts:backgroundImage="#sharedImage"/>
</body>
|
<div>
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
<ttm:desc>附带元数据的说明字幕,元数据包含透传数据</ttm:desc>
<data encoding="base64" type="application/octet-stream">
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
</data>
</metadata>
<p>包含透传数据的说明字幕</p>
</div>
|
<div>
<image>
<source>
<data type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
</source>
</image>
</div>
|
以下示例说明了引用式数据嵌入的 用法。
<head>
<resources>
<data xml:id="sharedImageData" src="test.png" type="image/png"/>
<image xml:id="sharedImage1" src="#sharedImageData"/>
<image xml:id="sharedImage2" src="#sharedImageData"/>
</resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
<div tts:backgroundImage="#sharedImage1"/>
<div tts:backgroundImage="#sharedImage2"/>
</body>
|
以下示例说明了分块数据嵌入的 用法。
<head>
<resources>
<data xml:id="sharedImageData" type="image/png" length="119">
<chunk length="60">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
</chunk>
<chunk length="59">
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</chunk>
</data>
<image xml:id="sharedImage1" src="#sharedImageData"/>
<image xml:id="sharedImage2" src="#sharedImageData"/>
</resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
<div tts:backgroundImage="#sharedImage1"/>
<div tts:backgroundImage="#sharedImage2"/>
</body>
|
以下示例说明了源式数据嵌入的 用法。
<head>
<resources>
<data xml:id="sharedImageData">
<source src="test.svg" type="image/svg+xml"/>
<source src="test.png" type="image/png"/>
</data>
<image xml:id="sharedImage1" src="#sharedImageData"/>
<image xml:id="sharedImage2" src="#sharedImageData"/>
</resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
<div tts:backgroundImage="#sharedImage1"/>
<div tts:backgroundImage="#sharedImage2"/>
</body>
|
font 元素用于定义或引用字体
资源。
font 元素可以作为 resources 元素的子元素出现,该上下文
称为
字体定义上下文。
font 元素接受以下子元素:
零个或多个属于 Metadata.class 元素组的元素,随后
是零个或多个
source 元素。
<font condition = <condition> family = xsd:string range = <unicode-range> style = ("normal" | "italic" | "oblique") : 参见下文 src = <font> type = xsd:string weight = ("normal" | "bold") : 参见下文 xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") Content: Metadata.class*, source* </font> |
font 元素定义一个字体资源,通过使用
以下任一方式:
引用式数据嵌入或
源式数据嵌入,这涉及
(1) 引用内置数据资源,
(2) 引用外部数据资源,或
(3) 定义或引用嵌入数据
资源,
其中数据资源包含字体内容。
如果 font 元素指定了 src
属性,那么它不得
指定
子 source 元素。反之,
如果 font 元素未指定 src
属性,那么它必须指定
一个或多个
子 source 元素。
如果 font 元素指定了 src
属性,且其值并未
引用
内部数据资源,那么它应当指定一个
type 属性,在这种情况下,
该
type 属性的值必须与
所引用资源的媒体(内容)类型
对应。否则,type 属性不得被
指定。
如果 family、range、style 或 weight
属性中的任何一个被指定,那么
它们会覆盖实际资源的字体族名称、支持的字符范围、样式和字重,该资源是字体资源。具体而言,
如果指定的属性值与这些字体特征的值不同,而后者
编码于字体资源中,那么
应当使用指定的属性值,代替编码于
字体资源中的字体特征。
如果 family、range、style 或 weight
属性中的任何一个未指定,那么它们的值
必须被视为等于同名字体特征的值,这些特征编码于
字体资源中。
如果 family 属性的计算值(无论是否显式指定)
匹配一个
<generic-family-name>(通过区分大小写的
比较),
那么这被视为错误,并且
在呈现处理时必须忽略所引用的字体资源。
注:
上一段的作用是,内容作者不能覆盖与通用字体族对应的内置 字体资源。
注:
建议作者尽可能使用子集字体。子集字体是一种语法 有效的字体资源, 其中移除了未引用的字形和未引用的字形度量信息。通常,子集字体 与特定文档相关联,因为它可能是 根据该文档的实际字符内容生成的。
在解引用(下载)字体资源时,内容处理器 可以推迟下载过程,直到为了执行必要的 (转换或呈现)处理而必须使用 字体资源内容时再下载。
以下示例说明了 font 元素的用法。
...
<head>
<resources>
<data xml:id="lastResortFont" type="application/font-woff">
... base64 编码的数据 ...
</data>
<font family="MyFont" range="u+20-7f,u+90-9f">
<source src="http://example.com/fonts/myfont.otf" type="font/otf"/>
<source src="#lastResortFont"/>
</font>
</resources>
</head>
...
<p tts:fontFamily="MyFont">使用我的字体或最后备用字体</p>
...
|
image 元素用于定义或引用图像资源。
image 元素可以出现在两种上下文中:(1) 作为 resources 元素的子元素,以及
(2) 作为以下元素的子元素:(i) body
元素,
(ii) Block.class 元素组中的元素,
即作为
div 或 p 元素的子元素,或
(iii) span 元素。前者
称为
图像定义上下文,后者称为图像呈现上下文。
当 image 元素出现在图像
定义上下文中时,它
用作图像资源的可共享定义,
可以被另一个 image 元素引用,或者被
tts:backgroundImage 样式
属性引用,
引用者位于包含它的文档实例中。
注:
图像资源的可共享定义指定一个
xml:id 属性,以便被
引用,
引用者是 image 元素或 tts:backgroundImage 样式
属性,
位于图像呈现上下文中。
当 image 元素出现在图像呈现上下文中时,它
用作图像资源的非共享定义,
隐含呈现(渲染)语义。
当 image 元素作为 body 元素或
div 元素的子元素出现时,其呈现
会生成一个块区,图像在其中渲染;即
image 元素前后隐含块边界。相反,
当 image 元素作为 p 或 span
元素的子元素出现时,其呈现会生成一个内联区,图像在其中渲染;即
image 元素前后不隐含块边界。
注:
在 [CSS2] 中,这些语义分别对应于 image
元素关联的 display 样式特性
具有 block 或 inline 值。
对于图像资源的呈现,如果该资源由
tts:backgroundImage 样式属性引用,
则不得影响内容布局。
image 元素接受以下子元素:
零个或多个属于 Metadata.class 元素组的元素,随后
是
零个或多个属于 Animation.class 元素组的元素,
随后是
零个或多个 source 元素。
注:
对于文本节点后代,如果其祖先是 image
元素,则它不是有意义的文本节点,这里指的是
执行
[构建匿名 span] 过程时。
<image animate = IDREFS begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> region = IDREF src = <image> style = IDREFS timeContainer = ("par" | "seq") type = xsd:string xlink:arcrole = <uri-list> xlink:href = <uri> xlink:role = <uri-list> xlink:show = ("new" | "replace" | "embed" | "other" | "none") : none xlink:title = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意样式属性} {TT 元数据命名空间中的任意属性} Content: Metadata.class*, Animation.class*, source* </image> |
image 元素定义一个图像资源,
通过使用
引用式数据嵌入或
源式数据嵌入,这涉及
(1) 引用内置数据资源,
(2) 引用外部数据资源,或
(3) 定义或引用嵌入数据
资源,
其中数据资源包含图像内容。
如果 image 元素指定了 src
属性,那么它不得
指定
子 source 元素。反之,
如果 image 元素未指定 src
属性,那么它必须指定
一个或多个
子 source 元素。
如果 image 元素指定了 src
属性,且其值并未
引用
内部数据资源,那么它应当指定一个
type 属性,在这种情况下,
该
type 属性的值必须与
所引用资源的媒体(内容)类型
对应。否则,type 属性不得被
指定。
image 元素可以指定 tts:extent
样式属性,以指定图像的呈现宽度或高度,
适用于无法获得固有宽度或高度信息,或打算覆盖该信息的情况。如果
此属性同时指定于
image 元素上,该元素位于图像呈现
上下文中,以及
image 元素上,该元素位于图像定义
上下文中并被前者引用,那么
前者上指定的属性优先于后者上指定的属性。
当图像适用
tts:extent 样式属性时,其呈现须经过
一个(可能使图像变形的)
缩放操作,以获得指定范围的宽度和高度。
链接属性 xlink:* 可以用于将 image 元素
与相关内容链接起来,使用
指定的位置(href)、角色和标题。链接激活的行为
受 xlink:show 属性影响,
该属性的确切含义由文档处理上下文确定。
注:
xlink:show 的默认值最初被指定
(在 TTML2 第 1 版中)
为 new;但是,进一步考虑后认为,
none 值更能反映实现实践,
尤其是因为 none 的语义完全取决于实现,
而 new 的语义
只是 none 语义的一种可能实现。
当 image 出现在图像定义
上下文中时,适用以下附加
约束:
属性
animate、
begin、
dur、
end、
region 和
timeContainer
不得指定,如果出现,则必须在
呈现处理时被忽略;
属于 Animation.class 元素组的元素
不得
作为子元素出现,如果出现,则必须在
呈现处理时被忽略。
以下示例说明了 image 元素的用法。
<div> <p>此分区包含一个内容图像,它以块区的形式出现在本段落之后。</p> <image src="http://example.com/images/caption.png" type="image/png"/> <div> ... <div tts:backgroundImage="http://example.com/images/background.png"> <p>此分区包含一个背景图像,它出现在本段落的底层。</p> <div> ... |
<head>
<resources>
<data xml:id="caption" type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
</resources>
</head>
<body>
<div>
<p>
<image>
<source src="#caption"/>
</image>
<p>
...
<p>
<image>
<source src="#caption"/>
</image>
<p>
</div>
</body>
|
<div>
<image>
<source src="http://example.com/images/caption.png" type="image/png"/>
<source>
<data type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
</source>
</image>
</div>
|
注:
image 元素纳入并扩展了
#image 扩展的能力,该扩展由 [SMPTE ST 2052-1] 引入。具体
而言,
如果 smpte:backgroundImage 属性引用一个内容图像,则可以将其映射为
image
元素,
其 src 属性等于
smpte:backgroundImage 属性的值。
resources 元素是一个容器元素,用于对
嵌入内容的定义进行分组,包括适用于这些嵌入内容的元数据。
resources 元素接受以下子元素:零个或多个
属于 Metadata.class 元素
组的元素,
随后是零个或多个属于以下元素组的元素:
Data.class、
Embedded.class 或
Font.class 元素组。
<resources xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") Content: Metadata.class*, (Data.class|Embedded.class|Font.class)* </resources> |
在时间语义适用于
resources 元素内容的范围内,此元素的隐含时间区间被
定义为与根时间
范围具有相同的起止时间。
source 元素用于指定嵌入内容资源的来源。
source 元素接受以下子元素:
零个或多个属于 Metadata.class 元素组的元素,随后
是零个或一个
data 元素。
如果 source 元素指定了 src
属性,那么它不得
指定
子 data 元素,在这种情况下,
它被称为
外部源,如果 src 属性引用外部
资源;或者称为
非嵌套的嵌入源,
如果 src 属性引用一个
嵌入资源,
该资源位于包含它的文档实例中。
如果 source 元素未指定 src
属性,那么它必须指定
一个
子 data 元素,在这种情况下,
它被称为
嵌套的嵌入源。
source 元素不得具有祖先 source 元素。
<source condition = <condition> format = <data-format> src = <data> type = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") Content: Metadata.class*, data? </source> |
如果指定了 format 属性,
那么它提供有关嵌入内容格式(即形式语法)的
额外提示信息。在尚未定义标准媒体(内容)类型
标签,或该信息无法
通过媒体类型参数 [MIME Media Types] 表示的情况下,此类信息可能有用。根据
具体
source 元素的使用上下文,此属性的值可能受到进一步
约束。
如果指定了 src 属性,并且
其值引用包含它的
文档实例中的一个片段,
那么必须存在一个 data 元素,
它是 resources
元素的子元素,并由该片段标识,即具有一个 xml:id 属性,其
值与该片段标识符匹配。
如果指定了 src 属性,并且
其值并未引用
包含它的文档实例中的片段,那么
应当指定 type
属性,在这种情况下,其值必须与所引用资源的媒体(内容)类型
对应。
如果指定了 src 属性,并且
其值确实引用
包含它的文档实例中的片段,那么
不得指定 type
属性;嵌入资源的内容类型应由
type 属性的值确定,
该属性位于所引用或嵌入的
data 元素上。
以下示例说明了 source 元素的用法。
... <image> <source src="http://example.com/images/caption.png" type="image/png"/> </image> ... |
... <data xml:id="caption" type="image/png" length="119"> iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII= </data> ... <image> <source src="#caption"/> </image> ... |
...
<image>
<source>
<data type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
</source>
</image>
...
|
本节定义以下属性,用于某些嵌入内容元素 词汇:
encoding 属性用于指定数据的编码格式。
encoding 属性可以由以下
元素类型的实例指定:
如果指定了 encoding 属性,其值必须采用以下
值之一,这些值由
[Data Encodings] 定义:
base16
base32
base32hex
base64
base64url
如果未指定,则适用 base64 语义。
format 属性用于指定有关嵌入内容资源的媒体(内容)格式的提示,
这些提示补充媒体(内容)类型信息,
后者由 type 属性提供。
注:
在没有已注册媒体(内容)
类型的情况下,format 属性很有用,
例如,没有可用的媒体(内容)类型,或使用了通用类型,如
application/octet-stream。
format 属性可以由以下
元素类型的实例指定:
format 属性的值必须符合
<data-format> 表达式。
根据使用上下文,可能还适用其他约束。
src 属性用于指定位置,或一个映射到
数据资源位置的标识符。
src 属性可以由以下
元素类型的实例指定:
如果指定了 src 属性,其值必须符合
<uri> 值语法。
根据使用上下文,可能还适用其他约束。
type 属性用于指定数据资源的媒体(内容)类型,并且
可以表示额外的
参数,以描述数据的特征。
type 属性可以由以下
元素类型的实例指定:
如果指定了 type 属性,其值必须符合
Content-Type
MIME 标头的值语法,该标头由 [MIME] 第 5.1 节定义。
如果未指定,则媒体(内容)类型未知或被有意留空。
解码指定了 type 属性的数据资源时,内容
处理
必须遵循指定的类型,无论它是否正确。也就是说,如果 type
属性错误地指定了
数据资源的类型,那么内容处理不得尝试通过执行内容
嗅探
来覆盖该类型。
嵌入内容元素以及某些样式特性值使用以下 表达式:
<audio> 值表达式用于通过引用指定音频 资源。
<audio> : <uri> |
如果 <audio> 值表达式采用裸片段标识符的形式,
那么该片段标识符必须引用一个 audio 元素,该元素必须是
一个
resources 元素的子元素,后者位于包含它的文档实例中。
如果 <audio> 值表达式采用值
http://www.w3.org/ns/ttml/resource/#empty,
那么所引用的音频资源就是
空数据资源。
如果 <audio> 值表达式采用值
http://www.w3.org/ns/ttml/resource/#speech,那么,如果
语音合成处理器受到支持并且
已启用,
所引用的音频资源就是
语音数据资源;
否则(如果语音合成处理器
不受支持,或虽受支持但被禁用),
那么所引用的音频资源就是
空数据资源。
<data> 值表达式用于通过引用指定数据资源。
<data> : <uri> |
如果 <data> 值表达式采用片段标识符的形式,
那么该片段标识符必须引用一个 data 元素,该元素必须是
resources 元素的子元素,后者位于包含它的文档实例中。
<data-format> 表达式用于指定数据资源的格式。额外的 格式信息很有用,如果 数据资源缺少已注册的媒体(内容)类型。
<data-format> : xsd:NCName | <uri> |
如果格式表达式采用 <uri> 值的形式, 那么它必须表示绝对 URI。
注:
本规范不对用于数据内容的格式词元集合进行标准化。
鼓励作者
使用通用的词元,或者在没有此类词元时,添加前缀 "x-",形成
私用词元。
<font> 表达式用于指定字体资源, 指定方式为引用。
<font> : <uri> |
如果 <font> 表达式采用片段
标识符的形式,
那么该片段标识符必须引用一个 font 元素,该元素必须是
resources 元素的子元素,后者位于包含它的文档实例中。
<image> 表达式用于通过引用指定图像 资源。
<image> : <uri> |
如果 <image> 表达式采用片段
标识符的形式,
那么该片段标识符必须引用一个 image 元素,该元素必须是
一个
resources 元素的子元素,后者位于包含它的文档实例中。
<unicode-range> 表达式用于指定一组 Unicode 码点,方式是 枚举单个码点或码点范围。
<unicode-range> : range (<lwsp>? "," <lwsp>? range)* range : codepoint | codepoint "-" codepoint codepoint : ("U"|"u") "+" hexdigit-or-wildcard{1,6} hexdigit-or-wildcard : <hex-digit> | "?" |
本节规定核心词汇目录中的样式 相关内容,其中 样式应理解为一个可分离的信息层,它应用于 内容,并表达作者对该内容 呈现方式的意图。
TTML 包含样式属性,以便将作者对呈现方式 的意图 包含在自包含文档中。本节根据标准处理 模型描述样式呈现的语义。TTML 处理器无需以任何特定方式呈现文档 实例; 但如果 TTML 呈现 处理器 对此模型的实现所提供的外部可观察结果与此模型一致, 则很可能产生与文档作者预期 非常接近的用户体验。
注:
TTML 样式呈现的语义依据布局和格式化模型 进行描述,该模型定义 于[XSL-FO 1.1]。本节各属性的效果 旨在与此模型兼容;但是,呈现代理 可以使用任何技术来满足文档作者的意图。例如,可以使用 [CSS2] 处理器 实现其与此模型共有的功能。
本规范未定义
<?xml-stylesheet ... ?> 处理指令的
任何规范性用法。
本节定义的样式属性可以指定在 任何允许使用 TT 样式命名空间中属性的元素类型上;但是,这些属性 仅作为样式属性应用于各属性定义所指明的元素类型。 此外, 除非元素类型定义明确允许,否则 TT 样式命名空间中的属性 不应指定在某个元素上,除非它适用于该元素或表示可继承的 样式属性。 如果它既不适用于该元素,也不表示可继承的样式属性,则在 非验证处理时 必须忽略它。在验证 处理的情况下, 应将此类用法报告为警告。
在确定样式属性的适用性时,如果样式属性被定义为
适用于
span 元素,则它也适用于
匿名 span 元素。
以下元素规定 文档实例的结构和主要样式方面:
initial 元素用于修改一个或多个样式
属性的初始值,即指定使用不同于
规范所定义初始值的值。
initial 元素接受零个或多个 metadata
元素作为子元素。
<initial condition = <condition> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意 样式属性} 内容: Metadata.class* </initial> |
如果多个 initial 元素为同一个样式
属性指定初始值,则
应用最后指定的值(按前序遍历顺序)。
以下示例说明 initial 元素,其中
tts:color 属性的初始值被定义为 yellow。
...
<head>
<styling>
<initial tts:color="yellow"/>
<styling>
<head>
...
|
style 元素用于定义
一组样式规范,这些规范表示为
指定样式集,遵循
10.4.4.2 指定样式集
处理。
style 元素接受零个或多个 metadata
元素作为子元素。
<style condition = <condition> style = IDREFS xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意 样式属性} 内容: Metadata.class* </style> |
如果 style 元素作为
region 元素的后代出现,则在计算引用式样式时,必须
忽略该 style 元素,引用式样式定义于
10.4.1.2 引用式样式设置和
10.4.1.3 链式引用
样式设置。
注:
也就是说,当元素使用引用式样式设置来
引用 style 元素时,被引用的 style
元素必须作为 styling 元素的后代出现,
而不能出现在任何其他上下文中。
注:
如果 condition 属性应用于
style 元素,且该条件求值为 false,
则忽略其嵌套样式和内联样式;但是,不会忽略
通过引用式或链式引用样式设置所包含的样式。
更多详情参见10.4.4.2 指定样式集
处理。
styling 元素是一个容器元素,用于对
样式内容进行分组,包括适用于样式内容的元数据。
styling 元素接受以下子元素:零个或多个
属于 Metadata.class 元素
组的元素,
后接零个或多个 initial 元素,
再后接零个或多个 style 元素。
<styling xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: Metadata.class*, initial*, style* </styling> |
当时间语义适用于
styling 元素的内容时,此元素的隐含时间区间
被定义为与根时间
范围具有相同的起止边界。
本节定义 10.2.1 style 属性,该属性用于 某些动画元素、内容元素、某些 布局元素和样式定义元素。
此外,本节规定 TT 样式命名空间中的以下属性, 用于支持内联样式规范的样式定义元素、某些布局元素和内容元素 中:
除上述视觉样式属性外,本节还规定 TT 音频样式命名空间中的以下音频 样式属性, 用于支持内联样式规范的样式定义元素和内容元素 中:
本节定义的每个样式属性(及其对应的属性)都使用 样式属性定义表, 该表 规定样式的以下一个或多个方面:值语法、初始值、 样式在语义上适用的元素、样式是否继承、百分比 值如何解释(如果适用)、 样式是否(以及如何)可动画化,以及语义依据(推导)。
对于可动画化样式,术语离散指使用 set
元素,或使用 animate 元素,其
discrete 值用于
<calculation-mode>。术语连续指
使用 animate 元素,将
linear、paced 或 spline
用作其 <calculation-mode> 的值。术语
无表示该样式
不可动画化。
注:
本规范使用小驼峰形式的局部 名称来命名样式属性,这些属性 基于 [XSL-FO 1.1] 所定义的同名属性。 此约定同样扩展到这些 属性的词元值。
注:
可继承的样式属性可以作为指定的属性表示在
region 元素上,或
内容元素类型上,
而不受该属性是否适用于该
元素类型的限制。此能力允许在祖先元素上表示可继承的
样式属性,即使该属性
不适用于这些祖先元素。
注:
由于本规范(及其引用的模式)关于 样式属性指定方式的一般语法,特别是为了支持继承, 作者可能无意中在某个元素上指定不可继承的样式属性, 该属性既不适用于此元素,也不适用于其任何后代,但从内容有效性的角度 来看仍然符合规范。内容作者可以考虑使用 TTML 内容验证工具来检测此类用法并发出警告。
style 属性由引用式样式关联使用,
用于引用一个或多个 style 元素,每个元素都定义一个样式(属性)
集。
style 属性可以指定在以下
元素类型的实例上:
如果指定了 style 属性,则其值必须
遵循 [XML Schema Part 2] 定义的 IDREFS 数据类型,
见第 3.3.10 节;此外,每个 IDREF 必须引用一个 style 元素,
该元素具有 styling 元素作为祖先。
如果同一个 IDREF,即 ID1 ,在
style
属性值中出现多次,则各次出现之间应有一个 IDREF,即 ID2 ,其中
ID2 不等于 ID1。
注:
此约束旨在避免使用冗余的引用式样式设置,同时 仍然 允许多次引用同一样式,以便可能覆盖 先前 引用的样式,例如,当 IDREFS 列表中间引用了 不同的样式时。
注:
有关其语义的更多信息,参见允许使用
style 属性的具体元素类型定义,以及 10.4.1.2 引用式样式设置
和 10.4.1.3 链式
引用样式设置中的
相关说明。
tts:backgroundClip 属性用于指定一个样式属性,
该属性确定背景绘制矩形,
背景
在该矩形内绘制。
| 值: |
"border" |
"content" |
"padding"
|
| 初始值: | border |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | backgroundClip 推导 |
以下示例说明 tts:backgroundClip 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:backgroundColor="red"/> <style tts:backgroundOrigin="padding"/> <style tts:padding="27px 72px"/> <style tts:backgroundRepeat="noRepeat"/> <style tts:backgroundImage="#blue102px57px"/> <style tts:backgroundClip="content"/> </region> |
![]() |
tts:backgroundColor 属性用于指定一个样式属性,
该属性定义区域或流入区域的内容所生成的区域的背景颜色。
| 值: | <color> |
| 初始值: | transparent |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续 |
| 语义依据: | backgroundColor 推导 |
以下示例说明 tts:backgroundColor 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:backgroundColor="red"/> <style tts:color="white"/> <style tts:displayAlign="after"/> <style tts:padding="3px 30px"/> </region> ... <p region="r1" tts:backgroundColor="purple" tts:textAlign="center"> 闪呀,闪呀,小蝙蝠!<br/> 真是 <span tts:backgroundColor="green">让我好奇</span> 你在哪里! </p> |
|
tts:backgroundExtent 属性可用于指定
背景图像的范围(尺寸),
而不受图像固有范围(尺寸)的限制。
| 值: | <extent> |
| 初始值: | auto |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 相对于适用的背景定位 矩形的宽度和高度 |
| 可动画化: | 离散 |
| 语义依据: | backgroundExtent 推导 |
如果此属性的值为 auto,则必须将样式属性的计算值
视为与关联背景图像的固有范围(尺寸)
相同。
如果此属性的值为 contain,则样式属性的计算值
通过执行
[计算容纳
缩放]过程来确定,
其中目标矩形 TR 初始化为图像的固有
宽度和高度,
参考矩形 RR 设置为背景定位矩形,
目标矩形 TR 的最终输出值即为计算值。
如果此属性的值为 cover,则样式属性的计算值
通过执行
[计算覆盖
缩放]过程来确定,
其中目标矩形 TR 初始化为图像的固有
宽度和高度,
参考矩形 RR 设置为背景定位矩形,
目标矩形 TR 的最终输出值即为计算值。
如果此属性的值由两个 <measure> 规范组成,则第一个规范为此属性计算值的宽度,第二个规范 为其高度, 在这种情况下,两个 <measure> 规范 都必须解析为(或能够解析为)非负长度。
如果此样式属性的计算值与图像的固有范围(尺寸)不同, 则在各个维度上独立缩放图像栅格, 以匹配计算出的范围值。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的背景范围与受支持的背景范围之间 欧氏距离最小的值。如果 存在多个与计算值距离相等的 最接近的受支持值,则使用距离 [0,0] 最远的值, 即范围最大的值。
此解析最接近的受支持值的规则使用最接近的较大 受支持距离,而不是最接近的较小受支持距离。
以下示例说明 tts:backgroundExtent 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:backgroundColor="red"/> <style tts:backgroundRepeat="noRepeat"/> <style tts:backgroundImage="#blue102px57px"/> <style tts:backgroundExtent="cover"/> </region> |
|
tts:backgroundImage 属性用于指定一个样式属性,
该属性指定一个背景非内容图像,
将其渲染为
区域或流入区域的内容所生成的区域的背景图像。
tts:backgroundImage 属性不应引用内容图像,
即用于表示实际内容的图像,例如字幕的栅格图像呈现。而
tts:backgroundImage
的使用应仅限于设置元素的背景样式,内容则通过
其他方式表示。如果必须
使用栅格图像表示内容,则应通过 image
元素在块级或行内上下文中表达。
| 值: |
"none" | <image>
|
| 初始值: | none |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | backgroundImage 推导 |
用于此样式属性的 <image> 表达式
可以直接引用外部图像资源;
但是,作者应避免这样做,而应将其使用限制为仅引用
image
子元素,这些子元素属于 resources
元素。
注:
通过 image 元素间接引用图像,
可以
将图像指定为嵌入式数据资源,
并指定
有关图像的附加信息,例如其内容类型等。此外,通过
使用多个
source 子元素,并将其置于 image 元素中,
可以指定特定分辨率的图像和后备图像资源。
注:
由于值 none 被用作关键字,因此不能将此
值用作
image 表达式;
因此,如果希望使用这样的表达式,就必须
通过绝对 URI 或不同但等价的相对 URI
将其与关键字 none 区分开,
例如 ./none。
与背景图像关联的元素所生成的区域,其内容矩形的范围 不受背景图像解析后的 范围影响。
注:
TTML1 的某些配置文件,例如 [SMPTE ST 2052-1] 及其
依赖配置文件,规定背景图像会影响
关联元素所生成区域的内容矩形的范围。在
这些配置文件与 TTML2 之间转换时,
此类背景图像应映射为 image 元素,
而不是 tts:backgroundImage
属性。
以下示例说明 tts:backgroundImage 样式。
<head>
<resources>
<image xml:id="blue102px57px">
<source>
<data type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
</source>
</image>
</resources>
</head>
...
<region xml:id="r1">
<style tts:extent="306px 114px"/>
<style tts:backgroundColor="red"/>
<style tts:backgroundClip="padding"/>
<style tts:backgroundRepeat="noRepeat"/>
<style tts:backgroundImage="#blue102px57px"/>
<style tts:padding="27px 72px"/>
</region>
|
|
tts:backgroundOrigin 属性用于指定一个样式属性,
该属性确定背景定位
矩形,
背景在该矩形内定位。
| 值: |
"border" |
"content" |
"padding"
|
| 初始值: | padding |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | backgroundOrigin 推导 |
以下示例说明 tts:backgroundOrigin 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:backgroundColor="red"/> <style tts:backgroundRepeat="noRepeat"/> <style tts:backgroundImage="#blue102px57px"/> <style tts:backgroundOrigin="content"/> </region> |
|
tts:backgroundPosition 属性用于指定一个样式属性,
该属性定义是否以及如何在区域或流入区域的
内容所生成的区域中定位背景图像。
| 值: | <position> |
| 初始值: | 0% 0% |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | backgroundPosition 推导 |
水平位置偏移的百分比值分量 相对于以下宽度差: 背景定位矩形的宽度减去 背景图像的宽度。 垂直位置偏移的百分比值分量 相对于以下高度差: 背景定位矩形的高度减去 背景图像的高度。
以下示例说明 tts:backgroundPosition 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:backgroundColor="red"/> <style tts:backgroundRepeat="noRepeat"/> <style tts:backgroundImage="#blue102px57px"/> <style tts:backgroundPosition="center"/> </region> |
![]() |
tts:backgroundRepeat 属性用于指定一个样式属性,
该属性定义是否以及如何将背景图像重复(平铺)到区域或
流入区域的内容所生成的区域中。
| 值: |
"repeat" |
"repeatX" |
"repeatY" |
"noRepeat"
|
| 初始值: | repeat |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | backgroundRepeat 推导 |
以下示例说明 tts:backgroundRepeat 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:backgroundColor="red"/> <style tts:backgroundImage="#blue102px57px"/> <style tts:backgroundRepeat="repeatX"/> </region> |
|
tts:border 属性用于指定一个样式属性,
该属性定义区域或流入区域的内容所生成的区域的边框。
注:
当边框应用于区域时,它从区域的范围向内占据空间,也 就是说,应用于该区域的边框会使 区域的内容矩形缩小。
| 值: | <border> |
| 初始值: | none |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续(仅颜色) |
| 语义依据: | border 推导 |
如果 tts:border 属性的值未指定边框厚度,
则必须将边框厚度解释为如同指定了
medium 厚度。
如果不支持与此属性关联的边框厚度的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的边框厚度与受支持的边框厚度之间的 一维欧氏距离逐边最小的 值。如果对于某条边,存在多个与其计算值 距离相等的最接近的受支持值,则使用距离 0 最近的值,即最小的 边框厚度。
如果 tts:border 属性的值未指定边框样式,
则必须将边框样式解释为如同指定了
none 样式。
如果不支持与此属性关联的边框样式的某个计算值,
则呈现处理器必须使用值
solid。
如果 tts:border 属性的值未指定边框颜色,
则必须将边框颜色解释为如同指定了一个颜色,
其值等于元素的 tts:color 样式属性的计算值。
如果 tts:border 属性的值未指定边框圆角半径,
则必须将边框圆角半径解释为如同指定了
0 半径。
如果不支持与此属性关联的边框圆角半径的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的边框圆角半径与受支持的边框圆角半径之间的差异 最小的值。
以下示例说明 tts:border 样式。
<region xml:id="r1"> <style tts:extent="306px 114px"/> <style tts:border="2px solid red"/> <style tts:color="white"/> <style tts:displayAlign="center"/> <style tts:padding="3px 30px"/> </region> ... <p region="r1" tts:border="4px solid green" tts:textAlign="center"> 闪呀,闪呀,小蝙蝠!<br/> 真是 <span tts:border="8px solid blue">让我好奇</span> 你在哪里! </p> |
|
以下示例说明带圆角的 tts:border 样式。
<style xml:id="roundedBorder" tts:border="2px solid lime 10px" tts:backgroundColor="black"/>
...
<div tts:color="white" tts:textAlign="center">
<p style="roundedBorder">边框圆角应用于 <br/>p 元素。</p>
<p>
<span style="roundedBorder">span 上的边框圆角</span>
<br/>
<span style="roundedBorder">较短的 span</span>
</p>
</div>
|
|
tts:bpd 属性用于指定
块推进维度,或简称 bpd,该维度属于
流入区域的内容所生成的区域。
注:
术语块推进维度以相对于书写模式的 方式解释, 使得 bpd 始终对应于块 推进方向上的距离。因此,在水平书写模式下,bpd 表示 垂直距离, 而在垂直书写模式下,bpd 表示水平距离, 其中水平和垂直始终按绝对意义解释。
| 值: | <measure> |
| 初始值: | auto |
| 适用于: |
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | bpd 推导 |
如果 <measure> 表示为 <length> 值,则它必须为非负值。
如果 tts:bpd 属性指定在 span 元素上,
且应用于该元素的 tts:display 属性的计算值
不是 inlineBlock,
则 tts:bpd 的语义仅在计算任何适用的背景颜色或图像的
块推进维度时适用;
但是,所生成区域的内容矩形的尺寸不会改变。
如果在此属性的 <length> 表达式中使用 百分比值, 则相对于所生成区域的包含区域(最近的祖先区域)的适用绝对 维度 解析该值。
注:
用于此属性的 <length> 表达式 关联于 某个相对于书写模式的特定维度,该维度随后被解析为绝对维度, 具体取决于适用的书写模式。如果该绝对维度为垂直(水平)维度, 则根据参考区域(最近的祖先区域)的同一垂直(水平)绝对维度 解析百分比值。
以下示例说明 tts:bpd 样式。
<p tts:fontSize="24px" tts:lineHeight="48px" tts:bpd="96px"> 树林正在 <span tts:display="inlineBlock" tts:bpd="36px">渐渐变绿</span> ... </p> |
tts:color 属性用于指定一个样式属性,
该属性定义与某一区域关联的标记的前景色,该区域由流入
区域的内容生成。
| 值: | <color> |
| 初始值: | 见正文 |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续 |
| 语义依据: | color 推导 |
tts:color 属性的初始值
视为由实现决定。在缺少
最终用户偏好信息时,符合规范的呈现处理器
应使用一个与
根容器区域的背景颜色形成强烈对比的初始值。
以下示例说明 tts:color 样式。
<region xml:id="r1"> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:displayAlign="after"/> <style tts:textAlign="center"/> </region> ... <p region="r1"> 春天,当树林 <span tts:color="green">渐渐变绿</span>,<br/> 我会试着告诉你我的意思。 </p> |
![]() |
tts:direction 属性用于指定一个样式属性,该属性根据
使用上下文,
确定 (1) 双向段落级别,或 (2) 双向嵌入
或覆盖的方向性,
相关内容参见 [UAX9]。
| 值: |
"ltr" |
"rtl"
|
| 初始值: |
ltr
|
| 适用于: |
p,
span
|
| 继承: | 是,但参见特殊 语义 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | direction 推导 |
当应用于 p 元素时,此属性的计算值显式
确定
段落级别,其规定见 [UAX9] 第 4.3 节的高级协议
HL1。
当应用于 span 元素(或匿名
span)时,此属性的计算值结合
tts:unicodeBidi 样式属性的计算值,确定
双向嵌入或覆盖的方向性,其规定见
[UAX9] 第 4.3 节的高级协议 HL3。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
ltr。
以下示例说明 tts:direction 样式。
<p>
这本书的标题是
"<span tts:unicodeBidi="embed" tts:direction="rtl">国际化活动,W3C</span>"
</p>
|
|
执行样式解析处理时(见 10.4.4 样式解析
处理),
tts:direction 的计算值在 region
元素
R 上的解析依据以下有序规则确定,其中
应用第一条适用的规则:
如果在 R 上指定了 tts:direction 属性,
则计算值
tts:direction 为指定值;
如果在 R 上指定了 tts:writingMode 属性,
则计算值
tts:direction 为
行内推进方向,
该方向由
tts:writingMode 在 R 上的计算值确定;
否则,tts:direction 的计算值为初始值。
对于任何其他元素 E,其中 E
不是
region 元素,
tts:writingMode 属性的存在与否
不影响 tts:direction 计算值在
E 上的解析。
注:
上述语义对应于XSL 对 CSS
定义的修改,涉及
direction 属性,具体定义见 [XSL-FO 1.1]
第 7.29.1 节,因此被纳入
#direction 功能的范围。
tts:disparity 属性用于指定要应用的双眼视差,
以模拟立体视觉(立体深度)。零视差对应于
显示平面;负值对应于显示平面
前方的深度;正值对应于显示平面后方的深度。
有关视差与感知深度之间
关系的详情,参见 [SMITH]。
| 值: | <length> |
| 初始值: | 0px |
| 适用于: |
region;参见
特殊用法,适用于
div 和
p
|
| 继承: | 否 |
| 百分比: | 相对于根容器 区域的宽度 |
| 可动画化: | 离散;连续 |
| 语义依据: | disparity 推导 |
在立体图像对的右(左)图像上渲染区域时,该区域的中心
沿水平轴偏移,偏移量等于以下计算值的 ½ (-½):
tts:disparity,其中正偏移向右,负偏移向
左。
除非渲染到立体图像对上,否则在呈现处理时
忽略 tts:disparity 属性。
作者应确保在区域可见的整个期间,区域的感知深度始终位于场景中任何 对象的前方。如果场景中的某个对象被感知为位于该区域前方, 则立体效果会被破坏。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的视差与受支持的视差之间的 欧氏距离最小的值。如果存在多个 与计算值距离相等的 最接近的受支持值,则使用距离 0 最近的值。
注:
通常,立体内容的呈现依赖于使用 亚像素(抗锯齿)渲染技术;因此, 将经过视差调整的位置量化为整数值的实现 可能产生不希望出现的副作用。这在 应用平滑的视差动画时尤其令人不适,例如, 当作者试图使主体与其关联文本之间 保持恒定距离时。
以下示例片段及其呈现说明 tts:disparity 样式。
请注意,在典型的电视场景中,视差范围为屏幕宽度的 -1% 到 2%。
此示例使用 5% 的视差,夸大了视差的效果,以便
清晰展示。
<region xml:id="r1">
<style tts:extent="80% 10%"/>
<style tts:origin="10% 10%"/>
<style tts:disparity="5%"/>
...
</region>
...
<p region="r1">
立体视觉
</p>
|
![]() |
当 tts:disparity 特例指定在 div 或
p 上时,11.1.2.1 内联动画的特殊
语义适用。
tts:display 属性用于指定一个样式属性,
该属性定义元素是否有资格参与
区域中的布局和合成。
| 值: |
"auto" |
"none" |
"inlineBlock"
|
| 初始值: |
auto
|
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | display 推导 |
如果此属性的值为 auto,
则受影响的元素有资格参与区域布局和
呈现;但是,如果值为 none,则
必须将受影响的元素及其后代视为没有资格参与区域
布局和呈现。
如果此属性的值为 inlineBlock,且此属性应用
于 span 元素,则
行内块显示语义适用,并且该元素
有资格参与区域布局和呈现。此外,以下情况会被视为错误:将
inlineBlock 值应用于任何不是 span
元素的元素。
以下示例说明 tts:display 样式。
<region xml:id="r1">
<style tts:extent="369px 119px"
tts:backgroundColor="black"
tts:color="white"
tts:displayAlign="before"
tts:textAlign="start"/>
</region>
...
<div region="r1">
<p dur="5s">
[[[
<span tts:display="none">
<set begin="1s" dur="1s" tts:display="auto"/>
美味的汤,
</span>
<span tts:display="none">
<set begin="2s" dur="1s" tts:display="auto"/>
如此浓郁而碧绿,
</span>
<span tts:display="none">
<set begin="3s" dur="1s" tts:display="auto"/>
在滚烫的汤盆里等着!
</span>
]]]
</p>
</div>
|
|
|
|
|
|
tts:displayAlign 属性用于指定一个样式属性,
该属性定义块区域在块推进方向上的对齐方式。
| 值: |
"before" |
"center" |
"after" |
"justify"
|
| 初始值: |
before
|
| 适用于: |
body,
div,
p,
region
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | displayAlign 推导 |
如果此属性的值为 justify,则
块推进维度中(未使用的)可用空间被均匀
分配到各块区域子项之间,这些子项属于
应用此属性的元素所生成的块区域。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
before。
以下示例说明 tts:displayAlign 样式。
<region xml:id="r1">
<style tts:extent="128px 66px" tts:origin="0px 0px"
tts:backgroundColor="black" tts:color="white"/>
<style tts:displayAlign="before"/>
<style tts:textAlign="start"/>
</region>
<region xml:id="r2">
<style tts:extent="192px 66px" tts:origin="128px 66px"/>
tts:backgroundColor="green" tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:textAlign="start"/>
</region>
<region xml:id="r3">
<style tts:extent="128px 66px"/> style tts:origin="0px 132px"
tts:backgroundColor="black" tts:color="white"/>
<style tts:displayAlign="before"/>
<style tts:textAlign="start"/>
</region>
<region xml:id="r4">
<style tts:extent="192px 66px" tts:origin="128px 198px"/>
tts:backgroundColor="green" tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:textAlign="start"/>
</region>
...
<div>
<p region="r1">我给鱼儿捎了个口信:</p>
<p region="r2">我告诉它们<br/> "这就是我的愿望。"</p>
<p region="r3">海里的小鱼儿,</p>
<p region="r4">它们捎来一个<br/> 给我的答复。</p>
</div>
|
![]() |
tts:extent 属性可用于以下用途:
注:
如果对区域应用边框和(或)内边距,则区域的范围包含这些 边框和内边距, 即边框和内边距均向内占据空间,因此位于 区域范围的内部。
| 值: | <extent> |
| 初始值: | auto |
| 适用于: |
tt,
region,
image;参见
特殊用法,适用于
div 和
p
|
| 继承: | 否 |
| 百分比: | 相对于根 容器区域的宽度和高度 |
| 可动画化: | 离散 |
| 语义依据: | extent 推导 |
如果 tts:extent 属性指定在 tt
元素上,
则指定值仅限于以下之一:
(1) auto 关键字,
(2) contain 关键字,或
(3) 两个 <length> 规范,
其中这些规范使用像素单位表示为非百分比的确定长度。
此上下文中不得使用其他任何语法合法的值,并且,
如果使用了这些值,则必须将其视为错误,且必须
在呈现处理时
忽略它们,在这种情况下,初始值(auto)
适用。
如果 tts:extent 属性指定在 region 元素上,
则其计算值确定宽度和高度,
用于关联的内容区域。
如果 tts:extent 属性指定在 image 元素上,则其计算
值确定宽度和高度,
用于该图像。
如果 tts:extent 属性指定在 div 或 p 元素上,则
10.2.16.1 范围的特殊用法
所规定的语义适用。
如果此属性的值为 auto,则其关联属性的计算值
按以下方式确定:
如果该属性应用于 tt 元素,则
auto 被解释为如同指定了值 contain
一样;
如果该属性直接或间接应用于 region
元素,则 auto 被解释为如同
指定了值 "100% 100%";
如果该属性应用于 image 元素,则
auto
被解释为如同指定了等于图像固有范围的值,使用
两个基于像素的 <length> 分量表示,例如 "200px
100px"。
注:
此属性允许使用由单个关键字 "auto" 组成的值,以及
由两个关键字 "auto auto" 组成的另一个值。这两个不同的
值具有不同的含义,并不等价。
具体而言,单关键字值 "auto" 具有
紧接上文所述的语义;而双关键字值
"auto auto" 由两个 <measure>
表达式组成,每个表达式都使用
<measure> 关键字 auto,其定义见
10.3.24 <measure>。
如果此属性的值为 contain,则其关联属性的计算值
按以下方式确定:
如果该属性应用于 region
元素,
则计算值通过执行
[计算容纳
缩放]过程来确定,
其中目标矩形 TR 初始化为
固有块内容范围,
该范围对应于区域的内容,
参考矩形 RR 设置为根容器区域的范围,
目标矩形 TR 的最终输出值即为计算
值;
如果该属性应用于 image 元素,
则计算值通过执行
[计算容纳
缩放]过程来确定,
其中目标矩形 TR 初始化为
固有图像范围,对应于该图像,
参考矩形 RR 设置为
包含块区域或行区域中的可用内容空间,
分别取决于当前格式化上下文是块级格式化
上下文还是行内格式化上下文,
目标矩形 TR 的最终输出值即为计算
值。
如果此属性的值为 cover,则其关联属性的计算值
按以下方式确定:
如果该属性应用于 region
元素,
则计算值通过执行
[计算覆盖
缩放]过程来确定,
其中目标矩形 TR 初始化为
固有块内容范围,
该范围对应于区域的内容,
参考矩形 RR 设置为根容器区域的范围,
目标矩形 TR 的最终输出值即为计算
值;
如果该属性应用于 image 元素,
则计算值通过执行
[计算覆盖
缩放]过程来确定,
其中目标矩形 TR 初始化为
固有图像范围,对应于该图像,
参考矩形 RR 设置为
包含块区域或行区域中的可用内容空间,
分别取决于当前格式化上下文是块级格式化
上下文还是行内格式化上下文,
目标矩形 TR 的最终输出值即为计算
值。
如果此属性的值由两个 <measure> 规范组成,则必须将其解释为 宽度和高度,其中 第一个规范为 宽度,第二个规范为高度, 在这种情况下,两个 <measure> 规范都必须解析为(或能够解析为)非负长度。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的范围与受支持的范围之间的 欧氏距离最小的值。如果存在多个 与计算值距离相等的 最接近的受支持值,则使用距离 [0,0] 最远的值,即范围 最大的值。
此解析最接近的受支持值的规则使用最接近的较大 受支持距离,而不是最接近的较小受支持距离。 采用这种不同处理方式的理由是, 使用较大的范围可确保受影响的内容被包含在 区域内,而不会导致区域溢出, 使用较小的范围则更容易导致区域溢出。
以下示例说明 tts:extent 样式。
<region xml:id="r1">
<style tts:extent="330px 122px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:textAlign="center"/>
</region>
...
<p region="r1">
那是龙虾的声音:<br/>
我听见它宣告,<br/>
"你把我烤得太焦黄,<br/>
我得给头发撒上糖。"
</p>
|
|
当 tts:extent 特例指定在 div 或
p 上时,11.1.2.1 内联动画的特殊
语义适用。
tts:fontFamily 属性用于指定一个样式属性,
该属性定义字体族,从中为字形
区域选择字形,这些区域
由流入区域的内容生成。
| 值: | <font-families> |
| 初始值: | default |
| 适用于: |
p,
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | fontFamily 推导 |
注:
初始值 default 是一个通用字体族名称,
下文 10.3.19
<generic-family-name> 对其作了进一步描述。
注:
除了应用于 span,此
属性的计算值
在 p 元素上还用于解析
与
tts:lineHeight
属性关联的样式属性的值,具体规定见
10.2.27 tts:lineHeight。
如果不支持与此属性关联的样式属性的某个计算值,则
呈现处理器必须尝试将
计算出的字体族
映射到具有相似排版
特征的受支持字体族,或者,如果不存在这样的映射,则必须
使用值 default。
以下示例说明 tts:fontFamily 样式。
<region xml:id="r1"> <style tts:extent="474px 146px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:displayAlign="center"/> <style tts:textAlign="start"/> <style tts:fontFamily="proportionalSansSerif"/> </region> ... <div region="r1"> <p> "时候到了,"海象说道,<br/> "该谈谈许多事情: </p> <p tts:textAlign="end" tts:fontFamily="monospaceSerif"> 谈鞋子,谈船只,谈封蜡,<br/> 谈卷心菜和国王, </p> <p> 还有海水为何滚烫,<br/> 以及猪是否长着翅膀。" </p> </div> |
![]() |
tts:fontKerning 属性用于指定一个样式属性,
该属性确定在定位字形
区域时是否应用字体字偶距调整。
| 值: |
"none" |
"normal"
|
| 初始值: | normal |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | fontKerning 推导 |
如果此属性的值为 normal,则当字偶距调整
数据可用时,应应用字偶距调整。
如果此属性的值为 none,则无论字偶距调整数据
是否可用,都不应应用字偶距调整。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
normal。
tts:fontKerning 样式由以下
示例说明。
<p>
波浪<br/>
<span tts:fontKerning="none">波浪</span>
</p>
|
![]() |
tts:fontSelectionStrategy 属性用于指定一个样式属性,
该属性确定应用于字形区域的策略,该策略用于
呈现处理期间从可能的字体列表中
选择字体。
| 值: |
"auto" |
"character"
|
| 初始值: | auto |
| 适用于: |
p,
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | fontSelectionStrategy 推导 |
此属性的呈现语义采用 [XSL-FO 1.1] 第 7.9.3 节中的定义, 其中选择条件集合扩展为包含以下属性:
在满足字体选择条件的字体资源中进行选择时,
由
font 元素引用的字体资源优先
于应用程序或系统提供的
字体资源。
注:
除了应用于 span,此
属性的计算值
在 p 元素上还用于解析
与
tts:lineHeight
属性关联的样式属性的值,具体规定见
10.2.27 tts:lineHeight。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
auto。
tts:fontSelectionStrategy 样式由以下
示例说明。
<p tts:fontFamily="font1,font2">
<span tts:fontSelectionStrategy="character">⃝</span>
</p>
|
注:
在上述示例中,假设与 font1
字体族关联的字体资源包含一个字形,
该字形映射单个字符 ,但不包含映射
整个上下文字符序列
⃝ 或单个字符 ⃝ 的字形。
进一步假设,
与 font2 字体族关联的字体资源包含完整上下文字符
序列的映射,以及单个字符
⃝ 的映射。
如果作者愿意接受完整上下文字符序列的映射,
通过 font2 实现,则应使用值
auto(显式指定或默认采用初始值)。但是,
如果作者希望 
通过 font1 映射,而 ⃝ 通过
font2 映射,则应指定值 character
。在此示例中,作者希望采用后一种行为,因此指定值
character。
tts:fontShear 属性用于指定一个样式属性,
该属性确定是否以及如何将切变变换应用于字形区域。
| 值: | <percentage> |
| 初始值: | 0% |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | fontShear 推导 |
对于此属性适用的每个字形区域,将二维 切变变换 应用于该字形区域,具体规定见 10.4.5.3 切变计算。
以下示例说明 tts:fontShear 样式。
<p region="horizontal"> <span tts:fontShear="16.78842%">三分钟热度</span><br/> <span tts:fontShear="50%">三分钟热度</span><br/> <span tts:fontShear="64.333%">三分钟热度</span> </p> <p region="vertical"> <span tts:fontShear="16.78842%">三分钟热度</span><br/> <span tts:fontShear="50%">三分钟热度</span><br/> <span tts:fontShear="64.333%">三分钟热度</span> </p> |
![]() |
<p region="horizontal"> <span tts:fontShear="-16.78842%">三分钟热度</span><br/> <span tts:fontShear="-50%">三分钟热度</span><br/> <span tts:fontShear="-64.333%">三分钟热度</span> </p> <p region="vertical"> <span tts:fontShear="-16.78842%">三分钟热度</span><br/> <span tts:fontShear="-50%">三分钟热度</span><br/> <span tts:fontShear="-64.333%">三分钟热度</span> </p> |
![]() |
tts:fontSize 属性用于指定一个样式属性,
该属性定义为字形
区域所选字形的字体大小,
这些区域由流入区域的内容生成。
| 值: | <font-size> |
| 初始值: | 1c |
| 适用于: |
p,
span;另见注
|
| 继承: | 是,但 10.2.21.1 字体大小的特殊语义所述情况除外 |
| 百分比: | 如果不是 region 元素,
则相对于最近祖先样式
元素的计算字体大小;否则,相对于
计算单元格尺寸
|
| 可动画化: | 离散 |
| 语义依据: | fontSize 推导 |
如果指定单个 <length> 值,则此长度 同时确定字形 EM 方框的水平和垂直尺寸,二者相等; 如果指定两个 <length> 值,则第一个 确定水平 尺寸,第二个确定垂直尺寸。
如果分别表示水平和垂直尺寸,则 <length> 值的单位必须相同。
注:
字形的 EM 方框通常定义为包含该字形的字体的 EM 方框。也就是说, 字形没有与其字体的 EM 方框不同的 EM 方框。
相对 <length> 值
出现在此属性中时,即以百分比(%)、单元格
(c)或 EM(em)单位表示的值,
相对于一个参考二维尺寸值进行解析,该值包含两个分量:宽度分量和
高度分量。如果相对单位为百分比,则
参考值是最近祖先样式元素的
字体大小计算值,或计算单元格尺寸。
如果相对单位为单元格(c),则参考值是
计算单元格尺寸。
如果相对单位为 EM(em),则按如同使用
百分比单位的方式
确定参考值,其中 1em 等于 100%。
当指定单个相对 <length> 值时, 此 <length> 根据参考值的高度分量进行解析; 当指定两个相对 <length> 值时, 第一个 <length> 根据参考值的宽度分量进行解析, 第二个 <length> 根据参考值的高度 分量进行解析。
注:
非等比字体缩放,即将字体缩放为独立(且不同)的水平和 垂直尺寸, 预计会用于多种上下文,例如, 作者希望合成窄体或宽体字面时, 或作者希望采用基于非正方形单元格单位的字体大小时,等等。
注:
呈现处理器预期使用适合字体的算法缩放 字形,使字体资源中定义的 EM 方框的高度 与计算字体大小的高度匹配。 如果使用非等比字体缩放, 即计算字体大小的宽度不同于计算字体大小的高度,则 呈现处理器还预期 按宽高比对 EM 方框进行非等比缩放,并由此 确保所呈现的字形也 按相同比例缩放。
用于表示字体大小的 <length> 值必须 为非负值。
如果此属性的值为某个 <length> 分量指定了
c 单位,
则根据
单元格长度单位的高度(仅高度)或宽度和高度(两者)进行解析,该单位定义见 10.3.22
<length>,也就是说,根据
计算单元格尺寸进行解析。
注:
例如,考虑一个段落(p)元素 P。
如果计算单元格尺寸为 (24px,36px),且
tts:fontSize="1c" 指定在 P 上,则
tts:fontSize 的计算值
解析为 (36px,36px),而如果 tts:fontSize="1c 1c" 指定在
P 上,
则计算值解析为 (24px,36px)。
如果此属性的值为某个 <length> 分量指定了
em 单位,
则按如同指定了等价百分比值的方式处理,其中 1em
等于 100%。
注:
例如,考虑一个 span 元素 S,它是段落(p)
元素 P 的子元素。
如果 tts:fontSize 在 P 上的计算值为 (18px,24px),且
tts:fontSize="1em" 指定在 S 上,则这等价于
指定 100%,
其解析为 (24px,24px)。但是,如果 tts:fontSize="1em 1em" 指定
在 S 上,
则这等价于指定 100% 100%,其解析为 (18px,24px)。
注:
除了应用于 span,此
属性的计算值
在 p 元素上还用于解析
与
tts:lineHeight
属性关联的样式属性的值,具体规定见
10.2.27 tts:lineHeight。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的字体大小与受支持的字体大小之间的 欧氏距离最小的值。如果存在多个 与计算值距离相等的 最接近的受支持值,则使用距离 0(单长度规范)或 [0,0](双长度规范)最远的值, 即使用最大的字体大小。
以下示例说明 tts:fontSize 样式。
<region xml:id="r1"> <style tts:extent="299px 97px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:displayAlign="center"/> <style tts:textAlign="center"/> <style tts:fontFamily="proportionalSansSerif"/> <style tts:fontSize="18px"/> </region> ... <p region="r1"> 那就把杯子装满<br/> 糖浆和墨水,<br/> 或者其他任何<br/> 喝起来 <span tts:fontSize="24px">可口</span> 的东西。 </p> |
|
与此属性关联的样式属性的计算值由一个二元组组成, 其中的条目分别表示字体大小的宽度和高度分量的计算值。
当应用于 span 元素,
且该元素的 tts:ruby 计算值为
textContainer 或 text 时,在解析计算
值,
即 tts:fontSize 的计算值时,以下特殊
继承
规则适用。
旁注文本容器,无论
它是
显式的还是隐含的,
都不从其父级继承 tts:fontSize
。
而是,如果它是显式旁注
文本容器,且未指定
tts:fontSize 属性,或者它是
一个
隐含旁注文本容器,则
应用一个等于 tts:fontSize
在最近祖先旁注容器上的计算值的 50% 的值;
否则,应用指定值。
如果某个 span 元素的计算
值,
即 tts:ruby 的计算值为 text,且未
指定
tts:fontSize 属性,则它
继承计算
值,即 tts:fontSize 在其父级
旁注文本容器上的计算值,
无论该父级是显式的还是
隐含的旁注文本容器。
tts:fontStyle 属性用于指定一个样式属性,
该属性定义应用于所选字形的字体样式,这些字形用于字形区域,其由
流入区域的内容生成,其中从字体
样式值到特定字体字面或样式参数化的映射
不由本规范确定。
| 值: |
"normal" |
"italic" |
"oblique"
|
| 初始值: | normal |
| 适用于: |
p,
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | fontStyle 推导 |
使用值 oblique
表示沿行内推进方向进行切变变换,
其角度未指定。
注:
除了应用于 span,此
属性的计算值
在 p 元素上还用于解析
与
tts:lineHeight
属性关联的样式属性的值,具体规定见
10.2.27 tts:lineHeight。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
normal。
以下示例说明 tts:fontStyle 样式。
<region xml:id="r1">
<style tts:extent="331px 84px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:textAlign="center"/>
<style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
秋天,当树叶变成棕色,<br/>
拿起笔墨,<span tts:fontStyle="italic">把它写下来。</span>
</p>
|
![]() |
tts:fontVariant 属性用于启用排版字形
变体的选择,这些变体用于字形区域,其由
流入区域的内容生成。
| 值: | <font-variant> |
| 初始值: | normal |
| 适用于: |
p,
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | fontVariant 推导 |
注:
除了应用于 span,此
属性的计算值
在 p 元素上还用于解析
与
tts:lineHeight
属性关联的样式属性的值,具体规定见
10.2.27 tts:lineHeight。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
normal。
以下示例说明 tts:fontVariant 样式。
<region xml:id="r1"> <style tts:extent="376px 95px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:displayAlign="center"/> <style tts:textAlign="center"/> <style tts:fontFamily="proportionalSansSerif"/> </region> ... <p region="r1"> 跳到 <span tts:fontVariant="super">上面</span> 又跳到 <span tts:fontVariant="sub">下面</span>,恐惧得痛苦不堪。 </p> |
![]() |
tts:fontWeight 属性用于指定一个样式属性,
该属性定义应用于所选字形的字重,这些字形用于字形区域,
其由流入区域的内容生成,其中从
字重值到特定字体字面或字重参数化的映射
不由本规范确定。
| 值: |
"normal" |
"bold"
|
| 初始值: | normal |
| 适用于: |
p,
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | fontWeight 推导 |
注:
除了应用于 span,此
属性的计算值
在 p 元素上还用于解析
与
tts:lineHeight
属性关联的样式属性的值,具体规定见
10.2.27 tts:lineHeight。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
normal。
以下示例说明 tts:fontWeight 样式。
<region xml:id="r1"> <style tts:extent="376px 95px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:displayAlign="center"/> <style tts:textAlign="center"/> <style tts:fontFamily="proportionalSansSerif"/> </region> ... <p region="r1"> 他们告诉我,你去见过她,<br/> <span tts:fontWeight="bold">还向他提起过我:</span><br/> 她说我的人品不错,<br/> <span tts:fontWeight="bold">却说我不会游泳。</span> </p> |
![]() |
tts:ipd 属性用于指定
行内推进维度,或简称 ipd,该维度属于
流入区域的内容所生成的区域。
注:
术语行内推进维度以相对于书写模式的 方式解释, 使得 ipd 始终对应于行内 推进方向上的距离。因此,在水平书写模式下,ipd 表示 水平距离, 而在垂直书写模式下,ipd 表示垂直距离, 其中水平和垂直始终按绝对意义解释。
| 值: | <measure> |
| 初始值: | auto |
| 适用于: |
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | ipd 推导 |
如果 <measure> 表示为 <length> 值,则它必须为非负值。
如果 tts:ipd 属性指定在 span 元素上,
且应用于该元素的 tts:display 属性的计算值
不是 inlineBlock,
则 tts:ipd 的语义仅在计算任何适用的背景颜色或图像的
行内推进维度时适用;
但是,所生成区域的内容矩形的尺寸不会改变。
如果在此属性的 <length> 表达式中使用 百分比值, 则相对于所生成区域的包含区域(最近的祖先区域)的适用绝对 维度 解析该值。
注:
用于此属性的 <length> 表达式 关联于 某个相对于书写模式的特定维度,该维度随后被解析为绝对维度, 具体取决于适用的书写模式。如果该绝对维度为水平(垂直)维度, 则根据参考区域(最近的祖先区域)的同一水平(垂直)绝对维度 解析百分比值。
以下示例说明 tts:ipd 样式。
<p tts:fontSize="24px" tts:lineHeight="48px" tts:ipd="300px"> 树林正在 <span tts:display="inlineBlock" tts:ipd="150px">渐渐变绿</span> ... </p> |
tts:letterSpacing 属性用于指定一个样式属性,
该属性增大或减小字形区域之间的标称距离。
字母间距在行区域的开头或结尾不起作用,且不得 应用于前进量为零的字形。此外,字母间距不得导致通常相连的 字形, 例如连写文字或连写字体中使用的字形,变得断开。
字母间距的应用独立于字偶距调整和两端对齐。根据 所使用的字体、 所呈现的文字体系以及呈现处理器的能力,除字母间距外,还可以应用 字偶距调整和 两端对齐中的任一项或两项。
| 值: |
"normal" |
<length>
|
| 初始值: | normal |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | letterSpacing 推导 |
值 normal 对应于指定一个 <length> 值零 (0),
即既不扩大也不压缩相邻字形的间距。
如果 <length> 值表示为正标量, 则相邻字形之间的间距额外增大一个等于该 标量值的量。 如果表示为负标量, 则相邻字形之间的间距额外压缩一个等于该 标量值的量,这可能导致 字形区域重叠,其最大压缩量使 有效前进量为零 (0)。
如果不支持与此属性关联的字母间距的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的字母间距与受支持的字母间距之间的 一维欧氏距离最小的值。如果 存在多个与某条边的计算值距离相等的 最接近的受支持值,则使用距离 0 最近的值。
tts:letterSpacing 样式由以下
示例说明。
<p>
波浪<br/>
<span tts:letterSpacing="20px">波浪</span>
</p>
|
![]() |
tts:lineHeight 属性用于指定一个样式属性,
该属性定义行区域之间的基线间距,这些行区域由流入
区域的内容生成。
注:
作为特例,词元 lineHeight 或短语中的术语高度,
即行高中的高度,指
与关联行区域的块推进维度相对应的
轴,该轴在
水平书写模式下为垂直轴,而在垂直书写模式下为水平轴。
注:
有关行高的更多信息,参见 11.3.2.2 行堆叠 中的相关说明。
| 值: |
"normal" |
<length>
|
| 初始值: | normal |
| 适用于: |
p
|
| 继承: | 是,但参见特殊 语义 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | 离散 |
| 语义依据: | lineHeight 推导 |
注:
除了显式应用于 p
元素之外,此
样式属性的值还由 span 元素
和匿名 span
继承,这些元素是 p 元素的后代,该值用于
计算它们所生成的半行距,对应于
行内区域,相关内容参见 [XSL-FO
1.1] 第 4.5 节,以及 [CSS2] 第 10.8.1 节。
如果此属性的值为 normal,则
此样式属性的使用值按以下方式
确定:
令 P 为 p 元素,
此样式属性应用于该元素。
令 FF 为 tts:fontFamily
样式属性在 P 上的计算值。
令 FS 为 tts:fontSize
样式属性的计算值,该属性属于
P。
令 F0 为依次映射各字体族时获得的第一个字体,这些字体族位于
FF 中,分别映射到一组可用字体,
其中这组可用字体按需受到约束,以满足以下
计算值,即
tts:fontSelectionStrategy,
tts:fontStyle,
tts:fontWeight,以及
tts:fontVariant,
这些样式属性在 P 上的计算值。
如果 F0 关联的字体度量指定了上升高度 A、下降深度 D 和行间隙 G, 则将 LH 设置为 scaled(A)、scaled(D) 和 scaled(G) 之和, 其中 scaled(X) 表示字体度量 X 按字体大小 FS 缩放后的值。
注:
此处引用的上升高度、下降深度和行间隙参数旨在
对应于 sTypoAscender、
-sTypoDescender,即负一 (-1) 倍的
sTypoDescender,以及 sTypoLineGap 字段,它们位于
OS/2 表中,
该表属于 OpenType [OFF] 字体(或其他字体
格式中的等价项)。此外,通常,表达式
scaled(A) 和 scaled(D) 旨在对应于
text-altitude 和 text-depth
区域特征,由 [XSL-FO 1.1] 在值
use-font-metrics 用于关联属性
text-altitude 和 text-depth 时分别采用。
否则,LH 视为由实现决定;但是,在 没有实现特定要求的情况下, 建议将 LH 设置为 FS 的 125%。
将此样式属性的使用值设置为 LH。
注:
如果内容作者希望避免对
normal 产生不同解释的可能性,例如由于
可用字体集合存在差异,则建议使用
<length> 值表达式来显式
指定行高值。
本规范旨在使上述算法兼容 [XSL-FO 1.1] 和 [CSS2]。
如果指定为 <length>,则该长度必须 为非负值。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的行高与受支持的行高之间的 欧氏距离最小的值。如果存在多个 与计算值距离相等的 最接近的受支持值,则使用距离 0 最远的值,即 最大的行高。
以下示例说明 tts:lineHeight 样式。
<region xml:id="r1">
<style tts:extent="255px 190px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="center"/>
<style tts:textAlign="start"/>
<style tts:fontFamily="proportionalSansSerif"/>
<style tts:fontSize="16px"/>
<style tts:lineHeight="32px"/>
</region>
...
<p region="r1">
他以为自己看见一头大象,<br/>
正在练习吹短笛:<br/>
他再看一眼,发现那是<br/>
妻子寄来的一封信。<br/>
"我终于明白了,"他说,<br/>
"生活的苦涩。
"</p>
|
![]() |
当此属性的指定值为 normal 时,计算值就是
指定值;因此,
应用继承语义时,值 normal 即为继承值。
但是,当此计算值用于执行段落布局时,还会对其进行
进一步处理,以获得
使用值,
如上文所述。
tts:lineShear 属性用于指定一个样式属性,
该属性确定是否以及如何将切变变换应用于每个行区域,这些区域
由 p 元素生成。
| 值: | <percentage> |
| 初始值: | 0% |
| 适用于: |
p
|
| 继承: | 是 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | lineShear 推导 |
对于此属性适用的每个行区域,将二维 切变变换 应用于该行区域,具体规定见 10.4.5.3 切变计算。
以下示例说明 tts:lineShear 样式。
<region xml:id="right" tts:writingMode="tbrl" tts:displayAlign="center" .../> <region xml:id="left" tts:writingMode="tbrl" tts:displayAlign="center" .../> ... <div> <p region="right" tts:lineShear="0%"> 山区<span tts:ruby="container"><span tts:ruby="base">遇难</span><span tts:ruby="text">遇难</span></span><br/> <span tts:ruby="container"><span tts:ruby="base">最多</span><span tts:ruby="text">最多</span></span><span tts:ruby="container"><span tts:ruby="base">的一年</span><span tts:ruby="text">年</span></span> </p> <p region="left" tts:lineShear="16.67%"> 山区<span tts:ruby="container"><span tts:ruby="base">遇难</span><span tts:ruby="text">遇难</span></span><br/> <span tts:ruby="container"><span tts:ruby="base">最多</span><span tts:ruby="text">最多</span></span><span tts:ruby="container"><span tts:ruby="base">的一年</span><span tts:ruby="text">年</span></span> </p> </div> |
![]() |
注:
在上述示例中,黄色线条是由特定呈现
处理器创建的装饰,
用于辅助调试布局问题。这些线条不属于本规范
所定义的规范性 TTML 呈现的一部分。
此处,这些装饰描绘了 (1) 外层块
区域的边界,
这些区域由 region 元素生成,
(2) 行区域子项的边界,它们属于外层块区域,
由 p 元素生成,以及
(3) 行内区域子项的边界,它们属于行区域,由
隐含的旁注文本容器生成。
此示例描绘了如何将切变(倾斜)变换应用于每个受影响的行区域
整体;但是,
当要对某行应用行切变时,可分配给
该行的可用距离,即其在切变变换前的最大行内推进维度
长度,会减小 B*sin(θ),其中
B 是行区域的块推进
维度,θ 是切变角度,以使该行能够放入
段落外层块区域的
内容矩形中。
tts:luminanceGain 属性用于确定区域的绝对亮度,
适用于
其呈现所需动态范围大于 [SRGB] 色彩空间所能提供的动态范围,
且其呈现需要绝对亮度值的情况。
注:
绝对亮度通过将增益乘数应用于绝对 参考白 点亮度来确定,该亮度为 [SRGB] 色彩空间的 80 cd∙m-2(而 不是某个输出显示设备 的实际白色亮度)。
如果不能指定此增益,则在 [SRGB] 空间中指定的颜色无法 与高动态范围(HDR)内容可靠地合成,这类内容预期以 显著 更高的峰值亮度显示,例如使用感知量化器电光 传递函数(PQ EOTF)的内容, 该函数规定于 [ITU BT.2100-1]。具体而言,
| 值: |
<non-negative-number>
|
| 初始值: | 1.0 |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续 |
| 语义依据: | luminanceGain 推导 |
与 tts:luminanceGain 属性关联的计算值应用于所有
位于关联
region 内、且需要从
[SRGB] 颜色值转换为绝对亮度值的像素。任何生成
绝对亮度
像素值的要求都源自文档
处理上下文。
注:
如果某个图像在处理时生成绝对亮度像素值,例如 符合 [PQ PNG] 的图像,被放入一个区域,而该区域还 包含文本或 图像,其处理会生成 [SRGB] 像素值,且要求输出绝对 亮度, 则仅转换 [SRGB] 像素值。
应用 tts:luminanceGain 时,线性光输出值
(Cr, Cg, Cb) 对应于分量,
这些分量属于区域中的一个像素,其值定义为
80 ∙ tts:luminanceGain ∙ (r, g, b),其中 (r, g, b) 是该像素的归一化线性 [SRGB] 分量。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
以下示例说明 tts:luminanceGain 样式。
<region xml:id="r1"> <style tts:extent="60% 20%"/> <style tts:origin="10% 70%"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:luminanceGain="3.8"/> </region> <region xml:id="r2"> <style tts:extent="60% 20%"/> <style tts:origin="10% 10%"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:luminanceGain="1.0"/> </region> ... <p region="r1"> 区域一 "r1" 中文本的绝对亮度应为 区域二 "r2" 中文本绝对亮度的 3.8 倍。 </p> <p region="r2"> 采用恒等亮度调整 (1.0) 的其他文本。 </p> |
下面描述一个亮度调整计算的示例。
给定 tts:luminanceGain="1.5",渲染像素的绝对线性光输出,
对应于其分量,当颜色为
rgb(218,165,32)
时,为 (82.37, 42.21, 0.82) ≈ 80 ∙ 1.5 ∙((218/255)2.4,
(165/255)2.4, (32/255)2.4),
其中指数 2.4 是 [SRGB] EOTF 应用的伽马校正。
|
注:
如 10.3.9 <color> 所规定,将已渲染 文档实例的区域 合成到目标媒介上时,通常使用像素分量,这些分量使用 目标媒介的逆 EOTF 编码,而不是使用像素分量,其以 线性光表示。因此,使用半透明区域可能产生 感知上不同的结果,具体取决于目标媒介所使用的逆 EOTF, 尤其是在已渲染 文档实例与目标媒介的像素之间存在较大亮度差异时。 因此,鼓励作者考虑涉及半透明 元素的视觉结果。
tts:opacity 属性用于指定一个样式属性,
该属性定义标记的不透明度(或反过来,透明度),
这些标记关联于区域或流入区域的内容所生成的区域。
在视觉媒介上呈现时,区域的不透明度以统一且 线性的方式 应用于以该区域为目标的内容所产生的所有标记, 该操作在将任何内容元素特定的 不透明度应用于该内容所生成的区域之后执行。
| 值: | <alpha> |
| 初始值: |
1.0
|
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续 |
| 语义依据: | opacity 推导 |
以下示例说明 tts:opacity 样式。
<p> <span tts:opacity="1.00">而 </span> <span tts:opacity="0.75">后 </span> <span tts:opacity="0.50">那里 </span> <span tts:opacity="0.25">便 </span> <span tts:opacity="0.00">空无一人。</span> </p> |
|
tts:origin 属性用于指定
x 和 y 坐标,它们表示区域原点
相对于根
容器区域原点的位置。
如果 tts:origin 和 tts:position
属性都
指定在某个元素上,且 tts:position 是
受支持的属性,
则必须在呈现处理时忽略 tts:origin 属性
。
| 值: | <origin> |
| 初始值: | auto |
| 适用于: |
region;参见
特殊用法,适用于
div 和
p
|
| 继承: | 否 |
| 百分比: | 相对于根 容器区域的宽度和高度 |
| 可动画化: | 离散 |
| 语义依据: | origin 推导 |
如果此属性的值由两个 <length> 规范组成, 则必须将其解释为 x 和 y 坐标,其中第一个 规范 为 x 坐标,第二个规范为 y 坐标。
如果此属性的值为 auto,则必须将样式属性的计算值
视为与根容器区域的原点相同。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的原点与受支持的原点之间的 欧氏距离最小的值。如果存在多个 与计算值距离相等的 最接近的受支持值,则使用距离 [0,0] 最近的值,即最接近坐标 空间原点的值。
以下示例说明 tts:origin 样式。
<region xml:id="r1">
<style tts:origin="40px 40px"/>
<style tts:extent="308px 92px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="center"/>
<style tts:textAlign="center"/>
</region>
...
<p region="r1">
"去赴宴!"她怒如恶龙般尖叫。<br/>
"去吞下满是泡沫的酒!<br/>
去对着桌布傻笑!"
</p>
|
|
当 tts:origin 特例指定在 div 或
p 上时,11.1.2.1 内联动画的特殊
语义适用。
tts:overflow 属性用于指定一个样式属性,
该属性定义当区域的后代区域溢出其范围时,是否裁剪
该区域。
| 值: |
"visible" |
"hidden"
|
| 初始值: | hidden |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | overflow 推导 |
如果此属性的值为 visible,则不应
裁剪受影响区域外的内容。
如果值为 hidden,则应
裁剪受影响区域外的内容。
注:
与区域内容矩形关联的内容所产生的标记可以渲染在该
内容矩形
之外,从而与区域的内边距矩形和边框矩形相交,
而不受
tts:overflow 属性的影响。只有当这些标记
延伸到区域范围之外时,
才可能发生区域溢出,该范围与区域的边框矩形重合,
边框矩形包含
区域的内边距矩形,内边距矩形又包含区域的内容矩形。
注:
除非内容作者使用手动换行元素 br,
否则给定区域中的一个段落在该区域内生成的行区域不会超过一个,
条件是该区域的 tts:overflow 和
tts:wrapOption
样式属性的计算值分别为 visible 和 noWrap
。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
hidden。
以下示例说明 tts:overflow 样式。
<?xml version="1.0"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xml:lang="en" tts:extent="320px 240px">
<head>
<styling>
<style xml:id="s1" tts:backgroundColor="black" tts:padding="6px"/>
<style xml:id="s2" tts:color="red" tts:backgroundColor="white"
tts:wrapOption="noWrap" tts:fontFamily="proportionalSansSerif"
tts:fontSize="10px"/>
</styling>
<layout>
<region xml:id="r1" style="s1" tts:extent="100px 40px" tts:origin="20px 20px"
tts:overflow="visible"/>
<region xml:id="r2" style="s1" tts:extent="100px 40px" tts:origin="20px 180px"
tts:overflow="hidden"/>
</layout>
</head>
<body>
<div>
<p region="r1" style="s2">
"不过等一会儿,"牡蛎们喊道,<br/>
"在我们开始聊天之前;
</p>
<p region="r2" style="s2">
因为我们有些已经气喘吁吁,<br/>
而且我们个个都很胖!"
</p>
</div>
</body>
</tt>
|
|
注:
在上述示例中,tts:noWrap 设置为
noWrap,以防止自动换行(断行);
如果未指定此值,则溢出会发生在块
推进方向,而不是行内推进方向。
tts:padding 属性用于指定内边距(或内缩)
空间,位于区域或流入区域的内容所生成的区域的一侧或多侧。
注:
内边距向区域内部占据空间,也就是说,区域的内容矩形会 因为 应用于该区域的内边距而缩小。
| 值: | <padding> |
| 初始值: | 0px |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | padding 推导 |
如果此属性的值由一个 <length> 规范组成, 则该长度应用于受影响区域的所有边。如果该值 由两个 <length> 规范组成,则第一个 应用于 前边和后边,第二个应用于起始边和结束边。 如果提供三个 <length> 规范,则 第一个应用于 前边,第二个应用于起始边和结束边,第三个应用 于后边。 如果提供四个 <length> 规范,则它们 分别应用于前边、结束边、 后边和起始边。
注:
百分比值相对于其所应用区域的尺寸。例如,
如果前边和后边对应
于区域的顶边和底边,如拉丁文本中
tts:writingMode 等于 "lrtb" 时的情况,
则应用于这两条边任一条的百分比值都相对于
区域的高度。反之,如果前边和后边
对应于区域的右边和左边,如日文文本中
tts:writingMode 等于
"tbrl" 时的情况,则应用于这两条边任一条的百分比值都
相对于区域的宽度。
用于表示内边距的 <length> 值必须 为非负值。
如果内边距应用于 span 元素,且
该元素的内容
被分到多个行区域中,则必须在每个换行
边界应用指定的内边距。相比之下,
在单个行区域内,如果该元素生成多个行内区域,则
必须将指定的内边距应用于
按包含块级元素的行内推进顺序,在该行区域内生成的
第一个和(或)最后一个行内区域。
注:
span 元素上的内边距行为
对应于使用
CSS box-decoration-break 属性,在换行处取值 clone,
在非末端的行内区域边界处取值 slice,
即非第一个且非最后一个行内区域的边界,具体定义见 [CSS Fragmentation] 第 5.4 节。
如果此属性的 <length> 分量中使用百分比值, 则按以下方式解析:
当应用于 region 元素时,
百分比相对于适用的
绝对维度,该维度取自区域解析后的
范围,除非该维度依赖于
区域内容的尺寸,在这种情况下,百分比解析为
适用初始值的对应分量;
当应用于所有其他元素时,百分比相对于对应的 绝对维度,该维度取自最近的祖先区域, 除非该维度依赖于 该区域内容的尺寸,在这种情况下,百分比解析为 适用初始值的对应分量。
注:
用于此属性的每个 <length> 分量都关联于 某条相对于书写模式的特定边,该边随后被解析为绝对维度, 具体取决于适用的书写模式。如果该绝对维度为水平(垂直)维度, 则根据参考区域的同一水平(垂直)绝对维度 解析百分比值(参考区域为根容器区域或最近的祖先区域)。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的内边距与受支持的内边距之间的 一维欧氏距离逐边最小的值。如果 存在多个与某条边的计算值距离相等的 最接近的受支持值,则使用距离 0 最近的值,即最小的 内边距。
以下示例说明 tts:padding 样式。
<region xml:id="r1">
<style tts:extent="446px 104px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:textAlign="center"/>
<style tts:padding="10px 40px"/>
</region>
...
<p region="r1" tts:backgroundColor="red">
正是斯纳克出没的地方!我已经说了两遍:<br/>
光是这话就该鼓舞船员。<br/>
正是斯纳克出没的地方!我已经说了三遍:<br/>
我告诉你三遍的话就是真的。
</p>
|
渲染应用了内边距的区域时,应用于该区域的背景颜色 会渲染到区域的内边距部分。
|
注:
上述示例描绘了内边距如何向区域内部占据空间。具体而言,
10px 的内边距应用于前边(顶部)和后边(底部),而
40px 的内边距应用于起始边(左侧)和结束边(右侧)。
将
这些内边距从区域范围中减去后,区域的内容矩形具有
366px 的宽度
和 84px 的高度。区域的黑色背景颜色出现在
区域的内边距矩形中,
而段落的红色背景颜色出现在区域的内容矩形中。
<region xml:id="r1">
<style tts:extent="446px 72px"/>
<style tts:displayAlign="center"/>
<style tts:textAlign="center"/>
<style tts:backgroundColor="green"/>
</region>
...
<p region="r1">
<span tts:backgroundColor="black" tts:color="white" tts:padding="0c 0.5c">
船员已到齐:其中有个擦靴工--<br/>
一个制作软帽和兜帽的工匠--
</span>
</p>
|
渲染应用了内边距的 span 时,内边距分别应用于每个生成的行区域 。
|
tts:position 属性用于提供另一种方式,指定区域
相对于定位矩形的位置。
如果 tts:position 和 tts:origin 属性都
指定在某个元素上,且 tts:position 是受支持的属性,
则必须在呈现处理时忽略 tts:origin 属性
。
| 值: | <position> |
| 初始值: | top left |
| 适用于: |
region;参见
特殊用法,适用于
div 和
p
|
| 继承: | 否 |
| 百分比: | 见正文 |
| 可动画化: | 离散;连续 |
| 语义依据: | position 推导 |
水平位置偏移的百分比值分量 相对于以下宽度差: 定位矩形的宽度减去关联区域的宽度。 垂直位置偏移的百分比值分量 相对于以下高度差: 定位矩形的高度减去关联区域的高度。
下图描绘位置值 "75% 50%",其中虚线矩形 表示定位矩形,而实线 矩形表示被定位的区域。在这种情况下,区域的定位方式 使其宽度 75% 处的垂直线与 定位矩形宽度 75% 处的垂直线重合,其高度 50% 处的水平线与 定位区域宽度 50% 处的垂直线重合。
|
如果指定在 region 元素上,则
定位矩形对应于根容器区域的内容矩形。
如果不支持与此属性关联的样式属性的某个计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语最接近的受支持值指使 计算出的位置与受支持的位置之间的 欧氏距离最小的值。如果存在多个 与计算值距离相等的 最接近的受支持值,则使用距离 [0,0] 最近的值,即最接近坐标 空间位置的值。
以下示例说明 tts:position 样式,其中将一个
区域定位为
在水平维度居中,并使其底边在垂直维度上位于定位矩形
底部上方偏移 10% 的位置,
其中此偏移量等于定位矩形的高度
与区域高度之差的 10%。
<tt tts:extent="640px 480px">
...
<region xml:id="r1">
<style tts:position="center bottom 10%"/>
<style tts:extent="308px 92px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="center"/>
<style tts:textAlign="center"/>
</region>
...
<p region="r1">
"去赴宴!"她怒如恶龙般尖叫。<br/>
"去吞下满是泡沫的酒!<br/>
去对着桌布傻笑!"
</p>
|
|
当 tts:position 特例指定在 div 或
p 上时,11.1.2.1 内联动画的特殊
语义适用。
tts:ruby 属性用于指定旁注
样式的应用。
| 值: |
"none" |
"container" |
"base" |
"baseContainer" |
"text" |
"textContainer" |
"delimiter"
|
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 无 |
| 语义依据: | ruby 推导 |
如果此属性的值为 none,则不应用旁注语义;否则,
以下列举的旁注语义适用,见
表 10-1 – 旁注语义映射。
如果不支持与此属性关联的样式属性的某个计算值,
则呈现处理器必须使用值
none。
| 类别 | tts:ruby | 注释 [Ruby] | CSS display [CSS Ruby] |
|---|---|---|---|
| 旁注容器 | container |
ruby |
ruby |
| 旁注基底内容 | base |
rb |
ruby-base |
| 旁注文本内容 | text |
rt |
ruby-text |
| 旁注基底容器 | baseContainer |
rbc |
ruby-base-container |
| 旁注文本容器 | textContainer |
rtc |
ruby-text-container |
| 旁注后备分隔符 | delimiter |
rp |
none | inline |
在呈现处理时,文档处理上下文确定 呈现模式:正常或后备。 对旁注文本注释执行正常呈现处理时,分隔符内容不得 生成任何行内区域。 执行旁注的后备呈现时,分隔符和非分隔符旁注(基底和 文本)内容都必须生成正常的行内区域。 如果呈现处理器不支持旁注呈现,则必须执行后备 旁注呈现。
使用 tts:ruby 时,以下嵌套约束适用于旁注容器,也就是说,
如果 tts:ruby 的计算值在某个 span 元素上为
container,
则:
其所有祖先元素的 tts:ruby 计算值均为
none;
其每个子元素的 tts:ruby 计算值均不为
none;
其第一个子元素的 tts:ruby 计算值为
baseContainer
或 base;
其每个文本节点子项都仅包含 <lwsp>,
呈现处理时必须忽略这些内容,无论
以下属性的计算值,
即 xml:space 属性的计算值,
是否为 preserve;
使用 tts:ruby 时,以下嵌套约束适用于旁注基底容器,也就是说,
如果 tts:ruby 的计算值在某个 span 元素上为
baseContainer,
则:
其父元素的 tts:ruby 计算值为
container;
其每个子元素的 tts:ruby 计算值均不为
none;
其第一个子元素的 tts:ruby 计算值为
base;
其前一个兄弟节点为 null(即没有前一个兄弟节点);
其每个文本节点子项都仅包含 <lwsp>,
呈现处理时必须忽略这些内容,无论
以下属性的计算值,
即 xml:space 属性的计算值,
是否为 preserve;
使用 tts:ruby 时,以下嵌套约束适用于旁注文本容器,也就是说,
如果 tts:ruby 的计算值在某个 span 元素上为
textContainer,
则:
其父元素的 tts:ruby 计算值为
container;
其每个子元素的 tts:ruby 计算值均不为
none;
其第一个子元素的 tts:ruby 计算值为
text 或 delimiter;
其前一个兄弟节点的 tts:ruby 计算值为
baseContainer 或
textContainer;
其兄弟节点中至多有一个的 tts:ruby 计算值为
textContainer;
其每个文本节点子项都仅包含 <lwsp>,
呈现处理时必须忽略这些内容,无论
以下属性的计算值,
即 xml:space 属性的计算值,
是否为 preserve;
使用 tts:ruby 时,以下嵌套约束适用于旁注基底内容,也就是说,
如果 tts:ruby 的计算值在某个 span 元素上为
base,则:
其父元素的 tts:ruby 计算值为
container 或
baseContainer;
其前一个兄弟节点为 null(即没有前一个兄弟节点),或者
其前一个兄弟节点的 tts:ruby 计算值为 base;
如果其父元素的 tts:ruby 计算值为
container,
则其任何兄弟节点的 tts:ruby 计算值均不为 base;
其任何后代元素的 tts:ruby 计算值都不能不是
none;
其后代元素中没有任何 br
元素;
其每个文本节点后代都不包含 U+2028 (行分隔符) 或 U+2029 (段落分隔符);
使用 tts:ruby 时,以下嵌套约束适用于旁注文本内容,也就是说,
如果 tts:ruby 的计算值在某个 span 元素上为
text,则:
其父元素的 tts:ruby 计算值为
container 或
textContainer;
其前一个兄弟节点为 null(即没有前一个兄弟节点),或者
其前一个兄弟节点的 tts:ruby 计算值为 base、
text 或 delimiter;
如果其父元素的 tts:ruby 计算值为
container,
则其任何兄弟节点的 tts:ruby 计算值均不为 text;
其任何后代元素的 tts:ruby 计算值都不能不是
none;
其后代元素中没有任何 br
元素;
其每个文本节点后代都不包含 U+2028 (行分隔符) 或 U+2029 (段落分隔符);
使用 tts:ruby 时,以下嵌套约束适用于旁注后备分隔符,也就是说,
如果 tts:ruby 的计算值在某个 span 元素上为
delimiter,
则:
其父元素的 tts:ruby 计算值为
container 或 textContainer;
其前一个兄弟节点为 null(即没有前一个兄弟节点),或者
其前一个兄弟节点的 tts:ruby 计算值为 base 或
text;
恰好有一个兄弟节点的 tts:ruby 计算值为
delimiter;
如果 tts:ruby 的计算值为 delimiter,则
其任何后代元素的 tts:ruby 计算值都不能不是
none;
其后代元素中没有任何 br
元素;
其每个文本节点后代都不包含 U+2028 (行分隔符) 或 U+2029 (段落分隔符)。
验证型内容处理器必须将
违反上述任何约束的情况视为错误。
在呈现处理时,违反任何这些约束都应
导致对旁注文本注释进行后备(行内)
呈现,并且,对于违反某项约束的内容,如果该
内容是
br 元素,或 U+2028 (行分隔符) 或
U+2029 (段落分隔符) 字符,
则应将其映射为 U+0020 (空格) 字符;如果是其他内容,则应忽略
(不呈现)。
注:
上面列出的约束旨在解释为规定以下 嵌套模型:
container
: base text
| base delimiter text delimiter
| baseContainer textContainer textContainer?
baseContainer
: base+
textContainer
: text+
| delimiter text+ delimiter
base | text | delimiter
: (#PCDATA | { span - tts:ruby })*
此模型对应于 ruby 元素的最大内容模型,其定义
见 [Ruby] 第 2.1 节,
例外在于,rtc 实际上被扩展为允许可选地使用
分隔符(rp):
ruby : rb rt | rb rp rt rp | rbc rtc rtc? rbc : rb+ rtc : rt+ | rp rt+ rp // 对 [Ruby] 的扩展
注:
虽然不支持像 [HTML] 所允许的那么多标记简化方式, 但此处定义的旁注表示形式确实允许以下简写:
base text =
baseContainer
base
textContainer
text
base delimiter text delimiter =
baseContainer
base
textContainer
delimiter text delimiter
给定 base 的内容为 B,
text 的内容为 T,则表达式 base text 可以
在 [HTML] 中以如下多种方式表示:
<ruby>B<rt>T</ruby> <ruby>B<rt>T</rt></ruby> <ruby><rb>B<rt>T</ruby> <ruby><rb>B</rb><rt>T</ruby> <ruby><rb>B</rb><rt>T</rt></ruby> <ruby>B<rtc><rt>T</ruby> <ruby>B<rtc><rt>T</rtc></ruby> <ruby>B<rtc><rt>T</rt></ruby> <ruby>B<rtc><rt>T</rt></rtc></ruby> <ruby><rb>B<rtc><rt>T</ruby> <ruby><rb>B<rtc><rt>T</rtc></ruby> <ruby><rb>B</rb><rtc><rt>T</ruby> <ruby><rb>B</rb><rtc><rt>T</rtc></ruby> <ruby><rb>B</rb><rtc><rt>T</rt></ruby> <ruby><rb>B</rb><rtc><rt>T</rt></rtc></ruby>
而在 TTML2 中,可以采用以下替代表达形式:
<span tts:ruby="container"> <span tts:ruby="base">B</span> <span tts:ruby="text">T</span> </span>
或其等价形式
<span tts:ruby="container">
<span tts:ruby="baseContainer">
<span tts:ruby="base">B</span>
</span>
<span tts:ruby="textContainer">
<span tts:ruby="text">T</span>
</span>
</span>
注:
TTML 的语法允许使用多个旁注基底 内容,位于一个旁注基底 容器内,并使用多个旁注文本 内容,位于 一个旁注文本容器内,且均处于同一个 旁注容器中。此版本的 TTML 未定义 旁注基底内容与 旁注文本内容之间的映射,当 旁注文本内容的数量不等于 旁注基底内容的数量时,二者位于 同一个旁注容器中。
使用 tts:ruby 指定简单旁注注释的方式由以下
示例说明。
<span tts:ruby="container" tts:rubyAlign="spaceAround"> <span tts:ruby="base">使用许可</span> <span tts:ruby="text">许可</span> </span> |
![]() |
使用 tts:ruby 指定双侧旁注注释的方式由
以下示例说明。
<span> <span tts:ruby="container" tts:rubyAlign="spaceAround"> <span tts:ruby="baseContainer"> <span tts:ruby="base">东南</span> </span> <span tts:ruby="textContainer" tts:rubyPosition="before"> <span tts:ruby="text">东南</span> </span> <span tts:ruby="textContainer" tts:rubyPosition="after"> <span tts:ruby="text">巽</span> </span> </span> <span>的方向</span> </span> |
![]() |
注:
旁注注释的字间定位模式,例如用于 注音符号的模式, 由于缺乏市场需求,此版本的 TTML 不予支持。
当注释使用拉丁字符时,也可以使用 tts:ruby 属性,
例如 [CLREQ] 所述的拼音,
以下示例对此作出说明。
<p> <span tts:ruby="container" tts:rubyAlign="center"> <span tts:ruby="base">周杰伦</span><span tts:ruby="text">Jay Chou</span> </span> |
![]() |
在没有实现特定要求的情况下,旁注文本内容与旁注基底内容之间的对齐约束若可能 导致行区域溢出,则应通过移动旁注文本内容,使其远离行区域的起始边或结束边 来解决。
注:
参见 [JLREQ] 第 3.3.8 节,长度超过基底字符的旁注的 调整, 以及 [CSS Ruby] 第 5 节,边缘效果,以了解更多 信息。
在没有实现特定要求的情况下,旁注文本内容应仅在以下条件下允许伸出旁注基底内容:其 基底文本属于以下任一字符类别,这些类别定义于 [JLREQ] 附录 A,字符类别:
hiragana
ideographic
punctuationMarks
注:
参见 [JLREQ] 第 3.3.8 节,长度超过基底字符的旁注的 调整,以了解 更多信息。
在执行呈现处理时, 孤立旁注 内容, 即旁注基底内容或旁注文本内容,分别在未指定旁注基底容器或旁注文本容器的情况下指定, 会按需以隐含存在匿名旁注基底容器和(或)匿名旁注文本容器的方式处理。 一个隐含旁注基底 容器和(或) 隐含旁注文本容器 是必需的,以便生成并应用 隐含或集合样式语义到一个行内块区域,该区域包含行内 区域,这些行内区域由 孤立旁注 内容生成。
显式指定的 span 元素,
如果其
tts:ruby 的计算值为 baseContainer,则
称为
显式旁注基底
容器;
同样,显式指定的 span
元素,如果其
tts:ruby 的计算值为 textContainer,则
称为
显式旁注文本
容器。
tts:rubyAlign 属性用于指定旁注文本在
旁注文本
容器注释所生成的行内区域中的位置。
| 值: |
"start" |
"center" |
"end" |
"spaceAround" |
"spaceBetween" |
"withBase"
|
| 初始值: | center |
| 适用于: |
span,仅当
tts:ruby 的计算值为 container 时
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | rubyAlign 推导 |
当此属性指定在一个
span 元素上,且该元素的
tts:ruby 计算值为
container 时,关联样式属性的旁注对齐语义
整体应用于该容器所包含的
旁注容器及旁注
内容生成的行内区域。
注:
将旁注对齐应用于整个旁注 容器,意味着应用于 该容器及其组成部分的旁注对齐方式是统一的(不变的)。
令 IR 和 IB 分别为以下内容生成的行内区域: (1) 旁注文本容器或 旁注文本注释,以及 (2) 关联的旁注 基底容器或旁注基底。另外,令 NR 和 NB 分别为这些行内区域的字形区域后代的 数量。
如果此属性的值为 start,则第一个字形区域后代的起始边
(该后代属于 IR)
与该行内区域的起始边对齐。
如果值为 center,则多余的空白
均匀分配到第一个和最后一个旁注注释字形区域的前面和后面。
如果此属性的值为 end,则第一个字形区域后代的结束边
(该后代属于 IR)
与该行内区域的结束边对齐。
如果值为 spaceBetween,则多余的空白
均匀分配到各个旁注注释字形区域之间。
如果值为 spaceAround,则多余的空白
均匀分配到每个旁注注释字形区域后代的前面和后面。
如果此属性的值为 withBase,那么,如果 NR 与
NB 相等,
则第 ith 个字形区域后代
(属于 IR)与第
ith 个
字形区域后代(属于 IB)居中对齐(水平或垂直);
否则(旁注和基底的字形区域数量不
相等),应用 center 的语义。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
center。
注:
本规范假定定时文本应用中的旁注注释较窄,
因为呈现空间和可用时间
通常受到限制。因此,此版本的 TTML 不允许作者控制
旁注注释比其基底文本
更宽时的间距分配方式。这可能会对位于行起始边或结束边的较宽旁注
注释造成问题。为
避免这些问题,建议作者为
tts:rubyAlign 使用适当的值,并且(或者)将包含较宽
旁注注释的事件拆分为多行,甚至多个事件。
以下示例说明了 tts:rubyAlign 样式。
<p> <span tts:ruby="container" tts:rubyAlign="start"> <span tts:ruby="base">自作自受</span><span tts:ruby="text">一二三</span> </span> <span tts:ruby="container" tts:rubyAlign="spaceAround"> <span tts:ruby="base">自作自受</span><span tts:ruby="text">一二三</span> </span> <br/> <span tts:ruby="container" tts:rubyAlign="end"> <span tts:ruby="base">自作自受</span><span tts:ruby="text">一二三</span> </span> <span tts:ruby="container" tts:rubyAlign="spaceBetween"> <span tts:ruby="base">自作自受</span><span tts:ruby="text">一二三</span> </span> </p> |
![]() |
tts:rubyPosition 属性用于指定旁注文本在
块推进维度上
相对于其关联旁注基底的位置。
| 值: |
<annotation-position>
|
| 初始值: | outside |
| 适用于: |
span,仅当
tts:ruby 的计算值为
textContainer 或 text 时
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | rubyPosition 推导 |
与此属性关联的样式属性决定 旁注文本 容器和旁注文本注释所生成的行内区域相对于其 关联的基底文本容器和基底文本的位置,其中应用 <annotation-position> 的方向语义。
当此属性指定在一个
span 元素上,且该元素的
tts:ruby 计算值为
textContainer 时,关联样式属性的旁注位置语义
整体应用于
显式旁注文本容器及
其所包含的旁注文本内容生成的行内区域。
当此属性指定在一个
span 元素上,且该元素的
tts:ruby 计算值为
text 时,关联样式属性的旁注位置语义
整体应用于其
隐含旁注文本容器及其自身的
旁注文本内容生成的行内区域。
不得在满足以下条件的
span 元素上指定此属性:该元素的
tts:ruby 计算值为
text,且该 span 元素的父元素是一个
span 元素,其
tts:ruby 计算值为 textContainer。
如果(在前述旁注文本内容上)指定了此属性,
则视为错误,
并且在呈现处理时必须忽略它。
旁注文本容器
或旁注文本注释的绝对位置,
根据放置受影响内容的区域的 tts:writingMode 样式属性的
计算值确定;
具体而言,应用表 10-2 – 按书写模式划分的旁注绝对位置
语义映射中列举的映射,其进一步定义
见 [CSS Ruby],§4.1。
如果两个旁注文本容器应用于同一个旁注基底容器,则在以下情况下视为错误: 与此属性关联的样式属性的使用值 会导致 两个旁注文本容器被放置在 旁注基底容器相对的同一侧, 在这种情况下,本规范 不定义此样式属性的呈现语义。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
before。
| tts:rubyPosition | lrtb |
rltb |
tbrl |
tblr |
|---|---|---|---|---|
before |
over |
over |
right |
left |
after |
under |
under |
left |
right |
注:
采用从左到右排列的竖排蒙古文时,可能希望
将旁注位置的初始值
设为 after,而不是 outside,后者在所有非末行上都会解析为
before。在
这种情况下,作者可以通过在文档的样式设置元素中包含
元素
<initial tts:rubyPosition="after"/>,重新定义此属性的默认初始值;该样式设置元素为
styling
元素。
以下示例说明了 tts:rubyPosition 样式,并
展示了
旁注位置的解析如何依赖于书写模式。请注意,该示例使用了
单字旁注,其定义见 [JLREQ]。
<region xml:id="left" tts:writingMode="tblr"/> <region xml:id="middle" tts:writingMode="lrtb"/> <region xml:id="right" tts:writingMode="tbrl"/> ... <p region="left"> <span tts:ruby="container" tts:rubyPosition="before"> <span tts:ruby="base">一</span> <span tts:ruby="text">一</span> </span> <span tts:ruby="container" tts:rubyPosition="before"> <span tts:ruby="base">二</span> <span tts:ruby="text">二</span> </span>三四<br/>五六 <span tts:ruby="container" tts:rubyPosition="after"> <span tts:ruby="base">七</span> <span tts:ruby="text">七</span> </span> <span tts:ruby="container" tts:rubyPosition="after"> <span tts:ruby="base">八</span> <span tts:ruby="text">八</span> </span> </p> <p region="middle"> <span tts:ruby="container" tts:rubyPosition="before"> <span tts:ruby="base">一</span> <span tts:ruby="text">一</span> </span> <span tts:ruby="container" tts:rubyPosition="before"> <span tts:ruby="base">二</span> <span tts:ruby="text">二</span> </span>三四<br/>五六 <span tts:ruby="container" tts:rubyPosition="after"> <span tts:ruby="base">七</span> <span tts:ruby="text">七</span> </span> <span tts:ruby="container" tts:rubyPosition="after"> <span tts:ruby="base">八</span> <span tts:ruby="text">八</span> </span> </p> <p region="right"> <span tts:ruby="container" tts:rubyPosition="before"> <span tts:ruby="base">一</span> <span tts:ruby="text">一</span> </span> <span tts:ruby="container" tts:rubyPosition="before"> <span tts:ruby="base">二</span> <span tts:ruby="text">二</span> </span>三四<br/>五六 <span tts:ruby="container" tts:rubyPosition="after"> <span tts:ruby="base">七</span> <span tts:ruby="text">七</span> </span> <span tts:ruby="container" tts:rubyPosition="after"> <span tts:ruby="base">八</span> <span tts:ruby="text">八</span> </span> </p> |
![]() |
注:
在上述示例中,为便于格式排版,在 span
元素内部及其周围引入了空白;
为生成所示的示例呈现,必须移除这些多余的
空白,以免
它们出现在渲染输出中。
tts:rubyReserve 属性用于指定应用于受影响的行
区域的额外空间,
以便在块推进维度上预留足够的空间,容纳
旁注文本容器生成的行内区域,这些行内区域被放置
在
行区域的边界之内。
注:
作者可以使用 tts:rubyReserve 属性,确保
块区域中各行区域的连续基线保持固定的
位置,而不受是否存在旁注文本注释的影响。
| 值: | <ruby-reserve> |
| 初始值: | none |
| 适用于: |
p
|
| 继承: | 是 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | 离散 |
| 语义依据: | rubyReserve 推导 |
如果此属性的值为 none,则不预留旁注空间;
否则,此属性的值指定一个
位置分量,后跟一个可选的长度分量。
如果位置分量为 before,则受影响的行区域的前
行距会增加,增加量由长度分量的
使用值确定,该长度分量如上所述。
如果位置分量为 after,则受影响的行区域的后
行距会增加,增加量由长度分量的
使用值确定,该长度分量如上所述。
如果位置分量为 both,则
before 和 after 两个位置的语义均应用
于每个受影响的行区域。
如果位置分量为 outside,那么,如果
当前块区域恰好包含一个行区域,则应用 both 位置
的语义;否则,before 位置的语义应用于当前块区域的第一个行
区域,
而 after 位置的语义应用于
当前块区域的所有其他行区域。
长度分量用于间接确定
受影响的行区域的前行距和后行距
的增加量。长度分量的计算值被视为表示以下样式属性的计算值:
与假设存在的旁注文本内容上的
tts:fontSize 属性关联的样式属性,
其中假定这些旁注文本内容
实际存在于一个 p 元素中。
如果未指定长度分量,则必须将其视为
等于与以下属性关联的样式属性的值:
tts:fontSize,该值将由
假设存在的
旁注文本容器或旁注文本内容继承,假定这些内容实际
存在
于一个 p 元素中;其中,
10.2.21.1 字体大小的特殊
语义适用于此继承值的计算。
如果在一个 p 元素上指定了
tts:rubyReserve,且该元素包含
旁注文本内容,则按照上述方式将预留的行距
应用于行区域,然后根据需要对这些行距进行
进一步调整,以容纳实际存在的旁注文本内容。
tts:rubyReserve |
不存在旁注 | 存在旁注 |
|---|---|---|
none |
![]() |
![]() |
before |
![]() |
![]() |
after |
![]() |
![]() |
both |
![]() |
![]() |
outside |
![]() |
![]() |
tts:shear 属性用于指定一个样式属性,该属性
决定是否以及如何对最外层的块区域应用切变变换,
该区域由受影响的元素生成。
| 值: | <percentage> |
| 初始值: | 0% |
| 适用于: |
p
|
| 继承: | 是 |
| 百分比: | 见正文 |
| 可动画化: | 离散 |
| 语义依据: | shear 推导 |
对于此属性适用的每个块区域,应用二维 切变变换; 对该块区域的变换方式由10.4.5.3 切变计算规定。
以下示例说明了 tts:shear 样式。
<region xml:id="right" tts:writingMode="tbrl" tts:displayAlign="center" .../> <region xml:id="left" tts:writingMode="tbrl" tts:displayAlign="center" .../> ... <div> <p region="right" tts:shear="0%"> 山的<br/> 最多<span tts:textCombine="all">1998</span>年 </p> <p region="left" tts:shear="16.67%"> 山的<br/> 最多<span tts:textCombine="all">1998</span>年 </p> </div> |
|
注:
在上述示例中,黄色线条是某个特定呈现
处理器创建的装饰,
用于辅助调试布局问题。这些线条不属于本规范
定义的规范性 TTML 呈现的一部分。
此处,这些装饰描绘了 (1) 外层块
区域的边界,
这些区域由 region 元素生成;以及
(2) 外层块区域的子级行区域的边界,
这些外层块区域由 p 元素生成。
此示例描绘了如何将切变(倾斜)变换应用于受影响的外层块区域,
这些区域由 p 元素生成;但是,
当要对外层块区域应用切变时,
可分配给该块区域的可用距离,
即其在切变变换之前的最大行内推进维度长度,
会减少 B*sin(θ),
其中 B 是外层块区域的块推进维度,θ 是
切变角度,以使该块区域能够容纳在该段落的直接
祖先块区域的内容矩形内。
tts:showBackground 属性用于指定
对何时应当呈现区域背景的
约束。
注:
区域的背景包括由 (1) 背景颜色和(或)(2) 背景图像产生的标记, 前提是它们中的任意一项适用于该区域。
| 值: |
"always" |
"whenActive"
|
| 初始值: | always |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | showBackground 推导 |
如果区域不处于时间活动状态,则不渲染其背景; 但是,如果它 处于时间活动状态,则
如果此属性的值为 whenActive,则仅在
有内容被选入该区域时
才渲染区域背景,且这些内容也必须处于时间活动状态;
否则,如果此属性的值为 always,则
无论是否有内容
被选入该区域,都渲染区域背景。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
always。
以下示例说明了 tts:showBackground 样式。
<region xml:id="r1"> <style tts:origin="0px 0px"/> <style tts:extent="265px 100px"/> <style tts:backgroundColor="black"/> <style tts:showBackground="always"/> <style tts:color="white"/> <style tts:displayAlign="before"/> <style tts:textAlign="start"/> </region> <region xml:id="r2"> <style tts:origin="205px 60px"/> <style tts:extent="290px 100px"/> <style tts:backgroundColor="red"/> <style tts:color="white"/> <style tts:displayAlign="before"/> <style tts:textAlign="end"/> <style tts:showBackground="whenActive"/> </region> |
tts:textAlign 属性用于指定一个样式属性,该属性
定义行内区域在包含它们的块区域中沿行内推进
方向的对齐方式。
| 值: |
"left" |
"center" |
"right" |
"start" |
"end" |
"justify"
|
| 初始值: | start |
| 适用于: |
p
|
| 继承: | 见正文 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | textAlign 推导 |
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
start。
以下示例说明了 tts:textAlign 样式。
<region xml:id="r1"> <style tts:extent="355px 43px"/> <style tts:origin="0px 0px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:textAlign="start"/> </region> <region xml:id="r2"> <style tts:extent="355px 43px"/> <style tts:origin="0px 47px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:textAlign="end"/> </region> ... <p region="r1"> 当心炸脖龙,我的孩子!<br/> 当心它咬人的巨颚、抓人的利爪! </p> <p region="r2"> 当心啾啾鸟,还要躲开<br/> 那狂怒的班德斯奈奇兽! </p> |
![]() |
注:
由 p 元素生成的最后一个块区域的最后一个行区域的文本对齐方式,
遵循 text-align-last 属性取值为
relative 时的语义,参见 [XSL-FO 1.1],§7.16.10。
当采用垂直书写模式时,tts:textCombine 属性用于
指定一个样式属性,
该属性适用于流入某个区域的内容所生成的字形区域,
并且
决定是否以及如何将多个字形区域
水平组合,使其
能够容纳在周围竖排文本中单行的块推进维度
范围内。
如果采用水平书写模式,则在呈现处理时
忽略此样式属性。
组合处理可以使用一种或多种技术,以实现将内容在视觉上 组合到周围竖排文本的一个 EM 方框内的目标。 例如,可以选择半角变体形式、选择连字、应用较小的 字体大小等。支持此样式属性的 实现至少必须能够在半角变体形式 可用时选择它们。如果这些技术都 无法达到包含行区域在块推进维度上的 目标尺寸,则可以在当前生效的行堆叠策略 允许的情况下,增大包含行区域在此维度上的尺寸。
| 值: | <text-combine> |
| 初始值: | none |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | textCombine 推导 |
如果此属性的指定值为 none,则不应用组合
处理。
如果此属性的指定值为 all,则应组合所有受影响的
字符。
在所有受影响的字符均按水平书写
模式处理之后,才应用组合。具体而言,如果使用了双向处理、连字、字形替换或
Unicode 组合字符的组合,则这些处理应先于
tts:textCombine 属性指定的组合过程应用。
组合不得跨越元素边界、双向边界或非字形区域边界。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
none。
注:
此版本的 TTML 未定义 tts:textCombine
属性
在旁注容器上下文中的任何语义。因此,
建议内容作者
不要期望符合规范的
呈现处理器具有任何特定行为,
当 tts:textCombine 属性用于旁注容器的上下文中时尤其如此。
以下示例说明了 tts:textCombine 样式。
<p region="tbrlLeft">あい <span tts:textCombine="none">AB34</span>三四 </p> <p region="tbrlRight">あい <span tts:textCombine="all">AB34</span>三四 </p> |
![]() |
注:
在上述示例中,最右侧区域展示了 all 值的使用,
其中
呈现处理器对受影响字符的半角变体字形
应用了缩放,从而使组合后的文本能够容纳在
与周围竖排文本大小相同的 EM 方框内。
tts:textDecoration 属性用于指定一个样式属性,该属性
定义要应用于字形区域的文本装饰效果,
这些区域由流入某个区域的内容生成。
| 值: | <text-decoration> |
| 初始值: | none |
| 适用于: |
span;另见注
|
| 继承: | 是,但请参见特殊 语义 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | textDecoration 推导 |
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
none。
注:
上文用于定义此样式属性值的语法基于
[CSS2] 中定义的值分量语法,
见 §1.4.2.1。实质上,
由 || 分隔的一个或多个值可以按任意顺序出现在样式属性
值中,例如 "noUnderline overline lineThrough"。
注:
指定值 "none" 等价于指定
"noUnderline noLineThrough noOverline"。
以下示例说明了 tts:textDecoration 样式。
<region xml:id="r1"> <style tts:extent="385px 82px"/> <style tts:origin="0px 0px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:padding="5px 2px"/> <style tts:textDecoration="underline"/> </region> ... <p region="r1"> 海水湿润<span tts:textDecoration="noUnderline"> 得 </span>无以 <span tts:textDecoration="noUnderline"> 复加,<br/> 沙子干燥得不能再干。<br/> <span tts:textDecoration="lineThrough">一片也没有</span> 你 <span tts:textDecoration="lineThrough">看不见</span> 看不到一片云<br/> 因为天空中本就没有云。 </span> </p> |
![]() |
与此属性关联的样式属性的计算值由一个三元组组成, 其中各项分别表示是否要对受影响的文本应用下划线、删除线或上划线 装饰。 此外,在应用继承语义时,这些项中的每一项都被视为 独立于其他项进行继承。
注:
例如,如果应用于某个
div(分区)元素的 tts:textDecoration 计算值
是元组 (noUnderline, lineThrough, overline),而一个
p(段落)元素作为该 div 的子元素,指定了
tts:textDecoration="noLineThrough",则
应用于该 p 元素的汇总计算值为
(noUnderline, noLineThrough, overline),该值
随后由 p 元素的子元素继承。
tts:textEmphasis 属性用于指定一个样式属性,该属性
定义要应用于字形区域的文本着重效果,
这些区域由流入某个区域的内容生成。
| 值: | <text-emphasis> |
| 初始值: | none |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续(仅颜色) |
| 语义依据: | textEmphasis 推导 |
如果未指定着重样式,
则必须将着重样式解释为指定了 auto 样式。
如果未指定着重颜色,
则必须将着重颜色解释为指定了 current
颜色。
如果未指定着重位置,
则必须将着重位置解释为指定了 outside
位置。
注:
采用从左到右排列的竖排蒙古文时,可能希望
将着重位置的初始值
设为 after,而不是 outside,后者在所有非末行上都会
解析为 before。在
这种情况下,作者可以通过在文档中包含
元素
<initial tts:textEmphasis="none transparent after"/>
来重新定义此属性的默认初始值,该元素应放在文档的
styling 元素内。
以下示例说明了 tts:textEmphasis 样式。
<p> <span tts:textEmphasis="filled circle before">团</span> <span tts:textEmphasis="filled dot before">子</span> <span tts:textEmphasis="filled sesame before">胜</span> <span tts:textEmphasis="open circle before">过</span> <span tts:textEmphasis="open dot before">花</span> <span tts:textEmphasis="open sesame before">朵</span> <br/> <span tts:textEmphasis="filled circle after">团</span> <span tts:textEmphasis="filled dot after">子</span> <span tts:textEmphasis="filled sesame after">胜</span> <span tts:textEmphasis="open circle after">过</span> <span tts:textEmphasis="open dot after">花</span> <span tts:textEmphasis="open sesame after">朵</span> </p> |
![]() |
tts:textOrientation 属性用于指定一个样式属性,该属性
定义要应用于字形区域的文本朝向,这些区域
由流入采用垂直书写模式的区域中的内容生成。
| 值: |
"mixed" |
"sideways" |
"upright"
|
| 初始值: | mixed |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | textOrientation 推导 |
此样式属性的呈现语义仅在采用垂直 书写模式时适用;因此,如果采用水平书写模式,此样式 属性不产生任何效果。
在下文中,与内容字符关联的字形区域
根据其在垂直书写模式下
是否旋转来描述,而是否旋转则依据每个内容字符的
Vertical_Orientation
确定,该值由 [UTR50] 规定。
如果此属性的值为 mixed,则旋转的字形区域设置为侧向,
不旋转的字形区域设置为直立,其中
侧向表示顺时针旋转 90°,
而直立表示不旋转。
注:
根据 [UTR50],字形区域的视觉旋转可以通过 替换为旋转的字形区域来实现,也可以通过执行仿射旋转 变换来实现,变换作用于 字形区域的轮廓(或栅格图像), 而采用哪种方式取决于呈现处理期间使用的 具体字体。
如果此属性的值为 sideways,则所有字形区域
均顺时针旋转 90°。
如果此属性的值为 upright,则所有字符均被视为
具有 U 垂直朝向,在这种情况下,
所有字形区域都不旋转。此时,
(可能发生的)旋转字形区域替换
和仿射旋转变换的应用
均被禁用,渲染出的字形区域
是未旋转的形式。
此外,在双向处理方面,此值会使所有
受影响的字符被视为强从左到右字符,即视为已应用
值为 ltr 的 tts:direction,以及值为
override 的 tts:unicodeBidi。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
mixed。
以下示例说明了 tts:textOrientation
样式。
<region xml:id="vertical" tts:writingMode="tblr"/> ... <p region="vertical"> <span tts:textOrientation="mixed">A</span> <span tts:textOrientation="upright">B</span> </p> |
|
tts:textOutline 属性用于指定一个样式属性,该属性
定义要应用于所选字形的文本描边效果,这些字形对应于字形区域,而这些区域
由流入某个区域的内容生成。
| 值: | <text-outline> |
| 初始值: | none |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | 离散;连续(仅颜色) |
| 语义依据: | textOutline 推导 |
此属性的值由一个可选的 <color> 项
后跟一个或两个 <length> 项组成。如果
颜色项
存在,则它表示描边颜色;如果没有颜色项,
则应用 tts:color 的计算值。第一个
长度项表示描边厚度,第二个长度
项(如果存在)表示模糊半径。
当为描边厚度或模糊半径指定相对的 <length> 值时, 应根据所引用的字体大小或计算单元格尺寸的高度分量 来解析该值,其中计算单元格尺寸的定义见相应条款。
用于表示厚度和模糊半径的 <length> 值必须为非负值。
如果未指定模糊半径,即仅存在一个 <length>
项,
则应用计算值 0px。
注:
当以单元格为单位表示的 <length>
用于 tts:textOutline 值时,
应用单元格的高度。
例如,如果文本描边厚度指定为 0.1c,单元格分辨率
为 20 × 10,且根容器
区域的范围为 640 × 480,则
描边厚度的标称值为 480 / 10 * 0.1 像素,即 4.8px,
这里不考虑栅格化效果。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
none。
以下示例说明了 tts:textOutline
样式。
<region xml:id="r1">
<style tts:backgroundColor="transparent"/>
<style tts:color="yellow"/>
<style tts:textOutline="black 2px 0px"/>
<style tts:fontFamily="proportionalSansSerif"/>
<style tts:fontSize="24px"/>
</region>
...
<p>
小鳄鱼是怎样<br/>
装点它闪亮的尾巴,<br/>
把尼罗河的水倾洒<br/>
在每片金色的鳞甲上!<br/>
看它笑得多么欢畅,<br/>
爪子伸展得多么漂亮,<br/>
欢迎小鱼儿游进来,<br/>
游进它温柔含笑的嘴巴!
</p>
|
![]() |
tts:textShadow 属性用于指定一个样式属性,该属性
定义要应用于所选字形的一个或多个文本阴影装饰,这些字形对应于字形区域,而这些区域
由流入某个区域的内容生成。
如果应用多个文本阴影,则按指定顺序绘制它们,绘制时间紧邻 所作用的 字形区域的绘制之前。
| 值: | <text-shadow> |
| 初始值: | none |
| 适用于: |
span;另见注
|
| 继承: | 是 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | 离散;连续(仅颜色) |
| 语义依据: | textShadow 推导 |
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
none。
<style xml:id="s1"
tts:backgroundColor="black"
tts:color="white"
tts:lineHeight="125%"
tts:textAlign="center"/>
...
<p style="s1">
<span tts:padding="1%">
我在那些昏暗的地方配着青菜把它端上桌
<span tts:textShadow="10% -20% 5% lime">在那阴影重重的景象中,</span><br/>
我还用它来打火照明:</span>
</p>
|
|
tts:unicodeBidi 属性用于指定一个样式属性,该属性
根据 Unicode 双向算法定义显式的方向嵌入、
覆盖或隔离。
| 值: |
"normal" |
"embed" |
"bidiOverride" |
"isolate"
|
| 初始值: |
normal
|
| 适用于: |
p,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | unicodeBidi 推导 |
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
normal。
以下示例说明了 tts:unicodeBidi 样式。
<region xml:id="r1">
<style tts:extent="265px 84px"/>
<style tts:padding="5px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:textAlign="center"/>
</region>
...
<p region="r1">
小鸟们正在吹奏<br/>
海岸边的风笛,<br/>
<span tts:unicodeBidi="bidiOverride" tts:direction="rtl">游客们在那里打着呼噜。</span>
</p>
|
|
tts:visibility 属性用于指定一个样式属性,该属性
定义生成的区域在视觉呈现
媒介上渲染时是否可见。
| 值: |
"visible" |
"hidden"
|
| 初始值: |
visible
|
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | visibility 推导 |
tts:visibility 样式不影响内容的布局或
合成,而仅决定合成后的内容是否可见。
如果与此属性关联的样式属性的计算值为 visible,
则此元素
生成的区域在视觉媒介上呈现时会被渲染为可见。如果计算值为
hidden,则它们不会被渲染为可见,
即它们被隐藏;尽管如此,如果某个隐藏元素的后代元素上
此样式属性的计算值
为 visible,则该后代元素仍会被渲染为可见。
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
visible。
以下示例说明了 tts:visibility 样式。
<region xml:id="r1"> <style tts:extent="398px 121px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style/> </region> ... <p region="r1" dur="4s"> <span tts:visibility="hidden"> <set begin="1s" tts:visibility="visible"/> 越来越奇怪 </span> <span tts:visibility="hidden"> <set begin="2s" tts:visibility="visible"/> 而且 </span> <span tts:visibility="hidden"> <set begin="3s" tts:visibility="visible"/> 越来越奇怪! </span> </p> |
|
|
|
|
tts:wrapOption 属性用于指定一个样式属性,该属性
定义在受影响元素的上下文中是否应用
自动换行(断行)。
| 值: |
"wrap" |
"noWrap"
|
| 初始值: | wrap |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | wrapOption 推导 |
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
wrap。
以下示例说明了 tts:wrapOption 样式。
<region xml:id="r1">
<style tts:extent="192px 117px"/>
<style tts:backgroundColor="black"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:overflow="hidden"/>
<style tts:wrapOption="noWrap"/>
</region>
...
<p>
我会把所知的一切都告诉你:<br/>
可讲的事情并不多。<br/>
我见到一位年迈又年迈的老人,<br/>
正坐在一扇门上。
</p>
|
![]() |
tts:writingMode 属性用于指定一个样式属性,该属性
定义在区域范围内堆叠块区域和行内区域时
使用的块推进方向和行内推进方向。
| 值: |
"lrtb" |
"rltb" |
"tbrl" |
"tblr" |
"lr" |
"rl" |
"tb"
|
| 初始值: | lrtb |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | writingMode 推导 |
如果不支持与此属性关联的样式属性的计算值,
则呈现处理器必须使用值
lrtb。
注:
行内推进方向为从左到右或从右到左的书写模式 被称 为水平书写模式,而行内推进 方向为 从上到下的书写模式被称为垂直书写模式。
以下示例说明了 tts:writingMode 样式。
<tt ... xml:lang="en"> ... <region xml:id="top" tts:origin="10% 10%" tts:extent="55% 10%" tts:writingMode="rltb"/> <region xml:id="right" tts:origin="70% 10%" tts:extent="10% 80%" tts:writingMode="tbrl"/> ... <p region="top"><span xml:lang="ar">国际化活动,</span> W3C</p> <p region="right">你好 <span xml:lang="ja">各位,<br/>大家好</span></p> ... </tt> |
![]() |
注:
在此示例中,文本内容的自然语言通过
多个 xml:lang 属性来标识。虽然
从技术上讲,演示 tts:writingMode 属性并不要求这样做,
但对于包含多种自然语言内容的标记,
建议使用显式的语言标识。
tts:zIndex 属性用于指定一个样式属性,该属性
定义区域发生重叠时从前到后的排列顺序。
| 值: |
"auto" |
<integer>
|
| 初始值: | auto |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散 |
| 语义依据: | zIndex 推导 |
如果两个区域关联到相同的 Z-index 值,那么,如果这些区域 在空间上重叠,词法顺序靠后的元素所生成的区域必须 渲染在词法顺序靠前的元素所生成的区域之上,其中词法 顺序定义为对文档 实例进行后序遍历的顺序。
值 auto 的语义由
[XSL-FO 1.1],§7.30.18 定义,其中 tt 元素
被视为建立根堆叠上下文。
如果不支持与此属性关联的样式属性的计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,最接近的受支持值是指使 计算得到的 z-index 与受支持的 z-index 之间的 欧几里得距离最小的值。如果存在多个最接近的 受支持值,且它们与 计算值的距离相等,则使用距离 0 最近的值,即最接近当前堆叠上下文的基准堆叠 层级的值。
以下示例说明了 tts:zIndex 样式。
<region xml:id="r1"> <style tts:origin="0px 0px"/> <style tts:extent="400px 100px"/> <style tts:padding="5px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:zIndex="0"/> </region> <region xml:id="r2"> <style tts:origin="100px 60px"/> <style tts:extent="400px 100px"/> <style tts:padding="5px"/> <style tts:backgroundColor="red"/> <style tts:color="white"/> <style tts:textAlign="end"/> <style tts:zIndex="1"/> </region> <region xml:id="r3"> <style tts:origin="0px 120px"/> <style tts:extent="400px 100px"/> <style tts:padding="5px"/> <style tts:backgroundColor="black"/> <style tts:color="white"/> <style tts:zIndex="2"/> </region> <region xml:id="r4"> <style tts:origin="100px 180px"/> <style tts:extent="400px 100px"/> <style tts:padding="5px"/> <style tts:backgroundColor="red"/> <style tts:color="white"/> <style tts:textAlign="end"/> <style tts:zIndex="3"/> </region> ... <p region="r1"> 我走过他的花园,用一只眼留意到,<br/> 猫头鹰和豹子正在分吃一块馅饼。 </p> <p region="r2"> 豹子拿走了饼皮、肉汁和肉,<br/> 猫头鹰则分到了盛馅饼的盘子。 </p> <p region="r3"> 馅饼吃完以后,猫头鹰得到了一份恩赐,<br/> 获准把勺子收进口袋: </p> <p region="r4"> 豹子则接过了刀叉<br/> 并发出一声低吼,<br/> 然后以……结束了宴席 </p> |
|
tta:gain 属性用于指定一个音频样式属性,该属性
确定要应用于相应音频内容的增益乘数,应用时间为
指定此属性的元素的活动持续时间。
| 值: |
<number>
|
| 初始值: | 1 |
| 适用于: |
audio,
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续 |
如果此属性的指定值不在区间 [-1,1] 内,
则将与此属性关联的样式属性的计算值钳制到此
有界区间内。
如果与此属性关联的样式属性的计算值为负值,则将增益 设置为 计算值的绝对值,并应用相位反转。
如果增益为 0,则活动的音频内容完全静音。如果增益为 1,则
活动
音频内容的振幅不变。否则,增益大于 0 且小于 1,在这种情况下,
对合成后的活动音频内容
应用相对衰减,该衰减在
区间 [0,1] 上呈线性。
以下示例说明了 tta:gain 样式。
<div> <audio src="#track1" tta:gain="0.5"/> <p tta:gain="0.3"> <audio src="#track2" tta:gain="0.8"/> </p> </div> |
注:
在此示例中,两个音频源 track1 和 track2 处于活动状态。
div 元素提供一条活动音轨,将其作为输出传给其子元素
p,
而此子元素 p 合成第二条活动音轨,以形成传给其
子元素的输出。
此外,每个源音频以及以下元素的输出均指定了不同的增益:
p,
因而最终输出为 0.3[0.5(track1) + 0.8(track2)]。
注:
此属性所表示的样式属性的语义基于
[WEBAUDIO],§2.7 中的定义,其中指定此样式属性的
元素
在音频图中生成一个 GainNode,其 gain
属性具有相同的计算值,而其输入对于
非音频生成元素的内容元素而言(即不是音频生成元素),
是此元素的父元素的音频输出与所有子级音频生成元素的合成
(线性求和)音频
输出之和;否则,即对于音频生成
元素,输入
是该元素生成的音频。
tta:pan 属性用于指定一个音频样式属性,该属性
确定要应用于相应音频内容的立体声声像向量,
应用时间为
指定此属性的元素的活动持续时间。
| 值: |
<number>
|
| 初始值: | 0 |
| 适用于: |
audio,
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | 不适用 |
| 可动画化: | 离散;连续 |
如果此属性的指定值不在区间 [-1,1] 内,
则将与此属性关联的样式属性的计算值钳制到此
有界区间内。
如果与此属性关联的样式属性的计算值为负值,则声像
方向位于中心左侧。
如果声像值为 0,则活动音频内容的立体声方向性
不变;否则,声像值为正值,
在这种情况下,声像方向位于中心右侧,其中值 -1
表示完全偏左,而值
1 表示完全偏右。
以下示例说明了 tta:pan 样式。
<div> <audio src="#track1" tta:pan="0.5"/> <p tta:pan="0.3"> <audio src="#track2" tta:pan="0.8"/> </p> </div> |
注:
在此示例中,两个音频源 track1 和 track2 处于活动状态。
div 元素提供一条活动音轨,将其作为输出传给其子元素
p,
而此子元素 p 合成第二条活动音轨,以形成传给其
子元素的输出。
此外,每个源音频以及以下元素的输出均指定了不同的声像:
p,
因而最终输出声像为 0.3[0.5(track1) + 0.8(track2)]。
注:
此属性所表示的样式属性的语义基于
[WEBAUDIO],§2.21 中的定义,其中指定此样式属性的
元素
在音频图中生成一个 StereoPannerNode,其
pan
属性具有相同的计算值,而其输入对于
非音频生成元素的内容元素而言(即不是音频生成元素),
是此元素的父元素的音频输出与所有子级音频生成元素的合成
(线性求和)音频
输出之和;否则,即对于音频生成
元素,输入
是该元素生成的音频。
tta:pitch 属性用于指定一个音频样式属性,该属性
在受影响的内容启用语音合成时决定语音音高
| 值: |
<pitch>
|
| 初始值: | 0% |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | 相对于输入音频的音高 |
| 可动画化: | 无 |
以下示例说明了 tta:pitch 样式。
<p>将相对音高调整应用于<span tta:pitch="+10hz">这个</span>词。</p>
|
注:
此属性所表示的样式属性的语义派生自
[SSML 1.0] §3.2.4 中的定义,其效果相当于将一个
prosody
元素应用于要朗读的字符内容,且该元素的 pitch 属性等于此计算值,
从而影响朗读的
字符内容。
tta:speak 属性用于指定一种音频样式属性,该属性
决定是否为受影响的内容启用语音合成,以及在启用时
应用何种语速。
| 取值: |
"none" |
"normal" |
"fast" |
"slow"
|
| 初始值: | none |
| 适用于: |
span
|
| 是否继承: | 是 |
| 百分比: | 不适用 |
| 可动画化: | 无 |
如果此属性的值为 none,则对
受影响的内容禁用语音合成。否则,
如果此属性的值为 normal、fast 或 slow,
则分别以
正常、快速或慢速语速启用语音合成。
以下示例演示了 tta:speak 样式。
<p>朗读 <span tta:speak="normal">这个</span> 词。</p>
|
注:
此属性所表示的样式属性的语义源自
[SSML 1.0] §3.2.4 中的定义,其中等效的
prosody
元素具有等于计算值的 rate 属性,并应用于
朗读的
字符内容。
如果 tta:speak 的计算值在某个 span
元素或
匿名 span S 上不为 none,则
如果 S 具有子 audio
元素
A
且 A 未引用任何源音频
资源,无论是通过
引用数据嵌入还是 源数据嵌入,
则隐含对语音数据
资源的引用,采用
引用数据嵌入;
如果 S 的所有子元素均不是 audio 元素,且
S 的所有祖先均不是音频
生成元素,其引用的
音频资源源为语音数据资源,
则隐含一个子 audio
元素,该元素引用
语音数据资源,采用引用数据嵌入
方式。
以下示例展示了上述两种情况中的第一种。
<span tta:speak="normal">
<audio/>
朗读文本
</span>
|
以下示例演示了上述情况中的第二种。
<span tta:speak="normal">
朗读文本
</span>
|
以下片段展示了将上述 特殊语义分别应用于前两个示例后得到的等效结果, 其中,为便于说明,根据需要引入了额外的空白以辅助 格式编排。
<span tta:speak="normal">
<audio src="http://www.w3.org/ns/ttml/resource/#speech"/>
朗读文本
</span>
|
样式属性值包括以下表达式的使用:
<alpha> 表达式用于表示不透明度值, 其中 0 表示完全透明,1 表示完全不透明。
<alpha> : float |
在上述语法表示中,语法元素
float 必须遵循词法
表示,其定义见 [XML Schema Part 2] §3.2.4.1。
如果所表示的值小于 0.0,
则必须将其解释为等于 0.0;类似地,如果所
表示的值大于 1.0,则必须将其解释为
1.0。值 NaN 必须解释为 0.0。
<alpha> 的指定值不应为 NaN、
小于 0 或大于 1。
如果呈现处理器不支持某个 特定的、 有效的不透明度值,则必须将其解释为等于 最接近的受支持值。
注:
在此上下文中,短语最接近的受支持值是指使 欧几里得距离最小的值,该距离介于 计算的不透明度与受支持的不透明度之间。如果有多个最接近的 受支持值与 计算值等距,则使用距 0 最远的值,即不透明度最大的值。
<annotation-color> 表达式用于表示文本 注释标记(例如注音或着重标记)的颜色。
<annotation-color> : "current" | <color> |
如果实现无法识别或以其他方式区分注释颜色值,则
必须将其解释为如同指定了 current 样式;因此,
实现如果
支持文本注释标记,就必须至少支持 current 值。
<annotation-position> 表达式用于表示文本 注释标记(例如注音或着重标记)的位置。
<annotation-position> : "before" | "after" | "outside" |
before朝向受影响的字形区域的前边缘。如果
应用水平书写模式,则朝向
字形区域的顶部。如果应用垂直书写模式,
则朝向右侧或左侧,具体取决于
字形区域
所应用的 tts:writingMode 分别解析为
tbrl 还是 tblr。
after朝向受影响的字形区域的后边缘。如果
应用水平书写模式,则朝向
字形区域的底部。如果应用垂直书写模式,
则朝向左侧或右侧,具体取决于
字形区域所应用的 tts:writingMode 分别解析为
tbrl 还是 tblr。
outside对于最后一个块区域的 (1) 唯一行区域或 (2) 第一行
区域,等效于 before,该块区域由
包含带注释文本的 p 元素
生成;否则,等效于 after。
如果实现无法识别或以其他方式区分某个注释位置值,
则
必须将其解释为如同指定了 before 位置;因此,
实现如果
支持文本注释标记,就必须至少支持 before 值。
<border> 表达式用于表示一个或多个边框样式分量表达式。
<border> : <border-thickness> || <border-style> || <border-color> || <border-radii> |
必须至少存在一个边框样式分量,例如,
一个 <border-style>
分量,其值为 none。请注意,分量的顺序无关紧要。
<border-color> 表达式用于表示一个 或多个边框的颜色。
<border-color> : <color> |
<border-radii> 表达式用于表示一个 或多个边框的半径。
如果指定了两个 <length> 表达式,则第一个 长度 对应于行内推进维度(对于内容)或 水平方向(对于区域)的四分之一椭圆半径,而第二个长度(如果存在)对应于 块推进维度(对于内容)或垂直方向 (对于区域)的四分之一椭圆半径;如果仅存在一个长度,则将其解释为 指定了两个值相同的长度。
<border-style> 表达式用于表示一个 或多个边框的样式。
<border-style> : "none" | "dotted" | "dashed" | "solid" | "double" |
dotted、dashed 和 double 的解释
被视为
依赖于实现。
如果实现无法识别或以其他方式区分这些边框样式
值之一,则
必须将其解释为如同指定了 solid 样式;因此,
实现如果
支持边框,就必须至少支持 solid 值。
<border-thickness> 表达式用于表示一个 或多个边框的厚度。
<border-thickness> : "thin" | "medium" | "thick" | <length> |
thin、medium 和 thick 的解释
被视为
依赖于实现;但是,解析得到的长度必须遵守以下
约束:thickness(thin) < thickness(medium); thickness(medium) < thickness(thick)。
如果边框厚度表示为 <length>, 则不得采用百分比值的形式;即,必须采用标量 值的形式。
<color> 表达式用于指定命名颜色、精确的 RGB 颜色三元组 或精确的 RGBA 颜色元组,其中 alpha 分量如果 被表示出来, 则在 100% 不透明度时为最大值 (255), 在 0% 不透明度时为最小值 (0),并且适用的色彩空间 由 [SRGB] 定义。
<color>
: "#" rrggbb
| "#" rrggbbaa
| "rgb(" r-value "," g-value "," b-value ")"
| "rgba(" r-value "," g-value "," b-value "," a-value ")"
| <named-color>
rrggbb
: <hex-digit>{6}
rrggbbaa
: <hex-digit>{8}
r-value | g-value | b-value | a-value
: <lwsp>? component-value <lwsp>?
component-value
: <non-negative-integer> // 有效范围:[0,255]
|
表示 RGB 分量值时,这些值被视为 未预乘 alpha。
为了在呈现处理中应用 非完全不透明或非完全透明的 alpha 或不透明度值, 合成函数的语义基于 合成函数的输入和输出均使用 [SRGB] 色彩空间来定义。
注:
在上述合成语义中使用 [SRGB] 并不意味着阻止实际处理器出于 内部或外部目的使用其他色彩空间。例如, 呈现处理器最终可以 将此处使用的 SRGB 值 转换到 YUV 色彩空间,以便在电视设备上呈现。
如果呈现处理器不支持某个 特定的、 有效的颜色或 alpha 值,则必须将其解释为等于 最接近的受支持值。
注:
在此上下文中,短语最接近的受支持值是指使
欧几里得距离最小的值,该距离介于
RGB 色彩空间中计算的颜色和 alpha 与受支持的颜色和 alpha 之间。
如果有多个最接近的受支持值与
计算值等距,则使用距不透明黑色
rgba(0,0,0,255) 最近的值,即最接近不透明黑色的值。
<digit> 用于表示整数以及其他类型的数字或词元。
<digit> : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
<emphasis-color> 表达式用于表示文本 着重标记的颜色。
<emphasis-color> : <annotation-color> |
<emphasis-position> 表达式用于表示文本 着重标记的位置。
<emphasis-position> : <annotation-position> |
<emphasis-style> 表达式用于表示文本 着重标记的样式。
<emphasis-style> : "none" | "auto" | ( "filled" | "open" ) || ( "circle" | "dot" | "sesame" ) | <quoted-string> |
文本着重样式值的语义定义如下:
none无文本着重标记。
auto如果应用垂直书写模式,则等效于 filled sesame;
否则,
等效于 filled circle。
filled着重标记使用着重颜色填充。
open着重标记不填充,即使用着重颜色描画其轮廓,但 不填充内部。
circle着重标记为圆形。如果为实心,则等效于 U+25CF '●';如果为空心,则 等效于 U+25CB '○'
dot着重标记为圆点。如果为实心,则等效于 U+2022 '•';如果为空心,则 等效于 U+25E6 '◦'
sesame着重标记为芝麻点。如果为实心,则等效于 U+FE45 '﹅';如果为空心,则 等效于 U+FE46 '﹆'
着重标记为字符串的第一个字素簇,忽略字符串的其余部分。
如果仅指定 filled 或 open,则分别等效于
filled circle 和 open circle。
如果仅指定 circle、dot 或 sesame,则
分别等效于 filled circle、filled dot 和
filled sesame。
如果实现无法识别或以其他方式区分某个着重样式值,则
必须将其解释为如同指定了 auto 样式;因此,
实现如果
支持文本着重标记,就必须至少支持 auto 值。
<family-name> 表达式指定字体族名称。
<family-name>
: unquoted-string
| <quoted-string>
unquoted-string
: identifier (<lwsp> identifier)*
identifier
: [-]? identifier-start identifier-following*
identifier-start
: [_a-zA-Z]
| non-ascii-or-c1
| escape
identifier-following
: [_a-zA-Z0-9-]
| non-ascii-or-c1
| escape
non-ascii-or-c1
: [^\0-\237]
escape
: '\\'
|
除了遵循上面指定的语法规则之外,还适用以下语义规则:
<family-name> 表达式的语义值是其
unquoted-string 或 quoted-string
非终结符的语义值,具体取决于适用哪一个;
unquoted-string 非终结符的语义值是一个二元组
<quoted, content>,
其中 quoted 为布尔值 false,且
content 为依次追加每个
identifier
非终结符的值所得的结果,追加按词法顺序进行,每个标识符的值之前
都有一个 SPACE (U+0020) 字符,除非它是第一个
标识符;
quoted-string 非终结符的语义值是一个二元组
<quoted, content>,
其中 quoted 为布尔值 true,且
content 为带引号字符串去除引号后的内容,即
界定引号之间的字符序列。
escape 非终结符的语义值是被转义的
char 的值;
如果 <family-name> 采用 unquoted-string 形式,且
包含一个 identifier,该标识符
以两个 - HYPHEN-MINUS (U+002D) 字符开头,则必须将其视为
无效;
如果 <family-name> 采用 unquoted-string 形式,且
仅包含一个 identifier,该标识符
与某个 <generic-family-name> 匹配(通过区分大小写的比较),则必须将其解释
为该 <generic-family-name>;
如果 <family-name> 采用 quoted-string 形式,且其内容
(去除引号后的值)
与某个 <generic-family-name> 匹配(通过区分大小写的比较),则不得将其
解释为该 <generic-family-name>,而必须解释为
非通用字体族的实际名称。
语法元素 char 应依据
[XML 1.0] §2.2 定义的 Char 产生式来解释。
注:
[CSS2] §4.1.1 定义的 {unicode} 转义机制
不受此语法支持;相反,作者应 (1) 直接编码
该字符,
使用文档编码,或 (2) 依据
[XML 1.0] §4.1 使用 XML 字符引用。当需要使用具有语法意义的字符
且
不按其通常的语法解释时,可以使用上面指定的反斜杠
escape 非终结符对其进行转义。
使用反斜杠 escape 非终结符时,上述语法
并
不限制可以转义的字符,例如,
\\[\n\r\f0-9a-f] 都
是允许的。如果这些转义之一出现在 <family-name> 表达式中,
则
在使用标准 XSL-FO
或 CSS 解析器处理时,需要将其转换为 {unicode} 转义。
特别是,CSS 会忽略后跟换行符的反斜杠,但上述语法
并不
忽略它。要在 CSS 中表示这种未被忽略的转义换行符,
需要
使用等效的 {unicode} 转义来表示,例如 \a,
以符合 CSS 的表示方式。
<font-families> 表达式指定字体族的非空列表。
<font-families> : font-family (<lwsp>? "," <lwsp>? font-family)* font-family : <family-name> | <generic-family-name> |
<font-variant> 表达式指定一个或多个关键字,用于影响字符 到字形的映射过程,具体而言,影响是否选择以及选择哪种类型的变体字形, 这种选择 在执行呈现处理时进行(如果适用字体中提供了该字形)。
<font-variant>
: "normal"
| ("super" | "sub") || ("full" | "half") || "ruby"
|
如果应用值 normal,则除非有更高层协议适用,
否则不选择下标、上标、全角、半角或注音
字形变体。
如果应用关键字 super,则选择上标字形变体(如果
可用)。
例如,使用 OpenType 字体渲染时,启用 OpenType sups 特性。
如果应用关键字 sub,
则选择下标字形变体(如果可用)。
例如,使用 OpenType 字体渲染时,启用 OpenType subs 特性,
以使用此类变体。
如果应用关键字 full,则选择全角字形变体(如果
可用)。
例如,使用 OpenType 字体渲染时,启用 OpenType fwid 特性。
如果应用关键字 half,
则选择半角字形变体(如果可用)。
例如,使用 OpenType 字体渲染时,启用 OpenType hwid 特性,
以使用此类变体。
如果应用关键字 ruby,则选择注音字形变体(如果可用)。
例如,使用 OpenType 字体渲染时,OpenType ruby 特性会被
启用。
注:
有关 OpenType 字体的定义,请参阅 [OFF]。
如果多个变体适用,则选择满足最多适用
变体要求的字形。例如,
如果同时指定 super 和 half 变体,则选择
同时被指定为上标和
半角变体的字形(如果可用)。如果只能满足所请求变体的子集,
且存在多个
可能的子集会导致所选变体字形有所不同,则
应用哪个子集被视为依赖于实现,
即,由文档
处理上下文决定。
<generic-family-name> 表达式使用通用 词元指定字体族,该词元表示一类字体族。
无论是在内容创作还是内容解释中,将通用字体族名称解析为具体字体实例 均被视为依赖于实现。
<generic-family-name> : "default" | "monospace" | "sansSerif" | "serif" | "monospaceSansSerif" | "monospaceSerif" | "proportionalSansSerif" | "proportionalSerif" |
通用(字体)族名称与实际字体之间的映射 不由本规范确定;但是, 在执行呈现时,应尽可能保留等宽与比例宽度、 衬线与无衬线之间的区别。
如果指定的通用(字体)族名称为 monospace,
则可以将其解释为等效于 monospaceSansSerif
或 monospaceSerif。通用字体族名称 sansSerif
和 serif 应分别解释为等效于 proportionalSansSerif
和 proportionalSerif。
如果指定通用字体族名称 default(或由
初始值隐含),则其排印特征被视为依赖于实现;
但是,建议将此默认字体族映射为
等宽无衬线字体。
<hex-digit> 用于表示采用十六进制运算的 整数以及其他类型的数字或词元。
解析时,不得区分大小写。
<hex-digit> : <digit> | "a" | "b" | "c" | "d" | "e" | "f" | "A" | "B" | "C" | "D" | "E" | "F" |
<integer> 表达式用于表示任意有符号整数值。
<integer> : sign? <non-negative-integer> sign : "+" | "-" |
注:
词法表示 "-0"、"0" 和 "+0" 的值, 无论是否存在额外的前导或尾随数字 "0",均被视为 等于整数值零 (0)。
<length> 表达式用于表示点的坐标分量,该点位于 笛卡尔空间中,或表示笛卡尔空间中两点之间的距离。
<length> : scalar | <percentage> scalar : <number> units units : "px" | "em" | "c" // "cell" 的缩写 | "rw" | "rh" |
省略标量长度值的单位分量是 错误的。
单位 px(像素)对应于逻辑
像素,它属于
文档坐标空间,
其定义见H.3 坐标
空间;但是,
px(像素)单位不应在 <length> 表达式中使用,
除非 tts:extent 属性包含
两个使用 px(像素)单位的 <length>
指定值,
并在 tt 元素上指定,
如果没有该属性,则不推荐
使用 px(像素)单位
当相对于字号表示为单个长度
或两个相等长度的字体指定时,单位 em 被视为
与 [XSL-FO 1.1] §5.9.13 定义的相同;
但是,当相对于字号表示为
两个不相等长度的字体指定时,一个 em
在用于指定行内推进方向上的长度时,等于经过非等比
缩放的字体的行内推进维度,
而在用于指定块推进方向上的长度时,等于缩放后
字体的块推进维度。
除非另有指定,em 单位相对于
与 tts:fontSize 属性关联的属性的计算值解析,该属性
应用于其上下文中正在解析 em 单位的元素。
单位 c(单元格)的语义
由参数 7.2.1
ttp:cellResolution 定义。
相对于根容器
的
单位 rw 和 rh 分别定义为
根
容器区域的宽度和高度的百分之一 (1%)。
例如,长度 25rw 被解释为宽度的 25%,该宽度属于
根容器区域。
<measure> 值将距离表示为 绝对维度或 相对维度,其使用上下文决定 适用哪个维度。
如果应用两个绝对维度之一,即高度或宽度, 则关联的相对维度,即 bpd 或 ipd,依据 适用的 书写模式和文本 朝向确定,从而 由关联的相对维度按照下文所述控制指定值的解释。
否则,应用两个相对维度之一,即 bpd 或 ipd,在这种情况下,该相对 维度控制 下文定义的指定值的解释。
<measure> : "auto" | "fitContent" | "maxContent" | "minContent" | <length> |
这些值的语义定义如下:
auto对于 ipd,
应用于图像时,为其在行内推进方向上的固有尺寸;
否则,
为指定值为 100% 时将得到的数值。
对于 bpd,
应用于图像时,为其在块推进方向上的固有尺寸;
否则,
为指定值为 100% 时将得到的数值。
fitContent一个数值,等于以下两者中的最大值:(1) minContent 的值和 (2)
maxContent
与 auto 的值中的最小值。
maxContent对于 ipd,为包围元素全部内容的最大数值, 使得仅在 硬断行点(即强制断行点)处断行,即使这意味着溢出父元素的 ipd。
对于 bpd,为包围元素全部内容的最大数值, 使得在 所有可能的断行位置处断行,即包括硬(强制)和软(可选)断行 点。
minContent对于 ipd,为包围元素全部内容的最小数值, 使得在 所有可能的断行位置处断行,即包括硬(强制)和软(可选)断行 点。
对于 bpd,为包围元素全部内容的最小数值, 使得仅在 硬断行点(即强制断行点)处断行,即使这意味着溢出父元素的 ipd。
<length>以标量或百分比表示的非负数值。
<named-color> 用于通过便于使用的名称表示 RGBA 颜色,其中 适用的色彩空间 由 [SRGB] 定义。
解析时,不得区分大小写。
<named-color> : "transparent" // #00000000 | "black" // #000000ff | "silver" // #c0c0c0ff | "gray" // #808080ff | "white" // #ffffffff | "maroon" // #800000ff | "red" // #ff0000ff | "purple" // #800080ff | "fuchsia" // #ff00ffff | "magenta" // #ff00ffff (= fuchsia) | "green" // #008000ff | "lime" // #00ff00ff | "olive" // #808000ff | "yellow" // #ffff00ff | "navy" // #000080ff | "blue" // #0000ffff | "teal" // #008080ff | "aqua" // #00ffffff | "cyan" // #00ffffff (= aqua) |
注:
除 transparent 外,上面指定的命名颜色集合构成一个
真
子集,其母集为 [SVG 1.1] §4.2 指定的命名颜色集合。
<non-negative-integer> 表达式用于表示任意非负整数 值。
<non-negative-integer> : <digit>+ |
<non-negative-number> 表达式用于表示任意非负整数或 实数值。
<non-negative-number> : <non-negative-integer> | non-negative-real non-negative-real : <digit>* "." <digit>+ | <digit>+ "." |
<number> 表达式用于表示任意可选带符号的整数或实数 值。
<number> : sign? <non-negative-number> sign : "+" | "-" |
注:
以下词法表示的值: "-0", "-0.", "-.0", "-0.0", "0", "0.", ".0", "0.0", "+0", "+0.", "+.0", 和 "+0.0", 无论是否存在额外的前导或尾随数字 "0", 均被视为等于数值零 (0)。
<percentage> 表达式用于表示任意有符号整数或实数值的 百分比。
<percentage> : <number> "%" |
<pitch> 值表示要应用于 合成语音的绝对或相对音高频率调整。
<pitch> : <percentage> | <number> pitch-units? pitch-units : "hz" | "st" |
如果指定为 <percentage>,则输出音高
(频率)为
input pitch (frequency) * (1.0 + (percentage/100))。
如果指定为 <number>,并且
指定了 sign,则输出音高是输入音高根据
符号为正(负)
而进行正向(负向)调整后的结果;但是,如果未指定符号,则将输入音高
设置为指定值,即,
不相对于输入音高。如果存在 units 分量,
则它指定赫兹 (hz)
或半音 (st),即标准自然音阶上的半音程。
如果未指定 units 分量,则隐含使用
赫兹。
<position> 表达式用于间接确定区域或图像 相对于参考区域的原点。
<position> : offset-position-h // 单分量值 | edge-keyword-v // 单分量值 | offset-position-h <lwsp> offset-position-v // 双分量值 | position-keyword-v <lwsp> position-keyword-h // 双分量值 | position-keyword-h <lwsp> edge-offset-v // 三分量值 | position-keyword-v <lwsp> edge-offset-h // 三分量值 | edge-offset-h <lwsp> position-keyword-v // 三分量值 | edge-offset-v <lwsp> position-keyword-h // 三分量值 | edge-offset-h <lwsp> edge-offset-v // 四分量值 | edge-offset-v <lwsp> edge-offset-h // 四分量值 offset-position-h : position-keyword-h | <length> offset-position-v : position-keyword-v | <length> edge-offset-h : edge-keyword-h <lwsp> <length> edge-offset-v : edge-keyword-v <lwsp> <length> position-keyword-h : "center" | edge-keyword-h position-keyword-v : "center" | edge-keyword-v edge-keyword-h : "left" | "right" edge-keyword-v : "top" | "bottom" |
<position> 表达式可以由一至四个分量 值组成,如下所述,其正式定义见上述语法:
水平偏移位置或垂直边缘关键字
水平位置偏移后跟垂直位置偏移,或 垂直位置关键字后跟水平位置关键字
水平边缘偏移和垂直位置关键字,或水平位置关键字 和垂直边缘偏移,顺序任意
水平边缘偏移和垂直边缘偏移,顺序任意
每个 <position> 表达式都可以转换为四分量的等效形式
left <length> top <length>,
转换依据以下
等效表:
| 值 | 等效形式 |
|---|---|
center |
center center |
left |
left center |
right |
right center |
top |
center top |
bottom |
center bottom |
<length> |
<length> center |
| 值 | 等效形式 |
|---|---|
bottom center |
left 50% top 100% |
bottom left |
left 0% top 100% |
bottom right |
left 100% top 100% |
center center |
left 50% top 50% |
center top |
left 50% top 0% |
center bottom |
left 50% top 100% |
center left |
left 0% top 50% |
center right |
left 100% top 50% |
center <length> |
left 50% top <length> |
left center |
left 0% top 50% |
left top |
left 0% top 0% |
left bottom |
left 0% top 100% |
left <length> |
left 0% top <length> |
right center |
left 100% top 50% |
right top |
left 100% top 0% |
right bottom |
left 100% top 100% |
right <length> |
left 100% top <length> |
top center |
left 50% top 0% |
top left |
left 0% top 0% |
top right |
left 100% top 0% |
<length> center |
left <length> top 50% |
<length> top |
left <length> top 0% |
<length> bottom |
left <length> top 100% |
<length-1> <length-2>
|
left <length-1> top <length-2>
|
| 值 | 等效形式 |
|---|---|
bottom left <length> |
left <length> top 100% |
bottom right <length> |
right <length> top 100% |
bottom <length> center |
left 50% bottom <length> |
bottom <length> left |
left 0% bottom <length> |
bottom <length> right |
left 100% bottom <length> |
center bottom <length> |
left 50% bottom <length> |
center left <length> |
left <length> top 50% |
center right <length> |
right <length> top 50% |
center top <length> |
left 50% top <length> |
left bottom <length> |
left 0% bottom <length> |
left top <length> |
left 0% top <length> |
left <length> bottom |
left <length> top 100% |
left <length> center |
left <length> top 50% |
left <length> top |
left <length> top 0% |
right bottom <length> |
left 100% bottom <length> |
right top <length> |
left 100% top <length> |
right <length> bottom |
right <length> top 100% |
right <length> center |
right <length> top 50% |
right <length> top |
right <length> top 0% |
top left <length> |
left <length> top 0% |
top right <length> |
right <length> top 0% |
top <length> center |
left 50% top <length> |
top <length> left |
left 100% top <length> |
top <length> right |
left 100% top <length> |
| 值 | 等效形式 |
|---|---|
bottom <length-v> left <length-h>
|
left <length-h> top (100% - <length-v>)
|
bottom <length-v> right <length-h>
|
left (100% - <length-h>) top (100% - <length-v>)
|
left <length-h> bottom <length-v>
|
left <length-h> top (100% - <length-v>)
|
right <length-h> bottom <length-v>
|
left (100% - <length-h>) top (100% - <length-v>)
|
right <length-h> top <length-v>
|
left (100% - <length-h>) top <length-v>
|
top <length-v> left <length-h>
|
left <length-h> top <length-v>
|
top <length-v> right <length-h>
|
left (100% - <length-h>) top <length-v>
|
如果 <length> 分量 表示为百分比,则该百分比相对于 某个参考尺寸解释,其中参考尺寸由使用上下文定义。
<length> 分量作为
<position> 表达式的一部分,可以为正或为负。正长度被解释为
从所引用边缘向内的偏移,而负长度被解释为从
所引用边缘向外的偏移。例如,从 left
边缘向内偏移的位置位于该边缘右侧(如果非零),而从
left 边缘向外偏移的位置位于该边缘左侧(如果非零)。
相比之下,从 right 边缘向内偏移的位置位于该边缘左侧(如果
非零),而从 right 边缘向外偏移的位置
位于该边缘右侧(如果非零)。类似的关系也适用于
top 和 bottom 边缘。
执行四分量等效转换时,
表达式 (100% - <length-h>)
应解释为 100% 与 <length-h>
表达式的等效百分比之间的差。类似地,表达式
(100% - <length-v>)
应解释为 100% 与 <length-v> 表达式的等效百分比之间的差。
在这两种情况下,得到的差都可能是负百分比。
<ruby-reserve> 表达式用于预留空间,以放置注音文本内容。
<ruby-reserve>
: "none"
| ("both" | <annotation-position>) (<lwsp> <length>)?
|
<shadow> 值表示要应用于生成区域的阴影装饰。如果 生成的区域是字形区域,则应用于 字形的轮廓 (而非字形区域的包围盒)。如果生成的区域不是 字形区域, 则应用于该区域的边框矩形。
阴影值表达式由 两至三个 <length> 项和 一个可选的 <color> 项组成, 各项之间以线性空白 (LWSP) 分隔。
第一个 <length> 项表示偏移量, 方向为关联区域的水平轴维度, 其中正值表示朝向右边缘,负值表示朝向左边缘, 第二个 <length> 项表示偏移量, 方向为关联区域的垂直轴维度, 其中正值表示朝向下边缘,负值表示朝向上边缘。 第三个 <length> 项(如果存在)表示模糊 半径,并且必须为非负值。
如果未指定模糊半径,即仅存在两个 <length>
项,
则应用计算值 0px。
如果不存在 <color> 项,
则应用 tts:color 属性的计算值。
<text-combine> 表达式用于确定文本组合效果 在垂直文本中的行为。
<text-combine> : "none" | "all" |
<text-decoration> 表达式用于确定文本装饰 效果的行为。
<text-decoration>
: "none"
| (("underline" | "noUnderline") || ("lineThrough" | "noLineThrough") || ("overline" | "noOverline"))
|
<text-emphasis> 表达式用于确定文本着重效果的行为。
<text-emphasis> : <emphasis-style> || <emphasis-color> || <emphasis-position> |
本节通过标准处理模型定义样式解析的语义, 具体如下:
允许采用此模型的任何实现,前提是 外部可观察到的结果与 此模型产生的结果一致。
注:
此处采用的样式解析语义基于 [XSL-FO 1.1] §5。
样式关联是10.4.4 样式解析处理的子过程,用于确定 每个内容元素和 布局元素的指定样式集合。
样式内容可以通过多种方式与内容 和布局内容关联:
除上述方式外,样式内容还可以通过以下方式与布局内容关联:
样式属性可以以内联方式表示,即直接 在受影响的元素上指定样式属性。 以这种方式表示时, 样式信息的关联称为内联样式。
通过内联样式关联的样式属性具有高于所有其他 样式关联形式的优先级。
<p tts:color="white">白色 1 <span tts:color="yellow">黄色</span> 白色 2</p> |
注:
在上例中,两个文本节点
"白色 1 " 和
" 白色 2" 被解释为匿名 span,它们没有
关联颜色样式属性;相反,它们继承颜色样式,
来源为其父 p 元素,如下文10.4.2.1
内容样式
继承所述。
样式属性可以在元素之外表示,并由
受影响的元素使用 style 属性引用。以这种方式表示时,
样式信息的关联称为引用式样式。
如果 style 属性指定了多个引用,则这些引用
按指定顺序求值,当某个样式属性沿多条引用路径指定时,
该顺序适用于其值的解析。
引用式样式的使用仅限于
引用 styling 元素的 style
后代元素。以下情况被视为错误:
引用的 style
元素是 layout 元素的后代,在这种情况下,
本规范不定义其呈现语义。
注:
引用式样式的使用促进了样式指定的复用,但 牺牲了引用的局部性。
注:
内容元素可以与样式 属性关联,通过混合使用 内联样式和引用式样式,在这种情况下,内联样式具有优先权, 如上文 10.4.1.1 内联样式所述。
<style xml:id="s1" tts:color="white"/> <style xml:id="s2" tts:color="yellow"/> ... <p style="s1">白色 1 <span style="s2">黄色</span> 白色 2</p> |
注:
在上例中,两个文本节点
"白色 1 " 和
" 白色 2" 被解释为匿名 span,它们没有
关联颜色样式属性;相反,它们继承颜色样式,
来源为其父 p 元素,如下文10.4.2.1
内容样式
继承所述。
样式属性可以在元素之外表示,并且自身可以引用 其他在元素之外表示的样式属性,从而创建一条始于 受影响元素的引用链。以这种方式表示时,样式信息的关联 称为链式引用样式。
链式样式引用序列中的循环必须被视为错误。
引用式样式的使用仅限于
引用 styling 元素的 style
后代元素。以下情况被视为错误:
引用的 style
元素是 layout 元素的后代,在这种情况下,
本规范不定义其呈现语义。
注:
链式引用样式的使用促进了将样式指定分组为 通用集合和特定集合,从而进一步有助于样式指定的复用。
注:
内容元素可以与样式 属性关联,通过混合使用 内联样式、引用式样式和链式引用样式,在这种情况下,内联 样式 具有优先权,如上文10.4.1.1 内联样式所述。
<style xml:id="s1" tts:color="white" tts:fontFamily="monospaceSerif"/> <style xml:id="s2" style="s1" tts:color="yellow"/> ... <p style="s1">白色等宽文本</p> <p style="s2">黄色等宽文本</p> |
注:
在上例中,第二段的文本为黄色,因为
tts:color="yellow"
实际上覆盖了(合并时覆盖)tts:color="white",后者由样式
s2 通过引用样式
s1 获得。
样式继承是10.4.4 样式解析处理的子过程,用于确定 每个内容元素和 布局元素的指定样式集合。
样式通过以下方式进一步传播到内容:
为了确定继承的样式,必须使用元素层级结构, 该结构属于文档 实例的中间同步文档形式,其中 此类中间形式由11.3.1.3 中间同步文档构建定义。
注:
使用中间同步文档形式而非 原始形式,是为了便于进行区域继承 处理。
样式属性从祖先内容 元素继承, 继承发生于中间同步文档中, 条件是样式属性未与内容 元素(或 匿名 span)关联,且该样式属性被指定 为 可继承。
如果确定某个样式属性需要继承,则继承值必须 为同名样式属性在计算 样式集合中的值,该集合属于 此元素最近的、定义了该属性的祖先元素, 且该祖先位于适用的中间同步文档中。
<p tts:fontFamily="monospaceSansSerif">
<span tts:color="yellow">黄色等宽文本</span>
</p>
|
注:
在上例中,包围字符项的 span 元素所包含的文本为
黄色等宽文本,它未指定 tts:fontFamily 样式
属性,而该属性可继承;因此,
tts:fontFamily 样式的值
从祖先元素的计算样式
集合中继承,该祖先为 p 元素,
并被添加到
指定
样式
集合中,该集合属于 span 元素。
在样式解析、布局和呈现处理期间, 样式属性值的三种类别 区分 如下:
当使用相对值表达式指定样式属性时, 例如命名颜色、相对单位(如单元格)或百分比, 需要将其进一步解析为绝对单位,例如 RGB 三元组、 像素等。
在样式解析过程中,指定样式值可以 按绝对形式重新解释(或重新计算),然后记录为 计算值。 给定元素的所有计算样式属性构成的集合 称为该元素的计算样式集合, 属于该元素。
当样式值被显式或隐式继承时, 从祖先元素继承的是该样式的计算 值。这是必需的,因为某些相对单位的解析, 例如百分比,要求在直接 (局部)引用上下文中对表达式求值,而不是在遥远(远程)的引用 上下文中求值,后者无法提供相关的(用于解析的)表达式。
样式继承之后,计算值可能需要在布局或 呈现时进一步解析, 条件是特定属性的语义要求进行此类解析,或者 执行解析所需的信息直到布局或 呈现处理发生时才可用。此类值称为 使用值, 它不必与最终的实际 值相同, 后者如下文所述。
注:
使用值的确定总是 发生在 计算值的继承之后;也就是说,使用值 的计算通常在10.4.4.4 样式解析 过程完成后进行。
注:
另请参阅 [CSS2] §6.1.3。
在实际呈现过程中,会发生其他转换, 将某些值表达式映射为具体的物理值。例如, 计算样式值中的颜色在显示过程中进一步接受最接近颜色 近似和伽马校正, 以完成显示。此外, 计算样式值中使用像素的长度值表达式被视为表示逻辑像素,而不是 物理(设备)像素。因此,这些逻辑 像素会在 呈现期间进一步转换或映射为物理(设备)像素, 用于呈现。
从逻辑到设备的映射 过程产生的最终值称为实际值。 给定元素的所有 实际样式属性构成的集合称为 该元素的实际样式集合。
注:
在呈现过程中,可能产生 多组实际值。例如,TTML 呈现处理器 设备可以输出 RGBA 分量视频信号,然后 由 NTSC 或 PAL 电视进一步转换,以产生最终 图像。在这种情况下,颜色和尺寸都可能在 呈现之前进一步修改。
注:
一般而言,TTML 呈现处理器 无法访问 实际样式集合的值;因此,下文正式描述样式 解析过程时, 不再使用或引用实际值。
样式解析过程在此定义为一种过程 (及其结果),用于解析(确定)计算值, 涉及适用于内容元素和布局元素的所有样式属性:
此处描述的过程是以下过程不可分割的子过程: 11.3.1 区域布局与呈现。
为了解释下文指定的样式解析处理 模型,适用以下概念定义:
样式属性 P 被视为由一个
元组 [name, value] 组成,其中
属性的名称是一个元组 [namespace value,
unqualified name],而属性的值是一个
元组 [category, type, value expression],其中 P 表示
与
显式指定或采用默认值的样式属性关联的内部化(实例化)状态。
[ ["http://www.w3.org/ns/ttml#styling", "color"], ["specified", color, "red"] ] |
样式(属性)集合由一组无序的样式 属性组成,集合中任意两个样式属性都没有 相同的名称,其中“相同的名称”是指 名称元组的命名空间值和名称元组的非限定名称均相等。
在指定样式(属性)集合中,每个样式 属性的类别均为 "specified";某个 元素 E 的指定样式(属性)集合记为 SSS(E)。
{
[
["http://www.w3.org/ns/ttml#styling", "backgroundColor"],
["specified", color, 0x00FF00 ]
],
[
["http://www.w3.org/ns/ttml#styling", "color"],
["specified", color, "red" ]
],
[
["http://www.w3.org/ns/ttml#styling", "fontSize"],
["specified", length, "1c" ]
],
[
["http://www.w3.org/ns/ttml#styling", "lineHeight"],
["specified", length, "117%" ]
]
}
|
在计算样式(属性)集合中,每个样式 属性的类别为 "specified" 或 "computed";某个 元素的计算样式(属性)集合, 若该元素为 E,则记为 CSS(E)。
{
[
["http://www.w3.org/ns/ttml#styling", "backgroundColor"],
["specified", color, 0x00FF00 ]
],
[
["http://www.w3.org/ns/ttml#styling", "color"],
["computed", color, 0xFF0000 ]
],
[
["http://www.w3.org/ns/ttml#styling", "fontSize"],
["computed", length, "24px" ]
],
[
["http://www.w3.org/ns/ttml#styling", "lineHeight"],
["computed", length, "28px" ]
]
}
|
样式属性 Pnew 合并到 样式(属性)集合 SS 的方式如下:如果某个样式属性 Pold 已存在于 SS 中, 且 Pnew 的名称与 Pold 的名称相同 ,则将 SS 中的 Pold 替换为 Pnew ;否则,将 Pnew 添加到 SS。
样式(属性)集合 SSnew 合并到 现有样式(属性)集合 SSold 的方式 如下:对于每个样式属性 Pnew,若其位于 SSnew 中 ,则将 Pnew 合并到 SSold 。
指定样式集合 SSS 属于元素或 匿名 span E, 即 SSS(E),按以下有序 规则确定:
[初始化] 将 E 的指定样式集合 SSS 初始化为 空集;
[引用式和链式引用
样式] 对于每个 style 元素 SREF,
若其由指定于
E 上的 style 属性引用,则按 style
属性中指定的顺序,在 SREF 是
styling 元素的后代时,
将指定样式集合,其所属元素为
SREF ,即 SSS(SREF),合并到
E 的指定样式集合
SSS(E) 中;
[嵌套样式]
如果 E 未被按条件
排除,则
对于每个嵌套的按条件包含的
style 子元素 SNEST,其父元素为
E,按指定的子元素顺序,将
SNEST 的指定样式集合 ,
SSS(SNEST),合并到指定样式集合,其所属元素为
E,即 SSS(E);
[内联样式] 如果 E 未被按条件 排除,则 对于每个样式属性 P,若其内部化 (实例化) 自一个指定的样式属性,该属性属于 E, 则将 P 合并到指定样式 集合,其所属元素为 E,即 SSS(E);
[动画样式] 如果 E 的元素类型不是内联 动画元素, 则对于每个按条件包含的 内联动画子元素 A,其父元素为 元素 E, 将指定样式集合中的可动画化样式,该集合属于 A, 即 SSS(A),合并到 E 的指定样式集合 SSS(E) 中;
[隐式继承和初始值回退] 如果
E 的元素类型不在 Animation.class 元素
组中,
且不是样式元素类型 style,
则对于每个样式属性 P,
若其内部化(实例化)自一个
样式属性,则执行以下
有序子步骤:
如果 P 已存在于指定 样式集合中,该集合属于 E,即 SSS(E),则继续处理 下一个样式属性;
如果 P 可继承且 E
不是 region 元素,
则执行以下操作:
将 P′ 设置为以下查找的结果: 在计算样式集合中查找 P 的值,该集合属于 E 的最近祖先元素, 即 NEAREST-ANCESTOR(E),并满足 CSS(NEAREST-ANCESTOR(E)) 包含 P 的定义;
如果 (1) P 可继承且 E 是 region 元素,
或 (2) P 不可继承且 P 适用于
E,则执行以下操作:
将 P′ 设置为 属性 P 的初始值,其中属性的初始值 按以下方式确定:
如果某个 initial
元素定义了 P 的初始值,则使用
该值;
否则,使用属性定义所指定的初始值, 该定义属于 P;
如果 P′ 的值不是未定义,则将 P′ 合并到 E 的指定样式集合 SSS(E) 中。
计算样式集合 CSS 属于元素或 匿名 span E, 即 CSS(E),按以下有序 规则确定:
[解析指定样式] 确定(获取)指定样式集合 SSS,其所属元素为 E,即 SSS(E),依据为 10.4.4.2 指定样式集合 处理;
[初始化] 将 CSS(E) 初始化为以下集合的(深)副本: SSS(E);
[过滤] 如果
E 是 animate、set 或 style
元素,则返回
CSS(E) 作为得到的计算样式集合,不进行
进一步解析;否则,继续执行下一条规则;
[相对值解析] 对于每个 样式属性 P,若其位于 CSS(E) 中,且 P 的值类型为相对类型,则执行以下有序 子步骤:
如果可能,将 P 的相对值替换为 等效的非相对(计算)值;
将 P 的类别设置为 "computed"。
注:
由于上述过滤规则,
animate、set 或 style 元素的计算样式集合仅包含
指定值,在这种情况下,
相对值表达式仍保持相对形式;因此,
相对值表达式的解析(这些表达式可能通过
引用式样式关联赋值)总是在
布局元素或内容元素的上下文中进行,该元素具有
呈现
上下文,而不是在非呈现的声明上下文中进行,
后者属于 animate、set 或可引用的 style 元素。
顶层样式解析过程定义如下:使用 前序遍历,遍历每个元素和匿名 span, 即 E,它们位于中间同步文档 DOCinter 中 ,执行以下有序 子步骤:
本节定义本规范其他位置引用的各种样式相关 过程。
如果目标矩形 TR 的单位
或参考矩形 RR 的单位未表示为
逻辑像素(即,
px 单位),则按需将单位转换为
逻辑像素。
如果目标矩形 TR 的宽度 Wt 为零, 则将 Wt 设置为一; 类似地,如果目标矩形 TR 的高度 Ht 为零,则将 Ht 设置为一。
令 SARr 为参考 矩形 RR 的存储宽高比。
令 SARt 为目标 矩形 TR 的存储宽高比。
按以下方式确定缩放因子 SF:
如果 SARr 小于或等于 SARt ,则 SF 为 Wr / Wt ,其中 Wr 和 Wt 分别为参考矩形和目标矩形的宽度。
否则,SARr 大于 SARt ,则 SF 为 Hr / Ht ,其中 Hr 和 Ht 为参考矩形和目标矩形的高度, 两者分别对应。
如果 SF 不等于 1.0,则 将 Wt 设置为 SF * Wt 并将 Ht 设置为 SF * Ht , 即,就地缩放目标矩形 TR,所用缩放因子为 SF。
注:
为实现上述算法,存储宽高比和缩放 因子 应采用至少提供 7 位十进制有效数字的形式表示。
如果目标矩形 TR 的单位
或参考矩形 RR 的单位未表示为
逻辑像素(即,
px 单位),则按需将单位转换为
逻辑像素。
如果目标矩形 TR 的宽度 Wt 为零, 则将 Wt 设置为一; 类似地,如果目标矩形 TR 的高度 Ht 为零,则将 Ht 设置为一。
令 SFW 为 WR /WT ,其中 WR 和 WT 分别为 参考矩形 RR 和目标矩形 TR 的宽度。
令 SFH 为 HR /HT ,其中 HR 和 HT 分别为 参考矩形 RR 和目标矩形 TR 的高度。
如果 SFW 和 SFH 均大于 一,令 SF 为 SFW 和 SFH 中较小的值; 否则,令 SF 为 SFW 和 SFH 中较大的值。
如果 SF 不等于 1.0,则 将 Wt 设置为 SF * Wt 并将 Ht 设置为 SF * Ht , 即,就地缩放目标矩形 TR,所用缩放因子为 SF。
注:
为实现上述算法,缩放因子 应采用至少提供 7 位十进制有效数字的形式表示。
错切值通过线性函数映射为错切角,使错切角
等于错切(百分比)值乘以 90 度。
如果错切值为 0%,则不应用错切变换;如果该值
为 100%,则应用二维错切变换,
角度为 90 度,沿与行内推进方向关联的轴进行;如果
该值为 -100%,则应用错切变换,
角度为 -90 度。如果指定百分比的绝对值大于
100%,则必须将其解释为如同指定了带有
相应符号的 100%。
如果行内推进方向对应于 X 轴,则二维错切 变换由以下矩阵描述:
| 1 a 0 | | 0 1 0 | | 0 0 1 |
其中 a 等于错切角的正切。
如果行内推进方向对应于 Y 轴,则二维错切 变换由以下矩阵描述:
| 1 0 0 | | a 1 0 | | 0 0 1 |
本节规定核心 词汇目录中的布局内容,其中 布局应理解为一个可分离的信息层,它应用于 内容,并表示作者对于 该内容呈现方式的意图。
注:
布局内容和样式内容这两个层被视为可以独立 分离。布局内容指定一个或多个空间或区域, 内容将在其中呈现,而样式内容指定 在该布局内进行呈现的方式。
在某些情况下,内容作者可以选择将样式内容直接嵌入(内联) 到布局内容或正文内容中。在这些情况下,还存在另一种 方式 – 使用引用式样式 – 其中样式 内容并未嵌入(内联)。
以下元素规定结构和主要布局方面,适用于 文档实例:
layout 元素是用于分组的容器元素,
其分组对象为外置布局内容,包括应用于布局内容的元数据。
layout 元素接受零个或多个
属于 Metadata.class 元素
组的元素作为子元素,后跟
零个或多个 region 元素。
<layout xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: Metadata.class*, region* </layout> |
在时间语义适用于
layout 元素内容的范围内,此元素的隐含时间区间
被定义为与根时间
范围具有相同的起止边界。
region 元素用于定义矩形空间或区域,内容
将
流入其中以进行呈现。
region 元素可以作为 (1)
layout 元素的子元素,或 (2)
Block.class 元素组中元素的子元素出现。
在前一种情况下,该区域称为外置区域,而在后一种
情况下,称为内联区域。
此外,根据
10.4.2.2 区域样式继承,
region 元素可以用于指定可继承的样式属性,
由流入其中的内容继承。
region 元素接受零个或多个
属于 Metadata.class 元素
组的元素作为子元素,
后跟零个或多个
属于 Animation.class
元素组的元素,
再后跟
零个或多个 style 元素。
由 Metadata.class
元素组中的子元素指定的任何元数据,在语义上将 region 元素及其后代作为
整体应用。
由 Animation.class
元素组中的子元素指定的任何动画元素,在语义上应用于 region 元素。
任何 style 子元素都必须被视为局部样式
定义,仅应用于包含它的 region
元素,即,不用于解析引用式样式(但用于区域
样式继承)。
<region animate = IDREFS begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> style = IDREFS timeContainer = ("par" | "seq") ttm:role = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意样式属性} 内容: Metadata.class*, Animation.class*, style* </region> |
外置 region 元素可以指定
一个或多个时序属性:
begin、end、dur。内联
region 元素不得
指定时序属性,如果指定了此类属性,则在进行
呈现处理时必须忽略。
如果在外置
region 元素上指定了 begin 和(或)end 属性,则它们指定
时间区间的起点和(或)终点,在此区间内,该区域可被激活,
且该区域的动画子元素相对于此区间计时。
如果指定了这些起点和终点,则它们相对于最近的
与时间区间关联的祖先元素的时间
区间,无论该区间是显式的还是隐含的。
外置 region 元素最近的、与时间区间
关联的祖先元素是 layout 元素。
如果在外置 region 元素上指定了 dur 属性,则
该属性
指定区域的简单持续时间。
内联 region
元素的活动时间区间是
其父内容元素的活动时间区间。
为了确定呈现处理的语义, 时间上不活动的区域在视觉媒介上 呈现时不得产生任何可见标记。
注:
外置 region 元素可以
与时间区间关联,其目的有
两个:(1) 在时间上限定区域及其内容的呈现,
以及 (2) 提供时间上下文,以便在其中实现区域
样式的动画。
例如,作者可能希望指定一个外置 region 元素,该元素
本身为空,但
可能具有可见的背景色,从某个时刻开始呈现,
并持续整个区域持续时间。区域的简单持续时间还用于
限定以该区域为目标的内容的
呈现效果。作者还可能希望在根容器区域内移动某个区域,
或通过动画效果改变区域的背景色。在
这两种情况下,都有必要为区域设定一个活动
时间区间。
如果未在
region 元素上指定 timeContainer 属性,则必须将其解释为具有
并行时间包含语义。
如果 tts:origin 和 tts:position 属性同时存在
于 region 元素上,则 tts:origin 必须在
呈现处理时被忽略。
如果 tts:origin 和 tts:position 属性均不存在,则
应用初始值的语义,该初始值属于 tts:position 属性,
用于呈现处理。
如果 ttm:role 属性
指定于 region 元素上,则必须遵循
语法表示 –
ttm:role定义的值语法,且此属性标识的角色
表示该区域的语义角色,
独立于以该区域为目标
(与其关联)的任何内容的语义角色。
当指定于 div 或 p 元素 E 上时,
以下样式属性例外地应用于 region R,
该区域与 E 关联,具体规定如下:
在这些情况下,每个样式属性的应用被视为
等效于一个匿名内联动画,其采用
set 动画元素的形式,
即 A,其中
动画应用于 R,其活动时间区间等效于
E 的活动时间区间,且如果多个动画元素
(Ai , ..., Aj) 已应用于 R,
则 A 在这些现有动画中的最后一个之后应用,即,
紧接在 Aj 之后。
注:
如果同一样式属性的多个匿名内联
动画
应用于某个区域 R,则相应的
set 动画元素,
Aj , ..., Ak ,
按照元素的前序遍历顺序添加到 R,这些元素为
Ej , ..., Ek,
它们产生了这些动画。
另请注意,对给定元素的特定样式属性应用多个动画的 语义 由步骤 (5) [动画样式]控制,该步骤见10.4.4.2 指定样式集合 处理。
以下模型示例使用
tts:extent 样式属性展示这些特殊语义,
但该模型普遍适用于上面列出的所有样式属性:
<region xml:id="r1" tts:extent="80% 10%" .../> ... <p region="r1" begin="10s" end="12s" tts:extent="70% 20%">改变尺寸</p> |
在上述输入片段示例中,tts:extent 属性指定于
段落 (p) 元素上,
不失一般性地,该元素被分配到时间区间 [10s,12s)。
随后,此属性
用于合成一个以 set 元素形式表示的匿名动画,
如以下输出片段所示,其中该属性被复制
到 set 元素中,同时复制等效的时序属性。原始的
tts:extent 随后
从段落 (p) 中移除。
<region xml:id="r1" tts:extent="80% 10%" ...> <set begin="10s" end="12s" tts:extent="70% 20%"</set> </region> ... <p region="r1" begin="10s" end="12s">改变尺寸</p> |
生成的输出片段表明,区域的原始尺寸得以保留,但 其中的 子动画在指定的时间区间内覆盖此尺寸,从而产生 按预期(暂时)改变 区域尺寸的效果。
本节定义 11.2.1 region 属性,该属性用于 内容元素。
region 属性用于引用 region
元素,该元素定义一个空间或区域,内容
元素将流入其中。
如果指定了 region 属性,则其值必须
遵循 [XML Schema Part 2] 定义的 IDREF 数据类型,
见 §3.3.9;此外,此 IDREF 必须引用一个 region 元素,
该元素具有 layout 祖先元素。
region 属性可以由以下
元素类型的实例指定:
注:
请参阅下文11.3.1 区域布局与呈现, 了解关于内容 在区域内流动的更多信息。
本节通过标准处理模型定义区域布局和 呈现的语义, 具体如下:
允许 采用任何实现,前提是外部可观察到的 结果与此模型产生的结果一致。
如果文档实例未指定 外置区域, 则隐含一个具有以下特征的默认区域:
此外,如果未指定
外置区域,则
region 属性
不得指定于任何内容元素上,这些元素位于文档实例中。
如果对于给定文档
实例隐含了默认区域,则
body 元素
隐式地以默认区域为目标(与其关联)。
隐含默认区域时,文档实例
应
被处理为如同 region 元素及其
父 layout
元素已指定于 head
元素中,且匹配的 region 属性
已
指定于 body 元素上,
如以下示例所示:
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head>
<layout>
<region xml:id="anonymous"/>
</layout>
</head>
<body region="anonymous"/>
</tt>
|
注:
在上例中,隐含了默认 region 元素和 region
属性。此外,还隐含了一个 layout 容器元素,
用于
隐含的 region 元素。
内联区域是一种语法机制,用于指定 区域,使区域 指定 与引用该区域的内容之间的语法距离最小。在语义上,每个 内联区域等效于指定一个唯一的 外置区域,该区域仅由一个 内容元素隐式引用,且 内联区域是在该元素的上下文中指定(或隐含)的。
内联区域的声明方式是
指定一个 region 元素,
作为内容元素的子元素,
后者属于 Block.class 元素组,这
称为内联区域
指定。
内联区域按照以下过程处理: [处理内联 区域], 该过程生成与内联区域对应的 外置区域。此过程还将与内联区域关联的内容 元素 绑定到生成的对应外置区域。
注:
内容元素只能关联一个
单独的
区域(在给定的中间同步
文档中),
关联方式可以是指定属性,也可以是通过子 region 元素。因此,
如果内容元素指定了 region 属性,则任何
内联区域指定都会被
忽略。
对于每个内容元素 B, 若其属于 Block.class 元素组, 则执行以下有序步骤:
如果 B 的 [attributes] 信息项属性
包含一个
region 属性,则
退出此过程
如果 B 的 [children] 信息项属性
不包含
region 元素
R,则退出此过程;
创建一个空的 region
元素 R' ,
按以下方式初始化:
将 [children] 信息项属性,其所属元素为
R' ,设置为
R 的 [children] 信息项属性的深副本;
将 [attributes] 信息项属性,其所属元素为
R' ,设置为以下属性的深副本:
[attributes] 信息项属性,其所属元素为
R;
如果 [attributes] 信息项属性,其所属元素为
R' ,不包含
xml:id 属性,则添加一个隐含的
xml:id 属性,使用生成的值
ID,该值在 TTML 文档实例的范围内唯一;
否则,令 ID 为 xml:id
属性的值,该属性属于 R' ;
如果存在以下属性,则将它们从
[attributes] 信息项属性中移除,该信息项属性属于
R' :
begin、
dur 和
end;
将 begin 和 end 属性添加到
[attributes] 信息项属性中,该信息项属性属于
R' ,
具体如下:
如果 TTML 文档实例
没有
head 元素,
则插入一个空的
head 元素,
作为以下元素的第一个子元素:
tt 元素;
如果 head
元素没有
layout 子元素,
则插入一个空的
layout 元素,
紧接在
styling 元素之后(如果
存在),并紧接在
animation
元素之前(如果存在);如果两者均不存在,则作为
head
元素的最后一个子元素;
将 R' 追加到 [children] 信息项
属性中,该属性属于
layout 子元素,
其父元素为
head 元素;
添加一个 region 属性,
其值为 ID,添加到 [attributes] 信息
项属性中,该属性属于 B;
将 R 从 [children] 信息项属性中移除,
该属性属于 B。
内联区域 指定的使用 及由此生成的外置区域如以下示例所示。
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head/>
<body>
<div begin="5s" dur="10s">
<region tts:extent="540px 100px" tts:origin="50px 339px"/>
<p>一些内容</p>
<div/>
<body/>
</tt>
|
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head>
<layout>
<region xml:id="region3451" begin="5s" end="15s"
tts:extent="540px 100px" tts:origin="50px 339px"/>
</layout>
</head>
<body>
<div begin="5s" dur="10s" region="region3451">
<p>一些内容</p>
<div/>
<body/>
</tt>
|
注:
请注意,在上述一对示例中,生成的
外置区域上的时序属性
使用 end 属性,而非原始的 dur
属性,后者属于
div 父元素,其子元素为内联 region
元素。上述过程要求从 dur 转换为 end,
以便在根时间
范围内指定生成的外置区域的活动时间
区间。
注:
此示例中生成的区域 ID region3451 依赖于
实现,唯一的要求是它必须是一个有效值,
适用于 xml:id 属性,其中
包括在文档实例范围内唯一。
为了执行呈现处理,(1) 调用 [解析时序] 过程,然后,(2) 调用 [构建 中间文档]过程。
可选地,调用过程[构建匿名 span]; 否则,如果此时未调用,则解析隐式持续时间, 对象为每个文本节点,这些节点在 调用该过程时 本应解析其隐式持续时间;
将当前文档实例的活动持续时间划分为一个有序
序列,
由时间坐标组成,
{T0, T1, T2, ...},其中,在
每个时间坐标 Ti,
某个元素在时间上变为活动或不活动。
执行以下有序步骤:
对于从[解析时序]过程获得的每个时间区间,
每个此类区间由一对连续的时间坐标组成,
即 (Ti,Ti+1),
也就是 (T0,T1)、
(T1,T2)、…,将当前
文档实例从其原始的源
形式,
DOCsource ,映射为中间同步文档形式,
DOCinter ,依据
以下有序步骤:
调用过程[处理内联 区域];
对于每个时间上活动的
区域 R,复制
子树,
该子树属于 DOCsource,
以 body 元素为根;
按后序遍历对此子树求值,如果以下任一 条件为真,则剪除元素:
如果剪除后的子树非空,则将其父节点重新设置为 R 元素;
最后,完成上述步骤后,从中间文档中剪除原始的
body
元素,然后剪除所有 region、
begin、end 和 dur 属性,这些属性
已不再
具有语义上的相关性。
注:
在本节中,术语剪除用于 元素时,表示将该元素从其父元素的子节点中移除, 这进一步意味着被剪除元素的后代将不再 是 该元素的父元素的后代。当剪除用于 属性时,表示将该属性从与其 关联(拥有它)的元素节点中移除。
注:
允许符合要求的呈现处理器将提前进行的样式解析 作为上述过程的后处理步骤, 更多信息请参阅[流转换]过程的步骤 (2)。
内容元素与区域关联, 依据 以下有序规则,其中使用第一个满足的规则, 跳过其余规则:
执行上述处理后,将得到一个序列,其中包含 N 个中间同步 文档实例, DOCinter0 … DOCinterN−1。
注:
如果实现能够检测到两个 相邻同步文档实例之间显著的相似性, DOCinterN DOCinterN−1 , 则处理器实现可以应用处理, 使呈现这两个实例之间的 过渡尽可能平滑,例如, [CTA-608-E] §C.3 和 [CC-DECODER-REQ] 所述的处理。
执行时间(同步)切片并随后 重新映射按区域选定的内容层级结构后,得到的中间 同步文档会经过流转换步骤,该步骤产生 一棵有根流对象树,表示为 XSL FO 文档实例,其定义见 [XSL-FO 1.1], 并由没有 XSL FO 对应项的 TTML 特定样式属性 在语义上进行扩展。
注:
本节中使用 XSL FO 仅为概念性用途, 唯一目的是定义 TTML 的规范性呈现语义。此算法的实际实现不必创建或处理 XSL-FO 表示。特别是,可以 使用其他呈现模型(例如层叠样式表 (CSS))来实现这些语义。
注:
由于 TTML 样式属性或样式属性值可能存在 于给定文档实例中,且没有 [XSL-FO 1.1] 对应项, 实现者应注意,本规范引用的是 [XSL-FO 1.1] 的布局模型, 而不是要求使用符合 [XSL-FO 1.1] 的格式化处理器, 因为此类处理器不一定足以满足本规范定义的完整呈现 语义, 并且会包含大量不需要的特性, 这些特性对于 实现 TTML 的呈现语义并非必需。
为了执行呈现处理,对于每个中间同步 文档,其生成方式见 11.3.1.3 中间同步文档 构建,即 DOCinteri ,(1) 调用以下 [流 转换]过程, 以获得 XSL FO 文档实例 Fi ,然后 (2) 如果处理 要求在 视觉媒介上呈现,则对 Fi 应用所有相关的格式化和渲染 语义,这些语义应符合 [XSL-FO 1.1] 和本规范的规定。
如果此前尚未调用,则执行过程 [构建匿名 span];
注:
允许符合要求的呈现处理器在 更早的处理阶段执行此步骤,在这种情况下,此步骤不会 在此重复。请注意,如果匿名 span 的构建发生在中间同步文档 构建之前,后者定义见 11.3.1.3 中间 同步文档构建,则中间 同步文档将包含匿名 span。
根据10.4.4.4 样式 解析过程解析样式;
注:
允许符合要求的呈现处理器 将此步骤作为后处理步骤,在执行 [构建中间文档] 过程时进行, 在这种情况下,以下过程产生的每个中间同步文档,即11.3.1.3 中间 同步文档构建,都将包含 计算样式集合,且 因此,此步骤不会在此重复。
将 tt 元素映射为 fo:root 元素,最初
向其填入一个 fo:layout-master-set 元素,该元素包含一个
有效的
fo:simple-page-master,后者又包含一个
fo:region-body 子元素,其中根容器区域的尺寸,
表示于
tt 元素上,被映射为 page-width 和
page-height 属性,指定于
fo:simple-page-master
元素上;
将 layout 元素映射为 fo:page-sequence
元素及其
子 fo:flow 元素,它们引用页面母版和页面
区域,
这些由上面生成的简单页面母版定义;
注:
在通过格式化 F 生成的 XSL FO 区域树中,使用的
是 [XSL-FO 1.1] 格式化处理器,
其中 page-viewport-area,
由 fo:page-sequence 元素通过
引用唯一生成的 fo:simple-page-master
元素产生,将对应于根容器区域,
其定义
见上文2 定义。
将每个非空 region 元素映射为
fo:block-container
元素,其 absolute-position 属性值为
absolute,其 top、left、
bottom 和 right
属性表示一个矩形,等效于区域的原点和
尺寸(包括内边距),且其 line-stacking-strategy
属性值为 line-height;
注:
区域的尺寸对应于分配矩形,该矩形属于
fo:block-container 生成的块区域。
注:
将 region 元素映射为
fo:block-container 时,可能
需要使用负偏移量作为以下一个或多个属性的值:
top、left、bottom 和
right,
这些 XSL-FO 属性在区域延伸到其包含块之外时
需要这样处理。
对于每个 (1) body、div 和 p 元素,
或 (2) image 元素,
若其位于块级上下文中,即,作为元素的 image 子元素,
该父元素属于 Block.class 元素组,
则如果该元素未关联 tts:display 样式
属性,其值为
none:
如果该元素不是 image 元素,则将该
元素映射为独立的 fo:block 元素,
并使用计算样式集合填充 fo:block 的样式属性,
该计算
样式集合与每个原始 TTML 内容元素关联;
否则(该元素是 image 元素),将该
元素映射为独立的 fo:block 元素,
其中包含单个 fo:external-graphic 子元素,
并填充 fo:block 和
fo:external-graphic 的样式属性,使用计算
样式集合,该集合与每个原始 TTML 内容元素关联,
同时填充 src 属性,该属性属于
fo:external-graphic 元素,使用适当的
引用,指向相关的图像
资源;
对于生成的 fo:block 格式化对象,
该对象由上一步产生,对应于 body
元素,调用以下有序子步骤:
如果 display-align 样式属性属于此
fo:block,
且值为 center 或 after,
则合成并插入一个空元素,作为此
fo:block
的第一个子元素,该空 fo:block 具有以下属性:
space-after.optimum、space-after.maximum
和
space-after.conditionality,其中
前
两个属性的值为包含它的
fo:block-container 元素的高度或宽度,取决于哪一个被
指定
为块推进维度,而最后一个属性的值
为
retain;
如果 display-align 样式属性属于此
fo:block,
且值为 center 或 before,
则合成并插入一个空元素,作为此
fo:block
的最后一个子元素,该空 fo:block 具有以下属性:
space-after.optimum、space-after.maximum
和
space-after.conditionality,其中
前
两个属性的值为包含它的
fo:block-container 元素的高度或宽度,取决于哪一个被
指定
为块推进维度,而最后一个属性的值
为
retain;
注:
在块推进
维度中插入额外的可折叠空间,
对象为对应于
body 元素的 fo:block,
其目的是确保此
fo:block 的前后边缘重合于
fo:block-container 的前后边缘,
后者对应
于包含它的 region,同时考虑
满足
块推进维度对齐的需求。例如,
这可确保
与 body 元素关联的背景色,如果
不是 transparent,
将完全填充包含它的区域。
对于每个 (1) span 元素和匿名 span,
或 (2) 位于行内级上下文中的 image 元素,
即,作为 p 或 span
元素的 image 子元素,
如果该元素或匿名 span
未关联
tts:display 样式属性,其值为
none:
如果该对象是匿名
span,则将字符项序列,
其所属对象为匿名 span,映射为
独立的 fo:inline 元素,
并填充 fo:inline 的样式属性,使用
计算
样式集合,该集合与匿名 span 关联;
如果该对象是 span 元素,则将该元素映射
为独立的 fo:inline 元素,并填充样式
属性,其所属对象为 fo:inline,使用计算
样式集合,该集合与 span 关联;
否则(该对象是 image 元素),将该
元素映射为独立的 fo:inline 元素,
其中包含单个 fo:external-graphic 子元素,
并填充 fo:inline 和
fo:external-graphic 的样式属性,使用计算
样式集合,该集合与 image 元素关联,
同时填充 src 属性,该属性属于
fo:external-graphic 元素,使用适当的
引用,指向相关的图像
资源;
对于每个 br 元素,如果它未
关联 tts:display 样式属性,其值为
none,则将该元素映射为
独立的 fo:character 元素,具有以下
属性:
character="
"
suppress-at-line-break="retain"
对于每个样式属性,若其位于某个 计算 样式集合中,且 在 [XSL-FO 1.1] 中没有对应项,则将该属性 直接映射 到由输入 TTML 内容元素产生的相关格式化对象, 该样式属性适用于此内容元素;
可选地,在每个生成的格式化对象元素上合成唯一的 id 属性,
将该元素与输入元素关联,
该输入元素
产生了此格式化对象元素;
下文详细展示上述处理步骤的示例,从示例 – 源文档示例开始。
<tt tts:extent="640px 480px" xml:lang="en"
xmlns="http://www.w3.org/ns/ttml"
xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1">
<style tts:origin="10px 100px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="red"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
</region>
<region xml:id="r2">
<style tts:origin="10px 300px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="yellow"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
</region>
</layout>
</head>
<body xml:id="b1">
<div xml:id="d1" begin="0s" dur="2s">
<p xml:id="p1" region="r1">文本 1</p>
<p xml:id="p2" region="r2">文本 2</p>
</div>
<div xml:id="d2" begin="1s" dur="2s">
<p xml:id="p3" region="r2">文本 3</p>
<p xml:id="p4" region="r1">文本 4</p>
</div>
</body>
</tt>
|
在上述文档中,内容层级结构由两个分区组成,每个 分区包含两个段落。此内容以两个不重叠区域之一为目标(与其关联), 除了位置 和前景色外,这两个区域的样式完全相同,前景色由 被重新设置父节点并移入区域的 span(在此情况下为匿名 span)继承并应用。
以下第一个中间文档显示时间
区间 [0,1) 内的同步状态,在此期间只有分区 d1 在时间上活动,
且段落 p1 和 p2(及其祖先)
分别与区域 r1 和 r2 关联。
注:
下文展示的中间文档不是有效的文档实例, 而是可能的内部处理状态的表示,用于 教学目的。
<tt tts:extent="640px 480px" xml:lang="en"
xmlns="http://www.w3.org/ns/ttml"
xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1">
<style tts:origin="10px 100px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="red"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
<body xml:id="b1-1">
<div xml:id="d1-1">
<p xml:id="p1">文本 1</p>
</div>
</body>
</region>
<region xml:id="r2">
<style tts:origin="10px 300px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="yellow"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
<body xml:id="b1-2">
<div xml:id="d1-2">
<p xml:id="p2">文本 2</p>
</div>
</body>
</region>
</layout>
</head>
</tt>
|
以下展示一个 XSL FO 文档实例,它能够产生与 TTML 一致的渲染结果, 并且可以通过对第一个中间 文档执行流处理来生成。
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="m1"
page-width="640px" page-height="480px">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="m1">
<fo:flow flow-name="xsl-region-body">
<!-- region (r1) -->
<fo:block-container id="r1" absolute-position="absolute"
left="10px" top="100px" width="620px" height="96px"
background-color="black" display-align="center">
<!-- body (b1) -->
<fo:block id="b1-1">
<!-- body 的空间(前侧)填充项 -->
<fo:block
space-after.optimum="96px"
space-after.maximum="96px"
space-after.conditionality="retain"/>
<!-- div (d1) -->
<fo:block id="d1-1">
<!-- p (p1) -->
<fo:block id="p1" text-align="center">
<fo:inline font-size="40px" font-weight="bold"
color="red">文本 1</fo:inline>
</fo:block>
</fo:block>
<!-- body 的空间(后侧)填充项 -->
<fo:block
space-after.optimum="96px"
space-after.maximum="96px"
space-after.conditionality="retain"/>
</fo:block>
</fo:block-container>
<!-- region (r2) -->
<fo:block-container id="r2" absolute-position="absolute"
left="10px" top="300px" width="620px" height="96px"
background-color="black" display-align="center">
<!-- body (b1) -->
<fo:block id="b1-2">
<!-- body 的空间(前侧)填充项 -->
<fo:block
space-after.optimum="96px"
space-after.maximum="96px"
space-after.conditionality="retain"/>
<!-- div (d1) -->
<fo:block id="d1-2">
<!-- p (p2) -->
<fo:block id="p2" text-align="center">
<fo:inline font-size="40px" font-weight="bold"
color="yellow">文本 2</fo:inline>
</fo:block>
</fo:block>
<!-- body 的空间(后侧)填充项 -->
<fo:block
space-after.optimum="96px"
space-after.maximum="96px"
space-after.conditionality="retain"/>
</fo:block>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
|
以下第二个中间文档显示
时间区间 [1,2) 内的同步状态,在此期间分区 d1 和
d2 均在时间上活动,且段落 p1 和
p4(及其祖先)与区域 r1 关联,
而段落 p2 和 p3(及其祖先)
与区域 r2 关联。
<tt tts:extent="640px 480px" xml:lang="en"
xmlns="http://www.w3.org/ns/ttml"
xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1">
<style tts:origin="10px 100px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="red"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
<body xml:id="b1-1">
<div xml:id="d1-1">
<p xml:id="p1">文本 1</p>
</div>
<div xml:id="d2-1">
<p xml:id="p4">文本 4</p>
</div>
</body>
</region>
<region xml:id="r2">
<style tts:origin="10px 300px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="yellow"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
<body xml:id="b1-2">
<div xml:id="d1-2">
<p xml:id="p2">文本 2</p>
</div>
<div xml:id="d2-2">
<p xml:id="p3">文本 3</p>
</div>
</body>
</region>
</layout>
</head>
</tt>
|
以下第三个中间文档显示时间
区间 [2,3) 内的同步状态,在此期间只有分区 d2 在时间上活动,
且段落 p4 和 p3(及其祖先)
分别与区域 r1 和 r2 关联。
<tt tts:extent="640px 480px" xml:lang="en"
xmlns="http://www.w3.org/ns/ttml"
xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1">
<style tts:origin="10px 100px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="red"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
<body xml:id="b1-1">
<div xml:id="d2-1">
<p xml:id="p4">文本 4</p>
</div>
</body>
</region>
<region xml:id="r2">
<style tts:origin="10px 300px"/>
<style tts:extent="620px 96px"/>
<style tts:fontSize="40px"/>
<style tts:fontWeight="bold"/>
<style tts:backgroundColor="black"/>
<style tts:color="yellow"/>
<style tts:textAlign="center"/>
<style tts:displayAlign="center"/>
<body xml:id="b1-2">
<div xml:id="d2-2">
<p xml:id="p3">文本 3</p>
</div>
</body>
</region>
</layout>
</head>
</tt>
|
当 p 元素,即段落的
表示,由
呈现处理器处理时,其内容通过
断行进行分段,
每个片段分配给一个唯一的行区域。在这
方面,本规范采用
基于 [XSL-FO 1.1] 所定义格式化模型的模型,
尤其是 §4.5、§4.6 和 §4.7。
如果适用于文档实例的配置文件 要求支持或使用 #lineBreak-uax14 特性,则 断行 算法 [UAX14] 定义的建议适用于 对该文档实例的内容执行行布局时。
本小节为非规范性内容。
块推进 维度的计算,其对象为 行区域,通常称为行高, 可能特别复杂,尤其是在应用多个字体族、字号、字体 样式、 字体资源以及高级文本格式化特性时, 例如注音、文本着重以及 文本组合(纵中横)。
此过程产生的每个行区域都会被堆叠,
可以
垂直堆叠在前一个行区域下方(在
水平行的上下文中),或
水平堆叠在前一行的一侧(在垂直行的上下文中)。
如[流转换]过程的步骤 (5)
所规定,
TTML 使用 line-height 行堆叠策略,其正式定义
见 [XSL-FO 1.1] §4.5,
下文使用其中的术语和概念。
使用此策略时,行区域的尺寸 对应于 为该特定行区域计算的 per-inline-height-rectangle 的尺寸, 该行区域的这些尺寸又由 以下两者求值得到:(1) expanded-nominal-requested-line-rectangle 的尺寸,它们对于 段落中的每个 行区域都相同,以及 (2) expanded-rectangle 的尺寸, 对象为每个行内区域子区域,其父区域为行区域,这些尺寸可能因 段落中每个行区域的每个行内 区域而异。
上文所述的短语行高不应与 样式属性的计算值混淆,该属性关联于 tts:lineHeight 属性。后者的值 用作计算参数,用于计算 应用于行区域和各个 行内区域的半行距, 它们分别作为以下计算的参数:(1) expanded-nominal-requested-line-rectangle 的尺寸, 对象为行区域,以及 (2) expanded-rectangle 的尺寸, 对象为行内区域子区域,其父区域为行 区域。 请特别注意,应用于行 区域的半行距与 应用于行内区域子区域的半行距, 该子区域属于 上述行区域,通常是不同的值,更多详细信息 见 [XSL-FO 1.1] §6.5.2(应用于行区域时)。对于给定的 行内区域,采用类似的处理方式,尽管这一点 未由 [XSL-FO 1.1] 明确指出,但可以从[CSS2] §10.8.1 的表述中推断出来。
总而言之,line-height 行堆叠策略所定义的行为,
其定义见 [XSL-FO 1.1] §4.5,
并由 TTML 采用,旨在与 [CSS2] 的行堆叠策略兼容,这意味着:
当 tts:lineHeight 的计算值
在段落上为 normal 时,则 (1) 段落的每个
行区域恰好紧邻且不相交于
该段落的前一个
行区域,且 (2) 行
高,
对于段落的行区域,会根据
每个
行区域中带样式的内容而变化;
当 tts:lineHeight 的计算值 在段落上为 指定的 <length> 时,则 段落的行区域彼此恰好紧邻, 但其内容矩形可能 (1) 在块 推进维度上占用的空间小于容纳其内容所需的空间, 在这种情况下,该内容可能与该段落的前一个行区域相交,或 (2) 在块 推进维度上占用的空间大于容纳其内容所需的空间。
注:
当以下任何高级文本格式化特性应用于某行的 内容时,可能对行高 进行额外调整:
注音文本注释
文本组合(纵中横)
文本着重
(逐字形)字体错切
本节规定格式化后的 TTML 文档实例在渲染方面的某些细节。
呈现 处理器采用的渲染顺序必须符合 [XSL-FO 1.1] §4.9 规定的渲染模型;此外, 还适用以下约束:
由注音文本 span 生成的、作为行区域后代的行内区域, 其渲染 晚于该行区域的其他行内区域后代;
块区域或行内区域的固有标记,若该区域由
image 元素生成,则由
关联图像的光栅组成。
注:
由 image 元素产生的标记,
若该元素被
tts:backgroundImage
属性引用,则不包含在块区域或行内区域的固有
标记中,即,它们属于区域的背景
标记。
本节规定核心 词汇目录中的时序内容,其中 时序应理解为一个可分离的信息层,它应用于 内容,并表示作者对于 该内容在时间上如何呈现的意图。
本节定义以下基本时序属性,用于定时元素:
此外,本节定义 12.2.4 timeContainer 属性,用于定时 元素, 这些元素同时充当时间容器。
begin 属性用于指定起
点,所属时间区间与定时元素关联。
如果
指定了 begin 属性,则其值必须遵循
<time-expression> 的规定,其定义见12.3.1
<time-expression>。
时间区间的起点包含在 区间中;即,该区间左闭。
begin 属性的语义采用
[SMIL 3.0] §5.4.3 中的定义,
同时考虑本规范定义的任何覆盖语义。
注:
如 [SMIL 3.0] §5.4.3 所定义,
如果未在定时元素上显式指定 begin 属性,
则该属性的默认值由最近的时间容器
祖先决定;但是,在 TTML 中,该祖先要么是
并行时间容器,要么是顺序时间容器,两者都应用默认
值 0s。
dur 属性用于指定
与定时元素关联的时间区间的持续时间。如果
指定了该属性,
则 dur 属性的值必须遵循
<time-expression> 的规定,其定义见12.3.1
<time-expression>。
注:
当 <time-expression> 的 clock-time 形式
用于 dur 属性时,它应被解释为
两个隐含时钟时间表达式之间的差。
当文档实例指定使用
smpte 时间基准和 discontinuous 标记
模式时,不得在任何
元素上指定(格式良好的)dur 属性。
dur 属性的语义采用
[SMIL 3.0] §5.4.3 中的定义,
同时考虑本规范定义的任何覆盖语义。
此处有意与 [SMIL 3.0] §5.4.3 不同,允许
dur 属性的值为零 (0s)。
注:
在本规范支持的 [SMIL 3.0] 语义子集
上下文中,同时指定
end 和 dur 属性的元素,其活动持续时间等于以下两者中的较小值:
dur 属性的值,以及
end 属性的值与元素开始时间之间的差。
end 属性用于指定终点,
所属时间区间与定时元素关联。如果
指定了 end 属性,则其值必须遵循
<time-expression> 的规定,其定义见12.3.1
<time-expression>。
时间区间的终点不包含在 区间中;即,该区间右开。
非空活动 时间区间的呈现效果包含这样一帧:它紧接在某一帧之前, 后者(或时钟滴答)等于或紧随终点指定的 时间,但呈现效果不会延伸到后者这一帧(或时钟滴答)中。
注:
例如,如果活动区间为 [10s,10.33333s),且 帧率为每秒 30 帧,则该区间的呈现效果 仅限于第 300 帧至第 309 帧(假定 0s 对应 第 0 帧)。如果活动区间指定 为 [300f,310f),同样如此。
end 属性的语义采用
[SMIL 3.0] §5.4.3 中的定义,
同时考虑本规范定义的任何覆盖语义。
timeContainer 属性用于指定局部时间
上下文,通过此上下文确定定时子元素在时间上的位置。
如果指定了 timeContainer 属性,则其值必须为
以下之一:
par
seq
如果元素实例的时间容器语义为 par,
则子元素的时间区间被视为
并行应用,即,在时间上同时发生。此外,
每个子元素的时间区间指定被视为相对于
容器元素实例的时间区间。为了确定
[SMIL 3.0] 的 endsync 语义,其对象为 par
时间容器,应用默认值 all。
注:
对 endsync 行为使用默认值 all
与 [SMIL 3.0] 不同,后者使用默认值
last。
如果元素实例的时间容器语义为 seq,
则子元素的时间区间被视为
顺序应用,即,在时间上依次发生。此外,
每个子元素的时间区间指定被视为相对于
其兄弟元素的时间区间,除非它是第一个子元素,在这种情况下,
它被视为相对于容器
元素实例的时间区间。
每个时间容器被视为构成独立的时间基准,即, 时间坐标系。
如果未在具有时间容器语义的元素上指定 timeContainer 属性,
则必须应用 par 时间容器语义。
时间容器语义仅适用于以下元素类型:
并行和顺序时间 包含的语义采用 [SMIL 3.0] §5.4.4 中的定义, 同时考虑本规范定义的任何覆盖语义。
时序属性值包括以下表达式的使用:
<time-expression> 用于指定某个
时间基准内的坐标,其中适用的时间基准由
ttp:timeBase 参数确定,且应用
I 时间表达式语义定义的语义。
注:
请参阅 7.2.5 ttp:frameRate、 7.2.9 ttp:subFrameRate、 7.2.10 ttp:tickRate 和 7.2.11 ttp:timeBase,了解更多 关于 显式指定帧率、子帧率、时钟滴答率和时间基准的信息。
<time-expression>
: clock-time
| offset-time
| wallclock-time
clock-time
: hours ":" minutes ":" seconds ( fraction | ":" frames ( "." sub-frames )? )?
offset-time
: time-count fraction? metric
wallclock-time
: "wallclock(" <lwsp>? ( date-time | wall-time | date ) <lwsp>? ")"
date-time
: date "T" wall-time
wall-time
: ( hhmm-time | hhmmss-time )
date
: years "-" months "-" days
hhmm-time
: hours2 ":" minutes
hhmmss-time
: hours2 ":" minutes ":" seconds fraction?
years
: <digit> <digit> <digit> <digit>
hours
: hours2
| hours3plus
hours3plus
: <digit> <digit> <digit>+
months | days | hours2 | minutes | seconds
: <digit> <digit>
frames
: <digit> <digit>
| <digit> <digit> <digit>+
sub-frames
: <digit>+
fraction
: "." <digit>+
time-count
: <digit>+
metric
: "h" // 小时
| "m" // 分钟
| "s" // 秒
| "ms" // 毫秒
| "f" // 帧
| "t" // 时钟滴答
|
<time-expression> 不得包含 <whitespace> 字符, 除非由前述语法定义中出现的 <lwsp> 非终结符 明确允许。
如果 <time-expression> 采用
clock-time 形式表示,则在表示小于 10 的小时、
分钟、秒和帧时使用前导零。分钟被限制为
[0…59],而秒(包括任何小数部分)被限制为闭
区间 [0,60],其中值 60 仅适用于闰秒。
除非 ttp:timeBase 为
clock,
且 ttp:clockMode 为
local 或 utc,
否则不推荐使用 60 秒这一特殊值来表示
闰秒。
执行呈现处理时,如果此特殊值出现在其他时间
基准或时钟模式中,
则必须将其解释为如同指定了值 59。
如果 <time-expression> 采用
clock-time 形式表示,并指定了 frames 项,
则该项的值必须限制在区间
[0…F-1] 内,其中 F 是帧率,
由 ttp:frameRate 参数确定,其定义
见 7.2.5 ttp:frameRate。
以下情况被视为错误:指定了 frames
项或
f(帧)单位,而适用的时间基准为 clock。
如果 <time-expression> 采用
clock-time 形式表示,并
指定了 sub-frames 项,则该项的值必须限制在
区间 [0…S-1] 内,其中 S 是
子帧率,由 ttp:subFrameRate 参数确定,其定义见 7.2.9 ttp:subFrameRate。
以下情况被视为错误:
指定了 sub-frames 项,
而适用的时间基准为 clock。
以下情况被视为错误:
<time-expression> 的 wallclock-time 形式
用于文档实例中,而控制它的时间
基准不是 clock。
如果控制时间基准的计算值为 smpte,则
(1) 不推荐使用 <time-expression> 的 offset-time
形式,且
(2) 不推荐在 clock-time 形式的 <time-expression> 中使用
秒的小数 fraction 分量,
这种用法已被
弃用。
注:
上面规定的 <time-expression> 语法明确排除
时区信息的表示。如果作者
希望将 <time-expression> 与特定时区关联,则可以
将时间表达式转换为 UTC,并指定
使用 utc 时钟模式,相关内容见7.2.2
ttp:clockMode。
时间包含、持续时间和区间的语义,定义于 [SMIL 3.0],适用于解释同名的定时元素和时序 词汇,它们由本规范定义,并受以下 约束:
匿名 span 的隐式持续时间定义
如下:如果
匿名 span 的父时间容器是并行
时间容器,则
隐式持续时间等效于 indefinite
持续时间值,其定义见 [SMIL 3.0];如果匿名 span 的
父时间容器是顺序时间容器,则隐式持续时间
等效于零。
animate、audio、br、
image 或 set 元素的隐式持续时间定义为:
与将该元素视为匿名 span 时相同。
具有非混合内容的 span 元素,即仅包含
#PCDATA 文本节点,
其隐式持续时间定义为与将该 span 元素视为匿名 span 时相同。
body、div、p
或具有混合内容的 span 元素的隐式持续时间根据以下内容确定:(1)
该元素是并行还是顺序时间容器,(2) 默认的
endsync 语义,定义见上文12.2.4
timeContainer,
以及 (3) [SMIL 3.0] 应用于这些时间
容器的语义。
region 元素的隐式持续时间定义为
等效于 indefinite
持续时间值,其定义见 [SMIL 3.0]。
如果控制时间基准为 clock,则时间
表达式被视为等效于基于墙上时钟的
时序,定义见 [SMIL 3.0],且适用
I.1 时钟时间基准的特定语义。
如果控制时间基准为 media,则时间
表达式被视为等效于基于偏移的时序,
定义见 [SMIL 3.0],且适用
I.2 媒体时间基准的特定语义。
如果控制时间基准为 smpte,则时间
表达式被视为等效于基于偏移的
时序或基于事件的时序,定义见 [SMIL 3.0],且
适用
I.3 SMPTE 时间基准的特定语义。
本小节为非规范性内容。
以下示例演示匿名 span 的时序语义,它们是顺序和
并行时间容器的子元素。
词语你好和喂都包含在匿名 span 中,这些匿名 span 是顺序
时间容器(p 元素)的子元素。因此,你好和喂
都不会显示,
因为这些匿名 span 的隐式持续时间为 0。相
比之下,包含词语的匿名 span,该词语为
美好的,
以及包含词语一天的最内层 span,都是某个
具有并行时间容器
语义的元素(最外层 span 元素)的子元素。
因此,美好的和一天都会显示,因为隐式持续时间,
对于它们各自的父匿名 span
和 span 元素,均为无限期,导致
其 span、p、div 和 body 祖先的隐式持续时间也
为无限期。
...
<body>
<div>
<p timeContainer="seq">
你好
<span>美好的 <span>一天</span></span>
喂
</p>
</div>
</body>
|
本节规定核心词汇目录中的动画 内容,其中 动画应理解为一个可分离的信息层,它将 时序与样式结合起来,以表示作者对于内容的(随时间)动态 样式的意图。
以下元素规定结构和主要动画方面,适用于 文档实例:
animate 元素表示一系列要应用的变化(动画),
其目标
为关联元素的一个或多个可动画化样式。
animate 元素可以作为 (1)
内容元素或 region 元素的子元素出现,
称为内联动画,或
(2) 作为 animation 元素的子元素出现,
称为
外置动画。
在前一种情况下,animate 元素的父元素就是关联元素;在
后一种
情况下,任何使用 animate 属性引用 animate 元素的
元素都是
关联元素。
animate 元素接受零个或多个
属于 Metadata.class 元素
组的元素作为子元素。
<animate begin = <time-expression> calcMode = <calculation-mode> condition = <condition> dur = <time-expression> end = <time-expression> fill = <fill> keySplines = <key-splines> keyTimes = <key-times> repeatCount = <repeat-count> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意可动画化的样式属性} 内容: Metadata.class* </animate> |
样式属性直接作为
animate 元素的目标,
其中动画值的列表(序列)
遵循 <animation-value-list>
语法,且每个
组成部分 <animation-value> 遵循
所指定属性的
语法。
以不可动画化样式为目标 被视为错误,且必须在 呈现处理时忽略。
注:
与 [SVG 1.1] §19.2.12 不同,此处定义的单个 animate
元素可以用于
对一组目标样式
属性执行连续动画,而不局限于以
单个样式属性为目标。
在 [SVG 1.1] 中,这需要使用多个
animate 元素,而不是单个 animate 元素。
此外,通过直接指定动画样式属性和关键值,
无需使用 from、
to、by 或 values 动画值属性,它们定义
于 [SVG 1.1] §19.2.9。
animate 元素及其上述属性的语义
定义为 [SVG 1.1] §19.2 所规定的语义,并按
以下内容加以约束或进一步说明:
animate 元素所针对的属性以及要应用
于这些属性的值,
通过直接使用样式属性指定;
因此,attributeName、from、to、
by 和 values 属性,定义于
[SVG 1.1],不受此版本 TTML 的支持。
注:
使用直接命名的样式属性,其效果等效于指定
多个 [SVG 1.1] animate 元素,
其中每个元素都指定 attributeName 和
values 属性。
注:
例如,指定 tts:color="red;green;blue"
被视为等效于指定 attributeName="tts:color" 和
values="red;green;blue",如 [SVG 1.1] 中所用。
如果未指定 calcMode 属性,则应用 calcMode 值
linear。
注:
此隐含值对应于默认值,其规定见 [SVG 1.1] §19.2.9。
如果目标可动画化样式能够进行离散动画,
但不能进行连续动画,则以下情况被视为错误:
calcMode 属性的应用值不是
discrete,在这种情况下,
目标可动画化样式必须在
呈现处理时忽略。
如果未指定 fill 属性,则应用 fill 值
remove。
注:
此隐含值对应于默认值,其规定见 [SVG 1.1] §19.2.9。
如果指定了 keyTimes 属性,且
calcMode 的计算值为 "paced",
则此用法必须被视为
错误,且该动画必须在
呈现处理时忽略。
如果指定了 keyTimes 属性,且
calcMode 的计算值不是 "paced",
则时间分量的数量,
指定于 keyTimes 属性中,必须与
每个动画属性指定的动画值数量匹配。
注:
无论单个还是多个属性作为
同一个
animate 元素的目标,都适用此约束,这进一步意味着,
以多个属性为目标时,每个动画属性的值都必须
在其 <animation-value-list>
中指定相同数量的值。
注:
例如,下文的第一个 animate 元素有效:
动画属性具有 3 个值,
而第二个和第三个无效:对于第二种情况,动画
属性具有 2 个值,但指定了 3 个关键时间;
对于第三种情况,第一个动画属性具有 2 个值,第二个
动画属性具有 4 个值,但指定了 3 个关键时间:
<!-- 关键时间匹配的有效单属性动画 --> <animate xml:id="a1" keyTimes="0;0.2;1" tts:color="red;green;blue"/> <!-- 关键时间不匹配的无效单属性动画 --> <animate xml:id="a2" keyTimes="0;0.2;1" tts:color="red;green"/> <!-- 关键时间不匹配的无效多属性动画 --> <animate xml:id="a3" keyTimes="0;0.2;1" tts:color="red;green" tts:backgroundColor="cyan;magenta;yellow;black"/> |
如果未指定 keyTimes 属性,且
calcMode 的计算值不是 "paced",
则应用一个 keyTimes 值,它对应于将
指定的动画值以均匀(线性)间隔分布在
动画的简单持续时间内。
注:
例如,如果动画样式指定为
tts:color="red;green;blue",则隐含值,
对于 keyTimes,
为 "0;0.5;1"。
如果指定了 keySplines 属性,且
calcMode 的计算值不是 "spline",
则此用法必须被视为
错误,且该动画必须在
呈现处理时忽略。
如果指定了 keySplines 属性,且
calcMode 的计算值为 "spline",
则控制分量的数量,
指定于 keySplines 属性中,必须比
时间分量的数量少一,后者位于
keyTimes 属性的计算值中。
如果未指定 keySplines 属性,且
calcMode 的计算值为 "spline",
则此用法必须被视为
错误,且该动画必须在
呈现处理时忽略。
如果未指定 repeatCount 属性,则应用 repeatCount 值
1。
additive 属性,定义于 [SVG 1.1] §19.2.10,
不受此
版本 TTML 的支持;因此,在其缺省时,应用此
属性的 "replace" 值的语义。
accumulate 属性,定义于 [SVG 1.1]
§19.2.10,不受此
版本 TTML 的支持;因此,在其缺省时,应用此
属性的 "none" 值的语义。
使用 animate 元素对内容
样式进行动画处理的示例如下:
...
<p dur="5s">
<animate tts:color="yellow;red;green;blue;yellow"/>
颜色连续变化的文本!
</p>
...
|
注:
在上例中,内容“颜色
连续变化的文本!”的前景色在 5 秒内连续地从黄色变为红色,再变为绿色,
然后变为
红色,最后回到黄色,此后动画效果被移除,
并恢复原始颜色(因为 fill 默认为 "remove")。
使用 animate 元素对区域
样式进行动画处理的示例如下:
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:tts="http://www.w3.org/ns/ttml#styling"
ttp:extent="640px 480px">
<head>
<layout>
<region xml:id="r1" timeContainer="seq" tts:opacity="0">
<animate dur="1s" tts:opacity="0;1"/>
<set dur="5s" tts:opacity="1"/>
<animate dur="1s" tts:opacity="1;0"/>
<style tts:extent="480px 60px"/>
<style tts:origin="80px 400px"/>
</region>
</layout>
</head>
<body region="r1">...</body>
</tt>
|
注:
在上例中,区域 r1 最初设置为 0% 不透明度,
即完全透明,然后在一秒
区间内淡入至 100% 不透明度,即完全不透明。不透明度在随后五秒内保持 100%,再在一秒区间内淡出至 0%,
并保持该值。
注:
animate 元素的语义
基于 [SVG 1.1]
§19.2.12 中的定义,而该定义又基于 [SMIL 3.0] §12。
animation 元素是用于分组的容器元素,
其分组对象为外置动画内容,包括
应用于动画内容的元数据。
animation 元素接受零个或多个
属于 Metadata.class 元素
组的元素作为子元素,后跟
零个或多个属于 Animation.class 元素组的元素。
<animation xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: Metadata.class*, Animation.class* </animation> |
在时间语义适用于
animation 元素内容的范围内,此元素的隐含时间区间
被定义为与根时间
范围具有相同的起止边界。
set 元素表示一个或多个要应用的离散变化(动画),
其目标
为关联元素的一个或多个可动画化样式。
set 元素可以作为 (1)
内容元素或 region 元素的子元素出现,
称为内联动画,或
(2) 作为 animation 元素的子元素出现,
称为
外置动画。
在前一种情况下,set 元素的父元素就是关联元素;在
后一种
情况下,任何使用 animate 属性引用 set 元素的
元素都是
关联元素。
set 元素接受零个或多个
属于 Metadata.class 元素
组的元素作为子元素。
<set begin = <time-expression> condition = <condition> dur = <time-expression> end = <time-expression> fill = <fill> repeatCount = <repeat-count> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {任意可动画化的样式属性} 内容: Metadata.class* </set> |
set 元素所针对的样式属性
直接通过使用
TT 样式命名空间中的属性,或不属于任何 TT 命名空间的命名空间中的属性来指定,其中
单个目标动画(关键)值
遵循 <animation-value> 语法。
以不可动画化样式为目标 被视为错误,且必须在 呈现处理时忽略。
注:
与 [SVG 1.1] §19.2.13 不同,此处定义的单个 set 元素
可以用于
对一组目标样式
属性执行离散动画,而不局限于以
单个样式属性为目标。
在 [SVG 1.1] 中,这需要使用多个 set
元素,而不是单个 set 元素。
除了下文列出的约束或差异外,set
元素及其
上述属性的语义定义为 [SVG 1.1] §19.2.13 所规定的语义:
set 元素所针对的属性以及要
应用于这些属性的离散值,
通过直接使用样式属性指定(而
不是使用 SVG 的
attributeName 和 to 属性)。
注:
例如,指定 tts:color="red"
被视为等效于指定 attributeName="tts:color" 和
to="red",如 [SVG 1.1] 中所用。
如果未指定 fill 属性,则应用 fill 值
remove。
使用 set 元素对内容
样式进行动画处理的示例如下:
... <p dur="5s" tts:color="yellow"> <set begin="1s" dur="1s" tts:color="red"/> <set begin="2s" dur="1s" tts:color="green"/> <set begin="3s" dur="1s" tts:color="red"/> 颜色闪烁的文本! </p> ... |
注:
在上例中,内容“颜色 闪烁的文本!”的前景色在 5 秒内从黄色变为红色,再变为绿色,再变为 红色,最后回到黄色。
使用 set 元素对区域
样式进行动画处理的示例如下:
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:tts="http://www.w3.org/ns/ttml#styling"
ttp:cellResolution="40 16">
<head>
<layout>
<region xml:id="r1" timeContainer="seq">
<set dur="10s" tts:origin=" 8c 14c"/>
<set dur="2s" tts:origin=" 2c 2c"/>
<set dur="3s" tts:origin=" 8c 14c"/>
<set dur="2s" tts:origin="14c 4c"/>
<set dur="10s" tts:origin=" 8c 14c"/>
<style tts:extent="24c 2c"/>
</region>
</layout>
</head>
<body region="r1">...</body>
</tt>
|
注:
在上例中,根容器区域被
划分为一个
40 列、16 行的单元格网格。随后,一个区域 r1,
尺寸为 24 列、2 行,被定位在
根容器区域中,其位置随
时间变化,以便
产生移动区域的效果,这种效果可能有助于
避免字幕遮挡底层视频中的人物。
注:
set 元素的语义
基于 [SVG 1.1]
§19.2.13 中的定义,而该定义又基于 [SMIL 3.0] §12。
本节定义 13.2.1 animate 属性, 用于内容元素 和某些布局元素。
animate 属性用于
引用一个或多个元素,它们属于 Animation.class 元素组,
每个元素定义一个特定的外置
动画。
animate 属性可以由以下
元素类型的实例指定:
如果指定了 animate 属性,则其值必须
遵循 [XML Schema Part 2] 定义的 IDREFS 数据类型,
见 §3.3.10;此外,每个 IDREF 都必须引用一个属于 Animation.class
元素组的元素,该元素具有 animation
祖先元素。
给定 IDREF 在 animate 属性的值中
不得出现超过一次。
对于每个外置动画元素 A,
若其由 animate
属性引用,该属性属于元素 E,则执行以下步骤(按指定 IDREF 的顺序):
创建深副本 A',复制自 A;
将 xml:id 属性从
A' 中移除;
将 A' 插入 [children] 信息项属性中,该属性属于
E,使 A'
成为子元素子序列中的最后一个元素,该子序列对应于
Animation.class* 通配符,
位于 E 的内容模型中。
注:
外置动画的语义实质上构成指定内联 动画的简便方式,在 多个引用元素使用同一个动画时很有用。
注:
另请参阅允许使用
animate 属性的具体元素类型定义。
动画属性值包括以下表达式的使用:
<animation-value> 表达式用于指定起始(初始)、中间 或结束(最终)值,其对象为动画所针对的属性。
<animation-value> : ([^;] | escape)+ escape : '\\' char |
<animation-value> 表达式的语法必须满足所有语法 要求,这些要求适用于动画所针对的属性;此外,不得 包含 未转义的分号。
<animation-value> 表达式的语义采用 [SVG 1.1] §19.2.9 中的定义。
<animation-value-list> 表达式用于指定动画值列表,这些值 依次 应用于动画所针对的属性。
<animation-value-list> : <animation-value> (<lwsp>? ";" <lwsp>? <animation-value>)+ |
<animation-value-list> 表达式中 <animation-value> 的语法必须 满足所有语法 要求,这些要求适用于动画所针对的属性。
<animation-value-list> 表达式的语义采用 [SVG 1.1] §19.2.9 中的定义。
<calculation-mode> 表达式用于控制动画的插值模式。
<calculation-mode> : "discrete" | "linear" | "paced" | "spline" |
<calculation-mode> 表达式的语义采用 [SVG 1.1] §19.2.9 中的定义。
<fill> 表达式用于确定动画的活动结束之后, 该动画的效果。
<fill> : "freeze" | "remove" |
<fill> 表达式的语义采用 [SVG 1.1] §19.2.8 中的定义。
<key-splines> 表达式用于指定贝塞尔控制点列表,以控制 动画的 变化节奏,其中每对值以 SEMICOLON (U+003B) 字符分隔, 该字符两侧可以有线性空白 (LWSP) 字符。
<key-splines> 表达式的语义采用
[SVG 1.1] §19.2.9 中应用于 key-splines 属性的定义。
<key-times> 表达式用于指定相对时间值列表,以控制 动画的 变化节奏,其中每对值以 SEMICOLON (U+003B) 字符分隔, 该字符两侧可以有线性空白 (LWSP) 字符。
<key-times> : time ( <lwsp>? ";" <lwsp>? time )* time // 0 ≥ value ≥ 1 : whole | whole "." fraction | "." fraction whole, fraction : <non-negative-integer> |
<key-times> 表达式的语义采用
[SVG 1.1] §19.2.9 中应用于 key-times 属性的定义。
<repeat-count> 表达式用于确定重复动画的 迭代次数(可以为小数)。
<repeat-count> : count // value > 0 | "indefinite" count: : whole | whole "." fraction | "." fraction whole, fraction : <non-negative-integer> |
<repeat-count> 表达式的语义采用 [SVG 1.1] §19.2.8 中的定义。
本节规定核心词汇目录中的元数据 内容,其中 元数据应理解为一个可分离的信息层,它应用于 参数、内容、 样式、布局、时序,甚至元数据本身,其中 元数据所表示的信息采用以下两种形式之一:(1) 由本 规范定义、供文档实例标准化使用的元数据,以及 (2) 在本规范 范围之外定义的任意元数据,其用法和 语义完全取决于应用程序对 TTML 内容的使用。
本规范未定义元数据的任何呈现语义;因此,符合要求的 呈现处理器可以忽略所有元数据内容。
注:
虽然本规范未赋予元数据任何呈现语义,但本规范的超集 配置文件 可以这样做,在这种情况下,此类配置文件定义的任何依赖元数据的呈现语义 均被视为 超出本规范的范围。
14.1.1 metadata 元素用作 对元数据信息进行分组的通用容器元素。
此外,以下元素均定义于 TT 元数据命名空间中, 为预期会在文档实例中普遍使用的元数据 提供标准表示:
metadata 元素用作元数据
信息的通用容器。
可以通过以下方式,使用 metadata 元素表达元数据信息:
(1) 在 metadata
元素上指定一个或多个元数据属性或外部命名空间属性,
(2) 指定一个或多个元数据项或外部命名空间子元素,
(3) 指定一个或多个 data 子
元素,或
(4) 组合使用上述方式。
注:
本规范规定, 文档实例的形式有效性基于 一个 抽象文档实例, 其中已移除所有外部命名空间元素和属性。因此, 以下 XML 表示的内容模型在形式上不包含外部命名空间属性或 外部命名空间子元素; 尽管如此,此类外部命名空间子元素仍可以出现在 TTML 文档实例的具体编码中。
<metadata
condition = <condition>
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
xml:space = ("default" | "preserve")
{TT 元数据命名空间中的任意属性}
内容: (
|
注:
必须在特定元数据项所处的
上下文中评估其含义。核心词汇目录允许
任意数量的 metadata 子元素出现在任意
内容元素类型中。请参阅具体的元素
词汇定义,了解适用于此类
用法的约束。
以下示例说明文档元数据的用法。
...
<head>
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
<ttm:title>文档元数据示例</ttm:title>
<ttm:desc>本文档使用文档元数据。</ttm:desc>
</metadata>
</head>
...
|
以下示例说明元素元数据的用法。
...
<div>
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
<ttm:title>第 6 章 – 夏洛克·福尔摩斯进行演示</ttm:title>
<ttm:desc>福尔摩斯向华生展示凶手如何从窗户进入。</ttm:desc>
</metadata>
</div>
...
|
以下示例说明元数据属性项的用法。
... <div xmlns:ext="http://example.org/ttml#metadata"> <metadata ext:ednote="remove this division prior to publishing"/> </div> ... |
注:
在上例中,使用来自外来(外部)
命名空间的全局属性表达一个元数据属性,该属性在
语义上应用于包含它的 div 元素。请注意,
该属性也可以直接在 div 元素上表达;
但是,在此情况下,作者希望将某些元数据
属性单独分离出来,方法是在 metadata
元素上间接表达这些属性。
以下示例说明外部元素元数据的用法。
... <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dc:title>外部元素元数据示例</dc:title> <dc:description>使用外部命名空间中的元素表达元数据。</dc:description> <dc:format xsi:type="dcterms:IMT">application/ttml+xml</dc:format> </metadata> ... |
注:
在上例中,使用都柏林核心 元数据词汇定义的多个元素表达文档级元数据。
ttm:actor 元素用于将(基于角色的)人物主体的定义
与扮演该人物的另一个主体关联。
<ttm:actor agent = IDREF condition = <condition> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: EMPTY </ttm:actor> |
agent 属性位于 ttm:actor 元素上,该属性必须
引用一个有意义的 ttm:agent 元素,该元素表示
扮演某个人物角色的主体。
通过
agent 属性从 ttm:actor 元素引用其
父 ttm:agent 元素的用法已弃用,而且,
本规范未定义此类循环引用链的
语义。
注:
如果实现沿着此类 主体引用的循环链进行处理,则建议检测这种 情况,并终止对主体引用的进一步解引用, 以避免无限循环。
注:
对于演员扮演自己的情况,
例如史蒂夫·库根在《旅途》中扮演史蒂夫·库根,
预期做法是使用两个 ttm:agent 元素。第一个
元素(对应于史蒂夫·库根本人)使用一个
type 属性,其值为 person,而
第二个元素(对应于史蒂夫·库根这个角色)使用 (i)
一个 type 属性,其值为 character,以及 (ii)
一个 ttm:actor 子元素,该子元素引用第一个
ttm:agent 元素。
ttm:actor 元素的示例见上文
示例片段 – 主体元数据。
ttm:agent 元素用于定义一个主体,以便将
内容信息与参与生成或表达该
内容的主体关联。
ttm:agent 元素接受零个或多个 ttm:name
元素作为子元素,后跟
零个或一个 ttm:actor 元素。
应至少指定一个 ttm:name 子元素,用于表达
该主体
的名称,无论是个人、角色、群体还是组织的名称。
<ttm:agent condition = <condition> type = ("person" | "character" | "group" | "organization" | "other") xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: ttm:name*, ttm:actor? </ttm:agent> |
必须在每个 ttm:agent 元素上指定一个 type 属性,而且,
如果指定了该属性,则其值必须是以下值之一:
person
character
group
organization
other
如果 type 属性的值为 character,则
ttm:agent 元素实例应指定一个 ttm:actor 子元素,
该子元素指定充当扮演者的主体。
只有在以下情况下,ttm:agent 元数据项才被视为有意义:
将其指定为 head 元素的子元素,或指定为
metadata 元素的子元素,而该元素又是 head 元素的子元素。
注:
ttm:agent 元素实例通常通过
ttm:agent
属性引用,该属性位于内容元素类型上。
注:
如果一个角色主体由多个演员扮演,则可以指定(并引用)多个角色 主体,其中该角色的不同定义 指定不同的演员。
以下示例说明主体元数据的用法。
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml" xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
<head>
<ttm:agent xml:id="connery" type="person">
<ttm:name type="family">康纳利</ttm:name>
<ttm:name type="given">托马斯·肖恩</ttm:name>
<ttm:name type="alias">肖恩</ttm:name>
<ttm:name type="full">托马斯·肖恩·康纳利爵士</ttm:name>
</ttm:agent>
<ttm:agent xml:id="bond" type="character">
<ttm:name type="family">邦德</ttm:name>
<ttm:name type="given">詹姆斯</ttm:name>
<ttm:name type="alias">007</ttm:name>
<ttm:actor agent="connery"/>
</ttm:agent>
</head>
<body>
<div>
...
<p ttm:agent="bond">我四处奔走,算是持照的问题解决专家。</p>
...
</div>
</body>
</tt>
|
注:
在上例中,定义了两个主体:真实的(个人)主体肖恩·
康纳利,以及虚构的(角色)主体詹姆斯·邦德,
后者通过一个
ttm:actor 元素与前者关联。随后,从内容(即
p 元素)引用与该内容关联的
(负责生成该内容的)角色主体。请注意,在此示例中,
ttm:agent 元数据项被指定为文档
head 元素的直接子元素,而未
放置在容器 metadata 元素中。
ttm:copyright 元素用于表达一项人类可读的版权声明,
该声明适用于某个作用域层级。
适用于整个文档的版权声明应作为
head 元素的子元素出现。
<ttm:copyright condition = <condition> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: #PCDATA </ttm:copyright> |
注:
本规范未定义 ttm:copyright 元素的具体用途。
ttm:desc 元素用于表达对
特定元素实例的人类可读描述。
<ttm:desc condition = <condition> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: #PCDATA </ttm:desc> |
注:
本规范未定义 ttm:desc 元素的具体用途。
ttm:desc 元素的示例见上文
示例片段 – 文档
元数据和
示例片段 – 元素
元数据。
ttm:item 元素用于表达任意具名元数据项。
ttm:item 元素接受以下两种内容模型之一:
(1) 一个或多个文本节点(即 #PCDATA)
或
(2) 零个或多个嵌套的 ttm:item 元素。
<ttm:item condition = <condition> name = <item-name> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: #PCDATA | ttm:item* </ttm:item> |
必须指定一个 name 属性来标识该项的名称,其值
必须遵循
<item-name> 值表达式。
注:
对于出现多个指定相同名称的具名元数据项, 未施加一般性约束;但是, 特定具名项的定义可以进一步约束使用上下文,以及 出现多个同名项的可能情况。
具名元数据项的值为:
(1) 如果元素没有文本子节点或元素
节点,则为空,
(2) 如果 ttm:item 元素的子节点
仅由文本节点组成,则为该元素的字符内容,或
(3) 一组具名元数据子项。
注:
特定具名项的定义通常会约束允许的 值集合。此外,该定义可以 规定,在未指定值时隐含某个特定值。
注:
当具名元数据项的值由自然语言文本组成时,
xml:lang 属性可以直接
指定于该元数据项元素上,或从该元素最近的
祖先元素
间接继承,以标识适用于该具名元数据项值的语言。
以下示例说明具名元数据项的用法,其中 使用一个具名元数据项 将简单数据嵌入与 原始文件名关联。
...
<image>
<source>
<data type="image/png">
<ttm:item name="originalFileName"
xmlns:ttm="http://www.w3.org/ns/ttml#metadata">image.png</ttm:item>
<chunk length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</chunk>
</data>
</source>
</image>
...
|
ttm:name 元素用于指定个人、角色、
群体或组织的名称。
<ttm:name condition = <condition> type = ("full" | "family" | "given" | "alias" | "other") xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: #PCDATA </ttm:name> |
必须在每个 ttm:name 元素上指定一个 type 属性,而且,
如果指定了该属性,则其值必须是以下值之一:
full
family
given
alias
other
名称类型与名称的语法表达形式之间的关系 未在本规范中定义。
ttm:name 元素的两个示例见上文
示例片段 – 主体元数据。
ttm:title 元素用于表达
特定元素实例的人类可读标题。
<ttm:title condition = <condition> xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") 内容: #PCDATA </ttm:title> |
注:
本规范未定义 ttm:title 元素的具体用途。
ttm:title 元素的示例见上文
示例片段 – 文档
元数据和
示例片段 – 元素
元数据。
本节规定 TT 元数据命名空间中的以下属性,
用于 metadata 元素和
内容元素:
ttm:agent 属性接受一个 IDREFS
值,并用于内容元素,以指定
表演内容或
参与内容表演的主体。
如果指定了 ttm:agent 属性,则该属性必须引用有意义的
ttm:agent 元素实例。
同一个 IDREF,ID,在
ttm:agent 属性的值中不应出现超过一次。
注:
此约束旨在避免使用冗余的主体引用。
ttm:agent 属性的示例见上文
示例片段 – 主体元数据。
内容作者可以使用 ttm:role 属性
来表达
角色、功能或特征,
其对象为以此标记的内容元素。
如果指定了该属性,则其值必须遵循以下 语法:
ttm:role role (<lwsp> role)* role : "action" | "caption" | "description" | "dialog" | "expletive" | "kinesic" | "lyrics" | "music" | "narration" | "quality" | "sound" | "source" | "suppressed" | "reproduction" | "thought" | "title" | "transcription" | extension-role extension-role : "x-" token-char+ token-char : { XML NameChar } // [XML 1.0] 产生式 [4a] |
同一个 role 标记,R,在
ttm:role 属性的值中不应出现超过一次。
注:
此约束旨在避免使用冗余的角色标记。
注:
ttm:role 的所有不以
x- 前缀开头的值均保留供未来标准化使用。
注:
如果使用带有自定义 x- 前缀的 ttm:role 形式,
则建议同时使用组织专有的中缀,
以防止冲突。例如,x-example-org-custom-role。此外,
角色值注册表位于
https://www.w3.org/wiki/TTML/RoleRegistry
,以促进互操作性并避免冲突。
元数据词汇可以使用以下表达式:
<item-name> 表达式用于指定元数据项的名称,该元数据项通过 ttm:item 元素表达。
<item-name> : <named-item> | xsd:QName |
如果项名称表达式采用限定名(xsd:QName)的形式, 则该限定名的前缀必须已在命名空间声明中声明, 声明方式应符合 [XML Namespaces 1.0] 的规定。
<item-name> 的所有不采用限定名(xsd:QName)形式的值, 要么由本规范定义,要么保留供 W3C 未来标准化使用。
注:
预期本规范定义的所有项名称均为非限定名(不带 前缀),而由 外部规范定义的项名称均为限定名(带有前缀)。
注:
请参阅 https://www.w3.org/wiki/TTML/ItemNameRegistry ,了解 限定项命名空间的注册表。
<named-item> 值是具名元数据项枚举集合的一个成员,
它通过
ttm:item 元素与某个值关联。
<named-item> : "altText" | "usesForced" |
altText表示替代文本内容的字符串,其值
遵循 xsd:string。
通常用于
为某些相关图像内容提供等效文本或摘要。
注:
此等效文本可以用于支持内容索引,并 便于 在创作过程中检查文档质量。
注:
与 [HTML] 不同,此具名 元数据项的文本内容并非用于在引用它的元素的 主要内容(相对于替代内容) 无法呈现时,代替该元素呈现;但是,此替代文本内容可以由 辅助技术使用。
usesForced表示某个 <condition> 表达式
是否使用 forced 绑定
参数的布尔值,其值
遵循 xsd:boolean。如果
此具名元数据项
出现在文档实例中,则必须
将其指定为子元素,
其父元素为 head 元素。
本附录是规范性的。
在没有其他要求的情况下,文档实例应 使用 UTF-8 字符编码,具体编码为 格式良好的 XML 1.0 [XML 1.0] 文档。
注:
使用 XML 1.0 [XML 1.0] 作为 TTML 的具体编码时,仅定义了
以下命名字符实体:
&、'、>、< 和
"。
本附录是规范性的。
就本规范而言,精简 XML 信息集是 仅包含以下信息项 及信息项属性的 XML 信息集 [XML InfoSet]:
[namespace URI]
[local name]
[normalized value]
注:
如果精简 XML 信息集是从
XML 文档实体的具体
表示构建的,则 [normalized value] 信息项可能包含
未规范化的 XML 空白字符
	 (HT)、 (LF)、 (CR) 和  (SPACE),具体规定见 [XML
1.0],§3.3.3,步骤 (3) 的第一项。
特别是,如果使用数字字符引用来表示其中某个
空白字符(该引用不会被规范化),
而非使用空白字符本身(该字符会被规范化),则可能出现这种情况。
注:
另请参阅属性信息项。
本附录是规范性的。
本附录规定以下模式,用于 文档实例:
Relax NG,紧凑语法 (RNC) 模式
XML 模式定义 (XSD) 模式
在任何情况下,如果本附录规定的模式与 本规范正文定义的文档类型、元素类型或属性类型的 规范性定义存在差异,则以本 规范正文为准。
基于 Relax NG 紧凑语法 (RNC) [RELAX NG] 的 TTML 内容模式可从 ZIP 归档获取。在定义本规范所规定的 定时文本标记语言内容的 有效性时,此模式应视为非规范性的。 特别是,TTML 内容的形式有效性 由3.1 文档符合性定义。
基于 W3C XML 模式定义 (XSD) [XML Schema Part 1] 的 TTML 内容模式可从 ZIP 归档获取。在定义本规范所规定的 定时文本标记语言内容的 有效性时,此模式应视为非规范性的。 特别是,TTML 内容的形式有效性 由3.1 文档符合性定义。
本附录是规范性的。
本附录规定:(1) 一组特性指定符。每个指定符 指示本规范定义的一个或多个语法和(或)语义 特性。此外,(2) 对每个指定的特性,规定该特性是必需的还是可选的, 适用于符合以下要求的TTML 内容处理器: 3.2.2 转换处理器的一致性或 3.2.3 呈现处理器的一致性。
注:
称TTML处理器针对特性指定符实现转换语义或 实现呈现语义,其中该特性指定符为F, 是指它满足本附录的要求,这些要求适用于 特性指定符F的定义中分别涉及转换处理或 呈现处理的部分。
注:
如果以下特性指定符的定义未将其范围限定为特定元素类型或上下文, 则支持该(指定的)特性, 意味着在所有允许的使用上下文中支持该特性。
例如,支持#length-root-container-relative
特性,意味着支持在任意<length>
表达式中使用该特性,
除非另有规定禁止这种使用。
注:
如果处理器实现不支持某个特性的语义, 但该特性的 语法表达式是该实现已知的,则建议该 实现能够解析该表达式,同时忽略该表达式中不受支持的组成部分的语义。
例如,如果支持#textEmphasis-minimal,
但不支持#textEmphasis-color,
则对于tts:textEmphasis的值,
其中包含<emphasis-color> 组成部分的值,
应当进行解析,同时忽略该不受支持的组成部分的语义
(但不忽略该属性值中其他
受支持的组成部分的语义)。
特性指定符表示为遵循以下形式的 字符串:
feature-designation
: feature-namespace designation
feature-namespace
: TT Feature Namespace // http://www.w3.org/ns/ttml/feature/
designation
: "#" token-char+
token-char
: { XML NameChar } // [XML 1.0] Production [4a]
本规范未定义的所有feature-designation值,
均保留用于将来的标准化。
以下各节定义所有特性指定符。这些指定符 表示为相对URI(片段标识符), 以TT特性命名空间的基URI为基准。
如果本节中特性指定符的定义引用了同一 特性指定符在 [TTML1]中的定义,并且后者(被引用的定义)使用了“所有已定义的 值”这一表述,则这些 值由[TTML1]中定义的所有值构成。而如果 “所有已定义的值”这一表述 直接出现在下文中,则这些值由本规范中定义的所有值构成。
注:
本节中带有-version-2后缀的特性指定符,
是新定义的指定符,
定义于TTML规范的本(第2)版,即TTML2。
TTML处理器支持#animate特性,是指它支持以下
特性:
#animate特性是
#animate-minimal特性的语法和语义扩展。
内容配置文件要求或允许使用#animate
特性,同时禁止使用以下任一
特性,是一种错误:
#animate-fill、
#animate-minimal、
#animate-paced、
#animate-repeat或
#animate-spline。
TTML 转换处理器支持
#animate-minimal
特性,是指它能够识别并转换在以下条件下使用的animate元素的语义:
值discrete和linear用于
calcMode属性。
TTML 呈现处理器支持
#animate-minimal
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
注:
支持在calcMode属性中使用
discrete和linear值,
意味着还支持keyTimes属性。
注:
支持#animate-minimal特性,并不意味着支持以下任何
特性:
#animate-fill、
#animate-paced、
#animate-repeat或
#animate-spline。
TTML 转换处理器支持
#animate-fill
特性,是指它能够识别并转换fill
属性的语义,该属性是
animate元素的属性。
TTML 呈现处理器支持
#animate-fill
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
TTML 转换处理器支持
#animate-paced
特性,是指它能够识别并转换在以下条件下使用的animate元素的语义:
值paced用于calcMode属性。
TTML 呈现处理器支持
#animate-paced
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
TTML 转换处理器支持
#animate-repeat
特性,是指它能够识别并转换以下属性的语义:
repeatCount属性,该属性是
animate元素的属性。
TTML 呈现处理器支持
#animate-repeat
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
TTML 转换处理器支持
#animate-spline
特性,是指它能够识别并转换在以下条件下使用的animate元素的语义:
值spline用于calcMode属性。
TTML 呈现处理器支持
#animate-spline
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
注:
支持在calcMode属性中使用spline值,
意味着还支持
以下属性:keySplines属性。
TTML内容处理器支持#animation
特性,是指它支持#animation特性,符合[TTML1]中§D.1.1的定义。
注:
支持#animation特性,在功能上
等同于支持#set特性。
内容配置文件要求或允许使用#animation
特性,同时禁止使用的对象是
#set特性,是一种错误。
TTML 转换处理器支持
#animation-out-of-line
特性,是指它能够识别并转换以下词汇,其定义见13 动画:
并且支持以下属性,该属性定义于13.2 动画属性词汇:
TTML 呈现处理器支持
#animation-out-of-line
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
TTML处理器支持#animation-version-2特性,
是指它支持以下特性:
#animation-version-2特性是
#animation特性的语法和语义扩展。
内容配置文件
要求或允许使用#animation-version-2特性,同时禁止使用以下任一
特性,是一种错误:#animate、
#animation-out-of-line或
#animation。
TTML 转换处理器支持
#audio
特性,是指它能够识别并转换以下词汇,
这些词汇定义于9 嵌入内容:
TTML 呈现处理器支持
#audio
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
TTML处理器支持#audio-description特性,
是指它支持以下特性:
内容配置文件
要求或允许使用#audio-description特性,同时禁止使用以下任一
特性,是一种错误:
#audio、
#gain或
#pan。
TTML处理器支持#audio-speech特性,
是指它支持以下特性:
内容配置文件要求或允许使用#audio-speech
特性,同时禁止使用以下任一
特性,是一种错误:
#pitch、
#speak或
#speech。
TTML处理器支持#background特性,
是指它支持以下特性:
内容配置文件要求或允许使用#background
特性,同时禁止使用以下任一
特性,是一种错误:
#backgroundColor或
#background-image。
TTML处理器支持#background-image特性,
是指它支持以下特性:
内容配置文件要求或允许使用#background
特性,同时禁止使用以下任一
特性,是一种错误:
#backgroundClip、
#backgroundExtent、
#backgroundImage、
#backgroundOrigin、
#backgroundPosition或
#backgroundRepeat。
TTML 转换处理器支持
#backgroundClip特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:backgroundClip
属性。
TTML 呈现处理器支持
#backgroundClip特性,是指它实现了呈现语义支持,
适用于所有已定义的值,这些值所属的属性是tts:backgroundClip
属性。
TTML内容处理器支持#backgroundColor
特性,是指它支持#backgroundColor特性,符合[TTML1]中§D.1.2的定义。
注:
支持#backgroundColor特性,在功能上
等同于支持以下特性:
内容配置文件
要求或允许使用#backgroundColor特性,同时禁止使用以下任一
特性,是一种错误:#backgroundColor-block、
#backgroundColor-inline或
#backgroundColor-region。
TTML内容处理器支持#backgroundColor-block
特性,是指它支持#backgroundColor-block特性,符合[TTML1]中§D.1.3的定义。
TTML内容处理器支持#backgroundColor-inline
特性,是指它支持#backgroundColor-inline特性,符合[TTML1]中§D.1.4的定义。
TTML内容处理器支持#backgroundColor-region
特性,是指它支持#backgroundColor-region特性,符合[TTML1]中§D.1.5的定义。
TTML 转换处理器支持
#backgroundExtent特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:backgroundExtent
属性。
TTML 呈现处理器支持
#backgroundExtent特性,是指它实现了呈现语义支持,
适用于所有已定义的值,这些值所属的属性是tts:backgroundExtent
属性。
TTML 转换处理器支持
#backgroundImage特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:backgroundImage
属性。
TTML 呈现处理器支持
#backgroundImage特性,是指它实现了呈现语义支持,
适用于所有已定义的值,这些值所属的属性是tts:backgroundImage
属性。
TTML 转换处理器支持
#backgroundOrigin特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:backgroundOrigin
属性。
TTML 呈现处理器支持
#backgroundOrigin特性,是指它实现了呈现语义支持,
适用于所有已定义的值,这些值所属的属性是tts:backgroundOrigin
属性。
TTML 转换处理器支持
#backgroundPosition特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:backgroundPosition
属性。
TTML 呈现处理器支持
#backgroundPosition特性,是指它实现了呈现语义支持,
适用于所有已定义的值,这些值所属的属性是tts:backgroundPosition
属性。
TTML 转换处理器支持
#backgroundRepeat特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:backgroundRepeat
属性。
TTML 呈现处理器支持
#backgroundRepeat特性,是指它实现了呈现语义支持,
适用于所有已定义的值,这些值所属的属性是tts:backgroundRepeat
属性。
TTML 转换处理器支持
#base
特性,是指它能够识别并转换xml:base
属性,该属性应用于6.1 配置文件元素词汇中定义的以下词汇:
TTML 呈现处理器支持
#base
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
TTML 转换处理器支持
#base-general
特性,是指它能够识别并转换xml:base
属性,该属性应用于6.1
配置文件元素词汇中定义且允许该属性的所有词汇,但以下词汇除外:
TTML 呈现处理器支持
#base-general
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
TTML处理器支持#base-version-2特性,
是指它支持以下特性:
#base-version-2特性是
#base特性的语法和语义扩展。
内容配置文件要求或允许使用#base-version-2
特性,同时
禁止使用以下任一特性,是一种错误:
#base或
#base-general。
TTML内容处理器支持#bidi
特性,是指它支持#bidi特性,符合[TTML1]中§D.1.6的定义。
内容配置文件要求或允许使用#bidi特性,同时
禁止使用以下任一
特性,是一种错误:#direction、
#unicodeBidi或
#writingMode-horizontal。
TTML处理器支持#bidi-version-2特性,
是指它支持以下特性:
#bidi-version-2特性是
#bidi特性的语法和语义扩展。
内容配置文件要求或允许使用#bidi-version-2
特性,同时禁止使用以下任一
特性,是一种错误:
#bidi或
#unicodeBidi-isolate。
TTML处理器支持#border特性,
是指它支持以下特性:
内容配置文件要求或允许使用#border特性,同时
禁止使用以下任一
特性,是一种错误:
#border-block、
#border-inline或
#border-region。
TTML 转换处理器支持
#border-block特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:border
属性,该属性应用于内容元素,
这些元素在呈现处理期间
生成块区域。
TTML 呈现处理器支持
#border-block特性,是指它实现了呈现语义
支持,适用于tts:border
属性,该属性所应用的内容元素生成
一个
块区域。
TTML 转换处理器支持
#border-inline特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:border
属性,该属性应用于内容元素,
这些元素在呈现处理期间
生成行内区域。
TTML 呈现处理器支持
#border-inline特性,是指它实现了呈现语义
支持,适用于tts:border
属性,该属性所应用的内容元素生成
一个
行内区域。
TTML处理器支持#border-radii特性,
是指它支持以下特性:
内容配置文件要求或允许使用#border-radii
特性,同时禁止使用以下任一
特性,是一种错误:
#border-radii-1或
#border-radii-2。
TTML 转换处理器支持
#border-radii-1特性,是指它能够识别并转换以下值:
由1个组成部分构成的
<border-radii>值表达式的值,
这些值在tts:border
属性中指定。
TTML 呈现处理器支持
#backgroundClip特性,是指它对以下值实现了呈现语义支持:
由1个组成部分构成的
<border-radii>值表达式的值,
这些值在tts:border
属性中指定。
TTML 转换处理器支持
#border-radii-2特性,是指它能够识别并转换以下值:
由2个组成部分构成的
<border-radii>值表达式的值,
这些值在tts:border
属性中指定。
TTML 呈现处理器支持
#backgroundClip特性,是指它对以下值实现了呈现语义支持:
由2个组成部分构成的
<border-radii>值表达式的值,
这些值在tts:border
属性中指定。
TTML 转换处理器支持
#border-region特性,是指它能够识别并转换所有已定义的值,
这些值所属的属性是tts:border
属性,该属性应用于region元素。
TTML 呈现处理器支持
#border-region特性,是指它实现了呈现语义
支持,适用于tts:border
属性应用于region元素的情况。
TTML内容处理器支持#cellResolution
特性,是指它支持#cellResolution特性,符合[TTML1]中§D.1.7的定义。
TTML 转换处理器支持
#chunk
特性,是指它能够识别并转换以下词汇,
这些词汇定义于9 嵌入内容:
TTML 呈现处理器支持
#chunk
特性,是指它实现了呈现语义支持,
适用于上面列出的相同词汇。
TTML内容处理器支持#clockMode
特性,是指它支持#clockMode特性,符合[TTML1]中§D.1.8的定义。
TTML内容处理器支持#clockMode-gps
特性,是指它支持#clockMode-gps特性,符合[TTML1]中§D.1.9的定义。
TTML内容处理器支持#clockMode-local
特性,是指它支持#clockMode-local特性,符合[TTML1]中§D.1.10的定义。
TTML内容处理器支持#clockMode-utc
特性,是指它支持#clockMode-utc特性,符合[TTML1]中§D.1.11的定义。
TTML内容处理器支持#color
特性,是指它支持#color特性,符合[TTML1]中§D.1.12的定义。
TTML处理器支持#condition特性,是指它支持以下
特性:
内容配置文件要求或允许使用#condition
特性,同时禁止使用以下任一
特性,是一种错误:
#condition-fn-media、
#condition-fn-parameter、
#condition-fn-supports、
#condition-primary。
TTML 内容处理器支持
#condition-fn-media特性,是指它支持
<media-function>
子表达式在<condition>值
表达式中的使用。
TTML 内容处理器支持
#condition-fn-parameter特性,是指它支持
<parameter-function>
子表达式在<condition>值
表达式中的使用。
TTML 内容处理器支持
#condition-fn-supports特性,是指它支持
<supports-function>
子表达式在<condition>值
表达式中的使用。
TTML 内容处理器支持
#condition-primary特性,是指它支持
<condition>值表达式,且该表达式
不包含以下内容:
<condition-function>子表达式。
TTML内容处理器支持#content
特性,是指它支持#content特性,符合[TTML1]中§D.1.13的定义。
TTML 处理器支持 #content-sizing 特性,是指它
支持以下特性:
内容配置文件要求或允许使用 #content-sizing
特性,同时禁止使用以下任一
特性,是一种错误:
#bpd 或
#ipd。
TTML 转换处理器 支持
#contentProfiles
特性,是指它 (1) 支持 非组合配置文件,并且
(2) 能够识别并转换:
以下配置文件属性词汇,其定义见 6.2 配置文件属性词汇:
first 值,该值属于
ttp:inferProcessorProfileSource
属性,
designator 属性,该属性位于
ttp:profile 元素上,
content 值,属于 type 属性,该属性位于
ttp:profile 元素上,以及
prohibited 值,属于 value 属性,该属性位于
ttp:feature 和
ttp:extension 元素上。
TTML 呈现处理器 支持
#contentProfiles
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 转换处理器 支持
#contentProfiles-combined
特性,是指它 (1) 支持 #contentProfiles 特性,
(2) 支持 组合配置文件,并且 (3) 能够识别并
转换:
以下配置文件属性词汇,其定义见 6.2 配置文件属性词汇:
combined 值,该值属于
ttp:inferProcessorProfileSource
属性,以及
combine 属性,该属性位于
ttp:profile 元素上。
TTML 呈现处理器 支持
#contentProfiles-combined
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
#contentProfiles-combine 特性是
#contentProfiles 特性的语法和语义扩展。
内容配置文件要求或允许使用
#contentProfiles-combine 特性,
同时禁止使用 #contentProfiles
特性,是一种错误。
注:
支持 #contentProfiles-combined 特性,并不意味着支持 嵌套配置文件。
TTML 内容处理器支持 #core
特性,是指它支持 #core 特性,符合 [TTML1] 中 §D.1.14 的定义。
TTML 转换处理器 支持
#data
特性,是指它能够识别并转换以下
词汇,其定义见 9 嵌入内容:
TTML 呈现处理器 支持
#data
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 内容处理器支持 #direction
特性,是指它支持 #direction 特性,符合 [TTML1] 中 §D.1.15 的定义。
TTML 转换处理器 支持
#disparity 特性,是指它能够识别并
转换 tts:disparity 属性。
TTML 呈现处理器 支持
#disparity 特性,是指它实现了呈现语义支持,适用于
tts:disparity 属性。
注:
支持 #disparity 特性,并不意味着支持
#region-implied-animation
特性。
TTML 内容处理器支持 #display
特性,是指它支持 #display 特性,符合 [TTML1] 中 §D.1.16 的定义。
内容配置文件要求或允许使用 #display
特性,同时禁止使用以下任一
特性,是一种错误:
#display-block、
#display-inline 或
#display-region。
TTML 内容处理器支持 #display-block
特性,是指它支持 #display-block 特性,符合 [TTML1] 中 §D.1.17 的定义。
TTML 内容处理器支持 #display-inline
特性,是指它支持 #display-inline 特性,符合 [TTML1] 中 §D.1.18 的定义。
TTML 转换处理器 支持
#display-inlineBlock 特性,是指它能够识别并转换
inlineBlock
值,该值属于 tts:display 属性,
该属性应用于在呈现处理期间会生成
行内区域的 内容元素。
TTML 呈现处理器 支持
#display-inlineBlock 特性,是指它支持以下值的呈现语义:
inlineBlock
值,该值属于 tts:display 属性,
该属性应用于在呈现处理期间会生成
行内区域的 内容元素。
TTML 内容处理器支持 #display-region
特性,是指它支持 #display-region 特性,符合 [TTML1] 中 §D.1.19 的定义。
TTML 处理器支持 #display-version-2 特性,是指它
支持以下特性:
#display-version-2 特性是
#display 特性的语法和语义扩展。
内容配置文件要求或允许使用
#display-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#display、
#display-block、
#display-inline、
#display-inlineBlock 或
#display-region。
TTML 内容处理器支持 #displayAlign
特性,是指它支持 #displayAlign 特性,符合 [TTML1] 中 §D.1.20 的定义。
内容配置文件要求或允许使用 #displayAlign
特性,同时禁止使用以下任一
特性,是一种错误:#displayAlign-region 或
#displayAlign-relative。
TTML 转换处理器 支持
#displayAlign-block 特性,是指它实现了转换语义
支持,适用于 tts:displayAlign
属性,该属性应用于 内容元素,这些元素会在
呈现处理期间生成块区域。
TTML 呈现处理器 支持
#displayAlign-block 特性,是指它实现了呈现语义
支持,适用于 tts:displayAlign
属性,该属性应用于 内容元素,这些元素生成
块区域。
TTML 转换处理器 支持
#displayAlign-justify 特性,是指它能够识别并
转换 justify 值,该值属于 tts:displayAlign 属性。
TTML 呈现处理器 支持
#displayAlign-justify 特性,是指它实现了呈现语义支持,适用于
justify 值,
该值属于 tts:displayAlign 属性。
TTML 转换处理器 支持
#displayAlign-region 特性,是指它实现了转换语义
支持,适用于 tts:displayAlign
属性应用于 region 元素的情况。
TTML 呈现处理器 支持
#displayAlign-region 特性,是指它实现了呈现语义
支持,适用于 tts:displayAlign
属性应用于 region 元素的情况。
TTML 转换处理器 支持
#displayAlign-relative 特性,是指它能够识别并
转换 before、center
和 after 值,这些值属于 tts:displayAlign
属性。
TTML 呈现处理器 支持
#displayAlign-relative 特性,是指它实现了呈现语义
支持,适用于 before、center 和
after 值,这些值属于 tts:displayAlign
属性。
TTML 处理器支持 #displayAlign-version-2 特性,是指它
支持以下特性:
#displayAlign-version-2 特性是
#displayAlign 特性的语法和语义扩展。
内容配置文件要求或允许使用
#displayAlign-version-2 特性,同时禁止使用以下任一
特性,是一种错误:
#displayAlign、
#displayAlign-block、
#displayAlign-justify、
#displayAlign-region 或
#displayAlign-relative。
TTML 转换处理器 支持
#displayAspectRatio 特性,是指它能够识别并
转换 ttp:displayAspectRatio
属性。
TTML 呈现处理器 支持
#displayAspectRatio 特性,是指它实现了呈现语义支持,
适用于 ttp:displayAspectRatio
属性。
TTML 内容处理器支持 #dropMode
特性,是指它支持 #dropMode 特性,符合 [TTML1] 中 §D.1.21 的定义。
内容配置文件要求或允许使用 #dropMode
特性,同时禁止使用以下任一
特性,是一种错误:#dropMode-dropNTSC、
#dropMode-dropPAL 或
#dropMode-nonDrop。
TTML 内容处理器支持 #dropMode-dropNTSC
特性,是指它支持 #dropMode-dropNTSC 特性,符合 [TTML1] 中 §D.1.22 的定义。
TTML 内容处理器支持 #dropMode-dropPAL
特性,是指它支持 #dropMode-dropPAL 特性,符合 [TTML1] 中 §D.1.23 的定义。
TTML 内容处理器支持 #dropMode-nonDrop
特性,是指它支持 #dropMode-nonDrop 特性,符合 [TTML1] 中 §D.1.24 的定义。
TTML 处理器支持 #embedded-audio 特性,是指它
支持以下特性:
内容配置文件要求或允许使用 #embedded-audio
特性,同时禁止使用以下任一
特性,是一种错误:
#embedded-data 或
#audio。
TTML 处理器支持 #embedded-content 特性,是指它
支持以下特性:
内容配置文件要求或允许使用
#embedded-content 特性,同时禁止使用以下任一
特性,是一种错误:
#embedded-audio、
#embedded-font 或
#embedded-image。
TTML 处理器支持 #embedded-data 特性,是指它
支持以下特性:
内容配置文件要求或允许使用 #embedded-data
特性,同时禁止使用以下任一
特性,是一种错误:
#chunk、
#data、
#resources 或
#source。
TTML 处理器支持 #embedded-font 特性,是指它
支持以下特性:
内容配置文件要求或允许使用 #embedded-font
特性,同时禁止使用以下任一
特性,是一种错误:
#embedded-data 或
#font。
TTML 处理器支持 #embedded-image 特性,是指它
支持以下特性:
内容配置文件要求或允许使用 #embedded-image
特性,同时禁止使用以下任一
特性,是一种错误:
#embedded-data 或
#image。
TTML 内容处理器支持 #extent
特性,是指它支持 #extent 特性,符合 [TTML1] 中 §D.1.25 的定义。
内容配置文件要求或允许使用 #extent 特性,
同时禁止使用以下任一
特性,是一种错误:#extent-region 或
#extent-root。
注:
支持 #extent 特性,并不意味着支持
#region-implied-animation
特性。
TTML 内容处理器支持 #extent-auto 特性,是指它支持以下值的
语法和语义:auto 值,该值属于 tts:extent
属性,其定义见 [TTML1],§8.2.7。
TTML 转换处理器 支持
#extent-auto-version-2 特性,是指它能够识别并
转换 auto 值的语法和语义,该值属于 tts:extent
属性,其定义见本规范。
TTML 呈现处理器 支持
#extent-auto-version-2
特性,是指它实现了呈现语义支持,适用于
auto 值的语义扩展,该值属于
tts:extent 属性,扩展如上所述。
#extent-auto-version-2 特性是
#extent-auto 特性的语义扩展。
内容配置文件要求或允许使用
#extent-auto-version-2 特性,同时禁止使用 (1)
#extent-auto 特性
或 (2) 以下全部特性,是一种错误:
#extent-root、
#extent-region 和
#extent-image。
TTML 转换处理器 支持
#extent-contain 特性,是指它能够识别并
转换 contain 值,该值属于 tts:extent
属性。
TTML 呈现处理器 支持
#extent-contain 特性,是指它实现了呈现语义支持,适用于
contain 值,该值属于
tts:extent 属性。
TTML 转换处理器 支持
#extent-cover 特性,是指它能够识别并
转换 cover 值,该值属于 tts:extent
属性。
TTML 呈现处理器 支持
#extent-cover 特性,是指它实现了呈现语义支持,适用于
cover 值,该值属于
tts:extent 属性。
TTML 处理器支持 #extent-full-version-2 特性,是指它支持
以下特性:
#extent-full-version-2 特性是
#extent-version-2 特性的语法和语义扩展。
内容配置文件要求或允许使用
#extent-full-version-2 特性,同时禁止使用
以下任一特性,是一种错误:
#extent-contain、
#extent-cover、
#extent-measure 或
#extent-version-2。
注:
支持 #extent-full-version-2 特性,并不意味着支持
#region-implied-animation
特性。
TTML 转换处理器 支持
#extent-image 特性,是指它支持以下属性值:
tts:extent 属性中由
#extent-auto-version-2 和
#extent-length-version-2 特性支持的值,
且该属性应用于 image 元素。
TTML 呈现处理器 支持
#extent-image
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
内容配置文件要求或允许使用 #extent-image
特性,同时禁止使用以下任一
特性,是一种错误:#extent、
特性:#extent-auto-version-2 或
#extent-length-version-2。
TTML 内容处理器支持 #extent-length 特性,是指它支持
<length> 组成部分的值,
这些值属于 tts:extent 属性,其定义见 [TTML1],§8.2.7。
TTML 内容处理器支持 #extent-length-version-2 特性,是指它
在以下情况下支持
#length-version-2 特性:该特性应用
于
<length> 组成部分的值,
这些值属于 tts:extent 属性。
#extent-length-version-2 特性是
#extent-length 特性的语法和语义扩展。
内容配置文件要求或允许使用
#extent-length-version-2 特性,
同时禁止使用 #extent-length
特性,是一种错误。
TTML 转换处理器 支持
#extent-measure 特性,是指它能够识别并
转换 <measure> 样式
值表达式的以下值,且该表达式用于 tts:extent 属性:
auto
fitContent
maxContent
minContent
TTML 呈现处理器 支持
#extent-measure 特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 内容处理器支持 #extent-region
特性,是指它支持 #extent-region 特性,符合 [TTML1] 中 §D.1.26 的定义。
注:
支持 #extent-region 特性,意味着支持
#extent-auto 和
#extent-length 特性,
适用于这些特性应用于 region 元素的情况。
TTML 处理器支持 #extent-region-version-2 特性,是指它支持
以下特性:
#extent-region-version-2 特性是
#extent-region 特性的语法和语义扩展。
内容配置文件要求或允许使用
#extent-region-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#extent-region、
#extent-auto-version-2 或
#extent-length-version-2。
注:
支持 #extent-region-version-2 特性,并不意味着支持
#region-implied-animation
特性。
TTML 内容处理器支持 #extent-root
特性,是指它支持 #extent-root 特性,符合 [TTML1] 中 §D.1.27 的定义。
注:
支持 #extent-root 特性,意味着支持
#extent-auto 和
#extent-length 特性,
适用于这些特性应用于 tt 元素的情况。
TTML 处理器支持 #extent-root-version-2 特性,是指它支持
以下特性:
#extent-root-version-2 特性是
#extent-root 特性的语法和语义扩展。
内容配置文件要求或允许使用
#extent-root-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#extent-root、
#extent-auto-version-2 或
#extent-contain。
注:
支持 #extent-root-version-2 特性的本意是意味着支持
以下
#extent-contain 特性,但仅限于该特性应用于根 tt 元素的情况,
而不包括其他元素类型。
TTML 处理器支持 #extent-version-2 特性,是指它支持以下
特性:
#extent-version-2 特性是
#extent 特性的语法和语义扩展。
内容配置文件要求或允许使用
#extent-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#extent、
#extent-image、
#extent-region-version-2 或
#extent-root-version-2。
注:
支持 #extent-version-2 特性,并不意味着支持
以下任何特性:
#extent-contain、
#extent-cover、
#extent-measure 或
#region-implied-animation。
TTML 转换处理器 支持
#font
特性,是指它能够识别并转换以下
词汇,其定义见 9 嵌入内容:
TTML 呈现处理器 支持
#font
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 内容处理器支持 #fontFamily
特性,是指它支持 #fontFamily 特性,符合 [TTML1] 中 §D.1.28 的定义。
内容配置文件要求或允许使用 #fontFamily
特性,同时禁止使用以下任一
特性,是一种错误:#fontFamily-generic 或
#fontFamily-non-generic。
TTML 内容处理器支持 #fontFamily-generic
特性,是指它支持 #fontFamily-generic 特性,符合 [TTML1] 中 §D.1.29 的定义。
TTML 内容处理器支持 #fontFamily-non-generic
特性,是指它支持 #fontFamily-non-generic 特性,符合 [TTML1] 中 §D.1.30 的定义。
TTML 转换处理器 支持
#fontKerning 特性,是指它能够识别并
转换 tts:fontKerning
属性。
TTML 呈现处理器 支持
#fontKerning 特性,是指它实现了呈现语义支持,适用于
tts:fontKerning 属性。
TTML 转换处理器 支持
#fontSelectionStrategy 特性,是指它能够识别并
转换 auto 值,该值属于 tts:fontSelectionStrategy
属性。
TTML 呈现处理器 支持
#fontSelectionStrategy 特性,是指它实现了呈现语义支持,适用于
auto 值,该值属于
tts:fontSelectionStrategy
属性。
TTML 转换处理器 支持
#fontSelectionStrategy-character 特性,是指它能够识别并
转换 character 值,该值属于 tts:fontSelectionStrategy
属性。
TTML 呈现处理器 支持
#fontSelectionStrategy-character 特性,是指它实现了呈现语义
支持,适用于 character 值,该值属于
tts:fontSelectionStrategy
属性。
TTML 转换处理器 支持
#fontShear 特性,是指它能够识别并
转换 tts:fontShear 属性。
TTML 呈现处理器 支持
#fontShear 特性,是指它实现了呈现语义支持,适用于
tts:fontShear 属性。
TTML 内容处理器支持 #fontSize
特性,是指它支持 #fontSize 特性,符合 [TTML1] 中 §D.1.31 的定义。
内容配置文件要求或允许使用 #fontSize
特性,同时禁止使用以下任一
特性,是一种错误:#fontSize-anamorphic 或
#fontSize-isomorphic。
TTML 内容处理器支持 #fontSize-anamorphic
特性,是指它支持 #fontSize-anamorphic 特性,符合 [TTML1] 中 §D.1.32 的定义。
TTML 内容处理器支持 #fontSize-isomorphic
特性,是指它支持 #fontSize-isomorphic 特性,符合 [TTML1] 中 §D.1.33 的定义。
TTML 内容处理器支持 #fontStyle
特性,是指它支持 #fontStyle 特性,符合 [TTML1] 中 §D.1.34 的定义。
注:
支持 #fontStyle 特性,在功能上等同于支持 (1)
以下
#fontStyle-italic 和
#fontStyle-oblique 特性
以及 (2) normal 值,该值属于 tts:fontStyle 属性。
内容配置文件要求或允许使用 #fontStyle
特性,同时禁止使用以下任一
特性,是一种错误:#fontStyle-italic 或
#fontStyle-oblique。
TTML 内容处理器支持 #fontStyle-italic
特性,是指它支持 #fontStyle-italic 特性,符合 [TTML1] 中 §D.1.35 的定义。
TTML 内容处理器支持 #fontStyle-oblique
特性,是指它支持 #fontStyle-oblique 特性,符合 [TTML1] 中 §D.1.36 的定义。
TTML 转换处理器 支持
#fontVariant 特性,是指它能够识别并
转换 tts:fontVariant
属性。
TTML 呈现处理器 支持
#fontVariant 特性,是指它实现了呈现语义支持,适用于
tts:fontVariant 属性。
TTML 内容处理器支持 #fontWeight
特性,是指它支持 #fontWeight 特性,符合 [TTML1] 中 §D.1.37 的定义。
注:
支持 #fontWeight 特性,在功能上等同于支持
(1) 以下
#fontWeight-bold 特性
以及 (2) normal 值,该值属于 tts:fontWeight 属性。
内容配置文件要求或允许使用 #fontWeight
特性,同时禁止使用
#fontWeight-bold 特性,是一种错误。
TTML 内容处理器支持 #fontWeight-bold
特性,是指它支持 #fontWeight-bold 特性,符合 [TTML1] 中 §D.1.38 的定义。
TTML 内容处理器支持 #frameRate
特性,是指它支持 #frameRate 特性,符合 [TTML1] 中 §D.1.39 的定义。
TTML 内容处理器支持 #frameRateMultiplier
特性,是指它支持 #frameRateMultiplier 特性,符合 [TTML1] 中 §D.1.40 的定义。
TTML 转换处理器 支持
#image
特性,是指它能够识别并转换以下
词汇,其定义见 9 嵌入内容:
TTML 呈现处理器 支持
#image
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 转换处理器 支持
#image-png
特性,是指它能够识别并转换图像
资源,
其内容类型为 image/png,定义见 [PNG]。
TTML 呈现处理器 支持
#image-png
特性,是指它实现了呈现语义支持,适用于图像
资源,
其内容类型为 image/png,定义见 [PNG]。
TTML 转换处理器 支持
#initial
特性,是指它能够识别并转换以下
词汇,其定义见 10 样式:
TTML 呈现处理器 支持
#initial
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 内容处理器支持 #layout
特性,是指它支持 #layout 特性,符合 [TTML1] 中 §D.1.41 的定义。
TTML 内容处理器支持 #length
特性,是指它支持 #length 特性,符合 [TTML1] 中 §D.1.42 的定义。
TTML 内容处理器支持 #length-cell
特性,是指它支持 #length-cell 特性,符合 [TTML1] 中 §D.1.43 的定义。
TTML 内容处理器支持 #length-em
特性,是指它支持 #length-em 特性,符合 [TTML1] 中 §D.1.44 的定义。
TTML 内容处理器支持 #length-integer
特性,是指它支持 #length-integer 特性,符合 [TTML1] 中 §D.1.45 的定义。
TTML 内容处理器支持 #length-negative
特性,是指它支持 #length-negative 特性,符合 [TTML1] 中 §D.1.46 的定义。
TTML 内容处理器支持 #length-percentage
特性,是指它支持 #length-percentage 特性,符合 [TTML1] 中 §D.1.47 的定义。
TTML 内容处理器支持 #length-pixel
特性,是指它支持 #length-pixel 特性,符合 [TTML1] 中 §D.1.48 的定义。
TTML 内容处理器支持 #length-positive
特性,是指它支持 #length-positive 特性,符合 [TTML1] 中 §D.1.49 的定义。
TTML 内容处理器支持 #length-real
特性,是指它支持 #length-real 特性,符合 [TTML1] 中 §D.1.50 的定义。
TTML 转换处理器 支持
#length-real-version-2 特性,是指它能够识别并
转换实数值的语法和语义,这些值属于 <length> 样式值
表达式,并包括 non-negative-real 非终结符表达式的所有值,
该非终结符表达式定义于
<non-negative-number>。
TTML 呈现处理器 支持
#length-real-version-2
特性,是指它实现了呈现语义支持,适用于 <length> 样式值
表达式的值,如上所述。
#length-real-version-2 特性是
#length-real 特性的语法扩展。
内容配置文件要求或允许使用
#length-real-version-2 特性,同时禁止使用
#length-real 特性,是一种错误。
TTML 转换处理器 支持
#length-root-container-relative 特性,是指它能够识别并
转换相对于根容器的值,这些值属于 <length> 样式值
表达式。
TTML 呈现处理器 支持
#length-root-container-relative 特性,是指它实现了呈现语义
支持,适用于相对于根
容器的值,这些值属于 <length> 样式
值
表达式。
TTML 处理器支持 #length-version-2 特性,是指它支持以下
特性:
#length-version-2 特性是
#length 特性的语法和语义扩展。
内容配置文件要求或允许使用
#length-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#length、
#length-real-version-2 或
#length-root-container-relative。
TTML 转换处理器 支持
#letterSpacing 特性,是指它能够识别并
转换 tts:letterSpacing
属性。
TTML 呈现处理器 支持
#letterSpacing 特性,是指它实现了呈现语义支持,适用于
tts:letterSpacing 属性。
TTML 内容处理器支持 #lineBreak-uax14
特性,是指它支持 #lineBreak-uax14 特性,符合 [TTML1] 中 §D.1.51 的定义。
TTML 内容处理器支持 #lineHeight
特性,是指它支持 #lineHeight 特性,符合 [TTML1] 中 §D.1.52 的定义。
TTML 转换处理器 支持
#lineShear 特性,是指它能够识别并
转换 tts:lineShear 属性。
TTML 呈现处理器 支持
#lineShear 特性,是指它实现了呈现语义支持,适用于
tts:lineShear 属性。
TTML 转换处理器 支持
#luminanceGain 特性,是指它能够识别并
转换 tts:luminanceGain
属性。
TTML 呈现处理器 支持
#luminanceGain 特性,是指它实现了呈现语义支持,适用于
tts:luminanceGain。
TTML 内容处理器支持 #markerMode
特性,是指它支持 #markerMode 特性,符合 [TTML1] 中 §D.1.53 的定义。
内容配置文件要求或允许使用 #markerMode
特性,同时禁止使用以下任一
特性,是一种错误:#markerMode-continuous 或
#markerMode-discontinuous。
TTML 内容处理器支持 #markerMode-continuous
特性,是指它支持 #markerMode-continuous 特性,符合 [TTML1] 中 §D.1.54 的定义。
TTML 内容处理器支持 #markerMode-discontinuous
特性,是指它支持 #markerMode-discontinuous 特性,符合 [TTML1] 中 §D.1.55
的定义。
TTML 内容处理器支持 #metadata
特性,是指它支持 #metadata 特性,符合 [TTML1] 中 §D.1.56 的定义。
TTML 转换处理器 支持
#metadata-item
特性,是指它能够识别并转换以下
词汇,其定义见 14 元数据:
TTML 呈现处理器 支持
#metadata-item
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
注:
本规范未定义用于 呈现元数据信息的标准化形式。元数据信息的呈现方式或 呈现能力被认为取决于 实现。
TTML 处理器支持 #metadata-version-2 特性,是指它
支持以下特性:
#metadata-version-2 特性是
#metadata 特性的语法和语义扩展。
内容配置文件要求或允许使用
#metadata-version-2 特性,同时禁止使用以下任一
特性,是一种错误:
#metadata 或
#metadata-item。
TTML 内容处理器支持 #nested-div
特性,是指它支持 #nested-div 特性,符合 [TTML1] 中 §D.1.57 的定义。
TTML 内容处理器支持 #nested-span
特性,是指它支持 #nested-span 特性,符合 [TTML1] 中 §D.1.58 的定义。
TTML 内容处理器支持 #opacity
特性,是指它支持 #opacity 特性,符合 [TTML1] 中 §D.1.59 的定义。
注:
支持 #opacity 特性,在功能上等同于支持
#opacity-region 特性。
内容配置文件要求或允许使用 #opacity
特性,同时禁止使用
#opacity-region 特性,是一种错误。
TTML 转换处理器 支持
#opacity-block 特性,是指它能够识别并
转换所有已定义的值,这些值属于 tts:opacity
属性,该属性应用于 内容元素,这些元素会在
呈现处理期间生成一个
块区域。
TTML 呈现处理器 支持
#opacity-block 特性,是指它 (1) 实现了呈现语义
支持,适用于 tts:opacity
属性,该属性应用于 内容元素,这些元素生成
一个
块区域,并且 (2) 能够显示或生成输出显示
信号,该信号能区分至少八 (8) 个不透明度值。
TTML 转换处理器 支持
#opacity-image 特性,是指它支持所有已定义的值,
这些值属于 tts:opacity 属性,且该属性应用于
image 元素。
TTML 呈现处理器 支持
#opacity-image
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
注:
支持 #opacity-image 特性,并不意味着支持
#image 特性;但是,如果不支持
后者,则支持
前者也没有意义。
TTML 转换处理器 支持
#opacity-inline 特性,是指它能够识别并
转换所有已定义的值,这些值属于 tts:opacity
属性,该属性应用于 内容元素,这些元素会在
呈现处理期间生成一个
行内区域。
TTML 呈现处理器 支持
#opacity-inline 特性,是指它 (1) 实现了呈现语义
支持,适用于 tts:opacity
属性,该属性应用于 内容元素,这些元素生成
一个
行内区域,并且 (2) 能够显示或生成输出显示
信号,该信号能区分至少八 (8) 个不透明度值。
TTML 转换处理器 支持
#opacity-region 特性,是指它能够识别并
转换所有已定义的值,这些值属于 tts:opacity
属性,且该属性应用于 region 元素。
TTML 呈现处理器 支持
#opacity-region 特性,是指它 (1) 实现了呈现语义
支持,适用于 tts:opacity
属性应用于 region 元素的情况,
并且 (2) 能够显示或生成输出显示
信号,该信号能区分至少八 (8) 个不透明度值。
注:
支持 #opacity-region 特性,在功能上等同于
支持
#opacity 特性。
内容配置文件要求或允许使用 #opacity-region
特性,同时禁止使用
#opacity 特性,是一种错误。
TTML 处理器支持 #opacity-version-2 特性,是指它
支持以下特性:
#opacity-version-2 特性是
#opacity 特性的语法和语义扩展。
内容配置文件要求或允许使用
#opacity-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#opacity、
#opacity-block、
#opacity-image、
#opacity-inline 或
#opacity-region。
TTML 内容处理器支持 #origin
特性,是指它支持 #origin 特性,符合 [TTML1] 中 §D.1.60 的定义。
注:
支持 #origin 特性,并不意味着支持
#region-implied-animation
特性。
TTML 内容处理器支持 #overflow
特性,是指它支持 #overflow 特性,符合 [TTML1] 中 §D.1.61 的定义。
注:
支持 #overflow 特性,在功能上等同于支持 (1)
以下
#overflow-visible 特性
以及 (2) hidden 值,该值属于 tts:overflow 属性。
内容配置文件要求或允许使用 #overflow
特性,同时禁止使用
#overflow-visible 特性,是一种错误。
TTML 内容处理器支持 #overflow-visible
特性,是指它支持 #overflow-visible 特性,符合 [TTML1] 中 §D.1.62 的定义。
TTML 内容处理器支持 #padding
特性,是指它支持 #padding 特性,符合 [TTML1] 中 §D.1.63 的定义。
内容配置文件要求或允许使用 #padding
特性,同时禁止使用以下任一特性,是一种错误:
#padding-1、
#padding-2、
#padding-3、
#padding-4、
#padding-region。
TTML 内容处理器支持 #padding-1
特性,是指它支持 #padding-1 特性,符合 [TTML1] 中 §D.1.64 的定义。
TTML 内容处理器支持 #padding-2
特性,是指它支持 #padding-2 特性,符合 [TTML1] 中 §D.1.65 的定义。
TTML 内容处理器支持 #padding-3
特性,是指它支持 #padding-3 特性,符合 [TTML1] 中 §D.1.66 的定义。
TTML 内容处理器支持 #padding-4
特性,是指它支持 #padding-4 特性,符合 [TTML1] 中 §D.1.67 的定义。
TTML 转换处理器 支持
#padding-block 特性,是指它能够识别并
转换所有已定义的值,这些值属于 tts:padding
属性,该属性应用于 内容元素,这些元素会在
呈现处理期间生成一个
块区域。
TTML 呈现处理器 支持
#padding-block 特性,是指它实现了呈现语义
支持,适用于 tts:padding
属性,该属性应用于 内容元素,这些元素生成
一个
块区域。
TTML 转换处理器 支持
#padding-inline 特性,是指它能够识别并
转换所有已定义的值,这些值属于 tts:padding
属性,该属性应用于 内容元素,这些元素会在
呈现处理期间生成一个
行内区域。
TTML 呈现处理器 支持
#padding-inline 特性,是指它实现了呈现语义
支持,适用于 tts:padding
属性,该属性应用于 内容元素,这些元素生成
一个
行内区域。
TTML 内容处理器支持 #padding-region
特性,是指它支持 #padding 特性。
#padding-region 特性是一个空
扩展,
所扩展的是 #padding 特性,
其中,空扩展是指
某个特性在形式上被标记为另一个特性的扩展,但扩展
语义为空集,这等同于说
这两个特性在功能上等价。
内容配置文件要求或允许使用 #padding-region
特性,
同时禁止使用以下任一特性,是一种错误:
#padding、
#padding-1、
#padding-2、
#padding-3 或
#padding-4。
TTML 处理器支持 #padding-version-2 特性,是指它
支持以下特性:
#padding-version-2 特性是
#padding 特性的语法和语义扩展。
注:
由于 #padding-region 特性是一个空扩展,所扩展的是
#padding 特性,
因此 #padding-version-2 特性也是
以下
#padding-region 特性的语法和语义扩展。
内容配置文件要求或允许使用
#padding-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#padding、
#padding-1、
#padding-2、
#padding-3、
#padding-4。
#padding-block、
#padding-inline 或
#padding-region。
TTML 转换处理器 支持
#permitFeatureNarrowing 特性,是指它能够识别并
转换 (1) ttp:permitFeatureNarrowing
属性以及 (2) extends 属性,后者位于
ttp:feature 和
ttp:extension 元素上。
TTML 呈现处理器 支持
#permitFeatureNarrowing
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
注:
如果 TTML 处理器不支持 #permitFeatureNarrowing 特性,且该特性
被指定为可选,则会忽略
extends 属性的语义,也就是说,支持被
扩展的特性并不足以
认为扩展特性受到支持。
TTML 转换处理器 支持
#permitFeatureWidening 特性,是指它能够识别并
转换 (1) ttp:permitFeatureWidening
属性以及 (2) restricts 属性,后者位于
ttp:feature 和
ttp:extension 元素上。
TTML 呈现处理器 支持
#permitFeatureWidening
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
注:
如果 TTML 处理器不支持 #permitFeatureWidening 特性,且该特性
被指定为可选,则会忽略
restricts 属性的语义,也就是说,支持被
限制的原特性并不足以
认为限制后的特性受到支持。
TTML 内容处理器支持 #pixelAspectRatio
特性,是指它支持 #pixelAspectRatio 特性,符合 [TTML1] 中 §D.1.68 的定义。
TTML 转换处理器 支持
#position 特性,是指它能够识别并
转换 tts:position 属性。
TTML 呈现处理器 支持
#position 特性,是指它实现了呈现语义支持,适用于
tts:position 属性。
注:
支持 #position 特性,并不意味着支持
#region-implied-animation
特性。
TTML 内容处理器支持 #presentation
特性,是指它支持 #presentation 特性,符合 [TTML1] 中 §D.1.69 的定义。
TTML 内容处理器支持 #presentation-audio 特性,是指它
(1) 满足通用处理器准则,其定义见 3.2.1 通用处理器的一致性,
(2) 实现了音频呈现(渲染)语义支持,并且
(3) 实现了以下特性的音频呈现语义:
此外,支持 #presentation-audio 特性的 TTML 处理器
应当满足 [UAAG] 规定的用户代理无障碍指南。
TTML 处理器支持 #presentation-version-2 特性,是指它
(1) 满足通用处理器准则,其定义见
3.2.1 通用处理器的一致性,并且
(2) 支持以下特性:
#presentation-version-2 特性是
#presentation 特性的语法和语义扩展。
内容配置文件要求或允许使用
#presentation-version-2 特性,同时禁止使用
以下任一特性,是一种错误:
#presentation 或
#profile-version-2。
TTML 转换处理器 支持
#processorProfiles
特性,是指它 (1) 支持 非组合配置文件,并且
(2) 能够识别并转换:
以下配置文件属性词汇,其定义见 6.2 配置文件属性词汇:
designator 属性,该属性位于
ttp:profile 元素上,以及
processor 值,属于 type 属性,该属性位于
ttp:profile 元素上。
TTML 呈现处理器 支持
#processorProfiles
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 转换处理器 支持
#processorProfiles-combined
特性,是指它 (1) 支持 #processorProfiles 特性,
(2) 支持 组合配置文件,并且 (3) 能够识别并
转换:
以下配置文件属性词汇,其定义见 6.2 配置文件属性词汇:
combine 属性,该属性位于
ttp:profile 元素上。
TTML 呈现处理器 支持
#processorProfiles-combined
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
#processorProfiles-combine 特性是
#processorProfiles 特性的语法和语义扩展。
处理器配置文件要求或允许使用
#processorProfiles-combine 特性,
同时禁止使用 #processorProfiles
特性,是一种错误。
注:
支持 #processorProfiles-combined 特性,并不意味着支持
嵌套配置文件。
TTML 内容处理器支持 #profile
特性,是指它支持 #profile 特性,符合 [TTML1] 中 §D.1.70 的定义。
注:
支持 #profile 特性,并不意味着支持
以下特性:
TTML 内容处理器支持 #profile-full-version-2 特性,是指它
支持以下特性:
#profile-full-version-2 特性是
#profile-version-2 特性的语法和语义扩展。
内容配置文件要求或允许使用
#profile-full-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#contentProfiles、
#contentProfiles-combined、
#permitFeatureNarrowing、
#permitFeatureWidening、
#processorProfiles、
#processorProfiles-combined、
#profile、
#profile-nesting 或
#profile-version-2。
TTML 内容处理器支持 #profile-nesting
特性,是指它支持嵌套配置文件。
TTML 内容处理器支持 #profile-version-2 特性,是指它
支持以下特性:
#profile-version-2 特性是
#profile 特性的语法和语义扩展。
内容配置文件要求或允许使用
#profile-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#contentProfiles、
#processorProfiles 或
#profile。
注:
支持 #profile-version-2 特性,并不意味着支持
以下特性:
TTML 转换处理器 支持
#region-implied-animation 特性,是指它能够识别并转换
位于以下元素上的样式属性:
div 或 p 元素,且这些属性应用于隐式区域,
依据为 11.1.2.1 内联动画的特殊
语义。
TTML 呈现处理器 支持
#region-implied-animation 特性,是指它实现了呈现语义支持,
适用于以下元素上的样式属性:
div 或 p 元素,且这些属性应用于隐式区域,
依据为 11.1.2.1 内联动画的特殊
语义。
注:
支持 #region-implied-animation 特性,并不意味着支持
以下特性:
但是,如果支持这些特性中的任何一个,则支持
#region-implied-animation 特性
确实意味着支持 11.1.2.1
内联动画的特殊
语义,且这种支持针对该特性。
TTML 转换处理器 支持
#region-inline 特性,是指它能够识别并
转换内联区域元素,这些元素是内容
元素的子元素,其进一步定义见
region。
TTML 呈现处理器 支持
#region-inline 特性,是指它实现了呈现语义支持,
适用于内联区域元素,这些元素是内容元素的子元素,其
进一步定义见
region。
TTML 转换处理器 支持
#region-timing
特性,是指它能够识别并转换以下词汇,且这些词汇应用于
一个
region 元素:
TTML 呈现处理器 支持
#region-timing
特性,是指它对上面列出的相同词汇实现了呈现语义支持,
适用于这些词汇应用于 region 元素的情况。
#region-timing 特性是 #timing 特性的语义限制。
注:
由于此特性表示 #timing 特性的一个语义子集,并且
后者是所有转换处理器和呈现处理器的必需特性,
因此此特性
指定符的实际用途仅限于内容配置文件定义,该定义可以
选择禁止文档实例
使用此特性。
TTML 转换处理器 支持
#resources
特性,是指它能够识别并转换以下
词汇,其定义见 9 嵌入内容:
TTML 呈现处理器 支持
#resources
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 转换处理器 支持
#ruby 特性,是指它能够识别并
转换所有已定义的值,这些值属于 tts:ruby
属性。
TTML 呈现处理器 支持
#ruby 特性,是指它实现了呈现语义支持,
适用于 tts:ruby
属性的所有已定义的值。
TTML 处理器支持 #ruby-full 特性,是指它
支持以下特性:
内容配置文件要求或允许使用 #ruby-full
特性,
同时禁止使用以下任一特性,是一种错误:
#ruby、
#rubyAlign、
#rubyPosition 或
#rubyReserve。
TTML 处理器支持 #rubyAlign 特性,是指它支持以下
特性:
内容配置文件要求或允许使用 #rubyAlign
特性,同时禁止使用以下任一
特性,是一种错误:
#rubyAlign-minimal 或
#rubyAlign-withBase。
TTML 转换处理器 支持
#rubyAlign-minimal 特性,是指它能够识别并转换
以下值,这些值属于
tts:rubyAlign 属性。
start
center
end
spaceAround
spaceBetween
TTML 呈现处理器 支持
#rubyAlign-minimal 特性,是指它实现了呈现语义支持,适用于
上面列出的相同值
词汇。
TTML 转换处理器 支持
#rubyAlign-withBase 特性,是指它能够识别并转换
withBase 值,该值属于 tts:rubyAlign
属性。
TTML 呈现处理器 支持
#rubyAlign-withBase 特性,是指它实现了呈现语义支持,适用于
上面列出的
相同值。
TTML 转换处理器 支持
#rubyPosition 特性,是指它能够识别并
转换 tts:rubyPosition
属性。
TTML 呈现处理器 支持
#rubyPosition 特性,是指它实现了呈现语义支持,适用于
tts:rubyPosition 属性。
TTML 转换处理器 支持
#rubyReserve 特性,是指它能够识别并
转换 tts:rubyReserve
属性。
TTML 呈现处理器 支持
#rubyReserve 特性,是指它实现了呈现语义支持,适用于
tts:rubyReserve 属性。
TTML 内容处理器支持 #set
特性,是指它支持 #animation 特性,
因此,
#set 特性是一个空扩展,
所扩展的是
#animation 特性。
内容配置文件要求或允许使用 #set 特性,
同时禁止使用
#animation 特性,是一种错误。
TTML 转换处理器 支持
#set-fill 特性,是指它能够识别并
转换 fill 属性,该属性属于 set 元素。
TTML 呈现处理器 支持
#set-fill 特性,是指它实现了呈现语义支持,
适用于 fill 属性,该属性属于 set 元素。
TTML 转换处理器 支持
#set-multiple-styles 特性,是指它能够识别并
转换多个样式属性,且这些属性指定
于 set 元素上。
TTML 呈现处理器 支持
#set-multiple-styles 特性,是指它实现了呈现语义支持,
适用于多个样式属性,且这些属性指定于 set 元素上。
TTML 转换处理器 支持
#set-repeat 特性,是指它能够识别并
转换 repeatCount 属性,该属性属于 set
元素。
TTML 呈现处理器 支持
#set-repeat 特性,是指它实现了呈现语义支持,
适用于 repeatCount 属性,该属性属于 set
元素。
TTML 内容处理器支持 #showBackground
特性,是指它支持 #showBackground 特性,符合 [TTML1] 中 §D.1.71 的定义。
TTML 转换处理器 支持
#source
特性,是指它能够识别并转换以下
词汇,其定义见 9 嵌入内容:
TTML 呈现处理器 支持
#source
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 处理器支持 #speech 特性,是指它支持
语音合成处理器。
TTML 内容处理器支持 #structure
特性,是指它支持 #structure 特性,符合 [TTML1] 中 §D.1.72 的定义。
TTML 内容处理器支持 #styling
特性,是指它支持 #styling 特性,符合 [TTML1] 中 §D.1.73 的定义。
TTML 内容处理器支持 #styling-chained
特性,是指它支持 #styling-chained 特性,符合 [TTML1] 中 §D.1.74 的定义。
TTML 内容处理器支持 #styling-inheritance-content
特性,是指它支持 #inheritance-content 特性,符合 [TTML1] 中 §D.1.75 的定义。
TTML 内容处理器支持 #styling-inheritance-region
特性,是指它支持 #styling-inheritance-region 特性,符合 [TTML1] 中 §D.1.76
的定义。
TTML 内容处理器支持 #styling-inline
特性,是指它支持 #styling-inline 特性,符合 [TTML1] 中 §D.1.77 的定义。
TTML 内容处理器支持 #styling-nested
特性,是指它支持 #styling-nested 特性,符合 [TTML1] 中 §D.1.78 的定义。
TTML 内容处理器支持 #styling-referential
特性,是指它支持 #styling-referential 特性,符合 [TTML1] 中 §D.1.79 的定义。
TTML 内容处理器支持 #subFrameRate
特性,是指它支持 #subFrameRate 特性,符合 [TTML1] 中 §D.1.80 的定义。
TTML 内容处理器支持 #textAlign
特性,是指它支持 #textAlign 特性,符合 [TTML1] 中 §D.1.81 的定义。
内容配置文件要求或允许使用 #textAlign
特性,同时禁止使用以下任一特性,是一种错误:
#textAlign-absolute 或
#textAlign-relative。
TTML 内容处理器支持 #textAlign-absolute
特性,是指它支持 #textAlign-absolute 特性,符合 [TTML1] 中 §D.1.82 的定义。
TTML 转换处理器 支持
#textAlign-justify 特性,是指它能够识别并
转换 justify 值,该值属于 tts:textAlign 属性。
TTML 呈现处理器 支持
#textAlign-justify 特性,是指它实现了呈现语义支持,适用于
justify 值,
该值属于 tts:textAlign 属性。
TTML 内容处理器支持 #textAlign-relative
特性,是指它支持 #textAlign-relative 特性,符合 [TTML1] 中 §D.1.83 的定义。
TTML 处理器支持 #textAlign-version-2 特性,是指它
支持以下特性:
#textAlign-version-2 特性是
#textAlign 特性的语法和语义扩展。
内容配置文件要求或允许使用
#textAlign-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#textAlign、
#textAlign-absolute、
#textAlign-justify 或
#textAlign-relative。
TTML 转换处理器 支持
#textCombine 特性,是指它能够识别并
转换 tts:textCombine
属性。
TTML 呈现处理器 支持
#textCombine 特性,是指它实现了呈现语义支持,适用于
tts:textCombine 属性。
TTML 内容处理器支持 #textDecoration
特性,是指它支持 #textDecoration 特性,符合 [TTML1] 中 §D.1.84 的定义。
注:
支持 #textDecoration 特性,在功能上等同于
支持以下特性:
内容配置文件要求或允许使用 #textDecoration
特性,
同时禁止使用以下任一特性,是一种错误:
#textDecoration-over、
#textDecoration-through 或
#textDecoration-under。
TTML 内容处理器支持 #textDecoration-over
特性,是指它支持 #textDecoration-over 特性,符合 [TTML1] 中 §D.1.85 的定义。
TTML 内容处理器支持 #textDecoration-through
特性,是指它支持 #textDecoration-through 特性,符合 [TTML1] 中 §D.1.86 的定义。
TTML 内容处理器支持 #textDecoration-under
特性,是指它支持 #textDecoration-under 特性,符合 [TTML1] 中 §D.1.87 的定义。
TTML 处理器支持 #textEmphasis 特性,是指它
支持以下特性:
#textEmphasis 特性是
#textEmphasis-minimal 特性的语法和语义扩展。
内容配置文件要求或允许使用 #textEmphasis
特性,
同时禁止使用以下任一特性,是一种错误:
#textEmphasis-color、
#textEmphasis-minimal 或
#textEmphasis-quoted-string。
TTML 转换处理器 支持
#textEmphasis-color 特性,是指它能够识别并
转换以下属性的值:tts:textEmphasis
属性,且这些值包含一个 <emphasis-color> 组成部分。
TTML 呈现处理器 支持
#textEmphasis-color
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
TTML 转换处理器 支持
#textEmphasis-minimal 特性,是指它能够识别并
转换以下属性的值:tts:textEmphasis
属性,且这些值 (1) 不包含 <emphasis-color> 组成部分,并且
(2) 不包含这样的 <emphasis-style> 组成部分,其
采用 <quoted-string> 值的形式。
TTML 呈现处理器 支持
#textEmphasis-minimal
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
TTML 转换处理器 支持
#textEmphasis-quoted-string 特性,是指它能够识别并
转换以下属性的值:tts:textEmphasis
属性,且这些值包含这样的 <emphasis-style> 组成部分,其
采用 <quoted-string> 值的形式。
TTML 呈现处理器 支持
#textEmphasis-quoted-string
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
TTML 转换处理器 支持
#textOrientation 特性,是指它能够识别并
转换 tts:textOrientation
属性。
TTML 呈现处理器 支持
#textOrientation 特性,是指它实现了呈现语义支持,
适用于 tts:textOrientation
属性。
TTML 内容处理器支持 #textOutline
特性,是指它支持 #textOutline 特性,符合 [TTML1] 中 §D.1.88 的定义。
内容配置文件要求或允许使用 #textOutline
特性,
同时禁止使用以下任一特性,是一种错误:
#textOutline-blurred 或
#textOutline-unblurred。
TTML 内容处理器支持 #textOutline-blurred
特性,是指它支持 #textOutline-blurred 特性,符合 [TTML1] 中 §D.1.89 的定义。
TTML 内容处理器支持 #textOutline-unblurred
特性,是指它支持 #textOutline-unblurred 特性,符合 [TTML1] 中 §D.1.90 的定义。
TTML 转换处理器 支持
#textShadow 特性,是指它能够识别并
转换 tts:textShadow
属性。
TTML 呈现处理器 支持
#textShadow 特性,是指它实现了呈现语义支持,适用于
tts:textShadow 属性。
TTML 内容处理器支持 #tickRate
特性,是指它支持 #tickRate 特性,符合 [TTML1] 中 §D.1.91 的定义。
TTML 内容处理器支持 #timeBase-clock
特性,是指它支持 #timeBase-clock 特性,符合 [TTML1] 中 §D.1.92 的定义。
TTML 内容处理器支持 #timeBase-media
特性,是指它支持 #timeBase-media 特性,符合 [TTML1] 中 §D.1.93 的定义。
TTML 内容处理器支持 #timeBase-smpte
特性,是指它支持 #timeBase-smpte 特性,符合 [TTML1] 中 §D.1.94 的定义。
TTML 内容处理器支持 #timeContainer
特性,是指它支持 #timeContainer 特性,符合 [TTML1] 中 §D.1.95 的定义。
TTML 内容处理器支持 #time-clock
特性,是指它支持 #time-clock 特性,符合 [TTML1] 中 §D.1.96 的定义。
TTML 内容处理器支持 #time-clock-with-frames
特性,是指它支持 #time-clock-with-frames 特性,符合 [TTML1] 中 §D.1.97 的定义。
TTML 内容处理器支持 #time-offset
特性,是指它支持 #time-offset 特性,符合 [TTML1] 中 §D.1.98 的定义。
TTML 内容处理器支持 #time-offset-with-frames
特性,是指它支持 #time-offset-with-frames 特性,符合 [TTML1] 中 §D.1.99 的定义。
TTML 内容处理器支持 #time-offset-with-ticks
特性,是指它支持 #time-offset-with-ticks 特性,符合 [TTML1] 中 §D.1.100 的定义。
TTML 转换处理器 支持
#time-wall-clock 特性,是指它能够识别并
转换以下表达式的所有值:<time-expression>,且这些值
满足以下时间表达式语法子集:
<time-expression> : wallclock-time
TTML 呈现处理器 支持
#time-wall-clock 特性,是指它实现了呈现
语义支持,适用于上面指定的相同语法。
TTML 内容处理器支持 #timing
特性,是指它支持 #timing 特性,符合 [TTML1] 中 §D.1.101 的定义。
TTML 内容处理器支持 #transformation
特性,是指它支持 #transformation 特性,符合 [TTML1] 中 §D.1.102 的定义。
TTML 处理器支持 #transformation-version-2 特性,是指它
(1) 满足通用处理器准则,其定义见
3.2.1 通用处理器的一致性,并且
(2) 支持以下特性:
#transformation-version-2 特性是
#transformation 特性的语法和语义扩展。
内容配置文件要求或允许使用
#transformation-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#transformation 或
#profile-version-2。
TTML 内容处理器支持 #unicodeBidi
特性,是指它支持 #unicodeBidi 特性,符合 [TTML1] 中 §D.1.103 的定义。
注:
支持 #unicodeBidi 特性,并不意味着支持
#unicodeBidi-isolate 特性。
TTML 转换处理器 支持
#unicodeBidi-isolate 特性,是指它能够识别并
转换 isolate 值,该值属于 tts:unicodeBidi
属性。
TTML 呈现处理器 支持
#unicodeBidi-isolate 特性,是指它实现了呈现语义支持,
适用于 isolate 值,该值属于 tts:unicodeBidi
属性。
TTML 内容处理器支持 #unicodeBidi-version-2 特性,是指它
支持以下特性:
#unicodeBidi-version-2 特性是
#unicodeBidi 特性的语法和语义扩展。
TTML 转换处理器 支持
#validation
特性,是指它:
是一个验证型内容处理器;
能够识别并转换以下属性词汇,其定义见 6.2 配置文件属性词汇:
TTML 呈现处理器 支持
#validation
特性,是指它是一个验证型内容
处理器,并且
对上面列出的相同词汇实现了呈现语义支持。
TTML 内容处理器支持 #visibility
特性,是指它支持 #visibility 特性,符合 [TTML1] 中 §D.1.104 的定义。
内容配置文件要求或允许使用 #visibility
特性,
同时禁止使用以下任一特性,是一种错误:
#visibility-block、
#visibility-inline 或
#visibility-region。
TTML 内容处理器支持 #visibility-block
特性,是指它支持 #visibility-block 特性,符合 [TTML1] 中 §D.1.105 的定义。
TTML 转换处理器 支持
#visibility-image 特性,是指它支持所有已定义的值,
这些值属于 tts:visibility 属性,且该属性
应用于
image 元素。
TTML 呈现处理器 支持
#visibility-image
特性,是指它对上面列出的相同词汇实现了呈现语义支持。
注:
支持 #visibility-image 特性,并不意味着支持
#image 特性;但是,如果不支持
后者,则支持
前者也没有意义。
TTML 内容处理器支持 #visibility-inline
特性,是指它支持 #visibility-inline 特性,符合 [TTML1] 中 §D.1.106 的定义。
TTML 内容处理器支持 #visibility-region
特性,是指它支持 #visibility-region 特性,符合 [TTML1] 中 §D.1.107 的定义。
TTML 内容处理器支持 #visibility-version-2 特性,是指它
支持以下特性:
#visibility-version-2 特性是
#visibility 特性的语法和语义扩展。
内容配置文件要求或允许使用
#visibility-version-2 特性,
同时禁止使用以下任一特性,是一种错误:
#visibility 或
#visibility-image。
TTML 内容处理器支持 #wrapOption
特性,是指它支持 #wrapOption 特性,符合 [TTML1] 中 §D.1.108 的定义。
TTML 内容处理器支持 #writingMode
特性,是指它支持 #writingMode 特性,符合 [TTML1] 中 §D.1.109 的定义。
内容配置文件要求或允许使用 #writingMode
特性,
同时禁止使用以下任一特性,是一种错误:
#writingMode-horizontal 或
#writingMode-vertical。
TTML 内容处理器支持 #writingMode-horizontal
特性,是指它支持 #writingMode-horizontal 特性,符合 [TTML1] 中 §D.1.111 的定义。
注:
支持 #writingMode-horizontal 特性,
在功能上等同于支持以下特性:
内容配置文件要求或允许使用
#writingMode-horizontal 特性,
同时禁止使用以下任一特性,是一种错误:
#writingMode-horizontal-lr 或
#writingMode-horizontal-rl。
TTML 内容处理器支持 #writingMode-horizontal-lr
特性,是指它支持 #writingMode-horizontal-lr 特性,符合 [TTML1] 中 §D.1.112
的定义。
TTML 内容处理器支持 #writingMode-horizontal-rl
特性,是指它支持 #writingMode-horizontal-rl 特性,符合 [TTML1] 中 §D.1.113
的定义。
TTML 内容处理器支持 #writingMode-vertical
特性,是指它支持 #writingMode-vertical 特性,符合 [TTML1] 中 §D.1.110 的定义。
TTML 转换处理器 支持
#xlink
特性,是指它能够识别并转换以下属性
词汇,其定义见 8.2 内容属性
词汇,且这些词汇用于受支持并允许这些词汇的元素类型:
TTML 呈现处理器 支持
#xlink
特性,是指它实现了呈现语义支持,适用于
上面列出的相同词汇。
TTML 内容处理器支持 #zIndex
特性,是指它支持 #zIndex 特性,符合 [TTML1] 中 §D.1.114 的定义。
下表,表 E-1 – 特性支持, 列举了所有已定义的特性指定符(表示时不含 TT 特性命名空间),并针对每个指定的特性,规定 (1) 首次定义该特性指定符的 TTML 版本,以及 (2) 指定的特性是否必须实现,即为必需 (M),或可以实现, 即 为可选 (O),适用于 TTML 内容处理器,该处理器符合 以下要求: 3.2.2 转换处理器的 一致性或 3.2.3 呈现 处理器的一致性。
注:
在某些情况下,本规范的本(或后续)版本定义了一个新的特性指定符,
该指定符此前尚未定义,但是
它所指定的底层功能特性已由较早的版本定义。
例如,#padding-region
指定符在此引入;但是,它引用的功能此前已包含
在指定符 #padding 下,
该指定符现在依据 #padding-region 来定义。这里,
#padding(在 TTML1 中引入)
与 #padding-region(在 TTML2 中引入)的底层含义仍然相同。
为方便起见,下表, 表 E-2 – 必需特性 - 转换,列举了所有 TTML 内容处理器的必需特性,该处理器符合 以下要求: 3.2.2 转换处理器的 一致性,并提供附加 说明,以概述特性的使用上下文或性质。 该配置文件定义文档用于定义 相应的 TTML 转换配置文件,具体规定见 G.3 TTML2 转换配置文件。
| 特性指定符 | 说明 |
#content |
body,
div,
p,
span,
br
|
#contentProfiles |
|
#core |
xml:id,
xml:lang,
xml:space
|
#processorProfiles |
|
#profile |
|
#profile-version-2 |
|
#structure |
tt,
head
|
#time-offset |
|
#timing |
begin,
dur,
end
|
#transformation |
|
#transformation-version-2
|
为方便起见,下表, 表 E-3 – 必需特性 - 呈现,列举了所有 TTML 内容处理器的必需特性,该处理器符合 以下要求: 3.2.3 呈现处理器的一致性, 并提供附加 说明,以概述特性的使用上下文或性质。 该配置文件定义文档用于定义 相应的 TTML 呈现配置文件,具体规定见 G.2 TTML2 呈现配置文件。
| 特性指定符 | 说明 |
#content |
body,
div,
p,
span,
br
|
#contentProfiles |
|
#core |
xml:id,
xml:lang,
xml:space
|
#processorProfiles |
|
#profile |
|
#profile-version-2 |
|
#presentation |
|
#presentation-version-2 |
|
#structure |
tt,
head
|
#time-offset |
|
#timing |
begin,
dur,
end
|
本附录是规范性的。
本附录规定了扩展标识的语法形式,这些标识 用于表达作者对于 TTML 处理器中支持扩展 机制的意图。
扩展标识表示为遵循以下 形式的字符串:
extension-designation
: extension-namespace designation
extension-namespace
: TT Extension Namespace // http://www.w3.org/ns/ttml/extension/
| Other Extension Namespace // 表示为绝对 URI
designation
: "#" token-char+
token-char
: { XML NameChar } // [XML 1.0] 产生式 [4a]
如果扩展标识的扩展命名空间是 TT
扩展命名空间,则其后
designation 词元的所有值均保留供未来
标准化使用。
如果扩展标识的扩展命名空间不是
TT 扩展命名空间,即为其他扩展命名空间,
则该扩展命名空间必须表示为绝对 URI,
该 URI 能够作为基准 URI,与
采用片段标识符形式的 designation
词元结合使用。
本附录是规范性的。
本附录规定或通过引用纳入以下标准 TTML 配置集:
每个 TTML 配置集都通过配置集 定义文档来定义, 该文档表示为 XML 文档,其根元素遵循 6.1.1 ttp:profile。
TTML2 完整配置集旨在用于 表达对转换处理和呈现处理的最大符合程度。
注意:
此配置集是 DFXP 完整配置集的超集。
<?xml version="1.0" encoding="utf-8"?>
<!-- 此文件定义 ttml 的 "ttml2-full" 配置集 -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
designator="http://www.w3.org/ns/ttml/profile/ttml2-full">
<features xml:base="http://www.w3.org/ns/ttml/feature/">
<!-- 必需 (强制) 特性支持 -->
<feature value="required" extends="#animate-minimal">#animate</feature>
<feature value="required">#animate-fill</feature>
<feature value="required">#animate-minimal</feature>
<feature value="required">#animate-paced</feature>
<feature value="required">#animate-spline</feature>
<feature value="required">#animate-repeat</feature>
<feature value="required">#animation</feature>
<feature value="required">#animation-out-of-line</feature>
<feature value="required" extends="#animation">#animation-version-2</feature>
<feature value="required">#audio</feature>
<feature value="required">#audio-description</feature>
<feature value="required">#audio-speech</feature>
<feature value="required">#background</feature>
<feature value="required">#background-image</feature>
<feature value="required">#backgroundClip</feature>
<feature value="required">#backgroundColor-block</feature>
<feature value="required">#backgroundColor-inline</feature>
<feature value="required">#backgroundColor-region</feature>
<feature value="required">#backgroundColor</feature>
<feature value="required">#backgroundExtent</feature>
<feature value="required">#backgroundImage</feature>
<feature value="required">#backgroundOrigin</feature>
<feature value="required">#backgroundPosition</feature>
<feature value="required">#backgroundRepeat</feature>
<feature value="required">#base</feature>
<feature value="required">#base-general</feature>
<feature value="required" extends="#base">#base-version-2</feature>
<feature value="required">#bidi</feature>
<feature value="required" extends="#bidi">#bidi-version-2</feature>
<feature value="required">#border</feature>
<feature value="required">#border-block</feature>
<feature value="required">#border-inline</feature>
<feature value="required">#border-radii</feature>
<feature value="required">#border-radii-1</feature>
<feature value="required">#border-radii-2</feature>
<feature value="required">#border-region</feature>
<feature value="required">#bpd</feature>
<feature value="required">#cellResolution</feature>
<feature value="required">#chunk</feature>
<feature value="required">#clockMode</feature>
<feature value="required">#clockMode-gps</feature>
<feature value="required">#clockMode-local</feature>
<feature value="required">#clockMode-utc</feature>
<feature value="required">#color</feature>
<feature value="required">#condition</feature>
<feature value="required">#condition-fn-media</feature>
<feature value="required">#condition-fn-parameter</feature>
<feature value="required">#condition-fn-supports</feature>
<feature value="required">#condition-primary</feature>
<feature value="required">#content</feature>
<feature value="required">#content-sizing</feature>
<feature value="required">#contentProfiles</feature>
<feature value="required" extends="#contentProfiles">#contentProfiles-combined</feature>
<feature value="required">#core</feature>
<feature value="required">#data</feature>
<feature value="required">#direction</feature>
<feature value="required">#disparity</feature>
<feature value="required">#display</feature>
<feature value="required">#display-block</feature>
<feature value="required">#display-inline</feature>
<feature value="required">#display-inlineBlock</feature>
<feature value="required">#display-region</feature>
<feature value="required" extends="#display">#display-version-2</feature>
<feature value="required">#displayAlign</feature>
<feature value="required">#displayAlign-block</feature>
<feature value="required">#displayAlign-justify</feature>
<feature value="required">#displayAlign-region</feature>
<feature value="required">#displayAlign-relative</feature>
<feature value="required" extends="#displayAlign">#displayAlign-version-2</feature>
<feature value="required">#displayAspectRatio</feature>
<feature value="required">#dropMode</feature>
<feature value="required">#dropMode-dropNTSC</feature>
<feature value="required">#dropMode-dropPAL</feature>
<feature value="required">#dropMode-nonDrop</feature>
<feature value="required">#embedded-audio</feature>
<feature value="required">#embedded-content</feature>
<feature value="required">#embedded-data</feature>
<feature value="required">#embedded-font</feature>
<feature value="required">#embedded-image</feature>
<feature value="required">#extent</feature>
<feature value="required">#extent-auto</feature>
<feature value="required" extends="#extent-auto">#extent-auto-version-2</feature>
<feature value="required">#extent-contain</feature>
<feature value="required">#extent-cover</feature>
<feature value="required" extends="#extent-version-2">#extent-full-version-2</feature>
<feature value="required">#extent-image</feature>
<feature value="required">#extent-length</feature>
<feature value="required" extends="#extent-length">#extent-length-version-2</feature>
<feature value="required">#extent-measure</feature>
<feature value="required">#extent-region</feature>
<feature value="required" extends="#extent-region">#extent-region-version-2</feature>
<feature value="required">#extent-root</feature>
<feature value="required" extends="#extent-root">#extent-root-version-2</feature>
<feature value="required" extends="#extent">#extent-version-2</feature>
<feature value="required">#font</feature>
<feature value="required">#fontFamily</feature>
<feature value="required">#fontFamily-generic</feature>
<feature value="required">#fontFamily-non-generic</feature>
<feature value="required">#fontKerning</feature>
<feature value="required">#fontSelectionStrategy</feature>
<feature value="required">#fontSelectionStrategy-character</feature>
<feature value="required">#fontShear</feature>
<feature value="required">#fontSize</feature>
<feature value="required">#fontSize-anamorphic</feature>
<feature value="required">#fontSize-isomorphic</feature>
<feature value="required">#fontStyle</feature>
<feature value="required">#fontStyle-italic</feature>
<feature value="required">#fontStyle-oblique</feature>
<feature value="required">#fontVariant</feature>
<feature value="required">#fontWeight</feature>
<feature value="required">#fontWeight-bold</feature>
<feature value="required">#frameRate</feature>
<feature value="required">#frameRateMultiplier</feature>
<feature value="required">#gain</feature>
<feature value="required">#image</feature>
<feature value="required">#image-png</feature>
<feature value="required">#initial</feature>
<feature value="required">#ipd</feature>
<feature value="required">#layout</feature>
<feature value="required">#length</feature>
<feature value="required">#length-cell</feature>
<feature value="required">#length-em</feature>
<feature value="required">#length-integer</feature>
<feature value="required">#length-negative</feature>
<feature value="required">#length-percentage</feature>
<feature value="required">#length-pixel</feature>
<feature value="required">#length-positive</feature>
<feature value="required">#length-real</feature>
<feature value="required" extends="#length-real">#length-real-version-2</feature>
<feature value="required">#length-root-container-relative</feature>
<feature value="required" extends="#length">#length-version-2</feature>
<feature value="required">#letterSpacing</feature>
<feature value="required">#lineBreak-uax14</feature>
<feature value="required">#lineHeight</feature>
<feature value="required">#lineShear</feature>
<feature value="required">#luminance</feature>
<feature value="required">#markerMode</feature>
<feature value="required">#markerMode-continuous</feature>
<feature value="required">#markerMode-discontinuous</feature>
<feature value="required">#metadata</feature>
<feature value="required">#metadata-item</feature>
<feature value="required" extends="#metadata">#metadata-version-2</feature>
<feature value="required">#nested-div</feature>
<feature value="required">#nested-span</feature>
<feature value="required">#opacity</feature>
<feature value="required">#opacity-block</feature>
<feature value="required">#opacity-image</feature>
<feature value="required">#opacity-inline</feature>
<feature value="required">#opacity-region</feature>
<feature value="required" extends="#opacity">#opacity-version-2</feature>
<feature value="required">#origin</feature>
<feature value="required">#overflow</feature>
<feature value="required">#overflow-visible</feature>
<feature value="required">#padding</feature>
<feature value="required">#padding-1</feature>
<feature value="required">#padding-2</feature>
<feature value="required">#padding-3</feature>
<feature value="required">#padding-4</feature>
<feature value="required">#padding-block</feature>
<feature value="required">#padding-inline</feature>
<feature value="required">#padding-region</feature>
<feature value="required" extends="#padding">#padding-version-2</feature>
<feature value="required">#pan</feature>
<feature value="required">#permitFeatureNarrowing</feature>
<feature value="required">#permitFeatureWidening</feature>
<feature value="required">#pitch</feature>
<feature value="required">#pixelAspectRatio</feature>
<feature value="required">#position</feature>
<feature value="required">#presentation</feature>
<feature value="required">#presentation-audio</feature>
<feature value="required" extends="#presentation">#presentation-version-2</feature>
<feature value="required">#processorProfiles</feature>
<feature value="required" extends="#processorProfiles">#processorProfiles-combined</feature>
<feature value="required">#profile</feature>
<feature value="required" extends="#profile-version-2">#profile-full-version-2</feature>
<feature value="required">#profile-nesting</feature>
<feature value="required" extends="#profile">#profile-version-2</feature>
<feature value="required">#region-implied-animation</feature>
<feature value="required">#region-inline</feature>
<feature value="required">#region-timing</feature>
<feature value="required">#resources</feature>
<feature value="required">#ruby</feature>
<feature value="required">#ruby-full</feature>
<feature value="required">#rubyAlign</feature>
<feature value="required">#rubyAlign-minimal</feature>
<feature value="required">#rubyAlign-withBase</feature>
<feature value="required">#rubyPosition</feature>
<feature value="required">#rubyReserve</feature>
<feature value="required" extends="#animation">#set</feature>
<feature value="required">#set-fill</feature>
<feature value="required">#set-multiple-styles</feature>
<feature value="required">#set-repeat</feature>
<feature value="required">#shear</feature>
<feature value="required">#showBackground</feature>
<feature value="required">#source</feature>
<feature value="required">#speak</feature>
<feature value="required">#speech</feature>
<feature value="required">#structure</feature>
<feature value="required">#styling</feature>
<feature value="required">#styling-chained</feature>
<feature value="required">#styling-inheritance-content</feature>
<feature value="required">#styling-inheritance-region</feature>
<feature value="required">#styling-inline</feature>
<feature value="required">#styling-nested</feature>
<feature value="required">#styling-referential</feature>
<feature value="required">#subFrameRate</feature>
<feature value="required">#textAlign</feature>
<feature value="required">#textAlign-absolute</feature>
<feature value="required">#textAlign-justify</feature>
<feature value="required">#textAlign-relative</feature>
<feature value="required" extends="#textAlign">#textAlign-version-2</feature>
<feature value="required">#textCombine</feature>
<feature value="required">#textDecoration</feature>
<feature value="required">#textDecoration-over</feature>
<feature value="required">#textDecoration-through</feature>
<feature value="required">#textDecoration-under</feature>
<feature value="required" extends="#textEmphasis-minimal">#textEmphasis</feature>
<feature value="required">#textEmphasis-color</feature>
<feature value="required">#textEmphasis-minimal</feature>
<feature value="required">#textEmphasis-quoted-string</feature>
<feature value="required">#textOrientation</feature>
<feature value="required">#textOutline</feature>
<feature value="required">#textOutline-blurred</feature>
<feature value="required">#textOutline-unblurred</feature>
<feature value="required">#textShadow</feature>
<feature value="required">#tickRate</feature>
<feature value="required">#time-clock-with-frames</feature>
<feature value="required">#time-clock</feature>
<feature value="required">#time-offset-with-frames</feature>
<feature value="required">#time-offset-with-ticks</feature>
<feature value="required">#time-offset</feature>
<feature value="required">#time-wall-clock</feature>
<feature value="required">#timeBase-clock</feature>
<feature value="required">#timeBase-media</feature>
<feature value="required">#timeBase-smpte</feature>
<feature value="required">#timeContainer</feature>
<feature value="required">#timing</feature>
<feature value="required">#transformation</feature>
<feature value="required" extends="#transformation">#transformation-version-2</feature>
<feature value="required">#unicodeBidi</feature>
<feature value="required">#unicodeBidi-isolate</feature>
<feature value="required" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
<feature value="required">#validation</feature>
<feature value="required">#visibility</feature>
<feature value="required">#visibility-block</feature>
<feature value="required">#visibility-image</feature>
<feature value="required">#visibility-inline</feature>
<feature value="required">#visibility-region</feature>
<feature value="required" extends="#visibility">#visibility-version-2</feature>
<feature value="required">#wrapOption</feature>
<feature value="required">#writingMode</feature>
<feature value="required">#writingMode-horizontal-lr</feature>
<feature value="required">#writingMode-horizontal-rl</feature>
<feature value="required">#writingMode-horizontal</feature>
<feature value="required">#writingMode-vertical</feature>
<feature value="required">#xlink</feature>
<feature value="required">#zIndex</feature>
<!-- 可选 (自愿) 特性支持 -->
</features>
<extensions xml:base="http://www.w3.org/ns/ttml/extension/">
<!-- 必需 (强制) 扩展支持 -->
<!-- 可选 (自愿) 扩展支持 -->
</extensions>
</profile>
TTML2 呈现配置集旨在用于 表达对呈现处理的最低符合程度。
注意:
此配置集是 DFXP 呈现 配置集的超集。
<?xml version="1.0" encoding="utf-8"?>
<!-- 此文件定义 ttml 的 "ttml2-presentation" 配置集 -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
designator="http://www.w3.org/ns/ttml/profile/ttml2-presentation">
<features xml:base="http://www.w3.org/ns/ttml/feature/">
<!-- 必需 (强制) 特性支持 -->
<feature value="required">#content</feature>
<feature value="required">#contentProfiles</feature>
<feature value="required">#core</feature>
<feature value="required">#presentation</feature>
<feature value="required" extends="#presentation">#presentation-version-2</feature>
<feature value="required">#processorProfiles</feature>
<feature value="required">#profile</feature>
<feature value="required" extends="#profile">#profile-version-2</feature>
<feature value="required">#structure</feature>
<feature value="required">#time-offset</feature>
<feature value="required">#timing</feature>
<!-- 可选 (自愿) 特性支持 -->
<feature value="optional">#animate</feature>
<feature value="optional">#animate-fill</feature>
<feature value="optional">#animate-minimal</feature>
<feature value="optional">#animate-paced</feature>
<feature value="optional">#animate-spline</feature>
<feature value="optional">#animate-repeat</feature>
<feature value="optional">#animation</feature>
<feature value="optional">#animation-out-of-line</feature>
<feature value="optional" extends="#animation">#animation-version-2</feature>
<feature value="optional">#audio</feature>
<feature value="optional">#audio-description</feature>
<feature value="optional">#audio-speech</feature>
<feature value="optional">#background</feature>
<feature value="optional">#background-image</feature>
<feature value="optional">#backgroundClip</feature>
<feature value="optional">#backgroundColor-block</feature>
<feature value="optional">#backgroundColor-inline</feature>
<feature value="optional">#backgroundColor-region</feature>
<feature value="optional">#backgroundColor</feature>
<feature value="optional">#backgroundExtent</feature>
<feature value="optional">#backgroundImage</feature>
<feature value="optional">#backgroundOrigin</feature>
<feature value="optional">#backgroundPosition</feature>
<feature value="optional">#backgroundRepeat</feature>
<feature value="optional">#base</feature>
<feature value="optional">#base-general</feature>
<feature value="optional" extends="#base">#base-version-2</feature>
<feature value="optional">#bidi</feature>
<feature value="optional" extends="#bidi">#bidi-version-2</feature>
<feature value="optional">#border</feature>
<feature value="optional">#border-block</feature>
<feature value="optional">#border-inline</feature>
<feature value="optional">#border-radii</feature>
<feature value="optional">#border-radii-1</feature>
<feature value="optional">#border-radii-2</feature>
<feature value="optional">#border-region</feature>
<feature value="optional">#bpd</feature>
<feature value="optional">#cellResolution</feature>
<feature value="optional">#chunk</feature>
<feature value="optional">#clockMode</feature>
<feature value="optional">#clockMode-gps</feature>
<feature value="optional">#clockMode-local</feature>
<feature value="optional">#clockMode-utc</feature>
<feature value="optional">#color</feature>
<feature value="optional">#condition</feature>
<feature value="optional">#condition-fn-media</feature>
<feature value="optional">#condition-fn-parameter</feature>
<feature value="optional">#condition-fn-supports</feature>
<feature value="optional">#condition-primary</feature>
<feature value="optional">#content-sizing</feature>
<feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
<feature value="optional">#data</feature>
<feature value="optional">#direction</feature>
<feature value="optional">#disparity</feature>
<feature value="optional">#display</feature>
<feature value="optional">#display-block</feature>
<feature value="optional">#display-inline</feature>
<feature value="optional">#display-inlineBlock</feature>
<feature value="optional">#display-region</feature>
<feature value="optional" extends="#display">#display-version-2</feature>
<feature value="optional">#displayAlign</feature>
<feature value="optional">#displayAlign-block</feature>
<feature value="optional">#displayAlign-justify</feature>
<feature value="optional">#displayAlign-region</feature>
<feature value="optional">#displayAlign-relative</feature>
<feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
<feature value="optional">#displayAspectRatio</feature>
<feature value="optional">#dropMode</feature>
<feature value="optional">#dropMode-dropNTSC</feature>
<feature value="optional">#dropMode-dropPAL</feature>
<feature value="optional">#dropMode-nonDrop</feature>
<feature value="optional">#embedded-audio</feature>
<feature value="optional">#embedded-content</feature>
<feature value="optional">#embedded-data</feature>
<feature value="optional">#embedded-font</feature>
<feature value="optional">#embedded-image</feature>
<feature value="optional">#extent</feature>
<feature value="optional">#extent-auto</feature>
<feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
<feature value="optional">#extent-contain</feature>
<feature value="optional">#extent-cover</feature>
<feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
<feature value="optional">#extent-image</feature>
<feature value="optional">#extent-length</feature>
<feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
<feature value="optional">#extent-measure</feature>
<feature value="optional">#extent-region</feature>
<feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
<feature value="optional">#extent-root</feature>
<feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
<feature value="optional" extends="#extent">#extent-version-2</feature>
<feature value="optional">#font</feature>
<feature value="optional">#fontFamily</feature>
<feature value="optional">#fontFamily-generic</feature>
<feature value="optional">#fontFamily-non-generic</feature>
<feature value="optional">#fontKerning</feature>
<feature value="optional">#fontSelectionStrategy</feature>
<feature value="optional">#fontSelectionStrategy-character</feature>
<feature value="optional">#fontShear</feature>
<feature value="optional">#fontSize</feature>
<feature value="optional">#fontSize-anamorphic</feature>
<feature value="optional">#fontSize-isomorphic</feature>
<feature value="optional">#fontStyle</feature>
<feature value="optional">#fontStyle-italic</feature>
<feature value="optional">#fontStyle-oblique</feature>
<feature value="optional">#fontVariant</feature>
<feature value="optional">#fontWeight</feature>
<feature value="optional">#fontWeight-bold</feature>
<feature value="optional">#frameRate</feature>
<feature value="optional">#frameRateMultiplier</feature>
<feature value="optional">#gain</feature>
<feature value="optional">#image</feature>
<feature value="optional">#image-png</feature>
<feature value="optional">#initial</feature>
<feature value="optional">#ipd</feature>
<feature value="optional">#layout</feature>
<feature value="optional">#length</feature>
<feature value="optional">#length-cell</feature>
<feature value="optional">#length-em</feature>
<feature value="optional">#length-integer</feature>
<feature value="optional">#length-negative</feature>
<feature value="optional">#length-percentage</feature>
<feature value="optional">#length-pixel</feature>
<feature value="optional">#length-positive</feature>
<feature value="optional">#length-real</feature>
<feature value="optional" extends="#length-real">#length-real-version-2</feature>
<feature value="optional">#length-root-container-relative</feature>
<feature value="optional" extends="#length">#length-version-2</feature>
<feature value="optional">#letterSpacing</feature>
<feature value="optional">#lineBreak-uax14</feature>
<feature value="optional">#lineHeight</feature>
<feature value="optional">#lineShear</feature>
<feature value="optional">#luminance</feature>
<feature value="optional">#markerMode</feature>
<feature value="optional">#markerMode-continuous</feature>
<feature value="optional">#markerMode-discontinuous</feature>
<feature value="optional">#metadata</feature>
<feature value="optional">#metadata-item</feature>
<feature value="optional" extends="#metadata">#metadata-version-2</feature>
<feature value="optional">#nested-div</feature>
<feature value="optional">#nested-span</feature>
<feature value="optional">#opacity</feature>
<feature value="optional">#opacity-block</feature>
<feature value="optional">#opacity-image</feature>
<feature value="optional">#opacity-inline</feature>
<feature value="optional">#opacity-region</feature>
<feature value="optional" extends="#opacity">#opacity-version-2</feature>
<feature value="optional">#origin</feature>
<feature value="optional">#overflow</feature>
<feature value="optional">#overflow-visible</feature>
<feature value="optional">#padding</feature>
<feature value="optional">#padding-1</feature>
<feature value="optional">#padding-2</feature>
<feature value="optional">#padding-3</feature>
<feature value="optional">#padding-4</feature>
<feature value="optional">#padding-block</feature>
<feature value="optional">#padding-inline</feature>
<feature value="optional">#padding-region</feature>
<feature value="optional" extends="#padding">#padding-version-2</feature>
<feature value="optional">#pan</feature>
<feature value="optional">#permitFeatureNarrowing</feature>
<feature value="optional">#permitFeatureWidening</feature>
<feature value="optional">#pitch</feature>
<feature value="optional">#pixelAspectRatio</feature>
<feature value="optional">#position</feature>
<feature value="optional">#presentation-audio</feature>
<feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
<feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
<feature value="optional">#profile-nesting</feature>
<feature value="optional">#region-implied-animation</feature>
<feature value="optional">#region-inline</feature>
<feature value="optional">#region-timing</feature>
<feature value="optional">#resources</feature>
<feature value="optional">#ruby</feature>
<feature value="optional">#ruby-full</feature>
<feature value="optional">#rubyAlign</feature>
<feature value="optional">#rubyAlign-minimal</feature>
<feature value="optional">#rubyAlign-withBase</feature>
<feature value="optional">#rubyPosition</feature>
<feature value="optional">#rubyReserve</feature>
<feature value="optional" extends="#animation">#set</feature>
<feature value="optional">#set-fill</feature>
<feature value="optional">#set-multiple-styles</feature>
<feature value="optional">#set-repeat</feature>
<feature value="optional">#shear</feature>
<feature value="optional">#showBackground</feature>
<feature value="optional">#source</feature>
<feature value="optional">#speak</feature>
<feature value="optional">#speech</feature>
<feature value="optional">#styling</feature>
<feature value="optional">#styling-chained</feature>
<feature value="optional">#styling-inheritance-content</feature>
<feature value="optional">#styling-inheritance-region</feature>
<feature value="optional">#styling-inline</feature>
<feature value="optional">#styling-nested</feature>
<feature value="optional">#styling-referential</feature>
<feature value="optional">#subFrameRate</feature>
<feature value="optional">#textAlign</feature>
<feature value="optional">#textAlign-absolute</feature>
<feature value="optional">#textAlign-justify</feature>
<feature value="optional">#textAlign-relative</feature>
<feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
<feature value="optional">#textCombine</feature>
<feature value="optional">#textDecoration</feature>
<feature value="optional">#textDecoration-over</feature>
<feature value="optional">#textDecoration-through</feature>
<feature value="optional">#textDecoration-under</feature>
<feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
<feature value="optional">#textEmphasis-color</feature>
<feature value="optional">#textEmphasis-minimal</feature>
<feature value="optional">#textEmphasis-quoted-string</feature>
<feature value="optional">#textOrientation</feature>
<feature value="optional">#textOutline</feature>
<feature value="optional">#textOutline-blurred</feature>
<feature value="optional">#textOutline-unblurred</feature>
<feature value="optional">#textShadow</feature>
<feature value="optional">#tickRate</feature>
<feature value="optional">#time-clock-with-frames</feature>
<feature value="optional">#time-clock</feature>
<feature value="optional">#time-offset-with-frames</feature>
<feature value="optional">#time-offset-with-ticks</feature>
<feature value="optional">#time-wall-clock</feature>
<feature value="optional">#timeBase-clock</feature>
<feature value="optional">#timeBase-media</feature>
<feature value="optional">#timeBase-smpte</feature>
<feature value="optional">#timeContainer</feature>
<feature value="optional">#transformation</feature>
<feature value="optional" extends="#transformation">#transformation-version-2</feature>
<feature value="optional">#unicodeBidi</feature>
<feature value="optional">#unicodeBidi-isolate</feature>
<feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
<feature value="optional">#validation</feature>
<feature value="optional">#visibility</feature>
<feature value="optional">#visibility-block</feature>
<feature value="optional">#visibility-image</feature>
<feature value="optional">#visibility-inline</feature>
<feature value="optional">#visibility-region</feature>
<feature value="optional" extends="#visibility">#visibility-version-2</feature>
<feature value="optional">#wrapOption</feature>
<feature value="optional">#writingMode</feature>
<feature value="optional">#writingMode-horizontal-lr</feature>
<feature value="optional">#writingMode-horizontal-rl</feature>
<feature value="optional">#writingMode-horizontal</feature>
<feature value="optional">#writingMode-vertical</feature>
<feature value="optional">#xlink</feature>
<feature value="optional">#zIndex</feature>
</features>
<extensions xml:base="http://www.w3.org/ns/ttml/extension/">
<!-- 必需 (强制) 扩展支持 -->
<!-- 可选 (自愿) 扩展支持 -->
</extensions>
</profile>
TTML2 转换配置集旨在用于 表达对转换处理的最低符合程度。
注意:
此配置集是 DFXP 转换 配置集的超集。
<?xml version="1.0" encoding="utf-8"?>
<!-- 此文件定义 ttml 的 "ttml2-transformation" 配置集 -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
designator="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
<features xml:base="http://www.w3.org/ns/ttml/feature/">
<!-- 必需 (强制) 特性支持 -->
<feature value="required">#content</feature>
<feature value="required">#contentProfiles</feature>
<feature value="required">#core</feature>
<feature value="required">#processorProfiles</feature>
<feature value="required">#profile</feature>
<feature value="required" extends="#profile">#profile-version-2</feature>
<feature value="required">#structure</feature>
<feature value="required">#time-offset</feature>
<feature value="required">#timing</feature>
<feature value="required">#transformation</feature>
<feature value="required" extends="#transformation">#transformation-version-2</feature>
<!-- 可选 (自愿) 特性支持 -->
<feature value="optional">#animate</feature>
<feature value="optional">#animate-fill</feature>
<feature value="optional">#animate-minimal</feature>
<feature value="optional">#animate-paced</feature>
<feature value="optional">#animate-spline</feature>
<feature value="optional">#animate-repeat</feature>
<feature value="optional">#animation</feature>
<feature value="optional">#animation-out-of-line</feature>
<feature value="optional" extends="#animation">#animation-version-2</feature>
<feature value="optional">#audio</feature>
<feature value="optional">#audio-description</feature>
<feature value="optional">#audio-speech</feature>
<feature value="optional">#background</feature>
<feature value="optional">#background-image</feature>
<feature value="optional">#backgroundClip</feature>
<feature value="optional">#backgroundColor-block</feature>
<feature value="optional">#backgroundColor-inline</feature>
<feature value="optional">#backgroundColor-region</feature>
<feature value="optional">#backgroundColor</feature>
<feature value="optional">#backgroundExtent</feature>
<feature value="optional">#backgroundImage</feature>
<feature value="optional">#backgroundOrigin</feature>
<feature value="optional">#backgroundPosition</feature>
<feature value="optional">#backgroundRepeat</feature>
<feature value="optional">#base</feature>
<feature value="optional">#base-general</feature>
<feature value="optional" extends="#base">#base-version-2</feature>
<feature value="optional">#bidi</feature>
<feature value="optional" extends="#bidi">#bidi-version-2</feature>
<feature value="optional">#border</feature>
<feature value="optional">#border-block</feature>
<feature value="optional">#border-inline</feature>
<feature value="optional">#border-radii</feature>
<feature value="optional">#border-radii-1</feature>
<feature value="optional">#border-radii-2</feature>
<feature value="optional">#border-region</feature>
<feature value="optional">#bpd</feature>
<feature value="optional">#cellResolution</feature>
<feature value="optional">#chunk</feature>
<feature value="optional">#clockMode</feature>
<feature value="optional">#clockMode-gps</feature>
<feature value="optional">#clockMode-local</feature>
<feature value="optional">#clockMode-utc</feature>
<feature value="optional">#color</feature>
<feature value="optional">#condition</feature>
<feature value="optional">#condition-fn-media</feature>
<feature value="optional">#condition-fn-parameter</feature>
<feature value="optional">#condition-fn-supports</feature>
<feature value="optional">#condition-primary</feature>
<feature value="optional">#content-sizing</feature>
<feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
<feature value="optional">#data</feature>
<feature value="optional">#direction</feature>
<feature value="optional">#disparity</feature>
<feature value="optional">#display</feature>
<feature value="optional">#display-block</feature>
<feature value="optional">#display-inline</feature>
<feature value="optional">#display-inlineBlock</feature>
<feature value="optional">#display-region</feature>
<feature value="optional" extends="#display">#display-version-2</feature>
<feature value="optional">#displayAlign</feature>
<feature value="optional">#displayAlign-block</feature>
<feature value="optional">#displayAlign-justify</feature>
<feature value="optional">#displayAlign-region</feature>
<feature value="optional">#displayAlign-relative</feature>
<feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
<feature value="optional">#displayAspectRatio</feature>
<feature value="optional">#dropMode</feature>
<feature value="optional">#dropMode-dropNTSC</feature>
<feature value="optional">#dropMode-dropPAL</feature>
<feature value="optional">#dropMode-nonDrop</feature>
<feature value="optional">#embedded-audio</feature>
<feature value="optional">#embedded-content</feature>
<feature value="optional">#embedded-data</feature>
<feature value="optional">#embedded-font</feature>
<feature value="optional">#embedded-image</feature>
<feature value="optional">#extent</feature>
<feature value="optional">#extent-auto</feature>
<feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
<feature value="optional">#extent-contain</feature>
<feature value="optional">#extent-cover</feature>
<feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
<feature value="optional">#extent-image</feature>
<feature value="optional">#extent-length</feature>
<feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
<feature value="optional">#extent-measure</feature>
<feature value="optional">#extent-region</feature>
<feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
<feature value="optional">#extent-root</feature>
<feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
<feature value="optional" extends="#extent">#extent-version-2</feature>
<feature value="optional">#font</feature>
<feature value="optional">#fontFamily</feature>
<feature value="optional">#fontFamily-generic</feature>
<feature value="optional">#fontFamily-non-generic</feature>
<feature value="optional">#fontKerning</feature>
<feature value="optional">#fontSelectionStrategy</feature>
<feature value="optional">#fontSelectionStrategy-character</feature>
<feature value="optional">#fontShear</feature>
<feature value="optional">#fontSize</feature>
<feature value="optional">#fontSize-anamorphic</feature>
<feature value="optional">#fontSize-isomorphic</feature>
<feature value="optional">#fontStyle</feature>
<feature value="optional">#fontStyle-italic</feature>
<feature value="optional">#fontStyle-oblique</feature>
<feature value="optional">#fontVariant</feature>
<feature value="optional">#fontWeight</feature>
<feature value="optional">#fontWeight-bold</feature>
<feature value="optional">#frameRate</feature>
<feature value="optional">#frameRateMultiplier</feature>
<feature value="optional">#gain</feature>
<feature value="optional">#image</feature>
<feature value="optional">#image-png</feature>
<feature value="optional">#initial</feature>
<feature value="optional">#ipd</feature>
<feature value="optional">#layout</feature>
<feature value="optional">#length</feature>
<feature value="optional">#length-cell</feature>
<feature value="optional">#length-em</feature>
<feature value="optional">#length-integer</feature>
<feature value="optional">#length-negative</feature>
<feature value="optional">#length-percentage</feature>
<feature value="optional">#length-pixel</feature>
<feature value="optional">#length-positive</feature>
<feature value="optional">#length-real</feature>
<feature value="optional" extends="#length-real">#length-real-version-2</feature>
<feature value="optional">#length-root-container-relative</feature>
<feature value="optional" extends="#length">#length-version-2</feature>
<feature value="optional">#letterSpacing</feature>
<feature value="optional">#lineBreak-uax14</feature>
<feature value="optional">#lineHeight</feature>
<feature value="optional">#lineShear</feature>
<feature value="optional">#luminance</feature>
<feature value="optional">#markerMode</feature>
<feature value="optional">#markerMode-continuous</feature>
<feature value="optional">#markerMode-discontinuous</feature>
<feature value="optional">#metadata</feature>
<feature value="optional">#metadata-item</feature>
<feature value="optional" extends="#metadata">#metadata-version-2</feature>
<feature value="optional">#nested-div</feature>
<feature value="optional">#nested-span</feature>
<feature value="optional">#opacity</feature>
<feature value="optional">#opacity-block</feature>
<feature value="optional">#opacity-image</feature>
<feature value="optional">#opacity-inline</feature>
<feature value="optional">#opacity-region</feature>
<feature value="optional" extends="#opacity">#opacity-version-2</feature>
<feature value="optional">#origin</feature>
<feature value="optional">#overflow</feature>
<feature value="optional">#overflow-visible</feature>
<feature value="optional">#padding</feature>
<feature value="optional">#padding-1</feature>
<feature value="optional">#padding-2</feature>
<feature value="optional">#padding-3</feature>
<feature value="optional">#padding-4</feature>
<feature value="optional">#padding-block</feature>
<feature value="optional">#padding-inline</feature>
<feature value="optional">#padding-region</feature>
<feature value="optional" extends="#padding">#padding-version-2</feature>
<feature value="optional">#pan</feature>
<feature value="optional">#permitFeatureNarrowing</feature>
<feature value="optional">#permitFeatureWidening</feature>
<feature value="optional">#pitch</feature>
<feature value="optional">#pixelAspectRatio</feature>
<feature value="optional">#position</feature>
<feature value="optional">#presentation</feature>
<feature value="optional">#presentation-audio</feature>
<feature value="optional" extends="#presentation">#presentation-version-2</feature>
<feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
<feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
<feature value="optional">#profile-nesting</feature>
<feature value="optional">#region-implied-animation</feature>
<feature value="optional">#region-inline</feature>
<feature value="optional">#region-timing</feature>
<feature value="optional">#resources</feature>
<feature value="optional">#ruby</feature>
<feature value="optional">#ruby-full</feature>
<feature value="optional">#rubyAlign</feature>
<feature value="optional">#rubyAlign-minimal</feature>
<feature value="optional">#rubyAlign-withBase</feature>
<feature value="optional">#rubyPosition</feature>
<feature value="optional">#rubyReserve</feature>
<feature value="optional" extends="#animation">#set</feature>
<feature value="optional">#set-fill</feature>
<feature value="optional">#set-multiple-styles</feature>
<feature value="optional">#set-repeat</feature>
<feature value="optional">#shear</feature>
<feature value="optional">#showBackground</feature>
<feature value="optional">#source</feature>
<feature value="optional">#speak</feature>
<feature value="optional">#speech</feature>
<feature value="optional">#styling</feature>
<feature value="optional">#styling-chained</feature>
<feature value="optional">#styling-inheritance-content</feature>
<feature value="optional">#styling-inheritance-region</feature>
<feature value="optional">#styling-inline</feature>
<feature value="optional">#styling-nested</feature>
<feature value="optional">#styling-referential</feature>
<feature value="optional">#subFrameRate</feature>
<feature value="optional">#textAlign</feature>
<feature value="optional">#textAlign-absolute</feature>
<feature value="optional">#textAlign-justify</feature>
<feature value="optional">#textAlign-relative</feature>
<feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
<feature value="optional">#textCombine</feature>
<feature value="optional">#textDecoration</feature>
<feature value="optional">#textDecoration-over</feature>
<feature value="optional">#textDecoration-through</feature>
<feature value="optional">#textDecoration-under</feature>
<feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
<feature value="optional">#textEmphasis-color</feature>
<feature value="optional">#textEmphasis-minimal</feature>
<feature value="optional">#textEmphasis-quoted-string</feature>
<feature value="optional">#textOrientation</feature>
<feature value="optional">#textOutline</feature>
<feature value="optional">#textOutline-blurred</feature>
<feature value="optional">#textOutline-unblurred</feature>
<feature value="optional">#textShadow</feature>
<feature value="optional">#tickRate</feature>
<feature value="optional">#time-clock-with-frames</feature>
<feature value="optional">#time-clock</feature>
<feature value="optional">#time-offset-with-frames</feature>
<feature value="optional">#time-offset-with-ticks</feature>
<feature value="optional">#time-wall-clock</feature>
<feature value="optional">#timeBase-clock</feature>
<feature value="optional">#timeBase-media</feature>
<feature value="optional">#timeBase-smpte</feature>
<feature value="optional">#timeContainer</feature>
<feature value="optional">#unicodeBidi</feature>
<feature value="optional">#unicodeBidi-isolate</feature>
<feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
<feature value="optional">#validation</feature>
<feature value="optional">#visibility</feature>
<feature value="optional">#visibility-block</feature>
<feature value="optional">#visibility-image</feature>
<feature value="optional">#visibility-inline</feature>
<feature value="optional">#visibility-region</feature>
<feature value="optional" extends="#visibility">#visibility-version-2</feature>
<feature value="optional">#wrapOption</feature>
<feature value="optional">#writingMode</feature>
<feature value="optional">#writingMode-horizontal-lr</feature>
<feature value="optional">#writingMode-horizontal-rl</feature>
<feature value="optional">#writingMode-horizontal</feature>
<feature value="optional">#writingMode-vertical</feature>
<feature value="optional">#xlink</feature>
<feature value="optional">#zIndex</feature>
</features>
<extensions xml:base="http://www.w3.org/ns/ttml/extension/">
<!-- 必需 (强制) 扩展支持 -->
<!-- 可选 (自愿) 扩展支持 -->
</extensions>
</profile>
DFXP 完整配置集由 [TTML1] 的 附录 F.3,DFXP 完整配置集规定。
DFXP 呈现配置集由 [TTML1] 的 附录 F.2,DFXP 呈现 配置集规定。
DFXP 转换配置集由 [TTML1] 的 附录 F.1,DFXP 转换 配置集规定。
本附录是规范性的。
本附录规定了用于确定根容器 区域的基本特征及其使用方式的语义,包括:
宽高比(显示、存储、像素);
分辨率(空间范围);以及
坐标空间。
以下三种宽高比适用于根容器区域:
根容器的显示宽高比对应于
根容器的宽高比,
以拟在假想显示设备上呈现的显示像素
为衡量依据。
此显示宽高比通过
ttp:displayAspectRatio 属性显式指定,
该属性位于
tt 元素上,或者根据下文所述的
其他信息推断得出。
注意:
在完成所定义的 TTML 呈现处理后, 根容器像素的实际物理呈现 可能在宽高比、采样分辨率和色彩空间方面 经历多种变换。此类 TTML 后续 处理完全不在本规范的范围内。
根容器的存储宽高比对应于
根容器的宽高比,
以逻辑像素
在文档坐标空间中的数量为衡量依据,
其中,双射(单射且满射)映射将每个逻辑像素与
唯一的显示像素关联起来。
此存储宽高比通过 tts:extent 属性显式指定,该属性位于
tt 元素上,或者根据下文所述的
其他信息推断得出。
当 tts:extent 属性指定在
tt 元素上时,则
如果 tts:extent 属性的值 由 两个以像素为单位的 <length> 表达式组成,则 存储宽高比被视为 已指定,其数值等于该范围的 宽度除以其高度;
否则(计算值为 contain),
存储宽高比被视为未指定,并根据下文所述的其他
信息推断得出。
根容器的像素宽高比定义了其每个显示像素
的宽高比,由此,每个逻辑像素
在
文档坐标空间中都采用
与其关联的
显示像素的固定宽高比,使得
DAR = SAR × PAR。
此像素宽高比通过
ttp:pixelAspectRato 属性显式指定,该属性位于
tt 元素上,或者根据下文所述的
其他信息推断得出。
以下各小节规定了如何根据文档中已指定的 宽高比来解析这些宽高比。
如果三种宽高比均未指定,则按照以下 有序步骤确定这三种宽高比:
如果存在关联媒体对象,且其
DAR 已定义,
则 DAR 的解析值为该关联媒体对象的显示宽高比;
否则,DAR 的值由
文档处理上下文(任意)确定;
随后根据下文的
H.1.2 指定一种宽高
比解析 SAR 和 PAR 的值。
如果只指定了三种宽高比中的一种,则按如下方式确定另外两种 宽高比的解析值:
如果已指定 DAR,或已通过上文的 H.1.1 未指定宽高
比解析出该值,
则其解析值为其指定值或已解析值,而
SAR 和 PAR 的值按如下方式确定:
SAR 的解析值为 DAR 的解析值;
PAR 的解析值为 1(一)。
如果已指定 SAR,则其解析值为其指定值,而
DAR 和 PAR 的值
按如下方式确定:
如果存在关联媒体对象,且
其 DAR 已定义,
则 DAR 的解析值为该
关联媒体对象的显示宽高比,而
PAR
的值随后根据下文的 H.1.3
指定两种宽高
比解析得出;
否则,DAR 的解析值
由文档
处理上下文确定,而 PAR 的值
随后根据下文的 H.1.3
指定两种宽高
比解析得出;
如果已指定 PAR,
则其解析值为其指定值,而 DAR 和
SAR 的值按如下方式确定:
如果存在关联媒体对象,且
其 DAR 已定义,
则 DAR 的解析值为该
关联媒体对象的显示宽高比,而
SAR
的值随后根据下文的 H.1.3
指定两种宽高
比解析得出;
否则,SAR 的解析值
由文档
处理上下文确定,而 DAR 的值
随后根据下文的 H.1.3
指定两种宽高
比解析得出。
如果三种宽高比均已指定,且其值满足等式
DAR = SAR × PAR,
则将它们视为已解析的宽高比。但是,如果不满足该等式,
则在执行
验证处理时,应报告错误
(取决于验证处理器的配置);而在执行
呈现处理时,忽略指定的 PAR 值,并将
PAR 的解析值
按照上文的 H.1.3 指定两种宽高
比确定。
根容器区域被细分为逻辑 像素网格,其中像素行数 和像素列数均固定,像素列数表示 根容器区域在 水平轴上的分辨率,像素行数表示 根容器区域在 垂直轴上的分辨率,前者定义为根容器区域的宽度,后者则定义 为根容器区域的高度,而 沿这两个轴的(这两个)分辨率的 集合称为根容器区域的综合 分辨率 或空间范围。
注意:
如上文存储 宽高比 (SAR) 中所述, 逻辑像素没有固有的宽高比, 也就是说, 逻辑像素没有定义的形状,这进而 意味着它没有定义的大小。 只有当逻辑像素被映射到 显示像素时,它才具有固定的形状和 大小。 尽管如此,将逻辑像素视为正方形且具有 可测量的绝对大小通常很方便;但是,提醒读者不要过早得出这一 (可能不正确的)结论。
如果 tts:extent 属性的值
已在 tt 元素上指定,并且
由
两个以像素为单位的 <length> 表达式组成,则这两个
表达式表示
根容器区域的宽度和高度,
并且,
由此确定其综合
分辨率;
否则,根容器区域的综合分辨率
由
文档
处理上下文(任意)确定,但必须遵循 SAR 的解析值,
该值由上文的
H.1 宽高比确定。
本附录是规范性的。
本附录规定了用于解释文档实例中时间表达式的语义。
注意:
下文使用的短语本地实时时间旨在对文档处理上下文中的虚拟实时时钟 建模,其中 本地表示紧邻此处理上下文的实现。 定义 与此虚拟时钟关系的目的是为便于讲解而建立一种在本地有效的时间 物理实现。
注意:
下文使用的短语播放速率旨在对文档处理上下文中的一个(可能可变的)参数 建模,其中 时间的播放(或解释)速率可以人为放慢或加快,例如, 当减慢或加快 关联媒体对象的播放速率时。不失一般性,以下讨论假定播放 速率固定。如果播放速率可变,则可能需要适当调整所得的计算结果。
文档处理上下文定义了适用的 纪元以及与纪元相关的任何偏移量, 以用于建立合成文档 同步基准。
使用 clock 时基运行时,以下语义适用于解释
时间表达式,
即 <time-expression> 所定义的表达式,以及它们
与媒体时间和本地实时时间的关系。
时钟时基 C 与本地实时时间 R
的关系,
在纪元 E(由
文档处理上下文定义)中表示
如下:
|
由 <time-expression> 表示的时间值表达式与
时钟时间 C 的关系如下:
|
注意:
时间表达式中的 frames 和 sub-frames 项以及帧 (f) 计量单位
在使用
clock 时基时不适用。
时钟时基 C 独立于媒体时间 M:
|
注意:
也就是说,使用 clock 时基时,
定时与媒体时间脱钩(不一定成正比)。例如,如果媒体播放速率为零 (0),媒体
播放会暂停;但是,定时坐标
将继续按照时钟时间的自然进程推进,并与
参考时钟基准成正比。此外,如果媒体播放速率
在播放期间发生变化,呈现定时不会受到影响。
使用 media 时基运行时,以下语义适用于解释
时间表达式,
即 <time-expression> 所定义的表达式,以及它们
与媒体时间、文档时间和本地实时时间的关系。
媒体时基 M 与本地实时时间
R 的关系,
在纪元 E(由
文档处理上下文定义)中表示如下:
|
注意:
如果 playRate 的值由文档处理上下文确定,
即它未被设置为默认值 1.0,则该值可能在
文档呈现过程中实时
变化,在这种情况下,对于给定的 M 值,预期
根据新的
playRate 值重新计算相应的 R 值。
由 <time-expression> 表示的时间值表达式与
媒体时间 M 的关系,根据
ttp:frameRate、ttp:subFrameRate 和
ttp:frameRateMultiplier 参数确定如下:
|
注意:
如果计算出的 frameRateMultiplier 比率不是整数,则
effectiveFrameRate 将为非整数的有理数。
本小节是非规范性的。
当 ttp:timeBase="media" 时,计算出的文档时间
直接用作等效的媒体时间,不应用偏移量。
注意:
例如由封装格式 施加的任何额外媒体时间处理,均不在 TTML 规范的范围内。
例如,[ISOBMFF TT] 提供了一种机制,可将 TTML 文档 作为样本封装在分段和非分段文件中;[MPEG DASH] 则为 通过 HTTP 和 MPEG-2 TS 进行分片传送提供了进一步的分段语义。
以下文档片段在定时上等效:
<tt ttp:timeBase="media" ...>
...
<body>
<div xml:id="d1" begin="1s">
<p xml:id="p1" begin="0s" end="1s">第一段</p>
<p xml:id="p2" begin="2s" end="3s">第二段</p>
</div>
</body>
</tt>
|
<tt ttp:timeBase="media" ...>
...
<body>
<div xml:id="d1">
<p xml:id="p1" begin="1s" end="2s">第一段</p>
<p xml:id="p2" begin="3s" end="4s">第二段</p>
</div>
</body>
</tt>
|
在此示例中,使用
[SMIL 3.0] 的术语,body
元素的隐式时长与其计算时长相同,这也就是
根时间
范围。但是,如果
文档处理
上下文指定了适用的媒体时间范围,该范围会限制
已解析的开始和结束时间,从而限制
根时间
范围。
在以下示例中,处理上下文定义 文档处于活动状态的媒体时间范围为 1.5s 到 3.5s,这也定义了根时间范围,因为在这两个时刻 均存在定时内容。
灰色背景表示 文档处理 上下文将文档定义为非活动状态的时间段。 文档时间坐标空间 不受此变换影响。
如果文档处理上下文将媒体 时间范围定义为 0-3s,则 根时间范围 将为 p1 所定义的 1s 到 2s,而 p2 永远不会 显示。
使用 smpte 时基运行时,以下语义适用于解释
时间表达式,
即 <time-expression> 所定义的表达式,以及它们
与媒体时间和本地实时时间的关系。
如果 ttp:markerMode 参数的计算值为 discontinuous,
则
时间表达式与媒体时间 M 或本地实时时间 R 之间没有直接关系。在
这种情况下,时间表达式引用由文档处理上下文发出的同步事件(标记),
这些事件在smpte 时间码
出现在关联媒体对象中时发出。
否则,如果 ttp:markerMode 参数的计算值为
continuous,则时间表达式与
本地实时时间和媒体时间之间的关系如下文所述,并以合成 smpte 文档同步基准为依据,此处
将其称为
SMPTE 时基 S。
|
注意:
有关在适用 smpte 时基时弃用
时间表达式的
offset-time 形式以及 fraction 分量的说明,
请参见 <time-expression>。
SMPTE 时基 S 与媒体时基
M 的关系如下:
|
给定上述推导出的媒体时基,则
媒体时基 M 与本地实时时间 R
的关系如上文 I.2 媒体时基所述。
本附录是规范性的。
本附录规定了 定时文本中间文档的语法元素和结构。 ISD 实例可以表示为独立文档实例,或者 位于表示为 ISD 序列实例的集合中。
所有与 ISD 相关的词汇均定义于 TTML ISD 命名空间中,此处将该命名空间定义为
http://www.w3.org/ns/ttml#isd,
其推荐前缀为 isd。
注意:
除了使用 TTML ISD 命名空间中的元素之外,ISD 文档实例通常还 包含来自一个或多个 其他 TTML 命名空间的词汇,这些命名空间定义于 5.1 命名空间。
TTML 中间同步文档,简称
ISD 或 ISD 实例,
表示源 TTML 文档中一个离散且在时间上不重叠的区间,即 ISD 区间,
在该区间内,除非离散动画外,所有内容、样式和布局
信息均保持静态。
具体而言,TTML 文档的定时层次结构被展平,然后细分为在时间上
不重叠的区间,每个这样的
区间都定义了源 TTML 文档在该区间内的静态视图,而该静态
视图表示为一个 ISD 实例。
TTML
中间同步文档的具体独立实例必须指定一个
isd:isd 元素作为其文档根元素。当一个
相应的
中间同步文档实例被包含在
中间同步文档序列
实例中时,该 ISD 实例
由根
isd:sequence 元素的 isd:isd 子元素表示。
注意:
ISD 实例可以包含一个或多个 animate 元素,用于表示 关联区间内的连续动画。连续动画样式在 ISD 区间边界处分割,使得它们逐段串联后能够在任何相交的 ISD 区间上表达等效的连续 动画。
TTML 中间同步文档
序列表示一个集合,
其中包含在时间上不重叠的中间同步
文档实例,并按其
开始时间排序。TTML
中间同步文档序列的具体实例
必须指定一个
isd:sequence 元素作为其文档根元素。
isd:sequence 元素用作中间
同步文档序列文档的文档根元素。
isd:sequence 元素接受零个或多个 metadata 元素作为其子元素,
后跟零个或一个 ttp:profile
元素,
再后跟零个或多个 isd:isd 元素。
isd:isd 子元素必须按照其开始时间
所对应的
媒体时间排序;此外,任何两个 isd:isd 子元素的时间区间都不得(在时间上)重叠。
<isd:sequence
extent = xsd:string
size = <non-negative-integer>
version = <non-negative-integer>
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
{ISD 参数属性集中的任意属性}>
内容:
|
如果指定了 extent 属性,则它必须遵循 <extent> 值
语法中由两个以像素为单位的 <length>
表达式组成的子集,在这种情况下,指定值
表示根容器区域的空间范围,
其定义见
H.2 分辨率,
此空间范围全局适用于
每个组成该序列的
中间同步文档,
这些文档由 isd:isd 子元素表示。
如果指定了 size 属性,则它必须是非负整数,
对应于
isd:isd 子元素的数量。
如果未指定,则必须将大小视为不确定,除非并直到
相应的
isd:sequence 元素结束,在这种
情况下,大小
可以通过检查确定。
注意:
在实时字幕
场景中,通常会省略 size 属性。
如果指定了 version 属性,则它必须是正整数(大于
零),对应于编写该 ISD 序列文档时使用的此
中间同步文档语法
规范的
版本。如果指定,则其数值必须大于或等于二
(2)。如果未指定,则必须将版本
视为等于二 (2)。与此
中间同步文档语法
规范关联的版本为二 (2)。
注意:
[TTML1] §9.3.2 所引用或隐含的 ISD 抽象 并未由该规范具体定义。此处保留版本一 (1), 用于非正式讨论该早期抽象及其各种(未标准化的) 实现。
必须在
相应的
isd:sequence 元素上指定 xml:lang 属性。
如果其值为空,则表示没有适用于
中间同步文档
序列中内容的默认语言。否则,
指定值表示适用于每个组成该序列的
中间同步文档的默认语言。
可以从受限参数属性集中指定一个或多个参数属性, 该属性集列于 J.2 ISD 参数属性集。 如果指定,则它们全局适用于每个组成该序列的中间同步文档。
如果存在 ttp:profile 子元素,
则该 ttp:profile 元素必须
满足以下约束:
未指定 combine 属性;
未指定 designator 属性;
未指定 type 属性;
未指定 use 属性;
没有任何后代元素是 ttp:profile 元素;
没有任何 ttp:feature 后代元素指定值为
prohibited 的 value 属性;
没有任何 ttp:extension 后代元素指定值为
prohibited 的 value 属性。
此外,此类 ttp:profile
子元素必须指定一个配置集,该配置集等效于源 TTML 文档的合并
处理器配置集,其中已
获取所有外部引用的配置集文档。
注意:
允许在
isd:sequence 中指定单个 ttp:profile,
旨在提供一种简化的
机制,以声明
处理该文档时必须满足的处理器配置集要求(在没有
最终用户覆盖的情况下)。
isd:isd 元素用作以下两者之一:
(1) 独立中间同步文档的文档根元素;或者
(2) 作为 isd:sequence 元素的子元素,该元素属于
相应的
中间同步文档
序列文档,
其中 isd:isd 元素派生自并替换根 tt 元素,
后者保留于每个中间同步文档形式 DOCinter 中,这些形式
由
构造中间文档
过程创建。
isd:isd 元素接受零个或多个 metadata
元素作为其子元素,
后跟零个或一个 ttp:profile
元素,
再后跟零个或多个 isd:css 元素,
最后跟零个或多个 isd:region 元素。
<isd:isd
begin = <time-expression>
end = <time-expression> | "indefinite"
extent = xsd:string
version = <non-negative-integer>
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
{ISD 参数属性集中的任意属性}>
内容:
|
必须指定 begin 属性,其值必须采用
offset-time 形式的
<time-expression>,并且进一步
限制为使用以下计量单位:
s(秒)、
f(帧)、
t(滴答),也可以省略计量单位,在这种情况下隐含为 s 秒。
这个
开始时间表示为相对于
文档时间坐标空间开始时间的偏移量,
该空间属于派生此 isd:isd 元素的源 TTML 文档。
同样必须指定 end 属性,且适用相同的约束。
如果 end 属性的值采用 <time-expression>
的形式,
则此结束时间表示为相对于文档时间坐标空间开始时间的偏移量,
该空间属于派生此 isd:isd 元素的源 TTML 文档;
否则(值为 indefinite),时间范围在
对此属性编码时尚不明确,
或者不存在时间结束点。
注意:
用 [SMIL 3.0] 的术语表述,这些
begin 和 end 属性的值
对应于活动时长相对于
文档起点的已解析开始和结束时间。
如果指定了 extent 属性,则它必须遵循 <extent> 值
语法中由两个以像素为单位的 <length>
表达式组成的子集,在这种情况下,指定值
表示根容器区域的空间范围,
其定义见
H.2 分辨率,此空间范围
适用于中间同步
文档,
该文档由此 isd:isd 元素表示。此外,
如果此 isd:isd 元素包含于
中间同步文档
序列文档中,则
如果容器 isd:sequence 元素
指定了
extent 属性,那么此 isd:isd
元素
不应指定 extent 属性;如果指定,则其值必须等于
相应的
extent 属性值,该属性指定于容器 isd:sequence 元素上。
必须指定 xml:lang 属性,
其所在的
isd:isd 元素若是独立的中间
同步文档文档;否则,可以指定此属性,并且如果
相应的
isd:isd 元素的默认语言不同于
其
父 isd:sequence 元素的默认语言,则应指定此属性。
如果其值为空,则表示没有适用于
中间
同步文档中内容的默认语言。否则,
指定值表示适用的默认语言。
version 属性遵循同名属性的语法和语义,
该同名属性位于
isd:sequence 元素类型上。
version
属性不得指定在 isd:isd 元素上,如果该元素
并非
文档根元素,即它是 isd:sequence 元素的子元素。
可以存在 ttp:profile 子元素,
如果相应的
isd:isd 元素是独立的中间
同步文档文档,在这种情况下,适用的约束和语义与
J.1.1 isd:sequence 中规定的相同;
否则,如果不是独立文档,则不得存在 ttp:profile 子元素。
isd:css 元素用于表示某个元素
集合的唯一计算样式集,
这些元素共享相同的计算样式集。具体而言,对于
源 TTML 文档中被选取并复制到
isd:region 元素中的每个元素 E,该区域元素属于给定的
中间同步文档,需要
确定
E 的计算样式集 CSS(E),如果该 CSS(E) 尚未
由
现有的 isd:css 元素指定,则为其分配唯一标识符,并
将其实例化为新的
isd:css 元素。
isd:css 元素接受零个或多个 metadata
元素作为其子元素。
对于任意一对 isd:css 子元素,它们属于同一个
isd:isd 元素,
分别为 S1 和 S2,S1 的指定样式集必须
与 S2 的指定样式集不同。为了比较两个
指定样式集,必须先将样式按规范顺序排列,然后
逐
项比较其值是否相等,其中规范顺序遵循限定
属性名的
顺序,每个限定名由以下元组组成:
<namespace URL, local name>,
并且这些元组按区分大小写的字符串字典序逐分量
比较。
isd:region 元素用于表示布局和呈现区域
以及选入该区域的内容,这些内容采用
body 元素及其后代内容元素的形式。
isd:region 元素接受零个或多个 metadata 元素作为其子元素,
后跟零个或多个 animate
元素,
再后跟恰好一个 body
元素。
如果 isd:region 元素所表示区域的计算样式集
不等于
适用于 region 的初始样式值集合,则
必须指定 style 属性,该属性引用一个 isd:css
元素,此元素指定该
区域的计算样式集。
以下约束适用于 body 元素
及其后代元素:
未指定 animate 属性;
未指定 begin 属性;
未指定 dur 属性;
未指定 end 属性;
未指定 region 属性;
未指定 timeContainer 属性;
未指定 TT 样式命名空间中的任何属性;
不存在 set 元素;
此外,对于 body 元素
B 以及
它的每个后代内容元素 C,如果
B 或每个 C 的计算样式集
不等于其父元素的计算样式集,则该元素(B 或
C)必须指定 style
属性,该属性引用一个 isd:css 元素,
此元素指定该
元素的计算样式集。
已定义的参数
属性中的以下子集
可以按照上文所述用于
isd:sequence 或
isd:isd 元素:
采用中间同步文档
语法的具体文档实例必须
使用 UTF-8 字符编码,编码为格式良好的 [XML 1.0] 文档。
此外,此类文档必须指定
isd:sequence 元素或
isd:isd 元素作为文档根元素。
当交换由具体 ISD 序列或 ISD 实例构成的资源,并使用媒体
类型来标识该资源的
内容类型时,应使用媒体类型 application/ttml+xml,关于该类型,
另请参见 [TTML1] 附录 C。
如果使用此媒体类型,则不得指定可选的 profile 参数,或者,
如果已指定,则处理器必须忽略它。
本附录是规范性的。
注意:
有关本规范公开提供的免费版本,请参见 http://standards.iso.org/ittf/PubliclyAvailableStandards/c066391_ISO_IEC_14496-22_2015.zip。 有关相关 OpenType 规范的 Microsoft 版本,请参见 https://docs.microsoft.com/en-us/typography/opentype/spec/。 OpenType 是 Microsoft Corporation 的注册商标。
定时文本标记语言 (TTML),也称为定时文本创作 格式 (TTAF) 的分发格式交换 配置集 (DFXP),满足 [TTAF1-REQ] 所确立的部分需求。下表列出了这些需求,并 指明本规范满足这些需求的程度,其中 S 表示需求已满足,P 表示 需求已部分满足,而 N 表示 需求未满足。
| ID | 名称 | 状态 | 说明 |
|---|---|---|---|
| R100 | 规范格式 | S | |
| R101 | 规范模块化 | S | |
| R102 | 规范组织 | S | |
| R103 | 核心与外围 | S | TT 扩展命名空间 |
| R104 | 核心的演进 | S | TT 扩展命名空间 |
| R105 | 核心的所有权 | S | TT 命名空间 |
| R106 | 核心的满射性 | S | |
| R107 | 外围的演进 | S | TT 扩展命名空间 |
| R108 | 外围的所有权 | S | 非 TT 命名空间 |
| R109 | 转换 | S | 支持 3GPP、QText、RealText、SAMI |
| R110 | 可流式处理的转换 | S | 渐进式解码 |
| R111 | 无障碍 – 内容 | S | 替代文档实例 |
| R112 | 无障碍 – 创作系统 | S | |
| R200 | 可创作性 | S | |
| R201 | 多种自然语言 | S | 替代文档实例 |
| R202 | 自然语言覆盖范围 | S | Unicode 4.0 |
| R203 | 自然语言关联粒度 | S | 参见 xml:lang |
| R204 | 最低字符表示能力 | S | Unicode 4.0 |
| R205 | 内部与外部文本内容 | P | 仅内部内容 |
| R206 | 标记关联 | P | 仅内部内容 |
| R207 | 条件内容 | S | 参见 condition |
| R208 | 流式文本 | S | |
| R209 | 逻辑流式文本词汇 | S | |
| R210 | 呈现流式文本词汇 | S | 从逻辑流式文本进行隐式映射。 |
| R211 | 流式文本词汇的关系 | S | |
| R212 | 流式文本词汇的分离 | N | |
| R213 | 非流式文本 | N | |
| R214 | 非流式文本词汇 | N | |
| R215 | 流式与非流式文本的混合 | N | |
| R216 | 超链接 | S | 参见 xlink |
| R217 | 嵌入式图形 | P | 参见 image 和下文的注 1。 |
| R218 | 非嵌入式图形 | S | 参见 image |
| R219 | 嵌入式字体 | S | 参见 font |
| R220 | 非嵌入式字体 | S | 参见 font |
| R221 | 描述性词汇 | S | 参见 ttm:agent、ttm:role |
| R222 | 嵌入式音频 | S | 参见 audio |
| R223 | 非嵌入式音频 | S | 参见 audio |
| R290 | 标记格式 | S | |
| R291 | 标记格式与 Unicode 的交互 | S | |
| R292 | 外部资源引用 | S | 参见 xlink |
| R293 | 模式有效性规定 | S | |
| R300 | 内联样式设置 | S | |
| R301 | 内联样式设置形式 | P | 内联和引用式样式设置 |
| R302 | 外置样式设置 | N | |
| R303 | 外置样式设置形式 | N | |
| R304 | 样式优先级 | S | |
| R305 | 样式参数 – 听觉 | P | 参见
tta:gain、
tta:pan、
tta:pitch
和
tta:speak。
|
| R306 | 样式参数 – 视觉 | P | 支持 绝对位置、 背景颜色、 双向处理、 块推进方向尺寸、 边框(前、后、起始、结束)、 颜色、 不显示、 行内块显示、 显示对齐、 字体族、 字体大小、 字体样式、 字体粗细、 高度、 行内推进方向尺寸、 行高、 换行选项、 不透明度、 原点、 溢出、 内边距(前、后、起始、结束)、 相对位置、 文本对齐、 文本装饰、 文本阴影、 可见性、 空白折叠、 空白处理、 宽度、 书写模式、 z-index |
| R390 | 样式参数对称性 | S | |
| R391 | 样式参数定义 | S | |
| R392 | 样式参数简写 | S | |
| R401 | 内联定时 | S | |
| R402 | 外置定时 | N | |
| R403 | 同步参数 | P | 支持 begin、end、dur |
| R404 | 同步参数值空间 | P | 支持偏移值、媒体标记值 (SMPTE 12M)、挂钟时间值 |
| R405 | 时间包含语义 | P | 支持顺序、并行 |
| R500 | 动画模式 | S | 参见 animate、animation 和 set |
| R501 | 滚动动画 | N | |
| R502 | 高亮动画 | S | <set tts:backgroundColor="..."/> |
| R503 | 淡入淡出过渡动画 | S | <animate tts:opacity="..."/> |
| R504 | 动画样式参数 – 听觉 | P |
<animate tta:pan="..."/>
,也适用于
tta:gain
、tta:pitch
和
tta:speak
|
| R505 | 动画样式参数 – 视觉 | P | 支持对以下内容进行动画处理: 背景颜色、 边框颜色、 颜色、 显示、 不透明度、 原点、 可见性 |
| N506 | 动画内容 | S | |
| R600 | 元数据项关联 | S | 参见 metadata、Metadata.class |
| R601 | 元数据项组成部分 | P | 支持名称、值 |
| R602 | 元数据项值表示 | P | 参见 metadata |
| R603 | 元数据项可扩展性 | S | 参见 metadata 和 ttm:item |
| R604 | 元数据项验证 | S | 参见 metadata |
| R690 | 优先使用都柏林核心 | N | 使用 ttm:copyright、ttm:desc、ttm:title 和
通用的 ttm:item |
注意:
R217 包含一项有关原始文本存在性的子需求;但是,本 规范不对作者的使用方式 施加限制,因此该子需求已被排除在范围之外。
本附录提供有关 TTML 词汇派生的信息,分别描述元素和 属性的派生。
表 N-1 – 元素的第一列 指定一个 TTML 元素词汇项;第二列指定该 词汇项所基于的语法和(或)语义模型; 第三列指定定义 该模型的参考文献(如果指出了模型); 第四列指定有关派生的详细信息;最后 一列引用描述派生性质的 附加注释。
在描述派生详细信息的第四列中,使用一种
记法来表示属性的添加或移除。
例如,在 tt:div 元素的派生中,
详细信息列包含 "-@class",表示
为
xhtml:div 模型元素指定的 class 属性未被指定用于
对应的 TTML 元素;相反,详细信息列包含
"+@begin",表示添加了一个 begin 属性,
而该属性未被指定用于 xhtml:div 模型
元素。
| 元素 | 模型 | 参考文献 | 详细信息 | 注释 |
tt:animate |
svg:animate |
[SVG 1.1] | -@* 但保留 begin, calcMode, dur, end, fill, keySplines, keyTimes, repeatCount; +style, +@tts:*, +@xml:id | 3,6 |
tt:animation |
tt:styling |
[TTML1] | 概念性派生 | 4,12 |
tt:audio |
audio |
[HTML] | -@accesskey, -@autoplay, -@class, -@contenteditable, -@controls, -@crossorigin, -@dir, -@draggable, -@hidden, -@id, -@lang, -@loop, -@muted, -@preload, -@spellcheck, -@tabindex, -@title, -@translate; +@animate, +@begin, +@clipBegin, +@clipEnd, +@condition, +@dur, +@end, +@format, +@style, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xml:id, +@xml:lang, +@xml:space | 2,3 |
tt:body |
xhtml:body |
[XHTML 1.0] | -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*; 内容模型 缩减为零个或多个分区 (div) 子元素,并扩展为包含 可选的 metadata 和 animation 子元素 | 1,2 |
tt:br |
xhtml:br |
[XHTML 1.0] | -@class, -@title; +@ttm:*, +@tts:*, +@xml:lang, +@xml:space; 内容模型扩展为包含 可选的 metadata 和 animation 子元素,以便与其他 内容词汇保持一致 | 1,2 |
tt:chunk |
无 | [Data 方案], [数据编码] | 概念性派生 | 4 |
tt:data |
无 | [Data 方案], [数据编码] | 概念性派生 | 4 |
tt:div |
xhtml:div |
[XHTML 1.0] | -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 内容模型 缩减为零个或多个段落 (p) 子元素,并扩展为包含 可选的 metadata 和 animation 子元素 | 1,2,3 |
tt:font |
无 | |||
tt:head |
xhtml:head |
[XHTML 1.0] | -@dir, -@lang, -@profile; +@id, +@xml:space; 内容模型改为 可选的 metadata 子元素,后跟可选的 styling 子元素, 再后跟可选的 layout 子元素 | 1,3 |
tt:image |
img |
[HTML] | -@accesskey, -@alt, -@class, -@contenteditable, -@crossorigin, -@dir, -@draggable, -@height, -@hidden, -@id, -@ismap, -@lang, -@longdesc -@referrerpolicy -@sizes, -@spellcheck, -@srcset, -@tabindex, -@title, -@translate; -@usemap, -@width; +@animate, +@begin, +@condition, +@dur, +@end, +@format, +@region, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xlink:href, +@xlink:role, +@xlink:show, +@xlink:title, +@xml:id, +@xml:lang, +@xml:space | 2,3 |
tt:initial |
无 | |||
tt:layout |
fo:simple-page-master |
[XSL-FO 1.1] | 概念性派生 | 4 |
tt:metadata |
svg:metadata |
[SVG 1.1] | +@ttm:*, +@xml:lang, +@xml:space; 内容模型 不是混合内容(无 #PCDATA) | 3 |
tt:p |
xhtml:p |
[XHTML 1.0] | -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 内容模型 缩减为零个或多个 span 子元素,并扩展为包含可选的 metadata 和 animation 子元素 | 1,2,3 |
tt:region |
fo:region-* |
[XSL-FO 1.1] | 概念性派生 | 4 |
tt:resources |
svg:defs |
概念性派生 | 4 | |
tt:set |
svg:set |
[SVG 1.1] | -@* 但保留 begin, dur, end; +@tts:*, +@xml:lang, +@xml:space | 3,6 |
tt:source |
source |
[HTML] | -@media, @srcset, @sizes; +@condition, @format, @xml:space | 3 |
tt:span |
xhtml:span |
[XHTML 1.0] | -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 内容模型 缩减为零个或多个 #PCDATA 或换行 (br) 子节点,并 扩展为包含可选的 metadata 和 animation 子元素 | 1,2,3 |
tt:style |
样式声明 | [CSS2] | 带标识的样式属性名称和值对集合的 XML 表示,可以通过引用其他 style 元素 选择性地包含其他样式 | 7 |
tt:styling |
xhtml:style |
[XHTML 1.0] | 一组样式声明集的 XML 表示,每个声明集 由一个 style 子元素表示 | 1,7 |
tt:tt |
xhtml:html |
[XHTML 1.0] | -@dir, -@lang; +@id, +@ttp:*, +@xml:space; 内容模型通过 允许 body 和(或)head 为可选项而缩减 | 1,8 |
ttm:actor |
mpeg7:Creator |
[MPEG7-5] | 概念性派生 | 4 |
ttm:agent |
mpeg7:Agent |
[MPEG7-5] | 概念性派生 | 4 |
ttm:copyright |
mpeg7:CopyrightString |
[MPEG7-5] | 概念性派生 | 4 |
ttm:desc |
svg:desc |
[SVG 1.1] | -@class, -@style | 2,9 |
ttm:item |
meta |
[HTML] | 概念性派生 | 4 |
ttm:name |
mpeg7:Name |
[MPEG7-5] | 概念性派生 | 4 |
ttm:title |
svg:title |
[SVG 1.1] | -@class, -@style | 2,9 |
ttp:extension |
@requiredExtensions |
[SVG 1.1] | 概念性派生 | 10 |
ttp:extensions |
@requiredExtensions |
[SVG 1.1] | 概念性派生 | 10 |
ttp:feature |
@requiredFeatures |
[SVG 1.1] | 概念性派生 | 10 |
ttp:features |
@requiredFeatures |
[SVG 1.1] | 概念性派生 | 10 |
ttp:profile |
@baseProfile |
[SVG 1.1] | 概念性派生 | 11 |
注意:
派生是相对于 [XHTML 1.0] §A.1 所定义的严格 DTD 而言的。
class 属性实际上被
style
属性替代,后者并不指定内联样式,
而是间接引用一个或多个 style
元素,这些元素定义了一组样式声明集。
为所有元素
类型定义了 xml:lang 和 xml:space 属性,
以支持其继承语义在
外部命名空间元素的上下文中运作。
派生仅是概念性(观念性)的。
已删除
attributeName 和 to 属性(属于
svg:set)被替换为
直接表达目标属性名称和值的方式,即使用
tts:* 属性。
CSS 样式声明语法通过使用 TT 样式命名空间中定义的属性映射到 XML。
xml:id 属性被定义为可用于所有元素类型。
style 属性在
10.2.1 style 列出的元素类型上受到支持。
派生自 @requiredExtensions
和 @requiredFeatures 在 svg:svg 元素上的用法,
但进行了扩展,以支持单独指定可选性。
派生自 @baseProfile
和 @version 在 svg:svg 元素上的用法。
在概念上派生自现有的 tt:styling 元素,
后者是样式声明的通用容器,但此处用于
定义动画声明。
表 N-2 – 属性的第一列 指定一个 TTML 属性词汇项;第二列指定该 词汇项所基于的语法和(或)语义模型; 第三列指定定义 该模型的参考文献(如果指出了模型); 第四列指定有关派生的详细信息;最后 一列引用描述派生性质的 附加注释。
在描述派生详细信息的第四列中,使用一种
记法来表示属性值的添加或
移除。例如,在 timeContainer
属性的派生中,
详细信息列包含 "-excl",表示
为
timeContainer 模型属性指定的 excl 值未被指定用于
对应的 TTML 属性;类似地,详细信息列中的 "+value"
表示该属性的值已被
扩展为包含 value。
下文仅列出指定用于多个 TTML 元素类型的属性。那些为特定 TTML 元素类型 唯一定义的逐元素命名空间属性不会 列于下文,而是被视为该特定元素 类型派生的一部分,其描述见上文的表 N-1 – 元素 中。
样式属性的派生在下文单独列出。
| 属性 | 模型 | 参考文献 | 详细信息 | 注释 |
begin |
begin |
[SMIL 3.0] | 参见注释 | 1,2,3 |
dur |
dur |
[SMIL 3.0] | 参见注释 | 1,2,3 |
end |
end |
[SMIL 3.0] | 参见注释 | 1,2,3 |
region |
master-reference |
[XSL-FO 1.1] | 概念性派生 | |
style |
class |
[CSS2] | 直接解引用样式声明 | |
timeContainer |
timeContainer |
[SMIL 3.0] |
-excl,
-none;
无默认属性值
|
4 |
ttm:agent |
无 | 用于标明内容的主体 | ||
ttm:role |
无 | 用于标明内容的角色 | ||
ttp:cellResolution |
无 | 表示基于单元格的坐标所使用的均匀网格分辨率 | ||
ttp:clockMode |
无 | 确定如何解释时间表达式 | ||
ttp:frameRate |
无 | 表示整数帧率 | ||
ttp:frameRateMultiplier
|
无 | 用于表示非整数的有理数帧率 | ||
ttp:markerMode |
无 | 表示标记连续性语义 | ||
ttp:pixelAspectRatio
|
无 | 表示根容器的像素宽高比 | ||
ttp:profile |
无 | 表示 TTML 配置集,由文档 实例使用 | ||
ttp:dropMode |
无 | 表示帧计数(丢帧)模式 | ||
ttp:subFrameRate |
无 | 表示子帧率 | ||
ttp:tickRate |
无 | 用于解释基于滴答的时间表达式 | ||
ttp:timeBase |
无 | 用于解释时间表达式的语义 | ||
xml:id |
xml:id |
[XML ID] | 符合模型 | |
xml:lang |
xml:lang |
[XML 1.0] | 符合模型 | |
xml:space |
xml:space |
[XML 1.0] | 参见注释 | 5 |
注意:
仅限于表达一个时钟值,该值根据
相应参数(由
ttp:timeBase 属性表达)是 media、smpte
还是 clock,分别表示以下之一:
(1) 相对于与媒体时间线关联的隐式同步基准的
偏移量,(2) 表示
隐式媒体标记出现的事件时间,或 (3) 挂钟
时间。
在语法上按如下方式缩减和扩展 [SMIL 3.0]
的 Clock-value 语法:
(1) 要求非负的 Full-clock-value 或
Timecount-value;
(2) 如果为 Full-clock-value,
则 hours 必须为两位或更多位数字;
(3) 如果为 Timecount-value,则 metric 必须
指定;
(4) 使用 m 作为 min 计量单位的别名来表示
分钟;
(5) 添加 f 和 t 计量单位,分别表示帧和
滴答;
(6) 为 Full-clock-value 中可选的 Fraction
添加另一种表达方式,即指定帧数或带有子帧数的
帧数。
时间表达式的解释进一步受到以下
属性所表达参数的约束:
ttp:clockMode、
ttp:dropMode、
ttp:frameRate、
ttp:frameRateMultiplier、
ttp:markerMode、
ttp:subFrameRate、
ttp:tickRate,以及
ttp:timeBase 属性。
如果未指定,则并行 (par) 容器语义适用于 12.2.4 timeContainer 指定的元素类型。
在根元素上,默认属性值指定为
default,其定义基于空白
规范化。保留和默认规范化的语义
由 8.2.10 xml:space 按呈现语义定义。
本节列出了各个样式属性派生自或可视为与之等效的 参考来源,以及相对于所引用 来源的任何差异。它可作为资料性参考,用于将 TTML 样式属性映射到 等效的 CSS 属性,以及在存在对应属性时映射到 XSL 属性。其他映射 也是可能的,例如映射到 [SVG 1.1]。
CSS 等效关系假定每个中间同步文档 都映射到等效的 [HTML] DOM 结构,其元素被赋予所述的 样式属性。
注意:
在 TTML 中,样式属性名称和值被规范化为使用 lowerCamelCase 命名约定。
| 参考文献 | [CSS 背景与边框], §3.7 |
| 模型 | background-clip |
| 值 | 值直接映射。 |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.8.2 | [CSS2], §14.2.1 |
| 模型 | background-color |
background-color |
| 值 | -inherit |
值直接映射 |
| 注释 | 使用模型中的命名颜色子集,并
添加以下两个别名:magenta 作为 fuchsia 的别名,以及
cyan
作为 aqua 的别名。
|
使用模型中的命名颜色子集,并
添加以下两个别名:magenta 作为 fuchsia 的别名,以及
cyan
作为 aqua 的别名。不支持命名颜色 orange。
|
| 参考文献 | [CSS 背景与边框], §3.9 |
| 模型 | background-size |
| 值 | 值直接映射 |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.8.3 | [CSS2], §14.2.1 |
| 模型 | background-image |
background-image |
| 值 | -inherit |
-inherit |
| 注释 | 无 | 无 |
| 参考文献 | [CSS 背景与边框], §3.8 |
| 模型 | background-origin |
| 值 | 值直接映射 |
| 注释 | 无 |
| 参考文献 | [CSS2], §14.2 |
| 模型 | background-position |
| 值 | 值直接映射 |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.8.4 | [CSS2], §14.2.1 |
| 模型 | background-repeat |
background-repeat |
| 值 |
|
|
| 注释 | 无 | 无 |
| 参考文献 | [XSL-FO 1.1],§7.31.3,以及 [CSS 背景与边框],§4 和 §5 |
| 模型 | border |
| 值 | -inherit |
| 注释 | 无 |
| 参考文献 | height 属性,由 [XSL-FO 1.1]
§7.15.6 和 [CSS2] §10.5 定义 |
| 模型 | 插入模型 |
| 值 | 值直接映射 |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.18.1 | [CSS2], §14.1 |
| 模型 | color |
color |
| 值 | -inherit |
-inherit |
| 注释 | 使用模型中的命名颜色子集,并
添加以下两个别名:magenta 作为 fuchsia 的别名,以及
cyan
作为 aqua 的别名。
|
使用模型中的命名颜色子集,并
添加以下两个别名:magenta 作为 fuchsia 的别名,以及
cyan
作为 aqua 的别名。不支持命名颜色 orange。
|
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.29.1 | [CSS 书写模式], §2.1 |
| 模型 | direction |
direction |
| 值 | -inherit。特殊继承
语义适用。 |
特殊继承 语义适用。 |
| 注释 | 无` | 无` |
| 参考文献 | [CSS2], §9.2.4 |
| 模型 | display |
| 值 | 仅 auto、none |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.14.4 | [CSS 弹性布局], §8.2 |
| 模型 | display-align |
justify-content(参见下文注释) |
| 值 | -inherit, +justify |
|
| 注释 | 无 | CSS 提供多种布局;其中一种布局提供与
相应的
tts:displayAlign 属性等效的语义,此处描述如下:
|
| 参考文献 | [XSL-FO 1.1],§7.15.6 和 §7.15.14 |
| 模型 | width, height |
| 值 | 值直接映射 |
| 注释 | 简写属性 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.9.2 | [CSS2], §15.3 |
| 模型 | font-family |
font-family |
| 值 | -inherit。缩减并扩展通用字体族名称 |
-inherit。缩减并扩展通用字体族名称 |
| 注释 | 与 CSS 一样,可以在列表分隔符周围包含空白。 | 无 |
| 参考文献 | [CSS 字体], §6.3 |
| 模型 | font-kerning |
| 值 | -auto |
| 注释 | 无 |
| 参考文献 | [XSL-FO 1.1], §7.9.3. |
| 模型 | font-selection-strategy |
| 值 | -inherit,character 映射到
character-by-character
|
| 选择条件已扩展。 | 无。 |
| 参考文献 | [CSS 变换], §9.1 |
| 模型 | skewX() 和 skewY() 二维变换函数 |
| 值 |
|
| 注释 | [SVG 1.1] 中提供了类似的变换函数 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.9.4. | [CSS2], §15.7. |
| 模型 | font-size |
font-size |
| 值 | -inherit, -<absolute-size>,
-<relative-size>. |
-inherit, -<absolute-size>,
-<relative-size>.
|
| 注释 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.9.7 | [CSS2], §15.4 |
| 模型 | font-style |
font-style |
| 值 | -inherit, -backslant |
-inherit |
| 注释 | 无 | 无 |
| 参考文献 | [CSS 字体], §6.11 |
| 模型 | font-variant-east-asian 和 font-variant-position 以及
font-feature-settings
|
| 值 |
|
| 注释 | 无 |
| 参考文献 | [XSL-FO 1.1], §7.9.9 | [CSS2], §15.6 |
| 模型 | font-weight |
font-weight |
| 值 | -inherit, -bolder, -lighter,
-<number> |
-inherit, -initial, -bolder,
-lighter, -<number>, -unset |
| 注释 | 无 | 无 |
| 参考文献 | width 属性,由 [XSL-FO 1.1]
§7.15.14 和 [CSS2] §10.2 定义 |
| 模型 | 插入模型 |
| 值 | 插入值 |
| 注释 | 插入注释 |
| 参考文献 | [CSS 文本], §8.2 |
| 模型 | letter-spacing |
| 值 | 值直接映射 |
| 注释 | 无 |
行堆叠语义旨在与 CSS 行盒堆叠策略一致。
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.16.4 | [CSS2], §10.8 |
| 模型 | line-height |
line-height |
| 值 |
-inherit, -<number>, -<space>
|
-inherit, -<number>,
-<space>,
-calc, -initial, -unset
|
| 注释 | 本规范旨在使 行的分配矩形与 per-inline-height-rectangle 保持一致,后者定义于 [XSL-FO 1.1] §4.5,即使用 CSS 风格的 行盒堆叠策略。 | 无 |
无派生,即由本规范引入。
| 参考文献 | [CSS 变换], §9.1 |
| 模型 | skewX() 和 skewY() 二维变换函数 |
| 值 |
|
| 注释 | [SVG 1.1] 中提供了类似的变换函数 |
| 参考文献 | [CSS 颜色], §3.2 |
| 模型 | opacity |
| 值 | -inherit |
| 注释 | 无 |
| 参考文献 | [XSL-FO 1.1] |
| 模型 | top, left |
| 值 | 值直接映射 |
| 注释 | 简写属性 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.21.2 | [CSS2], §11.1.1 |
| 模型 | overflow |
overflow |
| 值 | -inherit, -auto, -error-if-overflow |
-inherit, -auto, -initial,
-scroll, -unset |
| 注释 | 无 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.31.15 | [CSS2], §8.4 |
| 模型 | padding |
padding |
| 值 | -inherit。各个简写值映射到
相对于书写模式的内边距值,其定义见 [XSL-FO
1.1] §7.8.31、
7.8.32、7.8.33 和 7.8.34 |
-calc, -inherit, -unset
|
| 注释 | 使用相对于书写模式的内边距属性 而不是绝对内边距属性来表达。 |
TTML 和 XSL 边缘描述符映射到抽象的流
相对边缘描述符,其定义见 [CSS 书写
模式] §6.2:
|
| 参考文献 | [CSS 背景与边框], §3.6 |
| 模型 | background-position |
| 值 | 值直接映射 |
| 注释 | 无 |
| 参考文献 | [注音] 和 [CSS 注音]。 |
| 模型 | ruby-* |
| 值 | 参见注释和规范正文。 |
| 注释 | 另请参见 [JLREQ] §3.3,以获取更多信息。也可以 映射到 [HTML] 注音标记。 |
| 参考文献 | [CSS 注音], §4.3 |
| 模型 | ruby-align |
| 值 | +end, +withBase.
本规范扩展了此样式属性的语义。 |
| 注释 | 参考文献中展示的示例及其渲染结果适用。 |
| 参考文献 | [CSS 注音], §4.1 |
| 模型 | 插入模型 |
| 值 | 插入值 |
| 注释 | 参考文献中展示的示例及其渲染结果适用,但须考虑 本规范定义的 映射。 |
无派生,即由本规范引入。
| 参考文献 | [CSS 变换], §9.1 |
| 模型 | skewX() 和 skewY() 二维变换函数 |
| 值 |
|
| 注释 | [SVG 1.1] 中提供了类似的变换函数 |
| 参考文献 | [SMIL 3.0], §7.4.2 |
| 模型 | showBackground |
| 值 | -inherit |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.16.9 | [CSS2], §16.2 |
| 模型 | text-align |
text-align |
| 值 | -inherit |
-inherit, +start, +end |
| 注释 | text-align-last 必须设置为 "relative" |
TTML 添加了依赖于书写模式的值 start 和
end,
它们可视为抽象的流相对方向,并映射到
物理方向,
其依据为 [CSS 书写模式] §6.4。参见
tts:padding 的 CSS 派生以获取更多
详细信息。
|
| 参考文献 | [CSS 书写模式], §9.1 |
| 模型 | text-combine-upright |
| 值 | 值直接映射 |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.17.4 | [CSS2], §16.3.1 |
| 模型 | text-decoration |
text-decoration |
| 值 | -blink, -inherit(关键字), -no-blink
|
-blink, -inherit(关键字),
+noUnderline, +noLineThrough,
+noOverline.
lineThrough 映射到 line-through。
|
| 注释 | 定义为可继承,并具有 特殊继承 语义。 | 定义为可继承,并具有
特殊继承
语义,
其中适用用于确定下划线位置的 XSL 语义。
此外,
值 none 的语义与 CSS 中同名值的语义不同,因为
在 TTML 中,它被定义为
等效于 noUnderline、noLineThrough 和
noOverline,这些值
均未在 CSS 中定义,而且它们的语义均会导致
TTML 中继承的装饰被
移除,而 CSS 并不(直接)支持此能力。
|
| 参考文献 | [CSS 文本装饰], §3 |
| 模型 |
|
| 值 | 除 auto 外,值直接映射。
auto 的语义依赖于书写模式。
|
| 注释 | 无 |
| 参考文献 | [UTR50] 和 [CSS 书写模式], §5.1 |
| 模型 | text-orientation |
| 值 |
-inherit,
-sideways-left,
-sideways-right,
-use-glyph-orientation
|
| 注释 | 无 |
| 参考文献 | [XSL-FO 1.1] |
| 模型 | text-shadow |
| 值 | -inherit(关键字),定义为可继承 |
| 注释 | 仅使用一个长度规定而不是两个,该长度 定义描边效果相对于字形轮廓标称边缘的 距离,测量方向垂直于字形轮廓上的相应点。还增加了百分比长度, 用于相对于字体大小表达描边效果。 描边效果预期绘制在外部闭合 轮廓之外以及内部闭合轮廓之内。 |
| 参考文献 | [CSS 文本装饰], §4 |
| 模型 | text-shadow |
| 值 | 值直接映射 |
| 注释 | 无 |
| 参考文献 | [XSL-FO 1.1],§7.29.6 和 [CSS 书写 模式],§2.2 |
| 模型 | unicode-bidi |
| 值 | -inherit,+isolate |
| 注释 | 添加 isolate,其来源为 [CSS 书写模式] |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.30.17 | [CSS2], §11.2 |
| 模型 | visibility |
visibility |
| 值 | -inherit, -collapse |
-inherit, -collapse |
| 注释 | 无 | 无 |
| 参考文献 | [XSL-FO 1.1], §7.16.13 |
| 模型 | wrap-option |
| 值 | -inherit |
| 注释 | 无 |
| 参考文献 | [XSL-FO 1.1], §7.29.7 |
| 模型 | writing-mode |
| 值 |
-inherit,
-bt-lr,
-bt-rl,
-lr-bt,
-rl-bt,
-lr-alternating-rl-bt,
-lr-alternating-rl-tb,
-lr-inverting-rl-bt,
-lr-inverting-rl-tb,
-tb-lr-in-lr-pairs
|
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 参考文献 | [XSL-FO 1.1], §7.30.18 | [CSS2], §9.9.1 |
| 模型 | z-index |
z-index |
| 值 | -inherit |
-inherit |
| 注释 | 无 | 无 |
本附录规定本规范对以下文档所定义的 要求和指南的符合性:QA 框架规范指南,[QAF SG]。
注意:
对外部规范进行规范性引用时, 会引用具体条款或章节。
另请参阅 N 词汇派生。
测试断言和测试套件将在进入 提议推荐标准(PR)阶段之前提供。
请参阅 3.2 处理器符合性中的准则 #3, 以及 TTML 抽象文档实例的定义。
此版本的 TTML 未废止任何特性。
当 [XML 1.0] 用作 定时文本文档实例的具体编码时, 以下文档规定的安全注意事项适用:[XML 媒体类型] 和 [XML 指南]。
注意:
XML 实体不包含在简化 XML 信息集中,该信息集属于 一个定时文本文档实例; 尽管如此, 仍鼓励实现提供针对递归实体展开的防护, 或在 TTML 处理器中完全阻止实体展开。
本规范定义的机制允许定时 文本文档实例 引用外部资源,包括音频、字体、图像以及无类型(通用)数据 资源。 获取此类资源,以及获取 定时文本文档实例的具体表示, 均完全由内容处理器控制。因此, 为允许或限制对此类资源的访问而设计的任何控制措施也不属于 本规范的范围。
获取外部资源时,内容处理器应确定是否需要执行 创建潜在 CORS 请求,其定义见 [HTML] §2.6,获取资源。
如果内容 处理器阻止获取此类资源, 则整个文档或文档的某些部分可能无法按预期进行处理, 因而,文档的部分或全部 内容可能无法用于呈现处理。
在媒体播放期间下载外部资源的内容处理器 会向资源的源服务器透露用户的 媒体使用进度。在许多情况下,媒体的源服务器可以通过其他机制 获得此类媒体进度信息,例如 通过脚本或监视流媒体请求。
下载外部资源时不强制执行跨源策略的内容处理器 会在未获得提供媒体的网站同意, 也未获得用户同意的情况下,将此类媒体进度信息以及潜在的 其他用户跟踪信息暴露给其他源。本 规范未定义任何 API,也未说明预期实现应如何获取 所引用的资源。
本规范不包含或涉及对任何外部样式表 或样式声明的处理;而是 将所有样式信息直接集成到 TTML 文档语法中,并根据 该语法的 简化 XML 信息集表示进行处理。
此处定义了一种允许对内容进行条件处理的机制,其中条件 表达式 可以考虑某些处理状态,包括用户的语言偏好、关联 媒体的语言、 是否启用了强制字幕,以及媒体查询表达式是否 得到满足。 但是,并不向 TTML 内容提供对此状态的直接访问;而是由内容处理器 访问此状态,并对条件是否得到满足作出二元(是或否) 判定。
此处定义了一种基于 [XLink 1.1] 的机制,允许作者将 内容与 外部文档关联。是否由 内容处理器为此机制提供语义支持, 是在本规范范围之外作出的决定。 此外,如果支持链接激活,其语义同样不属于本 规范的范围。
选择并促使下载或解释 某个 定时文本文档实例的内容处理器可能向 源服务器表明用户 需要字幕或翻译字幕,因此可能透露用户在获取字幕或翻译字幕时的 语言偏好。 此语言偏好构成 关于用户的信息。但是,提供定时文本文档实例 以及选择是否检索并处理它,是提供该实例的应用程序的特征 (例如基于 [HTML] 的 Web 应用程序),而非文档实例本身的特征。
本附录说明如何将 [SRGB] 像素合成到高动态范围 (HDR)像素上。
以下说明如何使用 tts:luminanceGain 将 [SRGB] 像素合成到 HDR 像素上,
这些 HDR 像素符合 [ITU BT.2100-1] 规定的系统色度参数,并使用
感知量化器(PQ)EOTF 和全范围量化。
注意:
以下示例并非旨在提供通用的色彩管理,也不适用于 所有情形,例如,它假定目标合成 表面为 10 位,并使用全范围量化。
设 (r, g, b) 为全范围 8 位 [SRGB] 像素,其
不透明度介于 0 与 1 之间。
设 (R, G, B) 和 (Rc, Gc, Bc) 为
全范围 10 位像素,符合 [ITU
BT.2100-1] 规定的系统色度参数,使用 PQ EOTF 和全范围量化,其不透明度 A
和 Ac 介于 0 与 1 之间。
对 8 位全范围量化进行逆运算:
(r, g, b) / 255 → (r, g, b)
使用 [SRGB] 参考显示器 EOTF 进行线性化:
(r2.2, g2.2, b2.2) → (r, g, b)
使用 tts:luminanceGain 属性和 [SRGB] 照明体计算 HDR 绝对亮度:
80 ∙ tts:luminanceGain ∙ (r, g, b) → (r, g, b)
从 [SRGB] 色彩空间转换到 [ITU BT.2100-1] 色彩空间:
[(0.62740389593470, 0.32928303837789, 0.04331306568741),
(0.06909728935823, 0.91954039507545, 0.01136231556630),
(0.01639143887515, 0.08801330787723, 0.89559525324763)] ∙ (r, g, b) → (r, g, b)
以 10,000 cd∙m-2 为基准进行归一化:
(r, g, b) / 10000 → (r, g, b)
应用 [ITU BT.2100-1] 规定的逆 PQ EOTF:
(PQ(r), PQ(g), PQ(b)) → (r, g, b)
其中
PQ(L) = [(c1 + c2 ∙ Lm1) / (1 + c3 ∙ Lm1)]m2
且 m1 = 0.1593017578125,m2 = 78.84375,
c1 = 0.8359375,c2 = 18.8515625,以及 c3 = 18.6875。
应用不透明度:
(1-a) ∙ (r, g, b) → (r, g, b)
应用 10 位全范围量化:
(Q(r), Q(g), Q(b)) → (r, g, b)
其中 Q(N) = floor(1023 ∙ N + 0.5)
应用合成以得到 (Rc, Gc, Bc):
(clamp(r + R), clamp(g + G), clamp(b + B)) → (Rc, Gc, Bc)
1 + (1 - a) ∙ (A - 1) → Ac
其中
clamp(x) = 0,条件为 x < 0
且
clamp(x) = x,条件为 0 ≤ x ≤ 1023
且
clamp(x) = 1023,条件为 x > 1023
以下说明如何将 [SRGB] 像素合成到混合对数伽马 (HLG)HDR 像素上。
设 (r, g, b) 为全范围 8 位 [SRGB] 像素,其
不透明度 A 介于 0 与 255 之间。
设 (R,G,B) 和 (Rc,Gc,Bc) 为
窄范围 10 位像素,符合 [ITU
BT.2100-1] 规定的系统色度参数,使用 HLG EOTF 和窄范围量化。下标 c
表示合成后的视频信号。
设 (X,Y,Z) 为符合 CIE 1931 XYZ
色彩空间 [XYZ] 所规定的系统色度参数的像素。
对 8 位全范围量化进行逆运算:
(r, g, b)/255 → (r, g, b)
A/255 → A
使用 [SRGB] EOTF 进行线性化:
(r2.0,g2.0,b2.0) → (r,g,b)
从 [SRGB] 色彩空间转换到 [ITU BT.2100-1] 色彩空间:
[(0.4124, 0.3576, 0.1805),
(0.2126, 0.7152, 0.0722), (0.0193,0.1192,0.9505)]•(r,g,b)→(X,Y,Z)
[(1.7167, −0.3557, −0.2534),
(−0.6667, 1.6165, 0.0158), (0.0176,−0.04277,0.9421)]•(X,Y,Z)→(r,g,b)
应用简化的逆 HLG OOTF:
((0.265r),(0.265g),(0.265b)) → (r,g,b)
应用 [ITU BT.2100-1] 规定的 HLG OETF:
(HLG(r),HLG(g),HLG(b)) → (r,g,b)
其中
HLG(x) = (3x)0.5,条件为 0 ≤ x ≤ 1/12
且
HLG(x) = a•ln(12x−b)+c,条件为 x > 1/12,
且 a = 0.17883277,且 b = 1−4a,且 c = 0.5−a•ln(4a)
应用 10 位窄范围量化:
(Q(r),Q(g),Q(b)) → (r,g,b)
其中 Q(x) = floor((940 − 64) • x + 64.5)
将前景图形 (r,g,b) 合成到背景视频 (R,G,B) 上,使用不透明度
A,得到 (Rc,Gc,Bc):
((A•r+(1−A)R),(A•g+(1−A)G),(A•b+(1−A)B)) → (Rc,Gc,Bc)
将输出钳制到 10 位信号范围:
(clamp(Rc),clamp(Gc),clamp(Bc)) → (Rc,Gc,Bc)
其中
clamp(x) = 0,条件为 x < 0
且
clamp(x) = x,条件为 0 ≤ x ≤ 1023
且
clamp(x) = 1023,条件为 x > 1023
注意:
上述算法不使用
tts:luminanceGain 属性,因为 HLG
HDR 不需要绝对增益级别。相反,
此算法将 [SRGB] 峰值白色映射到 HLG 中的“图形白”,后者
被定义为窄范围信号的 75%,
该信号定义见 [ITU BT.2100-1]。
注意:
伽马指数 2.0 被有意设置为不同于 [SRGB] 中规定的伽马值 2.2。 该规范中的值 2.2 专用于其中规定的观看环境, 并包含 针对这些条件的视觉心理渲染调整。 HLG 信号不需要此调整, 因为它不包含显示渲染。
可以编写满足以下特征的 TTML 内容,这些特征在 流式传输场景中可能有用:
可以渐进式编码(即,无需在发送当前数据之前计算 后续数据);
可以渐进式解码(前提是不需要前向 引用,而仅在必要时使用后向引用);
不需要解引用(以及随后加载)任何 未包含在同一分段或访问单元(或等效单元)中的资源;
其定时结构被编译为行内格式, 从而使内容可以按照时间上的 呈现顺序进行排列;
对 TTML 内容进行流式传输的一种可能方式是, 将文档实例的信息集划分为 不重叠的片段,其中一个特定片段,称为 根片段,表示 文档实例的前置内容(头部)以及其顶层结构 元素,而 其他片段表示其时间区间预计会 并行活动的内容。
在要求能够任意(随机)进入 流的应用程序中,即要求能够从 任意数据访问单元开始读取数据,根片段会被重复 传输(插入)到流中,以便解码器能够 重新同步,并从信息集中获取足够的 结构信息, 从而解释后续内容片段。
这种文档实例分片方式的示例 见图 2 – 片段流式传输。
|
注意:
本规范未定义传输缓冲区模型或解码器 能力模型。
对 TTML 内容进行流式传输的另一种方式是, 将文档实例的信息集划分为 具有时间边界的片段,每个片段本身都是一个文档实例,包含呈现它所需的全部 前置内容(头部)和内容,其中每个 片段的时间区间受到文档 交换上下文或 文档处理上下文或两者的约束,从而解决与其他片段的时间 重叠。
例如,某些文档处理上下文通过规定在时间线上的任意时刻最多 只能有一个文档实例处于活动状态,来解决时间重叠问题,并且还会 规定优先级规则,以便在存在多个候选实例时,确定具体是 哪个文档实例。
为了确保所有内容都能正确显示,对于属于某个 ISD 的内容,如果该 ISD 的区间与多个 分片区间重叠,则可能需要在生成该 ISD 所需的每个片段中复制 这些内容。实现可以识别除区间外完全相同的相邻 ISD, 并用一个覆盖合并后区间的 ISD 替换它们。
这种方法的目的是,让呈现处理器能够生成与非流式传输版本的文档 实例所生成的 ISD 序列等效的 序列,同时通过改变分段持续时间,利用 避免重复一定数量前置内容的能力,且该数量可控。重建原始源内容 并不保证得到完全相同的文档实例。
注意:
例如,[ISOBMFF TT] 和 [EBU-TT-Live] 使用了此技术。
这种文档实例分片方式的示例 见图 3 – 时间分片。
|
注意:
在上例中,单个文档实例包含在以下区间可见的内容: T1 至 T6,并被划分为两个文档实例(分段), 第一个包含所需的全部内容以及引用的样式和区域,适用时段为 T1 至 T3,第二个包含全部内容以及引用的样式和区域, 这些内容、样式和区域 在 T4 至 T6 期间是必需的。
可以将文档实例转换为 一系列定时文本 中间文档实例,并将它们作为独立实体进行流式传输。
此技术最大限度地降低了客户端的处理要求,但要求在每个适用的 ISD 中 复制所有相关的前置内容。重建原始源内容 并不保证得到完全相同的文档实例。
本节提供以下常见字幕样式的示例,使用 TTML 内容 实现所需的行为:
弹出式字幕
上滚式字幕
逐字显示字幕
逐字显示字幕的示例。在此示例中,两个区域交替接收逐字显示的 内容,其中内容使用 显式的顺序时间包含规则进行定时。各段落在时间上互不重叠, 并显示在其目标区域的 同一行中。
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 1c"/>
<region xml:id="r2" tts:color="yellow" tts:origin="10c 8c" tts:extent="40c 1c"/>
</layout>
</head>
<body>
<div timeContainer="seq">
<p region="r1" dur="4s">Lorem ipsum dolor sit</p>
<p region="r2" dur="4s">Amet consectetur adipiscing elit</p>
<p region="r1" dur="6s">Sed do eiusmod tempor incididunt labore</p>
<p region="r2" dur="4s">et dolore magna aliqua</p>
<p region="r1" dur="7s">Ut enim ad minim veniam quis, nostrud</p>
</div>
</body>
</tt>
|
上滚式字幕的示例。通过使用重叠的时间区间实现上滚效果, 使区域在给定时刻显示零个、一个或两个 段落。由于不发生换行,每个段落占用区域中的单独一行。 根据呈现处理器是否支持 相邻中间同步 文档实例之间的平滑滚动,这些过渡,即移出 旧段落(行)并移入新段落(行),将是平滑的或离散的。
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 2c"
tts:displayAlign="after"/>
</layout>
</head>
<body>
<div region="r1">
<p>
<span begin="0s" end="8s">Lorem ipsum dolor sit</span>
<span begin="4s" end="12s"><br/>Amet consectetur adipiscing elit</span>
<span begin="8s" end="18s"><br/>Sed do eiusmod tempor incididunt labore</span>
<span begin="14s" end="25s"><br/>et dolore magna aliqua</span>
<span begin="18s" end="29s"><br/>Ut enim ad minim veniam quis, nostrud</span>
</p>
</div>
</body>
</tt>
|
逐字显示字幕的示例。通过使用定时的 span
元素,在某个时间区间内逐步显示(绘制)行内文本单元,例如单词,
从而实现逐字显示效果。这里,五个段落中的各个单词按顺序定时,
以便每秒绘制一个新单词。每个行内元素的活动持续时间的结束时刻
与 div 元素的并行时间
容器的结束时刻一致,因此单词一经绘制,就会一直保留在区域中(位于其渲染行上),直到
div 元素的活动时间区间结束。
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<head>
<layout>
<region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 5c"/>
</layout>
</head>
<body>
<div begin="0s" end="25s">
<p>
<span begin="0s">Lorem</span>
<span begin="1s">ipsum</span>
<span begin="2s">dolor</span>
<span begin="3s">sit</span>
</p>
<p>
<span begin="4s">Amet</span>
<span begin="5s">consectetur</span>
<span begin="6s">adipiscing</span>
<span begin="7s">elit</span>
</p>
<p>
<span begin="8s">Sed</span>
<span begin="9s">do</span>
<span begin="10s">eiusmod</span>
<span begin="11s">tempor</span>
<span begin="12s">incididunt </span>
<span begin="13s">labore</span>
</p>
<p>
<span begin="14s">et</span>
<span begin="15s">dolore</span>
<span begin="16s">magna</span>
<span begin="17s">aliqua</span>
</p>
<p>
<span begin="18s">Ut</span>
<span begin="19s">enim</span>
<span begin="20s">ad</span>
<span begin="21s">minim</span>
<span begin="22s">veniam</span>
<span begin="23s">quis,</span>
<span begin="24s">nostrud</span>
</p>
</div>
</body>
</tt>
|
本节概述文档作者和实现者可用来 定制任意给定文档实例的呈现效果的选项。
请注意,此处的定制是指修改已规定的呈现 行为。本节不试图列举未规定的呈现 行为可以如何实现,例如字体栅格化算法。
condition 属性允许文档作者
根据
创作时已知的输入参数修改预期的呈现效果。例如,在封闭系统中,
text-size 参数可能具有预定义的枚举值,可用于修改
应用于内容的样式。或者,可以使用媒体函数
根据媒体查询修改适用区域的位置和范围,参见
[媒体查询]。
可以应用预处理技术,在呈现之前修改文档实例, 例如,使用 [XSLT3],也可以将其置于 [XPROC] 管线中,以修改样式属性的初始值,或被继承的根 元素样式属性。此类预处理不属于本 规范的范围,不过此类预处理器会被视为 转换处理器的一个实例。
尽管本规范试图尽可能地定义 呈现处理器的符合性 要求, 但这并不妨碍任何实现在认为适当的情况下, 有意偏离这些符合性要求。例如,呈现处理器可能会 识别所呈现的文本与视频播放控件等其他视觉指示器之间的 位置冲突,并通过临时移动受影响的 TTML 区域来解决这些冲突。或者, 呈现处理器可能会为用户提供减小所呈现字体大小的选项, 同时不引入意外的换行。
根据定义,任何此类不符合性行为均不属于本规范的范围。
本节概述定时文本标记语言 (TTML)版本 1(TTML1) 与版本 2(TTML2)之间的词汇变更。本概述并非详尽无遗。
本规范的以下章节新增了元素词汇,具体说明 如下:
为增强对动画功能的支持,新增了以下元素:
tt:animate支持在一个或多个时间上连续的活动 时间区间内及跨区间进行连续动画。
tt:animation支持对头部内容中的非行内动画指令进行分组。
为扩展元数据功能,新增了以下元素:
ttm:item支持可扩展的具名元数据项集合。
注意:
引入此特性的目的是避免为仅由名称和值 组成的元数据项 定义额外的新词汇,因为一个通用的具名元数据项元素 就能够满足未来定义 任意数量此类项的需求。
为扩展样式功能,新增了以下元素:
tt:initial支持由作者指定样式属性的初始值。
注意:
引入此特性的动机来自多项要求,包括
(1) 希望能够为
某些
可继承样式属性的初始值指定固定且确定的值,这些初始值在本规范中
被定义为依赖于实现,例如,
tts:color 的初始值,
以及
(2) 希望能够覆盖某些
不可继承样式
属性的初始值,而无需在每种情况下显式指定样式值,
例如,对于
tts:showBackground
,可能更倾向于使用 whenActive 作为初始值,而非默认初始值
always。
编辑们感谢定时文本工作组的现任和前任 成员、其他 W3C 工作组的成员,以及其他论坛中的行业专家, 他们直接或间接地为本文档的制定 过程或内容作出了贡献,名单如下:
Thomas Bause-Mason, John Birch, Kees Blom, Bert Bos, Brad Botkin, Dick Bulterman, Cyril Concolato, Frans de Jong, Mike Dolan, Martin Dürst, Donald Evans, Geoff Freed, Al Gilman, Giles Godart-Brown, Markus Gylling, Markku Hakkinen, Sean Hayes, Erik Hodge, Philipp Hoschka, Suzi Hyun, Richard Ishida, Michael Jordan, Masahiko Kaneko, Courtney Kennedy, George Kerscher, Dae Kim, David Kirby, Andrew Kirkpatrick, Philippe Le Hégaret, Pierre-Anthony Lemieux, Chris Lilley, Jason Livingston, Monica Martin, Matthew May, Nigel Megitt, Thierry Michel, Frank Olivier, Soohong Daniel Park, Silvia Pfeiffer, Addison Phillips, Stefan Pöschel, Rohit Puri, Brian Raymor, David Ronca, Patrick Schmitz, David Singer, Craig Smithpeters, Andreas Tai, 以及 Mohamed Zergaoui。
编辑们特别感谢以下现任和前任成员 作出的贡献:Mike Dolan(SMPTE 时间码、流式传输;SMPTE 联络),David Kirby(入门示例文档;SMPTE 时间码、描述性元数据;EBU/AAF 联络),Geoff Freed(样式 及样式属性的示例图像),Sean Hayes(高级配置集 概念,包括应用定时、HTML/CSS 映射提案),Erik Hodge(定时), Thierry Michel(元数据),以及 Dave Singer(动画、滚动)。
工作组将本规范献给我们的同事 David Kirby。