W3C

タイムドテキストマークアップ言語 2 (TTML2) (第2版)

W3C 勧告候補スナップショット 2021年3月9日

この版:
https://www.w3.org/TR/2021/CR-ttml2-20210309/
最新版:
https://www.w3.org/TR/ttml2/
前の版:
https://www.w3.org/TR/2020/CR-ttml2-20200128/
実装報告:
https://www.w3.org/wiki/TimedText/TTML2SecondEditionImplementationReport
編集者:
Glenn Adams, 招聘専門家
Cyril Concolato, Netflix
執筆協力者:
Glenn Adams, 招聘専門家
Cyril Concolato, Netflix
Mike Dolan, 招聘専門家
Sean Hayes, Microsoft
Frans de Jong, 欧州放送連合
Dae Kim, Netflix
Pierre-Anthony Lemieux, MovieLabs
Nigel Megitt, 英国放送協会
Dave Singer, Apple Computer
Jerry Smith, Microsoft
Andreas Tai, Institut für Rundfunktechnik GmbH
参加:
GitHub w3c/ttml2
バグを報告
コミット履歴
プルリクエスト

この文書の 正誤表 を参照してください。 これには 規範的な修正が含まれている場合があります。


概要

この文書は、タイムドテキストマークアップ言語 (TTML) バージョン 2 の第2版、 別名 TTML2 (2e) について、その語彙と意味論を 規定します。

タイムドテキストマークアップ言語は、 オーサリングシステム間での交換を目的として タイムドテキストメディアを表現するコンテンツ型です。タイムドテキストは、内在的または 外在的に時間情報と関連付けられたテキスト情報です。

これは、現在、字幕やキャプションの機能に使用されている 従来の配信コンテンツ形式間で、タイムドテキスト情報をトランスコードしたり 交換したりする目的で使用することを意図しています。

従来の配信コンテンツ形式間での 交換に加えて、TTML コンテンツは配信形式として直接使用することもでき、 例えば、標準コンテンツ形式として、<track> 要素([HTML] 文書内)、または <text> や <textstream> メディア要素([SMIL 3.0] 文書内)から参照できます。

この文書の位置付け

この節では、公開時点におけるこの文書の位置付けを説明します。他の文書が この文書を 置き換える場合があります。現在の W3C 刊行物の一覧と、この技術報告書の最新版は、 次の場所にある W3C 技術報告書索引 で確認できます: https://www.w3.org/TR/。

これは第2次 勧告 候補 (CR2) として公開された タイムドテキストマークアップ言語 2 (TTML2) 第2版であり、勧告案への移行は 2021年4月6日以降を予定しています。 この第2次 勧告候補 (CR2) では、 前の第1次 勧告 候補 (CR1) に対する技術的な変更はなく、編集上の(実質的でない)変更のみが行われています。

この仕様が CR 段階を終了するには、次の基準を満たさなければなりません: この仕様によって導入された 実質的な変更の 影響を受ける各機能(拡張)について、少なくとも2つの独立した実装が、 その影響を受けた 機能(拡張)をサポートしなければなりません。この改訂では、(基礎となる)機能(拡張)の追加も削除も行われていないため、 削除の可能性があると 指定されている機能(拡張)はありません。

実装 報告 が提供されています。 TTML2 第1版からの技術的な変更の概要は、 タイムドテキストマークアップ言語 2 (TTML2) 変更概要 で確認できます。 この文書に関するコメントは、GitHub 上の issue の作成、または public-tt@w3.org へのメール送信 (購読, アーカイブ) により歓迎します。メールの件名は [ttml2] で始めてください。

この文書は、タイムドテキスト (TT) ワーキング グループ によって 勧告候補スナップショットとして公開されました。

勧告候補としての公開は、W3C 会員による承認を意味するものではありません。 勧告候補スナップショットは 広範なレビュー を受けており、 実装経験を収集することを目的としています。

この文書は、W3C 特許 ポリシー の下で活動するグループによって作成されました。W3C は、公開されている 特許開示の一覧 を管理しています。これらの開示はグループの成果物に関するものであり、そのページには 特許開示の手順も 含まれています。ある特許について実際に知識を持ち、その特許に 必須クレーム が含まれると考える個人は、 その情報を W3C 特許ポリシーの 第6節 に従って開示しなければなりません。

この文書には、2020年9月15日付の W3C プロセス文書 が適用されます。

1 はじめに

特に指定がない限り、この節とその下位節は非規範的です。

タイムドテキストマークアップ言語 (TTML) バージョン 2、別名 TTML2 は、 テキスト情報の特定の部分集合について、標準化された表現を提供します。 このテキスト情報には、交換と処理を目的として、著者またはオーサリングシステムによって スタイル、レイアウト、およびタイミングの意味論が関連付けられます。

TTML は、限られた要件の集合のみを満たすよう明確に設計されています。 これらの要件は [TTAF1-REQ] で定められ、M 要件 に要約されています。特に、既存の従来型配信システムとの 交換を行う必要性に対応する要件のみを 満たします。

従来の配信コンテンツ形式間での 交換に加えて、TTML コンテンツは配信形式として直接使用することもでき、 例えば、標準コンテンツ形式として、<track> 要素([HTML] 文書内)、または <text> や <textstream> メディア要素([SMIL 3.0] 文書内)から参照できます。TTML の 特定の特性は、 R TTML コンテンツのストリーミング で説明するように、コンテンツのストリーミングを可能にします。

注:

TTML は、HTML または SMIL 文書インスタンスへの直接的な(埋め込みによる)統合を 明確な目的として設計されてはいませんが、そのような統合を排除するものではありません。

注:

利用状況によっては、アニメーションコンテンツを用いて、 タイムドテキストの 文書インスタンス が表現するものと同じコンテンツを手話で表現することが適切な場合があります。このユースケースは TTML の仕組みでは 明示的に扱われていませんが、SMIL などの 外部のマルチメディア統合技術によって対応できる場合があります。

注:

この仕様の以前の草案では、TTML は DFXP(配信形式 交換プロファイル)と呼ばれていました。この後者の用語は、歴史的な理由から、 プロファイル名や指定子など、特定の文脈で保持されています。

1.1 システムモデル

TTML の利用は、タイムドテキストのオーサリング、 トランスコード、配信、および提示の仕組みという、より広い文脈で機能することを意図しています。これらは、 図 1 – システムモデル に示すシステムモデルに基づいており、その中でタイムド テキストマークアップ言語は、 異種のオーサリングシステムの集合間における 双方向の交換形式として機能するとともに、 必要に応じて対象の配信形式へのトランスコード またはコンパイルを経た後、異種の配信形式の集合への 単方向の交換形式として機能します。その配信形式の1つが TTML コンテンツ文書です。

処理系には2つのクラスがあります。オーサリングシステムと検証処理系は 変換処理系の例であり、トランスコードシステムとレンダリング処理系は 提示処理系の例です。TTML プロファイル文書は、 TTML コンテンツ文書または処理系に関連付けることができ、それぞれが利用可能、 禁止、または必須の機能を表現できるようにします。これらを組み合わせることで、 オーサリングから提示までの連鎖における制約を形式言語で表現できます。

処理系は、定義された TTML 中間文書へのマッピングを実装できます。 システムモデルでは、その文書をさらに HTML および CSS の断片にマッピングするレンダリング処理系の一例を示しています。これらの断片は [HTML] 文書に挿入し、 ユーザーエージェントによって表示できます。

図 1 – システムモデル
システムモデル

1.2 文書の例

以下の節では、TTML 文書 インスタンス の簡単な例を説明します:

1.2.1 単一領域の例

TTML 文書インスタンス は、tt 文書要素からなり、そこには ヘッダーと本文が含まれます。ヘッダーは文書レベルのメタデータ、スタイル 定義、およびレイアウト定義を指定し、本文はテキストコンテンツに、 スタイルおよびレイアウト情報への参照と、インラインのスタイル指定およびタイミング情報を織り交ぜて指定します。

例の断片 – TTML 文書構造
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <metadata/>
    <styling/>
    <layout/>
  </head>
  <body/>
</tt>

文書レベルのメタデータでは、文書のタイトル、説明、 および著作権情報を指定できます。さらに、他の 名前空間からの任意のメタデータを指定することもできます。

例の断片 – TTML メタデータ
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
  <ttm:title>タイムドテキスト TTML の例</ttm:title>
  <ttm:copyright>著者一同 (c) 2006</ttm:copyright>
</metadata>

スタイル指定情報は、レイアウトおよびコンテンツ情報から参照される スタイル指定定義として指定することも、 コンテンツ情報とともにインラインで指定することも、その両方を行うこともできます。

例の断片 – TTML スタイル指定 では、スタイル指定をまとめた4つの 集合が 定義されており、そのうち1つは既定のスタイルの集合として機能します。

例の断片 – TTML スタイル指定
<styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <!-- s1 は既定の色、フォント、およびテキスト配置を指定する -->
  <style xml:id="s1"
    tts:color="white"
    tts:fontFamily="proportionalSansSerif"
    tts:fontSize="22px"
    tts:textAlign="center"
  />
  <!-- 黄色のテキストを使用し、それ以外はスタイル s1 と同じ代替スタイル -->
  <style xml:id="s2" style="s1" tts:color="yellow"/>
  <!-- s1 に基づくが、右揃えにしたスタイル -->
  <style xml:id="s1Right" style="s1" tts:textAlign="end" />     
  <!-- s2 に基づくが、左揃えにしたスタイル -->
  <style xml:id="s2Left" style="s2" tts:textAlign="start" />
</styling>

レイアウト情報は、コンテンツを提示する 1つ以上の領域を定義します — ここでは単一の領域を定義します。領域定義では、 1つまたは 複数のスタイル指定の集合を参照することで、その 領域に流し込まれたコンテンツがこれらのスタイルを継承できるようにします。 例の断片 – TTML レイアウト では、領域 定義が スタイル指定 s1 を参照し、特定のインライン スタイルを追加しています。これらを組み合わせることで、領域に流し込まれたコンテンツが 領域のスタイルを継承できるようになります(そのスタイルが コンテンツ上で既に明示的に指定されておらず、コンテンツ階層を介しても 継承されていない場合)。

例の断片 – TTML レイアウト
<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 要素)が 指定された字句順で対象領域に流し込まれます。さらに、 各段落の有効時間区間は、 適用される時間包含の意味論に従って、親または兄弟に対して決められます — この場合、親の区分要素は(既定で)並列時間 コンテナーとして解釈されます。

例の断片 – TTML 本文
<body region="subtitleArea">
  <div>
    <p xml:id="subtitle1" begin="0.76s" end="3.45s">
      逆説のように思えますね、
    </p>
    <p xml:id="subtitle2" begin="5.0s" end="10.0s">
      網膜上に結ばれる像が<br/>
      逆さまになるというのは?
    </p>
    <p xml:id="subtitle3" begin="10.0s" end="16.0s" style="s2">
      不思議ですね。どうして<br/>
      私たちには物が逆さまに見えないのでしょう?
    </p>
    <p xml:id="subtitle4" begin="17.2s" end="23.0s">
      では、ご存じないのですか、<br/>
      脳もまた逆さまになっているという説を?
    </p>
    <p xml:id="subtitle5" begin="23.0s" end="27.0s" style="s2">
      ええ、知りませんでした!なんと美しい事実でしょう!
    </p>
    <p xml:id="subtitle6a" begin="28.0s" end="34.6s" style="s2Left">
      でも、どうやって証明するのですか?
    </p>
    <p xml:id="subtitle6b" begin="28.0s" end="34.6s" style="s1Right">
      こうです。私たちが
    </p>
    <p xml:id="subtitle7" begin="34.6s" end="45.0s" style="s1Right">
      脳の頂部と呼ぶものは<br/>
      実際にはその底部であり
    </p>
    <p xml:id="subtitle8" begin="45.0s" end="52.0s" style="s1Right">
      底部と呼ぶものは<br/>
      実際にはその頂部であって、
    </p>
    <p xml:id="subtitle9a" begin="53.5s" end="58.7s">
      単なる名称の問題なのです。
    </p>
    <p xml:id="subtitle9b" begin="53.5s" end="58.7s" style="s2">
      なんと愉快なことでしょう!
    </p>
  </div>    
</body>

最初の字幕 字幕 1 – 時間区間 [0.76, 3.45) は、 0.76秒から3.45秒までの時間区間に提示されます。 この 字幕は、フォントファミリー、フォントサイズ、 前景色、およびテキスト配置を、提示先の 領域から継承します。段落には領域が明示的に指定されていないため、 領域を指定している最も近い祖先によって、 対象領域が決まります。また、コンテンツは、 包含領域の下部(後側の辺)に提示されることにも注意してください。これは、 tts:displayAlign="after" が領域定義で指定されているためです。

注:

表記 "[X,Y]" は、 X から Y までの閉区間で、 X と Y を含むものを表します; "[X,Y)" は、 X から Y までの右半開区間で、 X を含み、Y を含まないものを表します; "(X,Y]" は、 X から Y までの左半開区間で、 X を含まず、Y を含むものを表します; "(X,Y)" は、 X から Y までの開区間で、 X も Y も含まないものを表します。

注:

この例では、p 要素は提示用の 要素として使用されており、意味的な要素、すなわち言語上の段落としては使用されていません。 意図した意味を伝えるためにどの TTML 要素を使用するかは、 著者が決定します。例えば、この例は、 span 要素にタイミングを指定することで、意味的な段落の 一体性を保つように記述できます。

注:

この例では、region 属性が body 要素に指定されています。 代わりに div 要素、あるいは個々の p 要素に指定しても、提示上の効果は同じです。通常の使用では、 region は文書 階層内の適切な位置に指定し、冗長さを抑えながら表現しやすくします。

また、region を body に置くことには、 どの子孫要素も異なる 領域に提示されなくなるという効果があることにも注意してください。これは、そのような子孫が提示から除去されるためであり、 その原因は、 [中間文書を 構築する] 手続きにあります。

字幕 1 – 時間区間 [0.76, 3.45)
字幕 1

2番目の字幕も引き続き既定のスタイルを使用しますが、 著者が指定した改行によって区切られた2行のテキストを含みます。 tts:textAlign="center" を使用して、インライン進行方向における段落の配置を 指定した効果に注意してください。

字幕 2 – 時間区間 [5.0, 10.0)
字幕 2

続く3番目の字幕では、既定のスタイルの 前景色を別の色で上書きする派生スタイルを使用します。

字幕 3 – 時間区間 [10.0, 16.0)
字幕 3

4番目の字幕では既定のスタイルに戻ります。

字幕 4 – 時間区間 [17.2, 23.0)
字幕 4

続く5番目の字幕では、再び派生スタイルを使用して、 既定のスタイルの前景色を別の色で上書きします。

字幕 5 – 時間区間 [23.0, 27.0)
字幕 5

次の有効時間区間では、2つの異なる字幕が同時に有効になり、 各字幕を表す段落は、既定のスタイルの色と段落の テキスト配置を上書きする異なるスタイルを使用します。フローの順序は、 コンテンツ階層内に現れる要素の字句順によって決まることに注意してください。

字幕 6a および 6b – 時間区間 [28.0, 34.6)
字幕 6a および 6b

次の字幕も同様の方法で指定され、 スタイルの上書きによって、段落を インライン進行方向において右(終端)揃えにします。

字幕 7 – 時間区間 [34.6, 45.0)
字幕 7a および 7b

8番目の字幕では、前の字幕と同じ スタイルの上書きを使用して、段落の 右(終端)揃えを維持します。

字幕 8 – 時間区間 [47.3, 49.0)
字幕 8

最後の(9番目の)有効時間区間では、2つの異なる 字幕が再び同時に有効になりますが、 2番目の段落に別のスタイルを適用して既定の色を上書きします。 フローの順序は、コンテンツ階層内に現れる 要素の字句順によって決まることに注意してください。

字幕 9a および 9b – 時間区間 [53.5, 58.7)
字幕 9a および 9b

1.2.2 複数領域の例

上の例は、単一の領域へ流し込まれるコンテンツの 時間的および字句的なフローを示しています。 この概念は複数の領域にも拡張でき、 コンテンツの異なる部分を各領域に それぞれ独立した時刻に流し込めます。 例えば、文書例 – 複数領域における TTML レイアウト には、2つの 字幕段落があり、それぞれ異なる領域に配置されています。2番目の字幕は、 最初の字幕が表示から取り除かれる前に表示されるようになり、 その後も表示されたままになるため、 表示される字幕の数は、順に1つ、2つ、そして1つとなります。

文書例 – 複数領域における TTML レイアウト
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
    xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
      <style xml:id="pStyle"
        tts:backgroundColor="cyan"
        tts:textAlign="center"
        tts:fontSize="6.7rh"/>
      <style xml:id="spanStyle"
        tts:color="white"
        tts:backgroundColor="black"
        tts:fontFamily="proportionalSansSerif"/>
    </styling>
    <layout xmlns:tts="http://www.w3.org/ns/ttml#styling">
      <region xml:id="topCenterArea"
        tts:position="center top 10% "
        tts:extent="80% 20%"
        tts:displayAlign="before"
        tts:backgroundColor="purple"
        tts:showBackground="whenActive"/>
      <region xml:id="bottomLeftArea"
        tts:position="left 10% bottom 10% "
        tts:extent="60% 20%"
        tts:displayAlign="after"
        tts:backgroundColor="green"
        tts:showBackground="whenActive"/>
    </layout>  
  </head>
  <body>
    <div>
      <p xml:id="subtitle1" begin="00:00:00.500" end="00:00:01.500"
         region="topCenterArea" style="pStyle">
        <span style="spanStyle">生理学の講師に尋ねてみましょう、なぜ<br/>
        あの見事な説を教えてくださらなかったのかと!</span>
      </p>
      <p xml:id="subtitle2" begin="00:00:01" end="00:00:02"
         region="bottomLeftArea" style="pStyle">
        <span style="spanStyle">何かを差し出してでも立ち会いたいものです、<br/>
        その質問がされるときには!</span>
      </p>
    </div>    
  </body>
</tt>

この例には、時間的に重なる2つの字幕が含まれています。 これにより、0.5秒から2秒までの間に3つの異なる区間が生じます。 文書内では、時刻は hh:mm:ss 形式で表現されています。 各領域と段落は、その内容よりも大きなサイズを持つよう指定されており、 対照的な背景色で表示されます。 これにより、その位置と子孫の位置がより明確に見えるようになります。 上の領域は紫色、下の領域は緑色です。 各 p はシアンで、各 span は黒い背景に白いテキストです。

字幕 1 – 時間区間 [0.5, 1.0)
複雑なレイアウトの字幕 1

最初の区間である0.5秒から1.0秒では、2行が提示され、 上部中央の領域の前側の辺に揃えられます。 そのため、領域の使用されていない部分は、テキストの下に 紫色として見えます。 同様に、p 要素の使用されていない部分は、 span 要素が占める空間を示す黒い背景の周囲に、シアンとして見えます。

字幕 1 および 2 – 時間区間 [1.0, 1.5)
複雑なレイアウトの字幕 2

2番目の区間である1.0秒から1.5秒では、最初の字幕が引き続き表示され、 2行からなる2番目の字幕が左下の領域に提示されます。 新しいテキストは、その領域の後側の辺に揃えられるため、 領域の使用されていない部分は、テキストの上に緑色として見えます。

字幕 2 – 時間区間 [1.0, 1.5)
複雑なレイアウトの字幕 3

3番目の区間である1.5秒から2.0秒では、最初の字幕はもはや 提示されません。

上に示した例は、TTML を使用して作成できる主要な情報の種類、 すなわちメタデータ、スタイル指定、レイアウト、タイミング、およびコンテンツを示しています。通常、 スタイル指定とレイアウトの情報は、文書インスタンス 内で別々に指定されます。コンテンツ情報は、 空間的な(フローの)情報と タイミング情報の両方の構成を反映する階層形式で表現されます。コンテンツは、スタイル指定およびレイアウトの 情報を直接または間接的に参照し、 スタイル指定のインライン上書きを指定することもできます。

2 定義

2.1 略語

BPD

ブロック進行寸法

DAR

表示アスペクト比

DFXP

配信形式交換プロファイル

IPD

インライン進行寸法

ISD

中間同期文書

PAR

ピクセルアスペクト比

SAR

格納アスペクト比

TT

タイムドテキスト

TTML

タイムドテキストマークアップ言語

TTAF

タイムドテキストオーサリング形式

TTWG

タイムドテキストワーキンググループ

2.2 用語

[絶対寸法]

次のいずれかの軸上の長さを表すスカラー値: 水平軸 または 垂直軸。

[抽象文書インスタンス]

抽象データ集合のインスタンスであり、 縮約された XML 情報集合 によって表現されるもの。

[抽象文書型]

XML 情報 集合 [XML InfoSet] のクラスを定義する制約の集合。

[アニメーション可能なスタイル]

スタイル指定属性、またはその内部表現である スタイルプロパティ であり、その定義において、離散 または 連続 アニメーションによってアニメーション可能であると指定されているもの。 スタイル指定属性 の定義が、(1) アニメーション可能性を none と指定しているか、 (2) アニメーション可能性を指定していない場合、それを アニメーション不可能なスタイル と呼びます。

[匿名プロファイル]

指定子のないプロファイル を参照してください。

[匿名スパン]

span 要素であり、 文書インスタンス には存在せず、対応する 抽象表現である 抽象文書インスタンス に合成して挿入されるもの。この挿入は、 [匿名スパンを 構築する] 手続きによって、 11.3.1.3 中間同期 文書の構築 または 11.3.1.4 同期フロー処理 の段階で行われます。

[エリア]

アドレス指定可能な 論理ピクセル の集合であり、 何らかの出力媒体上の平面における、 境界を持つ矩形領域の視覚的コンテンツを表すもの。[XSL-FO 1.1] の矩形 エリア、§4.2 で定義されています。 特に [CSS2] および [HTML] の文脈では、ボックス とも呼ばれます。

[属性情報項目]

XML 文書の各属性は、明示的に指定されたものも既定値によるものも、属性 情報 項目に対応します。これは [XML InfoSet]、§2.3 で定義されています。

[音声定義コンテキスト]

audio 要素が、共有可能な定義として機能するよう 指定されるコンテキスト。その定義は、別の audio 要素から、 音声提示コンテキスト において参照されます。

[音声生成要素]

audio 要素で、 音声提示コンテキスト にあるもの、または span 要素で、その文字内容が 発話データリソース の生成に使用されるもの。

[音声提示コンテキスト]

audio 要素が、 提示(レンダリング)を目的として指定されるコンテキスト。このような audio 要素は、 音声データをインラインで指定できます。その場合、data 要素を、 子の source 要素内で使用します。または、 別の audio 要素で、 音声定義コンテキスト に指定されたものを参照することも、両方を行うこともできます。

[音声リソース]

データリソース であり、符号化された、または符号化されていない音声 サンプルを含むもの。

[音声ストリーム]

音声サンプルの列。

[背景描画矩形]

文書座標空間 内の矩形であり、 色や画像などの背景提示オブジェクトは、 この矩形を基準として(必要に応じて)クリップされ、描画されます。より 具体的には、3つの矩形、すなわちボーダー矩形、パディング矩形、または コンテンツ矩形のいずれかであり、 これらは背景に関連付けられた要素が生成するエリアの矩形です。適用される矩形は、 次の属性が指定するスタイルプロパティの算出値によって 決まります: tts:backgroundClip 属性。

[背景位置決め 矩形]

文書座標空間 内の矩形であり、 色や画像などの背景提示オブジェクトは、 この矩形を基準として位置やサイズを決められます。より 具体的には、3つの矩形、すなわちボーダー矩形、パディング矩形、または コンテンツ矩形のいずれかであり、 これらは背景に関連付けられた要素が生成するエリアの矩形です。適用される矩形は、 次の属性が指定するスタイルプロパティの算出値によって 決まります: tts:backgroundOrigin 属性。

[基準プロファイル]

プロファイル であり、use 属性を持つ ttp:profile 要素から参照され、 参照元のプロファイルに設定する指定の 基準となる(初期の)集合として機能するもの。

[ブロックエリア]

エリア の基本的な型であり、[XSL-FO 1.1] のブロックエリア、§4.4 で定義され、その子は、 すべて ブロックエリア であるか(そのブロックエリアが 行エリア でない場合)、 すべて インラインエリア であるもの(そのブロックエリアが 行エリア である場合)。

[ブロック表示]

ブロック表示は、レイアウトの意味論の集合であり、コンテンツ要素 に 特定の文脈で適用できます。この場合、子エリアはブロック進行 方向に順次配置されます。

注:

[CSS2] では、 CSS の display プロパティに block という値が指定され、 コンテンツ要素 に提示処理中に適用されるとき、ブロック表示が示されます。 [XSL-FO 1.1] では、ブロック表示は、 fo:block 要素を配置するときに行われます。

[ブロック進行寸法]

ブロック進行軸上の 相対寸法、 すなわち正の ブロック進行 方向 の寸法であり、 bpd または BPD と略記されます。

[ブロック進行方向]

ある整形コンテキストにおいて、ブロックエリアが進行する方向。横書きモードの 文脈では、 ブロック進行方向は通常、上から下です。一方、縦書きモードの 文脈では、 通常、右から左、または左から右です。

[組み込みデータリソース]

データリソース であり、その内容が、 コンテンツ処理系 によって提供され、 タイムドテキストコンテンツ文書 インスタンス によっては提供されないもの。このリソースは、 source 要素、または src 属性によって参照されます。この属性は、source 要素 または 埋め込み コンテンツ要素 にあります。

[文字情報項目]

XML 文書に現れる各データ文字は、文字情報 項目に対応します。これは [XML InfoSet]、§2.6 で定義されています。 同じ親の 要素情報項目 を共有する、1つ以上の連続する文字情報項目の列を、 テキストノード と呼びます。

注:

B.4 文字情報項目 に、 追加情報があります。

[チャンク化データ埋め込み]

data 要素であり、 実際のバイト列の表現を直接埋め込むもの。 そのバイト列は 埋め込みデータリソース のものであり、 子の chunk 要素を使用して埋め込みます。

[結合プロファイル]

プロファイル であり、constituents 構成要素、すなわち 結合 指定集合 の構成要素が、 関連する プロファイルインスタンス において、 null でない指定子を複数含むもの。

[構成要素]

(1) 機能の単位; (2) 構文表現の一部分; (3) 状態オブジェクトの フィールド(または変数)。

[算出セルサイズ]

セルのサイズ(寸法)であり、ルートコンテナー領域 の幅をセルの列数、すなわち 水平軸 上のセル数で除算し、 ルートコンテナー領域 の高さを セルの行数、すなわち垂直 軸上のセル数で除算して算出されるもの。セルの列数と行数は、 ttp:cellResolution パラメーター属性によって決まります。

注:

ルートコンテナー 領域 の幅と高さは、 空間的な寸法の幅と高さに対応します。この ルートコンテナー領域 の寸法は、 H.2 解像度 で指定されています; したがって、算出セルサイズは 論理ピクセル で表現されます。

[算出スタイル集合]

スタイル集合 であり、算出スタイル値を含むもの。その値は、 10.4.4.3 算出スタイル集合の 処理 によって決まります。

[条件付き要素]

この仕様で定義された型、またはこの仕様での使用のために定義された型の要素であり、 次の属性の指定を許可するもの: condition 属性。この属性の評価 結果によって、 要素に定義された意味論を適用するか、無視するかが決まります。このような 属性が存在しない場合、 要素の意味論は常に適用されます。

[条件により除外される(または含まれる)]

条件付き 要素 の条件式を評価した 結果が false である場合、その要素とその子孫要素は、 条件により除外される といいます。 要素が 条件により除外される ものでない場合、その要素は、 条件により含まれる といいます。

注:

条件により含まれる要素であって、次の属性の使用を許可しないか、 指定していないもの: condition 属性。このような要素は、 次のように呼ぶこともあります: 無条件に含まれる 要素。

要素が条件により除外される場合、特に指定がない限り、そのすべての 意味論は無視されます。 条件による除外の詳細な意味論については、condition を 参照してください。

注:

特定の要素、例えば style 要素では、 条件による除外によって、その要素の意味論の一部は無視されますが、すべてが無視されるわけではありません。 そのような場合、その動作は明示的に記述されます。

[コンテンツ要素]

コンテンツ モジュール で定義される要素型のいずれか、および 音声モジュール と 画像モジュール で定義される要素型のいずれかで、それぞれ 音声提示コンテキスト または 画像提示コンテキスト に現れるもの。

注:

tt および head という要素型は、 8.1 コンテンツ要素の 語彙 で定義されていますが、 意図的に上の定義の範囲には含められていません。これらは、 次のモジュールの定義に含まれます: 文書 および ヘッダー モジュール。これらは、 表 5-3 – 要素の語彙 にあります。

上に挙げた要素型に加えて、コンテンツ要素型として 指定される要素型で、その指定が 拡張モジュール によって行われるもの。

[コンテンツ画像]

画像リソース であり、意味的に有意な コンテンツを含むもの。例えば、 キャプションのレンダリング結果を表すラスター画像です。

[コンテンツ処理系]

タイムドテキストマークアップ言語のコンテンツを、 変換、提示、またはその他の処理を目的としてインポート(受信)できる処理システム。

[コンテンツプロファイル]

プロファイル であり、(1) type 構成要素 の値が、関連する プロファイルインスタンス において、 content であり、 (2) その 機能 と 拡張 の集合が、 タイムドテキストマークアップ言語のコンテンツで使用してはならないもの、使用しなければならないもの、または使用してもよいものであるもの。

[コンテンツ領域]

提示処理を行うときにコンテンツがレンダリングされる、 論理的な矩形領域。 文脈が明確な場合には単に 領域 と 略記されます。各コンテンツ領域は、 明示的に指定された、または暗黙の region 要素によって定義され、 この要素は、コンテンツ領域の寸法を ルートコンテナー領域 に対して定義するとともに、その他のスタイル上および時間的な特性を定義します。

[中核モジュール]

モジュール であり、この仕様の本文内で定義されるもの。 具体的には、次の表で定義されるモジュールです: 表 5-3 – 要素の語彙 および 表 5-5 – 属性の語彙。

[データバインディングコンテキスト]

data 要素が、 意味的な束縛(関連付け)を目的として指定されるコンテキスト。このような data 要素は、 データをインラインで指定できます。その場合、data 要素を、 子の source 要素内で使用します。または、 別の data 要素で、 データ定義コンテキスト に指定されたものを参照することも、両方を行うこともできます。 提示(レンダリング)の 意味論は、data 要素がこの(またはいずれかの) コンテキストに存在するだけでは含意されません。

[メタデータ用のデータバインディング コンテキスト]

data 要素であり、その親 要素が、 metadata 要素であるもの。

[ソース用のデータバインディング コンテキスト]

data 要素であり、その親 要素が、 source 要素であるもの。

[データ定義コンテキスト]

data 要素が、共有可能な定義として機能するよう 指定されるコンテキスト。その定義は、別の data 要素から、 データバインディングコンテキスト において参照されます。具体的には、 data 要素であり、その親 要素が、 resources 要素であるものです。

[データ要素]

データモジュール で定義される要素型のいずれか。

[データリソース]

任意のデータリソースであり、データ要素 を使用して表現または参照されるもの。例えば、 データリソースは、音声クリップ、フォント、画像、または 任意のアプリケーションデータを、 タイムドテキストコンテンツ文書 インスタンス に埋め込んだり、そこから参照したりするために使用できます。

[既定の処理系プロファイル]

既定の 処理系プロファイル であり、 実効処理系プロファイル の算出に使用されるもの。これは、宣言または推論された プロファイルである 処理系プロファイル が存在しない場合に使用され、この既定の処理系 プロファイルは、 既定の処理系プロファイルを構築する 手続きによって決まります。

[既定の領域]

既定の アウトオブライン領域 であり、 明示的に指定された アウトオブラインの region 要素が存在しない場合、すなわち、 region 要素が 子として、 layout 要素に指定されていない場合に暗黙に存在するもの。

[指定子付きプロファイル]

プロファイル であり、<profile-designator> と、 designator 属性、またはプロファイル仕様内の散文によって関連付けられているもの。

[表示アスペクト比]

DAR の定義を参照してください。

[文書座標空間]

論理的な座標空間であり、 ルートコンテナー領域 のアスペクト比と解像度を決めるもの。この領域は、 次のものの整形と提示に使用されます: 文書インスタンス。詳細については、 H ルートコンテナー領域の意味論 を参照してください。

[文書インスタンス]

タイムドテキスト文書インスタンス。

[文書交換コンテキスト]

暗黙のコンテキストまたは環境であり、コンテンツ 処理系 の外部にあって、 文書の交換が行われるもの。この中では、帯域外のプロトコルまたは仕様が、 暗黙のプロファイルなど、特定の既定動作を定義する場合があります。

[文書処理コンテキスト]

暗黙のコンテキストまたは環境であり、コンテンツ 処理系 の内部にあって、 文書の処理が行われるもの。この中では、帯域外のプロトコルまたは仕様が、 特定の既定動作を定義する場合があります。例えば、次のものの確立または作成です: 合成文書同期基準。

[文書時間座標 空間]

算出された時間表現を解釈する基準となる時間座標系であり、 その解釈は、 文書インスタンス 内で行われます。詳細については、 7.2.11 ttp:timeBase を参照してください。

[実効コンテンツプロファイル]

コンテンツプロファイル であり、すべての コンテンツプロファイル の集合から算出されるもの。 これらは、明示的または暗黙的に TTML 文書インスタンス から参照されるか、それに割り当てられたものであり、 明示的または暗黙的なプロファイルおよびプロファイル指定の結合方法を適用して算出されます。これについては、 次の 実効コンテンツプロファイルを構築する 手続きを参照してください。 指定された 文書 インスタンス を検証する場合、 その検証は、文書の 実効コンテンツプロファイル を使用して実行されます。

[実効処理系プロファイル]

処理系プロファイル であり、すべての 処理系プロファイル の集合から算出されるもの。 これらは、明示的または暗黙的に TTML 文書インスタンス から参照されるか、それに割り当てられたものであり、 明示的または暗黙的なプロファイルおよびプロファイル指定の結合方法を適用して算出されます。これについては、 次の 実効処理系プロファイルを構築する 手続きを参照してください。 コンテンツ処理系 が、 指定された 文書インスタンス を処理できるかどうかを判断する場合、 その判断は、 文書の 実効 処理系プロファイル を使用して行われます。

[実効検証プロファイル]

スキーマ(またはスキーマの集合)の選択に使用されるプロファイルであり、そのスキーマは 検証処理 中に使用されます。 このプロファイルは、実効検証 プロファイルを構築する 手続きによって決まります。

[実効検証スキーマ]

スキーマの集合であり、検証 処理 中に使用されるもの。 この集合は、実効検証 スキーマを構築する 手続きによって決まります。

注:

この仕様で定義される TTML コンテンツのすべての制約を表現できるスキーマ言語は 存在しないため、追加の 組み込みのプログラムによる(コードに基づく)スキーマを、検証機能付きコンテンツ処理系 が使用することを想定しています。

[要素情報項目]

XML 文書に現れる各要素は、要素情報 項目に対応します。これは [XML InfoSet]、§2.2 で定義されています。 要素ノード とも呼ばれます。

注:

B.2 要素情報項目 に、 追加情報があります。

[埋め込みコンテンツ要素]

音声モジュール、 データモジュール、 フォントモジュール、または 画像モジュール で定義される要素型のいずれか。

[埋め込みコンテンツリソース]

音声リソース、データ リソース、フォントリソース、 または 画像リソース。

[埋め込みデータリソース]

データリソース であり、 タイムドテキストコンテンツ文書 インスタンス に埋め込まれ、 data 要素によって表現されるもの。 この data 要素が、 実際のバイト列として データリソース を表現するか、外部データリソース を参照するかは問いません。

[空データリソース]

データリソース であり、レンダリング可能なコンテンツを含まず、 さらに、 このリソースを一連のコンテンツサンプルに解決しようとしても、サンプルが 生成されないもの。

[包含文書インスタンス]

文書インスタンス であり、 内部にある 機能または 構成要素 を包み込むか、その他の形で含むもの。

[交換プロファイル]

コンテンツ交換に関する一連の必要性に対応する、コンテンツのプロファイル。

[拡張]

構文的または意味的な表現、あるいは能力であり、 別の(公開または非公開の)仕様において定義され、 (拡張の指定を使用して)ラベル付けされるもの。

[拡張モジュール]

モジュール であり、中核 モジュール ではないもの。

[拡張指定]

制約または要件の指定であり、 拡張 に関係し、通常、 ttp:extension 要素によって表現されるもの。

[外部データリソース]

データリソース であり、その表現が、 次のものの外部にある(内部には含まれない)もの: タイムドテキストコンテンツ文書 インスタンス。このリソースは、 src 属性によって参照されます。この属性は、source 要素 または 埋め込み コンテンツ要素 にあります。

[外部ソース]

(1) source 要素または src 属性であり、 外部データリソース を参照するもの、または (2) 参照される 外部データリソース のいずれか。

[機能]

構文的または意味的な表現、あるいは能力であり、 この仕様(またはこの仕様の過去もしくは将来の 改訂)において定義され、(機能の指定を使用して)ラベル付けされるもの。

[機能指定]

制約または要件の指定であり、 機能 に関係し、通常、 ttp:feature 要素によって表現されるもの。

[強制字幕]

字幕(またはキャプション)が有効になっていない場合でも、常に表示されることを意図した 字幕(またはキャプション)。強制字幕(キャプション)は、 外国語や架空の言語、あるいは標識などの メディア内に現れるテキストの翻訳に関する字幕(キャプション)を、 オープンキャプション化、すなわち映像に焼き付けることを避けるために使用されます。

[フォント定義コンテキスト]

font 要素が、共有可能な定義として機能するよう 指定されるコンテキスト。その定義は、フォント選択処理 によって間接的に参照されます。

[フォント選択処理]

内部処理であり、提示 処理系 によって使用され、 レイアウトおよび提示処理中に使用する、著者定義フォントとプラットフォームフォントの 集合を選択することを目的とするもの。この処理への入力パラメーターには、 フォント関連プロパティの算出値、個々のフォントの能力、 および提示されるテキストコンテンツが含まれます。

[フォントリソース]

データリソース であり、フォント情報を含むもの。例えば、 文字からグリフへのマッピングデータ、グリフの輪郭や画像、 グリフメトリクス、および文字からグリフへのマッピングとレンダリングの処理に使用されるその他のデータです。

[高さ]

絶対寸法 であり、垂直軸 上のもの。

注:

例外的な場合には、高さ という用語が 水平軸 を指すことがあります。 詳細については、10.2.27 tts:lineHeight を参照してください。

[フラグメント識別子]

<uri> 値の構文的な部分集合であり、 次の [URI]、§3.5 で定義されるフラグメント識別子の構文に従うもの。

[グリフエリア]

インラインエリア の型であり、[XSL-FO 1.1] のグリフエリア、§4.6.2 で定義されるもの。 この仕様では、グリフエリアは、1つ以上のコンテンツ文字と、 特定のフォントの1つ以上のグリフに関連付けられます。グリフエリアを 提示するときには、これらのグリフがレンダリングされます。有幅グリフエリアとは、 少なくとも1つの 有幅グリフ、すなわち送り量(幅または高さ)がゼロでないグリフに関連付けられたグリフエリアです。 無幅グリフエリアとは、 有幅グリフエリアではないグリフエリア、すなわち無幅グリフのみからなるグリフエリアです。

[グリフエリア子孫]

グリフエリア であり、使用される文脈から暗黙に定まる、 他のエリアの子孫エリアであるもの。 例えば、インラインエリア I の子孫エリアで、グリフエリア であるものは、 I の グリフエリア子孫 です。

[画像定義コンテキスト]

image 要素が、共有可能な定義として機能するよう 指定されるコンテキスト。その定義は、別の image 要素から、 画像提示コンテキスト において参照されます。

[画像提示コンテキスト]

image 要素が、 提示(レンダリング)を目的として指定されるコンテキスト。このような image 要素は、 画像データをインラインで指定できます。その場合、data 要素を、 子の source 要素内で使用します。または、 別の image 要素で、 画像定義コンテキスト に指定されたものを参照することも、両方を行うこともできます。

[画像リソース]

データリソース であり、ラスター画像を含むもの。

[推論された処理系プロファイル]

処理系プロファイル であり、 推論された処理系 プロファイルを構築する 手続きによって決まり、 実効処理系プロファイル として機能し得るもの。 これは、 検証処理 の実行に使用されます。

[インラインアニメーション]

Animation.class 要素グループ内の要素であり、 インラインで直接の子として定義されるもの。その親は、 コンテンツ要素 または region 要素であり、この要素に アニメーションが関連付けられます。 インラインアニメーション要素と、 その親の コンテンツ 要素 または region 要素との間には、1対1の関係があります。

[インラインエリア]

エリア の型であり、[XSL-FO 1.1] の インラインエリア、§4.6 で定義され、その子が すべて インラインエリア、例えば グリフエリア からなるもの。

[インラインブロック表示]

インラインブロック表示は、レイアウトの意味論の集合であり、コンテンツ要素 に 特定の文脈で適用できます。この場合、生成されたブロックエリアは、不可分なエリアとして、 インラインレイアウトコンテキストに配置されます。すなわち、そのブロック エリアは、外部から見た場合には、それ自体がインラインエリアであるかのように扱われますが、 内部から見た場合にはブロックエリアとして扱われます。

[インライン表示]

インライン表示は、レイアウトの意味論の集合であり、コンテンツ要素 に 特定の文脈で適用できます。この場合、子エリアはインライン進行 方向に順次配置されます。

注:

[CSS2] では、 CSS の display プロパティに inline という値が指定され、 コンテンツ要素 に提示処理中に適用されるとき、インライン表示が示されます。 [XSL-FO 1.1] では、インライン表示は、 fo:inline 要素を配置するときに行われます。

[インライン進行寸法]

インライン進行軸上の 相対寸法、 すなわち正の インライン進行 方向 の寸法であり、 ipd または IPD と略記されます。

[インライン進行方向]

ある整形コンテキストにおいて、インラインエリアが進行する方向。横書きモードの 文脈では、 インライン進行方向は通常、左から右、または右から左です。一方、 縦書きモードの文脈では、 通常、上から下です。

[インライン領域]

領域 であり、その領域に選択される(その領域を対象とする) コンテンツ要素 に対して、インラインの方法で定義される もの。 インライン領域は、region 要素によって指定され、これは、 特定の コンテンツ要素 の子です。 インラインの region 要素と、 その親の コンテンツ要素 との間には、1対1の関係があります。インライン領域には、 親要素の時間区間が、その有効時間区間として 割り当てられます。region 属性からインライン領域が参照されることはありません。

[中間同期 文書]

タイムドテキスト中間文書 または タイムドテキスト中間文書 インスタンス であり、使用される文脈に応じてそのいずれかを指します。 ルート(文書)要素は isd:isd 要素であり、 重複しない時間区間を表します。この区間は、ソースの 文書である タイムドテキストコンテンツ文書 のコンテンツ、スタイル指定、レイアウト、およびタイミングと交差します。

[中間 同期文書列]

タイムドテキスト中間文書 または タイムドテキスト中間文書 インスタンス であり、使用される文脈に応じてそのいずれかを指します。 ルート(文書)要素は isd:sequence 要素であり、 次のものの列を 表します: 中間同期 文書 インスタンス。 この列は、ソースの タイムドテキストコンテンツ文書 のコンテンツ、スタイル指定、レイアウト、およびタイミングを実質的に表します。

[中間文書構文]

形式体系であり、具体的な表現に使用されるもの。その対象は、中間同期文書 列 または 中間同期文書 です。

[内部データリソース]

データリソース であり、その表現が、 次のものの内部にある(内部に含まれる)もの: タイムドテキストコンテンツ文書 インスタンス。このリソースは、 src 属性によって参照されます。この属性は、source 要素 または 埋め込み コンテンツ要素 にあります。

[ブロックコンテンツの内在的寸法]

一連のブロックレベルのコンテンツの寸法、すなわち幅と高さであり、 コンテンツを無制限のブロック コンテナーエリアに整形し、その結果得られる整形済みブロック コンテナーの幅と高さを求めることによって決まるもの。

[画像の内在的寸法]

画像の寸法、すなわち幅と高さであり、画像 自体の内部情報から決まるもの。例えば、 画像のピクセル配列の幅と高さです。

[インラインコンテンツの内在的 寸法]

一連のインラインレベルのコンテンツの寸法、すなわち幅と高さであり、 コンテンツを無制限のインライン コンテナーエリアに整形し、その結果得られる整形済みインライン コンテナーの幅と高さを求めることによって決まるもの。

[上位プロトコル]

文書処理 コンテキスト のプロトコルまたは処理であり、 この仕様の範囲外にあるもの。

[水平軸]

水平面に平行な軸。

[行エリア]

ブロックエリア の型であり、[XSL-FO 1.1] の行エリア、§4.5 で定義され、その子が 1つ以上の インラインエリア からなるもの。

[メタデータ要素]

メタデータ モジュール で定義される要素型のいずれか。

[モジュール]

機能 および(または)拡張 の定義の集合であり、 中核モジュール または 拡張モジュール のいずれかとして定義されるもの。

注:

モジュールは プロファイル とは異なり、独立した概念です。 前者は (利用される用途にかかわらず)機能を定義するのに対し、後者は (処理系によるサポート または文書による使用のために)機能を選択するという点で異なります。また、単一の仕様が、 モジュールに(明示的または暗黙的に)関連付けられた機能を 定義するとともに、プロファイルも定義できることに注意してください。例えば、この仕様は、 中核モジュール の集合を定義し、 さらに3つの プロファイル も定義しています。これらについては、それぞれ 5.4.1 中核語彙の一覧 および G 標準プロファイル を参照してください。

[入れ子のプロファイル]

構成部分となる プロファイル であり、入れ子を含むプロファイル の一部をなすもの。すなわち、 上位の(祖先の)ttp:profile 要素の子孫である ttp:profile 要素のいずれかです。ある ttp:profile は、 入れ子のプロファイル と 入れ子を含むプロファイル の両方として機能できます。

注:

入れ子のプロファイルは、タイムドテキストコンテンツ文書 インスタンス または タイムドテキストプロファイル文書 インスタンス に現れることができます。

[入れ子を含むプロファイル]

プロファイル であり、1つ以上の子の ttp:profile 要素を参照して定義されるもの。このとき、 プロファイルの結合方法によって、複数の子の ttp:profile 要素からのプロファイル指定を結合する方法が決まります。 constituents 構成要素、すなわち プロファイルインスタンス の構成要素は、 入れ子を含むプロファイルに関連付けられている場合、null ではありません。

[入れ子の埋め込みソース]

source 要素であり、 子の data 要素を指定し、この子要素が 実際のバイト列として、 埋め込みデータリソース を埋め込むもの。この埋め込みは、 単純データ埋め込み または チャンク化データ埋め込み のいずれによるものでもかまいません。

[非結合プロファイル]

プロファイル であり、constituents 構成要素、すなわち 結合 指定集合 の構成要素が、 関連する プロファイルインスタンス において、 null でない指定子を1つ以下しか含まないもの。

[非コンテンツ画像]

画像リソース であり、意味的に 有意なコンテンツを含まないもの。例えば、 背景のデザインを表すラスター画像であり、提示されなくても、 意味的に有意なコンテンツの提示に影響しないものです。

[入れ子でない埋め込みソース]

source 要素であり、 子の data 要素を指定し、この子要素が、 実際のバイト列の表現としては、 埋め込みデータリソース を埋め込まないもの。

[入れ子を含まないプロファイル]

プロファイル であり、1つ以上の子の ttp:profile 要素を参照せずに定義されるもの。すなわち、 子の ttp:profile 要素を含めずに定義されます。 constituents 構成要素、すなわち プロファイルインスタンス の構成要素は、 入れ子を含まないプロファイルに関連付けられている場合、null です。

[アウトオブラインアニメーション]

Animation.class 要素グループ内の要素であり、 コンテンツ要素 または region 要素から離して定義されるもの。これらの要素には、 アニメーションが関連付けられます。 アウトオブラインアニメーションは、animation 要素の子として、ヘッダー (head 要素)内に現れます。 これは 文書インスタンス のヘッダーです。 参照されるアウトオブラインアニメーション要素と、 それを参照する コンテンツ要素 および region 要素との間には、1対多の関係があります。

[アウトオブライン領域]

region 要素であり、 次の要素から離して 定義されるもの: コンテンツ要素。そのコンテンツ要素は、この領域に関連付けられます (この領域に選択されます)。 アウトオブライン領域は、layout 要素の子として、ヘッダー (head 要素)内に現れます。 これは 文書インスタンス のヘッダーです。 参照されるアウトオブライン領域要素と、 それを参照する コンテンツ要素 との間には、1対多の関係があります。 既定のアウトオブライン領域 は、 アウトオブライン領域 が明示的に指定されていない場合に暗黙に存在します。

[上書きコンテンツプロファイル]

コンテンツプロファイル であり、他のあらゆる 方法で 決定され得る コンテンツプロファイル を上書きすると決定されたもの。

[上書き処理系プロファイル]

処理系プロファイル であり、他のあらゆる 方法で 決定され得る 処理系プロファイル を上書きすると決定されたもの。

注:

例えば、省略可能な profile または codecs パラメーターは、 次の仕様で定義されています: [TTML Profile Registry]、§2、メディア型の登録。これらは、 コンテンツ処理系 によって、 上位プロトコル として使用され、 上書きプロファイルの決定に用いられることがあります。

[ピクセルアスペクト比]

PAR の定義を参照してください。

[提示コンテキスト]

提示処理コンテキスト を参照してください。

[提示処理 コンテキスト]

仮想的な表示装置であり、ルート コンテナー領域 と、 関連メディアオブジェクト領域 が提示されるもの。

[提示コンテキストの 座標空間]

座標空間であり、提示 コンテキスト に関連付けられるもの。

注:

提示 処理系 のある実装では、 表示ピクセル、すなわち 論理ピクセル に 文書座標空間 内で関連付けられたピクセルが、 正確に対応する場合があります。その対応先は、 提示ピクセル であり、 提示コンテキストの 座標空間 内にあります; ただし、このような正確な対応が適用される必要はありません。特に、 これらの座標空間間の(実装定義の)マッピングでは、 ピクセルアスペクト比、解像度、色空間、 色サンプルのビット深度、 およびその他の実装固有の特性が変換される場合があります。

[提示関連要素]

(1) 提示可能なコンテンツを含むか表現する、または (2) コンテンツの提示に影響する要素。前者の例には、 すべての コンテンツ要素 と、特定の 埋め込みコンテンツ要素、特に、 audio および image が含まれます。 後者の例には、インラインの animate および set が含まれます。 メタデータ要素 はこの定義から除外されることに十分注意してください。

[提示処理系]

コンテンツ処理系 であり、レイアウト、 整形、およびレンダリング、 すなわち提示を、タイムドテキストマークアップ言語 のコンテンツに対して、この仕様で定義される提示の意味論を 適用して行うことを目的とするもの。

[処理系]

コンテンツ処理系 を参照してください。

[処理系プロファイル]

プロファイル であり、(1) type 構成要素 の値が、関連する プロファイルインスタンス において、 processor であり、 (2) その 機能 と 拡張 の集合が、 コンテンツ処理系によって実装(サポート)されなければならないもの、または実装されてもよいものであるもの。

[プロファイル]

機能 および 拡張 の指定の集合であり、 内部化(インスタンス化)されると、プロファイルインスタンス 状態オブジェクトによって表現されます。 プロファイルは、コンテンツプロファイル または 処理系プロファイル の型を持ちます。

[プロファイル定義文書]

タイムドテキストプロファイル文書 または タイムドテキストプロファイル文書 インスタンス であり、使用される文脈に応じてそのいずれかを指します。

[プロファイルフラグメント識別子]

フラグメント識別子 であり、 内部で定義された プロファイル をラベル付けまたは参照するために使用されるもの。 ここで内部とは、文書 インスタンス の内部を指します。

[プロファイル処理]

次の [処理系プロファイルが サポートされていなければ中止する] 手続きを実行する処理。この手続きは、副作用として、 次のものを決定します: 実効コンテンツプロファイル(必要な場合)および 実効処理系プロファイル。これらは、文書インスタンス のプロファイルです。

[プロファイル指定]

機能指定 または 拡張指定、 あるいはそれらの内部状態表現。

[縮約された XML 情報集合]

XML 情報集合 [XML InfoSet] であり、 B 縮約された XML 情報集合 で指定される制約を満たすもの。

[参照によるデータ埋め込み]

埋め込みコンテンツ要素 であり、 コンテンツを間接的に参照するもの。 そのコンテンツは 埋め込みコンテンツリソース のものであり、 参照には、 src 属性を使用します。

[領域]

ルートコンテナー領域 または コンテンツ領域 であり、修飾なしで使用される場合は、 後者を指します。

注:

文書の提示に関連付けられるルートコンテナー領域は 一意に1つだけですが、 この仕様は、時間を通じて、または ある時点で使用されるコンテンツ領域の数に制限を設けていません。ただし、 一部の コンテンツプロファイル は、 そのような制限を 指定しています。

[関連メディアオブジェクト]

メディアオブジェクト(null の場合もある)であり、 文書インスタンス に関連付けられるか、その他の形で関連するもの。例えば、音声と映像を組み合わせたメディア オブジェクトであり、 文書インスタンス が、そのキャプション または字幕の 情報を提供し、その 文書インスタンス が 関連付けられるものです。

[関連メディアオブジェクト領域]

提示処理 コンテキスト の領域であり、null でない視覚的な 関連メディアオブジェクト が提示されるもの。

[相対寸法]

インライン進行軸またはブロック進行軸のいずれかに沿った長さを表すスカラー値であり、 その軸は、 適用される書字モードに従って決まります。

[ルートコンテナー領域]

一意の論理的な矩形領域であり、座標系を確立するもの。その中に、 コンテンツ領域 が配置され、必要に応じてクリップされます。 これについては、H ルートコンテナー領域の 意味論 も参照してください。

注:

ルートコンテナー領域 には、ボーダーも パディングもありません。したがって、そのボーダー矩形、パディング矩形、および コンテンツ矩形の境界は一致します。

[ルート時間範囲]

時間的な範囲(区間)であり、文書インスタンス の時間的な開始と終了を、 何らかの外部アプリケーションまたは提示コンテキストとの関係で定めることによって定義されるもの。

[ルビコンテナースパン]

span 要素であり、 算出値として、 tts:ruby が "container"、"baseContainer"、 または "textContainer" となるもの。

[有意なテキストノード]

有意なテキストノードとは、テキストノード であり、 少なくとも1つの 有意な データ文字 を含むものです。 データ 文字 が有意であるかどうかは、 宣言された内容モデルと、要素型に定義された意味論によって決まります。この要素型は、テキストノード の 親の 要素ノード の型です。詳細については、[XML 1.0]、§3.2 を参照してください。 特に、親の要素型の内容モデルが、 要素 内容 である場合、 どの データ文字 も有意ではありません。ただし、 親の要素型の内容モデルが、 混合内容 である場合、 親の要素型の意味論と、適用されるスタイルプロパティ(この仕様で定義されるもの)が、 次のことを決定します: データ文字 が、ある使用文脈で有意である(無視されない)か、 有意でない(無視される)か。

注:

データ文字 とは、 次のように 見なされる任意の文字です: 文字データ。 これは、 [XML 1.0]、§2.4 で定義されるもの、または具体的な符号化が A 具体的な符号化 に基づかない場合の、その同等物です。

[単純データ埋め込み]

data 要素であり、 実際のバイト列の表現を直接埋め込むもの。 そのバイト列は 埋め込みデータリソース のものであり、 この埋め込みでは、 子の chunk 要素を使用しません。

[SMPTE タイムコード]

タイムコードであり、その形式と意味論が [SMPTE ST 12-1] で定められ、 放送用の音声・映像ストリームなどのメディアコンテンツに埋め込まれるか、 その他の形で関連付けられることがあるもの。

[ソースによるデータ埋め込み]

埋め込みコンテンツ要素 であり、 コンテンツを間接的に参照するもの。 そのコンテンツは 埋め込みコンテンツリソース のものであり、 参照には、 子の source 要素を使用します。

[指定スタイル集合]

スタイル集合 であり、指定スタイル値を含むもの。その値は、 10.4.4.2 指定スタイル集合の 処理 によって決まります。

[発話データリソース]

データリソース であり、出力から生成されたサンプルで 構成されるもの。その出力元は、 音声合成処理系 です。

[音声合成処理系]

省略可能な 構成要素 であり、コンテンツ処理系 の一部をなすもの。 その機能は、テキストコンテンツの発話音声によるレンダリングを合成することです。

[格納アスペクト比]

SAR の定義を参照してください。

[スタイル集合]

スタイルプロパティの集合であり、 スタイルプロパティ集合 で定義されるもの。

[スタイル付き要素]

算出 スタイル集合 に関連付けられているか、関連付けられることがある要素。

[スタイル指定属性]

グローバル属性であり、(1) TT スタイル名前空間 のいずれか、または (2) その他の名前空間 で定義されるもの。後者では、 定義元の モジュール が、 その属性をスタイル指定属性であると宣言します。

注:

次の意味論を定義する目的において、10.4.4 スタイル解決 処理 では、スタイル指定属性は(明示的に指定されたものでも 既定値によるものでも)、スタイルプロパティ として内部化(インスタンス化)されることを意図しています。

[合成文書同期基準]

文書レベルの 同期基準 [SMIL 3.0]、§5.7.1 であり、 文書処理コンテキスト によって合成されるか、その他の方法で確立されるもの。 これは、 関連メディアオブジェクト またはその他の処理基準に従って行われます。

[合成 SMPTE 文書 同期基準]

合成文書同期基準 であり、 SMPTE タイムコード の値から構築されるもの。 この値は、関連 メディアオブジェクト に埋め込まれるか、関連付けられるか、 その他の方法で 文書処理 コンテキスト によって決まります。

[時間的に有効]

構文的または意味的な機能、例えば要素や要素の提示は、 選択された時間基準の現在時刻が、 その機能の 有効時間区間と交差するとき、時間的に有効 です。

[時間的に有効な領域]

領域 であり、時間的に 有効 であるもの。

[テキストの向き]

グリフエリア の向きを、 回転角度によって特徴付けたもの。 0° は upright の向きを指定し、 90°、すなわち時計回りに90度は、sideways の向きを指定します。 これについては、10.2.45 tts:textOrientation も参照してください。

[時間指定要素]

次の属性の指定を許可する型の要素: begin 属性。

[タイムドテキスト]

内在的または外在的に、 時間情報と関連付けられたテキスト情報。

[タイムドテキストオーサリングシステム]

タイムドテキストマークアップ言語のコンテンツをインポートおよびエクスポートできる、 コンテンツオーサリングシステム。

[タイムドテキストコンテンツ文書]

抽象文書であり、 妥当な抽象文書インスタンス であると主張または確認されているもの。 その文書型は、TTML コンテンツ文書型 です。

[タイムドテキストコンテンツ 文書インスタンス]

タイムドテキストコンテンツ 文書 の具体的な実体。 これについては、A 具体的な符号化 も参照してください。

[タイムドテキスト文書インスタンス]

次のものの具体的な実体: タイムドテキストマークアップ言語 文書。 その具体的な形式は、参照される文脈に固有のものです。 TTML 文書インスタンス、 または単に 文書インスタンス とも呼ばれます。

[タイムドテキスト中間 文書]

抽象文書であり、 妥当な抽象文書インスタンス であると主張または確認されているもの。 その文書型は、TTML 中間文書型 です。

[タイムドテキスト 中間文書インスタンス]

タイムドテキスト 中間文書 の具体的な実体。 これについては、A 具体的な符号化 を参照してください。

[タイムドテキストマークアップ言語]

タイムドテキストコンテンツ、そのコンテンツの中間表現、 またはそのコンテンツやコンテンツ処理系のプロファイルを表すコンテンツ型。

[タイムドテキストマークアップ言語 文書]

抽象文書であり、 妥当な抽象文書インスタンス であると主張または確認されているもの。

[タイムドテキストプロファイル文書]

抽象文書であり、 妥当な抽象文書インスタンス であると主張または確認されているもの。 その文書型は、TTML プロファイル文書型 です。

[タイムドテキストプロファイル 文書インスタンス]

タイムドテキストプロファイル 文書 の具体的な実体。 これについては、A 具体的な符号化 を参照してください。

[最上位プロファイル]

プロファイル であり、ttp:profile 要素によって定義されるもの。この要素は、 子として、 head 要素に現れます。この親要素は、タイムドテキストコンテンツ文書 インスタンス のものです。

[変換処理系]

コンテンツ処理系 であり、変換または その他の書き換えによって、 タイムドテキストマークアップ言語 のコンテンツを、 タイムドテキストマークアップ言語 または別の(任意の)コンテンツ形式にすることを目的とするもの。前者の例は、 TTML の機能を削除 または書き換えて、TTML のプロファイルに適合させる処理系です。後者の例は、 TTML をまったく異なるタイムドテキスト形式に変換する処理系です。この 仕様は、変換処理の対象プロファイルまたは対象形式を 別途定義していないため、 これ以上の変換の意味論は、この仕様では定義されません。

[指定子のないプロファイル]

プロファイル であり、プロファイル指定子 に関連付けられておらず、 そのプロファイルの定義の文脈で暗黙的に参照されるもの。 匿名プロファイル とも呼ばれます。

[妥当な抽象文書 インスタンス]

抽象文書インスタンス であり、 妥当性を評価され、 4 文書型 の定義に従って妥当であると判定されたもの。

[検証処理]

検証 処理系 によって実行される機能。

[検証処理系]

省略可能な 構成要素 であり、コンテンツ処理系 の一部をなすもの。その機能は、 検証処理を、 候補となる 文書インスタンス に対して、 特定の他の種類の処理を行う前に実行することです。 この検証処理は、 [文書を検証する] 手続きを実行することからなり、 これは 5.3 検証 で定義されています。

[検証機能付きコンテンツ処理系]

コンテンツ処理系 であり、検証処理系 構成要素 を、前処理の段階として実装するもの。その段階は、 コンテンツ処理系 としての主要な機能を実行する前に行われます。

注:

検証機能付きコンテンツ処理系は、(1) 文書インスタンスの検証(または 確認)のみを機能として持つ場合があります。 この場合、それは検証機能付きの 変換処理系 であり、 その出力が妥当性(または非妥当性)を示すものと見なせます。または、(2) 複数の機能を持ち、その最初の機能が、 文書インスタンスの検証(または確認)であり、 続いて主要な機能を 変換処理系 または 提示処理系 として実行する場合があります。

注:

検証処理を実行する場合、適合する検証機能付きコンテンツ処理系は、 検証処理と コンテンツ処理を交互に実行してもかまいません。ただし、あるコンテンツ単位について、 後者が時間的に前者に先行してはなりません。

[垂直軸]

水平面に垂直な軸。

[幅]

絶対寸法 であり、水平軸 上のもの。

[書字モード]

トークンの列挙集合であり、各トークンは、 インライン方向とブロック方向の両方のコンテンツについて、 フローの軸と方向の組み合わせを指定します。これについては、10.2.51 tts:writingMode を参照してください。

2.3 文書の表記規則

この仕様の規範的な散文では、 してもよい、すべきである、および しなければならない という語句を、 次のように定義します:

してもよい

適合する文書および(または)TTML 処理系は、記述されたとおりに動作することを許可されますが、 そのように動作する必要はありません。

すべきである

適合する文書および(または)TTML 処理系は、記述されたとおりに動作することを強く 推奨されますが、そのように動作する必要はありません。

しなければならない

適合する文書および(または)TTML 処理系は、 記述されたとおりに動作することを要求されます。そうでなければ、誤りです。

規範的な仕様の記述が命令形を取る場合、 しなければならない という語句が 適用されるものとして扱います。さらに、規範的な記述が宣言形を取り、 その記述が しなければならない によって規定されている場合、 そこにも しなければならない という語句が 適用されるものとして扱います。

注:

例えば、"X をエラーとして扱う" および "X をエラー と見なす" という表現は、使用される文脈において必須要件として読まれます。同様に、仕様の 散文が、 "X を適用しなければならない"、"X が適用される"、または "X は必須である" であり、さらに "X" が "X は Y および Z である" と定義されている場合、 推移閉包によって、この最後の宣言的な表現は、その使用文脈において "Y は必須である" および "Z は必須である" と読まれます。

XML 表現および その他の関連用語の規範的な構文定義はすべて、薄い黄橙色の背景色で示され、 "XML 表現" または "構文表現" とラベル付けされます。 次にその例を示します:

XML 表現 – 要素情報項目: example
<example
  count = <integer>
  size = ("large" | "medium" | "small" | "tiny" | "micro") : medium>
  内容: (all | any*)
</example>

XML 表現では、太字の属性名(上の count など)は、 必須の属性 情報項目を示し、残りは省略可能です。属性 情報項目に列挙型の定義がある場合、値は、 上の size のように縦棒で区切って示されます。 既定値がある場合、コロンの後に示されます。 属性情報項目 が組み込み単純 型の定義を持ち、 それが [XML Schema Part 2] で定義されている場合、そこにある定義へのハイパーリンクが 提供されます。

この仕様で明示的に定義されていない限り、名前空間で修飾されていない属性は許可されません。

注:

N.1 要素の由来 を除き、 属性の名前(名前空間で修飾されている場合もあります)には、 '@' (COMMERCIAL AT) 文字が接頭辞として付けられ、 属性と同名の要素型を区別します。この場合、 '@' 文字は、属性の文字どおりの名前の一部をなすものではありません。 例えば、@ttm:agent は ttm:agent 属性を指し、 ttm:agent は、 ttm:agent 要素を指します。

薄い黄橙色 の背景 色で示される情報項目は、非推奨です(例えば、 上に示した size 属性の tiny 値)。 非推奨 の情報項目は、TTML 文書インスタンスに 現れてもよいですが、現れるべきではありません。 また、検証機能付きコンテンツ処理系 は、 その項目が現れた場合、警告を報告すべきです。 薄い赤紫色 の背景 色で示される情報項目は、廃止されています(例えば、 上に示した size 属性の micro 値)。 廃止された 情報項目は、TTML 文書インスタンスに現れてはなりません。 また、検証機能付きコンテンツ処理系 は、 その項目が現れた場合、エラーを報告すべきです。 項目に対するこれらの指定は、 仕様の本文でも明示的に示されます。

情報項目に許可される内容は、文法 断片として示され、クリーネ演算子 ?、* および + が使用されます。その中の各要素名は、 その要素自体の説明へのハイパーリンクです。

線形空白(LWSP)という用語は、 SPACE (U+0020)、TAB (U+0009)、CARRIAGE RETURN (U+000D)、または LINE FEED (U+000A) の空でない列として解釈します。 これは、[XML 1.0] で定義される生成規則 [3] S に対応します。

値の構文表現を指定するときには、次の表記規則を使用します:

  • リテラル項(引用符内に指定されるもの)が現れる場合、指定されたとおりに 正確に 現れなければなりません(引用符自体は除きます);

  • リテラル '\\' は、単一のバックスラッシュ、すなわち REVERSE SOLIDUS (U+005C) として解釈されます;

  • 連結された(並置された)項は、すべての項が記載された順序で現れなければならないことを意味します。例えば、 a b は、 a と b という項が存在し、前者が後者に先行することを意味します;

  • 縦棒(|)は2つ以上の選択肢を区切り、そのうちちょうど1つが 現れなければなりません;

  • 二重の縦棒(||)は2つ以上の選択肢を区切り、そのうち1つ以上が、 重複せずに任意の順序で現れなければならず、 <lwsp> で区切られます;

  • 開き丸括弧と閉じ丸括弧(())は、グループ化と演算子の 優先順位の解決に使用します;

  • 開き角括弧と閉じ角括弧([])は、文字クラスを表すために使用します;

  • 開き波括弧と閉じ波括弧({})は2通りの方法で使用され、通常は文脈から、 どちらが 適用されるかを判断できます(判断できない場合には、周囲の散文でどちらが適用されるかを明確にします):

    • 繰り返し回数または範囲を表すために使用し、次のいずれかの形式を取ります:

      • {count}

      • {minimum,maximum}

    • 文字の集合を表すために使用し、そのうち1文字が現れなければなりません。 さらに、集合は集合の差として指定することもできます。例えば、 {char-{specials}} は、すべての XML 文字から 特殊 文字の集合を除いたものを表します。

  • クリーネ演算子 ?、*、および + は、それぞれ、 直前の項が0回または1回、 0回以上、および1回以上現れることを表します;

  • 演算子の優先順位は(高いものから低いものへ)次のとおりであり、すべて左から右への 結合性を持ちます

    1. グループ化

    2. 連結(並置)

    3. ||

    4. |

次の値構文を満たす式の間に現れることが要求される線形空白を除き、 || 値の構文定義で明示的に示されていない限り、空白は許可されません。 その明示には、 <lwsp> 非終端記号を使用します。

特に断りがない限り、水平 および 垂直 という用語は、 書字モードに対する相対的な意味ではなく、絶対的な意味で解釈されます。 幅 は 水平 軸に沿った寸法を指し、 高さ は 垂直 軸に沿った寸法を指します。すべての例外は、 本文中に明示されます。

"および (または)" という表現は、包含的選言(p∨q)を表し、 "…または…のいずれか" という構文は、排他的選言(p⊕q)を表します。それ以外の場合、"または" の意味は、 使用される 文脈によって暗黙に決まります。

この仕様のすべての内容は、非規範的であると 明示的に示されていない限り、規範的であると見なされます。節または付録の 見出しに "非規範的" という表現が含まれる場合、 その節または付録の全体が非規範的であると見なされます。

注 として示されたすべての段落は、非規範的であると見なされます。

コード例の断片は、薄い青緑色の 背景色で示され、"例の断片" とラベル付けされます。 次にその例を示します:

例の断片 – サンプル
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <metadata/>
    <styling/>
    <layout/>
  </head>
  <body/>
</tt>

注:

ここに示すコード例の断片は、整形式の XML で表現されていますが、 完全で妥当な TTML 文書であることを意図したものではありません。 むしろ、通常は、意図した例に焦点を当てるために省略されています。特に、 これらの断片は、通常、 TTML 文書の適合性要件を満たすために、追加の要素および(または)属性で 補う必要があります。

特に指定がない限り、この仕様で語彙を定義する節では、語彙を 論理的な順序ではなく、アルファベット順に定義します。

3 適合性

この節では、一般的な適合性要件を TTML2 文書および処理系について規定します。

3.1 文書の適合性

タイムドテキスト文書インスタンスは、次の 基準が 満たされる場合、この仕様に適合します。

  1. 文書インスタンスを 文書交換コンテキストで転送する際、 メディア型 [MIME メディア型]によって 交換する文書インスタンスのコンテンツ型を識別する場合、指定される メディア型は application/ttml+xml であり、[TTML プロファイル 登録簿]の §2、メディア型の登録に適合している。

  2. 文書インスタンスが、縮約された XML 情報集合であるか、その形式で表現できる。 その定義は、B 縮約された XML 情報集合による。

  3. 縮約された XML 情報集合のうち、 当該文書インスタンスに対応するものが、 いずれかの抽象文書 型と関連付けられているか、関連付けることができ、その文書型が 4 文書型で定義されている。

  4. 縮約された XML 情報集合のうち、当該文書インスタンスに対応するものが、 妥当な抽象文書インスタンスであり、 その妥当性は、関連付けられた 抽象文書型に基づく。

  5. 縮約された XML 情報集合が、この仕様で定義される追加の 必須の構文上および 意味上の制約をすべて満たしている。さらに、この情報集合は、 ウェブコンテンツのアクセシビリティガイドラインを満たすべきであり、その規定は [WCAG]による。

3.2 処理系の適合性

この節では、TTML2 処理系の適合性要件を、 汎用処理系の適合性 および、特化した処理系の適合性の 2 つの種類、 変換処理系の適合性と 提示処理系の適合性として規定します。

注:

この節で定義する適合性要件は、 静的な 表現の TTML 文書インスタンスを扱う処理系を対象とします。 特に、 TTML 文書インスタンスを変更する処理系、たとえば オーサリング ツールや編集ツールは、この仕様の規定の対象ではありません。ただし、 TTML 文書インスタンスに一連の変更を加えた最終的な結果が、 TTML コンテンツの形式的な妥当性を満たすという範囲については、この限りではなく、その定義は 3.1 文書の適合性によります。

3.2.1 汎用処理系の適合性

TTML2 コンテンツ処理系は、 次に示す 汎用処理系の基準が 満たされる場合、この仕様に適合します。

  1. 処理系が、概念上のインスタンス化を行う機構を少なくとも 1 つ提供している。その機構は、 縮約された XML 情報集合としての 適合する文書インスタンスの表現を生成するものである。

  2. 処理系がプロファイル処理を実行する。

    注:

    プロファイル処理の実行には、 ある程度の部分的な検証が伴いますが、 [文書の検証]手続きの実行には至りません。この手続きについては、 直後の項目で説明します。特に、プロファイルに 関連する語彙の構文表現、およびその語彙の使用に適用される重要な構文上または 意味上の制約は、実装によって その語彙を使用する前に、通常は確認されることが期待されます。プロファイル 処理が、構文上または意味上の制約に対する重大な違反を検出せずに完了した場合は、 より完全な検証を実行してもよく、 そのためには、 [文書の 検証]手続きを使用します。

  3. 処理系が検証機能付きコンテンツ 処理系である場合、その処理系は次を満たす。

    1. 暗黙的または明示的な関連付けを行う機構を少なくとも 1 つ提供する。その機構は、 縮約された XML 情報集合として表現された 候補の文書インスタンスを、いずれかの 文書型と関連付けるものであり、その 抽象文書型は、4 文書 型で定義されている。また、

    2. [文書の検証]手続きを実行する。

    注:

    この仕様では、検証処理の実行と、 プロファイル処理の実行との間に、厳密な順序を定義していません。 後者については、直前の項目で説明しています。特に、この 2 つの 処理ステップは、交互に実行しても(繰り返しても)よく、その場合は、さらなる(変換または提示)処理を 文書インスタンスに対して実行する前に、両方を完了します。

    上記にかかわらず、検証処理と プロファイル処理の間には、暗黙の順序関係があります。具体的には、 次のようになります。 検証処理を実行するには、 実効検証プロファイルの値を解決する必要があります。 その値を求めるには、 実効コンテンツプロファイルの値を解決するか、その 値が null である場合は、 実効処理系プロファイルの値を解決する必要があります。 後者の 2 つの値は、 プロファイル処理の間に取得されます。

    注:

    検証 処理と プロファイル処理を交互に実行する例として、次の シナリオを考えます(記載の順序で実行します)。

    • 入力文書ソースの整形式性を確認する(検証 処理)。

    • 入力文書ソースを、妥当である可能性のある抽象文書 インスタンスとしてインスタンス化する(一般処理)。

    • 組み込みのアプリケーション意味論を使用して検証状態を初期化する (検証処理)。

    • 組み込みのアプリケーション意味論を使用してプロファイル状態を初期化する(プロファイル 処理)。

    • 検証に関連する語彙を検証する(検証処理)。

    • 検証に関連する妥当な語彙を使用して検証状態を更新する (検証処理)。

    • プロファイルに関連する語彙を検証する(検証処理)。

    • プロファイルに関連する妥当な語彙を使用してプロファイル状態を更新する(プロファイル 処理)。

    • 次の手続きの中止ステップを実行する。[未対応の 処理系プロファイルの場合に中止]手続き(プロファイル 処理)。

    • 文書全体を検証し、新しいプロファイル状態に基づいて必要に応じて検証およびプロファイルの語彙を 再検証する(検証処理)。

    • 処理が中止されなかった場合は、変換または提示 処理を続行する(一般処理)。

  4. 処理系が、あらかじめ、適合する 文書インスタンスの処理を拒否または中止しない。 ただし、次の場合を除く。

    1. 処理系が、必要とされる (必須の)機能の一部に対応しておらず、その機能が、 文書 インスタンスに適用されると宣言された TTML プロファイルによって指定または暗示される場合。または、

    2. 検証エラーが 発生し、それが、 [文書の 検証]手続きの実行時である場合。

  5. 処理系が、この仕様で定義される必須の処理意味論のすべてに対応している。

    注:

    必須の意味論という句は、適合性を示す キーフレーズであるしなければならないおよびしては ならないの明示的な使用すべて、ならびに そのようなキーフレーズから合理的に推論できるあらゆる宣言文を指します。

    注:

    必須の意味論への対応は、機能または 拡張について、その機能または 拡張が TTML コンテンツ処理系によってサポートされる場合にのみ適用されます。

  6. 処理系が、この仕様で定義される任意の処理意味論の一部に 対応する場合、 定義された意味論と整合する方法で対応している。

    注:

    任意の意味論という句は、適合性を示す キーフレーズであるすべきである、すべきでは ない、 してもよい、およびしなくてもよいの明示的な使用すべて、 ならびにそのようなキーフレーズから合理的に推論できるあらゆる 宣言文を指します。

3.2.2 変換処理系の適合性

TTML コンテンツ処理系が、適合する TTML2 変換処理系であるためには、 次の基準が満たされていなければなりません。

  1. 処理系が、次で規定されるすべての要件を満たしている。 3.2.1 汎用処理系の適合性。

  2. 処理系が、TTML 変換プロファイルに対応しており、その規定は G.3 TTML2 変換プロファイルによる。

  3. 処理系が、DFXP 変換プロファイルに対応しており、その規定は G.6 DFXP 変換プロファイルによる。

3.2.3 提示処理系の適合性

TTML コンテンツ処理系が、適合する TTML2 提示処理系であるためには、 次の基準が満たされていなければなりません。

  1. 処理系が、次で規定されるすべての要件を満たしている。 3.2.1 汎用処理系の適合性。

  2. 処理系が、TTML 提示プロファイルに対応しており、その規定は G.2 TTML2 提示プロファイルによる。

  3. 処理系が、DFXP 提示プロファイルに対応しており、その規定は G.5 DFXP 提示プロファイルによる。

  4. 処理系が、11.3.1.3 中間 同期文書の構築および11.3.1.4 同期フロー 処理を実行する。

注:

適合する 2 つの提示処理系が、同じ適合文書を処理する際に、 同じ提示を生成することは要求されません。 たとえば、異なる提示処理系は、異なるフォント、異なるフォント ラスタライザー、異なる改行アルゴリズム、 およびこの仕様で規定されていない動作の異なる実装を使用してもかまいません。

3.3 適合性の主張

適合性に関するあらゆる準拠の主張は、TTML 文書インスタンスまたは コンテンツ処理系について行う場合、 実装準拠声明(ICS)を参照しなければなりません。

実装準拠声明は、この仕様の必須および 任意の機能のうち、 文書インスタンスまたはコンテンツ処理系の実装が満たすすべての機能を明示しなければなりません。特に、この声明は、 使用する、またはサポートする TTML 語彙プロファイルを明示しなければならず、その定義は 5.2 プロファイリングによります。また、サブセットまたは スーパーセットのプロファイルを使用またはサポートする場合は、そのサブセットまたはスーパーセットのプロファイルで、どの機能が除外 または追加されるかを明示しなければなりません。

注:

変換処理系の適合性と 提示処理系の適合性の定義は、 上記の規定において、 これらの種類の処理系がそれぞれ、(少なくとも)2 つの特定のプロファイルに対応することを要求しています。一方は、 [TTML1]で定義される種類固有のプロファイルで、 他方は、この仕様で定義される種類固有のプロファイルです。

この要件にかかわらず、 TTML コンテンツ処理系を構築する際に、 変換または提示処理の機能を実行し、 汎用処理系の適合性の要件を満たしながら、 次の適合性で要求されるプロファイルの いずれにも対応しないことが可能です。すなわち、変換 処理系の適合性または 提示処理系の適合性で要求されるプロファイルに対応せず、 代わりに、 この仕様の範囲外で定義されるプロファイルだけに対応することができます。このような場合、その 処理系は、 汎用処理系の 適合性に準拠すると主張してもよく、さらに、 TTML 変換処理系または TTML 提示処理系であると主張してもよいですが、 変換 処理系の適合性または 提示処理系の適合性への準拠を主張することはできません。

準拠が主張される文書インスタンスは、 次のいずれかに関連付けられていなければなりません。

  1. null でない実効コンテンツプロファイルであって、 明示的に指定されたttp:contentProfiles属性、 または 1 つ以上の最上位のコンテンツプロファイルから導出されたもの。または、

  2. null でない実効処理系プロファイルであって、 明示的に指定されたttp:processorProfiles属性または ttp:profile属性、 あるいは 1 つ以上の最上位の処理系プロファイルから導出されたもの。

3.4 互換性

この小節は非規範的です。

3.4.1 前方互換性

適合する TTML1 処理系は、TTML2 の コンテンツ文書インスタンスを処理できる場合があります。ただし、 未知の語彙を無視し、 既知の語彙についても、適合する TTML1 の コンテンツ文書インスタンスで許されないコンテキストに現れる場合は無視する必要があります。 ただし、このような処理では、コンテンツが破棄されたり、提示されなかったり、 適合する TTML2 処理系によって処理された場合に意図されるものとは 異なる形でコンテンツが提示されたりすることがあります。

注:

たとえば、TTML1 処理系が tts:ruby 属性を無視し、この属性が TTML2 で定義されている場合、その処理系は、 意図した形では提示されないものの、ルビ機能を使用した TTML2 コンテンツを提示できることがあります。同様に、 TTML1 処理系が、style 要素を別の style 要素の子として検出した場合、前者の 入れ子になったスタイルは無視されることがあります(この機能は TTML1 では定義されていなかったためです)。

3.4.2 後方互換性

TTML2 は、次のように設計されています。

4 文書型

この節では、次の TTML 抽象文書型を定義します。

各抽象文書型は、次の 制約から構成されます。

抽象文書インスタンスは、その妥当性について 評価してもよく、 妥当な抽象文書 インスタンスとみなされるためには、 次の条件を満たす必要があります。すなわち、次の処理を行った後に、

  1. すべての要素情報項目のうち、 名前が、関連付けられた 抽象文書型で定義された要素型の集合に属さないものを削除し、次に、

  2. 残っている要素について、 その要素の文字情報項目の子がすべて XML 空白文字を表し、 かつ、その要素の型が、 関連付けられた抽象文書 型で空と定義されている場合、その文字情報項目の子を削除し、次に、

  3. すべての属性情報項目のうち、 その展開名の名前空間 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>

4.1 TTML コンテンツ文書型

TTML コンテンツ文書型は、抽象文書 型であり、 タイムドテキストマークアップ言語のプロファイルについて、機能別のモジュールの集合として定義されます。

この仕様では、次の 2 種類のスキーマを参照しており、これらを使用して、スーパーセットまたはサブセットを検証してもかまいません。 その対象は、タイムドテキストコンテンツ文書インスタンスです。

TTML コンテンツの文書 インスタンスの(ルート)文書要素は、 tt 要素でなければならず、その定義は、8.1.1 ttによります。

注:

この仕様で参照するスキーマは、この仕様で定義されるすべての構文上の制約を 検証するものではなく、そのため、適合する TTML コンテンツのスーパーセットを表します。特に、上記で 参照するいずれかのスキーマで検証を行うと、妥当性について偽陽性の判定が生じることがあります。 たとえば、RNC と XSD の両スキーマでは、 tts:fontFamily 属性が xsd:string という XSD データ型を満たさなければならないと指定されています。しかし、このデータ型は、 tts:fontFamily 属性に使用することが許される値のスーパーセットです。

さらに、RNC スキーマでは、妥当性について偽陰性の 判定が生じることがあります。これは、xml:id 属性を 外部の名前空間に属する要素で使用する場合であり、したがって、適合する TTML コンテンツのサブセットを表します。これは、 xsd:ID 型の属性を含むワイルドカードパターンを Relax NG スキーマで表現する際の、特定の制限によるものです。この仕様では、 文書インスタンスの形式的な妥当性が、 抽象文書インスタンスに基づくと定義されていることに注意してください。 その抽象文書インスタンスからは、外部の名前空間に属するすべての要素と属性が除去されています。したがって、 この偽陰性が例外的に報告されても、 文書インスタンスの妥当性の形式的な評価には影響しません。

注:

この仕様で参照するスキーマは、削除ステップ (1)~(3) の後に使用することを意図しています。 これらのステップは、4 文書型で規定され、 スキーマの使用前に適用されます。

注:

適合する汎用処理系は、 取り込みおよび処理に対応する必要があります。 その対象は、タイムドテキストコンテンツ文書です。

4.2 TTML 中間文書型

TTML 中間文書型は、抽象文書 型であり、 次の文書の内容を表現するための使用を意図しています。 タイムドテキストコンテンツ文書 を、タイミング情報が非階層的(平坦)で時間的に線形な形で示されるように表現します。 また、 スタイル指定に関する情報などの一部の情報を、解決または統合することで、 後続の処理を簡略化してもかまいません。 この文書型は、機能別のモジュールの集合として定義されます。

この仕様では、次の 2 種類のスキーマを参照しており、これらを使用して、 タイムドテキスト中間文書 インスタンスを検証してもかまいません。

TTML 中間同期文書インスタンスの(ルート)文書要素は、 isd:sequence 要素または isd:isd 要素でなければならず、その定義は、J 中間文書構文によります。

注:

適合する汎用処理系は、 取り込みまたは処理に対応する必要はありません。 その対象は、タイムドテキスト中間文書です。

4.3 TTML プロファイル文書型

TTML プロファイル文書型は、抽象文書 型であり、 TTML の機能または拡張のサポートや使用に関する制約を定義し、伝達するための使用を意図しています。 この文書型は、 機能別のモジュールの集合として定義されます。

この仕様では、次の 2 種類のスキーマを参照しており、これらを使用して、 タイムドテキストプロファイル文書インスタンスを検証してもかまいません。

TTML プロファイルの文書 インスタンスの(ルート)文書要素は、 ttp:profile 要素でなければならず、その定義は、6.1.1 ttp:profileによります。

注:

適合する汎用処理系には、 取り込みまたは処理への対応を推奨しますが、必須ではありません。 その対象は、タイムドテキストプロファイル文書です。ただし、コンテンツ処理系が http://www.w3.org/ns/ttml/feature/#profile 機能への対応を主張する場合、 この機能(すなわち、 タイムドテキストプロファイル文書の取り込みおよび処理)に対応する必要があります。

5 語彙

この節では、 タイムドテキストマークアップ言語(TTML)の名前空間、プロファイル、および語彙 (要素と属性の一覧として)を、次のように定義します。

5.1 名前空間

タイムドテキストマークアップ言語(TTML)は、 要素および一部のグローバル属性に、複数の XML 名前空間 [XML 名前空間 1.0]を 使用します。これらを総称して、 TTML 名前空間と呼び、 表 5-1 – 名前空間で定義します。各 名前空間には、説明的な名前、 既定の名前空間接頭辞、および URI が割り当てられています。 表 5-1 – 名前空間で定義されていないすべての名前空間は、 次のように呼びます。 その他の名前空間。

表 5-1 – 名前空間
名前 接頭辞 値
TT tt http://www.w3.org/ns/ttml
TT パラメーター ttp http://www.w3.org/ns/ttml#parameter
TT スタイル tts http://www.w3.org/ns/ttml#styling
TT 音声スタイル tta http://www.w3.org/ns/ttml#audio
TT メタデータ ttm http://www.w3.org/ns/ttml#metadata
TT 中間同期文書 isd http://www.w3.org/ns/ttml#isd
TT プロファイル none http://www.w3.org/ns/ttml/profile/
TT 機能 none http://www.w3.org/ns/ttml/feature/
TT 拡張 none http://www.w3.org/ns/ttml/extension/
TT リソース none 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 名前空間 1.0]の制約を満たし、 指定された名前空間 URI に関連付けられている任意の接頭辞または名前空間バインディングを使用してもかまいません。

注:

この仕様で要素型への参照を使用し、その要素型の名前が 名前空間で修飾されていない場合は、TT 名前空間が適用されます。

この仕様で属性への参照を使用し、その属性の名前が 名前空間で修飾されていない場合、その属性は、 使用される要素型によって暗黙的に修飾されます。つまり、その属性は、いわゆる 要素型ごとの 名前空間区画に属します [NSOriginal]。その構成要素は、 それらが現れる要素型の定義に従って解釈されます。

上記で定義した名前空間の一部では、既定の接頭辞を none と指定しています。これは、 この仕様でその名前空間内の XML 語彙を定義しておらず、 将来のバージョンでも定義する予定がない場合です。そのような場合、 名前空間 URI は、XML 語彙の定義以外の目的で使用します。 たとえば、プロファイル、機能、拡張の指定や、 標準プロファイル定義の参照解決などです。

5.2 プロファイリング

この節では、TTML のプロファイリングサブシステムと、それに適用される上位レベルの 要件について説明します。この節の末尾には、 プロファイル指定の例と、それらの指定の参照方法および使用方法の例を 含む小節があります。

5.2.1 はじめに

この小節は非規範的です。

タイムドテキストマークアップ言語のコンテンツ作成者は、個々のプロファイルを、2 つの機能の いずれかのために使用してもかまいません。(1) 文書インスタンスが、使用する 語彙と その使用方法に関する制約の集合に従うことを宣言する、または (2) 処理系がコンテンツの処理方法に関する特定の条件を満たさなければならないことを 宣言することです。このうち最初の機能は、コンテンツプロファイルと呼び、 2 番目は、処理系プロファイルと呼びます。

コンテンツプロファイルは、作成者が オーサリング時に、 文書 インスタンスに適用することを意図している制約を宣言できるようにするために使用します。このような 宣言により、後段の処理系は、コンテンツの検証または確認を実行でき、 また、作成者が指定したコンテンツプロファイルへの準拠を維持するために、 後続のコンテンツの変換または編集を 指針に沿わせたり制限したりできます。さらに、 後段の処理系は、コンテンツプロファイルの宣言を使用して、 コンテンツプロファイルが示す機能を処理できるかどうかを 早期に判定してもかまいません。

コンテンツプロファイルは、(1) ttp:contentProfiles 属性をルート tt 要素で使用するか、(2) 1 つ以上の最上位のttp:profile 要素を型 content として使用することで宣言します。宣言されていない場合、コンテンツプロファイルは暗示されません。

注:

コンテンツプロファイルを、ttp:contentProfiles 属性を使用して宣言する場合、 指定された 1 つ以上のプロファイル指定子は、最上位のttp:profile要素を参照してもよく、 したがって、上述の 2 つのプロファイル宣言機構の機能を組み合わせることができます。 詳細については、 実効コンテンツプロファイルの構築手続きを参照してください。

処理系プロファイルは、作成者が、 オーサリング時に、 文書 インスタンスの処理時に対応しなければならない処理を宣言できるようにするために使用します。 処理系が指定された処理を実行できない場合は、処理を中止すべきです。 このような宣言により、後段の 処理系は、コンテンツ作成者の要件を満たす方法で処理できない コンテンツの処理を避けることができます。

処理系プロファイルは、(1) ttp:processorProfiles 属性をルート tt 要素で使用する、(2) 1 つ以上のttp:profile 要素を型 processor として使用する、または (3) ttp:profile属性を ルート tt 要素で使用することで宣言します。宣言されていない場合、処理系プロファイルは、 宣言されたコンテンツプロファイル、または 既定の処理系プロファイルから推論されます。

注:

処理系プロファイルを、ttp:processorProfiles 属性を使用して宣言する場合、 指定された 1 つ以上のプロファイル指定子は、最上位のttp:profile要素を参照してもよく、 したがって、上述のプロファイル宣言機構のうち最初の 2 つの 機能を組み合わせることができます。詳細については、 実効処理系プロファイルの構築 手続きを参照してください。

注:

適合する文書 インスタンスにおいて、文書内で 処理系プロファイルを宣言することは要件ではありません。より具体的には、実効処理系プロファイルを、 いくつかのフォールバック機構によって決定することが許されます。その機構には、(1) コンテンツプロファイルから処理系プロファイルを推論すること、 (2) 既定の処理系プロファイルから処理系プロファイルを暗示すること、および (3) 文書 処理コンテキストによる決定の上書きを許すことが含まれます。たとえば、文書 交換コンテキストを使用して、上書き処理系プロファイルを決定することです。

注:

ttp:processorProfiles属性または ttp:profile属性は、 作成者が標準の定義済み処理系プロファイルを 1 つ(または複数) 参照したい場合に使用することを意図しています。その対象は TTML コンテンツであり、そのプロファイルを(スーパーセット化やサブセット化によって) 変更する意図がない場合です。また、作成者は、これらの属性を使用して 非標準プロファイルの使用を示してもかまいません。その場合、指定された<profile-designator>は、 外部で定義されたプロファイル定義文書を表す URI を記述します。 ただし、適合する TTML コンテンツ処理系が、 そのように外部で指定されたプロファイル定義を参照解決できることは要求されません。

一方、ttp:profile要素は、 作成者が、変更した定義済みプロファイルを使用したい場合、または 文書インスタンス内に、 定義済みプロファイルのいずれにも基づかない 非標準プロファイル定義を含めたい場合に使用することを意図しています。

定義済みプロファイルをスーパーセット化するには、ある機能または拡張を、 required(必須)として指定します。その機能または拡張は、基になる 基準 プロファイルで指定されていないか、optional(任意)として指定されていたものです。 定義済みプロファイルをサブセット化するには、ある機能または拡張を、 optional(任意)として指定します。その機能または拡張は、required(必須)として 基になる基準プロファイルで指定されていたものです。

基準プロファイルをサブセット化によって変更した場合、結果として得られる派生プロファイルは、 減算的プロファイルと呼びます。スーパーセット化によって変更した場合、結果は、 加算的プロファイルと呼びます。 また、減算的かつ加算的な派生プロファイルを 定義することもできます。

コンテンツ作成者は、単一のプロファイルの使用に限定されず、いずれの種類についても複数のプロファイルを 参照してもかまいません。すなわち、 複数のコンテンツプロファイル、または複数の処理系プロファイル、あるいはその両方です。複数のプロファイルが 参照される場合、それぞれの指定は 結合され、文書に適用される単一の実効コンテンツプロファイルと、 文書の処理時に処理系に適用される単一の実効処理系プロファイルが 形成されます。また、作成者は、外部で定義されたプロファイルの参照に 限定されず、文書内に 1 つ以上のプロファイルをインラインで定義してもかまいません。

注:

プロファイル結合そのものは、任意の機能です。 その可否は、 処理系がE.1.53 #contentProfiles-combinedまたは 次の E.1.173 #processorProfiles-combined 機能に対応しているかどうかによって決まります。

注:

特定のコンテンツプロファイルまたは処理系プロファイルを使用する意図を 作成者が宣言していても、処理系は、 作成者によるコンテンツプロファイルまたは処理系プロファイルの宣言、あるいは両方を上書きすることが許されます。 これは、単一のプロファイルまたは 限られたプロファイル群にしか対応しない処理系における、典型的な動作になると期待されます。 特に、 処理系が、参照解決(ダウンロード)および 処理を プロファイル定義文書に対して行うことができず、 さらに、 最上位プロファイルに対応していない場合です。

5.2.2 プロファイルの例

この小節は非規範的です。

作成者が定義した TTML 提示プロファイルの加算的な 派生プロファイルの例を、 次の例の断片 – TTML 加算的 プロファイルに示します。

例の断片 – TTML 加算的プロファイル
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
 <head>
   <profile use="ttml2-presentation" xmlns="http://www.w3.org/ns/ttml#parameter">
     <features xml:base="http://www.w3.org/ns/ttml/feature/">
       <feature value="required">#fontStyle-italic</feature>
     </features>
   </profile>
 </head>
 <body/>
</tt>

注:

上記の例では、基準プロファイルを TTML2 提示プロファイルと宣言し、それを加算的に変更して、 #fontStyle-italic 機能を必須にしています (任意ではなく、 G.2 TTML2 提示プロファイルでの定義を変更しています)。 また、 profile 要素の既定の XMLNS バインディングを TT パラメーター名前空間に再設定していることにも注意してください。

5.2.3 プロファイル指定子

プロファイルの参照方法は 2 つあり、参照元の文書の外部で プロファイルが定義されているか、 参照元の文書内で内部的(インライン)に定義されているかによって決まります。外部で定義されている場合は、 次のいずれかの式によって参照します。 <absolute-profile-designator>または <relative-profile-designator> です。 内部的(インライン)に定義されている場合、プロファイルは暗黙的に、 または<fragment-profile-designator> 式によって参照します。

プロファイル指定子は、<uri>の値 構文に従わなければなりません。 プロファイル指定子を相対 URI として表現する場合は、 絶対化しなければならず、その際には TT プロファイル 名前空間の値を 基底 URI として使用します。ここで、絶対化という用語は、 相対 URL を絶対 URL に解決することを意味し、その方法は、[URI]の §5 で説明されています。

TT プロファイル名前空間を接頭辞として持つすべてのプロファイル指定子のうち、 表 5-2 – プロファイル または[TTML プロファイル登録簿]の §4、登録簿に記載されていないものは、 将来の標準化のために予約されており、適合する 文書インスタンスに現れてはなりません。この制約にかかわらず、 プロファイル指定子は、 表 5-2 – プロファイルに列挙される指定子の集合に限定されず、TTML プロファイル定義 文書を実際に参照解決できる任意の URI であってもかまいません。 ただし、TT プロファイル名前空間を接頭辞として使用してはなりません。

5.2.3.1 標準の指定子

タイムドテキストマークアップ言語(TTML)は、 その語彙および関連する意味論について、 複数の標準の定義済みプロファイルを使用します。

次の表では、このプロファイル群を 規定し、 各定義済みプロファイルについて、 規範的な名前と 指定子を 示します。これらの各プロファイルの形式的な詳細は、 G 標準プロファイルに記載されています。

表 5-2 – プロファイル
名前 絶対指定子
DFXP 完全 http://www.w3.org/ns/ttml/profile/dfxp-full
DFXP 提示 http://www.w3.org/ns/ttml/profile/dfxp-presentation
DFXP 変換 http://www.w3.org/ns/ttml/profile/dfxp-transformation
TTML2 完全 http://www.w3.org/ns/ttml/profile/ttml2-full
TTML2 提示 http://www.w3.org/ns/ttml/profile/ttml2-presentation
TTML2 変換 http://www.w3.org/ns/ttml/profile/ttml2-transformation

注:

DFXP プロファイルの定義については、[TTML1]を参照してください。 その他のプロファイル指定子については、[TTML プロファイル登録簿]の §4、 登録簿を参照してください。

5.2.4 プロファイルの意味論

5.2.4.1 プロファイル状態オブジェクトの概念

この節では、後で定義するアルゴリズム(手続きおよび関数)が使用する、 いくつかの概念的な状態オブジェクトを定義します。 実装は、ここで指定する形式でそのようなオブジェクトを作成する必要はなく、 同等の情報を表す便利な内部表現を使用してもかまいません。

[プロファイル 指定]

プロファイル指定は、 次の内部状態情報を表します。これは、 ttp:feature要素またはttp:extension 要素に対応します。

designator

<uri>値であり、機能指定子または 拡張指定子を表します。その区別は、typeによります。

type

"feature" | "extension"

value

"optional" | "required" | "prohibited"

[結合 プロファイル指定集合]

結合 プロファイル指定集合は、 次の内部状態情報を表します。 これは、プロファイル 指定の集合に対応し、 さらに、これらの指定の 取得元(または導出元)である構成プロファイルを記録します。

constituents

順序付きリストであり、<absolute-profile-designator> 式から構成されます。 各指定子は構成プロファイル、すなわち、 この結合プロファイル指定集合を構成するプロファイルを表します。

specifications

順序付きリストであり、プロファイル 指定から構成されます。

[空の プロファイル指定集合]

結合 プロファイル指定集合のうち、 constituents および specifications 構成要素が空集合であるもの

[プロファイルインスタンス]

プロファイルインスタンスは、 次の内部状態 情報を表します。これは、ttp:profile要素に対応し、その要素が 明示的に指定されるか暗示されるかは問いません。

designator

<absolute-profile-designator> 式であり、 このプロファイルに関連付けられ、このプロファイルを一意に識別します。

type

"content" | "processor"

combine

"leastRestrictive" | "mostRestrictive" | "replace"

use

null、または<profile-designator> 式のいずれかであり、後者は、 このプロファイルの基準プロファイルとなるプロファイルを表します。

constituents

プロファイルが入れ子を含むプロファイルである場合は、 次の式から構成される順序付きリストです。 <fragment-profile-designator> 式であり、各指定子は、 構成要素となる入れ子のプロファイルを表します。それ以外の場合は、 null です。

注:

入れ子のプロファイルが、 xml:id 属性を指定している場合、その識別子を、 constituents 構成要素で使用してもかまいません。それ以外の場合は、処理系の実装が、 内部で合成した識別子を使用することが期待されます。

specifications

プロファイルが入れ子を含まないプロファイルである場合は、 次のものから構成される順序付きリストです。 プロファイル 指定。それ以外の場合は、null です。

結合 指定集合

結合 プロファイル指定集合であり、 このプロファイルによって指定または参照された指定を 結合した結果を表します。

注:

この仕様が、結合 指定集合について、 あるプロファイルのものとして言及する場合、それは、結合 プロファイル指定集合状態オブジェクトを指します。このオブジェクトは、結合 指定集合構成要素によって参照され、その構成要素は、プロファイルインスタンスに属します。 そのインスタンスは、 当該プロファイルに関連付けられています。

5.2.4.2 コンテンツプロファイルの意味論
[実効 コンテンツプロファイルの構築]

すべての TTML 文書インスタンスには、 (null でもよい) 実効コンテンツプロファイルが関連付けられます。これは、 使用してもよく、 コンテンツ処理系が次のいずれか(またはすべて)を 実行するために用います。

  1. 実効処理系プロファイルを推論する。

  2. 検証処理を、 文書インスタンスに対して実行する。

  3. 変換処理を、文書インスタンスについて制約し、 コンテンツプロファイルの不変条件を維持する。

実効コンテンツプロファイルは、 次の手続きに従って 構築されます。

  1. 文書処理 コンテキストが、特定の 上書きコンテンツプロファイル PO によって他のすべての決定を上書きすると決定した場合、 実効コンテンツプロファイルは、 PO である。

    注:

    たとえば、[EBU-TT-D]文書で、この仕様に 準拠するものは、 ebuttm:conformsToStandard 要素を指定することで、 [EBU-TT-D]コンテンツプロファイルへの準拠を示してもかまいません。 このような場合、コンテンツ 処理系がそのプロファイルに対応していれば、 その要素の存在を上書きの根拠として使用し、実効コンテンツ プロファイルを決定してもかまいません。

  2. それ以外で、ttp:contentProfiles 属性が ルート tt 要素に指定されている場合、 実効コンテンツプロファイルは、 プロファイルインスタンスであり、 その結合 指定集合 は、結合 指定集合を、指定されたプロファイルについて結合して構築する。その際、 コンテンツプロファイルの結合方法として、指定された値(または既定値)を適用する。 その値は、ttp:contentProfileCombination 属性について、ルート tt 要素で指定されたものである。

  3. それ以外で、1 つ以上の最上位のコンテンツプロファイル が定義されている場合、 実効コンテンツプロファイルは、 プロファイルインスタンスであり、 その結合 指定集合は、 結合 指定集合を、そのようなすべての 最上位のコンテンツプロファイルについて結合して構築する。その際、 コンテンツプロファイルの結合方法として、指定された値(または既定値)を適用する。 その値は、ttp:contentProfileCombination 属性について、ルート tt 要素で指定されたものである。

  4. それ以外の場合、実効コンテンツ プロファイルは null である。

汎用 処理系の適合性に準拠するため、 個々の文書インスタンスの処理時に、 実効コンテンツプロファイルは、 一度 null でない参照として プロファイルインスタンスに設定されると、 以後、不変のプロファイルインスタンスへの不変の参照のまま、 その処理が続く間は維持されます。同様に、null 参照に設定された場合は、不変の null 参照のまま、 その処理が続く間は維持されます。

5.2.4.3 処理系プロファイルの意味論
[未対応の 処理系プロファイルの場合に中止]
  1. EPP を、実効処理系 プロファイルに設定する。これは、 実効処理系プロファイルの構築 手続きを実行して取得したものである。

  2. 各プロファイル 指定 S について、それが結合 指定集合(EPP のもの)に含まれる場合、次のステップを実行する。

    1. value 構成要素(S のもの)が required であり、かつ、コンテンツ処理系 が S に対応していない場合、文書インスタンスの処理を中止する。ただし、 上書きされる場合を除く。 その上書きは、エンドユーザー、またはエンドユーザーやユーザー設定もしくはシステム設定に由来する 実装固有のパラメーターによるものとする。

[実効 処理系プロファイルの構築]

すべての TTML 文書インスタンスには、 (null でない) 実効処理系プロファイルが関連付けられます。 これは、 コンテンツ処理系が、 コンテンツ作成者によって示された 最低限の処理要件を満たすかどうかを判定するために使用します。

実効処理系プロファイルは、 次の手続きに従って 構築されます。

  1. 文書処理 コンテキストが、特定の 上書き処理系プロファイル PO によって他のすべての決定を上書きすると決定した場合、 実効処理系プロファイル は PO である。

  2. それ以外で、ttp:processorProfiles 属性が ルート tt 要素に指定されている場合、次を実行する。

    1. ttp:processorProfiles 属性が、 all(...) 関数構文を使用して指定されているか、 関数構文を使用せず、すなわち指定子のリストのみとして指定されている場合、 次のようにする。 実効処理系 プロファイルは、プロファイル インスタンスであり、その結合 指定集合 は、結合 指定集合を、指定されたプロファイルについて結合して構築する。その際、 コンテンツプロファイルの結合方法として、指定された値 (または既定値)を適用する。その値は、ttp:processorProfileCombination 属性について、ルート tt 要素で指定されたものである。

    2. それ以外で、ttp:processorProfiles 属性が any(...) 関数構文を使用して指定されている場合、 指定された各プロファイルについて、 実効処理系 プロファイルは、プロファイル インスタンスであり、その結合 指定集合 は、結合 指定集合のコピーである。コピー元は、 指定されたプロファイルのリストで最初に現れる、 コンテンツ処理系がサポートするプロファイルとする。

  3. それ以外で、1 つ以上の最上位の処理系プロファイル が定義されている場合、 実効処理系プロファイル は、プロファイル インスタンスであり、その結合 指定集合 は、結合 指定集合を、そのようなすべての 最上位の処理系プロファイルについて結合して構築する。その際、 処理系プロファイルの結合方法として、指定された値(または既定値)を適用する。 その値は、ttp:processorProfileCombination 属性について、ルート tt 要素で指定されたものである。

  4. それ以外で、ttp:profile 属性がルート tt 要素に指定されている場合、 実効処理系プロファイル は、プロファイル インスタンスであり、その結合 指定集合は、結合 指定集合のコピーである。 コピー元は、この属性によって指定されたプロファイルとする。

  5. それ以外の場合、実効 処理系プロファイルは、 次の推論処理系プロファイルの構築 手続きを実行した結果である。

汎用 処理系の適合性に準拠するため、 個々の文書インスタンスの処理時に、 実効処理系プロファイルは、 一度参照として プロファイルインスタンスに設定されると、 以後、不変のプロファイルインスタンスへの不変の参照のまま、 その処理が続く間は維持されます。

[推論 処理系プロファイルの構築]
  1. ECP を、実効 コンテンツプロファイルに設定する。

  2. ECP が null でない場合、次のステップを実行する。

    1. 次のパラメーターの算出値について、 ttp:inferProcessorProfileSource パラメーターの値が combine である場合、 推論処理系 プロファイルは、 処理系プロファイルの推論関数を、 結合 指定集合(ECP のもの)に適用した結果である。

    2. それ以外で、次のパラメーターの算出値について、 ttp:inferProcessorProfileSource パラメーターの値が first である場合、 推論処理系 プロファイルは、最初の推論処理系プロファイル、 IPP とする。 これは、処理系プロファイルの推論関数を、 結合 指定集合に適用して生成する。適用先は、プロファイル インスタンスであって、 それぞれの構成要素に関連付けられたものであり、その構成要素は、結合 指定集合(ECP のもの)に属する。また、IPP は、 サポートされているものとし、そのサポートを行うのは、 コンテンツ処理系である。

  3. それ以外の場合、推論処理系 プロファイルは、 次の既定の処理系プロファイルの構築 手続きを実行した結果である。

[処理系プロファイルの 推論](結合 プロファイル指定集合 CPSS)
  1. 推論処理系プロファイル IPP を、プロファイルインスタンスとして初期化する。 その結合 指定集合は、空の プロファイル指定集合のコピーとする。

  2. 各プロファイル指定 S について、結合 プロファイル指定集合 CPSS に含まれるものに、次を実行する。

    1. コンテンツプロファイル指定 S を、処理系プロファイル 指定 S'  に対応付ける。その対応付けは、算出された 値に従う。対象は、ttp:inferPresentationProfileMethod パラメーターであり、また、表 6-2 – 処理系プロファイルの推論方法にも従う。

    2. S'  を、結合 指定集合(IPP のもの)に追加する。

  3. IPP を、推論処理系プロファイルとして返す。

[既定の 処理系プロファイルの構築]
  1. 文書交換 コンテキストが、 処理系プロファイル、またはコンテンツプロファイル であって、そこから処理系プロファイルを 推論できるものに関連付けられている場合、 既定の処理系プロファイルは、 その処理系プロファイルである。

  2. それ以外で、コンテンツ処理系が、 主として 提示処理系と特徴付けられる場合、 既定の処理系プロファイル は、 プロファイルインスタンスであって、 TTML2 提示プロファイルを内部化して構築されたものである (http://www.w3.org/ns/ttml/profile/ttml2-presentation)。

  3. それ以外で、コンテンツ処理系が、 主として 変換処理系と特徴付けられる場合、 既定の処理系プロファイル は、 プロファイルインスタンスであって、 TTML2 変換プロファイルを内部化して構築されたものである (http://www.w3.org/ns/ttml/profile/ttml2-transformation)。

注:

コンテンツ処理系が、 1 つ以上の異なるバージョンの TTML での 使用を意図している場合は、 既定の処理系プロファイルを選ぶ際に、 基準として、 TTML の提示または変換プロファイルの将来のバージョンを使用してもかまいません。

5.3 検証

この節では、TTML の検証サブシステムと、それに適用される上位レベルの 要件について説明します。

検証は、任意の機能であり、検証 処理系が実行します。 これは、候補の文書インスタンスが 検証機能付き コンテンツ処理系によって取り込まれるか、その他の方法で処理される際に行われることがあります。このような処理が 行われ、例外条件が発生した場合、処理を中止してもかまいません。 詳細は後述します。

検証処理の間に処理が中止された場合、 次のような結果が生じます。

  • 適合しない文書の一部だけが、変換処理系によって変換され、 変換結果が不完全になる場合があります。

  • 適合しない文書の一部だけが、提示処理系によって提示され、 提示結果が不完全になる場合があります。

検証 処理の結果として中止処理が発生した場合、 文書インスタンス内のどの位置より後のコンテンツが 処理されなくなるかは、この仕様では定義しません。 特に、実装は、最初の検証エラーを検出した時点で処理を中止してもよく、 任意の数の検証エラーを検出した後で処理を中止してもかまいません。したがって、 適合しない文書から取り込まれる入力コンテンツの量と、それに対応する(変換または 提示)出力は、実装によって異なることがあります。

5.3.1 検証の意味論

5.3.1.1 検証状態オブジェクトの概念

この節では、後で定義するアルゴリズム(手続きおよび関数)が使用する、 いくつかの概念的な状態オブジェクトを定義します。 実装は、ここで指定する形式でそのようなオブジェクトを作成する必要はなく、 便利な内部表現であって、 同等の情報を表すものを使用してもかまいません。

[検証 例外]

検証例外は、 次の内部状態情報を表します。これは、例外 条件に対応するものであり、その条件は、検証 処理の間に発生します。

message

例外を説明する、または特徴付ける任意の(実装定義の) 文字列。

type

"error" | "warning"

検証例外のうち、 型が error であるものは、 検証 エラーと呼びます。 一方、検証 例外のうち、 型が warning であるものは、 検証 警告と呼びます。

上位プロトコルが適用される場合を除き、 (1) この仕様の義務または禁止に対する違反が、文書インスタンスについて検出された場合、 それはエラーと みなされ、その場合、 検証エラー 例外が適用されます。また、 (2) この仕様の推奨または非推奨に対する違反が 検出された場合は、 検証警告 が適用されます。

注:

このコンテキストにおける上位プロトコルの例としては、システムまたはエンドユーザーが 定義する 設定オプションがあります。これは、文書処理コンテキストの設定であり、 警告をエラーとして扱わせたり、その逆に扱わせたりするものです。

5.3.1.2 検証処理の意味論
[実効 検証プロファイルの構築]
  1. 文書の実効コンテンツ プロファイルが null でない場合、 実効検証 プロファイルは、 実効コンテンツプロファイルである。

  2. それ以外の場合、実効 検証プロファイルは、 実効処理系 プロファイルである。

汎用 処理系の適合性に準拠するため、 個々の文書インスタンスの処理時に、 実効検証プロファイルは、 一度参照として プロファイルインスタンスに設定されると、 以後、不変のプロファイルインスタンスへの不変の参照のまま、 その処理が続く間は維持されます。

[実効 検証スキーマの構築]
  1. 文書の実効 検証プロファイルが、1 つ以上の スキーマに関連付けられている場合、実効検証 スキーマの集合は、これらの関連付けられたスキーマの 適切なサブセットであり、その選択は、文書処理 コンテキストの要件に基づく。

  2. それ以外の場合、実効 検証スキーマは、既定のスキーマ集合であり、 文書処理 コンテキストが選択する。

注:

何をもって適切なスキーマ集合とするかは、 この仕様では形式的に定義しません。ただし、 選択の過程では、(1) 利用可能かつサポートされるスキーマの種類を、 処理系の実装について考慮し、 (2) ヒューリスティックとして、必須または任意の機能に関連付けられた 最大のバージョン番号を使用することが期待されます。その機能の判定は、 実効検証プロファイルに基づきます。

[文書の検証]
  1. 検証が、上位 プロトコルによって無効にされているか、 または、ttp:validation パラメーターの算出値が prohibited である場合、 エンドユーザーまたはアプリケーションがこの禁止を上書きしない限り、 この手続きを終了する。

  2. 次のttp:validation パラメーターの算出値が optional であり、かつ、 文書処理コンテキスト が任意の検証を実行しないと決定した場合、 この手続きを終了する。

  3. それ以外の場合、実効 検証スキーマおよびその他の 検証ツールを必要に応じて使用し、文書の適合性を次のように検証する。

    • 検証エラー条件が 検出された場合、適用される意味論を実行する。 その適用先は、ttp:validationAction パラメータープロパティの算出値である。

    • 検証警告条件が 検出された場合、適用される意味論を実行する。 その適用先は、ttp:validationAction パラメータープロパティの算出値である。

検証処理が実行される場合、 次の意味論が適用されます。

  • 入力文書が具体的な XML 表現の形式を取る場合、たとえば、 具体的な形式として、 附属書A 具体的な符号化で定義された形式を取る場合、 次を確認する。

    • 入力文書の符号化された文字が、 文書について解決された文字符号化に従って整形式であること。また、

    • 入力文書が整形式の XML 文書であること。さらに、

  • 入力文書が、実効検証 スキーマに関して妥当であることを確認する。 また、

  • 入力文書が、この仕様で定義されるその他すべての構文上および意味上の 制約に従っていることを確認する。その対象は、 実効検証 スキーマによって直接表現されていない制約である。

上記の確認ステップのいずれかで、義務(しなければならない)または 禁止(してはならない)に関する不適合の状態が検出された場合、 検証エラー 条件が適用されます。上記の確認ステップのいずれかで、 推奨(すべきである)または非推奨 (すべきではない)に関する不適合の状態が検出された場合、 検証警告 条件が適用されます。

注:

実効検証スキーマの決定は、 実装に 依存します。また、実効検証スキーマが、 あらゆる 検証エラーを検出するという要件はありません。そのため、 [文書の検証] 手続きを妥当でない文書インスタンスに対して実行しても、 検証 例外が生じるとは限りません。その場合、 検証処理の結果は、 偽陽性とみなしてもかまいません。

たとえば、コンテンツプロファイルは、 機能の使用を禁止する際に、 prohibited 値を value 属性に指定してもかまいません。その属性は、ttp:feature 要素またはttp:extension 要素のものです。しかし、特定の実装による [文書の検証] 手続きは、そのような禁止された使用を、 文書インスタンス内で検出できない場合があり、その結果、 偽陽性の検証結果を生成することがあります。

これらの制限の結果として、[文書の検証] 手続きの規定文は、潜在的な検証エラーまたは 検証 警告が検出されるかどうかを前提としていますが、考えられるすべての 検証エラー および検証 警告の検出を義務付けてはいません。

併せて、4.1 TTML コンテンツ 文書型の最初の注も参照してください。偽陽性の詳細が記載されています。

5.4 一覧

タイムドテキストマークアップ言語(TTML)の語彙は、 次の主要な一覧(語彙の区分)で定義されます。

中核語彙の一覧は、TTML の基準となる中核語彙、 特に TTML コンテンツの語彙を定義します。拡張語彙の一覧は、 TTML で定義される中核語彙を拡張するための 場所を確保するものです。

5.4.1 中核語彙の一覧

中核語彙の一覧は、 TTML のニーズを満たすとともに、将来のプロファイルの基準となる語彙を提供することを意図しています。この語彙は、 個別のカテゴリーに分けられており、詳細は、 次の各節で規定します。

文書 インスタンスで使用するために規定された中核要素語彙は、 名前付きのモジュールの集合として、表 5-3 – 要素語彙に列挙されます。 各モジュールは要素型の集合として定義され、その 構成要素は、 各モジュールについて、1 つ以上の 拡張モジュールによって拡張してもかまいません(ただし制限してはなりません)。

表 5-3 – 要素語彙
モジュール 要素
アニメーション animate, animation, set
音声 audio
コンテンツ body, br, div, p, span
データ chunk, data, resources, source
文書 tt
フォント font
ヘッダー head
画像 image
レイアウト layout, region
メタデータ metadata
メタデータ項目 ttm:actor, ttm:agent, ttm:copyright, ttm:desc, ttm:item, ttm:name, ttm:title
プロファイル ttp:features, ttp:feature, ttp:extensions, ttp:extension, ttp:profile
スタイル指定 initial, styling, style

TTML 要素型の内容モデルの定義で使用する要素語彙グループは、 グループの集合として、 表 5-4 – 要素語彙グループに列挙されます。 各グループは、生成規則 [46] を満たす内容指定として [XML 1.0]に従って定義されます。また、各グループは、拡張してもかまいません(ただし制限してはなりません)。 その拡張は、1 つ以上の 拡張モジュールによって行います。

表 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 – 属性語彙に列挙されます。 各モジュールは属性型の集合として定義され、その 構成要素は、 各モジュールについて、1 つ以上の 拡張モジュールによって拡張してもかまいません(ただし制限してはなりません)。

表 5-5 – 属性語彙
モジュール 属性
アニメーションバインディング属性 animate
音声スタイル指定属性 tta:gain, tta:pan, tta:pitch, tta:speak
条件付け属性 condition
中核属性 xml:base, xml:id, xml:lang, xml:space
データ属性 encoding, format, src, type
レイアウトバインディング属性 region
リンク属性 xlink:arcrole, xlink:href, xlink:role, xlink:show, xlink:title
メタデータ属性 ttm:agent, ttm:role
パラメーター属性 ttp:cellResolution, ttp:clockMode, ttp:displayAspectRatio, ttp:dropMode, ttp:frameRate, ttp:frameRateMultiplier, ttp:markerMode, ttp:pixelAspectRatio, ttp:subFrameRate, ttp:tickRate, ttp:timeBase,
プロファイル属性 ttp:contentProfiles, ttp:contentProfileCombination, ttp:inferProcessorProfileMethod, ttp:inferProcessorProfileSource, ttp:permitFeatureNarrowing, ttp:permitFeatureWidening, ttp:processorProfiles, ttp:processorProfileCombination, ttp:profile, ttp:validation, ttp:validationAction
スタイルバインディング属性 style
スタイル指定属性 tts:backgroundClip, tts:backgroundColor, tts:backgroundExtent, tts:backgroundImage, tts:backgroundOrigin, tts:backgroundPosition, tts:backgroundRepeat, tts:border, tts:bpd, tts:color, tts:direction, tts:disparity, tts:display, tts:displayAlign, tts:extent, tts:fontFamily, tts:fontKerning, tts:fontSelectionStrategy, tts:fontShear, tts:fontSize, tts:fontStyle, tts:fontVariant, tts:fontWeight, tts:ipd, tts:letterSpacing, tts:lineHeight, tts:lineShear, tts:luminanceGain, tts:opacity, tts:origin, tts:overflow, tts:padding, tts:position, tts:ruby, tts:rubyAlign, tts:rubyPosition, tts:rubyReserve, tts:shear, tts:showBackground, tts:textAlign, tts:textCombine, tts:textDecoration, tts:textEmphasis, tts:textOrientation, tts:textOutline, tts:textShadow, tts:unicodeBidi, tts:visibility, tts:wrapOption, tts:writingMode, tts:zIndex
タイミング属性 begin, dur, end, timeContainer

注:

(1) グローバル、すなわち名前空間で修飾された属性、または (2) 共有される要素固有の属性、すなわち名前空間で修飾されていないものの、複数の 要素型で共有される属性として定義されたものだけが、表 5-5 – 属性 語彙に列挙されています。

注:

TTML で定義されるすべての語彙は、 いわゆる lowerCamelCase 命名規則を一貫して使用します。このため、 異なる命名規則を使用する別の仕様に 名前が基づいている場合、その名前が変更されることがあります。

5.4.2 拡張語彙の一覧

拡張語彙の一覧は、将来の TTML プロファイルで使用することを意図しており、 このバージョンの TTML では、それ以上の定義は行いません。

標準化された拡張語彙に加えて、適合する 文書インスタンスは、名前空間で修飾された任意の 要素を 含んでもかまいません。その要素は、この仕様で使用するために定義された名前空間 以外の、任意の名前空間に属するものです。さらに、適合する 文書インスタンスは、名前空間で修飾された任意の 属性を、 TTML で定義された語彙に含んでもかまいません。その属性は、 この仕様で使用するために定義された名前空間以外の、 任意の名前空間に属するものです。

6 プロファイル

この節では、中核語彙の一覧におけるプロファイルに関する情報を 規定します。ここで、プロファイルに関する情報とは、要件や任意性を表す情報であり、 オーサリングまたは処理に関連するものと理解してください。 その対象は、タイムドテキストコンテンツ文書です。

6.1 プロファイル要素語彙

次の要素は、すべて TT パラメーター 名前空間で定義され、パラメーター情報を指定します。その情報は、文書インスタンス またはコンテンツ処理系に適用されます。

注:

この節の小節は、論理的な順序(最上位の構造から最下位の構造への順序)で配置されています。

6.1.1 ttp:profile

ttp:profile 要素は、 コンテンツプロファイルまたは 処理系プロファイルを指定するために使用します。 処理系プロファイルは、 必要とされる(必須の)機能および拡張と、任意の機能および拡張の集合を指定します。これらは、 コンテンツ処理系が対応しなければならないもの、または対応してもよいものであり、 処理の対象となる 文書インスタンスは、そのような機能や 拡張を 使用する(または使用する可能性のある)ものです。 コンテンツプロファイルは、 禁止、必須、および任意の機能や拡張の集合を指定します。これらは、それぞれ、 文書インスタンスに存在してはならないもの、存在しなければならないもの、および存在してもよいものです。 その文書インスタンスは、 当該プロファイルへの準拠を宣言するものです。

注:

機能と 拡張の違いは、その定義場所と識別方法にあります。 この仕様(またはその将来の改訂版)で定義され、 E 機能にある機能の指定によって識別される場合は、 機能とみなされます。別の仕様で定義され、 そこで拡張の指定によって識別される場合は、 拡張とみなされます。一般に、機能は、 W3C の標準化プロセスによって定義されることが期待され、拡張は、 第三者によって定義されることが期待されます。

この仕様では、ttp:profile 要素について、2 つの異なる使用コンテキストを定義します。

ttp:profile 要素が TTML 文書インスタンス内に現れる場合、 その目的は、作成者の意図を表すことです。その内容は、(1) どの 機能や拡張に、受信側のコンテンツ処理系が対応しなければならないか、または対応してもよいか、 それによってその文書を処理するための要件を示すこと、あるいは (2) どの機能や拡張を 含めたり、その他の形で使用したりしてはならないか、しなければならないか、またはしてもよいかを、 当該文書インスタンスについて示すことです。

ttp:profile 要素が TTML プロファイル定義文書のインスタンスで使用される場合、 特定の TTML プロファイルについて、機械で 読み取り可能な指定を公開する役割を果たします。この指定は、TTML 文書インスタンスから参照してもかまいません。 この仕様では、いくつかの標準のプロファイル定義文書を、 G 標準プロファイルで定義します。

ttp:profile 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、その後に、(1) 0 個以上の ttp:features 要素と、それに続く 0 個以上の ttp:extensions 要素、または (2) 0 個以上の ttp:profile 要素のいずれかを受け入れます。 ttp:profile 要素が、子の ttp:profile 要素を含む場合、 その子は、 入れ子のプロファイルと呼び、親は、入れ子を含むプロファイルと呼びます。 それ以外の場合は、入れ子を含まないプロファイルと呼びます。

XML 表現 – 要素情報項目: ttp:profile
<ttp:profile
  combine = ("leastRestrictive" | "mostRestrictive" | "replace" | "ignore") : ignore
  designator = xsd:string
  type = ("processor" | "content") : processor
  use = <absolute-profile-designator> | <relative-profile-designator>
  xml:base = <uri>
  xml:id = ID
  内容: Metadata.class*, ((ttp:features*, ttp:extensions*)|ttp:profile*)
</ttp:profile>

type 属性は、プロファイルが、 コンテンツプロファイルであるか、 処理系プロファイルであるかを判定するために使用します。指定されていない場合、 そのプロファイルは、処理系プロファイルとみなされます。 ttp:profile 要素が、基準 プロファイルまたは 入れ子のプロファイルを参照する場合、参照されるプロファイルの型は、 参照元のプロファイルの型と同じでなければなりません。たとえば、 ttp:profile 要素が、処理系プロファイルを定義する場合、参照できるのは、ほかの 処理系プロファイルだけであり、コンテンツプロファイルを参照することはできません。

combine 属性は、機能指定または拡張指定を 結合する方法を指定するために使用します。これは、 複数の指定が、それぞれ同じ機能または拡張に適用される場合のものです。

combine 属性の値が replace または ignore である場合、 字句上で後に現れる機能指定または拡張指定は、それぞれ、字句上で 先に現れる 指定を置き換えるか、無視されます。ここで、指定要素の順序は次のとおりです。

  1. 基準プロファイルで定義される指定。 そのプロファイルは、use 属性によって参照されるものです。

  2. 子孫の ttp:profile 要素で定義される指定を、後順走査の 順序で並べたもの。

  3. 子孫の ttp:feature 要素または ttp:extension 要素として定義される指定を、後順走査の順序で並べたもの。

値が leastRestrictive である場合、最も制限の弱い指定値が 適用されます。 値が mostRestrictive である場合、最も制限の強い指定値が 適用されます。制限の強さの順序は次のとおりです(弱いものから強いものへの順序)。 optional、required、prohibited。

combine 属性が指定されていない場合、ignore の意味論が適用されます。

designator 属性を指定する場合は、 <absolute-profile-designator> 値構文に従わなければなりません。 designator 属性は、 ttp:profile 要素に指定してもかまいません。その要素が TTML 文書インスタンスに現れ、属性が指定されていない場合は、 定義されたプロファイルは、指定子のないプロファイルとみなされます。 designator 属性は、 ttp:profile 要素に指定すべきです。その要素が TTML プロファイル定義文書のインスタンスに現れる場合が、これに該当します。 指定されていない場合、定義を行うコンテキスト(たとえば外部の仕様)は、 付随する定義文の中で指定子を指定しなければなりません。

use 属性を指定する場合は、 <absolute-profile-designator>または <relative-profile-designator> 値構文に従い、次のいずれかを参照しなければなりません。(1) 標準の定義済み プロファイルであって、5.2.3.1 標準の指定子で定義されるもの、 または (2) 実際に参照解決可能なリソースであって、妥当な プロファイル定義文書のインスタンスを表すものです。 いずれの場合も、参照されるプロファイルは、 基準プロファイルとして機能します。その指定を行うのは、 ttp:profile 要素です。

注:

use 属性は、完全な(全体の)プロファイル定義文書を参照しなければならないため、 最上位プロファイルまたは 入れ子のプロファイルを参照するためには使用できません。 したがって、use 属性の<uri>値に、 フラグメント構成要素を含めることはできません。

use 属性が指定されていない場合、基準プロファイルは、 その ttp:profile 要素について、 空の(null)プロファイル、すなわち、機能指定や拡張指定を含まない、 指定子のないプロファイル定義とみなさなければなりません。

結合プロファイル 指定集合 CPSS は、プロファイル P の機能および拡張について、 次の順序付き規則に従って決定されます。ここで、指定 S を CPSS に統合する際には、指定された (または既定の)combine 属性の値に従って結合方法を適用します。また、結合プロファイル 指定集合 CPSS'  を CPSS に統合する際には、CPSS'  内の各指定を順序どおりに、 CPSS に統合します。

  1. CPSS を空集合に初期化する。

  2. use 属性が存在する場合、統合を行う。 結合 指定集合を、参照される基準 プロファイルから CPSS に統合する。

  3. 各 ttp:profile 子について、P に属するものを、 後順走査を使用してたどり、結合 指定集合を、その子プロファイルから、 CPSS に統合する。

  4. 各 ttp:feature 子および ttp:extension 子について、 ttp:profile 要素に属するものを、 後順走査を使用してたどり、その機能指定または拡張指定を、 CPSS に統合する。

適合する TTML 処理系には、 プロファイル定義文書の参照解決が、 常に可能であることは要求されません。その文書が、 標準の定義済みプロファイルとして、G 標準 プロファイルで定義されるもののいずれでもない場合が、これに該当します。さらに、 適合する TTML 処理系は、各標準の定義済みプロファイルについて、組み込みの静的な 形式を使用してもかまいません。これにより、 ネットワークリソースの参照解決を不要にできます。

TTML 処理系が、非標準の プロファイル定義文書を参照解決できない場合、 その文書の 処理を続行してはなりません。ただし、エンドユーザーによる明示的な上書き、 またはエンドユーザーに由来する実装固有のパラメーターや、 ユーザー設定もしくはシステム設定に由来する実装固有のパラメーターによる明示的な上書きがある場合を除きます。TTML 処理系が、 文書インスタンスの処理を中止する理由が、 非標準のプロファイル定義 文書を参照できないことである場合は、 エンドユーザーに何らかの通知を行うべきです。ただし、エンドユーザーまたはシステムが そのような通知を無効にしている場合、あるいは、その処理系が エンドユーザーの介入を許可しない、または伴わない場合を除きます。

適合する TTML 処理系には、結合プロファイルまたは 入れ子を含むプロファイルへの対応は要求されません。 (1) 結合プロファイルに対応しておらず、 プロファイルの処理によって、 それが結合プロファイルとみなされることになる場合、または、 (2) 入れ子を含むプロファイルに対応しておらず、 プロファイルの処理によって、 それが入れ子を含むプロファイルとみなされることになる場合、 そのプロファイルの処理を続行してはなりません。ただし、 エンドユーザーによる明示的な上書き、 またはエンドユーザーやユーザー設定もしくはシステム設定に由来する実装固有の パラメーターによる明示的な上書きがある場合を除きます。TTML 処理系が、 文書インスタンスの処理を中止する理由が、 次のものへの対応がないことである場合、 結合プロファイルまたは入れ子を含むプロファイル、 エンドユーザーに何らかの通知を行うべきです。ただし、エンドユーザーまたはシステムが そのような通知を無効にしている場合、 あるいは、その処理系がエンドユーザーの介入を許可しない、または伴わない場合を除きます。

注:

文書インスタンスが、 結合プロファイルへの対応を要求しない場合、次のものを使用すべきではありません。

注:

文書インスタンスが、 入れ子を含むプロファイルへの対応を要求しない場合、入れ子のプロファイルを使用すべきではありません。

ttp: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 提示プロファイルを 基準プロファイルとして使用しています。この基準プロファイルをスーパーセット化し (これによって加算的な派生プロファイルを作成し)、 #text-outline 機能への対応を要求しています。

6.1.2 ttp:features

ttp:features 要素は、コンテナー要素であり、 機能のサポートおよび使用要件に関する情報をまとめるために使用します。

ttp:features 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、その後に、 0 個以上の ttp:feature 要素を受け入れます。

XML 表現 – 要素情報項目: ttp:features
<ttp:features
  xml:base = <uri> : TT 機能名前空間
  xml:id = ID
  内容: Metadata.class*, ttp:feature*
</ttp:features>

xml:base 属性を指定する場合は、(1) <uri>値構文に従い、(2) 絶対 URI を表し、 [XML Base]に従い、かつ、 (3) 機能名前空間を表さなければならず、その定義は、 E.1 機能の指定によります。指定されていない場合は、 xml:base 属性の既定 値が適用されます。これは、TT 機能名前空間です。

xml:base 属性は、 機能の指定 URI を省略形で記述できるようにするために使用します。その URI は、 子の ttp:feature 要素によって表されるものです。

6.1.3 ttp:feature

ttp:feature 要素は、 特定の機能のサポートおよび使用要件に関する情報を指定するために使用します。

XML 表現 – 要素情報項目: ttp:feature
<ttp:feature
  extends = xsd:string
  restricts = xsd:string
  value = ("optional" | "required" | "use" | "prohibited") : 以下の説明を参照
  xml:id = ID
  内容: #PCDATA
</ttp:feature>

ttp:feature 要素の子は、空でない 文字情報項目の列を表さなければならず、 それらを連結したものは、 <uri>値構文に従わなければなりません。

extends 属性または restricts 属性、あるいはその両方を指定する場合は、(1) <uri>値構文に従い、 (2) 機能の指定を表さなければならず、その定義は、 E.1 機能の指定によります。

extends 属性を使用して、定義対象の機能が、 構文上または意味上、あるいはその両方の観点から、真のスーパーセットであることを示してもかまいません。その対象は、 extends 属性によって参照される機能です。 restricts 属性を使用して、定義対象の機能が、 構文上または意味上、あるいはその両方の観点から、真のサブセットであることを示してもかまいません。その対象は、 restricts 属性によって参照される機能です。 extends 属性が指定されている場合、restricts 属性を ttp:feature 要素に指定してはなりません。同様に、restricts 属性が 指定されている場合、extends 属性を指定してはなりません。

URI の表現元が、(1) ttp:feature 要素の内容、(2) extends 属性、または (3) restricts 属性であり、 その URI が相対 URI である場合、 機能名前空間の値と結合することで、 絶対 URI を表さなければなりません。この名前空間の値は、xml:base 属性によって表され、 その属性は、最も近い祖先の ttp:features 要素に 属します。いずれの場合も(元の絶対 URI、または結果として得られる 絶対化された URI)、表される URI は、 ttp:feature 要素について、さらに機能の指定の構文に従わなければならず、 その定義は、E.1 機能の指定によります。また、 さらに、 この URI に現れる具体的な指定、すなわち、 フラグメント識別子の区切り文字 '#' で始まる機能の指定の部分は、 この仕様、または公開されたこの仕様のいずれかのバージョンで定義されていなければなりません (そのバージョンは REC の状態に達しているものとします)。

ttp:feature 要素の内容、 extends 属性、または restricts 属性によって表される URI が、 相対 URI である場合、xml:base 属性を、 最も近い祖先の ttp:features 要素に指定すべきです。

value 属性は、指定された機能のサポートまたは使用に関する制約を、 プロファイルの型に応じて指定します。

プロファイルが処理系プロファイルである場合、 次の意味論が適用されます。

  • value 属性の値が optional である場合、処理系は、文書を処理するために、 その機能を実装またはその他の方法でサポートしてもよいですが、その必要はありません。

  • 値が required である場合、次のステップを実行します。

    1. その機能が処理系によって実装されているか、その他の方法でサポートされている場合、 処理を続行する。 その対象は、当該文書である。

    2. それ以外で、 (1) extends 属性が、この ttp:feature 要素に指定され、 (2) extends 属性の値が指定する機能が、 実装されているか、その他の方法でサポートされており、 その対応を行うのが処理系であり、かつ、 (3) 次のttp:permitFeatureNarrowing プロパティの算出値が、ルート tt 要素について false でない場合、 文書の処理を続行する。

    3. それ以外で、 (1) restricts 属性が、この ttp:feature 要素に指定され、 (2) restricts 属性の値が指定する機能が、 実装されているか、その他の方法でサポートされており、 その対応を行うのが処理系であり、かつ、 (3) 次のttp:permitFeatureWidening プロパティの算出値が、ルート tt 要素について false でない場合、 文書の処理を続行する。

    4. それ以外の場合、文書の処理を中止する。ただし、エンドユーザー、または 実装固有のパラメーターによって上書きされる場合を除く。そのパラメーターは、 エンドユーザーやユーザー設定またはシステム設定に由来するものとする。

  • value 属性が指定されていない場合、その機能指定は、 値 required が指定されているものとして解釈しなければなりません。

プロファイルがコンテンツプロファイルである場合、 次の意味論が適用されます。

  • value 属性の値が optional である場合、その機能は、そのプロファイルへの適合性を 主張する文書に現れてもよいですが、その必要はありません。

  • value 属性の値が required である場合、その機能は、そのプロファイルへの適合性を 主張する文書に現れなければなりません。

  • value 属性の値が prohibited である場合、その機能は、そのプロファイルへの適合性を 主張する文書に現れてはなりません。

  • value 属性が指定されていない場合、その機能指定は、 値 optional が指定されているものとして解釈しなければなりません。

値 use は、value 属性では 非推奨です。これが プロファイル指定に現れる場合は、required が 指定されているものとして解釈しなければなりません。

定義された(すなわち標準化された)機能、またはその他の広く知られた機能が、 コンテンツプロファイルの ttp:feature 要素によって指定されていない場合、 その機能は、 value 属性を optional として指定されているものと解釈しなければなりません。ただし、 処理系プロファイルで指定されていない場合は、 その機能への対応の有無について、いかなる主張も暗示されません。

注:

特に、ある機能がコンテンツプロファイル定義に存在しない場合、 その機能の使用(文書インスタンス内での使用)が、 許可されない、またはその他の形で禁止されているという意味に解釈してはなりません。 コンテンツプロファイルで機能の使用を許可しない意図がある場合は、 prohibited 値を使用して指定すべきです。

文書インスタンスが、 E.1 機能の指定で定義される機能を使用し、かつ、その文書の 意図される 用途において、その機能の認識および処理が必要である場合、 文書は、required の機能指定を、宣言または 参照するプロファイルのいずれかに含めなければなりません。

ttp:feature 要素を、次の例で示します。

例の断片 – 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 提示プロファイルを 基準プロファイルとして使用しています。この基準プロファイルを、3 つの ttp:feature 要素によって変更し、(1) 基準プロファイルをスーパーセット化しています( #fontStyle-italic も #textDecoration-under も、 TTML 提示プロファイルでは必須ではないためです)。また、 (2) #textOutline-blurred 機能の使用を禁止しています (これは TTML 提示プロファイルでは任意です)。

この例は、作成者の意図として、 イタリックのフォントスタイルとテキストの下線への対応が必須であり、 文書ではテキストの輪郭のぼかしを使用してはならないことを表します。

6.1.4 ttp:extensions

ttp:extensions 要素は、コンテナー要素であり、 拡張のサポートおよび使用要件に関する情報をまとめるために使用します。

ttp:extensions 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、その後に、 0 個以上の ttp:extension 要素を受け入れます。

XML 表現 – 要素情報項目: ttp:extensions
<ttp:extensions
  xml:base = <uri> : TT 拡張名前空間
  xml:id = ID
  内容: Metadata.class*, ttp:extension*
</ttp:extensions>

xml:base 属性を指定する場合は、(1) <uri>値構文に従い、(2) 絶対 URI を表し、 [XML Base]に従い、かつ、 (3) 拡張名前空間を表さなければならず、その定義は、 F.1 拡張の指定によります。指定されていない場合は、 xml:base 属性の既定 値が適用されます。これは、TT 拡張名前空間です。

xml:base 属性は、 機能の指定 URI を省略形で記述できるようにするために使用します。その URI は、 子の ttp:extension 要素によって表されるものです。

6.1.5 ttp:extension

ttp:extension 要素は、 特定の拡張のサポートおよび使用要件に関する情報を指定するために使用します。

XML 表現 – 要素情報項目: ttp:extension
<ttp:extension
  extends = xsd:string
  restricts = xsd:string
  value = ("optional" | "required" | "use" | "prohibited") : 以下の説明を参照
  xml:id = ID
  内容: #PCDATA
</ttp:extension>

ttp:extension 要素の子は、空でない 文字情報項目の列を表さなければならず、 それらを連結したものは、 <uri>値構文に従わなければなりません。

extends 属性または restricts 属性、あるいはその両方を指定する場合は、(1) <uri>値構文に従い、 (2) 機能の指定または拡張の指定を表さなければならず、その定義は、 E.1 機能の指定またはF.1 拡張の指定に、それぞれ従います。

extends 属性を使用して、定義対象の拡張が、 構文上または意味上、あるいはその両方の観点から、真のスーパーセットであることを示してもかまいません。その対象は、 extends 属性によって参照される機能または拡張です。 restricts 属性を使用して、定義対象の拡張が、 構文上または意味上、あるいはその両方の観点から、真のサブセットであることを示してもかまいません。その対象は、 restricts 属性によって参照される機能または拡張です。 extends 属性が指定されている場合、restricts 属性を ttp:extension 要素に指定してはなりません。同様に、restricts 属性が 指定されている場合、extends 属性を指定してはなりません。

URI の表現元が、(1) ttp:extension 要素の内容、(2) extends 属性、または (3) restricts 属性であり、 その URI が相対 URI である場合、 拡張名前空間の値と結合することで、 絶対 URI を表さなければなりません。この名前空間の値は、xml:base 属性によって表され、 その属性は、最も近い祖先の ttp:extensions 要素に 属します。いずれの場合も(元の絶対 URI、または結果として得られる 絶対化された URI)、表される URI は、 ttp:extension 要素について、さらに拡張の指定の構文に従わなければならず、 その定義は、F.1 拡張の指定によります。 一方、extends 属性、または restricts 属性、あるいはその両方によって表される URI は、機能の指定 または拡張の指定の構文に従わなければならず、その定義は、E.1 機能の 指定または F.1 拡張の指定に、それぞれ従います。

ttp:extension 要素の内容、 extends 属性、または restricts 属性によって表される URI が、 相対 URI である場合、xml:base 属性を、 最も近い祖先の ttp:extensions 要素に指定すべきです。

value 属性は、指定された拡張のサポートまたは使用に関する制約を、 プロファイルの型に応じて指定します。

プロファイルが処理系プロファイルである場合、 次の意味論が適用されます。

  • value 属性の値が optional である場合、処理系は、文書を処理するために、 その拡張を実装またはその他の方法でサポートしてもよいですが、その必要はありません。

  • 値が required である場合、次のステップを実行します。

    1. その拡張が処理系によって実装されているか、その他の方法でサポートされている場合、 処理を続行する。 その対象は、当該文書である。

    2. それ以外で、 (1) extends 属性が、この ttp:extension 要素に指定され、 (2) extends 属性の値が指定する拡張が、 実装されているか、その他の方法でサポートされており、 その対応を行うのが処理系であり、かつ、 (3) 次のttp:permitFeatureNarrowing プロパティの算出値が、ルート tt 要素について false でない場合、 文書の処理を続行する。

    3. それ以外で、 (1) restricts 属性が、この ttp:extension 要素に指定され、 (2) restricts 属性の値が指定する拡張が、 実装されているか、その他の方法でサポートされており、 その対応を行うのが処理系であり、かつ、 (3) 次のttp:permitFeatureWidening プロパティの算出値が、ルート tt 要素について false でない場合、 文書の処理を続行する。

    4. それ以外の場合、文書の処理を中止する。ただし、エンドユーザー、または 実装固有のパラメーターによって上書きされる場合を除く。そのパラメーターは、 エンドユーザーやユーザー設定またはシステム設定に由来するものとする。

  • value 属性が指定されていない場合、その拡張指定は、 値 required が指定されているものとして解釈しなければなりません。

プロファイルがコンテンツプロファイルである場合、 次の意味論が適用されます。

  • value 属性の値が optional である場合、その拡張は、そのプロファイルへの適合性を 主張する文書に現れてもよいですが、その必要はありません。

  • value 属性の値が required である場合、その拡張は、そのプロファイルへの適合性を 主張する文書に現れなければなりません。

  • value 属性の値が prohibited である場合、その拡張は、そのプロファイルへの適合性を 主張する文書に現れてはなりません。

  • value 属性が指定されていない場合、その拡張指定は、 値 optional が指定されているものとして解釈しなければなりません。

値 use は、value 属性では 非推奨です。これが プロファイル指定に現れる場合は、required が 指定されているものとして解釈しなければなりません。

広く知られた拡張が、 コンテンツプロファイルの ttp:extension 要素によって指定されていない場合、 その拡張は、 value 属性を optional として指定されているものと解釈しなければなりません。ただし、 処理系プロファイルで指定されていない場合は、 その拡張への対応の有無について、いかなる主張も暗示されません。

注:

特に、ある拡張がコンテンツプロファイル定義に存在しない場合、 その拡張の使用(文書インスタンス内での使用)が、 許可されない、またはその他の形で禁止されているという意味に解釈してはなりません。 コンテンツプロファイルで拡張の使用を許可しない意図がある場合は、 prohibited 値を使用して指定すべきです。

文書インスタンスが、 F.1 拡張の 指定によって指定可能な拡張を使用し、かつ、その文書の意図される用途において、 その拡張の認識および処理が必要である場合、 文書は、required の拡張指定を、 宣言または参照するプロファイルのいずれかに含めなければなりません。

ttp:extension 要素を、次の例で示します。

例の断片 – ttp:extension
<ttp:profile use="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
  <ttp:extensions xml:base="http://example.org/ttml/extension/">
    <ttp:extension value="required">#prefilter-by-language</ttp:extension>
  </ttp:extensions>
</ttp:profile>

注:

上記の例では、TTML 変換プロファイルを 基準プロファイルとして使用しています。この基準プロファイルをスーパーセット化するために、 独自の拡張への対応を必須として指定しています。 その拡張は、第三者の名前空間で定義されるものです。

この例は、作成者の意図として、 受信側の処理系が TTML 変換プロファイルに対応しなければならず、 さらに、第三者が定義した拡張にも対応しなければならないことを表します。

6.2 プロファイル属性語彙

次の属性は、TT パラメーター名前空間で定義されます。

6.2.1 ttp:contentProfiles

ttp:contentProfiles 属性を、コンテンツ作成者は使用してもかまいません。 これは、1 つ以上のコンテンツプロファイルを、 タイムドテキストマークアップ言語(TTML)について表すものであり、 これを包含する文書インスタンスは、 指定された集合のすべてへの適合性を主張します。その集合は、 指定されたコンテンツプロファイルから構成されます。

この属性を指定する場合、その値は次の構文に従わなければなりません。 ここで、各 profile-designator 項目は、 <uri>値構文に従い、 さらに、プロファイル指定子に定義された制約に従います。その制約は、 5.2 プロファイリングによります。

構文表現 – ttp:contentProfiles
ttp:contentProfiles
  : designators
  | "all(" <lwsp> designators <lwsp> ")"

designators
  : designator (<lwsp> designator)*

designator
  : <profile-designator>

指定子のリストが関数構文 all(...) で囲まれている場合、または 関数構文が使用されていない場合、 指定されたすべてのコンテンツ プロファイルへの適合性が主張されます。

複数の指定子を指定する場合、絶対化された各指定子の形式は、それぞれ異なっていなければなりません。すなわち、 絶対化された形式への変換後に、指定子が 重複することは許されません。

ttp:contentProfiles 属性は、次の要素に指定されている場合にのみ、有意とみなされます。 tt 要素です。

6.2.2 ttp:contentProfileCombination

ttp:contentProfileCombination 属性は、 複数のコンテンツプロファイルを結合する方法を指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:contentProfileCombination
ttp:contentProfileCombination
  : "leastRestrictive"
  | "mostRestrictive"
  | "replace"
  | "ignore"

指定されていない場合、このパラメーターの値は ignore とみなさなければなりません。

順序の付いた 2 つのプロファイル指定値 arg1 と arg2、およびコンテンツ プロファイルの結合方法が与えられた場合、 表 6-1 – コンテンツプロファイルの結合 は、その 2 つの指定値を結合した結果を規定します。ここで、 引数の順序は、字句上の順序に従って決定され、その対象は、 コンテンツプロファイルであり、文書インスタンス内での順序を使用します。

表 6-1 – コンテンツプロファイルの結合
arg1 arg2 leastRestrictive mostRestrictive replace ignore
optional optional optional optional optional optional
optional required optional required required optional
optional prohibited optional prohibited prohibited optional
required optional optional required optional required
required required required required required required
required prohibited required prohibited prohibited required
prohibited optional optional prohibited optional prohibited
prohibited required required prohibited required prohibited
prohibited prohibited prohibited prohibited prohibited prohibited

ttp:contentProfileCombination 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.3 ttp:inferProcessorProfileMethod

ttp:inferProcessorProfileMethod 属性は、 コンテンツプロファイル指定値を、対応する処理系 プロファイル指定値に対応付ける方法を指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:inferProcessorProfileMethod
ttp:inferProcessorProfileMethod
  : "loose"
  | "strict"

このパラメーターの値が loose である場合、処理系プロファイル 指定をコンテンツプロファイル指定から推論する際に、 緩やかな(寛容な)対応付けが適用されます。

このパラメーターの値が strict である場合、処理系プロファイル 指定をコンテンツプロファイル指定から推論する際に、 厳格な(保守的な)対応付けが適用されます。

指定されていない場合、このパラメーターの値は、 loose とみなさなければなりません。

入力となるコンテンツプロファイル指定値 input と、処理系 プロファイルの推論方法が与えられた場合、 表 6-2 – 処理系プロファイルの 推論方法は、入力された指定値を対応付けた結果を規定します。

表 6-2 – 処理系プロファイルの推論方法
input loose strict
optional optional required
required required required
prohibited optional optional

ttp:inferProcessorProfileMethod 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.4 ttp:inferProcessorProfileSource

ttp:inferProcessorProfileSource 属性は、 コンテンツプロファイル指定値を、対応する処理系 プロファイル指定値に対応付ける際の情報源を指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:inferProcessorProfileSource
ttp:inferProcessorProfileSource
  : "combined"
  | "first"

このパラメーターの値が combined である場合、処理系プロファイルの推論時には、 結合指定 集合 のうち、実効コンテンツプロファイルのものを、 推論の情報源として使用します。

このパラメーターの値が first である場合、処理系プロファイルの推論時には、 最初の構成プロファイルを使用します。その構成プロファイルは、 結合指定 集合(実効コンテンツプロファイルのもの)に属し、 そこから推論される処理系プロファイルが、コンテンツ処理系によってサポートされるものです。 これを推論の情報源として使用します。詳細については、 推論処理系 プロファイルの構築手続きを参照してください。

指定されていない場合、このパラメーターの値は、 first とみなさなければなりません。

ttp:inferProcessorProfileSource 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.5 ttp:permitFeatureNarrowing

ttp:permitFeatureNarrowing 属性は、 機能または拡張に関連する要件を、(構文上または 意味上)より狭い解釈によって満たしてよいかどうかを その機能または拡張について指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:permitFeatureNarrowing
ttp:permitFeatureNarrowing
  : xsd:boolean                             // [XML Schema Part 2]、§3.2.2 を参照

このパラメーターの値が true である場合、機能または 拡張への対応要件は、次の場合に満たされてもかまいません。 その機能または拡張の定義が extends 属性を指定し、 その属性によって参照される機能または拡張が、 処理系によってサポートされている場合です。

このパラメーターの値が false である場合、機能または 拡張への対応要件を、 extends 属性によって指定された、より狭く定義された機能または拡張によって満たすことはできません。

指定されていない場合、このパラメーターの値は、 false とみなさなければなりません。

ttp:permitFeatureNarrowing 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.6 ttp:permitFeatureWidening

ttp:permitFeatureWidening 属性は、 機能または拡張に関連する要件を、(構文上または 意味上)より広い解釈によって満たしてよいかどうかを その機能または拡張について指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:permitFeatureWidening
ttp:permitFeatureWidening
  : xsd:boolean                             // [XML Schema Part 2]、§3.2.2 を参照

このパラメーターの値が true である場合、機能または 拡張への対応要件は、次の場合に満たされてもかまいません。 その機能または拡張の定義が restricts 属性を指定し、 その属性によって参照される機能または拡張が、 処理系によってサポートされている場合です。

このパラメーターの値が false である場合、機能または 拡張への対応要件を、 restricts 属性によって指定された、より広く定義された機能または拡張によって満たすことはできません。

指定されていない場合、このパラメーターの値は、 false とみなさなければなりません。

ttp:permitFeatureWidening 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.7 ttp:profile

ttp:profile 属性は、 処理系プロファイルを表します。 これは、タイムドテキストマークアップ言語(TTML)のプロファイルであり、 文書インスタンスの処理時に適用されます。

注:

作成者が、単一の処理系プロファイルではなく、処理系プロファイルの集合のうち 1 つ以上が 適用されることを指定したい場合、コンテンツ作成者には、 ttp:processorProfiles の使用を勧めます。その規定は、6.2.8 ttp:processorProfilesによります。

注:

コンテンツプロファイルを示す方法については、6.2.1 ttp:contentProfilesを参照してください。

この属性を指定する場合、その値は次の構文に従わなければなりません。 ここで、designator は、 <uri>値構文に従い、さらに、 プロファイル指定子を指定しなければなりません。その指定は、 5.2 プロファイリングに従います。

構文表現 – ttp:profile
ttp:profile
  : designator

designator
  : <profile-designator>

ttp:profile 属性は、次の要素に指定されている場合にのみ、有意とみなされます。 tt 要素です。

最上位の処理系プロファイル が文書インスタンス内で定義されている場合、 ttp:profile 属性を tt 要素に指定すべきではありません。

注:

5.2.4 プロファイルの意味論を参照してください。ここでは、 次の 実効処理系プロファイルの決定方法を説明しています。 1 つ以上の機構が、 文書の処理時に使用する(可能性のある)1 つ以上のプロファイルを指定する場合のものです。

6.2.8 ttp:processorProfiles

ttp:processorProfiles 属性を、コンテンツ作成者は使用してもかまいません。 これは、1 つ以上の処理系プロファイルを、 タイムドテキストマークアップ言語(TTML)について表すものであり、 これを包含する文書インスタンスは、次のいずれかへの対応を要求します。 (1) 指定された集合のすべて、すなわち、 指定された処理系プロファイルのすべて、または (2) いずれか 1 つであり、 その集合は、 指定された処理系プロファイルから構成されます。

この属性を指定する場合、その値は次の構文に従わなければなりません。 ここで、各 profile-designator 項目は、 <uri>値構文に従い、 さらに、プロファイル指定子に定義された制約に従います。その制約は、 5.2 プロファイリングによります。

構文表現 – ttp:processorProfiles
ttp:processorProfiles
  : designators
  | "all(" <lwsp> designators <lwsp> ")"
  | "any(" <lwsp> designators <lwsp> ")"

designators
  : designator (<lwsp> designator)*

designator
  : <profile-designator>

指定子のリストが関数構文 all(...) で囲まれている場合、または 関数構文が使用されていない場合、 指定されたすべての処理系 プロファイルへの対応が要求されます。指定子の リストが関数構文 any(...) で囲まれている場合は、 少なくとも 1 つへの対応が要求されます。 その対象は、指定された処理系プロファイルです。

複数の指定子を指定する場合、絶対化された各指定子の形式は、それぞれ異なっていなければなりません。すなわち、 絶対化された形式への変換後に、指定子が 重複することは許されません。

ttp:processorProfiles 属性は、次の要素に指定されている場合にのみ、有意とみなされます。 tt 要素です。

6.2.9 ttp:processorProfileCombination

ttp:processorProfileCombination 属性は、 複数の処理系プロファイルを結合する方法を指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:processorProfileCombination
ttp:processorProfileCombination
  : "leastRestrictive"
  | "mostRestrictive"
  | "replace"
  | "ignore"

指定されていない場合、このパラメーターの値は ignore とみなさなければなりません。

順序の付いた 2 つのプロファイル指定値 arg1 と arg2、および処理系 プロファイルの結合方法が与えられた場合、 表 6-3 – 処理系プロファイルの 結合は、その 2 つの指定値を結合した結果を規定します。 ここで、 引数の順序は、字句上の順序に従って決定され、その対象は、 処理系プロファイルであり、文書インスタンス内での順序を使用します。

表 6-3 – 処理系プロファイルの結合
arg1 arg2 leastRestrictive mostRestrictive replace ignore
optional optional optional optional optional optional
optional required optional required required optional
required optional optional required optional required
required required required required required required

ttp:processorProfileCombination 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.10 ttp:validation

ttp:validation 属性は、検証処理 を、文書インスタンスに対して実行してもよいか、または実行しなければならないかを、 検証機能付きコンテンツ処理系について指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:validation
ttp:validation
  : "required"
  | "optional"
  | "prohibited"

このパラメーターの値が required である場合、検証機能付きコンテンツ処理系 は、検証処理を TTML 文書インスタンスに対して実行しなければなりません。その実行は、 提示処理や変換処理など、ほかの種類の処理を実行する前に行います。

このパラメーターの値が optional である場合、検証機能付きコンテンツ処理系 は、検証処理を実行してもよいですが、その必要はありません。その対象は、 TTML 文書インスタンスであり、実行する場合は、 提示処理や変換処理など、ほかの種類の処理を実行する前に行います。

このパラメーターの値が prohibited である場合、検証機能付きコンテンツ処理系 は、検証処理を TTML 文書インスタンスに対して実行してはなりません。その禁止は、 提示処理や変換処理など、ほかの種類の処理を実行する前に適用されます。ただし、エンドユーザー またはアプリケーションがこの禁止を上書きする場合を除きます。

検証処理が TTML 文書インスタンスに対して実行され、検証に失敗した場合、 算出値を使用します。 ttp:validationAction プロパティの算出値によって、 さらなる処理を実行する前に、どの動作を行うかを決定します。

指定されていない場合、このパラメーターの値は、 optional とみなさなければなりません。

ttp:validation 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

6.2.11 ttp:validationAction

ttp:validationAction 属性は、どの動作を行うかを指定するために使用します。 その実行主体は、検証機能付きコンテンツ処理系であり、 文書インスタンスの検証が失敗した場合に適用されます。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:validationAction
ttp:validationAction
  : "abort"
  | "warn"
  | "ignore"

このパラメーターの値が abort である場合、中止処理が、 エンドユーザーまたはアプリケーションによって上書きされない限り、 検証機能付きコンテンツ処理系 は、TTML 文書インスタンスの処理を中止しなければなりません。その条件は、 検証エラー例外の発生です。

このパラメーターの値が warn である場合、検証機能付きコンテンツ処理系 は、エンドユーザーに警告すべきです。その条件は、検証エラーまたは 検証警告例外の 発生であり、 エンドユーザーに、処理を続行するか中止するかを選ぶ機会を与えるべきです。

このパラメーターの値が ignore である場合、検証機能付きコンテンツ処理系 は、中止すべきではなく、エンドユーザーに警告すべきでもありません。その条件は、検証例外 の発生です。

指定されていない場合、このパラメーターの値は、次のように決定されます。 次のttp:validationプロパティの算出値が、 required である場合、 値を abort とみなさなければなりません。 それが optional である場合、 値を warn とみなさなければなりません。 それ以外で、それが prohibited である場合、 値を ignore とみなさなければなりません。

ttp:validationAction 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

7 パラメーター

この節では、中核語彙の一覧におけるパラメーターに関する情報を 規定します。ここで、 パラメーターとは、(1) 不可欠な情報、または (2) 特に重要な情報と理解してください。その目的は、 中核語彙項目によって表されるほかの種類の情報の意味論を 解釈すること、または文書 処理コンテキストを確立することです。 このコンテキストによって、TTML コンテンツを外部環境に関連付けることができます。

7.1 パラメーター要素語彙

この仕様では、パラメーター要素語彙を定義しません。

7.2 パラメーター属性語彙

次の属性は、TT パラメーター名前空間で定義されます。

7.2.1 ttp:cellResolution

ttp:cellResolution 属性を、作成者は使用してもかまいません。 これは、水平方向および垂直方向のセル数を表すものであり、ルートコンテナー領域 のエリアを、それらのセルに分割します。その目的は、提示の意味論を、 均一なグリッドによって表すことです。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:cellResolution
ttp:cellResolution
  : columns <lwsp> rows                     // columns != 0; rows != 0

columns | rows
  : <non-negative-integer>

指定されていない場合、列数および行数は、 それぞれ 32 および 15 とみなさなければなりません。指定する場合、列数または行数をゼロ (0) にしてはなりません。

注:

値 32 および 15 の選択は、これらが、 [CTA-608-E]で定義される最大の列数および行数であることに基づきます。

ttp:cellResolution 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

注:

均一なグリッドは、 長さを測定し、座標を表す目的でのみ使用します。特に、 テキストの提示や個々の グリフエリアの配置が、 このグリッドに合わせられるとは想定していません。そのような配置は可能ですが、 等幅フォントと、EM 正方形がセルのサイズに正確に一致する フォントサイズを使用する必要があります。

特に指定がない限り、<length>が、 セル単位で 表され、インライン進行寸法またはブロック進行寸法に平行な寸法を示す場合、 それぞれ、セルのインライン進行寸法またはブロック進行寸法が適用されます。

注:

たとえば、(4 辺すべての)パディングが 0.1c と指定され、セル解像度が 20 × 10 であり、ルートコンテナー 領域の寸法が 640 × 480 である場合、上から下、 左から右への書字モードを想定すると、始端および終端のパディングは (640 / 20) * 0.1 ピクセルとなり、 また、 前側および後側のパディングは (480 / 10) * 0.1 ピクセルとなります。

7.2.2 ttp:clockMode

ttp:clockMode 属性は、 時間表現を実時間の時間座標として解釈する方法を指定するために使用します。これは、 時間基準 clock で動作する場合に適用され、その定義は、7.2.11 ttp:timeBaseによります。

注:

12.3 時間値表現を参照してください。 時間表現の構文および意味論が規定されています。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:clockMode
ttp:clockMode
  : "local"
  | "gps"
  | "utc"

時間基準が、7.2.11 ttp:timeBaseで定義されるものとして、 clock と指定されている場合、このパラメーターは次のように適用されます。 パラメーターの値が local である場合、時間表現は、 現地の壁時計の時刻(および日付)の座標として解釈されます。 utc である場合、時間表現は、 UTC 時間座標として解釈されます [UTC]。 gps である場合、時間表現は、 GPS 時間座標として解釈されます [GPS]。

注:

時刻(および日付)表現は、特定のタイムゾーンを暗示しません。これは、 local クロックモードが適用される場合のことです。特に、コンテンツ処理系 は、現地の時刻(および日付)表現を、処理が行われる場所の 現地のタイムゾーンで解釈することが期待されます。 作成者が、時刻(および日付)表現を特定のタイムゾーンに固定したい場合は、 時刻(および日付) 表現を UTC に変換し、utc クロックモードの使用を指定してもかまいません。

注:

GPS 時間と UTC 時間の主な違いは、GPS 時間ではうるう秒の調整を行わないのに対し、UTC 時間では、 次のように調整することです。UTC = TAI(国際原子時)+ 1972年以降の 累積うるう秒。TAI は、国際 度量衡局(BIPM)が、フランスのセーヴルで維持しています。 GPS システム時間は、米国海軍天文台の マスタークロック(MC)に合わせて制御されます。このクロックは、TAI に対して小さいものの 明示されていない許容誤差の範囲内に維持されています。

指定されていない場合、このパラメーターの値は、 utc とみなさなければなりません。

ttp:clockMode 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

7.2.3 ttp:displayAspectRatio

ttp:displayAspectRatio 属性は、表示アスペクト比を、ルートコンテナー領域について指定するために使用します。詳細は、H ルートコンテナー領域の意味論で説明します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:displayAspectRatio
ttp:displayAspectRatio
  : numerator <lwsp> denominator            // numerator != 0; denominator != 0

numerator | denominator
  : <non-negative-integer>

指定する場合、分子と分母はどちらもゼロ以外でなければなりません。指定されていない場合、 表示アスペクト比は、 ルートコンテナー領域について、H ルートコンテナー領域の意味論によって決定されます。

ttp:displayAspectRatio 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

7.2.4 ttp:dropMode

ttp:dropMode 属性は、 フレーム数の解釈および使用に関する制約を指定するために使用します。 そのフレーム数は、[SMPTE ST 12-1]の時間座標に対応するものであり、 時間基準 smpte で動作する場合に適用されます。その定義は、 7.2.11 ttp:timeBaseによります。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:dropMode
ttp:dropMode
  : "dropNTSC"
  | "dropPAL"
  | "nonDrop"

時間基準が、7.2.11 ttp:timeBaseで定義されるものとして、 smpte と指定されている場合、このパラメーターは次のように適用されます。 パラメーターの値が nonDrop である場合、時間表現の任意の 1 秒の中で、フレームは 0 から N−1 まで数えます。ここで、N は、 ttp:frameRate パラメーターで指定された値であり、 ttp:frameRateMultiplier パラメーターで指定された値は無視します。

注:

nonDrop モードで動作する場合、時間表現の 1 秒は、 通常の(1 倍速の)順方向再生中の実時間の 1 秒と等しいことも、等しくないこともあります。 ttp:frameRateMultiplier パラメーターが指定され、その値が 1:1 でない場合、時間表現の 1 秒は、 実時間で測った再生経過時間の 1 秒よりも、 短くなるか長くなります。

このパラメーターの値が dropNTSC である場合、時間表現の 秒が 00 である場合を除き、任意の 1 秒の中で、 フレームは 0 から N−1 まで数えます。ここで、N は、 ttp:frameRate パラメーターで指定された値ですが、 次のパラメーターで指定された値は無視します。 ttp:frameRateMultiplier パラメーターです。時間 表現の秒が 00 であり、その分が、 00、10、20、30、 40、50 のいずれでもない場合、フレームコード 00 および 01 は、その 1 秒の間に省略されます。それ以外の場合、これらの フレームコードは省略されません。

注:

たとえば、dropNTSC モードで、ttp:frameRate を 30 として動作する場合、 連続するフレーム間でフレーム数が不連続になります。その様子を、 次の時間表現の列に示します。01:08:59:28、 01:08:59:29、01:09:00:02、 01:09:00:03。

このパラメーターの値が dropPAL である場合、時間表現の 秒が 00 である場合を除き、任意の 1 秒の中で、 フレームは 0 から N−1 まで数えます。ここで、N は、 ttp:frameRate パラメーターで指定された値ですが、 次のパラメーターで指定された値は無視します。 ttp:frameRateMultiplier パラメーターです。時間 表現の秒が 00 であり、その分が 偶数で、かつ 00、20、40 のいずれでもない場合、 フレームコード 00 から 03 は、 その 1 秒の間に省略されます。それ以外の場合、これらのフレームコードは省略されません。

注:

たとえば、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 変調を NTSC のフレームレートである約 29.97 フレーム/秒と組み合わせて使用します。M/PAL システムは、主にブラジルで使用されています。

指定されていない場合、nonDrop が適用されるものと仮定しなければなりません。

ttp:dropMode 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

7.2.5 ttp:frameRate

ttp:frameRate 属性は、関連メディア オブジェクトのフレームレート、または文書 インスタンスの内在的なフレームレートを指定するために使用します。後者は、 独立したメディアオブジェクトとして機能することを意図している場合に適用されます。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:frameRate
ttp:frameRate
  : <non-negative-integer>                                // value > 0

文書インスタンスに適用されるフレームレートは、 次の目的で 使用します。フレーム単位で表される時間表現の解釈であり、 その定義は、12.3.1 <time-expression>によります。

media 時間基準が適用され、実効フレームレートが 整数である場合、フレームは、メディア時間の 1 秒を分割したものとして 解釈されます。フレームレートが F と指定されている場合、 メディア時間の 1 秒は、F 個の等しい 長さの区間に分割され、各区間はフレーム f として識別されます。 ここで、f ∈ [0…F−1] です。

注:

I.2 メディア時間基準を参照してください。 詳細として、 media 時間基準の時間表現の解釈について説明しています。

指定されていない場合、フレームレートは、 アプリケーション定義のフレームレートと等しいものとみなさなければなりません。そのようなフレームレートが適用されない場合は、 毎秒 30 フレームとみなさなければなりません。指定する場合、フレームレートは、 ゼロ (0) より大きくなければなりません。

ttp:frameRate 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

7.2.6 ttp:frameRateMultiplier

ttp:frameRateMultiplier 属性は、 フレームレートに適用する乗数を指定するために使用します。そのフレームレートは、 ttp:frameRate 属性によって指定されるものであり、乗数の適用によって、 実効フレームレートを算出します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:frameRateMultiplier
ttp:frameRateMultiplier
  : numerator <lwsp> denominator            // numerator != 0; denominator != 0

numerator | denominator
  : <non-negative-integer>

フレームレート乗数は、目的のフレームレートを、 毎秒のフレーム数が整数となる形で表せない場合に使用します。

指定されていない場合、フレームレート乗数は、アプリケーション定義の フレームレート乗数と等しいものとみなさなければなりません。 そのような乗数が適用されない場合は、1 (1:1) とみなさなければなりません。分子と 分母は、どちらもゼロ以外でなければなりません。

ttp:frameRateMultiplier 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

注:

NTSC [SMPTE ST 170] 形式の映像オブジェクトと毎秒 30 フレームで同期するために使用するフレームレート乗数は、公称値で 1000:1001 です。NTSC 映像の公称フレームレートは、色 副搬送波周波数 3,579,545.45…Hz (= 5.0MHz × 63/88) に比率 2/455 を掛け、 1 フレーム当たりの水平走査線数 525 で割ったものと定義されています。これにより、 フレームレートは 29.970029970029… (= 30 × 1000/1001) フレーム/ 秒となります。使用地域や映像形式の規格が異なる場合には、 ほかのフレームレート乗数が適用されます。

注:

PAL/M の場合を除き、PAL 形式の映像オブジェクトと毎秒 25 フレームで同期するために使用するフレームレート乗数は、公称値で 1:1 です。

7.2.7 ttp:markerMode

ttp:markerMode 属性は、 時間表現の解釈および使用に関する制約を指定するために使用します。 その時間表現は、[SMPTE ST 12-1]の時間座標に対応するものであり、 時間基準 smpte で動作する場合に適用されます。その定義は、 7.2.11 ttp:timeBaseによります。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:markerMode
ttp:markerMode
  : "continuous"
  | "discontinuous"

時間基準が、7.2.11 ttp:timeBaseで定義されるものとして、 smpte と指定されている場合、このパラメーターは次のように適用されます。 パラメーターの値が continuous である場合、[SMPTE ST 12-1]の時間 座標は、 線形であり、単調増加または 単調減少すると仮定してもかまいません。ただし、discontinuous である場合は、 時間座標の線形性または単調性について、いかなる仮定もしてはなりません。

指定されていない場合、このパラメーターの値は、 discontinuous とみなさなければなりません。

注:

このパラメーターの既定値は、当初、 (TTML 1.0 第1版において) continuous と指定されていました。しかし、業界の状況をさらに評価した結果、 この 選択は誤りであり、最も一般的な既定値は discontinuous であることが分かりました。

ttp:markerMode 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

値 continuous が適用される場合、時間 表現を実時間の 座標に変換してもかまいません。その際には、算出されたフレームレートと、 ttp:dropMode パラメーターで表されるドロップモードを考慮します。 この場合、コンテンツ処理系は、次のものを作成し、 維持しなければなりません。 合成 SMPTE 文書同期基準です。この基準内で、 これらの時間 表現が解釈されます。詳細については、 12.4 タイミングの意味論で説明します。

注:

smpte 時間基準および continuous マーカーモードで動作する場合、暗黙の時間座標 空間が存在します。それは、合成 SMPTE 文書 同期基準であり、 単調増加(または単調減少)する [SMPTE ST 12-1]の時間座標によって定義され、その際には、 算出されたフレームレートおよびドロップモードを考慮します。すべての時間表現は、 この時間座標空間との関係において、 SMPTE タイムコードの同期イベント(マーカー)に基づいて解釈されます。 文書処理コンテキストは、これらの イベントを生成します。その際には、時間座標の単調性、 およびフレームの省略がある場合の再同期に関する 暗黙の制約が伴います。

continuous マーカーモードを smpte 時間基準とともに使用することは、media 時間基準を使用することとは異なります。 その理由は、(1) ttp:dropMode パラメーターの意味論が、 前者には適用されるものの後者には適用されないこと、および (2) [SMPTE ST 12-1]の 時間座標は、時間の 伸長、短縮、または反転を 受けたメディアにも、単調に適用できることです。

値 discontinuous が適用される場合、時間 表現を実時間の 座標に変換してはなりません。算術演算子(加算、乗算)は、 時間表現に対して定義されず、そのため、持続時間を表す あらゆる(整形式の)表現を、妥当でないものとみなさなければなりません。

注:

smpte 時間基準および discontinuous マーカーモードで動作する場合、実効的な時間座標 空間は存在しません。代わりに、すべての時間表現は、ラベル付きの 同期イベント(マーカー)として解釈されます。文書処理コンテキストは、 これらのイベントを生成します。そのイベントが、 同じラベルを表す時間表現に対応する場合、時間区間が、 それに応じて開始または終了します。

discontinuous モードで動作することによる、もう 1 つの副作用は、子の時間表現が、 その時間コンテナーの時間表現と必ずしも関係を持たないことです。 すなわち、時間コンテナーとそのコンテナーの子は、 ラベル付きの同期(マーカー)イベントの発生に基づき、 互いに独立して時間的に有効または無効になります。

注:

<time-expression>と ラベル付きの同期イベント(マーカー)の比較は、実装依存とみなされます。 特に、この仕様は、実装に対して、 時間表現やマーカーに特定の内部形式を 使用することや、特定の比較アルゴリズムを使用することを要求しません。ただし、実装は、 このような比較を実行する際に、 時間表現の意味論、およびマーカーのラベルに適用される 暗黙の意味論を、 尊重することが期待されます。

注:

このパラメーターで表すマーカーの不連続性という概念は、 フレームを数える方法から論理的に独立しています。その方法は、 ttp:dropMode パラメーターで表されます。特に、 ttp:dropMode パラメーターが、 dropNTSC または dropPAL と指定されていても、マーカーモードを continuous と指定してもかまいません。フレームの計数方法によって、 フレーム数が不連続になる場合も同様です。ただし、 マーカーのラベル付けに、ほかの非線形性や不連続性がある場合を除きます。たとえば、 連続する 2 つのフレームに 10:00:00:00 および 10:00:01:00 というラベルが付けられている場合です。

7.2.8 ttp:pixelAspectRatio

ttp:pixelAspectRatio 属性は、ピクセルアスペクト比を、ルートコンテナー領域について指定するために使用します。詳細は、H ルートコンテナー領域の意味論で説明します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:pixelAspectRatio
ttp:pixelAspectRatio
  : numerator <lwsp> denominator            // numerator != 0; denominator != 0

numerator | denominator
  : <non-negative-integer>

指定する場合、分子と分母はどちらもゼロ以外でなければなりません。指定されていない場合、 ピクセルアスペクト比は、 ルートコンテナー領域について、H ルートコンテナー領域の意味論によって決定されます。

ttp:pixelAspectRatio 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

ttp:pixelAspectRatio 属性は、指定すべきではありません。 ただし、tts:extent属性が、 2 つの<length>指定から構成され、px (ピクセル)単位を使用し、かつ、それも tt要素に指定される場合を除きます。 これがない状態での ttp:pixelAspectRatio 属性の使用は、 非推奨です。

7.2.9 ttp:subFrameRate

ttp:subFrameRate 属性は、関連メディア オブジェクトのサブフレームレート、または文書 インスタンスの内在的なサブフレームレートを指定するために使用します。後者は、 独立したメディアオブジェクトとして機能することを意図している場合に適用されます。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:subFrameRate
ttp:subFrameRate
  : <non-negative-integer>                                // value > 0

文書インスタンスに適用されるサブフレームレートは、 次の目的で 使用します。サブフレーム単位で表される時間表現の解釈であり、 その定義は、12.3.1 <time-expression>によります。

media 時間基準が適用され、実効フレームレートが 整数である場合、サブフレームは、メディア時間の 1 フレームを分割したものとして 解釈されます。サブフレームレートが S と指定されている場合、 メディア時間の 1 フレームは、S 個の等しい 長さの区間に分割され、各区間はサブフレーム s として識別されます。 ここで、s ∈ [0…S−1] です。

注:

I.2 メディア時間基準を参照してください。 詳細として、 media 時間基準の時間表現の解釈について説明しています。

指定されていない場合、サブフレームレートは、アプリケーション定義の サブフレームレートと等しいものとみなさなければなりません。そのような サブフレームレートが適用されない場合は、1 とみなさなければなりません。指定する場合、サブフレームレートは、 ゼロ (0) より大きくなければなりません。

ttp:subFrameRate 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

注:

サブフレームは、フィールドと呼ばれることもあります。 これは、インターレース方式の映像メディアオブジェクトとの同期というコンテキストでの呼び方です。

7.2.10 ttp:tickRate

ttp:tickRate 属性は、関連メディア オブジェクトのティックレート、または文書インスタンスのコンテンツの内在的なティックレートを指定するために使用します。後者は、 独立したメディアオブジェクトとして機能することを意図している場合に適用されます。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:tickRate
ttp:tickRate
  : <non-negative-integer>                                // value > 0

文書インスタンスに適用されるティックレートは、 次の目的で 使用します。ティック単位で表される時間表現の解釈であり、 t 単位を使用します。その定義は、12.3.1 <time-expression>によります。

media 時間基準が適用される場合、 ティックは、メディア時間の 1 秒を整数個に分割したものとして 解釈されます。ティックレートが T と指定されている場合、 メディア時間の 1 秒は、T 個の等しい 長さの区間に分割され、各区間はティック t として識別されます。 ここで、t ∈ [0…T−1] です。

注:

I.2 メディア時間基準を参照してください。 詳細として、 media 時間基準の時間表現の解釈について説明しています。

指定されていない場合で、フレームレートが指定されている場合、ティックレートは、 実効フレームレートにサブフレームレートを掛けた値と みなさなければなりません(すなわち、ティックはサブフレームとして解釈されます)。 フレームレートが指定されていない場合、ティックレートは、メディア時間の 1 秒当たり 1 ティックとみなさなければなりません。指定する場合、ティックレートを、 ゼロ (0) にしてはなりません。

注:

ティックとフレームまたは サブフレームとの間に、定義済みの関係はありません。ティックは、秒を任意に分割したものであり、 秒の小数表現(不正確になる可能性があります)の代わりに、 固定小数点演算を使用できるようにします。

ttp:tickRate 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

7.2.11 ttp:timeBase

ttp:timeBase 属性は、 文書時間座標空間を指定するために使用します。

この属性を指定する場合、その値は次の構文に従わなければなりません。

構文表現 – ttp:timeBase
ttp:timeBase
  : "media"
  | "smpte"
  | "clock"

時間基準が media と指定されている場合、時間 表現は、あるメディアオブジェクトの時間軸上の座標を示します。 そのメディアオブジェクトは、外部のメディアオブジェクトであって、 文書インスタンスのコンテンツを同期させる対象でもよく、 また、 文書インスタンスのコンテンツ自体でもかまいません。後者は、 次の場合に該当します。 タイムドテキストコンテンツが、独立した時間 軸を確立することを意図している場合です。

注:

メディア時間基準を使用する場合、その時間基準が一時停止されるか、 正または負の方向にスケーリングされる場合、すなわち、メディア再生速度が 1 でない場合、 関連するタイムドテキストコンテンツの提示も、 同様に、それぞれ一時停止、加速、または減速されることが期待されます。 外部の メディア時間基準を制御する手段は、この仕様の範囲外です。

時間基準が smpte と指定されている場合、 時間表現は、[SMPTE ST 12-1]の時間 座標を示します。文書インスタンスのコンテンツは、 この座標に 同期されます。この場合、ttp:markerMode および ttp:dropMode パラメーターの値が適用されます。その定義は、7.2.7 ttp:markerModeおよび7.2.4 ttp:dropModeに、それぞれ従います。

注:

時間基準が smpte と指定されている場合、 すべての時間表現は、メディアマーカー値を示します。これは、 [SMIL 3.0]の §5.4.3 で定義されるものに似ていますが、 不透明なマーカー名を使用する代わりに、構造化された[SMPTE ST 12-1]の 時間座標がマーカー名として機能します。

時間基準が clock と指定されている場合、時間 表現は、実世界の時間軸上の座標を示します。この時間軸は、 実時間クロックによって確立されるものであり、たとえば、現地の壁時計の時刻、 UTC(協定世界時)、または GPS(全地球測位システム)の 時間軸です。

指定されていない場合、既定の時間基準は、 media とみなさなければなりません。

ttp:timeBase 属性は、 tt 要素に指定されている場合にのみ、有意とみなされます。

media または smpte 時間基準で動作する場合、文書 インスタンスの通時的提示は、 制御する時間軸の変換を受けることがあります。たとえば、 時間の反転、伸長(拡大)、または短縮 (圧縮)です。ただし、clock 時間基準で動作する場合、変換は許されず、通時的 提示は、線形で単調増加する時間軸に沿って、 実時間の経過に基づいて進みます。

注:

適用される時間基準パラメーターは、個々の 文書インスタンスについて 1 つしかないため、時間 表現の解釈は、 文書インスタンス全体で一様です。

注:

I 時間表現の意味論を参照してください。 詳細として、 指定された時間基準に応じた時間表現の解釈について説明しています。

8 コンテンツ

この節では、中核語彙の一覧におけるコンテンツに関する 情報を規定します。

8.1 コンテンツ要素語彙

次の要素は、構造および主要なコンテンツの側面を、 文書インスタンスについて指定します。

注:

この節の小節は、論理的な順序(最上位の構造から最下位の構造への順序)で配置されています。

8.1.1 tt

tt 要素は、文書インスタンスのルート文書要素として機能します。

tt 要素は、その子として、0 個または 1 個の head 要素を受け入れ、 その後に、 0 個または 1 個の body 要素を受け入れます。

XML 表現 – 要素情報項目: tt
<tt
  tts:extent = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve") : default
  {TT パラメーター名前空間の任意の属性}
  内容: head?, body?
</tt>

ルート時間範囲、すなわち、 文書インスタンスが有効である時間区間には、 暗黙の持続時間があります。その値は、 文書の body 要素の暗黙の持続時間と等しくなります。これは、body 要素が存在する場合のことであり、body 要素が存在しない場合はゼロになります。

tts:extent属性が、 tt 要素に指定されている場合、10.2.16 tts:extentに従わなければなりません。 その場合、この属性は、 空間的な寸法を、ルートコンテナー領域について指定します。 その中に、コンテンツ領域が配置され、提示されます。 tts:extent 属性が指定されていない場合、空間的な寸法は、 対象となる ルートコンテナー領域について、規則によって決定されます。 その規則は、H ルートコンテナー領域の 意味論で規定されます。 ルートコンテナー領域の原点は、 文書処理コンテキストによって決定されます。

注:

ほかの要件がなく、関連 メディアオブジェクトが存在する場合は、 文書処理コンテキストが、 次のように決定することを推奨します。

注:

作成者が、(格納または画像の)アスペクト比を、ルートコンテナー領域について、 その解像度を指定せずに示したい場合、次の属性を使用して実現してもかまいません。 ttp:displayAspectRato パラメーター属性です。

xml:lang 属性は、tt 要素に指定しなければなりません。 属性値が空の場合、適用される既定の言語がないことを意味します。 その対象は、文書インスタンス内に含まれるテキストです。

xml:space 属性が tt 要素に指定されていない場合は、 次のように みなさなければなりません。その属性が値 default で指定されているものとします。

8.1.2 head

head 要素は、ヘッダー情報をまとめるために使用するコンテナー要素です。その情報には、 メタデータ、 プロファイル、埋め込みコンテンツリソース、スタイル指定、およびレイアウト情報が含まれます。

head 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、 その後に、0 個以上の Profile.class要素グループに属する要素、 その後に、0 個または 1 個のresources要素、 その後に、0 個または 1 個のstyling要素、 その後に、0 個または 1 個のlayout要素、 その後に、0 個または 1 個のanimation 要素を受け入れます。

子によって指定されるメタデータは、Metadata.class 要素グループに属するものについて、意味上、文書 インスタンスの 全体に適用され、head 要素だけに適用されるものではありません。

子によって指定されるパラメーターは、Parameters.class 要素グループに属するものについて、意味上、文書 インスタンスの 全体に適用され、head 要素だけに適用されるものではありません。

resources 子要素は、埋め込みコンテンツ構造を指定するために使用します。 その構造は、特定のスタイル構造および 埋め込みコンテンツ要素から参照されます。

styling 子要素は、スタイル構造を指定するために使用します。 その構造は、ほかのスタイル構造、レイアウト構造、および コンテンツ要素から参照されます。

layout 子要素は、レイアウト構造を指定するために使用します。 その構造は、コンテンツ要素から参照されます。

animation 子要素は、アニメーション構造を指定するために使用します。 その構造は、アニメーション可能なコンテンツ要素 またはレイアウト要素を対象とします。

XML 表現 – 要素情報項目: head
<head
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  内容: Metadata.class*, Profile.class*, resources?, styling?, layout?, animation?
</head>

時間の意味論が、次の要素の内容に適用される範囲では、 head 要素の暗黙の時間区間は、 ルート時間 範囲と開始点および終了点が一致するものと定義されます。

8.1.3 body

body 要素は、論理的なコンテナー、および時間的な 構造化要素として機能します。その対象は、テキストコンテンツ単位の列であり、 論理的な区分として表されるものです。

body 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、 その後に、0 個以上の Animation.class 要素グループに属する要素、 その後に、0 個以上の div 要素またはEmbedded.class要素グループに属する要素を受け入れます。

子によって指定されるメタデータは、Metadata.class 要素グループに属するものについて、意味上、body 要素およびその子孫の 全体に適用されます。

子として指定されるアニメーション要素は、Animation.class 要素グループに属するものについて、意味上、body 要素に適用されます。

XML 表現 – 要素情報項目: body
<body
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT メタデータ名前空間の任意の属性}
  {任意のスタイル指定属性}
  内容: Metadata.class*, Animation.class*, (div|Embedded.class)*
</body>

作成者は、body 要素の時間区間を、 begin、dur、および end 属性を使用して指定してもかまいません。この区間の開始点が、 未指定のままである場合、開始点は、次のうち遅い方として解釈されます。 すなわち、開始 点として、文書時間座標 空間のものと、 ルート時間範囲の開始点を比較します。 この区間の終了点が未指定のままである場合、 終了点は、ルート 時間範囲の終了点として解釈されます。

注:

文書インスタンスが SMIL 提示から参照される場合、 ほかの SMIL メディアオブジェクトに適用されるものと同じタイミング規則に 従うことが期待されます。

相対的な開始時刻または終了時刻が、body 要素に指定されている場合、これらの時刻は、開始点を参照して解決されます。 その参照先は、文書時間座標 空間です。

ルート時間範囲が、 算出された持続時間より短い場合、 body 要素について、その body 要素の有効時間区間は、 ルート時間 範囲の有効終了点で切り詰められます。

作成者は、スタイルプロパティの集合を、 body 要素に関連付けてもかまいません。そのためには、style 属性、インラインのスタイル属性、またはそれらの組み合わせを使用します。

注:

body 要素に関連付けられたスタイルプロパティは、 文書インスタンス内で、スタイルの 継承に使用できます。 その継承先は、子孫のコンテンツ要素です。

timeContainer 属性が、 body 要素に指定されていない場合、その要素は、 並列の 時間内包の意味論を持つものとして解釈しなければなりません。

8.1.4 div

div 要素は、論理的なコンテナー、および時間的な 構造化要素として機能します。その対象は、テキストコンテンツ単位の列であり、 論理的な小区分または段落として表されるものです。

注:

連続的な(ページに分割されない)視覚的提示媒体に描画される場合、 div 要素は、 1 つ以上のブロック エリアを 生成することが期待されます。そのエリアは、0 個以上の子ブロックエリアを含み、 それらは、div 要素の 子孫である p 要素によって生成されます。

ある ブロックエリアが、div 要素によって生成され、 子エリアを 1 つも含まない場合、そのエリアは提示されないことが期待されます。

div 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、 その後に、0 個以上の Animation.class 要素グループに属する要素、 その後に、0 個または 1 個の Layout.class要素 グループに属する要素、 その後に、0 個以上のBlock.classまたは Embedded.class要素グループに属する要素を受け入れます。

子によって指定されるメタデータは、Metadata.class 要素グループに属するものについて、意味上、div 要素およびその子孫の 全体に適用されます。

子として指定されるアニメーション要素は、Animation.class 要素グループに属するものについて、意味上、div 要素に適用されます。

XML 表現 – 要素情報項目: div
<div
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT メタデータ名前空間の任意の属性}
  {任意のスタイル指定属性}
  内容: Metadata.class*, Animation.class*, Layout.class?, (Block.class|Embedded.class)*
</div>

作成者は、スタイルプロパティの集合を div 要素に関連付けてもかまいません。 そのためには、 style 属性、インラインのスタイル属性、またはそれらの組み合わせを使用します。

注:

スタイルプロパティが、 div 要素に、文書インスタンス内で関連付けられている場合、 子孫のコンテンツ 要素によるスタイルの継承に使用できます。

timeContainer 属性が、 div 要素に指定されていない場合、その要素は、 並列の時間内包の意味論を持つものとして解釈しなければなりません。

8.1.5 p

p 要素は論理的な段落を表し、 ブロックレベルとインラインレベルの整形の意味論の間の移行点として機能します。

p 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、 その後に、0 個以上の Animation.class 要素グループに属する要素、 その後に、0 個または 1 個の Layout.class要素 グループに属する要素、 その後に、0 個以上のInline.classまたは Embedded.class要素グループに属する要素を受け入れます。

子によって指定されるメタデータは、Metadata.class 要素グループに属するものについて、意味上、p 要素およびその子孫の全体に適用されます。

子として指定されるアニメーション要素は、Animation.class 要素グループに属するものについて、意味上、p 要素に適用されます。

XML 表現 – 要素情報項目: p
<p
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT メタデータ名前空間の任意の属性}
  {任意のスタイル指定属性}
  内容: Metadata.class*, Animation.class*, Layout.class?, (Inline.class|Embedded.class)*
</p>

作成者は、スタイルプロパティの集合を、 p 要素に関連付けてもかまいません。そのためには、style 属性、インラインのスタイル属性、またはそれらの組み合わせを使用します。

注:

p 要素に関連付けられたスタイルプロパティは、 文書インスタンス内で、スタイルの 継承に使用できます。 その継承先は、子孫のコンテンツ要素です。

timeContainer 属性が、 p 要素に指定されていない場合、その要素は、 並列の時間内包の意味論を持つものとして解釈しなければなりません。

p 要素の子の列が、 文字情報項目だけで構成される場合、 その列は、 [匿名 span の構築]処理の対象となります。

注:

TTML の提示の意味論は、実質的に、 p 要素が改行を構成することを意味します。特に、 生成された最初の行エリアの前と、 生成された最後の行エリアの後の両方で、ブロックの積み重ねに関する制約が伴います。 11.3.1.4 同期フロー処理を参照してください。 詳細が記載されています。

8.1.6 span

span 要素は、論理的なコンテナー、および時間的な 構造化要素として機能します。その対象は、テキストコンテンツ単位の列であり、インライン レベルの整形の意味論を持つものです。

視覚媒体で提示される場合、span 要素は、 インラインエリアの列を生成することを意図しており、各エリアは、1 つ以上のグリフエリアを含みます。

span 要素は、その子として、0 個以上の Metadata.class要素 グループに属する要素を受け入れ、 その後に、0 個以上の Animation.class 要素グループに属する要素、 その後に、0 個以上のInline.classまたは Embedded.class要素グループに属する要素を受け入れます。

子によって指定されるメタデータは、Metadata.class 要素グループに属するものについて、意味上、span 要素およびその子孫の 全体に適用されます。

子として指定されるアニメーション要素は、Animation.class 要素グループに属するものについて、意味上、span 要素に適用されます。

XML 表現 – 要素情報項目: span
<span
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xlink:arcrole = <uri-list>
  xlink:href = <uri>
  xlink:role = <uri-list>
  xlink:show = ("new" | "replace" | "embed" | "other" | "none") : none
  xlink:title = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT メタデータ名前空間の任意の属性}
  {任意のスタイル指定属性}
  内容: Metadata.class*, Animation.class*, (Inline.class|Embedded.class)*
</span>

作成者は、スタイルプロパティの集合を、 span 要素に関連付けてもかまいません。そのためには、style 属性、インラインのスタイル属性、またはそれらの組み合わせを使用します。

注:

span 要素に関連付けられたスタイルプロパティは、 文書インスタンス内で、スタイルの 継承に使用できます。 その継承先は、子孫のコンテンツ要素です。

timeContainer 属性が、 span 要素に指定されていない場合、その要素は、 並列の時間内包の意味論を持つものとして解釈しなければなりません。

リンク属性 xlink:* を使用して、span 要素を、 関連するコンテンツにリンクしてもかまいません。その際には、 指定された場所(href)、役割、およびタイトルを使用します。リンクの起動動作は、 xlink:show 属性の影響を受けます。 その正確な意味は、文書処理コンテキストによって決定されます。

注:

xlink:show の既定値は、当初、 (TTML2 第1版において) new と指定されていました。しかし、さらに検討した結果、 none の方が実装の実情をよく反映すると考えられました。 特に、none の意味論は完全に実装依存であり、 new の意味論は、 none の意味論の実装として考えられるものの 1 つにすぎないためです。

span 要素が xlink:href 属性を指定する場合、子孫 要素は、 xlink:href 属性を指定してはなりません。指定した場合、後者は、 提示処理またはリンク起動処理において無視しなければなりません。

span 要素の子の列が、 文字情報項目だけで構成される場合、 その列は、 [匿名 span の構築]処理の対象となります。

8.1.7 br

br 要素は、明示的な改行を示します。

子によって指定されるメタデータは、Metadata.class 要素グループに属するものについて、意味上、br 要素およびその子孫の 全体に適用されます。

Animation.class の子の使用は非推奨です。

注:

br 要素に適用されるスタイル属性はないため、アニメーションは、 br に影響しません。

XML 表現 – 要素情報項目: br
<br
  condition = <condition>
  style = IDREFS
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT メタデータ名前空間の任意の属性}
  {任意のスタイル指定属性}
  内容: Metadata.class*, Animation.class*
</br>

視覚媒体で提示される場合、br 要素の存在は、 強制改行として解釈しなければなりません。

注:

br 要素の視覚的な提示は、 制御文字 CR (U+000D) に続く制御コード LF (U+000A) をテレタイプ装置で提示した場合と同じ効果を生むことを意図しています。 したがって、連続する 2 つの br 要素は、 単一の br 要素とは異なる効果を生みます。

8.2 コンテンツ属性語彙

この節では、多くの要素型、またはすべての要素型で使用する次の共通属性を、 中核語彙の一覧について定義します。

さらに、この節では、特定の要素型で使用する次のリンク語彙を、 中核語彙の一覧について定義します。

8.2.1 condition

condition 属性は、条件により除外するために使用します。その対象は要素 (およびその子孫)であり、意味処理から除外します。 この場合、その要素は、条件付き要素と呼びます。

注:

要素が condition 属性を使用していても、 その要素(およびその子孫)の構文解析や、 その要素(およびその子孫)の解析済み表現の挿入は妨げられません。挿入先は、 縮約された XML 情報集合であり、包含する 文書インスタンスに関連付けられたものです。

condition 属性は、次のものに使用してもかまいません。(1) 中核語彙の 一覧にある任意の要素。 ただし、プロファイルに関する要素、すなわちプロファイル モジュールの要素を除きます。また、 (2) 拡張モジュールで定義される任意の要素であって、 その要素型が、 condition 属性の指定を許しているものです。

condition 属性の値は、 <condition>式に従わなければなりません。 この式は、提示処理時(遅延評価)、 または提示処理より前(先行評価)に評価されます。先行評価を行ってもよいのは、 評価結果の値が、 提示処理中に変化し得ない場合、または変化しないことが分かっている場合に限られます。

注:

たとえば、条件式が、条件関数の値に依存する場合、 条件式の値は提示処理中に変化する可能性があります。その場合、 先行評価は使用できません。

提示処理において、要素が condition 属性を指定し、かつ、 その<condition>式の値が、 false と評価される場合、 その要素およびその子孫要素の意味論は、 明示的に例外とされているものを除き、無視しなければなりません。 すなわち、その要素およびその子孫要素は、 条件により除外されます。 これは、<condition> 式の評価にかかわらず適用されます。その式が、 それらの子孫要素に指定されている場合も同様です。

注:

たとえば、p要素が、 condition 属性を指定し、その評価結果が false である場合、その要素およびその 子孫の内容は、提示において無視されます。

注:

condition 属性の評価は、不要であり、意味もありません。 これは、要素が条件により除外される場合で、 その原因が、祖先要素のいずれかが条件により除外されていることである場合です。 すなわち、要素が条件により 含まれるようになることはありません。 その要素の condition 属性を評価しても、 祖先が条件により 除外されている場合には、このことが当てはまります。

注:

場合によっては、要素の意味論を、 condition 属性によって無視(除外)することは、 その要素の意味論全体ではなく、一部を無視することになります。これについては、 次の文章および個々の要素の定義を参照してください。

上位プロトコルが適用される場合を除き、次の 例外が適用されます。 これは、どの意味論を無視するかを決定するためのものであり、<condition>式の 値が false と評価される場合に適用されます。

注:

上記の例外は、次の要素の子孫にも適用されます。 条件により除外される要素です。

8.2.2 xlink:arcrole

xlink:arcrole 属性は、[XLink 1.1]の定義に従って使用します。

xlink:arcrole 属性は、任意のspan要素または image要素で使用してもかまいません。

8.2.3 xlink:href

xlink:href 属性は、[XLink 1.1]の定義に従って使用します。

xlink:href 属性は、任意のspan要素または image要素で使用してもかまいません。

xlink:href の意味論を実装する目的では、 xlink:type の意味論は、値 simple に関連付けられたものに固定され、 xlink:actuate の意味論は、値 onRequest に関連付けられたものに固定されます。その定義は、[XLink 1.1]によります。

注:

xlink:type 属性も xlink:actuate 属性も、 直接使用するためには定義されていません。 その使用先は、文書インスタンスです。

8.2.4 xlink:role

xlink:role 属性は、[XLink 1.1]の定義に従って使用します。

xlink:role 属性は、任意のspan要素または image要素で使用してもかまいません。

8.2.5 xlink:show

xlink:show 属性は、[XLink 1.1]の定義に従って使用します。

xlink:show 属性は、任意のspan要素または image要素で使用してもかまいません。

8.2.6 xlink:title

xlink:title 属性は、[XLink 1.1]の定義に従って使用します。

xlink:title 属性は、任意のspan要素または image要素で使用してもかまいません。

8.2.7 xml:base

xml:base 属性は、 [XML Base]の定義に従って使用します。

xml:base 属性は、中核語彙の一覧にある任意の要素で使用してもかまいません。 ただし、その要素が、(1) condition属性、 (2) 子孫 要素であって、Metadata.class要素 グループに属するもの、または、 (3) xml:base 属性を許す子孫要素のいずれかを許している場合に限ります。

8.2.8 xml:id

xml:id 属性は、 [XML ID]の定義に従って使用します。

xml:id 属性は、中核語彙の一覧にある任意の要素で使用してもかまいません。

8.2.9 xml:lang

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">ジャンはこんにちはと言った。</p>
<p xml:lang="fr">ジャンはこんにちはと言う。</p>
<p>
  <image src="#talking-image">
    <ttm:item name="altText" xml:lang="en">話しているところ</ttm:item>
    <ttm:item name="altText" xml:lang="fr">話しているところ</ttm:item>
  </image>
</p>
...
</tt>

注:

この例では、ルート tt 要素が空の言語タグで識別されています。 これは、言語が不明または未指定であることを意味し、 その識別は、(上書きされない限り)子孫要素に実質的に継承されます。次に、 最初の 2 つの p(段落)要素は、 en(英語)および fr(フランス語)の言語 識別子に、それぞれ関連付けられています。最後に、3 番目の p (段落)要素は前景画像で構成され、その画像には、2 つの代替 テキストによる説明が関連付けられています。これには、 名前付きメタデータ項目を使用し、 さらに、これらのテキストによる説明は、en(英語)および fr(フランス語)の言語識別子に関連付けられています。

8.2.10 xml:space

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"

正規化されていない水平タブ &#9; (HT) 文字が、 文字情報項目内に現れ、 それが縮約された XML 情報集合に属する場合、視覚的に 提示する際、そのタブ 文字は、単一の &#20; (SPACE) 文字として扱われます。

この仕様で説明するもの以外の手段によって、 最終的に視覚的な提示を生成することを意図した、 ほかの種類の処理を実行する場合も、上述した空白の折り畳みおよび 保持の意味論を尊重すべきです。それ以外の種類の 処理では、xml:space 属性の扱いは、 処理系依存ですが、可能であれば、上述の意味論を 尊重すべきです。

注:

上記で引用した 4 つの XSL-FO プロパティの意味論は、 [XSL-FO 1.1]の §7.17.3、7.16.7、7.16.12、および 7.16.8 で、それぞれ定義されています。

注:

TAB (U+0009) 文字には、提示の意味論が規定されていません。さらに、TAB (U+0009) 文字は、グリフエリアを生成することがあります。 このため、TAB (U+0009) 文字を、#PCDATA コンテンツ内で、 p 要素および span 要素の内部に 使用することは推奨しません。

8.3 コンテンツ値表現

中核語彙は、次の表現を使用してもかまいません。

8.3.1 <absolute-profile-designator>

<absolute-profile-designator> 値表現は、(1) 絶対指定子を定義するために使用します。 その指定子は、 ローカルに定義されたプロファイルに関連付けられます。または、(2) リモートに定義されたプロファイルを参照するために使用します。

構文表現 – <absolute-profile-designator>
<absolute-profile-designator>
  : <absolute-uri>

注:

このコンテキストでは、ローカルに定義されたとは、現在の文書内で定義されていることを意味し、 リモートに定義された とは、別の文書内で定義されていることを意味します。

8.3.2 <absolute-uri>

<absolute-uri> 値表現は、絶対 URI [URI]を指定するために使用します。

構文表現 – <absolute-uri>
<absolute-uri>
  : <uri>                                     // 絶対形式のみ

<absolute-uri> 値表現のコンテキストでは、<uri>式の値構文は、 URI の絶対形式に従わなければならず、その定義は、[URI]の §4.3 によります。

8.3.3 <arguments>

<arguments> 値は、部分式であり、function-expression 非終端記号とともに使用します。その非終端記号は、 <expression>値に属します。

構文表現 – <arguments>
<arguments>
  : "(" <lwsp>? ")"
  | "(" <lwsp>? argument-list <lwsp>? ")"

argument-list
  : <expression> (<lwsp>? "," <lwsp>? <expression>)*

8.3.4 <bound-parameter>

<bound-parameter> 値は、列挙された名前付きパラメーターの集合のうちの 1 つであり、 値への束縛は、 コンテンツ処理系によって行われます。

構文表現 – <bound-parameter>
<bound-parameter>
  : "forced"
  | "mediaAspectRatio"
  | "mediaLanguage"
  | "userLanguage"
forced

真偽値に評価されます。その値は、コンテンツ処理系が、 強制字幕を有効にして動作しているかどうかを示します。 文書インスタンスで使用する場合、usesForced 名前付きメタデータ項目を、次の要素の子として指定すべきです。 head要素です。

mediaAspectRatio

数値に評価されます。その値は、関連メディアオブジェクトのアスペクト比と等しくなります。

mediaLanguage

文字列値に評価されます。その値は、関連メディアオブジェクトの(主たる)言語と等しくなります。

userLanguage

文字列値に評価されます。その値は、ユーザーの(主たる)言語と等しくなります。 その言語は、 文書処理コンテキストによって決定されます。

8.3.5 <condition>

<condition> 値は、二値に評価される式を指定するために使用します。 その値は、意味論を適用するか無視するかの判定に使用します。対象は、 条件付き要素であり、 コンテンツ処理中に適用されます。

構文表現 – <condition>
<condition>
  : <expression>

function-expression が <condition> 値内に現れる場合、それは、 <condition-function>式の形式を取らなければなりません。

8.3.6 <condition-function>

<condition-function> 値は、部分式であり、<condition>値表現内で使用してもかまいません。

構文表現 – <condition-function>

8.3.7 <expression>

<expression> 値は、<condition>値の部分式です。

構文表現 – <expression>
<expression>
  : logical-or-expression

logical-or-expression
  : logical-and-expression
  | logical-or-expression <lwsp>? "||" <lwsp>? logical-and-expression

logical-and-expression
  : equality-expression
  | logical-and-expression <lwsp>? "&&" <lwsp>? equality-expression

equality-expression
  : relational-expression
  | equality-expression <lwsp>? "==" <lwsp>? relational-expression
  | equality-expression <lwsp>? "!=" <lwsp>? relational-expression

relational-expression
  : additive-expression
  | relational-expression <lwsp>? "<" <lwsp>? additive-expression
  | relational-expression <lwsp>? ">" <lwsp>? additive-expression
  | relational-expression <lwsp>? "<=" <lwsp>? additive-expression
  | relational-expression <lwsp>? ">=" <lwsp>? additive-expression

additive-expression
  : multiplicitive-expression
  | additive-expression <lwsp>? "+" <lwsp>? multiplicitive-expression
  | additive-expression <lwsp>? "-" <lwsp>? multiplicitive-expression

multiplicitive-expression
  : unary-expression
  | multiplicitive-expression <lwsp>? "*" <lwsp>? unary-expression
  | multiplicitive-expression <lwsp>? "/" <lwsp>? unary-expression
  | multiplicitive-expression <lwsp>? "%" <lwsp>? unary-expression

unary-expression
  : primary-or-function-expression
  | "+" <lwsp>? unary-expression
  | "-" <lwsp>? unary-expression
  | "!" <lwsp>? unary-expression

primary-or-function-expression
  : primary-expression
  | function-expression

primary-expression
  : identifier
  | literal
  | "(" <lwsp>? expression <lwsp>? ")"

function-expression
  : identifier <arguments>

identifier
  : xsd:NCName

literal
  : boolean-literal
  | numeric-literal
  | string-literal

boolean-literal
  : "true"
  | "false"

numeric-literal
  : decimal-literal

decimal-literal
  : decimal-integer-literal "." decimal-digits? exponent-part?
  | decimal-integer-literal exponent-part?
  | "." decimal-digits exponent-part?

decimal-integer-literal
  : "0"
  | non-zero-digit decimal-digits?

decimal-digits
  : decimal-digit
  | decimal-digits decimal-digit

decimal-digit
  : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

non-zero-digit
  : "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

exponent-part
  : exponent-indicator signed-integer

exponent-indicator
  : "e" | "E"

signed-integer
  : decimal-digits
  | "+" decimal-digits
  | "-" decimal-digits

string-literal
  : <quoted-string>

注:

誤解を避けるため、線形空白(LWSP)が許されないことに注意してください。その位置は、 identifier トークンと、直後の式の先頭にある開き 丸括弧 '(' 文字の間です。その式は、<arguments>式であり、 function-expression に属します。

8.3.8 <fragment-profile-designator>

<fragment-profile-designator> 値表現は、ローカルな、すなわち、 内部で定義された(インラインの)プロファイルを、参照によって指定するために使用します。

構文表現 – <fragment-profile-designator>
<fragment-profile-designator>
  : <fragment-uri>

8.3.9 <fragment-uri>

<fragment-uri> 値表現は、フラグメント URI [URI]を指定するために使用します。

構文表現 – <fragment-uri>
<fragment-uri>
  : <uri>                                     // フラグメント構成要素のみ

<fragment-uri> 値表現のコンテキストでは、<uri>式の値構文は、 URI のフラグメント構成要素に従わなければならず、その定義は、[URI]の §3 および §3.5 によります。 すなわち、スキーム、オーソリティ、パス、およびクエリーの構成要素は空 (未指定)であり、フラグメント構成要素だけが空でない (指定されている)状態です。

8.3.10 <media-function>

<media-function> 値は、部分式であり、<condition>値表現内で使用してもかまいません。 その目的は、関連メディア オブジェクト、または 文書処理コンテキストに対して、メディアクエリーを実行することです。

構文表現 – <media-function>
<media-function>
  : "media(" <lwsp>? media-query <lwsp>? ")"

media-query
  : <quoted-string>

<media-function> 値表現の media-query 引数は、 media_query_list の構文に従わなければならず、その定義は、[Media Queries]の §3 によります。

<media-function> 値表現は、true に評価されます。その条件は、指定されたメディア クエリーが、 true に評価されることです。それ以外の場合、この値表現は false に評価されます。

<media-function> 式の意味論がサポートされていない場合、その式は、 必ず、 false に評価されなければなりません。

8.3.11 <profile-designator>

<profile-designator> 値表現は、プロファイルを指定するために使用します。その目的は、 プロファイルを定義すること、 または、定義済みのプロファイルを参照することです。

構文表現 – <profile-designator>

<profile-designator> が、<fragment-profile-designator>の形式を取る場合、 最上位プロファイルを参照しなければなりません。すなわち、 参照してはならないのは、 入れ子のプロファイルです。

8.3.12 <parameter-function>

<parameter-function> 値は、部分式であり、<condition>値表現内で使用してもかまいません。 その目的は、名前付きパラメーターを、文書処理コンテキストから取得することです。

構文表現 – <parameter-function>
<parameter-function>
  : "parameter(" <lwsp>? parameter-name <lwsp>? ")"

parameter-name
  : <quoted-string>

引用符を除いた場合、<parameter-function> 値表現の parameter-name 引数は、 次の型に従わなければなりません。 xsd:NCName であり、さらに、 列挙された値のいずれかでなければなりません。 その列挙は、<bound-parameter>によります。

<parameter-function> 値表現は、関連付けられた(束縛された)値に評価されます。 その関連付け先は、 指定されたパラメーター名です。

8.3.13 <quoted-string>

<quoted-string> 値表現は、二重引用符または一重引用符で囲まれた文字列を指定するために使用します。

構文表現 – <quoted-string>
<quoted-string>
  : double-quoted-string
  | single-quoted-string

double-quoted-string
  : '"' ([^"\\] | escape)* '"'

single-quoted-string
  : "'" ([^'\\] | escape)* "'"

escape
  : '\\' char

注:

誤解を避けるため、引用符付き文字列の式では、線形空白(LWSP)が許されることに 注意してください。ただし、それは、 [XML 1.0]の §3.3.3、属性値の 正規化の対象となります。 これは、縮約された XML 情報集合を、 タイムドテキスト文書インスタンスから構築する場合に適用されます。

8.3.14 <relative-profile-designator>

<relative-profile-designator> 値表現は、標準化されたプロファイルを参照するために使用します。 その基準は、 TT プロファイル名前空間であり、これは基底 URI として機能します。相対プロファイル指定子は、 その URI を使用して絶対化されます。

構文表現 – <relative-profile-designator>
<relative-profile-designator>
  : <relative-uri>

注:

<relative-profile-designator> を絶対化する場合、 xml:base 処理は適用されません(TT プロファイル名前空間が、 常に基底 URI として機能するためです)。

注:

たとえば、<relative-profile-designator> が、 ttml2-presentation と表される場合、絶対化されたプロファイル指定子は、 次のようになります。 http://www.w3.org/ns/ttml/profile/ttml2-presentation。

8.3.15 <relative-uri>

<relative-uri> 値表現は、相対 URI [URI]を指定するために使用します。

構文表現 – <relative-uri>
<relative-uri>
  : <uri>                                     // スキーム構成要素なし

<relative-uri> 値表現のコンテキストでは、<uri>式の値構文は、 URI の相対形式に従わなければならず、その定義は、[URI]の §3 によります。 すなわち、スキームおよびオーソリティの構成要素は空(未 指定)ですが、パス、および任意でクエリーとフラグメントの構成要素が指定されます。

8.3.16 <supports-function>

<supports-function> 値は、部分式であり、<condition>値表現内で使用してもかまいません。 その目的は、真偽値を取得することです。その値は、指定された機能または拡張 がサポートされているかどうかを示します。

構文表現 – <supports-function>
<supports-function>
  : "supports(" <lwsp>? feature-or-extension-designator <lwsp>? ")"

feature-or-extension-designator
  : <quoted-string>

<supports-function> 値表現の feature-or-extension-designator 引数は、 次のものを表さなければなりません。 機能の指定または拡張の指定であり、その定義は、 E.1 機能の指定およびF.1 拡張の指定に、それぞれ従います。 また、 feature-namespace または extension-namespace 構成要素は、その指定において任意です。 指定されていない場合は、TT 機能名前空間またはTT 拡張名前空間と、 それぞれ等しいものとみなされます。

<supports-function> 値表現は、true に評価されます。その条件は、 指定された機能または拡張の 指定子が、(意味上)コンテンツ 処理系によってサポートされることです。

8.3.17 <uri>

<uri> 値表現は、URI [URI]を指定するために使用します。

構文表現 – <uri>
<uri>
  : xsd:anyURI

xsd:anyURI データ型の値構文は、規定された定義に従わなければならず、 その定義は、[XML Schema Part 2]の §3.2.17 によります。

注:

誤解を避けるため、URI から除外するように指定された文字について説明します。その指定は、[URI]の §2、 文字によります。より具体的には、 XML 空白文字 &#9; (HT)、&#10; (LF)、&#13; (CR)、および &#20; (SPACE) であり、 [XML 1.0]の §3.3.3、ステップ (3) の最初の箇条書き項目で規定されています。 これらの文字は、エスケープされていない形では、 <uri> 値の字句表現に現れません。

8.3.18 <uri-list>

<uri-list> 値表現は、空でない URI [URI]式のリストを指定するために使用します。

構文表現 – <uri-list>
<uri-list>
  : <uri> (<lwsp> <uri>)*

9 埋め込みコンテンツ

この節では、中核語彙一覧の埋め込みコンテンツに関する事項を 規定します。ここで、 コンテンツは任意のコンテンツ型(形式)のデータを意味し、 埋め込みは、このデータの埋め込み(インライン化)、または 外部データへの参照の埋め込みを意味します。

9.1 埋め込みコンテンツ要素語彙

埋め込みコンテンツの指定には、次の要素を使用できます:

9.1.3 data 要素は、 汎用のコンテナー要素として埋め込みデータ リソースを格納します。このリソースは、チャンクに分割しても、しなくてもかまいません。 分割する場合、データの断片は 9.1.2 chunk 要素で表します。 9.1.1 audio、 9.1.4 font、および 9.1.5 image 要素は、 特定の種類の埋め込みコンテンツを 参照するために使用する専用の要素です。 9.1.6 resources 要素は、 後続の要素から参照できるように、埋め込みコンテンツの定義をグループ化するために使用します。 9.1.7 source 要素は、 埋め込みコンテンツのソースを表すために使用できます。

9.1.1 audio

audio 要素は、音声リソースを定義または参照するために使用します。

audio 要素は、次の 2 つのコンテキストに出現できます:(1) resources 要素の子として、 (2) body 要素の子、 Block.class 要素グループ内の要素の子、すなわち、 次に示す div または p 要素の子として、あるいは span 要素の子として。前者を 次のように呼びます: 音声定義コンテキスト。後者は 音声提示コンテキストと呼びます。

audio 要素が音声 定義コンテキストに出現する場合、 共有可能な音声リソースの定義として機能し、 他の audio 要素から参照できます。その参照元は、 これを包含する文書インスタンス内にあります。

注:

共有可能な音声リソースの定義では、 xml:id 属性を指定して、 参照できるようにします。 参照元は、audio 要素であり、音声 提示コンテキスト内にあります。

audio 要素が 音声提示コンテキストに出現する場合、 共有できない音声リソースの定義として機能し、 提示(レンダリング)の意味論を伴います。つまり、再生することを意図しています。

注:

共有できない音声リソースの定義では、 xml:id 属性を指定しても、しなくてもかまいませんが、 この 識別子は他の audio 要素から参照されません。参照された場合も、 その参照は無視されます。

audio 要素は、その子として、 0 個以上の要素を Metadata.class 要素グループから受け入れ、 その後に、 0 個以上の要素を Animation.class 要素グループから、 さらにその後に、0 個以上の source 要素を受け入れます。

注:

テキストノードである audio 要素の子孫は、有意なテキストノードとは見なされません。 これは、次の手順を実行する際に適用されます: [匿名 span の構築] 手順。

XML 表現 – 要素情報項目: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")
  {任意のスタイル指定属性}
  {TT メタデータ名前空間内の任意の属性}
  内容: Metadata.class*, Animation.class*, source*
</audio>

audio 要素は、音声リソースを 次のいずれかを使用して指定します: 参照によるデータ埋め込み、または ソースによるデータ埋め込み。これには、 (1) 組み込みデータリソースの参照、 (2) 外部データリソースの参照、または (3) 埋め込みデータ リソースの定義または参照が伴い、 そのデータリソースには音声コンテンツが含まれます。

audio 要素が src 属性を指定する場合、 次に示す 子 source 要素を指定してはなりません。逆に、 audio 要素が src 属性を指定しない場合、 1 個以上の 子 source 要素を指定しなければなりません。

audio 要素が src 属性を指定し、その値が 参照しているものが 内部データリソースでない場合、 type 属性を指定すべきです。その場合、 次に示す type 属性の値は、 参照先リソースの メディア(コンテンツ)型と一致しなければなりません。それ以外の場合、type 属性を 指定してはなりません。

clipBegin 属性を指定する場合、その値は、 offset-time 形式、すなわち 12.3.1 <time-expression> の当該形式に従わなければなりません。 この場合、この式の値は、参照先の音声コンテンツの 先頭を基準とする通常再生時間のオフセットを表し、音声提示を 開始する位置を指定します。 この指定値が、参照先の音声コンテンツの内在的な持続時間を 超える場合、clipBegin の解決値は、 その内在的な持続時間と見なされます。 clipBegin 属性が指定されていない場合、値 0 が適用されます。

同様に、clipEnd 属性を指定する場合、その値は、 offset-time 形式、すなわち 12.3.1 <time-expression> の当該形式に従わなければなりません。 この場合、この式の値は、参照先の音声コンテンツの 先頭を基準とする通常再生時間のオフセットを表し、提示を停止する位置を指定します。 この指定値が、参照先の音声コンテンツの内在的な持続時間を 超える場合、clipEnd の解決値は、 その内在的な持続時間と見なされます。 clipEnd 属性が指定されていない場合、音声コンテンツの内在的な持続時間に 等しい値が適用されます。

audio 要素の使用法を次の例に示します。

例の断片 – 外部音声リソース
...
<audio src="http://example.com/audio/description.mp3" type="audio/mp3"/>
...

9.1.2 chunk

chunk 要素は、データの個別のチャンク(断片)を表すために使用します。

chunk 要素は、data 要素の子として出現できます。

XML 表現 – 要素情報項目:chunk
<chunk
  encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : base64
  length = <non-negative-integer>
  xml:id = ID
  内容: #PCDATA
</chunk>

encoding 属性を 指定する場合、その値は、次の要素が表すバイト列の実際の符号化を示さなければなりません: chunk 要素。encoding 属性が 指定されていない場合、符号化は base64 と見なさなければなりません。

線形空白(<lwsp>) 文字がこの要素の #PCDATA コンテンツに含まれている場合、 復号処理の実行時にすべて無視しなければなりません。

length 属性を指定する場合、その値は、次に示す要素が表す バイト列に含まれる復号後のバイト数を 示さなければなりません:chunk 要素。復号時に、指定された長さの値が 復号後のバイト数と一致しない場合、チャンクとそのコンテナーである data 要素は、長さがゼロのバイト列を返さなければなりません。 length 属性が指定されていない場合、チャンクの長さは、 実際の復号後のバイト数に等しいと見なされます。

チャンク化データの使用法を次の例に示します。

例の断片 – チャンク化データ
...
<data type="text/plain; charset=us-ascii" length="44">
  <chunk length="19">
    VGhlIHF1aWNrIGJyb3duIGZveA==
  </chunk>
  <chunk length="25">
    IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLg==
  </chunk>
</data>
...

9.1.3 data

data 要素は、任意のデータを格納する汎用コンテナー、 またはそのデータへの参照として機能します。

data 要素は、次の 3 つのコンテキストに出現できます: (1) resources 要素の子として。 これはデータ定義コンテキストと呼びます。 (2) metadata 要素の子として。 これはメタデータ用のデータバインディング コンテキストと呼びます。あるいは、 (3) source 要素の子として。 これはソース用のデータバインディング コンテキストと呼びます。 後者の 2 つのコンテキストは、総称して データバインディングコンテキストと呼びます。

data 要素がデータ 定義コンテキストに出現する場合、 共有可能なデータリソースの定義として機能し、src 属性から参照できます。その属性を持つのは、 (1) 別の data 要素、 (2) 埋め込みコンテンツ要素、または (3) source 要素です。 この場合、コンテキストに応じた data 要素の有効時間区間は、 次の 2 つの有効時間区間の 共通部分です:親である resources 要素の有効時間区間と、 参照元要素の有効時間区間。

注:

共有可能なデータリソースの定義では、xml:id 属性を指定して、 フラグメント識別子から 参照できるようにします。この識別子は、データバインディング コンテキストで使用されます。

data 要素がデータバインディング コンテキストに出現する場合、 共有できないデータリソースの定義として機能し、バインディングの意味論を伴います。つまり、 参照が行われる直接のコンテキストにバインドする(関連付ける) ことを意図しています。この場合、data 要素の有効時間区間は、 最も近い祖先の時間指定 要素の有効時間区間と同じです。

注:

共有できないデータリソースの定義では、xml:id 属性を指定しても、しなくてもかまいませんが、 この識別子は他のデータバインディング コンテキストから参照されません。参照された場合も、バインディングの意味論はありません。

data 要素は、次の 4 つの内容モデルのいずれかを受け入れます: (1) 1 個以上のテキストノード(すなわち、#PCDATA)、 (2) 0 個以上の Metadata.class 要素グループ内の要素。ただし、 src 属性が指定されている場合に限ります; (3) 0 個以上の Metadata.class 要素グループ内の要素に続く、 1 個以上の chunk 要素、または (4) 0 個以上の Metadata.class 要素グループ内の要素に続く、 1 個以上の source 要素。 1 番目を単純データ埋め込み、 2 番目を参照によるデータ埋め込み、 3 番目をチャンク化データ埋め込み、 4 番目をソースによるデータ埋め込みと呼びます。

単純データ埋め込みを使用する場合、データリソースは、 #PCDATA コンテンツを復号して取得します。 参照によるデータ埋め込みを使用する場合、データ リソースは、参照先のデータリソースを参照解決することによって取得します。 この参照は src 属性で指定します。 チャンク化データ埋め込みを使用する場合、データ リソースは、各子要素の復号で得られたバイト列を連結して取得します。 対象となるのは、子 chunk 要素です。 ソースによるデータ埋め込みを使用する場合、データ リソースは、解決可能な最初の 子 source 要素から取得します。 この要素の解決先は、 データリソースです。どの要素も解決できない場合は、空のデータリソースとなります。 さらに、子 source 要素には、 data 要素を含めてはなりませんが、 次に示す要素を参照してもかまいません: data 要素であって、データ定義コンテキスト内にあるもの。

XML 表現 – 要素情報項目:data
<data
  condition = <condition>
  encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : 以下の本文を参照
  format = <data-format>
  length = <non-negative-integer>
  src = <data>
  type = xsd:string : 以下の本文を参照
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  内容: #PCDATA | (Metadata.class*, (chunk+ | source+)? )
</data>

単純データ埋め込みを使用する場合、 encoding 属性を 指定してもかまいません。指定されていない場合は、base64 と見なさなければなりません。 参照によるデータ埋め込み、チャンク化データ埋め込み、または ソースによるデータ埋め込みを使用する場合、 encoding 属性を 指定してはなりません。指定されている場合は、 コンテンツ処理において無視しなければなりません。

さらに、単純データ埋め込みを使用する場合、線形空白(<lwsp>) 文字がこの要素の #PCDATA コンテンツに含まれているならば、 復号処理の実行時にすべて無視しなければなりません。

length 属性を指定する場合、その値は、次に示す要素が表す バイト列に含まれる復号後のバイト数を 示さなければなりません:data 要素。復号時に、指定された長さの値が 復号後のバイト数と一致しない場合、長さがゼロのバイト列を返さなければなりません。 length 属性が指定されていない場合、データリソースの長さは、 実際の復号後のバイト数に等しいと見なされます。 length 属性は、参照によるデータ埋め込みまたは ソースによるデータ埋め込みを使用する場合、指定してはなりません。

注:

length 属性の目的は、復号したデータに対して簡単な 完全性検査を行う手段を提供することです。この検査は、 転送中のデータの完全性を保証するものではありません。つまり、長さを変更せずに データを変更することが可能です。

参照によるデータ埋め込みを使用する場合、 src 属性を指定しなければなりません。それ以外の場合(他のすべての種類のデータ埋め込み)、 次に示す src 属性を指定してはなりません。

単純データ埋め込みまたは チャンク化データ埋め込みを使用する場合、type 属性を指定しなければならず、 その値はデータリソースのメディア(コンテンツ)型と一致しなければなりません。これらの場合に、 定義済みの型がなければ、型 application/octet-stream を使用すべきです。 参照によるデータ埋め込みを使用する場合、その参照先が 次に示す 外部データリソースであるならば、 type 属性を 指定すべきです。 指定する場合、その値は参照先データリソースのメディア(コンテンツ)型と一致しなければなりません。 それ以外の場合(内部データリソースを参照している場合)、 type 属性を 指定してはなりません。 この場合、参照先の data 要素のメディア(コンテンツ)型を、その型として使用します。 ソースによるデータ埋め込みを使用する場合、 type 属性を 指定してはなりません。 この場合、解決された source 要素のメディア(コンテンツ)型を、その型として使用します。

type 属性が指定されていない、 解決されていない、または汎用の型として指定されている場合、 例えば application/octet-stream として指定されている場合で、参照先のデータリソースについて、 追加の形式情報が既知であり、 メディア型 [MIME Media Types] のパラメーターでは表現できないときは、 format 属性を、 コンテンツ処理系へのヒントとして指定してもかまいません。

単純データ埋め込みの使用法を、 次の例に示します。

例の断片 – データ定義コンテキストにおける単純データ埋め込み
<head>
  <resources>
    <data xml:id="sharedImageData" type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
    <image xml:id="sharedImage">
      <source src="#sharedImageData"/>
    </image>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage"/>
  <div tts:backgroundImage="#sharedImage"/>
</body>

例の断片 – メタデータ用のデータバインディングコンテキストにおける単純データ埋め込み
<div>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:desc>トンネル化データを含むメタデータを持つ字幕</ttm:desc>
    <data encoding="base64" type="application/octet-stream">
      TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
      IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
      dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
      dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
      ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
    </data>
  </metadata>
  <p>トンネル化データを持つ字幕</p>
</div>

例の断片 – ソース用のデータバインディングコンテキストにおける単純データ埋め込み
<div>
  <image>
    <source>
      <data type="image/png" length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </data>
    </source>
  </image>
</div>

参照によるデータ埋め込みの使用法を、 次の例に示します。

例の断片 – データ定義コンテキストにおける参照によるデータ埋め込み
<head>
  <resources>
    <data xml:id="sharedImageData" src="test.png" type="image/png"/>
    <image xml:id="sharedImage1" src="#sharedImageData"/>
    <image xml:id="sharedImage2" src="#sharedImageData"/>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage1"/>
  <div tts:backgroundImage="#sharedImage2"/>
</body>

チャンク化データ埋め込みの使用法を、 次の例に示します。

例の断片 – データ定義コンテキストにおけるチャンク化データ埋め込み
<head>
  <resources>
    <data xml:id="sharedImageData" type="image/png" length="119">
      <chunk length="60">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      </chunk>
      <chunk length="59">
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </chunk>
    </data>
    <image xml:id="sharedImage1" src="#sharedImageData"/>
    <image xml:id="sharedImage2" src="#sharedImageData"/>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage1"/>
  <div tts:backgroundImage="#sharedImage2"/>
</body>

ソースによるデータ埋め込みの使用法を、 次の例に示します。

例の断片 – データ定義コンテキストにおけるソースによるデータ埋め込み
<head>
  <resources>
    <data xml:id="sharedImageData">
      <source src="test.svg" type="image/svg+xml"/>
      <source src="test.png" type="image/png"/>
    </data>
    <image xml:id="sharedImage1" src="#sharedImageData"/>
    <image xml:id="sharedImage2" src="#sharedImageData"/>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage1"/>
  <div tts:backgroundImage="#sharedImage2"/>
</body>

9.1.4 font

font 要素は、フォント リソースを定義または参照するために使用します。

font 要素は、resources 要素の子として出現できます。 これは、 フォント定義コンテキストと呼びます。

font 要素は、その子として、 0 個以上の要素を Metadata.class 要素グループから受け入れ、 その後に、0 個以上の source 要素を受け入れます。

XML 表現 – 要素情報項目:font
<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")
  内容: Metadata.class*, source*
</font>

font 要素は、フォントリソースを、 次のいずれかを使用して定義します: 参照によるデータ埋め込み、または ソースによるデータ埋め込み。これには、 (1) 組み込みデータリソースの参照、 (2) 外部データリソースの参照、または (3) 埋め込みデータ リソースの定義または参照が伴い、 そのデータリソースにはフォントコンテンツが含まれます。

font 要素が src 属性を指定する場合、 次に示す 子 source 要素を指定してはなりません。逆に、 font 要素が src 属性を指定しない場合、 1 個以上の 子 source 要素を指定しなければなりません。

font 要素が src 属性を指定し、その値が 参照しているものが 内部データリソースでない場合、 type 属性を指定すべきです。その場合、 次に示す type 属性の値は、 参照先リソースの メディア(コンテンツ)型と一致しなければなりません。それ以外の場合、type 属性を 指定してはなりません。

family、range、style、または weight 属性のいずれかを指定する場合、 それらは、実際の フォントリソースのファミリー名、対応する文字範囲、スタイル、および太さを上書きします。特に、 指定された属性値が、これらのフォント特性の値、すなわち フォントリソース内に符号化された値と異なる場合、 指定された属性値を使用するものとし、 フォントリソース内に符号化されたフォント特性は使用しません。

family、range、style、または weight 属性のいずれかが指定されていない場合、その値は、 同名のフォント特性の値と等しいものと見なさなければなりません。この値は、 フォントリソース内に符号化されています。

family 属性の算出値が(明示的に指定されているかどうかにかかわらず)、 次に示す <generic-family-name> と(大文字と小文字を区別する 比較によって)一致する場合、 それはエラーと見なされ、 提示処理において、参照先のフォントリソースを無視しなければなりません。

注:

前の段落の規定により、コンテンツ作成者は、汎用フォントファミリーに対応する 組み込みフォントリソースを上書きすることはできません。

注:

作成者には、可能な限りサブセットフォントを使用することを推奨します。サブセットフォントは、 構文的に妥当なフォントリソースであり、 参照されていないグリフと、参照されていないグリフメトリクスを取り除いたものです。一般に、サブセットフォントは 特定の文書に結び付いています。その文書の実際の文字コンテンツに基づいて 生成されている可能性があるためです。

フォントリソースを参照解決(ダウンロード)する際、コンテンツ処理系は、 必要な処理を実行するためにフォントリソースのコンテンツが 必要となる時点まで、ダウンロード処理を 遅らせてもかまいません。ここでいう処理は、変換処理または提示処理です。

font 要素の使用法を次の例に示します。

例の断片 – フォント
...
<head>
  <resources>
    <data xml:id="lastResortFont" type="application/font-woff">
      ... base64 で符号化されたデータ ...
    </data>
    <font family="MyFont" range="u+20-7f,u+90-9f">
      <source src="http://example.com/fonts/myfont.otf" type="font/otf"/>
      <source src="#lastResortFont"/>
    </font>
  </resources>
</head>
...
<p tts:fontFamily="MyFont">自分のフォント、または最終手段のフォントを使用する</p>
...

9.1.5 image

image 要素は、画像リソースを定義または参照するために使用します。

image 要素は、次の 2 つのコンテキストに出現できます:(1) resources 要素の子として、 (2) (i) body 要素の子として、 (ii) Block.class 要素グループ内の要素の子として、 すなわち、 div または p 要素の子として、あるいは (iii) span 要素の子として。前者を 次のように呼びます: 画像定義コンテキスト。後者は 画像提示コンテキストと呼びます。

image 要素が画像 定義コンテキストに出現する場合、 共有可能な画像リソースの定義として機能し、 別の image 要素、または tts:backgroundImage スタイル 属性から参照できます。 これらの参照元は、これを包含する文書インスタンス内にあります。

注:

共有可能な画像リソースの定義では、 xml:id 属性を指定して、 参照できるようにします。 参照元は、image 要素、または tts:backgroundImage スタイル 属性であり、 画像提示コンテキスト内にあります。

image 要素が 画像提示コンテキストに出現する場合、 共有できない画像リソースの定義として機能し、 提示(レンダリング)の意味論を伴います。

注:

共有できない画像リソースの定義では、 xml:id 属性を指定しても、しなくてもかまいませんが、 この 識別子は他の image 要素から参照されません。参照された場合も、 その参照は無視されます。

image 要素が body 要素または div 要素の子として出現する場合、その提示によって、 画像をレンダリングするブロックエリアが生成されます。つまり、 image 要素の前後にブロック境界が暗黙に存在します。一方、 image 要素が p または span 要素の子として出現する場合、その提示によって、画像をレンダリングするインラインエリアが生成されます。つまり、 image 要素の前後にブロック境界が暗黙に存在することはありません。

注:

[CSS2] では、これらの意味論は、image 要素に display スタイルプロパティを関連付け、 その値をそれぞれ block または inline とすることに相当します。

画像リソースが tts:backgroundImage スタイル属性から参照されている場合、 その提示はコンテンツのレイアウトに影響してはなりません。

image 要素は、その子として、 0 個以上の要素を Metadata.class 要素グループから受け入れ、 その後に、 0 個以上の要素を Animation.class 要素グループから、 さらにその後に、 0 個以上の source 要素を受け入れます。

注:

テキストノードである image 要素の子孫は、有意なテキストノードとは見なされません。 これは、次の手順を実行する際に適用されます: [匿名 span の構築] 手順。

XML 表現 – 要素情報項目: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") : none
  xlink:title = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {任意のスタイル指定属性}
  {TT メタデータ名前空間内の任意の属性}
  内容: Metadata.class*, Animation.class*, source*
</image>

image 要素は、画像リソースを 次のいずれかを使用して定義します: 参照によるデータ埋め込み、または ソースによるデータ埋め込み。これには、 (1) 組み込みデータリソースの参照、 (2) 外部データリソースの参照、または (3) 埋め込みデータ リソースの定義または参照が伴い、 そのデータリソースには画像コンテンツが含まれます。

image 要素が src 属性を指定する場合、 次に示す 子 source 要素を指定してはなりません。逆に、 image 要素が src 属性を指定しない場合、 1 個以上の 子 source 要素を指定しなければなりません。

image 要素が src 属性を指定し、その値が 参照しているものが 内部データリソースでない場合、 type 属性を指定すべきです。その場合、 次に示す type 属性の値は、 参照先リソースの メディア(コンテンツ)型と一致しなければなりません。それ以外の場合、type 属性を 指定してはなりません。

image 要素では、tts:extent スタイル属性を指定して、画像の提示時の幅または高さを指定できます。 これは、内在的な幅または高さの情報を利用できない場合、またはそれを上書きする場合に使用します。 この属性が、次の両方で指定されている場合、 すなわち、image 要素であって画像提示 コンテキスト内にあるものと、 その参照先の image 要素であって画像定義 コンテキスト内にあるものの両方で指定されている場合、 前者で指定された属性が、後者で指定された属性よりも優先されます。 画像の提示時に、 tts:extent スタイル属性が適用される場合は、 指定された寸法の幅と高さを得るために、 (縦横の倍率が異なる可能性のある)拡大縮小処理を行います。

リンク属性 xlink:* を使用して、image 要素を 関連コンテンツにリンクできます。このとき、 指定された位置(href)、役割、およびタイトルを使用します。リンクの起動時の動作は、 xlink:show 属性の影響を受け、 その正確な意味は 文書処理コンテキストによって決まります。

注:

xlink:show の既定値は、当初 (TTML2 第1版において) new と規定されていました。しかし、さらに検討した結果、 none の方が実装の実態をよく反映していると考えられました。 特に、none の意味論は完全に実装依存であり、 new の意味論は、 none の意味論の実装として考えられるものの 1 つにすぎないためです。

image が画像定義 コンテキストに出現する場合、次の追加の 制約が適用されます:

  1. 次の属性、 animate、 begin、 dur、 end、 region、および timeContainer を指定してはなりません。出現する場合は、 提示処理において無視しなければなりません;

  2. Animation.class 要素グループ内の要素は、 子要素として 出現してはなりません。出現する場合は、 提示処理において無視しなければなりません。

image 要素の使用法を次の例に示します。

例の断片 – 外部画像リソース
<div>
  <p>この区分には、この段落の後にブロックエリアとして表示されるコンテンツ画像があります。</p>
  <image src="http://example.com/images/caption.png" type="image/png"/>
<div>
...
<div tts:backgroundImage="http://example.com/images/background.png">
  <p>この区分には、この段落の背後に表示される背景画像があります。</p>
<div>
...

例の断片 – 共有可能な埋め込み画像リソース
<head>
  <resources>
    <data xml:id="caption" type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
  </resources>
</head>
<body>
  <div>
    <p>
      <image>
        <source src="#caption"/>
      </image>
    <p>
    ...
    <p>
      <image>
        <source src="#caption"/>
      </image>
    <p>
  </div>
</body>

例の断片 – 共有できない代替画像を備えた外部画像リソース
<div>
  <image>
    <source src="http://example.com/images/caption.png" type="image/png"/>
    <source>
      <data type="image/png" length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </data>
    </source>
  </image>
</div>

注:

image 要素は、 #image 拡張が [SMPTE ST 2052-1] で導入した機能を取り込み、拡張しています。 特に、 smpte:backgroundImage 属性が コンテンツ画像を参照している場合、image 要素に対応付けることができます。 この要素の src 属性の値は、 smpte:backgroundImage 属性の値と等しくなります。

9.1.6 resources

resources 要素は、埋め込みコンテンツの定義を、 その埋め込みコンテンツに適用されるメタデータも含めてグループ化するためのコンテナー要素です。

resources 要素は、その子として、0 個以上の 要素を Metadata.class 要素 グループから受け入れ、 その後に、0 個以上の要素を、 Data.class、 Embedded.class、または Font.class 要素グループから受け入れます。

XML 表現 – 要素情報項目:resources
<resources
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  内容: Metadata.class*, (Data.class|Embedded.class|Font.class)*
</resources>

時間の意味論が resources 要素のコンテンツに適用される範囲において、この要素の暗黙の時間区間は、 ルート時間 範囲と始点および終点が一致するものと定義します。

9.1.7 source

source 要素は、埋め込みコンテンツリソースのソースを指定するために使用します。

source 要素は、その子として、 0 個以上の要素を Metadata.class 要素グループから受け入れ、 その後に、0 個または 1 個の data 要素を受け入れます。

source 要素が src 属性を指定する場合、 次に示す 子 data 要素を指定してはなりません。この場合、 このソースは、 外部ソースと呼ばれます。ただし、src 属性が外部 リソースを参照している場合です。あるいは、 入れ子でない埋め込みソースと呼ばれます。 これは、src 属性が 埋め込みリソースを参照しており、そのリソースが これを包含する文書インスタンス内にある場合です。

source 要素が src 属性を指定しない場合、 次に示す 子 data 要素を指定しなければなりません。この場合、 このソースは、 入れ子の埋め込みソースと呼ばれます。

source 要素は、祖先に source 要素を持ってはなりません。

XML 表現 – 要素情報項目: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")
  内容: Metadata.class*, data?
</source>

format 属性を指定する場合、 これは、埋め込みコンテンツの形式(すなわち、形式構文)についての 追加のヒント情報を提供します。この情報は、標準的なメディア(コンテンツ)型の ラベルが定義されていない場合や、その情報を メディア型のパラメーター [MIME Media Types] で表現できない場合に役立ちます。 また、 source 要素を使用するコンテキストによっては、この属性の値に追加の 制約が課されることがあります。

src 属性を指定し、 その値がこれを包含する 文書インスタンスのフラグメントを参照している場合、 そのフラグメントによって識別される data 要素が、 resources 要素の子として存在しなければなりません。つまり、その要素は xml:id 属性を持ち、 その値がフラグメント識別子と一致しなければなりません。

src 属性を指定し、 その値が次に示す文書インスタンスのフラグメントを参照していない場合、 すなわち、これを包含する文書インスタンスを参照していない場合、 type 属性を 指定すべきです。その場合、その値は、 参照先リソースのメディア(コンテンツ)型と一致しなければなりません。

src 属性を指定し、 その値が次に示す文書インスタンスのフラグメントを参照している場合、 すなわち、これを包含する文書インスタンスを参照している場合、 type 属性を 指定してはなりません。代わりに、埋め込みリソースのコンテンツ型は、 type 属性の値によって決まります。 この属性を持つのは、参照先または埋め込まれた data 要素です。

source 要素の使用法を次の例に示します。

例の断片 – 外部ソース
...
<image>
  <source src="http://example.com/images/caption.png" type="image/png"/>
</image>
...

例の断片 – 入れ子でない埋め込みソース
...
<data xml:id="caption" type="image/png" length="119">
  iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
  YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
...
<image>
  <source src="#caption"/>
</image>
...

例の断片 – 入れ子の埋め込みソース
...
<image>
  <source>
    <data type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
  </source>
</image>
...

9.2 埋め込みコンテンツ属性語彙

この節では、特定の埋め込みコンテンツ要素語彙で使用する、 次の属性を定義します:

9.2.1 encoding

encoding 属性は、データの符号化形式を指定するために使用します。

encoding 属性は、次の 要素型のインスタンスで指定できます:

encoding 属性を指定する場合、その値は、次のいずれかの 値でなければなりません。これらは、 [Data Encodings] で定義されています:

  • base16

  • base32

  • base32hex

  • base64

  • base64url

指定されていない場合、base64 の意味論が適用されます。

9.2.2 format

format 属性は、埋め込みコンテンツリソースのメディア(コンテンツ)形式に 関するヒントを、メディア(コンテンツ)型の情報に加えて指定するために使用します。 型の情報は、type 属性が提供します。

注:

format 属性は、登録されたメディア(コンテンツ)型が 存在しない場合に役立ちます。 例えば、利用可能なメディア(コンテンツ)型がない場合や、汎用の型を使用している場合です。 汎用の型には application/octet-stream などがあります。

format 属性は、次の 要素型のインスタンスで指定できます:

format 属性の値は、 <data-format> 式に従わなければなりません。

使用するコンテキストによっては、追加の制約が適用されることがあります。

9.2.3 src

src 属性は、データリソースの位置、またはその位置に対応付けられる 識別子を指定するために使用します。

src 属性は、次の 要素型のインスタンスで指定できます:

src 属性を指定する場合、その値は、 <uri> の値構文に従わなければなりません。

使用するコンテキストによっては、追加の制約が適用されることがあります。

9.2.4 type

type 属性は、データリソースのメディア(コンテンツ)型を指定するために使用し、 データの特性を表す追加の パラメーターを記述してもかまいません。

type 属性は、次の 要素型のインスタンスで指定できます:

type 属性を指定する場合、その値は、 Content-Type MIME ヘッダーの値構文に従わなければなりません。この構文は [MIME]、§5.1 で定義されています。

指定されていない場合、メディア(コンテンツ)型は不明、または意図的に未指定です。

type 属性が指定されたデータリソースを復号する場合、コンテンツ 処理では、 その型が正しいかどうかにかかわらず、指定された型に従わなければなりません。つまり、type 属性がデータリソースの型を 誤って指定している場合でも、コンテンツ処理は、 コンテンツのスニッフィングを 行ってその型を上書きしようとしてはなりません。

9.3 埋め込みコンテンツの値表現

埋め込みコンテンツ要素、および特定のスタイルプロパティ値では、次の 表現を使用します:

9.3.1 <audio>

<audio> 値表現は、音声 リソースを参照によって指定するために使用します。

構文表現 – <audio>
<audio>
  : <uri>

<audio> 値表現が、単独の フラグメント識別子の形式を取る場合、 そのフラグメント識別子は audio 要素を参照しなければなりません。 その要素は、 resources 要素の子であり、これを包含する文書インスタンス内にあります。

<audio> 値表現が値 http://www.w3.org/ns/ttml/resource/#empty を取る場合、 参照先の音声リソースは、 空のデータリソースです。

<audio> 値表現が値 http://www.w3.org/ns/ttml/resource/#speech を取る場合、 音声合成処理系がサポートされており、 有効になっているならば、 参照先の音声リソースは、 発話データリソースです; それ以外の場合(音声合成処理系が サポートされていない、またはサポートされているものの無効になっている場合)、 参照先の音声リソースは、 空のデータリソースです。

9.3.2 <data>

<data> 値表現は、データリソースを参照によって指定するために使用します。

構文表現 – <data>
<data>
  : <uri>

<data> 値表現が フラグメント識別子の形式を取る場合、 そのフラグメント識別子は data 要素を参照しなければなりません。その要素は、 resources 要素の子であり、これを包含する文書インスタンス内にあります。

9.3.3 <data-format>

<data-format> 式は、データリソースの形式を指定するために使用します。 追加の形式情報は、登録されたメディア(コンテンツ)型を持たない データリソースの場合に役立ちます。

構文表現 – <data-format>
<data-format>
  : xsd:NCName
  | <uri>

形式の式が <uri> 値の形式を取る場合、 絶対 URI を表さなければなりません。

注:

この仕様では、データコンテンツで使用する形式トークンの集合を標準化していません。 作成者には、 一般に使用されているトークンを使用するか、そのようなものがなければ、接頭辞 "x-" を追加して 私用のトークンを構成することを推奨します。

9.3.4 <font>

<font> 式は、フォントリソースを、 参照によって指定するために使用します。

構文表現 – <font>
<font>
  : <uri>

<font> 式がフラグメント 識別子の形式を取る場合、 そのフラグメント識別子は font 要素を参照しなければなりません。その要素は、 resources 要素の子であり、これを包含する文書インスタンス内にあります。

9.3.5 <image>

<image> 式は、画像 リソースを参照によって指定するために使用します。

構文表現 – <image>
<image>
  : <uri>

<image> 式がフラグメント 識別子の形式を取る場合、 そのフラグメント識別子は image 要素を参照しなければなりません。 その要素は、 resources 要素の子であり、これを包含する文書インスタンス内にあります。

9.3.6 <unicode-range>

<unicode-range> 式は、個々のコードポイントまたはコードポイントの範囲を 列挙することによって、Unicode コードポイントの集合を指定するために使用します。

構文表現 – <unicode-range>
<unicode-range>
  : range (<lwsp>? "," <lwsp>? range)*

range
  : codepoint
  | codepoint "-" codepoint

codepoint
  : ("U"|"u") "+" hexdigit-or-wildcard{1,6}

hexdigit-or-wildcard
  : <hex-digit>
  | "?"

10 スタイリング

本節では、中核語彙カタログの スタイリング に関する 事項を規定する。ここで、 スタイリングとは、コンテンツに適用される分離可能な情報層であり、 そのコンテンツの提示に関する著者の意図を表すものと 理解する。

スタイリング属性 は、提示に関する著者の意図を 自己完結した文書内に 含められるようにするため、TTML に組み込まれている。本節では、 標準的な処理モデルを用いて、スタイル提示の 意味論を説明する。TTML プロセッサは、文書 インスタンス を特定の方法で提示する必要はない。 ただし、このモデルを実装する TTML 提示 プロセッサ が、このモデルと整合する外部から観測可能な結果を提供する場合、 文書の著者が意図した体験に非常に近い ユーザー体験につながる可能性が高い。

注:

TTML のスタイル提示の意味論は、レイアウトおよび書式設定モデルを用いて 説明される。このモデルは [XSL-FO 1.1] で定義されている。本節の属性の効果は、 このモデルと互換性を持つことを意図している。ただし、提示エージェントは、 文書の著者の意図を満たすために任意の技術を使用してよい。例えば、[CSS2] プロセッサを使用して、 このモデルと共通する機能を実装してもよい。

本仕様では、 <?xml-stylesheet ... ?> 処理命令の規範的な使用方法は 定義しない。

本節で定義する スタイリング属性 は、 次の名前空間の属性の使用を許可する任意の要素型で指定してよい。 その名前空間とは、TT スタイル名前空間 である。ただし、これらの属性は、 各属性の定義で示された要素型にのみスタイルプロパティとして適用される。 さらに、 要素型の定義で明示的に許可されている場合を除き、TT スタイル名前空間 の属性は、 その要素に適用されるか、継承可能なスタイルプロパティを表す場合を除き、 要素に指定するべきではない。 その要素に適用されず、継承可能なスタイルプロパティも表さない場合は、 検証以外の処理において 無視しなければならない。検証 処理 の場合、 このような使用は警告として報告するべきである。

スタイルプロパティの適用可能性を判定する際、スタイルプロパティが 次の要素に適用されるように定義されている場合、 すなわち span 要素に適用される場合は、 匿名 span 要素にも適用される。

10.1 スタイリング要素の語彙

以下の要素は、 文書インスタンス の構造と主要なスタイリングの側面を指定する:

10.1.1 initial

initial 要素は、1 つ以上のスタイルプロパティの初期値を 変更するために使用する。すなわち、仕様で定義された初期値とは 異なる値の使用を指定する。

initial 要素は、子として 0 個以上の metadata 要素を受け入れる。

XML 表現 – 要素情報項目: initial
<initial
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {任意の スタイリング属性}
  内容: Metadata.class*
</initial>

複数の initial 要素が、同じスタイルプロパティの初期値を 指定する場合は、 最後に指定された値(前順走査順)が適用される。

次の例は、initial 要素を示している。この例では、 tts:color プロパティの初期値を yellow と定義している。

コード断片例 – initial
...
<head>
  <styling>
    <initial tts:color="yellow"/>
  <styling>
<head>
...

10.1.2 style

style 要素は、 指定スタイル集合として表される スタイル指定の集合を定義するために使用し、 10.4.4.2 指定スタイル集合の 処理 に従う。

style 要素は、子として 0 個以上の metadata 要素を受け入れる。

XML 表現 – 要素情報項目: style
<style
  condition = <condition>
  style = IDREFS
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {任意の スタイリング属性}
  内容: Metadata.class*
</style>

style 要素が region 要素の子孫として現れる場合、その style 要素は、 次の節で定義する参照スタイルの計算において無視しなければならない: 10.4.1.2 参照スタイリング および 10.4.1.3 連鎖参照 スタイリング。

注:

すなわち、要素が参照スタイリングを使用して style 要素を参照する場合、参照先の style 要素は styling 要素の子孫として現れなければならず、 それ以外の文脈に現れてはならない。

注:

condition 属性が style 要素に適用され、その条件が false と評価される場合、 その入れ子のスタイルとインラインスタイルは無視される。ただし、 参照スタイリングまたは連鎖参照スタイリングによって含まれるスタイルは無視されない。 詳細については、10.4.4.2 指定スタイル集合の 処理 を参照。

10.1.3 styling

styling 要素は、スタイリングに関する事項をグループ化するために使用する コンテナー要素であり、スタイリングに適用されるメタデータも含む。

styling 要素は、子として 0 個以上の Metadata.class 要素グループに属する 要素を受け入れ、 その後に 0 個以上の initial 要素、 さらに 0 個以上の style 要素を受け入れる。

XML 表現 – 要素情報項目: styling
<styling
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  内容: Metadata.class*, initial*, style*
</styling>

時間の意味論が styling 要素の内容に適用される範囲において、この要素の暗黙の時間区間は、 ルート時間 範囲 と同じ始点と終点を持つものと定義する。

10.2 スタイリング属性の語彙

本節では、特定のアニメーション要素、コンテンツ要素、 特定のレイアウト要素、およびスタイル定義要素で使用する 10.2.1 style 属性を定義する。

さらに、本節では、TT スタイル名前空間に属する以下の属性を規定する。 これらは、インラインスタイル指定をサポートするスタイル定義要素、特定のレイアウト要素、および コンテンツ要素 で使用する:

上記の視覚的なスタイリング属性に加えて、本節では、TT オーディオスタイル名前空間に属する 以下の音声用 スタイリング属性 を規定する。 これらは、インラインスタイル指定をサポートするスタイル定義要素および コンテンツ要素 で使用する:

本節で定義する各スタイル属性(および対応するプロパティ)では、 スタイルプロパティ定義表 を使用する。 この表では、 スタイルの以下の側面の 1 つ以上を指定する: 値の構文、初期値、 スタイルが意味論上適用される要素、スタイルが継承されるかどうか、百分率の 値の解釈方法(該当する場合)、 スタイルのアニメーションの可否(および方法)、ならびに意味論上の根拠(由来)。

注:

スタイルプロパティ定義表 の 各項目を解釈する際には、 適用対象 の定義として、 [CSS2] の §1.4.2.3 で規定されたものを本仕様に適用する。

アニメーション可能なスタイル において、離散 という用語は、set 要素、または animate 要素を、 discrete を値とする <calculation-mode> とともに使用することを指す。連続 という用語は、 animate 要素を、 linear、paced、または spline を <calculation-mode> の値として使用することを指す。 なし という用語は、そのスタイルを アニメーションできないことを示す。

注:

本仕様では、ローワーキャメルケース のローカル名を スタイル属性に使用する。これらの属性は、 [XSL-FO 1.1] で定義された同様の名前のプロパティに基づいている。 この規則は、そのようなプロパティのトークン値にも 同様に拡張される。

注:

継承可能なスタイルプロパティは、 region 要素または コンテンツ要素 型に指定する属性として、 そのプロパティが当該要素型に適用されるかどうかとは 無関係に表してよい。この機能により、継承可能な スタイルプロパティを、そのプロパティが適用されない 祖先要素上で表すことができる。

注:

スタイル属性の指定方法、特に継承のサポートに関する 本仕様(および本仕様が参照するスキーマ)の一般的な構文により、 著者は、継承不可能なスタイル属性を、その要素にもいずれの子孫にも 適用されないにもかかわらず、要素上に誤って指定することがあり得る。その場合でも、 コンテンツの妥当性の観点では適合している。コンテンツの著者は、このような使用を 検出して警告する TTML コンテンツ検証ツールの利用を検討してもよい。

10.2.1 style

style 属性は、参照によるスタイル関連付けにおいて、 それぞれがスタイル(プロパティ)の集合を定義する 1 個以上の 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 連鎖 参照スタイリング を 参照。

10.2.2 tts:backgroundClip

tts:backgroundClip 属性は、スタイルプロパティを指定するために使用する。 このプロパティは 背景描画矩形 を 決定し、 背景はその内側に描画される。

値: "border" | "content" | "padding"
初期値: border
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: backgroundClip の由来

次の例は、tts:backgroundClip スタイルを示している。

コード断片例 – 背景の切り抜き
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundOrigin="padding"/>
  <style tts:padding="27px 72px"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundClip="content"/>
</region>

表示例 – 背景の切り抜き
TTML backgroundClip スタイルプロパティ

10.2.3 tts:backgroundColor

tts:backgroundColor 属性は、領域、または領域に流し込まれたコンテンツによって 生成されるエリアの背景色を定義するスタイルプロパティを指定するために使用する。

値: <color>
初期値: transparent
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散; 連続
意味論上の根拠: backgroundColor の由来

次の例は、tts:backgroundColor スタイルを示している。

コード断片例 – 背景色
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:padding="3px 30px"/>
</region>
...
<p region="r1" tts:backgroundColor="purple" tts:textAlign="center">
  きらきら、きらきら、小さなコウモリよ!<br/>
  ああ、<span tts:backgroundColor="green">気になるよ</span>、君はどこにいるのだろう!
</p>

表示例 – 背景色
TTML backgroundColor スタイルプロパティ

10.2.4 tts:backgroundExtent

tts:backgroundExtent 属性は、背景画像の 範囲(サイズ)を、 画像固有の範囲(サイズ)とは独立して指定するために使用してよい。

値: <extent>
初期値: auto
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 適用される 背景配置 矩形 の幅と高さに対する相対値
アニメーション可能: 離散
意味論上の根拠: backgroundExtent の由来

この属性の値が auto の場合、スタイルプロパティの 算出値は、関連付けられた背景画像の固有の範囲(サイズ)と 同じであると見なさなければならない。

この属性の値が contain の場合、スタイルプロパティの 算出値は、次の手続きを実行することで決定する: [包含スケーリングの 計算]。 ここで、対象矩形 TR は、画像固有の幅と高さで 初期化し、 参照矩形 RR は 背景配置矩形 に設定し、 結果として得られる対象矩形 TR の出力値を算出値とする。

この属性の値が cover の場合、スタイルプロパティの 算出値は、次の手続きを実行することで決定する: [被覆スケーリングの 計算]。 ここで、対象矩形 TR は、画像固有の幅と高さで 初期化し、 参照矩形 RR は 背景配置矩形 に設定し、 結果として得られる対象矩形 TR の出力値を算出値とする。

この属性の値が 2 つの <measure> 指定からなる場合、最初の指定は 幅、2 番目の指定は 高さ として、 それぞれこのプロパティの算出値を構成する。この場合、両方の <measure> 指定は、 非負の長さに解決されなければならない(または解決可能でなければならない)。

このスタイルプロパティの算出値が画像固有の範囲(サイズ)と異なる場合、 画像のラスターは、算出された範囲の値に一致するように、 各次元で独立して拡大縮小される。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出された背景の範囲とサポートされる背景の範囲との間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、[0,0] から最も遠い値、すなわち範囲が最も大きい値を 使用する。

サポートされる値のうち最も近い値 を解決するこの規則では、サポートされる距離のうち、 最も近い小さい距離ではなく、最も近い大きい距離を使用する。

次の例は、tts:backgroundExtent スタイルを示している。

コード断片例 – 背景の範囲
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundExtent="cover"/>
</region>

表示例 – 背景の範囲
TTML backgroundExtent スタイルプロパティ

10.2.5 tts:backgroundImage

tts:backgroundImage 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、背景用の 非コンテンツ画像 を指定し、 その画像は、 領域、または領域に流し込まれたコンテンツによって生成されるエリアの背景画像として描画される。

tts:backgroundImage 属性は、コンテンツ画像 を、 字幕をラスター画像として描画したものなど、実際のコンテンツを表すために使用している場合、 参照するべきではない。tts:backgroundImage の使用は、 コンテンツが別の手段で表される要素の背景を スタイリングすることに限定するべきである。ラスター画像を使用して コンテンツを表す必要がある場合は、image 要素を使用して、ブロックまたはインラインの文脈で表すべきである。

値: "none" | <image>
初期値: none
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: backgroundImage の由来

このスタイルプロパティで使用する <image> 式は、 外部の 画像リソース を直接参照してよい。 ただし、著者はそのような使用を控え、代わりに、参照先を image 子要素、 すなわち resources 要素の子に限定するべきである。

注:

image 要素を使用して画像を間接的に参照すると、 次のことが 可能になる: 画像を 埋め込みデータリソース として指定すること、 および、 コンテンツ型など、画像に関する追加情報を指定することである。さらに、 複数の source 子要素を image 要素内で使用することで、 解像度ごとの画像や、フォールバック用の 画像リソース を指定できる。

注:

値 none はキーワードとして使用されるため、この 値を image 式として使用することはできない。 したがって、そのような式を使用したい場合は、 絶対 URI、または異なるが等価な相対 URI を使用して、キーワード none と 区別しなければならない。 その例として ./none がある。

背景画像に関連付けられた要素が生成するエリアの コンテンツ矩形の範囲は、解決された 背景画像の範囲による影響を受けない。

注:

[SMPTE ST 2052-1] やそれに依存する プロファイルなど、TTML1 の一部のプロファイルでは、背景画像が、 関連付けられた要素によって生成されるエリアのコンテンツ矩形の範囲に影響すると規定している。 これらのプロファイルと 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>

表示例 – 背景画像
TTML backgroundImage スタイルプロパティ

10.2.6 tts:backgroundOrigin

tts:backgroundOrigin 属性は、スタイルプロパティを指定するために使用する。 このプロパティは 背景配置 矩形 を決定し、 背景はその内側に配置される。

値: "border" | "content" | "padding"
初期値: padding
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: backgroundOrigin の由来

次の例は、tts:backgroundOrigin スタイルを示している。

コード断片例 – 背景の原点
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundOrigin="content"/>
</region>

表示例 – 背景の原点
TTML backgroundOrigin スタイルプロパティ

10.2.7 tts:backgroundPosition

tts:backgroundPosition 属性は、領域、または領域に流し込まれた コンテンツによって生成されるエリア内に背景画像を配置するかどうか、およびその方法を 定義するスタイルプロパティを指定するために使用する。

値: <position>
初期値: 0% 0%
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: backgroundPosition の由来

水平方向の位置オフセットの百分率値の 成分 は、 次の幅を基準とする: 背景配置矩形 の幅から 背景画像の幅を差し引いた値。 垂直方向の位置オフセットの百分率値の 成分 は、 次の高さを基準とする: 背景配置矩形 の高さから 背景画像の高さを差し引いた値。

次の例は、tts:backgroundPosition スタイルを示している。

コード断片例 – 背景の位置
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundPosition="center"/>
</region>

表示例 – 背景の位置
TTML backgroundPosition スタイルプロパティ

10.2.8 tts:backgroundRepeat

tts:backgroundRepeat 属性は、領域、または領域に流し込まれた コンテンツによって生成されるエリア内で背景画像を繰り返す(タイル状に並べる)かどうか、 およびその方法を定義するスタイルプロパティを指定するために使用する。

値: "repeat" | "repeatX" | "repeatY" | "noRepeat"
初期値: repeat
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: backgroundRepeat の由来

次の例は、tts:backgroundRepeat スタイルを示している。

コード断片例 – 背景の繰り返し
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundRepeat="repeatX"/>
</region>

表示例 – 背景の繰り返し
TTML backgroundRepeat スタイルプロパティ

10.2.9 tts:border

tts:border 属性は、領域、または領域に流し込まれたコンテンツによって 生成されるエリアの境界線を定義するスタイルプロパティを指定するために使用する。

注:

領域に適用する場合、境界線は領域の範囲の内側に適用される。すなわち、 領域に適用された境界線が存在することにより、 領域エリアのコンテンツ矩形は縮小される。

値: <border>
初期値: none
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散; 連続(色のみ)
意味論上の根拠: border の由来

tts:border プロパティの値に境界線の太さが指定されていない場合、 境界線の太さは、 medium が指定されたものとして解釈しなければならない。

この属性に関連付けられた境界線の太さの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 1 次元のユークリッド距離が、 算出された境界線の太さとサポートされる境界線の太さとの間で、辺ごとに 最小になる値を意味する。ある辺の算出値から等距離にある 最も近いサポート値が複数存在する場合は、0 に最も近い値、すなわち最も細い 境界線の太さを使用する。

tts:border プロパティの値に境界線のスタイルが指定されていない場合、 境界線のスタイルは、 none が指定されたものとして解釈しなければならない。

この属性に関連付けられた境界線のスタイルの算出値がサポートされていない場合、 提示プロセッサ は、値 solid を使用しなければならない。

tts:border プロパティの値に境界線の色が指定されていない場合、 境界線の色は、その要素の tts:color スタイルプロパティの算出値と 等しい色が指定されたものとして解釈しなければならない。

tts:border プロパティの値に境界線の半径が指定されていない場合、 境界線の半径は、 0 が指定されたものとして解釈しなければならない。

この属性に関連付けられた境界線の半径の算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 算出された境界線の半径とサポートされる境界線の半径との差が 最小になる値を意味する。

次の例は、tts:border スタイルを示している。

コード断片例 – 境界線
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:border="2px solid red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:padding="3px 30px"/>
</region>
...
<p region="r1" tts:border="4px solid green" tts:textAlign="center">
  きらきら、きらきら、小さなコウモリよ!<br/>
  ああ、<span tts:border="8px solid blue">気になるよ</span>、君はどこにいるのだろう!
</p>

表示例 – 境界線
TTML border スタイルプロパティ

次の例は、角を丸めた tts:border スタイルを示している。

コード断片例 – 角を丸めた境界線
<style xml:id="roundedBorder" tts:border="2px solid lime 10px" tts:backgroundColor="black"/>
...
<div tts:color="white" tts:textAlign="center">
  <p style="roundedBorder">境界線の角を丸めた <br/>p 要素。</p>
  <p>
    <span style="roundedBorder">span の境界線の角丸</span>
    <br/>
    <span style="roundedBorder">より短い span</span>
  </p>
</div>

表示例 – 境界線の角丸
TTML border スタイルプロパティ

10.2.10 tts:bpd

tts:bpd 属性は、 ブロック進行寸法、より簡潔には bpd を、 領域に流し込まれたコンテンツによって生成されるエリアについて指定するために使用する。

注:

ブロック進行寸法 という用語は、書字モードに相対的な 方法で解釈され、 bpd は常にブロック進行方向の 距離に対応する。したがって、横書きモードでは、bpd は 垂直方向の距離を表し、 縦書きモードでは、bpd は水平方向の距離を表す。 ここで、水平と垂直は常に絶対的な意味で解釈される。

値: <measure>
初期値: auto
適用対象: body, div, p, span
継承: いいえ
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: bpd の由来

<measure> が <length> 値として表される場合、その値は非負でなければならない。

tts:bpd 属性が span 要素に指定され、 その要素に適用される tts:display プロパティの算出値が inlineBlock ではない場合、 tts:bpd の意味論は、適用される背景色または背景画像の ブロック進行寸法を計算する際にのみ適用される。 ただし、生成されるエリアのコンテンツ矩形の寸法は変更されない。

この属性の <length> 式で百分率値が 使用される場合、 生成されるエリアの包含エリア(最も近い祖先エリア)の、該当する 絶対 寸法 を基準として 解決される。

注:

この属性で使用する <length> 式は、 書字モードに相対的な 特定の寸法に関連付けられ、その寸法は 絶対寸法 に、 適用される書字モードに従って解決される。その 絶対寸法 が垂直方向(水平方向)である場合、 百分率値は、同じ垂直方向(水平方向)の 絶対寸法 を、 参照エリア(最も近い祖先エリア)について用いて解決される。

次の例は、tts:bpd スタイルを示している。

コード断片例 – ブロック進行寸法
<p tts:fontSize="24px" tts:lineHeight="48px" tts:bpd="96px">
  森が <span tts:display="inlineBlock" tts:bpd="36px">緑に染まり始める</span> ...
</p>

注:

上記の例では、p 要素の tts:bpd 属性は、 段落によって生成されるブロックエリアのコンテンツ矩形の高さに 固定の寸法を割り当てる。一方、 span 要素の tts:bpd 属性は、 span によって生成されるインラインブロックエリアのコンテンツ矩形の高さに 固定の寸法を割り当てる。

10.2.11 tts:color

tts:color 属性は、領域に流し込まれたコンテンツによって 生成されるエリアに関連付けられた描画マークの前景色を 定義するスタイルプロパティを指定するために使用する。

値: <color>
初期値: 本文を参照
適用対象: span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散; 連続
意味論上の根拠: color の由来

tts:color プロパティの初期値は、 実装依存と見なされる。 エンドユーザーの設定情報がない場合、適合する 提示プロセッサ は、初期値として、 ルートコンテナー領域 の背景色と高いコントラストを持つ値を使用するべきである。

次の例は、tts:color スタイルを示している。

コード断片例 – 色
<region xml:id="r1">
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  春、森が <span tts:color="green">緑に染まり始める</span>ころ、<br/>
  私の言いたいことを君に伝えてみよう。
</p>

表示例 – 色
TTML color スタイルプロパティ

10.2.12 tts:direction

tts:direction 属性は、使用される文脈に応じて、 次のいずれかを決定する スタイルプロパティを指定するために使用する: (1) 双方向テキストの段落レベル、または (2) 双方向テキストの 埋め込みまたはオーバーライドの方向性。 これらについては [UAX9] を参照。

値: "ltr" | "rtl"
初期値: ltr
適用対象: p, span
継承: はい。ただし、特別な 意味論 を参照
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: direction の由来

p 要素に適用する場合、このプロパティの算出値は、 次の規定に従い明示的に 段落レベル を設定する: [UAX9] の §4.3、上位プロトコル HL1。

span 要素(または 匿名 span)に適用する場合、このプロパティの算出値は、 tts:unicodeBidi スタイルプロパティの算出値と組み合わせて、 双方向テキストの埋め込みまたはオーバーライドの方向性を、 [UAX9] の §4.3、上位プロトコル HL3 の規定に従って決定する。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 ltr を使用しなければならない。

次の例は、tts:direction スタイルを示している。

コード断片例 – 方向
<p>
本の題名は
"<span tts:unicodeBidi="embed" tts:direction="rtl">国際化活動、W3C</span>"
</p>

表示例 – 方向
TTML direction スタイルプロパティ
10.2.12.1 方向の特別な 意味論

スタイル解決処理(10.4.4 スタイル解決 処理 を参照)を実行する際、 region 要素 R の tts:direction の算出値の解決は、以下の順序付き規則に従って決定され、 最初に該当する規則を適用する:

  1. tts:direction 属性が R に指定されている場合、 算出値は、 tts:direction の指定値となる;

  2. tts:writingMode 属性が R に指定されている場合、 算出値は、 tts:direction について、 インライン進行方向 となり、 その方向を決定するのは、 R の tts:writingMode の算出値である;

  3. それ以外の場合、tts:direction の算出値は初期値となる。

注:

region 要素の tts:direction の算出値は、 上記のように決定され、実質的に tts:direction の値として、 次の意味論に従う要素に継承される: 領域スタイル継承。

それ以外の要素 E の場合、ここで E は、 次の要素ではないものとする: region 要素。この場合、 tts:writingMode 属性の有無は、 tts:direction の算出値の解決に影響を与えない。その解決の対象は、 E である。

注:

上記の意味論は、CSS の定義に対する XSL の 変更 に対応するものであり、 direction プロパティについて [XSL-FO 1.1] の §7.29.1 で定義されている。したがって、 #direction 機能の範囲に含まれる。

10.2.13 tts:disparity

tts:disparity 属性は、立体視(立体的な奥行き)をシミュレートするために 適用する両眼視差を指定するために使用する。視差がゼロの場合は、 表示面に対応する。負の値は表示面の手前の 奥行きに対応し、正の値は表示面の奥の奥行きに対応する。 [SMITH] では、視差と知覚される奥行きの 関係について詳しく説明している。

値: <length>
初期値: 0px
適用対象: region; また、 特別な使用法 を参照。対象は div および p
継承: いいえ
百分率: ルートコンテナー 領域 の幅に対する相対値
アニメーション可能: 離散; 連続
意味論上の根拠: disparity の由来

立体画像対の右(左)の画像に領域を描画する場合、その領域の中心は、 水平軸に沿って、算出値の ½ (-½) に等しい値だけオフセットされる。その算出値は tts:disparity の算出値であり、正のオフセットは右方向、負のオフセットは 左方向を表す。

立体画像対に描画する場合を除き、tts:disparity 属性は、 提示処理において無視される。

著者は、領域が可視である全期間を通じて、その領域の知覚される奥行きが、 シーン内のあらゆるオブジェクトの手前に位置するようにするべきである。シーン内の オブジェクトが領域より手前にあると知覚される場合、立体視効果は損なわれる。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出された視差とサポートされる視差との間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、0 に最も近い値を使用する。

注:

一般に、立体視コンテンツの提示は、 サブピクセル(アンチエイリアス)描画技術の使用に依存する。そのため、 視差によって調整された位置を整数値に量子化する 実装では、望ましくない副作用が生じる可能性がある。これは特に、 視差の滑らかなアニメーションが適用される場合に不自然さを生じさせる。例えば、 著者が、被写体とそれに関連付けられたテキストとの間の距離を 一定に保とうとする場合である。

次のコード断片と表示例は、tts:disparity スタイルを 示している。一般的なテレビの利用状況では、視差は画面幅の -1% から 2% の 範囲となることに注意。この例では、視差に 5% を使用し、 図示を明瞭にするために視差の効果を誇張している。

コード断片例 – 視差
<region xml:id="r1">
  <style tts:extent="80% 10%"/>
  <style tts:origin="10% 10%"/>
  <style tts:disparity="5%"/>
	...
</region>
...
<p region="r1">
  立体視
</p>

表示例 – 視差(左画像と右画像)
TTML disparity スタイルプロパティ
10.2.13.1 視差の特別な使用法

tts:disparity が例外的に div または p に指定される場合、11.1.2.1 インラインアニメーションの特別な 意味論 が適用される。

10.2.14 tts:display

tts:display 属性は、要素が領域内でのレイアウトおよび 合成の候補になるかどうかを定義する スタイルプロパティを指定するために使用する。

値: "auto" | "none" | "inlineBlock"
初期値: auto
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: display の由来

この属性の値が auto の場合、 対象の要素は、領域でのレイアウトおよび 提示の候補となる。ただし、値が none の場合、 対象の要素とその子孫は、領域でのレイアウトおよび 提示の対象外と見なさなければならない。

この属性の値が inlineBlock であり、この属性が span 要素に適用される場合、 インラインブロック表示 の意味論が適用され、その要素は、 領域でのレイアウトおよび提示の候補となる。さらに、次の場合は エラーと見なされる: inlineBlock 値が、span 要素ではない要素に適用される場合。

次の例は、tts:display スタイルを示している。

コード断片例 – 表示
<region xml:id="r1">
  <style tts:extent="369px 119px"
            tts:backgroundColor="black"
            tts:color="white"
            tts:displayAlign="before"
            tts:textAlign="start"/>
</region>
...
<div region="r1">
  <p dur="5s">
    [[[
    <span tts:display="none">
      <set begin="1s" dur="1s" tts:display="auto"/>
      素晴らしいスープ、
    </span>
    <span tts:display="none">
      <set begin="2s" dur="1s" tts:display="auto"/>
      とても濃厚で緑色、
    </span>
    <span tts:display="none">
      <set begin="3s" dur="1s" tts:display="auto"/>
      熱いスープ鉢の中で待っている!
    </span>
    ]]]
  </p>
</div>

表示例 – 表示
TTML display スタイルプロパティ - [0,1)
TTML display スタイルプロパティ - [1,2)
TTML display スタイルプロパティ - [2,3)
TTML display スタイルプロパティ - [3,4)
TTML display スタイルプロパティ - [4,5)

10.2.15 tts:displayAlign

tts:displayAlign 属性は、ブロック進行方向におけるブロックエリアの 整列を定義するスタイルプロパティを指定するために使用する。

値: "before" | "center" | "after" | "justify"
初期値: before
適用対象: body, div, p, region
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: displayAlign の由来

この属性の値が justify の場合、 ブロック進行寸法 における(未使用の)利用可能な空間は、 ブロックエリアの子であるブロックエリア間に均等に分配される。 その親のブロックエリアは、この属性が適用される要素によって生成される。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 before を使用しなければならない。

次の例は、tts:displayAlign スタイルを示している。

コード断片例 – 表示の整列
<region xml:id="r1">
  <style tts:extent="128px 66px" tts:origin="0px 0px"
       tts:backgroundColor="black" tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:extent="192px 66px" tts:origin="128px 66px"/>
       tts:backgroundColor="green" tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r3">
  <style tts:extent="128px 66px"/> style tts:origin="0px 132px"
       tts:backgroundColor="black" tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r4">
  <style tts:extent="192px 66px" tts:origin="128px 198px"/>
       tts:backgroundColor="green" tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="start"/>
</region>
...
<div>
  <p region="r1">私は魚たちに伝言を送った:</p>
  <p region="r2">こう伝えた<br/> "これが私の願いです。"</p>
  <p region="r3">海の小さな魚たちは、</p>
  <p region="r4">私に<br/> 返事を送ってくれた。</p>
</div>

表示例 – 表示の整列
TTML displayAlign スタイルプロパティ

10.2.16 tts:extent

tts:extent 属性は、以下の目的に使用してよい:

  1. 幅 と 高さ を ルートコンテナー領域 について指定する。 これにより、 文書座標空間 が定義される。 これについては、H.3 座標空間 を参照;

  2. 指定または上書きする対象は、 幅 と 高さ であり、 コンテンツ領域 について指定する;

  3. 指定する対象は、 幅 と 高さ であり、 画像について、その固有の範囲を上書きする。

注:

境界線および(または)パディングが領域に適用される場合、その領域の範囲には、 その境界線とパディングが含まれる。 すなわち、境界線とパディングはともに内側に適用されるため、 領域の範囲の内側に位置する。

値: <extent>
初期値: auto
適用対象: tt, region, image; また、 特別な使用法 を参照。対象は div および p
継承: いいえ
百分率: ルート コンテナー領域 の幅と高さに対する相対値
アニメーション可能: 離散
意味論上の根拠: extent の由来

tts:extent 属性が tt 要素に指定される場合、 指定値は以下のいずれかに制限される: (1) auto キーワード、 (2) contain キーワード、または (3) 2 つの <length> 指定。 これらの指定は、百分率ではなく、ピクセル単位による確定的な長さとして表す。 構文上有効なその他の値は、この文脈では使用してはならず、 使用された場合は エラーと見なさなければならず、 さらに、 提示処理において無視しなければならない。この場合、初期値(auto)が 適用される。

tts:extent 属性が region 要素に指定される場合、 その算出値は 幅 と 高さ を、 関連付けられた コンテンツ領域 について決定する。

tts:extent 属性が image 要素に指定される場合、その算出 値は、幅 と 高さ を、 その画像について決定する。

tts:extent 属性が div または p 要素に指定される場合、次の節で規定する意味論が、 10.2.16.1 範囲の特別な使用法 に従って、 適用される。

この属性の値が auto の場合、関連付けられたプロパティの算出値は、 以下のように決定する:

  1. このプロパティが tt 要素に適用される場合、 auto は、値 contain が 指定されたものとして解釈する;

  2. このプロパティが region 要素に直接または間接的に適用される場合、auto は、 値 "100% 100%" が指定されたものとして解釈する;

  3. このプロパティが image 要素に適用される場合、 auto は、画像固有の範囲に等しい値が、次の形式で指定されたものとして解釈する: ピクセル単位の 2 つの <length> 成分。例えば、"200px 100px"。

注:

この属性では、単一のキーワード "auto" からなる値と、 2 つのキーワード "auto auto" からなる別の値が許可される。この 2 つの異なる 値は、それぞれ異なる意味を持ち、等価ではない。 特に、単一のキーワードによる値 "auto" は、直前に説明した 意味論を持つ。一方、2 つのキーワードによる値 "auto auto" は、2 つの <measure> 式からなり、それぞれが、 <measure> キーワード auto を、 10.3.24 <measure> の定義に従って使用する。

この属性の値が contain の場合、関連付けられたプロパティの算出値は、 以下のように決定する:

  1. このプロパティが tt 要素に適用される場合、 contain は、次の節の規定に従って解釈する: H ルートコンテナー領域の意味論;

  2. このプロパティが region 要素に適用される場合、 算出値は、次の手続きを実行することで決定する: [包含スケーリングの 計算]。 ここで、対象矩形 TR は、 固有のブロックコンテンツ範囲 を、 領域のコンテンツについて用いて初期化し、 参照矩形 RR は、ルートコンテナー領域 の範囲に設定し、 結果として得られる対象矩形 TR の出力値を算出 値とする;

  3. このプロパティが image 要素に適用される場合、 算出値は、次の手続きを実行することで決定する: [包含スケーリングの 計算]。 ここで、対象矩形 TR は、 その画像の 固有の画像範囲 で初期化し、 参照矩形 RR は、包含するブロックエリアまたは行エリア内で 利用可能なコンテンツ空間に設定する。 それぞれ、現在の整形コンテキストがブロック整形コンテキストかインライン整形 コンテキストかに従って選択し、 結果として得られる対象矩形 TR の出力値を算出 値とする。

この属性の値が cover の場合、関連付けられたプロパティの算出値は、 以下のように決定する:

  1. このプロパティが region 要素に適用される場合、 算出値は、次の手続きを実行することで決定する: [被覆スケーリングの 計算]。 ここで、対象矩形 TR は、 固有のブロックコンテンツ範囲 を、 領域のコンテンツについて用いて初期化し、 参照矩形 RR は、ルートコンテナー領域 の範囲に設定し、 結果として得られる対象矩形 TR の出力値を算出 値とする;

  2. このプロパティが image 要素に適用される場合、 算出値は、次の手続きを実行することで決定する: [被覆スケーリングの 計算]。 ここで、対象矩形 TR は、 その画像の 固有の画像範囲 で初期化し、 参照矩形 RR は、包含するブロックエリアまたは行エリア内で 利用可能なコンテンツ空間に設定する。 それぞれ、現在の整形コンテキストがブロック整形コンテキストかインライン整形 コンテキストかに従って選択し、 結果として得られる対象矩形 TR の出力値を算出 値とする。

この属性の値が 2 つの <measure> 指定からなる場合、それらを、 幅 と 高さ として解釈しなければならない。ここで、 最初の指定は 幅、2 番目の指定は 高さ であり、 この場合、両方の <measure> 指定は、非負の長さに解決されなければならない(または解決可能でなければならない)。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出された範囲とサポートされる範囲との間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、[0,0] から最も遠い値、すなわち範囲が最も大きい値を 使用する。

サポートされる値のうち最も近い値 を解決するこの規則では、サポートされる距離のうち、 最も近い小さい距離ではなく、最も近い大きい距離を使用する。 この扱いの違いの根拠は、 より大きい範囲を使用すれば、対象のコンテンツが、 領域からのオーバーフローを起こさずに領域エリア内に収まることが保証されるのに対し、 より小さい範囲を使用すると、領域からのオーバーフローが起こりやすくなるためである。

次の例は、tts:extent スタイルを示している。

コード断片例 – 範囲
<region xml:id="r1">
  <style tts:extent="330px 122px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  あれはロブスターの声だ:<br/>
  彼がこう言うのを聞いた、<br/>
  "私をこんがり焼きすぎたな、<br/>
  髪に砂糖をまぶさなくては。"
</p>

表示例 – 範囲
TTML extent スタイルプロパティ
10.2.16.1 範囲の特別な使用法

tts:extent が例外的に div または p に指定される場合、11.1.2.1 インラインアニメーションの特別な 意味論 が適用される。

10.2.17 tts:fontFamily

tts:fontFamily 属性は、 グリフを選択するフォントファミリーを定義するスタイルプロパティを指定するために使用する。対象となる グリフ エリア は、 領域に流し込まれたコンテンツによって生成される。

値: <font-families>
初期値: default
適用対象: p, span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: fontFamily の由来

注:

初期値 default は総称フォントファミリー名であり、 後述の 10.3.19 <generic-family-name> で詳しく説明する。

注:

span に適用されることに加えて、 このプロパティの算出値は、 p 要素上では、 次の属性に 関連付けられたスタイルプロパティの値を解決するために使用される: tts:lineHeight 属性。その規定については、 10.2.27 tts:lineHeight を参照。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、算出された フォントファミリーを、 類似する組版上の特性を持つ、サポートされるフォントファミリーに 対応付けることを試みなければならない。そのような対応付けがない場合は、 値 default を使用しなければならない。

次の例は、tts:fontFamily スタイルを示している。

コード断片例 – フォントファミリー
<region xml:id="r1">
  <style tts:extent="474px 146px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="start"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<div region="r1">
  <p>
    "時が来た" とセイウチは言った、<br/>
    "いろいろなことを話す時が:
  </p>
  <p tts:textAlign="end" tts:fontFamily="monospaceSerif">
    靴や、船や、封蝋について、<br/>
    キャベツや王様について、
  </p>
  <p>
    なぜ海が煮えたぎるほど熱いのか、<br/>
    そして豚に翼があるのか。"
  </p>
</div>

表示例 – フォントファミリー
TTML fontFamily スタイルプロパティ

10.2.18 tts:fontKerning

tts:fontKerning 属性は、フォントのカーニングを適用するかどうかを、 配置時に決定するスタイルプロパティを指定するために使用する。配置の対象は グリフ エリア である。

値: "none" | "normal"
初期値: normal
適用対象: span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: fontKerning の由来

この属性の値が normal の場合、カーニングデータが利用可能であれば、 カーニングを適用するべきである。 この属性の値が none の場合、カーニングデータが利用可能かどうかに かかわらず、カーニングを適用するべきではない。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 normal を使用しなければならない。

tts:fontKerning スタイルを、以下の 例に示す。

コード断片例 – フォントのカーニング
<p>
  WAVE<br/>
  <span tts:fontKerning="none">WAVE</span>
</p>

表示例 – フォントのカーニング
TTML fontKerning スタイルプロパティ

10.2.19 tts:fontSelectionStrategy

tts:fontSelectionStrategy 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、グリフエリア に適用する方針を、 提示処理中に候補となるフォントのリストから フォントを選択する際に決定する。

値: "auto" | "character"
初期値: auto
適用対象: p, span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: fontSelectionStrategy の由来

このプロパティの提示の意味論は、[XSL-FO 1.1] の §7.9.3 で定義されたものであり、 選択基準の集合は、以下のプロパティを含むように拡張される:

フォント選択基準を満たすフォントリソースから選択する場合、 参照されるフォントリソースのうち、 font 要素によるものは、 アプリケーションまたはシステムが提供する フォントリソースより優先される。

注:

span に適用されることに加えて、 このプロパティの算出値は、 p 要素上では、 次の属性に 関連付けられたスタイルプロパティの値を解決するために使用される: tts:lineHeight 属性。その規定については、 10.2.27 tts:lineHeight を参照。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 auto を使用しなければならない。

tts:fontSelectionStrategy スタイルを、以下の 例に示す。

コード断片例 – フォント選択方針
<p tts:fontFamily="font1,font2">
  <span tts:fontSelectionStrategy="character">&#xE000;&#x20DD;</span>
</p>

注:

上記の例では、font1 フォントファミリーに関連付けられた フォントリソースが、 単一の文字 &#xE000; に対応するグリフを含むが、 文脈的な文字列全体 &#xE000;&#x20DD; または単一の文字 &#x20DD; に対応するグリフは含まないものとする。 さらに、次のフォントファミリーに関連付けられたフォントリソース、 すなわち font2 は、文脈的な文字列全体に対する対応付けと、 単一の文字に対する対応付けを含み、その文字は &#x20DD; であるものとする。

著者が、文脈的な文字列全体に対する対応付けを font2 によって行うことを受け入れる場合は、値 auto を使用する(明示的に、または初期値を既定値として使用する)。ただし、 著者が &#xE000; を、 font1 によって対応付け、&#x20DD; を、 font2 によって対応付けることを望む場合は、値 character を 指定する。この例では、著者は後者の動作を望んでいるため、値 character を指定している。

10.2.20 tts:fontShear

tts:fontShear 属性は、せん断変換を適用するかどうか、 およびその方法を決定するスタイルプロパティを指定するために使用する。適用対象は グリフエリア である。

値: <percentage>
初期値: 0%
適用対象: span; 注 も参照
継承: はい
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: fontShear の由来

この属性が適用される各 グリフエリア について、2D せん断変換を、 その グリフエリア に適用する。その規定は 10.4.5.3 せん断の計算 に従う。

次の例は、tts:fontShear スタイルを示している。

コード断片例 – フォントのせん断
<p region="horizontal">
  <span tts:fontShear="16.78842%">三日坊主</span><br/>
  <span tts:fontShear="50%">三日坊主</span><br/>
  <span tts:fontShear="64.333%">三日坊主</span>
</p>
<p region="vertical">
  <span tts:fontShear="16.78842%">三日坊主</span><br/>
  <span tts:fontShear="50%">三日坊主</span><br/>
  <span tts:fontShear="64.333%">三日坊主</span>
</p>

表示例 – フォントのせん断
TTML 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>

表示例 – 負の値によるフォントのせん断
TTML fontShear スタイルプロパティ

10.2.21 tts:fontSize

tts:fontSize 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、選択されたグリフのフォントサイズを定義する。選択先となる グリフ エリア は、 領域に流し込まれたコンテンツによって生成される。

値: <font-size>
初期値: 1c
適用対象: p, span; 注 も参照
継承: はい。ただし、10.2.21.1 フォントサイズの特別な意味論 を除く
百分率: region 要素でない場合は、 最も近い祖先の スタイル付き 要素 の算出フォントサイズに対する相対値。それ以外の場合は、 算出セルサイズ に対する相対値
アニメーション可能: 離散
意味論上の根拠: fontSize の由来

単一の <length> 値が指定される場合、この長さは、 グリフの EM 正方形の水平サイズと垂直サイズを等しく決定する。 2 つの <length> 値が指定される場合、最初の値は、 水平方向の サイズを決定し、2 番目の値は垂直方向のサイズを決定する。

水平サイズと垂直サイズが個別に表される場合、 <length> 値の単位は同じでなければならない。

注:

グリフの EM 正方形は、慣例的に、そのグリフを含むフォントの EM 正方形として 定義される。すなわち、 グリフは、そのフォントの EM 正方形とは異なる EM 正方形を持たない。

相対的な <length> 値で、 この属性に現れるもの、すなわち百分率(%)、セル (c)、または EM(em)単位で表された値は、 参照される 2 次元のサイズ値を基準として解決される。この値は 2 つの 成分、幅の 成分 と 高さの 成分 からなる。相対単位が百分率の場合、 参照される値は、最も近いスタイル付き祖先要素の フォントサイズの算出値、または 算出セルサイズ のいずれかである。 相対単位がセル(c)の場合、参照される値は、 算出セルサイズ である。 相対単位が EM(em)の場合、参照される値は、 百分率単位が使用されたものとして 決定される。ここで、1em は 100% に等しい。

単一の相対的な <length> 値が指定される場合、 この <length> は、高さの 成分 を、参照される値について用いて解決される。 2 つの相対的な <length> 値が指定される場合、 最初の <length> は、幅の 成分 を、参照される値について用いて解決され、 2 番目の <length> は、高さの 成分 を、参照される値について用いて解決される。

注:

異方的なフォントの拡大縮小、すなわち、フォントを独立した(かつ異なる)水平サイズと 垂直サイズに拡大縮小することは、 さまざまな文脈で使用されることが想定される。例えば、 著者が幅の狭い、または幅の広い書体を合成したい場合や、 正方形ではないセル単位に基づくフォントサイズを使用したい場合などである。

注:

提示プロセッサ は、グリフを拡大縮小し、 フォントリソースで定義された EM 正方形の高さが、 算出されたフォントサイズの高さに一致するようにすることが期待される。その際、 フォントに適したアルゴリズムを使用する。異方的なフォントの拡大縮小が 使用される場合、すなわち算出されたフォントサイズの幅が高さと異なる場合は、 提示プロセッサは、さらに、 EM 正方形を幅と高さの比率で異方的に拡大縮小し、その結果として、 提示されるグリフも、 同じ比率で拡大縮小されることを保証することが期待される。

フォントサイズを表すために使用する <length> 値は、 非負でなければならない。

この属性の値が、c 単位を <length> 成分 に指定する場合、 その値は、高さ(のみ)、または幅と高さ(の両方)を、 セル 長さ単位について用いて解決される。その単位の定義は 10.3.22 <length> に従う。すなわち、 算出セルサイズ を用いて解決される。

注:

例えば、段落(p)要素 P を考える。 算出セルサイズ が (24px,36px) であり、 tts:fontSize="1c" が P に指定されている場合、 tts:fontSize の算出値は、 (36px,36px) に解決される。一方、tts:fontSize="1c 1c" が、 P に指定されている場合、 算出値は (24px,36px) に解決される。

この属性の値が、em 単位を <length> 成分 に指定する場合、 等価な百分率値が指定されたものとして扱う。ここで、1em は、 100% に等しい。

注:

例えば、段落(p)要素の子である span 要素 S を考える。 その段落要素を P とする。 P における tts:fontSize の算出値が (18px,24px) であり、 tts:fontSize="1em" が S に指定されている場合、これは、 100% を指定することと等価であり、 (24px,24px) に解決される。一方、tts:fontSize="1em 1em" が、 S に指定されている場合、 これは 100% 100% を指定することと等価であり、(18px,24px) に解決される。

注:

span に適用されることに加えて、 このプロパティの算出値は、 p 要素上では、 次の属性に 関連付けられたスタイルプロパティの値を解決するために使用される: tts:lineHeight 属性。その規定については、 10.2.27 tts:lineHeight を参照。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出されたフォントサイズとサポートされるフォントサイズとの間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、0(単一の長さ指定)または [0,0](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">
  さあ、グラスを満たそう<br/>
  糖蜜とインクで、<br/>
  ほかのものでもいい<br/>
  飲んで <span tts:fontSize="24px">おいしい</span> ものなら。
</p>

表示例 – フォントサイズ
TTML fontSize スタイルプロパティ
10.2.21.1 フォントサイズの特別な 意味論

この属性に関連付けられたプロパティの算出値は、2 要素のタプルからなり、 その各要素は、幅と高さの 成分 の算出値を、フォントサイズについてそれぞれ表す。

span 要素に適用され、 その要素の tts:ruby の算出値が、 textContainer または text のいずれかである場合、 算出値の解決において、 tts:fontSize には、以下の特別な 継承 規則が適用される。

ルビテキストコンテナー は、 それが、 明示的 であるか 暗黙的 であるかにかかわらず、 tts:fontSize を、 親から継承しない。 代わりに、それが 明示的なルビ テキストコンテナー であり、 tts:fontSize 属性を指定していない場合、または、 それが、 暗黙的なルビテキストコンテナー である場合、 算出値の 50% に等しい値が適用される。対象のプロパティは tts:fontSize であり、 最も近い祖先の ルビコンテナー における算出値を用いる。 それ以外の場合は、指定値が適用される。

span 要素において、算出 値が、 tts:ruby について text であり、 さらに、 tts:fontSize 属性を指定していない場合、 その要素は算出 値を、tts:fontSize について、その親の ルビテキストコンテナー から継承する。 その親が、明示的な ものか、 暗黙的な ルビテキストコンテナー かには関係しない。

10.2.22 tts:fontStyle

tts:fontStyle 属性は、選択されたグリフに適用する フォントスタイルを定義するスタイルプロパティを指定するために使用する。選択先となる グリフエリア は、 領域に流し込まれたコンテンツによって生成される。ここで、フォント スタイルの値から、特定の書体またはスタイルのパラメーター設定への対応付けは、 本仕様では決定しない。

値: "normal" | "italic" | "oblique"
初期値: normal
適用対象: p, span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: fontStyle の由来

値 oblique の使用は、 インライン進行方向へのせん断変換を (規定されていない角度で)行うことを表す。

注:

span に適用されることに加えて、 このプロパティの算出値は、 p 要素上では、 次の属性に 関連付けられたスタイルプロパティの値を解決するために使用される: tts:lineHeight 属性。その規定については、 10.2.27 tts:lineHeight を参照。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 normal を使用しなければならない。

次の例は、tts:fontStyle スタイルを示している。

コード断片例 – フォントスタイル
<region xml:id="r1">
  <style tts:extent="331px 84px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  秋、葉が茶色になるころ、<br/>
  ペンとインクを取り、<span tts:fontStyle="italic">それを書き留めよう。</span>
</p>

表示例 – フォントスタイル
TTML fontStyle スタイルプロパティ

10.2.23 tts:fontVariant

tts:fontVariant 属性は、組版上のグリフの変種を 選択できるようにするために使用する。対象となる グリフエリア は、 領域に流し込まれたコンテンツによって生成される。

値: <font-variant>
初期値: normal
適用対象: p, span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: fontVariant の由来

注:

span に適用されることに加えて、 このプロパティの算出値は、 p 要素上では、 次の属性に 関連付けられたスタイルプロパティの値を解決するために使用される: tts:lineHeight 属性。その規定については、 10.2.27 tts:lineHeight を参照。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 normal を使用しなければならない。

次の例は、tts:fontVariant スタイルを示している。

コード断片例 – フォントの変種
<region xml:id="r1">
  <style tts:extent="376px 95px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  跳ねて <span tts:fontVariant="super">上がり</span>、また
  <span tts:fontVariant="sub">下がり</span>、恐怖に苦しんでいる。
</p>

表示例 – フォントの変種
TTML fontVariant スタイルプロパティ

10.2.24 tts:fontWeight

tts:fontWeight 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、選択されたグリフに適用するフォントの太さを定義する。選択先となる グリフエリア は、 領域に流し込まれたコンテンツによって生成される。ここで、フォントの 太さの値から、特定の書体または太さのパラメーター設定への対応付けは、 本仕様では決定しない。

値: "normal" | "bold"
初期値: normal
適用対象: p, span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: fontWeight の由来

注:

span に適用されることに加えて、 このプロパティの算出値は、 p 要素上では、 次の属性に 関連付けられたスタイルプロパティの値を解決するために使用される: tts:lineHeight 属性。その規定については、 10.2.27 tts:lineHeight を参照。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 normal を使用しなければならない。

次の例は、tts:fontWeight スタイルを示している。

コード断片例 – フォントの太さ
<region xml:id="r1">
  <style tts:extent="376px 95px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  君が彼女を訪ねたと聞いた、<br/>
  <span tts:fontWeight="bold">そして彼に私のことを話したとも:</span><br/>
  彼女は私の人柄を褒めてくれた<br/>
  <span tts:fontWeight="bold">けれど泳げないと言った。</span>
</p>

表示例 – フォントの太さ
TTML fontWeight スタイルプロパティ

10.2.25 tts:ipd

tts:ipd 属性は、 インライン進行寸法、より簡潔には ipd を、 領域に流し込まれたコンテンツによって生成されるエリアについて指定するために使用する。

注:

インライン進行寸法 という用語は、書字モードに相対的な 方法で解釈され、 ipd は常にインライン進行方向の 距離に対応する。したがって、横書きモードでは、ipd は、 水平方向の距離を表し、 縦書きモードでは、ipd は垂直方向の距離を表す。 ここで、水平と垂直は常に絶対的な意味で解釈される。

値: <measure>
初期値: auto
適用対象: body, div, p, span
継承: いいえ
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: ipd の由来

<measure> が <length> 値として表される場合、その値は非負でなければならない。

tts:ipd 属性が span 要素に指定され、 その要素に適用される tts:display プロパティの算出値が、 inlineBlock ではない場合、 tts:ipd の意味論は、適用される背景色または背景画像の インライン進行寸法を計算する際にのみ適用される。 ただし、生成されるエリアのコンテンツ矩形の寸法は変更されない。

この属性の <length> 式で百分率値が 使用される場合、 該当する 絶対 寸法 を、生成されるエリアの包含エリア (最も近い祖先エリア)について用いて解決される。

注:

この属性で使用する <length> 式は、 書字モードに相対的な 特定の寸法に関連付けられ、その寸法は 絶対寸法 に、 適用される書字モードに従って解決される。その 絶対寸法 が水平方向(垂直方向)である場合、 百分率値は、同じ水平方向(垂直方向)の 絶対寸法 を、 参照エリア(最も近い祖先エリア)について用いて解決される。

次の例は、tts:ipd スタイルを示している。

コード断片例 – インライン進行寸法
<p tts:fontSize="24px" tts:lineHeight="48px" tts:ipd="300px">
  森が <span tts:display="inlineBlock" tts:ipd="150px">緑に染まり始める</span> ...
</p>

注:

上記の例では、tts:ipd 属性は、p 要素上で、 段落によって生成されるブロックエリアのコンテンツ矩形の幅に 固定の寸法を割り当てる。一方、 tts:ipd 属性は、span 要素上で、 span によって生成されるインラインブロックエリアのコンテンツ矩形の幅に 固定の寸法を割り当てる。

10.2.26 tts:letterSpacing

tts:letterSpacing 属性は、 グリフエリア 間の公称距離を増減させるスタイルプロパティを指定するために使用する。

字間は行エリアの始端と終端では効果を持たず、 送り量がゼロのグリフには適用してはならない。さらに、字間によって、通常は接続されている グリフ、 例えば筆記体の文字体系や筆記体フォントで使用されるグリフが、切り離されてはならない。

字間は、カーニングおよび両端揃えとは独立して適用される。 使用されるフォント、 提示される文字体系、および提示プロセッサの機能に応じて、 字間に加えてカーニングと 両端揃えのいずれか、または両方を適用してよい。

値: "normal" | <length>
初期値: normal
適用対象: span; 注 も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: letterSpacing の由来

値 normal は、<length> 値としてゼロ (0) を指定することに対応する。 すなわち、隣接するグリフ間の間隔を広げることも詰めることもしない。

<length> 値が正のスカラーとして表される場合、 隣接するグリフ間の空間は、そのスカラー値に等しい量だけ さらに広げられる。 負のスカラーとして表される場合、 隣接するグリフ間の空間は、そのスカラー値に相当する量だけ さらに詰められる。その結果、 グリフエリア が重なる可能性があるが、詰める量の最大値は、 実効的な送り量がゼロ (0) となる量である。

この属性に関連付けられた字間の算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 1 次元のユークリッド距離が、 算出された字間とサポートされる字間との間で最小になる値を意味する。 ある辺の算出値から等距離にある最も近いサポート値が 複数存在する場合は、0 に最も近い値を使用する。

tts:letterSpacing スタイルを、以下の 例に示す。

コード断片例 – 字間
<p>
  WAVE<br/>
  <span tts:letterSpacing="20px">WAVE</span>
</p>

表示例 – 字間
TTML letterSpacing スタイルプロパティ

10.2.27 tts:lineHeight

tts:lineHeight 属性は、領域に流し込まれたコンテンツによって 生成される行エリア間のベースライン間隔を 定義するスタイルプロパティを指定するために使用する。

注:

例外的に、トークン lineHeight または 行高 という語における 高さ は、 関連付けられた行エリアの ブロック進行寸法 に対応する 軸を指す。この軸は、 横書きモードでは垂直軸であるが、縦書きモードでは水平軸である。

注:

行高 に関する追加情報については、11.3.2.2 行の積み重ね を 参照。

値: "normal" | <length>
初期値: normal
適用対象: p
継承: はい。ただし、特別な 意味論 を参照
百分率: この要素のフォントサイズに対する相対値
アニメーション可能: 離散
意味論上の根拠: lineHeight の由来

注:

p 要素に明示的に 適用されることに加えて、このスタイルプロパティの値は、 span 要素と 匿名 span に継承される。 これらが p 要素の子孫である場合、その値は、 それらが生成する 半行間 を、 インラインエリア について計算するために使用される。これについては [XSL-FO 1.1] の §4.5、および [CSS2] の §10.8.1 を参照。

この属性の値が normal の場合、 このスタイルプロパティの 使用値 は、以下のように 決定する:

  1. P を、このスタイルプロパティが適用される p 要素と する。

  2. FF を、次のプロパティの算出値とする: tts:fontFamily スタイルプロパティ。ただし、P 上の値を用いる。

  3. FS を、次のプロパティの算出値とする: tts:fontSize スタイルプロパティ。ただし、 P 上の値を用いる。

  4. F0 を、各フォントファミリーを順次対応付けて最初に得られるフォントとする。対応付けは、 FF 内の各ファミリーから、利用可能なフォントの集合に対して行う。 ここで、利用可能なフォントの集合は、必要に応じて制限され、 以下の算出値を満たすものとする: tts:fontSelectionStrategy, tts:fontStyle, tts:fontWeight, および tts:fontVariant, これらは P のスタイルプロパティである。

  5. F0 に関連付けられたフォントメトリクスが、上昇量 A、下降量 D、およびラインギャップ G を指定する場合、 LH を scaled(A)、scaled(D)、および scaled(G) の和に設定する。 ここで、scaled(X) は、フォントメトリクス X をフォントサイズ FS に従って拡大縮小したものを表す。

    注:

    ここで参照する上昇量、下降量、およびラインギャップのパラメーターは、 それぞれ sTypoAscender、 -sTypoDescender、すなわち -1 に sTypoDescender を掛けたもの、および sTypoLineGap フィールドに対応することを意図している。 これらは OS/2 テーブルのフィールドであり、 OpenType [OFF] フォントに含まれる(または、他のフォント形式での 等価なものを指す)。さらに、一般に、 scaled(A) と scaled(D) という式は、 text-altitude と text-depth という エリア特性に対応することを意図している。これらは [XSL-FO 1.1] で、 値 use-font-metrics が、関連付けられたプロパティ text-altitude と text-depth にそれぞれ使用される場合の特性である。

  6. それ以外の場合、LH は実装依存と見なされる。ただし、 実装固有の要件がない場合は、 LH を FS の 125% に設定することを推奨する。

  7. このスタイルプロパティの 使用値 を、 LH に設定する。

注:

コンテンツの著者が、 normal の解釈が異なる可能性、例えば、 利用可能なフォントの集合の違いによるものを避けたい場合、 <length> 値の式を使用して、 行高の値を明示的に指定することを推奨する。

本仕様は、上記のアルゴリズムが [XSL-FO 1.1] および [CSS2] と互換性を持つことを意図している。

<length> として指定する場合、その長さは、 非負でなければならない。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出された行高とサポートされる行高との間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、0 から最も遠い値、すなわち最大の行高を 使用する。

次の例は、tts:lineHeight スタイルを示している。

コード断片例 – 行高
<region xml:id="r1">
  <style tts:extent="255px 190px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="start"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="16px"/>
  <style tts:lineHeight="32px"/>
</region>
...
<p region="r1">
  彼は象を見たと思った、<br/>
  横笛を練習している象を:<br/>
  もう一度見ると、それは<br/>
  妻からの手紙だった。<br/>
  "ようやく分かった" と彼は言った、<br/>
  "人生の苦さが。
"</p>

表示例 – 行高
TTML lineHeight スタイルプロパティ
10.2.27.1 行高の特別な 意味論

この属性の指定値が normal の場合、算出値は、 指定値となる。したがって、 継承の意味論を適用する際には、値 normal が継承値となる。 ただし、この算出値を段落のレイアウトに使用する際には、さらに 処理して、 使用値 を、 上述の方法で取得する。

10.2.28 tts:lineShear

tts:lineShear 属性は、 せん断変換を適用するかどうか、およびその方法を決定するスタイルプロパティを指定するために使用する。対象となる各 行エリア は、 p 要素によって生成される。

値: <percentage>
初期値: 0%
適用対象: p
継承: はい
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: lineShear の由来

この属性が適用される各 行エリア について、2D せん断変換を、 その 行エリア に適用する。その規定は 10.4.5.3 せん断の計算 に従う。

次の例は、tts:lineShear スタイルを示している。

コード断片例 – 行のせん断
<region xml:id="right" tts:writingMode="tbrl" tts:displayAlign="center" .../>
<region xml:id="left" tts:writingMode="tbrl" tts:displayAlign="center" .../>
...
<div>
  <p region="right" tts:lineShear="0%">
    山の<span tts:ruby="container"><span tts:ruby="base">遭難</span><span
    tts:ruby="text">そうなん</span></span><br/>
    <span tts:ruby="container"><span tts:ruby="base">最多</span><span
    tts:ruby="text">さいた</span></span><span tts:ruby="container"><span
    tts:ruby="base">年</span><span tts:ruby="text">ねん</span></span>
  </p>
  <p region="left" tts:lineShear="16.67%">
    山の<span tts:ruby="container"><span tts:ruby="base">遭難</span><span
    tts:ruby="text">そうなん</span></span><br/>
    <span tts:ruby="container"><span tts:ruby="base">最多</span><span
    tts:ruby="text">さいた</span></span><span tts:ruby="container"><span
    tts:ruby="base">年</span><span tts:ruby="text">ねん</span></span>
  </p>
</div>

表示例 – 行のせん断 - ルビ付きの縦書き行
TTML lineShear スタイルプロパティ

注:

上記の例では、黄色の線は、特定の提示プロセッサが、 レイアウトの問題のデバッグを 補助するために作成した装飾である。このような線は、本仕様で定義する規範的な TTML 提示の 一部ではない。 ここでは、装飾は次のものを示している: (1) 外側の ブロック エリア の境界。 これらは region 要素によって生成される。 (2) 行エリア の境界。これらは、外側の ブロックエリア の子であり、 p 要素によって生成される。そして、 (3) インラインエリア の境界。これらは 行エリア の子であり、 暗黙的な ルビテキストコンテナー によって生成される。

この例は、せん断(傾斜)変換が、対象となる各行エリアの全体に 適用される様子を示している。ただし、 行にせん断を適用する場合、その行に割り当てることのできる 利用可能な距離、すなわち、せん断変換前の最大インライン進行寸法の 長さは、B*sin(θ) だけ減少する。ここで、 B は行エリアのブロック進行寸法、 θ はせん断角である。これは、その行を、 段落の外側のブロックエリアの コンテンツ矩形内に収めるためである。

10.2.29 tts:luminanceGain

tts:luminanceGain 属性は、領域の絶対輝度を決定するために 使用する。これは、 その提示に、[SRGB] 色空間が提供するよりも広いダイナミックレンジが必要であり、 かつ、その提示に絶対輝度値が必要な場合に使用する。

注:

絶対輝度は、絶対的な 基準白色点の 輝度である 80 cd∙m-2 にゲイン係数を適用することで決定される。これは [SRGB] 色空間の値であり、 出力表示装置の実際の 白色輝度ではない。

このゲインを指定する機能がないと、[SRGB] 空間で指定された色は、 はるかに高いピーク輝度での表示を意図した ハイダイナミックレンジ(HDR)コンテンツと、 確実に合成することができない。その例として、知覚量子化方式の電気光 伝達関数(PQ EOTF)を使用するコンテンツがあり、 これは [ITU BT.2100-1] で規定されている。具体的には、

  • [SRGB] の色は、拡大縮小されないままで、 シーンの平均輝度が、 80 cd∙m-2 を超える場合、暗すぎるように見えることがある。また、

  • [SRGB] の色は、一様に拡大縮小され、 任意の大きな 輝度、例えば 10,000 cd∙m-2 にされる場合、明るすぎるように見えることがある。

値: <non-negative-number>
初期値: 1.0
適用対象: region
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散; 連続
意味論上の根拠: luminanceGain の由来

tts:luminanceGain 属性に関連付けられた算出値は、 関連付けられた region 内のすべてのピクセルのうち、 [SRGB] 色値から絶対輝度値への変換が必要なものに適用される。 絶対輝度のピクセル値を 生成する要件は、文書 処理コンテキスト に由来する。

注:

処理によって絶対輝度のピクセル値を生成する画像、例えば、 [PQ PNG] に適合する画像が、テキストや、 処理によって [SRGB] ピクセル値を生成する画像も含む領域に配置され、絶対 輝度の出力が必要な場合、 [SRGB] ピクセル値のみが変換される。

tts:luminanceGain を適用する場合、線形光出力値 (Cr, Cg, Cb) は、成分 ごとに、 領域のピクセルについて次のように定義される: 80 ∙ tts:luminanceGain ∙ (r, g, b)。ここで、(r, g, b) は、そのピクセルの正規化された線形 [SRGB] 成分 である。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

次の例は、tts:luminanceGain スタイルを示している。

コード断片例 – 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">
  領域1 "r1" 内のテキストの絶対輝度は、3.8 倍
  明るくなるべきである。比較対象は、領域2 "r2" 内のテキストの絶対輝度である。 
</p>
<p region="r2">
  輝度を変えない調整 (1.0) を使用した別のテキスト。
</p>

輝度調整の計算例を以下に示す。

例 – tts:luminanceGain を使用した絶対線形光出力の計算
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 によって適用されるガンマ補正である。

注:

[SRGB] ピクセルを HDR ピクセル上に合成する詳細な例を、 tts:luminanceGain の使用について、 附録 Q.1 知覚量子化方式 に示す。

注:

10.3.9 <color> で規定するように、合成、 すなわち描画された 文書インスタンス の領域を、 対象の媒体上に合成する処理は、通常、ピクセルの 成分 を、 対象の媒体の逆 EOTF で符号化したものを使用して実行される。ピクセルの 成分 を、 線形光で表したものは使用しない。その結果、半透明の領域を使用すると、 対象の媒体が使用する逆 EOTF に応じて、知覚上異なる結果が 生じることがある。特に、ピクセル間の輝度に大きな差があり、 描画された 文書インスタンス と対象の媒体との間でその差が生じる場合が該当する。 したがって、著者には、半透明の要素が関わる視覚的な結果を 考慮することが推奨される。

10.2.30 tts:opacity

tts:opacity 属性は、 不透明度(または、逆に透明度)を定義するスタイルプロパティを指定するために使用する。 対象は、領域、または領域に流し込まれたコンテンツによって生成されるエリアに関連付けられた描画マークである。

視覚的な媒体上に提示する場合、領域の不透明度は、一様に、かつ、 線形の尺度で、 その領域を対象とするコンテンツが生成するすべての描画マークに適用される。 これは、コンテンツ要素 固有の不透明度を、 そのコンテンツが生成するエリアに適用した後に行う。

値: <alpha>
初期値: 1.0
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散; 連続
意味論上の根拠: opacity の由来

次の例は、tts:opacity スタイルを示している。

コード断片例 – 不透明度
<p>
  <span tts:opacity="1.00">そして </span>
  <span tts:opacity="0.75">その後 </span>
  <span tts:opacity="0.50">そこには </span>
  <span tts:opacity="0.25">誰も </span>
  <span tts:opacity="0.00">いなくなった。</span>
</p>

表示例 – 不透明度
TTML opacity スタイルプロパティ

10.2.31 tts:origin

tts:origin 属性は、 領域エリアの原点の x 座標と y 座標を、 ルート コンテナー領域 の原点を基準として指定するために使用する。

tts:origin と tts:position の両属性が、 要素に指定され、tts:position が、 サポートされるプロパティである場合、 tts:origin 属性は、提示 処理において無視しなければならない。

値: <origin>
初期値: auto
適用対象: region; また、 特別な使用法 を参照。対象は div および p
継承: いいえ
百分率: ルート コンテナー領域 の幅と高さに対する相対値
アニメーション可能: 離散
意味論上の根拠: origin の由来

この属性の値が 2 つの <length> 指定からなる場合、 それらを x 座標と y 座標として解釈しなければならない。ここで、 最初の指定は、 x 座標であり、2 番目の指定は y 座標である。

この属性の値が auto の場合、スタイルプロパティの 算出値は、次の領域の原点と同じであると見なさなければならない: ルートコンテナー領域。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出された原点とサポートされる原点との間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、[0,0] に最も近い値、すなわち座標 空間の原点に最も近い値を使用する。

次の例は、tts:origin スタイルを示している。

コード断片例 – 原点
<region xml:id="r1">
  <style tts:origin="40px 40px"/>
  <style tts:extent="308px 92px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  "食事ですって!" 彼女は竜のように怒って叫んだ。<br/>
  "泡だらけのワインを飲み込むなんて!<br/>
   テーブルクロスに向かってにやつくなんて!"
</p>

表示例 – 原点
TTML origin スタイルプロパティ
10.2.31.1 原点の特別な使用法

tts:origin が例外的に div または p に指定される場合、11.1.2.1 インラインアニメーションの特別な 意味論 が適用される。

10.2.32 tts:overflow

tts:overflow 属性は、 領域の子孫エリアがその範囲からオーバーフローする場合に、領域エリアをクリップするかどうかを 定義するスタイルプロパティを指定するために使用する。

値: "visible" | "hidden"
初期値: hidden
適用対象: region
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: overflow の由来

この属性の値が visible の場合、コンテンツは、 対象の領域の外側でクリップするべきではない。 値が hidden の場合、コンテンツは、 対象の領域の外側でクリップするべきである。

注:

領域のコンテンツ矩形に関連付けられたコンテンツが生成する描画マークは、 そのコンテンツ矩形の 外側に描画され、領域のパディング矩形や境界矩形と交差することがある。 この場合、 tts:overflow 属性の影響は受けない。このような描画マークが領域からの オーバーフローの候補となるのは、 領域の範囲の外側に広がる場合に限られる。その範囲は、領域の境界矩形と一致し、 その内側には、 領域のパディング矩形があり、さらにその内側には領域のコンテンツ矩形がある。

注:

コンテンツの著者が手動改行要素 br を使用しない限り、 ある領域の段落は、その領域内に複数の行エリアを生成しない。 これは、その領域の tts:overflow および tts:wrapOption スタイルプロパティの算出値が、それぞれ visible および noWrap で ある場合に該当する。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 hidden を使用しなければならない。

次の例は、tts:overflow スタイルを示している。

コード断片例 – オーバーフロー
<?xml version="1.0"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" 
    xml:lang="en" tts:extent="320px 240px">
  <head>
    <styling>
      <style xml:id="s1" tts:backgroundColor="black" tts:padding="6px"/>
      <style xml:id="s2" tts:color="red" tts:backgroundColor="white" 
             tts:wrapOption="noWrap" tts:fontFamily="proportionalSansSerif" 
             tts:fontSize="10px"/>
    </styling>
    <layout>
      <region xml:id="r1" style="s1" tts:extent="100px 40px" tts:origin="20px 20px" 
              tts:overflow="visible"/>
      <region xml:id="r2" style="s1" tts:extent="100px 40px" tts:origin="20px 180px" 
              tts:overflow="hidden"/>
    </layout>
  </head>
  <body>
    <div>
      <p region="r1" style="s2">
  "でも少し待って" と牡蠣たちは叫んだ、<br/>
  "おしゃべりを始める前に;
      </p>
      <p region="r2" style="s2">
  息を切らしている者もいるし、<br/>
  私たちはみんな太っているんだから!"
      </p>
    </div>
  </body>
</tt>

表示例 – オーバーフロー
TTML overflow スタイルプロパティ

注:

上記の例では、tts:noWrap を、 noWrap に設定して、自動的な行の折り返し(改行)を防いでいる。 これが指定されていなければ、オーバーフローは、 インライン進行方向ではなくブロック進行方向に発生する。

10.2.33 tts:padding

tts:padding 属性は、領域、または領域に流し込まれたコンテンツによって生成されるエリアの、 1 つ以上の辺にパディング(または内側の余白)を指定するために使用する。

注:

パディングは、領域エリアの内側に適用される。すなわち、領域エリアの コンテンツ矩形は、 領域に適用されたパディングが存在することによって縮小される。

値: <padding>
初期値: 0px
適用対象: body, div, image, p, region, span
継承: いいえ
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: padding の由来

この属性の値が 1 つの <length> 指定からなる場合、 その長さは、対象となるエリアのすべての辺に適用される。値が、 2 つの <length> 指定からなる場合、最初の値は、 前側辺と後側辺に 適用され、2 番目の値は始端辺と終端辺に適用される。 3 つの <length> 指定が与えられる場合、 最初の値は、 前側辺に適用され、2 番目の値は始端辺と終端辺に適用され、3 番目の値は、 後側辺に適用される。 4 つの <length> 指定が与えられる場合、それらは、 前側辺、終端辺、 後側辺、および始端辺にそれぞれ適用される。

注:

百分率値は、適用先の領域の寸法に対する相対値である。 例えば、前側辺と後側辺が、 領域の上辺と下辺に対応する場合、これはラテン文字のテキストで、 tts:writingMode が "lrtb" に等しい場合に該当するが、 これらのいずれかの辺に適用される百分率値は、領域の高さに 対する相対値となる。逆に、前側辺と後側辺が、 領域の右辺と左辺に対応する場合、これは日本語のテキストで、 tts:writingMode が、 "tbrl" に等しい場合に該当するが、これらのいずれかの辺に適用される百分率値は、 領域の幅に対する相対値となる。

パディングを表すために使用する <length> 値は、 非負でなければならない。

パディングが span 要素に適用され、 その要素のコンテンツが、 複数の行エリアに分割される場合、指定されたパディングを各改行境界に 適用しなければならない。一方、 単一の行エリア内で、その要素によって複数のインラインエリアが生成される場合、 指定されたパディングは、 包含するブロックレベル要素のインライン進行順において、行エリア内で最初および(または) 最後に生成されるインラインエリアに適用しなければならない。

注:

span 要素におけるパディングの動作は、 次の使用に対応する: CSS の box-decoration-break プロパティについて、改行では値 clone を使用し、 端部以外、すなわち最初でも最後でもない インラインエリアの境界では値 slice を使用する。この定義は [CSS Fragmentation] の §5.4 に従う。

百分率値が、この属性の <length> 成分 に使用される場合、 以下のように解決する:

  • region 要素に適用される場合、 百分率は、該当する、 絶対寸法 を、領域の解決済みの範囲について用いた相対値となる。 ただし、その寸法が領域のコンテンツの サイズに依存する場合を除く。この場合、百分率は、 適用される初期値の対応する 成分 に解決される;

  • その他のすべての要素に適用される場合、百分率は、対応する、 絶対寸法 を、最も近い祖先エリアについて用いた相対値となる。 ただし、その寸法が、そのエリアのコンテンツの サイズに依存する場合を除く。この場合、百分率は、 適用される初期値の対応する 成分 に解決される。

注:

各 <length> 成分 は、この属性で使用される際、 書字モードに相対的な特定の辺に関連付けられ、その辺は 絶対寸法 に、 適用される書字モードに従って解決される。その 絶対寸法 が水平方向(垂直方向)である場合、 百分率値は、同じ水平方向(垂直方向)の 絶対寸法 を、 参照エリア(ルートコンテナー領域または最も近い祖先エリア)について用いて解決される。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 1 次元のユークリッド距離が、 算出されたパディングとサポートされるパディングとの間で、辺ごとに最小になる値を意味する。 ある辺の算出値から等距離にある最も近いサポート値が 複数存在する場合は、0 に最も近い値、すなわち最小の パディングを使用する。

次の例は、tts:padding スタイルを示している。

コード断片例 – region のパディング
<region xml:id="r1">
  <style tts:extent="446px 104px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
  <style tts:padding="10px 40px"/>
</region>
...
<p region="r1" tts:backgroundColor="red">
  スナークにぴったりの場所だ!私は二度そう言った:<br/>
  それだけでも乗組員は勇気づくはずだ。<br/>
  スナークにぴったりの場所だ!私は三度そう言った:<br/>
  私が三度言うことは本当だ。
</p>

パディングが適用されるエリアを描画する際、そのエリアに適用される 背景色は、エリアのパディング部分にも描画される。

表示例 – region のパディング
TTML padding スタイルプロパティ

注:

上記の例は、パディングが領域エリアの内側に適用される様子を示している。具体的には、 10px のパディングが前側(上)辺と後側(下)辺に適用され、 40px のパディングが始端(左)辺と終端(右)辺に適用される。 これらを、 領域エリアの範囲から差し引くと、領域のコンテンツ矩形は、 幅 366px、 高さ 84px となる。領域の黒い背景色は、 領域のパディング矩形に現れ、 段落の赤い背景色は、領域のコンテンツ矩形に現れる。

コード断片例 – span のパディング
<region xml:id="r1">
  <style tts:extent="446px 72px"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:backgroundColor="green"/>
</region>
...
<p region="r1">
  <span tts:backgroundColor="black" tts:color="white" tts:padding="0c 0.5c">
  乗組員は全員そろった: 靴磨きもいた--<br/>
  ボンネットやフードを作る職人も--
  </span>
</p>

パディングが適用される span を描画する際、パディングは、生成される各行エリアに、 独立して適用される。

表示例 – span のパディング
TTML padding スタイルプロパティ

10.2.34 tts:position

tts:position 属性は、位置決め矩形を基準とした領域エリアの位置を 指定する別の方法として使用する。

tts:position と tts:origin の両属性が、 要素に指定され、tts:position がサポートされるプロパティである場合、 tts:origin 属性は、提示 処理において無視しなければならない。

値: <position>
初期値: top left
適用対象: region; また、 特別な使用法 を参照。対象は div および p
継承: いいえ
百分率: 本文を参照
アニメーション可能: 離散; 連続
意味論上の根拠: position の由来

水平方向の位置オフセットの百分率値の 成分 は、 次の幅を基準とする: 位置決め矩形の幅から、関連付けられた領域の幅を差し引いた値。 垂直方向の位置オフセットの百分率値の 成分 は、 次の高さを基準とする: 位置決め矩形の高さから、関連付けられた領域の高さを差し引いた値。

以下の画像は、位置の値 "75% 50%" を示している。破線の矩形は、 位置決め矩形を表し、 実線の矩形は、配置される領域を表す。この場合、領域は、 その幅の 75% の位置にある垂直線が、 位置決め矩形の幅の 75% の位置にある垂直線と一致し、 その高さの 50% の位置にある水平線が、 位置決めエリアの幅の 50% の位置にある垂直線と一致するように配置される。

百分率に基づく位置決め
百分率を使用する TTML position スタイルプロパティ

region 要素に指定される場合、 位置決め矩形は、ルートコンテナー領域 のコンテンツ矩形に対応する。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、サポートされる値のうち 最も近い値を使用しなければならない。

注:

この文脈において、サポートされる値のうち最も近い値 とは、 ユークリッド距離が、 算出された位置とサポートされる位置との間で最小になる値を意味する。 算出値から等距離にある最も近いサポート値が 複数存在する場合は、[0,0] に最も近い値、すなわち座標 空間の位置に最も近い値を使用する。

次の例は、tts:position スタイルを示している。この例では、領域を、 水平方向の寸法で 中央に配置し、垂直方向の寸法では、その下辺を、 位置決め矩形の下辺から 10% 上方にオフセットしている。 ここで、このオフセットは、位置決め矩形の高さと、 領域の高さとの差の 10% に等しい。

コード断片例 – 位置
<tt tts:extent="640px 480px">
...
<region xml:id="r1">
  <style tts:position="center bottom 10%"/>
  <style tts:extent="308px 92px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  "食事ですって!" 彼女は竜のように怒って叫んだ。<br/>
  "泡だらけのワインを飲み込むなんて!<br/>
   テーブルクロスに向かってにやつくなんて!"
</p>

表示例 – 位置
TTML position スタイルプロパティ

10.2.34.1 位置の特別な使用法

tts:position が例外的に div または p に指定される場合、11.1.2.1 インラインアニメーションの特別な 意味論 が適用される。

10.2.35 tts:ruby

tts:ruby 属性は、ルビのスタイリングの適用を 指定するために使用する。

値: "none" | "container" | "base" | "baseContainer" | "text" | "textContainer" | "delimiter"
初期値: none
適用対象: span
継承: いいえ
百分率: 該当なし
アニメーション可能: なし
意味論上の根拠: ruby の由来

この属性の値が none の場合、ルビの意味論は適用されない。それ以外の場合は、 次の表に列挙されたルビの意味論が、 表 10-1 – ルビの意味論の対応付け に従って適用される。

この属性に関連付けられたプロパティの算出値がサポートされていない場合、 提示プロセッサ は、値 none を使用しなければならない。

表 10-1 – ルビの意味論の対応付け
分類 tts:ruby 注釈 [Ruby] CSS display [CSS Ruby]
ルビコンテナー container ruby ruby
ルビ親文字コンテンツ base rb ruby-base
ルビテキストコンテンツ text rt ruby-text
ルビ親文字コンテナー baseContainer rbc ruby-base-container
ルビテキストコンテナー textContainer rtc ruby-text-container
ルビのフォールバック区切り子 delimiter rp none | inline

提示処理においては、文書処理コンテキスト が、 提示モードを、通常またはフォールバックのいずれかに決定する。 ルビテキスト注釈の通常の提示処理を行う場合、区切り子のコンテンツは、 インラインエリアを生成してはならない。 ルビのフォールバック提示を行う場合、区切り子と、区切り子以外のルビコンテンツ(親文字と テキスト)の両方が、通常のインラインエリアを生成しなければならない。 提示プロセッサがルビの提示をサポートしない場合は、ルビのフォールバック 提示を行わなければならない。

tts:ruby を使用する場合、以下の入れ子制約が ルビコンテナー に適用される。すなわち、 tts:ruby の算出値が、span 要素について container である場合、 以下が成り立つ:

  • そのすべての祖先要素の tts:ruby の算出値は、 none である;

  • その各子要素の tts:ruby の算出値は、 none ではない;

  • その最初の子要素の tts:ruby の算出値は、 baseContainer または base である;

  • その各 テキストノード の子は、<lwsp> のみを含み、 提示処理において、これを無視しなければならない。これは、 算出値が、 xml:space 属性について、 preserve であるかどうかに関係しない;

tts:ruby を使用する場合、以下の入れ子制約が ルビ親文字コンテナー に適用される。すなわち、 tts:ruby の算出値が、span 要素について baseContainer である場合、 以下が成り立つ:

  • その親要素の tts:ruby の算出値は、 container である;

  • その各子要素の tts:ruby の算出値は、 none ではない;

  • その最初の子要素の tts:ruby の算出値は、 base である;

  • その直前の兄弟は null である(すなわち、直前の兄弟は存在しない);

  • その各 テキストノード の子は、<lwsp> のみを含み、 提示処理において、これを無視しなければならない。これは、 算出値が、 xml:space 属性について、 preserve であるかどうかに関係しない;

tts:ruby を使用する場合、以下の入れ子制約が ルビテキストコンテナー に適用される。すなわち、 tts:ruby の算出値が、span 要素について textContainer である場合、 以下が成り立つ:

  • その親要素の tts:ruby の算出値は、 container である;

  • その各子要素の tts:ruby の算出値は、 none ではない;

  • その最初の子要素の tts:ruby の算出値は、 text または delimiter のいずれかである;

  • その直前の兄弟の tts:ruby の算出値は、 baseContainer または textContainer である;

  • その兄弟のうち、tts:ruby の算出値が、 textContainer であるものは、最大 1 個である;

  • その各 テキストノード の子は、<lwsp> のみを含み、 提示処理において、これを無視しなければならない。これは、 算出値が、 xml:space 属性について、 preserve であるかどうかに関係しない;

tts:ruby を使用する場合、以下の入れ子制約が ルビ親文字コンテンツ に適用される。すなわち、 tts:ruby の算出値が、span 要素について base である場合、以下が成り立つ:

  • その親要素の tts:ruby の算出値は、 container または baseContainer のいずれかである;

  • その直前の兄弟は null である(すなわち、直前の兄弟は存在しない)か、 その直前の兄弟の tts:ruby の算出値は base である;

  • その親要素の tts:ruby の算出値が、 container である場合、 tts:ruby の算出値が base である兄弟は存在しない;

  • そのすべての子孫要素の tts:ruby の算出値は、 none である;

  • その子孫要素には、br 要素が存在しない;

  • その各 テキストノード の子孫は、 U+2028 (LINE SEPARATOR) または U+2029 (PARAGRAPH SEPARATOR) を含まない;

tts:ruby を使用する場合、以下の入れ子制約が ルビテキストコンテンツ に適用される。すなわち、 tts:ruby の算出値が、span 要素について text である場合、以下が成り立つ:

  • その親要素の tts:ruby の算出値は、 container または textContainer のいずれかである;

  • その直前の兄弟は null である(すなわち、直前の兄弟は存在しない)か、 その直前の兄弟の tts:ruby の算出値は base、 text、または delimiter である;

  • その親要素の tts:ruby の算出値が、 container である場合、 tts:ruby の算出値が text である兄弟は存在しない;

  • そのすべての子孫要素の tts:ruby の算出値は、 none である;

  • その子孫要素には、br 要素が存在しない;

  • その各 テキストノード の子孫は、 U+2028 (LINE SEPARATOR) または U+2029 (PARAGRAPH SEPARATOR) を含まない;

tts:ruby を使用する場合、以下の入れ子制約が ルビのフォールバック区切り子 に適用される。すなわち、 tts:ruby の算出値が、span 要素について delimiter である場合、 以下が成り立つ:

  • その親要素の tts:ruby の算出値は、 container または textContainer のいずれかである;

  • その直前の兄弟は null である(すなわち、直前の兄弟は存在しない)か、 その直前の兄弟の tts:ruby の算出値は base または text である;

  • 兄弟のうち、tts:ruby の算出値が、 delimiter であるものは、ちょうど 1 個である;

  • tts:ruby の算出値が delimiter である場合、 そのすべての子孫要素の tts:ruby の算出値は、 none である;

  • その子孫要素には、br 要素が存在しない;

  • その各 テキストノード の子孫は、 U+2028 (LINE SEPARATOR) または U+2029 (PARAGRAPH SEPARATOR) を含まない。

検証を行うコンテンツプロセッサ は、 上記のいずれかの制約への違反を、エラーとして扱わなければならない。 提示処理においては、これらの制約のいずれかへの違反により、 ルビテキスト注釈のフォールバック(インライン) 提示を行うべきである。また、何らかの制約に違反するコンテンツについて、 そのコンテンツが、 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 要素の最大コンテンツモデルに対応する。 その定義は [Ruby] の §2.1 に従うが、 例外として、rtc は実質的に拡張され、 区切り子(rp)の任意の使用を許可する:

ruby
  : rb rt
  | rb rp rt rp
  | rbc rtc rtc?

rbc
  : rb+

rtc
  : rt+
  | rp rt+ rp                            // 拡張対象: [Ruby]

さらに、このモデルは、[Ruby] の §2.6 と、 次の制約に関して整合している: ルビコンテナー の入れ子はサポートされない (これについては上記の入れ子制約を参照)。

注:

マークアップを省略できる機会は、[HTML] で許可されるほど多くはないが、 ここで定義するルビ注釈の形式では、以下の省略形を許可する:

base text =
  baseContainer
    base
  textContainer
    text

base delimiter text delimiter =
  baseContainer
    base
  textContainer
    delimiter text delimiter

base の内容が B であり、 text の内容が T であるとすると、式 base text は、 [HTML] では、以下のさまざまな方法で表すことができる:

<ruby>B<rt>T</ruby>
<ruby>B<rt>T</rt></ruby>
<ruby><rb>B<rt>T</ruby>
<ruby><rb>B</rb><rt>T</ruby>
<ruby><rb>B</rb><rt>T</rt></ruby>
<ruby>B<rtc><rt>T</ruby>
<ruby>B<rtc><rt>T</rtc></ruby>
<ruby>B<rtc><rt>T</rt></ruby>
<ruby>B<rtc><rt>T</rt></rtc></ruby>
<ruby><rb>B<rtc><rt>T</ruby>
<ruby><rb>B<rtc><rt>T</rtc></ruby>
<ruby><rb>B</rb><rtc><rt>T</ruby>
<ruby><rb>B</rb><rtc><rt>T</rtc></ruby>
<ruby><rb>B</rb><rtc><rt>T</rt></ruby>
<ruby><rb>B</rb><rtc><rt>T</rt></rtc></ruby>

一方、TTML2 では、以下の代替表現が可能である:

<span tts:ruby="container">
  <span tts:ruby="base">B</span>
  <span tts:ruby="text">T</span>
</span>

または、それと等価な表現

<span tts:ruby="container">
  <span tts:ruby="baseContainer">
    <span tts:ruby="base">B</span>
  </span>
  <span tts:ruby="textContainer">
    <span tts:ruby="text">T</span>
  </span>
</span>

注:

TTML の構文では、複数の ルビ親文字 コンテンツ を ルビ親文字 コンテナー 内で使用し、複数の ルビテキスト コンテンツ を、 ルビテキストコンテナー 内で使用することを、すべて同じ、 ルビコンテナー 内で許可する。このバージョンの TTML では、 ルビ親文字コンテンツ と、 ルビテキストコンテンツ の対応付けは、その数が、 ルビテキストコンテンツ と、 ルビ親文字コンテンツ とで等しくない場合には、 同じ ルビコンテナー 内であっても未定義とする。

注:

インラインエリア が、提示処理によって、 次の対象から生成される場合、 ルビテキストコンテナー または ルビテキストコンテンツ、その インラインエリア は、 次の 行エリア の子孫となる。その行エリアは、ルビ親文字コンテンツ を含み、その親文字コンテンツに ルビテキストコンテンツ が関連付けられている。

単純なルビ注釈を指定するための tts:ruby の使用方法を、 次の例に示す。

コード断片例 – 単純なルビ
<span tts:ruby="container" tts:rubyAlign="spaceAround">
  <span tts:ruby="base">利用許諾</span>
  <span tts:ruby="text">ライセンス</span>
</span>

表示例 – 単純なルビ
TTML ruby スタイルプロパティ

両側のルビ注釈を指定するための tts:ruby の使用方法を、 次の例に示す。

コード断片例 – 両側ルビ
<span>
  <span tts:ruby="container" tts:rubyAlign="spaceAround">
    <span tts:ruby="baseContainer">
      <span tts:ruby="base">東南</span>
    </span>
    <span tts:ruby="textContainer" tts:rubyPosition="before">
      <span tts:ruby="text">とうなん</span>
    </span>
    <span tts:ruby="textContainer" tts:rubyPosition="after">
      <span tts:ruby="text">たつみ</span>
    </span>
  </span>
  <span>の方角</span>
</span>

表示例 – 両側ルビ
TTML ruby スタイルプロパティ

注:

ルビ注釈の文字間配置モード、例えば、 注音字母 で使用されるものは、 市場からの要件がないため、このバージョンの TTML ではサポートされない。

tts:ruby 属性は、注釈にラテン文字を使用する場合にも使用できる。 例えば、[CLREQ] で説明されているピンインに使用でき、 次の例に示す。

コード断片例 – ピンイン注釈付きのルビ
<p>
<span tts:ruby="container" tts:rubyAlign="center">
  <span tts:ruby="base">周杰伦</span><span tts:ruby="text">Jay Chou</span>
</span>

表示例 – ピンイン注釈を使用するルビ
ピンインを使用する TTML ruby スタイルプロパティ
10.2.35.1 ルビ注釈の特別な 意味論

実装固有の要件がない場合、ルビテキストコンテンツ と ルビ親文字コンテンツ との間の整列に関する制約が、 行エリアからのオーバーフローを引き起こす可能性がある場合は、ルビテキストコンテンツ を、行エリアの始端辺または終端辺から 遠ざける方向に移動することによって解決するべきである。

注:

[JLREQ] の §3.3.8、親文字より長いルビの 調整、 および [CSS Ruby] の §5、端部での効果 に、 追加情報がある。

実装固有の要件がない場合、ルビテキストコンテンツ が ルビ親文字コンテンツ から張り出すことを許可するべきなのは、 親文字のテキストが、次の文字クラスのいずれかに属する場合に限る。その定義は [JLREQ] の附録 A、文字クラス に従う:

  • hiragana

  • ideographic

  • punctuationMarks

注:

[JLREQ] の §3.3.8、親文字より長いルビの 調整 に、 追加情報がある。

提示処理を行う際、 孤立したルビ コンテンツ、 すなわち、ルビ親文字コンテンツ または ルビテキストコンテンツ が、それぞれ ルビ親文字コンテナー または ルビテキストコンテナー を伴わずに指定されたものは、 必要に応じて、匿名の ルビ親文字コンテナー および(または)匿名の ルビテキストコンテナー の存在を暗黙に示す方法で処理される。 暗黙的なルビ親文字 コンテナー および(または) 暗黙的なルビテキストコンテナー は、次の目的のために必要となる: 暗黙的な、または集合的なスタイリングの意味論を生成し、 インラインエリアを含むインラインブロックエリアに適用すること。そのインラインエリアは、 孤立したルビ コンテンツ によって生成される。

明示的に指定された span 要素で、 算出値が、 tts:ruby について baseContainer であるものを、 次のように呼ぶ: 明示的なルビ親文字 コンテナー; 同様に、明示的に指定された span 要素で、算出値が、 tts:ruby について textContainer であるものを、 次のように呼ぶ: 明示的なルビテキスト コンテナー。

注:

グリフエリア に適用されるスタイルプロパティは、 ルビコンテナー span の提示処理中には意味論上の効果を持たない。これは、有意なテキストノード が、 次の要素の子として 現れないためである: 匿名 span。これは、そのような span 要素の子である。例えば、 tts:fontStyle 属性が、 次の要素に指定された場合、 ルビコンテナー span には、 適用先となり得る 有意なテキストノード が、 そのスコープ内に存在しない。ただし、指定された値は、 tts:fontStyle について、ルビコンテナー span 上にある場合でも、 他の(匿名ではない)span 要素による スタイル 継承 においては引き続き適用される。これらの要素は、 ルビコンテナー span の子である。

10.2.36 tts:rubyAlign

tts:rubyAlign 属性は、ルビテキストの位置を、 ルビテキスト コンテナー注釈が生成するインラインエリア内で指定するために使用する。

値: "start" | "center" | "end" | "spaceAround" | "spaceBetween" | "withBase"
初期値: center
適用対象: span。ただし、 tts:ruby の算出値が container の場合のみ
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: rubyAlign の由来

この属性が、次の条件を満たす span 要素に指定された場合、すなわち tts:ruby の算出値が container である場合、関連するスタイルプロパティのルビ配置の意味論は、 コンテナーの構成要素が生成するインラインエリアに一括して適用される。 これらの構成要素とは、ルビコンテナーおよびルビ コンテンツである。

注:

ルビ コンテナー全体にルビ配置を適用する結果、 コンテナーとその構成要素に適用されるルビ配置は均一(不変)になる。

IR と IB を、それぞれ次のものが生成するインラインエリアとする。 (1) ルビテキストコンテナーまたは ルビテキスト注釈、および (2) 関連付けられたルビ 親文字コンテナーまたはルビ親文字。さらに、NR と NB を、それぞれ、これらのインラインエリアのグリフエリアの子孫の 数とする。

この属性の値が start の場合、最初のグリフエリアの子孫の始端辺を、 IR の 始端辺に揃える。 値が center の場合、余分な空白を 最初と最後のルビ注釈のグリフエリアのそれぞれ前後に等しく配分する。 この属性の値が end の場合、最初のグリフエリアの子孫の終端辺を、 IR の 終端辺に揃える。 値が spaceBetween の場合、余分な空白を 各ルビ注釈のグリフエリアの間に等しく配分する。 値が spaceAround の場合、余分な空白を 各ルビ注釈のグリフエリアの子孫の前後に等しく配分する。

この属性の値が withBase の場合、NR と NB が等しければ、 ith 番目のグリフエリアの子孫について、 IR 側の中心を(水平または垂直方向に)、 ith 番目の グリフエリアの子孫の IB 側の中心に揃える。 それ以外の場合(ルビと親文字のグリフエリアの数が 等しくない場合)は、center の意味論を適用する。

注:

上記の意味論におけるグリフエリアの 子孫の解釈では、幅を持つ グリフエリアの子孫 のみを考慮する。すなわち、結合記号などの幅を持たないグリフエリアの 子孫は、 ルビ配置に影響しない。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 center を使用しなければならない。

注:

この仕様では、タイムドテキストの用途におけるルビ注釈は幅が狭いと想定する。 提示空間と利用可能な時間が 制限されることが多いためである。そのため、このバージョンの TTML では、作成者は 空白の配分方法を制御できない。 これは、ルビ注釈の幅が親文字の幅より広い場合のことである。幅の広いルビ注釈が 行の始端辺または終端辺にあると、問題になる可能性がある。 問題を避けるため、作成者には、適切な値の tts:rubyAlign を使用すること、および(または)幅の広い ルビ注釈を含むイベントを複数の行、さらには複数のイベントに分割することを推奨する。

tts:rubyAlign スタイルを次の例に示す。

コード断片例 – ルビ配置
<p>
<span tts:ruby="container" tts:rubyAlign="start">
  <span tts:ruby="base">自業自得</span><span tts:ruby="text">一二三</span>
</span>
<span tts:ruby="container" tts:rubyAlign="spaceAround">
  <span tts:ruby="base">自業自得</span><span tts:ruby="text">一二三</span>
</span>
<br/>
<span tts:ruby="container" tts:rubyAlign="end">
  <span tts:ruby="base">自業自得</span><span tts:ruby="text">一二三</span>
</span>
<span tts:ruby="container" tts:rubyAlign="spaceBetween">
  <span tts:ruby="base">自業自得</span><span tts:ruby="text">一二三</span>
</span>
</p>

表示例 – ルビ配置
TTML rubyAlign スタイルプロパティ

10.2.37 tts:rubyPosition

tts:rubyPosition 属性は、ルビテキストの位置を、 ブロック進行寸法において、 関連付けられたルビ親文字を基準に指定するために使用する。

値: <annotation-position>
初期値: outside
適用対象: span。ただし、 tts:ruby の算出値が textContainer または text の場合のみ
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: rubyPosition の由来

この属性に関連するスタイルプロパティは、 ルビテキスト コンテナーとルビテキスト注釈が生成するインラインエリアの、 関連付けられた親文字コンテナーと親文字に対する相対的な位置を決定する。この際、 <annotation-position> の方向の意味論を適用する。

この属性が、次の条件を満たす span 要素に指定された場合、すなわち tts:ruby の算出値が textContainer である場合、関連するスタイルプロパティのルビ位置の意味論は、 次のものが生成するインラインエリアに一括して適用される。 明示的なルビテキストコンテナーと、 それを構成するルビテキストコンテンツである。

この属性が、次の条件を満たす span 要素に指定された場合、すなわち tts:ruby の算出値が text である場合、関連するスタイルプロパティのルビ位置の意味論は、 次のものが生成するインラインエリアに一括して適用される。 その暗黙的なルビテキストコンテナーと、それ自身の ルビテキストコンテンツである。

この属性は、次の条件を満たす span 要素に指定してはならない。すなわち、 tts:ruby の算出値が text であり、その span 要素の親が、 次の条件を満たす span 要素である場合である。その条件とは、 tts:ruby の算出値が textContainer であることである。 (前者のルビテキストコンテンツに)指定された場合、 エラーとみなされ、 提示処理では無視しなければならない。

ルビテキストコンテナー またはルビテキスト注釈の絶対位置は、 対象のコンテンツが配置される領域の tts:writingMode スタイルプロパティの 算出値に従って決定される。 特に、表 10-2 – 書字モードによるルビの絶対位置の 意味論の対応に列挙された対応を、 [CSS Ruby] の §4.1 による追加の定義に従って適用する。

2つのルビテキストコンテナーが同じルビ親文字コンテナーに適用される場合、次の状況はエラーとみなされる。 この属性に関連するプロパティの使用値によって、 結果として 両方のルビテキストコンテナーが ルビ親文字コンテナーの相対的に同じ側に配置される場合である。 この場合、このプロパティの提示の意味論は この仕様では定義しない。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 before を使用しなければならない。

表 10-2 – 書字モードによるルビの絶対位置の意味論の対応
tts:rubyPosition lrtb rltb tbrl tblr
before over over right left
after under under left right

注:

モンゴル文字を、行が左から右へ進む縦書きで組む場合、 ルビ位置に割り当てる初期値は、 outside ではなく after が望ましいことがある。前者は、 最終行以外のすべての行で before に解決される。 この場合、作成者は次の要素を含めることによって、 この属性の既定の初期値を再定義してよい。 <initial tts:rubyPosition="after"/> を文書の styling 要素内に含める。

tts:rubyPosition スタイルを次の例に示す。この例は、 ルビ位置の 解決方法が書字モードに依存することを示す。この例では、 モノルビを [JLREQ] の定義に従って使用している。

コード断片例 – ルビ位置
<region xml:id="left" tts:writingMode="tblr"/>
<region xml:id="middle" tts:writingMode="lrtb"/>
<region xml:id="right" tts:writingMode="tbrl"/>
...
<p region="left">
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">一</span>
    <span tts:ruby="text">一</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">二</span>
    <span tts:ruby="text">二</span>
  </span>三四<br/>五六
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">七</span>
    <span tts:ruby="text">七</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">八</span>
    <span tts:ruby="text">八</span>
  </span>
</p>
<p region="middle">
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">一</span>
    <span tts:ruby="text">一</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">二</span>
    <span tts:ruby="text">二</span>
  </span>三四<br/>五六
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">七</span>
    <span tts:ruby="text">七</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">八</span>
    <span tts:ruby="text">八</span>
  </span>
</p>
<p region="right">
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">一</span>
    <span tts:ruby="text">一</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">二</span>
    <span tts:ruby="text">二</span>
  </span>三四<br/>五六
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">七</span>
    <span tts:ruby="text">七</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">八</span>
    <span tts:ruby="text">八</span>
  </span>
</p>

表示例 – ルビ位置
TTML rubyPosition スタイルプロパティ

注:

上記の例では、整形を助けるために span 要素の内部と周囲に空白を挿入している。 図に示す表示例を得るには、この余分な空白を 削除して、 描画結果に現れないようにする必要がある。

10.2.38 tts:rubyReserve

tts:rubyReserve 属性は、対象の行エリアに適用する追加の空間を 指定するために使用する。 これは、ブロック進行寸法に十分な余地を確保し、 ルビテキストコンテナーが生成するインラインエリアを、 行エリアの 境界内に配置できるようにするためである。

注:

作成者は tts:rubyReserve 属性を使用して、 ブロックエリア内の行エリアの連続するベースラインが、 ルビテキスト注釈の有無にかかわらず一定の配置を保つようにしてよい。

値: <ruby-reserve>
初期値: none
適用対象: p
継承: はい
百分率: この要素のフォントサイズに対する相対値
アニメーション可能: 離散
意味論上の根拠: rubyReserve の由来

この属性の値が none の場合、ルビ用の空間の確保は適用しない。 それ以外の場合、この属性の値は、 位置成分と、それに続く省略可能な長さ成分を指定する。

位置成分が before の場合、対象の行エリアの前側 行間を、長さ成分の使用値によって決定される量だけ増加させる。 この使用値は、長さ成分の使用値である。

位置成分が after の場合、対象の行エリアの後側 行間を、長さ成分の使用値によって決定される量だけ増加させる。 この使用値は、長さ成分の使用値である。

位置成分が both の場合、 before と after の両方の位置の意味論を、 対象の各行エリアに適用する。

位置成分が outside の場合、 現在のブロックエリアに行エリアがちょうど1つだけ含まれていれば、both の位置を 適用する。それ以外の場合、before の位置の意味論を、 現在のブロックエリアの最初の行エリアに適用し、 after の位置の意味論を、現在のブロックエリアの その他すべての行エリアに適用する。

長さ成分は、対象の行エリアの前側と後側の行間を 増加させる量を、 間接的に決定するために使用する。長さ成分の算出値は、次のスタイルプロパティの 算出値を表すものとみなす。 tts:fontSize 属性に関連するものであり、 仮想的なルビテキストコンテンツが p 要素内に実際に存在したときの値である。

長さ成分が指定されていない場合、次のスタイルプロパティの 値と等しいものとみなさなければならない。 tts:fontSize 属性に関連するものであり、 継承されるはずの値である。 仮想的なルビテキストコンテナーまたはルビテキストコンテンツが、 実際に p 要素内に存在すると仮定し、 10.2.21.1 フォントサイズの 特別な意味論を適用して、この継承される値を算出する。

<length> 成分 を指定する場合、その値は非負でなければならない。

tts:rubyReserve が p 要素に指定され、その要素が ルビテキストコンテンツを含む場合、確保した行間を 上記のとおり行エリアに適用し、必要に応じてさらに調整する。 この調整は、実際に存在するルビテキストコンテンツを収めるために行う。

表示例 – ルビ用空間の確保
tts:rubyReserve ルビなし ルビあり
none TTML rubyReserve スタイルプロパティ: 'auto' TTML rubyReserve スタイルプロパティ: 'auto'
before TTML rubyReserve スタイルプロパティ: 'after' TTML rubyReserve スタイルプロパティ: 'after'
after TTML rubyReserve スタイルプロパティ: 'after' TTML rubyReserve スタイルプロパティ: 'after'
both TTML rubyReserve スタイルプロパティ: 'after' TTML rubyReserve スタイルプロパティ: 'after'
outside TTML rubyReserve スタイルプロパティ: 'after' TTML rubyReserve スタイルプロパティ: 'after'

10.2.39 tts:shear

tts:shear 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、最も外側のブロックエリアにせん断変換を適用するかどうか、および適用方法を決定する。 このエリアは、対象の要素によって生成される。

値: <percentage>
初期値: 0%
適用対象: p
継承: はい
百分率: 本文を参照
アニメーション可能: 離散
意味論上の根拠: shear の由来

この属性が適用される各ブロックエリアについて、2次元の せん断変換を そのブロックエリアに対し、10.4.5.3 せん断の計算に従って適用する。

tts:shear スタイルを次の例に示す。

コード断片例 – せん断
<region xml:id="right" tts:writingMode="tbrl" tts:displayAlign="center" .../>
<region xml:id="left" tts:writingMode="tbrl" tts:displayAlign="center" .../>
...
<div>
  <p region="right" tts:shear="0%">
  山の<br/>
  最多<span tts:textCombine="all">1998</span>年
  </p>
  <p region="left" tts:shear="16.67%">
  山の<br/>
  最多<span tts:textCombine="all">1998</span>年
  </p>
</div>

表示例 – せん断 - 縦中横を含む縦書きの行
TTML shear スタイルプロパティ

注:

上記の例の黄色い線は、特定の提示 プロセッサが作成した装飾であり、 レイアウトの問題のデバッグを助けるためのものである。このような線は、この仕様が定義する 規範的な TTML 提示には含まれない。 ここでは、装飾は (1) 外側のブロック エリアの境界を示しており、 これは region 要素によって生成される。また、 (2) 行エリアの境界も示す。これは、外側のブロックエリアの子であり、その外側のエリアは p 要素によって生成される。

この例は、せん断(スキュー)変換が、対象の外側のブロックエリアに適用される方法を示す。 これらは p 要素によって生成される。ただし、 外側のブロックエリアにせん断を適用する場合、 ブロックエリアに割り当て可能な距離、 すなわち、せん断変換前のインライン進行寸法の最大長は、 B*sin(θ) だけ減少する。 ここで、B は外側のブロックエリアのブロック進行寸法であり、θ は せん断角である。これは、段落の直近の祖先ブロックエリアのコンテンツ矩形内に、 ブロックエリアを収めるためである。

10.2.40 tts:showBackground

tts:showBackground 属性は、 領域の背景をいつ提示するかに関する 制約を指定するために使用する。

注:

領域の背景には、(1) 背景色および(または)(2) 背景画像が 生成する描画が含まれる。 これは、いずれかが領域に適用される場合である。

値: "always" | "whenActive"
初期値: always
適用対象: region
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: showBackground の由来

領域が時間的にアクティブでない場合、その背景は 描画されない。ただし、 時間的にアクティブである場合は、次のようになる。

  1. この属性の値が whenActive の場合、領域の背景は、 コンテンツが その領域に選択され、かつ、そのコンテンツも時間的にアクティブである場合にのみ描画される。

  2. それ以外の場合で、この属性の値が always であれば、領域の 背景は、コンテンツがその領域に選択されるか どうかにかかわらず描画される。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 always を使用しなければならない。

tts:showBackground スタイルを次の例に示す。

コード断片例 – 背景の表示
<region xml:id="r1">
  <style tts:origin="0px 0px"/>
  <style tts:extent="265px 100px"/>
  <style tts:backgroundColor="black"/>
  <style tts:showBackground="always"/>
  <style tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:origin="205px 60px"/>
  <style tts:extent="290px 100px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="end"/>
  <style tts:showBackground="whenActive"/>
</region>

10.2.41 tts:textAlign

tts:textAlign 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、包含するブロックエリア内で、インラインエリアをインライン進行 方向にどのように揃えるかを定義する。

値: "left" | "center" | "right" | "start" | "end" | "justify"
初期値: start
適用対象: p
継承: 本文を参照
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: textAlign の由来

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 start を使用しなければならない。

tts:textAlign スタイルを次の例に示す。

コード断片例 – テキストの配置
<region xml:id="r1">
  <style tts:extent="355px 43px"/>
  <style tts:origin="0px 0px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:extent="355px 43px"/>
  <style tts:origin="0px 47px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
</region>
...
<p region="r1">
  ジャバウォックに気をつけろ、わが息子よ!<br/>
  噛みつく顎、捕らえる爪に!
</p>
<p region="r2">
  ジャブジャブ鳥に気をつけろ、そして避けるのだ<br/>
  獰猛なバンダースナッチを!
</p>

表示例 – テキストの配置
TTML textAlign スタイルプロパティ

注:

最後のブロックエリアの最後の行エリアのテキスト配置は、これらを生成する p 要素について、 text-align-last プロパティの値が relative である場合の意味論に従う。これは [XSL-FO 1.1] の §7.16.10 による。

10.2.42 tts:textCombine

縦書きの書字モードが適用される場合、tts:textCombine 属性は、 スタイルプロパティを指定するために使用する。 このプロパティは、領域に流し込まれたコンテンツが生成するグリフエリアに 適用され、 複数のグリフエリアを水平方向に結合するかどうか、 およびその方法を決定する。 これは、周囲の縦書きテキストの1行分のブロック進行寸法に 収めるためである。 横書きの書字モードが適用される場合、このプロパティは 提示処理では無視する。

結合処理では、周囲の縦書きテキストの EM スクエア内に視覚的に 結合するために、1つ以上の手法を使用してよい。 例えば、半角の変種字形の選択、合字の選択、より小さい フォントサイズの適用などがある。少なくとも、 このスタイルプロパティをサポートする実装は、半角の変種字形が利用可能であれば、 それを選択できなければならない。これらのどの手法でも、 包含する行エリアのブロック進行寸法において目標の寸法を 達成できない場合、適用中の行の積み重ね方針が許すなら、 包含する行エリアのこの寸法を増加させてよい。

値: <text-combine>
初期値: none
適用対象: span。注も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: textCombine の由来

この属性の指定値が none の場合、結合処理は 適用しない。 この属性の指定値が all の場合、対象となるすべての文字を 結合するべきである。

結合は、対象のすべての文字を横書きの書字モードが適用されているものとして 処理した後に適用する。特に、双方向処理、合字、グリフ置換、 または Unicode 結合文字の結合を使用する場合、これらは tts:textCombine 属性が指定する結合処理より前に適用する。

結合は、要素の境界、双方向の境界、またはグリフエリア以外のエリアの境界を越えてはならない。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 none を使用しなければならない。

注:

このバージョンの TTML では、tts:textCombine 属性について、 ルビコンテナー内での意味論を定義しない。そのため、 コンテンツ作成者は、 適合する 提示プロセッサに特定の動作を期待しないことが望ましい。 これは、tts:textCombine 属性がルビコンテナー内で使用される場合のことである。

tts:textCombine スタイルを次の例に示す。

コード断片例 – テキストの結合
<p region="tbrlLeft">あい
  <span tts:textCombine="none">AB34</span>三四
</p>
<p region="tbrlRight">あい
  <span tts:textCombine="all">AB34</span>三四
</p>

表示例 – テキストの結合
TTML textCombine スタイルプロパティ

注:

上記の例では、右端の領域が all 値の使用を示している。 ここでは、 提示プロセッサが対象文字の半角の変種グリフに拡大縮小を 適用し、結合したテキストが、 周囲の縦書きテキストと同じ大きさの EM スクエア内に収まるようにしている。

10.2.43 tts:textDecoration

tts:textDecoration 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、グリフエリアに適用するテキスト装飾効果を定義する。 これらのエリアは、領域に流し込まれたコンテンツによって生成される。

値: <text-decoration>
初期値: none
適用対象: span。注も参照
継承: はい。ただし、特別な 意味論を参照
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: textDecoration の由来

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 none を使用しなければならない。

注:

このプロパティの値を定義するために上で使用した構文は、 値の成分の構文に基づく。これは [CSS2] の §1.4.2.1 で定義されている。要するに、 || で区切られた値のうち1つ以上が、任意の順序でプロパティの 値に現れてよい。例えば、"noUnderline overline lineThrough" である。

注:

値「none」の指定は、 「noUnderline noLineThrough noOverline」の指定と等価である。

tts:textDecoration スタイルを次の例に示す。

コード断片例 – テキスト装飾
<region xml:id="r1">
  <style tts:extent="385px 82px"/>
  <style tts:origin="0px 0px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:padding="5px 2px"/>
  <style tts:textDecoration="underline"/>
</region>
...
<p region="r1">
  海は濡れていた<span tts:textDecoration="noUnderline"> これ以上なく </span>濡れきって
  <span tts:textDecoration="noUnderline">
    いた、<br/>
    砂はからからに乾いていた。<br/>
    <span tts:textDecoration="lineThrough">何もなかった</span>
    あなたは <span tts:textDecoration="lineThrough">見られなかった</span>
    雲を見ることができなかった<br/>
    空には雲がなかったから。
  </span>
</p>

表示例 – テキスト装飾
TTML textDecoration スタイルプロパティ
10.2.43.1 テキスト装飾の 特別な意味論

この属性に関連するプロパティの算出値は3つ組で構成される。 各項目は、それぞれ、下線、取り消し線、上線の 装飾を対象のテキストに適用するかどうかを表す。 さらに、継承の意味論を適用する場合、これらの各項目は、 他の項目とは別々に継承されるものとみなす。

注:

例えば、tts:textDecoration の算出値が、 div(区分)要素に適用されるとき、 (noUnderline, lineThrough, overline) という組であり、 その div の子である p(段落)要素が tts:textDecoration="noLineThrough" を指定する場合、 その p 要素に適用される総合的な算出値は、 (noUnderline, noLineThrough, overline) となる。この値が、 さらに p 要素の子に継承される。

10.2.44 tts:textEmphasis

tts:textEmphasis 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、グリフエリアに適用するテキストの強調効果を定義する。 これらのエリアは、領域に流し込まれたコンテンツによって生成される。

値: <text-emphasis>
初期値: none
適用対象: span。注も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散; 連続(色のみ)
意味論上の根拠: textEmphasis の由来

強調スタイルが指定されていない場合、 強調スタイルは、auto が指定されたものとして解釈しなければならない。 強調色が指定されていない場合、 強調色は、current が 指定されたものとして解釈しなければならない。 強調位置が指定されていない場合、 強調位置は、outside が 指定されたものとして解釈しなければならない。

注:

モンゴル文字を、行が左から右へ進む縦書きで組む場合、 強調位置に割り当てる 初期値は、outside ではなく after が望ましいことがある。前者は、 最終行以外のすべての行で before に解決される。 この場合、作成者は次の要素を含めることによって、 この属性の既定の初期値を再定義してよい。 <initial tts:textEmphasis="none transparent after"/> を文書の styling 要素内に含める。

tts:textEmphasis スタイルを次の例に示す。

コード断片例 – テキストの強調
<p>
  <span tts:textEmphasis="filled circle before">花</span>
  <span tts:textEmphasis="filled dot before">よ</span>
  <span tts:textEmphasis="filled sesame before">り</span>
  <span tts:textEmphasis="open circle before">だ</span>
  <span tts:textEmphasis="open dot before">ん</span>
  <span tts:textEmphasis="open sesame before">ご</span>
  <br/>
  <span tts:textEmphasis="filled circle after">花</span>
  <span tts:textEmphasis="filled dot after">よ</span>
  <span tts:textEmphasis="filled sesame after">り</span>
  <span tts:textEmphasis="open circle after">だ</span>
  <span tts:textEmphasis="open dot after">ん</span>
  <span tts:textEmphasis="open sesame after">ご</span>
</p>

表示例 – テキストの強調
TTML textEmphasis スタイルプロパティ

10.2.45 tts:textOrientation

tts:textOrientation 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、グリフエリアに適用するテキストの向きを定義する。 これらは、縦書きの書字モードが適用される領域に流し込まれたコンテンツによって生成される。

値: "mixed" | "sideways" | "upright"
初期値: mixed
適用対象: span。注も参照
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: textOrientation の由来

このスタイルプロパティの提示の意味論は、縦書きの 書字モードが適用される場合にのみ適用する。したがって、横書きの書字モードが適用される場合、 このスタイルプロパティは効果を持たない。

以下では、コンテンツの文字に関連付けられたグリフエリアを、 縦書きの書字モードにおいて 回転させるかどうかという観点から説明する。この判定は、 各コンテンツ文字の Vertical_Orientation に従って行い、 その値は [UTR50] によって決定される。

この属性の値が mixed の場合、回転対象のグリフエリアは横向きに組み、 回転対象でないグリフエリアは正立させる。ここで、 横向きとは時計回りに90°回転することを意味し、 正立とは回転しないことを意味する。

注:

[UTR50] によると、グリフエリアの視覚的な回転は、 回転済みのグリフエリアへの置換、またはアフィン回転 変換を グリフエリアの輪郭(またはラスター画像)に適用することによって行ってよい。 どちらを適用するかは、提示処理で使用される 特定のフォントに依存する。

この属性の値が 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>

表示例 – テキストの向き
TTML textOrientation スタイルプロパティ

10.2.46 tts:textOutline

tts:textOutline 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、選択されたグリフに適用するテキストの輪郭効果を定義する。グリフは、グリフエリアのために選択され、 これらのエリアは、領域に流し込まれたコンテンツによって生成される。

値: <text-outline>
初期値: none
適用対象: span。注も参照
継承: はい
百分率: この要素のフォントサイズに対する相対値
アニメーション可能: 離散; 連続(色のみ)
意味論上の根拠: textOutline の由来

この属性の値は、省略可能な <color> 項と、 それに続く1つまたは2つの <length> 項で構成される。 color 項が 存在する場合、それは輪郭の色を表す。color 項が 存在しない場合、tts:color の算出値を適用する。最初の length 項は輪郭の太さを表し、2番目の長さ 項が存在する場合、それはぼかし半径を表す。

輪郭の太さまたはぼかし半径に、相対的な <length> 値が 指定された場合、 参照するフォントサイズまたは算出セルサイズの高さ成分を基準に解決する。 後者は算出セルサイズである。

太さとぼかし半径を表すために使用する <length> 値は、 非負でなければならない。

ぼかし半径が指定されていない場合、すなわち <length> 項が1つだけ存在する場合、 算出値 0px を適用する。

注:

<length> がセル単位で 表され、tts:textOutline の値に使用される場合、 セルの高さを適用する。 例えば、テキストの輪郭の太さを 0.1c と指定し、セル解像度が 20 × 10 で、ルートコンテナー 領域の範囲が 640 × 480 の場合、 輪郭の太さは公称で 480 / 10 * 0.1 ピクセル、すなわち 4.8px となる。 これは、ラスタライズの影響を考慮しない値である。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 none を使用しなければならない。

tts:textOutline スタイルを次の 例に示す。

コード断片例 – テキストの輪郭
<region xml:id="r1">
  <style tts:backgroundColor="transparent"/>
  <style tts:color="yellow"/>
  <style tts:textOutline="black 2px 0px"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="24px"/>
</region>
...
<p>
  小さなワニはなんと見事に<br/>
  輝く尾を磨くことか、<br/>
  そしてナイルの水を注ぐ<br/>
  黄金のうろこ一枚一枚に!<br/>
  なんと楽しげに笑って見えることか、<br/>
  なんと上手に爪を広げることか、<br/>
  そして小魚たちを迎え入れる、<br/>
  優しく微笑む顎で!
</p>

表示例 – テキストの輪郭
textOutline スタイルプロパティ

10.2.47 tts:textShadow

tts:textShadow 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、選択されたグリフに適用する1つ以上のテキストの影の装飾を定義する。グリフは、グリフエリアのために選択され、 これらのエリアは、領域に流し込まれたコンテンツによって生成される。

複数のテキストの影が適用される場合、それらは指定された順序で、 適用対象の グリフエリアを描画する直前に描画される。

値: <text-shadow>
初期値: none
適用対象: span。注も参照
継承: はい
百分率: この要素のフォントサイズに対する相対値
アニメーション可能: 離散; 連続(色のみ)
意味論上の根拠: textShadow の由来

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 none を使用しなければならない。

コード断片例 – テキストの影
<style xml:id="s1"
  tts:backgroundColor="black"
  tts:color="white"
  tts:lineHeight="125%"
  tts:textAlign="center"/>
...
<p style="s1">
<span tts:padding="1%">
私は青菜を添えてそれを出す、あの 
<span tts:textShadow="10% -20% 5% lime">影に満ちた場面で、</span><br/>
そして明かりをともすためにも使う。</span>
</p>

表示例 – テキストの影
TTML textShadow スタイルプロパティ

10.2.48 tts:unicodeBidi

tts:unicodeBidi 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、明示的な方向の埋め込み、上書き、または分離を、 Unicode 双方向アルゴリズムに従って定義する。

値: "normal" | "embed" | "bidiOverride" | "isolate"
初期値: normal
適用対象: p, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: unicodeBidi の由来

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 normal を使用しなければならない。

tts:unicodeBidi スタイルを次の例に示す。

コード断片例 – Unicode の双方向性
<region xml:id="r1">
  <style tts:extent="265px 84px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  小鳥たちが奏でている<br/>
  岸辺でバグパイプを、<br/>
  <span tts:unicodeBidi="bidiOverride" tts:direction="rtl">観光客がいびきをかくその場所で。</span>
</p>

表示例 – Unicode の双方向性
TTML unicodeBidi スタイルプロパティ

10.2.49 tts:visibility

tts:visibility 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、生成されたエリアを視覚的な 提示媒体に描画するときに可視にするかどうかを定義する。

値: "visible" | "hidden"
初期値: visible
適用対象: body, div, image, p, region, span
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: visibility の由来

tts:visibility スタイルは、コンテンツのレイアウトや 組版に影響せず、組版されたコンテンツを可視にするかどうかだけを決定する。

この属性に関連するプロパティの算出値が visible の場合、 この要素によって生成されるエリアは、 視覚的な媒体に提示されるときに可視として描画される。算出値が hidden の場合、可視としては描画されず、 すなわち非表示になる。ただし、非表示の要素の子孫要素は、 その子孫におけるこのプロパティの算出値が visible である場合、可視として描画される。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 visible を使用しなければならない。

tts:visibility スタイルを次の例に示す。

コード断片例 – 可視性
<region xml:id="r1">
  <style tts:extent="398px 121px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style/>
</region>
...
<p region="r1" dur="4s">
  <span tts:visibility="hidden">
    <set begin="1s" tts:visibility="visible"/>
    不思議だ
  </span>
  <span tts:visibility="hidden">
    <set begin="2s" tts:visibility="visible"/>
    ますます
  </span>
  <span tts:visibility="hidden">
    <set begin="3s" tts:visibility="visible"/>
    不思議だ!
  </span>
</p>

表示例 – 可視性
TTML visibility スタイルプロパティ - [0,1)
TTML visibility スタイルプロパティ - [1,2)
TTML visibility スタイルプロパティ - [2,3)
TTML visibility スタイルプロパティ - [3,4)

10.2.50 tts:wrapOption

tts:wrapOption 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、対象の要素内で自動的な行の折り返し(改行)を 適用するかどうかを定義する。

値: "wrap" | "noWrap"
初期値: wrap
適用対象: span
継承: はい
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: wrapOption の由来

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 wrap を使用しなければならない。

tts:wrapOption スタイルを次の例に示す。

コード断片例 – 折り返しオプション
<region xml:id="r1">
  <style tts:extent="192px 117px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:overflow="hidden"/>
  <style tts:wrapOption="noWrap"/>
</region>
...
<p>
  話せることは何でも話そう。<br/>
  語ることは少ないけれど。<br/>
  ひどく年老いた男を見かけた、<br/>
  門に腰掛けていたのだ。
</p>

表示例 – 折り返しオプション
TTML wrapOption スタイルプロパティ

10.2.51 tts:writingMode

tts:writingMode 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、ブロック進行方向とインライン進行方向を定義する。これらは、 領域エリア内でブロックエリアとインラインエリアを積み重ねるために使用する。

値: "lrtb" | "rltb" | "tbrl" | "tblr" | "lr" | "rl" | "tb"
初期値: lrtb
適用対象: region
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: writingMode の由来

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、値 lrtb を使用しなければならない。

注:

インライン進行方向が左から右、または右から左である書字モードは、 次のように 横書きの書字モードと呼ぶ。一方、インライン進行 方向が 上から下である書字モードは、縦書きの書字モードと呼ぶ。

tts:writingMode スタイルを次の例に示す。

コード断片例 – 書字モード
<tt ... xml:lang="en">
...
<region xml:id="top" tts:origin="10% 10%" tts:extent="55% 10%"
  tts:writingMode="rltb"/>
<region xml:id="right" tts:origin="70% 10%" tts:extent="10% 80%"
  tts:writingMode="tbrl"/>
...
<p region="top"><span xml:lang="ar">国際化活動、</span> W3C</p>    
<p region="right">こんにちは <span xml:lang="ja">みなさん、<br/>こんにちは</span></p>    
...
</tt>

表示例 – 書字モード
TTML writingMode スタイルプロパティ

注:

この例では、テキストコンテンツの自然言語を、 複数の xml:lang 属性によって識別している。 tts:writingMode 属性を示すために技術的に必須ではないが、 複数の自然言語によるコンテンツを含むマークアップでは、 言語を明示的に識別することを推奨する。

10.2.52 tts:zIndex

tts:zIndex 属性は、スタイルプロパティを指定するために使用する。 このプロパティは、領域エリアが重なる場合の、前面から背面への順序を定義する。

値: "auto" | <integer>
初期値: auto
適用対象: region
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散
意味論上の根拠: zIndex の由来

2つのエリアが同じ Z-index 値に関連付けられており、それらのエリアが 空間的に重なる場合、字句的に後の要素が生成したエリアを、 字句的に前の要素が生成したエリアの上に描画しなければならない。ここで、字句的な 順序は、文書 インスタンスの後順走査によって定義される。

値 auto の意味論は、 [XSL-FO 1.1] の §7.30.18 で定義されるものとし、tt 要素が ルートの積層コンテキストを確立するものとみなす。

この属性に関連するプロパティの算出値がサポートされていない場合、 提示プロセッサは、サポートされる最も近い 値を使用しなければならない。

注:

この文脈では、サポートされる最も近い値とは、 算出された z-index と サポートされる z-index の間のユークリッド距離が最小になる値を意味する。 算出値から等距離にある、サポートされる最も近い値が複数存在する場合、 0 からの距離が最小の値、すなわち、現在の積層コンテキストの基底の積層 レベルに最も近い値を使用する。

tts:zIndex スタイルを次の例に示す。

コード断片例 – Z インデックス
<region xml:id="r1">
  <style tts:origin="0px 0px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:zIndex="0"/>
</region>
<region xml:id="r2">
  <style tts:origin="100px 60px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
  <style tts:zIndex="1"/>
</region>
<region xml:id="r3">
  <style tts:origin="0px 120px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:zIndex="2"/>
</region>
<region xml:id="r4">
  <style tts:origin="100px 180px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
  <style tts:zIndex="3"/>
</region>
...
<p region="r1">
  彼の庭のそばを通り、片目で見たのだ、<br/>
  フクロウとヒョウがパイを分け合う様子を。
</p>
<p region="r2">
  ヒョウはパイの皮と肉汁と肉を取り、<br/>
  フクロウはごちそうの取り分として皿をもらった。
</p>
<p region="r3">
  パイをすっかり食べ終えると、フクロウはおまけに、<br/>
  親切にもスプーンを懐に入れることを許された。
</p>
<p region="r4">
  一方、ヒョウはナイフとフォークを受け取り<br/>
  うなり声を上げ、<br/>
  そして宴を締めくくった、その方法は...
</p>

表示例 – Z インデックス
TTML zIndex スタイルプロパティ

10.2.53 tta:gain

tta:gain 属性は、音声スタイルプロパティを指定するために使用する。 このプロパティは、対象の音声コンテンツに適用するゲインの倍率を決定する。 適用期間は、この属性が指定された要素のアクティブ継続時間である。

値: <number>
初期値: 1
適用対象: audio, body, div, p, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散; 連続

この属性の指定値が区間 [-1,1] に含まれない場合、 この属性に関連するプロパティの算出値は、この 有界区間内に制限される。

この属性に関連するプロパティの算出値が負の場合、ゲインを その 算出値の絶対値に設定し、位相反転を適用する。

ゲインが 0 の場合、アクティブな音声コンテンツは完全に消音される。ゲインが 1 の場合、アクティブな 音声コンテンツの 振幅は変更されない。それ以外の場合、ゲインは 0 より大きく 1 より小さくなり、 相対的な減衰を、 合成されたアクティブな音声コンテンツに適用する。この減衰は、 区間 [0,1] にわたって線形である。

tta:gain スタイルを次の例に示す。

コード断片例 – ゲイン
<div>
  <audio src="#track1" tta:gain="0.5"/>
  <p tta:gain="0.3">
    <audio src="#track2" tta:gain="0.8"/>
  </p>
</div>

注:

この例では、2つの音源 track1 と track2 がアクティブである。 div 要素は、1つのアクティブな音声トラックを、その子の p への出力として提供する。 この子の p は、2つ目のアクティブな音声トラックを合成して、その子への 出力を形成する。 さらに、各音源と、 p の出力に異なるゲインが指定されている。 その結果、最終的な出力は 0.3[0.5(track1) + 0.8(track2)] となる。

注:

この属性が表すスタイルプロパティの意味論は、 [WEBAUDIO] の §2.7 で定義されるものに基づく。このプロパティが 指定された 要素は、音声グラフ内に GainNode を生成し、その gain 属性は同じ算出値を持つ。また、その入力について、 コンテンツ要素が音声生成要素でない場合は、 この要素の親要素の音声出力と、すべての子の音声生成要素の 合成された(線形に加算された)音声 出力との和になる。それ以外の場合、すなわち音声生成 要素の場合、入力は、 その要素が生成した音声である。

10.2.54 tta:pan

tta:pan 属性は、音声スタイルプロパティを指定するために使用する。 このプロパティは、対象の音声コンテンツに適用するステレオのパンベクトルを決定する。 適用期間は、 この属性が指定された要素のアクティブ継続時間である。

値: <number>
初期値: 0
適用対象: audio, body, div, p, span
継承: いいえ
百分率: 該当なし
アニメーション可能: 離散; 連続

この属性の指定値が区間 [-1,1] に含まれない場合、 この属性に関連するプロパティの算出値は、この 有界区間内に制限される。

この属性に関連するプロパティの算出値が負の場合、パンの 方向は中央より左になる。 パンの値が 0 の場合、アクティブな音声コンテンツのステレオの方向性は 変更されない。それ以外の場合、パンの値は正となり、 パンの方向は中央より右になる。ここで、値 -1 は 完全に左を表し、値 1 は完全に右を表す。

tta:pan スタイルを次の例に示す。

コード断片例 – パン
<div>
  <audio src="#track1" tta:pan="0.5"/>
  <p tta:pan="0.3">
    <audio src="#track2" tta:pan="0.8"/>
  </p>
</div>

注:

この例では、2つの音源 track1 と track2 がアクティブである。 div 要素は、1つのアクティブな音声トラックを、その子の p への出力として提供する。 この子の p は、2つ目のアクティブな音声トラックを合成して、その子への 出力を形成する。 さらに、各音源と、 p の出力に異なるパンが指定されている。 その結果、最終的な出力のパンは 0.3[0.5(track1) + 0.8(track2)] となる。

注:

この属性が表すスタイルプロパティの意味論は、 [WEBAUDIO] の §2.21 で定義されるものに基づく。このプロパティが 指定された 要素は、音声グラフ内に StereoPannerNode を生成し、その pan 属性は同じ算出値を持つ。また、その入力について、 コンテンツ要素が音声生成要素でない場合は、 この要素の親要素の音声出力と、すべての子の音声生成要素の 合成された(線形に加算された)音声 出力との和になる。それ以外の場合、すなわち音声生成 要素の場合、入力は、 その要素が生成した音声である。

10.2.55 tta:pitch

tta:pitch 属性は、音声スタイルプロパティを指定するために使用する。 このプロパティは、対象のコンテンツで音声合成が有効な場合の発話のピッチを決定する

値: <pitch>
初期値: 0%
適用対象: span
継承: はい
百分率: 入力音声のピッチに対する相対値
アニメーション可能: なし

tta:pitch スタイルを次の例に示す。

コード断片例 – ピッチ
<p>相対的なピッチ調整を <span tta:pitch="+10hz">この</span> 単語に適用する。</p>

注:

この属性が表すスタイルプロパティの意味論は、 [SSML 1.0] の §3.2.4 で定義されるものに由来する。ここでは、 prosody 要素の pitch 属性が算出値と等しい場合に相当する処理を、 発話される 文字コンテンツに適用する。

10.2.56 tta:speak

tta:speak 属性は、音声スタイルプロパティを指定するために使用され、 対象となるコンテンツで音声合成を有効にするかどうか、および有効にする場合にどの 発話速度を適用するかを決定する。

値: "none" | "normal" | "fast" | "slow"
初期値: none
適用対象: span
継承: あり
パーセント値: 該当なし
アニメーション可能: 不可

この属性の値が none の場合、対象となる コンテンツの音声合成は無効になる。それ以外の場合、 この属性の値が normal、fast、または slow であれば、 音声合成が有効になり、 それぞれ通常、速い、または遅い発話速度が適用される。

tta:speak スタイルを次の例に示す。

断片の例 – 発話
<p>読み上げてください <span tta:speak="normal">この</span> 単語を。</p>

注:

この属性が表すスタイルプロパティの意味論は、 [SSML 1.0] §3.2.4 で定義されるものに由来し、 prosody 要素の rate 属性が算出値と等しい場合と同等の処理が、 発話される 文字コンテンツに適用される。

10.2.56.1 発話の特別な意味論

tta:speak の算出値が、ある span 要素または 匿名 span S において none でない場合、次を適用する。

  1. S が子 audio 要素 A を持ち、A がいずれのソース 音声 リソース も、 参照データ埋め込み または ソースデータ埋め込み によって参照していない場合、 発話データ リソース への参照が、 参照データ埋め込み によって暗黙に指定される。

  2. S のどの子も audio 要素ではなく、 S のどの祖先も 音声 生成要素 のうち、参照される 音声リソース のソースが 発話データリソース であるものに該当しない場合、 子 audio 要素であって、 発話データリソース を 参照データ埋め込み によって参照するものが 暗黙に指定される。

    注:

    一方、S のいずれかの祖先が 音声生成要素 であり、その参照される 音声リソース のソース が 発話データリソース である場合、 S から合成された発話音声サンプルは、 その 発話データリソース と、 祖先要素の 音声提示コンテキスト において 結合される(線形に加算される)ことが意図される。

次の例は、上記の 2 つの場合のうち最初のものを示す。

断片の例 – 暗黙の音声ソースを伴う発話
<span tta:speak="normal">
  <audio/>
  読み上げるテキスト
</span>

次の例は、上記の場合のうち 2 番目のものを示す。

断片の例 – 暗黙の音声を伴う発話
<span tta:speak="normal">
  読み上げるテキスト
</span>

次の断片は、上記の特別な意味論を、それまでの 2 つの例のそれぞれに 適用した場合に得られる同等の結果を示す。 ここでは説明のために、書式を整えやすくするよう必要に応じて追加の空白を 挿入している。

断片の例 – 同等の発話
<span tta:speak="normal">
  <audio src="http://www.w3.org/ns/ttml/resource/#speech"/>
  読み上げるテキスト
</span>

10.3 スタイリング値の式

スタイルプロパティの値では、次の式が使用される。

10.3.1 <alpha>

<alpha> 式は、不透明度の値を表すために使用され、 0 は完全な透明を、1 は完全な不透明を意味する。

構文表現 – <alpha>
<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 から最も遠い値、すなわち最大の不透明度を使用する。

10.3.2 <annotation-color>

<annotation-color> 式は、ルビや圏点などのテキスト 注釈マークの色を表すために使用される。

構文表現 – <annotation-color>
<annotation-color>
  : "current"
  | <color>
current

対象となるテキストの tts:color の算出値と等価である。

<color>

指定された色。

実装が注釈の色の値を認識しない、またはその他の方法で区別しない場合、 current スタイルが指定されたものとして解釈しなければならない。したがって、 実装のうち テキスト注釈マークをサポートするものは、少なくとも current 値をサポートしなければならない。

10.3.3 <annotation-position>

<annotation-position> 式は、ルビや圏点などのテキスト 注釈マークの位置を表すために使用される。

構文表現 – <annotation-position>
<annotation-position>
  : "before"
  | "after"
  | "outside"
before

対象となる グリフ領域 の前側の辺に向かう。横書き モードが適用される場合、これは グリフ領域 の上方となる。縦書きモードが 適用される場合、これは右方または左方、すなわち グリフ領域 に対して、 tts:writingMode がそれぞれ tbrl または tblr のどちらに解決されるかに応じた方向となる。

after

対象となる グリフ領域 の後側の辺に向かう。横書き モードが適用される場合、これは グリフ領域 の下方となる。縦書きモードが 適用される場合、これは左方または右方、すなわち グリフ領域 に対して、tts:writingMode がそれぞれ tbrl または tblr のどちらに解決されるかに応じた方向となる。

outside

before と等価になるのは、(1) 唯一の行領域、または (2) 最後のブロック領域の最初の行 領域であって、そのブロック領域が 注釈付きテキストを含む p 要素によって 生成された場合である。それ以外の場合は after と等価である。

実装が注釈位置の値を認識しない、またはその他の方法で区別しない 場合、 before 位置が指定されたものとして解釈しなければならない。したがって、 実装のうち テキスト注釈マークをサポートするものは、少なくとも before 値をサポートしなければならない。

10.3.4 <border>

<border> 式は、1 つ以上の境界線スタイルの 構成要素 の式を表すために使用される。

構文表現 – <border>

境界線スタイルの 構成要素 が少なくとも 1 つ存在しなければならない。例えば、 <border-style> の 構成要素 として値 none を指定する。なお、構成要素 の順序は重要ではない。

10.3.5 <border-color>

<border-color> 式は、1 つ 以上の境界線の色を表すために使用される。

構文表現 – <border-color>
<border-color>
  : <color>

10.3.6 <border-radii>

<border-radii> 式は、1 つ 以上の境界線の半径を表すために使用される。

構文表現 – <border-radii>
<border-radii>
  : "radii(" <lwsp>? <length> ( <lwsp>? "," <lwsp>? <length> )? <lwsp>? ")"

2 つの <length> 式が指定された場合、最初の 長さは、 インライン進行次元(コンテンツの場合)または 水平方向(領域の場合)の四分楕円の半径に対応し、2 番目の長さが存在する場合は、 ブロック進行次元(コンテンツの場合)または垂直方向 (領域の場合)の四分楕円の半径に対応する。一方、長さが 1 つだけ存在する場合は、 同じ値の 2 つの長さが指定されたものとして解釈される。

10.3.7 <border-style>

<border-style> 式は、1 つ 以上の境界線のスタイルを表すために使用される。

構文表現 – <border-style>
<border-style>
  : "none"
  | "dotted"
  | "dashed"
  | "solid"
  | "double"

dotted、dashed、および double の解釈は、 実装依存で あるとみなされる。

実装がこれらの境界線スタイルの値のいずれかを認識しない、またはその他の方法で区別しない 場合、 solid スタイルが指定されたものとして解釈しなければならない。したがって、 実装のうち 境界線をサポートするものは、少なくとも solid 値をサポートしなければならない。

10.3.8 <border-thickness>

<border-thickness> 式は、1 つ 以上の境界線の太さを表すために使用される。

構文表現 – <border-thickness>
<border-thickness>
  : "thin"
  | "medium"
  | "thick"
  | <length>

thin、medium、および thick の解釈は、 実装依存で あるとみなされる。ただし、解決された長さは次の 制約に従わなければならない: thickness(thin) < thickness(medium); thickness(medium) < thickness(thick)。

境界線の太さが <length> として表される場合、 パーセント値の形式を取ってはならない。すなわち、スカラー 値の形式を取らなければならない。

10.3.9 <color>

<color> 式は、名前付きの色、正確な RGB 色の三つ組、 または正確な RGBA 色の組を指定するために使用され、アルファ 成分 が 表される場合は、 不透明度 100% で最大値(255)となり、 不透明度 0% で最小値(0)となる。また、適用される色空間は [SRGB] によって定義される。

構文表現 – <color>
<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 成分 の値を表す場合、これらの値にはアルファが 事前乗算されていないものとみなされる。

完全な不透明でも完全な透明でもないアルファ値または不透明度が 適用される提示処理を行うために、 合成関数の意味論は、 合成関数の入力と出力の両方に [SRGB] 色空間を 使用することを前提として定義される。

注:

記載された合成の意味論に [SRGB] を使用することは、 実際のプロセッサが 内部または外部の目的で他の色空間を使用することを妨げるものではない。 例えば、提示プロセッサ は最終的に、 ここで使用される SRGB 値を、 テレビ機器での描画のために YUV 色空間に変換してもよい。

提示プロセッサ が、ある 有効な 色またはアルファ値をサポートしていない場合、その値を サポートされる最も近い値に等しいものとして解釈しなければならない。

注:

このコンテキストでは、サポートされる最も近い値 という語句は、 ユークリッド距離、すなわち RGB 色空間における算出された色とアルファ、およびサポートされる色とアルファの距離が 最小になる値を意味する。算出値から等距離にある、サポートされる最も近い値が 複数ある場合、不透明な黒 rgba(0,0,0,255) からの距離が最も小さい値、すなわち不透明な黒に最も近い値を使用する。

10.3.10 <digit>

<digit> は、整数およびその他の種類の数またはトークンを表すために使用される。

構文表現 – <digit>
<digit>
  : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

10.3.11 <emphasis-color>

<emphasis-color> 式は、テキストの 圏点の色を表すために使用される。

構文表現 – <emphasis-color>
<emphasis-color>
  : <annotation-color>

10.3.12 <emphasis-position>

<emphasis-position> 式は、テキストの 圏点の位置を表すために使用される。

構文表現 – <emphasis-position>
<emphasis-position>
  : <annotation-position>

10.3.13 <emphasis-style>

<emphasis-style> 式は、テキストの 圏点のスタイルを表すために使用される。

構文表現 – <emphasis-style>
<emphasis-style>
  : "none"
  | "auto" 
  | ( "filled" | "open" ) || ( "circle" | "dot" | "sesame" )
  | <quoted-string>

テキストの圏点のスタイル値の意味論を次のように定義する。

none

テキストの圏点はない。

auto

縦書きモードが適用される場合、filled sesame と等価であり、 それ以外の場合は、 filled circle と等価である。

filled

圏点は圏点の色で塗りつぶされる。

open

圏点は塗りつぶされない。すなわち、その輪郭は圏点の色で描画されるが、 内部は塗りつぶされない。

circle

圏点は円である。塗りつぶす場合は U+25CF '●' と等価であり、白抜きの場合は U+25CB '○' と等価である。

dot

圏点は点である。塗りつぶす場合は U+2022 '•' と等価であり、白抜きの場合は U+25E6 '◦' と等価である。

sesame

圏点はゴマである。塗りつぶす場合は U+FE45 '﹅' と等価であり、白抜きの場合は U+FE46 '﹆' と等価である。

<quoted-string>

圏点は文字列の最初の書記素クラスターであり、文字列の残りは無視される。

filled または open のみが指定された場合、それぞれ filled circle および open circle と等価である。

circle、dot、または sesame のみが指定された場合、それぞれ filled circle、filled dot、および filled sesame と等価である。

実装が圏点スタイルの値を認識しない、またはその他の方法で区別しない場合、 auto スタイルが指定されたものとして解釈しなければならない。したがって、 実装のうち テキストの圏点をサポートするものは、少なくとも auto 値をサポートしなければならない。

10.3.14 <extent>

<extent> 式は、矩形領域の寸法を指定する。

構文表現 – <extent>
<extent>
  : "auto"
  | "contain"
  | "cover"
  | <measure> <lwsp> <measure>

10.3.15 <family-name>

<family-name> 式は、フォントファミリー名を指定する。

構文表現 – <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
  : '\\' char

上記で指定した構文規則に従うことに加えて、次の意味規則が適用される。

  • <family-name> 式の意味値は、その unquoted-string または quoted-string 非終端記号のうち、該当する方の意味値である。

  • unquoted-string 非終端記号の意味値は、対 <quoted, content> であり、quoted はブール値 false で、 content は各 identifier 非終端記号の値を字句順に連結した結果である。このとき、最初の識別子以外の 各識別子の値の前には、 1 つの SPACE (U+0020) 文字を置く。

  • quoted-string 非終端記号の意味値は、対 <quoted, content> であり、quoted はブール値 true で、 content は引用文字列から引用符を除いた内容、すなわち区切りの引用符の 間にある文字の列である。

  • escape 非終端記号の意味値は、エスケープされた char の値である。

  • <family-name> が unquoted-string の形式を取り、 その中の identifier が 2 つの - HYPHEN-MINUS (U+002D) 文字で始まる場合、無効であると みなさなければならない。

  • <family-name> が unquoted-string の形式を取り、 その内容が単一の identifier で、 <generic-family-name> と(大文字と小文字を区別して比較したときに)一致する場合、 その <generic-family-name> として解釈しなければならない。

  • <family-name> が quoted-string の形式を取り、その内容 (引用符を除いた値)が <generic-family-name> と(大文字と小文字を区別して比較したときに)一致する場合、 その <generic-family-name> として解釈してはならず、 総称ではないフォントファミリーの実際の名前として解釈しなければならない。

  • 構文要素 char は、 [XML 1.0]、§2.2 で定義される Char 生成規則に従って解釈する。

注:

[CSS2]、§4.1.1 で定義される {unicode} エスケープ機構 は、この構文ではサポートされない。その代わり、作成者には、(1) 文字を 文書の符号化方式で 直接符号化するか、(2) [XML 1.0]、§4.1 に従って XML 文字参照を使用することが期待される。構文上の意味を持つ文字を 使用する際に、 通常の構文上の解釈を適用させない必要がある場合、上記で指定したバックスラッシュ (逆斜線)の escape 非終端記号を使用してエスケープしてもよい。

バックスラッシュ(逆斜線)の escape 非終端記号を使用する場合、上記の構文は エスケープできる文字に 制約を課していない。例えば、 \\[\n\r\f0-9a-f] は 許容される。これらのエスケープのいずれかが <family-name> 式に現れ、 それを 標準の XSL-FO または CSS パーサーで使用する場合は、{unicode} エスケープに 変換する 必要がある。特に、バックスラッシュの後に改行が続く場合、CSS では無視されるが、 上記の構文では 無視されない。このように無視されないエスケープされた改行は、 同等の {unicode} エスケープ(\a など)を使用して表現する必要がある。これは CSS で表現するためである。

10.3.16 <font-families>

<font-families> 式は、空でないフォントファミリーのリストを指定する。

構文表現 – <font-families>
<font-families>
  : font-family (<lwsp>? "," <lwsp>? font-family)*

font-family
  : <family-name>
  | <generic-family-name>

10.3.17 <font-size>

<font-size> 式は、1 つまたは 2 つの <length> 式によってフォントサイズを指定する。

構文表現 – <font-size>
<font-size>
  : <length> (<lwsp> <length>)?

10.3.18 <font-variant>

<font-variant> 式は、文字からグリフへの対応付け処理に影響を与える 1 つ以上のキーワードを指定する。具体的には、提示処理を行う際に、 異体グリフを選択するかどうか、 およびどの種類を選択するかを(適用されるフォントで利用可能な場合に)指定する。

構文表現 – <font-variant>
<font-variant>
  : "normal"
  | ("super" | "sub") || ("full" | "half") || "ruby"

値 normal が適用される場合、上位プロトコル が適用されない限り、 下付き、上付き、全角、半角、またはルビ用の グリフ変種はいずれも選択されない。

キーワード super が適用される場合、上付きの異体グリフが(利用可能なら) 選択される。 例えば、OpenType フォントで描画する場合、OpenType の sups 機能が 有効になる。キーワード sub が適用される場合、 下付きの異体グリフが(利用可能なら)選択される。 例えば、OpenType フォントで描画する場合、OpenType の subs 機能が 有効になる。

キーワード full が適用される場合、全角の異体グリフが(利用可能なら) 選択される。 例えば、OpenType フォントで描画する場合、OpenType の fwid 機能が 有効になる。キーワード half が適用される場合、 半角の異体グリフが(利用可能なら)選択される。 例えば、OpenType フォントで描画する場合、OpenType の hwid 機能が 有効になる。

キーワード ruby が適用される場合、ルビ用の異体グリフが(利用可能なら)選択される。 例えば、OpenType フォントで描画する場合、OpenType の ruby 機能が 有効になる。

注:

OpenType フォントの定義については、[OFF] を参照。

複数の変種指定が適用される場合、適用可能な変種指定を最大数満たすグリフが 選択される。例えば、 super と half の両方の変種指定が行われた場合、 上付きと 半角の両方の変種として同時に指定されているグリフが(利用可能なら)選択される。要求された変種指定の部分集合しか 満たせず、 選択される異体グリフに違いを生じさせる部分集合が複数存在する場合、 どの部分集合を適用するかは実装 依存とみなされる。すなわち、文書 処理コンテキスト によって決定される。

10.3.19 <generic-family-name>

<generic-family-name> 式は、フォントファミリーのクラスを示す総称 トークンを使用してフォントファミリーを指定する。

総称ファミリー名を具体的なフォントインスタンスに解決する処理は、 コンテンツの作成時とコンテンツの解釈時のいずれにおいても実装依存とみなされる。

構文表現 – <generic-family-name>
<generic-family-name>
  : "default"
  | "monospace"
  | "sansSerif"
  | "serif"
  | "monospaceSansSerif"
  | "monospaceSerif"
  | "proportionalSansSerif"
  | "proportionalSerif"

総称(フォント)ファミリー名と実際のフォントとの対応付けは、 この仕様では決定しない。ただし、 等幅とプロポーショナル、およびセリフとサンセリフの 区別は、提示を行う際に可能であれば維持するべきである。

総称(フォント)ファミリー名として monospace が指定された場合、 monospaceSansSerif または monospaceSerif のいずれかと等価なものとして解釈してもよい。総称ファミリー名 sansSerif および serif は、それぞれ proportionalSansSerif および proportionalSerif と等価なものとして解釈する。

総称ファミリー名 default が指定された(または初期値によって 暗黙に指定された)場合、その組版上の特性は実装 依存とみなされる。ただし、この既定のフォントファミリーは、 等幅のサンセリフフォントに対応付けることを推奨する。

10.3.20 <hex-digit>

<hex-digit> は、16 進数の算術を用いる 整数およびその他の種類の数またはトークンを表すために使用される。

構文解析においては、小文字と大文字を区別してはならない。

構文表現 – <hex-digit>
<hex-digit>
  : <digit>
  | "a" | "b" | "c" | "d" | "e" | "f"
  | "A" | "B" | "C" | "D" | "E" | "F"

10.3.21 <integer>

<integer> 式は、任意の符号付き整数値を表すために使用される。

構文表現 – <integer>
<integer>
  : sign? <non-negative-integer>

sign
  : "+" | "-"

注:

字句表現 "-0"、"0"、および "+0" の値は、 先頭または末尾に追加の "0" の数字が存在するかどうかにかかわらず、 整数値ゼロ(0)に等しいものとみなされる。

10.3.22 <length>

<length> 式は、座標 成分、すなわちデカルト空間内の点の成分、 またはデカルト空間内の 2 点間の距離のいずれかを表すために使用される。

構文表現 – <length>
<length>
  : scalar
  | <percentage>

scalar
  : <number> units

units
  : "px"
  | "em"
  | "c"                                     // abbreviation of "cell"
  | "rw"
  | "rh"

スカラーの長さの値から単位の 構成要素 を省略することは エラーである。

単位 px(ピクセル)は、論理 ピクセル に対応し、これは 文書座標空間 におけるものとして、 H.3 座標 空間 で定義される。ただし、 px(ピクセル)単位を <length> 式で使用するべきではない。 例外は、tts:extent 属性が、 px(ピクセル)単位を使用する 2 つの <length> 指定で 構成され、 tt 要素に指定されている場合である。 この指定がない場合、px(ピクセル)単位の使用は 非推奨である

サイズが単一の長さ、または同じ長さの 2 つの値で表される フォントに対して相対的に指定された場合、単位 em は、 [XSL-FO 1.1]、§5.9.13 で定義されるものと同一とみなされる。 ただし、サイズが異なる 2 つの長さで表される フォントに対して相対的に指定された場合、1 em は、 インライン進行方向の長さを指定するために使用されるときは、 縦横で異なる倍率で拡大縮小されたフォントのインライン進行次元に 等しく、ブロック進行方向の長さを指定するために使用されるときは、 拡大縮小されたフォントのブロック進行次元に等しい。

別途指定しない限り、em 単位は、 tts:fontSize 属性に関連付けられたプロパティの算出値に対して 相対的に解決される。この属性は、em 単位を解決するコンテキストとなる要素に適用されるものである。

単位 c(セル)の意味論は、 パラメーター 7.2.1 ttp:cellResolution によって定義される。

ルートコンテナー 相対 単位 rw および rh は、 ルート コンテナー領域 の幅と高さのそれぞれ 1 パーセント(1%)として定義される。 例えば、長さ 25rw は、 ルートコンテナー領域 の幅の 25% として解釈される。

10.3.23 <lwsp>

<lwsp> は、一般的な線形空白(LWSP)の構文構造を表すために使用される。

構文表現 – <lwsp>
<lwsp>
  : <whitespace>+

10.3.24 <measure>

<measure> 値は、距離を 絶対次元 または 相対次元 として表し、使用コンテキストによって どちらの次元が適用されるかが決まる。

2 つの絶対次元、高さ または 幅 のいずれかが適用される場合、 関連する相対次元、bpd または ipd は、 適用される 書字モード と テキストの 向き に従って決定され、 関連する相対次元によって、以下で説明する指定値の解釈が 規定される。

それ以外の場合は、2 つの相対次元、bpd または ipd のいずれかが適用され、その相対 次元によって、 以下で定義する指定値の解釈が規定される。

構文表現 – <measure>
<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>

スカラーまたはパーセント値として表される非負の数値。

10.3.25 <named-color>

<named-color> は、扱いやすい名前で RGBA 色を表すために使用され、 適用される色空間は [SRGB] によって定義される。

構文解析においては、小文字と大文字を区別してはならない。

構文表現 – <named-color>
<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 で指定された名前付きの色の集合である。

10.3.26 <non-negative-integer>

<non-negative-integer> 式は、任意の非負の整数 値を表すために使用される。

構文表現 – <non-negative-integer>
<non-negative-integer>
  : <digit>+

10.3.27 <non-negative-number>

<non-negative-number> 式は、任意の非負の整数または 実数を表すために使用される。

構文表現 – <non-negative-number>
<non-negative-number>
  : <non-negative-integer>
  | non-negative-real

non-negative-real
  : <digit>* "." <digit>+
  | <digit>+ "."

10.3.28 <number>

<number> 式は、符号を任意に付けた任意の整数または実 数を表すために使用される。

構文表現 – <number>
<number>
  : sign? <non-negative-number>

sign
  : "+" | "-"

注:

次の字句表現の値、 "-0", "-0.", "-.0", "-0.0", "0", "0.", ".0", "0.0", "+0", "+0.", "+.0", および "+0.0" は、 先頭または末尾に追加の "0" の数字が存在するかどうかにかかわらず、 数値ゼロ(0)に等しいものとみなされる。

10.3.29 <origin>

<origin> 式は、矩形領域の寸法を指定する。

構文表現 – <origin>
<origin>
  : "auto"
  | <length> <lwsp> <length>

10.3.30 <padding>

<padding> 式は、領域のパディング矩形に適用される内側へのオフセットを指定する。

構文表現 – <padding>

10.3.31 <percentage>

<percentage> 式は、任意の符号付き整数値または実数値の パーセント値を表すために使用される。

構文表現 – <percentage>
<percentage>
  : <number> "%"

10.3.32 <pitch>

<pitch> 値は、合成音声に適用される絶対的または相対的な ピッチ周波数の調整を表す。

構文表現 – <pitch>
<pitch>
  : <percentage>
  | <number> pitch-units?

pitch-units
  : "hz" | "st"

<percentage> として指定された場合、出力ピッチ (周波数)は input pitch (frequency) * (1.0 + (percentage/100)) である。 <number> として指定され、 sign が指定されている場合、出力ピッチは、入力ピッチを正方向 (負方向)に調整した値となる。これは、 符号が正(負)であるかどうかに従う。ただし、符号が指定されていない場合、入力ピッチ は指定値に設定される。すなわち、 入力ピッチに対する相対値ではない。units 構成要素 が存在する場合、ヘルツ(hz) または半音(st)、すなわち標準的な全音階における半音を指定する。 units 構成要素 が指定されていない場合、ヘルツが 暗黙に指定される。

10.3.33 <position>

<position> 式は、参照領域に対する領域または画像の原点を 間接的に決定するために使用される。

構文表現 – <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> 式は、次のように 1 つから 4 つの 構成要素 の 値で構成されてもよく、上記の構文によって形式的に定義される。

1 つの構成要素

水平方向のオフセット位置、または垂直方向の辺キーワード

2 つの構成要素

水平方向の位置オフセットに続く垂直方向の位置オフセット、または 垂直方向の位置キーワードに続く水平方向の位置キーワード

3 つの構成要素

水平方向の辺オフセットと垂直方向の位置キーワード、または水平方向の位置キーワード と垂直方向の辺オフセット。順序は任意。

4 つの構成要素

水平方向の辺オフセットと垂直方向の辺オフセット。順序は任意。

すべての <position> 式は、4 つの 構成要素 からなる、次の形式の同等な式に変換できる。 left <length> top <length> この変換には、次の 等価表を使用する。

1 つの構成要素の等価表
値 等価な値
center center center
left left center
right right center
top center top
bottom center bottom
<length> <length> center

2 つの構成要素の等価表
値 等価な値
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>

注:

2 つの 構成要素 からなる式が 2 つの <length> 値で構成される場合、 解釈が曖昧になる可能性を避けるため、最初の値は水平方向の 長さとして、2 番目の値は 垂直方向の長さとして解釈される。これは上記の表の最終行に示されている。

3 つの構成要素の等価表
値 等価な値
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>

4 つの構成要素の等価表
値 等価な値
bottom <length-v> left <length-h> left <length-h> top (100% - <length-v>)
bottom <length-v> right <length-h> left (100% - <length-h>) top (100% - <length-v>)
left <length-h> bottom <length-v> left <length-h> top (100% - <length-v>)
right <length-h> bottom <length-v> left (100% - <length-h>) top (100% - <length-v>)
right <length-h> top <length-v> left (100% - <length-h>) top <length-v>
top <length-v> left <length-h> left <length-h> top <length-v>
top <length-v> right <length-h> left (100% - <length-h>) top <length-v>

<length> 構成要素 が パーセント値として表される場合、そのパーセント値は、 使用コンテキストによって定義される何らかの参照寸法に対して解釈される。

<length> 構成要素 が <position> 式内にある場合、その値は正でも負でもよい。正の長さは 参照される辺から内側へのオフセットとして解釈され、負の長さは 参照される辺から外側へのオフセットとして解釈される。例えば、left 辺から内側へのオフセットは、その辺の右側に位置し(ゼロでない場合)、 left 辺から外側へのオフセットは、その辺の左側に位置する(ゼロでない場合)。これに 対して、right 辺から内側へのオフセットは、その辺の左側に位置し(ゼロで ない場合)、right 辺から外側へのオフセット は、その辺の右側に位置する(ゼロでない場合)。同様の関係が top および bottom の辺にも成り立つ。

4 つの 構成要素 からなる等価な式への変換を行う場合、 式 (100% - <length-h>) は、100% と、<length-h> 式の等価なパーセント値との差として解釈する。同様に、式 (100% - <length-v>) は、100% と、<length-v> 式の等価なパーセント値との差として解釈する。 どちらの場合も、結果の差が負のパーセント値になることがある。

10.3.34 <ruby-reserve>

<ruby-reserve> 式は、ルビテキストコンテンツ を配置する空間を確保するために使用される。

構文表現 – <ruby-reserve>
<ruby-reserve>
  : "none"
  | ("both" | <annotation-position>) (<lwsp> <length>)?

10.3.35 <shadow>

<shadow> 値は、生成された領域に適用する影の装飾を表す。 生成された領域が グリフ領域 である場合、影は グリフの輪郭に適用される (グリフ領域 の境界ボックスではない)。生成された領域が グリフ領域 でない場合、 影はその領域の境界線矩形に適用される。

構文表現 – <shadow>

影の値の式は、 2 つから 3 つの <length> 項と、 省略可能な <color> 項で構成され、 各項は線形空白(LWSP)によって互いに区切られる。

最初の <length> 項は、 関連する領域の 水平軸 に沿ったオフセットを表し、 正の値は右辺に向かう方向を、負の値は左辺に向かう方向を表す。 2 番目の <length> 項は、 関連する領域の 垂直軸 に沿ったオフセットを表し、 正の値は下辺に向かう方向を、負の値は上辺に向かう方向を表す。 3 番目の <length> 項が存在する場合、ぼかし 半径を表し、非負でなければならない。

ぼかし半径が指定されていない場合、すなわち <length> 項が 2 つだけ存在する場合、 算出値 0px が適用される。

<color> 項が 存在しない場合、tts:color プロパティの算出値が適用される。

注:

セル単位で表された <length> が tts:textShadow 値で使用される場合、 ブロック進行次元におけるセルの寸法が適用される。 例えば、テキストの影の太さが 0.1c、セル解像度が 20 × 10、ルートコンテナー 領域 の寸法が 640 × 480 と指定されている場合、 影の太さは公称で 480 / 10 * 0.1 ピクセル、すなわち 4.8px となる。 これはラスタライズの影響を考慮しない値である。

10.3.36 <text-combine>

<text-combine> 式は、縦書きテキストにおける縦中横の効果の 動作を決定するために使用される。

構文表現 – <text-combine>
<text-combine>
  : "none"
  | "all"

10.3.37 <text-decoration>

<text-decoration> 式は、テキスト装飾の 効果の動作を決定するために使用される。

構文表現 – <text-decoration>
<text-decoration>
  : "none"
  | (("underline" | "noUnderline") || ("lineThrough" | "noLineThrough") || ("overline" | "noOverline"))

10.3.38 <text-emphasis>

<text-emphasis> 式は、テキストの圏点の効果の動作を決定するために使用される。

構文表現 – <text-emphasis>

10.3.39 <text-outline>

<text-outline> 式は、テキストの輪郭効果の動作を決定するために使用される。

構文表現 – <text-outline>
<text-outline>
  : "none"
  | (<color> <lwsp>)? <length> (<lwsp> <length>)?

10.3.40 <text-shadow>

<text-shadow> 式は、テキストの影の効果の動作を決定するために使用される。

構文表現 – <text-shadow>
<text-shadow>
  : "none"
  | <shadow> (<lwsp>? "," <lwsp>? <shadow>)*

10.3.41 <whitespace>

<whitespace> 値は、一般的な空白文字を表すために使用される。

構文表現 – <whitespace>
<whitespace>
  : ( " " | "\t" | "\n" | "\r" )

10.4 スタイリングの意味論

この節では、スタイル解決の意味論を、 次の標準処理モデルによって定義する。

外部から観測可能な結果が、 このモデルによって生成される結果と一致する限り、 このモデルのどのような実装も許容される。

注:

ここで使用するスタイル解決の意味論は、 [XSL-FO 1.1]、§5 に基づいている。

10.4.1 スタイルの関連付け

スタイルの関連付けは、10.4.4 スタイル解決処理 のサブプロセスであり、 各コンテンツ要素および レイアウト要素の指定スタイル集合を決定するために使用される。

スタイル情報は、いくつかの方法でコンテンツ 情報およびレイアウト情報に関連付けることができる。

上記に加えて、スタイル情報は次を使用してレイアウト情報に関連付けることができる。

10.4.1.1 インラインスタイリング

スタイルプロパティは、対象となる要素に スタイリング属性 を直接 指定することによって、インライン形式で表すことができる。この方法で表された場合、 スタイル情報の関連付けを インラインスタイリング と呼ぶ。

インラインスタイリングによって関連付けられたスタイルプロパティには、他のすべての スタイル関連付けの形式より高い優先順位が与えられる。

例 – インラインスタイリング
<p tts:color="white">白 1 <span tts:color="yellow">黄</span> 白 2</p>

注:

上記の例では、2 つの テキストノード "白 1 " および " 白 2" は、匿名 span として解釈され、色の スタイルプロパティとは関連付けられていない。代わりに、色のスタイルを 親 p 要素から継承する。これは、後述する 10.4.2.1 コンテンツスタイルの 継承 で説明される。

10.4.1.2 参照スタイリング

スタイルプロパティは、インラインではない形式で表し、 対象となる要素から style 属性を使用して参照することができる。この方法で表された場合、 スタイル情報の関連付けを 参照スタイリング と呼ぶ。

style 属性が複数の参照を指定する場合、それらの参照は 指定された順序で評価される。この順序は、スタイルプロパティが 複数の参照経路で指定されている場合に、その値の解決に適用される。

参照スタイリングの使用は、 styling 要素の子孫である style 要素への参照に 制限される。エラーとみなされる のは、 style 要素が layout 要素の子孫であるにもかかわらず参照する場合であり、その場合の 提示の意味論は、この仕様では定義しない。

注:

参照スタイリングの使用は、参照の局所性を犠牲にする一方で、 スタイル指定の再利用を促進する。

注:

コンテンツ要素 は、スタイル プロパティと関連付ける際に、 インラインスタイリングと参照スタイリングを混在させてもよい。その場合、インラインスタイリングが 優先される。これは、前述の 10.4.1.1 インラインスタイリング で説明されている。

例 – 参照スタイリング
<style xml:id="s1" tts:color="white"/>
<style xml:id="s2" tts:color="yellow"/>
...
<p style="s1">白 1 <span style="s2">黄</span> 白 2</p>

注:

上記の例では、2 つの テキストノード "白 1 " および " 白 2" は、匿名 span として解釈され、色の スタイルプロパティとは関連付けられていない。代わりに、色のスタイルを 親 p 要素から継承する。これは、後述する 10.4.2.1 コンテンツスタイルの 継承 で説明される。

10.4.1.3 連鎖参照 スタイリング

スタイルプロパティは、インラインではない形式で表すことができ、さらにそれ自体が 他のインラインではないスタイルプロパティを参照して、対象となる要素を起点とする参照の連鎖を 作ることができる。この方法で表された場合、スタイル情報の関連付け を 連鎖参照スタイリング と呼ぶ。

連鎖するスタイル参照の列に循環がある場合、エラーとみなさなければならない。

参照スタイリングの使用は、 styling 要素の子孫である style 要素への参照に 制限される。エラーとみなされる のは、 style 要素が layout 要素の子孫であるにもかかわらず参照する場合であり、その場合の 提示の意味論は、この仕様では定義しない。

注:

連鎖参照スタイリングの使用は、スタイル指定を汎用的な集合と個別的な集合に グループ化することを促進し、スタイル指定の再利用をさらに支援する。

注:

コンテンツ要素 は、スタイル プロパティと関連付ける際に、 インラインスタイリング、参照スタイリング、および連鎖参照スタイリングを混在させてもよい。その場合、 インラインスタイリングが 優先される。これは、前述の 10.4.1.1 インラインスタイリング で説明されている。

例 – 連鎖参照スタイリング
<style xml:id="s1" tts:color="white" tts:fontFamily="monospaceSerif"/>
<style xml:id="s2" style="s1" tts:color="yellow"/>
...
<p style="s1">白の等幅テキスト</p>
<p style="s2">黄の等幅テキスト</p>

注:

上記の例では、2 番目の段落のテキストは黄色である。これは、 tts:color="yellow" が、実質的に tts:color="white" を上書きする(優先してマージされる)ためであり、後者はスタイル s2 がスタイル s1 への参照によって取得するものである。

10.4.1.4 入れ子スタイリング

スタイルプロパティは、対象となる要素の子として 1 つ以上の style 要素を直接指定することによって、入れ子形式で表すことができる。 この方法で表された場合、スタイル情報の関連付け を 入れ子スタイリング と呼ぶ。

入れ子スタイリングによって関連付けられたスタイルプロパティには、インライン スタイリングより低く、参照スタイリングより高い優先順位が与えられる。

例 – 入れ子スタイリング
<region xml:id="r1">
  <style tts:extent="128px 66px"/>
  <style tts:origin="0px 0px"/>
  <style tts:displayAlign="center"/>
</region>

注:

このバージョンの TTML では、入れ子スタイリングは region 要素にのみ適用される。

10.4.2 スタイルの継承

スタイルの継承は、10.4.4 スタイル解決処理 のサブプロセスであり、 各コンテンツ要素および レイアウト要素の指定スタイル集合を決定するために使用される。

スタイルは、次を使用してコンテンツ情報へ さらに伝播される。

継承されるスタイルを決定するためには、 文書 インスタンス の中間同期文書形式の要素階層を使用しなければならない。 このような中間形式は、11.3.1.3 中間同期文書の構築 で定義される。

注:

領域の継承処理を容易にするため、 元の形式ではなく、 中間同期文書形式を使用する。

10.4.2.1 コンテンツスタイルの継承

スタイルプロパティは、祖先の コンテンツ 要素 から、 中間同期文書内で継承される。 これは、スタイルプロパティが コンテンツ 要素(または 匿名 span)に関連付けられておらず、そのスタイルプロパティが 継承可能として 指定されている場合である。

スタイルプロパティを継承する必要があると判定された場合、継承される値は、 同名のスタイルプロパティの値でなければならない。その値は、 算出スタイル集合に含まれるものであり、 適用される中間同期文書内でそのプロパティを定義する、 当該要素の最も近い祖先要素の集合から取得する。

例 – コンテンツスタイルの継承
<p tts:fontFamily="monospaceSansSerif">
  <span tts:color="yellow">黄の等幅テキスト</span>
</p>

注:

上記の例では、文字項目を囲む span 要素、すなわち 黄の等幅テキスト を囲む要素は、tts:fontFamily スタイル プロパティを指定しておらず、このプロパティは継承可能である。そのため、 tts:fontFamily スタイルの 値は、算出スタイル 集合、すなわち祖先の p 要素の集合から継承され、 その値が 指定 スタイル 集合、すなわち span 要素の集合に追加される。

10.4.2.2 領域スタイルの継承

スタイルプロパティは、region 要素から、 次の場合に継承される。

  1. 継承可能な スタイルプロパティ P が、次のものと関連付けられていない場合: コンテンツ要素 または 匿名 span E。かつ、

  2. その スタイルプロパティ P が、 領域 R の算出スタイル 集合に含まれる場合。かつ、

  3. その要素 E が、領域内に流し込まれる(その中で提示される)場合。その領域は R である。

例 – 領域スタイルの継承
<region xml:id="r1">
  <style tts:color="yellow"/>
  <style tts:fontFamily="monospaceSerif"/>
</region>
...
<p region="r1">黄の等幅テキスト</p>

注:

上記の例では、匿名 span が 囲む文字 項目 黄の等幅テキスト は、実質的に tts:color および tts:fontFamily スタイルを、region 要素から継承する。これは、p 要素が流し込まれる(提示される)領域である。

10.4.3 スタイル解決における値の分類

スタイル解決、レイアウト、および提示の処理中、 スタイルプロパティ の値は 3 つの分類に 区別される。 その分類は次のとおりである。

10.4.3.1 指定値

スタイルプロパティ の値であって、要素に関連付けられるか、 または継承 されるものは、要素または 匿名 span における 指定値 と呼ばれる。 ある要素のすべての指定スタイルプロパティの集合 を、その要素の 指定スタイル集合 と呼ぶ。

10.4.3.2 算出値

スタイルプロパティが相対的な値の式を使用して指定される場合、 例えば名前付きの色、相対単位(セルなど)、またはパーセント値の場合、 RGB の三つ組、ピクセルなどの絶対単位に さらに解決する必要がある。

スタイル解決処理中、指定されたスタイル値は、 絶対値として再解釈(または再計算)された後、 算出値 として記録されることがある。 ある要素のすべての算出スタイルプロパティの集合 を、その要素の 算出スタイル集合 と呼ぶ。

スタイル値が明示的または暗黙的に継承される場合、 祖先要素から継承されるのは、そのスタイルの算出値 である。これが必要なのは、パーセント値などの相対単位の一部を 解決するには、直接の (局所的な)参照コンテキストで式を評価する必要があり、 関連する(解決用の)式を利用できない離れた(遠隔の)参照コンテキストでは 評価できないためである。

10.4.3.3 使用値

スタイルの継承後、算出値は、レイアウト時または 提示時にさらに解決する必要がある場合がある。 これは、特定のプロパティの意味論がそのような解決を要求する場合、または 解決を行うために必要な情報が、レイアウトもしくは 提示処理が行われるまで利用できない場合である。このような値を 使用値 と呼び、 最終的な 実際 値 と同じ値である必要はない。 実際値については後述する。

注:

使用値 の決定に 先立って、 常に算出値の継承が行われる。すなわち、使用値 の計算は、通常、10.4.4.4 スタイル解決 プロセス が完了した後に行われる。

注:

[CSS2]、§6.1.3 も参照。

10.4.3.4 実際値

実際の提示処理中には、別の変換が行われ、 一部の値の式が具体的な物理値に対応付けられる。例えば、 算出スタイル値の色には、さらに最も近い色への 近似とガンマ補正が、 表示処理中に適用される。また、算出スタイル値で ピクセルを使用する長さの値の式は、物理的な(機器の)ピクセルではなく、 論理的なピクセルを表すものとみなされる。したがって、これらの 論理 ピクセル は、 提示時にさらに物理的な(機器の)ピクセルへ変換または 対応付けられる。

論理値から機器値への対応付けの処理によって得られる最終的な 値を、実際値 と呼ぶ。 ある要素の すべての実際のスタイルプロパティの集合を、 その要素の 実際スタイル集合 と呼ぶ。

注:

提示処理中に、複数の実際値の集合が 生成されることがある。例えば、TTML の 提示プロセッサ 機器が RGBA コンポーネント映像信号を出力し、それが NTSC または PAL テレビによってさらに変換され、最終的な 画像が生成されることがある。この場合、色と寸法の両方が、 提示前にさらに変更されることがある。

注:

一般に、TTML の 提示プロセッサ は、実際スタイル集合の値に アクセスできない。そのため、以下でスタイル 解決処理を形式的に説明する際には、実際値を それ以上使用または参照しない。

10.4.4 スタイル解決処理

ここでは、スタイル解決の処理を、 算出値を解決(決定)するための手続き(およびその結果)として定義する。 対象は、コンテンツ要素およびレイアウト要素に適用されるすべてのスタイルプロパティである。

ここで説明する処理は、 11.3.1 領域のレイアウトと提示 の不可欠なサブプロセスを構成する。

10.4.4.1 概念的 定義

以下で指定するスタイル解決処理モデルを 解釈するために、次の概念的定義を適用する。

[スタイルプロパティ]

スタイルプロパティ P は、 組 [name, value] で構成されるとみなされる。ここで、 プロパティの名前は組 [namespace value, unqualified name] であり、プロパティの値は 組 [category, type, value expression] である。P が表す ものは、 明示的に指定された、または既定値が設定された スタイリング属性 に関連付けられた、インターン化(インスタンス化)された状態である。

例 – 概念的なスタイルプロパティ
[
  ["http://www.w3.org/ns/ttml#styling", "color"],
  ["specified", color, "red"]
]

[スタイル(プロパティ)集合]

スタイル(プロパティ)集合は、順序のないスタイル プロパティの集まりで構成される。集合内に同一の名前を持つ 2 つのスタイルプロパティは存在しない。ここで「同一の名前」とは、 名前の組の名前空間値と修飾されていない名前が、それぞれ等しいことを意味する。

指定スタイル(プロパティ)集合では、各スタイル プロパティの分類は "specified" である。 要素 E の指定スタイル(プロパティ)集合を SSS(E) と呼ぶ。

例 – 概念的な(指定)スタイル(プロパティ)集合
{
  [
    ["http://www.w3.org/ns/ttml#styling", "backgroundColor"],
    ["specified", color, 0x00FF00 ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "color"],
    ["specified", color, "red" ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "fontSize"],
    ["specified", length, "1c" ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "lineHeight"],
    ["specified", length, "117%" ]
  ]
}

算出スタイル(プロパティ)集合では、各スタイル プロパティの分類は "specified" または "computed" のいずれかである。算出スタイル(プロパティ)集合が 要素 E のものである場合、これを CSS(E) と呼ぶ。

例 – 概念的な(算出)スタイル(プロパティ)集合
{
  [
    ["http://www.w3.org/ns/ttml#styling", "backgroundColor"],
    ["specified", color, 0x00FF00 ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "color"],
    ["computed", color, 0xFF0000 ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "fontSize"],
    ["computed", length, "24px" ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "lineHeight"],
    ["computed", length, "28px" ]
  ]
}

[スタイル(プロパティ)のマージ]

スタイルプロパティ Pnew を、 次のように スタイル(プロパティ)集合 SS にマージする。スタイルプロパティ Pold がすでに SS に存在し、 Pnew の名前が Pold の名前と同一である場合、 SS 内の Pold を Pnew に置き換える。それ以外の場合は、 Pnew を SS に追加する。

[スタイル(プロパティ)集合のマージ]

スタイル(プロパティ)集合 SSnew を、 既存のスタイル(プロパティ)集合 SSold に、 次のようにマージする。各 スタイルプロパティ Pnew が SSnew に含まれるとき、Pnew を SSold にマージする。

10.4.4.2 指定スタイル集合の 処理

指定スタイル集合 SSS が、要素または 匿名 span E のものである場合、 SSS(E) は、次の規則を記載された 順序で適用することによって決定される。

  1. [初期化] E の指定スタイル集合 SSS を 空集合に初期化する。

  2. [参照および連鎖参照 スタイリング] 各 style 要素 SREF のうち、 style 属性によって参照され、その属性が E に指定されているものについて、style 属性で指定された順序で処理する。SREF が styling 要素の子孫である場合、 指定スタイル集合、すなわち SREF の SSS(SREF) を、 E の指定スタイル集合である SSS(E) にマージする。

  3. [入れ子スタイリング] E が 条件付きで 除外されて いない場合、 入れ子になった 条件付きで含まれる 子 style 要素 SNEST のそれぞれについて、 E の子要素の指定された順序で、 SNEST の指定スタイル集合である SSS(SNEST) を、 E の指定スタイル集合 SSS(E) にマージする。

  4. [インラインスタイリング] E が 条件付きで 除外されて いない場合、 各 スタイルプロパティ P のうち、インターン化 (インスタンス化) されたものを、指定された スタイリング属性、すなわち E の属性から取得し、 P を指定スタイル 集合、すなわち E の SSS(E) にマージする。

  5. [アニメーションスタイリング] E の要素型が インライン アニメーション 要素でない場合、 各 条件付きで含まれる インラインアニメーション 子要素 A のうち、 要素 E の子であるものについて、 アニメーション可能なスタイル を、A の指定 スタイル集合である SSS(A) から、E の指定スタイル集合 SSS(E) にマージする。

  6. [暗黙の継承および初期値へのフォールバック] E の要素型が Animation.class 要素 グループに含まれず、 スタイリング要素型 style でもない場合、 各 スタイルプロパティ P のうち、 インターン化(インスタンス化)されたものを スタイリング属性 から取得し、次の 下位手順を順番に実行する。

    1. P が指定 スタイル集合、すなわち E の SSS(E) に存在する場合、 次の スタイルプロパティ に進む。

    2. P が継承可能であり、E が region 要素でない場合、 次を実行する。

      • P′ を、次の検索結果に設定する。 算出スタイル集合内で P の値を検索する。対象となる集合は、 E の最も近い祖先要素である NEAREST-ANCESTOR(E) のもので、 CSS(NEAREST-ANCESTOR(E)) が定義を含む対象は P である。

    3. (1) P が継承可能であり、E が region 要素である場合、 または (2) P が継承可能でなく、P の適用対象が E である場合、次を実行する。

      • P′ を初期値、すなわち プロパティ P の初期値に設定する。プロパティの初期値は、 次のように決定する。

        1. initial 要素が P の初期値を定義している場合、 その値を使用する。

        2. それ以外の場合は、プロパティ P の定義で指定された初期値を使用する。

    4. P′ の値が未定義でない場合、 P′ を E の指定スタイル集合である SSS(E) にマージする。

10.4.4.3 算出スタイル集合の処理

算出スタイル集合 CSS が、要素または 匿名 span E のものである場合、 CSS(E) は、次の規則を記載された 順序で適用することによって決定される。

  1. [指定スタイルの解決] 指定スタイル集合 SSS を、その所有元である E について、すなわち SSS(E) を、 10.4.4.2 指定スタイル集合の 処理 に従って決定(取得)する。

  2. [初期化] CSS(E) を、次の集合の(深い)コピーに初期化する: SSS(E)。

  3. [フィルタリング] E が animate、set、または style 要素である場合、 CSS(E) を、さらなる解決を行わずに、 結果の算出スタイル集合として返す。それ以外の場合は、次の規則に進む。

  4. [相対値の解決] 各 スタイルプロパティ P のうち、 CSS(E) に含まれ、 P の値の型が相対的であるものについて、次の 下位手順を順番に実行する。

    1. 可能であれば、P の相対値を、 等価な非相対的な(算出)値に置き換える。

    2. P の分類を "computed" に設定する。

注:

上記のフィルタリング規則の結果として、 animate、set、または style 要素の算出スタイル集合には 指定値のみが含まれ、その場合、 相対値の式は相対的なままとなる。したがって、 相対値の式(参照によるスタイルの関連付けによって 割り当てられることがある)の解決は、 常にレイアウト要素または コンテンツ要素 のコンテキスト内で行われる。これらは 提示 コンテキストを持つ要素であり、提示を伴わない宣言コンテキスト、 すなわち animate、set、または参照可能な style 要素のコンテキストでは行われない。

注:

上記の相対値の解決規則では、相対値を解決できない場合がある。 例えば、 レイアウト時または提示時まで解決できない場合には、 算出値 をさらに解決して、 使用値 を取得する必要があることがある。

10.4.4.4 スタイル解決プロセス

最上位のスタイル解決プロセスを次のように定義する。 各要素および 匿名 span を先行順に走査し、 それぞれを E とする。これらは中間同期文書、 DOCinter に属する。次の 下位手順を順番に実行する。

  1. [フィルタリング] E が次のいずれでもない場合、先行順走査における次の要素に 進む。すなわち、 E に対して、以下の後続の手順を実行しない。

    または、スタイル付き要素 であって、サポートされる 拡張モジュール で定義されるもの。

  2. [算出スタイルの解決] 算出スタイル集合 CSS を、その所有元である E について、すなわち CSS(E) を、 10.4.4.3 算出スタイル集合の 処理 に従って決定(取得)する。

10.4.5 スタイルの手続き

この節では、この仕様の他の箇所から参照される、スタイルに関連する各種の 手続きを定義する。

10.4.5.1 包含の計算
[包含の拡大縮小を計算する](inout 対象矩形 TR, in 参照矩形 RR)
  1. 単位 が、対象矩形 TR または参照矩形 RR のいずれかについて、 論理ピクセル(すなわち、 px 単位)で表されていない場合、必要に応じて単位を 論理ピクセル に変換する。

  2. 対象矩形 TR の幅 Wt がゼロの場合、 Wt を 1 に設定する。 同様に、対象矩形 TR の高さ Ht がゼロの場合、Ht を 1 に設定する。

  3. SARr を、参照 矩形 RR の記録アスペクト比とする。

  4. SARt を、対象 矩形 TR の記録アスペクト比とする。

  5. 拡大縮小係数 SF を次のように決定する。

    1. SARr が SARt 以下の場合、SF は Wr / Wt とする。ここで、 Wr および Wt は、それぞれ参照矩形および対象矩形の幅である。

    2. それ以外の場合、SARr は SARt より大きいので、SF は Hr / Ht とする。ここで、 Hr および Ht は、参照矩形および対象矩形の高さに、 それぞれ対応する。

  6. SF が 1.0 に等しくない場合、 Wt を SF * Wt に設定し、 Ht を SF * Ht に設定する。 すなわち、対象矩形 TR 自体を、拡大縮小係数 SF によって拡大縮小する。

注:

上記のアルゴリズムを実装する際には、記録アスペクト比および拡大縮小 係数を、 少なくとも十進数で有効数字 7 桁を提供する形式で表す。

10.4.5.2 被覆の計算
[被覆の拡大縮小を計算する](inout 対象矩形 TR, in 参照矩形 RR)
  1. 単位 が、対象矩形 TR または参照矩形 RR のいずれかについて、 論理ピクセル(すなわち、 px 単位)で表されていない場合、必要に応じて単位を 論理ピクセル に変換する。

  2. 対象矩形 TR の幅 Wt がゼロの場合、 Wt を 1 に設定する。 同様に、対象矩形 TR の高さ Ht がゼロの場合、Ht を 1 に設定する。

  3. SFW を WR /WT とする。ここで、 WR および WT は、それぞれ 参照矩形 RR および対象矩形 TR の幅である。

  4. SFH を HR /HT とする。ここで、 HR および HT は、それぞれ 参照矩形 RR および対象矩形 TR の高さである。

  5. SFW および SFH が 1 より大きい場合、SF を SFW と SFH の小さい方とする。 それ以外の場合、SF を SFW と SFH の大きい方とする。

  6. SF が 1.0 に等しくない場合、 Wt を SF * Wt に設定し、 Ht を SF * Ht に設定する。 すなわち、対象矩形 TR 自体を、拡大縮小係数 SF によって拡大縮小する。

注:

上記のアルゴリズムを実装する際には、拡大縮小係数を、 少なくとも十進数で有効数字 7 桁を提供する形式で表す。

10.4.5.3 せん断の計算

せん断値は線形関数によってせん断角に対応付けられ、そのせん断角は、 せん断値(パーセント値)に 90 度を乗じた値に等しい。 せん断値が 0% の場合、せん断変換は適用されない。値が 100% の場合、2 次元のせん断変換として、 インライン進行方向に関連付けられた軸に 90 度の変換が適用される。 値が -100% の場合、せん断変換として -90 度の変換が適用される。指定されたパーセント値の絶対値が 100% より大きい場合、100% が適切な 符号付きで指定されたものとして解釈しなければならない。

注:

結果のせん断角の絶対値が 90 度の場合、 せん断角の 使用値 を、 小さなイプシロンだけ減らしてもよい。 これは、使用値 の正接が 定義されるようにするためである。

インライン進行方向が X 軸に対応する場合、2 次元のせん断 変換は次の行列で表される。

| 1 a 0 |
| 0 1 0 |
| 0 0 1 |

ここで、a はせん断角の正接に等しい。

インライン進行方向が Y 軸に対応する場合、2 次元のせん断 変換は次の行列で表される。

| 1 0 0 |
| a 1 0 |
| 0 0 1 |

11 レイアウト

この節では、コア語彙カタログの レイアウト 情報を 指定する。ここで、 レイアウトとは、コンテンツに適用される分離可能な情報層であり、 そのコンテンツの提示に関する作成者の意図を 表すものと理解する。

注:

レイアウト情報とスタイル情報の 2 つの層は、それぞれ独立して 分離可能であるとみなされる。レイアウト情報は、コンテンツの提示先となる 1 つ以上の空間または領域を指定し、スタイル情報は、 そのレイアウト内で提示を行う方法を指定する。

場合によっては、コンテンツの作成者が、スタイル情報をレイアウト情報またはコンテンツ情報に 直接埋め込む(インライン化する)ことを選択してもよい。そのような場合には、代替手段として 参照スタイリングを使用する方法があり、 その方法では、スタイル 情報は埋め込まれない(インライン化されない)。

11.1 レイアウト要素の語彙

次の要素は、 文書インスタンス の構造と主要なレイアウト上の側面を指定する。

11.1.1 layout

layout 要素は、レイアウト情報に適用されるメタデータを含め、 アウトオブラインのレイアウト情報をグループ化するために使用されるコンテナー要素である。

layout 要素は、子として 0 個以上の Metadata.class 要素 グループの要素を受け入れ、その後に 0 個以上の region 要素が続く。

XML 表現 – 要素情報項目: layout
<layout
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, region*
</layout>

時間の意味論が layout 要素のコンテンツに適用される範囲では、この要素の暗黙の時間区間は、 ルート時間 範囲 と始点および終点が一致するものとして定義される。

11.1.2 region

region 要素は、コンテンツの流し込み先となる矩形の空間または領域を 定義するために 使用され、その流し込みは提示を目的として行われる。

region 要素は、(1) layout 要素の子、または (2) Block.class 要素グループに属する要素の子として現れてもよい。 前者の場合、その領域は アウトオブライン領域 と呼ばれ、後者の 場合は インライン領域 と呼ばれる。

さらに、 10.4.2.2 領域スタイルの継承 に従い、 region 要素は、そこに流し込まれるコンテンツによって継承される、 継承可能なスタイルプロパティを指定するために使用してもよい。

region 要素は、子として 0 個以上の Metadata.class 要素 グループの要素を受け入れ、 その後に 0 個以上の Animation.class 要素グループの要素が続き、 さらにその後に 0 個以上の style 要素が続く。

Metadata.class 要素グループの子によって指定されたメタデータは、意味論上、region 要素とその子孫の 全体に適用される。 Animation.class 要素グループの子によって指定されたアニメーション要素は、意味論上、region 要素に適用される。 すべての子 style 要素は、それを含む region 要素にのみ適用される局所的なスタイル定義と みなさなければならない。すなわち、参照スタイリングの解決には適用されない(ただし、領域 スタイルの継承には適用される)。

XML 表現 – 要素情報項目: region

アウトオブライン region 要素は、 次のタイミング属性を 1 つ以上指定してもよい: begin、end、dur。インライン region 要素は、 タイミング属性を指定してはならず、指定されている場合、その属性を 提示処理において無視しなければならない。

begin および(または)end 属性がアウトオブラインの region 要素に指定されている場合、それらは時間区間の開始点および(または)終了点を 指定する。この区間中、領域はアクティブ化の対象となることができ、 領域の子アニメーション要素のタイミングはこの区間を基準とする。 指定されている場合、これらの開始点と終了点は、 時間区間に関連付けられた最も近い祖先要素の 時間区間に対する相対値である。その区間が明示的か暗黙的かは問わない。 時間区間に関連付けられた、アウトオブライン region 要素の最も近い祖先要素 は、layout 要素である。 dur 属性がアウトオブライン region 要素に指定されている場合、 その属性は、 領域の単純継続時間を指定する。

インライン region 要素のアクティブ時間区間は、 親 コンテンツ要素 のアクティブ時間区間である。

提示処理の意味論を決定するにあたり、 時間的に非アクティブな領域は、視覚媒体に提示されるとき、 可視のマークを一切生成してはならない。

注:

アウトオブライン region 要素は、 2 つの目的で時間区間に関連付けてもよい。 (1) 領域とそのコンテンツの提示を時間的に制限するため、 および (2) 領域スタイルのアニメーションを実行できる時間的コンテキストを 提供するためである。

例えば、作成者は アウトオブライン region 要素を指定し、 その他の内容は空であるものの、 可視の背景色を持たせ、ある時点から提示を開始し、 領域の継続時間にわたって表示させたい場合がある。領域の単純継続時間は、 その領域を対象とするコンテンツの提示効果の範囲を 制限する役割も果たす。また、作成者は領域を ルートコンテナー領域 内で移動させたり、 アニメーション効果によって領域の背景色を変更したりしたい場合もある。 いずれの場合も、領域の アクティブ時間区間を設定する必要がある。

アウトオブライン領域 とは異なり、インライン領域 は、 親 コンテンツ要素 の時間的コンテキストに明確に結び付けられる。 そのため、独立したタイミングの指定を必要としない(また、許容しない)。

timeContainer 属性が region 要素に指定されていない場合、 並列 の時間包含の意味論を持つものとして解釈しなければならない。

tts:origin および tts:position 属性の両方が region 要素に存在する場合、tts:origin は、 提示処理において無視しなければならない。 tts:origin と tts:position 属性のどちらも存在しない場合、 tts:position 属性の初期値の意味論が、 提示処理に適用される。

ttm:role 属性が region 要素に指定されている場合、その値は、 構文表現 – ttm:role で定義される値の構文に従わなければならない。この属性によって識別される ロールは、領域の意味的なロールを表し、 その領域を対象とする (関連付けられた)コンテンツの意味的なロールとは独立している。

11.1.2.1 インラインアニメーションの特別な 意味論

div または p 要素 E に指定された場合、 次のスタイル属性は、region R、すなわち E に関連付けられた領域に、以下で詳述するように例外的に適用される。

そのような場合、これらのスタイル属性それぞれの適用は、 匿名の インラインアニメーション と等価とみなされる。その形式は set アニメーション要素 A であり、 アニメーションは R に対し、E のアクティブ時間 区間と等価なアクティブ時間区間にわたって適用される。また、複数のアニメーション要素 (Ai , ..., Aj) がすでに R に適用される場合、 A は、これら既存のアニメーションの最後のものに続いて、すなわち、 Aj の直後に適用される。

注:

同じスタイル属性の複数の匿名 インライン アニメーション が、 ある領域 R に適用される場合、対応する set アニメーション要素、 Aj , ..., Ak , は、要素の先行順走査の順序に従って R に追加される。その要素は、 Ej , ..., Ek であり、 これらのアニメーションを生成したものである。

また、ある要素の特定のスタイル属性に複数のアニメーションを適用する 意味論は、 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%">寸法を変更</p>

上記の入力断片の例では、tts:extent 属性が 段落(p)要素に指定されている。 この要素には、一般性を失うことなく、時間区間 [10s,12s) が割り当てられている。 この属性は、 次の出力断片で set 要素の形式の匿名アニメーションを合成するために 使用され、属性は、 等価なタイミング属性とともに set 要素へコピーされる。その後、元の tts:extent は、 段落(p)から削除される。

例 – 領域の匿名インラインアニメーション - 等価な出力断片
<region xml:id="r1" tts:extent="80% 10%" ...>
  <set begin="10s" end="12s" tts:extent="70% 20%"</set>
</region>
...
<p region="r1" begin="10s" end="12s">寸法を変更</p>

結果の出力断片は、領域の元の寸法が保持される一方で、 指定された時間区間中には、 子アニメーションがこの寸法を上書きすることを示している。これにより、 領域の寸法を希望どおりに (一時的に)変更する効果が得られる。

11.2 レイアウト属性の語彙

この節では、11.2.1 region 属性を定義する。この属性は、 コンテンツ要素 とともに使用される。

11.2.1 region

region 属性は、region 要素を参照するために使用される。この要素は、コンテンツ 要素 の流し込み先となる空間または領域を定義する。

指定されている場合、region 属性の値は、 [XML Schema Part 2]、 §3.3.9 で定義される IDREF データ型に従わなければならず、さらに、この IDREF は region 要素で、 祖先に layout 要素を持つものを参照しなければならない。

region 属性は、次の要素型の インスタンスに指定してもよい。

注:

region 要素が region 属性によって参照されており、条件付きで 除外されて いる場合、 その領域は、region 属性が指定された要素に関連付けられない。

注:

後述の 11.3.1 領域のレイアウトと提示 を参照。 そこでは、領域へのコンテンツの 流し込みについて詳しく説明する。

11.3 レイアウトの意味論

11.3.1 領域のレイアウトと提示

この節では、領域のレイアウトと 提示の意味論を、次の標準処理モデルによって 定義する。

どのような 実装も、外部から観測可能な 結果がこのモデルによって生成される結果と一致する限り、許容される。

11.3.1.1 既定の領域

文書インスタンス が アウトオブライン領域 を指定していない場合、 次の特性を持つ 既定の領域 が暗黙に指定される。

さらに、 アウトオブライン領域 が指定されていない場合、 region 属性は、 いずれの コンテンツ要素 にも指定してはならない。この制約は、その 文書インスタンス 全体に適用される。

ある 文書 インスタンス について既定の領域が暗黙に指定される場合、 body 要素 は、その既定の領域を暗黙に対象とする(関連付けられる)。

既定の領域を暗黙に指定する場合、文書インスタンス は、 region 要素とその 親 layout 要素が head 要素内に指定され、対応する region 属性が 次の例に示すように body 要素に 指定されているものとして扱う。

例 – 暗黙に指定される既定の領域
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <layout>
      <region xml:id="anonymous"/>
    </layout>
  </head>
  <body region="anonymous"/>
</tt>

注:

上記の例では、既定の region 要素と region 属性が暗黙に指定される。さらに、layout コンテナー要素も、 暗黙に指定される region 要素のために暗黙に指定される。

11.3.1.2 インライン領域

インライン領域 は、 領域 を指定するための構文上の仕組みであり、領域の 指定と、 その領域を参照するコンテンツとの構文上の距離を最小限にする。意味論上、各 インライン領域 は、一意の アウトオブライン領域 を指定することと等価であり、その領域は、 コンテンツ要素 のうち、そのコンテキストで インライン領域 が指定される(または暗黙に指定される)ものからのみ暗黙に参照される。

インライン領域 は、 region 要素を コンテンツ要素 の子として指定することによって宣言される。 その親は Block.class 要素グループに属し、この指定を インライン領域の 指定 と呼ぶ。

インライン領域は、手続き [インライン領域を 処理する] に従って処理され、この手続きは、インライン領域に対応する アウトオブライン領域を生成する。また、この手続きは、コンテンツ 要素 のうちインライン領域に関連付けられたものを、 対応する生成済みのアウトオブライン領域に結び付ける。

注:

コンテンツ要素 は、 単一の 領域 にしか関連付けることができない(ある 中間同期 文書 内において)。 この関連付けは、属性の指定、または子 region 要素を介して行われる。したがって、 コンテンツ要素 が region 属性を指定している場合、すべての インライン領域の指定 は、 無視される。

[インライン領域を処理する]

各 コンテンツ要素 B のうち、 Block.class 要素グループに属するものについて、 次の手順を順番に実行する。

  1. B の [attributes] 情報項目プロパティが 次の属性を 含む場合、すなわち region 属性を含む場合、 この手続きを終了する

  2. B の [children] 情報項目プロパティが 次の要素を含まない 場合、すなわち region 要素 R を含まない場合、この手続きを終了する。

  3. 空の region 要素 R'  を作成し、 次のように初期化する。

    • [children] 情報項目プロパティ、すなわち R'  の当該プロパティを、 R の [children] 情報項目プロパティの深いコピーに設定する。

    • [attributes] 情報項目プロパティ、すなわち R'  の当該プロパティを、 [attributes] 情報項目プロパティ、すなわち R の当該プロパティの深いコピーに設定する。

    • [attributes] 情報項目プロパティ、すなわち R'  の当該プロパティが、 xml:id 属性を含まない場合、暗黙の xml:id 属性を追加する。その値として生成される ID は、TTML 文書インスタンス の範囲内で一意であるものとする。 それ以外の場合、ID を xml:id 属性、すなわち R'  の当該属性の値とする。

    • 次の属性が存在する場合、 [attributes] 情報項目プロパティ、すなわち R'  の当該プロパティから削除する: begin、 dur、および end。

    • begin および end 属性を、 [attributes] 情報項目プロパティ、すなわち R'  の当該プロパティに、 次のように追加する。

      1. smpte 時間基準かつ非連続マーカー モードで動作していない場合、これらの begin および end 属性の値を、それぞれアクティブ開始時刻および 終了時刻と等価な値に設定する。これらは B の時刻であり、 文書 時間座標空間 内のものである。

      2. それ以外の場合(smpte 非連続モード)、これらの begin および end 属性の値を、ラベル付きの 同期イベント(マーカー)に対応する値に設定する。そのイベントは、 それぞれの開始時刻および終了時刻、 すなわち B の 文書 時間座標空間 内の時刻に適用されるものである。

  4. TTML 文書インスタンス が 次の要素を持たない 場合、すなわち head 要素を持たない場合、 空の head 要素を、 最初の子として、 tt 要素に挿入する。

  5. head 要素が、 子 layout 要素を持たない場合、 空の layout 要素を挿入する。 挿入位置は、 styling 要素が 存在すればその直後、かつ animation 要素が存在すればその直前とする。どちらも存在しなければ、 head 要素の最後の子として挿入する。

  6. R'  を、[children] 情報項目 プロパティに追加する。その所有元は、 子 layout 要素であり、 その親は head 要素である。

  7. region 属性を、 値 ID で、[attributes] 情報 項目プロパティ、すなわち B の当該プロパティに追加する。

  8. R を、[children] 情報項目プロパティ、 すなわち B の当該プロパティから削除する。

インライン領域の 指定 の使用と、 その結果として生成されるアウトオブライン領域を、次の例に示す。

例 – インライン領域の指定
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head/>
  <body>
    <div begin="5s" dur="10s">
      <region tts:extent="540px 100px" tts:origin="50px 339px"/>
      <p>あるコンテンツ</p>
    <div/>
  <body/>
</tt>

例 – 生成されたアウトオブライン領域
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <layout>
      <region xml:id="region3451" begin="5s" end="15s"
        tts:extent="540px 100px" tts:origin="50px 339px"/>
    </layout>
  </head>
  <body>
    <div begin="5s" dur="10s" region="region3451">
      <p>あるコンテンツ</p>
    <div/>
  <body/>
</tt>

注:

上記の一対の例では、生成された アウトオブライン領域のタイミング属性が、 元の dur 属性の代わりに end 属性を 使用している点に注意する。元の属性は、 親 div 要素、すなわちインライン region 要素の親に指定されていた。dur から end へのこの変換は、 上記の手続きで要求される。これは、生成されたアウトオブライン領域の アクティブ時間区間を、ルート時間 範囲内で指定するためである。

注:

この例で生成される領域 ID、region3451 は、実装 依存である。唯一の要件は、 xml:id 属性の有効な値であることであり、これには、 文書インスタンスの範囲内で一意であることも含まれる。

11.3.1.3 中間同期文書の 構築

提示処理を行うために、(1) [タイミングを解決する] 手続きを呼び出し、次に (2) [中間文書を 構築する] 手続きを呼び出す。

[タイミングを解決する]
  1. 必要に応じて、手続き [匿名 span を構築する] を呼び出す。 それ以外の場合、この時点で呼び出さないのであれば、暗黙の継続時間を 各 テキストノード について解決する。対象は、 この手続きを呼び出していたなら、 暗黙の継続時間が解決されていたはずのノードである。

  2. 現在の 文書インスタンス のアクティブ継続時間を、 順序付けられた 時間座標の列 {T0, T1, T2, ...} に分割する。 各時間座標 Ti では、 いずれかの要素が時間的にアクティブまたは非アクティブになる。

[匿名 span を構築する]

次の手順を順番に実行する。

  1. 各 有意なテキストノード のうち、 コンテンツ要素 の子であるものについて、 匿名 span を合成し、 その テキストノード を囲む。 新しい 匿名 span を、元の 子 テキストノード の代わりに、その兄弟 および親の階層内に配置する。

  2. 連続する 匿名 span の各列について、その 列を単一の 匿名 span に置き換える。 その span は、 テキストノード の列を含み、この列は、 個々の子 テキストノード、すなわち 元の 匿名 span の列に含まれていたものを表す。

  3. 子が単一の 匿名 span である各 span 要素について、 その 匿名 span を、 その子 テキストノード の列に置き換える。

[中間文書を 構築する]

[タイミングを解決する] 手続きから得られる各時間区間について、 それぞれの区間は、連続する時間座標の対 (Ti,Ti+1)、 すなわち (T0,T1)、 (T1,T2)、… で構成される。現在の 文書インスタンス を、その元のソース 形式である DOCsource  から、中間同期文書形式である DOCinter  へ、 次の手順を順番に実行して対応付ける。

  1. 手続き [インライン領域を 処理する] を呼び出す。

  2. 各 時間的にアクティブな 領域 R について、 部分木、 すなわち DOCsource の body 要素を根とする部分木を複製する。

  3. この部分木を後行順に走査して評価し、 次の条件のいずれかが真である場合、要素を枝刈りする。

    1. 提示関連 要素 ではない 場合。または、

    2. 時間的に非アクティブである場合。または、

    3. 空であり、Animation 要素でも br 要素でもない場合。または、

    4. 領域 R に関連付けられていない場合。 この判定は、[領域を 関連付ける] 手続きに従う。

  4. 枝刈りした部分木が空でない場合、その親を R 要素に変更する。

  5. 最後に、上記の手順を完了した後、元の body 要素を中間文書から枝刈りし、次にすべての region、 begin、end、および dur 属性を枝刈りする。これらは、 もはや 意味論上の関連性を持たない。

注:

この節では、枝刈りする という用語を 要素について使用する場合、その要素を親の子から削除することを意味する。 これは、枝刈りされた要素の子孫が、 もはや その要素の親の子孫ではなくなることを意味する。枝刈りする を 属性について使用する場合、その属性を、 関連付けられた(所有元の)要素ノード から削除することを意味する。

注:

適合する提示プロセッサは、上記の手続きの後処理手順として、 スタイル解決を早期に行うことが許容される。 詳しくは、[フロー変換] 手続きの手順 (2) を参照。

[領域を関連付ける]

コンテンツ要素 は、 次の規則に従って 領域に関連付けられる。規則は記載された順序で評価し、最初に満たされた規則を 使用して、残りの規則は飛ばす。

  1. 要素が region 属性を指定しており、 その領域が 条件付きで 除外されて いない場合、 要素は、その属性が参照する領域に 関連付けられる。

  2. その要素のいずれかの祖先が region 属性を指定しており、 その領域が 条件付きで 除外されて いない場合、 要素は、この属性を指定している最も近い 祖先が参照する領域に関連付けられる。

  3. 要素が子孫要素を含み、その子孫要素が region 属性を指定しており、 その領域が 条件付きで 除外されて いない場合、 要素は、その属性が参照する領域に 関連付けられる。

  4. 既定の領域が暗黙に指定された場合(いずれの region 要素も存在しないため)、 要素はその既定の領域に関連付けられる。

  5. 要素はいずれの領域にも関連付けられない。

上記の処理を実行した結果は、 N 個の中間同期 文書インスタンス の列、 DOCinter0 … DOCinterN−1 となる。

注:

実装が、隣接する 2 つの同期 文書インスタンス、 DOCinterN DOCinterN−1  の間に大きな類似性を検出できる場合、 プロセッサ の実装は、 2 つのインスタンスの提示間の 遷移を可能な限り滑らかにする処理を適用できる。例えば、 [CTA-608-E]、§C.3、および [CC-DECODER-REQ] に記述される処理である。

11.3.1.4 同期フロー処理

時間的な(同期)スライスを作成し、その後、 領域ごとに選択されたコンテンツ階層を再対応付けした後、結果の中間 同期文書にフロー変換手順を適用する。この手順は、 根付きフローオブジェクト木を生成する。この木は、[XSL-FO 1.1] で定義される XSL FO 文書インスタンスとして表され、 XSL FO に対応するものがない TTML 固有のスタイルプロパティによって、 意味論上拡張される。

注:

この節での XSL FO の使用は、概念上のもののみを意図しており、 TTML の規範的な提示の意味論を定義する 目的に限って採用される。このアルゴリズムの実際の実装に、XSL-FO 表現の作成または処理は 要求されない。特に、これらの意味論は、 Cascading Style Sheets(CSS)などの代替の提示モデルを使用して実装できる。

注:

ある 文書インスタンス には、 TTML スタイルプロパティまたはスタイルプロパティ値であって、 [XSL-FO 1.1] に対応するものがないものが存在し得るため、 実装者は、この仕様が参照しているのは [XSL-FO 1.1] のレイアウトモデルであり、 適合する [XSL-FO 1.1] フォーマッティングプロセッサの使用を要求しているのではないことに注意するべきである。 そのようなプロセッサでは、この仕様で定義される提示の意味論の 全体を 必ずしも満たせず、また TTML の提示の意味論を 実装するために 不要な多数の機能を含むためである。

提示処理を行うために、 次によって生成された各中間同期文書、 11.3.1.3 中間同期文書の 構築 による DOCinteri  について、(1) 次の [フロー 変換] 手続きを呼び出して XSL FO 文書インスタンス Fi  を取得し、次に (2) 処理が 視覚媒体での 提示を必要とする場合、Fi に対して、関連するすべてのフォーマッティングおよび描画の 意味論を適用する。その意味論は、 [XSL-FO 1.1] およびこの仕様で規定されるものと一致しなければならない。

[フロー変換]
  1. まだ呼び出されていない場合、手続き [匿名 span を構築する] を実行する。

    注:

    適合する提示プロセッサは、この手順を より早い処理段階で実行することが許容され、その場合は、 ここでこの手順を繰り返さない。匿名 span の構築が、中間同期文書の 構築より前に行われる場合に注意する。中間同期文書の構築は、 11.3.1.3 中間 同期文書の構築 で定義される。この場合、中間 同期文書には 匿名 span が含まれる。

  2. 10.4.4.4 スタイル 解決プロセス に従ってスタイルを解決する。

    注:

    適合する提示プロセッサは、この手順を、 次の手続きを実行する際の後処理手順として実行することが許容される。 [中間文書を構築する] 手続きである。 その場合、各中間同期文書、すなわち 11.3.1.3 中間 同期文書の構築 によって生成された文書には、 算出スタイル集合 が含まれる。 したがって、ここでこの手順を繰り返すことはない。

  3. tt 要素を fo:root 要素に対応付ける。初期状態では、 fo:layout-master-set 要素をその中に配置し、その要素は有効な 次の要素を 含むものとする: fo:simple-page-master。さらに、その要素は 子 fo:region-body を含む。ルートコンテナー領域 の寸法のうち、 次の tt 要素に表されたものを、page-width および page-height 属性へ対応付ける。これらの属性は、 fo:simple-page-master 要素に指定する。

  4. layout 要素を fo:page-sequence 要素と、その 子 fo:flow 要素に対応付ける。これらは、ページマスターとページ 領域のうち、 上記で生成した単純ページマスターによって定義されるものを参照する。

    注:

    F を [XSL-FO 1.1] フォーマッティングプロセッサで整形して生成される XSL FO 領域木において、 page-viewport-area は、 fo:page-sequence 要素が、 唯一生成された fo:simple-page-master 要素への参照によって生成するものであり、ルートコンテナー領域 に 対応する。 これは、前述の 2 定義 で定義される領域である。

  5. 空でない各 region 要素を、 fo:block-container 要素に対応付ける。その要素には、値が absolute の absolute-position 属性、top、left、 bottom、および right 属性を指定する。これらは、領域の原点および 寸法(パディングを含む)と等価な矩形を表す。また、line-stacking-strategy 属性には値 line-height を指定する。

    注:

    領域の寸法は、 fo:block-container によって生成されるブロック領域の割り当て矩形に対応する。

    注:

    region 要素を fo:block-container に対応付ける場合、 次の属性の 1 つ以上の値として負のオフセットを使用する必要が あることがある: top、left、bottom、および right。 これらの XSL-FO プロパティで負の値が必要になるのは、領域がその包含 ブロックの外側まで広がる場合である。

  6. 各 (1) body、div、および p 要素、 または (2) image 要素のうち、 ブロックレベルのコンテキストにあるもの、すなわち image が、 Block.class 要素グループ内の要素の子であるものについて、 その要素が、tts:display スタイル プロパティで値が none のものに関連付けられていない場合:

    1. 要素が image 要素でない場合、 その要素を別個の fo:block 要素に対応付ける。 fo:block のスタイルプロパティには、 算出 スタイル集合、すなわち各元の TTML コンテンツ要素 に関連付けられた集合を使用して値を設定する。

    2. それ以外の場合(要素が image 要素である場合)、 その要素を別個の fo:block 要素に対応付ける。 その要素は、単一の子 fo:external-graphic 要素を含むものとする。 fo:block および fo:external-graphic のスタイルプロパティには、算出 スタイル集合、すなわち各元の TTML コンテンツ要素 に関連付けられた集合を使用して値を設定する。 また、src プロパティ、 すなわち fo:external-graphic 要素の当該プロパティには、 関連する 画像 リソース への適切な参照を使用して値を設定する。

  7. 前の手順で生成された fo:block フォーマッティングオブジェクトのうち、 body 要素に対応するものについて、次の下位手順を順番に呼び出す。

    1. display-align スタイルプロパティ、すなわちこの fo:block の当該プロパティの値が center または after である場合、 次の要素の最初の子として、 fo:block に空の fo:block を合成して挿入し、次の属性を指定する: space-after.optimum、space-after.maximum、 および space-after.conditionality。ここで、最初の 2 つの 属性の値は、包含する fo:block-container 要素の高さまたは幅のうち、 ブロック進行次元として 指定される方とする。最後の属性の値 は、 retain とする。

    2. display-align スタイルプロパティ、すなわちこの fo:block の当該プロパティの値が center または before である場合、 次の要素の最後の子として、 fo:block に空の fo:block を合成して挿入し、次の属性を指定する: space-after.optimum、space-after.maximum、 および space-after.conditionality。ここで、最初の 2 つの 属性の値は、包含する fo:block-container 要素の高さまたは幅のうち、 ブロック進行次元として 指定される方とする。最後の属性の値 は、 retain とする。

    注:

    折り畳み可能な追加の空間を、ブロック 進行 次元に挿入する目的は、fo:block のうち、 body 要素に対応するものについて、 この fo:block の前側と後側の辺を、 fo:block-container の前側と後側の辺に一致させることである。 このコンテナーは、 包含する region に対応する。同時に、 ブロック進行次元における 整列の要件も考慮する。例えば、 これにより、 body 要素に関連付けられた背景色が、 transparent でない場合、 包含する領域全体を塗りつぶすことが保証される。

  8. 各 (1) span 要素および 匿名 span、 または (2) インラインレベルのコンテキストにある image 要素、 すなわち p または span 要素の子 image について、 その要素または 匿名 span が、 次のプロパティに関連付けられていない 場合、すなわち値が none の tts:display スタイルプロパティに関連付けられていない場合:

    1. オブジェクトが 匿名 span である場合、その文字項目の列、 すなわち 匿名 span の当該列を、 別個の fo:inline 要素に対応付ける。 fo:inline のスタイルプロパティには、 算出 スタイル集合、すなわち 匿名 span に関連付けられた集合を使用して値を設定する。

    2. オブジェクトが span 要素である場合、その要素 を別個の fo:inline 要素に対応付ける。スタイル プロパティ、すなわち fo:inline の各プロパティには、算出 スタイル集合、すなわち span に関連付けられた集合を使用して値を設定する。

    3. それ以外の場合(オブジェクトが image 要素である場合)、 その要素を別個の fo:inline 要素に対応付ける。 その要素は、単一の子 fo:external-graphic 要素を含むものとする。 fo:inline および fo:external-graphic のスタイルプロパティには、算出 スタイル集合、すなわち image 要素に関連付けられた集合を使用して値を設定する。 また、src プロパティ、 すなわち fo:external-graphic 要素の当該プロパティには、 関連する 画像 リソース への適切な参照を使用して値を設定する。

  9. 各 br 要素のうち、 tts:display スタイルプロパティで値が none のものに関連付けられていないものについて、その要素を、 次のプロパティを持つ別個の fo:character 要素に 対応付ける。

    • character="&#x000A;"

    • suppress-at-line-break="retain"

  10. 各 スタイルプロパティ のうち、ある 算出 スタイル集合に含まれ、 [XSL-FO 1.1] に対応するものがないものについて、そのプロパティを そのまま直接、 関連するフォーマッティングオブジェクトへ対応付ける。これは、入力 TTML コンテンツ要素 のうち、 その スタイルプロパティ が適用されるものによって生成されたオブジェクトである。

  11. 必要に応じて、結果の各フォーマッティングオブジェクト要素に一意の id 属性を合成する。 この属性は、その要素を入力要素、 すなわち、 そのフォーマッティングオブジェクト要素を生成するもととなった要素に関連付ける。

11.3.1.5 詳細な例(非規範的)

上記の処理手順の例を、例 – サンプルソース文書 から始めて、以下で詳しく説明する。

例 – サンプルソース文書
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
      </region>
    </layout>
  </head>
  <body xml:id="b1">
    <div xml:id="d1" begin="0s" dur="2s">
      <p xml:id="p1" region="r1">テキスト 1</p>
      <p xml:id="p2" region="r2">テキスト 2</p>
    </div>
    <div xml:id="d2" begin="1s" dur="2s">
      <p xml:id="p3" region="r2">テキスト 3</p>
      <p xml:id="p4" region="r1">テキスト 4</p>
    </div>
  </body>
</tt>

上記の文書では、コンテンツ階層は 2 つの区分で構成され、それぞれが 2 つの段落を含む。このコンテンツは、重なり合わない 2 つの領域のいずれかを対象とする (関連付けられる)。これらの領域は、位置 と前景色を除いて同じスタイルを持ち、その前景色は、 領域内へ親を付け替えられた span(この場合は匿名 span)に継承され、適用される。

次の最初の中間文書は、時間 区間 [0,1) の同期状態を示す。この間は、区分 d1 のみが時間的にアクティブであり、 段落 p1 および p2(ならびにその祖先) は、それぞれ領域 r1 および r2 に関連付けられている。

注:

以下に示す中間文書は、有効な 文書インスタンス ではなく、 説明を目的として使用する、 考えられる内部処理状態の表現である。

例 – 中間文書 – [0s,1s)
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-1">
          <div xml:id="d1-1">
            <p xml:id="p1">テキスト 1</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d1-2">
            <p xml:id="p2">テキスト 2</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

TTML と一致する描画結果を生じる XSL FO 文書インスタンスで、 最初の中間文書に対してフロー処理を行うことによって生成できる ものを、以下に示す。

例 – XSL FO 文書 – [0s,1s)
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="m1"
      page-width="640px" page-height="480px">
      <fo:region-body/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="m1">
    <fo:flow flow-name="xsl-region-body">
      <!-- region (r1) -->
      <fo:block-container id="r1" absolute-position="absolute"
        left="10px" top="100px" width="620px" height="96px"
        background-color="black" display-align="center">
        <!-- body (b1) -->
        <fo:block id="b1-1">
          <!-- body の空間 (前側) を埋める要素 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
          <!-- div (d1) -->
          <fo:block id="d1-1">
            <!-- p (p1) -->
            <fo:block id="p1" text-align="center">
              <fo:inline font-size="40px" font-weight="bold"
              color="red">テキスト 1</fo:inline>
            </fo:block>
          </fo:block>
          <!-- body の空間 (後側) を埋める要素 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
        </fo:block>
      </fo:block-container>
      <!-- region (r2) -->
      <fo:block-container id="r2" absolute-position="absolute"
        left="10px" top="300px" width="620px" height="96px"
        background-color="black" display-align="center">
        <!-- body (b1) -->
        <fo:block id="b1-2">
          <!-- body の空間 (前側) を埋める要素 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
          <!-- div (d1) -->
          <fo:block id="d1-2">
            <!-- p (p2) -->
            <fo:block id="p2" text-align="center">
              <fo:inline font-size="40px" font-weight="bold"
              color="yellow">テキスト 2</fo:inline>
            </fo:block>
          </fo:block>
          <!-- body の空間 (後側) を埋める要素 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
        </fo:block>
      </fo:block-container>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

次の 2 番目の中間文書は、 時間区間 [1,2) の同期状態を示す。この間は、区分 d1 と d2 の両方が時間的にアクティブであり、段落 p1 と p4(ならびにその祖先)は領域 r1 に関連付けられ、 段落 p2 と p3(ならびにその祖先)は、 領域 r2 に関連付けられている。

例 – 中間文書 – [1s,2s)
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-1">
          <div xml:id="d1-1">
            <p xml:id="p1">テキスト 1</p>
          </div>
          <div xml:id="d2-1">
            <p xml:id="p4">テキスト 4</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d1-2">
            <p xml:id="p2">テキスト 2</p>
          </div>
          <div xml:id="d2-2">
            <p xml:id="p3">テキスト 3</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

次の 3 番目の中間文書は、時間 区間 [2,3) の同期状態を示す。この間は、区分 d2 のみが時間的にアクティブであり、 段落 p4 および p3(ならびにその祖先) は、それぞれ領域 r1 および r2 に関連付けられている。

例 – 中間文書 – [2s,3s)
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-1">
          <div xml:id="d2-1">
            <p xml:id="p4">テキスト 4</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d2-2">
            <p xml:id="p3">テキスト 3</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

11.3.2 行のレイアウト

p 要素、すなわち段落の 表現が、 提示プロセッサ によって処理される場合、そのコンテンツは 改行処理 によって分割され、 各部分は、それぞれ固有の 行領域 に割り当てられる。この点に 関して、この仕様は、 [XSL-FO 1.1] で定義されるフォーマッティングモデル、 特に §4.5、§4.6、および §4.7 に基づくモデルを採用する。

11.3.2.1 改行処理

文書インスタンス に適用されるプロファイルが、 #lineBreak-uax14 機能のサポートまたは使用を要求する場合、 改行 アルゴリズム [UAX14] で定義される推奨事項が、 文書インスタンス のコンテンツに対して行のレイアウトを行う際に適用される。

11.3.2.2 行の積み重ね

この小節は非規範的である。

ブロック進行 次元 の計算、 すなわち 行領域 の、一般に 行高 と呼ばれる寸法の計算は、 特に複雑になることがある。とりわけ、複数のフォントファミリー、フォントサイズ、フォント スタイル、 フォントリソース、および高度なテキスト整形機能、 例えばルビ、圏点、および テキスト結合(縦中横)が適用される場合である。

この処理で生成された各 行領域 は、積み重ねられる。 その方向は、 直前の 行領域 の垂直方向の下側(横書きの 行の場合)、 または直前の行の水平方向の横側(縦書きの行の場合)である。 [フロー変換] 手続きの手順 (5) で指定されるように、 TTML は line-height 行積み重ね戦略を採用する。これは、 [XSL-FO 1.1]、§4.5 で形式的に定義されており、 以下では、そこにある用語と概念を使用する。

この戦略を使用する場合、行領域 の寸法は、 次の寸法に 対応する: per-inline-height-rectangle の寸法。これは、 その特定の 行領域 について計算されるものであり、さらに、 (1) 次の寸法、 expanded-nominal-requested-line-rectangle の寸法を評価することによって決定される。これは、 段落の各 行領域 で一様である。また、(2) 次の寸法、expanded-rectangle の寸法も評価する。 これは、各子 インライン領域、すなわち 行領域 の子についてのものであり、 段落の各 行領域 の各 インライン 領域 ごとに異なることがある。

上記で用いた 行高 という語句は、 スタイルプロパティ の算出値、すなわち tts:lineHeight 属性に関連付けられたプロパティの算出値と混同するべきではない。この後者の値 は、次の計算に使用するパラメーターとなる: 半行間 の計算。これは、行領域 および個々の インライン領域 に適用される。 これらはそれぞれ、(1) 次の寸法、expanded-nominal-requested-line-rectangle の寸法、 すなわち 行領域 の当該矩形の寸法と、(2) 次の寸法、expanded-rectangle の寸法を決定するためのパラメーターである。 後者は、子 インライン領域、すなわち 行 領域 の子についてのものである。 半行間 のうち、行 領域 に適用されるものと、 子 インライン領域 に適用される 半行間、 すなわちその 行領域 の子に適用されるものは、異なる値であることが多い点に十分注意する。 詳細は、 [XSL-FO 1.1]、§6.5.2 にある(行領域 に適用される場合)。ある インライン領域 にも同様の扱いが適用される。ただし、これは、 [XSL-FO 1.1] では明示されていないが、[CSS2]、§10.8.1 の記述から推論できる。

要約すると、line-height 行積み重ね戦略によって定義される動作、 すなわち [XSL-FO 1.1]、§4.5 で定義され、 TTML が採用する動作は、[CSS2] の行積み重ね戦略と互換であることを意図しており、これは次を意味する。

  • tts:lineHeight の算出値が、 段落において normal である場合、(1) 段落の各 行領域 は、直前の 行領域 と正確に接し、交差しない。 また、(2) 行 高、すなわち 段落の 行領域 の高さは、 各 行領域 のスタイルが適用されたコンテンツに応じて変化する。

  • tts:lineHeight の算出値が、 段落において、 指定された <length> である場合、 段落の 行領域 は互いに正確に接するが、 そのコンテンツ矩形は、 (1) ブロック 進行次元 において、コンテンツを収めるために必要な空間より小さい空間を占めることがある。 この場合、そのコンテンツは、段落の直前の 行領域 と交差することがある。または、 (2) ブロック 進行次元 において、コンテンツを収めるために必要な空間より大きい空間を占めることがある。

注:

次の高度なテキスト整形機能のいずれかが行のコンテンツに適用されると、 行高 に追加の調整が 行われることがある。

  • ルビテキスト注釈

  • テキスト結合(縦中横)

  • 圏点

  • (グリフごとの)フォントのせん断

11.3.3 描画モデル

この節では、整形された TTML 文書インスタンスの描画に関する、 特定の側面の詳細を指定する。

11.3.3.1 描画順序

提示 プロセッサ が採用する描画順序は、 [XSL-FO 1.1]、§4.9 で指定される描画モデルと一致しなければならない。さらに、 次の制約を適用する。

  • ルビテキスト span によって生成される、行領域の子孫のインライン領域は、 その行領域の他の子孫のインライン領域より後に 描画される。

  • ブロック領域またはインライン領域の固有のマークのうち、 image 要素によって生成されるものは、 関連付けられた画像のラスターで構成される。

注:

image 要素によって生成されるマークのうち、 次の tts:backgroundImage 属性によって参照されるものは、ブロック領域またはインライン領域の固有の マークには含まれない。すなわち、それらは領域の背景 マークの一部である。

12 タイミング

この節では、コア語彙カタログの タイミング 情報を 指定する。ここで、 タイミングとは、コンテンツに適用される分離可能な情報層であり、 そのコンテンツの時間的な提示に関する作成者の意図を 表すものと理解する。

12.1 タイミング要素の語彙

コア語彙カタログで使用する、タイミング関連の要素語彙は 定義されていない。

12.2 タイミング属性の語彙

この節では、時間指定要素 とともに使用する、次の基本的なタイミング属性を定義する。

さらに、この節では 12.2.4 timeContainer 属性を定義する。この属性は、時間指定 要素 のうち、 同時にタイミングコンテナーとしても機能するものとともに使用される。

12.2.1 begin

begin 属性は、開始 点、すなわち 時間指定要素 に関連付けられた時間区間の開始点を指定するために使用される。 指定されている 場合、begin 属性の値は、 <time-expression> 指定、すなわち 12.3.1 <time-expression> で定義されるものに従わなければならない。

時間区間の開始点は、その 区間に含まれる。すなわち、区間は左側で閉じている。

begin 属性の意味論は、 [SMIL 3.0]、§5.4.3 で定義されるものであり、 この仕様で定義される、それに優先する意味論を考慮する。

注:

[SMIL 3.0]、§5.4.3 で定義されるように、 begin 属性が 時間指定要素 に明示的に指定されていない場合、 属性の既定値は、時間コンテナーである最も近い 祖先によって決定される。ただし、TTML では、その祖先は、 並列時間コンテナーまたは逐次時間コンテナーのいずれかであり、どちらも既定 値 0s を適用する。

12.2.2 dur

dur 属性は、継続時間、すなわち 時間指定要素 に関連付けられた時間区間の継続時間を指定するために使用される。 指定されている 場合、dur 属性の値は、 <time-expression> 指定、すなわち 12.3.1 <time-expression> で定義されるものに従わなければならない。

注:

<time-expression> 指定の clock-time 形式が、 dur 属性で使用される場合、その値は、 暗黙の 2 つのクロック時刻式の差として解釈されることを意図している。

文書インスタンス が、 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 属性の値から要素の開始時刻を引いた差の、小さい方に等しい。

12.2.3 end

end 属性は、終了点、 すなわち 時間指定要素 に関連付けられた時間区間の終了点を指定するために使用される。 指定されている場合、end 属性の値は、 <time-expression> 指定、すなわち 12.3.1 <time-expression> で定義されるものに従わなければならない。

時間区間の終了点は、その 区間に含まれない。すなわち、区間は右側で開いている。

空でないアクティブ 時間区間の提示効果は、終了点が指定する時刻に 等しい、またはその直後のフレーム(もしくはティック)の、 直前のフレームまでを含むが、その終了側のフレーム(もしくはティック)には及ばない。

注:

例えば、アクティブ区間が [10s,10.33333s) であり、 フレームレートが毎秒 30 フレームである場合、その区間の提示効果 は、フレーム 300 から 309 のみに制限される(0s が フレーム 0 に対応すると仮定する)。アクティブ区間を [300f,310f) と指定した場合も同様である。

end 属性の意味論は、 [SMIL 3.0]、§5.4.3 で定義されるものであり、 この仕様で定義される、それに優先する意味論を考慮する。

12.2.4 timeContainer

timeContainer 属性は、局所的な時間的 コンテキストを指定するために使用され、時間指定された子要素はこのコンテキストによって時間的に配置される。

指定されている場合、timeContainer 属性の値は、 次のいずれかでなければならない。

  • par

  • seq

要素インスタンスの時間コンテナーの意味論が par である場合、 子要素の時間区間は並列に、 すなわち時間的に同時に適用されるとみなされる。さらに、 各子要素の時間区間の指定は、コンテナー要素インスタンスの時間 区間に対する相対指定とみなされる。 par 時間コンテナーの [SMIL 3.0] endsync 意味論を決定するために、既定値 all を適用する。

注:

endsync の動作に既定値 all を 使用する点は、既定値として last を使用する [SMIL 3.0] とは異なる。

要素インスタンスの時間コンテナーの意味論が seq である場合、 子要素の時間区間は順番に、 すなわち時間的に逐次適用されるとみなされる。さらに、 各子要素の時間区間の指定は、その兄弟要素の時間 区間に対する相対指定とみなされる。ただし、最初の子要素の場合は、 コンテナー要素インスタンスの時間区間に対する 相対指定とみなされる。

各時間コンテナーは、独立した時間基準、すなわち 時間座標系を構成するとみなされる。

時間コンテナーの意味論を持つ要素に timeContainer 属性が 指定されていない場合、par 時間コンテナーの意味論を適用しなければならない。

時間コンテナーの意味論は、次の要素型にのみ適用される。

並列および逐次の時間 包含の意味論は、[SMIL 3.0]、§5.4.4 で定義されるものであり、 この仕様で定義される、それに優先する意味論を考慮する。

12.3 時間値の式

タイミング属性の値では、次の式が使用される。

12.3.1 <time-expression>

<time-expression> は、ある時間基準内の 座標を指定するために使用され、適用される時間基準は、 ttp:timeBase パラメーターによって決定される。また、 I 時間式の意味論 で定義される意味論が適用される。

注:

次を参照: 7.2.5 ttp:frameRate、 7.2.9 ttp:subFrameRate、 7.2.10 ttp:tickRate、および 7.2.11 ttp:timeBase。これらでは、 フレームレート、サブフレームレート、ティックレート、および時間基準の 明示的な指定について詳しく説明する。

構文表現 – <time-expression>
<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 で定義される。 エラーとみなされる のは、frames 項または f(フレーム)単位が、clock 時間基準の適用時に指定される場合である。

<time-expression> が clock-time によって表され、sub-frames 項が 指定されている場合、この項の値は、 区間 [0…S-1] に制限しなければならない。ここで S は、 ttp:subFrameRate パラメーターによって決定されるサブフレームレートであり、7.2.9 ttp:subFrameRate で定義される。 エラーとみなされる のは、 sub-frames 項が、 clock 時間基準の適用時に指定される場合である。

エラーとみなされる のは、 <time-expression> の wallclock-time 形式が、 文書インスタンス で使用され、適用される時間 基準が clock でない場合である。

適用される時間基準の算出値が smpte である場合、 (1) <time-expression> の offset-time 形式の使用は、 非推奨である。また、 (2) 秒の fraction 成分 を、clock-time 形式の <time-expression> で使用することは、 非推奨である。

注:

上記で指定した <time-expression> の構文は、 タイムゾーン情報の表現を明示的に除外している。作成者が、 <time-expression> を特定のタイムゾーンに関連付けたい場合、 時間式を UTC に変換し、 utc クロックモードの使用を指定してもよい。このモードについては、7.2.2 ttp:clockMode を参照。

12.4 タイミングの意味論

時間包含、継続時間、および区間の意味論のうち、 [SMIL 3.0] で定義されるものは、同名の 時間指定要素 およびタイミング 語彙であって、この仕様で定義されるものの解釈に、次の 制約の下で適用される。

  • 匿名 span の暗黙の継続時間を、 次のように定義する。 匿名 span の親時間コンテナーが並列 時間コンテナーである場合、 暗黙の継続時間は、 [SMIL 3.0] で定義される継続時間値 indefinite と等価である。匿名 span の 親時間コンテナーが逐次時間コンテナーである場合、暗黙の継続時間 はゼロと等価である。

  • animate、audio、br、 image、または set 要素の暗黙の継続時間は、 その要素を 匿名 span として扱った場合と同じと定義される。

  • 非混合コンテンツ、すなわち #PCDATA テキストノード のみを持つ span 要素の暗黙の継続時間は、 その span 要素を 匿名 span として扱った場合と同じと定義される。

  • body、div、p、 または混合コンテンツを持つ span 要素の暗黙の継続時間は、(1) その要素が並列または逐次のどちらの時間コンテナーであるか、(2) 既定の endsync の意味論、すなわち前述の 12.2.4 timeContainer で定義されるもの、 および (3) これらの時間コンテナーに適用される [SMIL 3.0] の 意味論に従って決定される。

  • region 要素の暗黙の継続時間は、 indefinite 継続時間値、すなわち [SMIL 3.0] で定義される値と等価と定義される。

  • 適用される時間基準が clock である場合、時間 式は、実時間クロックに基づく [SMIL 3.0] のタイミングと等価とみなされ、 I.1 クロック時間基準 の固有の意味論が適用される。

  • 適用される時間基準が media である場合、時間 式は、オフセットに基づく [SMIL 3.0] のタイミングと等価とみなされ、 I.2 メディア時間基準 の固有の意味論が適用される。

  • 適用される時間基準が smpte である場合、時間 式は、オフセットに基づく タイミングまたはイベントに基づく [SMIL 3.0] のタイミングのいずれかと等価とみなされ、 固有の意味論、すなわち I.3 SMPTE 時間基準 の意味論が適用される。

12.4.1 匿名スパンのタイミング

この小節は非規範的である。

次の例は、匿名 span のうち、逐次および 並列時間コンテナーの子であるもののタイミングの意味論を示す。 こんにちは および もしもし という語は、どちらも 匿名 span に含まれ、それらは逐次 時間コンテナー(p 要素)の子である。このため、こんにちは も もしもし も 表示されない。 これは、匿名 span の暗黙の継続時間が 0 であるためである。これに 対して、匿名 span のうち、 ごきげん という語を含むものと、よう という語を含む最も内側の span は、 並列時間コンテナーの 意味論を持つ要素(最も外側の span 要素)の子である。 その結果、ごきげん と よう はどちらも表示される。それぞれの親 匿名 span および span 要素の暗黙の継続時間が不定であるためであり、結果として、 その祖先である span、p、div、および body の暗黙の継続時間も、 不定となる。

断片の例 – 逐次および並列時間コンテナー内の匿名 span の タイミング
...
<body>
  <div>
    <p timeContainer="seq">
      こんにちは
      <span>ごきげん <span>よう</span></span>
      もしもし
    </p>
  </div>
</body>

13 アニメーション

この節では、 コア語彙カタログの アニメーション 情報を指定する。ここで、 アニメーションとは、タイミングとスタイリングを組み合わせる分離可能な情報層であり、 コンテンツの(時間的に)動的なスタイリングに関する 作成者の意図を表すものと理解する。

13.1 アニメーション要素の語彙

次の要素は、 文書インスタンス の構造と主要なアニメーション上の側面を指定する。

13.1.1 animate

animate 要素は、一連の変化(アニメーション)を表し、 その適用対象 は、関連付けられた要素の 1 つ以上の アニメーション可能なスタイル である。

animate 要素は、(1) コンテンツ要素 または region 要素の子として現れてもよく、 これは インラインアニメーション と呼ばれる。または、 (2) animation 要素の子として現れてもよく、これは 次のように呼ばれる: アウトオブラインアニメーション。 前者の場合、animate 要素の親が関連付けられた要素となる。 後者の 場合、animate 要素を animate 属性によって参照する要素が、 関連付けられた要素となる。

animate 要素は、子として 0 個以上の、 Metadata.class 要素 グループに属する要素を受け入れる。

XML 表現 – 要素情報項目: animate
<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")
  {any animatable styling attributes}
  Content: Metadata.class*
</animate>

スタイリング属性 は、 animate 要素によって直接対象とされる。 アニメーション値のリスト(列)は、 <animation-value-list> 構文に従い、各 構成値 <animation-value> は、 指定された属性の 構文に従う。

アニメーション不可能なスタイル を対象とすることは、 エラーとみなされ、提示 処理において無視しなければならない。

注:

[SVG 1.1]、§19.2.12 とは異なり、ここで定義する単一の animate 要素は、 対象となる スタイル 属性 の集合に対して連続アニメーションを行うために使用してもよく、 単一の スタイリング属性 のみを対象とする制限はない。 [SVG 1.1] では、これを行うには、 単一の animate 要素ではなく、複数の animate 要素を使用する必要がある。

さらに、アニメーション対象のスタイルプロパティとキー値を直接指定することにより、 from、 to、by、または values アニメーション値属性、 すなわち [SVG 1.1]、§19.2.9 で定義される属性を使用する必要がなくなる。

animate 要素と、上記に列挙したその属性の 意味論は、[SVG 1.1]、§19.2 で指定されるものと定義され、 以下の制約または追加の明確化が適用される。

  1. animate 要素が対象とする属性、および それらの属性に適用する値は、 スタイリング属性 を直接使用して指定される。 したがって、attributeName、from、to、 by、および values 属性のうち、 [SVG 1.1] で定義されるものは、このバージョンの TTML ではサポートされない。

    注:

    直接名前を指定したスタイル属性を使用する効果は、 複数の [SVG 1.1] animate 要素を指定し、 それぞれが attributeName および values 属性を指定することと等価である。

    注:

    例えば、tts:color="red;green;blue" を指定することは、 attributeName="tts:color" および values="red;green;blue" を [SVG 1.1] で指定することと等価とみなされる。

  2. calcMode 属性が指定されていない場合、calcMode 値として linear が適用される。

    注:

    この暗黙の値は、[SVG 1.1]、§19.2.9 で指定される既定値に対応する。

  3. 対象となる アニメーション可能なスタイル が、離散的に アニメーション可能であるが、 連続的には アニメーション不可能である場合、エラーとみなされる のは、適用される calcMode 属性の値が、 discrete でない場合である。その場合、 対象となる アニメーション可能なスタイル を、 提示処理において無視しなければならない。

  4. fill 属性が指定されていない場合、fill 値として remove が適用される。

    注:

    この暗黙の値は、[SVG 1.1]、§19.2.9 で指定される既定値に対応する。

  5. keyTimes 属性が指定されており、 calcMode の算出値が "paced" である場合、 この使用を エラーと みなさなければならず、アニメーションを 提示処理において無視しなければならない。

  6. keyTimes 属性が指定されており、 calcMode の算出値が "paced" でない場合、 時間 構成要素 の数、すなわち keyTimes 属性に指定された構成要素の数は、 各アニメーション対象属性で指定されたアニメーション値の数と一致しなければならない。

    注:

    この制約は、単一の属性または複数の属性のどちらが、 同じ animate 要素によって対象とされるかにかかわらず適用される。このことは、複数の属性が 対象となる場合、各アニメーション対象属性の値が、 その <animation-value-list> 内で同じ数の値を指定しなければならないことを意味する。

    注:

    例えば、以下の最初の animate 要素は有効である。 アニメーション対象属性が 3 つの値を持つためである。 一方、2 番目と 3 番目は無効である。2 番目の場合、アニメーション対象 属性は 2 つの値を持つが、3 つのキー時刻が指定されている。 3 番目の場合、最初のアニメーション対象属性は 2 つの値を持ち、2 番目の アニメーション対象属性は 4 つの値を持つが、3 つのキー時刻が指定されている。

    <!-- キー時刻が一致する、単一属性の有効なアニメーション -->
    <animate xml:id="a1" keyTimes="0;0.2;1" tts:color="red;green;blue"/>
    
    <!-- キー時刻が一致しない、単一属性の無効なアニメーション -->
    <animate xml:id="a2" keyTimes="0;0.2;1" tts:color="red;green"/>
    
    <!-- キー時刻が一致しない、複数属性の無効なアニメーション -->
    <animate xml:id="a3" keyTimes="0;0.2;1"
      tts:color="red;green" tts:backgroundColor="cyan;magenta;yellow;black"/>
    
  7. keyTimes 属性が指定されておらず、 calcMode の算出値が "paced" でない場合、 keyTimes 値として、指定されたアニメーション値を、 アニメーションの単純継続時間にわたって均等に(線形に) 配置する値が適用される。

    注:

    例えば、アニメーション対象のスタイルが、 tts:color="red;green;blue" と指定されている場合、 keyTimes の暗黙の値は "0;0.5;1" である。

  8. keySplines 属性が指定されており、 calcMode の算出値が "spline" でない場合、 この使用を エラーと みなさなければならず、アニメーションを 提示処理において無視しなければならない。

  9. keySplines 属性が指定されており、 calcMode の算出値が "spline" である場合、 制御 構成要素 の数、すなわち keySplines 属性に指定された構成要素の数は、 時間 構成要素 の数、すなわち keyTimes 属性の算出値内の構成要素の数より 1 つ少なくなければならない。

  10. keySplines 属性が指定されておらず、 calcMode の算出値が "spline" である場合、 この使用を エラーと みなさなければならず、アニメーションを 提示処理において無視しなければならない。

  11. repeatCount 属性が指定されていない場合、repeatCount 値として 1 が適用される。

  12. [SVG 1.1]、§19.2.10 で定義される additive 属性は、 このバージョンの TTML ではサポートされない。したがって、その属性がない場合は、この 属性の値 "replace" の意味論が適用される。

  13. [SVG 1.1]、 §19.2.10 で定義される accumulate 属性は、このバージョンの TTML ではサポートされない。したがって、その属性がない場合は、この 属性の値 "none" の意味論が適用される。

animate 要素を使用してコンテンツの スタイルをアニメーション化する例を、以下に示す。

断片の例 – コンテンツスタイルのアニメーション
...
<p dur="5s">
<animate tts:color="yellow;red;green;blue;yellow"/>
色が連続的に変化するテキスト!
</p>
...

注:

上記の例では、コンテンツ「色が連続的に変化する テキスト!」の前景色が、黄色から赤、緑、 そして 赤を経て黄色に戻るように、5 秒間にわたって連続的にアニメーション化される。その後、アニメーション効果が削除され、 元の色に復元される(fill の既定値が "remove" であるため)。

animate 要素を使用して領域の スタイルをアニメーション化する例を、以下に示す。

断片の例 – 領域スタイルのアニメーション
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    xmlns:tts="http://www.w3.org/ns/ttml#styling"
    ttp:extent="640px 480px">
    <head>
      <layout>
	<region xml:id="r1" timeContainer="seq" tts:opacity="0">
	  <animate dur="1s" tts:opacity="0;1"/>
	  <set dur="5s" tts:opacity="1"/>
	  <animate dur="1s" tts:opacity="1;0"/>
	  <style tts:extent="480px 60px"/>
	  <style tts:origin="80px 400px"/>
	</region>
      </layout>
    </head>
    <body region="r1">...</body>
</tt>

注:

上記の例では、領域 r1 は初期状態で不透明度 0%、 すなわち完全に透明に設定され、その後、1 秒の 区間で不透明度 100%、すなわち完全に不透明になるまでフェードインする。不透明度はさらに 5 秒間 100% に保たれ、その後、 1 秒の区間で 0% までフェードアウトし、その状態にとどまる。

注:

animate 要素の意味論 は、[SVG 1.1]、 §19.2.12 で定義されるものに基づき、それはさらに [SMIL 3.0]、§12 に基づいている。

13.1.2 animation

animation 要素は、 アウトオブラインアニメーション 情報をグループ化するために使用されるコンテナー要素であり、 アニメーション情報に適用されるメタデータも含む。

animation 要素は、子として 0 個以上の Metadata.class 要素 グループの要素を受け入れ、その後に、 0 個以上の Animation.class 要素グループの要素が続く。

XML 表現 – 要素情報項目: animation
<animation
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, Animation.class*
</animation>

時間の意味論が animation 要素のコンテンツに適用される範囲では、この要素の暗黙の時間区間は、 ルート時間 範囲 と始点および終点が一致するものとして定義される。

13.1.3 set

set 要素は、1 つ以上の離散的な変化(アニメーション)を表し、 その適用対象 は、関連付けられた要素の 1 つ以上の アニメーション可能なスタイル である。

set 要素は、(1) コンテンツ要素 または region 要素の子として現れてもよく、 これは インラインアニメーション と呼ばれる。または、 (2) animation 要素の子として現れてもよく、これは 次のように呼ばれる: アウトオブラインアニメーション。 前者の場合、set 要素の親が関連付けられた要素となる。 後者の 場合、set 要素を animate 属性によって参照する要素が、 関連付けられた要素となる。

set 要素は、子として 0 個以上の、 Metadata.class 要素 グループに属する要素を受け入れる。

XML 表現 – 要素情報項目: set

スタイル属性 のうち、set 要素が対象とするものは、 次の属性を使用して直接指定される: TT スタイル名前空間、またはいずれの TT 名前空間でもない名前空間に属する属性。単一の 対象アニメーション(キー)値 は、<animation-value> 構文に従う。

アニメーション不可能なスタイル を対象とすることは、 エラーとみなされ、提示 処理において無視しなければならない。

注:

[SVG 1.1]、§19.2.13 とは異なり、ここで定義する単一の set 要素は、 次の目的で使用してもよい: 対象となる スタイリング 属性 の集合に対して離散アニメーションを行うこと。対象を 単一の スタイリング属性 に限定する必要はない。 [SVG 1.1] では、これを行うには、複数の set 要素を使用する必要があり、単一の set 要素では行えない。

以下に列挙する制約または相違点を除き、set 要素と、上記に列挙したその属性の 意味論は、[SVG 1.1]、§19.2.13 で指定されるものと定義される。

  1. set 要素が対象とする属性、および それらの属性に適用する離散値は、 スタイリング属性 を直接使用して指定される(SVG の 次の属性、 attributeName および to を使用するのではない)。

    注:

    例えば、tts:color="red" を指定することは、 attributeName="tts:color" および to="red" を [SVG 1.1] で指定することと等価とみなされる。

  2. fill 属性が指定されていない場合、fill 値として remove が適用される。

set 要素を使用してコンテンツの スタイルをアニメーション化する例を、以下に示す。

断片の例 – コンテンツスタイルのアニメーション
...
<p dur="5s" tts:color="yellow">
<set begin="1s" dur="1s" tts:color="red"/>
<set begin="2s" dur="1s" tts:color="green"/>
<set begin="3s" dur="1s" tts:color="red"/>
色が点滅するテキスト!
</p>
...

注:

上記の例では、コンテンツ「色が点滅する テキスト!」の前景色が、黄色から赤、緑、 赤を経て黄色に戻るように、5 秒間にわたってアニメーション化される。

set 要素を使用して領域の スタイルをアニメーション化する例を、以下に示す。

断片の例 – 領域スタイルのアニメーション
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    xmlns:tts="http://www.w3.org/ns/ttml#styling"
    ttp:cellResolution="40 16">
    <head>
      <layout>
	<region xml:id="r1" timeContainer="seq">
	  <set dur="10s" tts:origin=" 8c 14c"/>
	  <set dur="2s"  tts:origin=" 2c  2c"/>
	  <set dur="3s"  tts:origin=" 8c 14c"/>
	  <set dur="2s"  tts:origin="14c  4c"/>
	  <set dur="10s" tts:origin=" 8c 14c"/>
	  <style tts:extent="24c 2c"/>
	</region>
      </layout>
    </head>
    <body region="r1">...</body>
</tt>

注:

上記の例では、ルートコンテナー領域 が、 次のように分割される: 40 列、16 行のセルグリッド。その後、領域 r1 が、 24 列、2 行の寸法で、 ルートコンテナー領域 内に配置される。その位置は、 時間とともに変化し、 領域を移動する効果を生み出す。これは、 下にある映像の人物を字幕で覆い隠すことを避けるために望ましい場合がある。

注:

set 要素の意味論 は、[SVG 1.1]、 §19.2.13 で定義されるものに基づき、それはさらに [SMIL 3.0]、§12 に基づいている。

13.2 アニメーション属性の語彙

この節では、13.2.1 animate 属性を定義する。 この属性は、コンテンツ要素 および一部のレイアウト要素とともに使用される。

13.2.1 animate

animate 属性は、 1 つ以上の要素、すなわち Animation.class 要素グループに属する要素を参照するために使用される。 各要素は、特定の アウトオブライン アニメーション を定義する。

animate 属性は、次の要素型の インスタンスに指定してもよい。

指定されている場合、animate 属性の値は、 [XML Schema Part 2]、 §3.3.10 で定義される IDREFS データ型に従わなければならない。さらに、各 IDREF は、Animation.class 要素グループの要素で、animation 要素を祖先として持つものを参照しなければならない。

同じ IDREF が、animate 属性の値に複数回 現れてはならない。

各 アウトオブラインアニメーション 要素 A のうち、 animate 属性、すなわち要素 E の当該属性が参照するものについて、次の手順を実行する(指定された IDREF の順序で)。

  1. A の深いコピー A' を作成する。

  2. xml:id 属性を、 A' から削除する。

  3. A' を、[children] 情報項目プロパティ、 すなわち E の当該プロパティに挿入する。このとき、A' は、 子要素の部分列の最後の要素として現れるものとする。その部分列は、 Animation.class* ワイルドカード、 すなわち E のコンテンツモデルにあるワイルドカードに対応する。

注:

アウトオブラインアニメーションの意味論は、実質的に、インライン アニメーションを指定するための省略記法を構成する。これは、 同じアニメーションが複数の参照元要素で使用される場合に有用である。

注:

次の属性の使用を許容する個々の要素型の定義も参照: animate 属性。

13.3 アニメーション値の式

アニメーション属性の値では、次の式が使用される。

13.3.1 <animation-value>

<animation-value> 式は、アニメーション対象の属性の開始(初期)、中間、 または終了(最終)の値を指定するために使用される。

構文表現 – <animation-value>
<animation-value>
  : ([^;] | escape)+

escape
  : '\\' char

<animation-value> 式の構文は、 アニメーション対象の属性に適用されるすべての構文要件を満たさなければならず、さらに、 エスケープされていない セミコロンを含んではならない。

<animation-value> 式の意味論は、 [SVG 1.1]、§19.2.9 で定義されるものである。

13.3.2 <animation-value-list>

<animation-value-list> 式は、アニメーション値のリストを指定するために使用される。 それらの値は、順番に、 アニメーション対象の属性に適用される。

構文表現 – <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 で定義されるものである。

13.3.3 <calculation-mode>

<calculation-mode> 式は、アニメーションの補間モードを制御するために使用される。

構文表現 – <calculation-mode>
<calculation-mode>
  : "discrete"
  | "linear"
  | "paced"
  | "spline"

<calculation-mode> 式の意味論は、 [SVG 1.1]、§19.2.9 で定義されるものである。

13.3.4 <fill>

<fill> 式は、アニメーションのアクティブ終了後における、 アニメーションの効果を決定するために使用される。

構文表現 – <fill>
<fill>
  : "freeze"
  | "remove"

<fill> 式の意味論は、 [SVG 1.1]、§19.2.8 で定義されるものである。

13.3.5 <key-splines>

<key-splines> 式は、ベジェ制御点のリストを指定するために使用され、これらは、 アニメーションの 進行速度を制御する。各値の組は、SEMICOLON (U+003B) 文字で区切られ、 その前後には線形空白(LWSP)文字を任意に置くことができる。

構文表現 – <key-splines>
<key-splines>
  : control ( <lwsp>? ";" <lwsp>? control )*

control
  : x1 <lwsp> y1 <lwsp> x2 <lwsp> y2

x1, x2, y1, y2
  : coordinate

coordinate                                // 0 ≥ value ≥ 1
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <non-negative-integer>

<key-splines> 式の意味論は、 [SVG 1.1]、§19.2.9 で定義され、key-splines 属性に適用されるものである。

13.3.6 <key-times>

<key-times> 式は、相対時間値のリストを指定するために使用され、これらは、 アニメーションの 進行速度を制御する。各値の組は、SEMICOLON (U+003B) 文字で区切られ、 その前後には線形空白(LWSP)文字を任意に置くことができる。

構文表現 – <key-times>
<key-times>
  : time ( <lwsp>? ";" <lwsp>? time )*

time                                // 0 ≥ value ≥ 1
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <non-negative-integer>

<key-times> 式の意味論は、 [SVG 1.1]、§19.2.9 で定義され、key-times 属性に適用されるものである。

13.3.7 <repeat-count>

<repeat-count> 式は、繰り返されるアニメーションの 反復回数(小数の場合もある)を決定するために使用される。

構文表現 – <repeat-count>
<repeat-count>
  : count                           // value > 0
  | "indefinite"

count:
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <non-negative-integer>

<repeat-count> 式の意味論は、 [SVG 1.1]、§19.2.8 で定義されるものである。

14 メタデータ

この節では、中核語彙カタログのメタデータに関する 事項を規定する。ここで、 メタデータは、以下に適用される分離可能な情報層として理解される: パラメーター、コンテンツ、 スタイル、レイアウト、タイミング、さらにはメタデータ自体。 メタデータが表す情報は、次の2つの形式のいずれかをとる:(1) この仕様が文書インスタンス内での標準化された使用のために定義するメタデータ、および (2) 任意の メタデータで、この仕様の範囲外で定義され、その使用法と 意味がアプリケーションによるTTMLコンテンツの利用方法に全面的に依存するもの。

この仕様では、メタデータの提示に関する意味は定義しない。したがって、適合する 提示プロセッサーは、メタデータに関する事項をすべて無視してもよい。

注:

この仕様では、メタデータに提示に関する意味を与えていないが、この仕様のスーパーセット プロファイルでは そのような意味を与えてもよい。その場合、そのプロファイルで定義されるメタデータに依存した提示の意味は、 当該プロファイルによるものであり、 この仕様の範囲外とみなされる。

14.1 メタデータ要素語彙

14.1.1 metadata要素は、 メタデータ情報をグループ化するための汎用コンテナー要素として機能する。

さらに、以下の要素は、すべてTTメタデータ名前空間で定義されており、 一般的に使用されることが想定されるメタデータの標準的な表現を 文書インスタンス内で提供する:

14.1.1 metadata

metadata要素は、メタデータ情報の汎用コンテナーとして 機能する。

メタデータ情報は、metadata要素を使用して、次のものを指定することで表現してもよい: (1) metadata要素上の1つ以上のメタデータ属性または外部名前空間の 属性、 (2) 1つ以上のメタデータ項目または外部名前空間の子要素、 (3) 1つ以上のdata子 要素、または (4) 上記の組み合わせ。

注:

この仕様では、 文書インスタンスの形式的妥当性は、 すべての 抽象文書インスタンスから 外部名前空間の要素と属性を取り除いたものに基づくと定義している。したがって、 以下のXML表現では、その内容モデルに外部名前空間の属性や 外部名前空間の子要素は形式的には含まれない。 それでも、そのような外部名前空間の子要素は、 TTML 文書インスタンスの具体的な符号化に出現してもよい。

XML表現 – 要素情報項目: metadata
<metadata
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TTメタデータ名前空間の任意の属性}
  内容: (Data.class|{TTメタデータ名前空間の任意の要素})*
</metadata>

注:

特定のメタデータ項目の意味は、その項目が出現する 文脈で評価しなければならない。中核語彙カタログでは、 任意の数のmetadata子要素を、任意の コンテンツ要素型に含めることが認められている。そのような使用に 適用される制約については、個々の要素の 語彙定義を参照。

文書メタデータの使用法を次の例に示す。

フラグメント例 – 文書メタデータ
...
<head>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:title>文書メタデータの例</ttm:title>
    <ttm:desc>この文書では文書メタデータを使用している。</ttm:desc>
  </metadata>
</head>
...

要素メタデータの使用法を次の例に示す。

フラグメント例 – 要素メタデータ
...
<div>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:title>第6章 – シャーロック・ホームズが実演する</ttm:title>
    <ttm:desc>ホームズは、犯人が窓からどのように侵入したのかをワトソンに示す。</ttm:desc>
  </metadata>
</div>
...

メタデータ属性項目の使用法を次の例に示す。

フラグメント例 – 外部メタデータ属性項目
...
<div xmlns:ext="http://example.org/ttml#metadata">
  <metadata ext:ednote="公開前にこの区分を削除する"/>
</div>
...

注:

上記の例では、外部の 名前空間に属するグローバル属性を使用して、 それを包含するdiv要素に意味的に適用されるメタデータ属性を表現している。この 属性は、div要素上に直接表現することもできる。 ただし、この場合、作成者は特定のメタデータ 属性をmetadata要素上で間接的に表現することによって 分離することを意図している。

注:

TTMLの具体的な符号化に外部名前空間の属性が存在しても、 文書インスタンスの形式的妥当性には影響しない。 その 文書インスタンスの妥当性は、適用対象となる 抽象文書型に関するものであり、この文書型は4 文書型によって選択される。

外部要素メタデータの使用法を次の例に示す。

フラグメント例 – 外部要素メタデータ
...
<metadata
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:dcterms="http://purl.org/dc/terms/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <dc:title>外部要素メタデータの例</dc:title>
  <dc:description>外部名前空間の要素を使用してメタデータを表現する。</dc:description>
  <dc:format xsi:type="dcterms:IMT">application/ttml+xml</dc:format>
</metadata>
...

注:

上記の例では、Dublin Coreメタデータ語彙で定義された 複数の要素を使用して、文書レベルのメタデータを表現している。

注:

TTMLの具体的な符号化に外部名前空間の要素が存在しても、 文書インスタンスの形式的妥当性には影響しない。 その 文書インスタンスの妥当性は、適用対象となる 抽象文書型に関するものであり、この文書型は4 文書型によって選択される。

14.1.2 ttm:actor

ttm:actor要素は、(役に基づく)登場人物のエージェントの定義を、 その登場人物を演じる別のエージェントに関連付けるために使用される。

XML表現 – 要素情報項目: 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要素への参照は非推奨である。さらに、 そのような循環する参照の連鎖の意味は、 この仕様では定義しない。

注:

実装がこのような 循環するエージェント参照の連鎖をたどる場合は、この 状況を検出し、エージェント参照のそれ以上の参照解決を 打ち切って無限ループを回避することを推奨する。

注:

俳優が自分自身を演じる場合、 たとえば、The Tripでスティーヴ・クーガンがスティーヴ・クーガンを演じる場合は、 2つのttm:agent要素を使用することが想定される。最初の 要素(実在する人物としてのスティーヴ・クーガンに対応)では、 値がpersonであるtype属性を使用する。一方、 2番目の要素(登場人物としてのスティーヴ・クーガンに対応)では、(i) 値がcharacterであるtype属性と、(ii) 最初の要素を参照するttm:actor子要素を使用する。参照先は、 ttm:agent要素である。

ttm:actor要素の例は、上記の フラグメント例 – エージェントメタデータに示されている。

14.1.3 ttm:agent

ttm:agent要素は、コンテンツ情報を、そのコンテンツの制作または表現に 関与するエージェントと関連付ける目的で、 エージェントを定義するために使用される。

ttm:agent要素は、子として0個以上のttm:name 要素と、それに続く 0個または1個のttm:actor要素を受け入れる。

少なくとも1つのttm:name子要素を指定して、エージェントの 名前を 表すべきである。その名前は、人、登場人物、グループ、または組織の名前であり得る。

XML表現 – 要素情報項目: ttm:agent
<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">コネリー</ttm:name>
      <ttm:name type="given">トーマス・ショーン</ttm:name>
      <ttm:name type="alias">ショーン</ttm:name>
      <ttm:name type="full">サー・トーマス・ショーン・コネリー</ttm:name>
    </ttm:agent>
    <ttm:agent xml:id="bond" type="character">
      <ttm:name type="family">ボンド</ttm:name>
      <ttm:name type="given">ジェームズ</ttm:name>
      <ttm:name type="alias">007</ttm:name>
      <ttm:actor agent="connery"/>
    </ttm:agent>
  </head>
  <body>
    <div>
      ...  
      <p ttm:agent="bond">旅をしている。いわば公認のトラブル解決屋だ。</p>
      ...  
    </div>
  </body>
</tt>

注:

上記の例では、実在する(人物)エージェントであるショーン・ コネリーと、架空の(登場人物)エージェントであるジェームズ・ボンドという2つのエージェントを定義しており、 後者は前者に、 ttm:actor要素を介して関連付けられている。次に、コンテンツ( p要素)から、そのコンテンツに関連付けられた (そのコンテンツを生成する責任を持つ)登場人物のエージェントへの参照を行っている。この例では、 ttm:agentメタデータ項目を、 文書のhead要素の直接の子として指定しており、 コンテナーであるmetadata要素内には配置していない。

14.1.4 ttm:copyright

ttm:copyright要素は、ある適用範囲のレベルに適用される、 人が読める著作権情報を表現するために使用される。

文書全体に適用される著作権表示は、 head要素の子として出現するべきである。

XML表現 – 要素情報項目: ttm:copyright
<ttm:copyright
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  内容: #PCDATA
</ttm:copyright>

注:

この仕様では、ttm:copyright要素の具体的な使用法は定義しない。

14.1.5 ttm:desc

ttm:desc要素は、特定の要素インスタンスに関する、人が読める 説明を表現するために使用される。

XML表現 – 要素情報項目: 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要素の例は、上記の フラグメント例 – 文書 メタデータおよび フラグメント例 – 要素 メタデータに示されている。

14.1.6 ttm:item

ttm:item要素は、任意の名前付きメタデータ項目を表現するために使用される。

ttm:item要素は、次の2つの内容モデルのいずれかを受け入れる: (1) 1つ以上のテキストノード(すなわち、#PCDATA) または (2) 0個以上の入れ子になったttm:item要素。

XML表現 – 要素情報項目: 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>
...

注:

上記の例では、単一のchunk要素を使用して、 ttm:item要素をdata要素の子として含めている。 すなわち、符号化された画像バイト列を#PCDATAとして直接data要素内に含めていた場合、 ttm:item子要素を含めることはできなかった。詳細については、 サポートされる内容モデルを、 data要素の定義で参照。

14.1.7 ttm:name

ttm:name要素は、人、登場人物、 グループ、または組織の名前を指定するために使用される。

XML表現 – 要素情報項目: 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要素の2つの例は、上記の フラグメント例 – エージェントメタデータに示されている。

14.1.8 ttm:title

ttm:title要素は、特定の要素インスタンスに関する、人が読める タイトルを表現するために使用される。

XML表現 – 要素情報項目: 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要素の例は、上記の フラグメント例 – 文書 メタデータおよび フラグメント例 – 要素 メタデータに示されている。

14.2 メタデータ属性語彙

この節では、TTメタデータ名前空間に属する次の属性を、 metadata要素および コンテンツ要素で使用するために規定する:

14.2.1 ttm:agent

ttm:agent属性はIDREFS 値をとり、コンテンツ要素とともに使用され、 コンテンツを演じる、または その上演に関与するエージェントを指定する。

指定する場合、ttm:agent属性は、有意な ttm:agent要素インスタンスを参照しなければならない。

同じIDREFであるIDは、 ttm:agent属性の値に複数回出現するべきではない。

注:

この制約は、冗長なエージェント参照の使用を抑制することを意図している。

ttm:agent属性の例は、上記の フラグメント例 – エージェントメタデータに示されている。

14.2.2 ttm:role

ttm:role属性は、コンテンツ作成者が、 次のものを表現するために 使用してもよい:役割、機能、または特性。 これらは、この属性が付されたコンテンツ要素に関するものである。

指定する場合、この属性の値は、次の 構文に従わなければならない:

構文表現 – ttm:role
ttm:role
  role (<lwsp> role)*

role
  : "action"
  | "caption"
  | "description"
  | "dialog"
  | "expletive"
  | "kinesic"
  | "lyrics"
  | "music"
  | "narration"
  | "quality"
  | "sound"
  | "source"
  | "suppressed"
  | "reproduction"
  | "thought"
  | "title"
  | "transcription"
  | extension-role

extension-role
  : "x-" token-char+

token-char
  : { XML NameChar }    // [XML 1.0] 生成規則 [4a]

同じroleトークンであるRは、 ttm:role属性の値に複数回出現するべきではない。

注:

この制約は、冗長な役割トークンの使用を抑制することを意図している。

注:

ttm:roleの値のうち、接頭辞 x-で始まらないものはすべて、将来の標準化のために予約されている。

注:

x-接頭辞を持つ独自のttm:role形式を使用する場合は、 衝突を防ぐために、組織に固有の中間部分も 使用することを推奨する。たとえば、x-example-org-custom-role。さらに、 役割の値のレジストリーが、次の場所で利用可能であり、 https://www.w3.org/wiki/TTML/RoleRegistry 相互運用性の向上と衝突の回避を目的としている。

14.3 メタデータ値表現

メタデータ語彙では、次の表現を使用してもよい:

14.3.1 <item-name>

<item-name>表現は、メタデータ項目の名前を指定するために使用される。その項目は、 ttm:item要素で表現される。

構文表現 – <item-name>
<item-name>
  : <named-item>
  | xsd:QName

項目名の表現が修飾名(xsd:QName)の形式をとる場合、 その修飾名の接頭辞は、名前空間宣言で宣言済みでなければならず、 その宣言は[XML Namespaces 1.0]の規定に従う。

<item-name>の値のうち、修飾名(xsd:QName)の形式をとらないものはすべて、 この仕様で定義されているか、W3Cによる将来の標準化のために予約されている。

注:

この仕様で定義する項目名はすべて非修飾(接頭辞なし)とし、 一方、 外部仕様で定義するものは修飾(接頭辞あり)とすることを意図している。

注:

次の場所を参照:https://www.w3.org/wiki/TTML/ItemNameRegistry。 ここには、 修飾された項目の名前空間のレジストリーがある。

14.3.2 <named-item>

<named-item>値は、名前付きメタデータ項目の列挙された集合の一員であり、 値との関連付けは、 ttm:item要素によって行われる。

構文表現 – <named-item>
<named-item>
  : "altText"
  | "usesForced"

altText

代替テキストコンテンツを表現する文字列であり、その値は 次の型に従う:xsd:string。 通常は、 関連する画像コンテンツと同等のテキストまたは要約を提供するために使用される。

注:

この同等のテキストは、コンテンツの索引付けを支援するためや、 文書の作成中に行う 品質確認を容易にするために使用してもよい。

注:

[HTML]とは異なり、この名前付き メタデータ項目のテキストコンテンツは、参照元の要素に代わって提示することを意図していない。これは、 その要素の(代替ではなく)主たる コンテンツを提示できない場合にも当てはまる。ただし、この代替テキストコンテンツは、 支援技術で使用できる。

usesForced

いずれかの<condition>表現が forced束縛 パラメーターを使用するかどうかを表す真偽値であり、その値は 次の型に従う:xsd:boolean。 この名前付きメタデータ項目が 文書インスタンス内に存在する場合は、 次の要素の子として指定 しなければならない:head要素。

A 具体的な符号化

この付録は規範的である。

他の要件がない場合、文書インスタンスは、 UTF-8文字エンコーディングを使用する 整形式のXML 1.0 [XML 1.0]文書として具体的に符号化するべきである。

注:

XML 1.0 [XML 1.0]をTTMLの具体的な符号化として使用する場合、 次の名前付き文字実体のみが定義される: &amp;、&apos;、&gt;、&lt;、および &quot;。

B 縮約XML情報集合

この付録は規範的である。

この仕様において、縮約XML情報集合とは、 XML情報集合[XML InfoSet]のうち、以下の 情報項目 および情報項目のプロパティのみで構成されるものをいう:

B.1 文書情報項目

  • [document element]

B.2 要素情報項目

  • [namespace URI]

  • [local name]

  • [children]

  • [attributes]

子の情報項目[children]は、 要素情報項目および 文字情報項目のみに縮約される。

B.3 属性情報項目

  • [namespace URI]

  • [local name]

  • [normalized value]

注:

縮約XML情報集合を、XML 文書実体の具体的な 表現から構築する場合、[normalized value]情報項目には、 正規化されていないXML空白文字である &#9; (HT)、&#10; (LF)、&#13; (CR)、および&#20; (SPACE)が含まれる場合がある。これは、[XML 1.0]の§3.3.3、手順(3)の最初の箇条書き項目で規定されている。 特に、これらの空白文字のいずれかを表すために数値文字参照を使用する場合に、 この状況が生じ得る。その数値文字参照は正規化されず、 空白文字そのものを使用した場合には正規化される。

注:

属性情報項目も参照。

B.4 文字情報項目

  • [character code]

連続する文字情報項目を個別に表現する必要はなく、 文字コードの列(すなわち、文字列)に集約(チャンク化)してもよい。

注:

文字情報項目も参照。

C スキーマ

この付録は規範的である。

この付録では、次のスキーマを、 文書インスタンスで使用するために規定する:

この付録で規定するスキーマが、 この仕様の本文で定義される文書型、要素型、または属性型の 規範的な定義と異なる場合は、常に、この仕様の 本文が優先される。

C.1 Relax NGコンパクト (RNC) スキーマ

Relax NGコンパクト構文 (RNC) [RELAX NG]に基づく TTMLコンテンツ用のスキーマは、ZIP アーカイブから入手できる。このスキーマは、この仕様で定義される タイムドテキストマークアップ言語コンテンツの 妥当性を定義する目的では、非規範的とみなす。 特に、TTMLコンテンツの形式的妥当性は、 3.1 文書の適合性で定義する。

C.2 XMLスキーマ定義 (XSD) スキーマ

W3C XMLスキーマ定義 (XSD) [XML Schema Part 1]に基づく TTMLコンテンツ用のスキーマは、ZIP アーカイブから入手できる。このスキーマは、この仕様で定義される タイムドテキストマークアップ言語コンテンツの 妥当性を定義する目的では、非規範的とみなす。 特に、TTMLコンテンツの形式的妥当性は、 3.1 文書の適合性で定義する。

D メディア型の登録

この付録は、この仕様から削除された。

E 機能

この付録は規範的である。

この付録では、(1) 機能指定子の集合を規定する。各指定子は、 この仕様で定義される1つ以上の構文上および(または)意味上の機能を 示す。また、(2) 指定された各機能について、その機能が必須か任意かを、 TTML コンテンツプロセッサーのうち、次の要件に適合するものを対象として規定する: 3.2.2 変換プロセッサーの適合性または 3.2.3 提示プロセッサーの適合性。

注:

TTMLプロセッサーが変換の意味論を実装する、または 提示の意味論を実装すると、機能指定子Fについていうのは、 この付録の要件を満たす場合であり、対象となるのは、 機能指定子Fの定義のうち、それぞれ変換処理または 提示処理に関する部分である。

注:

以下の機能指定子の定義が、特定の要素型や文脈に範囲を限定していない場合、 その(指定された)機能をサポートするとは、 許容されるすべての使用文脈でその機能をサポートすることを意味する。

たとえば、#length-root-container-relative 機能をサポートするとは、任意の<length> 表現において、その使用が別途 禁止されていない限り、その使用をサポートすることを意味する。

注:

プロセッサーの実装が、ある機能の意味論をサポートしておらず、 その機能の 構文表現が実装にとって既知である場合、その 実装は表現を構文解析できる一方で、その表現のサポートされていない構成要素の意味論を無視できることが推奨される。

たとえば、#textEmphasis-minimalが サポートされているが、#textEmphasis-colorが サポートされていない場合、tts:textEmphasisの値のうち、 <emphasis-color> 構成要素を含むものは、 そのサポートされていない構成要素の意味論を無視しつつ構文解析するべきである (ただし、その属性値の他の サポートされている構成要素の意味論は無視しない)。

E.1 機能指定子

機能指定子は、次の形式に従う文字列として 表現される:

feature-designation
  : feature-namespace designation

feature-namespace
  : TT Feature Namespace                    // http://www.w3.org/ns/ttml/feature/

designation
  : "#" token-char+

token-char
  : { XML NameChar }                        // [XML 1.0] Production [4a]

この仕様で定義されていないfeature-designationの値はすべて、 将来の標準化のために予約されている。

以下の各節では、すべての機能指定子を定義する。これらは、 相対URI(フラグメント識別子)として、 TT機能名前空間の基底URIを基準に表現される。

この節の機能指定子の定義が、同じ 機能指定子についての [TTML1]の定義を参照し、後者の(参照先の)定義で「定義されたすべての 値」という句を使用している場合、それらの 値は、[TTML1]で定義されたすべての値からなる。一方、 「定義されたすべての値」という句が この下に直接出現する場合、それらの値は、この仕様で定義されたすべての値からなる。

注:

この節の機能指定子のうち、接尾辞-version-2を持つものは、 新たに定義されたものであり、 TTML仕様のこの(第2)版、すなわちTTML2で定義される。

E.1.1 #animate

TTMLプロセッサーが#animate機能をサポートするのは、次の 機能をサポートする場合である:

#animate機能は、 #animate-minimal機能の構文上および意味上の拡張である。

コンテンツプロファイルが#animate 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #animate-fill、 #animate-minimal、 #animate-paced、 #animate-repeat、または #animate-spline。

E.1.2 #animate-minimal

TTML 変換プロセッサーが #animate-minimal 機能をサポートするのは、次の条件で使用されるanimate要素の意味論を認識し、変換できる場合である: 値discreteおよびlinearを calcMode属性に使用する。

TTML 提示プロセッサーが #animate-minimal 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

値discreteおよびlinearを calcMode属性でサポートすることは、 keyTimes属性もサポートすることを意味する。

注:

#animate-minimal機能のサポートは、次のいずれの 機能のサポートも意味しない: #animate-fill、 #animate-paced、 #animate-repeat、または #animate-spline。

E.1.3 #animate-fill

TTML 変換プロセッサーが #animate-fill 機能をサポートするのは、fill 属性の意味論を認識し、変換できる場合である。この属性は、 animate要素の属性である。

TTML 提示プロセッサーが #animate-fill 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

E.1.4 #animate-paced

TTML 変換プロセッサーが #animate-paced 機能をサポートするのは、次の条件で使用されるanimate要素の意味論を認識し、変換できる場合である: 値pacedをcalcMode属性に使用する。

TTML 提示プロセッサーが #animate-paced 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.5 #animate-repeat

TTML 変換プロセッサーが #animate-repeat 機能をサポートするのは、意味論を認識し、変換できる対象が、 repeatCount属性である場合であり、この属性は、 animate要素の属性である。

TTML 提示プロセッサーが #animate-repeat 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

E.1.6 #animate-spline

TTML 変換プロセッサーが #animate-spline 機能をサポートするのは、次の条件で使用されるanimate要素の意味論を認識し、変換できる場合である: 値splineをcalcMode属性に使用する。

TTML 提示プロセッサーが #animate-spline 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

値splineをcalcMode属性でサポートすることは、 次の属性もサポートすることを 意味する:keySplines属性。

E.1.7 #animation

TTMLコンテンツプロセッサーが#animation 機能をサポートするのは、#animation機能を、[TTML1]の§D.1.1の定義に従ってサポートする場合である。

注:

#animation機能のサポートは、機能的には、 #set機能のサポートと同等である。

コンテンツプロファイルが#animation 機能の使用を要求または許可する一方で、使用を禁止する対象が #set機能であることはエラーである。

E.1.8 #animation-out-of-line

TTML 変換プロセッサーが #animation-out-of-line 機能をサポートするのは、次の語彙を認識し、変換できる場合であり、その定義は13 アニメーションにある:

かつ、次の属性をサポートする場合である。この属性は13.2 アニメーション属性語彙で定義される:

TTML 提示プロセッサーが #animation-out-of-line 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.9 #animation-version-2

TTMLプロセッサーが#animation-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#animation-version-2機能は、 #animation機能の構文上および意味上の拡張である。

コンテンツプロファイルが、 #animation-version-2機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#animate、 #animation-out-of-line、または #animation。

E.1.10 #audio

TTML 変換プロセッサーが #audio 機能をサポートするのは、次の語彙を認識し、変換できる場合であり、 その語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #audio 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.11 #audio-description

TTMLプロセッサーが#audio-description機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが、 #audio-description機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #audio、 #gain、または #pan。

E.1.12 #audio-speech

TTMLプロセッサーが#audio-speech機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#audio-speech 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #pitch、 #speak、または #speech。

E.1.13 #background

TTMLプロセッサーが#background機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#background 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #backgroundColorまたは #background-image。

E.1.14 #background-image

TTMLプロセッサーが#background-image機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#background 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #backgroundClip、 #backgroundExtent、 #backgroundImage、 #backgroundOrigin、 #backgroundPosition、または #backgroundRepeat。

E.1.15 #backgroundClip

TTML 変換プロセッサーが #backgroundClip機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。その対象はtts:backgroundClip 属性である。

TTML 提示プロセッサーが #backgroundClip機能をサポートするのは、提示の意味論のサポートを 定義されたすべての値について実装している場合である。その対象はtts:backgroundClip 属性である。

E.1.16 #backgroundColor

TTMLコンテンツプロセッサーが#backgroundColor 機能をサポートするのは、#backgroundColor機能を、[TTML1]の§D.1.2の定義に従ってサポートする場合である。

注:

#backgroundColor機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが、 #backgroundColor機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#backgroundColor-block、 #backgroundColor-inline、または #backgroundColor-region。

E.1.17 #backgroundColor-block

TTMLコンテンツプロセッサーが#backgroundColor-block 機能をサポートするのは、#backgroundColor-block機能を、[TTML1]の§D.1.3の定義に従ってサポートする場合である。

E.1.18 #backgroundColor-inline

TTMLコンテンツプロセッサーが#backgroundColor-inline 機能をサポートするのは、#backgroundColor-inline機能を、[TTML1]の§D.1.4の定義に従ってサポートする場合である。

E.1.19 #backgroundColor-region

TTMLコンテンツプロセッサーが#backgroundColor-region 機能をサポートするのは、#backgroundColor-region機能を、[TTML1]の§D.1.5の定義に従ってサポートする場合である。

E.1.20 #backgroundExtent

TTML 変換プロセッサーが #backgroundExtent機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。その対象はtts:backgroundExtent 属性である。

TTML 提示プロセッサーが #backgroundExtent機能をサポートするのは、提示の意味論のサポートを 定義されたすべての値について実装している場合である。その対象はtts:backgroundExtent 属性である。

E.1.21 #backgroundImage

TTML 変換プロセッサーが #backgroundImage機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。その対象はtts:backgroundImage 属性である。

TTML 提示プロセッサーが #backgroundImage機能をサポートするのは、提示の意味論のサポートを 定義されたすべての値について実装している場合である。その対象はtts:backgroundImage 属性である。

E.1.22 #backgroundOrigin

TTML 変換プロセッサーが #backgroundOrigin機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。その対象はtts:backgroundOrigin 属性である。

TTML 提示プロセッサーが #backgroundOrigin機能をサポートするのは、提示の意味論のサポートを 定義されたすべての値について実装している場合である。その対象はtts:backgroundOrigin 属性である。

E.1.23 #backgroundPosition

TTML 変換プロセッサーが #backgroundPosition機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。その対象はtts:backgroundPosition 属性である。

TTML 提示プロセッサーが #backgroundPosition機能をサポートするのは、提示の意味論のサポートを 定義されたすべての値について実装している場合である。その対象はtts:backgroundPosition 属性である。

E.1.24 #backgroundRepeat

TTML 変換プロセッサーが #backgroundRepeat機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。その対象はtts:backgroundRepeat 属性である。

TTML 提示プロセッサーが #backgroundRepeat機能をサポートするのは、提示の意味論のサポートを 定義されたすべての値について実装している場合である。その対象はtts:backgroundRepeat 属性である。

E.1.25 #base

TTML 変換プロセッサーが #base 機能をサポートするのは、xml:base 属性を認識し、変換できる場合であり、その適用先は、6.1 プロファイル要素語彙で定義される次の語彙である:

TTML 提示プロセッサーが #base 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.26 #base-general

TTML 変換プロセッサーが #base-general 機能をサポートするのは、xml:base 属性を認識し、変換できる場合であり、その適用先は、6.1 プロファイル要素語彙で定義され、この属性を許容するすべての語彙から、次のものを除いたものである:

TTML 提示プロセッサーが #base-general 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.27 #base-version-2

TTMLプロセッサーが#base-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#base-version-2機能は、 #base機能の構文上および意味上の拡張である。

コンテンツプロファイルが#base-version-2 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #baseまたは #base-general。

E.1.28 #bidi

TTMLコンテンツプロセッサーが#bidi 機能をサポートするのは、#bidi機能を、[TTML1]の§D.1.6の定義に従ってサポートする場合である。

注:

#bidi機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが#bidi機能の使用を要求または許可する一方で、 次のいずれかの 機能の使用を禁止することはエラーである:#direction、 #unicodeBidi、または #writingMode-horizontal。

E.1.29 #bidi-version-2

TTMLプロセッサーが#bidi-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#bidi-version-2機能は、 #bidi機能の構文上および意味上の拡張である。

コンテンツプロファイルが#bidi-version-2 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #bidiまたは #unicodeBidi-isolate。

E.1.30 #border

TTMLプロセッサーが#border機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#border機能の使用を要求または許可する一方で、 次のいずれかの 機能の使用を禁止することはエラーである: #border-block、 #border-inline、または #border-region。

E.1.31 #border-block

TTML 変換プロセッサーが #border-block機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。対象は、tts:border 属性であり、適用先のコンテンツ要素は、 提示処理中に ブロック領域を生成するものである。

TTML 提示プロセッサーが #border-block機能をサポートするのは、提示の意味論の サポートをtts:border 属性について実装している場合であり、適用先のコンテンツ要素が生成するのは、 1つの ブロック領域である。

E.1.32 #border-inline

TTML 変換プロセッサーが #border-inline機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。対象は、tts:border 属性であり、適用先のコンテンツ要素は、 提示処理中に インライン領域を生成するものである。

TTML 提示プロセッサーが #border-inline機能をサポートするのは、提示の意味論の サポートをtts:border 属性について実装している場合であり、適用先のコンテンツ要素が生成するのは、 1つの インライン領域である。

E.1.33 #border-radii

TTMLプロセッサーが#border-radii機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#border-radii 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #border-radii-1または #border-radii-2。

E.1.34 #border-radii-1

TTML 変換プロセッサーが #border-radii-1機能をサポートするのは、次の値を認識し、変換できる場合である: 1つの構成要素からなる <border-radii>値表現の値であり、 tts:border 属性内で指定されるもの。

TTML 提示プロセッサーが #backgroundClip機能をサポートするのは、次の値について提示の意味論のサポートを実装している場合である: 1つの構成要素からなる <border-radii>値表現の値であり、 tts:border 属性内で指定されるもの。

E.1.35 #border-radii-2

TTML 変換プロセッサーが #border-radii-2機能をサポートするのは、次の値を認識し、変換できる場合である: 2つの構成要素からなる <border-radii>値表現の値であり、 tts:border 属性内で指定されるもの。

TTML 提示プロセッサーが #backgroundClip機能をサポートするのは、次の値について提示の意味論のサポートを実装している場合である: 2つの構成要素からなる <border-radii>値表現の値であり、 tts:border 属性内で指定されるもの。

E.1.36 #border-region

TTML 変換プロセッサーが #border-region機能をサポートするのは、定義されたすべての値を 認識し、変換できる場合である。対象は、tts:border 属性がregion要素に適用される場合である。

TTML 提示プロセッサーが #border-region機能をサポートするのは、提示の意味論の サポートをtts:border 属性がregion要素に適用される場合について実装しているときである。

E.1.37 #bpd

TTML 変換プロセッサーが #bpd機能をサポートするのは、認識および 変換が可能な対象にtts:bpd属性が含まれる場合である。

TTML 提示プロセッサーが #bpd機能をサポートするのは、提示の意味論のサポートを、 tts:bpd属性について実装している場合である。

E.1.38 #cellResolution

TTMLコンテンツプロセッサーが#cellResolution 機能をサポートするのは、#cellResolution機能を、[TTML1]の§D.1.7の定義に従ってサポートする場合である。

E.1.39 #chunk

TTML 変換プロセッサーが #chunk 機能をサポートするのは、次の語彙を認識し、変換できる場合であり、 その語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #chunk 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.40 #clockMode

TTMLコンテンツプロセッサーが#clockMode 機能をサポートするのは、#clockMode機能を、[TTML1]の§D.1.8の定義に従ってサポートする場合である。

E.1.41 #clockMode-gps

TTMLコンテンツプロセッサーが#clockMode-gps 機能をサポートするのは、#clockMode-gps機能を、[TTML1]の§D.1.9の定義に従ってサポートする場合である。

E.1.42 #clockMode-local

TTMLコンテンツプロセッサーが#clockMode-local 機能をサポートするのは、#clockMode-local機能を、[TTML1]の§D.1.10の定義に従ってサポートする場合である。

E.1.43 #clockMode-utc

TTMLコンテンツプロセッサーが#clockMode-utc 機能をサポートするのは、#clockMode-utc機能を、[TTML1]の§D.1.11の定義に従ってサポートする場合である。

E.1.44 #color

TTMLコンテンツプロセッサーが#color 機能をサポートするのは、#color機能を、[TTML1]の§D.1.12の定義に従ってサポートする場合である。

E.1.45 #condition

TTMLプロセッサーが#condition機能をサポートするのは、次の 機能をサポートする場合である:

コンテンツプロファイルが#condition 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #condition-fn-media、 #condition-fn-parameter、 #condition-fn-supports、 #condition-primary。

E.1.46 #condition-fn-media

TTML コンテンツプロセッサーが #condition-fn-media機能をサポートするのは、 <media-function> 部分式を、<condition>値 表現内で使用する場合にサポートする場合である。

E.1.47 #condition-fn-parameter

TTML コンテンツプロセッサーが #condition-fn-parameter機能をサポートするのは、 <parameter-function> 部分式を、<condition>値 表現内で使用する場合にサポートする場合である。

E.1.48 #condition-fn-supports

TTML コンテンツプロセッサーが #condition-fn-supports機能をサポートするのは、 <supports-function> 部分式を、<condition>値 表現内で使用する場合にサポートする場合である。

E.1.49 #condition-primary

TTML コンテンツプロセッサーが #condition-primary機能をサポートするのは、 <condition>値表現をサポートする場合であり、その表現は、 次のものを含まない: <condition-function>部分式。

E.1.50 #content

TTMLコンテンツプロセッサーが#content 機能をサポートするのは、#content機能を、[TTML1]の§D.1.13の定義に従ってサポートする場合である。

E.1.51 #content-sizing

TTMLプロセッサーが#content-sizing機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#content-sizing 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #bpdまたは #ipd。

E.1.52 #contentProfiles

TTML 変換プロセッサーが #contentProfiles 機能をサポートするのは、(1) 非結合プロファイルをサポートし、かつ (2) 次のものを認識し、変換できる場合である:

  1. 次のプロファイル属性語彙。これらは6.2 プロファイル属性語彙で定義される:

  2. first値( ttp:inferProcessorProfileSource 属性の値)、

  3. designator属性( ttp:profile要素上)、

  4. content値(type属性の値であり、 ttp:profile要素上)、および

  5. prohibited値(value属性の値であり、 ttp:featureおよび ttp:extension要素上)。

TTML 提示プロセッサーが #contentProfiles 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

#contentProfiles機能のサポートは、結合プロファイル または入れ子プロファイルのサポートを意味しない。

E.1.53 #contentProfiles-combined

TTML 変換プロセッサーが #contentProfiles-combined 機能をサポートするのは、(1) #contentProfiles機能をサポートし、 (2) 結合プロファイルをサポートし、かつ(3) 次のものを認識し、 変換できる場合である:

  1. 次のプロファイル属性語彙。これらは6.2 プロファイル属性語彙で定義される:

  2. combined値( ttp:inferProcessorProfileSource 属性の値)、および

  3. combine属性( ttp:profile要素上)。

TTML 提示プロセッサーが #contentProfiles-combined 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

#contentProfiles-combine機能は、 #contentProfiles機能の構文上および意味上の拡張である。

コンテンツプロファイルが、 #contentProfiles-combine機能の使用を要求または許可する一方で、 #contentProfiles 機能の使用を禁止することはエラーである。

注:

#contentProfiles-combined機能のサポートは、入れ子プロファイルのサポートを意味しない。

E.1.54 #core

TTMLコンテンツプロセッサーが#core 機能をサポートするのは、#core機能を、[TTML1]の§D.1.14の定義に従ってサポートする場合である。

E.1.55 #data

TTML 変換プロセッサーが #data 機能をサポートするのは、次の語彙を認識し、変換できる場合であり、 その語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #data 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.56 #direction

TTMLコンテンツプロセッサーが#direction 機能をサポートするのは、#direction機能を、[TTML1]の§D.1.15の定義に従ってサポートする場合である。

E.1.57 #disparity

TTML 変換プロセッサーが #disparity機能をサポートするのは、認識および 変換が可能な対象にtts:disparity属性が含まれる場合である。

TTML 提示プロセッサーが #disparity機能をサポートするのは、提示の意味論のサポートを、 tts:disparity属性について実装している場合である。

注:

#disparity機能のサポートは、 #region-implied-animation 機能のサポートを意味しない。

E.1.58 #display

TTMLコンテンツプロセッサーが#display 機能をサポートするのは、#display機能を、[TTML1]の§D.1.16の定義に従ってサポートする場合である。

注:

#display機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが#display 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #display-block、 #display-inline、または #display-region。

E.1.59 #display-block

TTMLコンテンツプロセッサーが#display-block 機能をサポートするのは、#display-block機能を、[TTML1]の§D.1.17の定義に従ってサポートする場合である。

E.1.60 #display-inline

TTMLコンテンツプロセッサーが#display-inline 機能をサポートするのは、#display-inline機能を、[TTML1]の§D.1.18の定義に従ってサポートする場合である。

E.1.61 #display-inlineBlock

TTML 変換プロセッサーが #display-inlineBlock機能をサポートするのは、認識し、変換できる値が inlineBlock であり、これはtts:display属性の値で、 適用先のコンテンツ要素が、提示処理中に インライン領域を生成する場合である。

TTML 提示プロセッサーが #display-inlineBlock機能をサポートするのは、提示の意味論をサポートする値が inlineBlock であり、これはtts:display属性の値で、 適用先のコンテンツ要素が、提示処理中に インライン領域を生成する場合である。

E.1.62 #display-region

TTMLコンテンツプロセッサーが#display-region 機能をサポートするのは、#display-region機能を、[TTML1]の§D.1.19の定義に従ってサポートする場合である。

E.1.63 #display-version-2

TTMLプロセッサーが#display-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#display-version-2機能は、 #display機能の構文上および意味上の拡張である。

コンテンツプロファイルが、 #display-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #display、 #display-block、 #display-inline、 #display-inlineBlock、または #display-region。

E.1.64 #displayAlign

TTMLコンテンツプロセッサーが#displayAlign 機能をサポートするのは、#displayAlign機能を、[TTML1]の§D.1.20の定義に従ってサポートする場合である。

注:

#displayAlign機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが#displayAlign 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#displayAlign-regionまたは #displayAlign-relative。

E.1.65 #displayAlign-block

TTML 変換プロセッサーが #displayAlign-block機能をサポートするのは、変換の意味論の サポートをtts:displayAlign 属性について実装している場合であり、適用先のコンテンツ要素は、 提示処理中にブロック領域を生成するものである。

TTML 提示プロセッサーが #displayAlign-block機能をサポートするのは、提示の意味論の サポートをtts:displayAlign 属性について実装している場合であり、適用先のコンテンツ要素は、 ブロック領域を生成するものである。

E.1.66 #displayAlign-justify

TTML 変換プロセッサーが #displayAlign-justify機能をサポートするのは、認識および 変換が可能な対象がjustify値であり、これがtts:displayAlign属性の値である場合である。

TTML 提示プロセッサーが #displayAlign-justify機能をサポートするのは、提示の意味論のサポートを実装している対象が、 justify値であり、 tts:displayAlign属性の値である場合である。

E.1.67 #displayAlign-region

TTML 変換プロセッサーが #displayAlign-region機能をサポートするのは、変換の意味論の サポートをtts:displayAlign 属性がregion要素に適用される場合について実装しているときである。

TTML 提示プロセッサーが #displayAlign-region機能をサポートするのは、提示の意味論の サポートをtts:displayAlign 属性がregion要素に適用される場合について実装しているときである。

E.1.68 #displayAlign-relative

TTML 変換プロセッサーが #displayAlign-relative機能をサポートするのは、認識および 変換が可能な値がbefore、center、 およびafterであり、これらがtts:displayAlign 属性の値である場合である。

TTML 提示プロセッサーが #displayAlign-relative機能をサポートするのは、提示の意味論の サポートを実装している値がbefore、center、および afterであり、これらがtts:displayAlign 属性の値である場合である。

E.1.69 #displayAlign-version-2

TTMLプロセッサーが#displayAlign-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#displayAlign-version-2機能は、 #displayAlign機能の構文上および意味上の拡張である。

コンテンツプロファイルが、 #displayAlign-version-2機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #displayAlign、 #displayAlign-block、 #displayAlign-justify、 #displayAlign-region、または #displayAlign-relative。

E.1.70 #displayAspectRatio

TTML 変換プロセッサーが #displayAspectRatio機能をサポートするのは、認識および 変換が可能な対象がttp:displayAspectRatio 属性である場合である。

TTML 提示プロセッサーが #displayAspectRatio機能をサポートするのは、提示の意味論のサポートを 実装している対象がttp:displayAspectRatio 属性である場合である。

E.1.71 #dropMode

TTMLコンテンツプロセッサーが#dropMode 機能をサポートするのは、#dropMode機能を、[TTML1]の§D.1.21の定義に従ってサポートする場合である。

注:

#dropMode機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが#dropMode 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#dropMode-dropNTSC、 #dropMode-dropPAL、または #dropMode-nonDrop。

E.1.72 #dropMode-dropNTSC

TTMLコンテンツプロセッサーが#dropMode-dropNTSC 機能をサポートするのは、#dropMode-dropNTSC機能を、[TTML1]の§D.1.22の定義に従ってサポートする場合である。

E.1.73 #dropMode-dropPAL

TTMLコンテンツプロセッサーが#dropMode-dropPAL 機能をサポートするのは、#dropMode-dropPAL機能を、[TTML1]の§D.1.23の定義に従ってサポートする場合である。

E.1.74 #dropMode-nonDrop

TTMLコンテンツプロセッサーが#dropMode-nonDrop 機能をサポートするのは、#dropMode-nonDrop機能を、[TTML1]の§D.1.24の定義に従ってサポートする場合である。

E.1.75 #embedded-audio

TTMLプロセッサーが#embedded-audio機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#embedded-audio 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #embedded-dataまたは #audio。

E.1.76 #embedded-content

TTMLプロセッサーが#embedded-content機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが、 #embedded-content機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #embedded-audio、 #embedded-font、または #embedded-image。

E.1.77 #embedded-data

TTMLプロセッサーが#embedded-data機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#embedded-data 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #chunk、 #data、 #resources、または #source。

E.1.78 #embedded-font

TTMLプロセッサーが#embedded-font機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#embedded-font 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #embedded-dataまたは #font。

E.1.79 #embedded-image

TTMLプロセッサーが#embedded-image機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#embedded-image 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #embedded-dataまたは #image。

E.1.80 #extent

TTMLコンテンツプロセッサーが#extent 機能をサポートするのは、#extent機能を、[TTML1]の§D.1.25の定義に従ってサポートする場合である。

注:

#extent機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが#extent機能の使用を要求または許可する一方で、 次のいずれかの 機能の使用を禁止することはエラーである:#extent-regionまたは #extent-root。

注:

#extent機能のサポートは、 #region-implied-animation 機能のサポートを意味しない。

E.1.81 #extent-auto

TTMLコンテンツプロセッサーが#extent-auto機能をサポートするのは、 構文と意味論をサポートする対象がauto値であり、これがtts:extent 属性について[TTML1]の§8.2.7で定義される値である場合である。

E.1.82 #extent-auto-version-2

TTML 変換プロセッサーが #extent-auto-version-2機能をサポートするのは、認識および 変換が可能な構文と意味論がauto値のものであり、これがtts:extent 属性についてこの仕様で定義される値である場合である。

TTML 提示プロセッサーが #extent-auto-version-2 機能をサポートするのは、意味上の拡張に対する提示の意味論のサポートを実装している場合であり、その拡張は、 auto値についてのもので、 tts:extent属性について上記のように記述される。

#extent-auto-version-2機能は、 #extent-auto機能の意味上の拡張である。

コンテンツプロファイルが、 #extent-auto-version-2機能の使用を要求または許可する一方で、(1) #extent-auto機能の使用、 または(2) 次のすべての機能の使用を禁止することはエラーである: #extent-root、 #extent-region、および #extent-image。

注:

#extent-auto-version-2機能のサポートは、 次の機能のサポートを意味しない:

ただし、これらの機能のいずれかをサポートしている場合、 #extent-auto-version-2機能のサポートは、 #extent-auto-version-2を、その 機能に関してサポートしていることを意味する。より具体的には、 その機能がサポートする要素に関して、すなわち、 次の要素型のいずれかに関してサポートしていることを意味する: tt、 region、および image。これらはそれぞれ上記の機能に対応する。

E.1.83 #extent-contain

TTML 変換プロセッサーが #extent-contain機能をサポートするのは、認識および 変換が可能な対象がcontain値であり、これがtts:extent 属性の値である場合である。

TTML 提示プロセッサーが #extent-contain機能をサポートするのは、提示の意味論のサポートを実装している対象が、 contain値であり、 tts:extent属性の値である場合である。

E.1.84 #extent-cover

TTML 変換プロセッサーが #extent-cover機能をサポートするのは、認識および 変換が可能な対象がcover値であり、これがtts:extent 属性の値である場合である。

TTML 提示プロセッサーが #extent-cover機能をサポートするのは、提示の意味論のサポートを実装している対象が、 cover値であり、 tts:extent属性の値である場合である。

E.1.85 #extent-full-version-2

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 機能のサポートを意味しない。

E.1.86 #extent-image

TTML 変換プロセッサーが #extent-image機能をサポートするのは、 tts:extent属性の値のうち、 #extent-auto-version-2および #extent-length-version-2機能がサポートする値を、 image要素に適用する場合にサポートするときである。

TTML 提示プロセッサーが #extent-image 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

コンテンツプロファイルが#extent-image 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#extent、 機能:#extent-auto-version-2、または #extent-length-version-2。

E.1.87 #extent-length

TTMLコンテンツプロセッサーが#extent-length機能をサポートするのは、 <length> 構成要素の値を、 tts:extent属性について、[TTML1]の§8.2.7の定義に従ってサポートする場合である。

E.1.88 #extent-length-version-2

TTMLコンテンツプロセッサーが#extent-length-version-2機能をサポートするのは、 次の適用において #length-version-2機能をサポートする場合である: 適用先は、 <length> 構成要素の値であり、 tts:extent属性の値を構成する。

#extent-length-version-2機能は、 #extent-length機能の構文上および意味上の拡張である。

コンテンツプロファイルが、 #extent-length-version-2機能の使用を要求または許可する一方で、 #extent-length 機能の使用を禁止することはエラーである。

E.1.89 #extent-measure

TTML 変換プロセッサーが #extent-measure機能をサポートするのは、認識および 変換が可能な対象が、次に示す<measure>スタイル 値表現の値であり、これをtts:extent属性とともに使用する場合である:

  • auto

  • fitContent

  • maxContent

  • minContent

TTML 提示プロセッサーが #extent-measure機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.90 #extent-region

TTMLコンテンツプロセッサーが#extent-region 機能をサポートするのは、#extent-region機能を、[TTML1]の§D.1.26の定義に従ってサポートする場合である。

注:

#extent-region機能のサポートは、 #extent-autoおよび #extent-length機能を、 region要素に適用する場合にサポートすることを意味する。

E.1.91 #extent-region-version-2

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 機能のサポートを意味しない。

E.1.92 #extent-root

TTMLコンテンツプロセッサーが#extent-root 機能をサポートするのは、#extent-root機能を、[TTML1]の§D.1.27の定義に従ってサポートする場合である。

注:

#extent-root機能のサポートは、 #extent-autoおよび #extent-length機能を、 tt要素に適用する場合にサポートすることを意味する。

E.1.93 #extent-root-version-2

TTMLプロセッサーが#extent-root-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#extent-root-version-2機能は、 #extent-root機能の構文上および意味上の拡張である。

コンテンツプロファイルが、 #extent-root-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #extent-root、 #extent-auto-version-2、または #extent-contain。

注:

#extent-root-version-2機能のサポートは、 次のように、 #extent-contain機能を、ルートであるtt要素に適用する場合にのみサポートすることを意味し、 他の要素型に適用する場合のサポートは意味しないことを意図している。

E.1.94 #extent-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。

E.1.95 #font

TTML 変換プロセッサーが #font 機能をサポートするのは、次の語彙を認識し、変換できる場合であり、 その語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #font 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.96 #fontFamily

TTMLコンテンツプロセッサーが#fontFamily 機能をサポートするのは、#fontFamily機能を、[TTML1]の§D.1.28の定義に従ってサポートする場合である。

注:

#fontFamily機能のサポートは、機能的には、 次の機能のサポートと同等である:

コンテンツプロファイルが#fontFamily 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#fontFamily-genericまたは #fontFamily-non-generic。

E.1.97 #fontFamily-generic

TTMLコンテンツプロセッサーが#fontFamily-generic 機能をサポートするのは、#fontFamily-generic機能を、[TTML1]の§D.1.29の定義に従ってサポートする場合である。

E.1.98 #fontFamily-non-generic

TTMLコンテンツプロセッサーが#fontFamily-non-generic 機能をサポートするのは、#fontFamily-non-generic機能を、[TTML1]の§D.1.30の定義に従ってサポートする場合である。

E.1.99 #fontKerning

TTML 変換プロセッサーが #fontKerning機能をサポートするのは、認識および 変換が可能な対象がtts:fontKerning 属性である場合である。

TTML 提示プロセッサーが #fontKerning機能をサポートするのは、提示の意味論のサポートを、 tts:fontKerning属性について実装している場合である。

E.1.100 #fontSelectionStrategy

TTML 変換プロセッサーが #fontSelectionStrategy機能をサポートするのは、認識および 変換が可能な対象がauto値であり、これがtts:fontSelectionStrategy 属性の値である場合である。

TTML 提示プロセッサーが #fontSelectionStrategy機能をサポートするのは、提示の意味論のサポートを実装している対象が、 auto値であり、 tts:fontSelectionStrategy 属性の値である場合である。

E.1.101 #fontSelectionStrategy-character

TTML 変換プロセッサーが #fontSelectionStrategy-character機能をサポートするのは、 character値(tts:fontSelectionStrategy 属性の値)を認識し、変換できる場合である。

TTML 提示プロセッサーが #fontSelectionStrategy-character機能をサポートするのは、提示の意味論の サポートを、character値( tts:fontSelectionStrategy 属性の値)について実装している場合である。

E.1.102 #fontShear

TTML 変換プロセッサーが #fontShear機能をサポートするのは、 tts:fontShear属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #fontShear機能をサポートするのは、提示の意味論のサポートを tts:fontShear属性について実装している場合である。

E.1.103 #fontSize

TTMLコンテンツプロセッサーが#fontSize 機能をサポートするのは、#fontSize機能を、[TTML1]の§D.1.31の定義に従ってサポートする場合である。

注:

#fontSize機能のサポートは、次の 機能のサポートと機能的に同等である:

コンテンツプロファイルが#fontSize 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#fontSize-anamorphicまたは #fontSize-isomorphic。

E.1.104 #fontSize-anamorphic

TTMLコンテンツプロセッサーが#fontSize-anamorphic 機能をサポートするのは、#fontSize-anamorphic機能を、[TTML1]の§D.1.32の定義に従ってサポートする場合である。

E.1.105 #fontSize-isomorphic

TTMLコンテンツプロセッサーが#fontSize-isomorphic 機能をサポートするのは、#fontSize-isomorphic機能を、[TTML1]の§D.1.33の定義に従ってサポートする場合である。

E.1.106 #fontStyle

TTMLコンテンツプロセッサーが#fontStyle 機能をサポートするのは、#fontStyle機能を、[TTML1]の§D.1.34の定義に従ってサポートする場合である。

注:

#fontStyle機能のサポートは、(1) 次の #fontStyle-italicおよび #fontStyle-oblique機能 と、(2) normal値(tts:fontStyle属性の値)のサポートと機能的に同等である。

コンテンツプロファイルが#fontStyle 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#fontStyle-italicまたは #fontStyle-oblique。

E.1.107 #fontStyle-italic

TTMLコンテンツプロセッサーが#fontStyle-italic 機能をサポートするのは、#fontStyle-italic機能を、[TTML1]の§D.1.35の定義に従ってサポートする場合である。

E.1.108 #fontStyle-oblique

TTMLコンテンツプロセッサーが#fontStyle-oblique 機能をサポートするのは、#fontStyle-oblique機能を、[TTML1]の§D.1.36の定義に従ってサポートする場合である。

E.1.109 #fontVariant

TTML 変換プロセッサーが #fontVariant機能をサポートするのは、 tts:fontVariant 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #fontVariant機能をサポートするのは、提示の意味論のサポートを tts:fontVariant属性について実装している場合である。

E.1.110 #fontWeight

TTMLコンテンツプロセッサーが#fontWeight 機能をサポートするのは、#fontWeight機能を、[TTML1]の§D.1.37の定義に従ってサポートする場合である。

注:

#fontWeight機能のサポートは、 (1) #fontWeight-bold機能 と、(2) normal値(tts:fontWeight属性の値)のサポートと機能的に同等である。

コンテンツプロファイルが#fontWeight 機能の使用を要求または許可する一方で、 #fontWeight-bold機能の使用を禁止することはエラーである。

E.1.111 #fontWeight-bold

TTMLコンテンツプロセッサーが#fontWeight-bold 機能をサポートするのは、#fontWeight-bold機能を、[TTML1]の§D.1.38の定義に従ってサポートする場合である。

E.1.112 #frameRate

TTMLコンテンツプロセッサーが#frameRate 機能をサポートするのは、#frameRate機能を、[TTML1]の§D.1.39の定義に従ってサポートする場合である。

E.1.113 #frameRateMultiplier

TTMLコンテンツプロセッサーが#frameRateMultiplier 機能をサポートするのは、#frameRateMultiplier機能を、[TTML1]の§D.1.40の定義に従ってサポートする場合である。

E.1.114 #gain

TTML 変換プロセッサーが #gain機能をサポートするのは、 tta:gain属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #gain機能をサポートするのは、提示の意味論のサポートを tta:gain属性について実装している場合である。

E.1.115 #image

TTML 変換プロセッサーが #image 機能をサポートするのは、次に挙げる語彙を認識し、変換できる場合である。 この語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #image 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.116 #image-png

TTML 変換プロセッサーが #image-png 機能をサポートするのは、認識および変換が可能な画像 リソース のコンテンツ型に、image/png([PNG]で定義されるもの)が含まれる場合である。

TTML 提示プロセッサーが #image-png 機能をサポートするのは、提示の意味論のサポートを実装している画像 リソース のコンテンツ型に、image/png([PNG]で定義されるもの)が含まれる場合である。

E.1.117 #initial

TTML 変換プロセッサーが #initial 機能をサポートするのは、次に挙げる語彙を認識し、変換できる場合である。 この語彙は10 スタイリングで定義される:

TTML 提示プロセッサーが #initial 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.118 #ipd

TTML 変換プロセッサーが #ipd機能をサポートするのは、 tts:ipd属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #ipd機能をサポートするのは、提示の意味論のサポートを tts:ipd属性について実装している場合である。

E.1.119 #layout

TTMLコンテンツプロセッサーが#layout 機能をサポートするのは、#layout機能を、[TTML1]の§D.1.41の定義に従ってサポートする場合である。

E.1.120 #length

TTMLコンテンツプロセッサーが#length 機能をサポートするのは、#length機能を、[TTML1]の§D.1.42の定義に従ってサポートする場合である。

E.1.121 #length-cell

TTMLコンテンツプロセッサーが#length-cell 機能をサポートするのは、#length-cell機能を、[TTML1]の§D.1.43の定義に従ってサポートする場合である。

E.1.122 #length-em

TTMLコンテンツプロセッサーが#length-em 機能をサポートするのは、#length-em機能を、[TTML1]の§D.1.44の定義に従ってサポートする場合である。

E.1.123 #length-integer

TTMLコンテンツプロセッサーが#length-integer 機能をサポートするのは、#length-integer機能を、[TTML1]の§D.1.45の定義に従ってサポートする場合である。

E.1.124 #length-negative

TTMLコンテンツプロセッサーが#length-negative 機能をサポートするのは、#length-negative機能を、[TTML1]の§D.1.46の定義に従ってサポートする場合である。

E.1.125 #length-percentage

TTMLコンテンツプロセッサーが#length-percentage 機能をサポートするのは、#length-percentage機能を、[TTML1]の§D.1.47の定義に従ってサポートする場合である。

E.1.126 #length-pixel

TTMLコンテンツプロセッサーが#length-pixel 機能をサポートするのは、#length-pixel機能を、[TTML1]の§D.1.48の定義に従ってサポートする場合である。

E.1.127 #length-positive

TTMLコンテンツプロセッサーが#length-positive 機能をサポートするのは、#length-positive機能を、[TTML1]の§D.1.49の定義に従ってサポートする場合である。

E.1.128 #length-real

TTMLコンテンツプロセッサーが#length-real 機能をサポートするのは、#length-real機能を、[TTML1]の§D.1.50の定義に従ってサポートする場合である。

E.1.129 #length-real-version-2

TTML 変換プロセッサーが #length-real-version-2機能をサポートするのは、 認識および変換が可能な構文と意味論の対象に、<length>スタイル値 表現の実数値が含まれ、これに非終端表現non-negative-realのすべての値が含まれる場合である。 この非終端表現は <non-negative-number>で定義される。

TTML 提示プロセッサーが #length-real-version-2 機能をサポートするのは、提示の意味論のサポートを、<length>スタイル値 表現の値について、上記の説明に従って実装している場合である。

#length-real-version-2機能は、 #length-real機能の構文上の拡張である。

コンテンツプロファイルが #length-real-version-2機能の使用を要求または許可する一方で、 #length-real機能の使用を禁止することはエラーである。

E.1.130 #length-root-container-relative

TTML 変換プロセッサーが #length-root-container-relative機能をサポートするのは、 認識および変換が可能な値として、ルートコンテナー相対値を、<length>スタイル値 表現で扱える場合である。

TTML 提示プロセッサーが #length-root-container-relative機能をサポートするのは、提示の意味論の サポートを、ルート コンテナー相対値について、<length>スタイル 値 表現で実装している場合である。

E.1.131 #length-version-2

TTMLプロセッサーが#length-version-2機能をサポートするのは、次の 機能をサポートする場合である:

#length-version-2機能は、 #length機能の構文上および意味上の拡張である。

コンテンツプロファイルが #length-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #length、 #length-real-version-2、または #length-root-container-relative。

E.1.132 #letterSpacing

TTML 変換プロセッサーが #letterSpacing機能をサポートするのは、 tts:letterSpacing 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #letterSpacing機能をサポートするのは、提示の意味論のサポートを tts:letterSpacing属性について実装している場合である。

E.1.133 #lineBreak-uax14

TTMLコンテンツプロセッサーが#lineBreak-uax14 機能をサポートするのは、#lineBreak-uax14機能を、[TTML1]の§D.1.51の定義に従ってサポートする場合である。

E.1.134 #lineHeight

TTMLコンテンツプロセッサーが#lineHeight 機能をサポートするのは、#lineHeight機能を、[TTML1]の§D.1.52の定義に従ってサポートする場合である。

E.1.135 #lineShear

TTML 変換プロセッサーが #lineShear機能をサポートするのは、 tts:lineShear属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #lineShear機能をサポートするのは、提示の意味論のサポートを tts:lineShear属性について実装している場合である。

E.1.136 #luminanceGain

TTML 変換プロセッサーが #luminanceGain機能をサポートするのは、 tts:luminanceGain 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #luminanceGain機能をサポートするのは、提示の意味論のサポートを tts:luminanceGainについて実装している場合である。

E.1.137 #markerMode

TTMLコンテンツプロセッサーが#markerMode 機能をサポートするのは、#markerMode機能を、[TTML1]の§D.1.53の定義に従ってサポートする場合である。

注:

#markerMode機能のサポートは、 次の機能のサポートと機能的に同等である:

コンテンツプロファイルが#markerMode 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである:#markerMode-continuousまたは #markerMode-discontinuous。

E.1.138 #markerMode-continuous

TTMLコンテンツプロセッサーが#markerMode-continuous 機能をサポートするのは、#markerMode-continuous機能を、[TTML1]の§D.1.54の定義に従ってサポートする場合である。

E.1.139 #markerMode-discontinuous

TTMLコンテンツプロセッサーが#markerMode-discontinuous 機能をサポートするのは、#markerMode-discontinuous機能を、[TTML1]の§D.1.55の定義に従ってサポートする場合である。

E.1.140 #metadata

TTMLコンテンツプロセッサーが#metadata 機能をサポートするのは、#metadata機能を、[TTML1]の§D.1.56の定義に従ってサポートする場合である。

E.1.141 #metadata-item

TTML 変換プロセッサーが #metadata-item 機能をサポートするのは、次に挙げる語彙を認識し、変換できる場合である。 この語彙は14 メタデータで定義される:

TTML 提示プロセッサーが #metadata-item 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

この仕様は、メタデータ情報の 提示について標準化された形式を定義しない。メタデータ情報の提示、 または提示する能力は、実装に 依存するものとみなされる。

E.1.142 #metadata-version-2

TTMLプロセッサーが#metadata-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#metadata-version-2機能は、 #metadata機能の構文上および意味上の拡張である。

コンテンツプロファイルが #metadata-version-2機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #metadataまたは #metadata-item。

E.1.143 #nested-div

TTMLコンテンツプロセッサーが#nested-div 機能をサポートするのは、#nested-div機能を、[TTML1]の§D.1.57の定義に従ってサポートする場合である。

E.1.144 #nested-span

TTMLコンテンツプロセッサーが#nested-span 機能をサポートするのは、#nested-span機能を、[TTML1]の§D.1.58の定義に従ってサポートする場合である。

E.1.145 #opacity

TTMLコンテンツプロセッサーが#opacity 機能をサポートするのは、#opacity機能を、[TTML1]の§D.1.59の定義に従ってサポートする場合である。

注:

#opacity機能のサポートは、 #opacity-region機能のサポートと機能的に同等である。

コンテンツプロファイルが#opacity 機能の使用を要求または許可する一方で、 #opacity-region機能の使用を禁止することはエラーである。

E.1.146 #opacity-block

TTML 変換プロセッサーが #opacity-block機能をサポートするのは、 次の適用条件におけるtts:opacity 属性の定義済みのすべての値を認識し、変換できる場合である。適用先はコンテンツ要素であり、 それは提示処理時に ブロック領域を生成するものである。

TTML 提示プロセッサーが #opacity-block機能をサポートするのは、(1) 提示の意味論の サポートをtts:opacity 属性について実装しており、その属性が適用されるコンテンツ要素は 提示時に ブロック領域を生成し、かつ (2) 少なくとも8個の不透明度値を区別できる 表示または出力表示信号の生成が可能な場合である。

E.1.147 #opacity-image

TTML 変換プロセッサーが #opacity-image機能をサポートするのは、定義済みのすべての値を tts:opacity属性についてサポートし、その適用先が image要素である場合である。

TTML 提示プロセッサーが #opacity-image 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

注:

#opacity-image機能のサポートは、 #image機能のサポートを意味しない。ただし、 後者をサポートしなければ、 前者をサポートしても意味がない。

E.1.148 #opacity-inline

TTML 変換プロセッサーが #opacity-inline機能をサポートするのは、 次の適用条件におけるtts:opacity 属性の定義済みのすべての値を認識し、変換できる場合である。適用先はコンテンツ要素であり、 それは提示処理時に インライン領域を生成するものである。

TTML 提示プロセッサーが #opacity-inline機能をサポートするのは、(1) 提示の意味論の サポートをtts:opacity 属性について実装しており、その属性が適用されるコンテンツ要素は 提示時に インライン領域を生成し、かつ (2) 少なくとも8個の不透明度値を区別できる 表示または出力表示信号の生成が可能な場合である。

E.1.149 #opacity-region

TTML 変換プロセッサーが #opacity-region機能をサポートするのは、 定義済みのすべての値を認識し、変換できる対象に、tts:opacity 属性が含まれ、その適用先がregion要素である場合である。

TTML 提示プロセッサーが #opacity-region機能をサポートするのは、(1) 提示の意味論の サポートをtts:opacity 属性について、その適用先がregion要素である場合に実装し、 かつ (2) 少なくとも8個の不透明度値を区別できる 表示または出力表示信号の生成が可能な場合である。

注:

#opacity-region機能のサポートは、 次の #opacity機能のサポートと機能的に同等である。

コンテンツプロファイルが#opacity-region 機能の使用を要求または許可する一方で、 #opacity機能の使用を禁止することはエラーである。

E.1.150 #opacity-version-2

TTMLプロセッサーが#opacity-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#opacity-version-2機能は、 #opacity機能の構文上および意味上の拡張である。

コンテンツプロファイルが #opacity-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #opacity、 #opacity-block、 #opacity-image、 #opacity-inline、または #opacity-region。

E.1.151 #origin

TTMLコンテンツプロセッサーが#origin 機能をサポートするのは、#origin機能を、[TTML1]の§D.1.60の定義に従ってサポートする場合である。

注:

#origin機能のサポートは、 #region-implied-animation 機能のサポートを意味しない。

E.1.152 #overflow

TTMLコンテンツプロセッサーが#overflow 機能をサポートするのは、#overflow機能を、[TTML1]の§D.1.61の定義に従ってサポートする場合である。

注:

#overflow機能のサポートは、(1) 次の #overflow-visible機能 と、(2) hidden値(tts:overflow属性の値)のサポートと機能的に同等である。

コンテンツプロファイルが#overflow 機能の使用を要求または許可する一方で、 #overflow-visible機能の使用を禁止することはエラーである。

E.1.153 #overflow-visible

TTMLコンテンツプロセッサーが#overflow-visible 機能をサポートするのは、#overflow-visible機能を、[TTML1]の§D.1.62の定義に従ってサポートする場合である。

E.1.154 #padding

TTMLコンテンツプロセッサーが#padding 機能をサポートするのは、#padding機能を、[TTML1]の§D.1.63の定義に従ってサポートする場合である。

注:

#padding機能のサポートは、次の 機能のサポートと機能的に同等である:

コンテンツプロファイルが#padding 機能の使用を要求または許可する一方で、次のいずれかの機能の使用を禁止することはエラーである: #padding-1、 #padding-2、 #padding-3、 #padding-4、 #padding-region。

E.1.155 #padding-1

TTMLコンテンツプロセッサーが#padding-1 機能をサポートするのは、#padding-1機能を、[TTML1]の§D.1.64の定義に従ってサポートする場合である。

E.1.156 #padding-2

TTMLコンテンツプロセッサーが#padding-2 機能をサポートするのは、#padding-2機能を、[TTML1]の§D.1.65の定義に従ってサポートする場合である。

E.1.157 #padding-3

TTMLコンテンツプロセッサーが#padding-3 機能をサポートするのは、#padding-3機能を、[TTML1]の§D.1.66の定義に従ってサポートする場合である。

E.1.158 #padding-4

TTMLコンテンツプロセッサーが#padding-4 機能をサポートするのは、#padding-4機能を、[TTML1]の§D.1.67の定義に従ってサポートする場合である。

E.1.159 #padding-block

TTML 変換プロセッサーが #padding-block機能をサポートするのは、 次の適用条件におけるtts:padding 属性の定義済みのすべての値を認識し、変換できる場合である。適用先はコンテンツ要素であり、 それは提示処理時に ブロック領域を生成するものである。

TTML 提示プロセッサーが #padding-block機能をサポートするのは、提示の意味論の サポートをtts:padding 属性について実装している場合であり、その属性が適用されるコンテンツ要素は 提示時に ブロック領域を生成するものである。

E.1.160 #padding-inline

TTML 変換プロセッサーが #padding-inline機能をサポートするのは、 次の適用条件におけるtts:padding 属性の定義済みのすべての値を認識し、変換できる場合である。適用先はコンテンツ要素であり、 それは提示処理時に インライン領域を生成するものである。

TTML 提示プロセッサーが #padding-inline機能をサポートするのは、提示の意味論の サポートをtts:padding 属性について実装している場合であり、その属性が適用されるコンテンツ要素は 提示時に インライン領域を生成するものである。

E.1.161 #padding-region

TTMLコンテンツプロセッサーが#padding-region 機能をサポートするのは、#padding機能をサポートする場合である。

#padding-region機能は、空 拡張 として#padding機能を拡張するものである。 ここで、空拡張とは、 ある機能が別の機能の拡張として形式的に示されるが、拡張の 意味論は空集合であることを意味し、これは 2つの機能が機能的に同等であることと同じである。

コンテンツプロファイルが#padding-region 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #padding、 #padding-1、 #padding-2、 #padding-3、または #padding-4。

E.1.162 #padding-version-2

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。

E.1.163 #pan

TTML 変換プロセッサーが #pan機能をサポートするのは、 tta:pan属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #pan機能をサポートするのは、提示の意味論のサポートを tta:pan属性について実装している場合である。

E.1.164 #permitFeatureNarrowing

TTML 変換プロセッサーが #permitFeatureNarrowing機能をサポートするのは、 認識および変換が可能な対象に、(1) ttp:permitFeatureNarrowing 属性、および (2) extends属性( ttp:featureおよび ttp:extension要素上の属性)が含まれる場合である。

TTML 提示プロセッサーが #permitFeatureNarrowing 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

TTMLプロセッサーが#permitFeatureNarrowing機能をサポートせず、その機能が 任意として指定されている場合、 extends属性の意味論は無視される。すなわち、拡張の対象となる機能のサポートだけでは、 拡張機能がサポートされていると みなすには不十分である。

E.1.165 #permitFeatureWidening

TTML 変換プロセッサーが #permitFeatureWidening機能をサポートするのは、 認識および変換が可能な対象に、(1) ttp:permitFeatureWidening 属性、および (2) restricts属性( ttp:featureおよび ttp:extension要素上の属性)が含まれる場合である。

TTML 提示プロセッサーが #permitFeatureWidening 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

TTMLプロセッサーが#permitFeatureWidening機能をサポートせず、その機能が 任意として指定されている場合、 restricts属性の意味論は無視される。すなわち、制限の対象となる機能のサポートだけでは、 制限された機能がサポートされていると みなすには不十分である。

E.1.166 #pitch

TTML 変換プロセッサーが #pitch機能をサポートするのは、 tta:pitch属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #pitch機能をサポートするのは、提示の意味論のサポートを tta:pitch属性について実装している場合である。

E.1.167 #pixelAspectRatio

TTMLコンテンツプロセッサーが#pixelAspectRatio 機能をサポートするのは、#pixelAspectRatio機能を、[TTML1]の§D.1.68の定義に従ってサポートする場合である。

E.1.168 #position

TTML 変換プロセッサーが #position機能をサポートするのは、 tts:position属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #position機能をサポートするのは、提示の意味論のサポートを tts:position属性について実装している場合である。

注:

#position機能のサポートは、 #region-implied-animation 機能のサポートを意味しない。

E.1.169 #presentation

TTMLコンテンツプロセッサーが#presentation 機能をサポートするのは、#presentation機能を、[TTML1]の§D.1.69の定義に従ってサポートする場合である。

E.1.170 #presentation-audio

TTMLコンテンツプロセッサーが#presentation-audio機能をサポートするのは、 (1) 汎用プロセッサーの基準を、3.2.1 汎用プロセッサーの適合性の定義に従って満たし、 (2) 音声の提示(レンダリング)の意味論のサポートを実装し、 (3) 次の機能について音声の提示の意味論を実装している場合である:

さらに、#presentation-audio機能をサポートするTTMLプロセッサーは、 [UAAG]で指定されるユーザーエージェントのアクセシビリティガイドラインを満たすべきである。

E.1.171 #presentation-version-2

TTMLプロセッサーが#presentation-version-2機能をサポートするのは、 (1) 汎用プロセッサーの基準を、 3.2.1 汎用プロセッサーの適合性の定義に従って満たし、 (2) 次の機能をサポートする場合である:

#presentation-version-2機能は、 #presentation機能の構文上および意味上の拡張である。

コンテンツプロファイルが #presentation-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #presentationまたは #profile-version-2。

E.1.172 #processorProfiles

TTML 変換プロセッサーが #processorProfiles 機能をサポートするのは、(1) 非結合プロファイルをサポートし、 (2) 次を認識し、変換できる場合である:

  1. 次に挙げるプロファイル属性語彙。これは6.2 プロファイル属性語彙で定義される:

  2. designator属性( ttp:profile要素上の属性)、および

  3. processor値をとるtype属性( ttp:profile要素上の属性)。

TTML 提示プロセッサーが #processorProfiles 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

注:

#processorProfiles機能のサポートは、結合プロファイル または入れ子プロファイルのサポートを意味しない。

E.1.173 #processorProfiles-combined

TTML 変換プロセッサーが #processorProfiles-combined 機能をサポートするのは、(1) #processorProfiles機能をサポートし、 (2) 結合プロファイルをサポートし、(3) 次を認識し、 変換できる場合である:

  1. 次に挙げるプロファイル属性語彙。これは6.2 プロファイル属性語彙で定義される:

  2. combine属性( ttp:profile要素上の属性)。

TTML 提示プロセッサーが #processorProfiles-combined 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

#processorProfiles-combine機能は、 #processorProfiles機能の構文上および意味上の拡張である。

プロセッサープロファイルが #processorProfiles-combine機能の使用を要求または許可する一方で、 #processorProfiles 機能の使用を禁止することはエラーである。

注:

#processorProfiles-combined機能のサポートは、 入れ子プロファイルのサポートを意味しない。

E.1.174 #profile

TTMLコンテンツプロセッサーが#profile 機能をサポートするのは、#profile機能を、[TTML1]の§D.1.70の定義に従ってサポートする場合である。

注:

#profile機能のサポートは、 次の機能のサポートを意味しない:

E.1.175 #profile-full-version-2

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。

E.1.176 #profile-nesting

TTMLコンテンツプロセッサーが#profile-nesting 機能をサポートするのは、入れ子プロファイルをサポートする場合である。

E.1.177 #profile-version-2

TTMLコンテンツプロセッサーが#profile-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#profile-version-2機能は、 #profile機能の構文上および意味上の拡張である。

コンテンツプロファイルが #profile-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #contentProfiles、 #processorProfiles、または #profile。

注:

#profile-version-2機能のサポートは、 次の機能のサポートを意味しない:

E.1.178 #region-implied-animation

TTML 変換プロセッサーが #region-implied-animation機能をサポートするのは、認識および変換が可能な対象に スタイル属性が含まれ、その属性が divまたはp要素上にあり、暗黙の領域に適用される場合である。 この適用は、11.1.2.1 インラインアニメーションの 特別な意味論に従う。

TTML 提示プロセッサーが #region-implied-animation機能をサポートするのは、提示の意味論のサポートを スタイル属性について実装し、その属性が divまたはp要素上にあり、暗黙の領域に適用される場合である。 この適用は、11.1.2.1 インラインアニメーションの 特別な意味論に従う。

注:

#region-implied-animation機能のサポートは、 次の機能のサポートを意味しない:

ただし、これらの機能のいずれかがサポートされている場合、 #region-implied-animation機能のサポートは、 11.1.2.1 インラインアニメーションの 特別な意味論が、その機能に関してサポートされていることを意味する。

E.1.179 #region-inline

TTML 変換プロセッサーが #region-inline機能をサポートするのは、 インライン領域要素を、コンテンツ 要素の子として認識し、変換できる場合である。詳細は regionで定義される。

TTML 提示プロセッサーが #region-inline機能をサポートするのは、提示の意味論のサポートを インライン領域要素について、それがコンテンツ要素の子である場合に実装している場合である。 詳細は regionで定義される。

E.1.180 #region-timing

TTML 変換プロセッサーが #region-timing 機能をサポートするのは、次に挙げる語彙を認識し、変換できる場合であり、 その適用先は region要素である:

TTML 提示プロセッサーが #region-timing 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを、 その適用先がregion要素である場合に実装している場合である。

#region-timing機能は、#timing機能の意味上の制限である。

注:

この機能は#timing機能の意味上の部分集合を表し、 後者はすべての変換プロセッサーおよび提示プロセッサーにとって必須の機能であるため、 この機能指定子の 有用性は、実質的にコンテンツプロファイル定義での使用に限られる。この定義では、 文書インスタンスによるこの機能の 使用を禁止することを選択できる。

E.1.181 #resources

TTML 変換プロセッサーが #resources 機能をサポートするのは、次に挙げる語彙を認識し、変換できる場合である。 この語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #resources 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.182 #ruby

TTML 変換プロセッサーが #ruby機能をサポートするのは、 認識および変換が可能な値に、tts:ruby 属性の定義済みのすべての値が含まれる場合である。

TTML 提示プロセッサーが #ruby機能をサポートするのは、提示の意味論のサポートを、 定義済みのすべての値について、tts:ruby 属性で実装している場合である。

E.1.183 #ruby-full

TTMLプロセッサーが#ruby-full機能をサポートするのは、 次の機能をサポートする場合である:

コンテンツプロファイルが#ruby-full 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #ruby、 #rubyAlign、 #rubyPosition、または #rubyReserve。

E.1.184 #rubyAlign

TTMLプロセッサーが#rubyAlign機能をサポートするのは、次の 機能をサポートする場合である:

コンテンツプロファイルが#rubyAlign 機能の使用を要求または許可する一方で、次のいずれかの 機能の使用を禁止することはエラーである: #rubyAlign-minimalまたは #rubyAlign-withBase。

E.1.185 #rubyAlign-minimal

TTML 変換プロセッサーが #rubyAlign-minimal機能をサポートするのは、次に挙げる値を認識し、変換できる場合であり、 これらの値は tts:rubyAlign属性の値である。

  • start

  • center

  • end

  • spaceAround

  • spaceBetween

TTML 提示プロセッサーが #rubyAlign-minimal機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ値の 語彙について実装している場合である。

E.1.186 #rubyAlign-withBase

TTML 変換プロセッサーが #rubyAlign-withBase機能をサポートするのは、認識および変換が可能な対象に withBase値(tts:rubyAlign属性の値)が含まれる場合である。

TTML 提示プロセッサーが #rubyAlign-withBase機能をサポートするのは、提示の意味論のサポートを、 上記に挙げた同じ値 について実装している場合である。

E.1.187 #rubyPosition

TTML 変換プロセッサーが #rubyPosition機能をサポートするのは、 tts:rubyPosition 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #rubyPosition機能をサポートするのは、提示の意味論のサポートを tts:rubyPosition属性について実装している場合である。

E.1.188 #rubyReserve

TTML 変換プロセッサーが #rubyReserve機能をサポートするのは、 tts:rubyReserve 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #rubyReserve機能をサポートするのは、提示の意味論のサポートを tts:rubyReserve属性について実装している場合である。

E.1.189 #set

TTMLコンテンツプロセッサーが#set 機能をサポートするのは、#animation機能をサポートする場合である。 したがって、 #set機能は、空拡張として 次の #animation機能を拡張するものである。

コンテンツプロファイルが#set機能の使用を要求または許可する一方で、 次の #animation機能の使用を禁止することはエラーである。

E.1.190 #set-fill

TTML 変換プロセッサーが #set-fill機能をサポートするのは、 fill属性(set要素の属性)を認識し、変換できる場合である。

TTML 提示プロセッサーが #set-fill機能をサポートするのは、提示の意味論のサポートを fill属性(set要素の属性)について実装している場合である。

E.1.191 #set-multiple-styles

TTML 変換プロセッサーが #set-multiple-styles機能をサポートするのは、 複数のスタイリング属性を認識し、変換でき、それらが set要素上に指定される場合である。

TTML 提示プロセッサーが #set-multiple-styles機能をサポートするのは、提示の意味論のサポートを、 複数のスタイリング属性について、それらがset要素上に指定される場合に実装している場合である。

E.1.192 #set-repeat

TTML 変換プロセッサーが #set-repeat機能をサポートするのは、 repeatCount属性(set要素の属性)を認識し、変換できる場合である。

TTML 提示プロセッサーが #set-repeat機能をサポートするのは、提示の意味論のサポートを repeatCount属性(set要素の属性)について実装している場合である。

E.1.193 #shear

TTML 変換プロセッサーが #shear機能をサポートするのは、 tts:shear属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #shear機能をサポートするのは、提示の意味論のサポートを tts:shear属性について実装している場合である。

E.1.194 #showBackground

TTMLコンテンツプロセッサーが#showBackground 機能をサポートするのは、#showBackground機能を、[TTML1]の§D.1.71の定義に従ってサポートする場合である。

E.1.195 #source

TTML 変換プロセッサーが #source 機能をサポートするのは、次に挙げる語彙を認識し、変換できる場合である。 この語彙は9 埋め込みコンテンツで定義される:

TTML 提示プロセッサーが #source 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.196 #speak

TTML 変換プロセッサーが #speak機能をサポートするのは、 tta:speak属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #speak機能をサポートするのは、提示の意味論のサポートを tta:speak属性について実装している場合である。

E.1.197 #speech

TTMLプロセッサーが#speech機能をサポートするのは、 音声合成プロセッサーをサポートする場合である。

E.1.198 #structure

TTMLコンテンツプロセッサーが#structure 機能をサポートするのは、#structure機能を、[TTML1]の§D.1.72の定義に従ってサポートする場合である。

E.1.199 #styling

TTMLコンテンツプロセッサーが#styling 機能をサポートするのは、#styling機能を、[TTML1]の§D.1.73の定義に従ってサポートする場合である。

E.1.200 #styling-chained

TTMLコンテンツプロセッサーが#styling-chained 機能をサポートするのは、#styling-chained機能を、[TTML1]の§D.1.74の定義に従ってサポートする場合である。

E.1.201 #styling-inheritance-content

TTMLコンテンツプロセッサーが#styling-inheritance-content 機能をサポートするのは、#inheritance-content機能を、[TTML1]の§D.1.75の定義に従ってサポートする場合である。

E.1.202 #styling-inheritance-region

TTMLコンテンツプロセッサーが#styling-inheritance-region 機能をサポートするのは、#styling-inheritance-region機能を、[TTML1]の§D.1.76の定義に従ってサポートする場合である。

E.1.203 #styling-inline

TTMLコンテンツプロセッサーが#styling-inline 機能をサポートするのは、#styling-inline機能を、[TTML1]の§D.1.77の定義に従ってサポートする場合である。

E.1.204 #styling-nested

TTMLコンテンツプロセッサーが#styling-nested 機能をサポートするのは、#styling-nested機能を、[TTML1]の§D.1.78の定義に従ってサポートする場合である。

E.1.205 #styling-referential

TTMLコンテンツプロセッサーが#styling-referential 機能をサポートするのは、#styling-referential機能を、[TTML1]の§D.1.79の定義に従ってサポートする場合である。

E.1.206 #subFrameRate

TTMLコンテンツプロセッサーが#subFrameRate 機能をサポートするのは、#subFrameRate機能を、[TTML1]の§D.1.80の定義に従ってサポートする場合である。

E.1.207 #textAlign

TTMLコンテンツプロセッサーが#textAlign 機能をサポートするのは、#textAlign機能を、[TTML1]の§D.1.81の定義に従ってサポートする場合である。

注:

#textAlign機能のサポートは、次の 機能のサポートと機能的に同等である:

コンテンツプロファイルが#textAlign 機能の使用を要求または許可する一方で、次のいずれかの機能の使用を禁止することはエラーである: #textAlign-absoluteまたは #textAlign-relative。

E.1.208 #textAlign-absolute

TTMLコンテンツプロセッサーが#textAlign-absolute 機能をサポートするのは、#textAlign-absolute機能を、[TTML1]の§D.1.82の定義に従ってサポートする場合である。

E.1.209 #textAlign-justify

TTML 変換プロセッサーが #textAlign-justify機能をサポートするのは、 認識および変換が可能な対象に、justify値(tts:textAlign属性の値)が含まれる場合である。

TTML 提示プロセッサーが #textAlign-justify機能をサポートするのは、提示の意味論のサポートを、 justify値 (tts:textAlign属性の値)について実装している場合である。

E.1.210 #textAlign-relative

TTMLコンテンツプロセッサーが#textAlign-relative 機能をサポートするのは、#textAlign-relative機能を、[TTML1]の§D.1.83の定義に従ってサポートする場合である。

E.1.211 #textAlign-version-2

TTMLプロセッサーが#textAlign-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#textAlign-version-2機能は、 #textAlign機能の構文上および意味上の拡張である。

コンテンツプロファイルが #textAlign-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #textAlign、 #textAlign-absolute、 #textAlign-justify、または #textAlign-relative。

E.1.212 #textCombine

TTML 変換プロセッサーが #textCombine機能をサポートするのは、 tts:textCombine 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #textCombine機能をサポートするのは、提示の意味論のサポートを tts:textCombine属性について実装している場合である。

E.1.213 #textDecoration

TTMLコンテンツプロセッサーが#textDecoration 機能をサポートするのは、#textDecoration機能を、[TTML1]の§D.1.84の定義に従ってサポートする場合である。

注:

#textDecoration機能のサポートは、 次の機能のサポートと機能的に同等である:

コンテンツプロファイルが#textDecoration 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #textDecoration-over、 #textDecoration-through、または #textDecoration-under。

E.1.214 #textDecoration-over

TTMLコンテンツプロセッサーが#textDecoration-over 機能をサポートするのは、#textDecoration-over機能を、[TTML1]の§D.1.85の定義に従ってサポートする場合である。

E.1.215 #textDecoration-through

TTMLコンテンツプロセッサーが#textDecoration-through 機能をサポートするのは、#textDecoration-through機能を、[TTML1]の§D.1.86の定義に従ってサポートする場合である。

E.1.216 #textDecoration-under

TTMLコンテンツプロセッサーが#textDecoration-under 機能をサポートするのは、#textDecoration-under機能を、[TTML1]の§D.1.87の定義に従ってサポートする場合である。

E.1.217 #textEmphasis

TTMLプロセッサーが#textEmphasis機能をサポートするのは、 次の機能をサポートする場合である:

#textEmphasis機能は、 #textEmphasis-minimal機能の構文上および意味上の拡張である。

コンテンツプロファイルが#textEmphasis 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #textEmphasis-color、 #textEmphasis-minimal、または #textEmphasis-quoted-string。

E.1.218 #textEmphasis-color

TTML 変換プロセッサーが #textEmphasis-color機能をサポートするのは、 認識および変換が可能な値に、tts:textEmphasis 属性の値のうち、<emphasis-color>構成要素を含むものが含まれる場合である。

TTML 提示プロセッサーが #textEmphasis-color 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

E.1.219 #textEmphasis-minimal

TTML 変換プロセッサーが #textEmphasis-minimal機能をサポートするのは、 認識および変換が可能な値に、tts:textEmphasis 属性の値のうち、(1) <emphasis-color>構成要素を含まず、 (2) <emphasis-style>構成要素のうち、 <quoted-string>値の形式をとるものを含まない値が含まれる場合である。

TTML 提示プロセッサーが #textEmphasis-minimal 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

E.1.220 #textEmphasis-quoted-string

TTML 変換プロセッサーが #textEmphasis-quoted-string機能をサポートするのは、 認識および変換が可能な値に、tts:textEmphasis 属性の値のうち、<emphasis-style>構成要素を含み、その構成要素が <quoted-string>値の形式をとる値が含まれる場合である。

TTML 提示プロセッサーが #textEmphasis-quoted-string 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

E.1.221 #textOrientation

TTML 変換プロセッサーが #textOrientation機能をサポートするのは、 tts:textOrientation 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #textOrientation機能をサポートするのは、提示の意味論のサポートを tts:textOrientation 属性について実装している場合である。

E.1.222 #textOutline

TTMLコンテンツプロセッサーが#textOutline 機能をサポートするのは、#textOutline機能を、[TTML1]の§D.1.88の定義に従ってサポートする場合である。

注:

#textOutline機能のサポートは、 次の機能のサポートと機能的に同等である:

コンテンツプロファイルが#textOutline 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #textOutline-blurredまたは #textOutline-unblurred。

E.1.223 #textOutline-blurred

TTMLコンテンツプロセッサーが#textOutline-blurred 機能をサポートするのは、#textOutline-blurred機能を、[TTML1]の§D.1.89の定義に従ってサポートする場合である。

E.1.224 #textOutline-unblurred

TTMLコンテンツプロセッサーが#textOutline-unblurred 機能をサポートするのは、#textOutline-unblurred機能を、[TTML1]の§D.1.90の定義に従ってサポートする場合である。

E.1.225 #textShadow

TTML 変換プロセッサーが #textShadow機能をサポートするのは、 tts:textShadow 属性を認識し、変換できる場合である。

TTML 提示プロセッサーが #textShadow機能をサポートするのは、提示の意味論のサポートを tts:textShadow属性について実装している場合である。

E.1.226 #tickRate

TTMLコンテンツプロセッサーが#tickRate 機能をサポートするのは、#tickRate機能を、[TTML1]の§D.1.91の定義に従ってサポートする場合である。

E.1.227 #timeBase-clock

TTMLコンテンツプロセッサーが#timeBase-clock 機能をサポートするのは、#timeBase-clock機能を、[TTML1]の§D.1.92の定義に従ってサポートする場合である。

E.1.228 #timeBase-media

TTMLコンテンツプロセッサーが#timeBase-media 機能をサポートするのは、#timeBase-media機能を、[TTML1]の§D.1.93の定義に従ってサポートする場合である。

E.1.229 #timeBase-smpte

TTMLコンテンツプロセッサーが#timeBase-smpte 機能をサポートするのは、#timeBase-smpte機能を、[TTML1]の§D.1.94の定義に従ってサポートする場合である。

E.1.230 #timeContainer

TTMLコンテンツプロセッサーが#timeContainer 機能をサポートするのは、#timeContainer機能を、[TTML1]の§D.1.95の定義に従ってサポートする場合である。

E.1.231 #time-clock

TTMLコンテンツプロセッサーが#time-clock 機能をサポートするのは、#time-clock機能を、[TTML1]の§D.1.96の定義に従ってサポートする場合である。

E.1.232 #time-clock-with-frames

TTMLコンテンツプロセッサーが#time-clock-with-frames 機能をサポートするのは、#time-clock-with-frames機能を、[TTML1]の§D.1.97の定義に従ってサポートする場合である。

E.1.233 #time-offset

TTMLコンテンツプロセッサーが#time-offset 機能をサポートするのは、#time-offset機能を、[TTML1]の§D.1.98の定義に従ってサポートする場合である。

E.1.234 #time-offset-with-frames

TTMLコンテンツプロセッサーが#time-offset-with-frames 機能をサポートするのは、#time-offset-with-frames機能を、[TTML1]の§D.1.99の定義に従ってサポートする場合である。

E.1.235 #time-offset-with-ticks

TTMLコンテンツプロセッサーが#time-offset-with-ticks 機能をサポートするのは、#time-offset-with-ticks機能を、[TTML1]の§D.1.100の定義に従ってサポートする場合である。

E.1.236 #time-wall-clock

TTML 変換プロセッサーが #time-wall-clock機能をサポートするのは、 認識および変換が可能な値に、<time-expression>の値のうち、 次の時間表現構文の部分集合を満たすすべての値が含まれる場合である:

<time-expression>
  : wallclock-time

TTML 提示プロセッサーが #time-wall-clock機能をサポートするのは、提示の 意味論のサポートを、上記で指定した同じ構文について実装している場合である。

E.1.237 #timing

TTMLコンテンツプロセッサーが#timing 機能をサポートするのは、#timing機能を、[TTML1]の§D.1.101の定義に従ってサポートする場合である。

E.1.238 #transformation

TTMLコンテンツプロセッサーが#transformation 機能をサポートするのは、#transformation機能を、[TTML1]の§D.1.102の定義に従ってサポートする場合である。

E.1.239 #transformation-version-2

TTMLプロセッサーが#transformation-version-2機能をサポートするのは、 (1) 汎用プロセッサーの基準を、 3.2.1 汎用プロセッサーの適合性の定義に従って満たし、 (2) 次の機能をサポートする場合である:

#transformation-version-2機能は、 #transformation機能の構文上および意味上の拡張である。

コンテンツプロファイルが #transformation-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #transformationまたは #profile-version-2。

E.1.240 #unicodeBidi

TTMLコンテンツプロセッサーが#unicodeBidi 機能をサポートするのは、#unicodeBidi機能を、[TTML1]の§D.1.103の定義に従ってサポートする場合である。

注:

#unicodeBidi機能のサポートは、 #unicodeBidi-isolate機能のサポートを意味しない。

E.1.241 #unicodeBidi-isolate

TTML 変換プロセッサーが #unicodeBidi-isolate機能をサポートするのは、 isolate値(tts:unicodeBidi 属性の値)を認識し、変換できる場合である。

TTML 提示プロセッサーが #unicodeBidi-isolate機能をサポートするのは、提示の意味論のサポートを isolate値(tts:unicodeBidi 属性の値)について実装している場合である。

E.1.242 #unicodeBidi-version-2

TTMLコンテンツプロセッサーが#unicodeBidi-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#unicodeBidi-version-2機能は、 #unicodeBidi機能の構文上および意味上の拡張である。

E.1.243 #validation

TTML 変換プロセッサーが #validation 機能をサポートするのは、次の条件を満たす場合である:

  1. 検証コンテンツプロセッサーであること;

  2. 次に挙げる属性語彙を認識し、変換できること。この語彙は 6.2 プロファイル属性語彙で定義される:

TTML 提示プロセッサーが #validation 機能をサポートするのは、検証コンテンツ プロセッサーであり、 上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

E.1.244 #visibility

TTMLコンテンツプロセッサーが#visibility 機能をサポートするのは、#visibility機能を、[TTML1]の§D.1.104の定義に従ってサポートする場合である。

注:

#visibility機能のサポートは、 次の機能のサポートと機能的に同等である:

コンテンツプロファイルが#visibility 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #visibility-block、 #visibility-inline、または #visibility-region。

E.1.245 #visibility-block

TTMLコンテンツプロセッサーが#visibility-block 機能をサポートするのは、#visibility-block機能を、[TTML1]の§D.1.105の定義に従ってサポートする場合である。

E.1.246 #visibility-image

TTML 変換プロセッサーが #visibility-image機能をサポートするのは、定義済みのすべての値を tts:visibility属性についてサポートし、 その適用先が image要素である場合である。

TTML 提示プロセッサーが #visibility-image 機能をサポートするのは、上記に列挙した同じ語彙について提示の意味論のサポートを実装している場合である。

注:

#visibility-image機能のサポートは、 #image機能のサポートを意味しない。ただし、 後者をサポートしなければ、 前者をサポートしても意味がない。

E.1.247 #visibility-inline

TTMLコンテンツプロセッサーが#visibility-inline 機能をサポートするのは、#visibility-inline機能を、[TTML1]の§D.1.106の定義に従ってサポートする場合である。

E.1.248 #visibility-region

TTMLコンテンツプロセッサーが#visibility-region 機能をサポートするのは、#visibility-region機能を、[TTML1]の§D.1.107の定義に従ってサポートする場合である。

E.1.249 #visibility-version-2

TTMLコンテンツプロセッサーが#visibility-version-2機能をサポートするのは、 次の機能をサポートする場合である:

#visibility-version-2機能は、 #visibility機能の構文上および意味上の拡張である。

コンテンツプロファイルが #visibility-version-2機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #visibilityまたは #visibility-image。

E.1.250 #wrapOption

TTMLコンテンツプロセッサーが#wrapOption 機能をサポートするのは、#wrapOption機能を、[TTML1]の§D.1.108の定義に従ってサポートする場合である。

E.1.251 #writingMode

TTMLコンテンツプロセッサーが#writingMode 機能をサポートするのは、#writingMode機能を、[TTML1]の§D.1.109の定義に従ってサポートする場合である。

注:

#writingMode機能のサポートは、 次の機能のサポートと機能的に同等である:

コンテンツプロファイルが#writingMode 機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #writingMode-horizontalまたは #writingMode-vertical。

E.1.252 #writingMode-horizontal

TTMLコンテンツプロセッサーが#writingMode-horizontal 機能をサポートするのは、#writingMode-horizontal機能を、[TTML1]の§D.1.111の定義に従ってサポートする場合である。

注:

#writingMode-horizontal機能のサポートは、 次の機能のサポートと機能的に同等である:

コンテンツプロファイルが #writingMode-horizontal機能の使用を要求または許可する一方で、 次のいずれかの機能の使用を禁止することはエラーである: #writingMode-horizontal-lrまたは #writingMode-horizontal-rl。

E.1.253 #writingMode-horizontal-lr

TTMLコンテンツプロセッサーが#writingMode-horizontal-lr 機能をサポートするのは、#writingMode-horizontal-lr機能を、[TTML1]の§D.1.112の定義に従ってサポートする場合である。

E.1.254 #writingMode-horizontal-rl

TTMLコンテンツプロセッサーが#writingMode-horizontal-rl 機能をサポートするのは、#writingMode-horizontal-rl機能を、[TTML1]の§D.1.113の定義に従ってサポートする場合である。

E.1.255 #writingMode-vertical

TTMLコンテンツプロセッサーが#writingMode-vertical 機能をサポートするのは、#writingMode-vertical機能を、[TTML1]の§D.1.110の定義に従ってサポートする場合である。

E.1.256 #xlink

TTML 変換プロセッサーが #xlink 機能をサポートするのは、次に挙げる属性語彙を認識し、変換できる場合である。 この語彙は8.2 コンテンツ属性 語彙で定義され、この語彙を許容する、サポートされている要素型上で使用される:

TTML 提示プロセッサーが #xlink 機能をサポートするのは、提示の意味論のサポートを、 上記に列挙した同じ語彙について実装している場合である。

E.1.257 #zIndex

TTMLコンテンツプロセッサーが#zIndex 機能をサポートするのは、#zIndex機能を、[TTML1]の§D.1.114の定義に従ってサポートする場合である。

E.2 機能のサポート

次の表、表E-1 – 機能のサポートは、 定義されたすべての機能指定子(TT 機能名前空間を省略して表記)を列挙し、指定された各機能について、 (1) その機能指定子が最初に定義されたTTMLのバージョン、および (2) 指定された機能を実装しなければならないか、すなわち必須(M)であるか、または実装してもよいか、 すなわち、 任意(O)であるかを、TTML コンテンツプロセッサーに対して指定する。これは、 次の要件に適合するものを対象とする: 3.2.2 変換プロセッサーの 適合性または3.2.3 提示 プロセッサーの適合性。

注:

この仕様のこの版(または後の版)で、それまで定義されていなかった新しい機能指定子が 定義される場合でも、 その指定子が指す実際の機能自体は、以前の版ですでに定義されていることがある。 たとえば、#padding-region 指定子はここで導入されるが、これが参照する機能は、以前から #paddingという指定子の下に含まれていた。 この指定子は現在、#padding-regionを用いて定義されている。ここで、実際の意味は、 #padding(TTML1で導入)と #padding-region(TTML2で導入)で同一のままである。

表E-1 – 機能のサポート
機能指定子 バージョン 変換 提示
#animate 2 O O
#animate-fill 2 O O
#animate-minimal 2 O O
#animate-paced 2 O O
#animate-spline 2 O O
#animate-repeat 2 O O
#animation 1 O O
#animation-out-of-line 2 O O
#animation-version-2 2 O O
#audio 2 O O
#audio-description 2 O O
#audio-speech 2 O O
#background 2 O O
#background-image 2 O O
#backgroundClip 2 O O
#backgroundColor 1 O O
#backgroundColor-block 1 O O
#backgroundColor-inline 1 O O
#backgroundColor-region 1 O O
#backgroundExtent 2 O O
#backgroundImage 2 O O
#backgroundOrigin 2 O O
#backgroundPosition 2 O O
#backgroundRepeat 2 O O
#base 2 O O
#base-general 2 O O
#base-version-2 2 O O
#bidi 1 O O
#bidi-version-2 2 O O
#border 2 O O
#border-block 2 O O
#border-inline 2 O O
#border-radii 2 O O
#border-radii-1 2 O O
#border-radii-2 2 O O
#border-region 2 O O
#bpd 2 O O
#cellResolution 1 O O
#chunk 2 O O
#clockMode 1 O O
#clockMode-gps 1 O O
#clockMode-local 1 O O
#clockMode-utc 1 O O
#color 1 O O
#condition 2 O O
#condition-fn-media 2 O O
#condition-fn-parameter 2 O O
#condition-fn-supports 2 O O
#condition-primary 2 O O
#content 1 M M
#content-sizing 2 O O
#contentProfiles 2 M M
#contentProfiles-combined 2 O O
#core 1 M M
#data 2 O O
#direction 1 O O
#disparity 2 O O
#display 1 O O
#display-block 1 O O
#display-inline 1 O O
#display-inlineBlock 2 O O
#display-region 1 O O
#display-version-2 2 O O
#displayAlign 1 O O
#displayAlign-block 2 O O
#displayAlign-justify 2 O O
#displayAlign-region 2 O O
#displayAlign-relative 2 O O
#displayAlign-version-2 2 O O
#displayAspectRatio 2 O O
#dropMode 1 O O
#dropMode-dropNTSC 1 O O
#dropMode-dropPAL 1 O O
#dropMode-nonDrop 1 O O
#embedded-audio 2 O O
#embedded-content 2 O O
#embedded-data 2 O O
#embedded-font 2 O O
#embedded-image 2 O O
#extent 1 O O
#extent-auto 2 O O
#extent-auto-version-2 2 O O
#extent-contain 2 O O
#extent-cover 2 O O
#extent-full-version-2 2 O O
#extent-image 2 O O
#extent-length 2 O O
#extent-length-version-2 2 O O
#extent-measure 2 O O
#extent-region 1 O O
#extent-region-version-2 2 O O
#extent-root 1 O O
#extent-root-version-2 2 O O
#extent-version-2 2 O O
#font 2 O O
#fontFamily 1 O O
#fontFamily-generic 1 O O
#fontFamily-non-generic 1 O O
#fontKerning 2 O O
#fontSelectionStrategy 2 O O
#fontSelectionStrategy-character 2 O O
#fontShear 2 O O
#fontSize 1 O O
#fontSize-anamorphic 1 O O
#fontSize-isomorphic 1 O O
#fontStyle 1 O O
#fontStyle-italic 1 O O
#fontStyle-oblique 1 O O
#fontVariant 2 O O
#fontWeight 1 O O
#fontWeight-bold 1 O O
#frameRate 1 O O
#frameRateMultiplier 1 O O
#gain 2 O O
#image 2 O O
#image-png 2 O O
#initial 2 O O
#ipd 2 O O
#layout 1 O O
#length 1 O O
#length-cell 1 O O
#length-em 1 O O
#length-integer 1 O O
#length-negative 1 O O
#length-percentage 1 O O
#length-pixel 1 O O
#length-positive 1 O O
#length-real 1 O O
#length-real-version-2 2 O O
#length-root-container-relative 2 O O
#length-version-2 2 O O
#letterSpacing 2 O O
#lineBreak-uax14 1 O O
#lineHeight 1 O O
#lineShear 2 O O
#luminanceGain 2 O O
#markerMode 1 O O
#markerMode-continuous 1 O O
#markerMode-discontinuous 1 O O
#metadata 1 O O
#metadata-item 2 O O
#metadata-version-2 2 O O
#nested-div 1 O O
#nested-span 1 O O
#opacity 1 O O
#opacity-block 2 O O
#opacity-image 2 O O
#opacity-inline 2 O O
#opacity-region 2 O O
#opacity-version-2 2 O O
#origin 1 O O
#overflow 1 O O
#overflow-visible 1 O O
#padding 1 O O
#padding-1 1 O O
#padding-2 1 O O
#padding-3 1 O O
#padding-4 1 O O
#padding-block 2 O O
#padding-inline 2 O O
#padding-region 2 O O
#padding-version-2 2 O O
#pan 2 O O
#permitFeatureNarrowing 2 O O
#permitFeatureWidening 2 O O
#pitch 2 O O
#pixelAspectRatio 1 O O
#position 2 O O
#presentation 1 O M
#presentation-audio 2 O O
#presentation-version-2 2 O M
#processorProfiles 2 M M
#processorProfiles-combined 2 O O
#profile 1 M M
#profile-full-version-2 2 O O
#profile-nesting 2 O O
#profile-version-2 2 M M
#region-implied-animation 2 O O
#region-inline 2 O O
#region-timing 2 O O
#resources 2 O O
#ruby 2 O O
#ruby-full 2 O O
#rubyAlign 2 O O
#rubyAlign-minimal 2 O O
#rubyAlign-withBase 2 O O
#rubyPosition 2 O O
#rubyReserve 2 O O
#set 2 O O
#set-fill 2 O O
#set-multiple-styles 2 O O
#set-repeat 2 O O
#shear 2 O O
#showBackground 1 O O
#source 2 O O
#speak 2 O O
#speech 2 O O
#structure 1 M M
#styling 1 O O
#styling-chained 1 O O
#styling-inheritance-content 1 O O
#styling-inheritance-region 1 O O
#styling-inline 1 O O
#styling-nested 1 O O
#styling-referential 1 O O
#subFrameRate 1 O O
#textAlign 1 O O
#textAlign-absolute 1 O O
#textAlign-justify 2 O O
#textAlign-relative 1 O O
#textAlign-version-2 2 O O
#textCombine 2 O O
#textDecoration 1 O O
#textDecoration-over 1 O O
#textDecoration-through 1 O O
#textDecoration-under 1 O O
#textEmphasis 2 O O
#textEmphasis-color 2 O O
#textEmphasis-minimal 2 O O
#textEmphasis-quoted-string 2 O O
#textOrientation 2 O O
#textOutline 1 O O
#textOutline-blurred 1 O O
#textOutline-unblurred 1 O O
#textShadow 2 O O
#tickRate 1 O O
#timeBase-clock 1 O O
#timeBase-media 1 O O
#timeBase-smpte 1 O O
#timeContainer 1 O O
#time-clock 1 O O
#time-clock-with-frames 1 O O
#time-offset 1 M M
#time-offset-with-frames 1 O O
#time-offset-with-ticks 1 O O
#time-wall-clock 2 O O
#timing 1 M M
#transformation 1 M O
#transformation-version-2 2 M O
#unicodeBidi 1 O O
#unicodeBidi-isolate 2 O O
#unicodeBidi-version-2 2 O O
#validation 2 O O
#visibility 1 O O
#visibility-block 1 O O
#visibility-image 2 O O
#visibility-inline 1 O O
#visibility-region 1 O O
#visibility-version-2 2 O O
#wrapOption 1 O O
#writingMode 1 O O
#writingMode-horizontal 1 O O
#writingMode-horizontal-lr 1 O O
#writingMode-horizontal-rl 1 O O
#writingMode-vertical 1 O O
#xlink 2 O O
#zIndex 1 O O

便宜上、次の表、 表E-2 – 必須機能 - 変換は、 TTML コンテンツプロセッサーに必須のすべての機能を列挙する。対象となるのは、 次の要件に適合するものである: 3.2.2 変換プロセッサーの 適合性。また、各機能について、 使用の状況や性質を要約する補足説明を示す。 プロファイル定義文書のうち、 対応する TTML変換プロファイルを定義するものは、 G.3 TTML2変換プロファイルで規定される。

表E-2 – 必須機能 - 変換
機能指定子 説明
#content body, div, p, span, br
#contentProfiles
#core xml:id, xml:lang, xml:space
#processorProfiles
#profile
#profile-version-2
#structure tt, head
#time-offset
#timing begin, dur, end
#transformation
#transformation-version-2

便宜上、次の表、 表E-3 – 必須機能 - 提示は、 TTML コンテンツプロセッサーに必須のすべての機能を列挙する。対象となるのは、 次の要件に適合するものである: 3.2.3 提示プロセッサーの適合性。 また、各機能について、 使用の状況や性質を要約する補足説明を示す。 プロファイル定義文書のうち、 対応する TTML提示プロファイルを定義するものは、 G.2 TTML2提示プロファイルで規定される。

表E-3 – 必須機能 - 提示
機能指定子 説明
#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

F 拡張

この付録は規範的である。

この付録は、拡張指定子の構文形式を規定する。拡張指定子は、 TTMLプロセッサーによる拡張機構のサポートに関する 著者の意図を表現するために使用される。

F.1 拡張指定子

拡張指定子は、次の形式に従う文字列として 表現される:

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.0] Production [4a]

拡張指定子の拡張名前空間がTT 拡張名前空間である場合、その後に続く designationトークンのすべての値は、将来の 標準化のために予約される。

拡張指定子の拡張名前空間が TT拡張名前空間ではない場合、すなわちその他の拡張名前空間である場合、 その拡張名前空間は、絶対URIとして表現されなければならず、 そのURIは、次のトークンと組み合わせて使用する基底URIとして機能できなければならない: designationトークン。このトークンはフラグメント 識別子の形式をとる。

G 標準プロファイル

この付録は規範的である。

この付録は、次の標準TTMLプロファイルを規定するか、参照によって取り込む:

各TTMLプロファイルは、プロファイル 定義文書によって定義される。 これはXML文書として表現され、そのルート要素は 6.1.1 ttp:profileに従う。

G.1 TTML2完全プロファイル

TTML2完全プロファイルは、 変換処理と提示処理の両方について最大限の適合を表現するために使用されることを意図している。

注:

このプロファイルは、DFXP完全プロファイルの上位集合である。

<?xml version="1.0" encoding="utf-8"?>
<!-- このファイルは、ttmlの"ttml2-full"プロファイルを定義する -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-full">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- 要求される(必須の)機能のサポート -->
    <feature value="required" extends="#animate-minimal">#animate</feature>
    <feature value="required">#animate-fill</feature>
    <feature value="required">#animate-minimal</feature>
    <feature value="required">#animate-paced</feature>
    <feature value="required">#animate-spline</feature>
    <feature value="required">#animate-repeat</feature>
    <feature value="required">#animation</feature>
    <feature value="required">#animation-out-of-line</feature>
    <feature value="required" extends="#animation">#animation-version-2</feature>
    <feature value="required">#audio</feature>
    <feature value="required">#audio-description</feature>
    <feature value="required">#audio-speech</feature>
    <feature value="required">#background</feature>
    <feature value="required">#background-image</feature>
    <feature value="required">#backgroundClip</feature>
    <feature value="required">#backgroundColor-block</feature>
    <feature value="required">#backgroundColor-inline</feature>
    <feature value="required">#backgroundColor-region</feature>
    <feature value="required">#backgroundColor</feature>
    <feature value="required">#backgroundExtent</feature>
    <feature value="required">#backgroundImage</feature>
    <feature value="required">#backgroundOrigin</feature>
    <feature value="required">#backgroundPosition</feature>
    <feature value="required">#backgroundRepeat</feature>
    <feature value="required">#base</feature>
    <feature value="required">#base-general</feature>
    <feature value="required" extends="#base">#base-version-2</feature>
    <feature value="required">#bidi</feature>
    <feature value="required" extends="#bidi">#bidi-version-2</feature>
    <feature value="required">#border</feature>
    <feature value="required">#border-block</feature>
    <feature value="required">#border-inline</feature>
    <feature value="required">#border-radii</feature>
    <feature value="required">#border-radii-1</feature>
    <feature value="required">#border-radii-2</feature>
    <feature value="required">#border-region</feature>
    <feature value="required">#bpd</feature>
    <feature value="required">#cellResolution</feature>
    <feature value="required">#chunk</feature>
    <feature value="required">#clockMode</feature>
    <feature value="required">#clockMode-gps</feature>
    <feature value="required">#clockMode-local</feature>
    <feature value="required">#clockMode-utc</feature>
    <feature value="required">#color</feature>
    <feature value="required">#condition</feature>
    <feature value="required">#condition-fn-media</feature>
    <feature value="required">#condition-fn-parameter</feature>
    <feature value="required">#condition-fn-supports</feature>
    <feature value="required">#condition-primary</feature>
    <feature value="required">#content</feature>
    <feature value="required">#content-sizing</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="required">#core</feature>
    <feature value="required">#data</feature>
    <feature value="required">#direction</feature>
    <feature value="required">#disparity</feature>
    <feature value="required">#display</feature>
    <feature value="required">#display-block</feature>
    <feature value="required">#display-inline</feature>
    <feature value="required">#display-inlineBlock</feature>
    <feature value="required">#display-region</feature>
    <feature value="required" extends="#display">#display-version-2</feature>
    <feature value="required">#displayAlign</feature>
    <feature value="required">#displayAlign-block</feature>
    <feature value="required">#displayAlign-justify</feature>
    <feature value="required">#displayAlign-region</feature>
    <feature value="required">#displayAlign-relative</feature>
    <feature value="required" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="required">#displayAspectRatio</feature>
    <feature value="required">#dropMode</feature>
    <feature value="required">#dropMode-dropNTSC</feature>
    <feature value="required">#dropMode-dropPAL</feature>
    <feature value="required">#dropMode-nonDrop</feature>
    <feature value="required">#embedded-audio</feature>
    <feature value="required">#embedded-content</feature>
    <feature value="required">#embedded-data</feature>
    <feature value="required">#embedded-font</feature>
    <feature value="required">#embedded-image</feature>
    <feature value="required">#extent</feature>
    <feature value="required">#extent-auto</feature>
    <feature value="required" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="required">#extent-contain</feature>
    <feature value="required">#extent-cover</feature>
    <feature value="required" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="required">#extent-image</feature>
    <feature value="required">#extent-length</feature>
    <feature value="required" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="required">#extent-measure</feature>
    <feature value="required">#extent-region</feature>
    <feature value="required" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="required">#extent-root</feature>
    <feature value="required" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="required" extends="#extent">#extent-version-2</feature>
    <feature value="required">#font</feature>
    <feature value="required">#fontFamily</feature>
    <feature value="required">#fontFamily-generic</feature>
    <feature value="required">#fontFamily-non-generic</feature>
    <feature value="required">#fontKerning</feature>
    <feature value="required">#fontSelectionStrategy</feature>
    <feature value="required">#fontSelectionStrategy-character</feature>
    <feature value="required">#fontShear</feature>
    <feature value="required">#fontSize</feature>
    <feature value="required">#fontSize-anamorphic</feature>
    <feature value="required">#fontSize-isomorphic</feature>
    <feature value="required">#fontStyle</feature>
    <feature value="required">#fontStyle-italic</feature>
    <feature value="required">#fontStyle-oblique</feature>
    <feature value="required">#fontVariant</feature>
    <feature value="required">#fontWeight</feature>
    <feature value="required">#fontWeight-bold</feature>
    <feature value="required">#frameRate</feature>
    <feature value="required">#frameRateMultiplier</feature>
    <feature value="required">#gain</feature>
    <feature value="required">#image</feature>
    <feature value="required">#image-png</feature>
    <feature value="required">#initial</feature>
    <feature value="required">#ipd</feature>
    <feature value="required">#layout</feature>
    <feature value="required">#length</feature>
    <feature value="required">#length-cell</feature>
    <feature value="required">#length-em</feature>
    <feature value="required">#length-integer</feature>
    <feature value="required">#length-negative</feature>
    <feature value="required">#length-percentage</feature>
    <feature value="required">#length-pixel</feature>
    <feature value="required">#length-positive</feature>
    <feature value="required">#length-real</feature>
    <feature value="required" extends="#length-real">#length-real-version-2</feature>
    <feature value="required">#length-root-container-relative</feature>
    <feature value="required" extends="#length">#length-version-2</feature>
    <feature value="required">#letterSpacing</feature>
    <feature value="required">#lineBreak-uax14</feature>
    <feature value="required">#lineHeight</feature>
    <feature value="required">#lineShear</feature>
    <feature value="required">#luminance</feature>
    <feature value="required">#markerMode</feature>
    <feature value="required">#markerMode-continuous</feature>
    <feature value="required">#markerMode-discontinuous</feature>
    <feature value="required">#metadata</feature>
    <feature value="required">#metadata-item</feature>
    <feature value="required" extends="#metadata">#metadata-version-2</feature>
    <feature value="required">#nested-div</feature>
    <feature value="required">#nested-span</feature>
    <feature value="required">#opacity</feature>
    <feature value="required">#opacity-block</feature>
    <feature value="required">#opacity-image</feature>
    <feature value="required">#opacity-inline</feature>
    <feature value="required">#opacity-region</feature>
    <feature value="required" extends="#opacity">#opacity-version-2</feature>
    <feature value="required">#origin</feature>
    <feature value="required">#overflow</feature>
    <feature value="required">#overflow-visible</feature>
    <feature value="required">#padding</feature>
    <feature value="required">#padding-1</feature>
    <feature value="required">#padding-2</feature>
    <feature value="required">#padding-3</feature>
    <feature value="required">#padding-4</feature>
    <feature value="required">#padding-block</feature>
    <feature value="required">#padding-inline</feature>
    <feature value="required">#padding-region</feature>
    <feature value="required" extends="#padding">#padding-version-2</feature>
    <feature value="required">#pan</feature>
    <feature value="required">#permitFeatureNarrowing</feature>
    <feature value="required">#permitFeatureWidening</feature>
    <feature value="required">#pitch</feature>
    <feature value="required">#pixelAspectRatio</feature>
    <feature value="required">#position</feature>
    <feature value="required">#presentation</feature>
    <feature value="required">#presentation-audio</feature>
    <feature value="required" extends="#presentation">#presentation-version-2</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="required">#profile-nesting</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#region-implied-animation</feature>
    <feature value="required">#region-inline</feature>
    <feature value="required">#region-timing</feature>
    <feature value="required">#resources</feature>
    <feature value="required">#ruby</feature>
    <feature value="required">#ruby-full</feature>
    <feature value="required">#rubyAlign</feature>
    <feature value="required">#rubyAlign-minimal</feature>
    <feature value="required">#rubyAlign-withBase</feature>
    <feature value="required">#rubyPosition</feature>
    <feature value="required">#rubyReserve</feature>
    <feature value="required" extends="#animation">#set</feature>
    <feature value="required">#set-fill</feature>
    <feature value="required">#set-multiple-styles</feature>
    <feature value="required">#set-repeat</feature>
    <feature value="required">#shear</feature>
    <feature value="required">#showBackground</feature>
    <feature value="required">#source</feature>
    <feature value="required">#speak</feature>
    <feature value="required">#speech</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#styling</feature>
    <feature value="required">#styling-chained</feature>
    <feature value="required">#styling-inheritance-content</feature>
    <feature value="required">#styling-inheritance-region</feature>
    <feature value="required">#styling-inline</feature>
    <feature value="required">#styling-nested</feature>
    <feature value="required">#styling-referential</feature>
    <feature value="required">#subFrameRate</feature>
    <feature value="required">#textAlign</feature>
    <feature value="required">#textAlign-absolute</feature>
    <feature value="required">#textAlign-justify</feature>
    <feature value="required">#textAlign-relative</feature>
    <feature value="required" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="required">#textCombine</feature>
    <feature value="required">#textDecoration</feature>
    <feature value="required">#textDecoration-over</feature>
    <feature value="required">#textDecoration-through</feature>
    <feature value="required">#textDecoration-under</feature>
    <feature value="required" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="required">#textEmphasis-color</feature>
    <feature value="required">#textEmphasis-minimal</feature>
    <feature value="required">#textEmphasis-quoted-string</feature>
    <feature value="required">#textOrientation</feature>
    <feature value="required">#textOutline</feature>
    <feature value="required">#textOutline-blurred</feature>
    <feature value="required">#textOutline-unblurred</feature>
    <feature value="required">#textShadow</feature>
    <feature value="required">#tickRate</feature>
    <feature value="required">#time-clock-with-frames</feature>
    <feature value="required">#time-clock</feature>
    <feature value="required">#time-offset-with-frames</feature>
    <feature value="required">#time-offset-with-ticks</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#time-wall-clock</feature>
    <feature value="required">#timeBase-clock</feature>
    <feature value="required">#timeBase-media</feature>
    <feature value="required">#timeBase-smpte</feature>
    <feature value="required">#timeContainer</feature>
    <feature value="required">#timing</feature>
    <feature value="required">#transformation</feature>
    <feature value="required" extends="#transformation">#transformation-version-2</feature>
    <feature value="required">#unicodeBidi</feature>
    <feature value="required">#unicodeBidi-isolate</feature>
    <feature value="required" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="required">#validation</feature>
    <feature value="required">#visibility</feature>
    <feature value="required">#visibility-block</feature>
    <feature value="required">#visibility-image</feature>
    <feature value="required">#visibility-inline</feature>
    <feature value="required">#visibility-region</feature>
    <feature value="required" extends="#visibility">#visibility-version-2</feature>
    <feature value="required">#wrapOption</feature>
    <feature value="required">#writingMode</feature>
    <feature value="required">#writingMode-horizontal-lr</feature>
    <feature value="required">#writingMode-horizontal-rl</feature>
    <feature value="required">#writingMode-horizontal</feature>
    <feature value="required">#writingMode-vertical</feature>
    <feature value="required">#xlink</feature>
    <feature value="required">#zIndex</feature>
    <!-- 任意の(自発的な)機能のサポート -->
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- 要求される(必須の)拡張のサポート -->
    <!-- 任意の(自発的な)拡張のサポート -->
  </extensions>
</profile>

G.2 TTML2提示プロファイル

TTML2提示プロファイルは、 提示処理について最低限の適合を表現するために使用されることを意図している。

注:

このプロファイルは、DFXP提示 プロファイルの上位集合である。

<?xml version="1.0" encoding="utf-8"?>
<!-- このファイルは、ttmlの"ttml2-presentation"プロファイルを定義する -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-presentation">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- 要求される(必須の)機能のサポート -->
    <feature value="required">#content</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required">#core</feature>
    <feature value="required">#presentation</feature>
    <feature value="required" extends="#presentation">#presentation-version-2</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#timing</feature>
    <!-- 任意の(自発的な)機能のサポート -->
    <feature value="optional">#animate</feature>
    <feature value="optional">#animate-fill</feature>
    <feature value="optional">#animate-minimal</feature>
    <feature value="optional">#animate-paced</feature>
    <feature value="optional">#animate-spline</feature>
    <feature value="optional">#animate-repeat</feature>
    <feature value="optional">#animation</feature>
    <feature value="optional">#animation-out-of-line</feature>
    <feature value="optional" extends="#animation">#animation-version-2</feature>
    <feature value="optional">#audio</feature>
    <feature value="optional">#audio-description</feature>
    <feature value="optional">#audio-speech</feature>
    <feature value="optional">#background</feature>
    <feature value="optional">#background-image</feature>
    <feature value="optional">#backgroundClip</feature>
    <feature value="optional">#backgroundColor-block</feature>
    <feature value="optional">#backgroundColor-inline</feature>
    <feature value="optional">#backgroundColor-region</feature>
    <feature value="optional">#backgroundColor</feature>
    <feature value="optional">#backgroundExtent</feature>
    <feature value="optional">#backgroundImage</feature>
    <feature value="optional">#backgroundOrigin</feature>
    <feature value="optional">#backgroundPosition</feature>
    <feature value="optional">#backgroundRepeat</feature>
    <feature value="optional">#base</feature>
    <feature value="optional">#base-general</feature>
    <feature value="optional" extends="#base">#base-version-2</feature>
    <feature value="optional">#bidi</feature>
    <feature value="optional" extends="#bidi">#bidi-version-2</feature>
    <feature value="optional">#border</feature>
    <feature value="optional">#border-block</feature>
    <feature value="optional">#border-inline</feature>
    <feature value="optional">#border-radii</feature>
    <feature value="optional">#border-radii-1</feature>
    <feature value="optional">#border-radii-2</feature>
    <feature value="optional">#border-region</feature>
    <feature value="optional">#bpd</feature>
    <feature value="optional">#cellResolution</feature>
    <feature value="optional">#chunk</feature>
    <feature value="optional">#clockMode</feature>
    <feature value="optional">#clockMode-gps</feature>
    <feature value="optional">#clockMode-local</feature>
    <feature value="optional">#clockMode-utc</feature>
    <feature value="optional">#color</feature>
    <feature value="optional">#condition</feature>
    <feature value="optional">#condition-fn-media</feature>
    <feature value="optional">#condition-fn-parameter</feature>
    <feature value="optional">#condition-fn-supports</feature>
    <feature value="optional">#condition-primary</feature>
    <feature value="optional">#content-sizing</feature>
    <feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="optional">#data</feature>
    <feature value="optional">#direction</feature>
    <feature value="optional">#disparity</feature>
    <feature value="optional">#display</feature>
    <feature value="optional">#display-block</feature>
    <feature value="optional">#display-inline</feature>
    <feature value="optional">#display-inlineBlock</feature>
    <feature value="optional">#display-region</feature>
    <feature value="optional" extends="#display">#display-version-2</feature>
    <feature value="optional">#displayAlign</feature>
    <feature value="optional">#displayAlign-block</feature>
    <feature value="optional">#displayAlign-justify</feature>
    <feature value="optional">#displayAlign-region</feature>
    <feature value="optional">#displayAlign-relative</feature>
    <feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="optional">#displayAspectRatio</feature>
    <feature value="optional">#dropMode</feature>
    <feature value="optional">#dropMode-dropNTSC</feature>
    <feature value="optional">#dropMode-dropPAL</feature>
    <feature value="optional">#dropMode-nonDrop</feature>
    <feature value="optional">#embedded-audio</feature>
    <feature value="optional">#embedded-content</feature>
    <feature value="optional">#embedded-data</feature>
    <feature value="optional">#embedded-font</feature>
    <feature value="optional">#embedded-image</feature>
    <feature value="optional">#extent</feature>
    <feature value="optional">#extent-auto</feature>
    <feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="optional">#extent-contain</feature>
    <feature value="optional">#extent-cover</feature>
    <feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="optional">#extent-image</feature>
    <feature value="optional">#extent-length</feature>
    <feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="optional">#extent-measure</feature>
    <feature value="optional">#extent-region</feature>
    <feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="optional">#extent-root</feature>
    <feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="optional" extends="#extent">#extent-version-2</feature>
    <feature value="optional">#font</feature>
    <feature value="optional">#fontFamily</feature>
    <feature value="optional">#fontFamily-generic</feature>
    <feature value="optional">#fontFamily-non-generic</feature>
    <feature value="optional">#fontKerning</feature>
    <feature value="optional">#fontSelectionStrategy</feature>
    <feature value="optional">#fontSelectionStrategy-character</feature>
    <feature value="optional">#fontShear</feature>
    <feature value="optional">#fontSize</feature>
    <feature value="optional">#fontSize-anamorphic</feature>
    <feature value="optional">#fontSize-isomorphic</feature>
    <feature value="optional">#fontStyle</feature>
    <feature value="optional">#fontStyle-italic</feature>
    <feature value="optional">#fontStyle-oblique</feature>
    <feature value="optional">#fontVariant</feature>
    <feature value="optional">#fontWeight</feature>
    <feature value="optional">#fontWeight-bold</feature>
    <feature value="optional">#frameRate</feature>
    <feature value="optional">#frameRateMultiplier</feature>
    <feature value="optional">#gain</feature>
    <feature value="optional">#image</feature>
    <feature value="optional">#image-png</feature>
    <feature value="optional">#initial</feature>
    <feature value="optional">#ipd</feature>
    <feature value="optional">#layout</feature>
    <feature value="optional">#length</feature>
    <feature value="optional">#length-cell</feature>
    <feature value="optional">#length-em</feature>
    <feature value="optional">#length-integer</feature>
    <feature value="optional">#length-negative</feature>
    <feature value="optional">#length-percentage</feature>
    <feature value="optional">#length-pixel</feature>
    <feature value="optional">#length-positive</feature>
    <feature value="optional">#length-real</feature>
    <feature value="optional" extends="#length-real">#length-real-version-2</feature>
    <feature value="optional">#length-root-container-relative</feature>
    <feature value="optional" extends="#length">#length-version-2</feature>
    <feature value="optional">#letterSpacing</feature>
    <feature value="optional">#lineBreak-uax14</feature>
    <feature value="optional">#lineHeight</feature>
    <feature value="optional">#lineShear</feature>
    <feature value="optional">#luminance</feature>
    <feature value="optional">#markerMode</feature>
    <feature value="optional">#markerMode-continuous</feature>
    <feature value="optional">#markerMode-discontinuous</feature>
    <feature value="optional">#metadata</feature>
    <feature value="optional">#metadata-item</feature>
    <feature value="optional" extends="#metadata">#metadata-version-2</feature>
    <feature value="optional">#nested-div</feature>
    <feature value="optional">#nested-span</feature>
    <feature value="optional">#opacity</feature>
    <feature value="optional">#opacity-block</feature>
    <feature value="optional">#opacity-image</feature>
    <feature value="optional">#opacity-inline</feature>
    <feature value="optional">#opacity-region</feature>
    <feature value="optional" extends="#opacity">#opacity-version-2</feature>
    <feature value="optional">#origin</feature>
    <feature value="optional">#overflow</feature>
    <feature value="optional">#overflow-visible</feature>
    <feature value="optional">#padding</feature>
    <feature value="optional">#padding-1</feature>
    <feature value="optional">#padding-2</feature>
    <feature value="optional">#padding-3</feature>
    <feature value="optional">#padding-4</feature>
    <feature value="optional">#padding-block</feature>
    <feature value="optional">#padding-inline</feature>
    <feature value="optional">#padding-region</feature>
    <feature value="optional" extends="#padding">#padding-version-2</feature>
    <feature value="optional">#pan</feature>
    <feature value="optional">#permitFeatureNarrowing</feature>
    <feature value="optional">#permitFeatureWidening</feature>
    <feature value="optional">#pitch</feature>
    <feature value="optional">#pixelAspectRatio</feature>
    <feature value="optional">#position</feature>
    <feature value="optional">#presentation-audio</feature>
    <feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="optional">#profile-nesting</feature>
    <feature value="optional">#region-implied-animation</feature>
    <feature value="optional">#region-inline</feature>
    <feature value="optional">#region-timing</feature>
    <feature value="optional">#resources</feature>
    <feature value="optional">#ruby</feature>
    <feature value="optional">#ruby-full</feature>
    <feature value="optional">#rubyAlign</feature>
    <feature value="optional">#rubyAlign-minimal</feature>
    <feature value="optional">#rubyAlign-withBase</feature>
    <feature value="optional">#rubyPosition</feature>
    <feature value="optional">#rubyReserve</feature>
    <feature value="optional" extends="#animation">#set</feature>
    <feature value="optional">#set-fill</feature>
    <feature value="optional">#set-multiple-styles</feature>
    <feature value="optional">#set-repeat</feature>
    <feature value="optional">#shear</feature>
    <feature value="optional">#showBackground</feature>
    <feature value="optional">#source</feature>
    <feature value="optional">#speak</feature>
    <feature value="optional">#speech</feature>
    <feature value="optional">#styling</feature>
    <feature value="optional">#styling-chained</feature>
    <feature value="optional">#styling-inheritance-content</feature>
    <feature value="optional">#styling-inheritance-region</feature>
    <feature value="optional">#styling-inline</feature>
    <feature value="optional">#styling-nested</feature>
    <feature value="optional">#styling-referential</feature>
    <feature value="optional">#subFrameRate</feature>
    <feature value="optional">#textAlign</feature>
    <feature value="optional">#textAlign-absolute</feature>
    <feature value="optional">#textAlign-justify</feature>
    <feature value="optional">#textAlign-relative</feature>
    <feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="optional">#textCombine</feature>
    <feature value="optional">#textDecoration</feature>
    <feature value="optional">#textDecoration-over</feature>
    <feature value="optional">#textDecoration-through</feature>
    <feature value="optional">#textDecoration-under</feature>
    <feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="optional">#textEmphasis-color</feature>
    <feature value="optional">#textEmphasis-minimal</feature>
    <feature value="optional">#textEmphasis-quoted-string</feature>
    <feature value="optional">#textOrientation</feature>
    <feature value="optional">#textOutline</feature>
    <feature value="optional">#textOutline-blurred</feature>
    <feature value="optional">#textOutline-unblurred</feature>
    <feature value="optional">#textShadow</feature>
    <feature value="optional">#tickRate</feature>
    <feature value="optional">#time-clock-with-frames</feature>
    <feature value="optional">#time-clock</feature>
    <feature value="optional">#time-offset-with-frames</feature>
    <feature value="optional">#time-offset-with-ticks</feature>
    <feature value="optional">#time-wall-clock</feature>
    <feature value="optional">#timeBase-clock</feature>
    <feature value="optional">#timeBase-media</feature>
    <feature value="optional">#timeBase-smpte</feature>
    <feature value="optional">#timeContainer</feature>
    <feature value="optional">#transformation</feature>
    <feature value="optional" extends="#transformation">#transformation-version-2</feature>
    <feature value="optional">#unicodeBidi</feature>
    <feature value="optional">#unicodeBidi-isolate</feature>
    <feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="optional">#validation</feature>
    <feature value="optional">#visibility</feature>
    <feature value="optional">#visibility-block</feature>
    <feature value="optional">#visibility-image</feature>
    <feature value="optional">#visibility-inline</feature>
    <feature value="optional">#visibility-region</feature>
    <feature value="optional" extends="#visibility">#visibility-version-2</feature>
    <feature value="optional">#wrapOption</feature>
    <feature value="optional">#writingMode</feature>
    <feature value="optional">#writingMode-horizontal-lr</feature>
    <feature value="optional">#writingMode-horizontal-rl</feature>
    <feature value="optional">#writingMode-horizontal</feature>
    <feature value="optional">#writingMode-vertical</feature>
    <feature value="optional">#xlink</feature>
    <feature value="optional">#zIndex</feature>
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- 要求される(必須の)拡張のサポート -->
    <!-- 任意の(自発的な)拡張のサポート -->
  </extensions>
</profile>

G.3 TTML2変換プロファイル

TTML2変換プロファイルは、 変換処理について最低限の適合を表現するために使用されることを意図している。

注:

このプロファイルは、DFXP変換 プロファイルの上位集合である。

<?xml version="1.0" encoding="utf-8"?>
<!-- このファイルは、ttmlの"ttml2-transformation"プロファイルを定義する -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- 要求される(必須の)機能のサポート -->
    <feature value="required">#content</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required">#core</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#timing</feature>
    <feature value="required">#transformation</feature>
    <feature value="required" extends="#transformation">#transformation-version-2</feature>
    <!-- 任意の(自発的な)機能のサポート -->
    <feature value="optional">#animate</feature>
    <feature value="optional">#animate-fill</feature>
    <feature value="optional">#animate-minimal</feature>
    <feature value="optional">#animate-paced</feature>
    <feature value="optional">#animate-spline</feature>
    <feature value="optional">#animate-repeat</feature>
    <feature value="optional">#animation</feature>
    <feature value="optional">#animation-out-of-line</feature>
    <feature value="optional" extends="#animation">#animation-version-2</feature>
    <feature value="optional">#audio</feature>
    <feature value="optional">#audio-description</feature>
    <feature value="optional">#audio-speech</feature>
    <feature value="optional">#background</feature>
    <feature value="optional">#background-image</feature>
    <feature value="optional">#backgroundClip</feature>
    <feature value="optional">#backgroundColor-block</feature>
    <feature value="optional">#backgroundColor-inline</feature>
    <feature value="optional">#backgroundColor-region</feature>
    <feature value="optional">#backgroundColor</feature>
    <feature value="optional">#backgroundExtent</feature>
    <feature value="optional">#backgroundImage</feature>
    <feature value="optional">#backgroundOrigin</feature>
    <feature value="optional">#backgroundPosition</feature>
    <feature value="optional">#backgroundRepeat</feature>
    <feature value="optional">#base</feature>
    <feature value="optional">#base-general</feature>
    <feature value="optional" extends="#base">#base-version-2</feature>
    <feature value="optional">#bidi</feature>
    <feature value="optional" extends="#bidi">#bidi-version-2</feature>
    <feature value="optional">#border</feature>
    <feature value="optional">#border-block</feature>
    <feature value="optional">#border-inline</feature>
    <feature value="optional">#border-radii</feature>
    <feature value="optional">#border-radii-1</feature>
    <feature value="optional">#border-radii-2</feature>
    <feature value="optional">#border-region</feature>
    <feature value="optional">#bpd</feature>
    <feature value="optional">#cellResolution</feature>
    <feature value="optional">#chunk</feature>
    <feature value="optional">#clockMode</feature>
    <feature value="optional">#clockMode-gps</feature>
    <feature value="optional">#clockMode-local</feature>
    <feature value="optional">#clockMode-utc</feature>
    <feature value="optional">#color</feature>
    <feature value="optional">#condition</feature>
    <feature value="optional">#condition-fn-media</feature>
    <feature value="optional">#condition-fn-parameter</feature>
    <feature value="optional">#condition-fn-supports</feature>
    <feature value="optional">#condition-primary</feature>
    <feature value="optional">#content-sizing</feature>
    <feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="optional">#data</feature>
    <feature value="optional">#direction</feature>
    <feature value="optional">#disparity</feature>
    <feature value="optional">#display</feature>
    <feature value="optional">#display-block</feature>
    <feature value="optional">#display-inline</feature>
    <feature value="optional">#display-inlineBlock</feature>
    <feature value="optional">#display-region</feature>
    <feature value="optional" extends="#display">#display-version-2</feature>
    <feature value="optional">#displayAlign</feature>
    <feature value="optional">#displayAlign-block</feature>
    <feature value="optional">#displayAlign-justify</feature>
    <feature value="optional">#displayAlign-region</feature>
    <feature value="optional">#displayAlign-relative</feature>
    <feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="optional">#displayAspectRatio</feature>
    <feature value="optional">#dropMode</feature>
    <feature value="optional">#dropMode-dropNTSC</feature>
    <feature value="optional">#dropMode-dropPAL</feature>
    <feature value="optional">#dropMode-nonDrop</feature>
    <feature value="optional">#embedded-audio</feature>
    <feature value="optional">#embedded-content</feature>
    <feature value="optional">#embedded-data</feature>
    <feature value="optional">#embedded-font</feature>
    <feature value="optional">#embedded-image</feature>
    <feature value="optional">#extent</feature>
    <feature value="optional">#extent-auto</feature>
    <feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="optional">#extent-contain</feature>
    <feature value="optional">#extent-cover</feature>
    <feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="optional">#extent-image</feature>
    <feature value="optional">#extent-length</feature>
    <feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="optional">#extent-measure</feature>
    <feature value="optional">#extent-region</feature>
    <feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="optional">#extent-root</feature>
    <feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="optional" extends="#extent">#extent-version-2</feature>
    <feature value="optional">#font</feature>
    <feature value="optional">#fontFamily</feature>
    <feature value="optional">#fontFamily-generic</feature>
    <feature value="optional">#fontFamily-non-generic</feature>
    <feature value="optional">#fontKerning</feature>
    <feature value="optional">#fontSelectionStrategy</feature>
    <feature value="optional">#fontSelectionStrategy-character</feature>
    <feature value="optional">#fontShear</feature>
    <feature value="optional">#fontSize</feature>
    <feature value="optional">#fontSize-anamorphic</feature>
    <feature value="optional">#fontSize-isomorphic</feature>
    <feature value="optional">#fontStyle</feature>
    <feature value="optional">#fontStyle-italic</feature>
    <feature value="optional">#fontStyle-oblique</feature>
    <feature value="optional">#fontVariant</feature>
    <feature value="optional">#fontWeight</feature>
    <feature value="optional">#fontWeight-bold</feature>
    <feature value="optional">#frameRate</feature>
    <feature value="optional">#frameRateMultiplier</feature>
    <feature value="optional">#gain</feature>
    <feature value="optional">#image</feature>
    <feature value="optional">#image-png</feature>
    <feature value="optional">#initial</feature>
    <feature value="optional">#ipd</feature>
    <feature value="optional">#layout</feature>
    <feature value="optional">#length</feature>
    <feature value="optional">#length-cell</feature>
    <feature value="optional">#length-em</feature>
    <feature value="optional">#length-integer</feature>
    <feature value="optional">#length-negative</feature>
    <feature value="optional">#length-percentage</feature>
    <feature value="optional">#length-pixel</feature>
    <feature value="optional">#length-positive</feature>
    <feature value="optional">#length-real</feature>
    <feature value="optional" extends="#length-real">#length-real-version-2</feature>
    <feature value="optional">#length-root-container-relative</feature>
    <feature value="optional" extends="#length">#length-version-2</feature>
    <feature value="optional">#letterSpacing</feature>
    <feature value="optional">#lineBreak-uax14</feature>
    <feature value="optional">#lineHeight</feature>
    <feature value="optional">#lineShear</feature>
    <feature value="optional">#luminance</feature>
    <feature value="optional">#markerMode</feature>
    <feature value="optional">#markerMode-continuous</feature>
    <feature value="optional">#markerMode-discontinuous</feature>
    <feature value="optional">#metadata</feature>
    <feature value="optional">#metadata-item</feature>
    <feature value="optional" extends="#metadata">#metadata-version-2</feature>
    <feature value="optional">#nested-div</feature>
    <feature value="optional">#nested-span</feature>
    <feature value="optional">#opacity</feature>
    <feature value="optional">#opacity-block</feature>
    <feature value="optional">#opacity-image</feature>
    <feature value="optional">#opacity-inline</feature>
    <feature value="optional">#opacity-region</feature>
    <feature value="optional" extends="#opacity">#opacity-version-2</feature>
    <feature value="optional">#origin</feature>
    <feature value="optional">#overflow</feature>
    <feature value="optional">#overflow-visible</feature>
    <feature value="optional">#padding</feature>
    <feature value="optional">#padding-1</feature>
    <feature value="optional">#padding-2</feature>
    <feature value="optional">#padding-3</feature>
    <feature value="optional">#padding-4</feature>
    <feature value="optional">#padding-block</feature>
    <feature value="optional">#padding-inline</feature>
    <feature value="optional">#padding-region</feature>
    <feature value="optional" extends="#padding">#padding-version-2</feature>
    <feature value="optional">#pan</feature>
    <feature value="optional">#permitFeatureNarrowing</feature>
    <feature value="optional">#permitFeatureWidening</feature>
    <feature value="optional">#pitch</feature>
    <feature value="optional">#pixelAspectRatio</feature>
    <feature value="optional">#position</feature>
    <feature value="optional">#presentation</feature>
    <feature value="optional">#presentation-audio</feature>
    <feature value="optional" extends="#presentation">#presentation-version-2</feature>
    <feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="optional">#profile-nesting</feature>
    <feature value="optional">#region-implied-animation</feature>
    <feature value="optional">#region-inline</feature>
    <feature value="optional">#region-timing</feature>
    <feature value="optional">#resources</feature>
    <feature value="optional">#ruby</feature>
    <feature value="optional">#ruby-full</feature>
    <feature value="optional">#rubyAlign</feature>
    <feature value="optional">#rubyAlign-minimal</feature>
    <feature value="optional">#rubyAlign-withBase</feature>
    <feature value="optional">#rubyPosition</feature>
    <feature value="optional">#rubyReserve</feature>
    <feature value="optional" extends="#animation">#set</feature>
    <feature value="optional">#set-fill</feature>
    <feature value="optional">#set-multiple-styles</feature>
    <feature value="optional">#set-repeat</feature>
    <feature value="optional">#shear</feature>
    <feature value="optional">#showBackground</feature>
    <feature value="optional">#source</feature>
    <feature value="optional">#speak</feature>
    <feature value="optional">#speech</feature>
    <feature value="optional">#styling</feature>
    <feature value="optional">#styling-chained</feature>
    <feature value="optional">#styling-inheritance-content</feature>
    <feature value="optional">#styling-inheritance-region</feature>
    <feature value="optional">#styling-inline</feature>
    <feature value="optional">#styling-nested</feature>
    <feature value="optional">#styling-referential</feature>
    <feature value="optional">#subFrameRate</feature>
    <feature value="optional">#textAlign</feature>
    <feature value="optional">#textAlign-absolute</feature>
    <feature value="optional">#textAlign-justify</feature>
    <feature value="optional">#textAlign-relative</feature>
    <feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="optional">#textCombine</feature>
    <feature value="optional">#textDecoration</feature>
    <feature value="optional">#textDecoration-over</feature>
    <feature value="optional">#textDecoration-through</feature>
    <feature value="optional">#textDecoration-under</feature>
    <feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="optional">#textEmphasis-color</feature>
    <feature value="optional">#textEmphasis-minimal</feature>
    <feature value="optional">#textEmphasis-quoted-string</feature>
    <feature value="optional">#textOrientation</feature>
    <feature value="optional">#textOutline</feature>
    <feature value="optional">#textOutline-blurred</feature>
    <feature value="optional">#textOutline-unblurred</feature>
    <feature value="optional">#textShadow</feature>
    <feature value="optional">#tickRate</feature>
    <feature value="optional">#time-clock-with-frames</feature>
    <feature value="optional">#time-clock</feature>
    <feature value="optional">#time-offset-with-frames</feature>
    <feature value="optional">#time-offset-with-ticks</feature>
    <feature value="optional">#time-wall-clock</feature>
    <feature value="optional">#timeBase-clock</feature>
    <feature value="optional">#timeBase-media</feature>
    <feature value="optional">#timeBase-smpte</feature>
    <feature value="optional">#timeContainer</feature>
    <feature value="optional">#unicodeBidi</feature>
    <feature value="optional">#unicodeBidi-isolate</feature>
    <feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="optional">#validation</feature>
    <feature value="optional">#visibility</feature>
    <feature value="optional">#visibility-block</feature>
    <feature value="optional">#visibility-image</feature>
    <feature value="optional">#visibility-inline</feature>
    <feature value="optional">#visibility-region</feature>
    <feature value="optional" extends="#visibility">#visibility-version-2</feature>
    <feature value="optional">#wrapOption</feature>
    <feature value="optional">#writingMode</feature>
    <feature value="optional">#writingMode-horizontal-lr</feature>
    <feature value="optional">#writingMode-horizontal-rl</feature>
    <feature value="optional">#writingMode-horizontal</feature>
    <feature value="optional">#writingMode-vertical</feature>
    <feature value="optional">#xlink</feature>
    <feature value="optional">#zIndex</feature>
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- 要求される(必須の)拡張のサポート -->
    <!-- 任意の(自発的な)拡張のサポート -->
  </extensions>
</profile>

G.4 DFXP完全プロファイル

DFXP完全プロファイルは、[TTML1]の 付録F.3、DFXP完全プロファイルで規定される。

G.5 DFXP提示プロファイル

DFXP提示プロファイルは、[TTML1]の 付録F.2、DFXP提示 プロファイルで規定される。

G.6 DFXP変換プロファイル

DFXP変換プロファイルは、[TTML1]の 付録F.1、DFXP変換 プロファイルで規定される。

H ルートコンテナー領域の意味論

この付録は規範的である。

この付録は、ルートコンテナー領域の基本的な特性とその使用を決定するための 意味論を規定する。これには次が含まれる:

H.1 アスペクト比

ルートコンテナー領域には、3つのアスペクト比が適用される:

表示アスペクト比(DAR)

ルートコンテナーの表示アスペクト比は、 ルートコンテナーのアスペクト比を、 表示ピクセルを単位として表したものであり、これらのピクセルは 仮想的な表示装置に提示されることを意図している。 この表示アスペクト比の明示的な指定には、 ttp:displayAspectRatio属性が使用され、 その属性は tt要素上に指定される。明示的に指定されない場合は、 以下で説明するように、他の情報を用いて推定される。

注:

ルートコンテナーのピクセルの実際の物理的な提示には、 定義されたTTML提示処理の後で、 アスペクト比、サンプル解像度、および色空間に関する多数の変換が 適用される場合がある。このようなTTML処理後の 処理は、この仕様の範囲外である。

格納アスペクト比(SAR)

ルートコンテナーの格納アスペクト比は、 ルートコンテナーのアスペクト比を、 論理ピクセルを単位として表したものである。 これらは文書座標空間内にあり、 全単射(単射かつ全射)の写像によって、各論理ピクセルが 一意の表示ピクセルに対応付けられる。 この格納アスペクト比は、tts:extent属性によって、 tt要素上で明示的に指定されるか、 以下で説明するように、他の情報を用いて推定される。

tts:extent属性が tt要素上に指定されている場合、次のようになる:

  1. tts:extent属性の値が ピクセル単位の 2つの<length>表現からなる場合、 格納アスペクト比は指定されているとみなされ、 その数値は、範囲の 幅をその高さで除算した値に等しい;

  2. それ以外の場合(算出値がcontainの場合)、 格納アスペクト比は未指定とみなされ、以下で説明する他の 情報を用いて推定される。

注:

論理ピクセル自体には固有の アスペクト比はない。しかし、 表示ピクセルに写像されると、 以下で規定するルートコンテナーのピクセルアスペクト比によって定義される固定値をとる。

ピクセルアスペクト比(PAR)

ルートコンテナーのピクセルアスペクト比は、各表示ピクセルのアスペクト比を定義する。 これにより、各論理ピクセルは、 それが属する 文書座標空間において、 対応する 表示ピクセルの固定アスペクト比をとり、 DAR = SAR × PARが成り立つ。 このピクセルアスペクト比は、 ttp:pixelAspectRato属性によって、 tt要素上で明示的に指定されるか、 以下で説明するように、他の情報を用いて推定される。

次の各節では、文書内でどのアスペクト比が指定されているかに応じて、 これらのアスペクト比をどのように解決するかを規定する。

H.1.1 アスペクト比の指定がない場合

3つのアスペクト比のいずれも指定されていない場合、3つのアスペクト比は、 次の手順を順番に実行して決定される:

  1. 関連メディアオブジェクトが存在し、 DARが定義されている場合、 DARの解決値は、その関連メディアオブジェクトの表示アスペクト比となる; それ以外の場合、DARの値は、 文書処理コンテキストによって(任意に)決定される;

  2. 続いて、SARおよびPARの値は、 以下のH.1.2 アスペクト比が1つ 指定されている場合に従って解決される。

H.1.2 アスペクト比が1つ指定されている場合

3つのアスペクト比のうち1つだけが指定されている場合、残りの2つの アスペクト比の解決値は、次のように決定される:

  1. DARが指定されているか、上記のH.1.1 アスペクト比の 指定がない場合によって解決されている場合、 その解決値は指定値または解決済みの値となり、 SARおよびPARの値は次のように決定される:

    1. SARの解決値は、DARの解決値となる;

    2. PARの解決値は、1(1)となる。

  2. SARが指定されている場合、その解決値は指定値となり、 DARおよびPARの値は、 次のように決定される:

    1. 関連メディアオブジェクトが存在し、 DARが定義されている場合、 DARの解決値は、 関連メディアオブジェクトの表示アスペクト比となる。続いて、 PAR の値は、以下のH.1.3 アスペクト比が2つ 指定されている場合に従って解決される;

    2. それ以外の場合、DARの解決値は、 文書 処理コンテキストによって決定され、続いてPARの値は、 以下のH.1.3 アスペクト比が2つ 指定されている場合に従って解決される;

  3. PARが指定されている場合、 その解決値は指定値となり、DARおよび SARの値は次のように決定される:

    1. 関連メディアオブジェクトが存在し、 DARが定義されている場合、 DARの解決値は、 関連メディアオブジェクトの表示アスペクト比となる。続いて、 SAR の値は、以下のH.1.3 アスペクト比が2つ 指定されている場合に従って解決される;

    2. それ以外の場合、SARの解決値は、 文書 処理コンテキストによって決定され、続いてDARの値は、 以下のH.1.3 アスペクト比が2つ 指定されている場合に従って解決される。

H.1.3 アスペクト比が2つ指定されている場合

3つのアスペクト比のうち2つが指定されているか、すでに解決されている場合、 3つ目のアスペクト比の解決値は、次の式を用いて決定される: DAR = SAR × PAR。

H.1.4 アスペクト比が3つ指定されている場合

3つのアスペクト比すべてが指定されており、それらの値が次の式を満たす場合、 DAR = SAR × PAR、 それらは解決済みのアスペクト比とみなされる。ただし、この式が満たされない場合、 次のように処理する: 検証処理を実行する際には、エラーを報告すべきであり (検証プロセッサーの設定に従う)、 提示処理を実行する際には、指定されたPAR値を無視し、 PARの解決値は、 上記のH.1.3 アスペクト比が2つ 指定されている場合によって決定する。

H.2 解像度

ルートコンテナー領域は、論理 ピクセルのグリッドに分割され、行ピクセル数 と列ピクセル数は固定される。列ピクセル数は、 ルートコンテナー領域の 水平軸上の解像度を表し、行ピクセル数は、 ルートコンテナー領域の 垂直軸上の解像度を表す。前者は幅として、後者は 高さとして、それぞれルートコンテナー領域について定義される。 両軸に沿った(これら2つの)解像度を合わせたものを、 ルートコンテナー領域の総合 解像度 または空間的範囲と呼ぶ。

注:

上記の格納 アスペクト比(SAR)で述べたように、 論理ピクセルには固有のアスペクト比がなく、 すなわち、 論理ピクセルには定義された形状がなく、したがって、 定義されたサイズもない。 論理ピクセルが 表示ピクセルに写像されて初めて、固定された形状と サイズを持つ。 それでも、論理ピクセルを正方形であり、 測定可能な絶対的なサイズを持つものと考えると便利なことが多い。ただし、読者は、この早計な (そして誤っている可能性のある)結論に至らないよう注意する必要がある。

tts:extent属性の値が tt要素上に指定され、 ピクセル単位の 2つの<length>表現からなる場合、これら2つの 表現は、 ルートコンテナー領域の幅および高さを 表し、 したがって、その総合 解像度を決定する; それ以外の場合、ルートコンテナー領域の総合解像度は、 任意に決定される。 この決定は、文書 処理コンテキストによって、SARの解決値を尊重する方法で行われる。その解決値は、 上記の H.1 アスペクト比によって決定される。

注:

文書処理コンテキストが 任意の 解像度をルートコンテナー領域に割り当てる場合、 その内部処理の制約と、 処理対象の文書 インスタンスに都合のよい任意の方法で割り当ててもよい。 たとえば、 関連メディアオブジェクトの格納アスペクト比に適用される解像度と同じ解像度を割り当ててもよいし、 文書内の長さ表現の精度を評価して、 同じ精度を維持する論理解像度を割り当ててもよい。

H.3 座標空間

ルートコンテナー領域の座標空間は、文書座標空間とも呼ばれ、 無限に広がる2次元平面であり、その上に論理ピクセルの閉じた集合が定義される。この集合は長方形 Rの形をとり、 これらのピクセルはRの境界の内側にある。この座標空間の原点 (位置)は、 Rの左上隅と一致し、垂直軸上の正のピクセル方向は下向きに、 水平軸上の正のピクセル方向は 右向きに延びる。 さらに、幅および高さについて、 Rのそれらの値は、 ルートコンテナー領域の解決済みの解像度に設定される。 最後に、Rに適用されるアスペクト比は、 DAR、SAR、 およびPARの解決値に従って、上記のように確立される。

上位プロトコルが適用されない限り、 文書座標空間は、 所定の文書インスタンスを処理する際に、 一度だけ決定される。

I 時間表現の意味論

この付録は規範的である。

この付録は、時間表現を文書インスタンス内で解釈するための意味論を規定する。

注:

以下で使用するローカル実時間という語句は、文書処理コンテキスト内の仮想的な実時間クロックを モデル化することを意図している。ここで、 ローカルとは、この処理コンテキストの実装のすぐ近くにあることを意味する。 この仮想クロックとの関係を定義する 意図は、説明のために、局所的に有効な時間の物理的な 実現を確立することである。

注:

以下で使用する再生レートという語句は、文書処理コンテキスト内の(可変である可能性のある)パラメーターを モデル化することを意図している。このパラメーターによって、 時間の再生(または解釈)のレートを人為的に引き伸ばしたり縮めたりできる。たとえば、 関連メディアオブジェクトの再生速度を低下させたり増加させたりする場合である。 一般性を失うことなく、 以下の説明では固定された再生レートを仮定する。再生レートが可変の場合、 結果として得られる計算に適切な調整を加える必要がある場合がある。

文書処理コンテキストは、適用される エポックと、エポックに関連するオフセットを定義する。 これらは、合成文書 同期基準を確立する際に使用される。

I.1 クロック時間基準

clock時間基準で動作する場合、次の意味論が、 時間表現の解釈に適用される。 これらの表現は<time-expression>で定義され、その意味論には、 メディア時間およびローカル実時間との関係も含まれる。

クロック時間基準Cは、ローカル実時間Rと関係付けられる。 この実時間は、エポックE( 文書処理コンテキストによって定義される) で表され、その関係は次のとおりである:

TTMLの意味論 – クロック時間と実時間の関係


R = C + epochOffset + discontinuityOffset

ここで、C ∈ ℜ、0 ≤ C < ∞であり、Cは、 次のいずれかからの経過秒数である: (1) 参照クロック基準における直前の午前0時。 これは、対応する<time-expression>が 日付なしの形式をとる場合、;または (2) 参照クロック基準における指定日の午前0時。 これは、対応する<time-expression>が 日付付きの形式をとる場合;

epochOffset ∈ ℜ、0 ≤ epochOffset < ∞であり、 epochOffsetは秒単位で、0は エポックEの開始を表す。epochOffsetの値は、 ttp:clockModeパラメーターの算出値から、 次のように決定される:

(1) localの場合、直前のローカル午前0時における ローカル実時間と、 エポックEの開始時におけるローカル実時間との差を秒単位で表した値;

(2) gpsの場合、直前のGPS午前0時における GPS時間と、 エポックEの開始時におけるGPS時間との差を秒単位で表した値;

(3) utcの場合、直前のUTC午前0時における UTC時間と、 エポックEの開始時におけるUTC時間との差を秒単位で表した値;

discontinuityOffset ∈ ℜ、 −∞ < discontinuityOffset < ∞であり、 discontinuityOffset は秒単位で、その値は、 参照クロック基準における直前の午前0時以降に 加算(または減算)されたうるう秒(およびその端数)の 合計に等しい;

また、epochOffsetおよびdiscontinuityOffsetは、 次の開始より前に一度だけ決定される: ルート時間範囲。この決定では、 値の決定から ルート時間範囲の開始までの間に、 ローカル午前0時または参照クロック基準の不連続が発生しないようにする。

時間値表現は、<time-expression>によって表され、 クロック時間Cと次のように関係付けられる:

TTMLの意味論 – 時間表現とクロック時間の関係


<time-expression>の形式が ティック(t)単位を使用しない場合:

C = 3600 * hours + 60 * minutes + seconds

ここで、hours、minutes、およびseconds構成要素は、時間表現内に存在する場合はそこから抽出され、 存在しない場合は0となる。さらに、fraction構成要素が存在する場合は、 seconds 構成要素に加算され、実数値の秒 構成要素を形成する。

それ以外の場合、すなわち <time-expression>の形式が ティック(t)単位を使用する場合:

C = ticks / tickRate

注:

時間表現のframes項とsub-frames項、およびフレーム(f)単位は、 次の時間基準を使用する場合には適用されない: clock時間基準。

クロック時間基準Cは、メディア時間Mから独立している:

TTMLの意味論 – クロック時間とメディア時間の関係


M ¬∝ C

注:

すなわち、 clock時間基準を使用する場合、タイミングはメディア時間から切り離されている(必ずしも比例しない)。たとえば、メディア再生レートが0の場合、 メディアの再生は一時停止するが、時間座標は、 参照クロック基準に直接比例して、クロック時間の自然な進行に従い 進み続ける。さらに、再生中にメディア再生レートが変化しても、 提示タイミングは影響を受けない。

I.2 メディア時間基準

media時間基準で動作する場合、次の意味論が、 時間表現の解釈に適用される。 これらの表現は<time-expression>で定義され、その意味論には、 メディア時間、文書時間、およびローカル実時間との関係も含まれる。

I.2.1 ローカル実時間との関係

メディア時間基準Mは、ローカル実時間 Rと関係付けられる。 この実時間は、エポックE( 文書処理コンテキストによって定義される)で表され、その関係は次のとおりである:

TTMLの意味論 – メディア時間と実時間の関係


R = playRate * M + epochOffset

ここで、M ∈ ℜ、0 ≤ M < ∞であり、Mは 秒単位で、0は 文書時間 座標空間の開始に対応する;

playRate ∈ ℜ、−∞ < playRate < ∞であり、 playRateは単位を持たず、 playRateの値は、文書処理 コンテキストによって決定される。決定されない場合は1.0となる;

また、epochOffset ∈ ℜ、0 ≤ epochOffset < ∞であり、 epochOffsetは秒単位で、0は 次のエポックの 開始に対応する:エポックE。epochOffsetの値は、 次の座標空間の開始時におけるローカル実時間、 文書時間 座標空間の開始時の値と、エポック Eの開始時におけるローカル実時間との差を秒単位で表した値である。

注:

playRateの値が、文書処理コンテキストによって決定される場合、 すなわち既定値1.0に設定されていない場合、その値は、 文書の提示中に実時間で変化することがある。 この場合、与えられたMの値に対するRの値は、 新しい playRateの値に基づいて再評価されることが期待される。

I.2.2 メディア時間との関係

時間値表現は、<time-expression>によって表され、 メディア時間Mと、 ttp:frameRate、ttp:subFrameRate、および ttp:frameRateMultiplierパラメーターに従って、次のように関係付けられる:

TTMLの意味論 – 時間表現とメディア時間の関係


時間表現がclock-time形式、または offset-time形式でティック(t) 単位を使用しないものを使用する場合:

M = referenceBegin + 3600 * hours + 60 * minutes + seconds + ((frames + (subFrames / subFrameRate)) / effectiveFrameRate)

ここで、referenceBeginは、 最も近い祖先の時間コンテナーが 並列(par)または逐次(seq)のどちらの意味論を採用するかに応じて決定される。 並列の場合、または逐次で先行する兄弟の 時間指定要素が存在しない場合、 referenceBegin は、最も近い祖先の時間コンテナーの開始に対応する メディア時間となる。ただし、 この時間コンテナーがルート時間範囲の場合は0となる。それ以外の場合、 すなわち逐次で先行する兄弟の 時間指定要素が存在する場合、 referenceBeginは、アクティブ終了に対応するメディア時間となる。 その終了とは、 直前の兄弟時間指定要素のアクティブ終了である;

hours、minutes、seconds、 frames、subFrames構成要素 は、時間表現内に存在する場合はそこから抽出され、存在しない場合は0となる。 さらに、時間表現がclock-time 表現の形式をとる場合、fraction構成要素が存在すれば、それを seconds構成要素に加算して、 実数値の秒 構成要素を形成する。あるいは、時間表現が offset-time表現の形式をとる場合、 fraction構成要素が存在すれば、 それをtime-count構成要素に加算して、実数値の時間 カウント構成要素を、 指定されたオフセット単位に従って形成する;

subFrameRateは、 ttp:subFrameRateパラメーターの算出値である;

また、effectiveFrameRate(1秒あたりのフレーム数)は、 frameRate * frameRateMultiplierである。ここで、 frameRateは、 ttp:frameRateパラメーターの算出値であり、 frameRateMultiplierは、 ttp:frameRateMultiplierパラメーターの算出値である。

それ以外の場合、すなわち時間表現がoffset-time形式で、 ティック(t)単位を使用する場合:

M = referenceBegin + ticks / tickRate

ここで、referenceBeginは上記のとおりである;

ticks構成要素は、 時間表現から抽出される;

また、tickRateは、 ttp:tickRateパラメーターの算出値である;

注:

算出されたframeRateMultiplierの比が整数でない場合、 effectiveFrameRateは整数でない有理数となる。

注:

上記の定式化では、文書時間座標空間の 開始時刻が、 関連メディアオブジェクトの開始時刻に関係付けられていると仮定する。この 仮定が成り立たない場合、その差を考慮する追加のオフセットを、 メディア時間Mの計算時に導入してもよい。

I.2.3 文書時間との関係

この節は非規範的である。

ttp:timeBase="media"の場合、算出された文書時間は、 オフセットなしで等価なメディア時間として使用される。

注:

たとえばラッパー形式によって 課される追加のメディア時間処理は、 TTML仕様の範囲外である。

たとえば、[ISOBMFF TT]は、TTML 文書を、 分割されたファイルおよび分割されていないファイル内のサンプルとして格納する機構を提供する。[MPEG DASH]は、 HTTPおよびMPEG-2 TSを介した断片化された配信のために、 追加の分割の意味論を提供する。

次の文書断片は、タイミングに関して等価である:

断片の例 – メディアタイミング1
<tt ttp:timeBase="media" ...>
...
<body>
   <div xml:id="d1" begin="1s">
      <p xml:id="p1" begin="0s" end="1s">第1段落</p>
      <p xml:id="p2" begin="2s" end="3s">第2段落</p>
   </div>
</body>
</tt>

断片の例 – メディアタイミング2
<tt ttp:timeBase="media" ...>
...
<body>
   <div xml:id="d1">
      <p xml:id="p1" begin="1s" end="2s">第1段落</p>
      <p xml:id="p2" begin="3s" end="4s">第2段落</p>
   </div>
</body>
</tt>

他の外部情報がない場合の、文書時間からメディア 時間への写像を示すタイミング図。
メディア時間

この例では、 [SMIL 3.0]の用語を用いると、body 要素の暗黙の持続時間は、その算出された持続時間と同一であり、 これはルート時間 範囲でもある。ただし、 文書処理 コンテキストが適用可能なメディア時間の範囲を指定する場合、その範囲は、 解決された開始時刻および終了時刻を制限し、したがって、 ルート時間 範囲も制限する。

次の例では、処理コンテキストは、 文書がアクティブであるメディア時間の範囲を1.5秒から 3.5秒までと定義している。これら両方の時刻に時間指定コンテンツが 存在するため、この範囲がルート時間範囲を定義する。

メディア時間の範囲が処理コンテキストによって制約される場合の、 文書時間からメディア時間への写像を 示すタイミング図。
メディア時間

灰色の背景は、 文書処理 コンテキストが文書を非アクティブと定義する期間を示す。 文書時間座標空間 は、この変換の影響を受けない。

文書処理コンテキストがメディア 時間の範囲を0~3秒と定義した場合、 ルート時間範囲 はp1によって定義される1秒から2秒までとなり、p2は一度も 表示されない。

I.3 SMPTE時間基準

smpte時間基準で動作する場合、次の意味論が、 時間表現の解釈に適用される。 これらの表現は<time-expression>で定義され、その意味論には、 メディア時間およびローカル実時間との関係も含まれる。

ttp:markerModeパラメーターの算出値がdiscontinuousの場合、 直接的な関係は存在しない。 これは、時間表現とメディア時間M、またはローカル実時間Rとの間の関係を指す。 この場合、時間表現は、文書処理コンテキストが発行する同期イベント(マーカー)を参照する。 これらは、SMPTEタイムコードが 関連メディアオブジェクト内で検出されたときに発行される。

それ以外の場合、すなわちttp:markerModeパラメーターの算出値が continuousの場合、時間表現と ローカル実時間およびメディア時間との関係は、以下で説明する合成SMPTE文書同期基準を用いて表される。ここでは、 これを SMPTE時間基準Sと呼ぶ。

TTMLの意味論 – 時間表現とSMPTE時間の関係


S = (countedFrames - droppedFrames + (subFrames / subFrameRate)) / effectiveFrameRate

ここで、

countedFrames = (3600 * hours + 60 * minutes + seconds) * frameRate + frames

hours、minutes、seconds、 frames、subFrames構成要素 は、時間表現内に存在する場合はそこから抽出され、存在しない場合は0となる。 さらに、時間表現がclock-time 表現の形式をとる場合、fraction構成要素が存在すれば、それを seconds構成要素に加算して、 実数値の秒 構成要素を形成する。あるいは、時間表現が offset-time表現の形式をとる場合、fraction構成要素が存在すれば、 それをtime-count構成要素に加算して、 実数値の時間カウント構成要素を、指定されたオフセット 単位に従って形成する;

droppedFramesは次のように計算される:

1. dropModeを、ttp:dropMode パラメーターの算出値とする;

2. dropModeがdropNTSCの場合、 droppedFrames = (hours * 54 + minutes - floor(minutes/10)) * 2とする;

3. それ以外の場合、dropModeがdropPALであれば、 droppedFrames = (hours * 27 + floor(minutes/2) - floor(minutes/20)) * 4とする;

4. それ以外の場合、 droppedFrames = 0とする;

frameRateは、ttp:frameRate パラメーターの算出値である;

subFrameRateは、 ttp:subFrameRateパラメーターの算出値である;

また、effectiveFrameRate(1秒あたりのフレーム数)は、 frameRate * frameRateMultiplierである。ここで、 frameRateは、ttp:frameRate パラメーターの算出値であり、 frameRateMultiplierは、 ttp:frameRateMultiplierパラメーターの算出値である。

上記にかかわらず、時間表現に含まれるフレームコードが、 次の規定に従って ドロップされるものとして指定されている場合:7.2.4 ttp:dropMode、その時間表現は、 妥当性評価の目的では無効とみなされなければならない。

注:

<time-expression>を参照のこと。ここでは、次の両方の 非推奨化について説明する: offset-time形式、およびfraction構成要素。 これは、smpte時間基準が適用される場合の時間表現についてのものである。

SMPTE時間基準Sは、メディア時間基準 Mと次のように関係付けられる:

TTMLの意味論 – SMPTE時間とメディア時間の関係


M = referenceBegin + S

ここで、referenceBeginは、最も近い 祖先の時間コンテナーが 並列(par)または逐次(seq)のどちらの意味論を採用するかに応じて決定される。 並列の場合、または逐次で先行する兄弟の 時間指定要素が存在しない場合、 referenceBegin は、最も近い祖先の時間コンテナーの開始に対応する SMPTE時間となる。ただし、 この時間コンテナーがルート時間範囲の場合は0となる。それ以外の場合、 すなわち逐次で先行する兄弟の 時間指定要素が存在する場合、 referenceBeginは、アクティブ終了に対応するSMPTE時間となる。 その終了とは、 直前の兄弟時間指定要素のアクティブ終了である;

上記のように導出されたメディア時間基準が与えられた場合、 メディア時間基準Mは、ローカル実時間Rと、 上記のI.2 メディア時間基準で説明したように関係付けられる。

J 中間文書構文

この付録は規範的である。

この付録は、 タイムドテキスト中間文書の構文要素と構造を規定する。 ISDインスタンスは、独立した文書インスタンスとして、または ISDシーケンスインスタンスとして表現される集合内で表現してもよい。

ISDに関連するすべての語彙は、TTML ISD名前空間で定義される。ここでは、これを http://www.w3.org/ns/ttml#isdと定義し、 推奨される接頭辞はisdである。

注:

ISD文書インスタンスは、TTML ISD名前空間の要素を使用することに加えて、通常、 他のTTML名前空間の1つ以上からの 語彙を含む。これらの名前空間は、5.1 名前空間で定義される。

TTML 中間同期文書、略して ISDまたはISDインスタンスは、 元のTTML文書の、離散的で時間的に重ならない区間、すなわちISD区間を表す。 この区間内では、非離散的なアニメーションを除き、すべてのコンテンツ、スタイリング、およびレイアウト 情報が静的なままである。 特に、TTML文書の時間階層は平坦化された後、時間的に 重ならない区間に分割される。それぞれの 区間は、その区間内での元のTTML文書の静的なビューを定義し、その静的な ビューがISDインスタンスとして表現される。 具体的で独立したTTMLの 中間同期文書インスタンスは、 isd:isd要素をルート文書要素として指定しなければならない。 また、 中間同期文書のインスタンスが、 中間同期文書シーケンス インスタンス内に含まれる場合、そのISDインスタンスは、 isd:isd子要素として、ルートの isd:sequence要素内に表現される。

注:

ISDインスタンスは、対応する区間内の連続的なアニメーションを表す1つ以上のanimate要素を 含んでもよい。連続的にアニメーション化されるスタイルは、 ISD区間の境界で分割され、その段階的な連結が、交差する任意のISD区間にわたって 等価な連続的アニメーションを表すようにする。

TTML 中間同期文書 シーケンスは、 時間的に重ならない中間同期 文書インスタンスを、その開始時刻に 従って順序付けた集合を表す。TTMLの 中間同期文書シーケンス の具体的なインスタンスは、 isd:sequence要素をルート文書要素として指定しなければならない。

J.1 ISD語彙

J.1.1 isd:sequence

isd:sequence要素は、中間 同期文書シーケンス文書のルート文書要素として機能する。

isd:sequence要素は、その子として0個以上のmetadata要素、 それに続く0個または1個のttp:profile 要素、 さらにそれに続く0個以上のisd:isd要素を受け入れる。

子のisd:isd要素は、その開始時刻に相当するメディア時間に 従って 順序付けられなければならない。さらに、任意の2つの子isd:isd要素の時間区間は、(時間的に)重なってはならない。

XML表現 – 要素情報項目: isd:sequence
<isd:sequence
  extent = xsd:string
  size = <non-negative-integer>
  version = <non-negative-integer>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {any attributes in the ISD Parameter Attribute Set}>
  Content: metadata*, ttp:profile?, isd:isd*
</isd:sequence>

extent属性が指定される場合、それは<extent>値の 構文の部分集合のうち、ピクセル単位の2つの<length> 表現からなるものに従わなければならない。この場合、指定された値は、 ルートコンテナー領域の空間的範囲を表す。 これは、 H.2 解像度で定義されるものであり、 この空間的範囲は、各 各構成 中間同期文書に全体的に適用される。 これらの文書は、子のisd:isd要素によって表現される。

size属性が指定される場合、それは非負の整数でなければならず、 次の要素の個数に対応しなければならない: isd:isd子要素。 指定されていない場合、サイズは不定とみなされなければならない。ただし、 次の isd:sequence要素が終端した場合はその限りではなく、 その場合、サイズは、 調べることによって決定してもよい。

注:

size属性は、リアルタイムの キャプションでは通常省略される。

version属性が指定される場合、それは正の整数(0より大きい値)でなければならず、 次の仕様のバージョンに対応しなければならない: 中間同期文書構文 仕様。これは、 ISDシーケンス文書の作成に使用されたバージョンである。指定する場合、その数値は2以上でなければ ならない。指定されていない場合、バージョンは、 2に等しいとみなされなければならない。この 中間同期文書構文 仕様に対応するバージョンは2である。

注:

[TTML1]の§9.3.2で参照または示唆されるISDの抽象概念は、 その仕様では具体的に定義されていなかった。ここでは、バージョン1を、 その以前の抽象概念と、そのさまざまな(標準化されていない) 実現についての非公式な議論のために予約する。

xml:lang属性は、 次の isd:sequence要素上に指定されなければならない。 その値が空の場合、既定の言語が存在しないことを意味する。 これは、中間同期文書 シーケンス内のコンテンツに適用される言語についてである。それ以外の場合、 指定された値は、各構成 中間同期文書に適用される既定の言語を表す。

1つ以上のパラメータープロパティを、制限されたパラメーター属性集合から指定してもよい。 この集合は、J.2 ISDパラメーター属性集合に列挙される。 指定された場合、それらは各構成中間同期文書に全体的に適用される。

子のttp:profile要素が存在する場合、 そのttp:profile要素は、 次の制約を満たさなければならない:

  • combine属性が指定されていないこと;

  • designator属性が指定されていないこと;

  • type属性が指定されていないこと;

  • use属性が指定されていないこと;

  • 子孫要素にttp:profile要素が存在しないこと;

  • 子孫のttp:feature要素が、value属性に prohibitedという値を指定していないこと;

  • 子孫のttp:extension要素が、value属性に prohibitedという値を指定していないこと。

さらに、このような子のttp:profile 要素は、結合された プロセッサープロファイルと等価なプロファイルを指定しなければならない。これは、元のTTML文書について、 外部参照されるすべてのプロファイル文書を取得した後のものである。

注:

単一のttp:profileを isd:sequence内に指定することを許可する意図は、 宣言のための簡略化された機構を提供することである。 この宣言は、文書を処理するために満たさなければならないプロセッサープロファイルの要件を示す (エンドユーザーによる上書きがない場合)。

J.1.2 isd:isd

isd:isd要素は、次のいずれかとして機能する: (1) 独立した中間同期文書のルート文書要素、または (2) isd:sequence要素の子。 後者の要素は、 中間同期文書 シーケンス文書の要素である。 isd:isd要素は、ルートのtt要素から導出され、それを置き換える。 このルート要素は、各中間同期文書形式DOCinter に保持されているものであり、 その形式は、 中間文書を構築する 手続きによって作成される。

isd:isd要素は、その子として0個以上のmetadata要素、 それに続く0個または1個のttp:profile 要素、 さらにそれに続く0個以上のisd:css要素、 さらにそれに続く0個以上のisd:region要素を受け入れる。

XML表現 – 要素情報項目: isd:isd
<isd:isd
  begin = <time-expression>
  end = <time-expression> | "indefinite"
  extent = xsd:string
  version = <non-negative-integer>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {any attributes in the ISD Parameter Attribute Set}>
  Content: metadata*, ttp:profile?, isd:css*, isd:region*
</isd:isd>

begin属性を指定しなければならず、その値は、 offset-time形式の <time-expression>でなければならない。さらに、 使用できる単位は、 s(秒)、 f(フレーム)、 t(ティック)に制限される。単位を省略してもよく、その場合はs(秒)が暗黙に指定される。 この 開始時刻は、次の座標空間の開始時刻からのオフセットとして表現される: 文書時間座標空間。 これは、isd:isd要素の導出元であるTTML文書の座標空間である。

end属性も同様に指定しなければならず、同じ制約が適用される。 end属性の値が、<time-expression>の形式をとる場合、 この終了時刻は、文書時間座標空間の開始時刻からのオフセットとして表現される。 これは、isd:isd要素の導出元であるTTML文書の座標空間である; それ以外の場合(値がindefiniteの場合)、時間範囲は、 この属性が符号化される時点では不明であるか、 時間的な終点が存在しない。

注:

[SMIL 3.0]の用語で表すと、これらの beginおよびend属性の値は、 アクティブ持続時間の解決済みの開始時刻と終了時刻に対応し、 文書開始を基準とする。

extent属性が指定される場合、それは<extent>値の 構文の部分集合のうち、ピクセル単位の2つの<length> 表現からなるものに従わなければならない。この場合、指定された値は、 ルートコンテナー領域の空間的範囲を表す。 これは、 H.2 解像度で定義されるものであり、この空間的範囲 は、中間同期 文書に適用される。 この文書は、このisd:isd要素によって表現される。さらに、 このisd:isd要素が、 中間同期文書 シーケンス文書内に含まれる場合、 コンテナーであるisd:sequence要素が 次の属性、 extent属性を指定しているならば、このisd:isd 要素は、 extent属性を指定すべきではない。指定する場合、その値は、 次の属性の値と等しくなければならない: extent属性。これは、コンテナーであるisd:sequence要素上に指定された属性である。

xml:lang属性は、 次の isd:isd要素が、独立した中間 同期文書文書である場合、その要素上に指定されなければならない。それ以外の場合は指定してもよく、 次の要素の既定の言語、 isd:isd要素の既定の言語が、 その親の isd:sequence要素の既定の言語と異なる場合は、指定すべきである。 その値が空の場合、既定の言語が存在しないことを意味する。 これは、中間 同期文書内のコンテンツに適用される言語についてである。それ以外の場合、 指定された値は、適用される既定の言語を表す。

version属性は、次の要素上の同名の属性と同じ構文および意味論に 従う: isd:sequence要素型。 version 属性は、isd:isd要素がルート文書要素ではない場合、 すなわち、 isd:sequence要素の子要素である場合、その要素上に指定してはならない。

子のttp:profile要素は、 次の isd:isd要素が、独立した中間 同期文書文書である場合に存在してもよい。この場合、 J.1.1 isd:sequenceで規定するものと同じ制約および意味論が適用される; それ以外の場合、すなわち独立した文書でない場合、子のttp:profile要素が存在してはならない。

J.1.3 isd:css

isd:css要素は、ある要素の集合に対する一意の算出スタイル集合を 表現するために使用される。 これらの要素は、同じ算出スタイル集合を共有する。特に、元のTTML文書内の各 要素Eのうち、選択され、 isd:region要素へコピーされるものについて、 その要素が属する所定の中間同期文書において、 算出スタイル 集合EのCSS(E)が決定される。そのCSS(E)が、まだ 指定されていない場合、 すなわち既存のisd:css要素によって指定されていない場合は、一意の識別子が割り当てられ、 新しい isd:css要素としてインスタンス化される。

isd:css要素は、その子として0個以上のmetadata要素を受け入れる。

XML表現 – 要素情報項目: isd:css
<isd:css
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {any styling attributes}
  Content: metadata*
</isd:css>

任意の一対のisd:css子要素について、それらが isd:isd要素の子であり、 S1およびS2であるとすると、S1の指定されたスタイルの集合は、 S2の指定されたスタイルの集合と同じであってはならない。2つの 指定されたスタイルの集合を比較するために、スタイルを正規順序に並べ、その後、 項目 ごとに値が等しいかを比較しなければならない。正規順序は、修飾 属性名の 順序に従い、各修飾名は次のタプルからなる: <namespace URL, local name>。 これらのタプルは、構成要素ごとに、大文字と小文字を区別する 文字列の辞書順で比較される。

J.1.4 isd:region

isd:region要素は、レイアウトおよび提示の領域と、 その領域内に選択されたコンテンツを表現するために使用される。このコンテンツは、 body要素と、その子孫のコンテンツ要素の形式をとる。

isd:region要素は、その子として0個以上のmetadata要素、 それに続く0個以上のanimate 要素、 さらにそれに続くちょうど1個のbody 要素を受け入れる。

XML表現 – 要素情報項目: isd:region
<isd:region
  style = IDREF
  ttm:role = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  Content: metadata*, animate*, body
</isd:region>

isd:region要素が表す領域の算出スタイル集合が、 次の 要素に適用される初期スタイル値の集合、regionに適用される集合と異なる場合、 style属性を指定しなければならない。この属性は、isd:css要素を参照し、その要素は、 領域の算出スタイル集合を指定するものでなければならない。

次の制約が、body要素 およびその子孫要素に適用される:

  • animate属性が指定されていないこと;

  • begin属性が指定されていないこと;

  • dur属性が指定されていないこと;

  • end属性が指定されていないこと;

  • region属性が指定されていないこと;

  • timeContainer属性が指定されていないこと;

  • TT スタイル名前空間内の属性が指定されていないこと;

  • set要素が存在しないこと;

  • すべての有意なテキストノードが、 span要素の子であり、その要素は他の 子を含まないこと。

さらに、body要素 Bと、 その子孫の各コンテンツ要素Cについて、 Bまたは各Cの算出スタイル集合が、 その親要素の算出スタイル集合と等しくない場合、その要素、すなわちBまたは Cは、style 属性を指定しなければならない。この属性は、isd:css要素を参照し、その要素は、 当該要素の 算出スタイル集合を指定するものでなければならない。

J.2 ISDパラメーター属性集合

定義済みのパラメーター 属性のうち、次の部分集合は、 上記の説明に従って、 isd:sequenceまたは isd:isd要素で使用できる:

J.3 ISDの交換

中間同期文書 構文を使用する具体的な文書インスタンスは、 UTF-8文字エンコーディングを用いた整形式の[XML 1.0]文書として符号化されなければならない。 さらに、このような文書は、 isd:sequence要素または isd:isd要素をルート文書要素として指定しなければならない。

具体的なISDシーケンスまたはISDインスタンスからなるリソースが交換され、そのリソースの コンテンツ型を識別するためにメディア型が 使用される場合、メディア型application/ttml+xmlを使用すべきである。これについては、 [TTML1]の付録Cも参照のこと。 このメディア型を使用する場合、任意のprofileパラメーターを指定してはならず、 指定された場合、プロセッサーはそれを無視しなければならない。

K 参考文献

この付録は規範的である。

データ符号化
S. Josefsson, Base16、Base32、およびBase64のデータ 符号化、 RFC 4648、2006年10月、IETF。( http://www.rfc-editor.org/rfc/rfc4648.txtを参照。)
GPS
全地球 測位システム、米国空軍。 ( https://www.gps.gov/technical/を参照。)
JLREQ
Richard Ishidaほか、 日本語組版 処理の要件 W3Cワーキンググループノート、2012年4月3日。 (http://www.w3.org/TR/2012/NOTE-jlreq-20120403/を参照。)
メディアクエリー
Florian Rivoal, メディアクエリー、 W3C勧告、2012年6月19日。( http://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619/を参照。)
MIME
Ned FreedおよびNathaniel Borenstein、 多目的インターネット メール拡張(MIME)第1部:インターネットメッセージ本文の形式、 RFC 2045、1996年11月、IETF。( http://www.rfc-editor.org/rfc/rfc2045.txtを参照。)
MIMEメディア型
Ned FreedおよびNathaniel Borenstein、 多目的インターネット メール拡張(MIME)第2部:メディア型、 RFC 2046、1996年11月、IETF。( http://www.rfc-editor.org/rfc/rfc2046.txtを参照。)
PNG
David Duce編、 Portable Network Graphics(PNG) 仕様(第2版)、 W3C勧告、2003年11月10日。( https://www.w3.org/TR/2003/REC-PNG-20031110/を参照。)
RELAX NG
ISO/IEC 19757-2:2003, 情報技術 – 文書 スキーマ定義言語(DSDL)– 第2部:正規文法に基づく検証 – RELAX NG、 国際標準化機構(ISO)。
ルビ
Masayasu Ishikawaほか、 ルビ注釈 W3C勧告、2001年5月31日。 (http://www.w3.org/TR/2001/REC-ruby-20010531/を参照。)
SMIL 3.0
Dick Bultermannほか、 同期 マルチメディア統合言語(SMIL 3.0)、 W3C勧告、2008年12月1日。( http://www.w3.org/TR/2008/REC-SMIL3-20081201/を参照。)
SMPTE ST 12-1
SMPTE ST 12-1:2014, タイムコードおよび制御コード、 SMPTE規格。
SRGB
IEC 61966-2-1:1999/AMD1:2003, マルチメディア システムおよび機器 – 色の測定および管理 – 第2-1部:色管理 – 既定のRGB色空間 – sRGB、国際電気標準 会議(IEC)。
SVG 1.1
Erik Dahlströmほか編、 スケーラブル ベクターグラフィックス(SVG)1.1 第2版、W3C勧告、 2011年8月16日。( http://www.w3.org/TR/2011/REC-SVG11-20110816/を参照。)
TTML1
Glenn AdamsおよびPierre-Anthony Lemieux編、 タイムドテキストマークアップ言語1(TTML1) (第3版)、 W3C勧告、2018年11月08日。( https://www.w3.org/TR/2018/REC-ttml1-20181108/を参照。)
TTMLプロファイルレジストリー
Glenn AdamsおよびMike Dolan編、 TTMLメディア型定義およびプロファイル レジストリー、 W3Cワーキンググループノート。( https://www.w3.org/TR/ttml-profile-registry/を参照。)
UAAG
Ian Jacobs、Jon Gunderson、およびEric Hansen編、 ユーザー エージェントアクセシビリティガイドライン1.0、W3C勧告、 2002年12月17日。( http://www.w3.org/TR/2002/REC-UAAG10-20021217/を参照。)
UAX9
M. Davis、A. Lanin、およびA. Glass、Unicode双方向 アルゴリズム、ユニコードコンソーシアム、2017年5月14日。( http://www.unicode.org/reports/tr9/tr9-37.htmlを参照。)
UAX14
Asmus Freytag、改行 特性、ユニコードコンソーシアム、2005年8月29日。( http://www.unicode.org/reports/tr14/tr14-17.htmlを参照。)
URI
T. Berner-Lee、R. Fielding、およびL. Masinter、 統一資源識別子(URI): 汎用構文、 RFC 3986、2005年1月、IETF。( http://www.rfc-editor.org/rfc/rfc3986.txtを参照。)
UTC
勧告 TF.460-6、 標準周波数および時刻信号の 発射、国際 電気通信連合無線通信部門(ITU-R)。
UTR50
K. Ishii、Unicode縦書きテキスト レイアウト、ユニコードコンソーシアム、2016年11月23日。( http://www.unicode.org/reports/tr50/tr50-17.htmlを参照。)
WCAG
Ben Caldwellほか編、 ウェブ コンテンツアクセシビリティガイドライン(WCAG)2.0、W3C勧告、 2008年12月11日。( http://www.w3.org/TR/2008/REC-WCAG20-20081211/を参照。)
XLink 1.1
Steve DeRoseほか XMLリンク言語(XLink) バージョン1.1、 W3C勧告、2010年5月06日。( http://www.w3.org/TR/2010/REC-xlink11-20100506/を参照。)
XML 1.0
Tim Brayほか 拡張可能マークアップ言語(XML) 1.0(第5版)、W3C勧告、2008年11月26日。( http://www.w3.org/TR/2008/REC-xml-20081126/を参照。)
XML Base
Jonathan MarshおよびRichard Tobin編、 XML Base(第2 版)、 W3C勧告、2009年1月28日。( http://www.w3.org/TR/2009/REC-xmlbase-20090128/を参照。)
XML ID
Jonathan Marsh、Daniel Veillard、Norman Walsh編、 xml:id バージョン1.0、 W3C勧告、2005年9月09日。( http://www.w3.org/TR/2005/REC-xml-id-20050909/を参照。)
XML情報集合
John CowanおよびRichard Tobin編、 XML情報集合(第2 版)、 W3C勧告、2004年2月04日。( http://www.w3.org/TR/2004/REC-xml-infoset-20040204/を参照。)
XML名前空間1.0
Tim Brayほか XMLの 名前空間1.0(第3版)、W3C勧告、2009年12月8日。( http://www.w3.org/TR/2009/REC-xml-names-20091208/を参照。)
XML Schema 第1部
Henry S. Thompson、David Beech、 Murray Maloney、Noah Mendelsohn編、 XML Schema 第1部: 構造、 W3C勧告、2004年10月28日。( https://www.w3.org/TR/2004/REC-xmlschema-1-20041028/を参照。)
XML Schema 第2部
Paul BironおよびAshok Malhotra、 XML Schema 第2部: データ型、 W3C勧告、2004年10月28日。( https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/を参照。)
XSL-FO 1.1
Anders Berglund, 拡張可能スタイルシート言語(XSL) バージョン1.1、 W3C勧告、2006年12月05日。( http://www.w3.org/TR/2006/REC-xsl11-20061205/を参照。)

L その他の参考文献(非規範的)

CC-DECODER-REQ
アナログテレビ受像機用 クローズドキャプションデコーダー の要件、 米国連邦規則集、第47編、第1巻、第79部、§79.101。( http://www.gpo.gov/fdsys/pkg/CFR-2012-title47-vol4/pdf/CFR-2012-title47-vol4-sec79-101.pdfを参照。)
CLREQ
Bobby Tungほか、 中国語組版 処理の要件、 W3C作業草案、2017年12月29日。 (https://www.w3.org/TR/2017/WD-clreq-20171229/を参照。)
CSS2
Bert Bosほか、 カスケーディング スタイルシート、レベル2 改訂1、W3C勧告、2011年6月07日。 (http://www.w3.org/TR/2011/REC-CSS2-20110607/を参照。)
CSSの背景と境界線
Bert Bos、Elika EtamadおよびBrad Kemper、 CSSの背景と 境界線モジュール レベル3、 W3C勧告候補、2017年10月17日。( https://www.w3.org/TR/2017/CR-css-backgrounds-3-20171017/を参照。)
CSSの色
Tantek Çelik、Chris Lilley、およびL. David Baron、 CSSの色 モジュール レベル3、W3C勧告、2018年6月19日。( https://www.w3.org/TR/2018/REC-css-color-3-20180619/を参照。)
CSS Flex
Tab Atkins、Elika Etemad、およびRossen Atanassov、 CSSフレキシブルボックスレイアウトモジュール レベル1、 W3C勧告候補、2018年11月19日。( https://www.w3.org/TR/2018/CR-css-flexbox-1-20181119/を参照。)
CSSのフォント
John Daggett、Myles Maxfield、およびChris Lilley、 CSSフォントモジュール レベル 3、 W3C勧告、2018年9月20日。( https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/を参照。)
CSSの断片化
Rossen AtanassovおよびElika Etemad、 CSS断片化モジュール レベル 3、 W3C勧告候補、2018年12月04日。( https://www.w3.org/TR/2018/CR-css-break-3-20181204/を参照。)
CSSのルビ
Elika EtemadおよびKoji Ishii、 CSSルビレイアウトモジュール レベル 1、 W3C作業草案、2014年8月05日。( https://www.w3.org/TR/2014/WD-css-ruby-1-20140805/を参照。)
CSSのテキスト
Elika Etamad、Koji Ishii、およびFlorian Rivoal CSSテキストモジュール レベル 3、 W3C作業草案、2019年11月13日。( https://www.w3.org/TR/2019/WD-css-text-3-20191113/を参照。)
CSSのテキスト装飾
Elika EtamadおよびKoji Ishii、 CSSテキスト装飾モジュール レベル3、 W3C勧告候補、2019年8月13日。( https://www.w3.org/TR/2019/CR-css-text-decor-3-20190813/を参照。)
CSSの変形
Simon Fraser、Dean Jackson、Theresa O'Connor、およびDirk Schulze、 CSS変形モジュール レベル 1、 W3C勧告候補、2019年2月14日。( https://www.w3.org/TR/2019/CR-css-transforms-1-20190214/を参照。)
CSSの書字モード
Elika EtamadおよびKoji Ishii、 CSS書字モード レベル 3、 W3C勧告、2019年12月10日。( https://www.w3.org/TR/2019/REC-css-writing-modes-3-20191210/を参照。)
CTA-608-E
EIA/CTA-608-E, 第21走査線データ サービス、EIA/CTA規格、 米国民生技術協会(CTA)。
CTA-708-E
CTA-708-D, デジタルテレビ(DTV)のクローズドキャプション、CTA 規格、 米国民生技術協会(CTA)。
Dataスキーム
L. Masinter, "data" URLスキーム、 RFC 2397、1998年8月、IETF。( http://www.rfc-editor.org/rfc/rfc2397.txtを参照。)
DCMES 1.1
Dublin Core Metadata Initiative, Dublin Coreメタデータ要素集合、バージョン1.1: 参照記述。( http://dublincore.org/documents/dces/を参照。)
EBU-TT-D
EBU Tech 3380, EBU-TT-D字幕配信形式、 バージョン1.0、 欧州放送連合(EBU)、2015年3月。 (https://tech.ebu.ch/publications/tech3380を参照。)
EBU-TT-Live
EBU Tech 3370, EBU-TT 第3部 ライブ字幕 アプリケーション、バージョン1.0、欧州放送連合(EBU)、2017年5月。 (https://tech.ebu.ch/publications/tech3370を参照。)
DVBSS
ETSI EN 300 743, デジタル ビデオ放送(DVB);字幕システム、バージョン1.5.1、ETSI、2014年1月。 (https://www.etsi.org/deliver/etsi_en/300700_300799/300743/01.05.01_60/en_300743v010501p.pdfを参照。)
HTML
Anne van Kesteren、Domenic Denicola、Ian Hickson、Philip Jägenstedt、およびSimon Pieters編、 HTML 標準、 WHATWG。コミットスナップショット(この版以降を使用)。2020年1月22日。( https://html.spec.whatwg.org/commit-snapshots/2793ee4a461c6c39896395f1a45c269ea820c47e/を参照。)
ISOBMFF TT
ISO/IEC 14496-30, 情報技術 – オーディオビジュアルオブジェクトの符号化 – 第 30部:ISOベースメディアファイル形式におけるタイムドテキストおよびその他の視覚的オーバーレイ、 国際標準化機構(ISO)。
ITU BT.2100-1
勧告 ITU-R BT.2100-1、 制作および国際番組交換に用いる高ダイナミックレンジ テレビの画像パラメーター値
MPEG DASH
ISO/IEC 23009-1, 情報技術 – HTTP上の動的適応ストリーミング (DASH)、 国際標準化機構(ISO)。
MPEG7-5
ISO/IEC 15938-5, 情報技術 – マルチメディアコンテンツ記述 インターフェース – 第5部:マルチメディア記述スキーム、 国際標準化機構(ISO)。
NSOriginal
Tim Brayほか XMLの 名前空間、W3C勧告、1999年1月14日。( http://www.w3.org/TR/1999/REC-xml-names-19990114/を参照。)
NSState
Norman Walsh編、 XML名前空間における 名前の扱い、TAG見解、2006年1月9日。( http://www.w3.org/2001/tag/doc/namespaceState-2006-01-09を参照。)
OFF
ISO/IEC 14496-22, 情報技術 – オーディオビジュアルオブジェクトの符号化 – 第 22部:オープンフォント形式、 国際標準化機構(ISO)。

注:

この仕様の無償公開版については、 http://standards.iso.org/ittf/PubliclyAvailableStandards/c066391_ISO_IEC_14496-22_2015.zipを参照。 関連するOpenType仕様のMicrosoft版については、 https://docs.microsoft.com/en-us/typography/opentype/spec/を参照。 OpenTypeはMicrosoft Corporationの登録商標である。

PQ PNG
Pierre-Anthony Lemieux, PNG形式でのITU BT.2100 PQ EOTFの 使用、 W3Cワーキンググループノート、2017年9月11日。( https://www.w3.org/TR/png-hdr-pq/を参照。)
QAF SG
Karl Dubostほか、 QA フレームワーク:仕様ガイドライン、W3C勧告、 2005年8月17日。( http://www.w3.org/TR/qaframe-spec/を参照。)
SMITH
Smith, Michael D.; Malia, Jason、立体3D映像における ミニチュア化の制御、Motion Imaging Journal、SMPTE、第124巻、第3号、 50-58ページ、2015年4月 doi: 10.5594/m001513。
SMPTE RP 2052-11:2013
SMPTE RP 2052-11:2013, CTA-708キャプションデータから SMPTE-TTへの変換、 SMPTE推奨実施規定。
SMPTE ST 170
SMPTE ST 170:2004, テレビ – 複合アナログ映像 信号 – スタジオ用途のNTSC、SMPTE規格。
SMPTE ST 2052-1
SMPTE ST 2052-1:2013, タイムドテキスト形式 (SMPTE-TT)、 SMPTE規格。
SSML 1.0
Daniel Burnettほか、 音声合成マークアップ 言語 (SSML)バージョン1.0、 W3C勧告、2004年9月7日。( http://www.w3.org/TR/2004/REC-speech-synthesis-20040907/を参照。)
TTAF1-REQ
Glenn Adams編、 タイムドテキスト(TT)オーサリング形式 1.0のユース ケースと要件、 W3Cワーキンググループノート、2006年4月27日。( http://www.w3.org/TR/2006/NOTE-ttaf1-req-20060427/を参照。)
WEBAUDIO
Paul Adenot、Raymond Toy編、 Web Web Audio API、W3C勧告候補、2018年9月18日。( https://www.w3.org/TR/2018/CR-webaudio-20180918/を参照。)
XHTML 1.0
Steven Pembertonほか、 XHTML™ 1.0、 拡張可能ハイパーテキストマークアップ言語(第2版)、 W3C勧告、2002年 8月01日。( http://www.w3.org/TR/2002/REC-xhtml1-20020801/を参照。)
XMLガイドライン
Scott Hollenbeckほか、 IETFプロトコルにおける拡張可能 マークアップ言語(XML) の使用ガイドライン、 RFC 3470、2003年1月、IETF。(http://www.rfc-editor.org/rfc/rfc3470.txtを参照。)
XMLメディア型
Makato Murata、Simon St. Laurent、 Kan Khon編、XMLメディア 型、 RFC 3023、2001年1月、IETF。( http://www.rfc-editor.org/rfc/rfc3023.txtを参照。)
XYZ
ISO 11664-1:2007, ISO/CIE合同規格:測色 第1部。 CIE標準測色観測者、 国際標準化機構(ISO)。 (https://www.iso.org/standard/52495.htmlを参照。)
XPROC
Norman Walsh、Alex Milowski、Henry S. Thompson編、 XProc:XMLパイプライン言語、 W3C勧告、2010年5月11日。 (https://www.w3.org/TR/xproc/を参照。)
XSLT3
XSL変換(XSLT)バージョン3.0、 Michael Kay編、 W3C勧告、2017年6月8日。 (https://www.w3.org/TR/xslt-30/を参照。)
FINGER
Nick Doty編、ウェブ仕様における ブラウザーフィンガープリンティングの軽減、 W3Cインタレストグループノート、2019年3月28日。( https://www.w3.org/TR/2019/NOTE-fingerprinting-guidance-20190328/を参照。)

M 要件(非規範的)

タイムドテキストマークアップ言語(TTML)は、タイムドテキストオーサリング 形式(TTAF)の 配信形式交換プロファイル(DFXP)とも呼ばれ、 [TTAF1-REQ]で定められた要件の一部を満たす。次の表はこれらの要件を列挙し、 この仕様がそれらを満たす程度を示す。ここで、 Sは要件が満たされていることを、Pは 要件が部分的に満たされていることを、Nは要件が 満たされていないことを示す。

表M-1 – 要件の充足状況
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)、 色、 非表示、 インラインブロック表示、 表示の整列、 フォントファミリー、 フォントサイズ、 フォントスタイル、 フォントウェイト、 高さ、 インライン進行方向の寸法、 行の高さ、 行の折り返しオプション、 不透明度、 原点、 オーバーフロー、 パディング(before、after、start、end)、 相対位置、 テキストの整列、 テキスト装飾、 テキストの影、 可視性、 空白の折り畳み、 空白処理、 幅、 書字モード、 z-index
R390 スタイルパラメーターの対称性 S
R391 スタイルパラメーターの定義 S
R392 スタイルパラメーターの短縮形 S
R401 インラインの時間指定 S
R402 アウトオブラインの時間指定 N
R403 同期パラメーター P begin、end、durをサポート
R404 同期パラメーターの値空間 P オフセット値、メディアマーカー値(SMPTE 12M)、実時刻値をサポート
R405 時間包含の意味論 P 逐次、並列をサポート
R500 アニメーションモード S animate、animationおよびsetを参照
R501 スクロールアニメーション N
R502 強調表示アニメーション S <set tts:backgroundColor="..."/>
R503 フェード遷移アニメーション S <animate tts:opacity="..."/>
R504 アニメーション化されるスタイルパラメーター – 聴覚 P <animate tta:pan="..."/> 、また、 tta:gain 、tta:pitch および tta:speakにも適用
R505 アニメーション化されるスタイルパラメーター – 視覚 P 次のアニメーション化をサポート: 背景色、 境界線の色、 色、 表示、 不透明度、 原点、 可視性
N506 アニメーション化されるコンテンツ S
R600 メタデータ項目の関連付け S metadata、Metadata.classを参照
R601 メタデータ項目の構成要素 P 名前、値をサポート
R602 メタデータ項目の値表現 P metadataを参照
R603 メタデータ項目の拡張性 S metadataおよびttm:itemを参照
R604 メタデータ項目の検証 S metadataを参照
R690 Dublin Coreの優先使用 N ttm:copyright、ttm:desc、ttm:titleおよび 汎用のttm:itemを使用

注:

  1. R217には元のテキストの存在に関する下位要件が含まれる。ただし、この 仕様は作成者による使用に 制約を課さないため、この下位要件は適用範囲外と判断されている。

N 語彙の導出 (非規範的)

この付録では、TTML 語彙の導出に関する情報を提供し、 要素と属性の導出を 個別に説明する。

N.1 要素の導出

表 N-1 – 要素 の第1列は、 TTML の要素語彙項目を指定する。第2列は、 その語彙項目の基礎となる構文モデルおよび(または)意味モデルを指定する。 第3列は、そのモデルを定義する参照文献を 指定する(モデルが示されている場合)。 第4列は、導出の詳細を指定する。最後の 列は、導出の性質を説明する追加の注記を 参照する。

導出の詳細を記述する第4列では、 属性の追加または削除を示す記法を使用する。 たとえば、tt:div 要素の導出では、 詳細列に "-@class" が含まれる。これは、 class 属性、すなわち xhtml:div モデル要素での使用が指定されている属性が、 対応する TTML 要素では指定されていないことを示す。一方、詳細列には "+@begin" が含まれる。これは、begin 属性が追加されること、 すなわち xhtml:div モデル要素では使用が 指定されていない属性が追加されることを示す。

表 N-1 – 要素
要素 モデル 参照文献 詳細 注記
tt:animate svg:animate [SVG 1.1] -@* ただし begin, calcMode, dur, end, fill, keySplines, keyTimes, repeatCount を除く; +style, +@tts:*, +@xml:id 3,6
tt:animation tt:styling [TTML1] 概念上の導出 4,12
tt:audio audio [HTML] -@accesskey, -@autoplay, -@class, -@contenteditable, -@controls, -@crossorigin, -@dir, -@draggable, -@hidden, -@id, -@lang, -@loop, -@muted, -@preload, -@spellcheck, -@tabindex, -@title, -@translate; +@animate, +@begin, +@clipBegin, +@clipEnd, +@condition, +@dur, +@end, +@format, +@style, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xml:id, +@xml:lang, +@xml:space 2,3
tt:body xhtml:body [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*; 内容モデルを 0 個以上の区分 (div) 子要素に制限し、 任意のメタデータ子要素とアニメーション子要素で拡張 1,2
tt:br xhtml:br [XHTML 1.0] -@class, -@title; +@ttm:*, +@tts:*, +@xml:lang, +@xml:space; 内容モデルを、 他の内容語彙との整合性を保つため、任意のメタデータ子要素と アニメーション子要素で拡張 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; 内容モデルを 0 個以上の段落 (p) 子要素に制限し、 任意のメタデータ子要素とアニメーション子要素で拡張 1,2,3
tt:font なし
tt:head xhtml:head [XHTML 1.0] -@dir, -@lang, -@profile; +@id, +@xml:space; 内容モデルを、 任意のメタデータ子要素に続いて任意のスタイリング子要素、 さらに任意のレイアウト子要素が続くように変更 1,3
tt:image img [HTML] -@accesskey, -@alt, -@class, -@contenteditable, -@crossorigin, -@dir, -@draggable, -@height, -@hidden, -@id, -@ismap, -@lang, -@longdesc -@referrerpolicy -@sizes, -@spellcheck, -@srcset, -@tabindex, -@title, -@translate; -@usemap, -@width; +@animate, +@begin, +@condition, +@dur, +@end, +@format, +@region, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xlink:href, +@xlink:role, +@xlink:show, +@xlink:title, +@xml:id, +@xml:lang, +@xml:space 2,3
tt:initial なし
tt:layout fo:simple-page-master [XSL-FO 1.1] 概念上の導出 4
tt:metadata svg:metadata [SVG 1.1] +@ttm:*, +@xml:lang, +@xml:space; 内容モデルは 混合ではない (#PCDATA なし) 3
tt:p xhtml:p [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 内容モデルを 0 個以上の span 子要素に制限し、任意の メタデータ子要素とアニメーション子要素で拡張 1,2,3
tt:region fo:region-* [XSL-FO 1.1] 概念上の導出 4
tt:resources svg:defs 概念上の導出 4
tt:set svg:set [SVG 1.1] -@* ただし begin, dur, end を除く; +@tts:*, +@xml:lang, +@xml:space 3,6
tt:source source [HTML] -@media, @srcset, @sizes; +@condition, @format, @xml:space 3
tt:span xhtml:span [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 内容モデルを 0 個以上の #PCDATA または改行 (br) 子要素に制限し、 任意のメタデータ子要素とアニメーション子要素で拡張 1,2,3
tt:style スタイル指定 [CSS2] 識別子を持つ、スタイルプロパティの名前と値の対の集合を XML で表現し、他の style 要素への参照によって 他のスタイルを任意で含める 7
tt:styling xhtml:style [XHTML 1.0] それぞれを style 子要素で表した、 スタイル指定集合の集合の XML 表現 1,7
tt:tt xhtml:html [XHTML 1.0] -@dir, -@lang; +@id, +@ttp:*, +@xml:space; 内容モデルを、 body および(または)head の省略を許可することにより制限 1,8
ttm:actor mpeg7:Creator [MPEG7-5] 概念上の導出 4
ttm:agent mpeg7:Agent [MPEG7-5] 概念上の導出 4
ttm:copyright mpeg7:CopyrightString [MPEG7-5] 概念上の導出 4
ttm:desc svg:desc [SVG 1.1] -@class, -@style 2,9
ttm:item meta [HTML] 概念上の導出 4
ttm:name mpeg7:Name [MPEG7-5] 概念上の導出 4
ttm:title svg:title [SVG 1.1] -@class, -@style 2,9
ttp:extension @requiredExtensions [SVG 1.1] 概念上の導出 10
ttp:extensions @requiredExtensions [SVG 1.1] 概念上の導出 10
ttp:feature @requiredFeatures [SVG 1.1] 概念上の導出 10
ttp:features @requiredFeatures [SVG 1.1] 概念上の導出 10
ttp:profile @baseProfile [SVG 1.1] 概念上の導出 11

注:

  1. 導出は、厳密 DTD、すなわち [XHTML 1.0] の §A.1 で定義される DTD に関して示される。

  2. class 属性は、実質的に style 属性によって置き換えられる。この属性は、インラインスタイルを指定する代わりに、 1 個以上の style 要素を間接的に参照し、それらの要素がスタイル指定集合の集合を定義する。

  3. xml:lang 属性と xml:space 属性は、すべての 要素 型に対して定義される。これは、その継承の意味論が 外部名前空間の要素の文脈でも機能することを支援するためである。

  4. 導出は概念上(観念上)のものに限られる。

  5. 削除済み

  6. attributeName 属性と to 属性、すなわち svg:set のこれらの属性は、 対象属性の名前と値の直接的な表現によって置き換えられ、 tts:* 属性を使用する。

  7. CSS のスタイル指定構文は、 TT スタイル名前空間で定義された属性を使用して XML に対応付けられる。

  8. xml:id 属性は、すべての要素型で使用できるように定義される。

  9. style 属性がサポートされる 要素型は、10.2.1 style に列挙されている。

  10. @requiredExtensions および @requiredFeatures の svg:svg 要素での使用から導出されるが、 任意性を区別して指定できるように拡張されている。

  11. @baseProfile および @version の svg:svg 要素での使用から導出される。

  12. 既存の tt:styling 要素から概念的に導出される。 これはスタイリング指定の汎用コンテナーであるが、 アニメーション指定の定義に使用する。

N.2 属性の導出

表 N-2 – 属性 の第1列は、 TTML の属性語彙項目を指定する。第2列は、 その語彙項目の基礎となる構文モデルおよび(または)意味モデルを指定する。 第3列は、そのモデルを定義する参照文献を 指定する(モデルが示されている場合)。 第4列は、導出の詳細を指定する。最後の 列は、導出の性質を説明する追加の注記を 参照する。

導出の詳細を記述する第4列では、 属性値の追加または削除を示す 記法を使用する。たとえば、timeContainer 属性の導出では、 詳細列に "-excl" が含まれる。これは、 excl 値、すなわち timeContainer モデル属性での使用が指定されている値が、 対応する TTML 属性では指定されていないことを示す。同様に、"+value" が詳細列にある場合、その属性の値が value を含むように拡張されていることを示す。

以下には、複数の TTML 要素型で使用するように指定された 属性のみを列挙する。特定の TTML 要素型に対して 固有に定義される要素ごとの名前空間属性は、 以下には列挙しないが、該当する要素型の 導出の一部と見なす。その導出は、上記の 表 N-1 – 要素 に記述されている。

スタイル属性の導出は、以下に別途列挙する。

表 N-2 – 属性
属性 モデル 参照文献 詳細 注記
begin begin [SMIL 3.0] 注記を参照 1,2,3
dur dur [SMIL 3.0] 注記を参照 1,2,3
end end [SMIL 3.0] 注記を参照 1,2,3
region master-reference [XSL-FO 1.1] 概念上の導出
style class [CSS2] スタイル指定の参照を直接解決する
timeContainer timeContainer [SMIL 3.0] -excl, -none; 既定の属性値なし 4
ttm:agent なし 内容のエージェントを指定するために使用
ttm:role なし 内容の役割を指定するために使用
ttp:cellResolution なし セルに基づく座標に対する均一な格子の解像度を表す
ttp:clockMode なし 時刻表現の解釈方法を決定する
ttp:frameRate なし 整数のフレームレートを表す
ttp:frameRateMultiplier なし 整数ではない有理数のフレームレートを表すために使用
ttp:markerMode なし マーカーの連続性の意味論を表す
ttp:pixelAspectRatio なし ルートコンテナーのピクセルアスペクト比を表す
ttp:profile なし 使用される TTML プロファイルを表し、その使用元は 文書 インスタンス である
ttp:dropMode なし フレーム計数(ドロップ)モードを表す
ttp:subFrameRate なし サブフレームレートを表す
ttp:tickRate なし ティックに基づく時刻表現を解釈するために使用
ttp:timeBase なし 時刻表現の意味論を解釈するために使用
xml:id xml:id [XML ID] モデルに準拠
xml:lang xml:lang [XML 1.0] モデルに準拠
xml:space xml:space [XML 1.0] 注記を参照 5

注:

  1. 次のいずれかを示すクロック値の表現に 制限される。その選択は、パラメーターを表す ttp:timeBase 属性が media、smpte、 または clock のいずれであるかに、それぞれ対応する: (1) メディアタイムラインに結び付けられた暗黙の同期基点からの オフセット、(2) 暗黙のメディアマーカーの 発生を表すイベント時刻、または (3) 壁時計の 時刻。

  2. 構文上、[SMIL 3.0] の Clock-value 構文を次のように制限および拡張する: (1) 非負の Full-clock-value または Timecount-value を要求する; (2) Full-clock-value の場合、 hours は 2 桁以上でなければならない; (3) Timecount-value の場合、metric を 指定しなければならない; (4) m を、分を示す min 単位の 別名として使用する; (5) f 単位と t 単位を追加し、それぞれフレームと ティックを示す; (6) 任意の Fraction の代替表現を Full-clock-value に追加し、フレーム数、または サブフレーム数を伴うフレーム数を指定する。

  3. 時刻表現の解釈は、さらに 次の属性によって表されるパラメーターにより制約される: ttp:clockMode, ttp:dropMode, ttp:frameRate, ttp:frameRateMultiplier, ttp:markerMode, ttp:subFrameRate, ttp:tickRate、および ttp:timeBase 属性。

  4. 指定されていない場合、並列 (par) コンテナーの意味論が、 12.2.4 timeContainer で指定される要素型に適用される。

  5. ルート要素では、既定の属性値として default が指定され、これは空白の 正規化によって定義される。保持と既定の正規化の意味論は、 提示の意味論によって 8.2.10 xml:space で定義される。

N.2.1 スタイル属性の導出

この節では、各スタイル属性の導出元、または同等と見なすことができる 参照文献を、参照元との差異とともに列挙する。 TTML のスタイル属性を同等の CSS プロパティに、また利用可能な場合は XSL プロパティに対応付けるための参考資料として使用できる。他の対応付けも 可能であり、たとえば [SVG 1.1] への対応付けがある。

CSS との同等性は、それぞれの 中間同期文書 が、同等の [HTML] DOM 構造に対応付けられ、その要素に 記載されたスタイルプロパティが与えられることを前提とする。

注:

TTML では、スタイル属性の名前と値は、 lowerCamelCase 命名規則を使用するように正規化される。

N.2.1.1 tts:backgroundClip
参照文献 [CSS Backgrounds and Borders], §3.7
モデル background-clip
値 値は直接対応する。
注記 なし
N.2.1.2 tts:backgroundColor
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.8.2 [CSS2], §14.2.1
モデル background-color background-color
値 -inherit 値は直接対応する
注記 モデルの名前付き色の部分集合を使用し、次の 2 つの別名を 追加する: magenta を fuchsia の別名とし、 cyan を aqua の別名とする。 モデルの名前付き色の部分集合を使用し、次の 2 つの別名を 追加する: magenta を fuchsia の別名とし、 cyan を aqua の別名とする。名前付き色 orange はサポートされない。
N.2.1.3 tts:backgroundExtent
参照文献 [CSS Backgrounds and Borders], §3.9
モデル background-size
値 値は直接対応する
注記 なし
N.2.1.4 tts:backgroundImage
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.8.3 [CSS2], §14.2.1
モデル background-image background-image
値 -inherit -inherit
注記 なし なし
N.2.1.5 tts:backgroundOrigin
参照文献 [CSS Backgrounds and Borders], §3.8
モデル background-origin
値 値は直接対応する
注記 なし
N.2.1.6 tts:backgroundPosition
参照文献 [CSS2], §14.2
モデル background-position
値 値は直接対応する
注記 なし
N.2.1.7 tts:backgroundRepeat
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.8.4 [CSS2], §14.2.1
モデル background-repeat background-repeat
値
  • -inherit,

  • repeatX は repeat-x に対応する,

  • repeatY は repeat-y に対応する,

  • noRepeat は no-repeat に対応する。

  • -inherit,

  • repeatX は repeat-x に対応する,

  • repeatY は repeat-y に対応する,

  • noRepeat は no-repeat に対応する。

注記 なし なし
N.2.1.8 tts:border
参照文献 [XSL-FO 1.1], §7.31.3、および [CSS Backgrounds and Borders], §4 および §5
モデル border
値 -inherit
注記 なし
N.2.1.9 tts:bpd
参照文献 height プロパティの定義元は [XSL-FO 1.1], §7.15.6 および [CSS2], §10.5
モデル モデルを挿入
値 値は直接対応する
注記 なし
N.2.1.10 tts:color
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.18.1 [CSS2], §14.1
モデル color color
値 -inherit -inherit
注記 モデルの名前付き色の部分集合を使用し、次の 2 つの別名を 追加する: magenta を fuchsia の別名とし、 cyan を aqua の別名とする。 モデルの名前付き色の部分集合を使用し、次の 2 つの別名を 追加する: magenta を fuchsia の別名とし、 cyan を aqua の別名とする。名前付き色 orange はサポートされない。
N.2.1.11 tts:direction
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.29.1 [CSS Writing Modes], §2.1
モデル direction direction
値 -inherit。特殊な継承の 意味論 が適用される。 特殊な継承の 意味論 が適用される。
注記 なし` なし`
N.2.1.12 tts:disparity

導出元なし。すなわち、この仕様で導入された。

注:

tts:disparity の算出値は、 [DVBSS] で定義される視差シフト値の半分に等しい。

N.2.1.13 tts:display
参照文献 [CSS2], §9.2.4
モデル display
値 対象は auto, none のみ
注記 なし
N.2.1.14 tts:displayAlign
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.14.4 [CSS Flex], §8.2
モデル display-align justify-content (下記の注記を参照)
値 -inherit, +justify
  • before は flex-start に対応する

  • center は center に対応する

  • after は flex-end に対応する

  • justify は space-between に対応する

注記 なし CSS はさまざまなレイアウトを提供する。そのようなレイアウトのうち、 同等の意味論を提供するものとして、 tts:displayAlign 属性に対応するレイアウトをここで説明する:
  • フレックスレイアウトを使用し、主軸を上から下への垂直方向に設定する: display: flex; flex-direction: column; position: absolute;

  • tts:displayAlign を justify-content に対応付ける。

N.2.1.15 tts:extent
参照文献 [XSL-FO 1.1], §7.15.6 および §7.15.14
モデル width, height
値 値は直接対応する
注記 一括指定プロパティ
N.2.1.16 tts:fontFamily
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.9.2 [CSS2], §15.3
モデル font-family font-family
値 -inherit。総称ファミリー名を制限および拡張する -inherit。総称ファミリー名を制限および拡張する
注記 CSS と同様に、リストの区切り文字の前後に空白を含めてもよい。 なし
N.2.1.17 tts:fontKerning
参照文献 [CSS Fonts], §6.3
モデル font-kerning
値 -auto
注記 なし
N.2.1.18 tts:fontSelectionStrategy

参照文献 [XSL-FO 1.1], §7.9.3.
モデル font-selection-strategy
値 -inherit, character は character-by-character に対応する
選択基準が拡張される。 なし。
N.2.1.19 tts:fontShear
参照文献 [CSS Transforms], §9.1
モデル skewX() および skewY() 2D 変換関数
値
  • skewX() は、インライン進行次元が X 軸である場合に適用される;

  • skewY() は、インライン進行次元が Y 軸である場合に適用される;

  • 百分率値は、度単位の角度に対応付けなければならない。

注記 同様の変換関数は [SVG 1.1] でも利用できる
N.2.1.20 tts:fontSize
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>.
注記
  • 特殊な 継承の意味論 が適用される。

  • サイズを、百分率でも指定できる長さの指定に制限する;

  • 任意の第2の長さ(または百分率)を追加し、 グリフの EM 正方形の水平方向と垂直方向の拡大縮小を 個別に指定できるようにする;

  • 第2の長さの 成分 の追加によって、フォントの 幅と高さを独立に指定できるようにすることは、TTML が導入した拡張である。

  • 特殊な 継承の意味論 が適用される。

  • サイズを、百分率でも指定できる長さの指定に制限する;

  • 任意の第2の長さ(または百分率)を追加し、 グリフの EM 正方形の水平方向と垂直方向の拡大縮小を 個別に指定できるようにする;

  • 第2の長さの 成分 の追加によって、フォントの 幅と高さを独立に指定できるようにすることは、TTML が導入した拡張である。

N.2.1.21 tts:fontStyle
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.9.7 [CSS2], §15.4
モデル font-style font-style
値 -inherit, -backslant -inherit
注記 なし なし
N.2.1.22 tts:fontVariant
参照文献 [CSS Fonts], §6.11
モデル font-variant-east-asian と font-variant-position および font-feature-settings
値
  • font-variant-east-asian: 次の値のみ full-width, ruby

  • font-variant-position: normal, sub, super

  • font-feature-settings: 次の値のみ hwid

注記 なし
N.2.1.23 tts:fontWeight
参照文献 [XSL-FO 1.1], §7.9.9 [CSS2], §15.6
モデル font-weight font-weight
値 -inherit, -bolder, -lighter, -<number> -inherit, -initial, -bolder, -lighter, -<number>, -unset
注記 なし なし
N.2.1.24 tts:ipd
参照文献 width プロパティの定義元は [XSL-FO 1.1], §7.15.14 および [CSS2], §10.2
モデル モデルを挿入
値 値を挿入
注記 注記を挿入
N.2.1.25 tts:letterSpacing
参照文献 [CSS Text], §8.2
モデル letter-spacing
値 値は直接対応する
注記 なし
N.2.1.26 tts:lineHeight

行の積み重ねの意味論は、CSS の行ボックスの積み重ね方式と一致することを意図している。

XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.16.4 [CSS2], §10.8
モデル line-height line-height
値 -inherit, -<number>, -<space> -inherit, -<number>, -<space>, -calc, -initial, -unset
注記 この仕様では、行の 割当矩形が per-inline-height-rectangle と整合することを意図している。これは [XSL-FO 1.1] の §4.5 で定義されており、 すなわち、CSS 方式の行ボックスの積み重ね方式を使用する。 なし
N.2.1.27 tts:luminanceGain

導出元なし。すなわち、この仕様で導入された。

N.2.1.28 tts:lineShear
参照文献 [CSS Transforms], §9.1
モデル skewX() および skewY() 2D 変換関数
値
  • skewX() は、インライン進行次元が X 軸である場合に適用される;

  • skewY() は、インライン進行次元が Y 軸である場合に適用される;

  • 百分率値は、度単位の角度に対応付けなければならない。

注記 同様の変換関数は [SVG 1.1] でも利用できる
N.2.1.29 tts:opacity
参照文献 [CSS Color], §3.2
モデル opacity
値 -inherit
注記 なし
N.2.1.30 tts:origin
参照文献 [XSL-FO 1.1]
モデル top, left
値 値は直接対応する
注記 一括指定プロパティ
N.2.1.31 tts:overflow
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
注記 なし なし
N.2.1.32 tts:padding
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.31.15 [CSS2], §8.4
モデル padding padding
値 -inherit。個々の一括指定値は、 書字モードに相対的なパディング値に対応する。その定義元は [XSL-FO 1.1], §7.8.31, 7.8.32, 7.8.33、および 7.8.34 -calc, -inherit, -unset
注記 絶対的なパディングプロパティではなく、書字モードに相対的な パディングプロパティによって表される。 TTML と XSL の辺の記述子は、抽象的なフローに 相対的な辺の記述子に対応する。その定義元は [CSS Writing Modes], §6.2:
  • before は block-start に対応する

  • end は inline-end に対応する

  • after は block-end に対応する

  • start は inline-start に対応する

これらの抽象的な辺の記述子は、さらに物理的な辺に対応付けられる。 その対応付けは、 [CSS Writing Modes] §6.4 で定義される。
N.2.1.33 tts:position
参照文献 [CSS Backgrounds and Borders], §3.6
モデル background-position
値 値は直接対応する
注記 なし
N.2.1.34 tts:ruby
参照文献 [Ruby] および [CSS Ruby]。
モデル ruby-*
値 注記および仕様本文を参照。
注記 詳細については、 [JLREQ] の §3.3 も参照。代わりに、 対応付け先を [HTML] のルビマークアップとしてもよい。
N.2.1.35 tts:rubyAlign
参照文献 [CSS Ruby], §4.3
モデル ruby-align
値 +end, +withBase。 このスタイル属性の意味論は、この仕様によって拡張される。
注記 参照文献に示された例および描画例が適用される。
N.2.1.36 tts:rubyPosition
参照文献 [CSS Ruby], §4.1
モデル モデルを挿入
値 値を挿入
注記 参照文献に示された例および描画例は、 この仕様で定義される対応付けによる差異を 考慮して適用される。
N.2.1.37 tts:rubyReserve

導出元なし。すなわち、この仕様で導入された。

N.2.1.38 tts:shear
参照文献 [CSS Transforms], §9.1
モデル skewX() および skewY() 2D 変換関数
値
  • skewX() は、インライン進行次元が X 軸である場合に適用される;

  • skewY() は、インライン進行次元が Y 軸である場合に適用される;

  • 百分率値は、度単位の角度に対応付けなければならない。

注記 同様の変換関数は [SVG 1.1] でも利用できる
N.2.1.39 tts:showBackground
参照文献 [SMIL 3.0], §7.4.2
モデル showBackground
値 -inherit
注記 なし
N.2.1.40 tts:textAlign
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 からの導出 に、 さらに詳細が示されている。
N.2.1.41 tts:textCombine
参照文献 [CSS Writing Modes], §9.1
モデル text-combine-upright
値 値は直接対応する
注記 なし
N.2.1.42 tts:textDecoration
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.17.4 [CSS2], §16.3.1
モデル text-decoration text-decoration
値 -blink, -inherit (キーワード), -no-blink -blink, -inherit (キーワード), +noUnderline, +noLineThrough, +noOverline。 lineThrough は line-through に対応する。
注記 継承可能として定義され、 特殊な継承の 意味論 に従う。 継承可能として定義され、 特殊な継承の 意味論 に従い、 下線の位置を決定する XSL の意味論が適用される。 さらに、次の値の意味論、 すなわち none の意味論は、CSS の同名の値とは異なる。 これは、TTML では、この値が noUnderline、noLineThrough、および noOverline と同等であると定義されるためである。これらは、 いずれも CSS では定義されておらず、いずれも TTML で継承された装飾を 除去する意味論を持つ。この機能は CSS では(直接には)サポートされない。
N.2.1.43 tts:textEmphasis
参照文献 [CSS Text Decoration], §3
モデル
値 auto を除き、値は直接対応する。 auto の意味論は書字モードに依存する。
注記 なし
N.2.1.44 tts:textOrientation
参照文献 [UTR50] および [CSS Writing Modes], §5.1
モデル text-orientation
値 -inherit, -sideways-left, -sideways-right, -use-glyph-orientation
注記 なし
N.2.1.45 tts:textOutline
参照文献 [XSL-FO 1.1]
モデル text-shadow
値 -inherit (キーワード)、継承可能として定義される
注記 2 つではなく 1 つの長さの指定のみを使用する。その長さは、 グリフの輪郭上の各点で輪郭に垂直な方向に測った、 グリフの公称の輪郭縁からの縁取り効果の距離を定義する。百分率の長さも 追加され、フォントサイズに相対的な縁取り効果を表す。 縁取り効果は、外側の閉じた輪郭の外側と、 内側の閉じた輪郭の内側の両方に描画されることを意図している。
N.2.1.46 tts:textShadow
参照文献 [CSS Text Decoration], §4
モデル text-shadow
値 値は直接対応する
注記 なし
N.2.1.47 tts:unicodeBidi
参照文献 [XSL-FO 1.1], §7.29.6 および [CSS Writing Modes], §2.2
モデル unicode-bidi
値 -inherit,+isolate
注記 isolate を [CSS Writing Modes] から追加する
N.2.1.48 tts:visibility
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.30.17 [CSS2], §11.2
モデル visibility visibility
値 -inherit, -collapse -inherit, -collapse
注記 なし なし
N.2.1.49 tts:wrapOption
参照文献 [XSL-FO 1.1], §7.16.13
モデル wrap-option
値 -inherit
注記 なし
N.2.1.50 tts:writingMode
参照文献 [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
注記 なし
N.2.1.51 tts:zIndex
XSL からの導出 CSS からの導出
参照文献 [XSL-FO 1.1], §7.30.18 [CSS2], §9.9.1
モデル z-index z-index
値 -inherit -inherit
注記 なし なし

O QA フレームワークへの準拠 (非規範的)

この付録では、この仕様が準拠する要件とガイドラインを規定する。 これらは、QA フレームワーク仕様ガイドライン、[QAF SG] で定義されている。

O.2 ガイドライン

表 O-2 – QA フレームワークガイドラインチェックリスト
ガイドライン はい いいえ 該当なし 注記
推奨 実践 01: 仕様の適合性モデルを適合性に関する 条項で定義する。 はい
推奨 実践 02: 規範的な内容と参考情報を区別する方法を、 適合性に関する条項で指定する。 はい
推奨 実践 03: 適合性の主張に用いる文言を提供する。 はい
推奨実践 04: 実装適合性宣言のひな形を提供する。 いいえ
推奨 実践 05: 有効な適合性の主張の一部として、 実装適合性宣言を要求する。 はい
推奨 実践 06: 例、ユースケース、および図を提供する。 はい
推奨 実践 07: サンプルコードまたはテストを作成する。 はい
推奨 実践 08: 規範的な参照によって要件を課す場合は、適合性の 依存関係を扱う。 はい 1
推奨 実践 09: なじみのない用語を本文中で定義し、その定義を 用語集の節にまとめる。 はい
推奨 実践 10: すでに定義された用語を、その定義を変更せずに使用する。 はい 2
推奨 実践 11: 可能な場合は形式言語を使用する。 はい
推奨 実践 12: テスト表明を記述する。 いいえ 3
推奨 実践 13: 妥当な場合は技術を細分化する。 はい
推奨 実践 14: 技術にプロファイルが設けられている場合は、新たな プロファイルを作成するための規則を定義する。 はい
推奨 実践 15:妥当な場合は任意の機能を使用する。 はい
推奨 実践 16: 任意の機能を明確に識別する。 はい
推奨 実践 17: 任意の機能に関する制限または制約を示す。 はい
推奨 実践 18: 拡張が許可される場合は、拡張機構を定義する。 はい
推奨 実践 19: 適合性を妨げない拡張を作成するよう、 拡張の作成者に注意を促す。 はい
推奨 実践 20: 未知の拡張に対するエラー処理を定義する。 はい 4
推奨 実践 21: 非推奨の機能の使用を避ける方法を説明する。 はい
推奨 実践 22: 廃止された機能を明示する。 該当なし 5
推奨 実践 23: エラー処理機構を定義する。 はい

注:

  1. 外部仕様を規範的に参照する場合は、 特定の条項または節を引用する。

  2. N 語彙の導出 も参照。

  3. テスト表明とテストスイートは、 勧告案 (PR) 段階に入る前に提供される。

  4. 3.2 処理系の適合性 の基準 #3 および TTML 抽象文書インスタンス の定義を参照。

  5. このバージョンの TTML で廃止される機能はない。

P セキュリティとプライバシーに関する考慮事項 (非規範的)

P.1 具体的な符号化としての XML の使用

[XML 1.0] が具体的な符号化として タイムドテキスト文書インスタンス に使用される場合、 セキュリティに関する考慮事項は [XML Media Types] および [XML Guidelines] で規定されるものが適用される。

注:

XML 実体は、縮約 XML 情報集合、すなわち タイムドテキスト文書インスタンス の情報集合には含まれない; それでも、 実装には、再帰的な実体展開に対する保護を提供するか、 TTML 処理系で実体展開を全面的に防止することが推奨される。

P.2 文書処理

タイムドテキスト文書インスタンス は、 内容処理系 によって何らかの方法で処理されることを意図している。 この仕様は、適合する処理の意味、すなわち タイムドテキスト文書インスタンス をそのような処理系で処理することの意味を定義するが、 その処理系の実際の実装は、この仕様の適用範囲外である。

P.3 リソースの取得

この仕様は、タイムド テキスト文書インスタンス が 音声、フォント、画像、および型のない(汎用の)データリソースを含む外部リソースを 参照できるようにする機構を定義する。 そのようなリソースの取得、および具体的な表現の取得、すなわち タイムドテキスト文書インスタンス の表現の取得は、 内容処理系 が全面的に制御する。したがって、 そのようなリソースへのアクセスを許可または制限するための制御も、 この仕様の適用範囲外である。

外部リソースを取得する場合、内容処理系は、 potential-CORS リクエストを作成する の実行が必要かどうかを判断するべきである。この処理は、 [HTML] §2.6、リソースの取得 で定義される。

そのようなリソースの取得が、内容 処理系 によって阻止された場合、 文書全体または文書の一部が意図どおりに処理されない可能性があり、 その結果、文書の内容の 一部または全部が提示処理に利用できなくなる可能性がある。

内容処理系 がメディア再生中に外部リソースをダウンロードすると、 ユーザーによるメディア視聴の進行状況が、そのリソースの オリジンサーバーに伝わる。多くの場合、このようなメディアの進行情報は、 他の機構を通じてメディアのオリジンサーバーが利用できる。たとえば、 スクリプトやストリーミングメディアのリクエストの監視によるものがある。

内容処理系 が外部リソースのダウンロード時にクロスオリジンポリシーを 適用しない場合、そのようなメディアの進行情報や、場合によっては その他のユーザー追跡情報が、メディアを配信するウェブサイトの同意も ユーザーの同意も得ずに、他のオリジンに公開される。この 仕様は API を定義せず、実装が参照先のリソースをどのように取得することを 期待されるかについても規定しない。

P.4 リソースまたは処理状態のキャッシュ

タイムドテキスト文書インスタンス の処理について、 この仕様で定義するものは、 内容 処理系 による リソースまたは処理状態のキャッシュや保存を、いかなる形でも規定せず、それらに依存もしない。

P.5 スクリプト言語を含まない

この仕様は、いかなるスクリプト言語または実行可能コードの処理も 含まず、参照もしない。

P.6 外部スタイルシートを含まない

この仕様は、外部スタイルシートまたはスタイル指定の処理を 含まず、参照もしない。代わりに、 すべてのスタイル情報は TTML 文書構文に直接統合され、 この構文の 縮約 XML 情報集合 による表現に基づいて処理される。

P.7 処理状態へのアクセス

この仕様では、内容の条件付き処理を可能にする機構を定義する。条件 式では、 ユーザーの言語設定、関連するメディアの 言語、 強制キャプションが有効かどうか、およびメディアクエリー式が満たされるか どうかなど、特定の処理状態を考慮できる。 ただし、この状態への直接アクセスは TTML 内容に提供されない。代わりに、内容処理系 が この状態にアクセスし、条件が満たされるかどうかを二者択一(はい、またはいいえ)で 判断する。

P.8 ハイパーリンク機構

この仕様では、[XLink 1.1] に基づく機構を定義し、作成者が 内容を 外部文書に関連付けられるようにする。この機構の意味論を 内容処理系 がサポートするかどうかは、この仕様の適用範囲外で 決定される。 さらに、リンクの起動がサポートされる場合、その意味論も同様にこの 仕様の適用範囲外である。

P.9 選好のプライバシー

内容処理系 が選択し、ダウンロードまたは 解釈を行わせる対象である タイムドテキスト文書インスタンス によって、 オリジンサーバーには、ユーザーが キャプションまたは字幕を必要としていることが伝わる可能性があり、その結果、 キャプションまたは字幕を取得する際のユーザーの優先言語が伝わる可能性がある。 この優先言語は、 ユーザーに関する情報に当たる。ただし、タイムドテキスト文書インスタンス の提供と、 それを取得して処理するかどうかの選択は、その提供を行うアプリケーション (たとえば、ウェブ アプリケーションで [HTML] に基づくもの)の特性であり、文書インスタンス自体の特性ではない。

P.10 フォントの検出

条件付きで フォントリソース の参照を解決(ダウンロード)し、 その条件を、 ローカルにインストールされた フォントリソース の有無とする場合、内容処理系 は、 [FINGER] で定義されるフィンガープリンティングの脆弱性を生じさせる可能性がある。 そのような脆弱性の有無と軽減方法は、 内容処理系 の実装およびシステム全体の アーキテクチャに依存する。

注:

たとえば、軽減策として、ユーザーがインストールした フォントリソース を 無視し、フォント リソース の参照を解決(ダウンロード)するかどうかを判断する方法がある。

内容処理系 の実装が、 汎用ブラウザー、 すなわち [FINGER] でいうその文脈にある場合、外部フォントリソースの参照を ユーザーがインストールしたフォントの有無に応じて条件付きで解決しないことを検討するべきである。 これは、その参照の解決によってユーザーのシステムに関する情報が明らかになったり、 ユーザーのフィンガープリントが取得されたりする可能性がある場合に該当する。

Q ハイダイナミックレンジ合成 (非規範的)

この付録では、[SRGB] ピクセルをハイダイナミックレンジ (HDR) ピクセル上に合成する方法を例示する。

Q.1 知覚量子化器

以下に、tts:luminanceGain を使用して [SRGB] ピクセルを HDR ピクセル上に合成する方法を示す。 対象は、[ITU BT.2100-1] で規定されるシステム測色系に準拠し、 知覚量子化器 (PQ) EOTF とフルレンジ量子化を使用する HDR ピクセルである。

注:

次の例は、汎用的な色管理を提供し、あらゆる状況に適用できることを 意図したものではない。たとえば、合成先の サーフェスが 10 ビットであり、フルレンジ量子化を使用すると仮定している。

  1. (r, g, b) をフルレンジ 8 ビットの [SRGB] ピクセルとし、 不透明度は 0 から 1 の間とする。

  2. (R, G, B) と (Rc, Gc, Bc) を、 フルレンジ 10 ビットのピクセルとする。そのシステム測色系は [ITU BT.2100-1] で規定され、PQ EOTF とフルレンジ量子化を使用し、不透明度は A および Ac で、0 から 1 の間とする。

  3. 8 ビットのフルレンジ量子化を逆変換する:

    (r, g, b) / 255 → (r, g, b)

  4. [SRGB] の基準ディスプレイ EOTF を使用して線形化する:

    (r2.2, g2.2, b2.2) → (r, g, b)

  5. HDR の絶対輝度を、tts:luminanceGain 属性と [SRGB] の照明光を使用して計算する:

    80 ∙ tts:luminanceGain ∙ (r, g, b) → (r, g, b)

  6. [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)

  7. 10,000 cd∙m-2 に正規化する:

    (r, g, b) / 10000 → (r, g, b)

  8. [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 とする。

  9. 不透明度を適用する:

    (1-a) ∙ (r, g, b) → (r, g, b)

  10. 10 ビットのフルレンジ量子化を適用する:

    (Q(r), Q(g), Q(b)) → (r, g, b)

    ここで、Q(N) = floor(1023 ∙ N + 0.5)

  11. 合成を適用して (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 の場合

Q.2 ハイブリッドログガンマ HDR

以下に、[SRGB] ピクセルをハイブリッドログガンマ (HLG) HDR ピクセル上に合成する方法を示す。

  1. (r, g, b) をフルレンジ 8 ビットの [SRGB] ピクセルとし、 不透明度 A は 0 から 255 の間とする。

  2. (R,G,B) と (Rc,Gc,Bc) を、 ナローレンジ 10 ビットのピクセルとする。そのシステム測色系は [ITU BT.2100-1] で規定され、HLG EOTF とナローレンジ量子化を使用する。下付き文字 c は、 合成後の映像信号を示す。

  3. (X,Y,Z) を、CIE 1931 XYZ 色空間 [XYZ] で規定されるシステム測色系のピクセルとする。

  4. 8 ビットのフルレンジ量子化を逆変換する:

    (r, g, b)/255 → (r, g, b)

    A/255 → A

  5. [SRGB] の EOTF を使用して線形化する:

    (r2.0,g2.0,b2.0) → (r,g,b)

  6. [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)

  7. 簡略化した逆 HLG OOTF を適用する:

    ((0.265r),(0.265g),(0.265b)) → (r,g,b)

  8. [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)

  9. 10 ビットのナローレンジ量子化を適用する:

    (Q(r),Q(g),Q(b)) → (r,g,b)

    ここで、Q(x) = floor((940 − 64) • x + 64.5)

  10. 前景のグラフィック (r,g,b) を背景の映像 (R,G,B) 上に、不透明度 A で合成し、(Rc,Gc,Bc) を得る:

    ((A•r+(1−A)R),(A•g+(1−A)G),(A•b+(1−A)B)) → (Rc,Gc,Bc)

  11. 出力を 10 ビット信号の範囲に制限する:

    (clamp(Rc),clamp(Gc),clamp(Bc)) → (Rc,Gc,Bc)

    ここで、

    clamp(x) = 0 は x < 0 の場合

    かつ、

    clamp(x) = x は 0 ≤ x ≤ 1023 の場合

    かつ、

    clamp(x) = 1023 は x > 1023 の場合

注:

上記のアルゴリズムでは、 tts:luminanceGain 属性を使用しない。これは、HLG HDR では絶対的なゲインレベルが必要ないためである。代わりに、 このアルゴリズムは [SRGB] のピーク白を HLG の「グラフィックス白」に対応付ける。これは、 ナローレンジ信号の 75% として [ITU BT.2100-1] で定義されている。

注:

ガンマ指数 2.0 は、ガンマ 2.2 とは意図的に異なっている。後者の定義元は [SRGB] である。 その仕様の値 2.2 は、そこで指定される視聴環境に固有のものであり、 その条件に対する 視覚心理的な描画調整を含んでいる。この調整は、HLG 信号では必要ない。 HLG 信号はディスプレイでの描画を含まないためである。

R TTML 内容のストリーミング (非規範的)

TTML 内容は、ストリーミングの場面で有用となり得る、 次の特性を満たすように作成できる:

R.1 ルートおよびブランチのフラグメント化

TTML 内容をストリーミングする方法の一つとして、 文書インスタンス の情報集合を 重複しないフラグメントに分割する方法がある。そのうち特定のフラグメントを ルートフラグメント と呼び、これは 文書インスタンス の前置部 (head) と最上位の構造 要素を表し、 他のフラグメントは、時間区間が並列に アクティブとなることを想定した内容を表す。

ストリームへの任意の(ランダムな)アクセス、 すなわち、任意のデータアクセス単位からデータの読み取りを 開始できる性質を必要とするアプリケーションでは、ルートフラグメントが ストリームに繰り返し送信(挿入)される。これにより、デコーダーは 再同期し、情報集合内の十分な構造情報を 取得して、後続の内容 フラグメントを解釈できる。

文書インスタンス のこのようなフラグメント化の例を、 図 2 – フラグメントストリーミング に示す。

図 2 – フラグメントストリーミング
フラグメントストリーミング

注:

この仕様は、伝送バッファーモデルまたはデコーダーの 能力モデルを定義しない。

R.2 時間的フラグメント化

TTML 内容をストリーミングする別の方法として、 文書インスタンス の情報集合を 時間的に区切られたフラグメントに分割する方法がある。各フラグメントはそれ自体が文書インスタンスであり、 提示に必要なすべての前置部 (head) と内容を含む。各フラグメントの時間区間は、 文書 交換文脈 または 文書処理文脈、あるいはその両方によって制約され、他のフラグメントとの時間的な重複が 解決される。

たとえば、一部の文書処理文脈では、タイムライン上のいかなる瞬間にも アクティブとなり得る文書インスタンスは最大 1 つであると指定することで、時間的な重複を解決する。さらに、 複数の候補がある場合に、どの文書インスタンスをアクティブにするかを定める 優先順位規則を指定する。

すべての内容が正しく表示されることを保証するため、 ISD の区間が複数の フラグメント化区間と重複する場合、その ISD に含まれる内容を、その ISD の生成に必要な 各フラグメント内で複製する必要がある場合がある。実装は、区間以外は同一である隣接した ISD を 識別し、結合した区間を覆う単一の ISD に置き換えることができる。

この方法の意図は、提示処理系が、ストリーミングされない文書 インスタンスから生成されるものと同等の ISD の列を生成できるようにすることであり、 同時に、セグメントの持続時間を変えることで、調整可能な量の 前置部の重複を回避できる利点を活用することである。元のソースを再構成しても、 同一の文書インスタンスが得られるとは保証されない。

注:

この手法は、たとえば [ISOBMFF TT] および [EBU-TT-Live] で使用される。

文書インスタンス のこのようなフラグメント化の例を、 図 3 – 時間的フラグメント化 に示す。

図 3 – 時間的フラグメント化
時間的フラグメント化

注:

上記の例では、単一の文書インスタンスが、区間 T1 から T6 までの間に表示される内容を持ち、2 つの文書インスタンス(セグメント)に分割される。 最初のものは、すべての必要な内容と、参照されるスタイルおよび領域を、T1 から T3 までについて含み、2 番目のものは、すべての必要な内容と、参照されるスタイルおよび領域を、 該当する区間、 T4 から T6 までについて含む。

R.3 ISD ストリーミング

文書インスタンス を、 タイムドテキスト 中間文書インスタンス の列に変換し、それらを個別の実体としてストリーミングすることができる。

この手法はクライアントの処理要件を最小限に抑える一方で、関連するすべての前置部を、 それが適用されるすべての ISD に複製することを要求する。元のソースを再構成しても、 同一の文書インスタンスが得られるとは保証されない。

S 一般的なキャプションスタイルの例 (非規範的)

この節では、TTML 内容を使用して所望の動作を実現する、 次の一般的なキャプションスタイルの例を示す:

S.1 ポップオンキャプションの例

ペイントオンキャプションの例。この例では、2 つの領域を対象としてペイントオン内容を交互に表示し、 内容のタイミングは、 明示的な逐次時間包含規則を使用して設定する。各段落は時間的に重複せず、 対象となる領域の同じ 1 行に 表示される。

例 – ポップオンキャプション
<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>

S.2 ロールアップキャプションの例

ロールアップキャプションの例。ロールアップ効果は、重複する時間区間を使用して実現され、 ある時点では、0 個、1 個、または 2 個の段落が領域内に 表示される。折り返しが発生しないため、各段落は領域内の 1 行を占める。 提示処理系 が、 隣接する同期中間文書インスタンス間の 滑らかなスクロール をサポートするかどうかに応じて、遷移、すなわち 古い段落(行)を外へ移動し、新しい段落(行)を中へ移動する動作は、滑らかになるか、離散的になる。

例 – ロールアップキャプション
<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>

S.3 ペイントオンキャプションの例

ペイントオンキャプションの例。ペイントオン効果は、タイミングを設定した span 要素を使用し、単語などのインラインテキスト単位を、 ある時間区間にわたって表示(描画)することで実現される。ここでは、5 つの段落の各単語に逐次的なタイミングを設定し、 毎秒 1 つの新しい単語を描画する。各インライン要素のアクティブ持続時間の 終了は、div 要素の並列時間 コンテナーの終了と一致するため、単語は一度描画されると、領域内(その描画された行)に残り、 div 要素のアクティブ時間区間が終了するまで表示される。

例 – ペイントオンキャプション
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
  xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 5c"/>
    </layout>
  </head>
  <body>
    <div begin="0s" end="25s">
      <p>
        <span begin="0s">Lorem</span>
        <span begin="1s">ipsum</span>
        <span begin="2s">dolor</span>
        <span begin="3s">sit</span>
      </p>
      <p>
        <span begin="4s">Amet</span>                
        <span begin="5s">consectetur</span>
        <span begin="6s">adipiscing</span>
        <span begin="7s">elit</span>
      </p>
      <p>
        <span begin="8s">Sed</span>
        <span begin="9s">do</span>
        <span begin="10s">eiusmod</span>
        <span begin="11s">tempor</span>
        <span begin="12s">incididunt </span>
        <span begin="13s">labore</span>
     </p>
     <p>
        <span begin="14s">et</span>
        <span begin="15s">dolore</span>
        <span begin="16s">magna</span>
        <span begin="17s">aliqua</span>
      </p>
      <p>
        <span begin="18s">Ut</span>
        <span begin="19s">enim</span>
        <span begin="20s">ad</span>
        <span begin="21s">minim</span>
        <span begin="22s">veniam</span>
        <span begin="23s">quis,</span>
        <span begin="24s">nostrud</span>
      </p>
    </div>
  </body>
</tt>

T 提示のカスタマイズの選択肢 (非規範的)

この節では、文書作成者および実装者が、任意の文書インスタンスの提示を カスタマイズするために利用できる選択肢の概要を示す。

この文脈でのカスタマイズは、指定された提示動作の 変更を意味することに注意。この節では、フォントのラスタライズアルゴリズムなど、 指定されていない提示動作の実装方法を列挙することは意図していない。

T.1 条件を使用したカスタマイズ

condition 属性により、文書作成者は、 意図する提示を、 作成時に既知の入力パラメーターに基づいて変更できる。たとえば、閉じたシステムでは、 text-size パラメーターに定義済みの列挙値があり、それを使用して内容に 適用されるスタイリングを変更できる場合がある。また、メディア関数 を使用して、メディアクエリーに基づき、該当する領域の位置と広がりを変更できる。 [Media Queries] を参照。

T.2 前処理系を使用したカスタマイズ

前処理の手法を適用し、提示の前に文書インスタンスを変更することができる。 たとえば [XSLT3] を、場合によっては [XPROC] パイプライン内で使用し、スタイル属性の初期値や、 継承されるルート要素のスタイル属性を変更する。そのような前処理は、この 仕様の適用範囲外である。ただし、そのような前処理系が 変換処理系 の一例と見なされるという点は除く。

T.3 提示適合性への違反による カスタマイズ

この仕様は、 提示処理系 の適合性 要件を、可能な 限り定義しようとしているが、実装が適切と判断した場合に、 その適合性から意図的に逸脱することを妨げるものではない。たとえば、提示処理系は、 提示されるテキストと、映像の再生コントロールなどの他の視覚的な表示との位置の 衝突を識別し、影響を受ける TTML 領域を一時的に移動することで解決する場合がある。また、 提示処理系は、予期しない改行を生じさせずに、 提示されるフォントサイズを小さくする選択肢をユーザーに提供する場合がある。

定義上、そのような不適合はすべて、この仕様の適用範囲外である。

U TTML1 からの語彙の変更 (非規範的)

この節では、タイムドテキストマークアップ言語 (TTML) バージョン 1 (TTML1) とバージョン 2 (TTML2) の間の語彙の変更の概要を示す。この概要は網羅的であることを意図していない。

U.1 新しい要素語彙

新しい要素語彙は、この仕様の次の各節に追加された。詳細は 以下で説明する:

U.1.1 アニメーション語彙

アニメーション機能のサポートを強化するため、次の要素が追加された:

tt:animate

時間的に連続する 1 つ以上のアクティブ時間区間の内部および それらをまたぐ連続的なアニメーションをサポートする。

tt:animation

ヘッダー部で、インラインではないアニメーション指令をまとめることをサポートする。

U.1.2 埋め込み内容語彙

埋め込み内容と内容参照をサポートするため、次の要素が追加された:

tt:audio

組み込み、埋め込み、および外部の音声リソースの使用をサポートする。

tt:chunk

音声、データ、フォント、および画像リソースを埋め込む際のチャンク化をサポートする。 ここで、チャンク化 とは、リソースの内容を連続した データセグメント(チャンク)に細分化することを指す。

tt:data

組み込み、埋め込み、および外部のデータリソースの使用をサポートする。

tt:font

組み込み、埋め込み、および外部のフォントリソースの使用をサポートする。

tt:image

組み込み、埋め込み、および外部の画像リソースの使用をサポートする。

tt:resources

ヘッダー部で、共有可能な埋め込み内容と内容参照をまとめることをサポートする。

tt:source

埋め込み内容と内容参照の代替ソースをサポートする。

U.1.3 メタデータ語彙

メタデータ機能を拡張するため、次の要素が追加された:

ttm:item

名前付きメタデータ項目の拡張可能な集合をサポートする。

注:

この機能の動機は、新たな語彙を追加で定義することを避けたいという要望である。 対象となるメタデータ項目は、 名前と値から成り、汎用の名前付きメタデータ項目要素によって、 将来、そのような項目の無制限の集合を 定義する必要に対応できる。

U.1.4 スタイリング語彙

スタイリング機能を拡張するため、次の要素が追加された:

tt:initial

スタイルプロパティの初期値を作成者が指定することをサポートする。

注:

この機能は、次のものを含む複数の要件に基づいている: (1) 固定された明確な値を指定できることが望ましい、 という要件。その対象は、 この仕様で実装依存と定義される、継承されるスタイルプロパティの 特定の初期値であり、たとえば、 tts:color の初期値が該当する。 また、 (2) 特定の継承されないスタイル プロパティについて、 毎回スタイル値を明示的に指定することを強いられずに、初期値を上書きできることが望ましい、 という要件。たとえば、 tts:showBackground の初期値には whenActive の方が、既定の初期値である always より望ましい場合がある。

U.2 新しい属性語彙

新しい属性語彙は、この仕様の次の各節に追加された。詳細は 以下で説明する:

U.2.1 アニメーション属性

アニメーション機能を拡張するため、次の属性が追加された:

U.2.2 内容属性

内容の機能を拡張するため、次の属性が追加された:

U.2.3 パラメーター属性

パラメーター機能を拡張するため、次の属性が追加された:

U.2.6 音声のスタイリング属性

音声のスタイリング機能を拡張するため、次の属性が追加された:

V 謝辞 (非規範的)

編集者は、Timed Text ワーキング グループの現メンバーおよび元メンバー、他の W3C ワーキンググループのメンバー、ならびに 他のフォーラムの業界専門家のうち、この文書の作成過程または内容に 直接または間接的に貢献した次の方々に感謝する:

Thomas Bause-Mason, John Birch, Kees Blom, Bert Bos, Brad Botkin, Dick Bulterman, Cyril Concolato, Frans de Jong, Mike Dolan, Martin Dürst, Donald Evans, Geoff Freed, Al Gilman, Giles Godart-Brown, Markus Gylling, Markku Hakkinen, Sean Hayes, Erik Hodge, Philipp Hoschka, Suzi Hyun, Richard Ishida, Michael Jordan, Masahiko Kaneko, Courtney Kennedy, George Kerscher, Dae Kim, David Kirby, Andrew Kirkpatrick, Philippe Le Hégaret, Pierre-Anthony Lemieux, Chris Lilley, Jason Livingston, Monica Martin, Matthew May, Nigel Megitt, Thierry Michel, Frank Olivier, Soohong Daniel Park, Silvia Pfeiffer, Addison Phillips, Stefan Pöschel, Rohit Puri, Brian Raymor, David Ronca, Patrick Schmitz, David Singer, Craig Smithpeters, Andreas Tai, および Mohamed Zergaoui。

編集者は、現メンバーおよび元メンバーによる次の貢献に 特に感謝したい: Mike Dolan (SMPTE タイムコード、ストリーミング; SMPTE との連絡調整)、David Kirby (導入の例示文書; SMPTE タイムコード、記述メタデータ; EBU/AAF との連絡調整)、Geoff Freed (スタイリング およびスタイルプロパティの例示画像)、Sean Hayes (高度なプロファイルの 概念。適用的タイミング、HTML/CSS 対応付け提案を含む)、Erik Hodge (タイミング)、 Thierry Michel (メタデータ)、および Dave Singer (アニメーション、スクロール)。

ワーキンググループは、この仕様を同僚 David Kirby に捧げる。