请参阅本文档的勘误表, 其中可能 包含规范性更正。
Copyright © 2018 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
本文档根据定时文本标记语言(TTML)第 2 版(也称为 TTML2)的词汇及其语义来规定该语言。
定时文本标记语言是一种内容类型,用于表示定时文本媒体,以便在创作系统之间进行交换。定时文本是与计时信息具有内在或外在关联的文本信息。
它旨在用于在目前用于字幕和说明字幕功能的传统分发内容格式之间,对定时文本信息进行转码或交换。
除了用于在传统分发内容格式之间进行交换之外,TTML 内容还可直接用作分发格式,
例如,提供一种标准内容格式,以便从 [HTML 5.2] 文档中的
<track> 元素,或 [SMIL 3.0] 文档中的
<text> 或 <textstream> 媒体元素进行引用。
本节描述本文档在其发布时的状态。其他文档可能会取代本文档。当前 W3C 出版物列表以及本技术报告的最新修订版,可在 https://www.w3.org/TR/ 的 W3C 技术报告索引中找到。
这是定时文本标记语言 2(TTML2) W3C 推荐标准, 由 定时文本(TT)工作组 作为 W3C Web 视频活动的一部分制定, 并遵循 W3C 流程中规定的程序。 本文档的作者列于本文档的页眉中。
实现报告 表明该规范是可实现的。 从 TTML1 第 3 版 [TTML1] 起所有更改的累积摘要,可在 定时文本标记语言 2(TTML2)更改摘要中获得。 影响语言语法的更改简表可见于 U 从 TTML1 起的词汇更改。
欢迎通过提交
GitHub issue 或发送电子邮件至
public-tt@w3.org
(订阅,
归档)
对本文档发表评论,邮件主题行应以 [ttml2] 开头。
本文档已经由 W3C 成员、软件开发者以及其他 W3C 组和相关方审阅, 并由主管作为 W3C 推荐标准认可。它是一份稳定文档,可用作参考材料,或被其他文档引用。 W3C 在制定推荐标准中的作用是引起对该规范的关注,并促进其广泛部署。 这增强了 Web 的功能性和互操作性。
本文档由一个依据 W3C 专利政策运作的小组制作。 W3C 维护着一份与该小组交付成果相关的任何专利披露的 公开列表;该页面还包含披露专利的说明。 实际知晓某项专利且认为该专利包含 必要权利要求 的个人,必须依照 W3C 专利政策第 6 节披露该信息。
本文档受 2018 年 2 月 1 日 W3C 流程文档管辖。
除非另有规定,本节及其小节均为非规范性内容。
定时文本标记语言(TTML)第 2 版,也称为 TTML2, 提供了一种标准化表示,用于表示特定的 文本信息子集,并由作者或创作系统为其关联样式、布局和计时语义, 以便进行交换和处理。
TTML 明确设计为仅满足 [TTAF1-REQ] 所确立并在 M 要求中概述的一组有限要求。特别是,仅满足那些服务于 与现有传统分发系统进行交换这一需求的要求。
除了用于在传统分发内容
格式之间进行交换外,TTML 内容还可直接用作分发格式,例如提供一种标准内容格式,
可由 [HTML 5.2] 文档中的 <track>
元素,或 [SMIL 3.0] 文档中的 <text> 或
<textstream> 媒体元素引用。TTML 的某些
属性支持内容的
可流式处理性,如 R 流式 TTML 内容中所述。
注:
虽然 TTML 并非明确设计用于直接(嵌入式)集成到 HTML 或 SMIL 文档实例中,但并不排除此类集成。
注:
在某些使用上下文中,可能适合采用 动画内容来描绘与定时文本文档实例所表达的相同内容的 手语表示。TTML 机制并未 明确处理此用例,但可由某些 外部多媒体集成技术(如 SMIL)处理。
注:
在本规范的早期草案中,TTML 被称为 DFXP(Distribution Format Exchange Profile)。出于历史原因,后一术语保留在 某些上下文中,例如 profile 名称和指示符。
TTML 的使用旨在运行于更广泛的定时文本 创作、转码、分发和呈现机制上下文中,这些机制基于 图 1 – 系统模型所描绘的系统模型,其中定时 文本标记语言 充当一组异构 创作系统之间的双向交换格式,并在按需经过转码 或编译为目标分发格式后,充当到 一组异构分发格式的单向交换格式;其中一个 特定分发格式是 TTML 内容文档。
文中描述了两类处理器。创作系统和验证处理器 是转换处理器的示例;转码系统和渲染处理器 是呈现处理器的示例。TTML Profile 文档可与 TTML 内容文档或处理器关联,使各自能够表达 可用、被禁止或必需的特性。总体而言,这允许以形式化语言表达 从创作到呈现这一链路的约束。
处理器可以实现到 TTML 中间文档的已定义映射。 该系统模型描绘了一个这样的渲染处理器,它进一步将这些文档映射为 HTML 和 CSS 片段,这些片段可插入到 [HTML 5.2] 文档中, 以便由用户代理 显示。
一个 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>Timed Text TTML Example</ttm:title> <ttm:copyright>The Authors (c) 2006</ttm:copyright> </metadata> |
样式信息可以样式规范 定义的形式指定,这些定义由布局和内容信息引用, 与内容信息内联指定,或二者兼有。
在 示例片段 – TTML 样式中,定义了四组样式 规范, 其中一组作为默认样式集合。
<styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
<!-- s1 specifies default color, font, and text alignment -->
<style xml:id="s1"
tts:color="white"
tts:fontFamily="proportionalSansSerif"
tts:fontSize="22px"
tts:textAlign="center"
/>
<!-- alternative using yellow text but otherwise the same as style s1 -->
<style xml:id="s2" style="s1" tts:color="yellow"/>
<!-- a style based on s1 but justified to the right -->
<style xml:id="s1Right" style="s1" tts:textAlign="end" />
<!-- a style based on s2 but justified to the left -->
<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
元素)
都按指定的词法顺序流入其目标区域;此外,
每个段落的活动时间间隔会根据适用的时间包含语义,
依据其父级或兄弟级进行计时 —
在此情况下,division 父级(默认)被解释为并行时间
容器。
<body region="subtitleArea">
<div>
<p xml:id="subtitle1" begin="0.76s" end="3.45s">
It seems a paradox, does it not,
</p>
<p xml:id="subtitle2" begin="5.0s" end="10.0s">
that the image formed on<br/>
the Retina should be inverted?
</p>
<p xml:id="subtitle3" begin="10.0s" end="16.0s" style="s2">
It is puzzling, why is it<br/>
we do not see things upside-down?
</p>
<p xml:id="subtitle4" begin="17.2s" end="23.0s">
You have never heard the Theory,<br/>
then, that the Brain also is inverted?
</p>
<p xml:id="subtitle5" begin="23.0s" end="27.0s" style="s2">
No indeed! What a beautiful fact!
</p>
<p xml:id="subtitle6a" begin="28.0s" end="34.6s" style="s2Left">
But how is it proved?
</p>
<p xml:id="subtitle6b" begin="28.0s" end="34.6s" style="s1Right">
Thus: what we call
</p>
<p xml:id="subtitle7" begin="34.6s" end="45.0s" style="s1Right">
the vertex of the Brain<br/>
is really its base
</p>
<p xml:id="subtitle8" begin="45.0s" end="52.0s" style="s1Right">
and what we call its base<br/>
is really its vertex,
</p>
<p xml:id="subtitle9a" begin="53.5s" end="58.7s">
it is simply a question of nomenclature.
</p>
<p xml:id="subtitle9b" begin="53.5s" end="58.7s" style="s2">
How truly delightful!
</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 元素上使用计时,以保持
语义段落的完整性。
![]() |
第二个字幕继续使用默认样式,但它包含
两行文本,中间有作者指定的换行。注意
使用 tts:textAlign="center" 指定段落在
内联推进方向上的对齐方式所产生的效果。
![]() |
第三个字幕继续使用一种变体样式,该样式用不同颜色覆盖默认样式的 前景色。
![]() |
第四个字幕恢复为默认样式。
![]() |
第五个字幕继续,再次使用一种变体样式,该样式 用不同颜色覆盖默认样式的前景色。
![]() |
在下一个活动时间间隔内,两个不同的字幕同时处于活动状态, 表达每个字幕的段落使用不同样式,从而覆盖默认样式的颜色和段落 文本对齐方式。注意,流顺序由元素在内容层级中出现的词法 顺序确定。
|
下一个字幕以类似方式指定,使用 样式覆盖,使段落在 内联推进方向上右(端)对齐。
|
第八个字幕使用与前一个 字幕相同的样式覆盖,以保持 段落右(端)对齐。
![]() |
在最后(第九个)活动时间间隔内,两个不同的 字幕再次同时处于活动状态,但对第二个段落应用了不同 样式以覆盖默认颜色。 注意,流顺序由 元素在内容层级中出现的词法顺序确定。
|
上面显示的示例展示了可使用 TTML 创作的主要信息类型: 元数据、样式、布局、计时和内容。在典型情况下, 样式和布局信息会在 文档实例中分别指定。内容信息 以层级方式表达,体现空间(流)和 计时信息的组织。内容直接或间接引用样式和布局信息, 并可指定对样式的内联覆盖。
| BPD |
块推进维度 |
| DAR |
显示宽高比 |
| DFXP |
分发格式交换 Profile |
| IPD |
内联推进维度 |
| ISD |
中间同步文档 |
| PAR |
像素宽高比 |
| SAR |
存储宽高比 |
| TT |
定时文本 |
| TTML |
定时文本标记语言 |
| TTAF |
定时文本创作格式 |
| TTWG |
定时文本工作组 |
由 精简 xml 信息集表示的抽象数据集实例。
定义一类 XML 信息集 [XML InfoSet] 的约束集合。
参见未指示 profile。
一个 span 元素,它不存在于
文档实例中,而是在
11.3.1.3 中间同步
文档构造或 11.3.1.4 同步流处理
步骤期间,由
[construct anonymous
spans] 过程合成并插入到对应的
抽象文档实例中。
一组可寻址的逻辑像素,表示 某个输出介质上一平面的有界矩形区域中的视觉内容, 如 [XSL-FO 1.1]《矩形 区域》§4.2 所定义。 也称为 盒,尤其是在 [CSS2] 和 [HTML 5.2] 上下文中。
XML 文档的每个指定或默认属性都对应一个属性 信息 项,如 [XML InfoSet] §2.3 所定义。
指定 audio
元素用于
呈现(渲染)的上下文。此类
audio 元素
可以通过在
source 子元素内使用
data 元素来内联指定音频数据,
也可以引用在
音频定义上下文中指定的另一个
audio 元素,或二者兼用。
包含编码或未编码音频 采样的数据资源。
音频采样序列。
文档坐标空间中的矩形, 背景呈现产物(例如颜色或图像)相对于它被 (可能)裁剪和绘制;更 具体地说,是三种矩形之一:边框矩形、内边距矩形或 内容矩形, 它们属于与背景关联的元素所生成的区域。由 tts:backgroundClip 属性指定的 样式属性计算值决定适用哪个 矩形。
文档坐标空间中的矩形, 背景呈现产物(例如颜色或图像)相对于它被 定位或调整尺寸;更 具体地说,是三种矩形之一:边框矩形、内边距矩形或 内容矩形, 它们属于与背景关联的元素所生成的区域。由 tts:backgroundOrigin 属性指定的 样式属性计算值决定 适用哪个矩形。
由 ttp:profile 元素的 use 属性引用的
profile,
它作为一组基线(初始)规范,用于填充
引用它的 profile。
由 [XSL-FO 1.1]《块区域》§4.4 定义的一种基本 区域类型,其子级 要么全部由块区域组成(如果该块区域不是 行区域), 要么全部由内联区域组成(如果该块区域是 行区域)。
块显示是一组布局语义,可在 某些上下文中应用于内容元素,其中子区域按块推进 方向顺序组合。
注:
在 [CSS2] 中,
当 CSS display 属性以
block 值应用于
内容元素进行呈现处理时,
表示块显示。在
[XSL-FO 1.1] 中,组合 fo:block 元素时
发生块显示。
某个格式化上下文中块区域推进所采取的方向。在 水平书写模式上下文中, 块推进方向通常为自上而下;而在 垂直书写模式上下文中, 它通常为自右向左或自左向右。
一种数据资源,其内容由
内容处理器提供,而不是由
定时文本内容文档
实例提供,并通过
source 元素或
source 元素的
src
属性,或嵌入
内容元素引用。
XML 文档中出现的每个数据字符都对应一个字符信息 项,如 [XML InfoSet] §2.6 所定义。
一种 profile,其关联 profile 实例的组合 规范集组件的 constituents 组件包含 多于一个非 null 指示符。
通过将根容器区域的宽度
除以单元格列数,即
水平轴上的单元格数量,并将
根容器区域的高度除以
单元格行数,即垂直
轴上的单元格数量,而计算出的单元格尺寸(范围),其中单元格列数和行数由
ttp:cellResolution 参数属性确定。
一种样式集,包含由 10.4.4.3 计算样式集 处理确定的计算样式值。
本规范中定义或供本规范使用的任何元素类型,只要它允许指定
condition 属性,
该属性的求值
决定该元素已定义语义是适用还是被忽略。如果不存在此类
属性,则该元素的语义始终适用。
如果条件化
元素的条件表达式求值
为 false,则称该元素及其后代元素被
条件排除。
如果一个元素没有被条件排除,则称其被
条件包含。
注:
一个被条件包含但不允许使用或未
指定
condition 属性的元素,可称为
无条件包含元素。
当一个元素被条件排除时,除非另有规定,其所有
语义都会被忽略;关于这一点,请参见
condition 中关于条件排除的详细
语义。
注:
对于某些元素,例如
style 元素,
条件排除会导致该元素的部分而非全部语义被忽略,
在这种情况下,此行为会被明确描述。
由内容 模块定义的任何元素类型,以及 由音频模块 和图像模块定义、并分别出现在 音频呈现上下文或 图像呈现上下文中的任何元素类型。
注:
tt
和 head 元素类型
定义于 8.1 内容元素
词汇,
但有意不纳入上述定义的范围,而是纳入
表 5-3 – 元素词汇中
Document 和
Head 模块的定义。
一种包含语义上重要内容的 图像资源,例如表示字幕渲染的光栅图像。
能够导入(接收)定时文本标记语言 内容,以便转换、呈现或以其他方式处理该内容的处理系统。
一种 profile,满足:(1) 关联
profile 实例的 type 组件值为
content,并且
(2) 规定定时文本标记语言内容
不得、必须或可以使用哪些
特性和
扩展集合。
执行呈现处理时,内容被渲染到其中的逻辑矩形区域。
当上下文无歧义时简称为区域;每个内容区域
由显式指定或隐含的
region 元素定义,
该元素定义内容区域相对于
根容器区域的范围,
以及其他样式和时间特征。
指定 data
元素用于
语义绑定(关联)的上下文。此类
data 元素
可以通过在
source 子元素内使用
data 元素来内联指定数据,
也可以引用在
数据定义上下文中指定的另一个
data 元素,或二者兼用。
在此(或任何)
上下文中仅存在 data 元素本身并不隐含任何
呈现(渲染)
语义。
指定 data
元素作为
可共享定义的上下文,该定义可由另一个
data 元素
在数据绑定上下文中引用,即
父级为
resources 元素的
data 元素。
由Data 模块定义的任何元素类型。
使用data 元素表示或引用的任意数据资源。例如, 数据资源可用于在 定时文本内容文档 实例中嵌入或引用音频片段、字体、图像或 任意应用数据。
一种默认处理器 profile,在没有 已声明或推断的 处理器 profile时用于计算 有效处理器 profile;该默认处理器 profile 由 construct default processor profile 过程确定。
一种默认的 out-of-line 区域,
在没有
显式指定 out-of-line
region 元素时隐含,即
当没有 region 元素被指定为
layout 元素的子级时。
一种 profile,通过
designator 属性或某个 profile 规范中的说明文本,与
<profile-designator> 关联。
参见 DAR 的定义。
一种逻辑坐标空间,用于确定 根容器区域的宽高比和分辨率,该根容器区域用于格式化和呈现 文档实例;更多内容参见 H 根容器区域语义。
内容 处理器外部的隐含上下文或环境, 文档交换在其中发生,并且带外协议或规范 可在其中定义某些行为默认值,例如隐含 profile。
内容 处理器内部的隐含上下文或环境, 文档处理在其中发生,并且带外协议或规范 可在其中定义某些行为默认值,例如建立或创建 合成文档同步基准。
计算出的时间表达式在 文档实例中据以解释的时间坐标系统; 更多内容参见 7.2.11 ttp:timeBase。
在应用任何显式或隐式 profile 及 profile 规范组合方法之后, 从由 TTML 文档实例显式或隐式引用或分配的所有 内容 profile集合计算出的 内容 profile; 关于它,参见 construct effective content profile 过程。 对给定文档 实例执行验证时, 此验证会使用文档的 有效内容 profile。
在应用任何显式或隐式 profile 及 profile 规范组合方法之后, 从由 TTML 文档实例显式或隐式引用或分配的所有 处理器 profile集合计算出的 处理器 profile; 关于它,参见 construct effective processor profile 过程。 在确定内容处理器 能否处理给定文档实例时, 此确定会 使用文档的有效 处理器 profile。
用于选择验证处理期间要使用的 schema(或 schema 集合)的 profile, 由 construct effective validation profile 过程确定。
在验证 处理期间使用的一组 schema, 由 construct effective validation schemas 过程确定。
注:
由于没有 schema 语言能捕获本规范所定义的 TTML 内容的所有约束, 预计验证型内容处理器会采用额外的 内置、程序化(基于代码的)schema。
XML 文档中出现的每个元素都对应一个元素信息 项,如 [XML InfoSet] §2.2 所定义。
嵌入在
定时文本内容文档
实例中的数据资源,通过
data 元素表示,无论
该
data 元素是否表示
数据资源的
实际字节,或引用
外部数据资源。
一种数据资源,不包含可渲染内容,并且 进一步而言, 如果尝试将此资源解析为一系列内容采样,则不会产生任何采样。
包围或以其他方式 包含被包围特性或组件的 文档实例。
一种服务于一组内容交换需求的内容 profile。
在另一份(公开或私有) 规范中定义并标记(使用扩展指示)的语法或语义表达式或能力。
与
扩展相关的约束或要求规范,通常由
ttp:extension 元素表达。
位于
定时文本内容文档
实例外部的数据资源,通过
source 元素或
source 元素的
src
属性,或嵌入
内容元素引用。
在本规范(或本规范过去或 未来修订版)中定义并标记(使用特性指示)的语法或语义表达式或能力。
与
特性相关的约束或要求规范,通常由
ttp:feature 元素表达。
即使字幕(或说明字幕)未启用,也旨在始终显示的字幕(或说明字幕)。 强制字幕(说明字幕) 用于防止开放式说明字幕化,即将与外语或异族语言相关的字幕(说明字幕) 或对媒体中出现的文本(例如标牌)的翻译 烧录进画面。
呈现 处理器使用的内部过程,其目的是选择 一组作者定义字体和平台字体,以便在布局和呈现 处理期间使用;该 过程的输入参数包括字体相关属性的计算值、 各个字体的能力以及正在呈现的文本内容。
一种数据资源,包含字体信息,例如 字符到字形映射数据、字形轮廓或图像、 字形度量,以及字符到字形映射和渲染过程中使用的其他数据。
注:
在某些例外情况下,术语 height 可指 水平轴, 更多内容参见 10.2.27 tts:lineHeight。
由 [XSL-FO 1.1]《字形区域》§4.6.2 定义的一种 内联区域类型。 在本规范中,字形区域与一个或多个内容字符以及 来自特定字体的一个或多个字形相关联;呈现字形区域时渲染的正是这些 字形。间距字形区域是与 至少一个间距字形相关联的字形区域,即具有非零 advance(宽度或高度)的字形。 非间距字形区域 不是间距字形区域,即完全由非间距字形组成。
一个字形区域,它是由使用上下文隐含的某个其他区域的后代区域。
例如,内联区域 I 的某个后代区域如果是
字形区域,则它是
I 的字形区域后代。
指定 image
元素用于
呈现(渲染)的上下文。此类
image 元素
可以通过在
source 子元素内使用
data 元素来内联指定图像数据,
也可以引用在
图像定义上下文中指定的另一个
image 元素,或二者兼用。
包含光栅图像的数据资源。
由 construct inferred processor profile 过程确定的 处理器 profile,它可 作为用于执行 验证处理的 有效处理器 profile。
一个 animate 或
set 元素,
它以内联方式定义为与
动画关联的
内容元素或
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 元素,并且它表示
一组
中间同步
文档实例的序列,
这些实例有效表示源
定时文本内容文档的内容、样式、布局和计时。
通过将一系列块级内容格式化到无界块 容器区域,并确定所得已格式化块 容器的宽度和高度而确定的范围,即宽度和高度。
从图像自身内部信息(例如 图像像素数组的宽度和高度)确定的图像范围,即宽度和高度。
通过将一系列内联级内容格式化到无界内联 容器区域,并确定所得已格式化内联 容器的宽度和高度而确定的范围,即宽度和高度。
文档处理 上下文中的协议或过程, 它超出本规范范围。
平行于地平面的轴。
由 [XSL-FO 1.1]《行区域》§4.5 定义的一种 块区域类型,其子级 由一个或多个内联区域组成。
由Metadata 模块定义的任何元素类型。
嵌套型 profile的组成
profile,即较高层级(祖先)
ttp:profile 元素的后代 ttp:profile 元素之一。
给定 ttp:profile 可以同时作为
嵌套 profile和
嵌套型 profile。
一种通过引用一个或多个子
ttp:profile 元素而定义的
profile,其中
profile 组合方法决定如何组合来自多个子
ttp:profile 元素的 profile 规范。
与嵌套型 profile 关联的
profile 实例的 constituents 组件不是
null。
一种 source 元素,它
指定一个子
data 元素,该元素嵌入
嵌入数据资源的
实际字节,无论是通过
简单数据嵌入还是
分块数据嵌入。
一种 profile,其关联 profile 实例的组合 规范集组件的 constituents 组件包含 不超过一个非 null 指示符。
一种不包含语义上 重要内容的图像资源,例如表示背景设计的光栅图像; 如果不呈现它,也不会影响语义上重要内容的呈现。
一种未通过引用一个或多个子
ttp:profile 元素而定义的
profile,即
不包含子 ttp:profile 元素。
与非嵌套型 profile 关联的
profile 实例的 constituents 组件为
null。
一个 animate 或
set 元素,它相对于
与动画关联的
内容元素或
region 元素以 out-of-line 方式定义。
out-of-line 动画作为
文档实例头部
(head 元素)
中 animation 元素的子级出现,
并指定一个
xml:id 属性,
该属性的值由关联的待动画化元素上的
animate 属性引用。被引用的 out-of-line
动画元素与引用它的
内容元素和
region 元素之间存在一对多关系。
相对于与该区域关联(要被选择进入)的
内容元素以 out-of-line 方式定义的
region 元素。
out-of-line 区域作为
文档实例头部
(head 元素)
中 layout 元素的子级出现,
并指定一个
xml:id 属性,
该属性的值由关联元素上的
region
属性引用,
以便将该关联元素选择进该区域。被引用的 out-of-line 区域元素与引用它的
内容元素之间存在一对多关系。
如果没有显式指定
out-of-line 区域,则隐含一个
默认 out-of-line 区域。
一种内容 profile,它被确定为覆盖所有 其他 对内容 profile的可能确定。
一种处理器 profile,它被确定为覆盖所有 其他 对处理器 profile的可能确定。
参见 PAR 的定义。
参见呈现处理上下文。
与呈现 上下文关联的坐标空间。
任何 (1) 包含或表达可呈现内容,或 (2) 影响
内容呈现的元素。前者示例包括所有
内容元素和某些
嵌入内容元素,尤其是
audio 以及
image。
后者示例包括内联
animate 和
set。请特别注意,
元数据元素被排除在此定义之外。
一种内容处理器,其目的是对 定时文本标记语言 内容进行布局、格式化和渲染, 即通过应用本规范定义的呈现语义来呈现该内容。
参见内容处理器。
一种 profile,满足:(1) 关联
profile 实例的 type 组件值为
processor,并且
(2) 规定内容处理器必须或可以实现(支持)哪些
特性和
扩展集合。
特性和 扩展的集合;当被 interned(实例化)时,由 profile 实例状态对象表示。 profile 被类型化为内容 profile或 处理器 profile。
根据使用上下文,可以是 定时文本 profile 文档或 定时文本 profile 文档 实例。
执行 [abort if unsupported processor profile] 过程的过程;作为副作用, 它会确定 文档实例的 有效内容 profile(如需要)以及 有效处理器 profile。
满足 B 精简 XML 信息集所指定约束的 XML 信息集 [XML InfoSet]。
注:
虽然与文档呈现关联的根容器区域只有一个且唯一, 但本规范不限制随时间使用的内容区域数量 或给定时间使用的内容区域数量。不过,某些 内容 profile 会 指定此类限制。
与文档实例关联或以其他方式相关的 (可能为 null 的)媒体对象。例如,一个聚合 音频/视频媒体 对象,文档实例为其提供说明字幕或字幕 信息,并且该 文档实例与其关联。
按照适用的书写模式,表示内联或块推进轴上长度的标量值。
一个唯一的逻辑矩形区域,它建立一个坐标系统, 内容区域会被放置于其中并可选择地被裁剪; 另见 H 根容器区域 语义。
注:
根容器区域没有边框或 内边距;因此,其边框、内边距和 内容矩形是共端的。
由文档实例相对于某个外部应用或呈现上下文的时间开始和结束定义的时间范围(间隔)。
其格式和语义由 [SMPTE ST 12-1]确立的时间码, 它可被嵌入或以其他方式关联到媒体内容中,例如 广播音频/视频流。
一种样式集,包含由 10.4.4.2 指定样式集 处理确定的指定样式值。
内容处理器的可选组件, 其功能是合成文本内容的音频语音渲染。
参见 SAR 的定义。
由样式属性集定义的 样式属性集。
已经或可以与计算 样式集关联的元素。
文档级 同步基准 [SMIL 3.0] §5.7.1,由 文档处理上下文根据 相关媒体对象或其他处理标准 合成或以其他方式建立。
一种合成文档同步基准,由嵌入在 相关 媒体对象中或与其关联的 smpte 时间码 值构造,或由 文档处理 上下文以其他方式确定。
当所选时间基准的当前时间与该特性的 活动时间间隔相交时,语法或语义特性(例如元素或元素的呈现)即为 时间上活动。
以旋转度数表征
字形区域方向的方式,其中
0° 表示 upright 方向,
90°,即顺时针 90 度,表示 sideways 方向;
另见 10.2.45
tts:textOrientation。
允许指定
begin 属性的任何元素类型。
与计时信息具有内在或外在 关联的文本信息。
能够导入和导出 定时文本标记语言内容的内容创作系统。
一个抽象文档,它声称或确认是 TTML 内容文档类型的 有效抽象文档实例。
定时文本标记语言 文档的具体实现, 其中具体形式特定于引用上下文。 也称为 TTML 文档实例 或简称为文档实例。
一个抽象文档,它声称或确认是 TTML 中间文档类型的 有效抽象文档实例。
一种内容类型,表示定时文本内容、此 内容的中间表示,或此内容或内容处理器的 profile。
一个抽象文档,它声称或确认是 有效抽象文档实例。
一个抽象文档,它声称或确认是 TTML Profile 文档类型的 有效抽象文档实例。
定时文本 profile 文档的具体实现, 关于它,参见 A 具体编码。
由作为 head 元素子级出现的
ttp:profile 元素定义的
profile。
一种内容处理器,其目的是将 定时文本标记语言内容转换或以其他方式重写为 定时文本标记语言 或另一种(任意)内容格式。前者的一个示例是移除 或重写 TTML 特性以符合某个 TTML profile 的处理器。后者的一个示例是 将 TTML 翻译为完全不同的定时文本格式的处理器。由于本 规范未以其他方式定义转换处理的目标 profile 或格式, 因此本规范不再定义进一步的转换语义。
一种未与 profile 指示符关联的 profile, 并且在该 profile 定义的上下文中被隐式引用。也 称为匿名 profile。
由验证 处理器执行的功能。
内容处理器的可选组件, 其功能是在执行 某些其他类型的处理之前,对候选 文档实例执行验证处理; 并且该验证处理包括执行 [validate document] 过程, 如 5.3 验证所定义。
一种内容处理器,它实现 验证处理器 组件,作为执行其主要 内容处理器功能之前的预处理步骤。
注:
验证型内容处理器可以具有:(1) 验证(或 核验)文档实例的唯一功能, 在这种情况下,它可被视为验证型 转换处理器, 其输出指示有效性(或无效性);或 (2) 多个功能,其中第一个功能是验证(或核验)文档实例, 然后执行其作为 转换处理器或 呈现处理器的主要功能。
注:
当执行验证处理时,一致性验证型内容处理器 允许交错执行验证 处理和内容处理,前提是后者对于给定内容单元在时间上不先于 前者。
垂直于地平面的轴。
一个枚举型 token 集合,其中每个 token 指示内联和块向内容的 流动轴与流动方向的组合; 关于它,参见 10.2.51 tts:writingMode。
在本规范的规范性说明中,词语 may、should 和 must 定义如下:
一致性文档和/或 TTML 处理器被允许 按所描述的方式行事,但并非必须如此。
强烈建议一致性文档和/或 TTML 处理器 按所描述的方式行事,但并非必须如此。
一致性文档和/或 TTML 处理器必须 按所描述的方式行事;否则即为错误。
如果规范性规范语言采用祈使形式, 则应将其视为适用 must 一词。此外,如果规范性语言采用陈述形式, 且该语言受 must 约束, 则也应将其视为适用 must 一词。
注:
例如,短语“treat X as an error”和“consider X as an error”在使用上下文中应被解读为强制性要求。类似地,如果 规范 说明为“X must apply”、“X applies”或“X is mandatory”,且“X”进一步定义为“X is Y and Z”, 则通过传递闭包,该最后的陈述性短语在使用上下文中应被解读为“Y is mandatory”和 “Z is mandatory”。
XML 表示以及 其他相关术语的所有规范性语法定义均以浅黄橙色背景显示, 并标记为“XML Representation”或“Syntax Representation”, 如下所示:
<example count = xsd:integer size = ("large" | "medium" | "small" | "tiny" | "micro") : medium> Content: (all | any*) </example> |
在 XML 表示中,粗体属性名(例如上面的 count)
表示必需属性
信息项,其余为可选项。当某个属性
信息项具有枚举类型定义时,其值以
竖线分隔显示,如上面的 size;如果
存在默认值,则显示在冒号之后。当
属性信息项具有
[XML Schema Part 2] 中定义的内置简单
类型定义时,会给出指向其中定义的超链接。
除非本规范中明确定义,否则不允许使用未限定属性。
注:
除 N.1 元素派生外,
属性的(可能带命名空间限定的)名称
会加上前缀“@”(COMMERCIAL AT)字符,以便区分
属性和同名元素类型;在这种情况下,
“@”字符并不旨在成为属性字面名称的一部分。
例如,@ttm:agent
指 ttm:agent 属性,而
ttm:agent 指
ttm:agent 元素。
以浅黄橙色背景
显示的信息项为 deprecated(例如
上面所示 size 属性的 tiny 值)。
被标记为 deprecated 的信息项可以但不应出现在
TTML 文档实例中,
如果它确实出现,
验证型内容处理器应报告
警告。
以浅品红红色背景
显示的信息项为 obsoleted(例如
上面所示 size 属性的 micro 值)。
被标记为 obsoleted 的信息项不得出现在 TTML
文档实例中,
如果它确实出现,
验证型内容处理器应报告
错误。
对项的这些指示
也会在规范文本中明确指出。
信息项的允许内容以语法
片段显示,使用 Kleene 运算符 ?、*
和 +。其中每个元素名都是指向其
自身说明的超链接。
术语线性空白(LWSP)应解释为非空序列,该序列由
SPACE (U+0020)、TAB (U+0009)、CARRIAGE RETURN (U+000D) 或 LINE FEED (U+000A) 组成,
对应于 [XML 1.0] 所定义的产生式 [3] S。
值语法表达式规范中使用以下约定:
字面项(在引号内指定)出现时,必须完全按 指定出现 (不包括引号本身);
串接(并列)项表示所有项都必须按所述顺序出现,例如
a b 表示项
a 和 b 存在,且前者先于后者;
竖线(|)分隔两个或多个备选项,其中必须且只能
出现一个;
双竖线(||)分隔两个或多个选项,其中一个或多个
必须以任意顺序出现且不得重复,
并由 <lwsp> 分隔;
开闭圆括号(())用于分组并解析运算符
优先级;
开闭方括号([])用于表达字符类;
开闭花括号({})以两种方式使用,通常可由上下文
充分判断哪一种
适用(如果不能,则周围说明会说明哪一种适用):
用于表达重复次数或范围,其形式如下:
{count}
{minimum,maximum}
用于表达字符集合,其中必须出现一个字符;此外,
集合可指定为集合差,例如
{char-{specials}},
它表示所有 XML 字符减去一组特殊字符。
Kleene 运算符 ?、* 和 + 分别表示
前一项的零个或一个、
零个或多个,以及一个或多个;
运算符优先级(从最高到最低)如下,所有这些运算符均具有从左到右 结合性
分组
串接(并列)
||
|
除满足
||
值语法的表达式之间必须出现的线性空白外,除非在值语法定义中通过出现
<lwsp> 非终结符明确标记,
否则不允许出现空白。
除非另有相反说明,术语 horizontal 和 vertical 按 绝对意义解释,而不是相对于书写模式解释;同时 width 指沿水平轴的维度, height 指沿垂直轴的维度。所有例外均在文本中 明确注明。
本规范中未明确标记为 非规范性的所有内容均视为规范性内容。如果某节或附录 标题包含表达式“Non-Normative”,则该 节或附录整体被视为非规范性内容。
所有标记为 Note 的段落均视为非规范性内容。
示例代码片段以浅蓝绿色 背景显示,并标记为“Example Fragment”,如 下所示:
<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,符合 [XML Media
Types] §7,并且可出现可选的
profile 参数,其值符合
<profile-designator> 表达式。
文档实例是或可以表示为精简 xml 信息集, 如 B 精简 XML 信息集所定义。
对应于文档实例的精简 xml 信息集是或可以 与 4 文档类型所定义的 抽象文档 类型之一关联。
对应于文档实例的精简 xml 信息集是 关联 抽象文档类型的 有效抽象文档实例。
精简 xml 信息集满足本规范定义的所有额外 强制性语法和 语义约束。此外,该信息集 应满足 [WCAG] 所指定的 Web 内容无障碍指南。
本节根据 通用处理器一致性 以及两类专门处理器一致性: 转换处理器一致性和 呈现处理器一致性, 规定 TTML2 处理器的一致性要求。
注:
本节定义的一致性要求限定于操作 TTML 文档实例静态 表示的处理器。特别是, 修改 TTML 文档实例的处理器,例如 创作或编辑工具,不受本规范管辖;但其对 TTML 文档实例执行一系列修改后的最终 结果满足 3.1 文档一致性所定义的 TTML 内容形式有效性时, 相关部分除外。
如果满足以下通用处理器条件,则 TTML2 内容处理器符合本规范:
处理器至少提供一种机制,用于在概念上 实例化一致性文档实例的 精简 xml 信息集 表示。
处理器执行profile 处理。
注:
执行profile 处理意味着 某种程度的局部验证, 但不足以等同于执行下一个条目中所述的 [validate document] 过程。 特别是,预计实现会在使用 profile 相关词汇之前,名义上验证该词汇的语法表达以及适用于该词汇使用的任何基本语法或 语义约束。如果profile 处理在未检测到语法或语义约束的重大违反的情况下完成, 则可以由 [validate document] 过程执行更完整的验证。
如果处理器是验证型内容 处理器,则它
至少提供一种机制,将候选文档实例的 精简 xml 信息集表示 隐式或显式地关联到 4 文档 类型所定义的 抽象文档类型之一;并且
执行 [validate document] 过程。
注:
本规范不定义验证处理的执行与上一条中所述 profile 处理的执行之间的严格顺序。 特别是,这两个 处理步骤可以交错(或重复),使二者都在对 文档实例执行进一步(转换或呈现)处理之前完成。
尽管如此,验证处理与
profile 处理之间存在隐含的顺序关系;具体而言,为了执行
验证处理,必须解析
有效验证 profile的值;为了解析该值,
必须解析
有效内容 profile的值,或者如果该
值为 null,则解析
有效处理器 profile的值;后二者的值在
profile 处理期间获得。
注:
作为交错执行验证 处理和 profile 处理的示例,请考虑以下 场景(按给定顺序):
验证输入文档源的格式良好性(验证 处理);
将输入文档源实例化为潜在有效的抽象文档 实例(一般处理);
使用内置应用语义初始化验证状态 (验证处理);
使用内置应用语义初始化 profile 状态(profile 处理);
验证与验证相关的词汇(验证处理);
使用有效的验证相关词汇更新验证状态 (验证处理);
验证 profile 相关词汇(验证处理);
使用有效的 profile 相关词汇更新 profile 状态(profile 处理);
执行 [abort if unsupported processor profile] 过程的中止步骤(profile 处理);
验证整个文档,并根据新的 profile 状态按需重新验证验证和 profile 词汇 (验证处理);
如果处理未被中止,则继续执行转换或呈现 处理(一般处理)。
处理器不会 a priori 拒绝或中止 对一致性文档实例的处理, 除非:
处理器不支持声明为适用于该文档 实例的 TTML profile 所指定或隐含的某些必需 (强制)特性;或
执行 [validate document] 过程时发生 验证错误。
处理器支持本规范定义的所有强制性处理语义。
注:
短语 mandatory semantics 指所有明确使用一致性 关键短语 must 和 must not 的语义,以及任何 可从这些关键短语合理推断出的陈述性说明。
如果处理器支持本规范定义的某些可选处理语义, 则其支持方式应与已定义语义一致。
注:
短语 optional semantics 指所有明确使用一致性 关键短语 should、should not、 may 和 may not 的语义, 以及任何可从这些关键短语合理推断出的陈述性说明。
如果满足以下条件,则 TTML 内容处理器是符合一致性的 TTML2 转换处理器:
处理器满足 3.2.1 通用处理器一致性 指定的所有要求。
处理器支持由 G.3 TTML2 转换 Profile 指定的 TTML 转换 profile。
处理器支持由 G.6 DFXP 转换 Profile 指定的 DFXP 转换 profile。
如果满足以下条件,则 TTML 内容处理器是符合一致性的 TTML2 呈现处理器:
处理器满足 3.2.1 通用处理器一致性 指定的所有要求。
处理器支持由 G.2 TTML2 呈现 Profile指定的 TTML 呈现 profile。
处理器支持由 G.5 DFXP 呈现 Profile指定的 DFXP 呈现 profile。
处理器执行 11.3.1.3 中间 同步文档构造和 11.3.1.4 同步流 处理。
注:
两个一致性呈现处理器在处理同一个一致性文档时,不要求产生相同的呈现。 例如,不同的呈现处理器可能使用不同字体、不同字体 光栅化器、不同换行算法, 以及本规范未规定行为的不同实现。
任何关于 TTML 文档实例或 内容处理器一致性的合规声明,必须 引用实现合规性声明(ICS)。
实现合规性声明必须标识该规范中由 文档实例或内容处理器实现所满足的所有强制性 和可选特性。特别是,该声明必须 标识所使用或支持的 TTML 词汇 profile, 如 5.2 Profiling所定义;并且,如果使用或支持子集或 超集 profile,则必须说明该子集或超集 profile 中排除 或包含哪些特性。
注:
上文指定的 转换处理器一致性和 呈现处理器一致性的定义要求 这些类型的处理器各自支持(至少)两个特定 profile:一个由 [TTML1] 定义的类型特定 profile,以及一个由本规范定义的类型特定 profile。
尽管有此要求,仍然可以构造一个 TTML 内容处理器, 它执行转换或呈现处理功能,并满足 通用处理器一致性要求, 但既不支持 转换 处理器一致性或 呈现处理器一致性所要求的 profile, 而是 仅支持本规范范围之外定义的 profile。在这种情况下, 处理器可以声明符合 通用处理器 一致性,并进一步声明是 TTML 转换处理器或 TTML 呈现处理器, 但不得声明符合转换 处理器一致性或 呈现处理器一致性。
作出合规声明的文档实例必须与以下之一关联:
一个非 null 的有效内容 profile,
它派生自显式指定的
ttp:contentProfiles 属性
或一个或多个顶级
内容 profile;或
一个非 null 的有效处理器 profile,
它派生自显式指定的
ttp:processorProfiles 或
ttp:profile 属性
或一个或多个顶级
处理器 profile。
本小节为非规范性内容。
一致性 TTML1 处理器可能能够处理 TTML2 内容文档实例,前提是它 忽略未知词汇, 并忽略出现在一致性 TTML1 内容文档实例中不允许的上下文中的已知词汇; 但是,此类处理可能会丢弃或无法呈现内容,或可能以不同于预期的方式呈现内容, 而不是由一致性 TTML2 处理器处理时的预期结果。
注:
例如,如果 TTML1 处理器忽略 TTML2 中定义的 tts:ruby 属性,
则该处理器
仍可呈现使用 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 内容文档类型是定时文本标记语言某个 profile 的抽象文档 类型, 旨在用于分发系统之间的交换。 此文档类型 根据 5 词汇中指定的元素和属性词汇定义。
本规范引用两类 schema,可用于验证 定时文本内容文档实例的超集/子集:
TTML 内容文档
实例的(根)文档元素必须是
tt 元素,如 8.1.1
tt所定义。
注:
本规范引用的 schema 不验证本规范定义的所有语法约束,
因此表示一致性
TTML 内容的超集。特别是,使用上述
引用 schema 之一进行验证可能导致有效性的假阳性指示。
例如,RNC 和 XSD schema 都规定
tts:fontFamily 属性必须
满足 xsd:string XSD 数据类型;但是,此数据类型是
允许与 tts:fontFamily 属性一起使用的值的超集。
此外,在外来命名空间中的元素上使用 xml:id 属性时,
RNC schema 可能产生有效性的假阴性
指示,从而表示一致性 TTML 内容的子集。这是由于在 Relax NG schema 中表达涉及
xsd:ID
类型属性的通配符模式存在特定限制。注意,本规范将
文档实例的形式有效性定义为基于一个
抽象文档实例,
其中所有外来命名空间元素和属性都已移除。因此,
对该假阴性的例外报告不会影响
文档实例有效性的形式评估。
注:
本规范引用的 schema 旨在于 4 文档类型所指定的剪除步骤 (1)-(3) 应用之后使用。
TTML 中间文档类型是一种抽象文档 类型,旨在 用于表示 定时文本内容文档 的内容,其方式是以非层级(扁平)、时间上线性的 方式指示计时信息,并且 某些信息(例如样式事项)可以被解析或合并,以简化 后续处理。 此文档类型根据 J 中间文档语法和 5 词汇中指定的元素和属性词汇定义。
本规范引用两类 schema,可用于验证 定时文本中间文档 实例:
TTML 中间同步文档实例的(根)文档元素必须是
isd:sequence 或 isd:isd 元素,如 J
中间文档语法所定义。
TTML Profile 文档类型是一种抽象文档 类型,旨在 用于定义和传达对 TTML 特性或 扩展的支持或使用约束。此文档类型 根据 5 词汇中指定的元素和属性词汇定义。
本规范引用两类 schema,可用于验证 定时文本 profile 文档实例:
TTML Profile 文档
实例的(根)文档元素必须是
ttp:profile 元素,如 6.1.1
ttp:profile所定义。
注:
建议一致性通用处理器支持
定时文本 profile 文档的摄取或处理,
但并非必需。不过,声称支持
http://www.w3.org/ns/ttml/feature/#profile 特性的内容处理器
必须支持此项(即
定时文本 profile 文档的摄取和处理)。
本节定义定时文本标记语言(TTML)的 命名空间、profile 和词汇(作为元素和属性 目录),如下所示:
定时文本标记语言(TTML)为元素和某些 全局属性采用了多个 XML 命名空间 [XML Namespaces 1.0]。下表指定了这组命名空间, 并指出本规范中使用的默认前缀以及 表示每个命名空间的规范性 URI。
| 名称 | 前缀 | 值 |
|---|---|---|
| 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 Profile | 无 | 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 词汇, 例如用于指示 profile、特性、扩展,以及用于 解引用标准 profile 定义。
本节描述 TTML profiling 子系统以及适用于该子系统的高层要求。 本节末尾 有一个小节,其中包含 profile 规范示例以及这些 规范如何被引用和使用的示例。
本小节为非规范性内容。
定时文本标记语言内容作者可以将给定 profile 用于两种 功能之一:(1) 声明 文档实例遵守一组关于 使用哪些词汇以及如何使用词汇的约束,或 (2) 声明处理器必须满足关于 如何处理内容的某些条件。前一种功能称为内容 profile,而 第二种称为处理器 profile。
内容 profile用于允许作者在创作时声明, 作者打算对文档 实例应用哪些约束。此类 声明允许下游处理器执行内容验证或核验,并可指导或限制后续 内容转换或编辑,以保持对作者指定 内容 profile 的遵守。此外, 下游处理器可以使用内容 profile 声明,提前判断 其处理该内容 profile 所隐含特性的能力。
内容 profile 通过以下方式声明:(1) 在根 tt 元素上使用ttp:contentProfiles
属性,(2) 使用一个或多个类型为 content 的顶级ttp:profile
元素,或 (3) 这两种机制的组合。如果未声明,则不隐含任何内容 profile。
处理器 profile用于允许作者在创作时声明, 处理文档 实例时必须支持哪些处理;如果 处理器无法执行所指示的处理,则应中止处理。 此类声明允许下游 处理器避免处理无法以满足内容作者要求的方式处理的内容。
处理器 profile 通过以下方式声明:(1) 在根 tt 元素上使用ttp:processorProfiles
属性,(2) 使用一个或多个类型为 processor 的ttp:profile
元素,或 (3) 在根 tt 元素上使用ttp:profile 属性。
如果未声明,则从已声明内容 profile 或
默认处理器 profile推断处理器 profile。
注:
一致性文档
实例并不要求通过ttp:profile
元素在内部声明处理器 profile,
也不要求通过
ttp:profile 或
ttp:processorProfiles
属性在内部引用处理器 profile。更具体地说,允许
文档
交换上下文通过私有约定、带外协议,或通过发送方与接收方共同使用
外部规范定义的处理器 profile,来确定适用的处理器 profile。
注:
当作者希望引用 TTML 内容的一个(或多个)标准预定义处理器 profile,
且不希望修改(通过超集化或子集化)
该 profile 时,预期使用
ttp:profile 或
ttp:processorProfiles
属性。这些属性也可以由作者用于指示使用
非标准 profile,在这种情况下,指定的<profile-designator> 表达
一个 URI,用于指示外部定义的profile 定义文档。
但是,并不要求一致性 TTML 内容处理器能够
解引用此类外部指定的 profile 定义。
相比之下,当作者希望使用修改后的预定义 profile,
或希望在文档实例中包含
一个不基于任何预定义 profile 的非标准 profile 定义时,
预期使用ttp:profile 元素。
通过指定某个特性或扩展为
required(强制),而该特性或扩展在底层基线
profile 中未指定,或在基线 profile 中指定为 optional(自愿),
即可对预定义 profile 进行超集化。
通过指定某个特性或扩展为
optional(自愿),而该特性或扩展在底层基线 profile 中指定为
required(强制),
即可对预定义 profile 进行子集化。
当通过子集化修改基线 profile 时,所得的派生 profile 称为 subtractive profile;当通过超集化修改时,所得 profile 称为 additive profile。 也可以定义一个同时为 subtractive 和 additive 的派生 profile。
内容作者不限于使用单个 profile,而可以引用同一类型的多个 profile,即多个内容 profile 和/或多个处理器 profile。 当引用多个 profile 时,其各自规范 会被组合,以形成适用于文档的单个有效内容 profile,以及在处理器处理该文档时适用于处理器的 单个有效处理器 profile。此外,作者不限于引用外部 定义的 profile,也可以在文档内内联定义一个或多个 profile。
本小节为非规范性内容。
作者定义的、 从 TTML 呈现 profile 派生的 additive profile 示例 如下方 示例片段 – TTML Additive Profile所示。
<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>
|
注:
在上面的示例中,基线 profile 被声明为
TTML2 呈现 profile,随后通过将
#fontStyle-italic 特性设为 required(而不是
G.2 TTML2 呈现 Profile中定义的
optional)对其进行 additive 修改。还要注意
profile 元素上的默认 XMLNS 绑定被重置为 TT 参数命名空间。
profile 的引用方式有两种,取决于该 profile 是定义在引用文档外部, 还是以内联方式定义在引用文档内部。当在外部定义时,profile 通过 <absolute-profile-designator> 或 <relative-profile-designator> 表达式引用。 当在内部(内联)定义时,profile 要么被隐式引用, 要么通过<fragment-profile-designator> 表达式引用。
profile 指示符必须遵守 <uri> 值 语法。 如果 profile 指示符表示为相对 URI, 则必须使用 TT Profile 命名空间值作为 基 URI 将其绝对化。
所有以 TT Profile 命名空间作为前缀但未列于 表 5-2 – Profile中的 profile 指示符 均保留供未来标准化使用,并且不得出现在一致性 文档实例中。尽管存在此约束, profile 指示符并不局限于 表 5-2 – Profile中枚举的指示符集合, 而可以是任何可行地解引用为 TTML profile 定义 文档的 URI, 前提是它不使用 TT Profile 命名空间作为前缀。
定时文本标记语言(TTML)采用其 词汇和关联语义的多个 标准预定义 profile。
下表指定这组 profile,指出每个预定义 profile 的 规范性名称和指示符, 以及每个 profile 在 G 标准 Profile、[TTML1] 或另一份 TTWG 规范中正式详细阐述的位置。
| 名称 | 绝对指示符 |
|---|---|
| DFXP Full | http://www.w3.org/ns/ttml/profile/dfxp-full |
| DFXP Presentation | http://www.w3.org/ns/ttml/profile/dfxp-presentation |
| DFXP Transformation | http://www.w3.org/ns/ttml/profile/dfxp-transformation |
| SDP US | http://www.w3.org/ns/ttml/profile/sdp-us |
| TTML2 Full | http://www.w3.org/ns/ttml/profile/ttml2-full |
| TTML2 Presentation | http://www.w3.org/ns/ttml/profile/ttml2-presentation |
| TTML2 Transformation | http://www.w3.org/ns/ttml/profile/ttml2-transformation |
本节定义若干概念性状态对象,供随后定义的算法 (过程和函数)使用。并不要求 实现以此处指定的形式创建此类对象,而可以使用任何方便的 内部表示,只要其表示等价信息即可。
profile
规范
表示以下内部状态信息,它对应于
ttp:feature 或 ttp:extension
元素
一个 <uri> 值,根据
type
指示特性或
扩展指示符
"feature" | "extension"
"optional" | "required" | "prohibited"
组合 profile 规范集 表示以下内部状态信息, 它对应于一组profile 规范, 并额外记录获得(或派生)这些规范的 组成 profile。
<absolute-profile-designator> 表达式的有序列表, 其中每个指示符指示一个组成 profile,即构成该组合 profile 规范集的 profile。
profile 规范的有序列表。
一个组合 profile 规范集,其 constituents 和 specifications 字段为空集
profile
实例表示以下内部状态
信息,它对应于一个ttp:profile
元素,无论该元素是
显式指定还是隐含的。
一个<absolute-profile-designator> 表达式, 与该 profile 关联(并唯一标记该 profile)。
"content" | "processor"
"leastRestrictive" | "mostRestrictive" | "replace"
null 或一个<profile-designator>
表达式,
指示作为此 profile 基线 profile 的 profile。
如果 profile 是嵌套型 profile,则为
<fragment-profile-designator>
表达式的有序列表,其中每个指示符指示一个
组成嵌套 profile;否则为
null。
如果 profile 是非嵌套型 profile,
则为
profile 规范的有序列表;否则为
null。
一个组合 profile 规范集, 表示组合由该 profile 指定或引用的规范后得到的结果。
每个 TTML 文档实例都与一个(可能为 null 的) 有效内容 profile关联,该 profile 可由 内容处理器用于执行以下任一(或全部)操作:
有效内容 profile按照 以下过程构造:
如果文档处理 上下文确定某个特定的 覆盖内容 profile PO 将覆盖所有其他确定,则 有效内容 profile为 PO;
注:
例如,符合本规范的 [EBU-TT-D] 文档
可以指定 ebuttm:conformsToStandard 元素,以表示
符合 [EBU-TT-D] 内容 profile。
在这种情况下,支持该 profile 的内容
处理器可以使用该元素的存在
作为覆盖项来确定有效内容
profile。
否则,如果根 tt 元素上指定了 ttp:contentProfiles 属性,则
有效内容 profile为
通过组合所指示 profile 的组合 profile 规范集而生成的组合 profile 规范集,其中
适用根 tt 元素上
ttp:contentProfileCombination
属性指定(或默认值指定)的内容 profile 组合方法;
否则,如果定义了一个或多个顶级
内容 profile,
则
有效内容 profile为
通过组合所有此类
顶级 内容 profile的组合 profile 规范集而生成的
组合 profile 规范集,其中
适用根 tt 元素上
ttp:contentProfileCombination
属性指定(或默认值指定)的内容 profile 组合方法;
否则,有效内容
profile为 null。
为符合通用
处理器一致性,
在处理给定文档实例时,
有效内容 profile一旦被设置为
对
profile
实例的非 null 引用,
则在该处理持续期间保持为对常量profile
实例的常量引用。
同样,如果设置为 null 引用,则在该处理持续期间
保持为常量 null 引用。
将 EPP 设置为通过执行 construct effective processor profile 过程获得的有效处理器 profile;
对于 EPP 的组合 profile 规范集中的每个 profile 规范 S, 执行以下步骤:
每个 TTML 文档实例都与一个(非 null 的) 有效处理器 profile关联,该 profile 由 内容处理器用于确定其是否满足 内容作者所表示的最低处理要求。
有效处理器 profile按照 以下过程构造:
如果文档处理 上下文确定某个特定的 覆盖处理器 profile PO 将覆盖所有其他确定,则 有效处理器 profile 为 PO;
否则,如果根 tt 元素上指定了 ttp:processorProfiles 属性,则
如果 ttp:processorProfiles 属性使用
all(...) 函数语法指定,或
未使用函数语法,即仅作为指示符列表指定,则
有效处理器
profile为
通过组合所指示 profile 的组合 profile 规范集而生成的
组合 profile 规范集,其中
适用根 tt 元素上 ttp:processorProfileCombination
属性指定(或默认值指定)的内容 profile 组合方法;
否则,如果 ttp:processorProfiles 属性使用
any(...) 函数语法指定,
则对于每个被指示的 profile,
有效处理器
profile为
所指示 profile 列表中第一个由
内容处理器支持的 profile 的
组合 profile 规范集;
否则,如果定义了一个或多个顶级
处理器 profile,
则
有效处理器 profile
为通过组合所有此类
顶级 处理器 profile的组合 profile 规范集而生成的
组合 profile 规范集,其中
适用根 tt 元素上
ttp:processorProfileCombination
属性指定(或默认值指定)的处理器 profile 组合方法;
否则,如果根 tt 元素上指定了 ttp:profile 属性,则
有效处理器 profile
为该属性所指示 profile 的组合 profile 规范集;
否则,有效 处理器 profile为执行 construct inferred processor profile 过程的结果;
为符合通用 处理器一致性, 在处理给定文档实例时, 有效处理器 profile一旦被设置为 对 profile 实例的引用, 则在该处理持续期间保持为对常量profile 实例的常量引用。
将 ECP 设置为有效 内容 profile;
如果 ECP 不是 null,则执行以下步骤:
如果
ttp:inferProcessorProfileSource 参数的计算值为
combine,则
推断处理器
profile为将
infer processor profile 函数
应用于 ECP 的组合 profile 规范集所得结果;
否则,如果
ttp:inferProcessorProfileSource 参数的计算值为
first,则
推断处理器
profile为第一个推断处理器 profile
IPP,
该 IPP 通过将infer processor profile 函数
应用于与 ECP 组合 profile 规范集的每个 constituent 关联的
profile
实例的组合规范集组件而生成,
且该 IPP 由
内容处理器支持;
否则,推断处理器 profile为执行 construct default processor profile 过程的结果;
将推断处理器 profile IPP 初始化为一个内容 profile, 其包含空的组合 profile 规范集;
对于组合 profile 规范集 CPSS 中的每个 profile 规范 S:
根据 ttp:inferPresentationProfileMethod
参数的计算值和
表 6-2 –
推断处理器 Profile 方法,
将内容 profile 规范 S 映射为处理器 profile
规范 S' ;
将 S' 添加到 IPP 的组合 profile 规范集中;
返回 IPP 作为推断处理器 profile;
如果文档交换 上下文与 处理器 profile关联,或与可从中推断出 处理器 profile的内容 profile关联,则 默认处理器 profile为 该处理器 profile;
否则,如果内容处理器主要被表征为
呈现处理器,则
默认处理器 profile为
通过 intern TTML2 呈现 profile
(http://www.w3.org/ns/ttml/profile/ttml2-presentation)构造的
profile 实例;
否则,如果内容处理器主要被表征为
转换处理器,则
默认处理器 profile为
通过 intern TTML2 转换 profile
(http://www.w3.org/ns/ttml/profile/ttml2-transformation)构造的
profile 实例。
注:
旨在与 一个或多个不同版本的 TTML 一起使用的内容处理器, 可以基于 TTML 呈现或转换 profile 的未来版本选择 默认处理器 profile。
本节描述 TTML 验证子系统以及适用于该子系统的高层要求。
验证是由验证 处理器执行的一项可选功能, 当候选文档实例被 验证型 内容处理器消费或以其他方式处理时,可能会发生验证。如果此类处理 发生且出现异常条件,则可以中止处理,如下文进一步详述。
如果在验证处理期间中止处理, 则后果包括:
如果作为验证 处理的结果而发生中止处理,则在 文档实例中停止进一步处理内容的位置 不由本规范定义。特别是,实现可以在遇到第一个验证错误时中止处理,或 可以在遇到任意数量的验证错误之后中止处理。因此, 从非一致性文档中消费的输入内容数量以及相应的(转换或 呈现)输出可能因实现而异。
本节定义若干概念性状态对象,供随后定义的 算法(过程和函数)使用。并不 要求实现以此处指定的形式创建此类对象,而可以使用 任何方便的内部表示, 只要其表示等价信息即可。
validation exception 表示以下内部状态信息,它对应于在验证 处理期间发生的异常 条件
类型为 error 的validation exception
称为
validation
error,
而类型为 warning 的validation exception
称为
validation
warning。
除非适用更高层协议, (1) 如果检测到对本规范规定或禁止事项的违反, 则适用validation error 异常;并且 (2) 如果检测到对本规范建议或不建议事项的违反,则 适用validation warning。
注:
此上下文中更高层协议的一个示例是由系统或最终用户定义的 文档处理上下文配置选项, 它会导致将 warning 视为 error,或反之亦然。
如果文档的有效内容
profile不是 null,则
有效验证
profile为
有效内容 profile;
为符合通用 处理器一致性, 在处理给定文档实例时, 有效验证 profile一旦被设置为 对 profile 实例的引用, 则在该处理持续期间保持为对常量profile 实例的常量引用。
如果文档的有效 验证 profile与一个或多个 schema 关联,则有效验证 schema集合是这些关联 schema 的适当子集, 基于文档处理 上下文的要求确定;
否则,有效 验证 schema为由 文档处理 上下文选择的默认 schema 集合。
注:
什么构成适当的 schema 集合的确定并未由本规范正式定义;然而, 预期选择过程会使用:(1) 实现可用并支持的 schema 类型,以及 (2) 作为启发式,由 有效验证 profile确定的与 required 或 optional 特性关联的最高版本号。
如果验证被更高
层协议禁用,
或者ttp:validation
参数的计算值为 prohibited,
则退出此过程,除非最终用户或应用覆盖此
禁止;
如果ttp:validation
参数的计算值为 optional,并且
文档处理上下文
确定不执行可选验证,
则退出此过程;
否则,使用有效 验证 schema以及按需使用其他 验证工具,对文档一致性进行验证,使得
如果检测到validation error 条件,
则执行适用于
ttp:validationAction
参数属性计算值的语义;
如果检测到validation warning 条件,
则执行适用于
ttp:validationAction
参数属性计算值的语义。
执行验证处理时, 适用以下语义:
如果输入文档采用具体 XML 表示的形式,例如 附录 A 具体编码定义的具体形式, 则验证
输入文档的编码字符按照文档解析出的字符编码是格式良好的;并且
输入文档是格式良好的 XML 文档;并且
验证输入文档相对于有效验证 schema是有效的; 并且
验证输入文档遵守本规范定义且未由有效验证 schema直接表达的所有其他语法和语义 约束。
如果上述任一验证步骤检测到相对于规定(must)或禁止(must not)的 不一致状态,则适用 validation error 条件。如果上述任一验证步骤检测到相对于建议(should)或不建议 (should not)的不一致状态,则适用 validation warning 条件。
注:
由于有效验证 schema的确定 依赖于实现, 并且不要求有效验证 schema检测 每一种可能的validation error,因此执行 [validate document] 过程不一定会产生 validation exception;在这种情况下, 验证处理的结果 可被视为假阳性。
例如,内容 profile可以通过
ttp:feature
或 ttp:extension
元素的 value 属性的
prohibited 值,禁止使用某个特性;但是,
[validate document]
过程的某个特定实现可能无法在
文档实例中检测到这种被禁止的使用,
因而产生假阳性验证结果。
由于这些限制,[validate document] 过程的规范语言以是否检测到潜在的validation error或 validation warning为前提,但并不强制检测所有可能的 validation error 和validation warning。
有关假阳性的更多信息,另见4.1 TTML 内容 文档类型下的第一条注。
定时文本标记语言(TTML)的词汇 定义在以下主要目录(词汇划分)中:
核心目录定义 TTML 的基线核心词汇, 特别是 TTML 内容的词汇。扩展目录 作为 TTML 定义的核心词汇扩展的占位符。
核心词汇目录旨在满足 TTML 的需要,同时为未来 profile 提供基线词汇。该词汇 划分为不同类别,并在以下章节中 详细指定:
为文档 实例使用而指定的核心元素词汇枚举于 表 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 |
| Profile | ttp:features, ttp:feature, ttp:extensions, ttp:extension, ttp:profile |
| 样式 | initial, styling, style |
用于定义 TTML 元素类型内容模型的元素词汇组 枚举于 表 5-4 – 元素词汇组。
| 组 | 元素 |
|---|---|
| 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 – 属性词汇。
注:
上面表 5-5 – 属性 词汇中仅列出被定义为以下任一类的属性:(1) 全局属性,即命名空间限定属性,或 (2) 共享的元素特定属性,即未以命名空间限定但跨多个 元素类型共享的属性。
注:
TTML 定义的所有词汇一致地使用 所谓 lowerCamelCase 命名约定。在某些情况下,当名称基于另一份使用不同命名约定的规范时, 这会导致名称发生改变。
本节规定核心词汇目录中的 profile 事项,其中 profile 事项应理解为表达与创作或处理 定时文本内容文档相关要求或可选性的信息。
以下元素均定义于 TT 参数命名空间中,用于指定适用于文档实例 或内容处理器的参数信息:
注:
本节的小节按逻辑顺序排列(从最高层构造到最低层构造)。
ttp:profile 元素用于指定
内容 profile或
处理器 profile。
处理器 profile指定一组必需(强制)和可选(自愿)的特性与扩展,
内容处理器必须或可以支持这些特性与扩展,以便处理
使用(或可能使用)此类特性和
扩展的文档实例。
内容 profile指定一组被禁止、必需和可选的特性与扩展,
它们分别不得、必须和可以出现在声明遵守该 profile 的
文档实例中。
注:
feature 与 extension 的区别在于其定义位置及其标记方式: 如果定义在本规范(或其未来修订版)中,并在 E 特性中以特性指示来标记, 则它被视为特性;如果定义在另一份规范中, 并在那里以扩展指示来标记,则它被视为扩展。 一般而言,特性预期由 W3C 标准流程定义, 而扩展预期由第三方定义。
本规范为 ttp:profile 元素定义了两个不同的使用上下文:
作为 TTML 文档实例中
head 元素或 ttp:profile 元素的子级;
作为 TTML profile 定义文档实例的根元素;
当 ttp:profile 元素出现在 TTML 文档实例中时,
其目的是表达作者意图,即 (1) 接收方内容处理器为了处理该文档,必须或可以支持哪些
特性和扩展;或 (2) 哪些特性和扩展不得、必须或可以
包含在该文档实例中或以其他方式由其使用。
当 ttp:profile 元素由 TTML profile
定义文档实例使用时,
它用于发布某个特定 TTML profile 的机器可读规范,TTML 文档实例可以引用该规范。
本规范在
G 标准 Profile中定义了若干标准Profile 定义文档。
ttp:profile 元素接受零个或多个
Metadata.class 元素组中的元素作为子级,
后接 (1)
零个或多个 ttp:features 元素,再后接
零个或多个 ttp:extensions 元素,或 (2)
零个或多个 ttp:profile 元素。
当 ttp:profile 元素包含子 ttp:profile 元素时,
该子级称为
嵌套 profile,父级称为
嵌套型 profile;
否则称为非嵌套型 profile。
<ttp:profile
combine = ("leastRestrictive" | "mostRestrictive" | "replace") : replace
designator = xsd:string
type = ("processor" | "content") : processor
use = xsd:string
xml:base = <uri>
xml:id = ID
Content: Metadata.class*, ((ttp:features*, ttp:extensions*)|ttp:profile*)
</ttp:profile>
|
type 属性用于确定 profile 是
内容 profile还是
处理器 profile。如果未指定,
则该 profile 被视为处理器 profile。
如果 ttp:profile 元素引用基线
profile或
嵌套 profile,则被引用 profile 的类型必须
与引用它的 profile 类型相同。例如,定义处理器 profile的
ttp:profile 元素
只能引用其他
处理器 profile,不得引用内容
profile。
combine 属性用于指定当多个规范分别适用于同一个特性或扩展时,
如何组合特性或扩展规范。
如果 combine 属性的值为 replace,则
词法上后出现的特性或扩展规范替换词法上先出现的
规范,其中规范元素按如下顺序排列:
由 use 属性引用的基线 profile
定义的规范;
由后序遍历顺序中的后代 ttp:profile 元素定义的规范;
由后序遍历顺序中的后代 ttp:feature 或
ttp:extension
元素定义的规范。
如果值为 leastRestrictive,则适用限制性最小的规范值;
如果值为 mostRestrictive,则适用限制性最大的规范值。
限制性顺序如下(从最小到最大):
optional、required、prohibited。
如果未指定 combine 属性,则适用替换语义。
如果指定,designator 属性必须遵守
<absolute-profile-designator>
值语法。
designator 属性可以
指定在出现在 TTML
文档实例中的 ttp:profile 元素上;
如果未指定,则所定义的 profile 被视为未指示 profile。
designator 属性应
指定在出现在 TTML
profile 定义文档实例中的
ttp:profile 元素上;
如果未指定,则定义上下文(例如外部规范)必须在其随附定义文本中指定
一个指示符。
如果指定,use 属性必须遵守
<uri> 值语法,并且还必须按照
5.2 Profiling指示一个
profile 指示符。在这种情况下,
profile 指示符必须引用 (1) 由 6 Profile定义的标准预定义
profile 定义文档,
或 (2) 表示有效Profile 定义文档实例且可行地解引用的资源。
在任一情况下,被引用 profile 都作为指定它的
ttp:profile 元素的
基线 profile。
如果未指定 use 属性,则
ttp:profile 元素的基线 profile
必须被视为空(null)profile,即不包含任何
特性或扩展规范的未指示 profile 定义。
profile P 的特性和扩展的组合 profile 规范集 CPSS
按以下有序规则确定,其中将规范 S
合并到 CPSS 中,意味着按照 combine 属性的指定值
(或默认值)应用组合方法;而将组合
规范集 CPSS' 合并到
CPSS 中,意味着将 CPSS' 的每个有序规范合并到
CPSS 中:
将 CPSS 初始化为空集;
如果存在 use 属性,则将被引用基线 profile的组合规范集合并到
CPSS 中;
对于 P 的每个 ttp:profile 子级,
使用后序遍历,将该子 profile 的组合规范集合并到
CPSS 中;
对于 ttp:profile 元素的每个 ttp:feature 和
ttp:extension 子级,
使用后序遍历,将特性或扩展规范
合并到 CPSS 中。
一致性 TTML 处理器不要求能够 解引用不是G 标准 Profile所定义的标准预定义 profile 之一的 profile 定义文档。此外, 一致性 TTML 处理器可以使用每个标准预定义 profile 的内置静态 形式,从而不要求 解引用网络资源。
如果 TTML 处理器无法解引用非标准 profile 定义文档,则在没有最终用户显式覆盖 或某个可追溯到最终用户或 用户/系统配置设置的实现特定参数存在的情况下,它不得继续处理该 文档。如果 TTML 处理器因无法引用非标准profile 定义 文档而中止 文档实例的处理,则应给出某种 最终用户通知,除非最终用户或系统 已禁用此类通知,或处理器不允许 或不涉及最终用户干预。
一致性 TTML 处理器不要求能够支持组合 profile或 嵌套型 profile。如果 (1) 不支持组合 profile,并且对 profile的处理 将导致它被视为组合 profile,或 (2) 不支持嵌套型 profile,并且对 profile的处理 将导致它被视为嵌套型 profile, 则在没有最终用户显式覆盖 或某个可追溯到最终用户或用户/系统配置设置的实现特定参数存在的情况下,不得继续处理该 profile。如果 TTML 处理器因缺少对 组合 profile或嵌套型 profile的支持而中止 文档实例的处理, 则应给出某种最终用户通知,除非最终用户或系统已禁用此类 通知, 或处理器不允许或不涉及最终用户干预。
注:
如果文档实例不要求支持 组合 profile,则它不应使用:
多个顶级 profile,
ttp:profile 元素上的 combine 属性,
ttp:contentProfiles
属性中的多个指示符,
ttp:processorProfiles
属性中的多个指示符,
ttp:inferProcessorProfileSource
属性上的 combined 值。
注:
如果文档实例不要求支持 嵌套型 profile,则它不应使用嵌套 profile。
以下示例说明 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 呈现 profile 被用作
基线 profile。随后通过要求支持
#text-outline 特性,对该基线 profile 进行超集化
(从而创建一个 additive 派生 profile)。
ttp:features 元素是一个容器元素,用于对
关于特性支持和使用要求的信息进行分组。
ttp:features 元素接受零个或多个
Metadata.class 元素组中的元素作为子级,
后接
零个或多个 ttp:feature 元素。
<ttp:features xml:base = <uri> : TT Feature Namespace xml:id = ID Content: Metadata.class*, ttp:feature* </ttp:features> |
如果指定,xml:base
属性必须 (1) 遵守
<uri> 值语法,(2) 表达遵守
[XML Base] 的绝对 URI,并且
(3) 表达由
E.1 特性指示定义的特性命名空间。
如果未指定,则适用 xml:base 属性的默认
值,即 TT Feature 命名空间。
xml:base 属性用于允许缩写由子
ttp:feature 元素表达的特性指示 URI。
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 属性,则不得在 ttp:feature 元素上
指定 restricts 属性;同样,如果指定了 restricts
属性,则不得指定 extends 属性。
如果由 (1) ttp:feature 元素内容、
(2) extends 属性,或 (3) restricts 属性表达的 URI
是相对 URI,则与最近祖先 ttp:features 元素的
xml:base 属性所表达的
特性命名空间值组合时,它必须表达一个
绝对 URI。在任一情况下(原始绝对 URI 或得到的
绝对化 URI),ttp:feature 元素所表达的 URI
还必须遵守
E.1 特性指示所定义的特性指示语法,并且
此外,
此 URI 中出现的具体指示,即特性指示中从片段标识符分隔符 “#” 开始的部分,
必须由本规范或其某个已发布版本(且已达到 REC 状态)定义。
如果由 ttp:feature 元素内容、
extends 属性或 restricts 属性表达的 URI
是相对 URI,则应在最近祖先 ttp:features 元素上指定
xml:base 属性。
value 属性根据 profile 类型指定对所指示特性的支持或使用
约束。
如果该 profile 是处理器 profile, 则适用以下语义:
如果 value 属性的值
为 optional,则处理器可以但不需要
实现或以其他方式支持该特性以处理文档;
如果值为 required,则执行以下步骤:
如果处理器实现或以其他方式支持该特性,则继续处理 文档;
否则,如果
(1) 此 ttp:feature 元素上指定了
extends 属性,
(2) extends 属性的值指示一个由
处理器实现或以其他方式支持的特性,并且
(3) 根 tt 元素的
ttp:permitFeatureNarrowing
属性的计算值不是 false,
则继续处理文档;
否则,如果
(1) 此 ttp:feature 元素上指定了
restricts 属性,
(2) restricts 属性的值指示一个由
处理器实现或以其他方式支持的特性,并且
(3) 根 tt 元素的
ttp:permitFeatureWidening
属性的计算值不是 false,
则继续处理文档;
否则,中止处理文档,除非被最终用户或 某个实现特定参数覆盖,且该参数可追溯到最终用户或用户/系统配置设置。
如果未指定 value 属性,则必须将该特性规范
解释为已指定值 required;
如果该 profile 是内容 profile, 则适用以下语义:
如果 value 属性的值
为 optional,则该特性可以但不需要出现在
声称符合该 profile 的文档中;
如果 value 属性的值
为 required,则该特性必须出现在
声称符合该 profile 的文档中;
如果 value 属性的值
为 prohibited,则该特性不得出现在
声称符合该 profile 的文档中;
如果未指定 value 属性,则必须将该特性规范
解释为已指定值 optional;
value 属性的值 use
已废弃。如果它
出现在 profile 规范中,则必须将其解释为已指定 required。
如果某个已定义(即标准化)或以其他方式众所周知的特性未由
内容 profile 中的 ttp:feature 元素指定,则必须将其解释为该特性
已以 value 属性等于 optional 的方式指定。
但是,如果未在处理器 profile 中指定,则不隐含
关于支持或不支持该特性的任何声明。
注:
特别是,如果某个特性未出现在内容 profile 定义中,
则不应将其解释为表示该特性(在文档实例中)的使用
不被允许或以其他方式被禁止。如果内容 profile 旨在禁止某个特性,
则应使用 prohibited 值指定它。
如果文档实例使用了 E.1 特性指示定义的特性,并且该文档的预期使用 要求识别和处理该特性,则 该文档必须在其声明或引用的 profile 之一中包含一个 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 呈现 profile 被用作
基线 profile。随后通过三个
ttp:feature 元素修改该基线 profile,以便 (1)
对基线 profile 进行超集化(因为
#fontStyle-italic 和 #textDecoration-under
均不是 TTML 呈现 profile 所要求的),并且
(2) 禁止使用 #textOutline-blurred 特性
(该特性在 TTML 呈现 profile 中是可选的)。
此示例的效果是表达作者意图: 必须支持斜体字体样式和文本下划线, 并且文档不得使用文本轮廓模糊。
ttp:extensions 元素是一个容器元素,用于对
关于扩展支持和使用要求的信息进行分组。
ttp:extensions 元素接受零个或多个
Metadata.class 元素组中的元素作为子级,
后接
零个或多个 ttp:extension 元素。
<ttp:extensions xml:base = <uri> : TT Extension Namespace xml:id = ID Content: Metadata.class*, ttp:extension* </ttp:extensions> |
如果指定,xml:base
属性必须 (1) 遵守
<uri> 值语法,(2) 表达遵守
[XML Base] 的绝对 URI,并且
(3) 表达由
F.1 扩展指示定义的扩展命名空间。
如果未指定,则适用 xml:base 属性的默认
值,即 TT Extension 命名空间。
xml:base 属性用于允许缩写由子
ttp:extension 元素表达的特性指示 URI。
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 属性,则不得在 ttp:extension 元素上
指定 restricts 属性;同样,如果指定了 restricts
属性,则不得指定 extends 属性。
如果由 (1) ttp:extension 元素内容、
(2) extends 属性,或 (3) restricts 属性表达的 URI
是相对 URI,则与最近祖先 ttp:extensions 元素的
xml:base 属性所表达的
扩展命名空间值组合时,它必须表达一个
绝对 URI。在任一情况下(原始绝对 URI 或得到的
绝对化 URI),ttp:extension 元素所表达的 URI
还必须遵守
F.1 扩展指示所定义的扩展指示语法,
而 extends 属性和/或
restricts 属性所表达的 URI 必须遵守
E.1 特性
指示或
F.1 扩展指示分别定义的特性指示
或扩展指示语法。
如果由 ttp:extension 元素内容、
extends 属性或 restricts 属性表达的 URI
是相对 URI,则应在最近祖先 ttp:extensions 元素上指定
xml:base 属性。
value 属性根据 profile 类型指定对所指示扩展的支持或使用
约束。
如果该 profile 是处理器 profile, 则适用以下语义:
如果 value 属性的值
为 optional,则处理器可以但不需要
实现或以其他方式支持该扩展以处理文档;
如果值为 required,则执行以下步骤:
如果处理器实现或以其他方式支持该扩展,则继续处理 文档;
否则,如果
(1) 此 ttp:extension 元素上指定了
extends 属性,
(2) extends 属性的值指示一个由
处理器实现或以其他方式支持的扩展,并且
(3) 根 tt 元素的
ttp:permitFeatureNarrowing
属性的计算值不是 false,
则继续处理文档;
否则,如果
(1) 此 ttp:extension 元素上指定了
restricts 属性,
(2) restricts 属性的值指示一个由
处理器实现或以其他方式支持的扩展,并且
(3) 根 tt 元素的
ttp:permitFeatureWidening
属性的计算值不是 false,
则继续处理文档;
否则,中止处理文档,除非被最终用户或 某个实现特定参数覆盖,且该参数可追溯到最终用户或用户/系统配置设置。
如果未指定 value 属性,则必须将该扩展规范
解释为已指定值 required;
如果该 profile 是内容 profile, 则适用以下语义:
如果 value 属性的值
为 optional,则该扩展可以但不需要出现在
声称符合该 profile 的文档中;
如果 value 属性的值
为 required,则该扩展必须出现在
声称符合该 profile 的文档中;
如果 value 属性的值
为 prohibited,则该扩展不得出现在
声称符合该 profile 的文档中;
如果未指定 value 属性,则必须将该扩展规范
解释为已指定值 optional;
value 属性的值 use
已废弃。如果它
出现在 profile 规范中,则必须将其解释为已指定 required。
如果某个众所周知的扩展未由
内容 profile 中的 ttp:extension 元素指定,则必须将其解释为该扩展
已以 value 属性等于 optional 的方式指定。
但是,如果未在处理器 profile 中指定,则不隐含
关于支持或不支持该扩展的任何声明。
注:
特别是,如果某个扩展未出现在内容 profile 定义中,
则不应将其解释为表示该扩展(在文档实例中)的使用
不被允许或以其他方式被禁止。如果内容 profile 旨在禁止某个扩展,
则应使用 prohibited 值指定它。
如果文档实例使用了 可由 F.1 扩展 指示指示的扩展,并且该文档的预期使用 要求识别和处理该扩展,则 文档必须在其声明或引用的 profile 之一中包含一个 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="use">#prefilter-by-language</ttp:extension>
</ttp:extensions>
</ttp:profile>
|
注:
在上面的示例中,TTML 转换 profile 被用作 基线 profile。随后通过指定必须支持和使用 在第三方命名空间中定义的私有扩展,对该基线 profile 进行超集化。
此示例的效果是表达作者意图: 接收方处理器必须支持 TTML 转换 profile,并且 还必须支持并启用第三方定义的扩展。
以下属性定义于 TT 参数命名空间中。
ttp:contentProfiles 属性可由内容作者用于表达
定时文本标记语言(TTML)的一个或多个
内容 profile,其中
包围文档实例声称符合一组指定
内容 profile中的全部。
如果指定,此属性的值必须遵守以下语法,
其中每个 profile-designator 项遵守
<uri> 值语法,并且
还按照 5.2 Profiling
遵守对 profile 指示符定义的约束。
ttp:contentProfiles
: designators
| "all(" <lwsp> designators <lwsp> ")"
designators
: designator (<lwsp> designator)*
designator
: <profile-designator>
|
如果指示符列表被包含在函数语法 all(...) 中,或未使用
函数语法,
则声称符合所有被指示的内容
profile。
如果指定了多个指示符,则每个指示符的绝对化形式必须 互不相同;也就是说, 转换为绝对化形式后,不允许重复指示符。
ttp:contentProfiles
属性仅在指定于
tt 元素上时才被视为有意义。
ttp:contentProfileCombination 属性用于指定
组合多个内容 profile的方法。
如果指定,此属性的值必须遵守以下语法:
ttp:contentProfileCombination : "leastRestrictive" | "mostRestrictive" | "replace" | "ignore" |
如果未指定,则此参数的值必须被视为 ignore。
给定两个有序 profile 规范值 arg1 和 arg2,以及内容 profile 组合方法, 表 6-1 – 内容 Profile 组合 指定组合两个规范值的结果,其中参数顺序 根据文档实例中 内容 profile的词法顺序确定。
| 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 属性用于指定
将内容 profile 规范值映射到对应处理器
profile 规范值的方法。
如果指定,此属性的值必须遵守以下语法:
ttp:inferProcessorProfileMethod : "loose" | "strict" |
如果此参数的值为 loose,则在从内容 profile 规范
推断处理器 profile 规范时,
适用宽松(自由)映射。
如果此参数的值为 strict,则在从内容 profile 规范
推断处理器 profile 规范时,
适用严格(保守)映射。
如果未指定,则此参数的值必须被视为
loose。
给定输入内容 profile 规范值 input 和推断处理器 profile 方法, 表 6-2 – 推断处理器 Profile 方法指定映射该输入规范值的结果。
| input | loose |
strict |
|---|---|---|
| optional | optional | required |
| required | required | required |
| prohibited | optional | optional |
ttp:inferProcessorProfileMethod 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:inferProcessorProfileSource 属性用于指定
将内容 profile 规范值映射到对应处理器
profile 规范值时所使用的来源。
如果指定,此属性的值必须遵守以下语法:
ttp:inferProcessorProfileSource : "combined" | "first" |
如果此参数的值为 combined,则在推断处理器 profile 时,
有效内容 profile的组合 profile 规范
集用作推断来源。
如果此参数的值为 first,则在推断处理器 profile 时,
使用有效内容 profile的组合 profile 规范集中的第一个组成 profile
作为推断来源,其中由该组成 profile 推断出的处理器 profile 由
内容处理器支持;
相关进一步细节见
construct inferred processor
profile 过程。
如果未指定,则此参数的值必须被视为
first。
ttp:inferProcessorProfileSource 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:permitFeatureNarrowing 属性用于指定
与特性或扩展相关的要求是否可以通过对该特性或扩展的
(语法上或语义上)更窄解释
来满足。
如果指定,此属性的值必须遵守以下语法:
ttp:permitFeatureNarrowing : xsd:boolean // see [XML Schema Part 2], §3.2.2 |
如果此参数的值为 true,则当特性或
扩展的定义指定了 extends 属性,并且
处理器支持该属性引用的特性或扩展时,
可以满足对该特性或扩展支持的要求。
如果此参数的值为 false,则对特性或
扩展支持的要求,不能由 extends 属性指定的
定义更窄的特性或扩展来满足。
如果未指定,则此参数的值必须被视为
false。
ttp:permitFeatureNarrowing 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:permitFeatureWidening 属性用于指定
与特性或扩展相关的要求是否可以通过对该特性或扩展的
(语法上或语义上)更宽解释
来满足。
如果指定,此属性的值必须遵守以下语法:
ttp:permitFeatureWidening : xsd:boolean // see [XML Schema Part 2], §3.2.2 |
如果此参数的值为 true,则当特性或
扩展的定义指定了 restricts 属性,并且
处理器支持该属性引用的特性或扩展时,
可以满足对该特性或扩展支持的要求。
如果此参数的值为 false,则对特性或
扩展支持的要求,不能由 restricts 属性指定的
定义更宽的特性或扩展来满足。
如果未指定,则此参数的值必须被视为
false。
ttp:permitFeatureWidening 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:profile 属性
指示定时文本标记语言(TTML)的处理器 profile,
该 profile 在处理文档实例时适用。
注:
如果作者希望指定一组处理器 profile 中的一个或多个适用,
而不是单个处理器 profile,则建议内容作者使用
6.2.8 ttp:processorProfiles所指定的
ttp:processorProfiles。
注:
有关发出内容 profile 信号的信息,参见 6.2.1 ttp:contentProfiles。
如果指定,此属性的值必须遵守以下语法,
其中 designator 遵守
<uri> 值语法,并且还必须按照
5.2 Profiling
指定 profile 指示符。
ttp:profile : designator designator : <profile-designator> |
ttp:profile
属性仅在指定于
tt 元素上时才被视为有意义。
如果在文档实例中定义了顶级
处理器 profile,则不应在 tt 元素上
指定
ttp:profile
属性。
注:
关于当一个或多个机制为处理文档时的(可能)使用指示一个或多个 profile 时,如何确定 有效处理器 profile的信息, 参见 5.2.4 Profile 语义。
ttp:processorProfiles 属性可由内容作者用于表达
定时文本标记语言(TTML)的一个或多个
处理器 profile,其中
包围文档实例要求支持
(1) 一组指定
处理器 profile中的全部,或 (2) 一组
指定处理器 profile中的任意一个。
如果指定,此属性的值必须遵守以下语法,
其中每个 profile-designator 项遵守
<uri> 值语法,并且
还按照 5.2 Profiling
遵守对 profile 指示符定义的约束。
如果指示符列表被包含在函数语法 all(...) 中,或未使用
函数语法,
则要求支持所有被指示的处理器
profile。如果指示符列表
被包含在函数语法 any(...) 中,则要求支持
被指示处理器 profile中的至少一个。
如果指定了多个指示符,则每个指示符的绝对化形式必须 互不相同;也就是说, 转换为绝对化形式后,不允许重复指示符。
ttp:processorProfiles
属性仅在指定于
tt 元素上时才被视为有意义。
ttp:processorProfileCombination 属性用于指定
组合多个处理器 profile的方法。
如果指定,此属性的值必须遵守以下语法:
ttp:processorProfileCombination : "leastRestrictive" | "mostRestrictive" | "replace" | "ignore" |
如果未指定,则此参数的值必须被视为 ignore。
给定两个有序 profile 规范值 arg1 和 arg2,以及处理器 profile 组合方法, 表 6-3 – 处理器 Profile 组合指定组合两个规范值的结果, 其中参数顺序 根据文档实例中 处理器 profile的词法顺序确定。
| 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,则除非中止处理被
最终用户或应用覆盖,
验证型内容处理器
必须在发生validation error 异常时,
中止对 TTML 文档实例的处理。
如果此参数的值为 warn,则
验证型内容处理器
应在发生validation error 或
validation warning 异常时
警告最终用户,
并给予最终用户继续或中止处理的选项。
如果此参数的值为 ignore,则
验证型内容处理器
在发生validation exception
时不应中止,也不应警告最终用户。
如果未指定,则此参数的值按如下方式确定:
如果
ttp:validation 属性的计算值为
required,
则该值必须被视为 abort;
如果为 optional,
则该值必须被视为 warn;
否则,如果为 prohibited,
则该值必须被视为 ignore。
ttp:validationAction 属性仅在指定于
tt 元素上时才被视为有意义。
本节规定核心词汇目录中的 parameter 事项,其中 参数应理解为如下信息:(1) 基本信息,或 (2) 对于 解释由核心词汇项表达的其他类型信息的语义,或对于建立文档 处理上下文而言具有重要意义的信息;通过该上下文, TTML 内容可以与外部环境相关联。
以下属性定义于 TT 参数命名空间中。
ttp:cellResolution 属性可由作者用于
表达根容器区域的区域
被划分为多少水平和垂直单元格,以便以
统一网格的形式表达呈现语义。
如果指定,此属性的值必须遵守以下语法:
如果未指定,则列数和行数必须分别被视为 32 和 15。如果指定,则列数或行数不得为零(0)。
注:
选择值 32 和 15,是因为这是 [CTA-608-E] 定义的最大列数和行数。
ttp:cellResolution 属性仅在指定于
tt 元素上时才被视为有意义。
注:
使用统一网格仅用于 度量长度和表达坐标。特别是,并不 假定文本的呈现或各个 字形区域的对齐 与此网格协调。此类对齐是可能的,但 需要使用等宽字体,并且字体大小的 EM 方框必须恰好 匹配单元格大小。
除非另有说明,当以 单元格表达的<length> 表示平行于行内或块进展维度的尺寸时, 分别适用该单元格在行内或块进展维度中的尺寸。
注:
例如,如果 padding(四条边上)指定为 0.1c,单元格分辨率 为 20 × 10,且根容器 区域的 extent 为 640 × 480,则假定采用从上到下、 从左到右的书写模式,start 和 end padding 将为 (640 / 20) * 0.1 像素,而 before 和 after padding 将为 (480 / 10) * 0.1 像素。
ttp:clockMode 属性用于指定
当按照 7.2.11 ttp:timeBase所定义的
clock 时间基准运行时,将时间表达式解释为实时
时间坐标的方式。
注:
时间表达式语法和语义的规定见 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(Temp Atomique International)+ 自 1972 年以来 累积的闰秒。TAI 由位于法国塞夫尔的 Bureau International des Poids et Mesures(BIPM)维护。 GPS 系统时间被调控到美国海军 天文台的主时钟(MC),该主时钟保持在与 TAI 接近但未指定的 容差范围内。
如果未指定,则此参数的值必须被视为
utc。
ttp:clockMode 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:displayAspectRatio 属性用于指定
根容器区域的显示宽高比,详见
H 根容器区域语义。
如果指定,此属性的值必须遵守以下语法:
如果指定,则分子和分母都必须非零。如果未指定,则 根容器区域的显示宽高比由 H 根容器区域语义确定。
ttp:displayAspectRatio 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:dropMode 属性用于指定
对帧计数的解释和使用约束;
当按照
7.2.11 ttp:timeBase
所定义的 smpte 时间基准运行时,这些帧计数
对应于 [SMPTE ST 12-1] 时间坐标。
如果指定,此属性的值必须遵守以下语法:
ttp:dropMode : "dropNTSC" | "dropPAL" | "nonDrop" |
如果由 7.2.11
ttp:timeBase定义的时间基准被指定为
smpte,则此参数按如下方式适用:如果
参数值为 nonDrop,则在时间表达式的任意给定
秒内,帧从 0 计数到
N−1,其中 N 是
ttp:frameRate 参数指定的值,但
忽略 ttp:frameRateMultiplier 参数指定的任何值。
注:
在 nonDrop
模式下运行时,时间表达式中的一秒可能等于或不等于
正常(1x 速度)向前播放期间的实时一秒。如果
指定了 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 : <digit>+ // value > 0 |
适用于文档实例的帧率用于 解释以帧表达的时间表达式, 如 12.3.1 <time-expression>所定义。
如果适用 media 时间基准,且有效帧率为
整数,则帧被解释为媒体
时间中一秒的划分;因此,如果帧率指定为 F,则
媒体时间中的一秒被划分为 F 个
持续时间相等的区间,其中每个区间标记为帧 f,
且 f ∈ [0…F−1]。
注:
关于 media 时间基准下时间表达式解释的更多
细节,参见 I.2 媒体时间基准。
如果未指定,则帧率必须被视为等于某个 应用定义的帧率,或者如果没有适用的应用定义帧率, 则为每秒三十(30)帧。如果指定,则帧率必须 大于零(0)。
ttp:frameRate 属性仅在指定于
tt 元素上时才被视为有意义。
ttp:frameRateMultiplier 属性用于
指定一个乘数,该乘数应用于
ttp:frameRate 属性指定的帧率,以计算有效
帧率。
如果指定,此属性的值必须遵守以下语法:
当期望的帧率无法表示为每秒整数帧数时, 使用帧率乘数。
如果未指定,则帧率乘数必须被视为等于某个应用 定义的帧率乘数, 或者如果没有适用的应用定义帧率乘数,则为一(1:1)。分子和 分母都必须非零。
ttp:frameRateMultiplier 属性仅在指定于
tt 元素上时才被视为有意义。
注:
用于与每秒 30 帧的 NTSC [SMPTE ST 170] 格式视频对象同步的帧率乘数,名义上为 1000:1001。NTSC 视频的名义帧率定义为色度 副载波频率 3,579,545.45…Hz(= 5.0MHz × 63/88)乘以 2/455 的比值,再除以 每帧 525 条水平线的数量,从而得到 29.970029970029…(= 30 × 1000/1001)帧每 秒的帧率。其他帧率乘数适用于不同使用 地区和视频格式标准。
注:
除 PAL/M 情况外,用于与每秒 25 帧的 PAL 格式视频对象同步的帧率乘数名义上为 1:1。
ttp:markerMode 属性用于指定
对时间表达式的解释和使用约束;
当按照
7.2.11 ttp:timeBase
所定义的 smpte 时间基准运行时,这些时间表达式
对应于 [SMPTE ST 12-1] 时间坐标。
如果指定,此属性的值必须遵守以下语法:
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 marker 模式运行时,存在一个隐含的时间坐标
空间,即合成 smpte 文档
同步基准,
它由单调递增(或递减)的
[SMPTE ST 12-1] 时间坐标定义,同时考虑
计算得到的帧率和丢帧模式。所有时间表达式都根据
smpte 时间码同步事件(marker),
相对于此时间坐标空间进行解释;
其中文档处理上下文会发出
这些事件,并带有关于时间坐标单调性和在
存在丢帧时重新同步的隐含约束。
将 continuous marker 模式与 smpte
时间基准一起使用,不同于使用 media 时间基准,
因为 (1) ttp:dropMode 参数的语义
适用于前者而不适用于后者,并且 (2) [SMPTE ST 12-1]
时间坐标可以单调地应用于已经经历
时间膨胀、时间收缩或时间
反转的媒体。
如果适用 discontinuous 值,则时间
表达式不得转换为实时
坐标,算术运算符(加法、乘法)不
定义于时间表达式,因此任何(格式良好的)
持续时间表达式都必须被视为无效。
注:
当使用 smpte 时间基准和
discontinuous marker 模式运行时,不存在有效的时间坐标
空间;相反,所有时间表达式都被解释为带标签的
同步事件(marker),其中文档处理上下文
发出这些事件;当这些事件对应于表示相同标签的时间
表达式时,会相应地导致时间区间
开始或结束。
在 discontinuous
模式下运行的另一个副作用是,子级的时间表达式
与其时间容器的时间表达式没有必然
关系;也就是说,时间容器及这些容器的子级
根据带标签同步(marker)事件的
发生而彼此独立地被时间激活和停用。
注:
<time-expression> 与带标签同步事件(marker)之间的比较被视为依赖于实现。 特别是,本规范不要求实现使用 特定的内部格式来表示 时间表达式或 marker,也不要求使用特定的比较算法。尽管如此,预期 实现在执行此类比较时 会遵守时间表达式的语义以及适用于 marker 标签的任何隐含语义。
注:
由此参数捕获的 marker 不连续性概念
在逻辑上独立于
ttp:dropMode 参数所表达的帧计数方法。特别是,
即使 ttp:dropMode 参数指定为
dropNTSC 或 dropPAL,marker 模式也可以
指定为 continuous,即使存在由帧计数方法引起的帧计数
不连续性;除非在 marker 标记中存在其他非线性或不连续性,
例如,两个连续帧被标记为 10:00:00:00
和 10:00:01:00。
ttp:pixelAspectRatio 属性用于指定
根容器区域的像素宽高比,详见
H 根容器区域语义
如果指定,此属性的值必须遵守以下语法:
如果指定,则分子和分母都必须非零。如果未指定,则 根容器区域的像素宽高比由 H 根容器区域语义确定。
ttp:pixelAspectRatio 属性仅在指定于
tt 元素上时才被视为有意义。
不应指定 ttp:pixelAspectRatio 属性,
除非同时在tt 元素上指定
一个由两个使用 px(像素)单位的
<length> 规范组成的
tts:extent 属性;
若没有该属性,则使用 ttp:pixelAspectRatio 属性
已废弃。
ttp:subFrameRate 属性用于指定相关
媒体对象的子帧率,或在文档
实例意在
作为独立媒体对象运作时,指定该文档实例的固有子帧率。
如果指定,此属性的值必须遵守以下语法:
ttp:subFrameRate : <digit>+ // value > 0 |
适用于文档实例的子帧率 用于解释以子帧表达的时间表达式, 如 12.3.1 <time-expression>所定义。
如果适用 media 时间基准,且有效帧率为
整数,则子帧被解释为媒体
时间中一帧的划分;因此,如果子帧率指定为 S,则
媒体时间中的一帧被划分为 S 个
持续时间相等的区间,其中每个区间标记为子帧 s,
且 s ∈ [0…S−1]。
注:
关于 media 时间基准下时间表达式解释的更多
细节,参见 I.2 媒体时间基准。
如果未指定,则子帧率必须被视为等于某个应用定义的 子帧率,或者如果没有适用的应用定义 子帧率,则为一(1)。如果指定,则子帧率必须大于 零(0)。
ttp:subFrameRate 属性仅在指定于
tt 元素上时才被视为有意义。
注:
在与隔行扫描视频媒体对象同步的上下文中, 子帧有时称为场。
ttp:tickRate 属性用于指定相关
媒体对象的 tick 速率,或在文档实例内容意在
作为独立媒体对象运作时,指定该内容的固有 tick 速率。
如果指定,此属性的值必须遵守以下语法:
ttp:tickRate : <digit>+ // value > 0 |
适用于文档实例的 tick 速率用于
解释使用 t 度量以 ticks 表达的时间表达式,
如 12.3.1
<time-expression>所定义。
如果适用 media 时间基准,
tick 被解释为媒体时间中一秒的整数
划分;因此,如果 tick 速率指定为 T,则
媒体时间中的一秒被划分为 T 个
持续时间相等的区间,其中每个区间标记为 tick t,
且 t ∈ [0…T−1]。
注:
关于 media 时间基准下时间表达式解释的更多
细节,参见 I.2 媒体时间基准。
如果未指定,则若指定了帧率,tick 速率 必须被视为有效帧率乘以 子帧率(即 ticks 被解释为子帧);或者,如果未 指定帧率,则 tick 速率必须被视为每秒媒体时间一个(1) tick。如果指定,则 tick 速率 不得为零(0)。
注:
ticks 与帧或 子帧之间没有预定义关系。Ticks 是对秒的任意划分,允许 使用定点算术而不是秒的分数(且可能 不精确)表达式。
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 所定义的媒体 marker 值,但它
不是使用不透明 marker 名称,而是使用结构化的 [SMPTE ST 12-1]
时间坐标作为 marker 名称。
如果时间基准被指定为 clock,则时间
表达式表示某条现实世界时间线中的坐标,该时间线由某个实时
时钟建立,例如本地挂钟时间,
或 UTC(协调世界时)或 GPS(全球定位系统)
时间线。
如果未指定,则默认时间基准必须被视为
media。
ttp:timeBase 属性仅在指定于
tt 元素上时才被视为有意义。
当使用 media 或 smpte
时间基准运行时,文档
实例的历时呈现可能
受控制时间线的变换影响,例如
时间反转、膨胀(扩展)或收缩
(压缩);然而,当使用 clock
时间基准运行时,不允许任何变换,并且历时
呈现基于真实时间的流逝,沿线性、单调递增的时间线
进行。
注:
关于根据指定时间基准解释时间表达式的更多 细节,参见 I 时间表达式语义。
本节规定核心词汇目录中的 content 事项。
以下元素指定 文档实例的结构和主要内容方面:
注:
本节的小节按逻辑顺序排列(从最高层构造到最低层构造)。
tt 元素用作文档实例的根文档元素。
tt 元素接受零个或一个 head 元素作为子级,
后接
零个或一个 body 元素。
<tt tts:extent = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") : default {any attributes in TT Parameter Namespace} Content: head?, body? </tt> |
根时间范围,即
文档实例处于活动状态的时间区间,具有一个隐式
持续时间,该持续时间等于文档的 body 元素的
隐式持续时间(如果存在 body
元素),或者为零(如果不存在 body 元素)。
如果在 tt
元素上指定了 tts:extent 属性,则它必须遵守
10.2.16 tts:extent,
在这种情况下,它指定空间范围,即根容器区域的空间范围;
内容区域位于并呈现在其中。如果未指定
tts:extent
属性,则空间范围,即
根容器区域的空间范围,由
H 根容器区域
语义中指定的规则确定。
根容器区域的原点由
文档处理上下文确定。
注:
如果作者希望表示根容器区域的(存储或图像)宽高比,
而不指定其分辨率,则可以通过使用
ttp:displayAspectRato
参数属性来实现。
必须在 tt 元素上指定 xml:lang 属性。
如果属性值为空,则表示没有适用于
文档实例中所含文本的默认语言。
如果未在 tt 元素上指定 xml:space 属性,则
必须
将其视为已以 default 值指定该属性。
head 元素是一个容器元素,用于对头部事项进行分组,包括
元数据、
profile、嵌入内容资源、样式和布局信息。
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 元素。
由
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") {any attributes in TT Metadata Namespace} {any attributes in TT Style Namespaces} Content: Metadata.class*, Animation.class*, div* </body> |
作者可以使用
begin、dur 和 end 属性为
body 元素指定时间区间。如果此区间的起始点
仍未指定,则该起始点解释为
文档时间坐标
空间的起始
点和根时间范围的起始点二者中较晚的一个。
如果此区间的结束点仍未指定,则
结束点解释为根
时间范围的结束点。
注:
从 SMIL 呈现引用的文档实例 预期遵循与其他 SMIL 媒体 对象相同的计时规则。
如果在 body
元素上指定相对 begin 或 end 时间,则这些时间通过引用
文档时间坐标
空间的开头来解析。
如果根时间范围短于
body 元素的计算持续时间,
则 body 元素的活动时间区间会被
截断至根时间
范围的活动结束点。
作者可以通过 style
属性、内联样式属性或两者组合,将一组样式属性关联到
body 元素。
如果没有在
body 元素上指定 timeContainer 属性,则它必须解释为具有
parallel
时间包含语义。
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") {any attributes in TT Metadata Namespace} {any attributes in TT Style Namespaces} Content: Metadata.class*, Animation.class*, Layout.class?, (Block.class|Embedded.class)* </div> |
作者可以通过
style 属性、内联样式属性或两者组合,将一组样式属性关联到 div 元素。
如果没有在
div 元素上指定 timeContainer 属性,则它必须解释为具有
parallel 时间包含语义。
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") {any attributes in TT Metadata Namespace} {any attributes in TT Style Namespaces} Content: Metadata.class*, Animation.class*, Layout.class?, (Inline.class|Embedded.class)* </p> |
作者可以通过
style 属性、内联样式属性或两者组合,将一组样式属性关联到
p 元素。
如果没有在
p 元素上指定 timeContainer 属性,则它必须解释为具有
parallel 时间包含语义。
如果 p 元素的子级序列
仅由字符信息项组成,
则为了应用适用于 span 元素的样式属性,该序列必须
被视为匿名 span;有关详细信息,参见
[construct anonymous
spans] 过程。
注:
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") : new xlink:title = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {any attributes in TT Metadata Namespace} {any attributes in TT Style Namespaces} Content: Metadata.class*, Animation.class*, (Inline.class|Embedded.class)* </span> |
作者可以通过
style 属性、内联样式属性或两者组合,将一组样式属性关联到
span 元素。
如果没有在
span 元素上指定 timeContainer 属性,则它必须解释为具有
parallel 时间包含语义。
链接属性 xlink:* 可用于使用指定的位置(href)、角色和标题,
将 span 元素与相关内容链接。链接激活的行为
受 xlink:show 属性影响,
其精确含义由文档处理上下文确定。
如果 span 元素指定了 xlink:href 属性,则嵌套的
span 后代元素不得指定
xlink:href 属性;如果指定了,则后者必须在呈现或激活处理的
目的下被忽略。
如果 span 元素的子级序列
仅由字符信息项组成,
则为了应用适用于 span 元素的样式属性,该序列必须
被视为匿名 span;有关详细信息,参见
[construct anonymous
spans] 过程。
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") {any attributes in TT Metadata Namespace} {any attributes in TT Style Namespaces} Content: Metadata.class*, Animation.class* </br> |
当在视觉介质上呈现时,br 元素的存在必须
解释为强制换行。
注:
br 元素的视觉呈现
旨在产生与控制字符
CR(U+000D)
后接控制码 LF(U+000A)在电传打字设备上呈现时相同的效果。
因此,两个连续的 br 元素将产生
不同于单个 br 元素的效果。
本节定义核心词汇目录中许多或所有元素类型使用的以下通用属性:
此外,本节定义核心词汇目录中某些元素类型使用的以下链接词汇:
condition 属性用于将元素
(及其后代)从语义处理中条件性排除;
在这种情况下,该元素称为条件化元素。
注:
元素使用 condition 属性,并不会阻止
解析该元素(及其后代),也不会阻止
将该元素(及其后代)的已解析表示插入到
与所包含的文档实例相关联的
精简 xml 信息集中。
condition 属性可与核心词汇目录中的任何元素一起使用,
但 profile 事项除外,即Profile
模块的元素除外。
condition 属性的值必须遵守
<condition> 表达式;
该表达式在呈现处理时求值(惰性求值),
或在呈现处理之前求值(急切求值);其中,急切求值
仅可在求值所得值不能改变,或已知在呈现处理期间不会改变时发生。
注:
例如,如果条件表达式依赖于 条件函数的值, 则该条件表达式的值可能在呈现处理期间改变,在这种情况下 不能使用急切求值。
出于呈现处理的目的,如果元素指定了 condition
属性,并且其<condition> 表达式值求值为
false,
则必须忽略该元素及其后代元素的语义,除非这些语义被明确例外处理;
也就是说,无论这些后代元素上指定的任何
<condition>
表达式的求值如何,该元素及其后代元素都被
条件性排除。
注:
例如,如果 p 元素指定了求值为
false 的 condition
属性,则该元素及其后代的内容将为呈现目的被忽略。
注:
对于由于某个祖先元素被
条件性排除而被条件性排除的元素,
不要求(且不相关)对其 condition 属性进行求值。
也就是说,在祖先被条件性
排除的情况下,
元素不能通过对其 condition 属性求值而变为条件性
包含。
注:
在某些情况下,通过
condition 属性忽略(排除)某个元素的语义,
是指部分而不是完全忽略该元素的语义;相关内容见
以下文本以及特定元素定义。
除非适用更高层协议,否则当
<condition> 表达式
值求值为 false 时,为确定哪些语义将被忽略,
适用以下例外:
注:
上述例外也适用于 条件性排除元素的后代。
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)字符可以生成字形区域。
因此,不建议在 p 和 span 元素内的
#PCDATA 内容中使用 TAB(U+0009)字符。
核心词汇可以使用以下表达式:
<absolute-profile-designator> 值表达式用于 (1) 定义与 本地定义的 profile 关联的绝对指示符,或 (2) 引用远程定义的 profile。
<absolute-profile-designator> : <absolute-uri> |
注:
在当前上下文中,本地定义表示定义于当前文档中,而 远程定义 表示定义于另一文档中。
<absolute-uri> 值表达式用于指定绝对 URI [URI]。
<absolute-uri> : <uri> // absolute form only |
在 <absolute-uri> 值表达式的上下文中, <uri> 表达式的值语法 必须遵守 [URI] §4.3 所定义的 URI 绝对形式。
<arguments> 值是与
<expression> 值的
function-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> |
注:
为避免疑义,请注意,在
function-expression 的 identifier 标记与其后
<arguments> 表达式的起始左
圆括号 “(” 字符之间,不允许线性空白(LWSP)。
<fragment-profile-designator> 值表达式用于通过引用指示本地 profile。
<fragment-profile-designator> : <fragment-uri> |
<fragment-uri> 值表达式用于指定片段 URI [URI]。
<fragment-uri> : <uri> // fragment component only |
在 <fragment-uri> 值表达式的上下文中, <uri> 表达式的值语法 必须遵守 [URI] §3 和 §3.5 所定义的 URI 片段组件, 即 scheme、authority、path 和 query 组件为空(未指定),且只有 fragment 组件非空(已指定)。
<media-function> 值是可用于 <condition> 值表达式中的子表达式, 以便对相关媒体 对象或 文档处理上下文执行媒体查询。
<media-function>
: "media(" <lwsp>? media-query <lwsp>? ")"
media-query
: <quoted-string>
|
<media-function> 值表达式的 media-query 参数必须遵守
[Media
Queries] §3 定义的 media_query_list 语法。
如果指定的媒体查询求值为 true,
则 <media-function> 值表达式求值为 true;
否则,该值表达式求值为 false。
如果不支持 <media-function> 表达式的语义,则该表达式
必须求值为 false。
<profile-designator> 值表达式用于指示 profile, 其目的可以是定义 profile 或引用已定义的 profile。
<profile-designator> : <absolute-profile-designator> | <relative-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 信息集时,它 受 XML 属性值规范化约束。
<relative-profile-designator> 值表达式用于相对于 TT Profile 命名空间引用标准化 profile,该命名空间作为基 URI, 用于将相对 profile 指示符绝对化。
<relative-profile-designator> : <relative-uri> |
注:
例如,如果相对 profile 指示符表示为
ttml2-presentation,则绝对化后的 profile 指示符
将为
http://www.w3.org/ns/ttml/profile/ttml2-presentation。
<relative-uri> 值表达式用于指定相对 URI [URI]。
<relative-uri> : <uri> // no scheme component present |
在 <relative-uri> 值表达式的上下文中, <uri> 表达式的值语法 必须遵守 [URI] §3 所定义的 URI 相对形式, 即 scheme 和 authority 组件为空(未指定),但 path,以及可选的 query 和 fragment 组件被指定。
<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 Feature Namespace 或 TT
Extension Namespace。
如果指定的特性或扩展
指示符由内容
处理器(在语义上)支持,则 <supports-function> 值表达式求值为
true。
<uri> 值表达式用于指定 URI [URI]。
<uri> : xsd:anyURI |
xsd:anyURI 数据类型的值语法必须遵守
[XML Schema Part 2] §3.2.17 指定的定义。
本节规定核心词汇目录中的 embedded content 事项,其中,在此上下文中, content 应理解为任意内容类型(格式)的数据, embedded 则指嵌入(内联)此数据或嵌入 对外部数据的引用。
以下元素可用于指定嵌入内容:
9.1.3 data 元素用作 嵌入数据资源的通用容器元素, 该资源可以被分割成 chunk,也可以不被分割; 在被分割的情况下,数据片段使用 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) 作为 Block.class 元素组中元素的子级,
即作为
div 或 p 元素的子级,或
作为 span 元素的子级。前者
称为
音频定义上下文,后者称为音频呈现上下文。
当 audio 元素出现在音频
定义上下文中时,它
作为音频资源的可共享定义,
可被包围文档实例中的其他
audio 元素引用。
当 audio 元素出现在音频呈现上下文中时,它
作为音频资源的不可共享定义,
并隐含呈现(渲染)语义,即预期被播放。
audio 元素接受
零个或多个 Metadata.class 元素组中的元素作为子级,后接
零个或多个 Animation.class 元素组中的元素,
后接零个或多个
source 元素。
注:
对于执行
[construct anonymous spans] 过程而言,
audio 元素的任何文本节点后代都不是有意义的文本节点。
<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") {any attributes in TT Style Namespaces} {any attributes in TT Metadata Namespace} Content: Metadata.class*, Animation.class*, source* </audio> |
audio 元素通过以下方式指示音频资源:
(1) 引用内置数据资源,
(2) 引用外部数据资源,或
(3) 定义或引用嵌入数据
资源,
其中数据资源包含音频内容。
如果 audio 元素指定了
src 属性,则它不得指定
子 source 元素。反之,
如果 audio 元素未指定
src 属性,则它必须指定
一个或多个
子 source 元素。
如果 audio 元素指定了
src 属性,并且其值未
引用
包围文档实例的片段,则它应指定
type 属性,在这种情况下,
type 属性的值必须对应于
被引用资源的媒体(内容)类型。否则,不得指定
type 属性。
如果指定,clipBegin 属性的值必须遵守
12.3.1 <time-expression> 的
offset-time 形式;在这种情况下,
此表达式的值表示相对于被引用音频内容开头的正常播放时间偏移,并指示音频呈现
开始的点。
如果此指定值大于被引用音频内容的固有持续时间,
则 clipBegin 的解析值被视为
固有持续时间。
如果未指定 clipBegin 属性,则适用值 0。
类似地,如果指定,clipEnd 属性的值必须遵守
12.3.1 <time-expression> 的
offset-time 形式;在这种情况下,
此表达式的值表示相对于被引用音频内容开头的正常播放时间偏移,并指示呈现
停止的点。
如果此指定值大于被引用音频内容的固有持续时间,
则 clipEnd 的解析值被视为
固有持续时间。
如果未指定 clipEnd 属性,则适用等于音频内容固有持续时间的值。
以下示例说明 audio 元素的使用。
... <audio src="http://example.com/audio/description.mp3" type="audio/mp3"/> ... |
chunk 元素用于表示一个不同的 data chunk(片段)。
chunk 元素可以作为
data 元素的子级出现。
<chunk condition = <condition> encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : base64 length = xsd:nonNegativeInteger xml:base = <uri> xml:id = ID Content: #PCDATA </chunk> |
如果指定了 encoding 属性,
则它必须表示 chunk 元素所表示字节序列的实际编码。
如果未指定 encoding 属性,
则编码必须被视为 base64。
如果指定了 length 属性,则它必须表示
chunk 元素所表示字节序列中的已解码字节数。
解码时,如果指定的 length 值与已解码字节数不匹配,
则该 chunk 及其容器 data
元素必须返回零长度字节序列。
如果未指定 length 属性,则该 chunk 被视为具有等于实际已解码字节数的长度。
以下示例说明 chunked data 的使用。
...
<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
元素的子级,
称为source 的数据绑定上下文;
其中后两个上下文统称为数据绑定上下文。
当 data 元素出现在数据
定义上下文中时,它
作为数据资源的可共享定义,可被以下项的
src 属性引用:
(1) 另一个 data 元素,
(2) 一个嵌入内容元素,或
(3) 一个 source 元素。
在这种情况下,data 元素的上下文化活动时间区间是
其父 resources 元素的活动时间区间与
其引用元素的活动时间区间的交集。
当 data 元素出现在数据绑定
上下文中时,它
作为数据资源的不可共享定义,并隐含绑定语义,即
它旨在绑定到(关联于)其直接引用上下文。
在这种情况下,data 元素的活动时间区间与其最近祖先
定时元素的活动时间区间相同。
data 元素接受以下三种内容模型之一:
(1) 一个或多个文本节点(即 #PCDATA),
(2) 零个或多个 Metadata.class 元素组中的元素,后接
一个或多个
chunk 元素,或
(3) 零个或多个 Metadata.class 元素组中的元素,后接
一个或多个
source 元素;
第一种称为简单数据嵌入,
第二种称为chunked 数据嵌入,第三种称为
带来源数据嵌入。
当使用简单数据嵌入时,数据资源
通过解码 #PCDATA 内容获得。
当使用chunked 数据嵌入时,数据
资源通过串接解码每个子
chunk 元素所获得的字节序列而获得。
当使用带来源数据嵌入时,数据
资源从第一个可解析的子
source 元素获得。
此外,
子 source 元素不得
包含 data 元素,但可以
引用
data 元素,该元素位于
数据定义上下文中。
<data condition = <condition> encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : 见下文说明 format = <data-format> length = xsd:nonNegativeInteger src = <data> type = xsd:string : 见下文说明 xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") Content: #PCDATA | (Metadata.class*, chunk+) | (Metadata.class*, source+) </data> |
如果使用简单数据嵌入,即 data 元素的内容为一个或
多个文本节点,则可以指定
encoding 属性;
如果未指定,则必须被视为 base64。
如果使用 chunked 或带来源数据嵌入,即 data 元素的内容
包含任何子
chunk 或 source 元素,则
不得指定 encoding 属性;
如果指定,则为了内容处理的目的必须忽略它。
如果指定了 length 属性,则它必须表示
data 元素所表示字节序列中的已解码字节数。
解码时,如果指定的 length 值与已解码字节数不匹配,
则必须返回零长度字节序列。
如果未指定 length 属性,则该数据资源被视为具有等于实际已解码字节数的
长度。
使用带来源数据嵌入时,不得指定 length 属性。
注:
length 属性的意图是提供一种对已解码数据执行简单
完整性检查的方法。注意,此检查不保证
传输期间的数据完整性,即数据可能在不修改
length 的情况下被修改。
如果使用简单或 chunked 数据嵌入,则必须指定
type 属性,
且它必须对应于数据资源的媒体(内容)类型。在这些情况下,如果
没有已定义类型,则应使用类型 application/octet-stream。
在带来源数据嵌入的情况下,已解析
source 元素的媒体(内容)类型
用作类型。
如果 type 属性未指定
或未解析,或被指定为通用类型,
例如 application/octet-stream,并且已知有关被引用数据资源的其他格式信息,
但该信息无法
以 Media Type [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>caption with metadata containing tunneled data</ttm:desc>
<data encoding="base64">
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
</data>
</metadata>
<p>Caption with Tunneled Data</p>
</div>
|
<div>
<image>
<source>
<data type="image/png" length="119">
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
</source>
</image>
</div>
|
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 name、受支持字符范围、style 和 weight。
特别是,
如果指定的属性值与编码在字体资源中的这些字体特征值不同,则
应使用指定的属性值,而不是
字体资源中编码的字体特征。
如果未指定 family、range、style 或 weight
属性中的任一属性,则其值
必须被视为等于编码在字体资源中的同名字体特征值。
注:
建议作者尽可能使用子集字体。子集字体是语法上有效的 字体资源, 它移除了未引用的字形和未引用的字形度量。通常,子集字体 与特定文档绑定,因为它可能是 基于该文档的实际字符内容生成的。
出于解引用(下载)字体资源的目的, 内容处理器 可以推迟下载过程,直到字体资源内容对于执行必要的 (转换或呈现)处理而言成为必需时再下载。
以下示例说明 font 元素的使用。
...
<head>
<resources>
<data xml:id="lastResortFont" type="application/font-woff">
... base64 encoded data ...
</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">use my font or last resort font</p>
...
|
image 元素用于定义或引用图像资源。
image 元素可以出现在两个上下文中:(1) 作为
resources 元素的子级,
以及
(2) 作为 Block.class 元素组中元素的子级,
即作为
div 或 p 元素的子级,或
作为 span 元素的子级。前者
称为
图像定义上下文,后者称为图像呈现上下文。
当 image 元素出现在图像
定义上下文中时,它
作为图像资源的可共享定义,
可由另一个 image 元素或由
tts:backgroundImage 样式属性
在包围文档实例中引用。
注:
图像资源的可共享定义会指定
xml:id 属性,以便由
图像呈现上下文中的
image 元素或
tts:backgroundImage 样式
属性
引用。
当 image 元素出现在图像呈现上下文中时,它
作为图像资源的不可共享定义,
并隐含呈现(渲染)语义。
当 image 元素作为
div 元素的子级出现时,
其呈现会产生渲染该图像的块区域;即,在
image 元素之前和之后隐含块边界。相比之下,
当 image 元素作为
p 或 span
元素的子级出现时,其呈现会产生渲染该图像的行内区域;即,在
image 元素之前和之后不隐含块边界。
注:
在 [CSS2] 中,这些语义将分别对应于
image 元素关联了值为
block 或 inline 的 display 样式属性。
由
tts:backgroundImage 样式属性引用的
图像资源的呈现
不得影响内容布局。
image 元素接受
零个或多个 Metadata.class 元素组中的元素作为子级,后接
零个或多个 Animation.class 元素组中的元素,
后接
零个或多个 source 元素。
注:
对于执行
[construct anonymous spans] 过程而言,
image 元素的任何文本节点后代都不是有意义的文本节点。
<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") : new xlink:title = xsd:string xml:base = <uri> xml:id = ID xml:lang = xsd:string xml:space = ("default" | "preserve") {any attributes in TT Style Namespaces} {any attributes in TT Metadata Namespace} 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 样式属性的图像进行呈现时,需要执行
(可能为变形的)
缩放操作,以获得指定 extent 的宽度和高度。
链接属性 xlink:* 可用于使用指定的位置(href)、角色和标题,
将 image 元素与相关内容链接。链接激活的行为
受 xlink:show 属性影响,
其精确含义由文档处理上下文确定。
当 image 出现在图像定义
上下文中时,适用以下附加
约束:
属性
animate、
begin、
dur、
end、
region 和
timeContainer
不得指定;如果出现,则必须为呈现处理的目的忽略它们;
Animation.class 元素组中的元素
不得
作为子元素出现;如果出现,则必须为呈现处理的目的忽略它们。
以下示例说明 image 元素的使用。
<div> <p>This division has a content image that appears as a block area after this paragraph.</p> <image src="http://example.com/images/caption.png" type="image/png"/> <div> ... <div tts:backgroundImage="http://example.com/images/background.png"> <p>This division has a background image that appears under this paragraph.</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 元素整合并扩展了
[SMPTE ST 2052-1] 中引入的
#image 扩展的能力。特别是,
引用内容图像的
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 属性引用外部
资源,则称为
外部 source;或者
如果 src 属性引用
包围文档实例中的嵌入资源,
则称为非嵌套嵌入 source。
如果 source 元素未指定
src 属性,则它必须指定
子 data 元素;在这种情况下,
它称为
嵌套嵌入 source。
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 属性,
则它提供关于嵌入内容格式(即形式语法)的附加提示信息。
在未定义标准媒体(内容)类型
标签,或该信息无法以 Media Type 参数
[MIME Media Types] 表达的情况下,
此类信息可能很有用。根据
source 元素的使用上下文,此属性的值可能受到进一步
约束。
如果指定了 src 属性,
且其值引用包围
文档实例的片段,
则必须存在一个 data 元素,
它是 resources
元素的子级,并由该片段标识;即具有 xml:id 属性,
其值与片段标识符匹配。
如果指定了 src 属性,
且其值未引用
包围文档实例的片段,则
应指定 type 属性,
在这种情况下,它必须对应于被引用资源的媒体(内容)类型。
如果指定了 src 属性,
且其值确实引用
包围文档实例的片段,则
不得指定 type 属性;
相反,嵌入资源的内容类型由被引用或嵌入的
data 元素上的
type 属性的值确定。
以下示例说明 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> 值语法。
根据使用上下文,可能适用附加约束。
嵌入内容元素以及某些样式属性值使用以下 表达式:
<audio> 值表达式用于通过引用指定音频 资源。
<audio> : <uri> |
如果 <audio> 值表达式采用裸
片段标识符形式,
则该片段标识符必须引用
包围文档实例中
resources 元素的子
audio 元素。
如果 <audio> 值表达式取值为
http://www.w3.org/ns/ttml/resource/#empty,
则被引用的音频资源是
空数据资源。
如果 <audio> 值表达式取值为
http://www.w3.org/ns/ttml/resource/#speech,则如果
语音合成处理器受支持且已启用,
被引用的音频资源是
语音数据资源;
否则(如果语音合成处理器
不受支持,或虽受支持但已禁用),
则被引用的音频资源是
空数据资源。
<data> 值表达式用于通过引用指定数据资源。
<data> : <uri> |
如果 <data> 值表达式采用
片段标识符形式,
则该片段标识符必须引用
包围文档实例中
resources 元素的子
data 元素。
<data-format> 表达式用于指定数据资源的格式。在 数据资源缺少已注册媒体(内容)类型的情况下,附加 格式信息很有用。
<data-format> : xsd:NCName | <uri> |
如果 format 表达式采用 <uri> 值的形式, 则它必须表达绝对 URI。
注:
本规范不对与数据内容一起使用的 format token 集进行标准化。
鼓励作者使用
常用 token;如果没有,则添加前缀 "x-" 以形成
私用 token。
<font> 表达式用于通过引用指定字体资源。
<font> : <uri> |
如果 <font> 表达式采用
片段标识符形式,
则该片段标识符必须引用
包围文档实例中
resources 元素的子
font 元素。
<image> 表达式用于通过引用指定图像 资源。
<image> : <uri> |
如果 <image> 表达式采用
片段标识符形式,
则该片段标识符必须引用
包围文档实例中
resources 元素的子
image 元素。
<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> | "?" |
本节规定核心词汇目录中的 styling 事项,其中 styling 应理解为一种可分离的信息层,它适用于 内容,并表示作者关于该内容呈现的意图。
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") {any attributes in TT Style Namespaces} Content: 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") {any attributes in TT Style Namespaces} Content: Metadata.class* </style> |
如果 style 元素作为
region 元素的后代出现,则在按照
10.4.1.2 引用样式和
10.4.1.3 链式引用
样式
定义计算引用样式时,必须忽略该 style 元素。
注:
也就是说,当某个元素使用引用样式来
引用 style 元素时,被引用的 style
元素必须作为 styling 元素的后代出现,
而不能出现在任何其他上下文中。
注:
如果 condition 属性适用于
style 元素,并且该 condition 求值为 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") Content: Metadata.class*, initial*, style* </styling> |
在时间语义适用于
styling 元素内容的范围内,该元素的隐含时间区间
定义为与根时间
范围共终止。
本节定义了与某些动画元素、内容元素、某些 布局元素和样式定义元素一起使用的 10.2.1 style 属性。
此外,本节规定 TT 样式命名空间中的以下属性, 供样式定义元素、某些布局元素以及支持内联样式规范的内容元素 使用:
除上述视觉样式属性外,本节还规定 TT 音频样式命名空间中的以下音频样式 属性, 供样式定义元素和支持内联样式规范的内容元素 使用:
本节定义的每个样式属性(以及相应属性)都使用 样式属性定义表, 该表 指定样式的以下一个或多个方面:值语法、初始值、 样式在语义上适用的元素、样式是否继承、百分比 值如何解释(如适用)、 样式是否(以及如何)可动画化,以及语义基础(派生)。
对于可动画化样式,术语 discrete 指使用
set
元素,或使用其
<calculation-mode> 为
discrete 值的 animate 元素。
术语
continuous 指使用其
<calculation-mode> 为
linear、paced 或 spline
值的 animate 元素。术语
none 表示样式
不可动画化。
注:
本规范对基于 [XSL-FO 1.1] 定义的同名属性的样式属性使用 lowerCamelCased 本地 名称。 此约定同样扩展到这些 属性的 token 值。
注:
由于本规范(以及它引用的模式)关于 如何指定样式属性的一般语法,特别是为了支持继承, 作者可能会无意中在某个元素上指定不可继承的样式属性, 而该属性既不适用于该元素,也不适用于其任何后代,但从内容有效性的角度来看仍然 符合要求。内容作者可能希望使用 TTML 内容验证工具来检测并警告此类用法。
style 属性由引用样式关联使用,
用于引用一个或多个 style 元素,其中每个元素都定义一个样式(属性)
集。
style 属性可由以下
元素类型的实例指定:
如果指定,style 属性的值必须
遵守 [XML Schema Part 2] §3.3.10 所定义的
IDREFS 数据类型,并且此外,每个 IDREF 必须引用一个
styling 元素为其祖先的 style 元素。
如果同一 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
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous |
| 语义基础: | 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"> Twinkle, twinkle, little bat!<br/> How <span tts:backgroundColor="green">I wonder</span> where you're at! </p> |
|
tts:backgroundExtent 属性可用于指定背景图像的范围(尺寸),
独立于图像的固有范围(尺寸)。
| 值: | <extent> |
| 初始值: | auto |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 相对于适用的背景定位 矩形的宽度和高度 |
| 可动画化: | discrete |
| 语义基础: | backgroundExtent 派生 |
如果此属性的值为 auto,则样式属性的计算值
必须被视为与关联背景图像的固有范围(尺寸)相同。
如果此属性的值为 contain,则样式属性的计算值
通过执行
[compute containment
scaling] 过程确定,
其中目标矩形 TR 被初始化为图像的固有宽度和高度,
参考矩形 RR 被设置为背景定位矩形,
并且目标矩形 TR 的所得输出值即为计算值。
如果此属性的值为 cover,则样式属性的计算值
通过执行
[compute cover
scaling] 过程确定,
其中目标矩形 TR 被初始化为图像的固有宽度和高度,
参考矩形 RR 被设置为背景定位矩形,
并且目标矩形 TR 的所得输出值即为计算值。
如果此属性的值由两个 <measure> 规范组成,则第一个规范分别是此属性计算值的 width, 第二个规范是 height; 在这种情况下,两个 <measure> 规范 都必须解析(或可解析)为非负长度。
如果此样式属性的计算值不同于图像的固有范围(尺寸), 则图像栅格会在每个维度上独立缩放, 以匹配计算出的 extent 值。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的背景范围与受支持的背景范围之间的欧几里得距离 最小的值。如果存在多个与 计算值等距的最接近受支持值,则使用离 [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
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | backgroundImage 派生 |
与此样式属性一起使用的 <image> 表达式
可以直接引用外部图像资源;
但是,作者应避免这样做,而应将其使用限制为仅引用
image
子级,这些子级属于
resources
元素。
注:
通过 image 元素间接引用图像,使得
可以将图像指定为嵌入数据资源,
并指定
有关图像的附加信息,例如其内容类型等。此外,通过
利用 image 元素中多个
source 子级的使用,
可以指定特定分辨率的图像和后备图像资源。
由与背景图像关联的元素生成的区域,其内容矩形的范围不受背景图像 解析范围的影响。
注:
TTML1 的某些 profile,例如 [SMPTE ST 2052-1] 及其
依赖 profile,指定背景图像会影响
由关联元素生成的区域的内容矩形范围。在这些 profile 与 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
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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
|
| 继承: | 否 |
| 百分比: | 见说明 |
| 可动画化: | discrete |
| 语义基础: | 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
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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 属性用于指定一个样式属性,该属性
定义区域或由流入区域的内容生成的区域的边框。
注:
当应用于 region 时,边框作为 region 范围的内嵌应用,也就是说, region 区域的内容矩形会因应用于 region 的边框存在而 减小。
| 值: | <border> |
| 初始值: | none |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous(仅颜色) |
| 语义基础: | 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"> Twinkle, twinkle, little bat!<br/> How <span tts:border="8px solid blue">I wonder</span> where you're at! </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">Border rounding on a <br/>p element.</p>
<p>
<span style="roundedBorder">Border rounding on span</span>
<br/>
<span style="roundedBorder">A shorter span</span>
</p>
</div>
|
|
tts:bpd 属性用于指定
块进展维度,或更简洁地说,指定由流入区域的内容生成的区域的 bpd。
注:
术语 块进展维度 以相对于书写模式的方式解释, 使得 bpd 始终对应于块 进展方向上的距离。因此,在水平书写模式中,bpd 表达 垂直距离, 而在垂直书写模式中,bpd 表达水平距离, 其中水平和垂直始终按绝对意义解释。
| 值: | <measure> |
| 初始值: | auto |
| 适用于: |
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | 见说明 |
| 可动画化: | discrete |
| 语义基础: | bpd 派生 |
如果 <measure> 表示为 <length> 值,则它必须为非负。
如果在 span 元素上指定了 tts:bpd 属性,
并且适用于该元素的 tts:display 属性的计算值
不是 inlineBlock,
则 tts:bpd 的语义仅在计算任何适用背景颜色或图像的块进展
维度时适用;
但是,生成区域的内容矩形维度不会改变。
如果在此属性的 <length> 表达式中使用百分比值, 则它相对于生成区域的包含区域 (最近的祖先区域)的适用绝对 维度来解析。
注:
与此属性一起使用的 <length> 表达式 与特定的、相对于书写模式的维度关联,然后根据适用书写模式 解析为绝对维度。 如果该绝对维度是垂直(水平)维度, 则百分比值按参考区域(最近的祖先区域)的相同垂直(水平) 绝对维度解析。
以下示例说明 tts:bpd 样式。
<p tts:fontSize="24px" tts:lineHeight="48px" tts:bpd="96px"> the woods are <span tts:display="inlineBlock" tts:bpd="36px">getting green</span> ... </p> |
tts:color 属性用于指定一个样式属性,该属性
定义与由流入区域的内容生成的区域关联的标记的前景颜色。
| 值: | <color> |
| 初始值: | 见说明 |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous |
| 语义基础: | 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"> In spring, when woods are <span tts:color="green">getting green</span>,<br/> I'll try and tell you what I mean. </p> |
![]() |
tts:direction 属性用于指定一个样式属性,该属性根据
使用上下文,
决定 (1) 双向段落级别,或 (2) 双向
嵌入或覆盖的方向性,
相关内容见 [UAX9]。
| 值: |
"ltr" |
"rtl"
|
| 初始值: |
ltr
|
| 适用于: |
p,
span
|
| 继承: | 是,但见特殊 语义 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | direction 派生 |
当应用于 p 元素时,此属性的计算值会按照
[UAX9] §4.3 Higher Level Protocol
HL1 的规定,显式建立
段落级别。
当应用于 span 元素(或匿名
span)时,此属性的计算值会与
tts:unicodeBidi 样式属性的计算值结合,按照
[UAX9] §4.3 Higher Level Protocol
HL3 的规定,确定双向嵌入或覆盖的方向性。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用
ltr 值。
以下示例说明 tts:direction 样式。
<p>
The title of the book is
"<span tts:unicodeBidi="embed" tts:direction="rtl">نشاط التدويل، W3C</span>"
</p>
|
|
执行样式解析处理时(见 10.4.4 样式解析
处理),
region 元素
R 上 tts:direction 计算值的解析
按以下有序规则确定,其中第一个适用的规则生效:
如果在 R 上指定了 tts:direction 属性,
则计算值
tts:direction 为指定值;
如果在 R 上指定了 tts:writingMode 属性,
则计算值
tts:direction 是由
R 上 tts:writingMode 的计算值确定的
行内进展方向;
否则,tts:direction 的计算值为初始值。
注:
如上确定的 region 元素上的
tts:direction 计算值,实际上会成为
受region 样式继承语义约束的元素
所继承的 tts:direction 值。
对于任何其他元素 E,其中 E
不是
region 元素,
tts:writingMode 属性的存在与否
不会影响 E 上 tts:direction 计算值的解析。
tts:disparity 属性用于指定要应用的双目视差,
以模拟立体视觉(立体深度)。零视差对应于显示平面;
负值对应于显示平面前方的深度;
正值对应于显示平面后方的深度。
关于视差与感知深度之间关系的详细信息,见 [SMITH]。
| 值: | <length> |
| 初始值: | 0px |
| 适用于: |
region;关于
div 和
p,见
特殊用法
|
| 继承: | 否 |
| 百分比: | 相对于根容器 区域的宽度 |
| 可动画化: | discrete; continuous |
| 语义基础: | disparity 派生 |
在立体图像对的右(左)图像上渲染 region 时,region 的中心
沿水平轴偏移一个等于
tts:disparity 计算值的 ½(-½)的值,其中正偏移向右,
负偏移向左。
除非渲染到立体图像对上,否则为了呈现处理的目的会忽略
tts:disparity 属性。
作者应确保在 region 可见的整个期间,该 region 的感知深度位于 场景中任何对象的前方。如果场景中的某个对象被感知为位于该 region 前方, 则立体效果将被破坏。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算视差与受支持视差之间的欧几里得距离 最小的值。如果存在多个与 计算值等距的最接近受支持值,则使用距离 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">
Stereoscopic
</p>
|
![]() |
当在 div 或
p 上例外指定
tts:disparity 时,适用
11.1.2.1 行内动画的特殊
语义。
tts:display 属性用于指定一个样式属性,该属性
定义元素是否是在 region 中进行布局和合成的候选项。
| 值: |
"auto" |
"none" |
"inlineBlock"
|
| 初始值: |
auto
|
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | display 派生 |
如果此属性的值为 auto,
则受影响元素是 region 布局和
呈现的候选项;但是,如果该值为 none,则
受影响元素及其后代必须被视为不具备 region
布局和呈现资格。
如果此属性的值为 inlineBlock,并且此属性应用于
span 元素,则
适用行内块显示语义,并且该元素
是 region 布局和呈现的候选项。此外,如果
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"/>
Beautiful soup,
</span>
<span tts:display="none">
<set begin="2s" dur="1s" tts:display="auto"/>
so rich and green,
</span>
<span tts:display="none">
<set begin="3s" dur="1s" tts:display="auto"/>
waiting in a hot tureen!
</span>
]]]
</p>
</div>
|
|
|
|
|
|
tts:displayAlign 属性用于指定一个样式属性,该属性
定义块进展方向上块区域的对齐。
| 值: |
"before" |
"center" |
"after" |
"justify"
|
| 初始值: |
before
|
| 适用于: |
body,
div,
p,
region
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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">I sent a message to the fish:</p>
<p region="r2">I told them<br/> "This is what I wish."</p>
<p region="r3">The little fishes of the sea,</p>
<p region="r4">They sent an<br/> answer back to me.</p>
</div>
|
![]() |
tts:extent 属性可用于以下目的:
注:
如果对 region 应用了 border 或 padding 中任一者(或二者), 则该 region 的 extent 包含该 border 和 padding, 即 border 和 padding 都作为内嵌应用,因此位于 region 的 extent 内部。
| 值: | <extent> |
| 初始值: | auto |
| 适用于: |
tt,
region,
image;关于
div 和
p,见
特殊用法
|
| 继承: | 否 |
| 百分比: | 相对于根 容器区域的宽度和高度 |
| 可动画化: | discrete |
| 语义基础: | extent 派生 |
如果在 tt 元素上指定了
tts:extent 属性,
则指定值限制为以下之一:
(1) auto 关键字,
(2) contain 关键字,或
(3) 两个 <length> 规范,
其中这些规范表示为使用像素单位的非百分比、确定长度。
所有其他语法上合法的值不得在此上下文中使用,并且
如果使用,则为了验证处理的目的必须被视为错误,
并且为了呈现处理的目的必须被忽略,在这种情况下适用初始值
(auto)。
如果在 region 元素上指定了
tts:extent 属性,
则其计算值决定关联内容 region的
width 和 height。
如果在 image 元素上指定了
tts:extent 属性,则其计算
值决定该图像的 width 和
height。
如果在 div 或 p 元素上指定了
tts:extent 属性,则适用
10.2.16.1 Extent 的特殊用法
指定的语义。
如果此属性的值为 auto,则其关联属性的计算值
按如下方式确定:
如果该属性适用于
tt 元素,则
auto 解释为就像指定了值 contain
一样;
如果该属性直接或间接适用于
region 元素,则
auto 解释为就像指定了值
“100% 100%” 一样;
如果该属性适用于
image 元素,则
auto
解释为就像使用两个基于像素的
<length> 分量指定了等于图像固有 extent 的值一样,
例如 “200px 100px”。
注:
此属性允许由单个关键字 "auto" 组成的值,以及
另一个由两个关键字 "auto auto" 组成的值。这两个不同的
值具有不同含义且并不等价。
特别是,单个关键字值 "auto" 具有上文紧接描述的语义;
但是,两个关键字值
"auto auto" 由两个 <measure>
表达式组成,每个表达式都使用
<measure> 关键字 auto,
其定义见
10.3.24 <measure>。
如果此属性的值为 contain,则其关联属性的计算值
按如下方式确定:
如果该属性适用于 region
元素,
则计算值通过执行
[compute containment
scaling] 过程确定,
其中目标矩形 TR 被初始化为
region 内容的固有块内容 extent,
参考矩形 RR 被设置为根容器区域的 extent,
并且目标矩形 TR 的所得输出值即为计算
值;
如果该属性适用于
image 元素,
则计算值通过执行
[compute containment
scaling] 过程确定,
其中目标矩形 TR 被初始化为图像的
固有图像 extent,
参考矩形 RR 根据当前格式化上下文分别是块格式化
上下文还是行内格式化上下文,
被设置为包含块区域或行区域中的可用内容空间,
并且目标矩形 TR 的所得输出值即为计算
值。
如果此属性的值为 cover,则其关联属性的计算值
按如下方式确定:
如果该属性适用于 region
元素,
则计算值通过执行
[compute cover
scaling] 过程确定,
其中目标矩形 TR 被初始化为
region 内容的固有块内容 extent,
参考矩形 RR 被设置为根容器区域的 extent,
并且目标矩形 TR 的所得输出值即为计算
值;
如果该属性适用于
image 元素,
则计算值通过执行
[compute cover
scaling] 过程确定,
其中目标矩形 TR 被初始化为图像的
固有图像 extent,
参考矩形 RR 根据当前格式化上下文分别是块格式化
上下文还是行内格式化上下文,
被设置为包含块区域或行区域中的可用内容空间,
并且目标矩形 TR 的所得输出值即为计算
值。
如果此属性的值由两个 <measure> 规范组成,则它们必须解释为 width 和 height, 其中第一个规范是 width,第二个规范是 height, 在这种情况下,两个 <measure> 规范都必须解析(或可解析)为非负长度。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的 extent 与受支持的 extent 之间的欧几里得距离 最小的值。如果存在多个与 计算值等距的最接近受支持值,则使用离 [0,0] 最远的值, 即 extent 最大的值。
此用于解析 最接近的受支持值 的规则使用最近较大的 受支持距离,而不是最近较小的受支持距离。 这种处理差异的理由是, 使用较大的 extent 能确保受影响内容包含在 region 区域中而不会导致 region 溢出, 而使用较小的 extent 更可能造成 region 溢出。
以下示例说明 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">
'Tis the voice of the Lobster:<br/>
I heard him declare,<br/>
"You have baked me too brown,<br/>
I must sugar my hair."
</p>
|
![]() |
当在 div 或
p 上例外指定
tts:extent 时,适用
11.1.2.1 行内动画的特殊
语义。
tts:fontFamily 属性は、region に流し込まれたコンテンツによって
生成されるグリフ
領域について、グリフが選択されるフォントファミリーを定義する
スタイルプロパティを指定するために使用される。
| 値: | <font-families> |
| 初期値: | default |
| 適用対象: |
span
|
| 継承: | はい |
| パーセント値: | 該当なし |
| アニメーション可能: | discrete |
| セマンティック基礎: | fontFamily の導出 |
注:
初期値 default は汎用フォントファミリー名であり、
下記の 10.3.19
<generic-family-name> でさらに説明される。
span に適用されることに加えて、
p 要素上のこのプロパティの算出値は、
10.2.27 tts:lineHeight で規定されるように、
tts:lineHeight 属性に関連付けられた
スタイルプロパティの normal 値を解決するために使用される。
この属性に関連付けられたプロパティの算出値がサポートされない場合、
提示プロセッサは、算出されたフォントファミリーを
類似の組版特性を持つサポート済みフォントファミリーに対応付けることを試みなければならず、
そのような対応付けがない場合は値 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> "The time has come," the Walrus said,<br/> "to talk of many things: </p> <p tts:textAlign="end" tts:fontFamily="monospaceSerif"> Of shoes, and ships, and sealing wax,<br/> Of cabbages and kings, </p> <p> And why the sea is boiling hot,<br/> and whether pigs have wings." </p> </div> |
![]() |
tts:fontKerning 属性は、
グリフ
領域を位置決めするときにフォントカーニングが適用されるかどうかを決定する
スタイルプロパティを指定するために使用される。
| 値: |
"none" |
"normal"
|
| 初期値: | normal |
| 適用対象: |
span
|
| 継承: | はい |
| パーセント値: | 該当なし |
| アニメーション可能: | discrete |
| セマンティック基礎: | fontKerning の導出 |
この属性の値が normal である場合、カーニングデータが利用可能であれば
カーニングが適用されるべきである。
この属性の値が none である場合、カーニングデータが利用可能かどうかに
かかわらずカーニングは適用されるべきではない。
この属性に関連付けられたプロパティの算出値がサポートされない場合、
提示プロセッサは値
normal を使用しなければならない。
tts:fontKerning スタイルを次の
例に示す。
<p>
WAVE<br/>
<span tts:fontKerning="none">WAVE</span>
</p>
|
![]() |
tts:fontSelectionStrategy 属性は、提示処理中に可能なフォントのリストから
フォントを選択するときに適用される戦略を決定するスタイルプロパティを
指定するために使用される。
| 値: |
"auto" |
"character"
|
| 初期値: | auto |
| 適用対象: |
span
|
| 継承: | はい |
| パーセント値: | 該当なし |
| アニメーション可能: | discrete |
| セマンティック基礎: | fontSelectionStrategy の導出 |
このプロパティの提示セマンティクスは、[XSL-FO 1.1] §7.9.3 で定義されるものであり、 選択基準の集合は次のプロパティを含むように拡張される。
フォント選択基準を満たすフォントリソースから選択する場合、
font 要素によって参照される
フォントリソースは、アプリケーションまたはシステムによって供給される
フォントリソースよりも優先される。
この属性に関連付けられたプロパティの算出値がサポートされない場合、
提示プロセッサは値
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
|
| 継承: | はい |
| パーセント値: | 本文参照 |
| アニメーション可能: | discrete |
| セマンティック基礎: | fontShear の導出 |
この属性が適用される各グリフ領域について、 10.4.5.3 せん断計算で 規定されるように、グリフ領域に 2D せん断変換を適用する。
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 属性は、region に流し込まれたコンテンツによって
生成されるグリフ
領域について、選択されるグリフのフォントサイズを定義する
スタイルプロパティを指定するために使用される。
| 値: | <font-size> |
| 初期値: | 1c |
| 適用対象: |
span
|
| 継承: | はい。ただし 10.2.21.1 フォントサイズの特別なセマンティクス を除く |
| パーセント値: | region 要素でない場合、
最も近い祖先スタイル付き
要素の算出フォントサイズに相対的。そうでなければ
算出セルサイズに相対的
|
| アニメーション可能: | discrete |
| セマンティック基礎: | fontSize の導出 |
単一の <length> 値が指定される場合、この長さは グリフの EM 正方形の水平サイズおよび垂直サイズを等しく決定する。 2 つの <length> 値が指定される場合、第 1 の値は 水平サイズを決定し、第 2 の値は垂直サイズを決定する。
水平サイズおよび垂直サイズが独立して表される場合、 <length> 値の単位は同じでなければならない。
注:
グリフの EM 正方形は、慣例上、そのグリフを含むフォントの EM 正方形として定義される。 すなわち、グリフは、そのフォントの EM 正方形とは別個の EM 正方形を持たない。
この属性に現れる相対
<length> 値、すなわちパーセント(%)、
セル(c)、または EM(em)単位で表される値は、
幅成分と高さ成分の 2 つの成分から構成される参照 2 次元サイズ値に関連して解決される。
相対単位がパーセントである場合、参照値は、最も近いスタイル付き祖先要素の
フォントサイズの算出値、または
算出セルサイズのいずれかである。
相対単位がセル(c)である場合、参照値は
算出セルサイズである。
相対単位が EM(em)である場合、参照値はパーセント単位が
使用されたかのように決定され、ここで 1em は 100% に等しい。
単一の相対 <length> 値が指定される場合、 この <length> は参照値の高さ成分に関して 解決される。 2 つの相対 <length> 値が指定される場合、 第 1 の <length> は参照値の幅成分に関して 解決され、第 2 の <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% に等しい。
注:
たとえば、段落(p)要素 P の子である
span 要素 S を考える。
P 上の tts:fontSize の算出値が (18px,24px) であり、
tts:fontSize="1em" が S 上に指定される場合、
これは 100% を指定することと等価であり、
(24px,24px) に解決される。しかし、tts:fontSize="1em 1em" が
S 上に指定される場合、
これは 100% 100% を指定することと等価であり、(18px,24px) に解決される。
span に適用されることに加えて、
p 要素上のこのプロパティの算出値は、
10.2.27 tts:lineHeight で規定されるように、
tts:lineHeight 属性に関連付けられた
スタイルプロパティの normal 値を解決するために使用される。
この属性に関連付けられたプロパティの算出値がサポートされない場合、 提示プロセッサは、最も近い サポート値を使用しなければならない。
注:
このコンテキストで、句 最も近いサポート値とは、 算出されたフォントサイズとサポートされるフォントサイズとの間のユークリッド距離が 最小化される値を意味する。算出値から等距離にある複数の最も近いサポート値が 存在する場合、0(単一長さ指定)または [0,0](2 つの長さ指定)から 最も遠い値、すなわち最大のフォントサイズが使用される。
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"> Then fill up the glasses<br/> with treacle and ink,<br/> Or anything else<br/> that is <span tts:fontSize="24px">pleasant</span> to drink. </p> |
![]() |
この属性に関連付けられたプロパティの算出値は 2 タプルから構成され、 その項目はそれぞれフォントサイズの幅成分および高さ成分の算出値を表す。
span 要素に適用され、
その tts:ruby の算出値が
textContainer または text のいずれかである場合、
tts:fontSize の算出値を解決するとき、
次の特別な継承規則が適用される。
ルビテキストコンテナは、それが
明示的であるか
暗黙的であるかにかかわらず、
その親から tts:fontSize を
継承しない。
代わりに、それが明示的ルビ
テキストコンテナであり、
tts:fontSize 属性を指定しない場合、
またはそれが
暗黙的ルビテキストコンテナである場合、
最も近い祖先ルビコンテナ上の
tts:fontSize の算出値の 50% に
等しい値が適用される。そうでなければ、指定値が適用される。
span 要素のうち、
tts:ruby の算出値が
text であるものが
tts:fontSize 属性を指定しない場合、
それは親の
ルビテキストコンテナから
tts:fontSize の算出値を継承する。
それが明示的であるか
暗黙的な
ルビテキストコンテナであるかは問わない。
tts:fontStyle 属性は、region に流し込まれたコンテンツによって
生成されるグリフ領域について選択されるグリフに
適用するフォントスタイルを定義するスタイルプロパティを指定するために使用される。
ここで、フォントスタイル値から特定のフォントフェイスまたはスタイルの
パラメータ化への対応付けは、この仕様によって決定されない。
| 値: |
"normal" |
"italic" |
"oblique"
|
| 初期値: | normal |
| 適用対象: |
span
|
| 継承: | はい |
| パーセント値: | 該当なし |
| アニメーション可能: | discrete |
| セマンティック基礎: | fontStyle の導出 |
値 oblique の使用は、
インライン進行方向における(角度未指定の)せん断変換を表す。
span に適用されることに加えて、
p 要素上のこのプロパティの算出値は、
10.2.27 tts:lineHeight で規定されるように、
tts:lineHeight 属性に関連付けられた
スタイルプロパティの normal 値を解決するために使用される。
この属性に関連付けられたプロパティの算出値がサポートされない場合、
提示プロセッサは値
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">
In autumn, when the leaves are brown,<br/>
Take pen and ink, and <span tts:fontStyle="italic">write it down.</span>
</p>
|
![]() |
tts:fontVariant 属性用于启用排版字形变体的选择。
| 值: | <font-variant> |
| 初始值: | normal |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | fontVariant 派生 |
除适用于 span 外,此属性在
p 元素上的计算值
用于解析与
tts:lineHeight
属性关联的样式属性的 normal 值,如
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"> jumping <span tts:fontVariant="super">up</span> and <span tts:fontVariant="sub">down</span> in an agony of terror. </p> |
![]() |
tts:fontWeight 属性用于指定一个样式属性,
该属性定义要应用于为由流入区域的内容生成的字形区域
所选择字形的字体粗细,其中从字体
粗细值到特定字体字面或粗细参数化的映射
不由本规范确定。
| 值: |
"normal" |
"bold"
|
| 初始值: | normal |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | fontWeight 派生 |
除适用于 span 外,此属性在
p 元素上的计算值
用于解析与
tts:lineHeight
属性关联的样式属性的 normal 值,如
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"> They told me you had been to her,<br/> <span tts:fontWeight="bold">and mentioned me to him:</span><br/> She gave me a good character<br/> <span tts:fontWeight="bold">but said I could not swim.</span> </p> |
![]() |
tts:ipd 属性用于指定
行内进展维度,或更简洁地说,由流入区域的内容生成的区域的 ipd。
注:
术语 行内进展维度 以相对于书写模式的方式解释, 使得 ipd 始终对应于行内 进展方向上的距离。因此,在水平书写模式中,ipd 表达 水平距离, 而在垂直书写模式中,ipd 表达垂直距离, 其中水平和垂直始终按绝对意义解释。
| 值: | <measure> |
| 初始值: | auto |
| 适用于: |
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | 见说明 |
| 可动画化: | discrete |
| 语义基础: | ipd 派生 |
如果 <measure> 表示为 <length> 值,则它必须为非负。
如果在 span 元素上指定了 tts:ipd 属性,
并且适用于该元素的 tts:display 属性的计算值
不是 inlineBlock,
则 tts:ipd 的语义仅在计算任何适用背景颜色或图像的行内进展
维度时适用;
但是,生成区域的内容矩形维度不会改变。
如果在此属性的 <length> 表达式中使用百分比值, 则它相对于生成区域的包含区域 (最近的祖先区域)的适用绝对 维度来解析。
注:
与此属性一起使用的 <length> 表达式 与特定的、相对于书写模式的维度关联,然后根据适用书写模式 解析为绝对维度。 如果该绝对维度是水平(垂直)维度, 则百分比值按参考区域(最近的祖先区域)的相同水平(垂直) 绝对维度解析。
以下示例说明 tts:ipd 样式。
<p tts:fontSize="24px" tts:lineHeight="48px" tts:ipd="300px"> the woods are <span tts:display="inlineBlock" tts:ipd="150px">getting green</span> ... </p> |
tts:letterSpacing 属性用于指定一个样式属性,该属性
增大或减小字形区域之间的标称距离。
字母间距在行区域的开始或结束处没有影响,并且不得 应用于零前进量字形。此外,字母间距不得导致通常相连的 字形, 例如草写文字中使用的字形或草写字体中的字形,变为断开。
字母间距独立于字距调整和两端对齐而应用。根据所使用的 字体、 所呈现的文字,以及呈现处理器的能力,字距调整和 两端对齐中的任一者或二者都可以在字母间距之外同时应用。
| 值: |
"normal" |
<length>
|
| 初始值: | normal |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | letterSpacing 派生 |
值 normal 对应于指定零 (0) 的
<length> 值,
即既不扩展也不压缩相邻字形间距。
如果 <length> 值表示为正标量, 则相邻字形之间的空隙会按等于该 标量值的额外量扩展。 如果表示为负标量, 则相邻字形之间的空隙会按等于该 标量值的额外量压缩,可能导致 字形区域重叠,最大到导致 有效前进量为零 (0) 的量为止。
如果不支持与此属性关联的字母间距计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的字母间距与受支持的字母间距之间的一维欧几里得距离 最小的值。如果对于给定边存在 多个与计算值等距的最接近受支持值,则使用距离 0 最近的值。
以下示例说明
tts:letterSpacing 样式。
<p>
WAVE<br/>
<span tts:letterSpacing="20px">WAVE</span>
</p>
|
![]() |
tts:lineHeight 属性用于指定一个样式属性,该属性
定义由流入区域的内容生成的行区域之间的基线间距。
注:
例外地,token lineHeight 中的术语 height 或短语
line height 指
与关联行区域的 块进展维度 相对应的轴,
在水平书写模式中为垂直轴,
但在垂直书写模式中为水平轴。
注:
与 line height 相关的更多信息参见 11.3.2.2 行堆叠。
| 值: |
"normal" |
<length>
|
| 初始值: | normal |
| 适用于: |
p
|
| 继承: | 是,但见特殊 语义 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | discrete |
| 语义基础: | lineHeight 派生 |
注:
除了显式适用于 p
元素外,由 p 元素的
span 元素和
匿名 span
后代继承的此样式属性值,用于计算其生成的
行内区域的 half leading,
相关内容见 [XSL-FO
1.1] §4.5 和 [CSS2] §10.8.1。
如果此属性的值为 normal,则此样式属性的
使用值按如下方式确定:
令 P 为此样式属性所适用的
p 元素。
令 FF 为 P 的
tts:fontFamily
样式属性的计算值。
令 FS 为 P 的
tts:fontSize 样式属性的计算值。
令 F0 为按顺序将 FF 中每个字体族映射到一组可用字体时
获得的第一个字体,
其中该组可用字体会根据需要受到约束,以满足
P 的
tts:fontStyle、
tts:fontWeight 和
tts:fontVariant
样式属性的计算值。
如果 F0 关联的字体度量指定了高度 A、深度 D 和行间隙 G, 则将 LH 设置为 scaled(A)、scaled(D) 和 scaled(G) 之和, 其中 scaled(X) 表示按照字体大小 FS 缩放的字体度量 X。
注:
这里引用的高度、深度和行间隙参数旨在
分别对应 OpenType [OFF] 字体的
OS/2 表中的 sTypoAscender、
-sTypoDescender,即 sTypoDescender 乘以负一 (-1),
以及 sTypoLineGap 字段
(或其他字体格式中的等价项)。此外,通常而言,
表达式 scaled(A) 和 scaled(D) 旨在分别对应
当关联属性
text-altitude 和 text-depth 使用
use-font-metrics 值时,
[XSL-FO 1.1] 所采用的
text-altitude 和 text-depth
区域特质。
否则,LH 被视为依赖于实现;但是,在没有实现特定要求的情况下, 建议将 LH 设置为 FS 的 125%。
将此样式属性的使用值设置为 LH。
注:
如果内容作者希望避免对
normal 产生不同解释的可能性,例如由于
可用字体集合的差异,则建议使用
<length> 值表达式来显式
指定 line height 值。
本规范的意图是使上述算法与 [XSL-FO 1.1] 和 [CSS2] 兼容。
如果指定为 <length>,则该长度必须 为非负。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的 line height 与受支持的 line height 之间的欧几里得距离 最小的值。如果存在多个与 计算值等距的最接近受支持值,则使用距离 0 最远的值, 即使用最大的 line height。
以下示例说明 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">
He thought he saw an elephant,<br/>
That practised on a fife:<br/>
He looked again, and found it was<br/>
A letter from his wife.<br/>
"At length I realise," he said,<br/>
"The bitterness of Life.
"</p>
|
![]() |
当此属性的指定值为 normal 时,计算值即为
指定值;因此,
在应用继承语义时,值 normal 是继承值。
但是,当此计算值用于执行段落布局时,它会进一步
处理以获得如上所述的
使用值。
tts:lineShear 属性用于指定一个样式属性,该属性
决定是否以及如何对由
p 元素生成的每个
行区域应用剪切变换。
| 值: | <percentage> |
| 初始值: | 0% |
| 适用于: |
p
|
| 继承: | 是 |
| 百分比: | 见说明 |
| 可动画化: | discrete |
| 语义基础: | lineShear 派生 |
对于此属性适用的每个行区域,按照 10.4.5.3 剪切计算的规定,对该 行区域应用 2D 剪切变换。
以下示例说明 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) 由隐含
ruby text container 生成的
行区域的
行内区域子级的边界。
此示例描绘了剪切(倾斜)变换如何作为整体应用于每个受影响的行区域;但是,
当要对一行应用 line shear 时,可分配给该行的可用距离,
即其在剪切变换前的最大行内进展维度
长度,会减少 B*sin(θ),其中
B 是该行区域的块进展维度,
θ 是剪切角,以便将该行放入段落的外部块区域
的内容矩形中。
tts:luminanceGain 属性用于指定 region 的绝对亮度,
当其呈现需要比 [SRGB] 色彩空间所提供的动态范围更大的动态范围,
且该呈现需要绝对亮度值时使用。
注:
[SRGB] 色彩空间指定 80 cd∙m-2 的绝对参考白点 亮度。 因此,在 [SRGB] 空间中指定的颜色无法 可靠地与面向显示器、具有显著 更高峰值亮度的高动态范围(HDR)内容合成,例如使用 [ITU BT.2100-1] 中规定的感知量化器电光 传递函数(PQ EOTF)的内容。具体而言,
| 值: |
<non-negative-number>
|
| 初始值: | 1.0 |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous |
| 语义基础: | luminanceGain 派生 |
与 tts:luminanceGain 属性关联的计算值适用于关联
region 内所有需要从
[SRGB] 颜色值转换为绝对亮度值的像素。生成绝对亮度
像素值的任何要求均派生自文档
处理上下文。
注:
如果处理会生成绝对亮度像素值的图像,例如 符合 [PQ PNG] 的图像,被放置在也包含文本或 处理会生成 [SRGB] 像素值的图像的 region 中,并且要求输出绝对 亮度, 则只会变换 [SRGB] 像素值。
应用 tts:luminanceGain 时,region 的像素各分量的线性光输出值
(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"> The absolute luminance of the text in region one "r1" should be 3.8 times brighter than the absolute luminance of the text in region two "r2". </p> <p region="r2"> Other text with the identity luminance adjustment (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> 中所规定,将渲染的 文档实例的 region 合成到目标媒介上时,通常使用以目标媒介的逆 EOTF 编码的像素分量, 而不是以线性光表示的像素分量。因此,使用半透明 region 可能产生 感知上不同的结果,具体取决于目标 媒介所使用的逆 EOTF,尤其是在渲染的 文档实例的像素与目标媒介之间 存在较大亮度差异时。 因此,鼓励作者考虑涉及半透明 元素的视觉结果。
tts:opacity 属性用于指定一个样式属性,该属性
定义与 region 或由流入区域的内容生成的区域关联的标记的不透明度
(或反之,透明度)。
当呈现到视觉媒介上时,region 的不透明度会以线性比例 均匀应用于定向到该 region 的内容产生的所有标记,在此之前会先将任何内容元素特定的 不透明度应用到该内容生成的区域。
| 值: | <alpha> |
| 初始值: |
1.0
|
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous |
| 语义基础: | opacity 派生 |
以下示例说明 tts:opacity 样式。
<p> <span tts:opacity="1.00">And </span> <span tts:opacity="0.75">then </span> <span tts:opacity="0.50">there </span> <span tts:opacity="0.25">were </span> <span tts:opacity="0.00">none.</span> </p> |
|
tts:origin 属性用于指定
region 区域原点相对于根
容器区域原点的
x 和 y 坐标。
如果在某个元素上同时指定了 tts:origin 和
tts:position 属性,且
tts:position 是受支持属性,
则为了呈现处理的目的,必须忽略 tts:origin
属性。
| 值: | <origin> |
| 初始值: | auto |
| 适用于: |
region;关于
div 和
p,见
特殊用法
|
| 继承: | 否 |
| 百分比: | 相对于根 容器区域的宽度和高度 |
| 可动画化: | discrete |
| 语义基础: | origin 派生 |
如果此属性的值由两个 <length> 规范组成, 则它们必须解释为 x 和 y 坐标,其中第一个 规范是 x 坐标,第二个规范是 y 坐标。
如果此属性的值为 auto,则样式属性的计算值
必须被视为与根容器区域的原点相同。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的 origin 与受支持的 origin 之间的欧几里得距离 最小的值。如果存在多个与 计算值等距的最接近受支持值,则使用距离 [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">
"To dine!" she shrieked in dragon-wrath.<br/>
"To swallow wines all foam and froth!<br/>
To simper at a table-cloth!"
</p>
|
![]() |
当在 div 或
p 上例外指定
tts:origin 时,适用
11.1.2.1 行内动画的特殊
语义。
tts:overflow 属性用于指定一个样式属性,该属性
定义如果 region 的后代区域溢出其 extent,region 区域是否被裁剪。
| 值: |
"visible" |
"hidden"
|
| 初始值: | hidden |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | overflow 派生 |
如果此属性的值为 visible,则内容不应
在受影响 region 之外被裁剪。
如果值为 hidden,则内容应
在受影响 region 之外被裁剪。
注:
由与 region 的内容矩形关联的内容产生的标记可能会渲染在该
内容矩形之外,从而与 region 的 padding 和 border 矩形相交,
且不受
tts:overflow 属性影响。只有当此类标记会
延伸到 region 的 extent 之外时,它们才成为 region
溢出的候选项;该 extent 与 region 的 border 矩形重合,
该 border 矩形包含 region 的
padding 矩形,后者包含 region 的内容矩形。
注:
除非内容作者使用手动换行元素 br,
否则当某个给定 region 的 tts:overflow 和
tts:wrapOption
样式属性的计算值分别为 visible 和 noWrap 时,
该 region 中的段落最多只会生成一个行区域。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
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">
"But wait a bit," the Oysters cried,<br/>
"Before we have our chat;
</p>
<p region="r2" style="s2">
For some of us are out of breath,<br/>
And all of us are fat!"
</p>
</div>
</body>
</tt>
|
![]() |
注:
在上例中,tts:noWrap 被设置为
noWrap,以防止自动换行(断行);
如果未指定这一点,则溢出会发生在块
进展方向,而不是行内进展方向。
tts:padding 属性用于指定 region 或由流入 region 的内容生成的区域
一侧或多侧上的 padding(或内嵌)空间。
注:
Padding 作为内嵌应用于 region 区域,也就是说,region 区域的内容矩形会因 应用于该 region 的 padding 存在而减小。
| 值: | <padding> |
| 初始值: | 0px |
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 否 |
| 百分比: | 见说明 |
| 可动画化: | discrete |
| 语义基础: | padding 派生 |
如果此属性的值由一个 <length> 规范组成, 则该长度适用于受影响区域的所有边。如果该值 由两个 <length> 规范组成,则第一个 适用于 before 和 after 边,第二个适用于 start 和 end 边。 如果提供三个 <length> 规范,则 第一个适用于 before 边,第二个适用于 start 和 end 边,第三个适用于 after 边。 如果提供四个 <length> 规范,则它们 分别适用于 before、end、 after 和 start 边。
注:
百分比值相对于它们所适用的 region 的维度。例如,
如果 before 和 after 边对应
region 的上边和下边,就像 tts:writingMode 等于
"lrtb" 的拉丁文本那样,
则适用于这两条边中任一边的百分比值相对于
region 的高度。相反,如果 before 和 after
边对应 region 的右边和左边,就像 tts:writingMode 等于
"tbrl" 的日文文本那样,则适用于这两条边中任一边的百分比值
相对于 region 的宽度。
用于表达 padding 的 <length> 值必须为 非负。
如果 padding 应用于 span 元素,并且
来自该元素的内容
被分割到多个行区域,则指定的 padding 必须应用于每个换行
边界。相反,
在单个行区域内,如果该元素生成多个行内区域,则
指定的 padding 必须应用于
包含块级元素的行内进展顺序中某行区域内第一个和/或最后一个生成的
行内区域。
注:
span 元素上 padding 的行为
对应于使用 CSS box-decoration-break 属性:
在换行处使用值 clone,在
非终端(即非第一个且非最后一个)行内区域边界处使用值 slice,
如 [CSS Fragmentation] §5.4 所定义。
如果在此属性的 <length> 分量中使用百分比值, 则按如下方式解析:
当应用于 region 元素时,
该百分比相对于 region 已解析 extent 的适用
绝对维度,
除非该维度依赖于该 region 内容的
大小,在这种情况下,该百分比解析为适用初始值的
相应分量;
当应用于所有其他元素时,该百分比相对于最近祖先区域的相应 绝对维度, 除非该维度依赖于该区域内容的 大小,在这种情况下,该百分比解析为适用初始值的 相应分量。
注:
与此属性一起使用的每个 <length> 分量 都与特定的、相对于书写模式的边关联,然后根据适用的书写模式 解析为一个绝对维度。 如果该绝对维度是水平(垂直)维度, 则百分比值按参考区域(根容器区域或最近祖先区域)的相同水平(垂直) 绝对维度解析。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的 padding 与受支持的 padding 之间的一维欧几里得距离 在每条边上最小的值。如果对于给定边,存在多个与 计算值等距的最接近受支持值,则使用距离 0 最近的值, 即最小 padding。
以下示例说明 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">
Just the place for a Snark! I have said it twice:<br/>
That alone should encourage the crew.<br/>
Just the place for a Snark! I have said it thrice:<br/>
What I tell you three times is true.
</p>
|
当渲染 padding 所适用的区域时,适用于该区域的背景颜色会 渲染到该区域的 padded 部分中。
|
注:
上例展示 padding 如何作为内嵌应用于 region 区域。具体而言,
10px 的 padding 应用于 before(上)和 after(下)边,
40px 的 padding 应用于 start(左)和 end(右)边。
从 region 区域的 extent 中减去
这些值后,region 的内容矩形宽度为
366px,
高度为 84px。region 的黑色背景颜色出现在
region 的 padding 矩形中,
而段落的红色背景颜色出现在 region 的内容矩形中。
<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">
The crew was complete: it included a Boots--<br/>
A maker of Bonnets and Hoods--
</span>
</p>
|
当渲染 padding 所适用的 span 时,padding 会独立应用于每个生成的行区域。
|
tts:position 属性用作另一种方式,用于指定
region 区域相对于定位矩形的位置。
如果在某个元素上同时指定了 tts:position 和
tts:origin 属性,且 tts:position
是受支持属性,
则为了呈现处理的目的,必须忽略 tts:origin
属性。
| 值: | <position> |
| 初始值: | top left |
| 适用于: |
region;关于
div 和
p,见
特殊用法
|
| 继承: | 否 |
| 百分比: | 见说明 |
| 可动画化: | discrete; continuous |
| 语义基础: | position 派生 |
水平位置偏移的百分比值分量,相对于 定位矩形的宽度减去关联 region 的宽度。 垂直位置偏移的百分比值分量,相对于 定位矩形的高度减去关联 region 的高度。
下图描绘了位置值 "75% 50%",其中虚线矩形 表示定位矩形, 实线矩形表示正在定位的 region。在此情况下,region 被定位为: 位于其宽度 75% 处的垂直线与 位于定位矩形宽度 75% 处的垂直线重合,并且 位于其高度 50% 处的水平线与 位于定位区域宽度 50% 处的垂直线重合。
|
如果指定在 region 元素上,则
定位矩形对应于根容器区域的内容矩形。
如果不支持与此属性关联的属性计算值, 则呈现处理器必须使用最接近的 受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示 使计算出的位置与受支持的位置之间的欧几里得距离 最小的值。如果存在多个与 计算值等距的最接近受支持值,则使用距离 [0,0] 最近的值, 即最接近坐标空间位置的值。
以下示例说明 tts:position 样式,它将某个
region 定位为:
在水平维度中居中,并且其底边在垂直维度上
位于定位矩形底部上方 10% 处,
其中该偏移等于定位矩形高度与 region 高度之差的 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">
"To dine!" she shrieked in dragon-wrath.<br/>
"To swallow wines all foam and froth!<br/>
To simper at a table-cloth!"
</p>
|
![]() |
当在 div 或
p 上例外指定
tts:position 时,适用
11.1.2.1 行内动画的特殊
语义。
tts:ruby 属性用于指定 ruby
样式的应用。
| 值: |
"none" |
"container" |
"base" |
"baseContainer" |
"text" |
"textContainer" |
"delimiter"
|
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | none |
| 语义基础: | ruby 派生 |
如果此属性的值为 none,则不应用 ruby 语义;否则,
适用由
表 10-1 – Ruby 语义映射 枚举的 ruby 语义。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
none。
| 类别 | tts:ruby | 标注 [Ruby] | CSS display [CSS Ruby] |
|---|---|---|---|
| ruby container | container |
ruby |
ruby |
| ruby base content | base |
rb |
ruby-base |
| ruby text content | text |
rt |
ruby-text |
| ruby base container | baseContainer |
rbc |
ruby-base-container |
| ruby text container | textContainer |
rtc |
ruby-text-container |
| ruby fallback delimiter | delimiter |
rp |
none | inline |
为了呈现处理的目的,文档处理上下文确定呈现模式:normal 或 fallback。 当执行 ruby 文本标注的 normal 呈现处理时,delimiter 内容不得 生成任何行内区域。 当执行 ruby 的 fallback 呈现时,delimiter 和非 delimiter ruby(base 和 text)内容都必须生成 normal 行内区域。 如果呈现处理器不支持 ruby 呈现,则它必须执行 fallback ruby 呈现。
使用 tts:ruby 时,以下嵌套约束适用于 ruby
container,也就是说,
如果 span 元素的 tts:ruby 计算值为
container,
则:
其所有祖先元素的 tts:ruby 计算值为
none;
其每个子元素的 tts:ruby 计算值不为
none;
其第一个子元素的 tts:ruby 计算值为
baseContainer
或 base;
其每个文本节点子级仅包含 <lwsp>;
使用 tts:ruby 时,以下嵌套约束适用于 ruby base
container,也就是说,
如果 span 元素的 tts:ruby 计算值为
baseContainer,
则:
其父元素的 tts:ruby 计算值为
container;
其每个子元素的 tts:ruby 计算值不为
none;
其第一个子元素的 tts:ruby 计算值为
base;
其前一个兄弟为 null(即没有前一个兄弟);
其每个文本节点子级仅包含 <lwsp>;
使用 tts:ruby 时,以下嵌套约束适用于 ruby text
container,也就是说,
如果 span 元素的 tts:ruby 计算值为
textContainer,
则:
其父元素的 tts:ruby 计算值为
container;
其每个子元素的 tts:ruby 计算值不为
none;
其第一个子元素的 tts:ruby 计算值为
text 或 delimiter;
其前一个兄弟的 tts:ruby 计算值为
baseContainer 或
textContainer;
其兄弟中不超过一个的 tts:ruby 计算值为
textContainer;
其每个文本节点子级仅包含 <lwsp>;
使用 tts:ruby 时,以下嵌套约束适用于 ruby base
content,也就是说,
如果 span 元素的 tts:ruby 计算值为
base,则:
其父元素的 tts:ruby 计算值为
container 或
baseContainer;
其前一个兄弟为 null(即没有前一个兄弟),或者
其前一个兄弟的 tts:ruby 计算值为 base;
如果其父元素的 tts:ruby 计算值为
container,
则没有任何兄弟的 tts:ruby 计算值为 base;
没有任何后代元素的 tts:ruby 计算值不为
none;
其任何后代元素都不是 br
元素;
其每个文本节点后代都不包含 U+2028(LINE SEPARATOR)或 U+2029 (PARAGRAPH SEPARATOR);
使用 tts:ruby 时,以下嵌套约束适用于 ruby text
content,也就是说,
如果 span 元素的 tts:ruby 计算值为
text,则:
其父元素的 tts:ruby 计算值为
container 或
textContainer;
其前一个兄弟为 null(即没有前一个兄弟),或者
其前一个兄弟的 tts:ruby 计算值为 base、
text 或 delimiter;
如果其父元素的 tts:ruby 计算值为
container,
则没有任何兄弟的 tts:ruby 计算值为 text;
没有任何后代元素的 tts:ruby 计算值不为
none;
其任何后代元素都不是 br
元素;
其每个文本节点后代都不包含 U+2028(LINE SEPARATOR)或 U+2029 (PARAGRAPH SEPARATOR);
使用 tts:ruby 时,以下嵌套约束适用于 ruby
fallback delimiter,也就是说,
如果 span 元素的 tts:ruby 计算值为
delimiter,
则:
其父元素的 tts:ruby 计算值为
container 或 textContainer;
其前一个兄弟为 null(即没有前一个兄弟),或者
其前一个兄弟的 tts:ruby 计算值为 base 或
text;
恰好一个兄弟的 tts:ruby 计算值为
delimiter;
如果 tts:ruby 的计算值为 delimiter,则
没有任何后代元素的 tts:ruby 计算值不为
none;
其任何后代元素都不是 br
元素;
其每个文本节点后代都不包含 U+2028(LINE SEPARATOR)或 U+2029 (PARAGRAPH SEPARATOR)。
验证内容处理器必须将违反
上述任一约束视为错误。
为了呈现处理的目的,违反任何这些约束应导致 ruby 文本标注的 fallback(行内)
呈现,并且,对于违反某项约束的内容,如果该
内容是
br 元素,或 U+2028(LINE SEPARATOR)或
U+2029(PARAGRAPH SEPARATOR)字符,
则应将其映射为 U+0020(SPACE)字符;或者,如果是其他内容,则忽略
(不呈现)。
注:
上面列出的约束旨在解释为指定以下 嵌套模型:
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] §2.1 中定义的 ruby 元素的最大内容模型,
但有一个例外:rtc 被有效扩展为允许可选使用
delimiter(rp):
ruby : rb rt | rb rp rt rp | rbc rtc rtc? rbc : rb+ rtc : rt+ | rp rt+ rp // extension to [Ruby]
此外,此模型与 [Ruby] §2.6 关于 不支持嵌套 ruby containers 的约束一致(相关内容见上面的嵌套约束)。
注:
虽然不支持 [HTML 5.2] 允许的那么多标记最小化机会, 但此处定义的 ruby 标注形式确实允许以下简写:
base text =
baseContainer
base
textContainer
text
base delimiter text delimiter =
baseContainer
base
textContainer
delimiter text delimiter
给定 base 的内容为 B,text 的内容为 T,
则表达式 base text 可在
[HTML 5.2] 中以如下多种方式表示:
<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 的语法允许在同一个 ruby container 中,在 ruby base container 内使用多个 ruby base content,并在 ruby text container 内使用多个 ruby text content。当同一个 ruby container 中 ruby text content 的数量不等于 ruby base content 的数量时, 此版本 TTML 将 ruby base content 与 ruby text content 之间的映射留为未定义。
注:
当通过对 ruby text container 或 ruby text content 执行呈现处理而生成 行内区域时,则该行内区域的父级为(成为其后代) 包含与该 ruby text content 关联的 ruby base content 的 行区域。
以下示例说明使用 tts:ruby 指定简单 ruby 标注。
<span tts:ruby="container" tts:rubyAlign="spaceAround"> <span tts:ruby="base">利用許諾</span> <span tts:ruby="text">ライセンス</span> </span> |
![]() |
以下示例说明使用 tts:ruby 指定双侧 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 由于缺乏市场需求,不支持 ruby 标注的字符间定位模式, 例如与 bopomofo 字符一起使用的模式。
当标注使用拉丁字符时,也可以使用 tts:ruby 属性,
例如 [CLREQ] 所描述的拼音,
如以下示例所示。
<p> <span tts:ruby="container" tts:rubyAlign="center"> <span tts:ruby="base">周杰伦</span><span tts:ruby="text">Jay Chou</span> </span> |
![]() |
在没有实现特定要求的情况下,ruby text content 与 ruby base content 之间可能导致行区域溢出的对齐约束 应通过将 ruby text content 从行区域的 start 或 end 边移开来解决。
注:
更多信息参见 [JLREQ] §3.3.8,Adjustments of Ruby with Length Longer than that of the Base Characters, 以及 [CSS Ruby] §5,Edge Effects。
在没有实现特定要求的情况下,只有当 base 文本属于 [JLREQ] 附录 A Character Classes 所定义的以下任一字符类别时, 才应允许 ruby text content 悬挂在 ruby base content 之外:
hiragana
ideographic
punctuationMarks
注:
更多信息参见 [JLREQ] §3.3.8,Adjustments of Ruby with Length Longer than that of the Base Characters。
执行呈现处理时, 孤立 ruby 内容, 即,分别在没有指定 ruby base container 或 ruby text container 的情况下指定的 ruby base content 或 ruby text content, 会以这样一种方式处理,即按要求隐含存在匿名 ruby base container 和(或)匿名 ruby text container。 为了生成并应用隐含或集合式样式语义,需要 隐含 ruby base container 和(或) 隐含 ruby text container 到一个行内块区域,该区域包含 孤立 ruby 内容所生成的行内区域。
显式指定的 span 元素,其
tts:ruby 计算值为 baseContainer,
称为
显式 ruby base
container;
同样,显式指定的 span
元素,其
tts:ruby 计算值为
textContainer,称为
显式 ruby text
container。
tts:rubyAlign 属性用于指定 ruby 文本在
ruby text
container 标注所生成的行内区域中的位置。
| 值: |
"start" |
"center" |
"end" |
"spaceAround" |
"spaceBetween" |
"withBase"
|
| 初始值: | center |
| 适用于: |
span,仅当
tts:ruby 的计算值为 container 时
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | rubyAlign 派生 |
当此属性指定在
span 元素上,且该元素的
tts:ruby 计算值为
container 时,则关联样式属性的 ruby 对齐语义会
集合式地应用于由
容器的组成 ruby containers 和 ruby
内容生成的行内区域。
注:
将 ruby 对齐作为整体应用于 ruby container 的一个结果是,应用于 该 container 及其组成部分的 ruby 对齐是统一的(不变化)。
令 IR 和 IB 分别为由 (1) ruby text container 或 ruby text annotation 和 (2) 关联的 ruby base container 或 ruby base 生成的行内区域。进一步地,令 NR 和 NB 分别为这些 行内区域的字形区域后代数量。
如果此属性的值为 start,则
IR 的第一个字形区域后代的 start 边
与该行内区域的 start 边对齐。
如果值为 center,则多余空白
分别平均分布在第一个和最后一个 ruby 标注字形区域之前和之后。
如果此属性的值为 end,则
IR 的第一个字形区域后代的 end 边
与该行内区域的 end 边对齐。
如果值为 spaceBetween,则多余空白
在每个 ruby 标注字形区域之间平均分布。
如果值为 spaceAround,则多余空白
在每个 ruby 标注字形区域后代之前和之后平均分布。
如果此属性的值为 withBase,则如果 NR 和
NB 相等,
IR 的第 ith 个
字形区域后代 与
IB 的第 ith
个字形区域后代(水平或垂直)居中对齐;
否则(ruby 与 base 的字形区域数量
不相等),适用 center 的语义。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
center。
注:
在本规范中,假定定时文本应用中的 ruby 标注较窄,
因为呈现空间和可用时间
通常受限。因此,此版本 TTML 不允许作者控制
当 ruby 标注宽于其 base 文本时空白如何分布。
对于行的 start 或 end 边处的宽 ruby 标注,这可能会带来问题。为了
避免问题,鼓励作者使用合适的
tts:rubyAlign 值,和/或将包含宽
ruby 标注的事件拆分为多行,甚至拆分为多个事件。
以下示例说明 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 属性用于指定 ruby 文本在块进展维度中
相对于其关联 ruby base 的位置。
| 值: |
<annotation-position>
|
| 初始值: | outside |
| 适用于: |
span,仅当
tts:ruby 的计算值为
textContainer 或 text 时
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | rubyPosition 派生 |
与此属性关联的样式属性确定 由 ruby text containers 和 ruby text annotations 生成的行内区域 相对于其关联 base text containers 和 base text 的相对定位, 其中适用 <annotation-position> 的方向语义。
当此属性指定在
span 元素上,且该元素的
tts:ruby 计算值为
textContainer 时,则关联样式属性的 ruby position 语义
集合式地应用于由
显式 ruby text container 及其组成
ruby text content 生成的行内区域。
当此属性指定在
span 元素上,且该元素的
tts:ruby 计算值为
text 时,则关联样式属性的 ruby position 语义
集合式地应用于由其
隐含 ruby text container 及其自己的
ruby text content 生成的行内区域。
不得在
span 元素上指定此属性,如果该元素的
tts:ruby 计算值为
text,且该 span 元素的父元素是一个
span 元素,其
tts:ruby 计算值为 textContainer。
如果指定(在前者 ruby text content 上),
则被视为错误,
并且为了呈现处理的目的必须忽略。
ruby text container
或 ruby text annotation 的绝对位置,按照
受影响内容放置到其中的 region 的
tts:writingMode 样式属性的计算值确定;
具体而言,适用由
表 10-2 – 按书写模式映射的绝对 Ruby Position
语义 枚举定义的映射,并由
[CSS Ruby] §4.1 进一步定义。
如果两个 ruby text containers 适用于同一个 ruby base container,则如果 与此属性关联的属性使用值会导致 两个 ruby text containers 被放置在 ruby base container 的同一相对侧, 则被视为错误,在这种情况下, 此属性的呈现语义不由本规范定义。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
before。
| tts:rubyPosition | lrtb |
rltb |
tbrl |
tblr |
|---|---|---|---|---|
before |
over |
over |
right |
left |
after |
under |
under |
left |
right |
注:
当使用以竖排自左向右行排版的蒙古文字时,可能希望
赋给 ruby position 的初始值为 after,
而不是 outside,后者会在所有非最后行中解析为
before。在
此情况下,作者可以通过在文档的 styling
元素中包含
<initial tts:rubyPosition="after"/> 元素来重新定义此属性的默认初始值。
以下示例说明 tts:rubyPosition 样式,
并展示
ruby position 的解析如何依赖于书写模式。注意,该示例使用
[JLREQ] 中定义的 mono ruby。
<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 属性用于指定要应用到受影响行区域的额外空间,
以便在块进展维度中保留足够空间,用于容纳放置在行区域边界内的
ruby text containers
所生成的行内区域。
注:
作者可以使用 tts:rubyReserve 属性,以确保
块区域中连续行区域的基线保持固定位置,
而不受 ruby 文本标注存在与否的影响。
| 值: | <ruby-reserve> |
| 初始值: | none |
| 适用于: |
p
|
| 继承: | 是 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | discrete |
| 语义基础: | rubyReserve 派生 |
如果此属性的值为 none,则不应用 ruby 空间保留;
否则,此属性的值指定一个
position 分量,后跟一个可选 length 分量。
如果 position 分量为 before,则受影响行区域的 before leading
会按 length 分量的
使用值 所确定的量增加。
如果 position 分量为 after,则受影响行区域的 after leading
会按 length 分量的
使用值 所确定的量增加。
如果 position 分量为 both,则
before 和 after 位置的语义都适用于
每个受影响的行区域。
如果 position 分量为 outside,则如果当前块区域
恰好包含一个行区域,则适用 both 位置;
否则,before 位置的语义适用于当前块区域的第一个行区域,
而 after 位置的语义适用于当前块区域的所有其他行区域。
length 分量用于间接确定受影响行区域的 before 和 after leading
要增加的量。length 分量的计算值被视为表达了假设
ruby text content 实际存在于
p 元素中时,与该假设内容的
tts:fontSize 属性关联的样式属性计算值。
如果未指定 length 分量,则必须认为它等于假设
ruby text container 或
ruby text content 实际存在于
p 元素中时将继承的、与
tts:fontSize 属性关联的
样式属性值,其中为了计算此继承值,适用
10.2.21.1 Font
Size 的特殊语义。
如果指定了 <length> 分量,则它必须为 非负。
如果在包含
ruby text content 的
p 元素上指定了 tts:rubyReserve,
则保留的 leading 会按上文所示应用到行区域,
然后按需要对这些 leading 进行额外调整,以容纳实际
ruby text content 的存在。
tts:rubyReserve |
无 Ruby 存在 | 有 Ruby 存在 |
|---|---|---|
none |
![]() |
![]() |
before |
![]() |
![]() |
after |
![]() |
![]() |
both |
![]() |
![]() |
outside |
![]() |
![]() |
tts:shear 属性用于指定一个样式属性,该属性
决定是否以及如何对受影响元素生成的最外层块区域应用剪切变换。
| 值: | <percentage> |
| 初始值: | 0% |
| 适用于: |
p
|
| 继承: | 是 |
| 百分比: | 见说明 |
| 可动画化: | discrete |
| 语义基础: | shear 派生 |
对于此属性适用的每个块区域,按照 10.4.5.3 剪切计算的规定,对该 块区域应用 2D 剪切变换。
以下示例说明 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 元素生成的外部块区域;但是,
当要对外部块区域应用 shear 时,
可分配给该块区域的可用距离,
即其在剪切变换前的最大行内进展维度长度,会减少
B*sin(θ),
其中 B 是外部块区域的块进展维度,θ 是
剪切角,以便将该块区域放入段落的直接祖先块区域
的内容矩形中。
tts:showBackground 属性用于指定
region 背景何时意图被呈现的约束。
注:
region 的背景包括由 (1) 背景颜色或 (2) 背景图像 二者之一(或二者)产生的标记, 如果其中任一者适用于该 region。
| 值: |
"always" |
"whenActive"
|
| 初始值: | always |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | showBackground 派生 |
如果某个 region 不是时间上活跃的,则其背景 不会被渲染;但是,如果它是时间上活跃的,则
如果此属性的值为 whenActive,则只有当内容被选择进入该
region,且该内容同样是时间上活跃的时,才渲染该 region 的背景;
否则,如果此属性的值为 always,则无论
内容是否被选择进入该 region,都会渲染该 region 的背景。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
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
|
| 继承: | 见说明 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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"> Beware the Jabberwock, my son!<br/> The jaws that bite, the claws that catch! </p> <p region="r2"> Beware the Jubjub bird, and shun<br/> The frumious Bandersnatch! </p> |
![]() |
注:
由 p 元素生成的最后一个块区域的最后一个行区域的文本对齐,
遵循 [XSL-FO 1.1] §7.16.10 中值为
relative 的 text-align-last 属性语义。
当适用垂直书写模式时,tts:textCombine 属性用于
指定一个样式属性,该属性
决定是否以及如何将多个字符水平组合,使其
字形区域适合周围竖排文本单行的宽度。
如果适用水平书写模式,则为了呈现处理的目的忽略此属性。
组合处理可以使用一种或多种技术,以实现视觉上组合进周围竖排文本 em 方框的目标。 例如,可以选择半角变体形式,可以选择连字,可以应用较小的 字体大小等。支持此样式属性的实现至少必须能够在可用时选择半角变体形式。 如果这些技术都不能沿包含行区域的块进展维度达到目标尺寸, 则如果生效的行堆叠策略允许,可以增大包含行区域的此维度。
| 值: | <text-combine> |
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | textCombine 派生 |
如果此属性的指定值为 none,则不应用组合处理。
如果此属性的指定值为 all,则所有受影响字符都应被组合。
组合会在所有受影响字符已按照适用水平书写模式进行处理之后应用。
特别是,双向处理、连字、字形替换,或 Unicode 组合字符的组合(如果使用)
会先于 tts:textCombine 属性指定的组合处理应用。
组合不得跨越元素边界、双向边界或 非字形区域边界。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
none。
以下示例说明 tts:textCombine 样式。
<p region="tbrlLeft">あい <span tts:textCombine="none">AB34</span>三四 </p> <p region="tbrlCenter">あい <span tts:textCombine="all">AB34</span>三四 </p> |
![]() |
注:
在上例中,对于 tts:textCombine 的 all 值,
呈现处理器选择了受影响字符的半角变体,
但所得宽度大于周围竖排文本的 em 方框,以避免可读性问题,
并且这是 TTML 所允许的。
tts:textDecoration 属性用于指定一个样式属性,该属性
定义要应用于字形区域或其他行内
区域的文本装饰效果,这些区域由流入 region 的内容生成。
| 值: | <text-decoration> |
| 初始值: | none |
| 适用于: | span |
| 继承: | 是,但见特殊 语义 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | textDecoration 派生 |
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
none。
注:
上文用于定义此属性值的语法基于
[CSS2] §1.4.2.1 中定义的值分量语法。本质上,
由 || 分隔的一个或多个值可以按任意顺序出现在属性
值中,例如 "noUnderline overline lineThrough"。
以下示例说明 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"> The sea was wet<span tts:textDecoration="noUnderline"> as </span>wet <span tts:textDecoration="noUnderline"> could be,<br/> The sand was dry as dry.<br/> <span tts:textDecoration="lineThrough">There weren't any</span> You <span tts:textDecoration="lineThrough">couldn't</span> could not see a cloud<br/> Because no cloud was in the sky. </span> </p> |
![]() |
与此属性关联的属性计算值由一个 3 元组组成, 其中每个条目分别表示是否要对受影响文本应用 underline、line through 或 overline 装饰。 此外,在应用继承语义时,这些条目中的每一个都被视为 与其他条目分别继承。
注:
例如,如果适用于 div(division)元素的
tts:textDecoration 计算值
是元组 (noUnderline, lineThrough, overline),并且该 div 的
p(paragraph)元素子级指定
tts:textDecoration="noLineThrough",则
适用于 p 元素的聚合计算值为
(noUnderline, noLineThrough, overline),该值随后
被 p 元素的子级继承。
tts:textEmphasis 属性用于指定一个样式属性,该属性
定义要应用于字形区域或其他行内
区域的文本着重效果,这些区域由流入 region 的内容生成。
| 值: | <text-emphasis> |
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous(仅颜色) |
| 语义基础: | textEmphasis 派生 |
如果未指定 emphasis 样式,
则必须将 emphasis 样式解释为就像指定了 auto 样式一样。
如果未指定 emphasis 颜色,
则必须将 emphasis 颜色解释为就像指定了 current 颜色一样。
如果未指定 emphasis 位置,
则必须将 emphasis 位置解释为就像指定了 outside 位置一样。
注:
当使用以竖排自左向右行排版的蒙古文字时,可能希望
赋给 emphasis 位置的初始值为 after,
而不是 outside,后者会在所有非最后行中解析为
before。在
此情况下,作者可以通过在文档的
styling 元素中包含
<initial tts:textEmphasis="none transparent after"/> 元素来重新定义此属性的默认初始值。
以下示例说明 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 属性用于指定一个样式属性,该属性
定义要应用于由流入 region 的内容生成的字形区域的文本方向,
其中该 region 适用垂直书写模式。
| 值: |
"mixed" |
"sideways" |
"upright"
|
| 初始值: | mixed |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | textOrientation 派生 |
此样式属性的呈现语义仅在适用垂直书写模式时适用; 因此,如果适用水平书写模式,此样式 属性没有效果。
在下文中,与内容字符关联的字形区域
依据它们在垂直书写模式中是否旋转来描述,其中此决定根据
[UTR50] 所确定的每个内容字符的
Vertical_Orientation 作出。
如果此属性的值为 mixed,则旋转的字形区域会 sideways 排版,
非旋转的字形区域会 upright 排版,其中
sideways 表示顺时针旋转 90°,
而 upright 表示不旋转。
如果此属性的值为 sideways,则所有字形区域
都顺时针旋转 90°。
如果此属性的值为 upright,则所有字符都被认为
具有 U 的垂直方向,在这种情况下没有
字形区域会旋转。在这种情况下,
(潜在的)旋转字形区域替换
以及仿射旋转变换的应用
都被禁用,并且所渲染的字形区域
为非旋转形式。
此外,为了双向处理的目的,此值会导致所有
受影响字符被当作强从左到右处理,即被当作
应用了 tts:direction 的 ltr 值和
tts:unicodeBidi 的 override 值。
如果不支持与此属性关联的属性计算值,
则呈现处理器必须使用值
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 属性用于指定一个样式属性,该属性
定义要应用于为由流入 region 的内容生成的字形区域所选择字形的文本轮廓效果。
| 值: | <text-outline> |
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | discrete; continuous(仅颜色) |
| 语义基础: | textOutline 派生 |
此属性的值由一个可选的 <color> 项
后跟一个或两个 <length> 项组成。如果存在
color 项,
则它表示轮廓颜色;如果不存在 color 项,
则适用 tts:color 的计算值。第一个
length 项表示轮廓厚度,第二个 length
项(如果存在)表示模糊半径。
当为轮廓厚度或模糊半径指定相对 <length> 值时, 它会根据所引用字体大小或 计算单元格大小的高度分量解析。
用于表达厚度和模糊半径的 <length> 值必须为非负。
如果未指定模糊半径,即仅存在一个 <length>
项,
则适用 0px 的计算值。
注:
当在 tts:textOutline 值中使用以
cells 表达的 <length> 时,
适用单元格的高度。
例如,如果 text outline thickness 指定为 0.1c,cell resolution
为 20 乘 10,且根容器
区域的 extent 为 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>
How doth the little crocodile<br/>
Improve its shining tail,<br/>
And pour the waters of the Nile<br/>
On every golden scale!<br/>
How cheerfully he seems to grin,<br/>
How neatly spreads his claws,<br/>
And welcomes little fishes in,<br/>
With gently smiling jaws!
</p>
|
![]() |
tts:textShadow 属性用于指定一个样式属性,该属性
定义要应用于为由流入 region 的内容生成的字形区域所选择字形的一个或多个文本阴影装饰。
如果应用多个文本阴影,则它们会在绘制其所适用的 字形区域之前立即按指定顺序绘制。
| 值: | <text-shadow> |
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | 相对于此元素的字体大小 |
| 可动画化: | discrete; continuous(仅颜色) |
| 语义基础: | 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%">
I serve it with greens in those
<span tts:textShadow="10% -20% 5% lime">shadowy scenes,</span><br/>
And I use it for striking a light:</span>
</p>
|
|
tts:unicodeBidi 属性用于指定一个样式属性,该属性
根据 Unicode 双向算法定义显式方向性嵌入、覆盖或隔离。
| 值: |
"normal" |
"embed" |
"bidiOverride" |
"isolate"
|
| 初始值: |
normal
|
| 适用于: |
p,
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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">
Little birds are playing<br/>
Bagpipes on the shore,<br/>
<span tts:unicodeBidi="bidiOverride" tts:direction="rtl">where the tourists snore.</span>
</p>
|
|
tts:visibility 属性用于指定一个样式属性,该属性
定义生成区域在视觉呈现媒介上渲染时是否可见。
| 值: |
"visible" |
"hidden"
|
| 初始值: |
visible
|
| 适用于: |
body,
div,
image,
p,
region,
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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"/> Curiouser </span> <span tts:visibility="hidden"> <set begin="2s" tts:visibility="visible"/> and </span> <span tts:visibility="hidden"> <set begin="3s" tts:visibility="visible"/> curiouser! </span> </p> |
|
|
|
|
tts:wrapOption 属性用于指定一个样式属性,该属性
定义是否在受影响元素的上下文中应用自动换行(断行)。
| 值: |
"wrap" |
"noWrap"
|
| 初始值: | wrap |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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>
I'll tell thee everything I can:<br/>
There's little to relate.<br/>
I saw an aged aged man,<br/>
A-sitting on a gate.
</p>
|
![]() |
tts:writingMode 属性用于指定一个样式属性,该属性
定义为了在 region 区域内堆叠块区域和行内区域而使用的
块进展方向和行内进展方向。
| 值: |
"lrtb" |
"rltb" |
"tbrl" |
"tblr" |
"lr" |
"rl" |
"tb"
|
| 初始值: | lrtb |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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">hello <span xml:lang="ja">みなさん、<br/>こんにちは</span></p> ... </tt> |
![]() |
注:
在此示例中,文本内容的自然语言使用多个
xml:lang 属性标识。虽然
为了演示 tts:writingMode 属性并非技术上必需,
但建议在包含多种自然语言内容的标记中使用显式语言标识。
tts:zIndex 属性用于指定一个样式属性,该属性
定义 region 区域在重叠情况下的前后顺序。
| 值: |
"auto" |
<integer>
|
| 初始值: | auto |
| 适用于: |
region
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete |
| 语义基础: | 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"> I passed by his garden, and marked, with one eye,<br/> How the Owl and the Panther were sharing a pie. </p> <p region="r2"> The Panther took pie-crust, and gravy, and meat,<br/> While the Owl had the dish as its share of the treat. </p> <p region="r3"> When the pie was all finished, the Owl, as a boon,<br/> Was kindly permitted to pocket the spoon: </p> <p region="r4"> While the Panther received knife and fork<br/> with a growl,<br/> And concluded the banquet by... </p> |
![]() |
tta:gain 属性用于指定一个音频样式属性,该属性
决定在指定此属性的元素的活跃持续时间内,应用到适用音频内容的
gain 乘数。
| 值: |
<number>
|
| 初始值: | 1 |
| 适用于: |
audio,
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous |
如果此属性的指定值不包含在区间 [-1,1] 中,
则与此属性关联的属性计算值会被钳制到该有界区间内。
如果与此属性关联的属性计算值为负,则 gain 会设置为 该计算值的绝对值,并应用相位反转。
如果 gain 为 0,则活跃音频内容完全静音。如果 gain 为 1,则活跃
音频内容的振幅不被修改。否则,gain 大于 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 的输出上分别指定了不同的 gain,
使得最终输出为 0.3[0.5(track1) + 0.8(track2)]。
注:
此属性所表示的样式属性语义基于
[WEBAUDIO] §2.7 所定义的语义,其中指定该属性的元素
在音频图中生成一个 GainNode,其 gain
属性具有相同的计算值,并且对于不是音频生成元素的
内容元素,其输入是该元素父元素的音频输出与所有子音频生成元素的组合
(线性求和)音频输出之和;否则,即对于音频生成
元素,其输入是该元素生成的音频。
tta:pan 属性用于指定一个音频样式属性,该属性
决定在指定此属性的元素的活跃持续时间内,应用到适用音频内容的立体声
pan 向量。
| 值: |
<number>
|
| 初始值: | 0 |
| 适用于: |
audio,
body,
div,
p,
span
|
| 继承: | 否 |
| 百分比: | N/A |
| 可动画化: | discrete; continuous |
如果此属性的指定值不包含在区间 [-1,1] 中,
则与此属性关联的属性计算值会被钳制到该有界区间内。
如果与此属性关联的属性计算值为负,则 pan 方向在中心左侧。
如果 pan 值为 0,则活跃音频内容的立体声方向性不被修改;
否则,pan 值为正,
在这种情况下 pan 方向在中心右侧,其中值 -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 的输出上分别指定了不同的 pan,
使得最终输出 pan 为 0.3[0.5(track1) + 0.8(track2)]。
注:
此属性所表示的样式属性语义基于
[WEBAUDIO] §2.21 所定义的语义,其中指定该属性的元素
在音频图中生成一个 StereoPannerNode,其
pan
属性具有相同的计算值,并且对于不是音频生成元素的
内容元素,其输入是该元素父元素的音频输出与所有子音频生成元素的组合
(线性求和)音频输出之和;否则,即对于音频生成
元素,其输入是该元素生成的音频。
tta:pitch 属性用于指定一个音频样式属性,该属性
在受影响内容启用语音合成时决定语音音高。
| 值: |
<pitch>
|
| 初始值: | 0% |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | 相对于输入音频音高 |
| 可动画化: | none |
以下示例说明 tta:pitch 样式。
<p>Apply relative pitch adjustment to <span tta:pitch="+10hz">this</span> word.</p>
|
注:
此属性所表示的样式属性语义派生自
[SSML 1.0] §3.2.4 所定义的语义,其中
会将等价的 prosody
元素应用到 spoken
字符内容,该元素的 pitch 属性等于计算值。
tta:speak 属性用于指定一个音频样式属性,该属性
决定是否为受影响内容启用语音合成,以及如果启用,应应用哪种
语速。
| 值: |
"none" |
"normal" |
"fast" |
"slow"
|
| 初始值: | none |
| 适用于: |
span
|
| 继承: | 是 |
| 百分比: | N/A |
| 可动画化: | none |
如果此属性的值为 none,则受影响内容禁用语音合成。否则,
如果此属性的值为 normal、fast 或 slow,
则分别以 normal、fast 或 slow 语速启用语音合成。
以下示例说明 tta:speak 样式。
<p>Speak <span tta:speak="normal">this</span> word.</p>
|
注:
此属性所表示的样式属性语义派生自
[SSML 1.0] §3.2.4 所定义的语义,其中
会将等价的 prosody
元素应用到 spoken
字符内容,该元素的 rate 属性等于计算值。
样式属性值包括使用以下表达式:
<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> 表达式用于表示文本 标注标记的颜色,例如 ruby 或 emphasis 标记。
<annotation-color> : "current" | <color> |
如果实现无法识别或以其他方式区分 annotation color 值,
则必须将其解释为就像指定了 current 样式一样;因此,支持
文本标注标记的实现必须至少支持 current 值。
<annotation-position> 表达式用于表示文本 标注标记的位置,例如 ruby 或 emphasis 标记。
<annotation-position> : "before" | "after" | "outside" |
before朝向受影响字形区域的 before 边。如果
适用水平书写模式,则这是朝向
字形区域的顶部。如果适用垂直书写模式,
则这是朝向字形区域的右侧或左侧,
取决于
tts:writingMode 分别解析为
tbrl 还是 tblr。
after朝向受影响字形区域的 after 边。如果
适用水平书写模式,则这是朝向
字形区域的底部。如果适用垂直书写模式,
则这是朝向字形区域的左侧或右侧,
取决于
tts:writingMode 分别解析为
tbrl 还是 tblr。
outside对于包含标注文本的
p 元素生成的
(1) 唯一行区域或 (2) 最后一个块区域的第一个行区域,等价于
before;否则等价于 after。
如果实现无法识别或以其他方式区分 annotation position 值,
则必须将其解释为就像指定了 before 位置一样;因此,支持
文本标注标记的实现必须至少支持 before 值。
<border> 表达式用于表示一个或多个边框样式分量表达式。
<border> : <border-thickness> || <border-style> || <border-color> || <border-radii> |
必须至少出现一个边框样式分量,例如值为 none 的
<border-style>
分量。分量顺序不重要。
<border-color> 表达式用于表示一个或多个边框的颜色。
<border-color> : <color> |
<border-radii> 表达式用于表示一个或多个边框的半径。
如果指定了两个 <length> 表达式,则第一个 length 对应于行内进展维度(对内容)或水平方向(对 region)的 四分之一椭圆半径,而第二个 length(如果存在)对应于 块进展维度(对内容)或垂直方向(对 region)的 四分之一椭圆半径;或者,如果只存在一个 length,则解释为就像指定了两个 具有相同值的 length 一样。
<border-style> 表达式用于表示一个或多个边框的样式。
<border-style> : "none" | "dotted" | "dashed" | "solid" | "double" |
dotted、dashed 和 double 的解释
被视为依赖于实现。
如果实现无法识别或以其他方式区分这些 border style 值之一,
则必须将其解释为就像指定了 solid 样式一样;因此,
支持边框的实现必须至少支持 solid 值。
<border-thickness> 表达式用于表示一个或多个边框的厚度。
<border-thickness> : "thin" | "medium" | "thick" | <length> |
thin、medium 和 thick 的解释
被视为依赖于实现;但是,解析后的长度必须遵守以下
约束:thickness(thin) < thickness(medium); thickness(medium) < thickness(thick)。
如果 border thickness 表示为 <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> // valid range: [0,255]
|
当表示 RGB 分量值时,这些值被视为 未预乘 alpha。
为了执行呈现处理,使得非不透明或非透明的 alpha 或不透明度值适用, 合成函数的语义按照组合函数的输入和输出都使用 [SRGB] 颜色空间来定义。
注:
使用 [SRGB] 作为上述合成语义 并不意味着阻止实际处理器出于内部或外部目的使用其他 颜色空间。例如,呈现处理器最终可以 将此处使用的 SRGB 值转换到 YUV 颜色空间,以便在电视设备上呈现。
如果呈现处理器不支持某个特定的、 有效颜色或 alpha 值,则必须将其解释为等于 最接近的受支持值。
注:
在此上下文中,短语 最接近的受支持值 表示
使 RGB 颜色空间中的计算颜色和 alpha 与受支持颜色和 alpha 之间的欧几里得距离
最小的值。如果存在多个与
计算值等距的最接近受支持值,则使用距离不透明黑色
rgba(0,0,0,255) 最近的值,即最接近不透明黑色的值。
<digit> 用于表示整数以及其他类型的数字或 token。
<digit> : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
<emphasis-color> 表达式用于表示文本 emphasis 标记的颜色。
<emphasis-color> : <annotation-color> |
<emphasis-position> 表达式用于表示文本 emphasis 标记的位置。
<emphasis-position> : <annotation-position> |
<emphasis-style> 表达式用于表示文本 emphasis 标记的样式。
<emphasis-style> : "none" | "auto" | ( "filled" | "open" ) || ( "circle" | "dot" | "sesame" ) | <quoted-string> |
文本 emphasis 样式值的语义定义如下:
none无文本 emphasis 标记。
auto如果适用垂直书写模式,则等价于 filled sesame;
否则,等价于 filled circle。
filledEmphasis 标记使用 emphasis 颜色填充。
openEmphasis 标记不填充,即其轮廓使用 emphasis 颜色描边,但不填充。
circleEmphasis 标记是圆形。如果 filled,则等价于 U+25CF '●';如果 open,则 等价于 U+25CB '○'
dotEmphasis 标记是点。如果 filled,则等价于 U+2022 '•';如果 open,则 等价于 U+25E6 '◦'
sesameEmphasis 标记是芝麻点。如果 filled,则等价于 U+FE45 '﹅';如果 open,则 等价于 U+FE46 '﹆'
Emphasis 标记是字符串的第一个字素簇,字符串其余部分被忽略。
如果只指定了 filled 或 open,则分别等价于
filled circle 和 open circle。
如果只指定了 circle、dot 或 sesame,则分别
等价于 filled circle、filled dot 和
filled sesame。
如果实现无法识别或以其他方式区分 emphasis style 值,
则必须将其解释为就像指定了 auto 样式一样;因此,
支持文本 emphasis 标记的实现必须至少支持 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
非终结符值的结果,其中如果某个 identifier 不是第一个
identifier,则在其值之前放置一个
SPACE (U+0020) 字符;
quoted-string 非终结符的语义值是一对
<quoted, content>,
其中 quoted 是布尔值 true,
而 content 是 quoted string 的未加引号内容,即分隔引号之间的
字符序列。
escape 非终结符的语义值是被转义
char 的值;
采用 unquoted-string 形式的 <family-name>,如果
包含一个以两个 - HYPHEN-MINUS (U+002D) 字符开头的
identifier,则必须被视为无效;
采用 unquoted-string 形式的 <family-name>,如果
包含单个 identifier,且该 identifier
(通过大小写敏感比较)匹配某个 <generic-family-name>,则必须解释为
该 <generic-family-name>;
采用 quoted-string 形式的 <family-name>,如果其内容
(未加引号值)匹配(通过大小写敏感比较)某个 <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 字符引用。当需要使用具有语法意义的字符
而不采用其正常语法解释时,可以使用上文指定的反斜杠
(reverse solidus)escape 非终结符对其转义。
使用反斜杠(reverse solidus)escape 非终结符时,上述语法
不会对可被转义的字符施加任何限制,例如
\\[\n\r\f0-9a-f] 是
允许的。如果这些后几种转义之一出现在 <family-name> 表达式中,
那么如果要将其与标准 XSL-FO
或 CSS 解析器一起使用,就需要转换为 {unicode} 转义。
特别是,反斜杠后跟换行会被 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,则除非适用高层协议,
否则不选择下标、上标、全宽、半宽或 ruby
字形变体。
如果适用关键字 super,则选择上标字形变体(如果可用)。
例如,当使用 OpenType 字体渲染时,会启用 OpenType sups 特性。
如果适用关键字 sub,
则选择下标字形变体(如果可用)。
例如,当使用 OpenType 字体渲染时,会启用 OpenType subs 特性。
如果适用关键字 full,则选择全宽字形变体(如果可用)。
例如,当使用 OpenType 字体渲染时,会启用 OpenType fwid 特性。
如果适用关键字 half,
则选择半宽字形变体(如果可用)。
例如,当使用 OpenType 字体渲染时,会启用 OpenType hwid 特性。
如果适用关键字 ruby,则选择 ruby 字形变体(如果可用)。
例如,当使用 OpenType 字体渲染时,会启用 OpenType ruby 特性。
注:
关于 OpenType 字体的定义,见 [OFF]。
如果适用多个变体,则选择满足最大数量适用变体的字形。例如,
如果同时指定 super 和 half 变体,则选择同时被指定为
上标和半宽变体的字形(如果可用)。如果只能满足所请求变体的子集,
并且存在多个可能子集会导致所选变体字形不同,则适用哪个子集被视为
依赖于实现,即由文档
处理上下文确定。
<generic-family-name> 表达式使用一个表示字体族类别的通用 token 来指定字体族。
将 generic family name 解析为具体字体实例被视为 依赖于实现,无论在内容创作还是内容解释的情况下都是如此。
<generic-family-name> : "default" | "monospace" | "sansSerif" | "serif" | "monospaceSansSerif" | "monospaceSerif" | "proportionalSansSerif" | "proportionalSerif" |
generic(font)family name 与实际字体之间的映射不由本规范确定;但是, 在执行呈现时,应尽可能保持 monospace 与 proportional、 serif 与 sans-serif 之间的区别。
如果指定了 monospace 的 generic(font)family name,
则可将其解释为等价于 monospaceSansSerif
或 monospaceSerif。generic family name sansSerif
和 serif 分别解释为等价于 proportionalSansSerif
和 proportionalSerif。
如果指定了 generic family name default(或由
初始值隐含),则其排版特征被视为依赖于实现;
但是,建议将此默认字体族映射到
等宽 sans-serif 字体。
<hex-digit> 用于表示采用 16 进制算术的整数和其他类型的数字或 token。
为了进行解析,不得区分大小写。
<hex-digit> : <digit> | "a" | "b" | "c" | "d" | "e" | "f" | "A" | "B" | "C" | "D" | "E" | "F" |
<integer> 表达式用于表示任意有符号整数值。
<integer> : ( "+" | "-" )? <non-negative-integer> |
<length> 表达式用于表示笛卡尔空间中某个点的坐标分量, 或笛卡尔空间中两个点之间的距离。
<length> : scalar | <percentage> scalar : <number> units units : "px" | "em" | "c" // abbreviation of "cell" | "rw" | "rh" |
省略标量长度值的 units 分量是错误。
单位 px(pixel)对应于
逻辑像素,
属于文档坐标空间,
如 H.3 坐标
空间所定义;但是,
px(pixel)单位不应在
<length> 表达式中使用,
除非在 tt 元素上指定了由两个
使用 px(pixel)单位的
<length> 规范组成的
tts:extent 属性,
否则使用 px(pixel)单位已废弃
当相对于以单个长度或两个相等长度表示大小的字体指定时,
单位 em 被视为与
[XSL-FO 1.1] §5.9.13 定义的相同;
但是,当相对于以两个不相等长度表示大小的字体指定时,
如果用于指定行内进展方向上的长度,则一个 em 等于
经过变形缩放字体的行内进展维度;
如果用于指定块进展方向上的长度,则等于缩放字体的
块进展维度。
除非另有规定,否则 em 单位会相对于适用于解析
em 单位上下文中该元素的
tts:fontSize 属性关联属性的计算值
进行解析。
单位 c(cell)的语义由参数
7.2.1
ttp:cellResolution 定义。
根容器相对
单位 rw 和 rh 分别定义为
根容器区域宽度和高度的
百分之一 (1%)。
例如,长度 25rw 解释为
根容器区域宽度的 25%。
<measure> 值将距离表示为 绝对维度或 相对维度,其中使用上下文决定 哪个维度适用。
如果两个绝对维度之一,即 height 或 width 适用, 则关联的相对维度,即 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>+ |
<number> 表达式用于表示任意可选带符号的整数或 实数值。
<number> : sign? <non-negative-number> sign : "+" | "-" |
<percentage> 表达式用于表示任意有符号整数或实数百分比。
<percentage> : <number> "%" |
<pitch> 值表示要应用于合成语音的绝对或相对音高频率调整。
<pitch> : <percentage> | <number> pitch-units? pitch-units : "hz" | "st" |
如果指定为 <percentage>,则输出音高
(频率)为
input pitch (frequency) * (1.0 + (percentage/100))。
如果指定为 <number> 且
指定了 sign,则输出音高会根据符号为正(负)而相对于输入音高
正向(负向)调整;但是,如果未指定符号,则输入音高
被设置为指定值,即
不相对于输入音高。如果存在 units 分量,则它指定
Hertz(hz)或 semi-tones(st),即标准全音阶上的半音。
如果未指定 units 分量,则隐含 Hertz。
<position> 表达式用于间接确定区域或图像相对于参考区域的原点。
<position> : offset-position-h // single component value | edge-keyword-v // single component value | offset-position-h <lwsp> offset-position-v // two component value | position-keyword-v <lwsp> position-keyword-h // two component value | position-keyword-h <lwsp> edge-offset-v // three component value | position-keyword-v <lwsp> edge-offset-h // three component value | edge-offset-h <lwsp> position-keyword-v // three component value | edge-offset-v <lwsp> position-keyword-h // three component value | edge-offset-h <lwsp> edge-offset-v // four component value | edge-offset-v <lwsp> edge-offset-h // four component value 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>
|
注:
当双分量表达式由两个 <length> 值组成时, 为避免可能的歧义解释,第一个解释为水平 length,第二个解释为垂直 length,如上表最后一行所示。
| 值 | 等价值 |
|---|---|
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> 分量表示为百分比, 则该百分比会相对于某个参考维度解释,其中参考维度由使用上下文定义。
<position> 表达式的 <length> 分量可以
为正或为负。正 length 解释为相对于被引用边的 inset,
而负 length 解释为相对于被引用边的 outset。例如,来自 left
边的 inset 位于该边右侧(如果非零),而来自
left 边的 outset 位于该边左侧(如果非零)。相反,
来自 right 边的 inset 位于该边左侧(如果非零),而来自
right 边的 outset 位于该边右侧(如果非零)。对
top 和 bottom 边也保持类似安排。
执行四分量等价转换时,表达式
(100% - <length-h>)
要解释为 100% 与
<length-h> 表达式的百分比等价值之间的差。
类似地,表达式
(100% - <length-v>)
要解释为 100% 与
<length-v> 表达式的百分比等价值之间的差。
在两种情况下,所得差值都可以是负百分比。
<ruby-reserve> 表达式用于为放置 ruby text content 保留空间。
<ruby-reserve>
: "none"
| ("both" | <annotation-position>) (<lwsp> <length>)?
|
<shadow> 值表示要应用于生成区域的阴影装饰。如果 生成区域是字形区域,则它应用于字形的轮廓 (而不是字形区域边界框)。如果生成区域不是 字形区域, 则它应用于该区域的边框矩形。
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> 表达式用于确定文本 emphasis 效果的行为。
<text-emphasis> : <emphasis-style> || <emphasis-color> || <emphasis-position> |
本节按照标准处理模型定义样式解析的语义,如下所示:
只要外部可观察结果与此模型产生的结果一致, 就允许采用此模型的任何实现。
注:
此处采用的样式解析语义基于 [XSL-FO 1.1] §5。
样式关联是 10.4.4 样式解析处理 的一个子过程,用于确定每个内容和 布局元素的指定样式集。
样式事项可以通过多种方式与内容 和布局事项关联:
除上述方式外,样式事项还可以使用以下方式与布局事项关联:
样式属性可以通过在受影响元素上直接 指定来自 TT Style Namespaces 的属性,以行内方式表达。 当以这种方式表达时,样式信息的关联称为 行内样式。
通过行内样式关联的样式属性优先级高于所有其他形式的样式关联。
<p tts:color="white">White 1 <span tts:color="yellow">Yellow</span> White 2</p> |
注:
在上例中,两个文本节点 "White 1 " 和
" White 2" 被解释为匿名 span,它们并未
关联 color 样式属性;相反,它们会按照下文
10.4.2.1 内容样式
继承 中所述,从其父 p 元素继承 color 样式。
样式属性可以以非行内方式表达,并由受影响元素使用
style 属性引用。当以这种方式表达时,
样式信息的关联称为引用样式。
如果 style 属性指定多个引用,则这些引用按照指定顺序
求值;当某个样式属性沿多条引用路径被指定时,
该顺序适用于其值的解析。
引用样式的使用被限制为引用 styling
元素后代中的 style 元素。引用作为
layout 元素后代的 style
元素被视为错误。
注:
使用引用样式会鼓励样式规范的复用,但会牺牲引用局部性。
注:
内容元素可以通过行内样式和引用样式的 混合方式与样式属性关联,在这种情况下,如上文 10.4.1.1 行内样式 所述, 行内样式具有优先级。
<style xml:id="s1" tts:color="white"/> <style xml:id="s2" tts:color="yellow"/> ... <p style="s1">White 1 <span style="s2">Yellow</span> White 2</p> |
注:
在上例中,两个文本节点 "White 1 " 和
" White 2" 被解释为匿名 span,它们并未
关联 color 样式属性;相反,它们会按照下文
10.4.2.1 内容样式
继承 中所述,从其父 p 元素继承 color 样式。
样式属性可以以非行内方式表达,并且这些样式属性自身还可以引用 其他非行内样式属性,从而创建从受影响元素开始的一条引用链。 当以这种方式表达时,样式信息的关联 称为链式引用样式。
链式样式引用序列中的循环必须被视为错误。
引用样式的使用被限制为引用 styling
元素后代中的 style 元素。引用作为
layout 元素后代的 style
元素被视为错误。
注:
使用链式引用样式会鼓励将样式规范分组成通用集和特定集, 从而进一步有助于样式规范复用。
注:
内容元素可以通过行内样式、 引用样式和链式引用样式的混合方式与样式 属性关联,在这种情况下,如上文 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">White Monospace</p> <p style="s2">Yellow Monospace</p> |
注:
在上例中,第二个段落的文本为黄色,因为
tts:color='yellow'
实际上覆盖(合并覆盖)了 s2 通过引用样式
s1 而获得的 tts:color='white'。
样式继承是 10.4.4 样式解析处理 的一个子过程,用于确定每个内容和 布局元素的指定样式集。
样式还使用以下方式进一步传播到内容事项:
为了确定继承样式,必须使用文档 实例的中间同步文档形式的元素层级, 这类中间形式由 11.3.1.3 中间同步文档构造定义。
注:
使用中间同步文档形式而非原始形式, 是为了便于进行 region 继承处理。
在中间同步文档中,如果某个样式属性没有与内容 元素(或匿名 span) 关联,并且该样式属性被指定为可继承, 则样式属性会从祖先内容 元素继承。
如果确定某个样式属性需要继承,则继承值必须是适用中间同步文档内 定义该属性的元素最近祖先元素的计算样式集中, 同名样式属性的值。
<p tts:fontFamily="monospaceSansSerif">
<span tts:color="yellow">Yellow Monospace</span>
</p>
|
注:
在上例中,包围字符项
Yellow Monospace 的 span 元素未指定
tts:fontFamily 样式属性,且该属性是可继承的;
因此,tts:fontFamily 样式的值
从祖先 p 元素的计算样式
集继承,并添加到
span 元素的指定
样式
集中。
在以下情况下,样式属性从 region 元素继承:
<region xml:id="r1"> <style tts:color="yellow"/> <style tts:fontFamily="monospaceSerif"/> </region> ... <p region="r1">Yellow Monospace</p> |
注:
在上例中,包围字符项 Yellow Monospace 的
匿名 span
实际上继承了指定在 region 元素上的
tts:color 和 tts:fontFamily 样式,
p 元素流入(呈现)该 region 元素。
在样式解析、布局和呈现处理期间, 样式属性值分为以下三类:
当使用相对值表达式指定样式属性时, 例如命名颜色、相对单位(如 cell)或百分比, 它们需要进一步解析为绝对单位,例如 RGB 三元组、 像素等。
在样式解析过程中,指定样式值可以按绝对形式 重新解释(或重新计算),随后记录为 计算值。给定元素的 所有计算样式属性集合称为该元素的 计算样式集。
当样式值被继承时,无论显式还是隐式继承, 继承的是从祖先元素继承来的该样式的计算值。 这是必需的,因为某些相对单位(例如百分比)的解析 要求在直接(本地)引用上下文中对表达式求值, 而不是在相关(解析)表达式不可用的远程引用上下文中求值。
在样式继承之后,如果特定属性的语义要求进一步解析, 或执行解析所需的信息直到布局或呈现处理发生时才可用, 则计算值可能需要在布局或呈现时进一步解析。 这样的值称为 使用值, 它不一定与下文所述的最终实际 值相同。
注:
使用值的确定始终 先于计算值的继承;也就是说,使用值 计算名义上在 10.4.4.4 样式解析 过程完成后执行。
注:
另见 [CSS2] §6.1.3。
在实际呈现过程中,还会发生其他变换, 将某些值表达式映射到具体的物理值。例如, 在显示过程中,计算样式值中的颜色还会进一步受到最接近颜色 近似和伽马校正的影响。此外,在计算样式值中使用 像素的长度值表达式被视为表达逻辑像素,而不是 物理(设备)像素。因此,这些逻辑 像素在呈现期间会受到 进一步变换或映射到物理(设备)像素的影响。
由逻辑到设备映射过程产生的最终值称为 实际值。 给定元素的所有 实际样式属性集合称为该元素的 实际样式集。
注:
在呈现过程中可能产生多组实际值。例如,TTML 呈现处理器 设备可以输出 RGBA 分量视频信号,随后该信号 被 NTSC 或 PAL 电视进一步变换以生成最终 图像。在这种情况下,颜色和维度都可能在 呈现前进一步修改。
注:
一般来说,TTML 呈现处理器 无法访问实际样式集值;因此,在下文正式描述样式 解析过程时,不再进一步使用或引用实际值。
样式解析过程在此定义为解析(确定)应用于内容和布局元素的 所有样式属性计算值的过程 (及其结果):
此处描述的过程构成 11.3.1 Region 布局与呈现 的一个组成子过程。
为了解释下文指定的样式解析处理模型, 适用以下概念定义:
样式属性 P 被认为由一个
元组 [name, value] 组成,其中属性的
name 是一个元组 [namespace value,
unqualified name],属性的 value 是一个
元组 [category, type, value expression]
[ ["http://www.w3.org/ns/ttml#styling", "color"], ["specified", color, "red"] ] |
样式(属性)集由样式属性的无序集合组成, 其中集合内任意两个样式属性都不得具有 相同名称;这里的“相同名称”指 name 元组的 namespace value 和 name 元组的 unqualified name 相等;
在指定样式(属性)集中,每个样式 属性的 category 为 "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%" ]
]
}
|
在计算样式(属性)集中,每个样式 属性的 category 为 "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 中:如果 SS 中已存在 样式属性 Pold,且 Pnew 的名称与 Pold 的名称相同,则用 Pnew 替换 SS 中的 Pold;否则,将 Pnew 添加到 SS;
样式(属性)集 SSnew 按如下方式合并到 现有样式(属性)集 SSold 中: 对 SSnew 中的每个样式属性 Pnew,将 Pnew 合并到 SSold 中;
元素或匿名 span E 的 指定样式集 SSS, SSS(E),按照以下有序规则确定:
[初始化] 将 E 的 指定样式集 SSS 初始化为 空集;
[引用和链式引用
样式] 对 E 上指定的 style 属性
所引用的每个 style 元素 SREF,
按 style 属性中指定的顺序,如果
SREF 是 styling 元素
的后代,
则将 SREF 的指定样式集
SSS(SREF) 合并到
E 的指定样式集
SSS(E) 中;
[嵌套样式]
如果 E 未被条件性
排除,则
对 E 的每个嵌套且条件性包含的
style 元素子级 SNEST,
按子元素的指定顺序,将
SNEST 的指定样式集
SSS(SNEST) 合并到
E 的指定样式集 SSS(E) 中;
[行内样式] 如果 E 未被条件性 排除,则 对表示为 E 的指定样式属性的每个样式属性 P, 将 P 合并到 E 的指定样式 集 SSS(E) 中;
[动画样式] 如果 E 的元素类型不是行内 动画元素, 则对元素 E 的每个条件性包含的 行内动画元素子级 A, 将 A 的指定样式集 SSS(A) 合并到 E 的指定样式集 SSS(E) 中;
[隐式继承和初始值回退] 如果
E 的元素类型不是动画元素类型 animate 或
set,
且不是样式元素类型 style,
则对上文 10.2 样式属性
词汇 中定义的样式属性集合中的每个样式属性
P,执行以下有序子步骤:
如果 P 存在于 E 的指定 样式集 SSS(E) 中,则继续处理下一个 样式属性;
如果 P 可继承且 E 不是
region 元素,
则执行以下操作:
将 P′ 设置为在 E 的最近祖先元素 NEAREST-ANCESTOR(E) 的计算样式集中 查找 P 值的结果,其中 CSS(NEAREST-ANCESTOR(E)) 包含 P 的定义;
如果 (1) P 可继承且 E 是
region 元素,
或 (2) P 不可继承且 P 适用于
E,则执行以下操作:
将 P′ 设置为属性 P 的初始值, 其中属性的初始值按如下方式确定:
如果
initial
元素为 P 定义了初始值,则使用
该值;
否则,使用上文 10.2 样式 属性词汇 中找到的 P 属性定义所指定的初始值;
如果 P′ 的值未定义,则将 P′ 合并到 E 的指定样式集 SSS(E) 中。
元素或匿名 span E 的 计算样式集 CSS, CSS(E),按照以下有序 规则确定:
[解析指定样式] 按照 10.4.4.2 指定样式集 处理, 确定(获得)E 的指定样式集 SSS, 即 SSS(E);
[初始化] 将 CSS(E) 初始化为 SSS(E) 的(深)副本;
[过滤] 如果
E 是 animate、set 或 style
元素,则返回
CSS(E) 作为所得计算样式集,而不进行
进一步解析;否则,继续下一规则;
[相对值解析] 对 CSS(E) 中每个样式属性 P,其中 P 的值类型为相对类型,执行以下有序 子步骤:
如果可能,将 P 的相对值替换为 等价的非相对(计算)值;
将 P 的 category 设置为 "computed";
注:
作为上述过滤规则的结果,
animate、set 或 style 元素的
计算样式集只包括指定值,在这种情况下
相对值表达式保持相对;因此,
相对值表达式(可能通过引用样式关联赋值)的
解析总是在具有呈现上下文的布局或内容元素
的上下文中发生,
而不是在 animate、set 或可引用
style 元素的非呈现声明上下文中发生。
本节定义本规范其他位置引用的各种样式相关过程。
如果目标矩形 TR 与参考矩形 RR 的单位不同, 则引发错误条件。
如果目标矩形 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, 即按缩放因子 SF 原地缩放目标矩形 TR。
注:
为了实现上述算法,存储宽高比和缩放因子 要以至少提供 7 位有效十进制数字的形式表示。
如果目标矩形 TR 与参考矩形 RR 的单位不同, 则引发错误条件。
如果目标矩形 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, 即按缩放因子 SF 原地缩放目标矩形 TR。
注:
为了实现上述算法,缩放因子 要以至少提供 7 位有效十进制数字的形式表示。
本节规定核心词汇目录中的布局事项,其中 布局应理解为适用于内容的一层可分离信息, 它表示作者关于该内容呈现方式的意图。
注:
布局事项和样式事项这两层被认为是彼此独立 可分离的。布局事项指定一个或多个空间或区域, 内容意图呈现在这些空间或区域中,而样式事项指定 在布局内发生呈现的方式。
在某些情况下,内容作者可以选择将样式事项直接嵌入(行内) 到布局或内容事项中。在这种情况下,存在一种替代方式—— 使用引用样式——其中样式 事项不会被嵌入(行内)。
以下元素指定 文档实例的结构和主要布局方面:
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 元素组中元素的子级出现。
在前一种情况下,该 region 称为非行内 region,而在后一种
情况下,它称为行内 region。
此外,根据
10.4.2.2 Region 样式继承,
region 元素可用于指定可继承样式属性,供流入其中的
内容继承。
region 元素接受零个或多个
Metadata.class 元素组中的元素
作为其子级,
后跟零个或多个
Animation.class
元素组中的元素,
后跟
零个或多个 style 元素。
由
Metadata.class
元素组中的子级指定的任何元数据,在语义上适用于 region 元素及其后代整体。
由
Animation.class
元素组中的子级指定的任何动画元素,在语义上适用于 region 元素。
任何 style 子元素都必须被视为一个局部样式
定义,它只适用于包含它的 region
元素,即不用于解析引用样式(但适用于 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") {TT Style Namespaces 中的任何属性} 内容: Metadata.class*, Animation.class*, style* </region> |
非行内 region 元素可以指定
一个或多个时间属性:
begin、end、dur。行内
region 元素不得
指定时间属性,并且如果指定了,为了呈现处理的目的也必须忽略。
如果在非行内
region 元素上指定 begin 和(或)end 属性,
则它们指定一个时间间隔的开始点和(或)结束点,
在此时间间隔内,该 region 可被激活,并且
该 region 的动画子元素相对于该时间间隔计时。
如果指定,这些开始点和结束点相对于最近祖先元素的时间
间隔,该祖先元素与某个时间
间隔关联,无论该间隔是显式还是隐含。
与时间间隔关联的非行内 region 元素的最近祖先元素
是 layout 元素。
如果在非行内 region 元素上指定 dur 属性,则
它指定该 region 的简单持续时间。
行内 region
元素的活跃时间间隔是其父内容元素的
活跃时间间隔。
为了确定呈现处理的语义, 在视觉媒介上呈现时,时间上不活跃的 region 不得产生任何可见标记。
注:
非行内 region 元素可以
出于两个目的与时间间隔关联:
(1) 为了在时间上限定该 region 及其内容的呈现,
以及 (2) 提供一个时间上下文,以便在其中实现 region
样式的动画。
例如,作者可能希望指定一个非行内 region 元素,
它本身为空,但
可以具有可见背景颜色,从某个时间开始呈现并持续到
region 的持续时间结束。该 region 的简单持续时间还用于界定
目标为该 region 的内容的呈现效果范围。作者也可能希望通过动画效果
在根容器区域内移动 region
或改变 region 的背景颜色。在
这两种情况下,都有必要为 region 设定一个活跃时间间隔。
与非行内 region 相比,行内 region 专门绑定到 其父内容元素的时间上下文, 因此不需要(也不允许)指定独立计时。
如果在
region 元素上未指定 timeContainer 属性,则必须将其解释为具有
并行时间包含语义。
如果 region 元素上同时存在 tts:origin 和 tts:position 属性,则为了
呈现处理的目的,必须忽略
tts:origin。
如果既不存在 tts:origin 也不存在
tts:position 属性,则为了
呈现处理的目的,适用
tts:position 属性初始值的语义。
如果在 region 元素上指定
ttm:role 属性,则它必须遵守
语法表示 –
ttm:role 定义的值语法,并且此属性识别的角色
表示该 region 的语义角色,
独立于目标为(关联到)该 region 的任何内容的语义角色。
当在 div 或 p 元素 E 上指定时,
以下样式属性例外地适用于与 E 关联的 region R,
如下文进一步规定:
在这种情况下,这些样式属性中每一个的应用都被认为等价于一个匿名
行内动画,其形式为
set 动画元素
A,其中该
动画在等价于 E 活跃时间间隔的活跃时间间隔内应用于
R,并且如果已有多个动画元素
(Ai, ..., Aj) 应用于 R,
则 A 在这些现有动画中的最后一个之后应用,即
紧接在 Aj 之后。
注:
如果多个相同样式属性的匿名行内
动画应用于某个 region R,
则相应的
set 动画元素
Aj, ..., Ak
按照产生这些动画的元素
Ej, ..., Ek 的前序遍历顺序
添加到 R。
还需注意,将多个动画应用于给定元素的某个特定样式 属性的语义,由 10.4.4.2 指定样式集 处理的步骤 (5) [动画样式] 控制。
以下模型示例使用
tts:extent 样式属性描绘这些特殊语义,
但该模型一般适用于上文列出的所有样式属性:
<region xml:id="r1" tts:extent="80% 10%" .../> ... <p region="r1" begin="10s" end="12s" tts:extent="70% 20%">change extent</p> |
在上述输入片段示例中,在段落(p)元素上指定了
tts:extent 属性,
该元素在不失一般性的情况下,被分配到时间间隔 [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">change extent</p> |
所得输出片段显示 region 的原始 extent 被保留,但 子动画会在所指示的时间间隔内覆盖此 extent,从而按预期产生 (临时)改变 region extent 的效果。
本节定义与内容元素一起使用的 11.2.1 region 属性。
region 属性用于引用 region
元素,该元素定义一个空间或区域,
内容元素意图流入其中。
如果指定,region 属性的值必须
遵守 [XML Schema Part 2]
§3.3.9 定义的 IDREF 数据类型,并且此外,此 IDREF 必须引用一个
具有 layout 元素作为祖先的 region 元素。
region 属性可由以下元素类型的实例指定:
注:
关于 region 中内容流的更多信息,见下文 11.3.1 Region 布局与呈现。
本节按照标准处理模型定义 region 布局和 呈现的语义,如下所示:
只要外部可观察结果与此模型产生的结果一致, 就允许采用任何实现。
如果文档实例未指定 非行内 region, 则隐含一个具有以下特征的默认 region:
默认 region 的标识被视为匿名非行内 region;
默认 region 的 extent 与根容器区域的 extent 相同;
默认 region 的时间间隔与 根时间范围定义的间隔相同;
此外,如果未指定
非行内 region,则不得在
文档实例中的任何内容元素上指定
region 属性。
如果对给定文档
实例隐含默认 region,则
body 元素
隐式目标为(关联到)默认 region。
当隐含默认 region 时,
文档实例应被
视为好像在
head
元素中指定了一个 region 元素及其
父 layout
元素,并且在 body 元素上指定了匹配的
region 属性,
如以下示例所示:
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
<head>
<layout>
<region xml:id="anonymous"/>
</layout>
</head>
<body region="anonymous"/>
</tt>
|
注:
在上例中,隐含了一个默认 region 元素和
region 属性。此外,还为隐含的
region 元素隐含了一个 layout 容器元素。
行内 region是一种语法机制,用于以一种 最小化 region 规范与引用该 region 的内容之间语法距离的方式指定 region。在语义上,每个 行内 region都等价于指定一个唯一的 非行内 region,并且该 region 只由 指定(或隐含)该行内 region的上下文中的 内容元素隐式引用。
行内 region 通过指定一个
region 元素作为
Block.class 元素组中
内容元素的子级来声明,
这称为行内 region
规范。
行内 region 按照 [处理行内 region] 过程进行处理,该过程会生成与行内 region 对应的 非行内 region。此过程还会将与行内 region 关联的内容 元素绑定到对应生成的非行内 region。
注:
一个内容元素只能与单个
region 关联(在给定
中间同步
文档中),
无论是通过属性指定还是通过子
region 元素。因此,
如果内容元素指定了
region 属性,则任何
行内 region 规范
都会被忽略。
对 Block.class 元素组中的每个 内容元素 B 执行以下有序步骤:
如果 B 的 [attributes] 信息项属性
包含
region 属性,则
退出此过程
如果 B 的 [children] 信息项属性
不包含
region 元素
R,则退出此过程;
创建一个空的 region
元素 R' ,
初始化如下:
将
R' 的 [children] 信息项属性设置为
R 的 [children] 信息项属性的深拷贝;
将
R' 的 [attributes] 信息项属性设置为
R 的
[attributes] 信息项属性的深拷贝;
如果
R' 的 [attributes] 信息项属性不包含
xml:id 属性,则添加一个隐含的
xml:id 属性,其生成值
ID 在 TTML 文档实例范围内唯一;
否则,令 ID 为 R' 的 xml:id
属性值;
如果存在,则从
R' 的 [attributes] 信息项属性中移除以下属性:
begin、
dur 和
end;
按如下方式将 begin 和 end 属性添加到
R' 的
[attributes] 信息项属性:
如果
head
元素没有
layout 子元素,
则插入一个空的
layout 元素:
如果存在
styling 元素,则紧随其后;
如果存在
animation
元素,则紧接其前;
如果二者均不存在,则作为
head
元素的最后一个子级;
向 B 的 [attributes] 信息
项属性添加一个值为 ID 的
region 属性;
从 B 的 [children] 信息项属性中移除
R。
以下示例展示了 行内 region 规范的使用,以及所生成的非行内 region。
<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>Some Content</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>Some Content</p>
<div/>
<body/>
</tt>
|
注:
请注意,在上述一对示例中,生成的非行内 region 上的时间属性
使用 end 属性,而不是行内
region
元素的
div 父元素的原始
dur 属性。上述过程要求将
dur 转换为 end,以便在根时间
范围内指定生成的非行内 region 的活跃时间间隔。
注:
此示例中生成的 region ID region3451 依赖于实现,
唯一要求是它是
xml:id 属性的有效值,
其中包括在文档实例范围内唯一。
为了执行呈现处理,(1) 调用 [解析计时] 过程,然后 (2) 调用 [构造 中间文档] 过程。
可选地调用过程 [构造匿名 span]; 否则,如果此时未调用该过程,则解析每个文本节点的隐式持续时间, 这些文本节点是在调用该过程时本会解析其 隐式持续时间的文本节点;
将当前文档实例的活跃时间持续时间划分为一个有序
时间坐标序列
{T0, T1, T2, ...},
其中在每个时间坐标 Ti,
某个元素变为时间上活跃或不活跃。
对于从 [解析计时]
过程获得的每个时间间隔,
其中每个这样的间隔由一对连续的时间坐标
(Ti,Ti+1) 组成,
也就是 (T0,T1)、
(T1,T2)、…,按照以下有序步骤,将当前
文档实例从其原始源形式
DOCsource ,映射到中间同步文档形式
DOCinter :
调用过程 [处理行内 region];
对于每个时间上活跃的 region R,复制
DOCsource 中以 body 元素为首的
子树;
以后序遍历求值此子树,如果以下任一条件为真,则剪除元素:
它们不是呈现相关 元素 ;或
它们在时间上不活跃;或
它们未根据 [关联 region] 过程与 region R 关联。
如果剪除后的子树非空,则将其重新作为 R 元素的子级;
最后,在完成上述步骤之后,从中间文档中剪除原始
body
元素,然后剪除所有 region、
begin、end 和 dur 属性,
它们在语义上不再相关。
注:
在本节中,术语 prune 在指代 元素时,表示将该元素从其父级的子级中移除, 这进而意味着被剪除元素的后代不再是该元素父级的后代。 当 prune 用于指代属性时,表示从其关联(所属) 元素节点中移除该属性。
注:
符合规范的呈现处理器允许将早期样式解析作为上述过程的后处理步骤执行, 关于更多内容,见 [流变换] 过程的步骤 (2)。
内容元素按照以下有序规则 与 region 关联,其中使用第一个满足的规则并跳过剩余规则:
执行上述处理的结果将是一系列 N 个中间同步 文档实例: DOCinter0 … DOCinterN−1。
注:
如果实现能够检测到两个相邻同步 文档实例之间的显著相似性, DOCinterN DOCinterN−1, 则实现可以应用处理,使这两个实例的呈现之间的过渡尽可能平滑, 例如 [CTA-608-E] §C.3 和 [CC-DECODER-REQ] 所描述的方式。
在执行时间(同步)切片以及随后对按 region 选择的内容层级进行重映射之后, 所得中间同步文档会经过一个流变换步骤,该步骤产生 以根为基础的流对象树,该树表示为 [XSL-FO 1.1] 所定义的 XSL FO 文档实例, 并由 TTML 特定样式属性进行语义扩展,这些属性没有 XSL FO 对应项。
注:
在本节中,XSL FO 的使用仅用于概念目的, 只用于定义 TTML 的规范性呈现语义。 此算法的实际实现不要求创建或处理 XSL-FO 表示。特别是,可以使用替代呈现模型 来实现这些语义,例如层叠样式表(CSS)。
注:
由于给定文档实例中 可能存在没有 [XSL-FO 1.1] 对应项的 TTML 样式属性或样式属性值, 实现者应注意,本规范引用的是 [XSL-FO 1.1] 的布局模型, 而不是要求使用符合 [XSL-FO 1.1] 的格式化处理器, 因为这种处理器不一定足以满足本规范定义的完整呈现 语义,并且会包含大量实现 TTML 呈现语义不需要的特性。
为了执行呈现处理,对于 11.3.1.3 中间同步文档 构造产生的每个中间同步 文档 DOCinteri,(1) 调用以下 [流 变换] 过程 以获得 XSL FO 文档实例 Fi,然后 (2) 如果处理 需要在视觉媒介上呈现,则将与 [XSL-FO 1.1] 以及本规范规定一致的所有相关格式化和渲染语义 应用于 Fi。
如果此前未调用,则执行过程 [构造匿名 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 元素上表达的根容器区域的
extent
映射为
fo:simple-page-master
元素上的 page-width 和
page-height 属性;
将 layout 元素映射为 fo:page-sequence
元素和一个
子 fo:flow 元素,它们引用上文产生的简单页母版所定义的页母版和页
region;
注:
在使用
[XSL-FO 1.1] 格式化处理器格式化 F 所产生的
XSL FO 区域树中,
page-viewport-area
由 fo:page-sequence 元素通过引用唯一生成的
fo:simple-page-master
元素生成,将对应于上文
2 定义中定义的
根容器区域。
将每个非空 region 元素映射为
fo:block-container
元素,该元素具有值为
absolute 的 absolute-position 属性,
具有 top、left、
bottom 和 right
属性来表达一个等价于 region origin 和 extent(包括 padding)的矩形,
并具有值为 line-height 的
line-stacking-strategy 属性;
注:
region 的 extent 对应于
fo:block-container 生成的块区域的分配矩形。
注:
当将 region 元素映射为
fo:block-container 时,如果 region 延伸到其包含块之外,
可能需要对
top、left、bottom 和
right
XSL-FO 属性中的一个或多个使用负偏移值。
对于 (1) body、div 和 p 元素,
或 (2) 块级上下文中的 image 元素,
即 Block.class 元素组中元素的
image 子级,如果该元素未与值为
none 的 tts:display 样式
属性关联,则:
对于上一步产生的、对应于 body
元素的所得 fo:block 格式化对象,调用以下有序子步骤:
如果此
fo:block 的 display-align 样式属性
的值为 center 或 after,
则合成一个空的 fo:block 并将其作为
此
fo:block
的第一个子级插入,该空块具有以下属性:
space-after.optimum、space-after.maximum
和
space-after.conditionality,其中前
两个属性的值为包含
fo:block-container 元素的高度或宽度,
取决于其中哪一个被指定为块进展维度,
而最后一个属性的值为
retain;
如果此
fo:block 的 display-align 样式属性
的值为 center 或 before,
则合成一个空的 fo:block 并将其作为
此
fo:block
的最后一个子级插入,该空块具有以下属性:
space-after.optimum、space-after.maximum
和
space-after.conditionality,其中前
两个属性的值为包含
fo:block-container 元素的高度或宽度,
取决于其中哪一个被指定为块进展维度,
而最后一个属性的值为
retain;
注:
在对应于
body 元素的 fo:block 的块进展
维度中插入额外的可折叠空间,其目的在于确保此
fo:block 的 before 边和 after 边
与对应于包含 region 的
fo:block-container 的 before 边和 after 边重合,
同时考虑满足块进展维度中对齐的需求。例如,这能确保
与 body 元素关联的背景颜色(如果不是
transparent)
会完全填充包含 region。
对于 (1) span 元素和
匿名 span,
或 (2) 行内级上下文中的 image 元素,
即 p 或 span
元素的 image 子级,如果该元素或
匿名 span 未与值为
none 的 tts:display 样式属性
关联,则:
如果对象是匿名
span,则将该匿名 span
的字符项序列映射为一个独立的
fo:inline 元素,
使用与该匿名 span关联的计算
样式集来填充 fo:inline 的样式属性;
如果对象是 span 元素,则将该元素
映射为一个独立的 fo:inline 元素,
使用与 span 关联的计算
样式集来填充 fo:inline 的样式属性;
否则(对象是 image 元素),将该
元素映射为一个独立的 fo:inline 元素,
其中包含一个 fo:external-graphic 子元素,
使用与 image 元素关联的计算
样式集来填充 fo:inline 和
fo:external-graphic 的样式属性,
并使用对相关图像
资源的适当引用来填充
fo:external-graphic 元素的 src 属性;
对于每个未与值为
none 的 tts:display 样式属性
关联的 br 元素,将该元素映射为
一个独立的 fo:character 元素,其具有以下
属性:
character="
"
suppress-at-line-break="retain"
对于某个计算样式集中没有 [XSL-FO 1.1] 对应项的每个 TTML 样式属性, 将该属性直接透传到由输入 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">Text 1</p>
<p xml:id="p2" region="r2">Text 2</p>
</div>
<div xml:id="d2" begin="1s" dur="2s">
<p xml:id="p3" region="r2">Text 3</p>
<p xml:id="p4" region="r1">Text 4</p>
</div>
</body>
</tt>
|
在上述文档中,内容层级由两个 division 组成,每个 division 包含两个段落。此内容目标为(关联到)两个 不重叠 region 之一;除位置 和前景色不同外,这两个 region 的样式相同,后者会被重新作为 region 子级的 span(在此情况下为匿名 span)继承并应用于这些 span。
以下第一个中间文档显示时间
间隔 [0,1) 的同步状态,在此期间只有 division d1 在时间上活跃,
并且段落 p1 和 p2(及其祖先)
分别与 region 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">Text 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">Text 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's space (before) filler -->
<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">Text 1</fo:inline>
</fo:block>
</fo:block>
<!-- body's space (after) filler -->
<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's space (before) filler -->
<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">Text 2</fo:inline>
</fo:block>
</fo:block>
<!-- body's space (after) filler -->
<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) 的同步状态,在此期间 division d1 和
d2 都在时间上活跃,并且段落 p1 和
p4(及其祖先)与 region r1 关联,
段落 p2 和 p3(及其祖先)与
region 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">Text 1</p>
</div>
<div xml:id="d2-1">
<p xml:id="p4">Text 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">Text 2</p>
</div>
<div xml:id="d2-2">
<p xml:id="p3">Text 3</p>
</div>
</body>
</region>
</layout>
</head>
</tt>
|
以下第三个中间文档显示时间
间隔 [2,3) 的同步状态,在此期间只有 division d2 在时间上活跃,
并且段落 p4 和 p3(及其祖先)
分别与 region 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">Text 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">Text 3</p>
</div>
</body>
</region>
</layout>
</head>
</tt>
|
当p 元素,即段落的表示,
由呈现处理器处理时,其内容会通过
断行进行分段,
其中每个分段分配给一个唯一的行区域。在这方面,
本规范采用基于 [XSL-FO 1.1]
定义的格式化模型的模型,特别是 §4.5、§4.6 和 §4.7。
如果适用于文档实例的配置文件 要求支持或使用 #lineBreak-uax14 特性,则在对该文档实例的内容执行 行布局时,适用 Line Breaking Algorithm [UAX14] 定义的建议。
本小节为非规范性。
行区域的 块进展 维度计算,通常称为 line height, 可能特别复杂,尤其是在应用多个字体族、字体大小、字体样式、 字体资源以及高级文本格式化特性时, 例如 ruby、文本着重和 文本组合(tate-chu-yoko)。
此过程产生的每个行区域都会被堆叠,
在水平行上下文中垂直放置在前一个行区域下方,
或在垂直行上下文中水平放置在前一行旁边。
如 [流变换] 过程步骤 (5)
所规定,
TTML 使用 line-height 行堆叠策略,该策略在
[XSL-FO 1.1] §4.5 中正式定义,
其术语和概念在下文使用。
使用此策略时,行区域的维度 对应于为该特定行区域计算的 per-inline-height-rectangle 的维度,而该维度又通过 求值 (1) expanded-nominal-requested-line-rectangle 的维度 来确定,该维度对段落的每个 行区域都是一致的,以及 (2) 该 行区域的每个 行内区域子级的 expanded-rectangle 的维度, 后者可能因段落中每个行区域的每个 行内区域而不同。
上文提到的短语 line height 不应与 与 tts:lineHeight 属性关联的样式属性的 计算值混淆。后一个值作为参数,用于计算应用于 行区域和单个 行内区域的 half leading, 它们分别是用于确定 (1) 行区域的 expanded-nominal-requested-line-rectangle 的维度,以及 (2) 该 行区域的 行内区域子级的 expanded-rectangle 的维度的参数。 请特别注意,应用于行 区域的 half leading 与 应用于该行区域的 行内区域子级的 half leading 通常是不同值,关于更多细节, 见 [XSL-FO 1.1] §6.5.2(当应用于 行区域时)。对于给定 行内区域,适用类似处理,尽管 [XSL-FO 1.1] 并未明确指出这一点, 但可以从 [CSS2] §10.8.1 中的文字推断出来。
总之,由
[XSL-FO 1.1] §4.5 定义并由 TTML 采用的
line-height 行堆叠策略所定义的行为,
旨在与 [CSS2] 的行堆叠策略兼容,这意味着:
当段落的 tts:lineHeight
计算值为 normal 时,(1) 该段落的每个
行区域都与该段落的前一个
行区域精确相接且不相交,并且 (2)
该段落的
行区域的 line
height 会根据每个
行区域的已设样式内容而变化;
当段落的 tts:lineHeight 计算值是指定的 <length> 时,该段落的 行区域彼此精确相接, 但其内容矩形可能 (1) 在块 进展维度中消耗的空间少于容纳其内容所需的空间, 在这种情况下,该内容可能与该段落的前一个 行区域相交,或 (2) 在块 进展维度中消耗的空间多于容纳其内容所需的空间。
注:
当以下任一高级文本格式化特性应用于一行内容时, 可能会对 line height 进行额外调整:
ruby 文本标注
文本组合(tate-chu-yoko)
文本着重
(逐字形)字体剪切
本节规定格式化 TTML 文档实例渲染某些方面的细节。
呈现 处理器采用的渲染顺序必须与 [XSL-FO 1.1] §4.9 指定的渲染模型一致;此外, 适用以下约束:
由 ruby text span 生成的行区域的行内区域后代 在该行区域的其他行内区域后代之后渲染;
由
image 元素生成的
块区域或行内区域的固有标记,由关联图像的栅格组成。
注:
由
image 元素产生的标记,
如果该元素由
tts:backgroundImage
属性引用,则不包含在块区域或行内区域的固有
标记中,即它们属于区域的背景
标记。
本节规定核心词汇目录中的计时事项,其中 计时应理解为适用于内容的一层可分离信息, 它表示作者关于该内容时间呈现方式的意图。
本节定义以下基本计时属性,以供计时元素使用:
此外,本节定义 12.2.4 timeContainer 属性,以供同时作为计时容器的计时 元素使用。
begin 属性用于指定与计时元素关联的
时间间隔的开始点。
如果指定,begin 属性的值必须遵守
12.3.1 <time-expression> 定义的
<time-expression> 规范。
时间间隔的开始点包含在该 间隔内;即该间隔左闭。
begin 属性的语义是
[SMIL 3.0] §5.4.3 定义的语义,
同时考虑本规范定义的任何覆盖语义。
注:
如 [SMIL 3.0] §5.4.3 所定义,
如果在计时元素上没有显式指定
begin 属性,
则该属性的默认值由最近的时间容器祖先确定;但是,在 TTML 中,
该祖先要么是并行时间容器,要么是顺序时间容器,
二者都应用默认值 0s。
dur 属性用于指定与计时元素关联的
时间间隔的持续时间。如果指定,
dur 属性的值必须遵守
12.3.1 <time-expression> 定义的
<time-expression> 规范。
注:
当 <time-expression> 规范的 clock-time 形式
与 dur 属性一起使用时,意图是将其解释为
两个隐含 clock time 表达式之间的差值。
当文档实例指定使用
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 属性的值必须遵守
12.3.1 <time-expression> 定义的
<time-expression> 规范。
时间间隔的结束点不包含在该 间隔内;即该间隔右开。
非空活跃时间间隔的呈现效果包括紧接在 等于或紧随结束点所指定时间的帧 (或 tick)之前的帧,但不会延伸到后者的帧(或 tick)中。
注:
例如,如果活跃间隔为 [10s,10.33333s),且 帧率为每秒 30 帧,则该间隔的呈现效果 仅限于第 300 到第 309 帧(假设 0s 对应于 第 0 帧)。如果活跃间隔指定为 [300f,310f),同样如此。
end 属性的语义是
[SMIL 3.0] §5.4.3 定义的语义,
同时考虑本规范定义的任何覆盖语义。
timeContainer 属性用于指定一个局部时间
上下文,借助该上下文对子计时元素进行时间定位。
如果指定,timeContainer 属性的值必须是以下之一:
par
seq
如果元素实例的时间容器语义为 par,
则子元素的时间间隔被认为以并行方式应用,
即在时间上同时应用。此外,每个子元素时间间隔的规范
被认为相对于容器元素实例的时间
间隔。为了确定 par
时间容器的 [SMIL 3.0] endsync 语义,
适用默认值 all。
注:
endsync 行为使用默认值 all
不同于 [SMIL 3.0],后者使用默认值
last。
如果元素实例的时间容器语义为 seq,
则子元素的时间间隔被认为按顺序应用,
即在时间上依次应用。此外,每个子元素时间间隔的规范
被认为相对于其兄弟元素的时间间隔,除非它是第一个子元素,
在这种情况下,它被认为相对于容器元素实例的时间间隔。
每个时间容器都被认为构成一个独立的时间基,即 时间坐标系统。
如果在具有时间容器语义的元素上未指定
timeContainer 属性,则必须适用 par 时间容器语义。
时间容器语义仅适用于以下元素类型:
并行和顺序时间 包含的语义是 [SMIL 3.0] §5.4.4 定义的语义, 同时考虑本规范定义的任何覆盖语义。
计时属性值包括使用以下表达式:
<time-expression> 用于指定某个时间基内的坐标,
其中适用的时间基由
ttp:timeBase 参数确定,并且适用
I 时间表达式语义定义的语义。
注:
关于显式指定帧率、子帧率、tick 率和时间基的更多信息,见 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" // hours
| "m" // minutes
| "s" // seconds
| "ms" // milliseconds
| "f" // frames
| "t" // ticks
|
<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 所定义。
当适用 clock 时间基时,指定 frames 项或
f(frames)度量被视为错误。
如果 <time-expression> 以
clock-time 表示,并且指定了
sub-frames 项,则该项的值必须限制在
区间 [0…S-1] 内,其中 S 是
由 ttp:subFrameRate 参数确定的子帧率,如
7.2.9 ttp:subFrameRate 所定义。
当适用 clock 时间基时,指定 sub-frames 项
被视为错误。
如果在文档实例中使用
<time-expression> 的 wallclock-time 形式,而支配时间基
不是 clock,则被视为错误。
如果支配时间基的计算值为 smpte,则
(1) 使用 <time-expression> 的 offset-time 形式
已废弃,并且
(2) 在 <time-expression> 的
clock-time 形式中使用 fraction 秒分量
已废弃。
注:
上文指定的 <time-expression> 语法显式排除了
时区信息的表示。如果作者
希望将 <time-expression> 与特定时区相关联,则可以
将时间表达式转换为 UTC 并指定使用
utc 时钟模式,相关内容见
7.2.2 ttp:clockMode。
[SMIL 3.0] 定义的时间包含、持续时间和间隔语义 适用于解释本规范定义的同名计时元素和计时 词汇,并受以下约束限制:
匿名 span 的隐式持续时间定义如下:如果
匿名 span 的父时间容器是并行
时间容器,则
隐式持续时间等价于
[SMIL 3.0] 定义的 indefinite
持续时间值;如果匿名 span 的
父时间容器是顺序时间容器,则隐式持续时间
等价于零。
animate、audio、br、
image 或 set 元素的隐式持续时间定义为
与该元素被当作匿名 span处理时相同。
具有非混合内容的 span 元素,即只有
#PCDATA 文本节点的 span 元素,其隐式持续时间
定义为与该 span 元素被当作匿名 span处理时相同。
具有混合内容的 body、div、p
或 span 元素的隐式持续时间,依据 (1) 该元素是并行还是顺序时间容器,
(2) 上文由 12.2.4 timeContainer定义的默认
endsync 语义,
以及 (3) 应用于这些时间容器的 [SMIL 3.0] 语义来确定。
region 元素的隐式持续时间定义为
等价于 [SMIL 3.0] 定义的
indefinite
持续时间值。
如果支配时间基为 clock,则时间
表达式被认为等价于 [SMIL 3.0] 中基于挂钟的
计时,其中适用
I.1 Clock 时间基的特定语义。
如果支配时间基为 media,则时间
表达式被认为等价于 [SMIL 3.0] 中基于偏移的计时,
其中适用
I.2 Media 时间基的特定语义。
如果支配时间基为 smpte,则时间
表达式被认为等价于 [SMIL 3.0] 中基于偏移
或基于事件的计时,其中适用
I.3 SMPTE 时间基的特定
语义。
本小节为非规范性。
以下示例说明作为顺序和并行时间容器子级的
匿名 span 的计时语义。
单词 Hello 和 Allo 都包含在作为顺序
时间容器(p 元素)子级的匿名 span 中。因此,Hello 和
Allo
都不会显示,
因为匿名 span 的隐式持续时间为 0。
相比之下,包含单词
Guten
的匿名 span
和包含单词 Tag 的最内层 span
都是具有并行时间容器
语义的元素(最外层 span 元素)的子级。
因此,Guten 和 Tag 都会显示,因为它们各自父
匿名 span
和 span 元素的隐式持续时间为 indefinite,
这会导致其 span、p、div 和
body 祖先的隐式持续时间也为 indefinite。
...
<body>
<div>
<p timeContainer="seq">
Hello
<span>Guten <span>Tag</span></span>
Allo
</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") {TT Style Namespaces 中的任何属性} 内容: Metadata.class* </animate> |
非行内 animate 元素
必须指定 xml:id 属性。
由 animate 元素作为目标的样式属性属性直接使用
TT Style Namespaces 中的属性或非 TT Namespace 的命名空间中的属性来指定,
其中动画值的列表(序列)
遵守 <animation-value-list>
语法,并且每个
组成的 <animation-value> 遵守指定
属性的语法。
注:
与 [SVG 1.1] §19.2.12 相比,此处定义的单个
animate 元素可用于
对一组目标样式属性属性执行连续动画,而不是仅限于针对单个样式属性属性。
在 [SVG 1.1] 中,这需要使用多个
animate 元素而不是单个 animate 元素。
此外,通过直接指定被动画化的样式属性和关键值,
不必使用 [SVG 1.1] §19.2.9 定义的
from、
to、by 或 values 动画值属性。
animate 元素及其上文枚举属性的语义
定义为 [SVG 1.1] §19.2 指定的语义,并受下文约束或进一步说明:
由 animate 元素作为目标的属性以及要应用于这些属性的值
通过直接使用 TT Style Namespaces 中的属性或非 TT Namespace 的命名空间中的属性来指定;
因此,本版本 TTML 不支持
[SVG 1.1] 定义的
attributeName、from、to、
by 和 values 属性。
注:
使用直接命名的样式属性的效果,等价于指定
多个 [SVG 1.1] animate 元素,
其中每个这样的元素都指定一个 attributeName 和
values 属性。
注:
例如,指定 tts:color="red;green;blue"
被认为等价于在 [SVG 1.1] 中指定
attributeName="tts:color" 和
values="red;green;blue"。
如果未指定 calcMode 属性,则适用
calcMode 值 linear。
注:
此隐含值对应于 [SVG 1.1] §19.2.9 指定的默认值。
如果未指定 fill 属性,则适用
fill 值 remove。
注:
此隐含值对应于 [SVG 1.1] §19.2.9 指定的默认值。
如果指定了 keyTimes 属性,并且
calcMode 的计算值为 "paced",
则为了验证处理的目的,此用法必须被视为错误,并且
为了呈现处理的目的,必须忽略该动画。
如果指定了 keyTimes 属性,并且
calcMode 的计算值不是 "paced",
则 keyTimes 属性中指定的时间分量数量必须
与每个被动画化属性指定的动画值数量匹配。
注:
此约束适用,无论同一个
animate 元素作为目标的是单个属性还是多个属性;
这进而意味着,当作为目标的是多个属性时,
每个被动画化属性的值必须在其
<animation-value-list> 中
指定相同数量的值。
注:
例如,下方显示的第一个 animate 元素有效:被动画化属性有 3 个值,
而第二个和第三个无效:对于第二种情况,被动画化属性有 2 个值,
但指定了 3 个 key time;对于第三种情况,第一个被动画化属性有 2 个值,
第二个被动画化属性有 4 个值,但指定了 3 个 key time:
<!-- valid animation of single attribute with matching key times --> <animate xml:id="a1" keyTimes="0;0.2;1" tts:color="red;green;blue"/> <!-- invalid animation of single attribute with non-matching key times --> <animate xml:id="a2" keyTimes="0;0.2;1" tts:color="red;green"/> <!-- invalid animation of multiple attributes with non-matching key times --> <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。
本版本 TTML 不支持 [SVG 1.1] §19.2.10 定义的
additive 属性;
因此,在其缺失时,适用该属性 "replace" 值的语义。
本版本 TTML 不支持 [SVG 1.1]
§19.2.10 定义的 accumulate 属性;
因此,在其缺失时,适用该属性 "none" 值的语义。
以下示例说明使用 animate 元素来对内容
样式执行动画:
...
<p dur="5s">
<animate tts:color="yellow;red;green;blue;yellow"/>
Text with Continuously Varying Colors!
</p>
...
|
注:
在上例中,内容 "Text
with Continuously Varying Colors!" 的前景色在 5 秒期间持续从 yellow
动画到 red、green、blue,
然后回到 yellow,之后动画效果被移除并恢复原始颜色
(因为 fill 默认值为 "remove")。
以下示例说明使用 animate 元素来对 region
样式执行动画:
<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>
|
注:
在上例中,一个 region r1 最初设置为 0% opacity,
完全透明,然后在一秒间隔内淡入到 100% opacity,
完全不透明。Opacity 在之后五秒内保持 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") {TT Style Namespaces 中的任何属性} 内容: Metadata.class* </set> |
由 set 元素作为目标的样式属性属性直接使用
TT Style Namespaces 中的属性或非某个 TT Namespace 的命名空间中的属性来指定,
其中单个目标动画(关键)值
遵守 <animation-value> 语法。
注:
与 [SVG 1.1] §19.2.13 相比,此处定义的单个
set 元素可用于
对一组目标样式属性属性执行离散动画,而不是仅限于针对单个样式属性属性。
在 [SVG 1.1] 中,这需要使用多个 set
元素而不是单个 set 元素。
除下文枚举的约束或变体外,set
元素及其上文枚举属性的语义
定义为 [SVG 1.1] §19.2.13 指定的语义:
由 set 元素作为目标的属性以及要应用于这些属性的离散值
通过直接使用 TT Style Namespaces 中的属性或非 TT Namespace 的命名空间中的属性来指定
(而不是使用 SVG 的
attributeName 和 to 属性)。
注:
例如,指定 tts:color="red"
被认为等价于在 [SVG 1.1] 中指定
attributeName="tts:color" 和
to="red"。
如果未指定 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"/> Text with Flashing Colors! </p> ... |
注:
在上例中,内容 "Text with Flashing Colors!" 的前景色在 5 秒期间从 yellow 动画到 red、green、 red,然后回到 yellow。
以下示例说明使用 set 元素来对 region
样式执行动画:
<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 行的
单元格网格。然后将一个尺寸为 24 列 2 行的 region
r1 定位在
根容器区域内,其位置随时间变化,
以产生移动该 region 的效果,这可能有助于
避免字幕遮挡底层视频中的字符。
注:
set 元素的语义
基于 [SVG 1.1]
§19.2.13 定义的语义,而后者又基于 [SMIL 3.0] §12。
本节定义与内容元素 和某些布局元素一起使用的 13.2.1 animate 属性。
animate 属性用于
引用一个或多个 animate
或 set 元素,
其中每个元素定义一个特定的非行内
动画。
animate 属性可由以下元素类型的实例指定:
如果指定,animate 属性的值必须
遵守 [XML Schema Part 2]
§3.3.10 定义的 IDREFS 数据类型,并且此外,每个 IDREF 必须引用
一个具有 animation 元素作为祖先的
animate
或 set 元素。
给定 IDREF 不得在 animate 属性的值中出现多于一次。
对于由元素 E 的 animate
属性引用的每个非行内动画元素 A,
执行以下步骤(按指定 IDREF 的顺序):
创建 A 的深拷贝 A';
从
A' 移除 xml:id 属性;
将 A' 插入 E 的 [children] 信息项属性中,
使 A' 作为子元素子序列中的最后一个元素出现,
该子序列对应于 E 内容模型中的
Animation.class* 通配符。
注:
非行内动画的语义本质上构成指定行内动画的一种快捷方式, 当同一个动画在多个引用元素中使用时很有用。
注:
另见允许使用
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> 表达式用于指定一组 Bezier 控制点列表, 这些控制点控制动画的节奏,其中每对值由 SEMICOLON (U+003B) 字符分隔, 该字符两侧可选地包围线性空白(LWSP)字符。
<key-splines> 表达式的语义是
[SVG 1.1] §19.2.9 定义的语义,如同适用于
key-splines 属性。
<key-times> 表达式用于指定一组相对时间值列表, 这些值控制动画的节奏,其中每对值由 SEMICOLON (U+003B) 字符分隔, 该字符两侧可选地包围线性空白(LWSP)字符。
<key-times> 表达式的语义是
[SVG 1.1] §19.2.9 定义的语义,如同适用于
key-times 属性。
本节规定核心词汇目录中的元数据事项,其中 元数据应理解为适用于参数、内容、 样式、布局、计时,甚至元数据本身的一层可分离信息,其中由元数据 表示的信息采用以下两种形式之一:(1) 本规范为 文档实例中的标准化使用而定义的元数据,以及 (2) 在本规范范围之外定义的任意 元数据,其使用和语义完全取决于应用程序对 TTML 内容的使用。
本规范不为元数据定义任何呈现语义;因此,符合规范的 呈现处理器可以忽略所有元数据事项。
注:
虽然本规范不为元数据赋予任何呈现语义,但本规范的超集 配置文件可以这样做,在这种情况下,由该配置文件定义的任何依赖于元数据的呈现语义 被认为超出本规范范围。
14.1.1 metadata 元素作为 用于分组元数据信息的通用容器元素。
此外,以下元素均在 TT Metadata Namespace 中定义, 为预期在文档实例中常用的元数据 提供标准表示:
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 Namespace 中的任何属性}
内容: (
|
注:
特定元数据项的含义必须在其出现的上下文中求值。
核心词汇目录允许任何
内容元素类型上出现任意数量的
metadata 元素子级。关于此类使用适用的任何约束,
见具体元素词汇定义。
以下示例说明文档元数据的使用。
...
<head>
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
<ttm:title>Document Metadata Example</ttm:title>
<ttm:desc>This document employs document metadata.</ttm:desc>
</metadata>
</head>
...
|
以下示例说明元素元数据的使用。
...
<div>
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
<ttm:title>Chapter 6 – Sherlock Holmes Gives a Demonstration</ttm:title>
<ttm:desc>Holmes shows Watson how the murderer entered the window.</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>Foreign Element Metadata Example</dc:title> <dc:description>Express metadata using elements in foreign namespace.</dc:description> <dc:format xsi:type="dcterms:IMT">application/ttml+xml</dc:format> </metadata> ... |
注:
在上例中,Dublin Core 元数据词汇定义的若干元素 用于表达文档级元数据。
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> |
ttm:actor 元素的 agent 属性必须
引用一个重要 ttm:agent 元素,该元素表示
扮演角色部分的代理。
从
ttm:actor 元素的
agent 属性引用其父 ttm:agent 元素的使用已废弃,
并且此外,此类循环引用链的语义
不由本规范定义。
注:
如果实现跟随此类 代理引用的循环链,则建议检测此 条件并终止进一步的代理引用解引用,以 避免无限循环。
注:
在演员扮演自己的情况下,
例如 Steve Coogan 在 The Trip 中扮演 Steve Coogan,
预期做法是使用两个 ttm:agent 元素。第一个
元素(对应于 Steve Coogan 这个人)使用
值为 person 的 type 属性,而
第二个元素(对应于 Steve Coogan 这个角色)使用 (i)
值为 character 的 type 属性,以及 (ii)
一个引用第一个
ttm:agent 元素的子 ttm:actor 元素。
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 元素的子级或作为 head 元素的
metadata 子元素的子级指定时,才被认为是重要的。
注:
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">Connery</ttm:name>
<ttm:name type="given">Thomas Sean</ttm:name>
<ttm:name type="alias">Sean</ttm:name>
<ttm:name type="full">Sir Thomas Sean Connery</ttm:name>
</ttm:agent>
<ttm:agent xml:id="bond" type="character">
<ttm:name type="family">Bond</ttm:name>
<ttm:name type="given">James</ttm:name>
<ttm:name type="alias">007</ttm:name>
<ttm:actor agent="connery"/>
</ttm:agent>
</head>
<body>
<div>
...
<p ttm:agent="bond">I travel, a sort of licensed troubleshooter.</p>
...
</div>
</body>
</tt>
|
注:
在上例中,定义了两个代理:真实(person)代理 Sean
Connery,以及虚构(character)代理 James Bond,其中后者
通过一个 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 Namespace 中的以下属性,
以供 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.1] Production [4a] |
同一个 role token R 不应在
ttm:role 属性的值中出现多于一次。
注:
此约束旨在阻止使用冗余 role token。
注:
所有不以
x- 前缀开头的 ttm:role 值都保留给未来标准化。
注:
如果使用 ttm:role 的自定义 x- 前缀形式,
建议同时使用组织唯一的中缀,
以防止冲突。例如,x-example-org-custom-role。此外,
role 值注册表位于
https://www.w3.org/wiki/TTML/RoleRegistry,
以促进互操作性和避免冲突。
元数据词汇可以使用以下表达式:
<item-name> 表达式用于指定使用 ttm:item 元素表达的元数据项名称。
<item-name> : <named-item> | xsd:QName |
如果 item name 表达式采用限定名(xsd:QName)形式, 则该限定名的前缀必须已在命名空间声明中声明,如 [XML Namespaces 1.0] 所规定。
所有不采用限定名(xsd:QName) 形式的 <item-name> 值,要么由本规范定义,要么保留给 W3C 未来标准化。
注:
本规范定义的所有 item name 预期都是未限定的(无前缀), 而由外部规范定义的 item name 是限定的(带前缀)。
注:
关于限定 item 命名空间的注册表,见 https://www.w3.org/wiki/TTML/ItemNameRegistry。
<named-item> 值是一个命名元数据项枚举集合的成员,
这些项通过
ttm:item 元素与值关联。
<named-item> : "altText" | "usesForced" |
altText一个表达替代文本内容的字符串,其值 遵守 xsd:string。 通常用于为某些相关图像内容提供文本等价物或摘要。
注:
此文本等价物可用于支持内容索引,并且还有助于 在创作期间对文档进行质量检查。
注:
与 [HTML 5.2] 相比, 此命名元数据项的文本内容并非意图在引用元素的主要(而非替代) 内容无法呈现时替代该元素进行呈现;但是, 此替代文本内容可由辅助技术使用。
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 Schema Definition(XSD)模式
在本附录规定的模式与本规范正文定义的 文档类型、元素类型或属性类型的规范性定义 存在差异的任何情况下,以本规范正文为准。
基于 Relax NG Compact Syntax(RNC)[RELAX NG] 的 TTML 内容模式可在 ZIP Archive 获得。出于定义 本规范所定义 Timed Text Markup Language 内容有效性的目的, 此模式应被视为非规范性。 特别是,TTML 内容的形式有效性 由 3.1 文档一致性定义。
基于 W3C XML Schema Definition(XSD)[XML Schema Part 1] 的 TTML 内容模式可在 ZIP Archive 获得。出于定义 本规范所定义 Timed Text Markup Language 内容有效性的目的, 此模式应被视为非规范性。 特别是,TTML 内容的形式有效性 由 3.1 文档一致性定义。
本附录是规范性的。
本附录规定 (1) 一组特性指称,其中每个指称 标记本规范定义的一个或多个语法和/或语义特性, 以及 (2) 对于每个被指称特性,该特性对于符合 3.2.2 转换处理器一致性或 3.2.3 呈现处理器一致性要求的 TTML 内容处理器而言是强制还是可选。
注:
如果 TTML 处理器相对于特性指称 F 的定义, 满足本附录关于转换或呈现处理(分别适用)的要求, 则称该处理器实现转换语义或 实现呈现语义。
注:
如果下方某个特性指称的定义没有限定到特定元素类型或上下文, 则支持 该(被指称)特性意在表示支持其在所有允许使用上下文中的使用。
例如,支持
#length-root-container-relative
特性意味着支持它与任何
<length>
表达式一起使用,只要该使用未被另行禁止。
注:
如果 TTML 处理器的实现不支持某个特性的语义, 但该实现已知该特性的语法表达式,则建议该实现能够解析该表达式, 但忽略表达式中不受支持组件的语义。
例如,如果支持 #textEmphasis-minimal,
但不支持 #textEmphasis-color,
则包含 <emphasis-color> 组件的
tts:textEmphasis 值应当
被解析,同时忽略该不受支持组件的语义(但不忽略该属性值中其他
受支持组件的语义)。
特性指称表示为一个遵守以下 形式的字符串:
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.1] Production [4a]
本规范未定义的所有 feature-designation 值都保留
给未来标准化。
以下各小节定义所有特性指称, 它们以相对于 TT Feature Namespace 基 URI 的 相对 URI(片段标识符)表达。
当本节中特性指称符的定义引用 [TTML1] 中同一特性指称符的定义,并且后者(被引用的)定义使用短语“all defined values”时,则这些 值由 [TTML1] 中定义的所有值组成;否则,当短语 “all defined values”直接出现在下方时,则这些值由本规范定义的所有值组成。
注:
本节中后缀为 -version-2 的特性指称
是由本(第二)版 TTML 规范新
定义的,即 TTML2。
如果 TTML 处理器支持以下特性,则它支持
#animate 特性:
#animate 特性是
#animate-minimal 特性的语法和语义扩展。
如果内容配置文件要求或允许使用 #animate
特性,却禁止使用以下任何
特性,则为错误:
#animate-fill、
#animate-minimal、
#animate-paced、
#animate-repeat 或
#animate-spline。
如果 TTML 转换处理器
在 animate 元素
与 calcMode 属性的 discrete 和 linear 值一起使用时,
能识别并能够转换其语义,
则它支持 #animate-minimal
特性。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#animate-minimal
特性。
注:
支持 calcMode 属性的 discrete 和
linear 值,也意味着支持
keyTimes 属性。
注:
支持 #animate-minimal 特性并不意味着支持以下任何
特性:
#animate-fill、
#animate-paced、
#animate-repeat 或
#animate-spline。
如果 TTML 转换处理器
能识别并能够转换
animate 元素的
fill 属性语义,
则它支持
#animate-fill
特性。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#animate-fill
特性。
如果 TTML 转换处理器
在 animate 元素
与 calcMode 属性的 paced 值一起使用时,
能识别并能够转换其语义,
则它支持
#animate-paced
特性。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#animate-paced
特性。
如果 TTML 转换处理器
能识别并能够转换
animate 元素的
repeatCount 属性语义,
则它支持
#animate-repeat
特性。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#animate-repeat
特性。
如果 TTML 转换处理器
在 animate 元素
与 calcMode 属性的 spline 值一起使用时,
能识别并能够转换其语义,
则它支持
#animate-spline
特性。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#animate-spline
特性。
注:
支持 calcMode 属性的 spline 值,也意味着支持
keySplines 属性。
如果 TTML 内容处理器支持 [TTML1] §D.1.1 定义的 #animation
特性,则它支持
#animation
特性。
注:
支持 #animation 特性在功能上等价于支持
#set 特性。
如果内容配置文件要求或允许使用 #animation
特性,却禁止使用
#set 特性,则为错误。
如果 TTML 转换处理器
能识别并能够转换 13 动画定义的以下词汇,
则它支持
#animation-out-of-line
特性:
并支持 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 转换处理器
能识别并能够转换 9 嵌入内容定义的以下
词汇,
则它支持
#audio
特性:
如果 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 转换处理器
能识别并能够
转换 tts:backgroundClip
属性的所有已定义值,
则它支持
#backgroundClip 特性。
如果 TTML 呈现处理器
为 tts:backgroundClip
属性的所有已定义值实现呈现语义支持,
则它支持
#backgroundClip 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.2 定义的 #backgroundColor
特性,则它支持
#backgroundColor
特性。
注:
支持 #backgroundColor 特性在功能上等价于支持
以下特性:
如果内容配置文件要求或允许使用
#backgroundColor 特性,却禁止使用以下任何
特性:#backgroundColor-block、
#backgroundColor-inline 或
#backgroundColor-region,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.3 定义的 #backgroundColor-block
特性,则它支持
#backgroundColor-block
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.4 定义的 #backgroundColor-inline
特性,则它支持
#backgroundColor-inline
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.5 定义的 #backgroundColor-region
特性,则它支持
#backgroundColor-region
特性。
如果 TTML 转换处理器
能识别并能够
转换 tts:backgroundExtent
属性的所有已定义值,
则它支持
#backgroundExtent 特性。
如果 TTML 呈现处理器
为 tts:backgroundExtent
属性的所有已定义值实现呈现语义支持,
则它支持
#backgroundExtent 特性。
如果 TTML 转换处理器
能识别并能够
转换 tts:backgroundImage
属性的所有已定义值,
则它支持
#backgroundImage 特性。
如果 TTML 呈现处理器
为 tts:backgroundImage
属性的所有已定义值实现呈现语义支持,
则它支持
#backgroundImage 特性。
如果 TTML 转换处理器
能识别并能够
转换 tts:backgroundOrigin
属性的所有已定义值,
则它支持
#backgroundOrigin 特性。
如果 TTML 呈现处理器
为 tts:backgroundOrigin
属性的所有已定义值实现呈现语义支持,
则它支持
#backgroundOrigin 特性。
如果 TTML 转换处理器
能识别并能够
转换 tts:backgroundPosition
属性的所有已定义值,
则它支持
#backgroundPosition 特性。
如果 TTML 呈现处理器
为 tts:backgroundPosition
属性的所有已定义值实现呈现语义支持,
则它支持
#backgroundPosition 特性。
如果 TTML 转换处理器
能识别并能够
转换 tts:backgroundRepeat
属性的所有已定义值,
则它支持
#backgroundRepeat 特性。
如果 TTML 呈现处理器
为 tts:backgroundRepeat
属性的所有已定义值实现呈现语义支持,
则它支持
#backgroundRepeat 特性。
如果 TTML 转换处理器
能识别并能够转换
6.1 配置文件元素词汇定义的以下词汇中所应用的
xml:base
属性,
则它支持
#base
特性:
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#base
特性。
如果 TTML 转换处理器
能识别并能够转换
6.1
配置文件元素词汇定义的所有允许该属性的词汇中所应用的
xml:base
属性,但以下除外:
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#base-general
特性。
如果 TTML 处理器支持
以下特性,则它支持 #base-version-2 特性:
#base-version-2 特性是
#base 特性的语法和语义扩展。
如果内容配置文件要求或允许使用 #base-version-2
特性
却禁止使用以下任何特性:
#base 或
#base-general,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.6 定义的 #bidi
特性,则它支持
#bidi
特性。
如果内容配置文件要求或允许使用 #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 转换处理器
在 tts:border
属性应用于会在呈现处理期间生成
块区域的内容元素时,能识别并
能够转换该属性的所有已定义值,
则它支持
#border-block 特性。
如果 TTML 呈现处理器
在 tts:border
属性应用于生成
块区域的内容元素时,为该属性实现呈现语义
支持,
则它支持
#border-block 特性。
如果 TTML 转换处理器
在 tts:border
属性应用于会在呈现处理期间生成
行内区域的内容元素时,能识别并
能够转换该属性的所有已定义值,
则它支持
#border-inline 特性。
如果 TTML 呈现处理器
在 tts:border
属性应用于生成
行内区域的内容元素时,为该属性实现呈现语义
支持,
则它支持
#border-inline 特性。
如果 TTML 处理器支持
以下特性,则它支持 #border-radii 特性:
如果内容配置文件要求或允许使用 #border-radii
特性却禁止使用以下任何
特性:
#border-radii-1 或
#border-radii-2,则为错误。
如果 TTML 转换处理器
能识别并能够转换
tts:border
属性中指定的
<border-radii> 值表达式的
单分量值,
则它支持
#border-radii-1 特性。
如果 TTML 呈现处理器
为 tts:border
属性中指定的
<border-radii> 值表达式的
单分量值实现呈现语义支持,
则它支持
#backgroundClip 特性。
如果 TTML 转换处理器
能识别并能够转换
tts:border
属性中指定的
<border-radii> 值表达式的
双分量值,
则它支持
#border-radii-2 特性。
如果 TTML 呈现处理器
为 tts:border
属性中指定的
<border-radii> 值表达式的
双分量值实现呈现语义支持,
则它支持
#backgroundClip 特性。
如果 TTML 转换处理器
在 tts:border
属性应用于 region 元素时,能识别并
能够转换该属性的所有已定义值,
则它支持
#border-region 特性。
如果 TTML 呈现处理器
在 tts:border
属性应用于 region 元素时,为该属性实现呈现语义
支持,
则它支持
#border-region 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.7 定义的 #cellResolution
特性,则它支持
#cellResolution
特性。
如果 TTML 转换处理器
能识别并能够转换 9 嵌入内容定义的以下
词汇,
则它支持
#chunk
特性:
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#chunk
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.8 定义的 #clockMode
特性,则它支持
#clockMode
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.9 定义的 #clockMode-gps
特性,则它支持
#clockMode-gps
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.10 定义的 #clockMode-local
特性,则它支持
#clockMode-local
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.11 定义的 #clockMode-utc
特性,则它支持
#clockMode-utc
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.12 定义的 #color
特性,则它支持
#color
特性。
如果 TTML 处理器支持以下特性,则它支持
#condition 特性:
如果内容配置文件要求或允许使用 #condition
特性,却禁止使用以下任何
特性:
#condition-fn-media、
#condition-fn-parameter、
#condition-fn-supports、
#condition-primary,则为错误。
如果 TTML 内容处理器
支持在 <condition> 值
表达式中使用的
<media-function>
子表达式,则它支持
#condition-fn-media 特性。
如果 TTML 内容处理器
支持在 <condition> 值
表达式中使用的
<parameter-function>
子表达式,则它支持
#condition-fn-parameter 特性。
如果 TTML 内容处理器
支持在 <condition> 值
表达式中使用的
<supports-function>
子表达式,则它支持
#condition-fn-supports 特性。
如果 TTML 内容处理器
支持不包含
<condition-function> 子表达式的
<condition> 值表达式,
则它支持
#condition-primary 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.13 定义的 #content
特性,则它支持
#content
特性。
如果 TTML 处理器支持
以下特性,则它支持 #content-sizing 特性:
如果内容配置文件要求或允许使用 #content-sizing
特性却禁止使用以下任何
特性:
#bpd 或
#ipd,则为错误。
如果 TTML 转换处理器 (1) 支持非组合配置文件,并且 (2) 能识别并能够转换:
6.2 配置文件属性词汇定义的以下配置文件属性词汇:
ttp:inferProcessorProfileSource
属性的 first 值,
ttp:profile 元素上的
designator 属性,
ttp:profile 元素上
type 属性的 content 值,以及
ttp:feature 和
ttp:extension 元素上
value 属性的 prohibited 值。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#contentProfiles
特性。
如果 TTML 转换处理器
(1) 支持
#contentProfiles 特性,
(2) 支持组合配置文件,并且 (3) 能识别并能够转换:
6.2 配置文件属性词汇定义的以下配置文件属性词汇:
ttp:inferProcessorProfileSource
属性的 combined 值,以及
ttp:profile 元素上的
combine 属性。
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#contentProfiles-combined
特性。
#contentProfiles-combine 特性是
#contentProfiles 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#contentProfiles-combine 特性
却禁止使用 #contentProfiles
特性,则为错误。
注:
支持 #contentProfiles-combined 特性并不意味着支持
嵌套配置文件。
如果 TTML 内容处理器支持 [TTML1] §D.1.14 定义的 #core
特性,则它支持
#core
特性。
如果 TTML 转换处理器
能识别并能够转换 9 嵌入内容定义的以下
词汇,
则它支持
#data
特性:
如果 TTML 呈现处理器
为上文枚举的相同词汇实现呈现语义支持,
则它支持
#data
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.15 定义的 #direction
特性,则它支持
#direction
特性。
如果 TTML 转换处理器
能识别并能够
转换 tts:disparity 属性,
则它支持
#disparity 特性。
如果 TTML 呈现处理器
为
tts:disparity 属性实现呈现语义支持,
则它支持
#disparity 特性。
注:
支持 #disparity 特性并不意味着支持
#region-implied-animation
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.16 定义的 #display
特性,则它支持
#display
特性。
如果内容配置文件要求或允许使用 #display
特性却禁止使用以下任何
特性:
#display-block、
#display-inline 或
#display-region,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.17 定义的 #display-block
特性,则它支持
#display-block
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.18 定义的 #display-inline
特性,则它支持 #display-inline 特性。
如果 TTML 转换处理器在
tts:display 属性的
inlineBlock
值应用于会在呈现处理期间生成
行内区域的内容元素时,能识别并能够转换该值,
则它支持
#display-inlineBlock 特性。
如果 TTML 呈现处理器在
tts:display 属性的
inlineBlock
值应用于会在呈现处理期间生成
行内区域的内容元素时,支持该值的呈现语义,
则它支持
#display-inlineBlock 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.19 定义的 #display-region
特性,则它支持 #display-region 特性。
如果 TTML 处理器支持以下特性,则它支持
#display-version-2 特性:
#display-version-2 特性是
#display 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#display-version-2 特性,
却禁止使用以下任何特性:
#display、
#display-block、
#display-inline、
#display-inlineBlock 或
#display-region,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.20 定义的 #displayAlign
特性,则它支持 #displayAlign 特性。
如果内容配置文件要求或允许使用 #displayAlign
特性,却禁止使用以下任何
特性:#displayAlign-region 或
#displayAlign-relative,则为错误。
如果 TTML 转换处理器在
tts:displayAlign
属性应用于会在呈现处理期间生成块区域的
内容元素时,为该属性实现转换语义
支持,则它支持
#displayAlign-block 特性。
如果 TTML 呈现处理器在
tts:displayAlign
属性应用于生成块区域的
内容元素时,为该属性实现呈现语义
支持,则它支持
#displayAlign-block 特性。
如果 TTML 转换处理器能识别并
能够转换 tts:displayAlign 属性的
justify 值,
则它支持 #displayAlign-justify 特性。
如果 TTML 呈现处理器为
tts:displayAlign 属性的
justify 值实现呈现语义支持,
则它支持
#displayAlign-justify 特性。
如果 TTML 转换处理器在
tts:displayAlign
属性应用于 region 元素时,
为该属性实现转换语义
支持,则它支持
#displayAlign-region 特性。
如果 TTML 呈现处理器在
tts:displayAlign
属性应用于 region 元素时,
为该属性实现呈现语义
支持,则它支持
#displayAlign-region 特性。
如果 TTML 转换处理器能识别并
能够转换 tts:displayAlign
属性的 before、center
和 after 值,
则它支持 #displayAlign-relative 特性。
如果 TTML 呈现处理器为
tts:displayAlign
属性的 before、center 和
after 值实现呈现语义
支持,则它支持 #displayAlign-relative 特性。
如果 TTML 处理器支持以下特性,则它支持
#displayAlign-version-2 特性:
#displayAlign-version-2 特性是
#displayAlign 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#displayAlign-version-2 特性,却禁止使用以下任何
特性:
#displayAlign、
#displayAlign-block、
#displayAlign-justify、
#displayAlign-region 或
#displayAlign-relative,则为错误。
如果 TTML 转换处理器能识别并能够
转换
ttp:displayAspectRatio
属性,则它支持
#displayAspectRatio 特性。
如果 TTML 呈现处理器为
ttp:displayAspectRatio
属性实现呈现语义支持,
则它支持 #displayAspectRatio 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.21 定义的 #dropMode
特性,则它支持 #dropMode 特性。
如果内容配置文件要求或允许使用 #dropMode
特性,却禁止使用以下任何
特性:#dropMode-dropNTSC、
#dropMode-dropPAL 或
#dropMode-nonDrop,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.22 定义的 #dropMode-dropNTSC
特性,则它支持 #dropMode-dropNTSC 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.23 定义的 #dropMode-dropPAL
特性,则它支持 #dropMode-dropPAL 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.24 定义的 #dropMode-nonDrop
特性,则它支持 #dropMode-nonDrop 特性。
如果 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 内容处理器支持 [TTML1] §D.1.25 定义的 #extent
特性,则它支持 #extent 特性。
如果内容配置文件要求或允许使用 #extent 特性
却禁止使用以下任何
特性:#extent-region 或
#extent-root,则为错误。
注:
支持 #extent 特性并不意味着支持
#region-implied-animation
特性。
如果 TTML 内容处理器支持 [TTML1] §8.2.7 定义的
tts:extent
属性的 auto 值的语法和语义,则它支持
#extent-auto 特性。
如果 TTML 转换处理器能识别并能够
转换本规范定义的
tts:extent
属性的 auto 值的语法和语义,
则它支持
#extent-auto-version-2 特性。
如果 TTML 呈现处理器为上文描述的
tts:extent 属性的
auto 值的语义扩展实现呈现语义支持,
则它支持
#extent-auto-version-2
特性。
#extent-auto-version-2 特性是
#extent-auto 特性的语义扩展。
如果内容配置文件要求或允许使用
#extent-auto-version-2 特性,却禁止使用 (1)
#extent-auto 特性
或 (2) 以下所有特性:
#extent-root、
#extent-region 和
#extent-image,则为错误。
如果 TTML 转换处理器能识别并能够
转换
tts:extent
属性的 contain 值,
则它支持 #extent-contain 特性。
如果 TTML 呈现处理器为
tts:extent 属性的
contain 值实现呈现语义支持,
则它支持 #extent-contain 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:extent
属性的 cover 值,
则它支持 #extent-cover 特性。
如果 TTML 呈现处理器为
tts:extent 属性的
cover 值实现呈现语义支持,
则它支持 #extent-cover 特性。
如果 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 转换处理器支持
image 元素上所应用的
tts:extent 属性中由
#extent-auto-version-2 和
#extent-length-version-2 特性支持的
属性值,则它支持
#extent-image 特性。
如果 TTML 呈现处理器为上文枚举的相同词汇实现呈现语义支持,
则它支持
#extent-image
特性。
如果内容配置文件要求或允许使用 #extent-image
特性,却禁止使用以下任何
特性:#extent,
特性:#extent-auto-version-2,或
#extent-length-version-2,则为错误。
如果 TTML 内容处理器支持
[TTML1] §8.2.7 定义的
tts:extent 属性的
<length> 分量值,
则它支持 #extent-length 特性。
如果 TTML 内容处理器在应用于
tts:extent 属性的
<length> 分量值时
支持
#length-version-2 特性,
则它支持 #extent-length-version-2 特性。
#extent-length-version-2 特性是
#extent-length 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#extent-length-version-2 特性,
却禁止使用 #extent-length
特性,则为错误。
如果 TTML 转换处理器在
tts:extent 属性中使用时,能识别并能够
转换 <measure> 样式值表达式的以下值:
auto
fitContent
maxContent
minContent
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持 #extent-measure 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.26 定义的 #extent-region
特性,则它支持 #extent-region 特性。
注:
支持 #extent-region 特性意味着在应用于
region 元素时,支持
#extent-auto 和
#extent-length 特性。
如果 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 内容处理器支持 [TTML1] §D.1.27 定义的 #extent-root
特性,则它支持 #extent-root 特性。
注:
支持 #extent-root 特性意味着在应用于
tt 元素时,支持
#extent-auto 和
#extent-length 特性。
如果 TTML 处理器支持以下特性,则它支持
#extent-root-version-2 特性:
#extent-root-version-2 特性是
#extent-root 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#extent-root-version-2 特性,
却禁止使用以下任何特性:
#extent-root、
#extent-auto-version-2 或
#extent-length-version-2,则为错误。
如果 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 转换处理器能识别并能够转换
9 嵌入内容定义的以下
词汇,
则它支持
#font
特性:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#font
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.28 定义的 #fontFamily
特性,则它支持 #fontFamily 特性。
如果内容配置文件要求或允许使用 #fontFamily
特性,却禁止使用以下任何
特性:#fontFamily-generic 或
#fontFamily-non-generic,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.29 定义的 #fontFamily-generic
特性,则它支持 #fontFamily-generic 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.30 定义的 #fontFamily-non-generic
特性,则它支持 #fontFamily-non-generic 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:fontKerning
属性,则它支持
#fontKerning 特性。
如果 TTML 呈现处理器为
tts:fontKerning 属性实现呈现语义支持,
则它支持
#fontKerning 特性。
如果 TTML 转换处理器能识别并能够
转换 tts:fontSelectionStrategy
属性的 auto 值,
则它支持
#fontSelectionStrategy 特性。
如果 TTML 呈现处理器为
tts:fontSelectionStrategy
属性的 auto 值实现呈现语义支持,
则它支持
#fontSelectionStrategy 特性。
如果 TTML 转换处理器能识别并能够
转换 tts:fontSelectionStrategy
属性的 character 值,
则它支持
#fontSelectionStrategy-character 特性。
如果 TTML 呈现处理器为
tts:fontSelectionStrategy
属性的 character 值实现呈现语义
支持,则它支持
#fontSelectionStrategy-character 特性。
如果 TTML 转换处理器能识别并能够
转换 tts:fontShear 属性,
则它支持
#fontShear 特性。
如果 TTML 呈现处理器为
tts:fontShear 属性实现呈现语义支持,
则它支持
#fontShear 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.31 定义的 #fontSize
特性,则它支持 #fontSize 特性。
如果内容配置文件要求或允许使用 #fontSize
特性,却禁止使用以下任何
特性:#fontSize-anamorphic 或
#fontSize-isomorphic,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.32 定义的 #fontSize-anamorphic
特性,则它支持 #fontSize-anamorphic 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.33 定义的 #fontSize-isomorphic
特性,则它支持 #fontSize-isomorphic 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.34 定义的 #fontStyle
特性,则它支持 #fontStyle 特性。
注:
支持 #fontStyle 特性在功能上等价于支持 (1)
#fontStyle-italic 和
#fontStyle-oblique 特性
以及 (2) tts:fontStyle 属性的
normal 值。
如果内容配置文件要求或允许使用 #fontStyle
特性,却禁止使用以下任何
特性:#fontStyle-italic 或
#fontStyle-oblique,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.35 定义的 #fontStyle-italic
特性,则它支持 #fontStyle-italic 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.36 定义的 #fontStyle-oblique
特性,则它支持 #fontStyle-oblique 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:fontVariant
属性,则它支持
#fontVariant 特性。
如果 TTML 呈现处理器为
tts:fontVariant 属性实现呈现语义支持,
则它支持
#fontVariant 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.37 定义的 #fontWeight
特性,则它支持 #fontWeight 特性。
注:
支持 #fontWeight 特性在功能上等价于支持
(1)
#fontWeight-bold 特性
以及 (2) tts:fontWeight 属性的
normal 值。
如果内容配置文件要求或允许使用 #fontWeight
特性,却禁止使用
#fontWeight-bold 特性,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.38 定义的 #fontWeight-bold
特性,则它支持 #fontWeight-bold 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.39 定义的 #frameRate
特性,则它支持 #frameRate 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.40 定义的 #frameRateMultiplier
特性,则它支持 #frameRateMultiplier 特性。
如果 TTML 转换处理器能识别并能够转换
9 嵌入内容定义的以下
词汇,
则它支持
#image
特性:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#image
特性。
如果 TTML 转换处理器能识别并能够转换
[PNG] 定义的内容类型为
image/png 的图像
资源,
则它支持
#image-png
特性。
如果 TTML 呈现处理器为
[PNG] 定义的内容类型为
image/png 的图像
资源实现呈现语义支持,
则它支持
#image-png
特性。
如果 TTML 转换处理器能识别并能够转换 10 样式定义的以下 词汇:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#initial
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.41 定义的 #layout
特性,则它支持 #layout 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.42 定义的 #length
特性,则它支持 #length 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.43 定义的 #length-cell
特性,则它支持 #length-cell 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.44 定义的 #length-em
特性,则它支持 #length-em 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.45 定义的 #length-integer
特性,则它支持 #length-integer 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.46 定义的 #length-negative
特性,则它支持 #length-negative 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.47 定义的 #length-percentage
特性,则它支持 #length-percentage 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.48 定义的 #length-pixel
特性,则它支持 #length-pixel 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.49 定义的 #length-positive
特性,则它支持 #length-positive 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.50 定义的 #length-real
特性,则它支持 #length-real 特性。
如果 TTML 转换处理器能识别并
能够转换 根容器相对的
<length> 样式值
表达式值,则它支持
#length-root-container-relative 特性。
如果 TTML 呈现处理器为
根
容器相对的
<length> 样式
值表达式值实现呈现语义
支持,则它支持
#length-root-container-relative 特性。
如果 TTML 处理器支持以下
特性,则它支持 #length-version-2 特性:
#length-version-2 特性是
#length 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#length-version-2 特性,
却禁止使用以下任何特性:
#length 或
#length-root-container-relative,则为错误。
如果 TTML 转换处理器能识别并能够
转换
tts:letterSpacing
属性,则它支持
#letterSpacing 特性。
如果 TTML 呈现处理器为
tts:letterSpacing 属性实现呈现语义支持,
则它支持
#letterSpacing 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.51 定义的 #lineBreak-uax14
特性,则它支持 #lineBreak-uax14 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.52 定义的 #lineHeight
特性,则它支持 #lineHeight 特性。
如果 TTML 转换处理器能识别并能够
转换 tts:lineShear 属性,
则它支持 #lineShear 特性。
如果 TTML 呈现处理器为
tts:lineShear 属性实现呈现语义支持,
则它支持 #lineShear 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:luminanceGain
属性,则它支持
#luminanceGain 特性。
如果 TTML 呈现处理器为
tts:luminanceGain 实现呈现语义支持,
则它支持
#luminanceGain 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.53 定义的 #markerMode
特性,则它支持 #markerMode 特性。
如果内容配置文件要求或允许使用 #markerMode
特性,却禁止使用以下任何
特性:#markerMode-continuous 或
#markerMode-discontinuous,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.54 定义的 #markerMode-continuous
特性,则它支持 #markerMode-continuous 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.55 定义的 #markerMode-discontinuous
特性,则它支持 #markerMode-discontinuous 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.56 定义的 #metadata
特性,则它支持 #metadata 特性。
如果 TTML 转换处理器能识别并能够转换 14 元数据定义的以下 词汇:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#metadata-item
特性。
注:
本规范不为元数据信息的呈现 定义标准化形式。元数据信息的呈现或 呈现能力被认为 依赖于实现。
如果 TTML 处理器支持
以下特性,则它支持 #metadata-version-2 特性:
#metadata-version-2 特性是
#metadata 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#metadata-version-2 特性,却禁止使用以下任何
特性:
#metadata 或
#metadata-item,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.57 定义的 #nested-div
特性,则它支持 #nested-div 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.58 定义的 #nested-span
特性,则它支持 #nested-span 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.59 定义的 #opacity
特性,则它支持 #opacity 特性。
注:
支持 #opacity 特性在功能上等价于支持
#opacity-region 特性。
如果内容配置文件要求或允许使用 #opacity
特性,却禁止使用
#opacity-region 特性,则为错误。
如果 TTML 转换处理器在
tts:opacity
属性应用于会在呈现处理期间生成
块区域的内容元素时,能识别并
能够转换该属性的所有已定义值,
则它支持 #opacity-block 特性。
如果 TTML 呈现处理器(1) 在
tts:opacity
属性应用于生成
块区域的内容元素时,为该属性实现呈现语义
支持,并且 (2) 能够显示或生成可区分至少八 (8) 个 opacity 值的
输出显示
信号,则它支持
#opacity-block 特性。
如果 TTML 转换处理器在
tts:opacity
属性应用于会在呈现处理期间生成
行内区域的内容元素时,能识别并
能够转换该属性的所有已定义值,
则它支持 #opacity-inline 特性。
如果 TTML 呈现处理器(1) 在
tts:opacity
属性应用于生成
行内区域的内容元素时,为该属性实现呈现语义
支持,并且 (2) 能够显示或生成可区分至少八 (8) 个 opacity 值的
输出显示
信号,则它支持
#opacity-inline 特性。
如果 TTML 转换处理器在
tts:opacity
属性应用于 region 元素时,能识别并
能够转换该属性的所有已定义值,
则它支持 #opacity-region 特性。
如果 TTML 呈现处理器(1) 在
tts:opacity
属性应用于 region 元素时,
为该属性实现呈现语义
支持,并且 (2) 能够显示或生成可区分至少八 (8) 个 opacity 值的输出显示
信号,则它支持
#opacity-region 特性。
注:
支持 #opacity-region 特性在功能上等价于支持
#opacity 特性。
如果内容配置文件要求或允许使用 #opacity-region
特性,却禁止使用
#opacity 特性,则为错误。
如果 TTML 处理器支持
以下特性,则它支持 #opacity-version-2 特性:
#opacity-version-2 特性是
#opacity 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#opacity-version-2 特性,
却禁止使用以下任何特性:
#opacity、
#opacity-block、
#opacity-inline 或
#opacity-region,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.60 定义的 #origin
特性,则它支持 #origin 特性。
注:
支持 #origin 特性并不意味着支持
#region-implied-animation
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.61 定义的 #overflow
特性,则它支持 #overflow 特性。
注:
支持 #overflow 特性在功能上等价于支持 (1)
#overflow-visible 特性
以及 (2) tts:overflow 属性的
hidden 值。
如果内容配置文件要求或允许使用 #overflow
特性,却禁止使用
#overflow-visible 特性,
则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.62 定义的 #overflow-visible
特性,则它支持 #overflow-visible 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.63 定义的 #padding
特性,则它支持 #padding 特性。
如果内容配置文件要求或允许使用 #padding
特性,却禁止使用以下任何特性:
#padding-1、
#padding-2、
#padding-3、
#padding-4、
#padding-region。
如果 TTML 内容处理器支持 [TTML1] §D.1.64 定义的 #padding-1
特性,则它支持 #padding-1 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.65 定义的 #padding-2
特性,则它支持 #padding-2 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.66 定义的 #padding-3
特性,则它支持 #padding-3 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.67 定义的 #padding-4
特性,则它支持 #padding-4 特性。
如果 TTML 转换处理器在
tts:padding
属性应用于会在呈现处理期间生成
块区域的内容元素时,能识别并
能够转换该属性的所有已定义值,
则它支持
#padding-block 特性。
如果 TTML 呈现处理器在
tts:padding
属性应用于生成
块区域的内容元素时,为该属性实现呈现语义
支持,
则它支持
#padding-block 特性。
如果 TTML 转换处理器在
tts:padding
属性应用于会在呈现处理期间生成
行内区域的内容元素时,能识别并
能够转换该属性的所有已定义值,
则它支持
#padding-inline 特性。
如果 TTML 呈现处理器在
tts:padding
属性应用于生成
行内区域的内容元素时,为该属性实现呈现语义
支持,
则它支持
#padding-inline 特性。
如果 TTML 内容处理器支持 #padding
特性,则它支持 #padding-region 特性。
#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 转换处理器能识别并能够
转换 (1) ttp:permitFeatureNarrowing
属性,以及 (2)
ttp:feature 和
ttp:extension 元素上的
extends 属性,
则它支持
#permitFeatureNarrowing 特性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#permitFeatureNarrowing
特性。
注:
如果某个 TTML 处理器在 #permitFeatureNarrowing 特性被指定为可选时
不支持它,则会忽略
extends 属性的语义,也就是说,对被扩展特性的支持
不足以
认定该扩展特性受支持。
如果 TTML 转换处理器能识别并能够
转换 (1) ttp:permitFeatureWidening
属性,以及 (2)
ttp:feature 和
ttp:extension 元素上的
restricts 属性,
则它支持
#permitFeatureWidening 特性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#permitFeatureWidening
特性。
注:
如果某个 TTML 处理器在 #permitFeatureWidening 特性被指定为可选时
不支持它,则会忽略
restricts 属性的语义,也就是说,对被限制特性的支持
不足以
认定该受限特性受支持。
如果 TTML 内容处理器支持 [TTML1] §D.1.68 定义的 #pixelAspectRatio
特性,则它支持 #pixelAspectRatio 特性。
如果 TTML 转换处理器能识别并能够
转换 tts:position 属性,
则它支持
#position 特性。
如果 TTML 呈现处理器为
tts:position 属性实现呈现语义支持,
则它支持
#position 特性。
注:
支持 #position 特性并不意味着支持
#region-implied-animation
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.69 定义的 #presentation
特性,则它支持 #presentation 特性。
如果 TTML 处理器 (1) 满足
3.2.1 通用处理器一致性 定义的通用处理器条件,并且
(2) 支持以下特性,则它支持
#presentation-version-2 特性:
#presentation-version-2 特性是
#presentation 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#presentation-version-2 特性,却禁止使用以下任何
特性:
#presentation 或
#profile-version-2,则为错误。
如果 TTML 转换处理器 (1) 支持非组合配置文件,并且 (2) 能识别并能够转换:
6.2 配置文件属性词汇定义的以下配置文件属性词汇:
ttp:profile 元素上的
designator 属性,以及
ttp:profile 元素上
type 属性的 processor 值。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#processorProfiles
特性。
如果 TTML 转换处理器
(1) 支持 #processorProfiles 特性,
(2) 支持组合配置文件,并且 (3) 能识别并
能够转换:
6.2 配置文件属性词汇定义的以下配置文件属性词汇:
ttp:profile 元素上的
combine 属性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#processorProfiles-combined
特性。
#processorProfiles-combine 特性是
#processorProfiles 特性的语法和语义扩展。
如果处理器配置文件要求或允许使用
#processorProfiles-combine 特性,
却禁止使用
#processorProfiles
特性,则为错误。
注:
支持 #processorProfiles-combined 特性并不意味着支持
嵌套配置文件。
如果 TTML 内容处理器支持 [TTML1] §D.1.70 定义的 #profile
特性,则它支持 #profile 特性。
注:
支持 #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 转换处理器能识别并能够转换
div 或 p 元素上按照
11.1.2.1 行内动画的特殊
语义适用于隐含 region 的样式属性,
则它支持 #region-implied-animation 特性。
如果 TTML 呈现处理器为
div 或 p 元素上按照
11.1.2.1 行内动画的特殊
语义适用于隐含 region 的样式属性
实现呈现语义支持,则它支持
#region-implied-animation 特性。
注:
支持 #region-implied-animation 特性并不意味着支持
以下特性:
但是,如果支持这些特性中的任何一个,则支持
#region-implied-animation 特性
确实意味着相对于该特性支持
11.1.2.1 行内动画的特殊
语义。
如果 TTML 转换处理器能识别并能够
转换内容
元素的行内 region 元素子级,如
region 进一步定义,
则它支持
#region-inline 特性。
如果 TTML 呈现处理器为
内容元素的行内 region 元素子级实现呈现语义支持,
如
region 进一步定义,
则它支持
#region-inline 特性。
如果 TTML 转换处理器在以下词汇应用于
region 元素时,能识别并能够转换这些词汇,
则它支持
#region-timing
特性:
如果 TTML 呈现处理器在上文枚举的相同词汇
应用于 region 元素时,
为其实现呈现语义支持,则它支持
#region-timing
特性。
#region-timing 特性是
#timing 特性的语义限制。
注:
由于此特性表示 #timing 特性的一个语义子集,并且
后者是所有转换和呈现处理器的强制特性,
因此此特性
指称的用途实际上限于在内容配置文件定义中使用,其中该定义可以
选择禁止文档实例
使用此特性。
如果 TTML 转换处理器能识别并能够转换
9 嵌入内容定义的以下
词汇,
则它支持
#resources
特性:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#resources
特性。
如果 TTML 处理器支持以下特性,则它支持
#ruby-full 特性:
如果内容配置文件要求或允许使用 #ruby-full
特性
却禁止使用以下任何特性:
#ruby、
#rubyAlign、
#rubyAlign-withBase、
#rubyPosition 或
#rubyReserve,则为错误。
如果 TTML 处理器支持以下
特性,则它支持 #rubyAlign 特性:
如果内容配置文件要求或允许使用 #rubyAlign
特性,却禁止使用以下任何
特性:
#rubyAlign-minimal 或
#rubyAlign-withBase,则为错误。
如果 TTML 转换处理器能识别并能够转换
tts:rubyAlign 属性的
以下值,
则它支持 #rubyAlign-minimal 特性。
start
center
end
spaceAround
spaceBetween
如果 TTML 呈现处理器为
上文枚举的相同值
词汇实现呈现语义支持,
则它支持 #rubyAlign-minimal 特性。
如果 TTML 转换处理器能识别并能够转换
tts:rubyAlign 属性的
withBase 值,
则它支持
#rubyAlign-withBase 特性。
如果 TTML 呈现处理器为
上文枚举的相同值
实现呈现语义支持,
则它支持
#rubyAlign-withBase 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:rubyPosition
属性,
则它支持
#rubyPosition 特性。
如果 TTML 呈现处理器为
tts:rubyPosition 属性实现呈现语义支持,
则它支持
#rubyPosition 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:rubyReserve
属性,
则它支持
#rubyReserve 特性。
如果 TTML 呈现处理器为
tts:rubyReserve 属性实现呈现语义支持,
则它支持
#rubyReserve 特性。
如果 TTML 内容处理器支持 #animation 特性,
则它支持 #set
特性,并且因此
#set 特性是
空扩展,属于
#animation 特性。
如果内容配置文件要求或允许使用 #set 特性,
却禁止使用
#animation 特性,则为错误。
如果 TTML 转换处理器能识别并能够
转换 set 元素上指定的 TT Style Namespaces 中的
多个属性,
则它支持 #set-multiple-styles 特性。
如果 TTML 呈现处理器为
set 元素上指定的 TT Style Namespaces 中的
多个属性实现呈现语义支持,
则它支持 #set-multiple-styles 特性。
如果 TTML 转换处理器能识别并能够
转换 set 元素的 repeatCount 属性,
则它支持 #set-repeat 特性。
如果 TTML 呈现处理器为
set 元素的 repeatCount 属性
实现呈现语义支持,
则它支持 #set-repeat 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.71 定义的 #showBackground
特性,则它支持 #showBackground 特性。
如果 TTML 转换处理器能识别并能够转换
9 嵌入内容定义的以下
词汇,
则它支持
#source
特性:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#source
特性。
如果 TTML 处理器支持
语音合成处理器,
则它支持 #speech 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.72 定义的 #structure
特性,则它支持 #structure 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.73 定义的 #styling
特性,则它支持 #styling 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.74 定义的 #styling-chained
特性,则它支持 #styling-chained 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.75 定义的 #inheritance-content
特性,则它支持 #styling-inheritance-content 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.76 定义的 #styling-inheritance-region
特性,则它支持 #styling-inheritance-region 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.77 定义的 #styling-inline
特性,则它支持 #styling-inline 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.78 定义的 #styling-nested
特性,则它支持 #styling-nested 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.79 定义的 #styling-referential
特性,则它支持 #styling-referential 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.80 定义的 #subFrameRate
特性,则它支持 #subFrameRate 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.81 定义的 #textAlign
特性,则它支持 #textAlign 特性。
如果内容配置文件要求或允许使用 #textAlign
特性,却禁止使用以下任何特性:
#textAlign-absolute 或
#textAlign-relative,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.82 定义的 #textAlign-absolute
特性,则它支持 #textAlign-absolute 特性。
如果 TTML 转换处理器能识别并
能够转换 tts:textAlign 属性的
justify 值,
则它支持 #textAlign-justify 特性。
如果 TTML 呈现处理器为
tts:textAlign 属性的
justify 值实现呈现语义支持,
则它支持
#textAlign-justify 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.83 定义的 #textAlign-relative
特性,则它支持 #textAlign-relative 特性。
如果 TTML 处理器支持以下特性,则它支持
#textAlign-version-2 特性:
#textAlign-version-2 特性是
#textAlign 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#textAlign-version-2 特性,
却禁止使用以下任何特性:
#textAlign、
#textAlign-absolute、
#textAlign-justify 或
#textAlign-relative,则为错误。
如果 TTML 转换处理器能识别并能够
转换
tts:textCombine
属性,
则它支持
#textCombine 特性。
如果 TTML 呈现处理器为
tts:textCombine 属性实现呈现语义支持,
则它支持
#textCombine 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.84 定义的 #textDecoration
特性,则它支持 #textDecoration 特性。
注:
支持 #textDecoration 特性在功能上等价于支持
以下特性:
如果内容配置文件要求或允许使用 #textDecoration
特性
却禁止使用以下任何特性:
#textDecoration-over、
#textDecoration-through 或
#textDecoration-under,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.85 定义的 #textDecoration-over
特性,则它支持 #textDecoration-over 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.86 定义的 #textDecoration-through
特性,则它支持 #textDecoration-through 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.87 定义的 #textDecoration-under
特性,则它支持 #textDecoration-under 特性。
如果 TTML 处理器支持以下特性,则它支持
#textEmphasis 特性:
#textEmphasis 特性是
#textEmphasis-minimal 特性的语法和语义扩展。
如果内容配置文件要求或允许使用 #textEmphasis
特性
却禁止使用以下任何特性:
#textEmphasis-color、
#textEmphasis-minimal 或
#textEmphasis-quoted-string,则为错误。
如果 TTML 转换处理器能识别并能够
转换
tts:textEmphasis
属性中包含
<emphasis-color>
分量的值,
则它支持 #textEmphasis-color 特性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#textEmphasis-color
特性。
如果 TTML 转换处理器能识别并能够
转换
tts:textEmphasis
属性的值,并且该值 (1) 不包含
<emphasis-color> 分量,且
(2) 不包含采用
<quoted-string> 值形式的
<emphasis-style> 分量,
则它支持 #textEmphasis-minimal 特性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#textEmphasis-minimal
特性。
如果 TTML 转换处理器能识别并能够
转换
tts:textEmphasis
属性的值,并且该值包含采用
<quoted-string> 值形式的
<emphasis-style>
分量,
则它支持 #textEmphasis-quoted-string 特性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#textEmphasis-quoted-string
特性。
如果 TTML 转换处理器能识别并能够
转换
tts:textOrientation
属性,
则它支持
#textOrientation 特性。
如果 TTML 呈现处理器为
tts:textOrientation
属性实现呈现语义支持,
则它支持
#textOrientation 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.88 定义的 #textOutline
特性,则它支持 #textOutline 特性。
如果内容配置文件要求或允许使用 #textOutline
特性
却禁止使用以下任何特性:
#textOutline-blurred 或
#textOutline-unblurred,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.89 定义的 #textOutline-blurred
特性,则它支持 #textOutline-blurred 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.90 定义的 #textOutline-unblurred
特性,则它支持 #textOutline-unblurred 特性。
如果 TTML 转换处理器能识别并能够
转换
tts:textShadow
属性,
则它支持
#textShadow 特性。
如果 TTML 呈现处理器为
tts:textShadow 属性实现呈现语义支持,
则它支持
#textShadow 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.91 定义的 #tickRate
特性,则它支持 #tickRate 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.92 定义的 #timeBase-clock
特性,则它支持 #timeBase-clock 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.93 定义的 #timeBase-media
特性,则它支持 #timeBase-media 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.94 定义的 #timeBase-smpte
特性,则它支持 #timeBase-smpte 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.95 定义的 #timeContainer
特性,则它支持 #timeContainer 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.96 定义的 #time-clock
特性,则它支持 #time-clock 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.97 定义的 #time-clock-with-frames
特性,则它支持 #time-clock-with-frames 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.98 定义的 #time-offset
特性,则它支持 #time-offset 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.99 定义的 #time-offset-with-frames
特性,则它支持 #time-offset-with-frames 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.100 定义的 #time-offset-with-ticks
特性,则它支持 #time-offset-with-ticks 特性。
如果 TTML 转换处理器能识别并能够
转换所有满足以下时间表达式语法子集的
<time-expression> 值,
则它支持
#time-wall-clock 特性:
<time-expression> : wallclock-time
如果 TTML 呈现处理器为
上文指定的相同语法实现呈现
语义支持,
则它支持 #time-wall-clock 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.101 定义的 #timing
特性,则它支持 #timing 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.102 定义的 #transformation
特性,则它支持 #transformation 特性。
如果 TTML 处理器
(1) 满足
3.2.1 通用处理器一致性 定义的通用处理器条件,并且
(2) 支持以下特性,则它支持 #transformation-version-2 特性:
#transformation-version-2 特性是
#transformation 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#transformation-version-2 特性,
却禁止使用以下任何特性:
#transformation 或
#profile-version-2,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.103 定义的 #unicodeBidi
特性,则它支持 #unicodeBidi 特性。
注:
支持 #unicodeBidi 特性并不意味着支持
#unicodeBidi-isolate 特性。
如果 TTML 转换处理器能识别并能够
转换 tts:unicodeBidi
属性的 isolate 值,
则它支持
#unicodeBidi-isolate 特性。
如果 TTML 呈现处理器为
tts:unicodeBidi
属性的 isolate 值实现呈现语义支持,
则它支持
#unicodeBidi-isolate 特性。
如果 TTML 内容处理器支持以下特性,则它支持
#unicodeBidi-version-2 特性:
#unicodeBidi-version-2 特性是
#unicodeBidi 特性的语法和语义扩展。
如果 TTML 转换处理器
满足以下条件,则它支持
#validation
特性:
它是验证内容处理器;
能识别并能够转换 6.2 配置文件属性词汇定义的以下属性词汇:
如果 TTML 呈现处理器是
验证内容
处理器,并为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#validation
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.104 定义的 #visibility
特性,则它支持 #visibility 特性。
如果内容配置文件要求或允许使用 #visibility
特性
却禁止使用以下任何特性:
#visibility-block、
#visibility-inline 或
#visibility-region,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.105 定义的 #visibility-block
特性,则它支持 #visibility-block 特性。
如果 TTML 转换处理器支持
image 元素上应用的
tts:visibility 属性的
所有已定义值,
则它支持
#visibility-image 特性。
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#visibility-image
特性。
注:
支持 #visibility-image 特性并不意味着支持
#image 特性;不过,如果不支持
后者,则支持
前者没有作用。
如果 TTML 内容处理器支持 [TTML1] §D.1.106 定义的 #visibility-inline
特性,则它支持 #visibility-inline 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.107 定义的 #visibility-region
特性,则它支持 #visibility-region 特性。
如果 TTML 内容处理器支持以下特性,则它支持
#visibility-version-2 特性:
#visibility-version-2 特性是
#visibility 特性的语法和语义扩展。
如果内容配置文件要求或允许使用
#visibility-version-2 特性,
却禁止使用以下任何特性:
#visibility 或
#visibility-image,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.108 定义的 #wrapOption
特性,则它支持 #wrapOption 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.109 定义的 #writingMode
特性,则它支持 #writingMode 特性。
如果内容配置文件要求或允许使用 #writingMode
特性
却禁止使用以下任何特性:
#writingMode-horizontal 或
#writingMode-vertical,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.111 定义的 #writingMode-horizontal
特性,则它支持 #writingMode-horizontal 特性。
注:
支持 #writingMode-horizontal 特性在功能上
等价于支持以下特性:
如果内容配置文件要求或允许使用
#writingMode-horizontal 特性,
却禁止使用以下任何特性:
#writingMode-horizontal-lr 或
#writingMode-horizontal-rl,则为错误。
如果 TTML 内容处理器支持 [TTML1] §D.1.112 定义的 #writingMode-horizontal-lr
特性,则它支持 #writingMode-horizontal-lr 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.113 定义的 #writingMode-horizontal-rl
特性,则它支持 #writingMode-horizontal-rl 特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.110 定义的 #writingMode-vertical
特性,则它支持 #writingMode-vertical 特性。
如果 TTML 转换处理器能识别并能够转换
8.2 内容属性
词汇定义的以下属性
词汇,以供接纳此词汇的受支持元素类型使用,
则它支持
#xlink
特性:
如果 TTML 呈现处理器为
上文枚举的相同词汇实现呈现语义支持,
则它支持
#xlink
特性。
如果 TTML 内容处理器支持 [TTML1] §D.1.114 定义的 #zIndex
特性,则它支持 #zIndex 特性。
下表 表 E-1 – 特性支持 枚举每个已定义的特性指称(不带 TT Feature Namespace 表达),并且对于每个被指称的特性,指定 (1) 首次定义该特性指称的 TTML 版本,以及 (2) 对于符合 3.2.2 转换处理器 一致性 或 3.2.3 呈现 处理器一致性要求的 TTML 内容处理器, 该被指称特性是否必须实现,即为强制(M),或可以实现, 即为可选(O)。
注:
在某些情况下,本规范的此版本(或更高版本)定义了一个新的特性指称,
该指称此前未定义,然而
如此指称的底层功能特性此前已由更早版本定义。
例如,#padding-region
指称是在此处引入的;但是,它引用的功能此前包含在
#padding 指称之下,
而该指称现在以 #padding-region 来定义。在此,TTML1 中引入的
#padding 的底层含义,
与 TTML2 中引入的 #padding-region 仍保持相同。
为方便起见,下表 表 E-2 – 强制特性 - 转换 枚举了符合 3.2.2 转换处理器 一致性要求的 TTML 内容处理器的所有 强制特性,并提供附加 注释以概述使用上下文或特性的性质。 定义相应 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 – 强制特性 - 呈现 枚举了符合 3.2.3 呈现处理器一致性要求的 TTML 内容处理器的所有强制特性,并提供附加 注释以概述使用上下文或特性的性质。 定义相应 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 // expressed as an absolute URI
designation
: "#" token-char+
token-char
: { XML NameChar } // [XML 1.1] Production [4a]
如果某个扩展指称的扩展命名空间是 TT
Extension Namespace,则后续
designation token 的所有值都保留给未来
标准化。
如果某个扩展指称的扩展命名空间不是
TT Extension Namespace,即为 Other Extension Namespace,
则该扩展命名空间必须表示为一个绝对 URI,
能够作为基 URI,与采用片段
标识符形式的 designation token 结合使用。
本附录是规范性的。
本附录规定或通过引用纳入以下标准 TTML 配置文件:
每个 TTML 配置文件都依据一个配置文件 定义文档来定义, 该文档表示为 XML 文档,其中根元素遵守 6.1.1 ttp:profile。
TTML2 完整配置文件预期用于 表达转换和呈现处理的最大一致性。
注:
此配置文件是 DFXP 完整配置文件的超集。
<?xml version="1.0" encoding="utf-8"?>
<!-- this file defines the "ttml2-full" profile of ttml -->
<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/">
<!-- required (mandatory) feature support -->
<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">#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-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" 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>
<!-- optional (voluntary) feature support -->
</features>
<extensions xml:base="http://www.w3.org/ns/ttml/extension/">
<!-- required (mandatory) extension support -->
<!-- optional (voluntary) extension support -->
</extensions>
</profile>
TTML2 呈现配置文件预期用于 表达呈现处理的最低一致性。
注:
此配置文件是 DFXP 呈现 配置文件的超集。
<?xml version="1.0" encoding="utf-8"?>
<!-- this file defines the "ttml2-presentation" profile of ttml -->
<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/">
<!-- required (mandatory) feature support -->
<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>
<!-- optional (voluntary) feature support -->
<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">#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-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" 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/">
<!-- required (mandatory) extension support -->
<!-- optional (voluntary) extension support -->
</extensions>
</profile>
TTML2 转换配置文件预期用于 表达转换处理的最低一致性。
注:
此配置文件是 DFXP 转换 配置文件的超集。
<?xml version="1.0" encoding="utf-8"?>
<!-- this file defines the "ttml2-transformation" profile of ttml -->
<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/">
<!-- required (mandatory) feature support -->
<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>
<!-- optional (voluntary) feature support -->
<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">#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-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" 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/">
<!-- required (mandatory) extension support -->
<!-- optional (voluntary) extension support -->
</extensions>
</profile>
DFXP 完整配置文件由 [TTML1] 附录 F.3,DFXP 完整配置文件规定。
DFXP 呈现配置文件由 [TTML1] 附录 F.2,DFXP 呈现 配置文件规定。
DFXP 转换配置文件由 [TTML1] 附录 F.1,DFXP 转换 配置文件规定。
本附录是规范性的。
本附录规定用于确定根容器区域及其使用的基本特征的语义,包括:
宽高比(显示、存储、像素);
分辨率(空间范围);以及
坐标空间。
有三种宽高比适用于根容器区域:
根容器的显示宽高比对应于根容器
以预期在假想显示设备上呈现的显示像素计的宽高比。
此显示宽高比通过
tt 元素上的
ttp:displayAspectRatio 属性
明确指定,或使用如下所述的其他信息推断。
注:
根容器像素的实际物理呈现,在所定义的 TTML 呈现处理之后,可能会受到 宽高比、采样分辨率和颜色空间方面的许多变换。此类后 TTML 处理完全不在本规范范围内。
根容器的存储宽高比对应于根容器
在文档坐标空间中
以逻辑像素计的宽高比,
其中一个双射(单射且满射)映射将每个逻辑像素关联到
唯一的显示像素。
此存储宽高比通过
tt 元素上的
tts:extent 属性
明确指定,或使用如下所述的其他信息推断。
当在
tt 元素上指定
tts:extent 属性时,则
如果 tts:extent 属性的值 由两个以像素为单位的 <length> 表达式组成,则认为 存储宽高比已指定,并且具有等于 extent 的 宽度除以其高度的数值;
否则(计算值为 contain),
认为存储宽高比未指定,并使用下文所述的其他信息推断。
根容器的像素宽高比定义根容器每个显示像素的宽高比,
由此文档坐标空间中的每个
逻辑像素
都采用关联显示像素的固定宽高比,
使得 DAR = SAR × PAR。
此像素宽高比通过
tt 元素上的
ttp:pixelAspectRato 属性
明确指定,或使用如下所述的其他信息推断。
以下小节规定如何根据文档中指定了哪些(宽高比)来解析这些宽高比。
如果三种宽高比均未指定,则按以下有序步骤确定这三种宽高比:
如果存在相关媒体对象且具有已定义的
DAR,
则 DAR 的解析值为该相关媒体对象的显示宽高比;
否则,DAR 的值由
文档处理上下文(任意)确定;
SAR 和 PAR 的值随后按下文
H.1.2 一个宽高比解析。
如果三种宽高比中仅指定了一种,则另外两种宽高比的解析值按如下方式确定:
如果 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)下所述, 逻辑像素没有固有宽高比,也就是说, 逻辑像素没有已定义形状,这又 意味着它没有已定义大小。 只有当逻辑像素映射到 显示像素时,它才采用固定形状和 大小。 尽管如此,将逻辑像素视为正方形并具有 可测量的绝对大小通常很方便;但是,提醒读者不要得出这种过早的 (且可能不正确的)结论。
如果
tt 元素上指定了
tts:extent 属性的值,且该值由
两个以像素为单位的 <length> 表达式组成,
则这两个表达式表示根容器
区域的宽度和高度,并且
因而确定其综合
分辨率;
否则,根容器区域的综合分辨率由
文档
处理上下文以一种遵守上文
H.1 宽高比所确定的
SAR 解析值的方式(任意)确定。
本附录是规范性的。
本附录规定用于解释文档实例中时间表达式的语义。
注:
下文所用短语本地实时时间旨在对文档处理上下文中的虚拟实时时钟建模,其中 本地表示处于该处理上下文实现的直接邻近范围内。 定义与此虚拟时钟的关系的目的,是为了教学目的建立一种局部有效的物理 时间实现。
注:
下文所用短语播放速率旨在对文档处理上下文中的一个(可能可变的)参数建模,其中 时间的播放(或解释)速率可能被人为拉伸或收窄,例如 在减慢或加快相关媒体对象的 播放速率时。以下讨论不失一般性地假定使用固定播放速率。在 播放速率可变的情况下,可能需要对所得计算作出适当调整。
文档处理上下文定义适用的 纪元以及在建立合成文档 同步基时要使用的任何纪元相关偏移。
当使用 clock 时间基运行时,以下语义适用于解释
由 <time-expression> 定义的
时间表达式,以及它们与媒体时间和本地实时时间的关系。
时钟时间基 C 与
以纪元 E(由
文档处理上下文定义)
表达的本地实时时间 R
的关系如下:
|
由 <time-expression> 表示的时间值表达式
与时钟时间 C 的关系如下:
|
注:
当使用 clock 时间基时,时间表达式中的
frames 和 sub-frames 项以及 frames(f)度量不适用。
时钟时间基 C 独立于媒体时间
M:
|
注:
也就是说,当使用 clock 时间基时,计时与媒体时间脱离
(不一定成比例)。例如,如果媒体播放速率为零 (0),则媒体
播放暂停;但是,计时坐标
将按照时钟时间的自然进展继续前进,并与参考时钟基成正比。
此外,如果媒体播放速率在播放期间发生变化,
呈现计时不受影响。
当使用 media 时间基运行时,以下语义适用于解释
由 <time-expression> 定义的
时间表达式,以及它们与媒体时间、文档时间和本地实时时间的关系。
媒体时间基 M 与
以纪元 E(由
文档处理上下文定义)表达的
本地实时时间 R 的关系如下:
|
注:
如果 playRate 的值由
文档处理上下文确定,
即未设置为默认值 1.0,则该值可能在文档
呈现过程中实时变化,在这种情况下,对于给定 M 值的
R 值预期会基于新的
playRate 值重新求值。
由 <time-expression> 表示的时间值表达式,
根据 ttp:frameRate、ttp:subFrameRate 和
ttp:frameRateMultiplier 参数,与媒体时间
M 的关系如下:
|
注:
如果计算得到的 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">First paragraph</p>
<p xml:id="p2" begin="2s" end="3s">Second paragraph</p>
</div>
</body>
</tt>
|
<tt ttp:timeBase="media" ...>
...
<body>
<div xml:id="d1">
<p xml:id="p1" begin="1s" end="2s">First paragraph</p>
<p xml:id="p2" begin="3s" end="4s">Second paragraph</p>
</div>
</body>
</tt>
|
在此示例中,使用
[SMIL 3.0] 的术语,body
元素的隐式持续时间等同于其计算持续时间,该持续时间也是
根时间
范围。但是,如果
文档处理
上下文指定了适用媒体时间的范围,则这些范围会限制
解析的开始和结束时间,因而也限制
根时间
范围。
在以下示例中,处理上下文定义文档处于活动状态的 媒体时间范围为 1.5s 到 3.5s,并且这定义了根时间范围,因为在这两个时间点均存在 计时内容。
灰色背景表示 文档处理 上下文定义文档为非活动状态的时段。 文档时间坐标空间 不受此变换影响。
如果文档处理上下文定义媒体 时间范围为 0-3s,则 根时间范围 将为从 1s 到 2s,如 p1 所定义,且 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 Sequence 实例中的一个集合。
所有 ISD 相关词汇都定义在 TTML ISD Namespace 中,此处定义为
http://www.w3.org/ns/ttml#isd,
其中推荐前缀为 isd。
注:
除了使用 TTML ISD Namespace 中的元素之外,ISD 文档实例通常还会 包含来自 5.1 命名空间中定义的一个或多个其他 TTML 命名空间的词汇。
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 元素接受零个或多个
ttm:metadata 元素作为其子级,
后跟零个或一个 ttp:profile
元素,
后跟零个或多个 isd:isd 元素。
子 isd:isd 元素必须按照其开始时间的等价媒体时间排序;
此外,任何两个子 isd:isd 元素的时间区间不得(在时间上)重叠。
<isd:sequence
extent = xsd:string
size = xsd:nonNegativeInteger
version = xsd:positiveInteger
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
{any attributes in the ISD Parameter Attribute Set}>
Content:
|
如果指定了 extent 属性,则它必须遵守
<extent> 值
语法的子集,该子集由两个以像素为单位的
<length> 表达式组成,在这种情况下,指定值
表达根容器
区域的空间范围,如
H.2 分辨率所定义,
其中此空间范围全局适用于每一个
由子 isd:isd 元素表示的组成
中间同步文档。
如果指定了 size 属性,则它必须是一个非负整数,
对应于
isd:isd 子元素的数量。
如果未指定,则在
isd:sequence 元素终止之前,
size 必须被视为不定;在终止的情况下,
size 可以通过检查确定。
注:
在实时字幕的情况下,通常会省略 size 属性。
如果指定了 version 属性,则它必须是一个正整数,
对应于创作
ISD 序列文档时使用的
中间同步文档语法
规范的版本。如果指定,其数值必须大于或等于二
(2)。如果未指定,则 version 必须被
视为等于二 (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 元素从每个中间同步文档形式
DOCinter 中保留的根
tt 元素派生并替换该元素;
该中间同步文档形式由
构造中间文档
过程创建。
isd:isd 元素接受零个或多个
ttm:metadata 元素作为其子级,
后跟零个或一个 ttp:profile
元素,
后跟零个或多个 isd:css 元素,
后跟零个或多个 isd:region 元素。
<isd:isd
begin = <time-expression>
end = <time-expression> | "indefinite"
extent = xsd:string
version = xsd:positiveInteger
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
{any attributes in the ISD Parameter Attribute Set}>
Content:
|
必须指定 begin 属性,其值必须采用
<time-expression> 的
offset-time 形式,并且还被限制为使用
s(秒)、
f(帧)、
t(tick)度量,或者可以省略度量,在这种情况下暗含
s 秒。
此
开始时间表示为相对于源 TTML 文档的
文档时间坐标空间
开始时间的偏移;该
isd:isd 元素即从该源 TTML 文档派生。
必须类似地指定 end 属性,并适用相同约束。
如果 end 属性的值采用
<time-expression> 形式,
则此结束时间表示为相对于源 TTML 文档的
文档时间坐标空间
开始时间的偏移;该
isd:isd 元素即从该源 TTML 文档派生;
否则(值为 indefinite),时间范围在编码该属性时
未知,或者不存在时间终点。
注:
用 [SMIL 3.0] 的术语表示,这些
begin 和 end 属性的值
对应于相对于文档开始的活动持续时间的解析开始和结束时间。
如果指定了 extent 属性,则它必须遵守
<extent> 值
语法的子集,该子集由两个以像素为单位的
<length> 表达式组成,在这种情况下,指定值
表达根容器
区域的空间范围,如
H.2 分辨率所定义,其中此
空间范围
适用于由此 isd:isd 元素表示的
中间同步
文档。此外,
如果此 isd:isd 元素包含在
中间同步文档
序列文档中,则
如果容器 isd:sequence 元素指定了
extent 属性,则此
isd:isd 元素
不应指定 extent 属性,并且如果指定,则必须等于容器
isd:sequence 元素上指定的
extent 属性的值。
如果
isd:isd 元素是独立的
中间
同步文档文档,则必须在该元素上指定
xml:lang 属性;否则,可以指定该属性,
并且如果
isd:isd 元素的默认语言不同于其
父 isd:sequence 元素的默认语言,
则应指定该属性。
如果其值为空,则表示没有默认语言适用于
中间
同步文档内的内容。否则,
指定值表示适用的默认语言。
version 属性遵循
isd:sequence 元素类型上同名属性的语法和语义。
version
属性不得指定在不是根文档元素的
isd:isd 元素上,
即作为 isd:sequence 元素子元素的元素上。
如果
isd:isd 元素是独立的
中间
同步文档文档,则可以存在子
ttp:profile 元素,在这种情况下,适用
J.1.1 isd:sequence中指定的相同约束和语义;
否则,如果不是独立文档,则不得存在子
ttp:profile 元素。
isd:css 元素用于表示某些元素集合的唯一计算样式集,
这些元素共享同一组计算样式。特别是,对于源 TTML 文档中
被选中并复制到给定
中间同步文档的
isd:region 元素中的每个
元素 E,
将确定 E 的计算样式
集 CSS(E),并且如果该 CSS(E) 尚未由现有
isd:css 元素指定,则会为其分配唯一标识符并实例化为新的
isd:css 元素。
isd:css 元素接受零个或多个
ttm:metadata 元素作为其子级。
<isd:css
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
{any attributes in TT Style Namespaces}
Content:
|
对于
isd:isd 元素的任意一对子
isd:css 元素
S1 和 S2,S1 的指定样式集
不得与 S2 的指定样式集相同。为了比较两个
指定样式集,必须将样式放入规范顺序,然后按项
比较值是否相等,其中规范顺序依据限定
属性名
顺序,每个限定名由一个元组
<namespace URL, local name>组成,
并且这些元组按组成部分以区分大小写的词法字符串顺序进行比较。
isd:region 元素用于表示布局和呈现 region
以及选入该 region 的内容,其中该内容采用
body 元素及其后代
内容元素的形式。
isd:region 元素接受零个或多个
ttm:metadata 元素作为其子级,
后跟零个或多个 animate
元素,
后跟恰好一个 body
元素。
<isd:region
style = IDREF
ttm:role = xsd:string
xml:base = <uri>
xml:id = ID
xml:lang = xsd:string
Content:
|
如果由 isd:region 元素表示的 region 的计算样式集不是
适用于 region 的初始样式值集,则必须指定
style 属性,该属性引用一个
isd:css 元素,该元素指定该
region 的计算样式集。
以下约束适用于
body 元素
及其后代元素:
未指定 animate 属性;
未指定 begin 属性;
未指定 dur 属性;
未指定 end 属性;
未指定 region 属性;
未指定 timeContainer 属性;
未指定 TT Style Namespaces 中的任何属性;
不存在 set 元素;
任何重要文本节点,即 #PCDATA 上下文中的文本节点,不得不包含在
不包含其他子级的
span 元素中。
此外,对于 body 元素
B 及其
每个后代内容元素 C,如果
B 或每个 C 的计算样式集
不等于其父元素的计算样式集,则该元素 B 或
C 必须指定 style
属性,该属性引用一个
isd:css 元素,该元素指定该
元素的计算样式集。
已定义的参数
属性的以下子集
可按上文所述用于
isd:sequence 或
isd:isd 元素:
采用中间同步文档
语法的具体文档实例,必须编码为使用 UTF-8 字符编码的格式良好的
[XML 1.0] 文档。
此外,这样的文档必须指定
isd:sequence 元素或
isd:isd 元素作为根文档元素。
当由具体 ISD Sequence 或 ISD 实例组成的资源被交换,并且使用媒体
类型来标识该资源的内容类型时,则应使用媒体类型
application/ttml+xml,关于该媒体类型另见
[TTML1] 附录 C。
如果使用此媒体类型,则不得指定可选的 profile 参数,或者
如果指定,处理器必须忽略它。
本附录是规范性的。
注:
有关本规范公开可用的免费版本,参见 http://standards.iso.org/ittf/PubliclyAvailableStandards/c066391_ISO_IEC_14496-22_2015.zip。 有关相关 OpenType Specification 的 Microsoft 版本,参见 https://docs.microsoft.com/en-us/typography/opentype/spec/。 OpenType 是 Microsoft Corporation 的注册商标。
Timed Text Markup Language(TTML),也称为 Timed Text Authoring Format(TTAF)的 Distribution Format Exchange Profile(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 | 支持 绝对位置、 背景色、 双向处理、 块进展维度、 边框(before、after、start、end)、 颜色、 display none、 display inline block、 显示对齐、 字体族、 字体大小、 字体样式、 字体粗细、 高度、 行内进展维度、 行高、 换行选项、 不透明度、 原点、 溢出、 padding(before、after、start、end)、 相对位置、 文本对齐、 文本装饰、 文本阴影、 可见性、 空白折叠、 空白处理、 宽度、 writing mode、 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 | 支持动画化 背景色、 边框颜色、 颜色、 display、 不透明度、 原点、 可见性 |
| N506 | 动画内容 | S | |
| R600 | 元数据项关联 | S | 参见 metadata、Metadata.class |
| R601 | 元数据项组成部分 | P | 支持 name、value |
| R602 | 元数据项值表示 | P | 参见 metadata |
| R603 | 元数据项可扩展性 | S | 参见 metadata 和 ttm:item |
| R604 | 元数据项验证 | S | 参见 metadata |
| R690 | Dublin Core 偏好 | N | 使用 ttm:copyright、ttm:desc、ttm:title 和
通用 ttm:item |
注:
R217 包含一项关于原始文本存在性的子需求;但是,本 规范不对作者使用方式施加限制,因此该子需求已被判定超出范围。
本附录提供关于 TTML 词汇派生的信息,分别描述元素和 属性的派生。
表 N-1 – 元素的第一列 指定一个 TTML 元素词汇项;第二列指定该词汇项所基于的 语法和/或语义模型; 第三列指定定义该模型的引用 (如果指示了模型); 第四列指定有关派生的详细信息;最后一 列引用描述该派生性质的附加注释。
在描述派生详细信息的第四列中,使用一种
记法来指示属性的添加或移除。
例如,在 tt:div 元素的派生中,
详细信息列包含 "-@class",这表示为
xhtml:div 模型元素指定使用的
class 属性,并未指定用于相应的
TTML 元素;相反,详细信息列包含
"+@begin",这表示添加了一个未指定用于
xhtml:div 模型元素的 begin 属性。
| 元素 | 模型 | 引用 | 详细信息 | 注释 |
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 5.2] | -@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:*;内容模型 被子集化为零个或多个 division (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 Scheme], [Data Encodings] | 概念性派生 | 4 |
tt:data |
无 | [Data Scheme], [Data Encodings] | 概念性派生 | 4 |
tt:div |
xhtml:div |
[XHTML 1.0] | -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space;内容模型 被子集化为零个或多个 paragraph (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 5.2] | -@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 5.2] | -@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 或 break (br) 子级,并 由可选的 metadata 和 animation 子级超集化 | 1,2,3 |
tt:style |
style specification | [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 5.2] | 概念性派生 | 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 属性定义在所有
元素
类型上,以支持其继承语义在外来命名空间元素上下文中
运作。
派生仅为概念性(名义性)。
已删除
svg:set 的 attributeName 和 to 属性
被替换为通过使用
tts:* 属性直接表达目标属性名称和值。
CSS 样式规范语法通过使用 TT Style Namespace 中定义的属性映射到 XML。
xml:id 属性定义为可用于所有元素类型。
style 属性在
10.2.1 style中枚举的元素类型上受支持。
派生自 svg:svg 元素上 @requiredExtensions
和 @requiredFeatures 的使用,
但扩展为支持对可选性的不同指定。
派生自 svg:svg 元素上 @baseProfile
和 @version 的使用。
从现有 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 |
无 | 用于标明内容的 agent | ||
ttm:role |
无 | 用于标明内容的 role | ||
ttp:cellResolution |
无 | 表达基于单元格坐标的均匀网格分辨率 | ||
ttp:clockMode |
无 | 确定如何解释时间表达式 | ||
ttp:frameRate |
无 | 表达整数帧率 | ||
ttp:frameRateMultiplier
|
无 | 用于表达非整数有理帧率 | ||
ttp:markerMode |
无 | 表达标记连续性语义 | ||
ttp:pixelAspectRatio
|
无 | 表达根容器的像素宽高比 | ||
ttp:profile |
无 | 表达文档实例所使用的 TTML 的配置文件 | ||
ttp:dropMode |
无 | 表达帧计数(丢弃)模式 | ||
ttp:subFrameRate |
无 | 表达子帧率 | ||
ttp:tickRate |
无 | 用于解释基于 tick 的时间表达式 | ||
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 度量,分别表示帧和
tick;
(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 5.2] DOM 结构,其元素 被赋予所述样式属性。
注:
在 TTML 中,样式属性名称和值被规范化为使用 lowerCamelCase 命名约定。
| 引用 | [CSS Backgrounds and Borders], §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 Backgrounds and Borders], §3.9 |
| 模型 | background-size |
| 值 | 值直接映射 |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 引用 | [XSL-FO 1.1], §7.8.3 | [CSS2], §14.2.1 |
| 模型 | background-image |
background-image |
| 值 | -inherit |
-inherit |
| 注释 | 无 | 无 |
| 引用 | [CSS Backgrounds and Borders], §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 Backgrounds and Borders], §4 和 §5 |
| 模型 | border |
| 值 | -inherit |
| 注释 | 无 |
| 引用 | 由 [XSL-FO 1.1]
§7.15.6 和 [CSS Box Model] §9 定义的 height 属性
|
| 模型 | 插入模型 |
| 值 | 值直接映射 |
| 注释 | 无 |
| 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 Writing Modes], §2.1 |
| 模型 | direction |
direction |
| 值 | -inherit。适用特殊继承
语义。 |
适用特殊继承 语义。 |
| 注释 | 无` | 无` |
| 引用 | [CSS2], §9.2.4 |
| 模型 | display |
| 值 | 仅 auto、none |
| 注释 | 无 |
| XSL 派生 | CSS 派生 | |
| 引用 | [XSL-FO 1.1], §7.14.4 | [CSS Flex], §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 Fonts], §6.3 |
| 模型 | font-kerning |
| 值 | -auto |
| 注释 | 无 |
| 引用 | [XSL-FO 1.1], §7.9.3. |
| 模型 | font-selection-strategy |
| 值 | -inherit, character 映射到
character-by-character
|
| 选择准则已扩展。 | 无。 |
| 引用 | [CSS Transforms], §9.1 |
| 模型 | skewX() 和 skewY() 2D 变换函数 |
| 值 |
|
| 注释 | [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 Fonts], §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 |
| 注释 | 无 | 无 |
| 引用 | 由 [XSL-FO 1.1]
§7.15.14 和 [CSS Box Model] §9 定义的 width 属性
|
| 模型 | 插入模型 |
| 值 | 插入值 |
| 注释 | 插入注释 |
| 引用 | [CSS Text], §8.2 |
| 模型 | letter-spacing |
| 值 | 值直接映射 |
| 注释 | 无 |
行堆叠语义旨在匹配 CSS line box 堆叠策略。
| 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
|
| 注释 | 本规范的意图是,行的 分配矩形与 [XSL-FO 1.1] §4.5 定义的 per-inline-height-rectangle 保持一致,即使用 CSS 风格的 line box 堆叠策略。 | 无 |
无派生,即在本规范中引入。
| 引用 | [CSS Transforms], §9.1 |
| 模型 | skewX() 和 skewY() 2D 变换函数 |
| 值 |
|
| 注释 | [SVG 1.1] 中有类似的变换函数可用 |
| 引用 | [CSS3 Color], §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 定义的相对于书写模式的 padding 值
|
-calc, -inherit, -unset
|
| 注释 | 以相对于书写模式的 padding 属性表示, 而不是以绝对 padding 属性表示。 |
TTML 和 XSL 边缘描述符映射到
[CSS Writing
Modes] §6.2 定义的抽象流相对边缘描述符:
|
| 引用 | [CSS Backgrounds and Borders], §3.6 |
| 模型 | background-position |
| 值 | 值直接映射 |
| 注释 | 无 |
| 引用 | [Ruby] 和 [CSS Ruby]。 |
| 模型 | ruby-* |
| 值 | 见注释和规范文本。 |
| 注释 | 另见 [JLREQ] §3.3 以获取进一步信息。也可以替代性地 映射到 [HTML 5.2] ruby 标记。 |
| 引用 | [CSS Ruby], §4.3 |
| 模型 | ruby-align |
| 值 | +end, +withBase。
此样式属性的语义由本规范扩展。 |
| 注释 | 引用中所示的示例和示例渲染适用。 |
| 引用 | [CSS Ruby], §4.1 |
| 模型 | 插入模型 |
| 值 | 插入值 |
| 注释 | 引用中所示的示例和示例渲染,在按本规范定义的 映射取模后适用。 |
无派生,即在本规范中引入。
| 引用 | [CSS Transforms], §9.1 |
| 模型 | skewX() 和 skewY() 2D 变换函数 |
| 值 |
|
| 注释 | [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 Writing Modes] §6.4 映射到
物理方向。更多
细节参见 tts:padding CSS 派生。
|
| 引用 | [CSS Writing Modes], §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 语义适用。 |
| 引用 | [CSS Text Decoration], §3 |
| 模型 |
|
| 值 | 除 auto 外,值直接映射。
auto 的语义依赖书写模式。
|
| 注释 | 无 |
| 引用 | [UTR50] 和 [CSS Writing Modes], §5.1 |
| 模型 | text-orientation |
| 值 |
-inherit,
-sideways-left,
-sideways-right,
-use-glyph-orientation
|
| 注释 | 无 |
| 引用 | [XSL-FO 1.1] |
| 模型 | text-shadow |
| 值 | -inherit(关键字),定义为可继承 |
| 注释 | 仅使用一个长度规范而不是两个,其中一个长度 定义轮廓效果相对于字形轮廓名义边缘、 垂直于字形轮廓点的距离。 还添加了百分比长度,以相对于字体大小表达轮廓效果。 轮廓效果旨在绘制在外部闭合 轮廓之外以及内部闭合轮廓之内。 |
| 引用 | [CSS Text Decoration], §4 |
| 模型 | text-shadow |
| 值 | 值直接映射 |
| 注释 | 无 |
| 引用 | [XSL-FO 1.1], §7.29.6 和 [CSS Writing Modes], §2.2 |
| 模型 | unicode-bidi |
| 值 | -inherit,+isolate |
| 注释 | 从 [CSS Writing Modes] 添加 isolate |
| 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 Framework Specifications Guidelines,[QAF SG] 所定义的 需求和指南的符合情况。
注:
在对外部规范进行规范性引用时, 会引用具体条款或章节。
另见 N 词汇派生。
测试断言和测试套件将在进入 Proposed Recommendation(PR)阶段之前提供。
参见 3.2 处理器一致性 中的准则 #3 以及 TTML 抽象文档实例的定义。
本版本 TTML 没有废止任何特性。
当 [XML 1.0] 用作 定时文本文档实例的具体编码时,适用 [XML Media Types] 和 [XML Guidelines] 所规定的安全 注意事项。
注:
XML 实体不包含在精简 XML 信息集中, 该信息集属于定时文本文档实例; 然而, 鼓励实现提供针对递归实体展开的保护,或 在 TTML 处理器中完全防止实体展开。
本规范定义了允许定时 文本文档实例 引用外部资源的机制,包括音频、字体、图像和无类型(通用)数据 资源。 此类资源的获取以及 定时文本文档实例 的具体表示的获取,完全由内容处理器控制。因此, 旨在允许或限制访问此类资源的任何控制机制也不在 本规范范围内。
获取外部资源时,内容处理器应确定是否需要 一个 可能启用 CORS 的请求,其定义见 [HTML 5.2]。
如果内容 处理器阻止获取此类资源, 则整个文档或文档的某些部分可能无法按预期处理,并且 因此,文档的部分或全部 内容可能无法用于呈现处理。
在媒体播放期间下载外部资源的用户代理,会向该资源的源服务器 指示用户的 媒体消费进度。在许多情况下,此类媒体进度信息可通过其他机制提供给 媒体的源服务器,例如 通过脚本或监视流媒体请求。
在下载外部资源时不强制执行跨源策略的用户代理,会在未经提供 媒体的网站同意且未经用户同意的情况下,将此类 媒体进度信息以及可能的 其他用户跟踪信息暴露给其他源。本 规范不定义 API,也不说明实现应如何获取 被引用资源。
本规范不包含也不引用任何外部样式表 或样式规范的处理;相反, 所有样式信息都直接集成到 TTML 文档语法中,并依据 该语法的精简 XML 信息集表示进行处理。
本文定义了一种机制,允许对内容进行条件处理,其中条件 表达式 可以考虑某些处理状态,包括用户语言偏好、相关 媒体语言、 是否启用强制字幕,以及媒体查询表达式是否满足。 然而,TTML 内容并不直接访问此状态;相反,内容处理器 访问此状态,并作出条件是否满足的二元(是或否)判断。
本文定义了一种基于 [XLink 1.1] 的机制,允许作者将内容 关联到 外部文档。内容处理器是否为该机制提供 语义支持,是在本规范范围之外作出的决定。 此外,如果支持链接激活,其语义同样不在本 规范范围内。
选择并导致下载或解释 定时文本文档实例的用户代理,可能会向 源服务器指示该用户 需要说明文字或字幕,并且因此可能指示用户用于获取说明文字或字幕的语言偏好。 这种语言偏好构成 关于用户的信息。然而,提供定时文本文档实例 以及选择是否检索和处理它,是发出该提供的应用的特征(例如基于 [HTML 5.2] 的 Web 应用),而不是文档实例本身的特征。
本附录说明如何将 [SRGB] 像素合成到高动态范围 (HDR)像素上。
以下说明如何使用
tts:luminanceGain 将 [SRGB] 像素合成到符合
[ITU BT.2100-1] 中指定的系统色度、使用
感知量化器(PQ)EOTF 和全范围量化的 HDR 像素上。
令 (r, g, b) 为一个全范围 8-bit [SRGB] 像素,其
opacity 介于 0 和 1 之间。
令 (R, G, B) 和 (Rc, Gc, Bc) 为
[ITU
BT.2100-1] 中指定的系统色度中的全范围 10-bit 像素,使用 PQ EOTF 和全范围量化,其 opacity A
和 Ac 介于 0 和 1 之间。
反转 8-bit 全范围量化:
(r, g, b) / 255 → (r, g, b)
使用 [SRGB] EOTF 线性化:
(r2.4, g2.4, b2.4) → (r, g, b)
使用 tts:luminanceGain 属性和 [SRGB] illuminant 计算 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。
应用 opacity:
(1-a) ∙ (r, g, b) → (r, g, b)
应用 10-bit 全范围量化:
(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] 像素合成到 Hybrid Log-Gamma (HLG) HDR 像素上。
令 (r, g, b) 为一个全范围 8-bit [SRGB] 像素,其
opacity A 介于 0 和 255 之间。
令 (R,G,B) 和 (Rc,Gc,Bc) 为
[ITU
BT.2100-1] 中指定的系统色度中的窄范围 10-bit 像素,使用 HLG EOTF 和窄范围量化。下标 c
表示合成后的视频信号。
令 (X,Y,Z) 为 CIE 1931 XYZ
colour space [XYZ] 中指定的系统色度中的像素。
反转 8-bit 全范围量化:
(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-bit 窄范围量化:
(Q(r),Q(g),Q(b)) → (r,g,b)
其中 Q(x) = floor((940 − 64) • x + 64.5)
将前景图形 (r,g,b) 以 opacity
A 合成到背景视频 (R,G,B) 上,以产生
(Rc,Gc,Bc):
((A•r+(1−A)R),(A•g+(1−A)G),(A•b+(1−A)B)) → (Rc,Gc,Bc)
将输出钳制到 10-bit 信号范围:
(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 中的 “graphics white”,其定义为
[ITU BT.2100-1] 中定义的窄范围
信号的 75%。
注:
gamma 指数 2.0 有意不同于 [SRGB] 中指定的 gamma 2.2。 该规范中的 2.2 值特定于其中指定的观看环境, 并包含 针对这些条件的心理视觉渲染调整。此调整对于 不包含显示渲染的 HLG 信号而言并不需要。
可以创作 TTML 内容以满足以下在 流式传输场景中可能有用的特征:
可以渐进式编码(即,不需要在发送当前数据之前计算 后续数据);
可以渐进式解码(如果它不需要前向 引用,而只在必要时使用反向引用);
不需要解引用(并随后加载)任何 未包含在同一片段或访问单元(或等价物)中的资源;
具有编译为行内格式的计时结构,使得 内容的时间排序可以遵循时间 呈现顺序;
TTML 内容可以被流式传输的一种可能方式,是将 文档实例的信息集划分为 不重叠的片段,其中一个特定片段,称为 根片段,表示 文档实例的前置材料(head)及其顶层结构 元素,而 其他片段表示其时间区间预期将并行 活动的内容。
在需要任意(随机)进入 流的应用中,即能够从任意数据访问单元开始读取数据的属性, 根片段将被重复 传输(插入)到流中,以允许解码器 重新同步并在信息集中获取足够的结构信息, 以便解释后续内容 片段。
这种文档实例分片的一个示例 如 图 2 – 片段流式传输 所示。
|
注:
本规范不定义传输缓冲区模型或解码器 能力模型。
TTML 内容可以被流式传输的另一种方式,是将 文档实例的信息集划分为 有时间边界的片段,每个片段本身都是一个文档实例,包含呈现它所需的所有 前置材料(head)和内容,其中每个 片段的时间区间受到文档 交换上下文或 文档处理上下文或两者的约束,使得与其他片段的时间重叠得到 解析。
例如,某些文档处理上下文通过指定在时间轴上的任一时刻 最多只能有一个文档实例处于活动状态来解析时间重叠,并且还 指定优先级规则,以在存在多个 候选项时确定该文档实例。
为了确保所有内容都被正确显示,任何落入其区间与多个 分片区间重叠的 ISD 的内容,可能需要在生成该 ISD 所需的 每个片段中重复。实现可以识别相邻且除区间外相同的 ISD, 并用覆盖组合区间的单个 ISD 替换它们。
此方法的意图是,呈现处理器能够生成与文档 实例的非流式版本所生成的 ISD 序列等价的 序列,同时通过改变片段持续时间,利用避免重复某些可控数量 前置材料的能力。不能保证重构原始源会 得到相同的文档实例。
注:
例如,此技术用于 [ISOBMFF TT] 和 [EBU-TT-Live]。
这种文档实例分片的一个示例 如 图 3 – 时间分片 所示。
![]() |
注:
在上面的示例中,单个文档实例在 T1 到 T6 的区间内有可见内容,并被分片为两个文档实例(片段), 第一个包含 T1 到 T3 期间所需的全部内容以及被引用的样式和 region,第二个包含 T4 到 T6 期间所需的全部内容以及被引用的样式和 region。
可以将文档实例转换为 一系列定时文本 中间文档实例,并将它们作为离散实体进行流式传输。
此技术将客户端处理需求降至最低,同时要求在每个适用的 ISD 中 重复所有相关前置材料。不能保证重构原始源会 得到相同的文档实例。
本节提供以下常见字幕样式的示例,这些样式使用 TTML 内容 来获得所需行为:
弹出式字幕
上卷式字幕
绘制式字幕
paint-on 字幕的一个示例。在此示例中,两个 region 被交替的 paint-on 内容作为目标,其中内容 使用显式顺序时间包含规则进行计时。每个段落在时间上不重叠,并 出现在其目标 region 的同一单行中。
<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>
|
上卷式字幕的一个示例。上卷效果通过使用重叠的时间区间实现, 在给定时间有零个、一个或两个段落出现在 region 中。 每个段落占用 region 的单行,因为不会发生换行。 取决于呈现处理器是否支持 相邻同步 中间文档实例之间的平滑滚动,过渡,即将 旧段落(行)移出并将新段落(行)移入,将是平滑的或离散的。
<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 元素的并行时间容器结束一致,
因此,一旦某个单词被绘制,它就会保持在 region 中(在其渲染行上),直到
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 参数枚举值,可用于修改
应用于内容的样式。或者可以使用媒体函数
基于媒体查询来修改适用 region 的位置和范围——参见
[Media Queries]。
可以应用预处理技术,在呈现之前修改文档实例, 例如使用 [XSLT3],可能在 [XPROC] 管道的上下文中,用于修改样式属性的初始值,或被继承的根 元素样式属性。此类预处理不在本 规范范围内,除非此类预处理器被视为 转换处理器的实例。
虽然本规范尝试在 可能的范围内定义 呈现处理器一致性 需求,但这并不排除任何实现有意偏离此类一致性, 如果认为这样做合适。例如,呈现处理器可以 标识呈现文本与其他视觉指示器(如视频 播放控件)之间的位置冲突,并通过临时移动受影响的 TTML region 来解决这些冲突。或者 呈现处理器可以向用户提供选项,以减小呈现字体大小, 同时不引入意外换行。
按照定义,任何此类不一致性都不在本规范范围内。
本节提供 Timed Text Markup Language (TTML) Version 1 (TTML1) 与 Version 2 (TTML2) 之间词汇变更的高级摘要。本摘要无意穷尽所有内容。有关 变更的更多细节, 参见 Timed Text Markup Language 2 (TTML2) Change Summary。
本规范的以下节中添加了新元素词汇,如下进一步描述:
为了增强对动画功能的支持,添加了以下元素:
tt:animate支持在一个或多个时间上连续的活动 时间区间内以及跨这些区间的连续动画。
tt:animation支持在头部材料中对非行内动画指令进行分组。
为了扩展元数据功能,添加了以下元素:
ttm:item支持可扩展的命名元数据项集合。
注:
此特性源于这样一种需求:避免为由名称和值组成的元数据项 定义额外的新词汇,其中通用的命名元数据项元素可以 服务于未来定义 此类项的无界集合的需求。
为了扩展样式功能,添加了以下元素:
tt:initial支持作者为样式属性指定初始值。
注:
此特性由多个需求推动,包括
(1) 希望能够为
本规范定义为依赖实现的某些继承样式属性的
初始值指定固定、确定的值,例如
tts:color 的初始值,
以及
(2) 希望能够覆盖某些非继承样式
属性的初始值,而不是被迫在每种情况下显式指定样式值,
例如,对于
tts:showBackground
,可能更偏好使用 whenActive 的初始值,而不是默认初始值
always。
编辑感谢 Timed Text Working Group 的现任和前任成员、其他 W3C Working Group 的成员,以及其他论坛中的行业专家, 他们以如下方式直接或间接地为本文档的 过程或内容作出了贡献:
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, and Mohamed Zergaoui.
编辑还希望特别感谢以下现任和前任成员的贡献:Mike Dolan(SMPTE time codes、streaming;SMPTE liaison)、David Kirby(introductory example document;SMPTE time codes、descriptive metadata;EBU/AAF liaison)、Geoff Freed(styling and example images of style properties)、Sean Hayes(advanced profile concepts,包括 applicative timing、HTML/CSS mapping proposal)、Erik Hodge(timing)、 Thierry Michel(metadata)以及 Dave Singer(animation、scrolling)。
编辑还希望感谢以下现任和前任赞助者对其在本规范上工作的支持: Cox Communications、Microsoft、Netflix 和 Samsung Electronics。
工作组将本规范献给我们的同事 David Kirby。