W3C

타임드 텍스트 마크업 언어 2 (TTML2)

W3C 권고안 2018년 11월 08일

이 버전:
https://www.w3.org/TR/2018/REC-ttml2-20181108/
최신 버전:
https://www.w3.org/TR/ttml2/
이전 버전:
https://www.w3.org/TR/2018/PR-ttml2-20181004/
편집자:
Glenn Adams, Skynav
Cyril Concolato, Netflix
기여 저자:
Glenn Adams, Skynav
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

이 문서에 대해서는 규범적 수정 사항을 포함할 수 있는 정오표를 참조하십시오.


초록

이 문서는 Timed Text Markup Language(TTML) 버전 2, 즉 TTML2를 그 어휘와 해당 의미론의 관점에서 명세한다.

Timed Text Markup Language는 저작 시스템 간의 교환을 목적으로 timed text 미디어를 표현하는 콘텐츠 유형이다. timed text는 시간 정보와 내재적으로 또는 외재적으로 연결된 텍스트 정보이다.

이는 현재 자막 및 캡션 기능에 사용되고 있는 기존 배포 콘텐츠 형식 간에 timed text 정보를 트랜스코딩하거나 교환하는 목적으로 사용되도록 의도되었다.

기존 배포 콘텐츠 형식 간의 교환에 사용되는 것 외에도, TTML 콘텐츠는 배포 형식으로 직접 사용될 수 있다. 예를 들어 [HTML 5.2] 문서의 <track> 요소나, [SMIL 3.0] 문서의 <text> 또는 <textstream> 미디어 요소에서 참조할 표준 콘텐츠 형식을 제공할 수 있다.

이 문서의 상태

이 절은 이 문서가 발행된 시점의 문서 상태를 설명한다. 다른 문서가 이 문서를 대체할 수 있다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 https://www.w3.org/TR/의 W3C 기술 보고서 색인에서 확인할 수 있다.

이 문서는 W3C 프로세스에 정해진 절차에 따라, W3C Video in the Web Activity의 일부로 Timed Text (TT) Working Group에서 작성한 Timed Text Markup Language 2 (TTML2) W3C 권고안이다. 이 문서의 저자는 이 문서의 헤더에 나열되어 있다.

구현 보고서는 이 명세가 구현 가능함을 보여준다. TTML1 제3판 [TTML1]로부터의 모든 변경 사항에 대한 누적 요약은 Timed Text Markup Language 2 (TTML2) 변경 요약에서 확인할 수 있다. 언어 구문에 영향을 주는 변경 사항의 축약 목록은 U TTML1로부터의 어휘 변경 사항에서 확인할 수 있다.

이 문서에 대한 의견은 GitHub 이슈를 제출하거나 public-tt@w3.org로 이메일을 보내면 된다 (구독, 아카이브). 제목 줄은 [ttml2]로 시작해야 한다.

이 문서는 W3C 회원, 소프트웨어 개발자, 기타 W3C 그룹 및 관심 있는 당사자의 검토를 받았으며, Director에 의해 W3C 권고안으로 승인되었다. 이는 안정적인 문서이며 참조 자료로 사용하거나 다른 문서에서 인용할 수 있다. W3C가 권고안을 만드는 역할은 명세에 주의를 환기하고 그 광범위한 배포를 촉진하는 것이다. 이는 웹의 기능성과 상호운용성을 향상시킨다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹이 작성했다. W3C는 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지하며, 해당 페이지에는 특허 공개를 위한 지침도 포함되어 있다. 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제 지식을 가진 경우, 그 개인은 W3C 특허 정책 6절에 따라 해당 정보를 공개해야 한다.

이 문서는 2018년 2월 1일 W3C Process Document의 적용을 받는다.

1 소개

달리 명시되지 않는 한, 이 절과 그 하위 절은 비규범적이다.

Timed Text Markup Language(TTML), 버전 2, 즉 TTML2는 교환 및 처리를 목적으로 저자 또는 저작 시스템이 스타일, 레이아웃, 타이밍 의미론을 연결한 텍스트 정보의 특정 하위 집합에 대한 표준화된 표현을 제공한다.

TTML은 [TTAF1-REQ]에 의해 수립되고 M 요구 사항에 요약된 제한된 요구 사항 집합만 충족하도록 명시적으로 설계되었다. 특히 기존 레거시 배포 시스템과의 교환을 수행할 필요를 충족하는 요구 사항만 만족한다.

레거시 배포 콘텐츠 형식 간의 교환에 사용되는 것 외에도, TTML 콘텐츠는 배포 형식으로 직접 사용될 수 있다. 예를 들어 [HTML 5.2] 문서의 <track> 요소나, [SMIL 3.0] 문서의 <text> 또는 <textstream> 미디어 요소에서 참조할 표준 콘텐츠 형식을 제공한다. TTML의 특정 속성은 R 스트리밍 TTML 콘텐츠에 설명된 것처럼 콘텐츠의 스트리밍 가능성을 지원한다.

참고:

TTML은 HTML 또는 SMIL 문서 인스턴스에 직접(임베디드) 통합되도록 명시적으로 설계된 것은 아니지만, 그러한 통합이 배제되지는 않는다.

참고:

일부 사용 맥락에서는 Timed Text 문서 인스턴스로 표현된 동일한 콘텐츠의 수어 표현을 나타내기 위해 애니메이션 콘텐츠를 사용하는 것이 적절할 수 있다. 이 사용 사례는 TTML 메커니즘에서 명시적으로 다루지 않지만, SMIL과 같은 외부 멀티미디어 통합 기술로 다룰 수 있다.

참고:

이 명세의 이전 초안에서는 TTML을 DFXP(Distribution Format Exchange Profile)라고 불렀다. 이 후자의 용어는 프로필 이름 및 지정자와 같은 특정 맥락에서 역사적 이유로 유지된다.

1.1 시스템 모델

TTML의 사용은 그림 1 – 시스템 모델에 묘사된 시스템 모델에 기반한 Timed Text 저작, 트랜스코딩, 배포 및 프레젠테이션 메커니즘이라는 더 넓은 맥락에서 기능하도록 의도된다. 여기서 Timed Text Markup Language는 이질적인 저작 시스템 집합 간의 양방향 교환 형식으로 사용되며, 필요에 따라 대상 배포 형식으로 트랜스코딩 또는 컴파일된 후 이질적인 배포 형식 집합에 대한 단방향 교환 형식으로 사용된다. 또한 특정 배포 형식 하나는 TTML 콘텐츠 문서이다.

두 종류의 프로세서가 설명된다. 저작 시스템과 검증 프로세서는 변환 프로세서의 예이며, 트랜스코딩 시스템과 렌더링 프로세서는 프레젠테이션 프로세서의 예이다. TTML 프로필 문서는 TTML 콘텐츠 문서 또는 프로세서와 연결될 수 있으며, 각자가 사용 가능하거나 금지되거나 요구되는 기능을 표현할 수 있게 한다. 이를 종합하면 저작에서 프레젠테이션에 이르는 체인의 제약을 형식 언어로 표현할 수 있다.

프로세서는 TTML 중간 문서로의 정의된 매핑을 구현할 수 있다. 시스템 모델은 그러한 렌더링 프로세서 하나가 해당 문서를 HTML 및 CSS 조각으로 추가 매핑하여, 사용자 에이전트가 표시하도록 [HTML 5.2] 문서에 삽입할 수 있음을 보여준다.

그림 1 – 시스템 모델
시스템 모델

1.2 문서 예제

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>Timed Text TTML Example</ttm:title>
  <ttm:copyright>The Authors (c) 2006</ttm:copyright>
</metadata>

스타일링 정보는 레이아웃 및 콘텐츠 정보에서 참조되는 스타일 명세 정의의 형태로 지정되거나, 콘텐츠 정보와 함께 인라인으로 지정되거나, 둘 다로 지정될 수 있다.

예제 조각 – TTML 스타일링에서는 네 개의 스타일 명세 집합이 정의되며, 그중 한 집합은 기본 스타일 모음으로 사용된다.

예제 조각 – TTML 스타일링
<styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <!-- s1 specifies default color, font, and text alignment -->
  <style xml:id="s1"
    tts:color="white"
    tts:fontFamily="proportionalSansSerif"
    tts:fontSize="22px"
    tts:textAlign="center"
  />
  <!-- alternative using yellow text but otherwise the same as style s1 -->
  <style xml:id="s2" style="s1" tts:color="yellow"/>
  <!-- a style based on s1 but justified to the right -->
  <style xml:id="s1Right" style="s1" tts:textAlign="end" />
  <!-- a style based on s2 but justified to the left -->
  <style xml:id="s2Left" style="s2" tts:textAlign="start" />
</styling>

레이아웃 정보는 콘텐츠가 제시될 하나 이상의 영역을 정의한다. 영역 정의는 해당 영역으로 흐르는 콘텐츠가 이 스타일들로부터 상속할 수 있도록 하나 이상의 스타일 명세 집합을 참조할 수 있다. 예제 조각 – TTML 레이아웃에서 영역 정의는 특정 인라인 스타일로 보강된 스타일 명세 s1을 참조하며, 이 둘을 함께 사용하면 영역으로 흐르는 콘텐츠가 영역의 스타일을 상속할 수 있다 (스타일이 콘텐츠에 이미 명시적으로 지정되어 있지 않거나 콘텐츠 계층을 통해 상속되지 않은 경우).

예제 조각 – 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 요소)이 지정된 어휘 순서대로 대상 영역으로 흐른다. 또한 각 문단의 활성 시간 간격은 적용 가능한 시간 포함 의미론에 따라 부모 또는 형제에 맞춰 시간이 지정된다. 이 경우 division 부모는 (기본적으로) 병렬 시간 컨테이너로 해석된다.

예제 조각 – TTML 본문
<body region="subtitleArea">
  <div>
    <p xml:id="subtitle1" begin="0.76s" end="3.45s">
      It seems a paradox, does it not,
    </p>
    <p xml:id="subtitle2" begin="5.0s" end="10.0s">
      that the image formed on<br/>
      the Retina should be inverted?
    </p>
    <p xml:id="subtitle3" begin="10.0s" end="16.0s" style="s2">
      It is puzzling, why is it<br/>
      we do not see things upside-down?
    </p>
    <p xml:id="subtitle4" begin="17.2s" end="23.0s">
      You have never heard the Theory,<br/>
      then, that the Brain also is inverted?
    </p>
    <p xml:id="subtitle5" begin="23.0s" end="27.0s" style="s2">
      No indeed! What a beautiful fact!
    </p>
    <p xml:id="subtitle6a" begin="28.0s" end="34.6s" style="s2Left">
      But how is it proved?
    </p>
    <p xml:id="subtitle6b" begin="28.0s" end="34.6s" style="s1Right">
      Thus: what we call
    </p>
    <p xml:id="subtitle7" begin="34.6s" end="45.0s" style="s1Right">
      the vertex of the Brain<br/>
      is really its base
    </p>
    <p xml:id="subtitle8" begin="45.0s" end="52.0s" style="s1Right">
      and what we call its base<br/>
      is really its vertex,
    </p>
    <p xml:id="subtitle9a" begin="53.5s" end="58.7s">
      it is simply a question of nomenclature.
    </p>
    <p xml:id="subtitle9b" begin="53.5s" end="58.7s" style="s2">
      How truly delightful!
    </p>
  </div>
</body>

첫 번째 자막 자막 1 – 시간 간격 [0.76, 3.45)은 0.76초부터 3.45초까지의 시간 간격 동안 제시된다. 이 자막은 제시되는 영역으로부터 글꼴 계열, 글꼴 크기, 전경색 및 텍스트 정렬을 상속한다. 문단에 영역이 명시적으로 지정되어 있지 않으므로, 영역을 지정하는 가장 가까운 조상이 대상 영역을 결정한다. 또한 영역 정의에 tts:displayAlign="after"가 지정되어 있으므로 콘텐츠가 포함 영역의 아래쪽(after edge)에 제시됨에 유의한다.

참고:

표기 "[X,Y]"는 XY를 포함하는 X부터 Y까지의 닫힌 간격을 나타내며, "[X,Y)"는 X는 포함하지만 Y는 포함하지 않는 오른쪽 반열린 간격을 나타내고, "(X,Y]"는 X는 포함하지 않지만 Y는 포함하는 왼쪽 반열린 간격을 나타내며, "(X,Y)"는 XY를 모두 포함하지 않는 열린 간격을 나타낸다.

참고:

이 예제에서 p 요소는 언어적 문단과 같은 의미론적 요소가 아니라 프레젠테이션 요소로 사용된다. 의도한 의미를 전달하기 위해 어떤 TTML 요소를 사용할지는 저자가 결정할 사항이다. 예를 들어 이 예제는 의미론적 문단의 완전성을 보존하기 위해 span 요소에 타이밍을 사용하는 방식으로 작성될 수도 있다.

자막 1 – 시간 간격 [0.76, 3.45)
자막 1

두 번째 자막은 기본 스타일을 계속 사용하지만, 저자가 지정한 줄 바꿈이 사이에 있는 두 줄의 텍스트를 포함한다. 인라인 진행 방향에서 문단 정렬을 지정하기 위해 tts:textAlign="center"를 사용하는 효과에 유의한다.

자막 2 – 시간 간격 [5.0, 10.0)
자막 2

세 번째 자막은 기본 스타일의 전경색을 다른 색으로 재정의하는 변형 스타일을 사용하여 계속된다.

자막 3 – 시간 간격 [10.0, 16.0)
자막 3

네 번째 자막은 기본 스타일로 되돌아간다.

자막 4 – 시간 간격 [17.2, 23.0)
자막 4

다섯 번째 자막은 다시 기본 스타일의 전경색을 다른 색으로 재정의하는 변형 스타일을 사용하여 계속된다.

자막 5 – 시간 간격 [23.0, 27.0)
자막 5

다음 활성 시간 간격 동안에는 두 개의 서로 다른 자막이 동시에 활성화되며, 각 자막을 표현하는 문단은 기본 스타일의 색상과 문단 텍스트 정렬을 재정의하는 서로 다른 스타일을 사용한다. 흐름 순서는 콘텐츠 계층에 나타나는 요소의 어휘 순서에 의해 결정된다는 점에 유의한다.

자막 6a 및 6b – 시간 간격 [28.0, 34.6)
자막 6a 및 6b

다음 자막은 비슷한 방식으로 지정되며, 인라인 진행 방향에서 문단에 오른쪽(end) 정렬을 부여하기 위해 스타일 재정의를 사용한다.

자막 7 – 시간 간격 [34.6, 45.0)
자막 7a 및 7b

여덟 번째 자막은 문단의 오른쪽(end) 정렬을 유지하기 위해 이전 자막과 동일한 스타일 재정의를 사용한다.

자막 8 – 시간 간격 [47.3, 49.0)
자막 8

마지막(아홉 번째) 활성 시간 간격 동안에는 두 개의 서로 다른 자막이 다시 동시에 활성화되지만, 두 번째 문단에는 기본 색상을 재정의하는 다른 스타일이 적용된다. 흐름 순서는 콘텐츠 계층에 나타나는 요소의 어휘 순서에 의해 결정된다는 점에 유의한다.

자막 9a 및 9b – 시간 간격 [53.5, 58.7)
자막 9a 및 9b

위에 표시된 예제는 TTML을 사용해 저작할 수 있는 주요 정보 유형인 메타데이터, 스타일링, 레이아웃, 타이밍 및 콘텐츠를 보여준다. 일반적인 경우 스타일링 및 레이아웃 정보는 문서 인스턴스 안에서 별도로 지정된다. 콘텐츠 정보는 공간적(흐름) 정보와 타이밍 정보의 구성을 모두 구현하는 계층적 방식으로 표현된다. 콘텐츠는 스타일링 및 레이아웃 정보를 직접 또는 간접적으로 참조하며 스타일링에 대한 인라인 재정의를 지정할 수 있다.

2 정의

2.1 약어

BPD

Block Progression Dimension

DAR

Display Aspect Ratio

DFXP

Distribution Format Exchange Profile

IPD

Inline Progression Dimension

ISD

Intermediate Synchronic Document

PAR

Pixel Aspect Ratio

SAR

Storage Aspect Ratio

TT

Timed Text

TTML

Timed Text Markup Language

TTAF

Timed Text Authoring Format

TTWG

Timed Text Working Group

2.2 용어

[absolute dimension]

horizontal axis 또는 vertical axis 중 하나에서 길이를 나타내는 스칼라 값.

[abstract document instance]

reduced xml infoset으로 표현되는 추상 데이터 집합의 인스턴스.

[abstract document type]

XML Information Sets [XML InfoSet]의 한 클래스를 정의하는 제약 집합.

[anonymous profile]

undesignated profile을 참조.

[anonymous span]

document instance에는 존재하지 않지만, 11.3.1.3 중간 동기 문서 구성 또는 11.3.1.4 동기 흐름 처리 단계 동안 [construct anonymous spans] 절차에 의해 해당 abstract document instance에 합성되어 삽입되는 span 요소.

[area]

[XSL-FO 1.1], Rectangular Areas, §4.2에 의해 정의된 대로 어떤 출력 매체의 평면 위에서 경계가 있는 직사각형 영역의 시각적 콘텐츠를 나타내는 주소 지정 가능한 logical pixels의 모음. 특히 [CSS2][HTML 5.2]의 맥락에서는 box라고도 한다.

[attribute information item]

XML 문서의 각 지정되었거나 기본값이 적용된 속성은 [XML InfoSet], §2.3에 정의된 attribute information item에 대응한다.

[audio defining context]

audio 요소가 audio presentation context의 다른 audio 요소가 참조할 수 있는 공유 가능한 정의로 쓰이도록 지정되는 맥락.

[audio generating element]

audio presentation contextaudio 요소, 또는 문자 콘텐츠가 speech data resource를 생성하는 데 사용되는 span 요소.

[audio presentation context]

audio 요소가 제시(렌더링)되기 위한 목적으로 지정되는 맥락. 그러한 audio 요소는 source 요소 자식 안의 data 요소를 사용하여 오디오 데이터를 인라인으로 지정할 수 있으며, 또는 audio defining context에 지정된 다른 audio 요소를 참조할 수도 있고, 둘 다 수행할 수도 있다.

[audio resource]

코딩되었거나 인코딩되지 않은 오디오 샘플을 포함하는 data resource.

[audio stream]

오디오 샘플의 시퀀스.

[background painting rectangle]

배경 프레젠테이션 아티팩트(예: 색상 또는 이미지)가 (가능하면) 클리핑되고 칠해지는 기준이 되는 document coordinate space의 직사각형. 더 구체적으로는, 배경과 연결된 요소가 생성하는 영역의 border rectangle, padding rectangle 또는 content rectangle 중 하나이다. tts:backgroundClip 속성이 지정하는 스타일 속성의 계산 값이 어떤 직사각형이 적용되는지를 결정한다.

[background positioning rectangle]

배경 프레젠테이션 아티팩트(예: 색상 또는 이미지)가 위치 지정되거나 크기 지정되는 기준이 되는 document coordinate space의 직사각형. 더 구체적으로는, 배경과 연결된 요소가 생성하는 영역의 border rectangle, padding rectangle 또는 content rectangle 중 하나이다. tts:backgroundOrigin 속성이 지정하는 스타일 속성의 계산 값이 어떤 직사각형이 적용되는지를 결정한다.

[baseline profile]

ttp:profile 요소의 use 속성으로 참조되는 profile로, 참조하는 프로필을 채우기 위한 기준(초기) 명세 집합으로 사용된다.

[block area]

[XSL-FO 1.1], Block-areas, §4.4가 정의한 기본적인 area 유형으로, 자식은 모두 block areas (block area가 line area가 아닌 경우)이거나 모두 inline areas (block area가 line area인 경우)로 구성된다.

[block display]

Block display는 특정 맥락에서 content element에 적용될 수 있는 레이아웃 의미론의 집합으로, 자식 영역은 block progression direction에서 순차적으로 조판된다.

참고:

[CSS2]에서는 프레젠테이션 처리 중 block 값을 가진 CSS display 속성이 content element에 적용될 때 block display가 표시된다. [XSL-FO 1.1]에서는 fo:block 요소를 조판할 때 block display가 발생한다.

[block progression dimension]

block progression 축, 즉 양의 block progression direction에 있는 relative dimension으로, bpd 또는 BPD로 약칭한다.

[block progression direction]

어떤 서식 지정 맥락에서 block area의 진행이 취하는 방향. 수평 writing mode의 맥락에서는 block progression direction이 일반적으로 위에서 아래이며, 수직 writing mode의 맥락에서는 일반적으로 오른쪽에서 왼쪽 또는 왼쪽에서 오른쪽이다.

[built-in data resource]

content processor가 제공하고 timed text content document instance가 제공하지 않는 콘텐츠를 가진 data resource. 이는 source 요소나 source 요소 또는 embedded content elementsrc 속성을 통해 참조된다.

[character information item]

XML 문서에 나타나는 각 데이터 문자는 [XML InfoSet], §2.6에 정의된 character information item에 대응한다.

[chunked data embedding]

자식 chunk 요소를 사용하여 embedded data resource의 실제 바이트 표현을 직접 임베드하는 data 요소.

[combined profile]

연결된 profile instance의 combined specification set component의 constituents component가 둘 이상의 non-null designator를 포함하는 profile.

[computed cell size]

root container region의 너비를 cell column count, 즉 horizontal axis의 셀 수로 나누고, root container region의 높이를 cell row count, 즉 vertical axis의 셀 수로 나누어 계산한 셀의 크기(extent). 여기서 cell column 및 row count는 ttp:cellResolution 매개변수 속성에 의해 결정된다.

참고:

root container region의 너비와 높이는 H.2 해상도에 지정된 root container region의 공간적 범위의 너비와 높이에 대응한다. 따라서 computed cell size는 logical pixels로 표현된다.

[computed style set]

10.4.4.3 Computed Style Set Processing에 의해 결정된 computed style values를 포함하는 style set.

[conditionalized element]

이 명세에서 또는 이 명세에 사용되도록 정의된 유형의 요소 중, 평가 결과가 해당 요소의 정의된 의미론이 적용되는지 무시되는지를 결정하는 condition 속성의 지정을 허용하는 모든 요소. 그러한 속성이 없으면 요소의 의미론은 항상 적용된다.

[conditionally excluded (or included)]

conditionalized element의 condition expression이 false로 평가되면, 그 요소와 그 하위 요소들은 conditionally excluded되었다고 한다. 요소가 conditionally excluded되지 않았다면, conditionally included되었다고 한다.

참고:

조건부로 포함되었지만 condition 속성의 사용을 허용하지 않거나 이를 지정하지 않는 요소는 unconditionally included 요소라고 부를 수 있다.

요소가 conditionally excluded되면, 달리 명시되지 않는 한 그 모든 의미론은 무시된다. 이에 대한 자세한 conditional exclusion 의미론은 condition을 참조한다.

참고:

특정 요소, 예를 들어 style 요소의 경우, conditional exclusion은 요소의 의미론 일부만 무시하고 전부를 무시하지 않을 수 있으며, 그러한 경우 해당 동작은 명시적으로 설명된다.

[content element]

Content Module이 정의한 모든 요소 유형과, audio presentation context 또는 image presentation context에서 각각 나타날 때 Audio ModuleImage Module이 정의한 모든 요소 유형.

참고:

8.1 콘텐츠 요소 어휘에서 정의되는 tthead 요소 유형은 위 정의의 범위에 의도적으로 포함되지 않지만, 표 5-3 – 요소 어휘DocumentHead Module 정의에는 포함된다.

[content image]

의미상 중요한 콘텐츠를 포함하는 image resource. 예를 들어 캡션 렌더링을 나타내는 래스터 이미지.

[content processor]

콘텐츠의 변환, 프레젠테이션 또는 기타 처리를 목적으로 Timed Text Markup Language 콘텐츠를 가져올(수신할) 수 있는 처리 시스템.

[content profile]

(1) 연결된 profile instance의 type component 값이 content이고, (2) Timed Text Markup Language 콘텐츠가 반드시 사용하지 않아야 하거나, 반드시 사용해야 하거나, 사용할 수 있는 featuresextensions의 모음을 나타내는 profile.

[content region]

프레젠테이션 처리를 수행할 때 콘텐츠가 렌더링되는 논리적 직사각형 영역. 맥락이 명확하면 단순히 region으로 약칭한다. 각 content region은 명시적으로 지정되었거나 암시된 region 요소에 의해 정의되며, 이 요소는 root container region에 대한 content region의 extent와 기타 스타일 및 시간 특성을 정의한다.

[data binding context]

data 요소가 의미론적 바인딩(연결)을 목적으로 지정되는 맥락. 그러한 data 요소는 source 요소 자식 안의 data 요소를 사용하여 데이터를 인라인으로 지정할 수 있으며, 또는 data defining context에 지정된 다른 data 요소를 참조할 수도 있고, 둘 다 수행할 수도 있다. 이 맥락(또는 어떤 맥락)에서든 data 요소가 존재한다는 사실만으로 프레젠테이션(렌더링) 의미론이 암시되지는 않는다.

[data binding context for metadata]

부모가 metadata 요소인 data 요소.

[data binding context for source]

부모가 source 요소인 data 요소.

[data defining context]

data 요소가 data binding context의 다른 data 요소에 의해 참조될 공유 가능한 정의로 사용되도록 지정되는 맥락. 즉 부모가 resources 요소인 data 요소.

[data element]

Data Module이 정의한 모든 요소 유형.

[data resource]

data element를 사용해 표현되거나 참조되는 임의의 데이터 리소스. 예를 들어 data resource는 timed text content document instance 안에서 오디오 클립, 글꼴, 이미지 또는 임의의 애플리케이션 데이터를 임베드하거나 참조하는 데 사용할 수 있다.

[default processor profile]

선언되었거나 추론된 processor profile이 없는 경우 effective processor profile을 계산하는 데 사용되는 기본 processor profile. 이 default processor profile은 construct default processor profile 절차에 의해 결정된다.

[default region]

명시적으로 지정된 out-of-line region 요소가 없을 때, 즉 layout 요소의 자식으로 region 요소가 지정되지 않은 경우 암시되는 기본 out-of-line region.

[designated profile]

profile 명세의 designator 속성 또는 설명 텍스트를 통해 <profile-designator>와 연결된 profile.

[display aspect ratio]

DAR의 정의를 참조.

[document coordinate space]

document instance를 서식 지정하고 제시하는 데 사용되는 root container region의 종횡비와 해상도를 결정하는 논리 좌표 공간. 자세한 내용은 H 루트 컨테이너 영역 의미론을 참조.

[document instance]

timed text document instance.

[document interchange context]

문서 교환이 발생하는 content processor 외부의 암시적 맥락 또는 환경이며, 여기서 대역 외 프로토콜 또는 명세가 암시된 프로필과 같은 특정 동작 기본값을 정의할 수 있다.

[document processing context]

문서 처리가 발생하는 content processor 내부의 암시적 맥락 또는 환경이며, 여기서 대역 외 프로토콜 또는 명세가 synthetic document syncbase의 설정 또는 생성과 같은 특정 동작 기본값을 정의할 수 있다.

[document temporal coordinate space]

document instance에서 계산된 시간 표현식이 해석되는 기준인 시간 좌표계. 자세한 내용은 7.2.11 ttp:timeBase를 참조.

[effective content profile]

명시적 또는 암시적 profile 및 profile specification combination method를 적용한 뒤, TTML document instance가 명시적 또는 암시적으로 참조하거나 할당받은 모든 content profiles 집합에서 계산되는 content profile. 자세한 내용은 construct effective content profile 절차를 참조. 주어진 document instance에 대해 검증을 수행할 때, 그 검증은 문서의 effective content profile을 사용하여 수행된다.

[effective processor profile]

명시적 또는 암시적 profile 및 profile specification combination method를 적용한 뒤, TTML document instance가 명시적 또는 암시적으로 참조하거나 할당받은 모든 processor profiles 집합에서 계산되는 processor profile. 자세한 내용은 construct effective processor profile 절차를 참조. content processor가 주어진 document instance를 처리할 수 있는지 여부를 결정할 때, 이 결정은 문서의 effective processor profile을 사용하여 수행된다.

[effective validation profile]

construct effective validation profile 절차에 의해 결정되는, validation processing 중 사용할 스키마 (또는 스키마 집합)를 선택하는 데 사용되는 profile.

[effective validation schemas]

construct effective validation schemas 절차에 의해 결정되는, validation processing 중 사용되는 스키마 집합.

참고:

어떤 스키마 언어도 이 명세가 정의한 TTML 콘텐츠의 모든 제약을 포착하지 못하므로, validating content processor는 추가적인 내장형, 프로그램적(코드 기반) 스키마를 사용할 것으로 예상된다.

[element information item]

XML 문서에 나타나는 각 요소는 [XML InfoSet], §2.2에 정의된 element information item에 대응한다.

[embedded content element]

Audio Module, Data Module, Font Module 또는 Image Module이 정의한 모든 요소 유형.

[embedded content resource]

audio resource, data resource, font resource, 또는 image resource.

[embedded data resource]

timed text content document instance 안에 임베드된 data resource. 이는 data 요소가 data resource의 실제 바이트를 표현하는지 또는 external data resource를 참조하는지와 관계없이 data 요소를 통해 표현된다.

[empty data resource]

렌더링 가능한 콘텐츠를 포함하지 않으며, 추가로 이 리소스를 일련의 콘텐츠 샘플로 해석하려는 시도를 해도 샘플이 생성되지 않는 data resource.

[enclosing document instance]

포함된 feature 또는 component를 둘러싸거나 그 밖의 방식으로 포함하는 document instance.

[exchange profile]

콘텐츠 교환을 위한 일련의 필요를 충족하는 콘텐츠 profile.

[extension]

다른(공개 또는 비공개) 명세에서 정의되고 extension designation을 사용하여 라벨링된 구문적 또는 의미론적 표현 또는 기능.

[extension specification]

extension과 관련된 제약 또는 요구 사항의 명세로, 일반적으로 ttp:extension 요소로 표현된다.

[external data resource]

timed text content document instance 외부의 data resource. 이는 source 요소나 source 요소 또는 embedded content elementsrc 속성을 통해 참조된다.

[external source]

(1) external data resource를 참조하는 source 요소 또는 src 속성, 또는 (2) 참조된 external data resource.

[feature]

이 명세(또는 이 명세의 과거 또는 미래 개정판)에서 정의되고 feature designation을 사용하여 라벨링된 구문적 또는 의미론적 표현 또는 기능.

[feature specification]

feature와 관련된 제약 또는 요구 사항의 명세로, 일반적으로 ttp:feature 요소로 표현된다.

[forced subtitle]

자막(또는 캡션)이 활성화되어 있지 않더라도 항상 표시되도록 의도된 자막(또는 캡션). Forced subtitles(captions)는 미디어에 나타나는 표지판과 같은 외국어 또는 외계어, 또는 텍스트의 번역과 관련된 자막(캡션)을 open captioning, 즉 burn in으로 처리하는 것을 방지하는 데 사용된다.

[font defining context]

font 요소가 font selection process에 의해 간접 참조될 공유 가능한 정의로 사용되도록 지정되는 맥락.

[font selection process]

presentation processor가 사용하는 내부 프로세스. 이 프로세스의 목적은 레이아웃 및 프레젠테이션 처리 중 사용할 저자 정의 글꼴 및 플랫폼 글꼴의 집합을 선택하는 것이며, 이 프로세스의 입력 매개변수에는 글꼴 관련 속성의 계산 값, 개별 글꼴의 기능, 그리고 제시되는 텍스트 콘텐츠가 포함된다.

[font resource]

문자를 글리프로 매핑하는 데이터, 글리프 외곽선 또는 이미지, 글리프 메트릭 및 문자-글리프 매핑 및 렌더링 과정에 사용되는 기타 데이터를 포함하는 data resource.

[height]

vertical axis상의 absolute dimension.

참고:

일부 예외적인 경우 height라는 용어는 horizontal axis를 가리킬 수 있다. 자세한 내용은 10.2.27 tts:lineHeight를 참조.

[fragment identifier]

[URI], §3.5에 정의된 fragment identifer 구문을 따르는 <uri> 값의 구문적 하위 집합.

[glyph area]

[XSL-FO 1.1], Glyph-areas, §4.6.2에 의해 정의된 inline area의 한 유형. 이 명세에서 glyph area는 하나 이상의 콘텐츠 문자 및 특정 글꼴의 하나 이상의 글리프와 연결되며, glyph area를 제시할 때 렌더링되는 것은 이러한 글리프이다. spacing glyph area는 적어도 하나의 spacing glyph, 즉 advance(너비 또는 높이)가 0이 아닌 글리프와 연결된 glyph area이다. non-spacing glyph area는 spacing glyph area가 아닌 glyph area, 즉 전적으로 non-spacing glyph로 구성된 glyph area이다.

[glyph area descendant]

사용 맥락에서 암시되는 어떤 다른 area의 하위 area인 glyph area. 예를 들어 inline area I의 하위 area가 glyph area라면, 이는 Iglyph area descendant이다.

[image defining context]

image 요소가 image presentation context의 다른 image 요소가 참조할 수 있는 공유 가능한 정의로 사용되도록 지정되는 맥락.

[image presentation context]

image 요소가 제시(렌더링)되기 위한 목적으로 지정되는 맥락. 그러한 image 요소는 source 요소 자식 안의 data 요소를 사용하여 이미지 데이터를 인라인으로 지정할 수 있으며, 또는 image defining context에 지정된 다른 image 요소를 참조할 수도 있고, 둘 다 수행할 수도 있다.

[image resource]

래스터 이미지를 포함하는 data resource.

[inferred processor profile]

construct inferred processor profile 절차에 의해 결정되는 processor profile로, validation processing을 수행하는 데 사용되는 effective processor profile 역할을 할 수 있다.

[inline animation]

애니메이션과 연결된 content element 또는 region 요소의 직접 자식으로 인라인 정의되는 animate 또는 set 요소. inline animation element와 그 부모 content element 또는 region 요소 사이에는 일대일 관계가 있다.

[inline area]

[XSL-FO 1.1], Inline-areas, §4.6에 의해 정의된 area의 한 유형으로, 자식은 모두 inline areas, 예를 들어 glyph areas로 구성된다.

[inline block display]

Inline block display는 특정 맥락에서 content element에 적용될 수 있는 레이아웃 의미론의 집합으로, 생성된 block area가 inline layout context에서 조판될 원자적 area로 취급된다. 즉 block area는 외부적으로 고려될 때 자신이 inline area인 것처럼 취급되지만, 내부적으로 고려될 때는 block area로 취급된다.

[inline display]

Inline display는 특정 맥락에서 content element에 적용될 수 있는 레이아웃 의미론의 집합으로, 자식 area가 inline progression direction에서 순차적으로 조판된다.

참고:

[CSS2]에서는 프레젠테이션 처리 중 inline 값을 가진 CSS display 속성이 content element에 적용될 때 inline display가 표시된다. [XSL-FO 1.1]에서는 fo:inline 요소를 조판할 때 inline display가 발생한다.

[inline progression dimension]

inline progression 축, 즉 양의 inline progression direction에 있는 relative dimension으로, ipd 또는 IPD로 약칭한다.

[inline progression direction]

어떤 서식 지정 맥락에서 inline area의 진행이 취하는 방향. 수평 writing mode의 맥락에서는 inline progression direction이 일반적으로 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽이며, 수직 writing mode의 맥락에서는 일반적으로 위에서 아래이다.

[inline region]

region으로 선택(대상 지정)될 어떤 content element에 대해 인라인 방식으로 정의되는 region. inline region은 특정 content elements의 자식 region 요소로 명시적으로 지정된다. 인라인 region 요소와 그 부모 content element 사이에는 일대일 관계가 있다. inline region에는 부모 요소의 시간 간격이 활성 시간 간격으로 할당된다. 어떤 region 속성도 inline region을 참조하지 않는다.

[intermediate synchronic document]

사용 맥락에 따라 timed text intermediate document 또는 timed text intermediate document instance를 의미하며, 루트(문서) 요소가 isd:isd 요소이고, 원본 timed text content document의 콘텐츠, 스타일링, 레이아웃 및 타이밍과 교차하는 겹치지 않는 시간 간격을 나타낸다.

[intermediate synchronic document sequence]

사용 맥락에 따라 timed text intermediate document 또는 timed text intermediate document instance를 의미하며, 루트(문서) 요소가 isd:sequence 요소이고, 원본 timed text content document의 콘텐츠, 스타일링, 레이아웃 및 타이밍을 효과적으로 나타내는 intermediate synchronic document 인스턴스의 시퀀스를 나타낸다.

[intermediate document syntax]

intermediate synchronic document sequence 또는 intermediate synchronic document의 구체적 표현에 사용되는 형식 체계.

[intrinsic block content extent]

block level content의 시퀀스를 제한 없는 block container area로 서식 지정하고, 결과로 생성된 서식 지정된 block container의 너비와 높이를 결정하여 산출한 extent, 즉 너비와 높이.

[intrinsic image extent]

이미지 자체 내부의 정보, 예를 들어 이미지의 픽셀 배열의 너비와 높이로부터 결정된 이미지의 extent, 즉 너비와 높이.

[intrinsic inline content extent]

inline level content의 시퀀스를 제한 없는 inline container area로 서식 지정하고, 결과로 생성된 서식 지정된 inline container의 너비와 높이를 결정하여 산출한 extent, 즉 너비와 높이.

[higher level protocol]

이 명세의 범위를 벗어나는 document processing context의 프로토콜 또는 프로세스.

[horizontal axis]

수평면에 평행한 축.

[line area]

[XSL-FO 1.1], Line-areas, §4.5에 의해 정의된 block area의 한 유형으로, 자식은 하나 이상의 inline areas로 구성된다.

[metadata element]

Metadata Module이 정의한 모든 요소 유형.

[nested profile]

nesting profile의 구성 profile, 즉 상위 수준(조상) ttp:profile 요소의 하위 ttp:profile 요소 중 하나. 주어진 ttp:profilenested profilenesting profile 둘 다로 사용될 수 있다.

[nesting profile]

하나 이상의 자식 ttp:profile 요소를 참조하여 정의되는 profile이며, 여기서 profile combination method는 여러 자식 ttp:profile 요소의 profile specifications가 어떻게 결합되는지를 결정한다. nesting profile과 연결된 profile instance의 constituents component는 null이 아니다.

[nested embedded source]

simple data embedding 또는 chunked data embedding을 통해 embedded data resource의 실제 바이트를 임베드하는 자식 data 요소를 지정하는 source 요소.

[non-combined profile]

연결된 profile instance의 combined specification set component의 constituents component가 하나 이하의 non-null designator를 포함하는 profile.

[non-content image]

의미상 중요한 콘텐츠를 포함하지 않는 image resource. 예를 들어 배경 디자인을 나타내는 래스터 이미지로, 제시되지 않더라도 의미상 중요한 콘텐츠의 프레젠테이션에 영향을 주지 않는 이미지.

[non-nested embedded source]

embedded data resource의 실제 바이트 표현을 임베드하지 않는 자식 data 요소를 지정하는 source 요소.

[non-nesting profile]

하나 이상의 자식 ttp:profile 요소를 참조하지 않고 정의되는 profile, 즉 자식 ttp:profile 요소를 포함하지 않는 profile. non-nesting profile과 연결된 profile instance의 constituents component는 null이다.

[out-of-line animation]

애니메이션과 연결된 content element 또는 region 요소로부터 out-of-line으로 정의되는 animate 또는 set 요소. out-of-line animation은 document instance의 헤더(head 요소)에 있는 animation 요소의 자식으로 나타나며, 애니메이션될 연결 요소의 animate 속성이 참조하는 값을 가진 xml:id 속성을 지정한다. 참조된 out-of-line animation element와 이를 참조하는 content elementsregion 요소 사이에는 일대다 관계가 있다.

[out-of-line region]

region과 연결된(선택될) content element로부터 out-of-line으로 정의되는 region 요소. out-of-line region은 document instance의 헤더(head 요소)에 있는 layout 요소의 자식으로 나타나며, 연결된 요소를 해당 region으로 선택하기 위해 region 속성이 참조하는 값을 가진 xml:id 속성을 지정한다. 참조된 out-of-line region element와 이를 참조하는 content elements 사이에는 일대다 관계가 있다. 명시적으로 지정된 out-of-line region이 없으면 default out-of-line region이 암시된다.

[override content profile]

content profile의 다른 모든 가능한 결정을 재정의하도록 결정된 content profile.

[override processor profile]

processor profile의 다른 모든 가능한 결정을 재정의하도록 결정된 processor profile.

[pixel aspect ratio]

PAR의 정의를 참조.

[presentation context]

presentation processing context를 참조.

[presentation processing context]

root container regionrelated media object region이 제시되는 가상의 표시 장치.

[presentation context coordinate space]

presentation context와 연결된 좌표 공간.

참고:

presentation processor의 주어진 구현에서는 document coordinate spacelogical pixels와 연결된 display pixelspresentation context coordinate spacepresentation pixels와 정확히 대응할 수 있다. 그러나 그러한 정확한 대응이 반드시 적용될 필요는 없으며, 특히 이러한 좌표 공간 간의 (구현 정의) 매핑은 픽셀 종횡비, 해상도, 색 공간, 색 샘플 깊이 및 기타 구현별 속성의 변환을 받을 수 있다.

[presentation related element]

(1) 제시 가능한 콘텐츠를 포함하거나 표현하거나, (2) 콘텐츠의 프레젠테이션에 영향을 주는 모든 요소. 전자의 예에는 모든 content elements 및 특정 embedded content elements, 특히 audioimage가 포함된다. 후자의 예에는 인라인 animateset이 포함된다. metadata elements는 이 정의에서 제외된다는 점에 특히 유의한다.

[presentation processor]

이 명세에 정의된 프레젠테이션 의미론을 적용하여 Timed Text Markup Language 콘텐츠를 레이아웃하고, 서식 지정하고, 렌더링하는, 즉 제시하는 것을 목적으로 하는 content processor.

[processor]

content processor를 참조.

[processor profile]

(1) 연결된 profile instance의 type component 값이 processor이고, (2) content processor가 반드시 또는 선택적으로 구현(지원)해야 하는 featuresextensions의 모음을 나타내는 profile.

[profile]

featuresextensions의 모음으로, interned(인스턴스화)될 때 profile instance 상태 객체로 표현된다. profile은 content profile 또는 processor profile로 유형화된다.

[profile definition document]

사용 맥락에 따라 timed text profile document 또는 timed text profile document instance.

[profile fragment identifier]

내부적으로 정의된 profile을 라벨링하거나 참조하는 데 사용되는 fragment identifier. 여기서 내부란 document instance 내부임을 의미한다.

[profile processing]

[abort if unsupported processor profile] 절차를 수행하는 과정으로, 그 부수 효과로 document instanceeffective content profile(필요한 경우) 및 effective processor profile을 결정한다.

[profile specification]

feature specification 또는 extension specification, 또는 그 내부 상태 표현.

[reduced xml infoset]

B 축소 XML 정보 집합이 지정한 제약을 만족하는 XML Information Set [XML InfoSet].

[region]

root container region 또는 content region이며, 한정 없이 사용되면 후자를 가리킨다.

참고:

문서 프레젠테이션과 연결된 root container region은 하나뿐이며 고유하지만, 이 명세는 시간에 따라 또는 특정 시점에 사용되는 content region의 수에 제한을 두지 않는다. 그러나 일부 content profiles는 그러한 제한을 지정한다.

[related media object]

document instance와 연결되었거나 그 밖의 방식으로 관련된 (null일 수도 있는) media object. 예를 들어, document instance가 캡션 또는 자막 정보를 제공하고 그 document instance와 연결되는 집합적 audio/video media object가 있다.

[related media object region]

non-null인 시각적 related media object가 제시되는 presentation processing context의 region.

[relative dimension]

적용 가능한 writing mode에 따라 inline 또는 block progression 축 중 하나에서 길이를 나타내는 스칼라 값.

[root container region]

content regions가 배치되고 선택적으로 클리핑되는 좌표계를 설정하는 고유한 논리적 직사각형 region. 자세한 내용은 H 루트 컨테이너 영역 의미론도 참조.

참고:

root container region에는 border나 padding이 없다. 따라서 그 border, padding 및 content rectangle은 같은 경계를 공유한다.

[root temporal extent]

어떤 외부 애플리케이션 또는 프레젠테이션 맥락과의 관계에서 document instance의 시간적 시작과 끝으로 정의되는 temporal extent(간격).

[simple data embedding]

자식 chunk 요소를 사용하지 않고 embedded data resource의 실제 바이트 표현을 직접 임베드하는 data 요소.

[smpte time code]

[SMPTE ST 12-1]에 의해 형식과 의미론이 수립된 time code로, 방송 audio/video stream과 같은 미디어 콘텐츠에 임베드되거나 그 밖의 방식으로 연결될 수 있다.

[sourced data embedding]

자식 source 요소를 사용하여 embedded data resource의 콘텐츠를 간접적으로 참조하는 data 요소.

[specified style set]

10.4.4.2 Specified Style Set Processing에 의해 결정된 specified style values를 포함하는 style set.

[speech data resource]

speech synthesis processor의 출력에 의해 생성된 샘플로 구성되는 data resource.

[speech synthesis processor]

텍스트 콘텐츠의 오디오 음성 렌더링을 합성하는 기능을 가진 content processor의 선택적 구성 요소.

[storage aspect ratio]

SAR의 정의를 참조.

[style set]

style property set에 의해 정의된 style property set.

[styled element]

computed style set과 연결되어 있거나 연결될 수 있는 요소.

[synthetic document syncbase]

related media object 또는 기타 처리 기준에 따라 document processing context에 의해 합성되거나 그 밖의 방식으로 설정되는 문서 수준 syncbase [SMIL 3.0], §5.7.1.

[synthetic smpte document syncbase]

related media object에 임베드되었거나 연결된 smpte time code 값으로부터, 또는 그 밖에 document processing context에 의해 결정되어 구성된 synthetic document syncbase.

[temporally active]

구문적 또는 의미론적 feature, 예를 들어 요소 또는 요소의 프레젠테이션은 선택된 time base의 현재 시간이 그 feature의 활성 시간 간격과 교차할 때 temporally active이다.

[temporally active region]

temporally activeregion.

[text orientation]

glyph area의 방향을 회전 각도로 특성화한 것. 여기서 0°는 upright 방향을 지정하고, 90°, 즉 시계 방향 90도는 sideways 방향을 지정한다. 자세한 내용은 10.2.45 tts:textOrientation도 참조.

[timed element]

begin 속성의 지정을 허용하는 유형의 모든 요소.

[timed text]

본질적으로 또는 외재적으로 타이밍 정보와 연결된 텍스트 정보.

[timed text authoring system]

Timed Text Markup Language 콘텐츠를 가져오고 내보낼 수 있는 콘텐츠 저작 시스템.

[timed text content document]

TTML Content Document Typevalid abstract document instance라고 주장되거나 확인된 추상 문서.

[timed text content document instance]

timed text content document의 구체적 실현. 자세한 내용은 A 구체적 인코딩도 참조.

[timed text document instance]

timed text markup language document의 구체적 실현으로, 그 구체적 형태는 참조 맥락에 따라 다르다. TTML document instance 또는 단순히 document instance라고도 한다.

[timed text intermediate document]

TTML Intermediate Document Typevalid abstract document instance라고 주장되거나 확인된 추상 문서.

[timed text intermediate document instance]

timed text intermediate document의 구체적 실현. 자세한 내용은 A 구체적 인코딩을 참조.

[timed text markup language]

timed text content, 이 콘텐츠의 중간 표현, 또는 이 콘텐츠나 콘텐츠 프로세서의 프로필을 나타내는 콘텐츠 유형.

[timed text markup language document]

valid abstract document instance라고 주장되거나 확인된 추상 문서.

[timed text profile document]

TTML Profile Document Typevalid abstract document instance라고 주장되거나 확인된 추상 문서.

[timed text profile document instance]

timed text profile document의 구체적 실현. 자세한 내용은 A 구체적 인코딩을 참조.

[top-level profile]

head 요소의 자식으로 나타나는 ttp:profile 요소에 의해 정의된 profile.

[transformation processor]

Timed Text Markup Language 콘텐츠를 Timed Text Markup Language 또는 다른(임의의) 콘텐츠 형식으로 변환하거나 그 밖의 방식으로 다시 쓰는 것을 목적으로 하는 content processor. 전자의 예로는 TTML profile에 부합하도록 TTML feature를 제거하거나 다시 쓰는 프로세서가 있다. 후자의 예로는 TTML을 완전히 다른 timed text 형식으로 번역하는 프로세서가 있다. 이 명세는 transformation processing을 위한 대상 profile 또는 형식을 달리 정의하지 않으므로, 이 명세에서 더 이상의 변환 의미론은 정의되지 않는다.

[undesignated profile]

profile designator와 연결되지 않고, profile 정의의 맥락에서 암시적으로 참조되는 profile. anonymous profile이라고도 한다.

[valid abstract document instance]

유효성 평가를 거쳐 4 문서 유형이 정의한 대로 유효하다고 판정된 abstract document instance.

[validation processing]

validation processor가 수행하는 기능.

[validation processor]

content processor의 선택적 구성 요소로, 특정 다른 유형의 처리를 수행하기 전에 후보 document instance에 대해 validation processing을 수행하는 기능을 가진다. 여기서 validation processing은 5.3 검증에 정의된 [validate document] 절차를 수행하는 것으로 구성된다.

[validating content processor]

content processor로서의 주 기능을 수행하기 전에 전처리 단계로 validation processor 구성 요소를 구현하는 content processor.

참고:

validating content processor는 (1) document instance를 검증(또는 확인)하는 단일 기능만 가질 수 있으며, 이 경우 그 출력이 유효성 여부를 나타내는 validating transformation processor로 간주될 수 있다. 또는 (2) 여러 기능을 가질 수 있으며, 그중 첫 번째는 document instance를 검증(또는 확인)한 다음 transformation processor 또는 presentation processor로서의 주 기능을 수행하는 것이다.

참고:

validation processing이 수행될 때, conforming validating content processor는 후자가 주어진 콘텐츠 단위에 대해 전자보다 시간적으로 앞서지 않는 한 validation processing과 content processing을 교차 수행할 수 있다.

[vertical axis]

수평면에 수직인 축.

[width]

horizontal axis상의 absolute dimension.

[writing mode]

토큰의 열거 모음으로, 각 토큰은 inline 및 block 지향 콘텐츠 모두의 축과 흐름 방향의 조합을 지정한다. 자세한 내용은 10.2.51 tts:writingMode를 참조.

2.3 문서화 관례

이 명세의 규범적 설명에서 단어 may, should, must는 다음과 같이 정의된다.

may

준수 문서 및/또는 TTML 프로세서는 설명된 대로 동작할 수 있지만, 반드시 그렇게 동작할 필요는 없다.

should

준수 문서 및/또는 TTML 프로세서는 설명된 대로 동작할 것을 강하게 권장받지만, 반드시 그렇게 동작할 필요는 없다.

must

준수 문서 및/또는 TTML 프로세서는 설명된 대로 동작해야 하며, 그렇지 않으면 오류이다.

규범적 명세 언어가 명령형을 취하는 경우, 이는 must 용어가 적용되는 것처럼 처리되어야 한다. 또한 규범적 언어가 선언형을 취하고, 이 언어가 must에 의해 지배되는 경우, 이 역시 must 용어가 적용되는 것처럼 처리되어야 한다.

참고:

예를 들어 "treat X as an error" 및 "consider X as an error"라는 구문은 사용 맥락에서 필수 요구 사항으로 읽어야 한다. 마찬가지로, 명세 설명이 "X must apply", "X applies" 또는 "X is mandatory"이고, "X"가 추가로 "X is Y and Z"로 정의되어 있다면, 이 마지막 선언형 구문은 추이적 폐쇄에 의해 사용 맥락에서 "Y is mandatory" 및 "Z is mandatory"로 읽어야 한다.

XML 표현과 기타 관련 용어의 모든 규범적 구문 정의는 밝은 노란색-주황색 배경색으로 표시되고 "XML Representation" 또는 "Syntax Representation"으로 라벨링된다. 예를 들면 다음과 같다.

XML 표현 – 요소 정보 항목: 예
<example
  count = xsd:integer
  size = ("large" | "medium" | "small" | "tiny" | "micro") : medium>
  Content: (all | any*)
</example>

XML 표현에서 굵은 글꼴 속성 이름(예: 위의 count)은 필수 attribute information item을 나타내며, 나머지는 선택적이다. attribute information item이 열거형 정의를 가지는 경우, 값은 위의 size처럼 세로 막대로 구분되어 표시된다. 기본값이 있는 경우에는 콜론 뒤에 표시된다. attribute information item[XML Schema Part 2]에 정의된 내장 단순 유형 정의를 가지는 경우, 그 정의로 연결되는 하이퍼링크가 제공된다.

이 명세에서 명시적으로 정의되지 않는 한, 한정되지 않은 속성은 허용되지 않는다.

참고:

N.1 요소 파생을 제외하고, 속성의 (네임스페이스로 한정될 수 있는) 이름에는 속성과 같은 이름의 요소 유형을 구분하기 위해 '@'(COMMERCIAL AT) 문자가 접두된다. 이 경우 '@' 문자는 속성의 리터럴 이름의 일부로 의도된 것이 아니다. 예를 들어 @ttm:agentttm:agent 속성을 가리키는 반면, ttm:agentttm:agent 요소를 가리킨다.

밝은 노란색 주황색 배경색으로 표시된 정보 항목은 deprecated이다(예: 위에 표시된 size 속성의 tiny 값). deprecated된 정보 항목은 TTML 문서 인스턴스에 나타날 수는 있지만 나타나지 않는 것이 좋으며, validating content processor는 그것이 나타날 경우 경고를 보고하는 것이 좋다. 밝은 자홍색 빨간색 배경색으로 표시된 정보 항목은 obsoleted이다(예: 위에 표시된 size 속성의 micro 값). obsoleted된 정보 항목은 TTML 문서 인스턴스에 나타나서는 안 되며, validating content processor는 그것이 나타날 경우 오류를 보고하는 것이 좋다. 항목의 이러한 지정은 명세 텍스트에서도 명시적으로 언급된다.

정보 항목의 허용된 콘텐츠는 Kleene 연산자 ?, *, +를 사용하는 문법 조각으로 표시된다. 그 안의 각 요소 이름은 자체 예시로 연결되는 하이퍼링크이다.

linear white-space(LWSP)라는 용어는 SPACE(U+0020), TAB(U+0009), CARRIAGE RETURN(U+000D) 또는 LINE FEED(U+000A)의 비어 있지 않은 시퀀스로 해석되어야 하며, 이는 [XML 1.0]에 정의된 production [3] S에 대응한다.

값 구문 표현식의 명세에는 다음 관례가 사용된다.

  • 리터럴 용어(따옴표 안에 지정됨)가 존재하는 경우, 따옴표 자체를 제외하고 지정된 그대로 정확히 나타나야 한다.

  • 연결된(병치된) 용어는 모든 용어가 명시된 순서로 나타나야 함을 의미한다. 예를 들어 a bab라는 용어가 존재하고 전자가 후자보다 앞선다는 뜻이다.

  • 세로 막대(|)는 둘 이상의 대안을 구분하며, 그중 정확히 하나가 나타나야 한다.

  • 이중 세로 막대(||)는 둘 이상의 선택지를 구분하며, 그중 하나 이상이 중복 없이 임의의 순서로 나타나야 하고, <lwsp>로 구분된다.

  • 여는 괄호와 닫는 괄호(())는 그룹화 및 연산자 우선순위 해소에 사용된다.

  • 여는 대괄호와 닫는 대괄호([])는 문자 클래스를 표현하는 데 사용된다.

  • 여는 중괄호와 닫는 중괄호({})는 두 가지 방식으로 사용되며, 일반적으로 맥락만으로 어느 것이 적용되는지 충분히 결정할 수 있다 (그렇지 않은 경우 주변 설명이 어느 것이 적용되는지를 명확히 한다).

    • 반복 횟수 또는 범위를 표현하기 위해 사용되며, 다음 형식 중 하나를 취한다.

      • {count}

      • {minimum,maximum}

    • 문자 모음을 표현하며, 그중 하나가 반드시 나타나야 한다. 또한 모음은 {char-{specials}}와 같이 모음의 차집합으로 지정될 수 있으며, 이는 모든 XML 문자에서 special 문자 모음을 뺀 것을 나타낸다.

  • Kleene 연산자 ?, *, +는 각각 선행 용어의 0회 또는 1회, 0회 이상, 1회 이상을 표현한다.

  • 연산자 우선순위(높은 것부터 낮은 것까지)는 다음과 같으며, 모두 왼쪽에서 오른쪽으로 결합한다.

    1. 그룹화

    2. 연결(병치)

    3. ||

    4. |

|| 값 구문을 만족하는 표현식 사이에 반드시 나타나야 하는 linear whitespace를 제외하고, 값 구문 정의에 <lwsp> non-terminal이 나타나 명시적으로 표시되지 않는 한 공백은 허용되지 않는다.

달리 명시되지 않는 한, horizontalvertical이라는 용어는 writing mode에 상대적인 의미가 아니라 절대적 의미로 해석되며, widthhorizontal axis를 따른 차원을 가리키고 heightvertical axis를 따른 차원을 가리킨다. 모든 예외는 본문에 명시적으로 언급된다.

이 명세의 모든 콘텐츠 중 명시적으로 비규범적이라고 표시되지 않은 것은 규범적인 것으로 간주된다. 절 또는 부록의 제목에 "Non-Normative"라는 표현이 포함된 경우, 해당 절 또는 부록 전체가 비규범적인 것으로 간주된다.

Note로 표시된 모든 문단은 비규범적인 것으로 간주된다.

예제 코드 조각은 밝은 청록색 배경색으로 표시되고 "Example Fragment"로 라벨링된다. 예를 들면 다음과 같다.

예제 조각 – 샘플
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <metadata/>
    <styling/>
    <layout/>
  </head>
  <body/>
</tt>

참고:

여기에 표시된 예제 코드 조각은 well-formed XML로 표현되어 있지만, 완전하고 유효한 TTML 문서로 의도된 것은 아니다. 오히려 의도한 예제에 초점을 맞추기 위해 일반적으로 축약되어 있다. 특히 조각은 일반적으로 TTML 문서 적합성 요구 사항을 만족하기 위해 추가 요소 및/또는 속성으로 보강되어야 한다.

달리 명시되지 않는 한, 이 명세의 어휘 정의 절은 논리적 순서가 아니라 알파벳 순서로 어휘를 정의한다.

3 적합성

이 절은 TTML2 문서와 프로세서에 대한 일반 적합성 요구 사항을 명시한다.

3.1 문서 적합성

timed text document instance는 다음 기준이 충족되는 경우 이 명세를 준수한다.

  1. 교환되는 document instance의 콘텐츠 유형을 Media Type [MIME Media Types]이 식별하는 document interchange context에서 document instance를 전송할 때, 지정된 미디어 유형은 [XML Media Types] §7에 따른 application/ttml+xml이며, 선택적 profile 매개변수가 나타날 수 있고, 그 값은 <profile-designator> 표현식을 준수한다.

  2. document instanceB 축소 XML 정보 집합에 정의된 reduced xml infoset으로 표현되거나 표현될 수 있다.

  3. document instance에 대응하는 reduced xml infoset4 문서 유형에 정의된 abstract document types 중 하나와 연결되어 있거나 연결될 수 있다.

  4. document instance에 대응하는 reduced xml infoset은 연결된 abstract document typevalid abstract document instance이다.

  5. reduced xml infoset은 이 명세가 정의한 모든 추가 필수 구문 및 의미론적 제약을 만족한다. 또한 이 infoset은 [WCAG]가 지정한 웹 콘텐츠 접근성 지침을 만족하는 것이 좋다.

3.2 프로세서 적합성

이 절은 TTML2 프로세서의 적합성 요구 사항을 일반 프로세서 적합성과 두 가지 특수 프로세서 적합성 유형인 변환 프로세서 적합성프레젠테이션 프로세서 적합성의 관점에서 명시한다.

참고:

이 절에서 정의한 적합성 요구 사항은 TTML document instance의 정적 표현에 대해 동작하는 프로세서로 범위가 한정된다. 특히 저작 또는 편집 도구처럼 TTML document instance를 수정하는 프로세서는, TTML document instance에 일련의 수정을 수행한 최종 결과가 3.1 문서 적합성에 정의된 TTML 콘텐츠의 형식적 유효성을 만족하는 범위를 제외하고는 이 명세의 적용을 받지 않는다.

3.2.1 일반 프로세서 적합성

TTML2 content processor는 다음 일반 프로세서 기준이 충족되는 경우 이 명세를 준수한다.

  1. 프로세서는 준수하는 document instancereduced xml infoset 표현을 개념적으로 인스턴스화하기 위한 메커니즘을 하나 이상 제공한다.

  2. 프로세서는 profile processing을 수행한다.

    참고:

    profile processing의 수행은 아래 다음 항목에서 설명하는 [validate document] 절차를 수행하는 것에는 미치지 않는 일정 수준의 부분 검증을 함축한다. 특히 profile 관련 어휘의 구문적 표현과 이 어휘의 사용에 적용되는 모든 필수 구문 또는 의미론적 제약은 구현이 이 어휘를 사용하기 전에 명목상 확인할 것으로 예상된다. profile processing이 구문 또는 의미론적 제약의 중대한 위반을 감지하지 않고 완료되면, 더 완전한 검증을 [validate document] 절차로 수행할 수 있다.

  3. 프로세서가 validating content processor인 경우, 그것은

    1. 후보 document instancereduced xml infoset 표현을 4 문서 유형에 정의된 Abstract Document Types 중 하나와 암시적으로 또는 명시적으로 연결하기 위한 메커니즘을 하나 이상 제공하고,

    2. [validate document] 절차를 수행한다.

    참고:

    이 명세는 이전 항목에서 설명한 validation processing의 수행과 profile processing의 수행 사이에 엄격한 순서를 정의하지 않는다. 특히 이 두 처리 단계는 document instance에 대해 추가적인 (변환 또는 프레젠테이션) 처리를 수행하기 전에 둘 다 완료되도록 교차 수행되거나 반복될 수 있다.

    위 내용에도 불구하고, validation processingprofile processing 사이에는 암시적인 순서 관계가 있다. 구체적으로, validation processing을 수행하려면 effective validation profile의 값을 해석할 필요가 있으며, 그 값을 위해서는 effective content profile의 값을 해석하거나, 그 값이 null이면 effective processor profile의 값을 해석할 필요가 있다. 후자의 두 값은 profile processing 중에 얻어진다.

    참고:

    validation processingprofile processing을 교차 수행하는 예로, 다음 시나리오를 고려한다(주어진 순서대로).

    • 입력 문서 소스의 well-formedness 확인(validation processing);

    • 입력 문서 소스를 잠재적으로 유효한 abstract document instance로 인스턴스화(general processing);

    • 내장 애플리케이션 의미론을 사용하여 validation state 초기화 (validation processing);

    • 내장 애플리케이션 의미론을 사용하여 profile state 초기화(profile processing);

    • validation 관련 어휘 검증(validation processing);

    • 유효한 validation 관련 어휘를 사용하여 validation state 갱신 (validation processing);

    • profile 관련 어휘 검증(validation processing);

    • 유효한 profile 관련 어휘를 사용하여 profile state 갱신(profile processing);

    • [abort if unsupported processor profile] 절차의 중단 단계 수행 (profile processing);

    • 새 profile state를 기반으로 필요에 따라 validation 및 profile 어휘를 다시 검증하면서 전체 문서 검증(validation processing);

    • 처리가 중단되지 않은 경우, 변환 또는 프레젠테이션 처리로 계속 진행 (general processing).

  4. 프로세서는 다음 경우를 제외하고, 준수하는 document instance의 처리를 a priori 거부하거나 중단하지 않는다.

    1. 프로세서가 document instance에 적용된다고 선언된 TTML profile에 의해 지정되거나 암시된 어떤 필수(mandatory) feature를 지원하지 않는 경우, 또는

    2. [validate document] 절차를 수행할 때 validation error가 발생하는 경우.

  5. 프로세서는 이 명세가 정의한 모든 필수 처리 의미론을 지원한다.

    참고:

    mandatory semantics라는 구문은 적합성 핵심 구문 mustmust not의 모든 명시적 사용과, 그러한 핵심 구문으로부터 합리적으로 추론할 수 있는 모든 선언문을 가리킨다.

    참고:

    feature 또는 extensionmandatory semantics에 대한 지원은 해당 feature 또는 extension이 TTML content processor에 의해 지원되는 경우에만 적용된다.

  6. 프로세서가 이 명세가 정의한 어떤 선택적 처리 의미론을 지원하는 경우, 정의된 의미론과 일관된 방식으로 그렇게 한다.

    참고:

    optional semantics라는 구문은 적합성 핵심 구문 should, should not, may, may not의 모든 명시적 사용과, 그러한 핵심 구문으로부터 합리적으로 추론할 수 있는 모든 선언문을 가리킨다.

3.2.2 변환 프로세서 적합성

TTML content processor는 다음 기준이 충족되는 경우 준수하는 TTML2 transformation processor이다.

  1. 프로세서는 3.2.1 일반 프로세서 적합성에 지정된 모든 요구 사항을 만족한다.

  2. 프로세서는 G.3 TTML2 변환 프로필에 지정된 TTML Transformation profile을 지원한다.

  3. 프로세서는 G.6 DFXP 변환 프로필에 지정된 DFXP Transformation profile을 지원한다.

3.2.3 프레젠테이션 프로세서 적합성

TTML content processor는 다음 기준이 충족되는 경우 준수하는 TTML2 presentation processor이다.

  1. 프로세서는 3.2.1 일반 프로세서 적합성에 지정된 모든 요구 사항을 만족한다.

  2. 프로세서는 G.2 TTML2 프레젠테이션 프로필에 지정된 TTML Presentation profile을 지원한다.

  3. 프로세서는 G.5 DFXP 프레젠테이션 프로필에 지정된 DFXP Presentation profile을 지원한다.

  4. 프로세서는 11.3.1.3 중간 동기 문서 구성11.3.1.4 동기 흐름 처리를 수행한다.

참고:

두 개의 준수하는 presentation processor가 동일한 준수 문서를 처리할 때 동일한 프레젠테이션을 생성해야 하는 것은 아니다. 예를 들어 서로 다른 presentation processor는 서로 다른 글꼴, 서로 다른 글꼴 래스터라이저, 서로 다른 줄 바꿈 알고리즘, 그리고 이 명세가 규정하지 않는 동작의 서로 다른 구현을 사용할 수 있다.

3.3 클레임

TTML document instance 또는 content processor의 적합성과 관련된 모든 준수 주장은 implementation compliance statement(ICS)를 참조해야 한다.

implementation compliance statement는 문서 인스턴스 또는 content processor 구현이 만족하는 이 명세의 모든 필수 및 선택 feature를 식별해야 한다. 특히 그 statement는 5.2 프로파일링에 정의된 대로 사용되거나 지원되는 TTML vocabulary profile을 식별해야 하며, subset 또는 superset profile이 사용되거나 지원되는 경우 subset 또는 superset profile에 어떤 feature가 제외되거나 포함되는지도 식별해야 한다.

참고:

위에 지정된 변환 프로세서 적합성프레젠테이션 프로세서 적합성의 정의는 이러한 각 유형의 프로세서가 (최소한) 두 개의 특정 profile, 즉 [TTML1]이 정의한 유형별 profile과 이 명세가 정의한 유형별 profile을 지원할 것을 요구한다.

이 요구 사항에도 불구하고, Generic Processor Conformance 요구 사항을 만족하면서 변환 또는 프레젠테이션 처리 기능을 수행하지만, Transformation Processor Conformance 또는 Presentation Processor Conformance가 요구하는 profile 중 어느 것도 지원하지 않고, 대신 이 명세의 범위 밖에서 정의된 profile만 지원하는 TTML content processor를 구성하는 것이 가능하다. 그러한 경우 프로세서는 Generic Processor Conformance를 준수한다고 주장할 수 있고, 더 나아가 TTML transformation processor 또는 TTML presentation processor일 수 있지만, Transformation Processor Conformance 또는 Presentation Processor Conformance를 준수한다고 주장할 수는 없다.

준수 주장이 이루어지는 document instance는 다음 중 하나와 연결되어야 한다.

  1. 명시적으로 지정된 ttp:contentProfiles 속성 또는 하나 이상의 top-level content profiles에서 파생된 non-null effective content profile, 또는

  2. 명시적으로 지정된 ttp:processorProfiles 또는 ttp:profile 속성, 또는 하나 이상의 top-level processor profiles에서 파생된 non-null effective processor profile.

3.4 호환성

이 하위 절은 비규범적이다.

3.4.1 상위 호환성

준수하는 TTML1 프로세서는 TTML2 content document instance를 처리할 수 있을 수도 있다. 단, 알 수 없는 어휘를 무시하고, 준수하는 TTML1 content document instance에서 허용되지 않는 맥락에 나타나는 알려진 어휘도 무시해야 한다. 그러나 그러한 처리는 준수하는 TTML2 프로세서가 처리할 때와 달리 콘텐츠를 버리거나 제시하지 못할 수 있고, 또는 의도와 다르게 콘텐츠를 제시할 수 있다.

참고:

예를 들어 TTML1 프로세서가 TTML2에 정의된 tts:ruby 속성을 무시하는 경우, 그 프로세서는 ruby feature를 사용하는 TTML2 콘텐츠를 여전히 제시할 수 있지만, 의도한 대로 제시되지는 않을 수 있다. 마찬가지로 TTML1 프로세서가 다른 style 요소의 자식으로 나타나는 style 요소를 만나면, 전자의 중첩 style은 무시될 수 있다(이 기능은 TTML1에 정의되어 있지 않았기 때문이다).

3.4.2 하위 호환성

TTML2는 다음과 같이 설계되었다.

  • 준수하는 TTML1 content document instance는 준수하는 TTML2 content document instance이다.

  • 준수하는 TTML2 프로세서는 준수하는 TTML1 content document instance를 처리하여, TTML2 프로세서가 생성하는 출력이 TTML1에서 허용하는 변형 범위 안에 있도록 한다. 그러나 deprecated feature를 만나면 경고를 내보낼 수 있다.

4 문서 유형

이 절은 다음 TTML Abstract Document Types를 정의한다.

abstract document type은 다음 제약으로 구성된다.

abstract document instance는 유효성의 관점에서 평가될 수 있으며, 다음 조건을 만족하면 valid abstract document instance로 간주된다. 즉, 다음을 수행한 뒤

  1. 이름이 연결된 abstract document type이 정의한 element type 모음의 구성원이 아닌 모든 element information item을 가지치기한 다음,

  2. 남아 있는 어떤 요소의 모든 문자 자식이 XML 공백 문자를 나타내고, 그 요소의 유형이 연결된 abstract document type에서 empty로 정의된 경우, 해당 요소에서 character information item 자식을 가지치기한 다음,

  3. expanded name의 namespace URI가 표 5-1 – 네임스페이스에 나열되어 있지 않거나, 표 5-1 – 네임스페이스에 나열되어 있더라도 그 owning element information item과 함께 사용하기 위해 연결된 abstract document type이 정의한 속성 모음의 구성원이 아닌 expanded name을 가진 모든 attribute information item을 가지치기한다.

그런 다음 문서 요소가 연결된 abstract document type에서 허용하는 문서 요소 유형 중 하나이고, 문서 요소의 하위 요소들이 각자의 element type content specification을 만족하며, 모든 필수 속성이 존재하고, 각 속성의 선언된 값이 연결된 abstract document type이 선언한 유형을 만족한다면 유효하다.

참고:

준수 프로세서는 준수하는 document instancea priori 거부하지 않을 수 있지만, 주어진 document instance는 저자 또는 저작 도구에 의해 더 제한적인 유효성 정의를 만족하도록 제약될 수 있다.

참고:

다음 예에 나타난 것처럼, abstract document instance는 namespace name이 표 5-1 – 네임스페이스에 나열되어 있지만 local name이 이 명세 버전에서 정의한 어휘의 일부가 아닌 요소와 속성을 포함하더라도, valid abstract document instance일 수 있다. 구체적으로, foo 요소와 tts:foo 속성은 각각 위 단계 (1) 및 (3)에 의해 가지치기된다. 이는 그 namespace name이 표 5-1 – 네임스페이스에 나열되어 있더라도 연결된 abstract document type의 구성원이 아니기 때문이다.

예제 조각 – 요소 및 속성의 가지치기
<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 Content Document Type은 배포 시스템 간 교환에 사용되도록 의도된 Timed Text Markup Language profile의 abstract document type이다. 이 문서 유형은 5 어휘에 지정된 요소 및 속성 어휘의 관점에서 정의된다.

이 명세는 timed text content document instances의 superset/subset을 검증하는 데 사용할 수 있는 두 가지 유형의 스키마를 참조한다.

TTML Content document instance의 (루트) 문서 요소는 8.1.1 tt에 정의된 tt 요소여야 한다.

참고:

이 명세가 참조하는 스키마는 이 명세가 정의한 모든 구문 제약을 검증하지 않으므로, 준수하는 TTML Content의 superset을 나타낸다. 특히 위에서 참조한 스키마 중 하나로 검증을 수행하면 유효성에 대한 false positive 표시가 발생할 수 있다. 예를 들어 RNC 및 XSD 스키마는 모두 tts:fontFamily 속성이 xsd:string XSD 데이터 유형을 만족해야 한다고 지정하지만, 이 데이터 유형은 tts:fontFamily 속성에 사용할 수 있도록 허용된 값들의 superset이다.

또한 RNC 스키마는 foreign namespace의 요소와 함께 xml:id 속성을 사용할 때 유효성에 대한 false negative 표시를 생성할 수 있으며, 따라서 준수하는 TTML Content의 subset을 나타낸다. 이는 Relax NG 스키마에서 xsd:ID 유형 속성과 관련된 wildcard pattern을 표현할 때의 특정 제한 때문이다. 이 명세는 document instance의 형식적 유효성을 모든 foreign namespace 요소와 속성이 제거된 abstract document instance에 기반하여 정의한다는 점에 유의한다. 따라서 이 false negative의 예외적 보고는 document instance 유효성의 형식적 평가에 영향을 주지 않는다.

참고:

이 명세가 참조하는 스키마는 4 문서 유형에 지정된 가지치기 단계 (1)-(3)이 적용된 후 사용되도록 의도된다.

참고:

준수하는 Generic Processortimed text content document의 수집 및 처리를 지원해야 한다.

4.2 TTML 중간 문서 유형

TTML Intermediate Document Type은 timed text content document의 콘텐츠를 나타내는 데 사용되도록 의도된 abstract document type이다. 이때 타이밍 정보는 비계층적(flat), 시간적으로 선형인 방식으로 표시되며, 스타일링 사항과 같은 특정 정보는 후속 처리를 단순화하기 위해 해석되거나 병합될 수 있다. 이 문서 유형은 J 중간 문서 구문5 어휘에 지정된 요소 및 속성 어휘의 관점에서 정의된다.

이 명세는 timed text intermediate document instances를 검증하는 데 사용할 수 있는 두 가지 유형의 스키마를 참조한다.

TTML Intermediate Synchronic document instance의 (루트) 문서 요소는 J 중간 문서 구문에 정의된 대로 isd:sequence 또는 isd:isd 요소여야 한다.

참고:

준수하는 Generic Processortimed text intermediate document의 수집 또는 처리를 지원해야 하는 것은 아니다.

4.3 TTML 프로필 문서 유형

TTML Profile Document Type은 TTML feature 또는 extension의 지원 또는 사용에 대한 제약을 정의하고 전달하는 데 사용되도록 의도된 abstract document type이다. 이 문서 유형은 5 어휘에 지정된 요소 및 속성 어휘의 관점에서 정의된다.

이 명세는 timed text profile document instances를 검증하는 데 사용할 수 있는 두 가지 유형의 스키마를 참조한다.

TTML Profile document instance의 (루트) 문서 요소는 6.1.1 ttp:profile에 정의된 ttp:profile 요소여야 한다.

참고:

준수하는 Generic Processortimed text profile document의 수집 또는 처리를 지원하는 것이 권장되지만 필수는 아니다. 그러나 http://www.w3.org/ns/ttml/feature/#profile feature를 지원한다고 주장하는 content processor는 이것 (즉 timed text profile document의 수집 및 처리)을 지원해야 한다.

5 어휘

이 절은 Timed Text Markup Language (TTML)의 네임스페이스, 프로필 및 어휘(요소 및 속성 카탈로그로서)를 다음과 같이 정의한다.

5.1 네임스페이스

Timed Text Markup Language (TTML)는 요소와 특정 전역 속성에 대해 여러 XML Namespaces [XML Namespaces 1.0]를 사용한다. 다음 표는 이 네임스페이스 집합을 지정하고, 이 명세 안에서 사용되는 기본 접두사와 각 네임스페이스를 나타내는 규범적 URI를 표시한다.

표 5-1 – 네임스페이스
이름 접두사
TT tt: http://www.w3.org/ns/ttml
TT Parameter ttp: http://www.w3.org/ns/ttml#parameter
TT Style tts: http://www.w3.org/ns/ttml#styling
TT Audio Style tta: http://www.w3.org/ns/ttml#audio
TT Metadata ttm: http://www.w3.org/ns/ttml#metadata
TT Intermediate Synchronic Document isd: http://www.w3.org/ns/ttml#isd
TT Profile 없음 http://www.w3.org/ns/ttml/profile/
TT Feature 없음 http://www.w3.org/ns/ttml/feature/
TT Extension 없음 http://www.w3.org/ns/ttml/extension/
TT Resource 없음 http://www.w3.org/ns/ttml/resource/

모든 TTML Namespaces는 mutable [NSState]이다. 이 네임스페이스들에서 정의되지 않은 모든 이름은 W3C에 의한 향후 표준화를 위해 예약된다.

TT Style Namespace (http://www.w3.org/ns/ttml#styling)와 TT Audio Style Namespace (http://www.w3.org/ns/ttml#audio)는 함께 TT Style Namespaces라고 부른다. 특히 이 후자의 모음이 명세 텍스트에서 언급되는 경우, 해당 어휘 항목이 TT Style Namespace 또는 TT Audio Style Namespace 중 하나에 있음을 의미한다.

참고:

특정 document instance에서는 위에 표시된 기본 접두사를 사용해야 하는 것은 아니다. XML Namespaces [XML Namespaces 1.0]의 제약을 만족하고 지정된 네임스페이스 URI와 연결된 임의의 접두사 또는 네임스페이스 바인딩을 사용할 수 있다.

참고:

이 명세에서 요소 유형에 대한 참조가 사용되고 그 요소 유형의 이름이 네임스페이스로 한정되어 있지 않다면, TT Namespace가 적용된다.

이 명세에서 속성에 대한 참조가 사용되고 그 속성의 이름이 네임스페이스로 한정되어 있지 않다면, 그 속성은 함께 사용되는 요소 유형에 의해 암시적으로 한정된다. 즉, 그 속성은 이른바 per-element-type namespace partition [NSOriginal] 안에 있으며, 그 구성원은 자신이 나타나는 요소 유형의 정의에 따라 해석된다.

위에 정의된 특정 네임스페이스의 경우, 이 명세가 해당 네임스페이스에 XML 어휘를 정의하지 않으며(또는 이 명세의 향후 버전에서 정의될 것으로 기대되지도 않으면), 기본 접두사는 없음으로 지정된다. 이러한 경우 네임스페이스 URI의 사용은 XML 어휘를 정의하는 것 이외의 목적, 예를 들어 프로필, 기능, 확장을 지정하고 표준 프로필 정의를 역참조하기 위한 목적이다.

5.2 프로파일링

이 절은 TTML 프로파일링 하위 시스템과 이 하위 시스템에 적용되는 상위 수준 요구 사항을 설명한다. 이 절의 끝에는 profile specification의 예와 이러한 명세가 어떻게 참조되고 사용되는지에 대한 예를 포함한 하위 절이 나타난다.

5.2.1 소개

이 하위 절은 비규범적이다.

주어진 profile은 Timed Text Markup Language 콘텐츠 저자가 두 가지 기능 중 하나를 위해 사용할 수 있다. (1) document instance가 어떤 어휘를 사용하고 그것이 어떻게 사용되는지에 대한 제약 모음을 준수함을 선언하거나, (2) processor가 콘텐츠 처리 방식에 대한 특정 조건을 만족해야 함을 선언하는 것이다. 이들 기능 중 첫 번째는 content profile이라고 하며, 두 번째는 processor profile이라고 한다.

content profile은 저자가 저작 시점에 document instance에 적용하고자 하는 제약을 선언할 수 있도록 하는 데 사용된다. 이러한 선언은 downstream processor가 콘텐츠 검증 또는 확인을 수행할 수 있게 하며, 저자가 지정한 content profile에 대한 준수를 유지하기 위해 콘텐츠의 후속 변환 또는 편집을 안내하거나 제한할 수 있게 한다. 또한 downstream processor는 content profile 선언을 사용하여 content profile이 암시하는 기능들을 처리할 수 있는지 여부를 조기에 판단할 수 있다.

Content profile은 (1) 루트 tt 요소의 ttp:contentProfiles 속성, (2) content 유형의 하나 이상의 최상위 ttp:profile 요소, 또는 (3) 이 두 메커니즘의 조합을 사용하여 선언된다. 선언되지 않은 경우, 어떤 content profile도 암시되지 않는다.

processor profile은 저자가 저작 시점에 document instance를 처리할 때 어떤 처리가 지원되어야 하는지를 선언할 수 있도록 하는 데 사용된다. 따라서 프로세서가 표시된 처리를 수행할 수 없다면 처리는 중단되는 것이 좋다. 이러한 선언은 downstream processor가 콘텐츠 저자의 요구 사항을 충족하는 방식으로 처리할 수 없는 콘텐츠를 처리하지 않도록 할 수 있게 한다.

Processor profile은 (1) 루트 tt 요소의 ttp:processorProfiles 속성, (2) processor 유형의 하나 이상의 ttp:profile 요소, 또는 (3) 루트 tt 요소의 ttp:profile 속성을 사용하여 선언된다. 선언되지 않은 경우, processor profile은 선언된 content profile 또는 default processor profile에서 추론된다.

참고:

준수하는 document instance에 대해 processor profile이 ttp:profile 요소를 사용하여 내부적으로 선언되거나, ttp:profile 또는 ttp:processorProfiles 속성으로 내부적으로 참조되어야 하는 것은 요구 사항이 아니다. 더 구체적으로는, document interchange context가 사적 합의, 대역 외 프로토콜, 또는 외부 명세가 정의한 processor profile의 공통 사용(송신자와 수신자 사이)을 통해 적용 가능한 processor profile을 결정하는 것이 허용된다.

참고:

저자가 TTML Content의 표준 사전 정의 processor profile 중 하나(또는 그 이상)를 참조하고자 하며, 해당 profile을 수정(상위집합화 또는 부분집합화)하고 싶지 않은 경우 ttp:profile 또는 ttp:processorProfiles 속성을 사용하도록 의도되어 있다. 이러한 속성은 저자가 비표준 profile의 사용을 나타내는 데도 사용할 수 있으며, 이 경우 지정된 <profile-designator>는 외부에서 정의된 profile definition document를 나타내는 URI를 표현한다. 그러나 준수하는 TTML content processor가 그러한 외부 지정 profile definition을 역참조할 수 있어야 하는 것은 요구되지 않는다.

반대로, 저자가 수정된 사전 정의 profile을 사용하고자 하거나, 사전 정의 profile 중 하나에 기반하지 않는 비표준 profile definition을 document instance 안에 포함하고자 할 때에는 ttp:profile 요소를 사용하도록 의도되어 있다.

사전 정의 profile은 underlying baseline profile에 지정되지 않았거나 baseline profile에서 optional(voluntary)로 지정된 어떤 feature 또는 extension을 required(mandatory)로 지정함으로써 상위집합화된다. 사전 정의 profile은 underlying baseline profile에서 required(mandatory)로 지정된 어떤 feature 또는 extension을 optional(voluntary)로 지정함으로써 부분집합화된다.

baseline profile이 부분집합화에 의해 수정되면, 그 결과 파생 profile은 subtractive profile이라고 부른다. 상위집합화에 의해 수정되면, 그 결과는 additive profile이라고 부른다. 동시에 subtractive이면서 additive인 파생 profile을 정의하는 것도 가능하다.

콘텐츠 저자는 단일 profile 사용으로 제한되지 않으며, 두 유형 중 여러 profile, 즉 여러 content profiles 및/또는 여러 processor profiles를 참조할 수 있다. 여러 profile이 참조되면, 각 명세는 결합되어 문서에 적용되는 단일 effective content profile과 프로세서가 문서를 처리할 때 적용되는 단일 effective processor profile을 형성한다. 또한 저자는 외부에서 정의된 profile을 참조하는 것으로 제한되지 않으며, 문서 안에서 하나 이상의 profile을 인라인으로 정의할 수 있다.

5.2.2 프로필 예제

이 하위 절은 비규범적이다.

저자가 정의한 TTML Presentation profile의 additive 파생 profile 예가 아래 예제 조각 – TTML Additive Profile에 표시되어 있다.

예제 조각 – TTML Additive Profile
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
 <head>
   <profile use="ttml2-presentation" xmlns="http://www.w3.org/ns/ttml#parameter">
     <features xml:base="http://www.w3.org/ns/ttml/feature/">
       <feature value="required">#fontStyle-italic</feature>
     </features>
   </profile>
 </head>
 <body/>
</tt>

참고:

위 예제에서 baseline profile은 TTML2 Presentation profile로 선언되고, 그 뒤 #fontStyle-italic feature를 G.2 TTML2 Presentation Profile에서 정의된 것처럼 optional이 아니라 required로 만듦으로써 additively 수정된다. 또한 profile 요소에서 기본 XMLNS 바인딩을 TT Parameter Namespace로 재설정한다는 점에도 유의한다.

5.2.3 프로필 지정자

profile은 참조하는 문서 외부에서 정의되는지 또는 참조하는 문서 안에서 인라인으로 정의되는지에 따라 두 가지 방식 중 하나로 참조된다. 외부에서 정의되는 경우, profile은 <absolute-profile-designator> 또는 <relative-profile-designator> 표현식을 통해 참조된다. 내부(인라인)에서 정의되는 경우, profile은 암시적으로 참조되거나 <fragment-profile-designator> 표현식을 통해 참조된다.

profile designator는 <uri> 값 구문을 준수해야 한다. profile designator가 상대 URI로 표현되는 경우, TT Profile Namespace 값을 기본 URI로 사용하여 절대화해야 한다.

TT Profile Namespace를 접두사로 가지지만 표 5-2 – 프로필에 나열되지 않은 모든 profile designator는 향후 표준화를 위해 예약되며, 준수하는 document instance에 나타나서는 안 된다. 이 제약에도 불구하고, profile designator는 표 5-2 – 프로필에 열거된 designator 집합으로 제한되지 않으며, TT Profile Namespace를 접두사로 사용하지 않는 한, TTML profile definition document를 실현 가능하게 역참조하는 임의의 URI일 수 있다.

5.2.3.1 표준 지정자

Timed Text Markup Language (TTML)는 그 어휘와 관련 의미론에 대해 여러 표준 사전 정의 profile을 사용한다.

다음 표는 이 profile 집합을 지정하며, 각 사전 정의 profile에 대한 규범적 이름과 designator를 표시하고, 각 profile이 G 표준 프로필, [TTML1], 또는 다른 TTWG 명세에서 어디에 형식적으로 상세화되어 있는지 나타낸다.

표 5-2 – 프로필
이름 절대 지정자
DFXP Full http://www.w3.org/ns/ttml/profile/dfxp-full
DFXP Presentation http://www.w3.org/ns/ttml/profile/dfxp-presentation
DFXP Transformation http://www.w3.org/ns/ttml/profile/dfxp-transformation
SDP US http://www.w3.org/ns/ttml/profile/sdp-us
TTML2 Full http://www.w3.org/ns/ttml/profile/ttml2-full
TTML2 Presentation http://www.w3.org/ns/ttml/profile/ttml2-presentation
TTML2 Transformation http://www.w3.org/ns/ttml/profile/ttml2-transformation

참고:

DFXP profile의 정의는 [TTML1]을 참조한다. SDP US profile의 정의는 [SDP US]를 참조한다.

5.2.4 프로필 의미론

5.2.4.1 Profile State Object 개념

이 절은 이후에 정의되는 알고리즘(절차 및 함수)에서 사용되는 여러 개념적 state object를 정의한다. 구현이 이러한 객체를 여기 지정된 형태로 생성해야 하는 것은 아니며, 동등한 정보를 표현하는 편리한 내부 표현을 사용할 수 있다.

[profile specification]

profile specificationttp:feature 또는 ttp:extension 요소에 대응하는 다음 내부 state 정보를 나타낸다.

designator

type에 따라 feature 또는 extension designator를 나타내는 <uri>

type

"feature" | "extension"

value

"optional" | "required" | "prohibited"

[combined profile specification set]

combined profile specification setprofile specifications 집합에 대응하는 다음 내부 state 정보를 나타내며, 추가로 이러한 specifications가 획득(또는 파생)된 구성 profile들을 기록한다.

constituents

<absolute-profile-designator> 표현식의 순서 있는 목록으로, 각 designator는 constituent profile, 즉 이 combined profile specification set을 구성하는 profile을 나타낸다.

specifications

profile specifications의 순서 있는 목록.

[empty profile specification set]

combined profile specification set으로, 그 constituentsspecifications 필드가 빈 집합인 것

[profile instance]

profile instance는 명시적으로 지정되었든 암시되었든 ttp:profile 요소에 대응하는 다음 내부 state 정보를 나타낸다.

designator

이 profile과 연결되어(그리고 이를 고유하게 라벨링하여) 있는 <absolute-profile-designator> 표현식.

type

"content" | "processor"

combine

"leastRestrictive" | "mostRestrictive" | "replace"

use

null 또는 이 profile의 baseline profile 역할을 하는 profile을 나타내는 <profile-designator> 표현식.

constituents

profile이 nesting profile인 경우, <fragment-profile-designator> 표현식의 순서 있는 목록이며, 여기서 각 designator는 constituent nested profile을 나타낸다. 그렇지 않으면 null.

specifications

profile이 non-nesting profile인 경우, profile specifications의 순서 있는 목록. 그렇지 않으면 null.

combined specification set

이 profile이 지정하거나 참조한 specifications를 결합한 결과를 나타내는 combined profile specification set.

5.2.4.2 Content Profile 의미론
[construct effective content profile]

모든 TTML document instance는 (null일 수 있는) effective content profile과 연결되며, 이는 content processor가 다음 중 일부 (또는 전부)를 수행하는 데 사용할 수 있다.

  1. effective processor profile 추론;

  2. document instance에 대해 validation processing 수행;

  3. content profile 불변성을 유지하기 위해 document instance에 대한 transformation processing을 제약.

effective content profile은 다음 절차에 따라 구성된다.

  1. document processing context가 특정 override content profile PO가 다른 모든 결정을 재정의해야 한다고 판단하면, effective content profilePO이다.

    참고:

    예를 들어, 이 명세를 준수하는 [EBU-TT-D] 문서는 [EBU-TT-D] content profile 준수를 알리기 위해 ebuttm:conformsToStandard 요소를 지정할 수 있다. 그러한 경우 해당 profile을 지원하는 content processor는 그 요소의 존재를 override로 사용하여 effective content profile을 결정할 수 있다.

  2. 그렇지 않고 루트 tt 요소에 ttp:contentProfiles 속성이 지정되어 있으면, effective content profile은 지정된 profile들의 combined profile specification set을 결합하여 생성된 combined profile specification set이다. 이때 루트 tt 요소의 ttp:contentProfileCombination 속성이 지정한 content profile combination method(또는 그 기본값)가 적용된다.

  3. 그렇지 않고 하나 이상의 top-level content profiles가 정의되어 있으면, effective content profile은 그러한 모든 top-level content profiles의 combined profile specification set을 결합하여 생성된 combined profile specification set이다. 이때 루트 tt 요소의 ttp:contentProfileCombination 속성이 지정한 content profile combination method(또는 그 기본값)가 적용된다.

  4. 그렇지 않으면, effective content profilenull이다.

Generic Processor Conformance를 준수하기 위해, 주어진 document instance를 처리할 때 effective content profile은 일단 profile instance에 대한 non-null 참조로 설정되면, 그 처리 기간 동안 상수 profile instance에 대한 상수 참조로 유지된다. 마찬가지로 null 참조로 설정되면, 그 처리 기간 동안 상수 null 참조로 유지된다.

5.2.4.3 Processor Profile 의미론
[abort if unsupported processor profile]
  1. construct effective processor profile 절차를 수행하여 얻은 effective processor profileEPP를 설정한다.

  2. EPP의 combined profile specification set 안의 각 profile specification S에 대해 다음 단계를 수행한다.

    1. Svalue 필드가 required이고, content processorS를 지원하지 않으면, 최종 사용자 또는 최종 사용자나 사용자 또는 시스템 구성 설정으로 추적 가능한 어떤 구현별 매개변수가 재정의하지 않는 한 document instance의 처리를 중단한다.

[construct effective processor profile]

모든 TTML document instance는 (non-null) effective processor profile과 연결되며, 이는 content processor가 콘텐츠 저자가 신호한 최소 처리 요구 사항을 충족하는지 여부를 결정하는 데 사용된다.

effective processor profile은 다음 절차에 따라 구성된다.

  1. document processing context가 특정 override processor profile PO가 다른 모든 결정을 재정의해야 한다고 판단하면, effective processor profilePO이다.

  2. 그렇지 않고 루트 tt 요소에 ttp:processorProfiles 속성이 지정되어 있으면,

    1. ttp:processorProfiles 속성이 all(...) 함수 구문을 사용하여 지정되었거나 함수 구문 없이, 즉 designator의 목록만으로 지정된 경우, effective processor profile은 지정된 profile들의 combined profile specification set을 결합하여 생성된 combined profile specification set이다. 이때 루트 tt 요소의 ttp:processorProfileCombination 속성이 지정한 content profile combination method(또는 그 기본값)가 적용된다.

    2. 그렇지 않고 ttp:processorProfiles 속성이 any(...) 함수 구문을 사용하여 지정된 경우, 각 지정 profile에 대해 effective processor profilecontent processor가 지원하는 지정 profile 목록 중 첫 번째 profile의 combined profile specification set이다.

  3. 그렇지 않고 하나 이상의 top-level processor profiles가 정의되어 있으면, effective processor profile은 그러한 모든 top-level processor profiles의 combined profile specification set을 결합하여 생성된 combined profile specification set이다. 이때 루트 tt 요소의 ttp:processorProfileCombination 속성이 지정한 processor profile combination method(또는 그 기본값)가 적용된다.

  4. 그렇지 않고 루트 tt 요소에 ttp:profile 속성이 지정되어 있으면, effective processor profile은 이 속성이 지정한 profile의 combined profile specification set이다.

  5. 그렇지 않으면, effective processor profileconstruct inferred processor profile 절차를 수행한 결과이다.

Generic Processor Conformance를 준수하기 위해, 주어진 document instance를 처리할 때 effective processor profile은 일단 profile instance에 대한 참조로 설정되면, 그 처리 기간 동안 상수 profile instance에 대한 상수 참조로 유지된다.

[construct inferred processor profile]
  1. ECPeffective content profile로 설정한다.

  2. ECPnull이 아니면 다음 단계를 수행한다.

    1. ttp:inferProcessorProfileSource 매개변수의 계산 값이 combine이면, inferred processor profileECP의 combined profile specification set에 infer processor profile 함수를 적용한 결과이다.

    2. 그렇지 않고 ttp:inferProcessorProfileSource 매개변수의 계산 값이 first이면, inferred processor profilecontent processor가 지원하는 IPP가 되도록, ECP의 combined profile specification set의 각 constituent와 연결된 profile instance의 combined specification set component에 infer processor profile 함수를 적용하여 생성된 첫 번째 inferred processor profile IPP이다.

  3. 그렇지 않으면, inferred processor profileconstruct default processor profile 절차를 수행한 결과이다.

[infer processor profile](combined profile specification set CPSS)
  1. inferred processor profile IPP를 empty combined profile specification set으로 구성된 content profile로 초기화한다.

  2. combined profile specification set CPSS 안의 각 profile specification S에 대해:

    1. ttp:inferPresentationProfileMethod 매개변수의 계산 값과 표 6-2 – Infer Processor Profile Method에 따라 content profile specification S를 processor profile specification S' 로 매핑한다.

    2. S' IPP의 combined profile specification set에 추가한다.

  3. IPP를 inferred processor profile로 반환한다.

[construct default processor profile]
  1. document interchange contextprocessor profile 또는 content profile과 연결되어 있고, 그로부터 processor profile을 추론할 수 있다면, default processor profile은 그 processor profile이다.

  2. 그렇지 않고 content processor가 주로 presentation processor로 특성화된다면, default processor profile은 TTML2 Presentation profile (http://www.w3.org/ns/ttml/profile/ttml2-presentation)을 interning하여 구성된 profile instance이다.

  3. 그렇지 않고 content processor가 주로 transformation processor로 특성화된다면, default processor profile은 TTML2 Transformation profile (http://www.w3.org/ns/ttml/profile/ttml2-transformation)을 interning하여 구성된 profile instance이다.

참고:

하나 이상의 서로 다른 TTML 버전과 함께 사용되도록 의도된 content processor는 TTML presentation 또는 transformation profile의 향후 버전에 기반하여 default processor profile을 선택할 수 있다.

5.3 검증

이 절은 TTML validation 하위 시스템과 이 하위 시스템에 적용되는 상위 수준 요구 사항을 설명한다.

Validation은 validation processor가 수행하는 선택적 기능으로, 후보 document instancevalidating content processor에 의해 소비되거나 그 밖의 방식으로 처리될 때 발생할 수 있다. 그러한 처리가 이루어지고 예외 조건이 발생하면, 아래에 더 자세히 설명한 대로 처리가 중단될 수 있다.

validation processing 중 처리가 중단되면, 그 결과에는 다음이 포함된다.

  • 비준수 문서의 일부만 transformation processor에 의해 변환되어 불완전한 변환이 발생할 수 있다.

  • 비준수 문서의 일부만 presentation processor에 의해 제시되어 불완전한 프레젠테이션이 발생할 수 있다.

validation processing의 결과로 abort processing이 발생하면, 그 뒤로 더 이상 콘텐츠가 처리되지 않는 document instance 안의 위치는 이 명세에 의해 정의되지 않는다. 특히 구현은 첫 번째 validation error를 만났을 때 처리를 중단할 수도 있고, 임의 개수의 validation errors를 만난 뒤 처리를 중단할 수도 있다. 그 결과, 비준수 문서에서 소비되는 입력 콘텐츠의 양과 이에 대응하는 (변환 또는 프레젠테이션) 출력은 구현마다 달라질 수 있다.

5.3.1 검증 의미론

5.3.1.1 Validation State Object 개념

이 절은 이후에 정의되는 알고리즘(절차 및 함수)에서 사용되는 여러 개념적 state object를 정의한다. 구현이 이러한 객체를 여기 지정된 형태로 생성해야 하는 것은 아니며, 동등한 정보를 표현하는 편리한 내부 표현을 사용할 수 있다.

[validation exception]

validation exceptionvalidation processing 중 발생하는 예외 조건에 대응하는 다음 내부 state 정보를 나타낸다.

message

예외를 설명하거나 특성화하는 임의의(구현 정의) 문자열

type

error|warning

error 유형의 validation exceptionvalidation error라고 하며, warning 유형의 validation exceptionvalidation warning이라고 한다.

higher level protocol이 적용되지 않는 한, (1) 이 명세의 prescription 또는 proscription 위반이 감지되면 validation error exception이 적용되고, (2) 이 명세의 recommendation 또는 disrecommendation 위반이 감지되면 validation warning이 적용된다.

참고:

이 맥락에서 higher level protocol의 예는 warning을 error로 취급하거나 그 반대로 취급하게 하는 document processing context의 시스템 또는 최종 사용자 정의 구성 옵션이다.

5.3.1.2 Validation Processing 의미론
[construct effective validation profile]
  1. 문서의 effective content profilenull이 아니면, effective validation profileeffective content profile이다.

  2. 그렇지 않으면, effective validation profileeffective processor profile이다.

Generic Processor Conformance를 준수하기 위해, 주어진 document instance를 처리할 때 effective validation profile은 일단 profile instance에 대한 참조로 설정되면, 그 처리 기간 동안 상수 profile instance에 대한 상수 참조로 유지된다.

[construct effective validation schemas]
  1. 문서의 effective validation profile이 하나 이상의 스키마와 연결되어 있으면, effective validation schemas 집합은 document processing context의 요구 사항을 기반으로 하는 이러한 연결 스키마의 적절한 부분집합이다.

  2. 그렇지 않으면, effective validation schemasdocument processing context가 선택한 기본 스키마 집합이다.

참고:

appropriate한 스키마 집합을 무엇으로 볼 것인지에 대한 결정은 이 명세에서 형식적으로 정의되지 않는다. 그럼에도 선택 과정은 (1) 구현에서 사용할 수 있고 지원되는 스키마 유형과 (2) heuristic으로서 effective validation profile이 결정한 required 또는 optional feature와 연결된 최대 버전 번호를 사용할 것으로 예상된다.

[validate document]
  1. higher level protocol에 의해 validation이 비활성화되었거나 ttp:validation 매개변수의 계산 값이 prohibited이면, 최종 사용자 또는 애플리케이션이 이 금지를 재정의하지 않는 한 이 절차를 종료한다.

  2. ttp:validation 매개변수의 계산 값이 optional이고 document processing context가 선택적 validation을 수행하지 않기로 판단하면, 이 절차를 종료한다.

  3. 그렇지 않으면, 필요에 따라 effective validation schemas 및 기타 validation 도구를 사용하여 문서 적합성을 다음과 같이 검증한다.

validation processing이 수행될 때, 다음 의미론이 적용된다.

  • 입력 문서가 구체적인 XML 표현, 예를 들어 부록 A 구체적 인코딩이 정의한 구체적 형식을 취하는 경우, 다음을 확인한다.

    • 입력 문서의 인코딩된 문자가 문서의 해석된 문자 인코딩에 따라 well-formed인지, 그리고

    • 입력 문서가 well-formed XML 문서인지, 그리고

  • 입력 문서가 effective validation schemas에 관해 유효한지 확인하고,

  • 입력 문서가 effective validation schemas에 직접 표현되지 않은, 이 명세가 정의한 다른 모든 구문 및 의미론적 제약을 준수하는지 확인한다.

위의 검증 단계 중 어느 하나라도 prescription(must) 또는 proscription(must not)에 관한 비적합 상태를 감지하면, validation error 조건이 적용된다. 위의 검증 단계 중 어느 하나라도 recommendation(should) 또는 disrecommendation(should not)에 관한 비적합 상태를 감지하면, validation warning 조건이 적용된다.

참고:

effective validation schemas의 결정은 구현 의존적이고, effective validation schemas가 가능한 모든 validation error를 감지해야 한다는 요구 사항도 없으므로, [validate document] 절차를 수행해도 validation exception이 생성되지 않을 수 있으며, 이 경우 validation processing의 결과는 false positive로 간주될 수 있다.

예를 들어, content profilettp:feature 또는 ttp:extension 요소의 value 속성의 prohibited 값을 통해 feature의 사용을 금지할 수 있다. 그러나 [validate document] 절차의 특정 구현은 document instance 안의 그러한 prohibited usage를 감지하지 못할 수 있으며, 따라서 false positive validation results를 생성할 수 있다.

이러한 제한의 결과로, [validate document] 절차의 명세 언어는 잠재적 validation error 또는 validation warning이 감지되는지 여부에 기반하지만, 가능한 모든 validation errorsvalidation warnings가 감지되어야 한다고 요구하지는 않는다.

false positives에 대한 자세한 정보는 4.1 TTML Content Document Type 아래의 첫 번째 참고도 참조한다.

5.4 카탈로그

Timed Text Markup Language (TTML)의 어휘는 다음 주요 카탈로그(어휘의 구분)에서 정의된다.

core catalog는 TTML의 기준 핵심 어휘, 특히 TTML Content의 어휘를 정의한다. extension catalog는 TTML이 정의한 core vocabulary에 대한 확장을 위한 placeholder 역할을 한다.

5.4.1 핵심 카탈로그

core vocabulary catalog는 TTML의 필요를 만족하면서 향후 profile을 위한 기준 어휘를 제공하도록 의도된다. 이 어휘는 다음 절들에 자세히 지정된 별개의 범주로 나뉜다.

document instance와 함께 사용하도록 지정된 core element vocabulary는 표 5-3 – 요소 어휘에 열거되어 있다.

표 5-3 – 요소 어휘
모듈 요소
Animation animate, animation, set
Audio audio
Content body, br, div, p, span
Data chunk, data, resources, source
Document tt
Font font
Head head
Image image
Layout layout, region
Metadata metadata
Metadata Items ttm:actor, ttm:agent, ttm:copyright, ttm:desc, ttm:item, ttm:name, ttm:title
Profile ttp:features, ttp:feature, ttp:extensions, ttp:extension, ttp:profile
Styling initial, styling, style

TTML 요소 유형의 콘텐츠 모델을 정의하는 데 사용되는 element vocabulary group은 표 5-4 – 요소 어휘 그룹에 열거되어 있다.

표 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

core vocabulary catalog와 함께 사용하도록 지정된 attribute vocabulary는 표 5-5 – 속성 어휘에 열거되어 있다.

표 5-5 – 속성 어휘
모듈 속성
Animation Binding Attribute animate
Conditionalization Attribute condition
Core Attributes xml:base, xml:id, xml:lang, xml:space
Data Attributes encoding, format, src, type
Layout Binding Attribute region
Linking Attributes xlink:arcrole, xlink:href, xlink:role, xlink:show, xlink:title
Metadata Attributes ttm:agent, ttm:role
Parameter Attributes ttp:cellResolution, ttp:clockMode, ttp:displayAspectRatio, ttp:dropMode, ttp:frameRate, ttp:frameRateMultiplier, ttp:markerMode, ttp:pixelAspectRatio, ttp:subFrameRate, ttp:tickRate, ttp:timeBase,
Profile Attributes ttp:contentProfiles, ttp:contentProfileCombination, ttp:inferProcessorProfileMethod, ttp:inferProcessorProfileSource, ttp:permitFeatureNarrowing, ttp:permitFeatureWidening, ttp:processorProfiles, ttp:processorProfileCombination, ttp:profile, ttp:validation, ttp:validationAction
Style Binding Attribute style
Styling Attributes 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
Timing Attributes begin, dur, end, timeContainer

참고:

(1) 전역, 즉 네임스페이스로 한정된 속성 또는 (2) 공유 요소별 속성, 즉 네임스페이스로 한정되지 않았지만 여러 요소 유형에 걸쳐 공유되는 속성으로 정의된 속성만 위 표 5-5 – 속성 어휘에 나열되어 있다.

참고:

TTML이 정의한 모든 어휘는 일관되게 이른바 lowerCamelCase 명명 규칙을 사용한다. 어떤 경우에는 이름이 다른 명명 규칙을 사용한 다른 명세에 기반했을 때 이로 인해 이름이 변경된다.

5.4.2 확장 카탈로그

extension vocabulary catalog는 TTML의 향후 profile에서 사용되도록 의도되며, 이 TTML 버전에서는 더 이상 정의되지 않는다.

표준화된 extension vocabulary 외에도, 준수하는 document instance는 이 명세와 함께 사용하도록 정의된 네임스페이스가 아닌 다른 임의의 네임스페이스에 속하는 임의의 네임스페이스 한정 요소를 포함할 수 있다. 또한 준수하는 document instance는 TTML이 정의한 어휘 위에 임의의 네임스페이스 한정 속성을 포함할 수 있으며, 그러한 속성은 이 명세와 함께 사용하도록 정의된 네임스페이스가 아닌 다른 임의의 네임스페이스에 속할 수 있다.

6 프로필

이 절은 핵심 어휘 카탈로그의 profile 사항을 지정한다. 여기서 profile 사항은 timed text content document의 저작 또는 처리와 관련된 요구 사항이나 선택성을 표현하는 정보로 이해되어야 한다.

6.1 프로필 요소 어휘

다음 요소들은 모두 TT Parameter Namespace에서 정의되며, document instance 또는 content processor에 적용되는 매개변수 정보를 지정한다.

참고:

이 절의 하위 절들은 논리적 순서(가장 높은 수준의 구성에서 가장 낮은 수준의 구성까지)로 배열되어 있다.

6.1.1 ttp:profile

ttp:profile 요소는 content profile 또는 processor profile을 지정하는 데 사용된다. processor profile은 그러한 features 및 extensions를 사용하거나 사용할 수 있는 document instance를 처리하기 위해 content processor가 반드시 또는 선택적으로 지원해야 하는 required(mandatory) 및 optional(voluntary) features와 extensions의 모음을 지정한다. content profile은 그 profile을 준수한다고 선언하는 document instance에 각각 반드시 없어야 하거나, 반드시 있어야 하거나, 있을 수 있는 prohibited, required 및 optional features와 extensions의 모음을 지정한다.

참고:

featureextension의 차이는 그것이 어디에서 정의되고 어떻게 라벨링되는지에 있다. 이 명세(또는 그 향후 개정판)에서 정의되고 E 기능에서 feature designation으로 라벨링되면 feature로 간주된다. 다른 명세에서 정의되고 그곳에서 extension designation으로 라벨링되면 extension으로 간주된다. 일반적으로 features는 W3C 표준 프로세스에 의해 정의될 것으로 예상되는 반면, extensions는 제3자에 의해 정의될 것으로 예상된다.

이 명세는 ttp:profile 요소에 대해 두 가지 서로 다른 사용 맥락을 정의한다.

ttp:profile 요소가 TTML document instance 안에 나타나는 경우, 그 목적은 (1) 수신 content processor가 그 문서를 처리하기 위해 어떤 features 및 extensions를 반드시 또는 선택적으로 지원해야 하는지, 또는 (2) 어떤 features 및 extensions가 해당 document instance에 반드시 포함되지 않아야 하거나, 반드시 포함되어야 하거나, 포함될 수 있거나 그 밖의 방식으로 사용될 수 있는지에 대한 저자의 의도를 표현하는 것이다.

ttp:profile 요소가 TTML profile definition document instance에 의해 사용되는 경우, 이는 TTML document instances가 참조할 수 있는 특정 TTML profile의 기계 판독 가능 명세를 공개하는 역할을 한다. 이 명세는 여러 표준 Profile Definition DocumentsG 표준 프로필에서 정의한다.

ttp:profile 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 (1) 0개 이상의 ttp:features 요소와 그 뒤의 0개 이상의 ttp:extensions 요소, 또는 (2) 0개 이상의 ttp:profile 요소를 허용한다. ttp:profile 요소가 자식 ttp:profile 요소를 포함하는 경우, 그 자식은 nested profile이라 하고, 부모는 nesting profile이라 한다. 그렇지 않으면 non-nesting profile이라 한다.

XML 표현 – 요소 정보 항목: ttp:profile
<ttp:profile
  combine = ("leastRestrictive" | "mostRestrictive" | "replace") : replace
  designator = xsd:string
  type = ("processor" | "content") : processor
  use = xsd:string
  xml:base = <uri>
  xml:id = ID
  Content: Metadata.class*, ((ttp:features*, ttp:extensions*)|ttp:profile*)
</ttp:profile>

type 속성은 profile이 content profile인지 processor profile인지를 결정하는 데 사용된다. 지정되지 않으면 profile은 processor profile로 간주된다. ttp:profile 요소가 baseline profile 또는 nested profile을 참조하는 경우, 참조된 profile의 type은 참조하는 profile의 type과 같아야 한다. 예를 들어 processor profile을 정의하는 ttp:profile 요소는 다른 processor profiles만 참조할 수 있으며, content profile을 참조할 수 없다.

combine 속성은 동일한 feature 또는 extension에 여러 specification이 각각 적용되는 경우, feature 또는 extension specifications가 결합되는 방식을 지정하는 데 사용된다.

combine 속성의 값이 replace이면, 어휘적으로 나중에 오는 feature 또는 extension specification이 어휘적으로 앞선 specification을 대체하며, specification 요소는 다음 순서로 배열된다.

  1. use 속성이 참조하는 baseline profile에 의해 정의된 specifications;

  2. post-order traversal 순서의 하위 ttp:profile 요소들이 정의한 specifications;

  3. post-order traversal 순서의 하위 ttp:feature 또는 ttp:extension 요소로 정의된 specifications.

값이 leastRestrictive이면 가장 제한이 적은 specification 값이 적용되고, 값이 mostRestrictive이면 가장 제한이 큰 specification 값이 적용된다. 제한성의 순서는 다음과 같다(가장 적은 것부터 가장 큰 것까지). optional, required, prohibited.

combine 속성이 지정되지 않으면 replacement semantics가 적용된다.

지정된 경우, designator 속성은 <absolute-profile-designator> 값 구문을 준수해야 한다. designator 속성은 TTML document instance에 나타나는 ttp:profile 요소에 지정될 수 있으며, 지정되지 않으면 정의된 profile은 undesignated profile로 간주된다. designator 속성은 TTML profile definition document instance에 나타나는 ttp:profile 요소에 지정되는 것이 좋으며, 지정되지 않으면 정의 맥락(예: 외부 명세)이 그 부속 정의 텍스트에서 designator를 지정해야 한다.

지정된 경우, use 속성은 <uri> 값 구문을 준수해야 하며, 또한 5.2 프로파일링에 따라 profile designator를 나타내야 한다. 이 경우 profile designator는 (1) 6 프로필에서 정의한 표준 사전 정의 profile definition document, 또는 (2) 유효한 Profile Definition Document instance를 나타내는, 실현 가능하게 역참조 가능한 리소스를 참조해야 한다. 어느 경우든 참조된 profile은 지정하는 ttp:profile 요소의 baseline profile 역할을 한다.

use 속성이 지정되지 않으면, ttp:profile 요소의 baseline profile은 빈(null) profile, 즉 feature 또는 extension specifications를 포함하지 않는 undesignated profile definition으로 간주되어야 한다.

profile P의 features 및 extensions의 combined profile specification set CPSS는 다음 순서 규칙에 따라 결정된다. 여기서 specification SCPSS에 병합한다는 것은 combine 속성의 지정된(또는 기본) 값에 따라 combination method를 적용한다는 뜻이며, combined specification set CPSS' CPSS에 병합한다는 것은 CPSS' 의 각 순서 있는 specification을 CPSS에 병합한다는 뜻이다.

  1. CPSS를 빈 집합으로 초기화한다.

  2. use 속성이 있으면, 참조된 baseline profile의 combined specification set을 CPSS에 병합한다.

  3. P의 각 ttp:profile 자식에 대해, post-order traversal을 사용하여 자식 profile의 combined specification set을 CPSS에 병합한다.

  4. ttp:profile 요소의 각 ttp:featurettp:extension 자식에 대해, post-order traversal을 사용하여 feature 또는 extension specification을 CPSS에 병합한다.

준수하는 TTML processor는 G 표준 프로필에서 정의한 표준 사전 정의 profile 중 하나가 아닌 profile definition document를 역참조할 수 있어야 하는 것은 아니다. 또한 준수하는 TTML processor는 네트워크 리소스의 역참조를 요구하지 않도록 각 표준 사전 정의 profile의 내장된 정적 형식을 사용할 수 있다.

TTML processor가 비표준 profile definition document를 역참조할 수 없다면, 최종 사용자 또는 최종 사용자나 사용자 또는 시스템 구성 설정으로 추적 가능한 구현별 매개변수의 명시적 override가 없는 한, 문서를 더 이상 처리해서는 안 된다. TTML processor가 비표준 profile definition document를 참조할 수 없어서 document instance의 처리를 중단하는 경우, 최종 사용자 또는 시스템이 그러한 알림을 비활성화했거나, 프로세서가 최종 사용자의 개입을 허용하지 않거나 수반하지 않는 경우가 아니라면, 최종 사용자에게 어떤 알림이 제공되는 것이 좋다.

준수하는 TTML processor는 combined profile 또는 nesting profile을 지원할 수 있어야 하는 것은 아니다. (1) combined profiles가 지원되지 않고 profile의 처리가 그것을 combined profile로 간주하게 만들거나, (2) nesting profiles가 지원되지 않고 profile의 처리가 그것을 nesting profile로 간주하게 만든다면, 최종 사용자 또는 최종 사용자나 사용자 또는 시스템 구성 설정으로 추적 가능한 구현별 매개변수의 명시적 override가 없는 한, profile의 추가 처리는 발생해서는 안 된다. TTML processor가 combined profiles 또는 nesting profiles에 대한 지원 부족으로 document instance의 처리를 중단하는 경우, 최종 사용자 또는 시스템이 그러한 알림을 비활성화했거나, 프로세서가 최종 사용자의 개입을 허용하지 않거나 수반하지 않는 경우가 아니라면, 최종 사용자에게 어떤 알림이 제공되는 것이 좋다.

참고:

document instancecombined profiles에 대한 지원을 요구하지 않는다면, 다음을 사용하지 않는 것이 좋다.

참고:

document instancenesting profiles에 대한 지원을 요구하지 않는다면, nested profile을 사용하지 않는 것이 좋다.

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 Presentation profile은 baseline profile로 사용된다. 이 baseline profile은 그 다음 #text-outline feature에 대한 지원을 요구함으로써 상위집합화된다 (따라서 additive derived profile을 생성한다).

6.1.2 ttp:features

ttp:features 요소는 feature 지원 및 사용 요구 사항에 대한 정보를 그룹화하는 데 사용되는 컨테이너 요소이다.

ttp:features 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 0개 이상의 ttp:feature 요소를 허용한다.

XML 표현 – 요소 정보 항목: ttp:features
<ttp:features
  xml:base = <uri> : TT Feature Namespace
  xml:id = ID
  Content: Metadata.class*, ttp:feature*
</ttp:features>

지정된 경우, xml:base 속성은 (1) <uri> 값 구문을 준수하고, (2) [XML Base]를 준수하는 절대 URI를 표현하며, (3) E.1 기능 지정에서 정의된 feature namespace를 표현해야 한다. 지정되지 않으면 xml:base 속성의 기본값이 적용되며, 이는 TT Feature Namespace이다.

xml:base 속성은 자식 ttp:feature 요소가 표현하는 feature designation URI의 축약을 허용하는 데 사용된다.

6.1.3 ttp:feature

ttp:feature 요소는 특정 feature에 대한 지원 및 사용 요구 사항 정보를 지정하는 데 사용된다.

XML 표현 – 요소 정보 항목: ttp:feature
<ttp:feature
  extends = xsd:string
  restricts = xsd:string
  value = ("optional" | "required" | "use" | "prohibited") : see prose below
  xml:id = ID
  Content: #PCDATA
</ttp:feature>

ttp:feature 요소의 자식은 character information items의 비어 있지 않은 시퀀스를 표현해야 하며, 그 연결 결과는 <uri> 값 구문을 준수해야 한다.

지정된 경우, extends 속성 및/또는 restricts 속성은 (1) <uri> 값 구문을 준수하고, (2) E.1 기능 지정에서 정의된 feature designation을 표현해야 한다.

extends 속성은 정의되는 feature가 구문적 또는(및) 의미론적 관점 중 하나 또는 둘 모두에서 extends 속성이 참조하는 feature의 proper superset임을 나타내는 데 사용될 수 있다. restricts 속성은 정의되는 feature가 구문적 또는(및) 의미론적 관점 중 하나 또는 둘 모두에서 restricts 속성이 참조하는 feature의 proper subset임을 나타내는 데 사용될 수 있다. extends 속성이 지정되면 ttp:feature 요소에 restricts 속성이 지정되어서는 안 된다. 마찬가지로 restricts 속성이 지정되면 extends 속성이 지정되어서는 안 된다.

(1) ttp:feature 요소의 콘텐츠, (2) extends 속성, 또는 (3) restricts 속성이 표현하는 URI가 상대 URI인 경우, 가장 가까운 조상 ttp:features 요소의 xml:base 속성이 표현하는 feature namespace 값과 결합될 때 절대 URI를 표현해야 한다. 어느 경우든(원래의 절대 URI 또는 그 결과 절대화된 URI), ttp:feature 요소가 표현하는 URI는 E.1 기능 지정에서 정의된 feature designation의 구문을 추가로 준수해야 하며, 또한 이 URI에 나타나는 특정 designation, 즉 fragment identifier separator '#'로 시작하는 feature designation 부분은 이 명세 또는 REC 지위에 도달한 그 공개 버전 중 하나에 의해 정의되어야 한다.

ttp:feature 요소의 콘텐츠, extends 속성 또는 restricts 속성이 표현하는 URI가 상대 URI인 경우, 가장 가까운 조상 ttp:features 요소에 xml:base 속성을 지정하는 것이 좋다.

value 속성은 profile type에 따라 지정된 feature의 지원 또는 사용에 대한 제약을 지정한다.

profile이 processor profile인 경우, 다음 의미론이 적용된다.

  • value 속성의 값이 optional이면, processor는 문서를 처리하기 위해 feature를 구현하거나 그 밖의 방식으로 지원할 수 있지만 반드시 그럴 필요는 없다.

  • 값이 required이면 다음 단계를 수행한다.

    1. feature가 processor에 의해 구현되었거나 그 밖의 방식으로 지원되면, 문서 처리를 계속한다.

    2. 그렇지 않고 (1) 이 ttp:feature 요소에 extends 속성이 지정되어 있고, (2) extends 속성의 값이 processor에 의해 구현되었거나 그 밖의 방식으로 지원되는 feature를 지정하며, (3) 루트 tt 요소의 ttp:permitFeatureNarrowing 속성의 계산 값이 false가 아니면, 문서 처리를 계속한다.

    3. 그렇지 않고 (1) 이 ttp:feature 요소에 restricts 속성이 지정되어 있고, (2) restricts 속성의 값이 processor에 의해 구현되었거나 그 밖의 방식으로 지원되는 feature를 지정하며, (3) 루트 tt 요소의 ttp:permitFeatureWidening 속성의 계산 값이 false가 아니면, 문서 처리를 계속한다.

    4. 그렇지 않으면, 최종 사용자 또는 최종 사용자나 사용자 또는 시스템 구성 설정으로 추적 가능한 구현별 매개변수에 의해 재정의되지 않는 한 문서 처리를 중단한다.

  • value 속성이 지정되지 않으면, feature specification은 값 required가 지정된 것처럼 해석되어야 한다.

profile이 content profile인 경우 다음 의미론이 적용된다.

  • value 속성의 값이 optional이면, 그 profile에 대한 준수를 주장하는 문서에 feature가 나타날 수 있지만 반드시 나타날 필요는 없다.

  • value 속성의 값이 required이면, 그 profile에 대한 준수를 주장하는 문서에 feature가 반드시 나타나야 한다.

  • value 속성의 값이 prohibited이면, 그 profile에 대한 준수를 주장하는 문서에 feature가 나타나서는 안 된다.

  • value 속성이 지정되지 않으면, feature specification은 값 optional이 지정된 것처럼 해석되어야 한다.

value 속성의 값 usedeprecated이다. profile specification에 나타나면 required가 지정된 것처럼 해석되어야 한다.

정의된(즉, 표준화된) 또는 그 밖의 잘 알려진 어떤 feature가 content profile 안에서 ttp:feature 요소로 지정되지 않은 경우, 그 feature는 value 속성이 optional과 같은 값으로 지정된 것처럼 해석되어야 한다. 그러나 processor profile 안에서 지정되지 않은 경우, 그 feature의 지원 또는 지원 부재에 대한 어떤 주장도 암시되지 않는다.

참고:

특히 어떤 feature가 content profile definition에 존재하지 않는다면, 그것은 그 feature의 사용이(document instance 안에서) 허용되지 않거나 그 밖의 방식으로 금지된다는 의미로 해석되어서는 안 된다. 어떤 feature를 content profile에서 허용하지 않으려면, prohibited 값을 사용하여 지정하는 것이 좋다.

document instanceE.1 기능 지정에서 정의된 feature를 사용하고, 문서의 의도된 사용이 그 feature의 인식과 처리를 요구한다면, 문서는 선언되었거나 참조된 profile 중 하나에 required feature specification을 포함해야 한다.

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 presentation profile은 baseline profile로 사용된다. 이 baseline profile은 세 개의 ttp:feature 요소에 의해 수정되어 (1) baseline profile을 상위집합화한다. 이는 #fontStyle-italic#textDecoration-under 둘 다 TTML presentation profile에서 요구되지 않기 때문이다. 또한 (2) #textOutline-blurred feature의 사용을 금지한다 (이는 TTML presentation profile에서 optional이다).

이 예제의 효과는 italic 글꼴 스타일과 텍스트 밑줄이 반드시 지원되어야 하며, 텍스트 outline blurring은 문서에서 사용되어서는 안 된다는 저자의 의도를 표현하는 것이다.

6.1.4 ttp:extensions

ttp:extensions 요소는 extension 지원 및 사용 요구 사항에 대한 정보를 그룹화하는 데 사용되는 컨테이너 요소이다.

ttp:extensions 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 0개 이상의 ttp:extension 요소를 허용한다.

XML 표현 – 요소 정보 항목: ttp:extensions
<ttp:extensions
  xml:base = <uri> : TT Extension Namespace
  xml:id = ID
  Content: Metadata.class*, ttp:extension*
</ttp:extensions>

지정된 경우, xml:base 속성은 (1) <uri> 값 구문을 준수하고, (2) [XML Base]를 준수하는 절대 URI를 표현하며, (3) F.1 확장 지정에서 정의된 extension namespace를 표현해야 한다. 지정되지 않으면 xml:base 속성의 기본값이 적용되며, 이는 TT Extension Namespace이다.

xml:base 속성은 자식 ttp:extension 요소가 표현하는 feature designation URI의 축약을 허용하는 데 사용된다.

6.1.5 ttp:extension

ttp:extension 요소는 특정 extension에 대한 지원 및 사용 요구 사항 정보를 지정하는 데 사용된다.

XML 표현 – 요소 정보 항목: ttp:extension
<ttp:extension
  extends = xsd:string
  restricts = xsd:string
  value = ("optional" | "required" | "use" | "prohibited") : see prose below
  xml:id = ID
  Content: #PCDATA
</ttp:extension>

ttp:extension 요소의 자식은 character information items의 비어 있지 않은 시퀀스를 표현해야 하며, 그 연결 결과는 <uri> 값 구문을 준수해야 한다.

지정된 경우, extends 속성 및/또는 restricts 속성은 (1) <uri> 값 구문을 준수하고, (2) 각각 E.1 기능 지정 또는 F.1 확장 지정에서 정의된 feature designation 또는 extension designation을 표현해야 한다.

extends 속성은 정의되는 extension이 구문적 또는(및) 의미론적 관점 중 하나 또는 둘 모두에서 extends 속성이 참조하는 feature 또는 extension의 proper superset임을 나타내는 데 사용될 수 있다. restricts 속성은 정의되는 extension이 구문적 또는(및) 의미론적 관점 중 하나 또는 둘 모두에서 restricts 속성이 참조하는 feature 또는 extension의 proper subset임을 나타내는 데 사용될 수 있다. extends 속성이 지정되면 ttp:extension 요소에 restricts 속성이 지정되어서는 안 된다. 마찬가지로 restricts 속성이 지정되면 extends 속성이 지정되어서는 안 된다.

(1) ttp:extension 요소의 콘텐츠, (2) extends 속성, 또는 (3) restricts 속성이 표현하는 URI가 상대 URI인 경우, 가장 가까운 조상 ttp:extensions 요소의 xml:base 속성이 표현하는 extension namespace 값과 결합될 때 절대 URI를 표현해야 한다. 어느 경우든(원래의 절대 URI 또는 그 결과 절대화된 URI), ttp:extension 요소가 표현하는 URI는 F.1 확장 지정에서 정의된 extension designation의 구문을 추가로 준수해야 하며, extends 속성 및/또는 restricts 속성이 표현하는 URI는 각각 E.1 기능 지정 또는 F.1 확장 지정에서 정의된 feature designation 또는 extension designation의 구문을 준수해야 한다.

ttp:extension 요소의 콘텐츠, extends 속성 또는 restricts 속성이 표현하는 URI가 상대 URI인 경우, 가장 가까운 조상 ttp:extensions 요소에 xml:base 속성을 지정하는 것이 좋다.

value 속성은 profile type에 따라 지정된 extension의 지원 또는 사용에 대한 제약을 지정한다.

profile이 processor profile인 경우, 다음 의미론이 적용된다.

  • value 속성의 값이 optional이면, processor는 문서를 처리하기 위해 extension을 구현하거나 그 밖의 방식으로 지원할 수 있지만 반드시 그럴 필요는 없다.

  • 값이 required이면 다음 단계를 수행한다.

    1. extension이 processor에 의해 구현되었거나 그 밖의 방식으로 지원되면, 문서 처리를 계속한다.

    2. 그렇지 않고 (1) 이 ttp:extension 요소에 extends 속성이 지정되어 있고, (2) extends 속성의 값이 processor에 의해 구현되었거나 그 밖의 방식으로 지원되는 extension을 지정하며, (3) 루트 tt 요소의 ttp:permitFeatureNarrowing 속성의 계산 값이 false가 아니면, 문서 처리를 계속한다.

    3. 그렇지 않고 (1) 이 ttp:extension 요소에 restricts 속성이 지정되어 있고, (2) restricts 속성의 값이 processor에 의해 구현되었거나 그 밖의 방식으로 지원되는 extension을 지정하며, (3) 루트 tt 요소의 ttp:permitFeatureWidening 속성의 계산 값이 false가 아니면, 문서 처리를 계속한다.

    4. 그렇지 않으면, 최종 사용자 또는 최종 사용자나 사용자 또는 시스템 구성 설정으로 추적 가능한 구현별 매개변수에 의해 재정의되지 않는 한 문서 처리를 중단한다.

  • value 속성이 지정되지 않으면, extension specification은 값 required가 지정된 것처럼 해석되어야 한다.

profile이 content profile인 경우 다음 의미론이 적용된다.

  • value 속성의 값이 optional이면, 그 profile에 대한 준수를 주장하는 문서에 extension이 나타날 수 있지만 반드시 나타날 필요는 없다.

  • value 속성의 값이 required이면, 그 profile에 대한 준수를 주장하는 문서에 extension이 반드시 나타나야 한다.

  • value 속성의 값이 prohibited이면, 그 profile에 대한 준수를 주장하는 문서에 extension이 나타나서는 안 된다.

  • value 속성이 지정되지 않으면, extension specification은 값 optional이 지정된 것처럼 해석되어야 한다.

value 속성의 값 usedeprecated이다. profile specification에 나타나면 required가 지정된 것처럼 해석되어야 한다.

잘 알려진 어떤 extension이 content profile 안에서 ttp:extension 요소로 지정되지 않은 경우, 그 extension은 value 속성이 optional과 같은 값으로 지정된 것처럼 해석되어야 한다. 그러나 processor profile 안에서 지정되지 않은 경우, 그 extension의 지원 또는 지원 부재에 대한 어떤 주장도 암시되지 않는다.

참고:

특히 어떤 extension이 content profile definition에 존재하지 않는다면, 그것은 그 extension의 사용이(document instance 안에서) 허용되지 않거나 그 밖의 방식으로 금지된다는 의미로 해석되어서는 안 된다. 어떤 extension을 content profile에서 허용하지 않으려면, prohibited 값을 사용하여 지정하는 것이 좋다.

document instanceF.1 확장 지정으로 지정 가능한 extension을 사용하고, 문서의 의도된 사용이 그 extension의 인식과 처리를 요구한다면, 문서는 선언되었거나 참조된 profile 중 하나에 required extension specification을 포함해야 한다.

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="use">#prefilter-by-language</ttp:extension>
  </ttp:extensions>
</ttp:profile>

참고:

위 예제에서 TTML transformation profile은 baseline profile로 사용된다. 이 baseline profile은 그 뒤 제3자 namespace에 정의된 private extension에 대한 지원과 사용이 required임을 지정함으로써 상위집합화된다.

이 예제의 효과는 수신 processor가 TTML transformation profile을 반드시 지원해야 하며, 또한 제3자가 정의한 extension을 반드시 지원하고 활성화해야 한다는 저자의 의도를 표현하는 것이다.

6.2 프로필 속성 어휘

다음 속성들은 TT Parameter Namespace에서 정의된다.

6.2.1 ttp:contentProfiles

ttp:contentProfiles 속성은 content author가 Timed Text Markup Language (TTML)의 하나 이상의 content profiles를 표현하는 데 사용할 수 있으며, 여기서 enclosing document instance는 지정된 content profiles 집합의 all에 대한 준수를 주장한다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다. 여기서 각 profile-designator 항목은 <uri> 값 구문을 준수하며, 또한 5.2 프로파일링에 따라 profile designator에 정의된 제약을 준수한다.

구문 표현 – ttp:contentProfiles
ttp:contentProfiles
  : designators
  | "all(" <lwsp> designators <lwsp> ")"

designators
  : designator (<lwsp> designator)*

designator
  : <profile-designator>

designator 목록이 함수 구문 all(...)로 둘러싸여 있거나 함수 구문이 사용되지 않으면, 지정된 모든 content profiles에 대한 준수가 주장된다.

여러 designator가 지정되면, 각 designator의 absolutized form은 서로 달라야 한다. 즉, absolutized form으로 변환한 뒤 중복 designator는 허용되지 않는다.

ttp:contentProfiles 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.2 ttp:contentProfileCombination

ttp:contentProfileCombination 속성은 여러 content profiles를 결합하는 방법을 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:contentProfileCombination
ttp:contentProfileCombination
  : "leastRestrictive"
  | "mostRestrictive"
  | "replace"
  | "ignore"

지정되지 않으면, 이 매개변수의 값은 ignore로 간주되어야 한다.

두 개의 순서 있는 profile specification 값 arg1arg2, 그리고 content profile combination method가 주어지면, 표 6-1 – Content Profile Combination은 두 specification 값을 결합한 결과를 지정한다. 여기서 인자의 순서는 document instance 안의 content profiles의 어휘 순서에 따라 결정된다.

표 6-1 – Content Profile Combination
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 속성은 content profile specification 값을 대응하는 processor profile specification 값으로 매핑하는 방법을 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:inferProcessorProfileMethod
ttp:inferProcessorProfileMethod
  : "loose"
  | "strict"

이 매개변수의 값이 loose이면, content profile specification에서 processor profile specification을 추론할 때 loose(liberal) mapping이 적용된다.

이 매개변수의 값이 strict이면, content profile specification에서 processor profile specification을 추론할 때 strict(conservative) mapping이 적용된다.

지정되지 않으면, 이 매개변수의 값은 loose로 간주되어야 한다.

입력 content profile specification 값 input과 infer processor profile method가 주어지면, 표 6-2 – Infer Processor Profile Method는 입력 specification 값을 매핑한 결과를 지정한다.

표 6-2 – Infer Processor Profile Method
input loose strict
optional optional required
required required required
prohibited optional optional

ttp:inferProcessorProfileMethod 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.4 ttp:inferProcessorProfileSource

ttp:inferProcessorProfileSource 속성은 content profile specification 값을 대응하는 processor profile specification 값으로 매핑하기 위한 source를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:inferProcessorProfileSource
ttp:inferProcessorProfileSource
  : "combined"
  | "first"

이 매개변수의 값이 combined이면, processor profile을 추론할 때 effective content profile의 combined profile specification set이 추론의 source로 사용된다.

이 매개변수의 값이 first이면, processor profile을 추론할 때 effective content profile의 combined profile specification set의 첫 번째 constituent profile 중, 그 constituent profile에서 추론된 processor profile이 content processor에 의해 지원되는 profile이 추론의 source로 사용된다. 자세한 내용은 construct inferred processor profile 절차를 참조한다.

지정되지 않으면, 이 매개변수의 값은 first로 간주되어야 한다.

ttp:inferProcessorProfileSource 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.5 ttp:permitFeatureNarrowing

ttp:permitFeatureNarrowing 속성은 feature 또는 extension과 관련된 요구 사항이 feature 또는 extension의 (구문적 또는 의미론적으로) 더 좁은 해석으로 충족될 수 있는지를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:permitFeatureNarrowing
ttp:permitFeatureNarrowing
  : xsd:boolean                             // see [XML Schema Part 2], §3.2.2

이 매개변수의 값이 true이면, feature 또는 extension에 대한 지원 요구 사항은 feature 또는 extension의 정의가 extends 속성을 지정하고, 그 속성이 참조하는 feature 또는 extension이 processor에 의해 지원되는 경우 충족될 수 있다.

이 매개변수의 값이 false이면, feature 또는 extension에 대한 지원 요구 사항은 extends 속성으로 지정된 더 좁게 정의된 feature 또는 extension에 의해 충족될 수 없다.

지정되지 않으면, 이 매개변수의 값은 false로 간주되어야 한다.

ttp:permitFeatureNarrowing 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.6 ttp:permitFeatureWidening

ttp:permitFeatureWidening 속성은 feature 또는 extension과 관련된 요구 사항이 feature 또는 extension의 (구문적 또는 의미론적으로) 더 넓은 해석으로 충족될 수 있는지를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:permitFeatureWidening
ttp:permitFeatureWidening
  : xsd:boolean                             // see [XML Schema Part 2], §3.2.2

이 매개변수의 값이 true이면, feature 또는 extension에 대한 지원 요구 사항은 feature 또는 extension의 정의가 restricts 속성을 지정하고, 그 속성이 참조하는 feature 또는 extension이 processor에 의해 지원되는 경우 충족될 수 있다.

이 매개변수의 값이 false이면, feature 또는 extension에 대한 지원 요구 사항은 restricts 속성으로 지정된 더 넓게 정의된 feature 또는 extension에 의해 충족될 수 없다.

지정되지 않으면, 이 매개변수의 값은 false로 간주되어야 한다.

ttp:permitFeatureWidening 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.7 ttp:profile

ttp:profile 속성은 document instance를 처리할 때 적용되는 Timed Text Markup Language (TTML)의 processor profile을 나타낸다.

참고:

저자가 단일 processor profile이 아니라 processor profiles 모음 중 하나 이상이 적용됨을 지정하고자 하는 경우, content author는 6.2.8 ttp:processorProfiles에 지정된 ttp:processorProfiles를 사용하는 것이 권장된다.

참고:

content profile(s)을 신호하는 것에 관한 정보는 6.2.1 ttp:contentProfiles를 참조한다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다. 여기서 designator<uri> 값 구문을 준수하며, 또한 5.2 프로파일링에 따라 profile designator를 지정해야 한다.

구문 표현 – ttp:profile
ttp:profile
  : designator

designator
  : <profile-designator>

ttp:profile 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

document instance 안에 top-level processor profile이 정의되어 있으면, tt 요소에 ttp:profile 속성을 지정하지 않는 것이 좋다.

참고:

문서를 처리할 때 하나 이상의 메커니즘이 (가능한) 사용을 위해 하나 이상의 profile을 지정하는 경우, effective processor profile이 어떻게 결정되는지에 대한 정보는 5.2.4 프로필 의미론을 참조한다.

6.2.8 ttp:processorProfiles

ttp:processorProfiles 속성은 content author가 Timed Text Markup Language (TTML)의 하나 이상의 processor profiles를 표현하는 데 사용할 수 있으며, 여기서 enclosing document instance는 (1) 지정된 processor profiles 집합의 all 또는 (2) 지정된 processor profiles 집합의 any 하나에 대한 지원을 요구한다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다. 여기서 각 profile-designator 항목은 <uri> 값 구문을 준수하며, 또한 5.2 프로파일링에 따라 profile designator에 정의된 제약을 준수한다.

구문 표현 – ttp:processorProfiles
ttp:processorProfiles
  : designators
  | "all(" <lwsp> designators <lwsp> ")"
  | "any(" <lwsp> designators <lwsp> ")"

designators
  : designator (<lwsp> designator)*

designator
  : <profile-designator>

designator 목록이 함수 구문 all(...)로 둘러싸여 있거나 함수 구문이 사용되지 않으면, 지정된 모든 processor profiles에 대한 지원이 요구된다. designator 목록이 함수 구문 any(...)로 둘러싸여 있으면, 지정된 processor profiles 중 적어도 하나에 대한 지원이 요구된다.

여러 designator가 지정되면, 각 designator의 absolutized form은 서로 달라야 한다. 즉, absolutized form으로 변환한 뒤 중복 designator는 허용되지 않는다.

ttp:processorProfiles 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.9 ttp:processorProfileCombination

ttp:processorProfileCombination 속성은 여러 processor profiles를 결합하는 방법을 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:processorProfileCombination
ttp:processorProfileCombination
  : "leastRestrictive"
  | "mostRestrictive"
  | "replace"
  | "ignore"

지정되지 않으면, 이 매개변수의 값은 ignore로 간주되어야 한다.

두 개의 순서 있는 profile specification 값 arg1arg2, 그리고 processor profile combination method가 주어지면, 표 6-3 – Processor Profile Combination은 두 specification 값을 결합한 결과를 지정한다. 여기서 인자의 순서는 document instance 안의 processor profiles의 어휘 순서에 따라 결정된다.

표 6-3 – Processor Profile Combination
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 속성은 validating content processordocument instance에 대해 validation processing을 수행할 수 있는지 또는 반드시 수행해야 하는지를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:validation
ttp:validation
  : "required"
  | "optional"
  | "prohibited"

이 매개변수의 값이 required이면, validating content processor는 presentation 또는 transformation processing과 같은 다른 유형의 처리를 수행하기 전에 TTML document instance에 대해 validation processing을 수행해야 한다.

이 매개변수의 값이 optional이면, validating content processor는 presentation 또는 transformation processing과 같은 다른 유형의 처리를 수행하기 전에 TTML document instance에 대해 validation processing을 수행할 수 있지만, 반드시 수행할 필요는 없다.

이 매개변수의 값이 prohibited이면, validating content processor는 최종 사용자 또는 애플리케이션이 이 금지를 재정의하지 않는 한, presentation 또는 transformation processing과 같은 다른 유형의 처리를 수행하기 전에 TTML document instance에 대해 validation processing을 수행해서는 안 된다.

TTML document instance에 대해 validation processing이 수행되고 validation이 실패하면, ttp:validationAction 속성의 계산 값이 추가 처리를 수행하기 전에 어떤 동작을 취할지를 결정하는 데 사용된다.

지정되지 않으면, 이 매개변수의 값은 optional로 간주되어야 한다.

ttp:validation 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

6.2.11 ttp:validationAction

ttp:validationAction 속성은 document instance의 validation이 실패할 때 validating content processor가 취해야 하는 동작을 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:validationAction
ttp:validationAction
  : "abort"
  | "warn"
  | "ignore"

이 매개변수의 값이 abort이면, abort processing이 최종 사용자 또는 애플리케이션에 의해 재정의되지 않는 한, validating content processorvalidation error exception이 발생할 때 TTML document instance의 처리를 중단해야 한다.

이 매개변수의 값이 warn이면, validating content processorvalidation error 또는 validation warning exception이 발생할 때 최종 사용자에게 경고하고, 최종 사용자에게 처리를 계속할지 중단할지 선택할 수 있게 하는 것이 좋다.

이 매개변수의 값이 ignore이면, validating content processorvalidation exception이 발생할 때 중단하지 않고 최종 사용자에게 경고하지 않는 것이 좋다.

지정되지 않으면, 이 매개변수의 값은 다음과 같이 결정된다. ttp:validation 속성의 계산 값이 required이면 값은 abort로 간주되어야 한다. optional이면 값은 warn으로 간주되어야 한다. 그렇지 않고 prohibited이면 값은 ignore로 간주되어야 한다.

ttp:validationAction 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

7 매개변수

이 절은 핵심 어휘 카탈로그의 parameter 사항을 지정한다. 여기서 매개변수는 (1) 필수적이거나 (2) 핵심 어휘 항목으로 표현되는 다른 유형의 정보 의미론을 해석하거나 TTML Content가 외부 환경과 관련될 수 있게 하는 document processing context를 설정하기 위해 상당히 중요한 정보로 이해되어야 한다.

7.1 매개변수 요소 어휘

이 명세에서는 매개변수 요소 어휘를 정의하지 않는다.

7.2 매개변수 속성 어휘

다음 속성들은 TT Parameter Namespace에서 정의된다.

7.2.1 ttp:cellResolution

ttp:cellResolution 속성은 저자가 균일한 격자를 기준으로 프레젠테이션 의미론을 표현하기 위해 root container region 영역을 나누는 가로 및 세로 셀 수를 표현하는 데 사용할 수 있다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:cellResolution
ttp:cellResolution
  : columns <lwsp> rows                     // columns != 0; rows != 0

columns | rows
  : <digit>+

지정되지 않으면, columns와 rows의 수는 각각 32와 15로 간주되어야 한다. 지정된 경우 columns 또는 rows는 0이어서는 안 된다.

참고:

32와 15라는 값의 선택은 이것이 [CTA-608-E]에서 정의된 최대 columns 및 rows 수라는 점에 기반한다.

ttp:cellResolution 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

참고:

균일한 격자의 사용은 길이를 측정하고 좌표를 표현하기 위한 목적으로만 사용된다. 특히 텍스트의 프레젠테이션이나 개별 glyph areas의 정렬이 이 격자와 조정된다고 가정하지 않는다. 그러한 정렬은 가능하지만, monospaced 글꼴과 EM square가 셀 크기와 정확히 일치하는 글꼴 크기를 사용해야 한다.

달리 표시된 경우를 제외하고, cells로 표현된 <length>가 inline 또는 block progression dimension과 평행한 차원을 나타내는 경우, 각각 inline 또는 block progression dimension에서의 셀 차원이 적용된다.

참고:

예를 들어 padding(네 가장자리 모두)이 0.1c로 지정되고, cell resolution이 20 by 10이며, root container region의 extent가 640 by 480인 경우, 위에서 아래로, 왼쪽에서 오른쪽으로 쓰는 writing mode라고 가정하면, start 및 end padding은 (640 / 20) * 0.1 pixels가 되고, before 및 after padding은 (480 / 10) * 0.1 pixels가 된다.

7.2.2 ttp:clockMode

ttp:clockMode 속성은 7.2.11 ttp:timeBase에서 정의한 것처럼 time base가 clock으로 동작할 때 time expressions를 real-time time coordinates로 해석하는 방식을 지정하는 데 사용된다.

참고:

time expression 구문과 의미론의 명세는 12.3 Time Value Expressions를 참조한다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:clockMode
ttp:clockMode
  : "local"
  | "gps"
  | "utc"

7.2.11 ttp:timeBase가 정의한 time base가 clock으로 지정되면 이 매개변수는 다음과 같이 적용된다. 매개변수 값이 local이면 time expressions는 local wall-clock time(및 date) coordinates로 해석된다. utc이면 time expressions는 UTC time coordinates [UTC]로 해석된다. gps이면 time expressions는 GPS time coordinates [GPS]로 해석된다.

참고:

local clock mode가 적용될 때 time(및 date) expressions에는 특정 timezone이 암시되지 않는다. 특히 content processor는 local time(및 date) expression을 처리가 수행되는 곳의 local timezone으로 해석할 것으로 예상된다. 저자가 time(및 date) expressions가 특정 time zone에 고정되도록 의도한다면, time(및 date) expressions를 UTC로 변환하고 utc clock mode 사용을 지정할 수 있다.

참고:

GPS time과 UTC time의 주요 차이는 GPS time은 leap seconds에 맞춰 조정되지 않지만, UTC time은 다음과 같이 조정된다는 점이다. UTC = TAI (Temp Atomique International) + 1972년 이후 누적된 leap seconds. TAI는 프랑스 Sevres의 Bureau International des Poids et Mesures (BIPM)에 의해 유지된다. GPS system time은 미국 Naval Observatory의 Master Clock (MC)에 맞춰 조정되며, 이는 TAI와 가깝지만 지정되지 않은 허용 오차 이내로 유지된다.

지정되지 않으면, 이 매개변수의 값은 utc로 간주되어야 한다.

ttp:clockMode 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

7.2.3 ttp:displayAspectRatio

ttp:displayAspectRatio 속성은 H Root Container Region Semantics에서 상세히 설명한 대로 root container regiondisplay aspect ratio를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:displayAspectRatio
ttp:displayAspectRatio
  : numerator <lwsp> denominator            // numerator != 0; denominator != 0

numerator | denominator
  : <digit>+

지정된 경우 numerator와 denominator는 모두 0이 아니어야 한다. 지정되지 않으면 root container region의 display aspect ratio는 H Root Container Region Semantics에 의해 결정된다.

ttp:displayAspectRatio 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

7.2.4 ttp:dropMode

ttp:dropMode 속성은 7.2.11 ttp:timeBase에서 정의한 것처럼 time base가 smpte로 동작할 때 [SMPTE ST 12-1] time coordinates에 대응하는 frame counts의 해석 및 사용에 대한 제약을 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:dropMode
ttp:dropMode
  : "dropNTSC"
  | "dropPAL"
  | "nonDrop"

7.2.11 ttp:timeBase가 정의한 time base가 smpte로 지정되면 이 매개변수는 다음과 같이 적용된다. 매개변수 값이 nonDrop이면, time expression의 임의의 주어진 second 안에서 frames는 0부터 N−1까지 count된다. 여기서 Nttp:frameRate 매개변수가 지정한 값이지만, ttp:frameRateMultiplier 매개변수가 지정한 어떤 값도 무시한다.

참고:

nonDrop mode로 동작할 때, time expression의 1초는 normal(1x speed) forward playback 중 실제 시간의 1초와 같을 수도 있고 같지 않을 수도 있다. ttp:frameRateMultiplier 매개변수가 지정되어 있고 1:1과 같지 않다면, time expression의 1초는 실제 시간의 elapsed play 1초보다 짧거나 길다.

이 매개변수 값이 dropNTSC이면, time expression의 임의의 주어진 second 중 second 00을 제외하고, frames는 0부터 N−1까지 count된다. 여기서 Nttp:frameRate 매개변수가 지정한 값이지만, ttp:frameRateMultiplier 매개변수가 지정한 어떤 값도 무시한다. time expression의 second가 00이고 time expression의 minute이 00, 10, 20, 30, 40 또는 50이 아니면, frame codes 0001은 그 second 동안 drop된다. 그렇지 않으면 이러한 frame codes는 drop되지 않는다.

참고:

예를 들어 ttp:frameRate30dropNTSC mode로 동작할 때, frame count의 불연속은 다음 time expressions 시퀀스에서 보이는 것처럼 연속 frame 사이에서 발생한다. 01:08:59:28, 01:08:59:29, 01:09:00:02, 01:09:00:03.

이 매개변수 값이 dropPAL이면, time expression의 임의의 주어진 second 중 second 00을 제외하고, frames는 0부터 N−1까지 count된다. 여기서 Nttp:frameRate 매개변수가 지정한 값이지만, ttp:frameRateMultiplier 매개변수가 지정한 어떤 값도 무시한다. time expression의 second가 00이고 time expression의 minute이 짝수이지만 00, 20 또는 40이 아니면, frame codes 00부터 03까지가 그 second 동안 drop된다. 그렇지 않으면 이러한 frame codes는 drop되지 않는다.

참고:

예를 들어 ttp:frameRate30dropPAL mode로 동작할 때, frame count의 불연속은 다음 time expressions 시퀀스에서 보이는 것처럼 연속 frame 사이에서 발생한다. 01:09:59:28, 01:09:59:29, 01:10:00:04, 01:10:00:05.

참고:

dropPAL mode는 M/PAL 또는 PAL (M) drop-frame code로도 알려져 있으며, 이는 NTSC frame rate인 약 29.97 frames/second와 함께 PAL modulation을 사용한다. M/PAL 시스템은 주로 브라질에서 사용된다.

지정되지 않으면 nonDrop이 적용된다고 가정해야 한다.

ttp:dropMode 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

7.2.5 ttp:frameRate

ttp:frameRate 속성은 related media object의 frame rate 또는 document instance가 독립 media object로 기능하도록 의도된 경우 그 intrinsic frame rate를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:frameRate
ttp:frameRate
  : <digit>+                                // value > 0

document instance에 적용되는 frame rate는 12.3.1 <time-expression>에서 정의한 것처럼 frames로 표현되는 time expressions를 해석하는 데 사용된다.

media time base가 적용되고 effective frame rate가 정수이면, frame은 media time 1초의 분할로 해석된다. 따라서 frame rate가 F로 지정되면, media time 1초는 동일한 지속 시간을 가진 F개의 interval로 나뉘며, 각 interval은 frame f로 라벨링되고 f ∈ [0…F−1]이다.

참고:

media time base에 대한 time expressions의 해석에 대한 자세한 내용은 I.2 Media Time Base를 참조한다.

지정되지 않으면 frame rate는 어떤 application defined frame rate와 같다고 간주되어야 하며, application defined frame rate가 적용되지 않으면 초당 thirty (30) frames로 간주되어야 한다. 지정된 경우 frame rate는 0보다 커야 한다.

ttp:frameRate 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

7.2.6 ttp:frameRateMultiplier

ttp:frameRateMultiplier 속성은 effective frame rate를 계산하기 위해 ttp:frameRate 속성이 지정한 frame rate에 적용할 multiplier를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:frameRateMultiplier
ttp:frameRateMultiplier
  : numerator <lwsp> denominator            // numerator != 0; denominator != 0

numerator | denominator
  : <digit>+

원하는 frame rate를 초당 정수 frame 수로 표현할 수 없는 경우 frame rate multiplier가 사용된다.

지정되지 않으면 frame rate multiplier는 어떤 application defined frame rate multiplier와 같다고 간주되어야 하며, application defined frame rate multiplier가 적용되지 않으면 one (1:1)로 간주된다. numerator와 denominator는 모두 0이 아니어야 한다.

ttp:frameRateMultiplier 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

참고:

초당 30 frames인 NTSC [SMPTE ST 170] formatted video objects와 동기화하기 위해 사용되는 frame rate multiplier는 명목상 1000:1001이다. NTSC video의 nominal frame rate는 chrominance sub-carrier frequency 3,579,545.45…Hz (= 5.0MHz × 63/88)에 비율 2/455를 곱하고 frame당 horizontal lines 수 525로 나눈 값으로 정의되며, 그 결과 frame rate는 초당 29.970029970029… (= 30 × 1000/1001) frames가 된다. 다른 frame rate multipliers는 서로 다른 사용 지역과 video format standards에 적용된다.

참고:

PAL/M의 경우를 제외하면, 초당 25 frames인 PAL formatted video objects와 동기화하기 위해 사용되는 frame rate multiplier는 명목상 1:1이다.

7.2.7 ttp:markerMode

ttp:markerMode 속성은 7.2.11 ttp:timeBase에서 정의한 것처럼 time base가 smpte로 동작할 때 [SMPTE ST 12-1] time coordinates에 대응하는 time expressions의 해석 및 사용에 대한 제약을 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:markerMode
ttp:markerMode
  : "continuous"
  | "discontinuous"

7.2.11 ttp:timeBase가 정의한 time base가 smpte로 지정되면 이 매개변수는 다음과 같이 적용된다. 매개변수 값이 continuous이면 [SMPTE ST 12-1] time coordinates는 선형이며 단조 증가하거나 감소한다고 가정될 수 있다. 그러나 discontinuous이면 time coordinates의 선형성 또는 단조성에 관한 어떤 가정도 해서는 안 된다.

지정되지 않으면, 이 매개변수의 값은 discontinuous로 간주되어야 한다.

참고:

이 매개변수의 기본값은 원래 (TTML 1.0 First Edition에서) continuous로 지정되었으나, 업계 현황을 추가로 평가한 결과 이 선택이 잘못되었으며 가장 일반적인 기본값은 discontinuous임이 나타났다.

ttp:markerMode 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

continuous 값이 적용되면 time expressions는 ttp:dropMode 매개변수가 표현하는 computed frame rate와 drop mode를 고려하여 real time coordinates로 변환될 수 있다. 이 경우 content processor는 이러한 time expressions가 12.4 Timing Semantics에서 더 설명된 것처럼 해석되는 synthetic smpte document syncbase를 생성하고 유지해야 한다.

참고:

smpte time base와 continuous marker mode로 동작할 때, computed frame rate와 drop mode를 고려하면서 단조 증가(또는 감소)하는 [SMPTE ST 12-1] time coordinates에 의해 정의되는 암시적 time coordinate space, 즉 synthetic smpte document syncbase가 존재한다. 모든 time expressions는 smpte time code synchronization events(markers)에 기반하여 이 time coordinate space와의 관계에서 해석되며, 여기서 document processing context는 dropped frames가 있을 때 time coordinate monotonicity 및 resynchronization에 관한 암시적 제약과 함께 이러한 events를 방출한다.

smpte time base와 함께 continuous marker mode를 사용하는 것은 media time base를 사용하는 것과 다르다. 그 이유는 (1) ttp:dropMode 매개변수의 의미론이 전자에는 적용되지만 후자에는 적용되지 않으며, (2) [SMPTE ST 12-1] time coordinates는 시간상 팽창, 시간상 수축 또는 시간상 반전을 받은 media에 단조적으로 적용될 수 있기 때문이다.

discontinuous 값이 적용되면 time expressions는 real time coordinates로 변환되어서는 안 되며, 산술 연산자(덧셈, 곱셈)는 time expressions에 대해 정의되지 않고, 따라서 duration의 어떤 (well-formed) expression도 invalid로 간주되어야 한다.

참고:

smpte time base와 discontinuous marker mode로 동작할 때, effective time coordinate space는 없다. 오히려 모든 time expressions는 라벨이 붙은 synchronization events(markers)로 해석되며, 여기서 document processing context가 이러한 events를 방출하고, 이 events가 같은 label을 나타내는 time expressions에 대응할 때 temporal interval이 그에 따라 시작되거나 끝나게 한다.

discontinuous mode로 동작할 때의 추가 부수 효과는 children의 time expressions가 temporal container의 time expressions와 반드시 관계를 가질 필요가 없다는 점이다. 즉 temporal containers와 이러한 containers의 children은 라벨이 붙은 synchronization(marker) event의 발생에 기반하여 독립적으로 temporally activated 및 inactivated된다.

참고:

<time-expression>과 라벨이 붙은 synchronization event(marker)의 비교는 implementation dependent로 간주된다. 특히 이 명세는 구현이 time expressions 또는 markers에 대한 특정 내부 형식이나 특정 비교 알고리즘을 사용하도록 요구하지 않는다. 그럼에도 구현은 그러한 비교를 수행할 때 time expressions의 의미론과 marker labels에 적용되는 모든 암시적 의미론을 존중할 것으로 예상된다.

참고:

이 매개변수가 포착하는 marker discontinuity의 개념은 ttp:dropMode 매개변수가 표현하는 frame count 방식과 논리적으로 독립적이다. 특히 ttp:dropMode 매개변수가 dropNTSC 또는 dropPAL로 지정되더라도, marker mode는 frame counting method에 의해 유발된 frame count discontinuities가 있는 경우에도 continuous로 지정될 수 있다. 다만 예를 들어 10:00:00:0010:00:01:00로 라벨링된 두 연속 frame처럼 marker labeling에 어떤 다른 비선형성 또는 불연속성이 있는 경우는 제외한다.

7.2.8 ttp:pixelAspectRatio

ttp:pixelAspectRatio 속성은 H Root Container Region Semantics에서 상세히 설명한 대로 root container regionpixel aspect ratio를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:pixelAspectRatio
ttp:pixelAspectRatio
  : numerator <lwsp> denominator            // numerator != 0; denominator != 0

numerator | denominator
  : <digit>+

지정된 경우 numerator와 denominator는 모두 0이 아니어야 한다. 지정되지 않으면 root container region의 pixel aspect ratio는 H Root Container Region Semantics에 의해 결정된다.

ttp:pixelAspectRatio 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

ttp:pixelAspectRatio 속성은 px(pixel) 단위를 사용하는 두 개의 <length> 명세로 구성된 tts:extent 속성도 tt 요소에 지정되지 않는 한, 지정하지 않는 것이 좋으며, 그것 없이 ttp:pixelAspectRatio 속성을 사용하는 것은 deprecated이다.

7.2.9 ttp:subFrameRate

ttp:subFrameRate 속성은 related media object의 sub-frame rate 또는 document instance가 독립 media object로 기능하도록 의도된 경우 그 intrinsic sub-frame rate를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:subFrameRate
ttp:subFrameRate
  : <digit>+                                // value > 0

document instance에 적용되는 sub-frame rate는 12.3.1 <time-expression>에서 정의한 것처럼 sub-frames로 표현되는 time expressions를 해석하는 데 사용된다.

media time base가 적용되고 effective frame rate가 정수이면, sub-frame은 media time의 frame 하나를 분할한 것으로 해석된다. 따라서 sub-frame rate가 S로 지정되면, media time의 frame 하나는 동일한 지속 시간을 가진 S개의 interval로 나뉘며, 각 interval은 sub-frame s로 라벨링되고 s ∈ [0…S−1]이다.

참고:

media time base에 대한 time expressions의 해석에 대한 자세한 내용은 I.2 Media Time Base를 참조한다.

지정되지 않으면 sub-frame rate는 어떤 application defined sub-frame rate와 같다고 간주되어야 하며, application defined sub-frame rate가 적용되지 않으면 one (1)로 간주되어야 한다. 지정된 경우 sub-frame rate는 0보다 커야 한다.

ttp:subFrameRate 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

참고:

sub-frame은 interlaced video media object와 동기화하는 맥락에서 때때로 field라고 불린다.

7.2.10 ttp:tickRate

ttp:tickRate 속성은 related media object의 tick rate 또는 document instance의 콘텐츠가 독립 media object로 기능하도록 의도된 경우 그 intrinsic tick rate를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:tickRate
ttp:tickRate
  : <digit>+                                // value > 0

document instance에 적용되는 tick rate는 12.3.1 <time-expression>에서 정의한 것처럼 t metric을 사용하여 ticks로 표현되는 time expressions를 해석하는 데 사용된다.

media time base가 적용되면, tick은 media time 1초의 정수 분할로 해석된다. 따라서 tick rate가 T로 지정되면, media time 1초는 동일한 지속 시간을 가진 T개의 interval로 나뉘며, 각 interval은 tick t로 라벨링되고 t ∈ [0…T−1]이다.

참고:

media time base에 대한 time expressions의 해석에 대한 자세한 내용은 I.2 Media Time Base를 참조한다.

지정되지 않으면, frame rate가 지정되어 있는 경우 tick rate는 effective frame rate에 sub-frame rate를 곱한 값으로 간주되어야 한다 (즉, ticks는 sub-frames로 해석된다). 또는 frame rate가 지정되어 있지 않으면 tick rate는 media time 1초당 one (1) tick으로 간주되어야 한다. 지정된 경우 tick rate는 0이어서는 안 된다.

참고:

ticks와 frames 또는 sub-frames 사이에는 사전 정의된 관계가 없다. Ticks는 초의 임의 분할이며, 초를 fractional(그리고 잠재적으로 부정확한) expressions로 표현하는 대신 fixed point arithmetic을 사용할 수 있게 한다.

ttp:tickRate 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

7.2.11 ttp:timeBase

ttp:timeBase 속성은 document temporal coordinate space를 지정하는 데 사용된다.

지정된 경우, 이 속성의 값은 다음 구문을 준수해야 한다.

구문 표현 – ttp:timeBase
ttp:timeBase
  : "media"
  | "smpte"
  | "clock"

time base가 media로 지정되면, time expression은 어떤 media object의 time line 안의 coordinate를 나타낸다. 여기서 media object는 document instance의 콘텐츠와 동기화될 external media object일 수도 있고, timed text content가 독립 time line을 설정하도록 의도된 경우에는 document instance 자체의 콘텐츠일 수도 있다.

참고:

media time base를 사용할 때, 그 time base가 paused되거나 양수 또는 음수로 scaled되는 경우, 즉 media play rate가 unity가 아니면, 연결된 Timed Text content의 프레젠테이션도 각각 동일하게 paused, accelerated 또는 decelerated될 것으로 예상된다. 외부 media time base를 제어하는 수단은 이 명세의 범위를 벗어난다.

time base가 smpte로 지정되면, time expression은 [SMPTE ST 12-1] time coordinate를 나타내며, document instance의 콘텐츠는 이에 동기화된다. 이 경우 ttp:markerModettp:dropMode 매개변수의 값이 각각 7.2.7 ttp:markerMode7.2.4 ttp:dropMode에서 정의한 대로 적용된다.

참고:

time base가 smpte로 지정되면, 모든 time expression은 [SMIL 3.0], §5.4.3에서 정의한 것과 유사한 media marker value를 나타낸다. 다만 opaque marker name을 사용하는 대신 구조화된 [SMPTE ST 12-1] time coordinate가 marker name 역할을 한다.

time base가 clock으로 지정되면, time expression은 local wall-clock time 또는 UTC (Coordinated Universal Time) 또는 GPS (Global Positioning System) time lines와 같은 real-time clock에 의해 설정되는 어떤 실제 세계 time line 안의 coordinate를 나타낸다.

지정되지 않으면 기본 time base는 media로 간주되어야 한다.

ttp:timeBase 속성은 tt 요소에 지정된 경우에만 의미가 있는 것으로 간주된다.

media 또는 smpte time bases로 동작할 때, document instance의 diachronic presentation은 temporal reversal, dilation(expansion) 또는 constriction(compression)과 같은 controlling time line의 변환을 받을 수 있다. 그러나 clock time base로 동작할 때는 어떤 변환도 허용되지 않으며, diachronic presentation은 실제 시간의 경과에 기반한 선형의 단조 증가 time line에서 진행된다.

참고:

주어진 document instance에 적용되는 time base 매개변수가 하나뿐이므로, time expressions의 해석은 document instance 전체에서 균일하다.

참고:

지정된 time base에 따른 time expressions의 해석에 대한 자세한 내용은 I Time Expression Semantics를 참조한다.

8 콘텐츠

이 절은 핵심 어휘 카탈로그의 content 사항을 지정한다.

8.1 콘텐츠 요소 어휘

다음 요소들은 document instance의 구조와 주요 콘텐츠 측면을 지정한다.

참고:

이 절의 하위 절들은 논리적 순서(가장 높은 수준의 구성에서 가장 낮은 수준의 구성까지)로 배열되어 있다.

8.1.1 tt

tt 요소는 document instance의 루트 문서 요소 역할을 한다.

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
  {any attributes in TT Parameter Namespace}
  Content: head?, body?
</tt>

root temporal extent, 즉 document instance가 활성 상태인 시간 구간은 문서에 body 요소가 있으면 그 body 요소의 implicit duration과 같은 implicit duration을 가지며, body 요소가 없으면 0의 duration을 가진다.

tts:extent 속성이 tt 요소에 지정된 경우, 이는 10.2.16 tts:extent를 준수해야 하며, 이 경우 content regions가 위치하고 제시되는 root container regionspatial extent를 지정한다. tts:extent 속성이 지정되지 않은 경우, root container regionspatial extentH Root Container Region Semantics에 지정된 규칙에 의해 결정된다. root container region의 origin은 document processing context에 의해 결정된다.

참고:

다른 요구 사항이 없고 related media object가 존재한다면, document processing context가 다음을 결정하는 것이 권장된다.

참고:

저자가 root container region의 (storage 또는 image) aspect ratio를 resolution 지정 없이 신호하려는 경우, ttp:displayAspectRato parameter attribute를 사용하여 이를 수행할 수 있다.

xml:lang 속성은 tt 요소에 지정되어야 한다. 속성 값이 비어 있으면, 이는 document instance 안에 포함된 텍스트에 적용되는 기본 언어가 없음을 의미한다.

tt 요소에 xml:space 속성이 지정되지 않은 경우, 그 속성이 default 값을 가진 것으로 지정된 것처럼 간주되어야 한다.

8.1.2 head

head 요소는 metadata, profile, embedded content resources, styling 및 layout 정보를 포함하는 header matter를 그룹화하는 데 사용되는 컨테이너 요소이다.

head 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Profile.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 0개 또는 1개의 resources 요소, 그 뒤에 0개 또는 1개의 styling 요소, 그 뒤에 0개 또는 1개의 layout 요소, 그 뒤에 0개 또는 1개의 animation 요소를 허용한다.

Metadata.class 요소 그룹의 자식으로 지정된 모든 metadata는 의미론적으로 head 요소에만이 아니라 document instance 전체에 적용된다.

Parameters.class 요소 그룹의 자식으로 지정된 모든 parameters는 의미론적으로 head 요소에만이 아니라 document instance 전체에 적용된다.

resources 자식 요소는 특정 style constructs 및 embedded content elements에서 참조되는 embedded content constructs를 지정하는 데 사용된다.

styling 자식 요소는 다른 style constructs, layout constructs 및 content elements에서 참조되는 style constructs를 지정하는 데 사용된다.

layout 자식 요소는 content elements에서 참조되는 layout constructs를 지정하는 데 사용된다.

animation 자식 요소는 animatable content element 또는 Layout 요소를 대상으로 하는 animation constructs를 지정하는 데 사용된다.

XML 표현 – 요소 정보 항목: head
<head
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, Profile.class*, resources?, styling?, layout?, animation?
</head>

time semantics가 head 요소의 콘텐츠에 적용되는 범위에서, 이 요소의 implied time interval은 root temporal extent와 coterminous한 것으로 정의된다.

8.1.3 body

body 요소는 logical divisions로 표현되는 textual content units의 시퀀스를 위한 logical container 및 temporal structuring element로 기능한다.

body 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Animation.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 0개 이상의 div 요소를 허용한다.

Metadata.class 요소 그룹의 자식으로 지정된 모든 metadata는 의미론적으로 body 요소와 그 descendants 전체에 적용된다.

Animation.class 요소 그룹의 자식으로 지정된 모든 animation elements는 의미론적으로 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")
  {any attributes in TT Metadata Namespace}
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*, Animation.class*, div*
</body>

저자는 begin, dur, end 속성을 사용하여 body 요소에 temporal interval을 지정할 수 있다. 이 interval의 begin point가 지정되지 않은 상태로 남아 있으면, begin point는 document temporal coordinate space의 beginning point와 root temporal extent의 beginning point 중 더 나중의 것으로 해석된다. 이 interval의 end point가 지정되지 않은 상태로 남아 있으면, end point는 root temporal extent의 ending point로 해석된다.

참고:

SMIL presentation에서 참조되는 document instance는 다른 SMIL media objects에 적용되는 것과 같은 timing rules를 따를 것으로 예상된다.

body 요소에 relative begin 또는 end times가 지정된 경우, 이러한 times는 document temporal coordinate space의 beginning을 참조하여 해석된다.

root temporal extentbody 요소의 computed duration보다 짧으면, body 요소의 active time interval은 root temporal extent의 active end point로 truncate된다.

저자는 style 속성, inline style attributes 또는 이들의 조합을 통해 style properties 집합을 body 요소와 연결할 수 있다.

참고:

document instance 안의 body 요소와 연결된 style properties는 descendant content elements에 의한 style inheritance에 사용할 수 있다.

body 요소에 timeContainer 속성이 지정되지 않은 경우, 이는 parallel time containment semantics를 가지는 것으로 해석되어야 한다.

8.1.4 div

div 요소는 logical sub-divisions 또는 paragraphs로 표현되는 textual content units의 시퀀스를 위한 logical container 및 temporal structuring element로 기능한다.

참고:

continuous(non-paged) visual presentation medium에서 렌더링될 때, div 요소는 div 요소의 descendant p 요소들에 의해 생성된 0개 이상의 child block areas를 포함하는 하나 이상의 block areas를 생성할 것으로 예상된다.

div 요소가 생성한 어떤 block area가 child areas를 전혀 포함하지 않는 경우, 그것은 제시될 것으로 예상되지 않는다.

div 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Animation.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 Layout.class 요소 그룹에 속하는 0개 또는 1개의 요소를 허용하고, 그 뒤에 Block.class 또는 Embedded.class 요소 그룹에 속하는 0개 이상의 요소를 허용한다.

Metadata.class 요소 그룹의 자식으로 지정된 모든 metadata는 의미론적으로 div 요소와 그 descendants 전체에 적용된다.

Animation.class 요소 그룹의 자식으로 지정된 모든 animation elements는 의미론적으로 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")
  {any attributes in TT Metadata Namespace}
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*, Animation.class*, Layout.class?, (Block.class|Embedded.class)*
</div>

저자는 style 속성, inline style attributes 또는 이들의 조합을 통해 style properties 집합을 div 요소와 연결할 수 있다.

참고:

document instance 안의 div 요소와 연결된 style properties는 descendant content elements에 의한 style inheritance에 사용할 수 있다.

div 요소에 timeContainer 속성이 지정되지 않은 경우, 이는 parallel time containment semantics를 가지는 것으로 해석되어야 한다.

8.1.5 p

p 요소는 logical paragraph를 나타내며, block level과 inline level formatting semantics 사이의 전환 역할을 한다.

p 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Animation.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 Layout.class 요소 그룹에 속하는 0개 또는 1개의 요소를 허용하고, 그 뒤에 Inline.class 또는 Embedded.class 요소 그룹에 속하는 0개 이상의 요소를 허용한다.

Metadata.class 요소 그룹의 자식으로 지정된 모든 metadata는 의미론적으로 p 요소와 그 descendants 전체에 적용된다.

Animation.class 요소 그룹의 자식으로 지정된 모든 animation elements는 의미론적으로 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")
  {any attributes in TT Metadata Namespace}
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*, Animation.class*, Layout.class?, (Inline.class|Embedded.class)*
</p>

저자는 style 속성, inline style attributes 또는 이들의 조합을 통해 style properties 집합을 p 요소와 연결할 수 있다.

참고:

document instance 안의 p 요소와 연결된 style properties는 descendant content elements에 의한 style inheritance에 사용할 수 있다.

p 요소에 timeContainer 속성이 지정되지 않은 경우, 이는 parallel time containment semantics를 가지는 것으로 해석되어야 한다.

p 요소의 자식 시퀀스가 오직 character information items로만 구성된 경우, 그 시퀀스는 span 요소에 적용되는 style properties를 적용하기 위한 목적으로 anonymous span으로 간주되어야 한다. 자세한 내용은 [construct anonymous spans] 절차를 참조한다.

참고:

TTML의 presentation semantics는 실질적으로 p 요소가 줄 바꿈을 구성함을 의미한다. 특히 이는 처음 생성된 line area 앞과 마지막 생성된 line area 뒤 모두에서 block-stacking constraint와 연결된다. 자세한 내용은 11.3.1.4 Synchronic Flow Processing을 참조한다.

8.1.6 span

span 요소는 inline level formatting semantics를 가진 textual content units의 시퀀스를 위한 logical container 및 temporal structuring element로 기능한다.

visual medium에서 제시될 때, span 요소는 각각 하나 이상의 glyph area를 포함하는 inline areas의 시퀀스를 생성하도록 의도된다.

span 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Animation.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 Inline.class 또는 Embedded.class 요소 그룹에 속하는 0개 이상의 요소를 허용한다.

Metadata.class 요소 그룹의 자식으로 지정된 모든 metadata는 의미론적으로 span 요소와 그 descendants 전체에 적용된다.

Animation.class 요소 그룹의 자식으로 지정된 모든 animation elements는 의미론적으로 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") : new
  xlink:title = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Metadata Namespace}
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*, Animation.class*, (Inline.class|Embedded.class)*
</span>

저자는 style 속성, inline style attributes 또는 이들의 조합을 통해 style properties 집합을 span 요소와 연결할 수 있다.

참고:

document instance 안의 span 요소와 연결된 style properties는 descendant content elements에 의한 style inheritance에 사용할 수 있다.

span 요소에 timeContainer 속성이 지정되지 않은 경우, 이는 parallel time containment semantics를 가지는 것으로 해석되어야 한다.

linking attributes xlink:*는 지정된 location(href), roles 및 title을 사용하여 span 요소를 related content와 연결하는 데 사용할 수 있다. link activation의 동작은 xlink:show 속성의 영향을 받으며, 그 정확한 의미는 document processing context에 의해 결정된다.

span 요소가 xlink:href 속성을 지정하는 경우, nested span element descendant는 xlink:href 속성을 지정해서는 안 되며, 지정하더라도 후자는 presentation 또는 activation processing의 목적으로 무시되어야 한다.

span 요소의 자식 시퀀스가 오직 character information items로만 구성된 경우, 그 시퀀스는 span 요소에 적용되는 style properties를 적용하기 위한 목적으로 anonymous span으로 간주되어야 한다. 자세한 내용은 [construct anonymous spans] 절차를 참조한다.

8.1.7 br

br 요소는 명시적 줄 바꿈을 나타낸다.

Metadata.class 요소 그룹의 자식으로 지정된 모든 metadata는 의미론적으로 br 요소와 그 descendants 전체에 적용된다.

Animation.class 자식의 사용은 deprecated이다.

참고:

br 요소에는 style attributes가 적용되지 않으므로 animation은 br에 효과가 없다.

XML 표현 – 요소 정보 항목: br
<br
  condition = <condition>
  style = IDREFS
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Metadata Namespace}
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*, Animation.class*
</br>

visual medium에서 제시될 때, br 요소의 존재는 강제 줄 바꿈으로 해석되어야 한다.

참고:

br 요소의 visual presentation은 teletype device에서 제시될 때 control character CR (U+000D)에 이어 control code LF (U+000A)가 오는 것과 같은 효과를 생성하도록 의도된다. 따라서 연속된 두 개의 br 요소는 단일 br 요소와는 다른 효과를 생성한다.

8.2 콘텐츠 속성 어휘

이 절은 핵심 어휘 카탈로그의 많은 또는 모든 요소 유형과 함께 사용되는 다음 공통 속성을 정의한다.

또한 이 절은 핵심 어휘 카탈로그의 특정 요소 유형에서 사용되는 다음 linking vocabulary를 정의한다.

8.2.1 condition

condition 속성은 요소와 그 descendants를 semantic processing에서 conditionally exclude하는 데 사용되며, 이 경우 그 요소는 conditionalized element라고 한다.

참고:

요소가 condition 속성을 사용한다고 해서 그 요소(및 그 descendants)의 parsing 또는 그 요소(및 그 descendants)의 parsed representation을 포함하는 document instance와 연결된 reduced xml infoset에 삽입하는 것이 방지되지는 않는다.

condition 속성은 profile matter, 즉 Profile Module의 요소를 제외하고 핵심 어휘 카탈로그의 모든 요소와 함께 사용할 수 있다.

condition 속성의 값은 <condition> 표현식을 준수해야 하며, 이는 presentation processing 시점(lazy evaluation) 또는 presentation processing 이전 시점(eager evaluation)에 평가된다. 여기서 eager evaluation은 evaluation으로부터 얻어진 값이 presentation processing 중에 변경될 수 없거나 변경되지 않는 것으로 알려진 경우에만 발생할 수 있다.

참고:

예를 들어 condition expression이 condition function의 값에 의존한다면, condition expression의 값은 presentation processing 중에 변경될 수 있으므로, 이 경우 eager evaluation은 사용할 수 없다.

presentation processing의 목적상, 어떤 요소가 condition 속성을 지정하고 그 <condition> expression 값이 false로 평가되면, 그 요소와 그 descendant elements의 semantics는 명시적으로 예외 처리되지 않는 한 무시되어야 한다. 즉, 그 descendant elements에 지정된 어떤 <condition> expressions의 평가와 관계없이, 그 요소와 그 descendant elements는 conditionally excluded된다.

참고:

예를 들어 p 요소가 false로 평가되는 condition 속성을 지정하면, 그 요소와 그 descendants의 콘텐츠는 presentation 목적으로 무시된다.

참고:

ancestor elements 중 하나가 conditionally excluded되어 어떤 요소가 conditionally excluded된 경우, 그 요소에 대한 condition 속성의 평가는 요구되지 않으며 관련도 없다. 즉, ancestor가 conditionally excluded된 경우, 어떤 요소는 자신의 condition 속성 평가에 의해 conditionally included될 수 없다.

참고:

특정 경우에는 condition 속성을 통해 요소의 semantics를 무시(excluding)하는 것이 요소의 semantics를 전체적으로가 아니라 부분적으로 무시하는 것으로 구성된다. 이에 대해서는 다음 텍스트와 특정 요소 정의를 참조한다.

higher level protocol이 적용되지 않는 한, <condition> expression 값이 false로 평가될 때 어떤 semantics를 무시해야 하는지 결정하기 위해 다음 예외가 적용된다.

참고:

위에서 언급한 예외는 conditionally excluded element의 descendants에도 적용된다.

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 요소와 함께 사용할 수 있다.

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 요소 그룹의 descendant element, 또는 (3) xml:base 속성을 허용하는 descendant element를 허용하는 모든 요소와 함께 사용할 수 있다.

8.2.8 xml:id

xml:id 속성은 [XML ID]에서 정의한 대로 사용된다.

xml:id 속성은 핵심 어휘 카탈로그의 모든 요소와 함께 사용할 수 있다.

8.2.9 xml:lang

xml:lang 속성은 [XML 1.0], §2.12, Language Identification에서 정의한 대로 사용된다.

xml:lang 속성은 tt 요소에 지정되어야 하며, parameter vocabulary를 제외한 핵심 어휘 카탈로그의 다른 모든 요소 유형의 instance에서 지정될 수 있다.

참고:

[XML 1.0], §2.12에서 지정한 대로, 언어와 요소의 연결은 descendant에 의해 재정의되지 않는 한 해당 요소의 모든 descendants에 적용된다. 다시 말해, 요소와 연결된 언어는 그 요소에 지정되거나, 그 요소의 nearest ancestor element로부터 실질적으로 상속된다.

이 language association process는 document instancereduced xml infoset 구조만을 기반으로 하며, intermediate synchronic document construction을 수행하기 전에 발생한다.

content 및 metadata 요소에서 xml:lang을 사용하는 방식은 다음 예제로 설명된다.

예제 조각 – 콘텐츠 및 메타데이터의 언어 식별
<tt ... xml:lang="">
...
<p xml:lang="en">Jean said hello.</p>
<p xml:lang="fr">Jean dit bonjour.</p>
<p>
  <image src="#talking-image">
    <ttm:item name="altText" xml:lang="en">Talking</ttm:item>
    <ttm:item name="altText" xml:lang="fr">Parlant</ttm:item>
  </image>
</p>
...
</tt>

참고:

이 예제에서 루트 tt 요소는 empty language tag로 식별되며, 이는 unknown 또는 unspecified language를 의미한다. 이러한 식별은 descendant elements에 실질적으로 상속된다(재정의되지 않는 한). 다음으로 처음 두 p(paragraph) 요소는 각각 en(English) 및 fr(French) language identifiers와 연결된다. 마지막으로 세 번째 p(paragraph) 요소는 foreground image로 구성되며, 이는 named metadata items를 사용하여 두 개의 alternative text descriptions와 연결되고, 이 text descriptions는 다시 각각 en(English) 및 fr(French) language identifiers와 연결된다.

8.2.10 xml:space

xml:space 속성은 [XML 1.0], §2.10, White Space Handling에서 정의한 대로 사용된다.

xml:space 속성은 parameter vocabulary를 제외한 핵심 어휘 카탈로그의 모든 요소와 함께 사용할 수 있다.

참고:

[XML 1.0], §2.10에서 지정한 대로, 요소에 적용되는 application whitespace signalling은 descendant에 의해 재정의되지 않는 한 해당 요소의 모든 descendants에 적용된다. 다시 말해, 요소에 적용되는 application whitespace signaling은 그 요소에 지정되거나, 그 요소의 nearest ancestor element로부터 실질적으로 상속된다.

이 application whitespace signalling process는 document instancereduced xml infoset 구조만을 기반으로 하며, intermediate synchronic document construction을 수행하기 전에 발생한다.

default 값의 semantics는 11.3.1.4 Synchronic Flow Processing에서 설명한 대로 document instance의 presentation processing을 수행할 때, equivalent intermediate XSL-FO document의 영향을 받는 요소에 다음 properties가 지정된 것처럼 processing이 발생해야 함을 의미하도록 고정된다.

  • suppress-at-line-break="auto"

  • linefeed-treatment="treat-as-space"

  • white-space-collapse="true"

  • white-space-treatment="ignore-if-surrounding-linefeed"

마찬가지로 preserve 값의 semantics는 presentation processing을 수행할 때, equivalent intermediate XSL-FO document의 영향을 받는 요소에 다음 properties가 지정된 것처럼 processing이 발생해야 함을 의미하도록 고정된다.

  • suppress-at-line-break="retain"

  • linefeed-treatment="preserve"

  • white-space-collapse="false"

  • white-space-treatment="preserve"

unnormalized horizontal tab &#9; (HT) character가 reduced xml infosetcharacter information item에 나타나는 경우, visually presented될 때 그 tab character는 단일 &#20; (SPACE) character인 것처럼 처리된다.

이 명세에서 설명한 방식이 아닌 수단으로 결국 visual presentation을 결과로 만들도록 의도된 다른 유형의 processing을 수행할 때, 위에서 설명한 space collapsing 및 preservation의 semantics는 존중되는 것이 좋다. 다른 유형의 processing의 경우 xml:space 속성의 처리는 processor dependent이지만, 가능하다면 위에서 설명한 semantics를 존중하는 것이 좋다.

참고:

위에서 인용한 네 가지 XSL-FO properties의 semantics는 각각 [XSL-FO 1.1], §7.17.3, 7.16.7, 7.16.12 및 7.16.8에서 정의된다.

참고:

TAB (U+0009) character에는 presentation semantics가 지정되어 있지 않다. 또한 TAB (U+0009) character는 glyph area를 생성할 수 있다. 그 결과, pspan 요소 안의 #PCDATA content에서 TAB (U+0009) character를 사용하는 것은 권장되지 않는다.

8.3 콘텐츠 값 표현식

Core vocabulary는 다음 expressions를 사용할 수 있다.

8.3.1 <absolute-profile-designator>

<absolute-profile-designator> 값 표현식은 (1) locally defined profile과 연결된 absolute designator를 정의하거나 (2) remotely defined profile을 참조하는 데 사용된다.

구문 표현 – <absolute-profile-designator>
<absolute-profile-designator>
  : <absolute-uri>

참고:

현재 맥락에서 locally defined는 현재 문서 안에서 정의됨을 의미하고, remotely defined는 다른 문서 안에서 정의됨을 의미한다.

8.3.2 <absolute-uri>

<absolute-uri> 값 표현식은 absolute URI [URI]를 지정하는 데 사용된다.

구문 표현 – <absolute-uri>
<absolute-uri>
  : <uri>                                     // absolute form only

<absolute-uri> 값 표현식의 맥락에서 <uri> 표현식의 값 구문은 [URI], §4.3에서 정의한 URI의 absolute form을 준수해야 한다.

8.3.3 <arguments>

<arguments> 값은 <expression> 값의 function-expression non-terminal과 함께 사용되는 sub-expression이다.

구문 표현 – <arguments>
<arguments>
  : "(" <lwsp>? ")"
  | "(" <lwsp>? argument-list <lwsp>? ")"

argument-list
  : <expression> (<lwsp>? "," <lwsp>? <expression>)*

8.3.4 <bound-parameter>

<bound-parameter> 값은 content processor에 의해 값에 binding된 named parameters의 열거된 모음 중 하나이다.

구문 표현 – <bound-parameter>
<bound-parameter>
  : "forced"
  | "mediaAspectRatio"
  | "mediaLanguage"
  | "userLanguage"
forced

content processorforced subtitles를 활성화하여 동작하는지 여부를 나타내는 boolean value로 평가된다. document instance에서 사용되는 경우, usesForced named metadata item을 head 요소의 자식으로 지정하는 것이 좋다.

mediaAspectRatio

related media object의 aspect ratio와 같은 numeric value로 평가된다.

mediaLanguage

related media object의 (primary) language와 같은 string value로 평가된다.

userLanguage

document processing context에 의해 결정되는 사용자의 (primary) language와 같은 string value로 평가된다.

8.3.5 <condition>

<condition> 값은 content processing 중 conditionalized element의 semantics가 존중되는지 또는 무시되는지를 결정하는 데 사용되는 binary value로 평가되는 expression을 지정하는 데 사용된다.

구문 표현 – <condition>
<condition>
  : <expression>

<condition> 값에 나타나는 function-expression<condition-function> expression의 형태를 취해야 한다.

8.3.6 <condition-function>

<condition-function> 값은 <condition> 값 표현식에서 사용할 수 있는 sub-expression이다.

구문 표현 – <condition-function>

8.3.7 <expression>

<expression> 값은 <condition> 값의 sub-expression이다.

구문 표현 – <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>

참고:

의심의 여지를 피하기 위해, function-expressionidentifier token과 뒤따르는 <arguments> expression의 최초 여는 괄호 '(' 문자 사이에는 linear whitespace (LWSP)가 허용되지 않는다는 점에 유의한다.

8.3.8 <fragment-profile-designator>

<fragment-profile-designator> 값 표현식은 local profile을 참조로 지정하는 데 사용된다.

구문 표현 – <fragment-profile-designator>
<fragment-profile-designator>
  : <fragment-uri>

8.3.9 <fragment-uri>

<fragment-uri> 값 표현식은 fragment URI [URI]를 지정하는 데 사용된다.

구문 표현 – <fragment-uri>
<fragment-uri>
  : <uri>                                     // fragment component only

<fragment-uri> 값 표현식의 맥락에서 <uri> 표현식의 값 구문은 [URI], §3 및 §3.5에서 정의한 URI의 fragment component를 준수해야 한다. 즉 scheme, authority, path 및 query components는 비어 있고(지정되지 않으며), fragment component만 비어 있지 않다(지정된다).

8.3.10 <media-function>

<media-function> 값은 related media object 또는 document processing context에 대해 media query를 수행하기 위해 <condition> 값 표현식에서 사용할 수 있는 sub-expression이다.

구문 표현 – <media-function>
<media-function>
  : "media(" <lwsp>? media-query <lwsp>? ")"

media-query
  : <quoted-string>

<media-function> 값 표현식의 media-query 인자는 [Media Queries], §3에서 정의한 media_query_list의 구문을 준수해야 한다.

<media-function> 값 표현식은 지정된 media query가 true로 평가되면 true로 평가되고, 그렇지 않으면 값 표현식은 false로 평가된다.

<media-function> expression의 semantics가 지원되지 않으면, 그 expression은 false로 평가되어야 한다.

8.3.11 <profile-designator>

<profile-designator> 값 표현식은 profile을 정의하기 위한 목적 또는 정의된 profile을 참조하기 위한 목적으로 profile을 지정하는 데 사용된다.

구문 표현 – <profile-designator>

8.3.12 <parameter-function>

<parameter-function> 값은 document processing context의 named parameter를 얻기 위해 <condition> 값 표현식에서 사용할 수 있는 sub-expression이다.

구문 표현 – <parameter-function>
<parameter-function>
  : "parameter(" <lwsp>? parameter-name <lwsp>? ")"

parameter-name
  : <quoted-string>

de-quoted될 때, <parameter-function> 값 표현식의 parameter-name 인자는 xsd:NCName을 준수해야 하며, 이는 다시 <bound-parameter>가 열거한 값 중 하나여야 한다.

<parameter-function> 값 표현식은 지정된 parameter name과 연결된(bound to) 값으로 평가된다.

8.3.13 <quoted-string>

<quoted-string> 값 표현식은 double 또는 single quoted string을 지정하는 데 사용된다.

구문 표현 – <quoted-string>
<quoted-string>
  : double-quoted-string
  | single-quoted-string

double-quoted-string
  : '"' ([^"\\] | escape)* '"'

single-quoted-string
  : "'" ([^'\\] | escape)* "'"

escape
  : '\\' char

참고:

의심의 여지를 피하기 위해, quoted string expression 안에는 linear whitespace (LWSP)가 허용되지만, timed text document instance에서 reduced xml infoset을 구성할 때 XML Attribute-Value Normalization의 적용을 받는다는 점에 유의한다.

8.3.14 <relative-profile-designator>

<relative-profile-designator> 값 표현식은 relative profile designators가 absolutized되는 데 사용되는 base URI 역할을 하는 TT Profile Namespace를 기준으로 standardized profile을 참조하는 데 사용된다.

구문 표현 – <relative-profile-designator>
<relative-profile-designator>
  : <relative-uri>

참고:

예를 들어 relative profile designator가 ttml2-presentation으로 표현되면, absolutized profile designator는 http://www.w3.org/ns/ttml/profile/ttml2-presentation가 된다.

8.3.15 <relative-uri>

<relative-uri> 값 표현식은 relative URI [URI]를 지정하는 데 사용된다.

구문 표현 – <relative-uri>
<relative-uri>
  : <uri>                                     // no scheme component present

<relative-uri> 값 표현식의 맥락에서 <uri> 표현식의 값 구문은 [URI], §3에서 정의한 URI의 relative form을 준수해야 한다. 즉 scheme과 authority components는 비어 있고(지정되지 않으며), path와 선택적으로 query 및 fragment components는 지정된다.

8.3.16 <supports-function>

<supports-function> 값은 지정된 feature 또는 extension이 지원되는지 여부를 나타내는 boolean value를 얻기 위해 <condition> 값 표현식에서 사용할 수 있는 sub-expression이다.

구문 표현 – <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 Feature DesignationsF.1 Extension Designations에서 정의된 feature designation 또는 extension designation을 표현해야 한다. 여기서 designation의 feature-namespace 또는 extension-namespace component는 optional이며, 지정되지 않으면 각각 TT Feature Namespace 또는 TT Extension Namespace와 같은 것으로 간주된다.

<supports-function> 값 표현식은 지정된 feature 또는 extension designator가 content processor에 의해 (semantically) 지원되는 경우 true로 평가된다.

8.3.17 <uri>

<uri> 값 표현식은 URI [URI]를 지정하는 데 사용된다.

구문 표현 – <uri>
<uri>
  : xsd:anyURI

xsd:anyURI data type의 값 구문은 [XML Schema Part 2], §3.2.17에서 지정한 정의를 준수해야 한다.

참고:

의심의 여지를 피하기 위해, [URI], §2, Characters에서 URI에서 제외하도록 지정된 문자, 더 구체적으로 [XML 1.0], §3.3.3, step (3), first bullet에서 지정한 XML whitespace characters &#9; (HT), &#10; (LF), &#13; (CR), and &#20; (SPACE)는 <uri> 값의 lexical representation 안에 unescaped form으로 나타나지 않는다.

8.3.18 <uri-list>

<uri-list> 값 표현식은 URI [URI] expressions의 비어 있지 않은 목록을 지정하는 데 사용된다.

구문 표현 – <uri-list>
<uri-list>
  : <uri> (<lwsp> <uri>)*

9 임베디드 콘텐츠

이 절은 핵심 어휘 카탈로그의 embedded content 사항을 지정한다. 여기서 이 맥락에서 content는 임의의 콘텐츠 유형(형식)의 데이터로 이해되어야 하며, embedded는 이 데이터의 임베딩(인라인화) 또는 외부 데이터에 대한 참조의 임베딩을 가리킨다.

9.1 임베디드 콘텐츠 요소 어휘

다음 요소들은 embedded content를 지정하는 데 사용될 수 있다.

9.1.3 data 요소는 embedded data resource를 위한 일반 컨테이너 요소 역할을 하며, 이는 chunks로 fragment될 수도 있고 그렇지 않을 수도 있다. 이 경우 data fragment는 9.1.2 chunk 요소를 사용하여 표현된다. 9.1.1 audio, 9.1.4 font, 및 9.1.5 image 요소는 특정 유형의 embedded content를 참조하는 데 사용되는 특수 요소이다. 9.1.6 resources 요소는 후속 요소들이 참조할 embedded content의 정의를 그룹화하는 데 사용된다. 9.1.7 source 요소는 embedded content의 source를 표현하는 데 사용될 수 있다.

9.1.1 audio

audio 요소는 audio resource를 정의하거나 참조하는 데 사용된다.

audio 요소는 두 가지 맥락에 나타날 수 있다. (1) resources 요소의 자식으로, (2) Block.class 요소 그룹에 속하는 요소의 자식, 즉 div 또는 p 요소의 자식으로, 또는 span 요소의 자식으로 나타날 수 있다. 전자는 audio defining context라고 하며, 후자는 audio presentation context라고 한다.

audio 요소가 audio defining context에 나타나는 경우, 이는 enclosing document instance 안의 다른 audio 요소가 참조할 수 있는 audio resource의 sharable definition 역할을 한다.

참고:

audio resource의 sharable definition은 audio presentation contextaudio 요소에서 참조될 수 있도록 xml:id 속성을 지정한다.

audio 요소가 audio presentation context에 나타나는 경우, 이는 presentation(rendering) semantics, 즉 재생되도록 의도되었음을 암시하는 audio resource의 non-sharable definition 역할을 한다.

참고:

audio resource의 non-sharable definition은 xml:id 속성을 지정할 수도 있고 지정하지 않을 수도 있지만, 이 identifier는 다른 audio 요소에서 참조되지 않으며, 참조되더라도 그 참조는 무시된다.

audio 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Animation.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 0개 이상의 source 요소를 허용한다.

참고:

audio 요소의 text node descendant는 [construct anonymous spans] 절차를 수행하기 위한 significant text node가 아니다.

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")
  {any attributes in TT Style Namespaces}
  {any attributes in TT Metadata Namespace}
  Content: Metadata.class*, Animation.class*, source*
</audio>

audio 요소는 (1) built-in data resource를 참조하거나, (2) external data resource를 참조하거나, (3) embedded data resource를 정의하거나 참조함으로써 audio resource를 지정한다. 여기서 data resource는 audio content를 포함한다.

audio 요소가 src 속성을 지정하는 경우, 자식 source 요소를 지정해서는 안 된다. 반대로 audio 요소가 src 속성을 지정하지 않는 경우, 하나 이상의 자식 source 요소를 지정해야 한다.

audio 요소가 src 속성을 지정하고 그 값이 enclosing document instance의 fragment를 참조하지 않는 경우, type 속성을 지정하는 것이 좋으며, 이 경우 type 속성의 값은 참조된 리소스의 media(content) type과 대응해야 한다. 그렇지 않으면 type 속성을 지정해서는 안 된다.

지정된 경우, clipBegin 속성의 값은 12.3.1 <time-expression>offset-time 형식을 준수해야 하며, 이 경우 이 표현식의 값은 참조된 audio content의 시작에 대한 normal play time offset을 나타내고, audio presentation이 시작되는 지점을 지정한다. 이 지정 값이 참조된 audio content의 intrinsic duration보다 크면, clipBegin의 resolved value는 intrinsic duration으로 간주된다. clipBegin 속성이 지정되지 않은 경우 0 값이 적용된다.

마찬가지로 지정된 경우, clipEnd 속성의 값은 12.3.1 <time-expression>offset-time 형식을 준수해야 하며, 이 경우 이 표현식의 값은 참조된 audio content의 시작에 대한 normal play time offset을 나타내고, presentation이 중지되는 지점을 지정한다. 이 지정 값이 참조된 audio content의 intrinsic duration보다 크면, clipEnd의 resolved value는 intrinsic duration으로 간주된다. clipEnd 속성이 지정되지 않은 경우 audio content의 intrinsic duration과 같은 값이 적용된다.

audio 요소의 사용은 다음 예제로 설명된다.

예제 조각 – 외부 오디오 리소스
...
<audio src="http://example.com/audio/description.mp3" type="audio/mp3"/>
...

9.1.2 chunk

chunk 요소는 데이터의 별개 chunk(fragment)를 나타내는 데 사용된다.

chunk 요소는 data 요소의 자식으로 나타날 수 있다.

XML 표현 – 요소 정보 항목: chunk
<chunk
  condition = <condition>
  encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : base64
  length = xsd:nonNegativeInteger
  xml:base = <uri>
  xml:id = ID
  Content: #PCDATA
</chunk>

encoding 속성이 지정된 경우, 이는 chunk 요소가 나타내는 byte sequence의 실제 encoding을 나타내야 한다. encoding 속성이 지정되지 않은 경우, encoding은 base64로 간주되어야 한다.

length 속성이 지정된 경우, 이는 chunk 요소가 나타내는 byte sequence 안의 decoded bytes 수를 나타내야 한다. decoding할 때 지정된 length 값이 decoded bytes 수와 일치하지 않으면, chunk와 그 container data 요소는 zero length byte sequence를 반환해야 한다. length 속성이 지정되지 않은 경우, chunk는 실제 decoded bytes 수와 같은 length를 가지는 것으로 간주된다.

chunked data의 사용은 다음 예제로 설명된다.

예제 조각 – Chunked Data
...
<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 요소는 세 가지 맥락에 나타날 수 있다. (1) resources 요소의 자식으로, 이는 data defining context라고 하며, (2) metadata 요소의 자식으로, 이는 data binding context for metadata라고 하며, 또는 (3) source 요소의 자식으로, 이는 data binding context for source라고 한다. 이 후자의 두 맥락은 통틀어 data binding contexts라고 한다.

data 요소가 data defining context에 나타나는 경우, 이는 (1) 다른 data 요소, (2) embedded content element, 또는 (3) source 요소의 src 속성에 의해 참조될 수 있는 data resource의 sharable definition 역할을 한다. 이 경우 data 요소의 contextualized active time interval은 그 부모 resources 요소의 active time interval과 그 referring element의 active time interval의 intersection이다.

참고:

data resource의 sharable definition은 data binding context에서 사용되는 fragment identifier로 참조될 수 있도록 xml:id 속성을 지정한다.

data 요소가 data binding context에 나타나는 경우, 이는 binding semantics를 암시하는 data resource의 non-sharable definition 역할을 한다. 즉, reference의 immediate context에 bound to(연결)되도록 의도되었음을 의미한다. 이 경우 data 요소의 active time interval은 가장 가까운 조상 timed element의 active time interval과 같다.

참고:

data resource의 non-sharable definition은 xml:id 속성을 지정할 수도 있고 지정하지 않을 수도 있지만, 이 identifier는 다른 data binding contexts에서 참조되지 않으며, 참조되더라도 binding semantics를 가지지 않는다.

data 요소는 다음 세 가지 콘텐츠 모델 중 하나를 허용한다. (1) 하나 이상의 text nodes(즉, #PCDATA), (2) Metadata.class 요소 그룹에 속하는 0개 이상의 요소 뒤에 하나 이상의 chunk 요소가 오는 것, 또는 (3) Metadata.class 요소 그룹에 속하는 0개 이상의 요소 뒤에 하나 이상의 source 요소가 오는 것이다. 여기서 첫 번째는 simple data embedding, 두 번째는 chunked data embedding, 세 번째는 sourced data embedding이라고 한다.

simple data embedding이 사용되면, data resource는 #PCDATA content를 decoding하여 얻어진다. chunked data embedding이 사용되면, data resource는 각 자식 chunk 요소를 decoding하여 얻은 byte sequences를 concatenate함으로써 얻어진다. sourced data embedding이 사용되면, data resource는 처음 resolve 가능한 자식 source 요소에서 얻어진다. 또한 자식 source 요소는 data 요소를 포함해서는 안 되지만, data defining contextdata 요소를 참조할 수 있다.

XML 표현 – 요소 정보 항목: data
<data
  condition = <condition>
  encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : see prose below
  format = <data-format>
  length = xsd:nonNegativeInteger
  src = <data>
  type = xsd:string : see prose below
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: #PCDATA | (Metadata.class*, chunk+) | (Metadata.class*, source+)
</data>

simple data embedding이 사용되는 경우, 즉 data 요소의 content가 하나 이상의 text nodes인 경우, encoding 속성이 지정될 수 있으며, 지정되지 않으면 base64로 간주되어야 한다. chunked 또는 sourced data embedding이 사용되는 경우, 즉 data 요소의 content가 자식 chunk 또는 source 요소를 포함하는 경우, encoding 속성은 지정되어서는 안 되며, 지정되더라도 content processing의 목적으로 무시되어야 한다.

length 속성이 지정된 경우, 이는 data 요소가 나타내는 byte sequence 안의 decoded bytes 수를 나타내야 한다. decoding할 때 지정된 length 값이 decoded bytes 수와 일치하지 않으면, zero length byte sequence가 반환되어야 한다. length 속성이 지정되지 않은 경우, data resource는 실제 decoded bytes 수와 같은 length를 가지는 것으로 간주된다. sourced data embedding을 사용할 때는 length 속성을 지정해서는 안 된다.

참고:

length 속성의 의도는 decoded data에 대해 간단한 integrity check를 수행할 수단을 제공하는 것이다. 이 check는 transport 중 data integrity를 보장하지 않는다는 점에 유의한다. 즉, data는 length를 수정하지 않고도 수정될 수 있다.

simple 또는 chunked data embedding이 사용되는 경우, type 속성이 지정되어야 하며, data resource의 media(content) type과 대응해야 한다. 이러한 경우 정의된 type이 없으면 application/octet-stream type을 사용하는 것이 좋다. sourced data embedding의 경우, resolved source 요소의 media(content) type이 type으로 사용된다.

type 속성이 지정되지 않았거나 resolve되지 않았거나, application/octet-stream과 같은 generic type으로 지정되고, Media Type [MIME Media Types] parameter로 표현할 수 없는 referenced data resource에 대한 추가 format information을 알고 있는 경우, content processor에 대한 hint로 format 속성이 지정될 수 있다.

simple data embedding의 사용은 다음 예제로 설명된다.

예제 조각 – Data Defining Context의 Simple Data Embedding
<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>

예제 조각 – Metadata용 Data Binding Context의 Simple Data Embedding
<div>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:desc>caption with metadata containing tunneled data</ttm:desc>
    <data encoding="base64">
      TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
      IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
      dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
      dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
      ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
    </data>
  </metadata>
  <p>Caption with Tunneled Data</p>
</div>

예제 조각 – Source용 Data Binding Context의 Simple Data Embedding
<div>
  <image>
    <source>
      <data type="image/png" length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </data>
    </source>
  </image>
</div>

9.1.4 font

font 요소는 font resource를 정의하거나 참조하는 데 사용된다.

font 요소는 resources 요소의 자식으로 나타날 수 있으며, 이를 font defining context라고 한다.

font 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 0개 이상의 source 요소를 허용한다.

XML 표현 – 요소 정보 항목: font
<font
  condition = <condition>
  family = xsd:string
  range = <unicode-range>
  style = ("normal" | "italic" | "oblique") : see prose below
  src = <font>
  type = xsd:string
  weight = ("normal" | "bold") : see prose below
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, source*
</font>

font 요소는 (1) built-in data resource를 참조하거나, (2) external data resource를 참조하거나, (3) embedded data resource를 정의하거나 참조함으로써 font resource를 정의한다. 여기서 data resource는 font content를 포함한다.

font 요소가 src 속성을 지정하는 경우, 자식 source 요소를 지정해서는 안 된다. 반대로 font 요소가 src 속성을 지정하지 않는 경우, 하나 이상의 자식 source 요소를 지정해야 한다.

font 요소가 src 속성을 지정하고 그 값이 enclosing document instance의 fragment를 참조하지 않는 경우, type 속성을 지정하는 것이 좋으며, 이 경우 type 속성의 값은 참조된 리소스의 media(content) type과 대응해야 한다. 그렇지 않으면 type 속성을 지정해서는 안 된다.

family, range, style, 또는 weight 속성 중 하나라도 지정되면, 이는 실제 font resource의 family name, supported character ranges, style 및 weight를 override한다. 특히 지정된 attribute value(s)가 font resource에 encoded된 이러한 font characteristics의 value(s)와 다르면, 지정된 attribute value(s)가 font resource에 encoded된 font characteristics 대신 사용되어야 한다.

family, range, style, 또는 weight 속성 중 하나라도 지정되지 않은 경우, 그 값은 font resource에 encoded된 동일한 이름의 font characteristics의 value(s)와 같은 것으로 간주되어야 한다.

참고:

저자에게는 가능한 경우 subset fonts를 사용하는 것이 권장된다. subset font는 참조되지 않는 glyphs와 참조되지 않는 glyph metrics를 제거한 구문적으로 유효한 font resource이다. 일반적으로 subset font는 특정 문서에 묶여 있는데, 그 문서의 실제 문자 콘텐츠를 기반으로 생성되었을 수 있기 때문이다.

font resources를 dereferencing(downloading)하기 위한 목적으로, content processor는 필요한 (transformation 또는 presentation) processing을 수행하기 위해 font resource의 content가 필요한 시점까지 downloading process를 지연할 수 있다.

font 요소의 사용은 다음 예제로 설명된다.

예제 조각 – Font
...
<head>
  <resources>
    <data xml:id="lastResortFont" type="application/font-woff">
      ... base64 encoded data ...
    </data>
    <font family="MyFont" range="u+20-7f,u+90-9f">
      <source src="http://example.com/fonts/myfont.otf" type="font/otf"/>
      <source src="#lastResortFont"/>
    </font>
  </resources>
</head>
...
<p tts:fontFamily="MyFont">use my font or last resort font</p>
...

9.1.5 image

image 요소는 image resource를 정의하거나 참조하는 데 사용된다.

image 요소는 두 가지 맥락에 나타날 수 있다. (1) resources 요소의 자식으로, (2) Block.class 요소 그룹에 속하는 요소의 자식, 즉 div 또는 p 요소의 자식으로, 또는 span 요소의 자식으로 나타날 수 있다. 전자는 image defining context라고 하며, 후자는 image presentation context라고 한다.

image 요소가 image defining context에 나타나는 경우, 이는 다른 image 요소 또는 enclosing document instance 안의 tts:backgroundImage style attribute가 참조할 수 있는 image resource의 sharable definition 역할을 한다.

참고:

image resource의 sharable definition은 image presentation context에서 image 요소 또는 tts:backgroundImage style attribute가 참조할 수 있도록 xml:id 속성을 지정한다.

image 요소가 image presentation context에 나타나는 경우, 이는 presentation(rendering) semantics를 암시하는 image resource의 non-sharable definition 역할을 한다.

참고:

image resource의 non-sharable definition은 xml:id 속성을 지정할 수도 있고 지정하지 않을 수도 있지만, 이 identifier는 다른 image 요소에서 참조되지 않으며, 참조되더라도 그 참조는 무시된다.

image 요소가 div 요소의 자식으로 나타나는 경우, 그 presentation은 image가 렌더링되는 block area를 생성한다. 즉, image 요소 앞뒤에 block boundary가 암시된다. 반대로 image 요소가 p 또는 span 요소의 자식으로 나타나는 경우, 그 presentation은 image가 렌더링되는 inline area를 생성한다. 즉, image 요소 앞뒤에 block boundary가 암시되지 않는다.

참고:

[CSS2]에서 이러한 semantics는 image 요소가 각각 block 또는 inline 값을 가진 display style property와 연결되는 것에 해당한다.

tts:backgroundImage style attribute가 참조하는 image resource의 presentation은 content layout에 영향을 주어서는 안 된다.

image 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Animation.class 요소 그룹에 속하는 0개 이상의 요소를 허용하며, 그 뒤에 0개 이상의 source 요소를 허용한다.

참고:

image 요소의 text node descendant는 [construct anonymous spans] 절차를 수행하기 위한 significant text node가 아니다.

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") : new
  xlink:title = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Style Namespaces}
  {any attributes in TT Metadata Namespace}
  Content: Metadata.class*, Animation.class*, source*
</image>

image 요소는 (1) built-in data resource를 참조하거나, (2) external data resource를 참조하거나, (3) embedded data resource를 정의하거나 참조함으로써 image resource를 정의한다. 여기서 data resource는 image content를 포함한다.

image 요소가 src 속성을 지정하는 경우, 자식 source 요소를 지정해서는 안 된다. 반대로 image 요소가 src 속성을 지정하지 않는 경우, 하나 이상의 자식 source 요소를 지정해야 한다.

image 요소가 src 속성을 지정하고 그 값이 enclosing document instance의 fragment를 참조하지 않는 경우, type 속성을 지정하는 것이 좋으며, 이 경우 type 속성의 값은 참조된 리소스의 media(content) type과 대응해야 한다. 그렇지 않으면 type 속성을 지정해서는 안 된다.

image 요소는 intrinsic width 또는 height information을 사용할 수 없거나 override하려는 경우 image의 presentation width 또는 height를 지정하기 위해 tts:extent style attribute를 지정할 수 있다. 이 속성이 image presentation contextimage 요소와, 전자가 참조하는 image defining contextimage 요소 둘 다에 지정되면, 전자에 지정된 속성이 후자에 지정된 것보다 우선한다. tts:extent style attribute가 적용되는 image의 presentation은 지정된 extent의 width와 height를 얻기 위해 (possibly anamorphic) scaling operation의 대상이 된다.

linking attributes xlink:*는 지정된 location(href), roles 및 title을 사용하여 image 요소를 related content와 연결하는 데 사용할 수 있다. link activation의 동작은 xlink:show 속성의 영향을 받으며, 그 정확한 의미는 document processing context에 의해 결정된다.

imageimage defining context에 나타나는 경우 다음 추가 제약이 적용된다.

  1. attributes animate, begin, dur, end, region, 및 timeContainer는 지정되어서는 안 되며, 나타나는 경우 presentation processing의 목적으로 무시되어야 한다.

  2. Animation.class 요소 그룹의 elements는 자식 요소로 나타나서는 안 되며, 나타나는 경우 presentation processing의 목적으로 무시되어야 한다.

image 요소의 사용은 다음 예제로 설명된다.

예제 조각 – 외부 이미지 리소스
<div>
  <p>This division has a content image that appears as a block area after this paragraph.</p>
  <image src="http://example.com/images/caption.png" type="image/png"/>
<div>
...
<div tts:backgroundImage="http://example.com/images/background.png">
  <p>This division has a background image that appears under this paragraph.</p>
<div>
...

예제 조각 – 공유 가능한 임베디드 이미지 리소스
<head>
  <resources>
    <data xml:id="caption" type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
  </resources>
</head>
<body>
  <div>
    <p>
      <image>
        <source src="#caption"/>
      </image>
    <p>
    ...
    <p>
      <image>
        <source src="#caption"/>
      </image>
    <p>
  </div>
</body>

예제 조각 – Non-Sharable Image Fallback이 있는 외부 이미지 리소스
<div>
  <image>
    <source src="http://example.com/images/caption.png" type="image/png"/>
    <source>
      <data type="image/png" length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </data>
    </source>
  </image>
</div>

참고:

image 요소는 [SMPTE ST 2052-1]에서 도입된 #image extension의 기능을 통합하고 확장한다. 특히 content image를 참조하는 smpte:backgroundImage 속성은 src 속성이 smpte:backgroundImage 속성의 값과 같은 image 요소로 매핑될 수 있다.

9.1.6 resources

resources 요소는 이 embedded content에 적용되는 metadata를 포함하여 embedded content의 정의를 그룹화하는 데 사용되는 컨테이너 요소이다.

resources 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 Data.class, Embedded.class, 또는 Font.class 요소 그룹에 속하는 0개 이상의 요소를 허용한다.

XML 표현 – 요소 정보 항목: resources
<resources
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, (Data.class|Embedded.class|Font.class)*
</resources>

time semantics가 resources 요소의 content에 적용되는 범위에서, 이 요소의 implied time interval은 root temporal extent와 coterminous한 것으로 정의된다.

9.1.7 source

source 요소는 embedded content resource의 source를 지정하는 데 사용된다.

source 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 0개 또는 1개의 data 요소를 허용한다.

source 요소가 src 속성을 지정하는 경우, 자식 data 요소를 지정해서는 안 된다. 이 경우 src 속성이 외부 리소스를 참조하면 external source라고 하며, src 속성이 enclosing document instance 안의 embedded resource를 참조하면 non-nested embedded source라고 한다.

source 요소가 src 속성을 지정하지 않는 경우, 자식 data 요소를 지정해야 하며, 이 경우 nested embedded source라고 한다.

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")
  Content: Metadata.class*, data?
</source>

format 속성이 지정된 경우, 이는 embedded content의 format(즉 formal syntax)에 대한 추가 hint information을 제공한다. 이러한 정보는 표준 media(content) type label이 정의되지 않았거나 그 정보를 Media Type parameter [MIME Media Types]로 표현할 수 없는 경우에 유용할 수 있다. source 요소의 사용 맥락에 따라 이 속성의 값은 추가로 제약될 수 있다.

src 속성이 지정되고 그 값이 enclosing document instance의 fragment를 참조하는 경우, 그 fragment로 식별되는, 즉 fragment identifier와 일치하는 값을 가진 xml:id 속성을 가지는 resources 요소의 자식 data 요소가 있어야 한다.

src 속성이 지정되고 그 값이 enclosing document instance의 fragment를 참조하지 않는 경우, type 속성을 지정하는 것이 좋으며, 이 경우 참조된 리소스의 media(content) type과 대응해야 한다.

src 속성이 지정되고 그 값이 enclosing document instance의 fragment를 참조하는 경우, type 속성을 지정해서는 안 된다. 대신 embedded resource의 content type은 참조되거나 embedded된 data 요소의 type 속성 값에 의해 결정된다.

source 요소의 사용은 다음 예제로 설명된다.

예제 조각 – 외부 Source
...
<image>
  <source src="http://example.com/images/caption.png" type="image/png"/>
</image>
...

예제 조각 – Non-Nested Embedded Source
...
<data xml:id="caption" type="image/png" length="119">
  iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
  YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
...
<image>
  <source src="#caption"/>
</image>
...

예제 조각 – Nested Embedded Source
...
<image>
  <source>
    <data type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
  </source>
</image>
...

9.2 임베디드 콘텐츠 속성 어휘

이 절은 특정 embedded content element vocabulary와 함께 사용하기 위한 다음 속성을 정의한다.

9.2.1 encoding

encoding 속성은 data의 encoding format을 지정하는 데 사용된다.

encoding 속성은 다음 element types의 instance가 지정할 수 있다.

지정된 경우, encoding 속성의 값은 [Data Encodings]에서 정의한 다음 값 중 하나를 가져야 한다.

  • base16

  • base32

  • base32hex

  • base64

  • base64url

지정되지 않은 경우 base64 semantics가 적용된다.

9.2.2 format

format 속성은 type 속성이 제공하는 media(content) type information을 넘어 embedded content resource의 media(content) format에 대한 hints를 지정하는 데 사용된다.

참고:

format 속성은 registered media(content) type이 없는 경우, 예를 들어 media(content) type을 사용할 수 없거나 application/octet-stream과 같은 generic type이 사용되는 경우에 유용하다.

format 속성은 다음 element types의 instance가 지정할 수 있다.

format 속성의 값은 <data-format> expression을 준수해야 한다.

사용 맥락에 따라 추가 제약이 적용될 수 있다.

9.2.3 src

src 속성은 data resource의 location 또는 location에 매핑되는 identifier를 지정하는 데 사용된다.

src 속성은 다음 element types의 instance가 지정할 수 있다.

지정된 경우, src 속성의 값은 <uri> 값 구문을 준수해야 한다.

사용 맥락에 따라 추가 제약이 적용될 수 있다.

9.2.4 type

type 속성은 data resource의 media(content) type을 지정하는 데 사용되며, data를 특성화하는 추가 parameters를 표현할 수 있다.

type 속성은 다음 element types의 instance가 지정할 수 있다.

지정된 경우, type 속성의 값은 [MIME], §5.1에서 정의한 Content-Type MIME header의 값 구문을 준수해야 한다.

지정되지 않은 경우 media(content) type은 unknown 또는 deliberately unspecified이다.

type 속성이 지정된 data resource를 decoding할 때, content processing은 그것이 올바른지 여부와 관계없이 지정된 type을 존중해야 한다. 즉 type 속성이 data resource의 type을 잘못 지정한 경우, content processing은 content sniffing을 수행하여 그 type을 override하려고 해서는 안 된다.

9.3 임베디드 콘텐츠 값 표현식

Embedded content elements와 특정 style property values는 다음 expressions를 사용한다.

9.3.1 <audio>

<audio> 값 표현식은 audio resource를 참조로 지정하는 데 사용된다.

구문 표현 – <audio>
<audio>
  : <uri>

<audio> 값 표현식이 bare fragment identifier 형식을 취하는 경우, 그 fragment identifier는 enclosing document instance 안의 resources 요소의 자식인 audio 요소를 참조해야 한다.

<audio> 값 표현식이 http://www.w3.org/ns/ttml/resource/#empty 값을 취하는 경우, 참조된 audio resourceempty data resource이다.

<audio> 값 표현식이 http://www.w3.org/ns/ttml/resource/#speech 값을 취하는 경우, speech synthesis processor가 지원되고 enabled이면, 참조된 audio resourcespeech data resource이다. 그렇지 않으면(즉 speech synthesis processor가 지원되지 않거나 지원되지만 disabled인 경우), 참조된 audio resourceempty data resource이다.

9.3.2 <data>

<data> 값 표현식은 data resource를 참조로 지정하는 데 사용된다.

구문 표현 – <data>
<data>
  : <uri>

<data> 값 표현식이 fragment identifier 형식을 취하는 경우, 그 fragment identifier는 enclosing document instance 안의 resources 요소의 자식인 data 요소를 참조해야 한다.

9.3.3 <data-format>

<data-format> expression은 data resource의 format을 지정하는 데 사용된다. 추가 format information은 registered media(content) type이 없는 data resources의 경우에 유용하다.

구문 표현 – <data-format>
<data-format>
  : xsd:NCName
  | <uri>

format expression이 <uri> 값의 형태를 취하는 경우, 이는 absolute URI를 표현해야 한다.

참고:

이 명세는 data content와 함께 사용할 format tokens의 집합을 표준화하지 않는다. 저자에게는 일반적으로 사용되는 tokens를 사용하거나, 그것이 없으면 private use token을 형성하기 위해 "x-" prefix를 추가하는 것이 권장된다.

9.3.4 <font>

<font> expression은 font resource를 참조로 지정하는 데 사용된다.

구문 표현 – <font>
<font>
  : <uri>

<font> expression이 fragment identifier 형식을 취하는 경우, 그 fragment identifier는 enclosing document instance 안의 resources 요소의 자식인 font 요소를 참조해야 한다.

9.3.5 <image>

<image> expression은 image resource를 참조로 지정하는 데 사용된다.

구문 표현 – <image>
<image>
  : <uri>

<image> expression이 fragment identifier 형식을 취하는 경우, 그 fragment identifier는 enclosing document instance 안의 resources 요소의 자식인 image 요소를 참조해야 한다.

9.3.6 <unicode-range>

<unicode-range> expression은 singleton codepoints 또는 codepoints의 ranges를 열거하여 Unicode codepoints의 collection을 지정하는 데 사용된다.

구문 표현 – <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 스타일링

이 절은 핵심 어휘 카탈로그의 styling 사항을 지정한다. 여기서 styling은 content에 적용되며 그 content의 presentation에 대한 저자의 의도를 나타내는 분리 가능한 정보 계층으로 이해되어야 한다.

Styling attributes는 self-contained document 안에 presentation에 대한 저자의 의도를 포함할 수 있도록 TTML에 포함된다. 이 절은 표준 processing model의 관점에서 style presentation의 semantics를 설명한다. TTML Processors는 document instances를 어떤 특정한 방식으로 presentation해야 하는 것은 아니다. 그러나 이 model과 일치하는 externally observable results를 제공하는 TTML presentation processor에 의한 이 model의 구현은 documents의 저자가 의도한 experience와 매우 유사한 user experience로 이어질 가능성이 높다.

참고:

TTML style presentation의 semantics는 [XSL-FO 1.1]에서 정의한 layout 및 formatting model의 관점에서 설명된다. 이 절의 attributes의 효과는 이 model과 호환되도록 의도된다. 그러나 presentation agents는 문서의 저자 의도를 충족하기 위해 어떤 기술이든 사용할 수 있다. 예를 들어, [CSS2] processor가 이 model과 공통으로 가지는 features를 구현하는 데 사용될 수 있다.

이 명세에서는 <?xml-stylesheet ... ?> processing instruction의 규범적 사용을 정의하지 않는다.

이 절에서 정의된 styling attributes는 TT Style Namespaces 안의 attributes 사용을 허용하는 어떤 element type에도 지정될 수 있다. 그러나 이러한 attributes는 각 attribute의 정의에서 표시된 element types에만 style properties로 적용된다. 또한 element type definition에서 명시적으로 허용하지 않는 한, TT Style Namespaces 안의 attribute는 해당 element에 적용되거나 inheritable style property를 나타내는 경우가 아니라면 element에 지정하지 않는 것이 좋다. 해당 element에 적용되지 않고 inheritable style property도 나타내지 않는다면, non-validation processing의 목적으로는 무시되어야 한다. validation processing의 경우, 이러한 사용은 warning으로 보고하는 것이 좋다.

style property의 적용 가능성을 결정하기 위한 목적으로, style property가 span 요소에 적용되도록 정의되어 있다면, 이는 anonymous span 요소에도 적용된다.

10.1 스타일링 요소 어휘

다음 요소들은 document instance의 구조와 주요 styling 측면을 지정한다.

10.1.1 initial

initial 요소는 하나 이상의 style properties의 initial value를 수정하는 데 사용된다. 즉, 명세가 정의한 initial value(s)와 다른 value(s)의 사용을 지정하는 데 사용된다.

initial 요소는 자식으로 0개 이상의 metadata 요소를 허용한다.

XML 표현 – 요소 정보 항목: initial
<initial
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*
</initial>

둘 이상의 initial 요소가 같은 style property에 대해 initial value를 지정하면, 마지막으로 지정된 값(pre-traversal order)이 적용된다.

initial 요소는 다음 예제로 설명된다. 여기서는 tts:color property의 initial value가 yellow로 정의된다.

예제 조각 – initial
...
<head>
  <styling>
    <initial tts:color="yellow"/>
  <styling>
<head>
...

10.1.2 style

style 요소는 10.4.4.2 Specified Style Set Processing에 따라 specified style set으로 표현되는 style specifications의 집합을 정의하는 데 사용된다.

style 요소는 자식으로 0개 이상의 metadata 요소를 허용한다.

XML 표현 – 요소 정보 항목: style
<style
  condition = <condition>
  style = IDREFS
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*
</style>

style 요소가 region 요소의 descendant로 나타나는 경우, 그 style 요소는 10.4.1.2 Referential Styling10.4.1.3 Chained Referential Styling에서 정의한 referential styles를 계산하기 위한 목적으로 무시되어야 한다.

참고:

즉, 어떤 요소가 referential styling을 사용하여 style 요소를 참조하는 경우, 참조된 style 요소는 styling 요소의 descendant로 나타나야 하며, 다른 어떤 맥락에도 나타나서는 안 된다.

참고:

condition 속성이 style 요소에 적용되고 그 condition이 false로 평가되면, 그 nested 및 inline styles는 무시된다. 그러나 referential 또는 chained referential styling을 통해 포함될 styles는 무시되지 않는다. 자세한 내용은 10.4.4.2 Specified Style Set Processing을 참조한다.

10.1.3 styling

styling 요소는 styling matter에 적용되는 metadata를 포함하여 styling matter를 그룹화하는 데 사용되는 컨테이너 요소이다.

styling 요소는 자식으로 Metadata.class 요소 그룹에 속하는 0개 이상의 요소를 허용하고, 그 뒤에 0개 이상의 initial 요소, 그 뒤에 0개 이상의 style 요소를 허용한다.

XML 표현 – 요소 정보 항목: styling
<styling
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, initial*, style*
</styling>

time semantics가 styling 요소의 content에 적용되는 범위에서, 이 요소의 implied time interval은 root temporal extent와 coterminous한 것으로 정의된다.

10.2 스타일링 속성 어휘

이 절은 특정 animation elements, content elements, 특정 layout elements 및 style definition elements와 함께 사용되는 10.2.1 style 속성을 정의한다.

또한 이 절은 inline style specifications를 지원하는 style definition elements, 특정 layout elements 및 content elements와 함께 사용하기 위한 TT Style Namespace의 다음 속성을 지정한다.

위 visual styling attributes에 더해, 이 절은 inline style specifications를 지원하는 style definition elements 및 content elements와 함께 사용하기 위한 TT Audio Style Namespace의 다음 audio styling attributes를 지정한다.

이 절에서 정의된 각 style attribute(및 대응하는 property)는 style property definition table을 사용하며, 이는 style의 다음 측면 중 하나 이상을 지정한다. value syntax, initial value, style이 의미론적으로 적용되는 elements, style이 inherited되는지 여부, percentage values가 해석되는 방식(적용 가능한 경우), style이 animatable인지 여부(및 방식), 그리고 semantic basis(derivation).

animatable styles의 경우, discrete라는 용어는 set 요소 또는 그 <calculation-mode>discrete 값을 가진 animate 요소의 사용을 가리킨다. continuous라는 용어는 그 <calculation-mode>linear, paced, 또는 spline 값을 가진 animate 요소의 사용을 가리킨다. none이라는 용어는 style이 animatable하지 않음을 나타낸다.

참고:

이 명세는 [XSL-FO 1.1]에서 정의한 같은 이름의 properties를 기반으로 하는 style attributes에 대해 lowerCamelCased local names를 사용한다. 이 규약은 그러한 properties의 token values에도 마찬가지로 확장된다.

참고:

inheritable style property는 그 property가 해당 element type에 적용되는지 여부와 독립적으로 region 요소 또는 content element type에 specified attribute로 표현될 수 있다. 이 기능은 property가 적용되지 않는 ancestor elements에 inheritable style property를 표현할 수 있게 한다.

참고:

style attributes가 지정되는 방식과 관련하여, 특히 inheritance를 지원하기 위한 목적으로, 이 명세(및 그것이 참조하는 schemas)의 일반 구문 때문에, 저자가 어떤 element 또는 그 descendants 중 어느 것에도 적용되지 않는 non-inheritable style attribute를 실수로 지정하면서도 content validity 관점에서는 여전히 conformant인 상태로 남는 것이 가능하다. Content authors는 그러한 사용을 감지하고 warning하는 TTML content verification tools를 사용할 수 있다.

10.2.1 style

style 속성은 referential style association에 의해 각각 style(property) set을 정의하는 하나 이상의 style 요소를 참조하는 데 사용된다.

style 속성은 다음 element types의 instance가 지정할 수 있다.

지정된 경우, style 속성의 값은 [XML Schema Part 2], §3.3.10에서 정의한 IDREFS data type을 준수해야 하며, 또한 각 IDREF는 styling 요소를 ancestor로 가지는 style 요소를 참조해야 한다.

동일한 IDREF, ID1style 속성 값 안에 한 번보다 더 많이 나타나는 경우, intervening IDREF인 ID2가 있는 것이 좋으며, 여기서 ID2ID1과 같지 않다.

참고:

이 제약은 redundant referential styling의 사용을 억제하면서도, 예를 들어 IDREFS list 안에서 intervening distinct style이 참조될 때 이전에 참조된 styles를 잠재적으로 override하기 위해 같은 style을 여러 번 참조하는 것을 여전히 허용하기 위한 것이다.

참고:

style 속성의 의미론에 대한 자세한 내용은 style 속성의 사용을 허용하는 특정 element type definitions뿐 아니라 10.4.1.2 Referential Styling10.4.1.3 Chained Referential Styling을 참조한다.

10.2.2 tts:backgroundClip

tts:backgroundClip 속성은 배경이 그 안에서 칠해지는 background painting rectangle을 결정하는 style property를 지정하는 데 사용된다.

값: "border" | "content" | "padding"
초기값: border
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: backgroundClip derivation

tts:backgroundClip style은 다음 예제로 설명된다.

예제 조각 – Background Clip
<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>

예제 렌디션 – Background Clip
TTML backgroundClip style property

10.2.3 tts:backgroundColor

tts:backgroundColor 속성은 region 또는 region으로 flowed된 content가 생성한 area의 background color를 정의하는 style property를 지정하는 데 사용된다.

값: <color>
초기값: transparent
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete; continuous
의미론적 근거: backgroundColor derivation

tts:backgroundColor style은 다음 예제로 설명된다.

예제 조각 – Background Color
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:padding="3px 30px"/>
</region>
...
<p region="r1" tts:backgroundColor="purple" tts:textAlign="center">
  Twinkle, twinkle, little bat!<br/>
  How <span tts:backgroundColor="green">I wonder</span> where you're at!
</p>

예제 렌디션 – Background Color
TTML backgroundColor style property

10.2.4 tts:backgroundExtent

tts:backgroundExtent 속성은 이미지의 intrinsic extent(size)와 독립적으로 background image의 extent(size)를 지정하는 데 사용될 수 있다.

값: <extent>
초기값: auto
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: 적용 가능한 background positioning rectangle의 width와 height에 상대적
애니메이션 가능: discrete
의미론적 근거: backgroundExtent derivation

이 속성의 값이 auto이면, style property의 computed value는 연결된 background image의 intrinsic extent(size)와 같은 것으로 간주되어야 한다.

이 속성의 값이 contain이면, style property의 computed value는 [compute containment scaling] 절차를 수행하여 결정된다. 여기서 target rectangle TR은 이미지의 intrinsic width 및 height로 초기화되고, reference rectangle RRbackground positioning rectangle로 설정되며, target rectangle TR의 결과 output value가 computed value이다.

이 속성의 값이 cover이면, style property의 computed value는 [compute cover scaling] 절차를 수행하여 결정된다. 여기서 target rectangle TR은 이미지의 intrinsic width 및 height로 초기화되고, reference rectangle RRbackground positioning rectangle로 설정되며, target rectangle TR의 결과 output value가 computed value이다.

이 속성의 값이 두 개의 <measure> specifications로 구성되면, 첫 번째 specification은 computed value of this property의 width이고 두 번째 specification은 height이다. 이 경우 두 <measure> specifications는 non-negative lengths로 resolve되어야 한다(또는 resolve 가능해야 한다).

이 style property의 computed value가 이미지의 intrinsic extent(size)와 다르면, image raster는 computed extent value와 일치하도록 각 dimension에서 독립적으로 scale된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed background extent와 supported background extent 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, [0,0]으로부터 가장 먼 값, 즉 가장 큰 extent의 값이 사용된다.

closest supported value를 resolve하는 이 규칙은 nearest smaller supported distance가 아니라 nearest larger supported distance를 사용한다.

tts:backgroundExtent style은 다음 예제로 설명된다.

예제 조각 – Background Extent
<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>

예제 렌디션 – Background Extent
TTML backgroundExtent style property

10.2.5 tts:backgroundImage

tts:backgroundImage 속성은 region 또는 region으로 flowed된 content가 생성한 area의 background image로 렌더링될 background non-content image를 지정하는 style property를 지정하는 데 사용된다.

tts:backgroundImage 속성은 caption의 raster image rendering과 같이 실제 content를 표현하는 데 사용되는 content image를 참조하지 않는 것이 좋다. 대신 tts:backgroundImage의 사용은 content가 다른 수단으로 표현되는 element의 background를 styling하는 것으로 제한하는 것이 좋다. raster image를 사용하여 content를 표현해야 하는 경우에는 block 또는 inline context의 image 요소를 통해 표현하는 것이 좋다.

값: "none" | <image>
초기값: none
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: backgroundImage derivation

이 style property와 함께 사용되는 <image> expression은 외부 image resource를 직접 참조할 수 있다. 그러나 저자는 그렇게 하지 않는 것이 좋으며, 대신 resources 요소의 자식인 image만 참조하도록 사용을 제한하는 것이 좋다.

참고:

image 요소를 통해 이미지를 간접적으로 참조하면, 이미지를 embedded data resource로 지정하고, content type 등 이미지에 대한 추가 정보를 지정할 수 있다. 또한 image 요소 안에서 여러 source 자식을 사용하는 것을 활용하면, resolution specific images 및 fallback image resources를 지정할 수 있다.

background image와 연결된 element가 생성한 area의 content rectangle의 extent는 background image의 resolved extent에 의해 영향을 받지 않는다.

참고:

[SMPTE ST 2052-1] 및 그 dependent profiles와 같은 TTML1의 일부 profiles는 background image가 연결된 element가 생성한 area의 content rectangle의 extent에 영향을 준다고 지정한다. 이러한 profiles와 TTML2 사이에서 transformation할 때, 그런 background image는 tts:backgroundImage 속성이 아니라 image 요소로 매핑하는 것이 좋다.

tts:backgroundImage style은 다음 예제로 설명된다.

예제 조각 – Embedded Image Resource를 사용하는 Background Image
<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>

예제 렌디션 – Background Image
TTML backgroundImage style property

10.2.6 tts:backgroundOrigin

tts:backgroundOrigin 속성은 background가 그 안에서 positioned되는 background positioning rectangle을 결정하는 style property를 지정하는 데 사용된다.

값: "border" | "content" | "padding"
초기값: padding
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: backgroundOrigin derivation

tts:backgroundOrigin style은 다음 예제로 설명된다.

예제 조각 – Background Origin
<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>

예제 렌디션 – Background Origin
TTML backgroundOrigin style property

10.2.7 tts:backgroundPosition

tts:backgroundPosition 속성은 background image가 region 또는 region으로 flowed된 content가 생성한 area 안에서 positioned되는지 여부와 방식을 정의하는 style property를 지정하는 데 사용된다.

값: <position>
초기값: 0% 0%
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: backgroundPosition derivation

horizontal position offset에 대한 percentage value component는 background positioning rectangle의 width에서 background image의 width를 뺀 값에 상대적이다. vertical position offset에 대한 percentage value component는 background positioning rectangle의 height에서 background image의 height를 뺀 값에 상대적이다.

tts:backgroundPosition style은 다음 예제로 설명된다.

예제 조각 – Background Position
<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>

예제 렌디션 – Background Position
TTML backgroundPosition style property

10.2.8 tts:backgroundRepeat

tts:backgroundRepeat 속성은 background image가 region 또는 region으로 flowed된 content가 생성한 area 안에서 repeated(tiled)되는지 여부와 방식을 정의하는 style property를 지정하는 데 사용된다.

값: "repeat" | "repeatX" | "repeatY" | "noRepeat"
초기값: repeat
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: backgroundRepeat derivation

tts:backgroundRepeat style은 다음 예제로 설명된다.

예제 조각 – Background Repeat
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundRepeat="repeatX"/>
</region>

예제 렌디션 – Background Repeat
TTML backgroundRepeat style property

10.2.9 tts:border

tts:border 속성은 region 또는 region으로 flowed된 content가 생성한 area의 border를 정의하는 style property를 지정하는 데 사용된다.

참고:

region에 적용되는 경우, border는 region의 extent에 inset으로 적용된다. 즉 region area의 content rectangle은 region에 적용된 border의 존재로 인해 축소된다.

값: <border>
초기값: none
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete; continuous (color only)
의미론적 근거: border derivation

tts:border property의 값에 border thickness가 지정되지 않은 경우, border thickness는 medium의 thickness가 지정된 것처럼 해석되어야 한다.

이 속성과 연결된 border thickness의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed border thickness와 supported border thickness 사이의 one-dimensional Euclidean distance가 edge별로 최소화되는 값을 의미한다. 특정 edge에 대해 computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 덜 먼 값, 즉 가장 작은 border thickness가 사용된다.

tts:border property의 값에 border style이 지정되지 않은 경우, border style은 none style이 지정된 것처럼 해석되어야 한다.

이 속성과 연결된 border style의 computed value가 지원되지 않는 경우, presentation processorsolid 값을 사용해야 한다.

tts:border property의 값에 border color가 지정되지 않은 경우, border color는 element의 tts:color style property의 computed value와 같은 color가 지정된 것처럼 해석되어야 한다.

tts:border property의 값에 border radii가 지정되지 않은 경우, border radii는 0의 radii가 지정된 것처럼 해석되어야 한다.

이 속성과 연결된 border radii의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed border radii와 supported border radii가 최소화되는 값을 의미한다.

tts:border style은 다음 예제로 설명된다.

예제 조각 – Border
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:border="2px solid red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:padding="3px 30px"/>
</region>
...
<p region="r1" tts:border="4px solid green" tts:textAlign="center">
  Twinkle, twinkle, little bat!<br/>
  How <span tts:border="8px solid blue">I wonder</span> where you're at!
</p>

예제 렌디션 – Border
TTML border style property

rounding이 있는 tts:border style은 다음 예제로 설명된다.

예제 조각 – Rounding이 있는 Border
<style xml:id="roundedBorder" tts:border="2px solid lime 10px" tts:backgroundColor="black"/>
...
<div tts:color="white" tts:textAlign="center">
  <p style="roundedBorder">Border rounding on a <br/>p element.</p>
  <p>
    <span style="roundedBorder">Border rounding on span</span>
    <br/>
    <span style="roundedBorder">A shorter span</span>
  </p>
</div>

예제 렌디션 – Border rounding
TTML border style property

10.2.10 tts:bpd

tts:bpd 속성은 region으로 flowed된 content가 생성한 area의 block progression dimension, 또는 더 간단히 bpd를 지정하는 데 사용된다.

참고:

block progression dimension이라는 용어는 writing mode relative 방식으로 해석되므로, bpd는 항상 block progression direction의 거리에 대응한다. 따라서 horizontal writing modes에서는 bpd가 vertical distance를 표현하고, vertical writing mode에서는 bpd가 horizontal distance를 표현한다. 여기서 horizontal과 vertical은 항상 absolute sense로 해석된다.

값: <measure>
초기값: auto
적용 대상: body, div, p, span
상속됨: 아니요
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: bpd derivation

<measure><length> 값으로 표현되면, 이는 non-negative이어야 한다.

tts:bpd 속성이 span 요소에 지정되고, 그 요소에 적용되는 tts:display property의 computed value가 inlineBlock이 아닌 경우, tts:bpd의 semantics는 적용 가능한 background color 또는 image의 block progression dimension을 계산할 때만 적용된다. 그러나 생성된 areas의 content rectangles의 dimensions는 변경되지 않는다.

이 속성의 <length> expression에서 percentage value가 사용되면, 이는 생성된 area의 containing area(가장 가까운 ancestor area)의 적용 가능한 absolute dimension을 기준으로 resolve된다.

참고:

이 속성과 함께 사용되는 <length> expression은 특정 writing mode relative dimension과 연결되며, 그런 다음 적용 가능한 writing mode에 따라 absolute dimension으로 resolve된다. 그 absolute dimension이 vertical(horizontal)이면, percentage value는 reference area(가장 가까운 ancestor area)의 같은 vertical(horizontal) absolute dimension을 기준으로 resolve된다.

tts:bpd style은 다음 예제로 설명된다.

예제 조각 – Block Progression Dimension
<p tts:fontSize="24px" tts:lineHeight="48px" tts:bpd="96px">
  the woods are <span tts:display="inlineBlock" tts:bpd="36px">getting green</span> ...
</p>

참고:

위 예제에서 p 요소의 tts:bpd 속성은 paragraph가 생성한 block area의 content rectangle의 height에 fixed dimension을 할당하는 반면, span 요소의 tts:bpd 속성은 span이 생성한 inline block area의 content rectangle의 height에 fixed dimension을 할당한다.

10.2.11 tts:color

tts:color 속성은 region으로 flowed된 content가 생성한 area와 연결된 marks의 foreground color를 정의하는 style property를 지정하는 데 사용된다.

값: <color>
초기값: 아래 설명 참조
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete; continuous
의미론적 근거: color derivation

tts:color property의 initial value는 implementation dependent인 것으로 간주된다. end-user preference information이 없을 때, conformant presentation processorroot container region의 background color와 매우 대비되는 initial value를 사용하는 것이 좋다.

tts:color style은 다음 예제로 설명된다.

예제 조각 – Color
<region xml:id="r1">
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  In spring, when woods are <span tts:color="green">getting green</span>,<br/>
  I'll try and tell you what I mean.
</p>

예제 렌디션 – Color
TTML color style property

10.2.12 tts:direction

tts:direction 속성은 사용 맥락에 따라 (1) bidirectional paragraph level, 또는 (2) bidirectional embedding 또는 override의 directionality를 결정하는 style property를 지정하는 데 사용된다. 이에 대해서는 [UAX9]를 참조한다.

값: "ltr" | "rtl"
초기값: ltr
적용 대상: p, span
상속됨: 예, 그러나 special semantics 참조
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: direction derivation

p 요소에 적용될 때, 이 property의 computed value는 [UAX9], §4.3, Higher Level Protocol HL1에서 지정한 paragraph level을 명시적으로 설정한다.

span 요소(또는 anonymous span)에 적용될 때, 이 property의 computed value는 tts:unicodeBidi style property의 computed value와 결합하여 [UAX9], §4.3, Higher Level Protocol HL3에서 지정한 bidirectional embedding 또는 override의 directionality를 결정한다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorltr 값을 사용해야 한다.

tts:direction style은 다음 예제로 설명된다.

예제 조각 – Direction
<p>
The title of the book is
"<span tts:unicodeBidi="embed" tts:direction="rtl">نشاط التدويل، W3C</span>"
</p>

예제 렌디션 – Direction
TTML direction style property
10.2.12.1 Direction의 특수 의미론

style resolution processing을 수행할 때(10.4.4 Style Resolution Processing 참조), region 요소 R에서 tts:direction의 computed value resolution은 다음 순서가 있는 규칙에 따라 결정되며, 처음 적용 가능한 규칙이 적용된다.

  1. tts:direction 속성이 R에 지정되어 있으면, computed value tts:direction은 지정된 값이다.

  2. tts:writingMode 속성이 R에 지정되어 있으면, computed value tts:directionRtts:writingMode computed value에 의해 결정되는 inline progression direction이다.

  3. 그렇지 않으면 tts:direction의 computed value는 initial value이다.

참고:

위와 같이 결정된 region 요소에서의 tts:direction computed value는 region style inheritance semantics의 대상이 되는 elements가 상속하는 tts:direction 값이 된다.

다른 모든 요소 E의 경우, 여기서 Eregion 요소가 아니라면, tts:writingMode 속성의 존재 여부는 Etts:direction computed value resolution에 영향을 주지 않는다.

10.2.13 tts:disparity

tts:disparity 속성은 stereopsis(stereoscopic depth)를 시뮬레이션하기 위해 적용될 binocular disparity를 지정하는 데 사용된다. 0의 disparity는 display plane에 해당하며, 음수 값은 display plane 앞쪽의 depth에 해당하고, 양수 값은 display plane 뒤쪽의 depth에 해당한다. disparity와 perceived depth 사이의 관계에 대한 자세한 내용은 [SMITH]를 참조한다.

값: <length>
초기값: 0px
적용 대상: region; divp에 대해서는 special usage 참조
상속됨: 아니요
백분율: root container region의 width에 상대적
애니메이션 가능: discrete; continuous
의미론적 근거: disparity derivation

stereoscopic image pair의 오른쪽(왼쪽) image에 region을 렌더링할 때, region의 center는 horizontal axis를 따라 tts:disparity computed value의 ½(-½)에 해당하는 값만큼 offset된다. 여기서 양의 offset은 오른쪽이고, 음의 offset은 왼쪽이다.

stereoscopic image pair에 렌더링하지 않는 한, tts:disparity 속성은 presentation processing의 목적으로 무시된다.

저자는 region이 보이는 전체 시간 동안 region의 perceived depth가 scene의 어떤 object보다 앞에 위치하도록 보장하는 것이 좋다. scene의 object가 region 앞에 있다고 perceive되면 stereoscopic effect가 깨진다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed disparity와 supported disparity 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 덜 먼 값이 사용된다.

참고:

일반적으로 stereoscopic content의 presentation은 sub-pixel(anti-aliasing) rendering techniques의 사용에 의존한다. 따라서 disparity adjusted positions를 integral value로 quantize하는 구현은 바람직하지 않은 부작용을 만들 수 있다. 이는 특히 smooth animation of disparity가 적용될 때, 예를 들어 저자가 subject와 그 associated text 사이에 일정한 거리를 유지하려고 할 때 문제가 된다.

tts:disparity style은 다음 example fragment와 rendition으로 설명된다. 일반적인 television scenarios에서 disparity는 screen width의 -1%에서 2% 범위라는 점에 유의한다. 5%의 disparity를 사용하는 이 예제는 illustration의 명확성을 위해 disparity의 효과를 과장한다.

예제 조각 – Disparity
<region xml:id="r1">
  <style tts:extent="80% 10%"/>
  <style tts:origin="10% 10%"/>
  <style tts:disparity="5%"/>
	...
</region>
...
<p region="r1">
  Stereoscopic
</p>

예제 렌디션 – Disparity (Left and Right Images)
TTML disparity style property
10.2.13.1 Disparity의 특수 사용

tts:disparity가 예외적으로 div 또는 p에 지정되면, 11.1.2.1 Special Semantics of Inline Animation이 적용된다.

10.2.14 tts:display

tts:display 속성은 element가 region 안에서 layout 및 composition의 candidate인지 여부를 정의하는 style property를 지정하는 데 사용된다.

값: "auto" | "none" | "inlineBlock"
초기값: auto
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: display derivation

이 속성의 값이 auto이면, affected element는 region layout 및 presentation의 candidate이다. 그러나 값이 none이면, affected element와 그 descendants는 region layout 및 presentation에 부적격한 것으로 간주되어야 한다.

이 속성의 값이 inlineBlock이고 이 속성이 span 요소에 적용되면, inline block display semantics가 적용되며 그 요소는 region layout 및 presentation의 candidate이다. 또한 inlineBlock 값이 span 요소가 아닌 어떤 요소에 적용되면 error로 간주된다.

tts:display style은 다음 예제로 설명된다.

예제 조각 – Display
<region xml:id="r1">
  <style tts:extent="369px 119px"
            tts:backgroundColor="black"
            tts:color="white"
            tts:displayAlign="before"
            tts:textAlign="start"/>
</region>
...
<div region="r1">
  <p dur="5s">
    [[[
    <span tts:display="none">
      <set begin="1s" dur="1s" tts:display="auto"/>
      Beautiful soup,
    </span>
    <span tts:display="none">
      <set begin="2s" dur="1s" tts:display="auto"/>
      so rich and green,
    </span>
    <span tts:display="none">
      <set begin="3s" dur="1s" tts:display="auto"/>
      waiting in a hot tureen!
    </span>
    ]]]
  </p>
</div>

예제 렌디션 – Display
TTML display style property - [0,1)
TTML display style property - [1,2)
TTML display style property - [2,3)
TTML display style property - [3,4)
TTML display style property - [4,5)

10.2.15 tts:displayAlign

tts:displayAlign 속성은 block progression direction에서 block areas의 alignment를 정의하는 style property를 지정하는 데 사용된다.

값: "before" | "center" | "after" | "justify"
초기값: before
적용 대상: body, div, p, region
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: displayAlign derivation

이 속성의 값이 justify이면, block progression dimension의 (unused) available space는 이 속성이 적용되는 element가 생성한 block area의 block area children 사이에 균등하게 분배된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorbefore 값을 사용해야 한다.

tts:displayAlign style은 다음 예제로 설명된다.

예제 조각 – Display Align
<region xml:id="r1">
  <style tts:extent="128px 66px" tts:origin="0px 0px"
       tts:backgroundColor="black" tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:extent="192px 66px" tts:origin="128px 66px"/>
       tts:backgroundColor="green" tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r3">
  <style tts:extent="128px 66px"/> style tts:origin="0px 132px"
       tts:backgroundColor="black" tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r4">
  <style tts:extent="192px 66px" tts:origin="128px 198px"/>
       tts:backgroundColor="green" tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="start"/>
</region>
...
<div>
  <p region="r1">I sent a message to the fish:</p>
  <p region="r2">I told them<br/> "This is what I wish."</p>
  <p region="r3">The little fishes of the sea,</p>
  <p region="r4">They sent an<br/> answer back to me.</p>
</div>

예제 렌디션 – Display Align
TTML displayAlign style property

10.2.16 tts:extent

tts:extent 속성은 다음 목적을 위해 사용될 수 있다.

  1. root container regionwidthheight를 지정하는 것. 이는 document coordinate space를 정의하는 효과가 있으며, 이에 대해서는 H.3 Coordinate Space를 참조한다.

  2. content regionwidthheight를 지정하거나 override하는 것.

  3. 이미지의 intrinsic extent를 override하면서 이미지의 widthheight를 지정하는 것.

참고:

border 또는 padding 중 하나(또는 둘 다)가 region에 적용되면, region의 extent는 그 border 및 padding을 포함한다. 즉 border와 padding은 모두 inset으로 적용되며, 따라서 region의 extent 내부에 있다.

값: <extent>
초기값: auto
적용 대상: tt, region, image; divp에 대해서는 special usage 참조
상속됨: 아니요
백분율: root container region의 width 및 height에 상대적
애니메이션 가능: discrete
의미론적 근거: extent derivation

tts:extent 속성이 tt 요소에 지정되면, 지정된 값은 다음 중 하나로 제한된다. (1) auto keyword, (2) contain keyword, 또는 (3) 두 개의 <length> specifications. 여기서 이러한 specifications는 pixel units를 사용한 non-percentage, definite lengths로 표현된다. 다른 모든 syntactically legal values는 이 맥락에서 사용해서는 안 되며, 사용되면 validation processing의 목적으로 error로 간주되어야 하고, presentation processing의 목적으로는 무시되어야 한다. 이 경우 initial value(auto)가 적용된다.

tts:extent 속성이 region 요소에 지정되면, 그 computed value는 연결된 content regionwidthheight를 결정한다.

tts:extent 속성이 image 요소에 지정되면, 그 computed value는 image의 widthheight를 결정한다.

tts:extent 속성이 div 또는 p 요소에 지정되면, 10.2.16.1 Special Usage of Extent에서 지정한 semantics가 적용된다.

이 속성의 값이 auto이면, 그 associated property의 computed value는 다음과 같이 결정된다.

  1. property가 tt 요소에 적용되면, autocontain 값이 지정된 것처럼 해석된다.

  2. property가 직접 또는 간접적으로 region 요소에 적용되면, auto는 "100% 100%" 값이 지정된 것처럼 해석된다.

  3. property가 image 요소에 적용되면, auto는 예를 들어 "200px 100px"처럼 두 개의 pixel-based <length> components를 사용하여 image의 intrinsic extent와 같은 값이 지정된 것처럼 해석된다.

참고:

이 속성은 단일 keyword "auto"로 구성된 값과 두 keyword "auto auto"로 구성된 다른 값을 허용한다. 이 두 값은 서로 다른 의미를 가지며 동등하지 않다. 특히 단일 keyword 값 "auto"는 바로 위에서 설명한 semantics를 가진다. 그러나 두 keyword 값 "auto auto"는 두 개의 <measure> expressions로 구성되며, 각각은 10.3.24 <measure>에서 정의한 <measure> keyword auto를 사용한다.

이 속성의 값이 contain이면, 그 associated property의 computed value는 다음과 같이 결정된다.

  1. property가 tt 요소에 적용되면, containH Root Container Region Semantics에 지정된 대로 해석된다.

  2. property가 region 요소에 적용되면, computed value는 [compute containment scaling] 절차를 수행하여 결정된다. 여기서 target rectangle TR은 region content의 intrinsic block content extent로 초기화되고, reference rectangle RRroot container region의 extent로 설정되며, target rectangle TR의 결과 output value가 computed value이다.

  3. property가 image 요소에 적용되면, computed value는 [compute containment scaling] 절차를 수행하여 결정된다. 여기서 target rectangle TR은 image의 intrinsic image extent로 초기화되고, reference rectangle RR은 현재 formatting context가 각각 block formatting context인지 inline formatting context인지에 따라 containing block area 또는 line area의 available content space로 설정되며, target rectangle TR의 결과 output value가 computed value이다.

이 속성의 값이 cover이면, 그 associated property의 computed value는 다음과 같이 결정된다.

  1. property가 region 요소에 적용되면, computed value는 [compute cover scaling] 절차를 수행하여 결정된다. 여기서 target rectangle TR은 region content의 intrinsic block content extent로 초기화되고, reference rectangle RRroot container region의 extent로 설정되며, target rectangle TR의 결과 output value가 computed value이다.

  2. property가 image 요소에 적용되면, computed value는 [compute cover scaling] 절차를 수행하여 결정된다. 여기서 target rectangle TR은 image의 intrinsic image extent로 초기화되고, reference rectangle RR은 현재 formatting context가 각각 block formatting context인지 inline formatting context인지에 따라 containing block area 또는 line area의 available content space로 설정되며, target rectangle TR의 결과 output value가 computed value이다.

이 속성의 값이 두 개의 <measure> specifications로 구성되면, 그것들은 widthheight로 해석되어야 한다. 여기서 첫 번째 specification은 width이고, 두 번째 specification은 height이다. 이 경우 두 <measure> specifications는 non-negative lengths로 resolve되어야 한다(또는 resolve 가능해야 한다).

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed extent와 supported extent 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, [0,0]으로부터 가장 먼 값, 즉 greatest extent의 값이 사용된다.

closest supported value를 resolve하는 이 규칙은 nearest smaller supported distance가 아니라 nearest larger supported distance를 사용한다. 이러한 처리 차이에 대한 rationale은 더 큰 extent를 사용하면 affected content가 region overflow를 일으키지 않고 region area 안에 포함되도록 보장하는 반면, 더 작은 extent를 사용하면 region overflow 가능성이 더 커지기 때문이다.

tts:extent style은 다음 예제로 설명된다.

예제 조각 – Extent
<region xml:id="r1">
  <style tts:extent="330px 122px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  'Tis the voice of the Lobster:<br/>
  I heard him declare,<br/>
  "You have baked me too brown,<br/>
  I must sugar my hair."
</p>

예제 렌디션 – Extent
TTML extent style property
10.2.16.1 Extent의 특수 사용

tts:extent가 예외적으로 div 또는 p에 지정되면, 11.1.2.1 Special Semantics of Inline Animation이 적용된다.

10.2.17 tts:fontFamily

tts:fontFamily 속성은 region으로 flowed된 content가 생성한 glyph areas에 대해 glyphs가 선택되는 font family를 정의하는 style property를 지정하는 데 사용된다.

값: <font-families>
초기값: default
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: fontFamily derivation

참고:

initial value인 default는 generic font family name이며, 아래 10.3.19 <generic-family-name>에서 추가로 설명된다.

span에 적용되는 것에 더해, 이 property의 computed value는 p 요소에서 tts:lineHeight 속성과 연결된 style property의 normal 값을 10.2.27 tts:lineHeight에 지정된 대로 resolve하는 데 사용된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 computed font family를 유사한 typographic characteristics를 가진 지원되는 font family에 매핑하려고 시도해야 하며, 그러한 매핑이 없으면 default 값을 사용해야 한다.

tts:fontFamily style은 다음 예제로 설명된다.

예제 조각 – Font Family
<region xml:id="r1">
  <style tts:extent="474px 146px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="start"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<div region="r1">
  <p>
    "The time has come," the Walrus said,<br/>
    "to talk of many things:
  </p>
  <p tts:textAlign="end" tts:fontFamily="monospaceSerif">
    Of shoes, and ships, and sealing wax,<br/>
    Of cabbages and kings,
  </p>
  <p>
    And why the sea is boiling hot,<br/>
    and whether pigs have wings."
  </p>
</div>

예제 렌디션 – Font Family
TTML fontFamily style property

10.2.18 tts:fontKerning

tts:fontKerning 속성은 glyph areas를 positioning할 때 font kerning이 적용되는지 여부를 결정하는 style property를 지정하는 데 사용된다.

값: "none" | "normal"
초기값: normal
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: fontKerning derivation

이 속성의 값이 normal이면, kerning data가 사용 가능할 경우 kerning을 적용하는 것이 좋다. 이 속성의 값이 none이면, kerning data가 사용 가능한지 여부와 관계없이 kerning을 적용하지 않는 것이 좋다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornormal 값을 사용해야 한다.

tts:fontKerning style은 다음 예제로 설명된다.

예제 조각 – Font Kerning
<p>
  WAVE<br/>
  <span tts:fontKerning="none">WAVE</span>
</p>

예제 렌디션 – Font Kerning
TTML fontKerning style property

10.2.19 tts:fontSelectionStrategy

tts:fontSelectionStrategy 속성은 presentation processing 중 가능한 fonts의 목록에서 font를 선택할 때 적용될 strategy를 결정하는 style property를 지정하는 데 사용된다.

값: "auto" | "character"
초기값: auto
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: fontSelectionStrategy derivation

이 property의 presentation semantics는 [XSL-FO 1.1], §7.9.3에서 정의한 것이며, selection criteria의 집합은 다음 properties를 포함하도록 확장된다.

font selection criteria를 만족하는 font resources 중에서 선택할 때, font 요소가 참조하는 font resources는 application 또는 system supplied font resources보다 우선한다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorauto 값을 사용해야 한다.

tts:fontSelectionStrategy style은 다음 예제로 설명된다.

예제 조각 – Font Selection Strategy
<p tts:fontFamily="font1,font2">
  <span tts:fontSelectionStrategy="character">&#xE000;&#x20DD;</span>
</p>

참고:

위 예제에서 font1 font family와 연결된 font resource가 단일 문자 &#xE000;을 매핑하는 glyph는 포함하지만, 전체 contextual character sequence &#xE000;&#x20DD; 또는 단일 문자 &#x20DD; 중 어느 것도 매핑하는 glyph는 포함하지 않는다고 가정한다. 또한 font2 font family와 연결된 font resource가 complete contextual character sequence에 대한 mapping과 단일 문자 &#x20DD;에 대한 mapping을 포함한다고 가정한다.

저자가 font2를 통한 complete contextual character sequence에 대한 mapping을 받아들이려는 경우, auto 값이 사용된다(명시적으로 또는 initial value defaulting에 의해). 그러나 저자가 &#xE000;font1을 통해 매핑되고 &#x20DD;font2를 통해 매핑되기를 원한다면, character 값이 지정된다. 이 예제에서 저자는 후자의 동작을 원하므로 character 값을 지정한다.

10.2.20 tts:fontShear

tts:fontShear 속성은 glyph areas에 shear transformation이 적용되는지 여부와 방식을 결정하는 style property를 지정하는 데 사용된다.

값: <percentage>
초기값: 0%
적용 대상: span
상속됨:
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: fontShear derivation

이 속성이 적용되는 각 glyph area에 대해, 10.4.5.3 Shear Calculations에 지정된 대로 glyph area에 2D shear transformation을 적용한다.

tts:fontShear style은 다음 예제로 설명된다.

예제 조각 – Font Shear
<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>

예제 렌디션 – Font Shear
TTML fontShear style property
예제 조각 – 음수 값을 포함한 Font Shear
<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>

예제 렌디션 – 음수 값을 포함한 Font Shear
TTML fontShear style property

10.2.21 tts:fontSize

tts:fontSize 속성은 region으로 flowed된 content가 생성한 glyph areas에 대해 선택되는 glyphs의 font size를 정의하는 style property를 지정하는 데 사용된다.

값: <font-size>
초기값: 1c
적용 대상: span
상속됨: 예, 단 10.2.21.1 Special Semantics of Font Size는 예외
백분율: region 요소가 아니면, 가장 가까운 조상 styled element의 computed font size에 상대적이다. 그렇지 않으면 computed cell size에 상대적이다.
애니메이션 가능: discrete
의미론적 근거: fontSize derivation

단일 <length> 값이 지정되면, 이 length는 glyph의 EM square의 horizontal 및 vertical size를 동일하게 결정한다. 두 개의 <length> 값이 지정되면, 첫 번째는 horizontal size를 결정하고 두 번째는 vertical size를 결정한다.

horizontal 및 vertical sizes가 독립적으로 표현되는 경우, <length> 값의 단위는 동일해야 한다.

참고:

glyph의 EM square는 관례적으로 그 glyph를 포함하는 font의 EM square로 정의된다. 즉, glyphs는 해당 font의 EM square와 구별되는 별도의 EM square를 가지지 않는다.

이 속성에 나타나는 Relative <length> values, 즉 percentage(%), cell(c), 또는 EM(em) units로 표현된 values는 width component와 height component라는 두 components로 구성된 참조된 2-dimensional size value와 관련하여 resolve된다. relative unit이 percentage인 경우, 참조된 값은 가장 가까운 styled ancestor element의 font size의 computed value 또는 computed cell size 중 하나이다. relative unit이 cells(c)이면, 참조된 값은 computed cell size이다. relative unit이 EMs(em)이면, 참조된 값은 percentage units가 사용된 것처럼 결정되며, 여기서 1em100%와 같다.

단일 relative <length> 값이 지정되면, 이 <length>는 참조된 값의 height component를 기준으로 resolve된다. 두 개의 relative <length> 값이 지정되면, 첫 번째 <length>는 참조된 값의 width component를 기준으로 resolve되고, 두 번째 <length>는 참조된 값의 height component를 기준으로 resolve된다.

참고:

Anamorphic font scaling, 즉 독립적이고 서로 다른 horizontal 및 vertical sizes로 scale된 fonts는 저자가 narrow 또는 wide font face를 합성하려는 경우, 저자가 non-square cell units를 기반으로 font sizes를 사용하려는 경우 등 여러 맥락에서 사용될 것으로 예상된다.

참고:

Presentation processors는 font resource에 정의된 EM square의 height가 computed font size height와 일치하도록, font에 적절한 algorithm을 사용하여 glyphs를 scale할 것으로 예상된다. anamorphic font scaling이 사용되는 경우, 즉 computed font size width가 computed font size height와 다르면, presentation processors는 추가로 width 대 height의 ratio에 따라 EM square를 anamorphically scale하고, 더 나아가 presentation되는 glyphs도 같은 ratio로 scale되도록 보장할 것으로 예상된다.

font size를 표현하는 데 사용되는 <length> value(s)는 non-negative이어야 한다.

이 속성의 값이 <length> component에 c unit을 지정하는 경우, 이는 10.3.22 <length>에서 정의한 cell length unit의 height(only) 또는 width와 height(both)를 기준으로 resolve된다. 즉 computed cell size를 기준으로 한다.

참고:

예를 들어 paragraph(p) 요소 P를 고려한다. computed cell size가 (24px,36px)이고 tts:fontSize="1c"P에 지정되면, tts:fontSize의 computed value는 (36px,36px)로 resolve된다. 반면 tts:fontSize="1c 1c"P에 지정되면, computed value는 (24px,36px)로 resolve된다.

이 속성의 값이 <length> component에 em unit을 지정하는 경우, 이는 동등한 percentage value가 지정된 것처럼 처리되며, 여기서 1em100%와 같다.

참고:

예를 들어 paragraph(p) 요소 P의 자식인 span 요소 S를 고려한다. Ptts:fontSize computed value가 (18px,24px)이고 tts:fontSize="1em"S에 지정되면, 이는 100%를 지정하는 것과 동등하며, (24px,24px)로 resolve된다. 그러나 tts:fontSize="1em 1em"S에 지정되면, 이는 100% 100%를 지정하는 것과 동등하며 (18px,24px)로 resolve된다.

span에 적용되는 것에 더해, 이 property의 computed value는 p 요소에서 tts:lineHeight 속성과 연결된 style property의 normal 값을 10.2.27 tts:lineHeight에 지정된 대로 resolve하는 데 사용된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed font size와 supported font size 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0(단일 length specification) 또는 [0,0](두 length specifications)으로부터 가장 먼 값, 즉 가장 큰 font size가 사용된다.

tts:fontSize style은 다음 예제로 설명된다.

예제 조각 – Font Size
<region xml:id="r1">
  <style tts:extent="299px 97px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="18px"/>
</region>
...
<p region="r1">
  Then fill up the glasses<br/>
  with treacle and ink,<br/>
  Or anything else<br/>
  that is <span tts:fontSize="24px">pleasant</span> to drink.
</p>

예제 렌디션 – Font Size
TTML fontSize style property
10.2.21.1 Font Size의 특수 의미론

이 속성과 연결된 property의 computed value는 2-tuple로 구성되며, 그 entries는 각각 font size의 width 및 height components의 computed values를 나타낸다.

tts:ruby의 computed value가 textContainer 또는 textspan 요소에 적용될 때, tts:fontSize의 computed value를 resolve할 때 다음 special inheritance rules가 적용된다.

ruby text containerexplicit인지 implied인지와 관계없이 부모로부터 tts:fontSize를 상속하지 않는다. 대신 그것이 explicit ruby text container이고 tts:fontSize 속성을 지정하지 않았거나, 또는 implied ruby text container이면, 가장 가까운 조상 ruby container에서의 tts:fontSize computed value의 50%와 같은 값이 적용된다. 그렇지 않으면 지정된 값이 적용된다.

tts:ruby의 computed value가 textspan 요소가 tts:fontSize 속성을 지정하지 않은 경우, 그것이 explicit인지 implied ruby text container인지와 관계없이 부모 ruby text container로부터 tts:fontSize의 computed value를 상속한다.

10.2.22 tts:fontStyle

tts:fontStyle 속성은 region으로 flowed된 content가 생성한 glyph areas에 대해 선택되는 glyphs에 적용할 font style을 정의하는 style property를 지정하는 데 사용된다. 여기서 font style value에서 특정 font face 또는 style parameterization으로의 mapping은 이 명세에 의해 결정되지 않는다.

값: "normal" | "italic" | "oblique"
초기값: normal
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: fontStyle derivation

oblique 값의 사용은 inline progression direction에서 shear transformation(지정되지 않은 angle)을 나타낸다.

span에 적용되는 것에 더해, 이 property의 computed value는 p 요소에서 tts:lineHeight 속성과 연결된 style property의 normal 값을 10.2.27 tts:lineHeight에 지정된 대로 resolve하는 데 사용된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornormal 값을 사용해야 한다.

tts:fontStyle style은 다음 예제로 설명된다.

예제 조각 – Font Style
<region xml:id="r1">
  <style tts:extent="331px 84px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  In autumn, when the leaves are brown,<br/>
  Take pen and ink, and <span tts:fontStyle="italic">write it down.</span>
</p>

예제 렌디션 – Font Style
TTML fontStyle style property

10.2.23 tts:fontVariant

tts:fontVariant 속성은 typographic glyph variants의 선택을 가능하게 하는 데 사용된다.

값: <font-variant>
초기값: normal
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: fontVariant derivation

span에 적용되는 것에 더해, 이 property의 computed value는 p 요소에서 tts:lineHeight 속성과 연결된 style property의 normal 값을 10.2.27 tts:lineHeight에 지정된 대로 resolve하는 데 사용된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornormal 값을 사용해야 한다.

tts:fontVariant style은 다음 예제로 설명된다.

예제 조각 – Font Variant
<region xml:id="r1">
  <style tts:extent="376px 95px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  jumping <span tts:fontVariant="super">up</span> and
  <span tts:fontVariant="sub">down</span> in an agony of terror.
</p>

예제 렌디션 – Font Variant
TTML fontVariant style property

10.2.24 tts:fontWeight

tts:fontWeight 속성은 region으로 flowed된 content가 생성한 glyph areas에 대해 선택되는 glyphs에 적용할 font weight를 정의하는 style property를 지정하는 데 사용된다. 여기서 font weight value에서 특정 font face 또는 weight parameterization으로의 mapping은 이 명세에 의해 결정되지 않는다.

값: "normal" | "bold"
초기값: normal
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: fontWeight derivation

span에 적용되는 것에 더해, 이 property의 computed value는 p 요소에서 tts:lineHeight 속성과 연결된 style property의 normal 값을 10.2.27 tts:lineHeight에 지정된 대로 resolve하는 데 사용된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornormal 값을 사용해야 한다.

tts:fontWeight style은 다음 예제로 설명된다.

예제 조각 – Font Weight
<region xml:id="r1">
  <style tts:extent="376px 95px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  They told me you had been to her,<br/>
  <span tts:fontWeight="bold">and mentioned me to him:</span><br/>
  She gave me a good character<br/>
  <span tts:fontWeight="bold">but said I could not swim.</span>
</p>

예제 렌디션 – Font Weight
TTML fontWeight style property

10.2.25 tts:ipd

tts:ipd 속성은 region으로 flowed된 content가 생성한 area의 inline progression dimension, 또는 더 간단히 ipd를 지정하는 데 사용된다.

참고:

inline progression dimension이라는 용어는 writing mode relative 방식으로 해석되므로, ipd는 항상 inline progression direction의 거리에 대응한다. 따라서 horizontal writing modes에서는 ipd가 horizontal distance를 표현하고, vertical writing mode에서는 ipd가 vertical distance를 표현한다. 여기서 horizontal과 vertical은 항상 absolute sense로 해석된다.

값: <measure>
초기값: auto
적용 대상: body, div, p, span
상속됨: 아니요
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: ipd derivation

<measure><length> 값으로 표현되면, 이는 non-negative이어야 한다.

tts:ipd 속성이 span 요소에 지정되고, 그 요소에 적용되는 tts:display property의 computed value가 inlineBlock이 아닌 경우, tts:ipd의 semantics는 적용 가능한 background color 또는 image의 inline progression dimension을 계산할 때만 적용된다. 그러나 생성된 areas의 content rectangles의 dimensions는 변경되지 않는다.

이 속성의 <length> expression에서 percentage value가 사용되면, 이는 생성된 area의 containing area(가장 가까운 ancestor area)의 적용 가능한 absolute dimension을 기준으로 resolve된다.

참고:

이 속성과 함께 사용되는 <length> expression은 특정 writing mode relative dimension과 연결되며, 그런 다음 적용 가능한 writing mode에 따라 absolute dimension으로 resolve된다. 그 absolute dimension이 horizontal(vertical)이면, percentage value는 reference area(가장 가까운 ancestor area)의 같은 horizontal(vertical) absolute dimension을 기준으로 resolve된다.

tts:ipd style은 다음 예제로 설명된다.

예제 조각 – Inline Progression Dimension
<p tts:fontSize="24px" tts:lineHeight="48px" tts:ipd="300px">
  the woods are <span tts:display="inlineBlock" tts:ipd="150px">getting green</span> ...
</p>

참고:

위 예제에서 p 요소의 tts:ipd 속성은 paragraph가 생성한 block area의 content rectangle의 width에 fixed dimension을 할당하는 반면, span 요소의 tts:ipd 속성은 span이 생성한 inline block area의 content rectangle의 width에 fixed dimension을 할당한다.

10.2.26 tts:letterSpacing

tts:letterSpacing 속성은 glyph areas 사이의 nominal distance를 증가시키거나 감소시키는 style property를 지정하는 데 사용된다.

Letter spacing은 line area의 시작 또는 끝에서는 영향을 주지 않으며, zero-advance glyphs에는 적용되어서는 안 된다. 또한 letter spacing은 일반적으로 연결된 glyphs, 예를 들어 cursive scripts에서 사용되거나 cursive fonts와 함께 사용되는 glyphs가 끊어지게 해서는 안 된다.

Letter spacing은 kerning 및 justification과 독립적으로 적용된다. 사용 중인 font(s), presentation되는 script(s), 그리고 presentation processor의 capabilities에 따라 kerning과 justification 중 하나 또는 둘 모두가 letter spacing에 더해 적용될 수 있다.

값: "normal" | <length>
초기값: normal
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: letterSpacing derivation

normal 값은 0의 <length> 값을 지정하는 것에 해당한다. 즉 adjacent glyph spacing을 expand하지도 compress하지도 않는다.

<length> 값이 positive scalar로 표현되면, adjacent glyphs 사이의 spaces는 해당 scalar value와 같은 추가량만큼 확장된다. negative scalar로 표현되면, adjacent glyphs 사이의 spaces는 해당 scalar value와 같은 추가량만큼 압축되며, 그 결과 glyph areas가 겹칠 수 있다. 이는 effective advance가 0이 되는 최대량까지 가능하다.

이 속성과 연결된 letter spacing의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed letter spacing과 supported letter spacing 사이의 one-dimensional Euclidean distance가 최소화되는 값을 의미한다. 특정 edge에 대해 computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 덜 먼 값이 사용된다.

tts:letterSpacing style은 다음 예제로 설명된다.

예제 조각 – Letter Spacing
<p>
  WAVE<br/>
  <span tts:letterSpacing="20px">WAVE</span>
</p>

예제 렌디션 – Letter Spacing
TTML letterSpacing style property

10.2.27 tts:lineHeight

tts:lineHeight 속성은 region으로 flowed된 content가 생성한 line areas 사이의 inter-baseline separation을 정의하는 style property를 지정하는 데 사용된다.

참고:

예외적으로, token lineHeight 안의 height라는 용어 또는 line height라는 구는 associated line area의 block progression dimension에 대응하는 axis를 가리킨다. 이는 horizontal writing modes에서는 vertical axis이지만, vertical writing modes에서는 horizontal axis이다.

참고:

line height와 관련된 추가 정보는 11.3.2.2 Line Stacking을 참조한다.

값: "normal" | <length>
초기값: normal
적용 대상: p
상속됨: 예, 그러나 special semantics 참조
백분율: 이 element의 font size에 상대적
애니메이션 가능: discrete
의미론적 근거: lineHeight derivation

참고:

p elements에 명시적으로 적용되는 것에 더해, p 요소의 descendants인 span element 및 anonymous span이 상속하는 이 style property의 값은 그들이 생성한 inline areashalf leading을 계산하는 데 사용된다. 이에 대해서는 [XSL-FO 1.1], §4.5 및 [CSS2], §10.8.1을 참조한다.

이 속성의 값이 normal이면, 이 style property의 used value는 다음과 같이 결정된다.

  1. P를 이 style property가 적용되는 p 요소라고 하자.

  2. FFPtts:fontFamily style property의 computed value라고 하자.

  3. FSPtts:fontSize style property의 computed value라고 하자.

  4. F0FF의 각 font family를 available fonts의 집합에 순차적으로 mapping할 때 얻어지는 첫 번째 font라고 하자. 여기서 이 available fonts 집합은 필요에 따라 Ptts:fontStyle, tts:fontWeight, 및 tts:fontVariant style properties의 computed values를 만족하도록 제한된다.

  5. F0가 altitude A, depth D, 및 line gap G를 지정하는 font metrics와 연결되어 있으면, LH를 scaled(A), scaled(D), 및 scaled(G)의 합으로 설정한다. 여기서 scaled(X)는 font size FS에 따라 scaling된 font metric X를 나타낸다.

    참고:

    여기서 참조된 altitude, depth, 및 line gap parameters는 OpenType [OFF] font의 OS/2 table에 있는 sTypoAscender, -sTypoDescender, 즉 sTypoDescender에 -1을 곱한 값, 및 sTypoLineGap fields(또는 다른 font formats의 동등한 항목)에 대응하도록 의도된다. 또한 일반적으로 expressions scaled(A) 및 scaled(D)는 [XSL-FO 1.1]에서 associated properties text-altitudetext-depth와 함께 use-font-metrics 값이 사용될 때 사용하는 text-altitudetext-depth area traits에 각각 대응하도록 의도된다.

  6. 그렇지 않으면 LH는 implementation dependent인 것으로 간주된다. 그러나 implementation specific requirements가 없는 경우, LHFS의 125%로 설정하는 것이 권장된다.

  7. 이 style property의 used valueLH로 설정한다.

참고:

content author가 available fonts의 집합 차이 등으로 인해 normal에 대한 서로 다른 해석 가능성을 피하고자 한다면, line height value를 명시적으로 지정하기 위해 <length> value expression을 사용하는 것이 권장된다.

위 algorithm이 [XSL-FO 1.1][CSS2]와 호환되도록 하는 것이 이 명세의 의도이다.

<length>로 지정되는 경우, 그 length는 non-negative이어야 한다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed line height와 supported line height 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 먼 값, 즉 가장 큰 line height가 사용된다.

tts:lineHeight style은 다음 예제로 설명된다.

예제 조각 – Line Height
<region xml:id="r1">
  <style tts:extent="255px 190px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="start"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="16px"/>
  <style tts:lineHeight="32px"/>
</region>
...
<p region="r1">
  He thought he saw an elephant,<br/>
  That practised on a fife:<br/>
  He looked again, and found it was<br/>
  A letter from his wife.<br/>
  "At length I realise," he said,<br/>
  "The bitterness of Life.
"</p>

예제 렌디션 – Line Height
TTML lineHeight style property
10.2.27.1 Line Height의 특수 의미론

이 속성의 specified value가 normal이면, computed value는 specified value이다. 따라서 inheritance semantics를 적용할 때 normal 값은 inherited value이다. 그러나 이 computed value가 paragraph layout을 수행하는 데 사용될 때는, 위에서 설명한 대로 used value를 얻기 위해 추가로 처리된다.

10.2.28 tts:lineShear

tts:lineShear 속성은 p 요소가 생성한 각 line areas에 shear transformation이 적용되는지 여부와 방식을 결정하는 style property를 지정하는 데 사용된다.

값: <percentage>
초기값: 0%
적용 대상: p
상속됨:
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: lineShear derivation

이 속성이 적용되는 각 line area에 대해, 10.4.5.3 Shear Calculations에 지정된 대로 line area에 2D shear transformation을 적용한다.

tts:lineShear style은 다음 예제로 설명된다.

예제 조각 – Line 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: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>

예제 렌디션 – Line Shear - Ruby가 있는 Vertical Lines
TTML lineShear style property

참고:

위 예제에서 노란색 lines는 특정 presentation processor가 layout issues의 debugging을 돕기 위해 만든 decorations이다. 이러한 lines는 이 명세에서 정의한 규범적 TTML presentation의 일부가 아니다. 여기서 decorations는 (1) region elements가 생성한 outer block areas의 boundaries, (2) p elements가 생성한 outer block areasline area children의 boundaries, 그리고 (3) implied ruby text containers가 생성한 line areasinline area children의 boundaries를 묘사한다.

이 예제는 shear(skew) transform이 각 affected line area 전체에 어떻게 적용되는지를 보여준다. 그러나 line shear가 line에 적용될 때, line에 할당될 수 있는 available distance, 즉 shear transformation 이전의 maximum inline progression dimension length는 B*sin(θ)만큼 줄어든다. 여기서 B는 line area의 block progression dimension이고 θ는 shear angle이며, 이는 paragraph의 outer block area의 content rectangle 안에 line을 맞추기 위한 것이다.

10.2.29 tts:luminanceGain

tts:luminanceGain 속성은 region의 presentation이 [SRGB] color space가 제공하는 것보다 더 큰 dynamic range를 필요로 하고, 그 presentation이 absolute luminance value를 필요로 할 때, region의 absolute luminance를 지정하는 데 사용된다.

참고:

[SRGB] color space는 80 cd∙m-2의 absolute reference white point luminance를 지정한다. 그 결과, [SRGB] space에서 지정된 colors는 perceptual quantizer electro-optical transfer function(PQ EOTF)을 사용하는 content와 같이 훨씬 더 큰 peak luminance로 표시되도록 의도된 high-dynamic range(HDR) content와 안정적으로 composited될 수 없다. 이는 [ITU BT.2100-1]에 지정되어 있다. 구체적으로,

  • [SRGB] colors는 unscaled 상태로 유지되고 scene의 average luminance가 80 cd∙m-2를 초과하면 너무 어둡게 보일 수 있다. 그리고

  • [SRGB] colors는 10,000 cd∙m-2와 같은 임의의 큰 luminance로 균일하게 scale되면 너무 밝게 보일 수 있다.

값: <non-negative-number>
초기값: 1.0
적용 대상: region
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete; continuous
의미론적 근거: luminanceGain derivation

tts:luminanceGain 속성과 연결된 computed value는 [SRGB] color value에서 absolute luminance value로 변환이 필요한 associated region 안의 모든 pixels에 적용된다. absolute luminance pixel values를 생성해야 하는 모든 requirement는 document processing context에서 파생된다.

참고:

예를 들어 [PQ PNG]에 적합한 이미지처럼, processing이 absolute luminance pixel values를 생성하는 image가 text 또는 processing이 [SRGB] pixel values를 생성하는 images도 포함하는 region에 배치되고 absolute luminance output이 요구되는 경우, [SRGB] pixel values만 변환된다.

tts:luminanceGain을 적용할 때, region의 pixel components의 linear optical output values (Cr, Cg, Cb)는 80 ∙ tts:luminanceGain ∙ (r, g, b)로 정의된다. 여기서 (r, g, b)는 pixel의 normalized linear [SRGB] components이다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

tts:luminanceGain style은 다음 예제로 설명된다.

예제 조각 – tts:luminanceGain
<region xml:id="r1">
  <style tts:extent="60% 20%"/>
  <style tts:origin="10% 70%"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:luminanceGain="3.8"/>
</region>
<region xml:id="r2">
  <style tts:extent="60% 20%"/>
  <style tts:origin="10% 10%"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:luminanceGain="1.0"/>
</region>
...
<p region="r1">
  The absolute luminance of the text in region one "r1" should be 3.8 times
  brighter than the absolute luminance of the text in region two "r2".
</p>
<p region="r2">
  Other text with the identity luminance adjustment (1.0).
</p>

luminance adjustment calculations의 예는 아래에 설명된다.

예제 – tts:luminanceGain을 사용한 absolute linear optical output 계산
tts:luminanceGain="1.5"가 주어졌을 때, color rgb(218,165,32)를 가진 rendered pixel의 components의 absolute linear optical output은 (82.37, 42.21, 0.82) ≈ 80 ∙ 1.5 ∙((218/255)2.4, (165/255)2.4, (32/255)2.4)이다. 여기서 exponent 2.4는 [SRGB] EOTF가 적용한 gamma correction이다.

참고:

tts:luminanceGain을 사용하여 [SRGB] pixels를 HDR pixels 위에 compositing하는 자세한 예는 Appendix Q.1 Perceptual Quantizer에 제공된다.

참고:

10.3.9 <color>에 지정된 대로, rendered document instance의 regions를 target medium 위에 compositing하는 것은 일반적으로 linear light로 표현된 pixel components와는 달리 target medium의 inverse EOTF를 사용해 encoded된 pixel components를 사용하여 수행된다. 그 결과, semi-transparent regions의 사용은 target medium이 사용하는 inverse EOTF에 따라 perceptually different results를 만들 수 있으며, 특히 rendered document instance의 pixels와 target medium 사이의 luminance 차이가 클 때 그렇다. 따라서 authors는 semi-transparent elements를 포함하는 visual results를 고려하는 것이 권장된다.

10.2.30 tts:opacity

tts:opacity 속성은 region 또는 region으로 flowed된 content가 생성한 area와 연결된 marks의 opacity(또는 반대로 transparency)를 정의하는 style property를 지정하는 데 사용된다.

visual medium에 presentation될 때, region의 opacity는 content가 생성한 areas에 어떤 content element specific opacity를 적용한 후, region을 대상으로 하는 content가 생성한 모든 marks에 균일하고 linear scale로 적용된다.

값: <alpha>
초기값: 1.0
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete; continuous
의미론적 근거: opacity derivation

tts:opacity style은 다음 예제로 설명된다.

예제 조각 – Opacity
<p>
  <span tts:opacity="1.00">And </span>
  <span tts:opacity="0.75">then </span>
  <span tts:opacity="0.50">there </span>
  <span tts:opacity="0.25">were </span>
  <span tts:opacity="0.00">none.</span>
</p>

예제 렌디션 – Opacity
TTML opacity style property

10.2.31 tts:origin

tts:origin 속성은 root container region의 origin에 대한 region area origin의 xy coordinates를 지정하는 데 사용된다.

tts:origintts:position attributes가 모두 element에 지정되어 있고 tts:position이 supported property라면, tts:origin 속성은 presentation processing의 목적으로 무시되어야 한다.

값: <origin>
초기값: auto
적용 대상: region; divp에 대해서는 special usage 참조
상속됨: 아니요
백분율: root container region의 width 및 height에 상대적
애니메이션 가능: discrete
의미론적 근거: origin derivation

이 속성의 값이 두 개의 <length> specifications로 구성되면, 그것들은 xy coordinates로 해석되어야 한다. 여기서 첫 번째 specification은 x coordinate이고, 두 번째 specification은 y coordinate이다.

이 속성의 값이 auto이면, style property의 computed value는 root container region의 origin과 같은 것으로 간주되어야 한다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed origin과 supported origin 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, [0,0]으로부터 가장 덜 먼 값, 즉 coordinate space origin에 가장 가까운 값이 사용된다.

tts:origin style은 다음 예제로 설명된다.

예제 조각 – Origin
<region xml:id="r1">
  <style tts:origin="40px 40px"/>
  <style tts:extent="308px 92px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  "To dine!" she shrieked in dragon-wrath.<br/>
  "To swallow wines all foam and froth!<br/>
   To simper at a table-cloth!"
</p>

예제 렌디션 – Origin
TTML origin style property
10.2.31.1 Origin의 특수 사용

tts:origin이 예외적으로 div 또는 p에 지정되면, 11.1.2.1 Special Semantics of Inline Animation이 적용된다.

10.2.32 tts:overflow

tts:overflow 속성은 region의 descendant areas가 region의 extent를 overflow하는 경우 region area가 clipped되는지 여부를 정의하는 style property를 지정하는 데 사용된다.

값: "visible" | "hidden"
초기값: hidden
적용 대상: region
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: overflow derivation

이 속성의 값이 visible이면, content는 affected region 밖에서 clipped되지 않는 것이 좋다. 값이 hidden이면, content는 affected region 밖에서 clipped되는 것이 좋다.

참고:

region의 content rectangle과 연결된 content가 생성한 marks는 그 content rectangle 밖에 rendered되어 region의 padding 및 border rectangles와 교차할 수 있으며, tts:overflow 속성의 영향을 받지 않는다. 그러한 marks는 region의 extent 밖으로 확장될 때에만 region overflow의 candidate가 된다. 이 extent는 region의 border rectangle과 일치하며, 그 border rectangle은 region의 padding rectangle을 포함하고, 그 padding rectangle은 region의 content rectangle을 포함한다.

참고:

content author가 manual line break element br을 사용하지 않는 한, 주어진 region의 paragraph는 region의 tts:overflowtts:wrapOption style properties의 computed values가 각각 visiblenoWrap이면, 그 region 안에서 하나를 초과하는 line area를 생성하지 않는다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorhidden 값을 사용해야 한다.

tts:overflow style은 다음 예제로 설명된다.

예제 조각 – Overflow
<?xml version="1.0"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xml:lang="en" tts:extent="320px 240px">
  <head>
    <styling>
      <style xml:id="s1" tts:backgroundColor="black" tts:padding="6px"/>
      <style xml:id="s2" tts:color="red" tts:backgroundColor="white"
             tts:wrapOption="noWrap" tts:fontFamily="proportionalSansSerif"
             tts:fontSize="10px"/>
    </styling>
    <layout>
      <region xml:id="r1" style="s1" tts:extent="100px 40px" tts:origin="20px 20px"
              tts:overflow="visible"/>
      <region xml:id="r2" style="s1" tts:extent="100px 40px" tts:origin="20px 180px"
              tts:overflow="hidden"/>
    </layout>
  </head>
  <body>
    <div>
      <p region="r1" style="s2">
  "But wait a bit," the Oysters cried,<br/>
  "Before we have our chat;
      </p>
      <p region="r2" style="s2">
  For some of us are out of breath,<br/>
  And all of us are fat!"
      </p>
    </div>
  </body>
</tt>

예제 렌디션 – Overflow
TTML overflow style property

참고:

위 예제에서 tts:noWrap은 automatic line wrapping(breaking)을 방지하기 위해 noWrap으로 설정되어 있다. 이것이 지정되지 않았다면 overflow는 inline progression direction이 아니라 block progression direction에서 발생했을 것이다.

10.2.33 tts:padding

tts:padding 속성은 region 또는 region으로 flowed된 content가 생성한 area의 하나 이상의 sides에 padding(또는 inset) space를 지정하는 데 사용된다.

참고:

Padding은 region area에 inset으로 적용된다. 즉, region area의 content rectangle은 region에 적용된 padding의 존재로 인해 축소된다.

값: <padding>
초기값: 0px
적용 대상: body, div, image, p, region, span
상속됨: 아니요
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: padding derivation

이 속성의 값이 하나의 <length> specification으로 구성되면, 그 length는 affected areas의 모든 edges에 적용된다. 값이 두 개의 <length> specifications로 구성되면, 첫 번째는 before 및 after edges에 적용되고, 두 번째는 start 및 end edges에 적용된다. 세 개의 <length> specifications가 제공되면, 첫 번째는 before edge에 적용되고, 두 번째는 start 및 end edges에 적용되며, 세 번째는 after edge에 적용된다. 네 개의 <length> specifications가 제공되면, 그것들은 각각 before, end, after, start edges에 적용된다.

참고:

Percentage values는 적용되는 region의 dimension에 상대적이다. 예를 들어, before 및 after edges가 region의 top 및 bottom edges에 대응하는 경우, tts:writingMode"lrtb"인 Latin text의 경우처럼, 두 edges 중 하나에 적용되는 percentage values는 region의 height에 상대적이다. 반대로 before 및 after edges가 region의 right 및 left edges에 대응하는 경우, tts:writingMode"tbrl"인 Japanese text의 경우처럼, 두 edges 중 하나에 적용되는 percentage values는 region의 width에 상대적이다.

padding을 표현하는 데 사용되는 <length> value(s)는 non-negative이어야 한다.

padding이 span 요소에 적용되고, 그 element의 content가 여러 line areas에 걸쳐 나뉘는 경우, 지정된 padding은 각 line break boundary에 적용되어야 한다. 반대로 단일 line area 안에서 element가 여러 inline areas를 생성하는 경우, 지정된 padding은 containing block level element의 inline progression order에서 line area 안의 첫 번째 및/또는 마지막 generated inline area에 적용되어야 한다.

참고:

span 요소에서의 padding 동작은 line breaks에서는 clone 값을 가진 CSS box-decoration-break property를 사용하고, non-terminal, 즉 first도 last도 아닌 inline area boundaries에서는 slice 값을 사용하는 것과 대응한다. 이는 [CSS Fragmentation], §5.4에서 정의되어 있다.

이 속성의 <length> component에서 percentage value가 사용되면, 다음과 같이 resolve된다.

  • region 요소에 적용될 때, percentage는 region의 resolved extent의 applicable absolute dimension에 상대적이다. 단, 그 dimension이 region content의 size에 의존하는 경우 percentage는 applicable initial value의 대응하는 component로 resolve된다.

  • 다른 모든 elements에 적용될 때, percentage는 가장 가까운 ancestor area의 대응하는 absolute dimension에 상대적이다. 단, 그 dimension이 해당 area content의 size에 의존하는 경우 percentage는 applicable initial value의 대응하는 component로 resolve된다.

참고:

이 속성과 함께 사용되는 각 <length> component는 특정 writing mode relative edge와 연결되며, 그런 다음 적용 가능한 writing mode에 따라 absolute dimension으로 resolve된다. 그 absolute dimension이 horizontal(vertical)이면, percentage value는 reference area(root container region 또는 가장 가까운 ancestor area)의 같은 horizontal(vertical) absolute dimension을 기준으로 resolve된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed padding과 supported padding 사이의 one-dimensional Euclidean distance가 edge별로 최소화되는 값을 의미한다. 특정 edge에 대해 computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 덜 먼 값, 즉 가장 작은 padding이 사용된다.

tts:padding style은 다음 예제로 설명된다.

예제 조각 – region의 Padding
<region xml:id="r1">
  <style tts:extent="446px 104px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
  <style tts:padding="10px 40px"/>
</region>
...
<p region="r1" tts:backgroundColor="red">
  Just the place for a Snark! I have said it twice:<br/>
  That alone should encourage the crew.<br/>
  Just the place for a Snark! I have said it thrice:<br/>
  What I tell you three times is true.
</p>

padding이 적용되는 area를 rendering할 때, 그 area에 적용되는 background color는 area의 padded portion에 rendered된다.

예제 렌디션 – region의 Padding
TTML padding style property

참고:

위 예제는 padding이 region area에 inset으로 적용되는 방식을 나타낸다. 특히 10px의 padding이 before(top) 및 after(bottom) edges에 적용되고, 40px의 padding이 start(left) 및 end(right) edges에 적용된다. 이를 region area의 extent에서 빼면 region의 content rectangle은 366px width와 84px height를 갖게 된다. region의 black background color는 region의 padding rectangle에 나타나고, paragraph의 red background color는 region의 content rectangle에 나타난다.

예제 조각 – span의 Padding
<region xml:id="r1">
  <style tts:extent="446px 72px"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:backgroundColor="green"/>
</region>
...
<p region="r1">
  <span tts:backgroundColor="black" tts:color="white" tts:padding="0c 0.5c">
  The crew was complete: it included a Boots--<br/>
  A maker of Bonnets and Hoods--
  </span>
</p>

padding이 적용되는 spans를 rendering할 때, padding은 각 generated line area에 독립적으로 적용된다.

예제 렌디션 – span의 Padding
TTML padding style property

10.2.34 tts:position

tts:position 속성은 positioning rectangle에 대한 region area의 position을 지정하는 대체 방법으로 사용된다.

tts:positiontts:origin attributes가 모두 element에 지정되어 있고 tts:position이 supported property이면, tts:origin 속성은 presentation processing의 목적으로 무시되어야 한다.

값: <position>
초기값: top left
적용 대상: region; divp에 대해서는 special usage 참조
상속됨: 아니요
백분율: 아래 설명 참조
애니메이션 가능: discrete; continuous
의미론적 근거: position derivation

horizontal position offset에 대한 percentage value component는 positioning rectangle의 width에서 associated region의 width를 뺀 값에 상대적이다. vertical position offset에 대한 percentage value component는 positioning rectangle의 height에서 associated region의 height를 뺀 값에 상대적이다.

다음 이미지는 position value "75% 50%"를 나타낸다. dashed line이 있는 rectangle은 positioning rectangle을 나타내고 solid line이 있는 rectangle은 positioned되는 region을 나타낸다. 이 경우 region은 그 width의 75%에 위치한 vertical line이 positioning rectangle의 width의 75%에 위치한 vertical line과 일치하고, 그 height의 50%에 위치한 horizontal line이 posititoning area의 width의 50%에 위치한 vertical line과 일치하도록 positioned된다.

Percentage Based Positioning
TTML position style property using percentages

region 요소에 지정된 경우, positioning rectangle은 root container region의 content rectangle에 대응한다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed position과 supported position 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, [0,0]으로부터 가장 덜 먼 값, 즉 coordinate space position에 가장 가까운 값이 사용된다.

tts:position style은 다음 예제로 설명된다. 이 예제는 region이 horizontal dimension에서 centered되고 vertical dimension에서 positioning rectangle의 bottom 위쪽 10%에 bottom edge offset을 갖도록 positioned한다. 여기서 이 offset은 positioning rectangle의 height와 region의 height 사이의 차이의 10%와 같다.

예제 조각 – Position
<tt tts:extent="640px 480px">
...
<region xml:id="r1">
  <style tts:position="center bottom 10%"/>
  <style tts:extent="308px 92px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  "To dine!" she shrieked in dragon-wrath.<br/>
  "To swallow wines all foam and froth!<br/>
   To simper at a table-cloth!"
</p>

예제 렌디션 – Position
TTML position style property

10.2.34.1 Position의 특수 사용

tts:position이 예외적으로 div 또는 p에 지정되면, 11.1.2.1 Special Semantics of Inline Animation이 적용된다.

10.2.35 tts:ruby

tts:ruby 속성은 ruby styling의 적용을 지정하는 데 사용된다.

값: "none" | "container" | "base" | "baseContainer" | "text" | "textContainer" | "delimiter"
초기값: none
적용 대상: span
상속됨: 아니요
백분율: N/A
애니메이션 가능: none
의미론적 근거: ruby derivation

이 속성의 값이 none이면 ruby semantics가 적용되지 않는다. 그렇지 않으면 표 10-1 – Ruby Semantics Mapping이 열거하는 ruby semantics가 적용된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornone 값을 사용해야 한다.

표 10-1 – Ruby Semantics Mapping
Category tts:ruby Annotation [Ruby] CSS display [CSS Ruby]
ruby container container ruby ruby
ruby base content base rb ruby-base
ruby text content text rt ruby-text
ruby base container baseContainer rbc ruby-base-container
ruby text container textContainer rtc ruby-text-container
ruby fallback delimiter delimiter rp none | inline

presentation processing의 목적을 위해, document processing context는 presentation mode, 즉 normal 또는 fallback을 결정한다. ruby text annotations의 normal presentation processing을 수행할 때, delimiter content는 inline areas를 생성해서는 안 된다. ruby의 fallback presentation을 수행할 때, delimiter 및 non-delimiter ruby(base 및 text) content는 모두 normal inline areas를 생성해야 한다. presentation processor가 ruby presentation을 지원하지 않으면 fallback ruby presentation을 수행해야 한다.

tts:ruby를 사용할 때, 다음 nesting constraints가 ruby container에 적용된다. 즉, span 요소의 tts:ruby computed value가 container이면:

  • 그 모든 ancestor elements의 tts:ruby computed value는 none이다.

  • 그 child elements 각각의 tts:ruby computed value는 none이 아니다.

  • 그 첫 번째 child element의 tts:ruby computed value는 baseContainer 또는 base이다.

  • 그 text node children 각각은 <lwsp>만 포함한다.

tts:ruby를 사용할 때, 다음 nesting constraints가 ruby base container에 적용된다. 즉, span 요소의 tts:ruby computed value가 baseContainer이면:

  • 그 parent element의 tts:ruby computed value는 container이다.

  • 그 child elements 각각의 tts:ruby computed value는 none이 아니다.

  • 그 첫 번째 child element의 tts:ruby computed value는 base이다.

  • 그 preceding sibling은 null이다(즉, preceding sibling 없음).

  • 그 text node children 각각은 <lwsp>만 포함한다.

tts:ruby를 사용할 때, 다음 nesting constraints가 ruby text container에 적용된다. 즉, span 요소의 tts:ruby computed value가 textContainer이면:

  • 그 parent element의 tts:ruby computed value는 container이다.

  • 그 child elements 각각의 tts:ruby computed value는 none이 아니다.

  • 그 첫 번째 child element의 tts:ruby computed value는 text 또는 delimiter 중 하나이다.

  • 그 preceding sibling의 tts:ruby computed value는 baseContainer 또는 textContainer이다.

  • 그 siblings 중 하나를 초과하는 sibling의 tts:ruby computed value가 textContainer여서는 안 된다.

  • 그 text node children 각각은 <lwsp>만 포함한다.

tts:ruby를 사용할 때, 다음 nesting constraints가 ruby base content에 적용된다. 즉, span 요소의 tts:ruby computed value가 base이면:

  • 그 parent element의 tts:ruby computed value는 container 또는 baseContainer 중 하나이다.

  • 그 preceding sibling은 null(즉, preceding sibling 없음)이거나, 그 preceding sibling의 tts:ruby computed value가 base이다.

  • 그 parent element의 tts:ruby computed value가 container이면, 어떤 sibling의 tts:ruby computed value도 base가 아니다.

  • 그 descendant element 중 tts:ruby computed value가 none이 아닌 것이 있어서는 안 된다.

  • 그 descendant elements 중 어떤 것도 br element가 아니다.

  • 그 text node descendants 각각은 U+2028 (LINE SEPARATOR) 또는 U+2029 (PARAGRAPH SEPARATOR)를 포함하지 않는다.

tts:ruby를 사용할 때, 다음 nesting constraints가 ruby text content에 적용된다. 즉, span 요소의 tts:ruby computed value가 text이면:

  • 그 parent element의 tts:ruby computed value는 container 또는 textContainer 중 하나이다.

  • 그 preceding sibling은 null(즉, preceding sibling 없음)이거나, 그 preceding sibling의 tts:ruby computed value가 base, text, 또는 delimiter이다.

  • 그 parent element의 tts:ruby computed value가 container이면, 어떤 sibling의 tts:ruby computed value도 text가 아니다.

  • 그 descendant element 중 tts:ruby computed value가 none이 아닌 것이 있어서는 안 된다.

  • 그 descendant elements 중 어떤 것도 br element가 아니다.

  • 그 text node descendants 각각은 U+2028 (LINE SEPARATOR) 또는 U+2029 (PARAGRAPH SEPARATOR)를 포함하지 않는다.

tts:ruby를 사용할 때, 다음 nesting constraints가 ruby fallback delimiter에 적용된다. 즉, span 요소의 tts:ruby computed value가 delimiter이면:

  • 그 parent element의 tts:ruby computed value는 container 또는 textContainer 중 하나이다.

  • 그 preceding sibling은 null(즉, preceding sibling 없음)이거나, 그 preceding sibling의 tts:ruby computed value가 base 또는 text이다.

  • 정확히 하나의 sibling의 tts:ruby computed value가 delimiter이다.

  • tts:ruby computed value가 delimiter이면, 어떤 descendant element의 tts:ruby computed value도 none이 아닌 것이 있어서는 안 된다.

  • 그 descendant elements 중 어떤 것도 br element가 아니다.

  • 그 text node descendants 각각은 U+2028 (LINE SEPARATOR) 또는 U+2029 (PARAGRAPH SEPARATOR)를 포함하지 않는다.

validating content processor는 위 제약 중 어느 하나라도 위반하면 error로 처리해야 한다. presentation processing의 목적으로, 이러한 제약 중 하나라도 위반하면 ruby text annotations의 fallback(inline) presentation이 발생하는 것이 좋으며, 어떤 제약을 위반한 content가 br element 또는 U+2028 (LINE SEPARATOR) 또는 U+2029 (PARAGRAPH SEPARATOR) character인 경우, 이는 U+0020 (SPACE) character로 매핑하는 것이 좋고, 또는 다른 content라면 무시하는 것이 좋다 (presentation하지 않음).

참고:

위에 나열된 constraints는 다음 nesting model을 지정하는 것으로 해석되도록 의도된다.

container
  : base text
  | base delimiter text delimiter
  | baseContainer textContainer textContainer?

baseContainer
  : base+

textContainer
  : text+
  | delimiter text+ delimiter

base | text | delimiter
  : (#PCDATA | { span - tts:ruby })*

이 model은 [Ruby], §2.1에서 정의한 ruby element의 maximal content model에 대응한다. 다만 rtc가 delimiters(rp)의 optional use를 허용하도록 실질적으로 확장된다는 점은 예외이다.

ruby
  : rb rt
  | rb rp rt rp
  | rbc rtc rtc?

rbc
  : rb+

rtc
  : rt+
  | rp rt+ rp                            // extension to [Ruby]

또한 이 model은 [Ruby], §2.6과 일관되며, ruby containers의 nesting이 지원되지 않는다는 constraint에 관한 것이다(이에 대해서는 위 nesting constraint 참조).

참고:

[HTML 5.2]가 허용하는 만큼 많은 markup minimization 기회를 지원하지는 않지만, 여기서 정의된 ruby annotation의 formulation은 다음 shorthands를 허용한다.

base text =
  baseContainer
    base
  textContainer
    text

base delimiter text delimiter =
  baseContainer
    base
  textContainer
    delimiter text delimiter

base의 content가 B이고 text의 content가 T라고 할 때, expression base text[HTML 5.2]에서 다음과 같이 여러 방식으로 표현될 수 있다.

<ruby>B<rt>T</ruby>
<ruby>B<rt>T</rt></ruby>
<ruby><rb>B<rt>T</ruby>
<ruby><rb>B</rb><rt>T</ruby>
<ruby><rb>B</rb><rt>T</rt></ruby>
<ruby>B<rtc><rt>T</ruby>
<ruby>B<rtc><rt>T</rtc></ruby>
<ruby>B<rtc><rt>T</rt></ruby>
<ruby>B<rtc><rt>T</rt></rtc></ruby>
<ruby><rb>B<rtc><rt>T</ruby>
<ruby><rb>B<rtc><rt>T</rtc></ruby>
<ruby><rb>B</rb><rtc><rt>T</ruby>
<ruby><rb>B</rb><rtc><rt>T</rtc></ruby>
<ruby><rb>B</rb><rtc><rt>T</rt></ruby>
<ruby><rb>B</rb><rtc><rt>T</rt></rtc></ruby>

반면, TTML2에서는 다음 alternative expressions가 가능하다.

<span tts:ruby="container">
  <span tts:ruby="base">B</span>
  <span tts:ruby="text">T</span>
</span>

또는 그 equivalent

<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의 syntax는 동일한 ruby container 안에서 ruby base container 내부의 여러 ruby base contentruby text container 내부의 여러 ruby text content를 사용할 수 있도록 허용한다. 이 TTML 버전은 동일한 ruby container 안에서 ruby text content의 수가 ruby base content의 수와 같지 않을 때, ruby base contentruby text content 사이의 mapping을 정의하지 않은 채로 둔다.

참고:

ruby text container 또는 ruby text content에 대해 presentation processing을 수행하여 inline area가 생성되면, 그 inline area는 연결된 ruby base content를 포함하는 line area에 parent된다(그 descendant가 된다).

simple ruby annotation을 지정하기 위한 tts:ruby의 사용은 다음 예제로 설명된다.

예제 조각 – Simple Ruby
<span tts:ruby="container" tts:rubyAlign="spaceAround">
  <span tts:ruby="base">利用許諾</span>
  <span tts:ruby="text">ライセンス</span>
</span>

예제 렌디션 – Simple Ruby
TTML ruby style property

double-sided ruby annotation을 지정하기 위한 tts:ruby의 사용은 다음 예제로 설명된다.

예제 조각 – Double-sided 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>

예제 렌디션 – Double-sided Ruby
TTML ruby style property

참고:

bopomofo characters와 함께 사용되는 것과 같은 ruby annotations의 inter-character positioning mode는 market requirements의 부족으로 인해 이 TTML 버전에서 지원되지 않는다.

tts:ruby 속성은 annotation이 Latin characters를 사용하는 경우에도 사용할 수 있다. 예를 들어 [CLREQ]에서 설명한 pinyin의 경우이며, 다음 예제로 설명된다.

예제 조각 – Pinyin Annotation이 있는 Ruby
<p>
<span tts:ruby="container" tts:rubyAlign="center">
  <span tts:ruby="base">周杰伦</span><span tts:ruby="text">Jay Chou</span>
</span>

예제 렌디션 – Pinyin Annotation을 사용하는 Ruby
TTML ruby style property with pinyin
10.2.35.1 Ruby Annotations의 특수 의미론

implementation specific requirements가 없을 때, line area의 overflowing을 잠재적으로 일으킬 수 있는 ruby text contentruby base content 사이의 alignment 제약은 ruby text content를 line area의 start 또는 end edge에서 멀어지도록 shifting하여 resolve하는 것이 좋다.

참고:

추가 정보는 [JLREQ], §3.3.8, Adjustments of Ruby with Length Longer than that of the Base Characters, 및 [CSS Ruby], §5, Edge Effects를 참조한다.

implementation specific requirements가 없을 때, ruby text content는 base text가 [JLREQ], Appendix A, Character Classes에서 정의한 다음 character classes 중 하나에 속하는 경우에만 ruby base content를 overhang하도록 허용하는 것이 좋다.

  • hiragana

  • ideographic

  • punctuationMarks

참고:

추가 정보는 [JLREQ], §3.3.8, Adjustments of Ruby with Length Longer than that of the Base Characters를 참조한다.

presentation processing을 수행할 때, isolated ruby content, 즉 각각 ruby base container 또는 ruby text container 없이 지정된 ruby base content 또는 ruby text content는 필요에 따라 anonymous ruby base container 및(또는) anonymous ruby text container의 존재를 imply하는 방식으로 처리된다. implied ruby base container 및(또는) implied ruby text containerisolated ruby content가 생성한 inline areas를 포함하는 inline block area에 implied 또는 collective styling semantics를 생성하고 적용하기 위해 필요하다.

tts:ruby의 computed value가 baseContainer인 명시적으로 지정된 span element는 explicit ruby base container라고 한다. 마찬가지로, tts:ruby의 computed value가 textContainer인 명시적으로 지정된 span element는 explicit ruby text container라고 한다.

10.2.36 tts:rubyAlign

tts:rubyAlign 속성은 ruby text container annotation이 생성한 inline area 안에서 ruby text의 position을 지정하는 데 사용된다.

값: "start" | "center" | "end" | "spaceAround" | "spaceBetween" | "withBase"
초기값: center
적용 대상: span, 단 tts:ruby의 computed value가 container인 경우에만
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: rubyAlign derivation

이 속성이 tts:ruby의 computed value가 containerspan 요소에 지정되면, associated style property의 ruby alignment semantics는 container를 구성하는 ruby containers 및 ruby content가 생성한 inline areas에 collective하게 적용된다.

참고:

ruby container 전체에 ruby alignment를 적용하는 결과로, container와 그 constituents에 적용되는 ruby alignment는 uniform(unvarying)하다.

IRIB를 각각 (1) ruby text container 또는 ruby text annotation, 그리고 (2) associated ruby base container 또는 ruby base가 생성한 inline areas라고 하자. 또한 NRNB를 각각 이러한 inline areas의 glyph area descendants 수라고 하자.

이 속성의 값이 start이면, IR의 첫 번째 glyph area descendant의 start edge가 그 inline area의 start edge에 align된다. 값이 center이면, excess whitespace는 각각 첫 번째 및 마지막 ruby annotation glyph areas의 앞과 뒤에 균등하게 분배된다. 이 속성의 값이 end이면, IR의 첫 번째 glyph area descendant의 end edge가 그 inline area의 end edge에 align된다. 값이 spaceBetween이면, excess whitespace는 각 ruby annotation glyph area 사이에 균등하게 분배된다. 값이 spaceAround이면, excess whitespace는 각 ruby annotation glyph area descendant의 앞과 뒤에 균등하게 분배된다.

이 속성의 값이 withBase이면, NRNB가 같을 경우, IRith glyph area descendantIBith glyph area descendant와 center aligned(수평 또는 수직)된다. 그렇지 않으면(ruby와 base glyph areas의 수가 같지 않으면), center의 semantics가 적용된다.

참고:

위 semantics의 맥락에서 glyph area descendant를 해석하기 위한 목적으로, spacing glyph area descendants만 고려된다. 즉, combining marks와 같은 non-spacing glyph area descendants는 ruby alignment에 영향을 주지 않는다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorcenter 값을 사용해야 한다.

참고:

이 명세에서는 timed text applications의 ruby annotations가 좁다고 가정한다. presentation space와 available time이 종종 제한되기 때문이다. 그 결과, 이 TTML 버전은 ruby annotation이 base text보다 넓을 때 spacing이 어떻게 분배되는지 authors가 제어할 수 있도록 하지 않는다. 이는 line의 start 또는 end edge에 있는 wide ruby annotations에서 문제가 될 수 있다. 문제를 피하기 위해 authors는 적절한 tts:rubyAlign 값을 사용하거나 wide ruby annotations를 포함하는 events를 여러 lines 또는 여러 events로 split하는 것이 권장된다.

tts:rubyAlign style은 다음 예제로 설명된다.

예제 조각 – Ruby Align
<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>

예제 렌디션 – Ruby Align
TTML rubyAlign style property

10.2.37 tts:rubyPosition

tts:rubyPosition 속성은 associated ruby base에 대한 block progression dimension에서 ruby text의 position을 지정하는 데 사용된다.

값: <annotation-position>
초기값: outside
적용 대상: span, 단 tts:ruby의 computed value가 textContainer 또는 text인 경우에만
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: rubyPosition derivation

이 속성과 연결된 style property는 ruby text containers 및 ruby text annotations에서 생성된 inline areas의 associated base text containers 및 base text에 대한 relative positioning을 결정한다. 여기서 <annotation-position>의 directional semantics가 적용된다.

이 속성이 tts:ruby의 computed value가 textContainerspan 요소에 지정되면, associated style property의 ruby position semantics는 explicit ruby text container 및 그 구성 ruby text content가 생성한 inline areas에 collective하게 적용된다.

이 속성이 tts:ruby의 computed value가 textspan 요소에 지정되면, associated style property의 ruby position semantics는 그 implied ruby text container와 그 자체의 ruby text content가 생성한 inline areas에 collective하게 적용된다.

이 속성은 tts:ruby의 computed value가 textspan 요소에 지정되어서는 안 된다. 해당 span 요소의 parent가 tts:ruby의 computed value가 textContainerspan 요소인 경우가 이에 해당한다. 지정된 경우(전자의 ruby text content에), 이는 error로 간주되며, presentation processing의 목적으로 무시되어야 한다.

ruby text container 또는 ruby text annotation의 absolute position은 affected content가 placed되는 region의 tts:writingMode style property의 computed value에 따라 결정된다. 특히, 표 10-2 – Writing Mode별 Absolute Ruby Position Semantics Mapping이 열거한 mappings가 [CSS Ruby], §4.1에서 추가로 정의된 대로 적용된다.

ruby text containers가 같은 ruby base container에 적용되는 경우, 이 속성과 연결된 property의 used value가 두 ruby text containers 모두를 ruby base container의 같은 relative side에 배치하게 만들면 error로 간주된다. 이 경우 이 property의 presentation semantics는 이 명세에서 정의되지 않는다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorbefore 값을 사용해야 한다.

표 10-2 – Writing Mode별 Absolute Ruby Position Semantics Mapping
tts:rubyPosition lrtb rltb tbrl tblr
before over over right left
after under under left right

참고:

vertical left-to-right lines로 설정된 Mongolian script를 사용할 때, ruby position에 할당되는 initial value가 outside 대신 after인 것이 바람직할 수 있다. outside는 모든 non-final lines에 대해 before로 resolve된다. 이 경우 author는 문서의 styling element에 <initial tts:rubyPosition="after"/> element를 포함하여 이 속성의 default initial value를 다시 정의할 수 있다.

tts:rubyPosition style은 다음 예제로 설명된다. 이 예제는 ruby position의 resolution이 writing mode에 어떻게 의존하는지를 보여준다. 예제는 [JLREQ]에서 정의한 mono ruby를 사용한다는 점에 유의한다.

예제 조각 – Ruby Position
<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>

예제 렌디션 – Ruby Position
TTML rubyPosition style property

참고:

위 예제에서 whitespace는 formatting을 돕기 위해 span elements 안과 주변에 도입되었다. 표시된 것과 같은 example rendition을 생성하려면, rendered output에 나타나지 않도록 그 extra whitespace를 제거해야 한다.

10.2.38 tts:rubyReserve

tts:rubyReserve 속성은 line areas의 bounds 안에 배치된 ruby text containers가 생성한 inline areas를 포함할 수 있도록 block progression dimension에 충분한 공간을 reserve하기 위해, affected line areas에 적용할 additional space를 지정하는 데 사용된다.

참고:

author는 ruby text annotations의 존재 여부와 관계없이 block area 안에서 연속적인 line areas의 baselines가 fixed placement를 유지하도록 하기 위해 tts:rubyReserve 속성을 사용할 수 있다.

값: <ruby-reserve>
초기값: none
적용 대상: p
상속됨:
백분율: 이 element의 font size에 상대적
애니메이션 가능: discrete
의미론적 근거: rubyReserve derivation

이 속성의 값이 none이면 ruby space reservation은 적용되지 않는다. 그렇지 않으면 이 속성의 값은 position component와 그 뒤에 오는 optional length component를 지정한다.

position component가 before이면, affected line areas의 before leading은 length component의 used value에 의해 결정되는 양만큼 증가한다.

position component가 after이면, affected line areas의 after leading은 length component의 used value에 의해 결정되는 양만큼 증가한다.

position component가 both이면, beforeafter positions의 semantics가 각 affected line area에 모두 적용된다.

position component가 outside이면, 현재 block area가 정확히 하나의 line area를 포함하는 경우에는 both position이 적용된다. 그렇지 않으면 before position의 semantics가 현재 block area의 첫 번째 line area에 적용되고, after position의 semantics가 현재 block area의 다른 모든 line areas에 적용된다.

length component는 affected line areas의 before 및 after leading이 증가하는 양을 간접적으로 결정하는 데 사용된다. length component의 computed value는 그러한 content가 실제로 p 요소에 존재한다면 hypothetical ruby text contenttts:fontSize 속성과 연결된 style property의 computed value를 표현하는 것으로 간주된다.

length component가 지정되지 않은 경우, 그러한 content가 실제로 p 요소에 존재한다면 hypothetical ruby text container 또는 ruby text content가 상속할 tts:fontSize 속성과 연결된 style property의 값과 같은 것으로 간주되어야 한다. 여기서 이 inherited value를 계산하기 위해 10.2.21.1 Special Semantics of Font Size의 semantics가 적용된다.

<length> component가 지정되면, 이는 non-negative이어야 한다.

tts:rubyReservep 요소에 지정되고 그 요소가 ruby text content를 포함하는 경우, reserved leadings는 위에 표시된 대로 line areas에 적용되고, 그런 다음 실제 ruby text content의 존재를 수용하기 위해 필요에 따라 이 leadings에 추가 adjustments가 이루어진다.

예제 렌디션 – Ruby Reserve
tts:rubyReserve Ruby 없음 Ruby 있음
none TTML rubyReserve style property: 'auto' TTML rubyReserve style property: 'auto'
before TTML rubyReserve style property: 'after' TTML rubyReserve style property: 'after'
after TTML rubyReserve style property: 'after' TTML rubyReserve style property: 'after'
both TTML rubyReserve style property: 'after' TTML rubyReserve style property: 'after'
outside TTML rubyReserve style property: 'after' TTML rubyReserve style property: 'after'

10.2.39 tts:shear

tts:shear 속성은 affected element가 생성한 최외곽 block area에 shear transformation이 적용되는지 여부와 방식을 결정하는 style property를 지정하는 데 사용된다.

값: <percentage>
초기값: 0%
적용 대상: p
상속됨:
백분율: 아래 설명 참조
애니메이션 가능: discrete
의미론적 근거: shear derivation

이 속성이 적용되는 각 block area에 대해, 10.4.5.3 Shear Calculations에 지정된 대로 block area에 2D shear transformation을 적용한다.

tts:shear style은 다음 예제로 설명된다.

예제 조각 – 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>

예제 렌디션 – Shear - Tate-Chu-Yoko가 있는 Vertical Lines
TTML shear style property

참고:

위 예제에서 노란색 lines는 특정 presentation processor가 layout issues의 debugging을 돕기 위해 만든 decorations이다. 이러한 lines는 이 명세에서 정의한 규범적 TTML presentation의 일부가 아니다. 여기서 decorations는 (1) region elements가 생성한 outer block areas의 boundaries 및 (2) p elements가 생성한 outer block areasline area children의 boundaries를 묘사한다.

이 예제는 shear(skew) transform이 p elements가 생성한 affected outer block areas에 어떻게 적용되는지를 보여준다. 그러나 shear가 outer block area에 적용될 때, block area에 할당될 수 있는 available distance, 즉 shear transformation 이전의 maximum inline progression dimension length는 B*sin(θ)만큼 줄어든다. 여기서 B는 outer block area의 block progression dimension이고 θ는 shear angle이며, 이는 paragraph의 immediate ancestor block area의 content rectangle 안에 block area를 맞추기 위한 것이다.

10.2.40 tts:showBackground

tts:showBackground 속성은 region의 background가 언제 presentation될 의도인지에 대한 constraints를 지정하는 데 사용된다.

참고:

region의 background는 해당 region에 적용되는 경우 (1) background color 또는 (2) background image 중 하나(또는 둘 다)가 생성한 marks를 포함한다.

값: "always" | "whenActive"
초기값: always
적용 대상: region
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: showBackground derivation

region이 temporally active가 아니면 그 background는 rendered되지 않는다. 그러나 temporally active이면,

  1. 이 속성의 값이 whenActive이면, region의 background는 content가 region으로 selected되고 그 content도 temporally active인 경우에만 rendered된다.

  2. 그렇지 않고 이 속성의 값이 always이면, content가 region으로 selected되는지 여부와 관계없이 region의 background가 rendered된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processoralways 값을 사용해야 한다.

tts:showBackground style은 다음 예제로 설명된다.

예제 조각 – Show Background
<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 속성은 inline progression direction에서 containing block area 안에 inline areas가 어떻게 aligned되는지를 정의하는 style property를 지정하는 데 사용된다.

값: "left" | "center" | "right" | "start" | "end" | "justify"
초기값: start
적용 대상: p
상속됨: 아래 설명 참조
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: textAlign derivation

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorstart 값을 사용해야 한다.

tts:textAlign style은 다음 예제들로 설명된다.

예제 조각 – Text Align
<region xml:id="r1">
  <style tts:extent="355px 43px"/>
  <style tts:origin="0px 0px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:extent="355px 43px"/>
  <style tts:origin="0px 47px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
</region>
...
<p region="r1">
  Beware the Jabberwock, my son!<br/>
  The jaws that bite, the claws that catch!
</p>
<p region="r2">
  Beware the Jubjub bird, and shun<br/>
  The frumious Bandersnatch!
</p>

예제 렌디션 – Text Align
TTML textAlign style property

참고:

p 요소가 생성한 마지막 block area의 마지막 line area의 text alignment는 [XSL-FO 1.1], §7.16.10에 따른 relative 값을 가진 text-align-last property의 semantics를 따른다.

10.2.42 tts:textCombine

vertical writing mode가 적용될 때, tts:textCombine 속성은 주변 vertical text의 single line width 안에 여러 characters의 glyph areas가 맞도록 horizontally combined되는지 여부와 방식을 결정하는 style property를 지정하는 데 사용된다. horizontal writing mode가 적용되면, 이 property는 presentation processing의 목적으로 무시된다.

Combination processing은 주변 vertical text의 em square 안으로 visual combination을 달성하기 위해 하나 이상의 techniques를 사용할 수 있다. 예를 들어 half-width variant forms가 선택될 수 있고, ligature가 선택될 수 있으며, smaller font size가 적용될 수 있다. 최소한 이 style property를 지원하는 implementation은 가능한 경우 half-width variant forms를 선택할 수 있어야 한다. 이러한 techniques 중 어느 것도 containing line area의 block progression dimension을 따라 target dimension을 달성할 수 없는 경우, 유효한 line stacking strategy가 허용한다면 containing line area의 이 dimension이 증가될 수 있다.

값: <text-combine>
초기값: none
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: textCombine derivation

이 속성의 specified value가 none이면 combination processing은 적용되지 않는다. 이 속성의 specified value가 all이면 모든 affected characters가 combined되는 것이 좋다.

Combination은 모든 affected characters가 horizontal writing mode가 적용된 것처럼 처리된 후에 적용된다. 특히 bidirectional processing, ligatures, glyph substitutions 또는 사용되는 경우 Unicode combining characters의 combination은 tts:textCombine 속성이 지정한 combination process 이전에 적용된다.

Combination은 element boundary, bidirectional boundary 또는 non-glyph area boundary를 가로질러서는 안 된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornone 값을 사용해야 한다.

tts:textCombine style은 다음 예제로 설명된다.

예제 조각 – Text Combine
<p region="tbrlLeft">あい
  <span tts:textCombine="none">AB34</span>三四
</p>
<p region="tbrlCenter">あい
  <span tts:textCombine="all">AB34</span>三四
</p>

예제 렌디션 – Text Combine
TTML textCombine style property

참고:

위 예제에서 tts:textCombineall 값에 대해, presentation processor는 affected characters의 half-width variants를 선택했지만, readability issues를 피하고 TTML이 허용하는 대로 resulting width는 주변 vertical text의 em square보다 크다.

10.2.43 tts:textDecoration

tts:textDecoration 속성은 region으로 flowed된 content가 생성한 glyph areas 또는 다른 inline areas에 적용할 text decoration effect를 정의하는 style property를 지정하는 데 사용된다.

값: <text-decoration>
초기값: none
적용 대상: span
상속됨: 예, 그러나 special semantics 참조
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: textDecoration derivation

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornone 값을 사용해야 한다.

참고:

이 property의 값을 정의하는 데 위에서 사용한 syntax는 [CSS2], §1.4.2.1에서 정의한 value component syntax를 기반으로 한다. 본질적으로 ||로 구분된 값 중 하나 이상이 "noUnderline overline lineThrough"와 같이 property value 안에 어떤 순서로든 나타날 수 있다.

tts:textDecoration style은 다음 예제로 설명된다.

예제 조각 – Text Decoration
<region xml:id="r1">
  <style tts:extent="385px 82px"/>
  <style tts:origin="0px 0px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:padding="5px 2px"/>
  <style tts:textDecoration="underline"/>
</region>
...
<p region="r1">
  The sea was wet<span tts:textDecoration="noUnderline"> as </span>wet
  <span tts:textDecoration="noUnderline">
    could be,<br/>
    The sand was dry as dry.<br/>
    <span tts:textDecoration="lineThrough">There weren't any</span>
    You <span tts:textDecoration="lineThrough">couldn't</span>
    could not see a cloud<br/>
    Because no cloud was in the sky.
  </span>
</p>

예제 렌디션 – Text Decoration
TTML textDecoration style property
10.2.43.1 Text Decoration의 특수 의미론

이 속성과 연결된 property의 computed value는 3-tuple로 구성되며, 각 entry는 affected text에 underline, line through 또는 overline decoration이 적용될지 여부를 각각 나타낸다. 또한 inheritance semantics를 적용할 때, 이러한 각 entries는 서로 독립적으로 inherited되는 것으로 간주된다.

참고:

예를 들어 div (division) element에 적용되는 tts:textDecoration의 computed value가 tuple (noUnderline, lineThrough, overline)이고 그 div의 자식 p (paragraph) element가 tts:textDecoration="noLineThrough"를 지정하면, p element에 적용되는 aggregate computed value는 (noUnderline, noLineThrough, overline)이며, 이 값은 그 다음 p element의 children에 상속된다.

10.2.44 tts:textEmphasis

tts:textEmphasis 속성은 region으로 flowed된 content가 생성한 glyph areas 또는 다른 inline areas에 적용할 text emphasis effect를 정의하는 style property를 지정하는 데 사용된다.

값: <text-emphasis>
초기값: none
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete; continuous (color only)
의미론적 근거: textEmphasis derivation

emphasis style이 지정되지 않은 경우, emphasis style은 auto의 style이 지정된 것처럼 해석되어야 한다. emphasis color가 지정되지 않은 경우, emphasis color는 current의 color가 지정된 것처럼 해석되어야 한다. emphasis position이 지정되지 않은 경우, emphasis position은 outside의 position이 지정된 것처럼 해석되어야 한다.

참고:

vertical left-to-right lines로 설정된 Mongolian script를 사용할 때, emphasis position에 할당되는 initial value가 outside 대신 after인 것이 바람직할 수 있다. outside는 모든 non-final lines에 대해 before로 resolve된다. 이 경우 author는 문서의 styling element에 <initial tts:textEmphasis="none transparent after"/> element를 포함하여 이 속성의 default initial value를 다시 정의할 수 있다.

tts:textEmphasis style은 다음 예제로 설명된다.

예제 조각 – Text Emphasis
<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>

예제 렌디션 – Text Emphasis
TTML textEmphasis style property

10.2.45 tts:textOrientation

tts:textOrientation 속성은 vertical writing mode가 적용되는 region으로 flowed된 content가 생성한 glyph areas에 적용할 text orientation을 정의하는 style property를 지정하는 데 사용된다.

값: "mixed" | "sideways" | "upright"
초기값: mixed
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: textOrientation derivation

이 style property의 presentation semantics는 vertical writing mode가 적용될 때에만 적용된다. 따라서 horizontal writing mode가 적용되면 이 style property는 효과가 없다.

다음에서 content characters와 연결된 glyph areas는 vertical writing modes에서 rotated되는지 또는 rotated되지 않는지의 관점에서 설명된다. 여기서 이러한 결정은 [UTR50]에 의해 결정되는 각 content character의 Vertical_Orientation에 따라 이루어진다.

이 속성의 값이 mixed이면, rotated glyph areas는 sideways로 설정되고 non-rotated glyph areas는 upright로 설정된다. 여기서 sideways는 90° clockwise로 rotated됨을 의미하고, upright는 rotated되지 않음을 의미한다.

참고:

[UTR50]에 따르면, glyph areas의 visual rotation은 rotated glyph areas를 substitution하거나, glyph areas의 outline(또는 raster image)에 affine rotation transformation을 수행함으로써 발생할 수 있다. 이 중 어느 것이 적용되는지는 presentation processing 중 사용되는 specific font에 따라 결정된다.

이 속성의 값이 sideways이면, 모든 glyph areas는 90° clockwise로 rotated된다.

이 속성의 값이 upright이면, 모든 characters는 U의 vertical orientation을 가지는 것으로 간주되며, 이 경우 어떤 glyph areas도 rotated되지 않는다. 이 경우 rotated glyph areas의 (potential) substitution 및 affine rotation transformation의 적용은 disabled되며, rendered되는 glyph area는 non-rotated form이다. 또한 bidirectional processing의 목적으로, 이 값은 모든 affected characters가 strong left-to-right로 처리되도록 한다. 즉 tts:directionltrtts:unicodeBidioverride가 적용된 것처럼 처리한다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processormixed 값을 사용해야 한다.

tts:textOrientation style은 다음 예제로 설명된다.

예제 조각 – Text Orientation
<region xml:id="vertical" tts:writingMode="tblr"/>
...
<p region="vertical">
  <span tts:textOrientation="mixed">A</span>
  <span tts:textOrientation="upright">B</span>
</p>

예제 렌디션 – Text Orientation
TTML textOrientation style property

10.2.46 tts:textOutline

tts:textOutline 속성은 region으로 flowed된 content가 생성한 glyph areas에 대해 선택되는 glyphs에 적용할 text outline effect를 정의하는 style property를 지정하는 데 사용된다.

값: <text-outline>
초기값: none
적용 대상: span
상속됨:
백분율: 이 element의 font size에 상대적
애니메이션 가능: discrete; continuous (color only)
의미론적 근거: textOutline derivation

이 속성의 값은 optional <color> term과 그 뒤에 오는 하나 또는 두 개의 <length> terms로 구성된다. color term이 있으면 outline color를 나타낸다. color term이 없으면 tts:color의 computed value가 적용된다. 첫 번째 length term은 outline thickness를 나타내며, 두 번째 length term이 있으면 blur radius를 나타낸다.

relative <length> value가 outline thickness 또는 blur radius에 지정되면, 이는 referenced font size 또는 computed cell size의 height component를 기준으로 resolve된다.

thickness와 blur radius를 표현하는 데 사용되는 <length> value(s)는 non-negative이어야 한다.

blur radius가 지정되지 않은 경우, 즉 하나의 <length> term만 존재하는 경우, 0px의 computed value가 적용된다.

참고:

cells로 표현된 <length>tts:textOutline 값에서 사용될 때, cell의 height가 적용된다. 예를 들어 text outline thickness가 0.1c로 지정되고, cell resolution이 20 by 10이며, root container region의 extent가 640 by 480이면, outline thickness는 rasterization effects를 고려하지 않고 nominal 480 / 10 * 0.1 pixels, 즉 4.8px가 된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornone 값을 사용해야 한다.

tts:textOutline style은 다음 예제로 설명된다.

예제 조각 – Text Outline
<region xml:id="r1">
  <style tts:backgroundColor="transparent"/>
  <style tts:color="yellow"/>
  <style tts:textOutline="black 2px 0px"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="24px"/>
</region>
...
<p>
  How doth the little crocodile<br/>
  Improve its shining tail,<br/>
  And pour the waters of the Nile<br/>
  On every golden scale!<br/>
  How cheerfully he seems to grin,<br/>
  How neatly spreads his claws,<br/>
  And welcomes little fishes in,<br/>
  With gently smiling jaws!
</p>

예제 렌디션 – Text Outline
textOutline style property

10.2.47 tts:textShadow

tts:textShadow 속성은 region으로 flowed된 content가 생성한 glyph areas에 대해 선택되는 glyphs에 적용할 하나 이상의 text shadow decorations를 정의하는 style property를 지정하는 데 사용된다.

multiple text shadows가 적용되면, 그것들은 적용 대상인 glyph area를 drawing하기 직전에 specified order로 그려진다.

값: <text-shadow>
초기값: none
적용 대상: span
상속됨:
백분율: 이 element의 font size에 상대적
애니메이션 가능: discrete; continuous (color only)
의미론적 근거: textShadow derivation

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornone 값을 사용해야 한다.

예제 조각 – Text Shadow
<style xml:id="s1"
  tts:backgroundColor="black"
  tts:color="white"
  tts:lineHeight="125%"
  tts:textAlign="center"/>
...
<p style="s1">
<span tts:padding="1%">
I serve it with greens in those
<span tts:textShadow="10% -20% 5% lime">shadowy scenes,</span><br/>
And I use it for striking a light:</span>
</p>

예제 렌디션 – Text Shadow
TTML textShadow style property

10.2.48 tts:unicodeBidi

tts:unicodeBidi 속성은 Unicode bidirectional algorithm에 따라 explicit directional embedding, override 또는 isolate를 정의하는 style property를 지정하는 데 사용된다.

값: "normal" | "embed" | "bidiOverride" | "isolate"
초기값: normal
적용 대상: p, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: unicodeBidi derivation

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processornormal 값을 사용해야 한다.

tts:unicodeBidi style은 다음 예제로 설명된다.

예제 조각 – Unicode Bidirectionality
<region xml:id="r1">
  <style tts:extent="265px 84px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  Little birds are playing<br/>
  Bagpipes on the shore,<br/>
  <span tts:unicodeBidi="bidiOverride" tts:direction="rtl">where the tourists snore.</span>
</p>

예제 렌디션 – Unicode Bidirectionality
TTML unicodeBidi style property

10.2.49 tts:visibility

tts:visibility 속성은 visual presentation medium에서 rendered될 때 generated areas가 visible인지 아닌지를 정의하는 style property를 지정하는 데 사용된다.

값: "visible" | "hidden"
초기값: visible
적용 대상: body, div, image, p, region, span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: visibility derivation

tts:visibility style은 content layout 또는 composition에는 영향을 주지 않고, 단지 composed content가 visible인지 아닌지만 결정한다.

이 속성과 연결된 property의 computed value가 visible이면, 이 element가 생성한 areas는 visual medium에서 presented될 때 visible하게 rendered된다. computed value가 hidden이면, 그것들은 visible하게 rendered되지 않는다. 즉 hidden된다. 앞의 내용에도 불구하고, hidden element의 descendant element는 descendant에서 이 property의 computed value가 visible이면 visible하게 rendered된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorvisible 값을 사용해야 한다.

tts:visibility style은 다음 예제로 설명된다.

예제 조각 – Visibility
<region xml:id="r1">
  <style tts:extent="398px 121px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style/>
</region>
...
<p region="r1" dur="4s">
  <span tts:visibility="hidden">
    <set begin="1s" tts:visibility="visible"/>
    Curiouser
  </span>
  <span tts:visibility="hidden">
    <set begin="2s" tts:visibility="visible"/>
    and
  </span>
  <span tts:visibility="hidden">
    <set begin="3s" tts:visibility="visible"/>
    curiouser!
  </span>
</p>

예제 렌디션 – Visibility
TTML visibility style property - [0,1)
TTML visibility style property - [1,2)
TTML visibility style property - [2,3)
TTML visibility style property - [3,4)

10.2.50 tts:wrapOption

tts:wrapOption 속성은 affected element의 context 안에서 automatic line wrapping(breaking)이 적용되는지 여부를 정의하는 style property를 지정하는 데 사용된다.

값: "wrap" | "noWrap"
초기값: wrap
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: wrapOption derivation

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorwrap 값을 사용해야 한다.

tts:wrapOption style은 다음 예제로 설명된다.

예제 조각 – Wrap Option
<region xml:id="r1">
  <style tts:extent="192px 117px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:overflow="hidden"/>
  <style tts:wrapOption="noWrap"/>
</region>
...
<p>
  I'll tell thee everything I can:<br/>
  There's little to relate.<br/>
  I saw an aged aged man,<br/>
  A-sitting on a gate.
</p>

예제 렌디션 – Wrap Option
TTML wrapOption style property

10.2.51 tts:writingMode

tts:writingMode 속성은 region area 안에서 block 및 inline areas를 stacking하기 위한 목적으로 사용되는 block 및 inline progression directions를 정의하는 style property를 지정하는 데 사용된다.

값: "lrtb" | "rltb" | "tbrl" | "tblr" | "lr" | "rl" | "tb"
초기값: lrtb
적용 대상: region
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: writingMode derivation

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processorlrtb 값을 사용해야 한다.

참고:

inline progression direction이 left-to-right 또는 right-to-left인 writing mode는 horizontal writing mode라고 하며, inline progression direction이 top-to-bottom인 writing mode는 vertical writing mode라고 한다.

tts:writingMode style은 다음 예제로 설명된다.

예제 조각 – Writing Mode
<tt ... xml:lang="en">
...
<region xml:id="top" tts:origin="10% 10%" tts:extent="55% 10%"
  tts:writingMode="rltb"/>
<region xml:id="right" tts:origin="70% 10%" tts:extent="10% 80%"
  tts:writingMode="tbrl"/>
...
<p region="top"><span xml:lang="ar">نشاط التدويل،</span> W3C</p>
<p region="right">hello <span xml:lang="ja">みなさん、<br/>こんにちは</span></p>
...
</tt>

예제 렌디션 – Writing Mode
TTML writingMode style property

참고:

이 예제에서는 textual content의 natural language가 여러 xml:lang attributes를 사용하여 식별된다. tts:writingMode 속성을 설명하는 데 기술적으로 필수는 아니지만, 여러 natural languages의 content를 포함하는 markup에서는 explicit language identification의 사용이 권장된다.

10.2.52 tts:zIndex

tts:zIndex 속성은 region areas가 overlap하는 경우 front-to-back ordering을 정의하는 style property를 지정하는 데 사용된다.

값: "auto" | <integer>
초기값: auto
적용 대상: region
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete
의미론적 근거: zIndex derivation

두 areas가 같은 Z-index value와 연결되어 있으면, 그 areas가 space에서 overlap하는 경우 lexically subsequent elements가 생성한 area(s)는 lexically prior elements가 생성한 area(s) 위에 rendered되어야 한다. 여기서 lexical order는 document instance의 postorder traversal로 정의된다.

auto 값의 semantics는 [XSL-FO 1.1], §7.30.18에서 정의한 것과 같으며, 여기서 tt element는 root stacking context를 establish하는 것으로 간주된다.

이 속성과 연결된 property의 computed value가 지원되지 않는 경우, presentation processor는 closest supported value를 사용해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed z-index와 supported z-index 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 덜 먼 값, 즉 current stacking context의 base stack level에 가장 가까운 값이 사용된다.

tts:zIndex style은 다음 예제로 설명된다.

예제 조각 – Z Index
<region xml:id="r1">
  <style tts:origin="0px 0px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:zIndex="0"/>
</region>
<region xml:id="r2">
  <style tts:origin="100px 60px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
  <style tts:zIndex="1"/>
</region>
<region xml:id="r3">
  <style tts:origin="0px 120px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:zIndex="2"/>
</region>
<region xml:id="r4">
  <style tts:origin="100px 180px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
  <style tts:zIndex="3"/>
</region>
...
<p region="r1">
  I passed by his garden, and marked, with one eye,<br/>
  How the Owl and the Panther were sharing a pie.
</p>
<p region="r2">
  The Panther took pie-crust, and gravy, and meat,<br/>
  While the Owl had the dish as its share of the treat.
</p>
<p region="r3">
  When the pie was all finished, the Owl, as a boon,<br/>
  Was kindly permitted to pocket the spoon:
</p>
<p region="r4">
  While the Panther received knife and fork<br/>
  with a growl,<br/>
  And concluded the banquet by...
</p>

예제 렌디션 – Z Index
TTML zIndex style property

10.2.53 tta:gain

tta:gain 속성은 이 속성이 지정된 element의 active duration 동안 applicable audio content에 적용될 gain multiplier를 결정하는 audio style property를 지정하는 데 사용된다.

값: <number>
초기값: 1
적용 대상: audio, body, div, p, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete; continuous

이 속성의 specified value가 [-1,1] interval에 포함되지 않으면, 이 속성과 연결된 property의 computed value는 이 bounded interval로 clamped된다.

이 속성과 연결된 property의 computed value가 negative이면, gain은 computed value의 absolute value로 설정되고 phase inversion이 적용된다.

gain이 0이면 active audio content는 완전히 muted된다. gain이 1이면 active audio content의 amplitude는 수정되지 않는다. 그렇지 않으면 gain은 0보다 크고 1보다 작으며, 이 경우 combined active audio content에 relative attenuation이 적용된다. 여기서 이 attenuation은 [0,1] interval에서 linear하다.

tta:gain style은 다음 예제로 설명된다.

예제 조각 – Gain
<div>
  <audio src="#track1" tta:gain="0.5"/>
  <p tta:gain="0.3">
    <audio src="#track2" tta:gain="0.8"/>
  </p>
</div>

참고:

이 예제에서는 두 audio sources인 track1track2가 active하다. div element는 하나의 active audio track을 그 자식 p에 output으로 제공하고, 이 자식 p는 두 번째 active audio track을 결합하여 그 children에 대한 output을 형성한다. 또한 각 source audio와 p의 output에 서로 다른 gains가 지정되어, 최종 output은 0.3[0.5(track1) + 0.8(track2)]가 된다.

참고:

이 속성이 나타내는 style property의 semantics는 [WEBAUDIO], §2.7에서 정의한 것에 기반한다. 여기서 property가 지정된 element는 audio graph 안에 GainNode를 생성하며, 그 gain attribute는 같은 computed value를 가진다. 또한 audio generating element가 아닌 content element에 대한 input은 이 element의 parent element의 audio output과 모든 child audio generating elements의 combined(linearly summed) audio output의 합이다. 그렇지 않으면, 즉 audio generating element의 경우 input은 element가 generated한 audio이다.

10.2.54 tta:pan

tta:pan 속성은 이 속성이 지정된 element의 active duration 동안 applicable audio content에 적용될 stereoscopic pan vector를 결정하는 audio style property를 지정하는 데 사용된다.

값: <number>
초기값: 0
적용 대상: audio, body, div, p, span
상속됨: 아니요
백분율: N/A
애니메이션 가능: discrete; continuous

이 속성의 specified value가 [-1,1] interval에 포함되지 않으면, 이 속성과 연결된 property의 computed value는 이 bounded interval로 clamped된다.

이 속성과 연결된 property의 computed value가 negative이면, pan direction은 center의 왼쪽이다. pan value가 0이면 active audio content의 stereoscopic directionality는 수정되지 않는다. 그렇지 않으면 pan value는 positive이고, 이 경우 pan direction은 center의 오른쪽이다. 여기서 -1 값은 fully left를 지정하고 1 값은 fully right를 지정한다.

tta:pan style은 다음 예제로 설명된다.

예제 조각 – Pan
<div>
  <audio src="#track1" tta:pan="0.5"/>
  <p tta:pan="0.3">
    <audio src="#track2" tta:pan="0.8"/>
  </p>
</div>

참고:

이 예제에서는 두 audio sources인 track1track2가 active하다. div element는 하나의 active audio track을 그 자식 p에 output으로 제공하고, 이 자식 p는 두 번째 active audio track을 결합하여 그 children에 대한 output을 형성한다. 또한 각 source audio와 p의 output에 서로 다른 pans가 지정되어, 최종 output pan은 0.3[0.5(track1) + 0.8(track2)]가 된다.

참고:

이 속성이 나타내는 style property의 semantics는 [WEBAUDIO], §2.21에서 정의한 것에 기반한다. 여기서 property가 지정된 element는 audio graph 안에 StereoPannerNode를 생성하며, 그 pan attribute는 같은 computed value를 가진다. 또한 audio generating element가 아닌 content element에 대한 input은 이 element의 parent element의 audio output과 모든 child audio generating elements의 combined(linearly summed) audio output의 합이다. 그렇지 않으면, 즉 audio generating element의 경우 input은 element가 generated한 audio이다.

10.2.55 tta:pitch

tta:pitch 속성은 affected content에 대해 speech synthesis가 enabled될 때 speech pitch를 결정하는 audio style property를 지정하는 데 사용된다

값: <pitch>
초기값: 0%
적용 대상: span
상속됨:
백분율: input audio pitch에 상대적
애니메이션 가능: none

tta:pitch style은 다음 예제로 설명된다.

예제 조각 – Pitch
<p>Apply relative pitch adjustment to <span tta:pitch="+10hz">this</span> word.</p>

참고:

이 속성이 나타내는 style property의 semantics는 [SSML 1.0] §3.2.4에서 정의한 것에서 파생된다. 여기서 computed value와 같은 pitch attribute를 가진 prosody element에 상당하는 것이 spoken character content에 적용된다.

10.2.56 tta:speak

tta:speak 속성은 affected content에 대해 speech synthesis가 enabled되는지 여부와, enabled되는 경우 적용할 speech rate를 결정하는 audio style property를 지정하는 데 사용된다.

값: "none" | "normal" | "fast" | "slow"
초기값: none
적용 대상: span
상속됨:
백분율: N/A
애니메이션 가능: none

이 속성의 값이 none이면 affected content에 대해 speech synthesis가 disabled된다. 그렇지 않고 이 속성의 값이 normal, fast, 또는 slow이면, speech synthesis는 각각 normal, fast, 또는 slow speech rate로 enabled된다.

tta:speak style은 다음 예제로 설명된다.

예제 조각 – Speak
<p>Speak <span tta:speak="normal">this</span> word.</p>

참고:

이 속성이 나타내는 style property의 semantics는 [SSML 1.0] §3.2.4에서 정의한 것에서 파생된다. 여기서 computed value와 같은 rate attribute를 가진 prosody element에 상당하는 것이 spoken character content에 적용된다.

10.3 Styling Value Expressions

Style property values에는 다음 expressions의 사용이 포함된다:

10.3.1 <alpha>

<alpha> expression은 opacity value를 표현하는 데 사용되며, 여기서 0은 fully transparent를 의미하고 1은 fully opaque를 의미한다.

구문 표현 – <alpha>
<alpha>
  : float

위 syntax representation에서 syntactic element float[XML Schema Part 2], §3.2.4.1에서 정의한 lexical representation을 따라야 한다. 표현된 값이 0.0보다 작으면, 0.0과 같은 것으로 해석해야 한다. 마찬가지로 표현된 값이 1.0보다 크면, 1.0으로 해석해야 한다. NaN 값은 0.0으로 해석해야 한다.

<alpha>에 대한 specified value는 NaN이거나, 0보다 작거나, 1보다 커서는 안 된다.

presentation processor가 특정한 valid opacity value를 지원하지 않는 경우, 이를 closest supported value와 같은 것으로 해석해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 computed opacity와 supported opacity 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, 0으로부터 가장 먼 값, 즉 greatest opacity가 사용된다.

10.3.2 <annotation-color>

<annotation-color> expression은 ruby 또는 emphasis marks와 같은 text annotation marks의 color를 표현하는 데 사용된다.

구문 표현 – <annotation-color>
<annotation-color>
  : "current"
  | <color>
current

affected text의 tts:color computed value와 동등하다.

<color>

지정된 color.

implementation이 annotation color value를 recognize하지 못하거나 달리 구분하지 못하는 경우, 이는 current style이 지정된 것처럼 해석해야 한다. 따라서 text annotation marks를 지원하는 implementation은 최소한 current 값을 지원해야 한다.

10.3.3 <annotation-position>

<annotation-position> expression은 ruby 또는 emphasis marks와 같은 text annotation marks의 position을 표현하는 데 사용된다.

구문 표현 – <annotation-position>
<annotation-position>
  : "before"
  | "after"
  | "outside"
before

affected glyph areas의 before edge 쪽. horizontal writing mode가 적용되면, 이는 glyph areas의 top 쪽이다. vertical writing mode가 적용되면, 이는 tts:writingMode가 각각 tbrl 또는 tblr로 resolve되는지에 따라 glyph areas의 right 또는 left 쪽이다.

after

affected glyph areas의 after edge 쪽. horizontal writing mode가 적용되면, 이는 glyph areas의 bottom 쪽이다. vertical writing mode가 적용되면, 이는 tts:writingMode가 각각 tbrl 또는 tblr로 resolve되는지에 따라 glyph areas의 left 또는 right 쪽이다.

outside

annotated text를 포함하는 p 요소가 생성한 (1) 유일한 line area 또는 (2) 마지막 block area의 첫 번째 line area에 대해서는 before와 동등하다. 그렇지 않으면 after와 동등하다.

implementation이 annotation position value를 recognize하지 못하거나 달리 구분하지 못하는 경우, 이는 before position이 지정된 것처럼 해석해야 한다. 따라서 text annotation marks를 지원하는 implementation은 최소한 before 값을 지원해야 한다.

10.3.4 <border>

<border> expression은 하나 이상의 border style component expressions를 표현하는 데 사용된다.

구문 표현 – <border>

적어도 하나의 border style component가 존재해야 한다. 예를 들어 값이 none<border-style> component가 있을 수 있다. Component order는 중요하지 않다.

10.3.5 <border-color>

<border-color> expression은 하나 이상의 borders의 color를 표현하는 데 사용된다.

구문 표현 – <border-color>
<border-color>
  : <color>

10.3.6 <border-radii>

<border-radii> expression은 하나 이상의 borders의 radii를 표현하는 데 사용된다.

구문 표현 – <border-radii>
<border-radii>
  : "radii(" <lwsp>? <length> ( <lwsp>? "," <lwsp>? <length> )? <lwsp>? ")"

두 개의 <length> expressions가 지정되면, 첫 번째 length는 inline progression dimension(content의 경우) 또는 horizontal direction(region의 경우)에 대한 quarter ellipse radius에 대응하고, 두 번째 length가 있으면 block progression dimension(content의 경우) 또는 vertical direction(region의 경우)에 대한 quarter ellipse radius에 대응한다. 또는 하나의 length만 존재하면, 같은 값을 가진 두 lengths가 지정된 것처럼 해석된다.

10.3.7 <border-style>

<border-style> expression은 하나 이상의 borders의 style을 표현하는 데 사용된다.

구문 표현 – <border-style>
<border-style>
  : "none"
  | "dotted"
  | "dashed"
  | "solid"
  | "double"

dotted, dashed, 및 double의 해석은 implementation dependent인 것으로 간주된다.

implementation이 이러한 border style values 중 하나를 recognize하지 못하거나 달리 구분하지 못하는 경우, 이는 solid style이 지정된 것처럼 해석해야 한다. 따라서 borders를 지원하는 implementation은 최소한 solid 값을 지원해야 한다.

10.3.8 <border-thickness>

<border-thickness> expression은 하나 이상의 borders의 thickness를 표현하는 데 사용된다.

구문 표현 – <border-thickness>
<border-thickness>
  : "thin"
  | "medium"
  | "thick"
  | <length>

thin, medium, 및 thick의 해석은 implementation dependent인 것으로 간주된다. 그러나 resolved lengths는 다음 constraints를 따라야 한다: thickness(thin) < thickness(medium); thickness(medium) < thickness(thick).

border thickness가 <length>로 표현되면, percentage value의 형태를 가져서는 안 된다. 즉 scalar value의 형태를 가져야 한다.

10.3.9 <color>

<color> expression은 named color, exact RGB color triple 또는 exact RGBA color tuple을 지정하는 데 사용된다. 여기서 alpha component가 표현되면, 100% opacity에서는 maximum(255)이고 0% opacity에서는 minimum(0)이며, applicable color space는 [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 component values를 표현할 때, 이러한 값들은 alpha에 의해 premultiplied되지 않은 것으로 간주된다.

non-opaque 또는 non-transparent alpha 또는 opacity values가 적용되도록 presentation processing을 수행하는 목적상, compositing functions의 semantics는 composition function의 inputs와 outputs 모두에 [SRGB] color space를 사용하는 것과 관련하여 정의된다.

참고:

composition의 stated semantics를 위해 [SRGB]를 사용하는 것은 actual processor가 internal 또는 external 목적을 위해 다른 color space를 사용하는 것을 막으려는 의미가 아니다. 예를 들어, presentation processor는 여기서 사용되는 SRGB values를 television device에서 rendition하기 위해 최종적으로 YUV color space로 변환할 수 있다.

presentation processor가 특정한 valid color 또는 alpha value를 지원하지 않는 경우, 이를 closest supported value와 같은 것으로 해석해야 한다.

참고:

이 맥락에서 closest supported value라는 구는 RGB color space에서 computed color 및 alpha와 supported color 및 alpha 사이의 Euclidean distance가 최소화되는 값을 의미한다. computed value로부터 같은 거리의 closest supported values가 여러 개 있으면, opaque black rgba(0,0,0,255)로부터 가장 덜 먼 값, 즉 opaque black에 가장 가까운 값이 사용된다.

10.3.10 <digit>

<digit>은 integers 및 다른 types of numbers 또는 tokens를 표현하는 데 사용된다.

구문 표현 – <digit>
<digit>
  : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

10.3.11 <emphasis-color>

<emphasis-color> expression은 text emphasis marks의 color를 표현하는 데 사용된다.

구문 표현 – <emphasis-color>
<emphasis-color>
  : <annotation-color>

10.3.12 <emphasis-position>

<emphasis-position> expression은 text emphasis marks의 position을 표현하는 데 사용된다.

구문 표현 – <emphasis-position>
<emphasis-position>
  : <annotation-position>

10.3.13 <emphasis-style>

<emphasis-style> expression은 text emphasis marks의 style을 표현하는 데 사용된다.

구문 표현 – <emphasis-style>
<emphasis-style>
  : "none"
  | "auto"
  | ( "filled" | "open" ) || ( "circle" | "dot" | "sesame" )
  | <quoted-string>

text emphasis style values의 semantics는 다음과 같이 정의된다:

none

text emphasis mark 없음.

auto

vertical writing mode가 적용되면 filled sesame와 동등하다. 그렇지 않으면 filled circle과 동등하다.

filled

Emphasis mark는 emphasis color로 채워진다.

open

Emphasis mark는 채워지지 않는다. 즉 outline은 emphasis color로 stroked되지만 채워지지 않는다.

circle

Emphasis mark는 circle이다. filled이면 U+25CF '●'와 동등하고, open이면 U+25CB '○'와 동등하다

dot

Emphasis mark는 dot이다. filled이면 U+2022 '•'와 동등하고, open이면 U+25E6 '◦'와 동등하다

sesame

Emphasis mark는 sesame이다. filled이면 U+FE45 '﹅'와 동등하고, open이면 U+FE46 '﹆'와 동등하다

<quoted-string>

Emphasis mark는 string의 첫 번째 grapheme cluster이며, string의 remainder는 ignored된다.

filled 또는 open만 지정된 경우, 각각 filled circleopen circle과 동등하다.

circle, dot, 또는 sesame만 지정된 경우, 각각 filled circle, filled dot, 및 filled sesame와 동등하다.

implementation이 emphasis style value를 recognize하지 못하거나 달리 구분하지 못하는 경우, 이는 auto style이 지정된 것처럼 해석해야 한다. 따라서 text emphasis marks를 지원하는 implementation은 최소한 auto 값을 지원해야 한다.

10.3.14 <extent>

<extent> expression은 rectangular area의 dimensions를 지정한다.

구문 표현 – <extent>
<extent>
  : "auto"
  | "contain"
  | "cover"
  | <measure> <lwsp> <measure>

10.3.15 <family-name>

<family-name> expression은 font 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

위에 지정된 syntax rules를 따르는 것에 더해, 다음 semantic rules가 적용된다:

  • <family-name> expression의 semantic value는, 어느 것이 적용되는지에 따라, 그 unquoted-string 또는 quoted-string non-terminal의 semantic value이다;

  • unquoted-string non-terminal의 semantic value는 pair <quoted, content>이며, 여기서 quoted는 boolean false이고, content는 각 identifier non-terminal의 값을 lexical order로 append한 결과이다. 여기서 각 identifier의 값 앞에는 첫 번째 identifier가 아닌 경우 single SPACE (U+0020) character가 선행한다;

  • quoted-string non-terminal의 semantic value는 pair <quoted, content>이며, 여기서 quoted는 boolean true이고, content는 quoted string의 unquoted content, 즉 delimiting quotes 사이의 character sequence이다.

  • escape non-terminal의 semantic value는 escaped char의 value이다;

  • 두 개의 - HYPHEN-MINUS (U+002D) characters로 시작하는 identifier를 포함하는 unquoted-string 형태를 취하는 <family-name>은 invalid인 것으로 간주되어야 한다;

  • <generic-family-name>과 (case sensitive comparison으로) 일치하는 단일 identifier를 포함하는 unquoted-string 형태를 취하는 <family-name>은 해당 <generic-family-name>으로 해석해야 한다;

  • content(unquoted value)가 <generic-family-name>과 (case sensitive comparison으로) 일치하는 quoted-string 형태를 취하는 <family-name>은 해당 <generic-family-name>으로 해석해서는 안 되며, non-generic font family의 실제 name으로 해석해야 한다.

  • Syntactic element char[XML 1.0], §2.2에서 정의한 Char production에 따라 해석되어야 한다.

참고:

[CSS2], §4.1.1에서 정의한 {unicode} escape mechanism은 이 syntax에서 지원되지 않는다. 대신 authors는 (1) document encoding을 사용하여 character를 직접 encode하거나 (2) [XML 1.0], §4.1에 따라 XML character reference를 사용할 것으로 기대된다. syntactically significant character를 그 normal syntactic interpretation 없이 사용해야 하는 경우, 위에 지정된 backslash(reverse solidus) escape non-terminal을 사용하여 escape할 수 있다.

backslash(reverse solidus) escape non-terminal을 사용할 때, 위 syntax는 어떤 character가 escaped될 수 있는지에 대해 제한을 두지 않는다. 예를 들어 \\[\n\r\f0-9a-f]가 허용된다. 이러한 latter escapes 중 하나가 <family-name> expression에 나타나면, standard XSL-FO 또는 CSS parser와 함께 사용하려면 {unicode} escape로 변환해야 한다. 특히, newline이 뒤따르는 backslash는 CSS에서는 ignored되지만, 위 syntax에서는 ignored되지 않는다. 이러한 ignored되지 않는 escaped newline은 CSS에서 표현하기 위해 \a와 같은 equivalent {unicode} escape를 사용하여 표현해야 한다.

10.3.16 <font-families>

<font-families> expression은 font families의 non-empty list를 지정한다.

구문 표현 – <font-families>
<font-families>
  : font-family (<lwsp>? "," <lwsp>? font-family)*

font-family
  : <family-name>
  | <generic-family-name>

10.3.17 <font-size>

<font-size> expression은 하나 또는 두 개의 <length> expressions로 font size를 지정한다.

구문 표현 – <font-size>
<font-size>
  : <length> (<lwsp> <length>)?

10.3.18 <font-variant>

<font-variant> expression은 character to glyph mapping process에 영향을 주는 하나 이상의 keywords를 지정하며, 구체적으로 presentation processing을 수행할 때 (applicable font에서 available하면) variant glyph가 선택될지 여부 및 어떤 type의 variant glyph가 선택될지를 지정한다.

구문 표현 – <font-variant>
<font-variant>
  : "normal"
  | ("super" | "sub") || ("full" | "half") || "ruby"

normal 값이 적용되면, higher level protocol이 적용되지 않는 한, subscript, superscript, full, half 또는 ruby glyph variations 중 어느 것도 선택되지 않는다.

super keyword가 적용되면 superscript glyph variants가 선택된다(available한 경우). 예를 들어 OpenType font로 rendering할 때 OpenType sups feature가 enabled된다. sub keyword가 적용되면 subscript glyph variants가 선택된다(available한 경우). 예를 들어 OpenType font로 rendering할 때 OpenType subs feature가 enabled된다.

full keyword가 적용되면 full width glyph variants가 선택된다(available한 경우). 예를 들어 OpenType font로 rendering할 때 OpenType fwid feature가 enabled된다. half keyword가 적용되면 half width glyph variants가 선택된다(available한 경우). 예를 들어 OpenType font로 rendering할 때 OpenType hwid feature가 enabled된다.

ruby keyword가 적용되면 ruby glyph variants가 선택된다(available한 경우). 예를 들어 OpenType font로 rendering할 때 OpenType ruby feature가 enabled된다.

참고:

OpenType font의 정의는 [OFF]를 참조한다.

multiple variations가 적용되면, applicable variations의 최대 개수를 만족하는 glyphs가 선택된다. 예를 들어 superhalf variations가 모두 지정되면, superscript 및 half width variations로 동시에 지정된 glyphs가 선택된다(available한 경우). requested variations의 subsets만 만족될 수 있고, selected variation glyphs에 차이를 발생시키는 가능한 subset이 둘 이상 있으면, 어떤 subset이 적용되는지는 implementation dependent, 즉 document processing context에 의해 결정되는 것으로 간주된다.

10.3.19 <generic-family-name>

<generic-family-name> expression은 font families의 class를 나타내는 general token을 사용하여 font family를 지정한다.

generic family name을 concrete font instance로 resolve하는 것은 content authoring 및 content interpretation 모두의 경우에 implementation dependent인 것으로 간주된다.

구문 표현 – <generic-family-name>
<generic-family-name>
  : "default"
  | "monospace"
  | "sansSerif"
  | "serif"
  | "monospaceSansSerif"
  | "monospaceSerif"
  | "proportionalSansSerif"
  | "proportionalSerif"

generic (font) family name과 actual font 사이의 mapping은 이 명세에 의해 결정되지 않는다. 그러나 presentation을 수행할 때 가능하면 monospace 대 proportional 및 serif 대 sans-serif의 distinction이 유지되어야 한다.

monospace의 generic (font) family name이 지정되면, 이는 monospaceSansSerif 또는 monospaceSerif 중 하나와 동등하게 해석될 수 있다. generic family names sansSerifserif는 각각 proportionalSansSerifproportionalSerif와 동등하게 해석되어야 한다.

generic family name default가 지정되면(또는 initial value에 의해 implied되면), 그 typographic characteristics는 implementation dependent인 것으로 간주된다. 그러나 이 default font family는 monospaced, sans-serif font에 매핑하는 것이 권장된다.

10.3.20 <hex-digit>

<hex-digit>은 base 16 arithmetic을 사용하는 integers 및 다른 types of numbers 또는 tokens를 표현하는 데 사용된다.

parsing의 목적상, lower case와 upper case 사이의 distinction을 두어서는 안 된다.

구문 표현 – <hex-digit>
<hex-digit>
  : <digit>
  | "a" | "b" | "c" | "d" | "e" | "f"
  | "A" | "B" | "C" | "D" | "E" | "F"

10.3.21 <integer>

<integer> expression은 arbitrary, signed integral value를 표현하는 데 사용된다.

구문 표현 – <integer>
<integer>
  : ( "+" | "-" )? <non-negative-integer>

10.3.22 <length>

<length> expression은 cartesian space에서 point의 coordinate component 또는 cartesian space에서 두 points 사이의 distance를 표현하는 데 사용된다.

구문 표현 – <length>
<length>
  : scalar
  | <percentage>

scalar
  : <number> units

units
  : "px"
  | "em"
  | "c"                                     // abbreviation of "cell"
  | "rw"
  | "rh"

scalar length value의 units component를 생략하는 것은 error이다.

unit px (pixel)는 H.3 Coordinate Space에서 정의한 대로 document coordinate spacelogical pixel에 대응한다. 그러나 px (pixel) unit은 px (pixel) units를 사용하는 두 개의 <length> specifications로 구성된 tts:extent 속성이 tt element에 지정되지 않은 한, <length> expression에서 사용해서는 안 되며, 그것 없이 px (pixel) unit을 사용하는 것은 deprecated된다

size가 single length로 표현되거나 동일한 length의 two lengths로 표현되는 font에 상대적으로 지정될 때, unit em[XSL-FO 1.1], §5.9.13에서 정의한 것과 동일한 것으로 간주된다. 그러나 size가 같지 않은 two lengths로 표현되는 font에 상대적으로 지정될 때, one em은 inline progression direction에서 lengths를 지정하는 데 사용되는 경우 anamorphically scaled font의 inline progression dimension과 같고, block progression direction에서 lengths를 지정하는 데 사용되는 경우 scaled font의 block progression dimension과 같다.

달리 지정되지 않는 한, em unit은 em unit이 resolve되는 context의 element에 적용되는 tts:fontSize 속성과 연결된 property의 computed value와 관련하여 resolve된다.

unit c (cell)의 semantics는 parameter 7.2.1 ttp:cellResolution에 의해 정의된다.

root container relative units rwrh는 각각 root container region의 width 및 height의 one percent (1%)로 정의된다. 예를 들어 length 25rwroot container region width의 25%로 해석된다.

10.3.23 <lwsp>

<lwsp>는 common linear whitespace (LWSP) syntactic construct를 표현하는 데 사용된다.

구문 표현 – <lwsp>
<lwsp>
  : <whitespace>+

10.3.24 <measure>

<measure> value는 distance를 absolute dimension 또는 relative dimension으로 표현하며, use context가 어떤 dimension이 적용되는지를 결정한다.

두 absolute dimensions 중 하나인 height 또는 width가 적용되면, associated relative dimension인 bpd 또는 ipd는 applicable writing modetext orientation에 따라 결정되며, 아래에서 설명하는 것처럼 associated relative dimension이 specified value의 해석을 지배한다.

그렇지 않으면 두 relative dimensions 중 하나인 bpd 또는 ipd가 적용되며, 이 경우 해당 relative dimension이 아래 정의된 대로 speccified value의 해석을 지배한다.

구문 표현 – <measure>
<measure>
  : "auto"
  | "fitContent"
  | "maxContent"
  | "minContent"
  | <length>

이 values의 semantics는 다음과 같이 정의된다:

auto

ipd의 경우, image에 적용될 때는 inline progression direction의 intrinsic size; 그렇지 않으면 100% 값이 지정되었을 때 얻어지는 numeric value이다.

bpd의 경우, image에 적용될 때는 block progression direction의 intrinsic size; 그렇지 않으면 100% 값이 지정되었을 때 얻어지는 numeric value이다.

fitContent

(1) minContent의 value와 (2) maxContentauto values의 minimum 중 더 큰 값과 같은 numeric value.

maxContent

ipd의 경우, hard, 즉 mandatory break points에서만 lines가 broken되어 parent의 ipd를 overflow하더라도 element의 모든 content를 감싸는 maximum numeric value.

bpd의 경우, 모든 가능한 line break positions, 즉 hard(mandatory) 및 soft(optional) break points 모두에서 lines가 broken되어 element의 모든 content를 감싸는 maximum numeric value.

minContent

ipd의 경우, 모든 가능한 line break positions, 즉 hard(mandatory) 및 soft(optional) break points 모두에서 lines가 broken되어 element의 모든 content를 감싸는 minimum numeric value.

bpd의 경우, hard, 즉 mandatory break points에서만 lines가 broken되어 parent의 ipd를 overflow하더라도 element의 모든 content를 감싸는 minimum numeric value.

<length>

scalar 또는 percentage로 표현되는 non-negative numeric value.

10.3.25 <named-color>

<named-color>는 convenient name을 가진 RGBA color를 표현하는 데 사용되며, applicable color space는 [SRGB]에 의해 정의된다.

parsing의 목적상, lower case와 upper case 사이의 distinction을 두어서는 안 된다.

구문 표현 – <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를 제외하고, 위에 지정된 named colors의 집합은 [SVG 1.1], §4.2에서 지정한 named colors 집합의 proper subset을 구성한다.

10.3.26 <non-negative-integer>

<non-negative-integer> expression은 arbitrary, non-negative integral value를 표현하는 데 사용된다.

구문 표현 – <non-negative-integer>
<non-negative-integer>
  : <digit>+

10.3.27 <non-negative-number>

<non-negative-number> expression은 arbitrary, non-negative integer 또는 real valued number를 표현하는 데 사용된다.

구문 표현 – <non-negative-number>
<non-negative-number>
  : <non-negative-integer>
  | non-negative-real

non-negative-real
  : <digit>* "." <digit>+

10.3.28 <number>

<number> expression은 arbitrary, optionally signed integer 또는 real valued number를 표현하는 데 사용된다.

구문 표현 – <number>
<number>
  : sign? <non-negative-number>

sign
  : "+" | "-"

10.3.29 <origin>

<origin> expression은 rectangular area의 dimensions를 지정한다.

구문 표현 – <origin>
<origin>
  : "auto"
  | <length> <lwsp> <length>

10.3.30 <padding>

<padding> expression은 area의 padding rectangle에 적용되는 insets를 지정한다.

구문 표현 – <padding>

10.3.31 <percentage>

<percentage> expression은 arbitrary, signed integral 또는 real valued percentage를 표현하는 데 사용된다.

구문 표현 – <percentage>
<percentage>
  : <number> "%"

10.3.32 <pitch>

<pitch> value는 synthesized speech에 적용될 absolute 또는 relative pitch frequency adjustment를 표현한다.

구문 표현 – <pitch>
<pitch>
  : <percentage>
  | <number> pitch-units?

pitch-units
  : "hz" | "st"

<percentage>로 지정되면, output pitch(frequency)는 input pitch (frequency) * (1.0 + (percentage/100))이다. <number>로 지정되고 sign이 지정되면, sign이 positive(negative)인지에 따라 output pitch는 input pitch에서 positive(negative) 방향으로 adjusted된다. 그러나 sign이 지정되지 않으면 input pitch는 specified value로 설정된다. 즉 input pitch에 relative하지 않다. units component가 존재하면 Hertz(hz) 또는 semi-tones(st), 즉 standard diatonic scale의 half steps를 지정한다. units component가 지정되지 않으면 Hertz가 implied된다.

10.3.33 <position>

<position> expression은 reference area에 대한 area 또는 image의 origin을 간접적으로 결정하는 데 사용된다.

구문 표현 – <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> expression은 위 syntax에서 formally defined된 것처럼 하나부터 네 개의 component values로 구성될 수 있다:

one component

horizontal offset position 또는 vertical edge keyword 중 하나

two components

horizontal position offset 뒤의 vertical position offset, 또는 vertical position keyword 뒤의 horizontal position keyword

three components

horizontal edge offset 및 vertical position keyword, 또는 horizontal position keyword 및 vertical edge offset, 어느 순서든 가능

four components

horizontal edge offset 및 vertical edge offset, 어느 순서든 가능

모든 <position> expression은 다음 equivalence tables를 통해 left <length> top <length> 형식의 four component equivalent로 변환할 수 있다:

One Component Equivalents
Value Equivalent
center center center
left left center
right right center
top center top
bottom center bottom
<length> <length> center

Two Component Equivalents
Value Equivalent
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>

참고:

two component expression이 두 <length> values로 구성된 경우, possibly ambiguous interpretation을 피하기 위해, 위 table의 마지막 row에 표시된 것처럼 첫 번째는 horizontal length로, 두 번째는 vertical length로 해석된다.

Three Component Equivalents
Value Equivalent
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>

Four Component Equivalents
Value Equivalent
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> component가 percentage로 표현되면, 해당 percentage는 어떤 reference dimension과 관련하여 해석되며, 그 reference dimension은 use context에 의해 정의된다.

<position> expression의 <length> component는 positive 또는 negative일 수 있다. Positive lengths는 referenced edge로부터의 insets로 해석되고, negative lengths는 referenced edge로부터의 outsets로 해석된다. 예를 들어 left edge로부터의 inset은 (non-zero이면) 그 edge의 오른쪽에 위치하는 반면, left edge로부터의 outset은 (non-zero이면) 그 edge의 왼쪽에 위치한다. 반대로 right edge로부터의 inset은 (non-zero이면) 그 edge의 왼쪽에 위치하는 반면, right edge로부터의 outset은 (non-zero이면) 그 edge의 오른쪽에 위치한다. 유사한 arrangement가 topbottom edges에도 적용된다.

four component equivalent conversion을 수행할 때, expression (100% - <length-h>)는 100%와 <length-h> expression의 percentage equivalent 사이의 차이로 해석되어야 한다. 마찬가지로, expression (100% - <length-v>)는 100%와 <length-v> expression의 percentage equivalent 사이의 차이로 해석되어야 한다. 두 경우 모두 resulting difference는 negative percentage일 수 있다.

10.3.34 <ruby-reserve>

<ruby-reserve> expression은 ruby text content의 placement를 위한 공간을 reserve하는 데 사용된다.

구문 표현 – <ruby-reserve>
<ruby-reserve>
  : "none"
  | ("both" | <annotation-position>) (<lwsp> <length>)?

10.3.35 <shadow>

<shadow> value는 generated area에 적용할 shadow decoration을 표현한다. generated area가 glyph area이면, 이는 glyph의 outline에 적용된다 (glyph area bounding box가 아님). generated area가 glyph area가 아니면, 이는 area의 border rectangle에 적용된다.

구문 표현 – <shadow>

shadow value expression은 두 개에서 세 개의 <length> terms와 optional <color> term으로 구성되며, terms는 linear white space (LWSP)로 서로 구분된다.

첫 번째 <length> term은 associated area의 horizontal axis dimension을 따른 offset을 나타내며, positive는 right edge 쪽, negative는 left edge 쪽을 나타낸다. 두 번째 <length> term은 associated area의 vertical axis dimension을 따른 offset을 나타내며, positive는 bottom edge 쪽, negative는 top edge 쪽을 나타낸다. 세 번째 <length> term이 있으면 blur radius를 나타내며, non-negative이어야 한다.

blur radius가 지정되지 않은 경우, 즉 두 개의 <length> terms만 존재하는 경우, 0px의 computed value가 적용된다.

<color> term이 존재하지 않으면, tts:color property의 computed value가 적용된다.

참고:

cells로 표현된 <length>tts:textShadow 값에서 사용될 때, block progression dimension에서 cell의 dimension이 적용된다. 예를 들어 text shadow thickness가 0.1c로 지정되고, cell resolution이 20 by 10이며, root container region의 extent가 640 by 480이면, shadow thickness는 rasterization effects를 고려하지 않고 nominal 480 / 10 * 0.1 pixels, 즉 4.8px가 된다.

10.3.36 <text-combine>

<text-combine> expression은 vertical text에서 text combination effects의 behavior를 결정하는 데 사용된다.

구문 표현 – <text-combine>
<text-combine>
  : "none"
  | "all"

10.3.37 <text-decoration>

<text-decoration> expression은 text decoration effects의 behavior를 결정하는 데 사용된다.

구문 표현 – <text-decoration>
<text-decoration>
  : "none"
  | (("underline" | "noUnderline") || ("lineThrough" | "noLineThrough") || ("overline" | "noOverline"))

10.3.38 <text-emphasis>

<text-emphasis> expression은 text emphasis effects의 behavior를 결정하는 데 사용된다.

구문 표현 – <text-emphasis>

10.3.39 <text-outline>

<text-outline> expression은 text outline effects의 behavior를 결정하는 데 사용된다.

구문 표현 – <text-outline>
<text-outline>
  : "none"
  | (<color> <lwsp>)? <length> (<lwsp> <length>)?

10.3.40 <text-shadow>

<text-shadow> expression은 text shadow effects의 behavior를 결정하는 데 사용된다.

구문 표현 – <text-shadow>
<text-shadow>
  : "none"
  | <shadow> (<lwsp>? "," <lwsp>? <shadow>)*

10.3.41 <whitespace>

<whitespace> value는 common whitespace characters를 표현하는 데 사용된다.

구문 표현 – <whitespace>
<whitespace>
  : ( " " | "\t" | "\n" | "\r" )

10.4 Styling Semantics

이 section은 다음과 같은 standard processing model의 관점에서 style resolution의 semantics를 정의한다:

externally observable results가 이 model이 생성한 results와 일관된다면, 이 model의 어떤 implementation도 허용된다.

참고:

여기서 사용되는 style resolution의 semantics는 [XSL-FO 1.1], §5에 기반한다.

10.4.1 Style Association

Style association은 각 content 및 layout element의 specified style set을 결정하는 데 사용되는 10.4.4 Style Resolution Processing의 sub-process이다.

Style matter는 여러 방식으로 content 및 layout matter와 associate될 수 있다:

위에 더해, style matter는 다음을 사용하여 layout matter와 associate될 수 있다:

10.4.1.1 Inline Styling

Style properties는 affected element에서 TT Style Namespaces의 attribute를 직접 지정하여 inline 방식으로 표현될 수 있다. 이러한 방식으로 표현될 때, style information의 association은 inline styling이라고 한다.

inline styling으로 associated된 Style properties는 다른 모든 style association 형식보다 더 높은 priority를 가진다.

예제 – Inline Styling
<p tts:color="white">White 1 <span tts:color="yellow">Yellow</span> White 2</p>

참고:

위 예제에서 anonymous spans로 해석되는 두 text nodes "White 1 "" White 2"는 color style property와 associated되지 않는다. 대신 아래 10.4.2.1 Content Style Inheritance에서 설명한 대로 parent p element로부터 color style을 inherit한다.

10.4.1.2 Referential Styling

Style properties는 out-of-line 방식으로 표현될 수 있으며, affected element가 style attribute를 사용하여 reference할 수 있다. 이러한 방식으로 표현될 때 style information의 association은 referential styling이라고 한다.

style attribute가 multiple references를 지정하면, 그 references는 specified order로 evaluated되며, 동일한 style property가 여러 reference paths를 따라 지정되는 경우 그 order가 style property value의 resolution에 적용된다.

referential styling의 사용은 styling element의 descendant인 style element를 reference하는 것으로 제한된다. layout element의 descendant인 style element를 reference하는 것은 error로 간주된다.

참고:

referential styling의 사용은 locality of reference를 희생하면서 style specifications의 reuse를 장려한다.

참고:

content element는 inline 및 referential styling의 hybrid mixture를 통해 style properties와 associated될 수 있으며, 이 경우 위 10.4.1.1 Inline Styling에서 설명한 대로 inline styling에 priority가 부여된다.

예제 – Referential Styling
<style xml:id="s1" tts:color="white"/>
<style xml:id="s2" tts:color="yellow"/>
...
<p style="s1">White 1 <span style="s2">Yellow</span> White 2</p>

참고:

위 예제에서 anonymous spans로 해석되는 두 text nodes "White 1 "" White 2"는 color style property와 associated되지 않는다. 대신 아래 10.4.2.1 Content Style Inheritance에서 설명한 대로 parent p element로부터 color style을 inherit한다.

10.4.1.3 Chained Referential Styling

Style properties는 out-of-line 방식으로 표현될 수 있으며, 그 자체가 다른 out-of-line style properties를 reference할 수 있다. 따라서 affected element에서 시작하는 reference chain을 생성한다. 이러한 방식으로 표현될 때 style information의 association은 chained referential styling이라고 한다.

chained style references sequence 안의 loop는 error로 간주되어야 한다.

referential styling의 사용은 styling element의 descendant인 style element를 reference하는 것으로 제한된다. layout element의 descendant인 style element를 reference하는 것은 error로 간주된다.

참고:

chained referential styling의 사용은 style specifications를 general 및 specific sets로 grouping하는 것을 장려하며, 이는 style specification reuse를 더욱 돕는다.

참고:

content element는 inline, referential styling, 및 chained referential styling의 hybrid mixture를 통해 style properties와 associated될 수 있으며, 이 경우 10.4.1.1 Inline Styling에서 위에 설명한 대로 inline styling에 priority가 부여된다.

예제 – Chained Referential Styling
<style xml:id="s1" tts:color="white" tts:fontFamily="monospaceSerif"/>
<style xml:id="s2" style="s1" tts:color="yellow"/>
...
<p style="s1">White Monospace</p>
<p style="s2">Yellow Monospace</p>

참고:

위 예제에서 두 번째 paragraph의 text는 yellow이다. 이는 tts:color='yellow'가 style s2가 style s1에 대한 reference로 얻는 tts:color='white'를 effectively overwrites(is merged over)하기 때문이다.

10.4.1.4 Nested Styling

Style properties는 affected element의 하나 이상의 style element children을 직접 지정하여 nested 방식으로 표현될 수 있다. 이러한 방식으로 표현될 때 style information의 association은 nested styling이라고 한다.

nested styling으로 associated된 Style properties는 inline styling보다 낮은 priority를 가지지만 referential styling보다 높은 priority를 가진다.

예제 – Nested Styling
<region xml:id="r1">
  <style tts:extent="128px 66px"/>
  <style tts:origin="0px 0px"/>
  <style tts:displayAlign="center"/>
</region>

참고:

이 TTML 버전에서 nested styling은 region element에만 적용된다.

10.4.2 Style Inheritance

Style inheritance는 각 content 및 layout element의 specified style set을 결정하는 데 사용되는 10.4.4 Style Resolution Processing의 sub-process이다.

Styles는 다음을 사용하여 content matter로 further propagated된다:

inherited styles를 결정하기 위한 목적으로, document instance의 intermediate synchronic document form의 element hierarchy를 사용해야 하며, 이러한 intermediate forms는 11.3.1.3 Intermediate Synchronic Document Construction에서 정의된다.

참고:

intermediate synchronic document form은 region inheritance processing을 용이하게 하기 위해 original form 대신 사용된다.

10.4.2.1 Content Style Inheritance

Style properties는 intermediate synchronic document 안에서 ancestor content elements로부터 inherited된다. 이는 style property가 content element(또는 anonymous span)와 associated되지 않고, 해당 style property가 inheritable로 designated된 경우이다.

style property가 inheritance를 require하는 것으로 결정되면, inherited value는 applicable intermediate synchronic document 안에서 해당 property를 define하는 element의 nearest ancestor element의 computed style set 안의 same named style property 값이어야 한다.

예제 – Content Style Inheritance
<p tts:fontFamily="monospaceSansSerif">
  <span tts:color="yellow">Yellow Monospace</span>
</p>

참고:

위 예제에서 character items Yellow Monospace를 감싸는 span element는 tts:fontFamily style property를 지정하지 않고, 이 property는 inheritable이다. 따라서 tts:fontFamily style의 value는 ancestor p element의 computed style set으로부터 inherited되어, span element의 specified style set에 추가된다.

10.4.2.2 Region Style Inheritance

Style properties는 다음 경우에 region element로부터 inherited된다:

  1. inheritable style property Pcontent element 또는 anonymous span E와 associated되지 않고,

  2. 그 style property P가 region R의 computed style set 안에 있으며,

  3. 그 element E가 region R으로 flowed into(presented within)되는 경우.

예제 – Region Style Inheritance
<region xml:id="r1">
  <style tts:color="yellow"/>
  <style tts:fontFamily="monospaceSerif"/>
</region>
...
<p region="r1">Yellow Monospace</p>

참고:

위 예제에서 character items Yellow Monospace를 감싸는 anonymous spanp element가 flowed(presented)되는 region element에 지정된 tts:colortts:fontFamily styles를 effectively inherit한다.

10.4.3 Style Resolution Value Categories

style resolution, layout, 및 presentation processing 동안, style property values의 세 categories는 다음과 같이 distinguished된다:

10.4.3.1 Specified Values

element 또는 anonymous span와 associated되거나 inherited된 style property의 value는 specified value라고 한다. 주어진 element의 모든 specified style properties의 set은 그 element의 specified style set이라고 한다.

10.4.3.2 Computed Values

style properties가 named color, relative unit(e.g., cell), 또는 percentage와 같은 relative value expressions를 사용하여 specified되면, RGB triple, pixels 등과 같은 absolute units로 further resolved되어야 한다.

style resolution process 동안 specified style value는 absolute terms로 reinterpreted(또는 recalculated)된 다음 computed values로 recorded될 수 있다. 주어진 element의 모든 computed style properties의 set은 그 element의 computed style set이라고 한다.

style value가 explicitly 또는 implicitly inherited될 때, 이는 ancestor element로부터 inherited된 style의 computed value이다. 이는 percentage와 같은 특정 relative units의 resolution이, related(resolving) expression이 available하지 않은 distant(remote) context of reference가 아니라, immediate(local) context of reference에서 expression을 evaluate해야 하기 때문에 required된다.

10.4.3.3 Used Values

style inheritance 이후에, computed value는 특정 property의 semantics에 의해 그러한 resolution이 required되거나 resolution을 수행하는 데 필요한 information이 layout 또는 presentation processing이 발생할 때까지 available하지 않은 경우, layout 또는 presentation time에 further resolution을 require할 수 있다. 이러한 value는 used value라고 하며, 아래 설명하는 final actual value와 같은 value일 필요는 없다.

참고:

used value의 determination은 항상 computed value의 inheritance 뒤에 온다. 즉, used value computation은 nominally 10.4.4.4 Style Resolution Process가 완료된 후 수행된다.

참고:

[CSS2], §6.1.3도 참조한다.

10.4.3.4 Actual Values

actual presentation process 동안, 일부 value expressions를 concrete, physical values로 map하는 다른 transformations가 발생한다. 예를 들어, computed style values의 colors는 display process 동안 closest color approximation 및 gamma correction의 대상이 된다. 또한 computed style values에서 pixels를 사용하는 length value expressions는 physical(device) pixels가 아니라 logical pixels를 표현하는 것으로 간주된다. 따라서 이러한 logical pixels는 presentation 동안 physical(device) pixels로 further transformed 또는 mapped될 수 있다.

logical to device mapping process에서 resulting되는 final value는 actual value라고 한다. 주어진 element의 모든 actual style properties의 set은 그 element의 actual style set이라고 한다.

참고:

presentation process 동안 하나 이상의 actual values set이 생성될 수 있다. 예를 들어 TTML presentation processor device가 RGBA component video signal을 output하고, 이것이 NTSC 또는 PAL television에 의해 final image를 생성하도록 further transformed될 수 있다. 이 경우 color와 dimensions 모두 presentation 전에 further modified될 수 있다.

참고:

일반적으로 TTML presentation processor는 actual style set values에 access하지 못한다. 그 결과 아래에서 style resolution process를 formally describing할 때 actual values에 대한 further use 또는 reference는 이루어지지 않는다.

10.4.4 Style Resolution Processing

style resolution process는 content 및 layout elements에 적용되는 모든 style properties의 computed values를 resolving(determining)하기 위한 procedure(및 그 results)로 여기서 정의된다:

여기서 설명하는 process는 11.3.1 Region Layout and Presentation의 integral sub-process를 형성한다.

10.4.4.1 Conceptual Definitions

아래에 지정된 style resolution processing model을 해석하기 위한 목적으로, 다음 conceptual definitions가 적용된다:

[style property]

style property P는 tuple [name, value]로 구성되는 것으로 간주되며, 여기서 property의 name은 tuple [namespace value, unqualified name]이고 property의 value는 tuple [category, type, value expression]이다

예제 – conceptual style property
[
  ["http://www.w3.org/ns/ttml#styling", "color"],
  ["specified", color, "red"]
]

[style (property) set]

style (property) set은 unordered collection of style properties로 구성되며, set 안의 두 style properties는 identical name을 가지지 않는다. 여기서 "identical name"은 name tuple의 namespace value 및 name tuple의 unqualified name이 같은 것을 의미한다;

specified style (property) set에서 각 style property의 category는 "specified"이다. element E의 specified style (property) set은 SSS(E)라고 한다;

예제 – conceptual (specified) style (property) set
{
  [
    ["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%" ]
  ]
}

computed style (property) set에서 각 style property의 category는 "specified" 또는 "computed" 중 하나이다. element E의 computed style (property) set은 CSS(E)라고 한다;

예제 – conceptual (computed) style (property) set
{
  [
    ["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" ]
  ]
}

[style (property) merging]

style property Pnew는 style (property) set SS로 다음과 같이 merged된다: Pnew의 name이 Pold의 name과 identical한 style property Pold가 이미 SS 안에 존재하면, SS 안의 PoldPnew로 replace한다. 그렇지 않으면 PnewSS에 add한다;

[style (property) set merging]

style (property) set SSnew는 existing style (property) set SSold로 다음과 같이 merged된다: SSnew 안의 각 style property Pnew에 대해, PnewSSold로 merge한다;

10.4.4.2 Specified Style Set Processing

element 또는 anonymous span E의 specified style set SSS, 즉 SSS(E)는 다음 ordered rules에 따라 결정된다:

  1. [initialization] E의 specified style set SSS를 empty set으로 initialize한다;

  2. [referential and chained referential styling] E에 지정된 style attribute가 reference하는 각 style element SREF에 대해, 그리고 style attribute에 지정된 order로, 만약 SREFstyling element의 descendant이면, SREF의 specified style set SSS(SREF)E의 specified style set SSS(E)로 merge한다;

  3. [nested styling] Econditionally excluded되지 않은 경우, E의 각 nested conditionally included style element child SNEST에 대해, child elements의 specified order로, SNEST의 specified style set SSS(SNEST)E의 specified style set SSS(E)로 merge한다;

  4. [inline styling] Econditionally excluded되지 않은 경우, E의 specified styling attribute로 표현된 각 style property P에 대해, PE의 specified style set SSS(E)로 merge한다;

  5. [animation styling] E의 element type이 inline animation element가 아니면, element E의 각 conditionally included inline animation element child A에 대해, A의 specified style set SSS(A)E의 specified style set SSS(E)로 merge한다;

  6. [implicit inheritance and initial value fallback] E의 element type이 animation element type animate 또는 set도 아니고 styling element type style도 아니면, 위 10.2 Styling Attribute Vocabulary에서 정의된 style properties의 set 안의 각 style property P에 대해, 다음 ordered sub-steps를 수행한다:

    1. PE의 specified style set SSS(E) 안에 존재하면, next style property로 continue한다;

    2. P가 inheritable이고 Eregion element가 아니면, 다음을 수행한다:

      • P′E의 nearest ancestor element NEAREST-ANCESTOR(E)의 computed style set에서 P의 value를 looking up한 result로 set한다. 단, CSS(NEAREST-ANCESTOR(E))P의 definition을 contain해야 한다;

    3. (1) P가 inheritable이고 Eregion element이거나, (2) P가 inheritable이 아니고 PE에 적용되면, 다음을 수행한다:

      • P′를 property P의 initial value로 set한다. 여기서 property의 initial value는 다음과 같이 결정된다:

        1. initial element가 P의 initial value를 define하면, 그 value를 사용한다;

        2. 그렇지 않으면, 위 10.2 Styling Attribute Vocabulary에서 찾은 P의 property definition이 지정한 initial value를 사용한다;

    4. P′의 value가 undefined가 아니면, P′E의 specified style set SSS(E)로 merge한다.

10.4.4.3 Computed Style Set Processing

element 또는 anonymous span E의 computed style set CSS, 즉 CSS(E)는 다음 ordered rules에 따라 결정된다:

  1. [resolve specified styles] 10.4.4.2 Specified Style Set Processing에 따라 E의 specified style set SSS, 즉 SSS(E)를 determine(obtain)한다;

  2. [initialization] CSS(E)SSS(E)의 (deep) copy로 initialize한다;

  3. [filter] Eanimate, set, 또는 style element이면, further resolution 없이 CSS(E)를 resulting computed style set으로 return한다. 그렇지 않으면 next rule로 continue한다;

  4. [relative value resolution] CSS(E) 안의 각 style property PP의 value type이 relative인 것에 대해, 다음 ordered sub-steps를 수행한다:

    1. 가능하면 P의 relative value를 equivalent, non-relative(computed) value로 replace한다;

    2. P의 category를 "computed"로 set한다;

참고:

위 filtering rule의 result로, animate, set, 또는 style element의 computed style set은 specified values만 포함하며, 이 경우 relative value expressions는 relative로 남는다. 따라서 relative value expressions의 resolution(이는 referential style association을 통해 assigned될 수 있음)은 항상 presentation context를 가진 layout 또는 content element의 context에서 일어나며, animate, set, 또는 referable style element의 non-presentation, declaration context에서 일어나지 않는다.

참고:

위 relative value resolution rule은 relative value를 resolve하지 못할 수 있다. 예를 들어 resolution이 layout 또는 presentation time까지 발생할 수 없는 경우, computed value의 further resolution이 used value를 얻기 위해 required될 수 있다.

10.4.4.4 Style Resolution Process

top-level style resolution process는 다음과 같이 정의된다: intermediate synchronic document DOCinter의 각 element 및 anonymous span E에 대해 preorder traversal을 사용하여, 다음 ordered sub-steps를 수행한다:

  1. [filter] E가 다음 중 하나가 아니면, preorder traversal에서 next element로 continue한다. 즉, 아래 subsequent step을 E에 수행하지 않는다:

  2. [resolve computed styles] 10.4.4.3 Computed Style Set Processing에 따라 E의 computed style set CSS, 즉 CSS(E)를 determine(obtain)한다.

10.4.5 Style Procedures

이 section은 이 specification의 다른 곳에서 referenced되는 miscellaneous style related procedures를 정의한다.

10.4.5.1 Containment Calculations
[compute containment scaling](inout target rectangle TR, in reference rectangle RR)
  1. target rectangle TR 및 reference rectangle RR의 units가 같지 않으면, error condition을 raise한다.

  2. target rectangle TR의 width, Wt가 zero이면, Wt를 one으로 set한다. 마찬가지로, target rectangle TR의 height, Ht가 zero이면, Ht를 one으로 set한다.

  3. SARr를 reference rectangle RR의 storage aspect ratio라고 하자.

  4. SARt를 target rectangle TR의 storage aspect ratio라고 하자.

  5. scaling factor SF를 다음과 같이 determine한다:

    1. SARrSARt보다 작거나 같으면, SFWr / Wt이다. 여기서 WrWt는 각각 reference 및 target rectangles의 widths이다.

    2. 그렇지 않으면 SARrSARt보다 크며, 이 경우 SFHr / Ht이다. 여기서 HrHt는 각각 reference 및 target rectangles의 heights이다.

  6. SF1.0과 같지 않으면, WtSF * Wt로 set하고 HtSF * Ht로 set한다. 즉 target rectangle TR을 scale factor SF로 in place scale한다.

참고:

위 algorithm을 implementing하기 위한 목적으로, storage aspect ratios 및 scaling factors는 적어도 7 significant decimal digits를 제공하는 form으로 represented되어야 한다.

10.4.5.2 Cover Calculations
[compute cover scaling](inout target rectangle TR, in reference rectangle RR)
  1. target rectangle TR 및 reference rectangle RR의 units가 같지 않으면, error condition을 raise한다.

  2. target rectangle TR의 width, Wt가 zero이면, Wt를 one으로 set한다. 마찬가지로, target rectangle TR의 height, Ht가 zero이면, Ht를 one으로 set한다.

  3. SFW WR /WT 라고 하자. 여기서 WR WT 는 각각 reference rectangle RR 및 target rectangle TR의 widths이다.

  4. SFH HR /HT 라고 하자. 여기서 HR HT 는 각각 reference rectangle RR 및 target rectangle TR의 heights이다.

  5. SFW SFH 가 모두 one보다 크면, SFSFW SFH 중 lesser로 한다. 그렇지 않으면 SFSFW SFH 중 greater로 한다.

  6. SF1.0과 같지 않으면, WtSF * Wt로 set하고 HtSF * Ht로 set한다. 즉 target rectangle TR을 scale factor SF로 in place scale한다.

참고:

위 algorithm을 implementing하기 위한 목적으로, scaling factors는 적어도 7 significant decimal digits를 제공하는 form으로 represented되어야 한다.

10.4.5.3 Shear Calculations

shear value가 0%이면 shear transformation이 적용되지 않는다. value가 100%이면 inline progression direction과 associated된 axis에서 90 degrees의 2D shear transformation이 적용된다. value가 -100%이면 -90 degrees의 shear transformation이 적용된다. specified percentage의 absolute value가 100%보다 크면, appropriate sign을 가진 100%가 specified된 것처럼 해석해야 한다.

참고:

resulting shear angle의 absolute value가 90 degrees이면, shear angle의 used valueused value의 tangent가 defined되도록 some small epsilon만큼 reduced된다.

inline progression direction이 X axis에 대응하면, 2D shear transformation은 다음 matrix로 설명된다:

| 1 a 0 |
| 0 1 0 |
| 0 0 1 |

여기서 a는 shear angle의 tangent와 같다.

inline progression direction이 Y axis에 대응하면, 2D shear transformation은 다음 matrix로 설명된다:

| 1 0 0 |
| a 1 0 |
| 0 0 1 |

11 Layout

이 section은 core vocabulary catalog의 layout matter를 지정한다. 여기서 layout은 content에 적용되고 해당 content의 presentation에 대한 authorial intentions를 나타내는 separable layer of information으로 이해되어야 한다.

참고:

layout 및 style matter라는 두 layers는 독립적으로 separable한 것으로 간주된다. Layout matter는 content가 presentation될 의도인 하나 이상의 spaces 또는 areas를 지정하는 반면, style matter는 layout 안에서 presentation이 발생하는 방식을 지정한다.

특정 경우에 content author는 style matter를 layout 또는 content matter 안에 직접 embed(inline)하도록 선택할 수 있다. 이러한 경우에는 alternative, 즉 style matter가 embedded(inlined)되지 않는 referential styling의 사용이 존재한다.

11.1 Layout Element Vocabulary

다음 elements는 document instance의 structure와 principal layout aspects를 지정한다:

11.1.1 layout

layout element는 layout matter에 적용되는 metadata를 포함하여 out-of-line layout matter를 grouping하는 데 사용되는 container element이다.

layout element는 그 children으로 Metadata.class element group의 zero or more elements를 허용하고, 그 뒤에 zero or more region elements를 허용한다.

XML Representation – Element Information Item: layout
<layout
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, region*
</layout>

layout element의 content에 time semantics가 적용되는 범위에서, 이 element의 implied time interval은 root temporal extent와 coterminous한 것으로 정의된다.

11.1.2 region

region element는 presentation의 목적으로 content가 flowed될 rectangular space 또는 area를 정의하는 데 사용된다.

region element는 (1) layout element의 child 또는 (2) Block.class element group의 elements의 child로 나타날 수 있다. 전자의 경우 region은 out-of-line region이라고 하고, 후자의 경우 inline region이라고 한다.

또한 10.4.2.2 Region Style Inheritance에 따라, region element는 그 안으로 flowed되는 content가 inherit할 inheritable style properties를 지정하는 데 사용될 수 있다.

region element는 그 children으로 Metadata.class element group의 zero or more elements를 허용하고, 그 뒤에 Animation.class element group의 zero or more elements를 허용하며, 그 뒤에 zero or more style elements를 허용한다.

Metadata.class element group의 children이 지정한 metadata는 region element와 그 descendants 전체에 semantically 적용된다. Animation.class element group의 children이 지정한 animation elements는 region element에 semantically 적용된다. 모든 style child element는 containing region element에만 적용되는 local style definition으로 간주되어야 한다. 즉 referential styling을 resolving하는 데는 적용되지 않지만, region style inheritance에는 적용된다.

XML Representation – Element Information Item: region
<region
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  style = IDREFS
  timeContainer = ("par" | "seq")
  ttm:role = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*, Animation.class*, style*
</region>

out-of-line region element는 xml:id attribute를 지정해야 한다.

out-of-line region element는 timing attributes인 begin, end, dur 중 하나 이상을 지정할 수 있다. inline region element는 timing attribute를 지정해서는 안 되며, 지정된 경우 presentation processing의 목적으로 ignored되어야 한다.

begin 및(또는) end attributes가 out-of-line region element에 지정되면, 그것들은 region이 activation에 eligible하고 region의 animation child elements가 timed되는 time interval의 beginning 및(또는) ending points를 지정한다. 지정된 경우 이러한 begin 및 end points는, 그 interval이 explicit인지 implied인지와 관계없이, time interval과 associated된 nearest ancestor element의 time interval에 상대적이다. time interval과 associated된 out-of-line region element의 nearest ancestor element는 layout element이다. dur attribute가 out-of-line region element에 지정되면, 이는 region의 simple duration을 지정한다.

inline region element의 active time interval은 그 parent content element의 active time interval이다.

presentation processing의 semantics를 결정하기 위한 목적으로, temporally inactive인 region은 visual medium에 presented될 때 visible marks를 생성해서는 안 된다.

참고:

out-of-line region element는 두 가지 목적으로 time interval과 associated될 수 있다: (1) region 및 그 content의 presentation을 temporally bound하기 위해, 그리고 (2) region styles의 animations가 effected될 수 있는 temporal context를 제공하기 위해서이다.

예를 들어 author는 otherwise empty이지만 어떤 time에 시작되어 region의 duration 동안 continuing하여 presented될 visible background color를 가질 수 있는 out-of-line region element를 지정하고자 할 수 있다. region의 simple duration은 region을 target으로 하는 content의 presentation effects를 scope하는 역할도 한다. Author는 animation effects를 통해 root container region 안에서 region을 이동하거나 region의 background color를 변경하고자 할 수도 있다. 이 두 경우 모두 region에 대해 active time interval을 posit할 필요가 있다.

out-of-line regions와 달리, inline regions는 그 parent content elements의 temporal context에 specifically bound되므로, independent timing의 specification을 require하지도 admit하지도 않는다.

region element에 timeContainer attribute가 지정되지 않으면, 이는 parallel time containment semantics를 가지는 것으로 해석되어야 한다.

tts:origintts:position attributes가 모두 region element에 존재하면, tts:origin은 presentation processing의 목적으로 ignored되어야 한다. tts:origintts:position attribute가 어느 것도 존재하지 않으면, tts:position attribute의 initial value semantics가 presentation processing의 목적으로 적용된다.

ttm:role attribute가 region element에 지정되면, 이는 Syntax Representation – ttm:role에서 정의한 value syntax를 따라야 하며, 이 attribute가 식별한 roles는 region의 semantic roles를 그 region을 target으로 하는(associated with) 어떤 content의 semantic roles와 독립적으로 표현한다.

11.1.2.1 Special Semantics of Inline Animation

div 또는 p element E에 지정될 때, 다음 style attributes는 아래에서 further specified되는 대로 E와 associated된 region R에 예외적으로 적용된다:

이러한 경우, 각 style attribute의 application은 set animation element A의 form을 취하는 anonymous inline animation과 equivalent한 것으로 간주된다. 여기서 animation은 E의 active time interval과 equivalent한 active time interval 동안 R에 적용되며, multiple animation elements (Ai, ..., Aj)가 이미 R에 적용되는 경우, A는 이러한 existing animations 중 마지막 것, 즉 Aj 직후에 subsequent하게 적용된다.

참고:

같은 style attribute의 multiple anonymous inline animations가 어떤 region R에 적용되는 경우, 해당 set animation elements Aj, ..., Ak는 이러한 animations를 생성한 elements Ej, ..., Ek의 pre-order traversal order에 따라 R에 added된다.

또한 given element의 specific style attribute에 multiple animations를 적용하는 semantics는 10.4.4.2 Specified Style Set Processing의 step (5), [animation styling]에 의해 governed된다는 점에 유의한다.

이 special semantics는 tts:extent style attribute를 사용하는 다음 model example로 묘사되지만, 이 model은 위에 나열된 모든 style attributes에 generally 적용된다:

예제 – Region의 Anonymous Inline Animation - Input Fragment
<region xml:id="r1" tts:extent="80% 10%" .../>
...
<p region="r1" begin="10s" end="12s" tts:extent="70% 20%">change extent</p>

위 input fragment example에서 tts:extent attribute가 paragraph(p) element에 지정되며, 일반성을 잃지 않고 time interval [10s,12s)에 assigned된다. 이 attribute는 다음 output fragment에서 set element 형식의 anonymous animation을 synthesize하는 데 사용되며, attribute는 equivalent timing attributes와 함께 set element로 copied된다. 그런 다음 original tts:extent는 paragraph(p)에서 removed된다.

예제 – Region의 Anonymous Inline Animation - Equivalent Output Fragment
<region xml:id="r1" tts:extent="80% 10%" ...>
  <set begin="10s" end="12s" tts:extent="70% 20%"</set>
</region>
...
<p region="r1" begin="10s" end="12s">change extent</p>

resulting output fragment는 region의 original extent가 retained되지만, child animation이 indicated time interval 동안 이 extent를 override하여, desired한 대로 region의 extent를 (temporarily) changing하는 effect를 생성함을 보여준다.

11.2 Layout Attribute Vocabulary

이 section은 content elements와 함께 사용되는 11.2.1 region attribute를 정의한다.

11.2.1 region

region attribute는 content element가 flowed될 의도인 space 또는 area를 정의하는 region element를 reference하는 데 사용된다.

지정된 경우, region attribute의 value는 [XML Schema Part 2], §3.3.9에서 정의한 IDREF data type을 따라야 하며, 또한 이 IDREF는 layout element를 ancestor로 가지는 region element를 reference해야 한다.

region attribute는 다음 element types의 instance가 지정할 수 있다:

참고:

region attribute가 reference하는 region element가 conditionally excluded이면, 그 region은 region attribute가 지정된 element와 associated되지 않는다.

참고:

region 안의 content flow에 대한 further information은 아래 11.3.1 Region Layout and Presentation을 참조한다.

11.3 Layout Semantics

11.3.1 Region Layout and Presentation

이 section은 다음과 같은 standard processing model의 관점에서 region layout 및 presentation의 semantics를 정의한다:

externally observable results가 이 model이 생성한 results와 일관된다면, 어떤 implementation도 허용된다.

11.3.1.1 Default Region

document instanceout-of-line region을 지정하지 않으면, 다음 characteristics를 가진 default region이 implied된다:

또한 out-of-line region이 지정되지 않으면, region attribute는 document instance 안의 어떤 content element에도 지정되어서는 안 된다.

given document instance에 대해 default region이 implied되면, body element는 implicitly default region을 target으로 한다(associated with).

default region을 implying할 때, document instance는 다음 예제에 표시된 것처럼 region element 및 그 parent layout element가 head element 안에 지정되고, matching region attribute가 body element에 지정된 것처럼 treated되어야 한다:

예제 – Implied Default Region
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <layout>
      <region xml:id="anonymous"/>
    </layout>
  </head>
  <body region="anonymous"/>
</tt>

참고:

위 예제에서 default region element와 region attribute가 implied된다. 또한 implied region element에 대해 layout container element가 implied된다.

11.3.1.2 Inline Regions

inline region은 region specification과 그 region을 reference하는 content 사이의 syntactic distance를 최소화하는 방식으로 region을 지정하기 위한 syntactic mechanism이다. Semantically, 각 inline region은 그 inline region이 지정(또는 implied)된 context의 content element에 의해서만 implicitly referenced되는 unique out-of-line region을 지정하는 것과 equivalent하다.

inline regionBlock.class element group 안의 content element의 child로 region element를 지정하여 declared되며, 이를 inline region specification이라고 한다.

Inline regions는 inline regions에 대응하는 out-of-line regions를 생성하는 [process inline regions] procedure에 따라 processed된다. 이 procedure는 추가로 inline regions와 associated된 content elements를 해당 generated out-of-line regions에 binds한다.

참고:

content element는 (given intermediate synchronic document 안에서) attribute specification 또는 child region element를 통해 단 하나의 region과만 associated될 수 있다. 따라서 content elementregion attribute를 지정하면, 모든 inline region specification은 ignored된다.

[process inline regions]

Block.class element group 안의 각 content element B에 대해, 다음 ordered steps를 수행한다:

  1. B[attributes] information item property가 region attribute를 포함하면, 이 procedure를 exit한다

  2. B[children] information item property가 region element R을 포함하지 않으면, 이 procedure를 exit한다;

  3. empty region element R' 를 create하고, 다음과 같이 initialized한다:

    • R' [children] information item property를 R[children] information item property의 deep copy로 set한다;

    • R' [attributes] information item property를 R[attributes] information item property의 deep copy로 set한다;

    • R' [attributes] information item property가 xml:id attribute를 include하지 않으면, TTML document instance의 scope 안에서 unique한 generated value ID를 가진 implied xml:id attribute를 add한다; 그렇지 않으면 IDR' xml:id attribute value로 한다;

    • 존재하면, R' [attributes] information item property에서 다음 attributes를 remove한다: begin, dur, 및 end;

    • R' [attributes] information item property에 beginend attributes를 다음과 같이 add한다:

      1. smpte time base 및 discontinuous marker mode에서 operating하지 않는 경우, 이 beginend attributes의 values를 document temporal coordinate space 안에서 B의 respective active begin 및 end times와 equivalent한 values로 set한다;

      2. 그렇지 않으면(smpte discontinuous mode), 이 beginend attributes의 values를 document temporal coordinate space 안에서 B의 respective begin 및 end times에 적용되는 labeled synchronization events(markers)에 대응하는 values로 set한다;

  4. TTML document instancehead element를 가지지 않으면, empty head element를 tt element의 first child로 insert한다;

  5. head element가 layout child element를 가지지 않으면, empty layout element를, 존재하는 경우 styling element 바로 뒤에, 그리고 존재하는 경우 animation element 바로 앞에 insert하거나, 둘 다 존재하지 않으면 head element의 last child로 insert한다;

  6. R' head element의 layout element child의 [children] information item property에 append한다;

  7. value ID를 가진 region attribute를 B[attributes] information item property에 add한다;

  8. RB[children] information item property에서 remove한다.

inline region specification의 사용 및 resulting generated out-of-line region은 다음 예제로 표시된다.

예제 – Inline Region Specification
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head/>
  <body>
    <div begin="5s" dur="10s">
      <region tts:extent="540px 100px" tts:origin="50px 339px"/>
      <p>Some Content</p>
    <div/>
  <body/>
</tt>

예제 – Generated Out-of-line Region
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <layout>
      <region xml:id="region3451" begin="5s" end="15s"
        tts:extent="540px 100px" tts:origin="50px 339px"/>
    </layout>
  </head>
  <body>
    <div begin="5s" dur="10s" region="region3451">
      <p>Some Content</p>
    <div/>
  <body/>
</tt>

참고:

위 pair of examples에서 generated out-of-line region의 timing attributes는 inline region element의 parent div element의 original dur attribute가 아니라 end attribute를 사용한다는 점에 유의한다. dur에서 end로의 이 translation은 root temporal extent 안에서 generated out-of-line region의 active time interval을 지정하기 위해 위 procedure에 의해 required된다.

참고:

이 예제에서 generated된 region ID region3451은 implementation dependent이며, 유일한 requirement는 그것이 xml:id attribute의 valid value여야 한다는 것이고, 이는 document instance의 scope 안에서 unique해야 함을 포함한다.

11.3.1.3 Intermediate Synchronic Document Construction

presentation processing을 수행하기 위한 목적으로, (1) [resolve timing] procedure를 invoke한 다음, (2) [construct immediate document] procedure를 invoke한다.

[resolve timing]
  1. optionally, procedure [construct anonymous spans]를 invoke한다; 그렇지 않고 이 시점에 invoked되지 않으면, 이 procedure가 invoked되었더라면 implicit duration이 resolved되었을 각 text node에 대해 implicit duration을 resolve한다;

  2. current document instance의 active time duration을 ordered sequence of time coordinates {T0, T1, T2, ...}로 divide한다. 여기서 각 time coordinate Ti에서 어떤 element가 temporally active 또는 inactive가 된다.

[construct anonymous spans]
  1. content element 안의 각 significant text node에 대해, text node를 감싸는 anonymous span을 synthesize하고, sibling 및 parent hierarchy 안에서 original text node child를 new anonymous span으로 substitute한다;

  2. anonymous spans의 각 contiguous sequence에 대해, 그 sequence를 original sequence of anonymous spans의 individual text node children을 representing하는 sequence of text nodes를 포함하는 single anonymous span으로 replace한다;

  3. child가 single anonymous span인 각 span element에 대해, anonymous span을 그 sequence of child text nodes로 replace한다.

[construct intermediate document]

[resolve timing] procedure로부터 얻은 각 time interval에 대해, 여기서 각 such interval은 time coordinates의 sequential pair (Ti,Ti+1)로 구성된다. 즉 (T0,T1), (T1,T2), …에 대해, current document instance를 그 original, source form DOCsource 에서 intermediate synchronic document form DOCinter 로 다음 ordered steps에 따라 map한다:

  1. procedure [process inline regions]를 invoke한다;

  2. 각 temporally active region R에 대해, body element가 headed하는 DOCsource의 sub-tree를 replicate한다;

  3. 이 sub-tree를 postorder traversal로 evaluating하면서, 다음 conditions 중 하나라도 true이면 elements를 prune한다:

    1. 그들이 presentation related element가 아니거나;

    2. temporally inactive이거나;

    3. empty이고 Animation elements도 br elements도 아니거나;

    4. [associate region] procedure에 따라 region R과 associated되지 않은 경우.

  4. pruned sub-tree가 non-empty이면, 이를 R element로 reparent한다;

  5. 마지막으로, 위 steps를 완료한 후 intermediate document에서 original body element를 prune하고, 더 이상 semantically relevant하지 않은 모든 region, begin, end, 및 dur attributes를 prune한다.

참고:

이 section에서 element와 관련하여 사용되는 prune이라는 용어는 해당 element가 그 parent의 children에서 removed되어야 함을 의미하며, 이는 다시 pruned element의 descendants가 더 이상 그 element의 parent의 descendants가 아니게 됨을 imply한다. Attribute와 관련하여 prune이 사용되면, 그 attribute가 associated(owning) element node에서 removed되어야 함을 의미한다.

참고:

compliant presentation processor는 위 procedure의 post-processing step으로 early style resolution을 수행하는 것이 허용되며, 이에 대한 자세한 내용은 [flow transformation] procedure의 step (2)를 참조한다.

[associate region]

content element는 다음 ordered rules에 따라 region과 associated된다. 여기서 처음 satisfied된 rule이 사용되고 나머지 rules는 skipped된다:

  1. element가 region attribute를 지정하고 그 region이 conditionally excluded가 아니면, element는 그 attribute가 reference하는 region과 associated된다;

  2. 그 element의 어떤 ancestor가 region attribute를 지정하고 그 region이 conditionally excluded가 아니면, element는 이 attribute를 지정한 most immediate ancestor가 reference하는 region과 associated된다;

  3. element가 region attribute를 지정하는 descendant element를 포함하고 그 region이 conditionally excluded가 아니면, element는 그 attribute가 reference하는 region과 associated된다;

  4. (어떤 region element도 없기 때문에) default region이 implied된 경우, element는 default region과 associated된다;

  5. element는 어떤 region과도 associated되지 않는다.

위에 설명된 processing을 수행한 result는 N개의 intermediate synchronic document instances, DOCinter0DOCinterN−1의 sequence가 된다.

참고:

implementation이 두 adjacent synchronic document instances, DOCinterN DOCinterN−1 사이의 significant similarity를 detect할 수 있는 경우, implementation은 예를 들어 [CTA-608-E], §C.3 및 [CC-DECODER-REQ]에서 설명한 것처럼 두 instances를 presenting하는 transition을 가능한 한 smooth하게 만들기 위한 processing을 적용할 수 있다.

11.3.1.4 Synchronic Flow Processing

temporal(synchronic) slice와 그 뒤의 regionally selected content hierarchy의 remapping을 수행한 후, resulting intermediate synchronic document는 flow transformation step의 대상이 된다. 이 step은 [XSL-FO 1.1]에서 정의한 XSL FO document instance로 represented되는 rooted flow object tree를 생성하며, XSL FO counterpart가 없는 TTML specific style properties에 의해 semantically extended된다.

참고:

이 section에서 XSL FO의 사용은 conceptual한 것만을 의도하며, TTML의 normative presentation semantics를 정의하기 위한 목적으로만 employed된다. 이 algorithm의 actual implementation은 XSL-FO representations를 create하거나 process할 필요가 없다. 특히 Cascading Style Sheets(CSS)와 같은 alternative presentation models를 사용하여 이러한 semantics를 implement하는 것이 가능하다.

참고:

given document instance 안에 [XSL-FO 1.1] counterpart가 없는 TTML style properties 또는 style property values가 존재할 수 있으므로, Implementors는 이 specification이 reference하는 것은 [XSL-FO 1.1]의 layout model이지, compliant [XSL-FO 1.1] formatting processor를 사용해야 한다는 requirement가 아니라는 점에 유의해야 한다. 그러한 processor는 이 specification이 정의하는 full presentation semantics를 반드시 satisfy하기에는 충분하지 않을 수 있으며, TTML의 presentation semantics를 implement하는 데 필요하지 않은 많은 features를 포함할 수 있다.

presentation processing을 수행하기 위한 목적으로, 11.3.1.3 Intermediate Synchronic Document Construction가 생성한 각 intermediate synchronic document DOCinteri에 대해, (1) 다음 [flow transformation] procedure를 invoke하여 XSL FO document instance Fi를 obtain한 다음, (2) processing이 visual medium에서의 presentation을 require하는 경우, [XSL-FO 1.1] 및 이 specification이 prescribed한 것과 consistent한 모든 relevant formatting and rendering semantics를 Fi에 apply한다.

[flow transformation]
  1. previously invoked되지 않았으면, procedure [construct anonymous spans]를 수행한다;

    참고:

    compliant presentation processor는 이 step을 earlier processing stage에서 수행할 수 있으며, 이 경우 여기서 이 step을 반복하지 않는다. 11.3.1.3 Intermediate Synchronic Document Construction에서 정의한 intermediate synchronic document construction 전에 anonymous span construction이 발생하면, intermediate synchronic document는 anonymous spans를 포함하게 됨에 유의한다.

  2. 10.4.4.4 Style Resolution Process에 따라 styles를 resolve한다;

    참고:

    compliant presentation processor는 [construct intermediate document] procedure를 수행하는 동안 이 step을 post-processing step으로 수행할 수 있으며, 이 경우 11.3.1.3 Intermediate Synchronic Document Construction가 생성한 각 intermediate synchronic document는 computed style sets를 포함하게 되므로, 이 step은 여기서 반복되지 않는다.

  3. tt element를 fo:root element로 map한다. 이 element는 initially fo:layout-master-set element로 populated되며, 이 element는 valid fo:simple-page-master를 포함하고, 그 fo:simple-page-master는 다시 fo:region-body child를 포함한다. 여기서 tt element에 표현된 root container region의 extent는 fo:simple-page-master element의 page-widthpage-height attributes로 mapped된다;

  4. layout element를 fo:page-sequence element와 위에서 생성된 simple page master가 정의한 page master 및 page region을 reference하는 child fo:flow element로 map한다;

    참고:

    [XSL-FO 1.1] formatting processor를 사용하여 F를 formatting함으로써 생성된 XSL FO area tree에서, sole generated fo:simple-page-master element를 reference하여 fo:page-sequence element에 의해 생성되는 page-viewport-area는 위 2 Definitions에서 정의한 root container region에 대응한다.

  5. 각 non-empty region element를 absolute 값을 가진 absolute-position attribute를 가진 fo:block-container element로 map한다. 여기에는 region의 origin 및 extent(padding 포함)에 equivalent한 rectangle을 표현하는 top, left, bottom, 및 right attributes와, line-height 값을 가진 line-stacking-strategy attribute가 포함된다;

    참고:

    region의 extent는 fo:block-container가 생성한 block area의 allocation rectangle과 대응한다.

    참고:

    region element를 fo:block-container로 mapping할 때, region이 containing block 밖으로 extend되는 경우 top, left, bottom, 및 right XSL-FO properties 중 하나 이상의 value로 negative offset을 사용해야 할 수 있다.

  6. block level context 안의 (1) body, div, 및 p element 또는 (2) image element, 즉 Block.class element group 안의 element의 image child 각각에 대해, 해당 element가 none value를 가진 tts:display style property와 associated되지 않은 경우:

    1. element가 image element가 아니면, element를 distinct fo:block element로 map하고, 각 original TTML content element와 associated된 computed style set을 사용하여 fo:block의 style properties를 populate한다;

    2. 그렇지 않으면(element가 image element인 경우), element를 single fo:external-graphic child element를 포함하는 distinct fo:block element로 map하고, 각 original TTML content element와 associated된 computed style set을 사용하여 fo:blockfo:external-graphic의 style properties를 populate하며, related image resource에 대한 appropriate reference를 사용하여 fo:external-graphic element의 src property를 populate한다;

  7. previous step에서 생성되고 body element에 대응하는 resulting fo:block formatting object에 대해, 다음 ordered sub-steps를 invoke한다:

    1. fo:blockdisplay-align style property가 center 또는 after value를 가지면, 이 fo:block의 first child로 empty fo:block를 synthesize하여 insert한다. 이 element는 다음 attributes를 가진다: space-after.optimum, space-after.maximum, 및 space-after.conditionality. 여기서 former two attributes의 value는 containing fo:block-container element의 height 또는 width 중 block progression dimension으로 designated된 것이며, last value는 retain이다;

    2. fo:blockdisplay-align style property가 center 또는 before value를 가지면, 이 fo:block의 last child로 empty fo:block를 synthesize하여 insert한다. 이 element는 다음 attributes를 가진다: space-after.optimum, space-after.maximum, 및 space-after.conditionality. 여기서 former two attributes의 value는 containing fo:block-container element의 height 또는 width 중 block progression dimension으로 designated된 것이며, last value는 retain이다;

    참고:

    body element에 대응하는 fo:block의 block progression dimension에 additional, collapsible space를 insert하는 목적은, 이 fo:block의 before 및 after edges가 containing region에 대응하는 fo:block-container의 before 및 after edges와 coincident하도록 보장하는 동시에, block progression dimension에서 alignment를 satisfy해야 하는 needs를 고려하기 위한 것이다. 예를 들어 이는 body element와 associated된 background color가 transparent가 아니면 containing region을 wholly fill하도록 보장한다.

  8. inline level context 안의 (1) 각 span element 및 anonymous span 또는 (2) image element, 즉 p 또는 span element의 image child에 대해, element 또는 anonymous spannone value를 가진 tts:display style property와 associated되지 않은 경우:

    1. object가 anonymous span이면, anonymous span의 sequence of character items를 distinct fo:inline element로 map하고, anonymous span과 associated된 computed style set을 사용하여 fo:inline의 style properties를 populate한다;

    2. object가 span element이면, element를 distinct fo:inline element로 map하고, span과 associated된 computed style set을 사용하여 fo:inline의 style properties를 populate한다;

    3. 그렇지 않으면(object가 image element인 경우), element를 single fo:external-graphic child element를 포함하는 distinct fo:inline element로 map하고, image element와 associated된 computed style set을 사용하여 fo:inlinefo:external-graphic의 style properties를 populate하며, related image resource에 대한 appropriate reference를 사용하여 fo:external-graphic element의 src property를 populate한다;

  9. none value를 가진 tts:display style property와 associated되지 않은 각 br element에 대해, 해당 element를 다음 properties를 가진 distinct fo:character element로 map한다:

    • character="&#x000A;"

    • suppress-at-line-break="retain"

  10. 어떤 computed style set 안의 각 TTML style property attribute 중 [XSL-FO 1.1]에 counterpart가 없는 것에 대해, 그 attribute를 해당 style property가 적용되는 input TTML content element가 생성한 relevant formatting object로 직접 map한다;

  11. optionally, 각 resulting formatting object element에 그 element를 해당 formatting object element를 resulted in한 input element와 related시키는 unique id attribute를 synthesize한다;

11.3.1.5 Elaborated Example (Non-Normative)

위에서 설명한 processing steps의 예제는 Example – Sample Source Document로 시작하여 아래에 elaborated된다.

예제 – Sample Source Document
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
      </region>
    </layout>
  </head>
  <body xml:id="b1">
    <div xml:id="d1" begin="0s" dur="2s">
      <p xml:id="p1" region="r1">Text 1</p>
      <p xml:id="p2" region="r2">Text 2</p>
    </div>
    <div xml:id="d2" begin="1s" dur="2s">
      <p xml:id="p3" region="r2">Text 3</p>
      <p xml:id="p4" region="r1">Text 4</p>
    </div>
  </body>
</tt>

위 document에서 content hierarchy는 두 divisions로 구성되며, 각 division은 두 paragraphs를 포함한다. 이 content는 position 및 foreground colors를 제외하고 identically styled된 두 non-overlapping regions 중 하나를 target으로 한다(associated with). 후자의 colors는 regions로 reparent된 (그리고 이 경우 anonymous인) spans에 inherited되어 적용된다.

다음 first intermediate document는 time interval [0,1)에 대한 synchronic state를 보여준다. 이 time 동안 division d1만 temporally active이고, paragraphs p1p2(및 그 ancestors)는 각각 regions r1r2와 associated된다.

참고:

아래 표시된 intermediate documents는 valid document instances가 아니라, didactic purposes를 위해 사용되는 possible internal processing states의 representations이다.

예제 – Intermediate Document – [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">Text 1</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d1-2">
            <p xml:id="p2">Text 2</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

TTML과 consistent한 rendering을 yield하고, first intermediate document에 대해 flow processing을 수행하여 produced될 수 있는 XSL FO document instance가 아래에 illustrated된다.

예제 – XSL FO Document – [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's space (before) filler -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
          <!-- div (d1) -->
          <fo:block id="d1-1">
            <!-- p (p1) -->
            <fo:block id="p1" text-align="center">
              <fo:inline font-size="40px" font-weight="bold"
              color="red">Text 1</fo:inline>
            </fo:block>
          </fo:block>
          <!-- body's space (after) filler -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
        </fo:block>
      </fo:block-container>
      <!-- region (r2) -->
      <fo:block-container id="r2" absolute-position="absolute"
        left="10px" top="300px" width="620px" height="96px"
        background-color="black" display-align="center">
        <!-- body (b1) -->
        <fo:block id="b1-2">
          <!-- body's space (before) filler -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
          <!-- div (d1) -->
          <fo:block id="d1-2">
            <!-- p (p2) -->
            <fo:block id="p2" text-align="center">
              <fo:inline font-size="40px" font-weight="bold"
              color="yellow">Text 2</fo:inline>
            </fo:block>
          </fo:block>
          <!-- body's space (after) filler -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
        </fo:block>
      </fo:block-container>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

다음 second intermediate document는 time interval [1,2)에 대한 synchronic state를 보여준다. 이 time 동안 divisions d1d2가 모두 temporally active이고, paragraphs p1p4(및 그 ancestors)는 region r1과 associated되며, paragraphs p2p3 (및 그 ancestors)는 region r2와 associated된다.

예제 – Intermediate Document – [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">Text 1</p>
          </div>
          <div xml:id="d2-1">
            <p xml:id="p4">Text 4</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d1-2">
            <p xml:id="p2">Text 2</p>
          </div>
          <div xml:id="d2-2">
            <p xml:id="p3">Text 3</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

다음 third intermediate document는 time interval [2,3)에 대한 synchronic state를 보여준다. 이 time 동안 division d2만 temporally active이고, paragraphs p4p3(및 그 ancestors)는 각각 regions r1r2와 associated된다.

예제 – Intermediate Document – [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">Text 4</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d2-2">
            <p xml:id="p3">Text 3</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

11.3.2 Line Layout

p element, 즉 paragraph의 representation이 presentation processor에 의해 processed될 때, 그 content는 line breaking에 의해 segmented되고, 각 segment는 unique line area에 assigned된다. 이 측면에서 이 specification은 [XSL-FO 1.1]가 정의한 formatting model, 특히 §4.5, §4.6, 및 §4.7에 기반한 model을 adopts한다.

11.3.2.1 Line Breaking

document instance에 적용되는 profile이 #lineBreak-uax14 feature의 support 또는 use를 require하면, document instance의 content에 대해 line layout을 수행할 때 Line Breaking Algorithm [UAX14]이 정의한 recommendations가 적용된다.

11.3.2.2 Line Stacking

이 sub-section은 non-normative이다.

일반적으로 line height라고 불리는 line areablock progression dimension 계산은 특히 multiple font families, font sizes, font styles, font resources, 그리고 ruby, text emphasis, 및 text combination(tate-chu-yoko)과 같은 advanced text formatting features가 적용될 때 매우 복잡할 수 있다.

이 process가 생성한 각 line area는 horizontal lines의 context에서는 preceding line area 아래에 vertically, 또는 vertical lines의 context에서는 preceding line의 side에 horizontally stacked된다. [flow transformation] procedure의 step (5)가 지정한 대로, TTML은 line-height line stacking strategy를 사용하며, 이는 [XSL-FO 1.1], §4.5에서 formally defined되고, 그 terms 및 concepts를 아래에서 사용한다.

이 strategy를 사용할 때, line area의 dimensions는 해당 specific line area에 대해 computed된 per-inline-height-rectangle의 dimensions와 대응하며, 이는 다시 (1) paragraph의 각 line area에 대해 uniform한 expanded-nominal-requested-line-rectangle의 dimensions와 (2) line area의 각 inline area child의 expanded-rectangle의 dimensions를 evaluating하여 결정된다. 후자는 paragraph의 각 line area의 각 inline area마다 vary할 수 있다.

위에서 언급된 line height라는 phrase는 tts:lineHeight attribute와 associated된 style property의 computed value와 혼동되어서는 안 된다. 후자의 value는 line area 및 individual inline areas에 적용되는 half leading을 computing하기 위한 parameter로 사용되며, 이는 각각 (1) line areaexpanded-nominal-requested-line-rectangle의 dimensions 및 (2) line areainline area child의 expanded-rectangle의 dimensions를 결정하기 위한 parameter이다. line area에 적용되는 half leading과 그 line areainline area child에 적용되는 half leading은 often distinct values임에 유의해야 하며, 이에 대한 more details는 [XSL-FO 1.1], §6.5.2 (line area에 적용될 때)에서 찾을 수 있다. given inline area에 대해서도 analogous treatment가 적용되지만, 이는 [XSL-FO 1.1]에 의해 explicitly indicated되지는 않으며, [CSS2], §10.8.1에서 발견되는 language에서 infer할 수 있다.

요약하면, [XSL-FO 1.1], §4.5에서 정의되고 TTML이 adopted한 line-height line stacking strategy가 정의하는 behavior는 [CSS2]의 line stacking strategy와 compatible하도록 intended되며, 이는 다음을 의미한다:

  • paragraph의 tts:lineHeight computed value가 normal이면, (1) paragraph의 각 line area는 그 paragraph의 preceding line area와 정확히 abuts하고 intersect하지 않으며, (2) paragraph의 line areasline height는 각 line area의 styled content에 따라 vary한다;

  • paragraph의 tts:lineHeight computed value가 specified <length>이면, paragraph의 line areas는 서로 정확히 abut하지만, 그 content rectangles는 (1) content를 fit하는 데 필요한 것보다 block progression dimension에서 less space를 consume할 수 있으며, 이 경우 해당 content가 그 paragraph의 preceding line area와 intersect할 수 있거나, 또는 (2) content를 fit하는 데 필요한 것보다 block progression dimension에서 more space를 consume할 수 있다.

참고:

다음 advanced text formatting features 중 어느 것이 line의 content에 적용되면, line height에 additional adjustments가 발생할 수 있다:

  • ruby text annotations

  • text combination (tate-chu-yoko)

  • text emphasis

  • (per-glyph) font shear

11.3.3 Rendering Model

이 section은 formatted TTML document instance의 rendering의 특정 aspects에 대한 details를 지정한다.

11.3.3.1 Painting Order

presentation processor가 사용하는 rendering order는 [XSL-FO 1.1], §4.9가 지정한 rendering model과 consistent해야 한다. 또한 다음 constraints가 적용된다:

  • ruby text spans가 생성한 line area의 inline area descendants는 line area의 다른 inline area descendants 뒤에 rendered된다;

  • image element가 생성한 block area 또는 inline area의 intrinsic marks는 associated image의 raster로 구성된다.

참고:

tts:backgroundImage attribute가 reference하는 image element가 생성한 marks는 block area 또는 inline area의 intrinsic marks에 포함되지 않는다. 즉 그것들은 area의 background marks의 일부이다.

12 Timing

이 section은 core vocabulary catalog의 timing matter를 지정한다. 여기서 timing은 content에 적용되고 해당 content의 temporal presentation에 대한 authorial intentions를 나타내는 separable layer of information으로 이해되어야 한다.

12.1 Timing Element Vocabulary

core vocabulary catalog에서 사용하기 위한 timing related element vocabulary는 정의되지 않는다.

12.2 Timing Attribute Vocabulary

이 section은 timed elements와 함께 사용하기 위한 다음 basic timing attributes를 정의한다:

또한 이 section은 timing containers로 동시에 serve하는 timed elements와 함께 사용하기 위한 12.2.4 timeContainer attribute를 정의한다.

12.2.1 begin

begin attribute는 timed element와 associated된 temporal interval의 begin point를 지정하는 데 사용된다. 지정된 경우, begin attribute의 value는 12.3.1 <time-expression>에서 정의한 <time-expression> specification을 따라야 한다.

temporal interval의 begin point는 interval에 포함된다. 즉 interval은 left-wise closed이다.

begin attribute의 semantics는 [SMIL 3.0], §5.4.3에서 정의한 것이며, 이 specification이 정의한 overriding semantics를 고려한다.

참고:

[SMIL 3.0], §5.4.3에서 정의한 것처럼, timed elementbegin attribute가 explicitly specified되지 않으면, attribute의 default value는 nearest time container ancestor에 의해 determined된다. 그러나 TTML에서 그 ancestor는 parallel time container 또는 sequential time container이며, 둘 모두 0s의 default value를 적용한다.

12.2.2 dur

dur attribute는 timed element와 associated된 temporal interval의 duration을 지정하는 데 사용된다. 지정된 경우, dur attribute의 value는 12.3.1 <time-expression>에서 정의한 <time-expression> specification을 따라야 한다.

참고:

<time-expression> specification의 clock-time form이 dur attribute와 함께 사용될 때, 이는 두 implied clock time expressions 사이의 difference로 해석되는 것으로 intended된다.

document instancesmpte time base 및 discontinuous marker mode의 사용을 지정하면, (well-formed) dur attribute는 어떤 element에도 지정되어서는 안 된다.

dur attribute의 semantics는 [SMIL 3.0], §5.4.3에서 정의한 것이며, 이 specification이 정의한 overriding semantics를 고려한다. [SMIL 3.0], §5.4.3과의 deliberate divergence로, dur attribute의 value는 zero(0s)가 permitted된다.

참고:

이 specification이 지원하는 [SMIL 3.0] semantics의 subset의 context에서, enddur attributes를 모두 지정하는 element의 active duration은 dur attribute의 value와 end attribute의 value와 element의 begin time 사이의 difference 중 lesser와 같다.

12.2.3 end

end attribute는 timed element와 associated된 temporal interval의 ending point를 지정하는 데 사용된다. 지정된 경우, end attribute의 value는 12.3.1 <time-expression>에서 정의한 <time-expression> specification을 따라야 한다.

temporal interval의 ending point는 interval에 포함되지 않는다. 즉 interval은 right-wise open이다.

non-empty active temporal interval의 presentation effects는 ending point가 지정한 time과 같거나 그 직후의 frame(or tick) 바로 이전 frame을 포함하지만, 이 latter frame(or tick)까지 extend되지는 않는다.

참고:

예를 들어 active interval이 [10s,10.33333s)이고 frame rate가 초당 30 frames이면, interval의 presentation effects는 frames 300 through 309로만 제한된다 (0s가 frame 0에 대응한다고 가정). active interval이 [300f,310f)로 지정된 경우에도 동일하다.

end attribute의 semantics는 [SMIL 3.0], §5.4.3에서 정의한 것이며, 이 specification이 정의한 overriding semantics를 고려한다.

12.2.4 timeContainer

timeContainer attribute는 timed child elements가 temporally situated되는 local temporal context를 지정하는 데 사용된다.

지정된 경우, timeContainer attribute의 value는 다음 중 하나여야 한다:

  • par

  • seq

element instance의 time container semantics가 par이면, child elements의 temporal intervals는 parallel, 즉 time상 simultaneously 적용되는 것으로 간주된다. 또한 각 child element의 time interval specification은 container element instance의 temporal interval에 relative한 것으로 간주된다. par time container의 [SMIL 3.0] endsync semantics를 결정하기 위한 목적으로, all의 default value가 적용된다.

참고:

endsync behavior에 all의 default value를 사용하는 것은 last의 default value를 사용하는 [SMIL 3.0]과 distinct하다.

element instance의 time container semantics가 seq이면, child elements의 temporal intervals는 sequence, 즉 time상 sequentially 적용되는 것으로 간주된다. 또한 각 child element의 time interval specification은, 그것이 first child element인 경우를 제외하고, sibling elements의 temporal interval에 relative한 것으로 간주된다. first child element인 경우에는 container element instance의 temporal interval에 relative한 것으로 간주된다.

각 time container는 independent time base, 즉 time coordinate system을 구성하는 것으로 간주된다.

time container semantics를 가진 element에 timeContainer attribute가 지정되지 않으면, par time container semantics가 적용되어야 한다.

Time container semantics는 다음 element types에만 적용된다:

parallel 및 sequential time containment의 semantics는 [SMIL 3.0], §5.4.4에서 정의한 것이며, 이 specification이 정의한 overriding semantics를 고려한다.

12.3 Time Value Expressions

Timing attribute values에는 다음 expressions의 사용이 포함된다:

12.3.1 <time-expression>

<time-expression>은 어떤 time base 안의 coordinate를 지정하는 데 사용되며, applicable time base는 ttp:timeBase parameter에 의해 determined되고, I Time Expression Semantics가 정의한 semantics가 적용된다.

참고:

frame rate, sub-frame rate, tick rate, 및 time base의 explicit specification에 대한 further information은 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>은 preceding syntax definition에서 <lwsp> non-terminal의 appearance에 의해 explicitly permitted된 경우를 제외하고 <whitespace> character를 포함해서는 안 된다.

<time-expression>이 clock-time으로 표현되면, 10보다 작은 hours, minutes, seconds, 및 frames를 표현할 때 leading zeroes가 사용된다. Minutes는 [0…59]로 constrained되고, seconds(그 fractional part 포함)는 closed interval [0,60]으로 constrained되며, value 60은 leap seconds에만 적용된다. ttp:timeBaseclock이고 ttp:clockModelocal 또는 utc인 경우를 제외하고, leap second를 나타내기 위한 60 seconds의 special value 사용은 deprecated된다. presentation processing을 수행할 때, 다른 time bases 또는 clock modes에서 이 special value의 appearance는 value 59가 specified된 것처럼 해석되어야 한다.

<time-expression>이 clock-time으로 표현되고 frames term이 지정되면, 이 term의 value는 [0…F-1] interval로 constrained되어야 하며, 여기서 F7.2.5 ttp:frameRate에서 정의한 ttp:frameRate parameter에 의해 determined되는 frame rate이다. clock time base가 적용될 때 frames term 또는 f (frames) metric이 지정되면 error로 간주된다.

<time-expression>이 clock-time으로 표현되고 sub-frames term이 지정되면, 이 term의 value는 [0…S-1] interval로 constrained되어야 하며, 여기서 S7.2.9 ttp:subFrameRate에서 정의한 ttp:subFrameRate parameter에 의해 determined되는 sub-frame rate이다. clock time base가 적용될 때 sub-frames term이 지정되면 error로 간주된다.

<time-expression>의 wallclock-time form이 document instance에서 사용되고 governing time base가 clock이 아니면 error로 간주된다.

governing time base의 computed value가 smpte이면, (1) <time-expression>의 offset-time form 사용은 deprecated된다, 그리고 (2) <time-expression>의 clock-time form에서 fraction seconds component 사용은 deprecated된다.

참고:

위에 지정된 <time-expression> syntax는 time zone information의 representation을 explicitly excludes한다. author가 <time-expression>을 specific time zone과 correlate하고자 하는 경우, time expressions를 UTC로 convert하고 utc clock mode의 사용을 지정할 수 있으며, 이에 대해서는 7.2.2 ttp:clockMode를 참조한다.

12.4 Timing Semantics

[SMIL 3.0]이 정의한 time containment, durations, 및 intervals의 semantics는, 다음 constraints가 주어진 경우, 이 specification이 정의한 like-named timed elements 및 timing vocabulary의 interpretation에 적용된다:

  • anonymous span의 implicit duration은 다음과 같이 정의된다: anonymous span의 parent time container가 parallel time container이면, implicit duration은 [SMIL 3.0]에서 정의한 indefinite duration value와 equivalent하다. anonymous span의 parent time container가 sequential time container이면, implicit duration은 zero와 equivalent하다.

  • animate, audio, br, image, 또는 set element의 implicit duration은 해당 element가 anonymous span으로 treated된 경우와 동일한 것으로 정의된다.

  • non-mixed content, 즉 #PCDATA text nodes만 가진 span element의 implicit duration은 span element가 anonymous span으로 treated된 경우와 동일한 것으로 정의된다.

  • mixed content를 가진 body, div, p, 또는 span element의 implicit duration은 (1) element가 parallel 또는 sequential time container인지 여부, (2) 위 12.2.4 timeContainer에서 정의한 default endsync semantics, 및 (3) 이러한 time containers에 적용되는 [SMIL 3.0]의 semantics에 따라 determined된다.

  • region element의 implicit duration은 [SMIL 3.0]에서 정의한 indefinite duration value와 equivalent한 것으로 정의된다.

  • governing time base가 clock이면, time expressions는 [SMIL 3.0]의 wall-clock based timing과 equivalent한 것으로 간주되며, I.1 Clock Time Base의 specific semantics가 적용된다.

  • governing time base가 media이면, time expressions는 [SMIL 3.0]의 offset based timing과 equivalent한 것으로 간주되며, I.2 Media Time Base의 specific semantics가 적용된다.

  • governing time base가 smpte이면, time expressions는 [SMIL 3.0]의 offset based timing 또는 event based timing 중 하나와 equivalent한 것으로 간주되며, I.3 SMPTE Time Base의 specific semantics가 적용된다.

12.4.1 Anonymous Span Timing

이 sub-section은 non-normative이다.

다음 예제는 sequential 및 parallel time containers의 children인 anonymous spans의 timing semantics를 설명한다. words HelloAllo는 모두 sequential time container(p element)의 children인 anonymous spans 안에 포함된다. 따라서 anonymous spans의 implicit duration이 0이므로 HelloAllo는 표시되지 않는다. 반대로 word Guten을 포함하는 anonymous span과 word Tag를 포함하는 innermost span은 parallel time container semantics를 가진 element(outermost span element)의 children이다. 그 결과, respective parent anonymous spanspan element의 implicit duration이 indefinite이므로 GutenTag 모두 표시되며, 그 span, p, divbody ancestors의 implicit duration 역시 indefinite가 된다.

예제 조각 – Sequential 및 Parallel Time Containers에서 Anonymous Spans의 Timing
...
<body>
  <div>
    <p timeContainer="seq">
      Hello
      <span>Guten <span>Tag</span></span>
      Allo
    </p>
  </div>
</body>

13 Animation

이 section은 core vocabulary catalog의 animation matter를 지정한다. 여기서 animation은 content의 (temporally) dynamic styling에 대한 authorial intention을 나타내기 위해 timing과 styling을 combine하는 separable layer of information으로 이해되어야 한다.

13.1 Animation Element Vocabulary

다음 elements는 document instance의 structure와 principal animation aspects를 지정한다:

13.1.1 animate

animate element는 associated elements의 하나 이상의 style property attributes에 applied(targeted)될 series of changes(animations)를 표현한다.

animate element는 (1) content element 또는 region element의 child로 나타날 수 있으며, 이를 inline animation이라고 하거나, (2) animation element의 child로 나타날 수 있으며, 이를 out-of-line animation이라고 한다. 전자의 경우 animate element의 parent가 associated element이다. 후자의 경우 animate attribute를 사용하여 animate element를 reference하는 모든 element가 associated element이다.

animate element는 그 children으로 Metadata.class element group의 zero or more elements를 허용한다.

XML Representation – Element Information Item: 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 attributes in TT Style Namespaces}
  Content: Metadata.class*
</animate>

out-of-line animate element는 xml:id attribute를 지정해야 한다.

animate element가 target으로 하는 style property attributes는 TT Style Namespaces의 attributes 또는 TT Namespace가 아닌 namespace의 attributes를 사용하여 직접 지정된다. 여기서 animation values의 list(sequence)는 <animation-value-list> syntax를 따라야 하며, 각 constituent <animation-value>는 specified attribute의 syntax를 따라야 한다.

참고:

[SVG 1.1], §19.2.12와 달리, 여기서 정의된 single animate element는 single style property attribute만 target하도록 제한되는 대신, targeted style property attributes의 set에 대해 continuous animations를 수행하는 데 사용될 수 있다. [SVG 1.1]에서는 single animate element가 아니라 multiple animate elements의 사용이 필요하다.

또한 animated style property와 key values의 direct specification을 사용함으로써, [SVG 1.1], §19.2.9에서 정의한 from, to, by, 또는 values animation value attributes를 employ할 필요가 없다.

animate element와 위에 enumerated된 attributes의 semantics는 [SVG 1.1], §19.2에서 specified한 것으로 정의되며, 아래에서 constrained되거나 further clarified된다:

  1. animate element가 target으로 하는 attributes와 이 attributes에 적용될 values는 TT Style Namespaces의 attributes 또는 TT Namespace가 아닌 namespace의 attributes를 direct use하여 지정된다. 따라서 [SVG 1.1]에서 정의한 attributeName, from, to, by, 및 values attributes는 이 version of TTML에서 지원되지 않는다.

    참고:

    directly named style attributes를 사용하는 effect는 각각 attributeNamevalues attribute를 지정하는 multiple [SVG 1.1] animate elements를 지정하는 것과 equivalent하다.

    참고:

    예를 들어 tts:color="red;green;blue"를 지정하는 것은 [SVG 1.1]에서 attributeName="tts:color"values="red;green;blue"를 지정하는 것과 equivalent한 것으로 간주된다.

  2. calcMode attribute가 지정되지 않으면, linearcalcMode value가 적용된다.

    참고:

    이 implied value는 [SVG 1.1], §19.2.9에서 지정한 default value에 대응한다.

  3. fill attribute가 지정되지 않으면, removefill value가 적용된다.

    참고:

    이 implied value는 [SVG 1.1], §19.2.9에서 지정한 default value에 대응한다.

  4. keyTimes attribute가 지정되고 calcMode의 computed value가 "paced"이면, 이 usage는 validation processing의 목적으로 error로 간주되어야 하며, animation은 presentation processing의 목적으로 ignored되어야 한다.

  5. keyTimes attribute가 지정되고 calcMode의 computed value가 "paced"가 아니면, keyTimes attribute에 지정된 time components의 number는 각 animated attribute가 지정한 animation values의 number와 match해야 한다.

    참고:

    이 constraint는 single 또는 multiple attributes가 same animate element에 의해 targeted되는지 여부와 관계없이 적용된다. 이는 multiple attributes가 targeted될 때 각 animated attribute의 value가 그 <animation-value-list>에서 same number of values를 지정해야 함을 imply한다.

    참고:

    예를 들어 아래 표시된 first animate element는 valid하다. animated attribute는 3 values를 가지기 때문이다. 반면 second 및 third는 valid하지 않다. second case에서는 animated attribute가 2 values를 가지지만 3 key times가 지정되고, third case에서는 first animated attribute가 2 values를 가지고 second animated attribute가 4 values를 가지지만 3 key times가 지정되기 때문이다:

    <!-- valid animation of single attribute with matching key times -->
    <animate xml:id="a1" keyTimes="0;0.2;1" tts:color="red;green;blue"/>
    
    <!-- invalid animation of single attribute with non-matching key times -->
    <animate xml:id="a2" keyTimes="0;0.2;1" tts:color="red;green"/>
    
    <!-- invalid animation of multiple attributes with non-matching key times -->
    <animate xml:id="a3" keyTimes="0;0.2;1"
      tts:color="red;green" tts:backgroundColor="cyan;magenta;yellow;black"/>
    
  6. keyTimes attribute가 지정되지 않고 calcMode의 computed value가 "paced"가 아니면, animation의 simple duration over specified animation values의 even(linear) spacing에 대응하는 keyTimes value가 적용된다.

    참고:

    예를 들어 animated style이 tts:color="red;green;blue"로 지정되면, keyTimes의 implied value는 "0;0.5;1"이다.

  7. keySplines attribute가 지정되고 calcMode의 computed value가 "spline"이 아니면, 이 usage는 validation processing의 목적으로 error로 간주되어야 하며, animation은 presentation processing의 목적으로 ignored되어야 한다.

  8. keySplines attribute가 지정되고 calcMode의 computed value가 "spline"이면, keySplines attribute에 지정된 control components의 number는 keyTimes attribute의 computed value 안의 time components number보다 하나 적어야 한다.

  9. keySplines attribute가 지정되지 않고 calcMode의 computed value가 "spline"이면, 이 usage는 validation processing의 목적으로 error로 간주되어야 하며, animation은 presentation processing의 목적으로 ignored되어야 한다.

  10. repeatCount attribute가 지정되지 않으면, 1repeatCount value가 적용된다.

  11. [SVG 1.1], §19.2.10에서 정의한 additive attribute는 이 version of TTML에서 지원되지 않는다. 따라서 그것이 없는 경우 이 attribute의 "replace" value의 semantics가 적용된다.

  12. [SVG 1.1], §19.2.10에서 정의한 accumulate attribute는 이 version of TTML에서 지원되지 않는다. 따라서 그것이 없는 경우 이 attribute의 "none" value의 semantics가 적용된다.

content styling을 animate하기 위해 animate element를 사용하는 예제는 아래에 illustrated된다:

예제 조각 – Content Style Animation
...
<p dur="5s">
<animate tts:color="yellow;red;green;blue;yellow"/>
Text with Continuously Varying Colors!
</p>
...

참고:

위 예제에서 content "Text with Continuously Varying Colors!"의 foreground color는 5 second period 동안 yellow에서 red, green, red, 그리고 다시 yellow로 continuously animated되고, 이후 animation effect가 removed되어 original color가 restored된다(fill은 "remove"로 default되기 때문이다).

region styling을 animate하기 위해 animate element를 사용하는 예제는 아래에 illustrated된다:

예제 조각 – Region Style Animation
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    xmlns:tts="http://www.w3.org/ns/ttml#styling"
    ttp:extent="640px 480px">
    <head>
      <layout>
	<region xml:id="r1" timeContainer="seq" tts:opacity="0">
	  <animate dur="1s" tts:opacity="0;1"/>
	  <set dur="5s" tts:opacity="1"/>
	  <animate dur="1s" tts:opacity="1;0"/>
	  <style tts:extent="480px 60px"/>
	  <style tts:origin="80px 400px"/>
	</region>
      </layout>
    </head>
    <body region="r1">...</body>
</tt>

참고:

위 예제에서 region r1은 initially 0% opacity, fully transparent로 설정된 다음, one second interval 동안 100% opacity, fully opaque로 faded in된다. Opacity는 five more seconds 동안 100%로 유지된 다음, one second interval 동안 0%로 faded out되고, 그 상태로 remains한다.

참고:

animate element의 semantics는 [SVG 1.1], §19.2.12에서 정의한 것에 기반하며, 이는 다시 [SMIL 3.0], §12에 기반한다.

13.1.2 animation

animation element는 animation matter에 적용되는 metadata를 포함하여 out-of-line animation matter를 grouping하는 데 사용되는 container element이다.

animation element는 그 children으로 Metadata.class element group의 zero or more elements를 허용하고, 그 뒤에 Animation.class element group의 zero or more elements를 허용한다.

XML Representation – Element Information Item: animation
<animation
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: Metadata.class*, Animation.class*
</animation>

animation element의 content에 time semantics가 적용되는 범위에서, 이 element의 implied time interval은 root temporal extent와 coterminous한 것으로 정의된다.

13.1.3 set

set element는 associated elements의 style property attributes에 applied(targeted)될 one or more discrete changes(animations)를 표현한다.

set element는 (1) content element 또는 region element의 child로 나타날 수 있으며, 이를 inline animation이라고 하거나, (2) animation element의 child로 나타날 수 있으며, 이를 out-of-line animation이라고 한다. 전자의 경우 set element의 parent가 associated element이다. 후자의 경우 animate attribute를 사용하여 set element를 reference하는 모든 element가 associated element이다.

set element는 그 children으로 Metadata.class element group의 zero or more elements를 허용한다.

XML Representation – Element Information Item: set
<set
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  fill = <fill>
  repeatCount = <repeat-count>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Style Namespaces}
  Content: Metadata.class*
</set>

out-of-line set element는 xml:id attribute를 지정해야 한다.

set element가 target으로 하는 style property attributes는 TT Style Namespaces의 attributes 또는 어떤 TT Namespace가 아닌 namespace의 attributes를 사용하여 직접 지정된다. 여기서 single target animation(key) value는 <animation-value> syntax를 따른다.

참고:

[SVG 1.1], §19.2.13과 달리, 여기서 정의된 single set element는 single style property attribute만 target하도록 제한되는 대신, targeted style property attributes의 set에 대해 discrete animations를 수행하는 데 사용될 수 있다. [SVG 1.1]에서는 single set element가 아니라 multiple set elements의 사용이 필요하다.

아래 enumerated된 constraints 또는 variations를 제외하고, set element와 위에 enumerated된 attributes의 semantics는 [SVG 1.1], §19.2.13에서 specified한 것으로 정의된다:

  1. set element가 target으로 하는 attributes와 이 attributes에 적용될 discrete values는 TT Style Namespaces의 attributes 또는 TT Namespace가 아닌 namespace의 attributes를 direct use하여 지정된다(SVG의 attributeNameto attributes를 사용하는 것과 대조됨).

    참고:

    예를 들어 tts:color="red"를 지정하는 것은 [SVG 1.1]에서 attributeName="tts:color"to="red"를 지정하는 것과 equivalent한 것으로 간주된다.

  2. fill attribute가 지정되지 않으면, removefill value가 적용된다.

content styling을 animate하기 위해 set element를 사용하는 예제는 아래에 illustrated된다:

예제 조각 – Content Style Animation
...
<p dur="5s" tts:color="yellow">
<set begin="1s" dur="1s" tts:color="red"/>
<set begin="2s" dur="1s" tts:color="green"/>
<set begin="3s" dur="1s" tts:color="red"/>
Text with Flashing Colors!
</p>
...

참고:

위 예제에서 content "Text with Flashing Colors!"의 foreground color는 5 second period 동안 yellow에서 red, green, red, 그리고 다시 yellow로 animated된다.

region styling을 animate하기 위해 set element를 사용하는 예제는 아래에 illustrated된다:

예제 조각 – Region Style Animation
<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>

참고:

위 예제에서 root container region은 40 columns와 16 rows의 cell grid로 divided된다. 그런 다음 24 columns 및 2 rows의 dimensions를 가진 region r1root container region 안에 positioned되며, 그 position은 time over varying하여 region을 moving하는 effect를 create한다. 이는 captions로 underlying video의 characters를 obscure하는 것을 피하기 위해 desirable할 수 있다.

참고:

set element의 semantics는 [SVG 1.1], §19.2.13에서 정의한 것에 기반하며, 이는 다시 [SMIL 3.0], §12에 기반한다.

13.2 Animation Attribute Vocabulary

이 section은 content elements 및 certain layout elements와 함께 사용되는 13.2.1 animate attribute를 정의한다.

13.2.1 animate

animate attribute는 각각 specific out-of-line animation을 정의하는 하나 이상의 animate 또는 set elements를 reference하는 데 사용된다.

animate attribute는 다음 element types의 instance가 지정할 수 있다:

지정된 경우, animate attribute의 value는 [XML Schema Part 2], §3.3.10에서 정의한 IDREFS data type을 따라야 하며, 또한 각 IDREF는 animation element를 ancestor로 가지는 animate 또는 set element를 reference해야 한다.

given IDREF는 animate attribute의 value 안에서 두 번 이상 appear해서는 안 된다.

element Eanimate attribute가 reference하는 각 out-of-line animation element A에 대해, 다음 steps를 수행한다(specified IDREFs의 order로):

  1. A의 deep copy인 A'를 create한다;

  2. A' 에서 xml:id attribute를 remove한다;

  3. A'E[children] information item property에 insert하여 A'E의 content model의 Animation.class* wildcard에 corresponding하는 child elements의 subsequence에서 last element로 appear하도록 한다.

참고:

out-of-line-animation의 semantics는 본질적으로 inline animations를 지정하기 위한 shortcut을 형성하며, 이는 same animation이 multiple referring elements에서 사용되는 경우 useful하다.

참고:

animate attribute의 사용을 permit하는 specific element type definitions도 참조한다.

13.3 Animation Value Expressions

Animation attribute values에는 다음 expressions의 사용이 포함된다:

13.3.1 <animation-value>

<animation-value> expression은 animation이 target으로 하는 attribute의 starting(initial), intermediate, 또는 ending(final)을 지정하는 데 사용된다.

구문 표현 – <animation-value>
<animation-value>
  : ([^;] | escape)+

escape
  : '\\' char

<animation-value> expression의 syntax는 animation이 target으로 하는 attribute에 적용되는 모든 syntax requirements를 satisfy해야 하며, 또한 unescaped semicolon을 포함해서는 안 된다.

<animation-value> expression의 semantics는 [SVG 1.1], §19.2.9에서 정의한 것이다.

13.3.2 <animation-value-list>

<animation-value-list> expression은 animation이 target으로 하는 attribute에 sequentially 적용되는 animation values의 list를 지정하는 데 사용된다.

구문 표현 – <animation-value-list>
<animation-value-list>
  : <animation-value> (<lwsp>? ";" <lwsp>? <animation-value>)+

<animation-value-list> expression 안의 <animation-value> syntax는 animation이 target으로 하는 attribute에 적용되는 모든 syntax requirements를 satisfy해야 한다.

<animation-value-list> expression의 semantics는 [SVG 1.1], §19.2.9에서 정의한 것이다.

13.3.3 <calculation-mode>

<calculation-mode> expression은 animation의 interpolation mode를 control하는 데 사용된다.

구문 표현 – <calculation-mode>
<calculation-mode>
  : "discrete"
  | "linear"
  | "paced"
  | "spline"

<calculation-mode> expression의 semantics는 [SVG 1.1], §19.2.9에서 정의한 것이다.

13.3.4 <fill>

<fill> expression은 animation의 active end 이후 animation의 effect를 determine하는 데 사용된다.

구문 표현 – <fill>
<fill>
  : "freeze"
  | "remove"

<fill> expression의 semantics는 [SVG 1.1], §19.2.8에서 정의한 것이다.

13.3.5 <key-splines>

<key-splines> expression은 animation의 pacing을 control하는 Bezier control points의 list를 지정하는 데 사용되며, 여기서 각 pair of values는 optionally linear white-space(LWSP) characters로 둘러싸인 SEMICOLON(U+003B) character로 separated된다.

구문 표현 – <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
  : <digit>+

<key-splines> expression의 semantics는 key-splines attribute에 적용되는 [SVG 1.1], §19.2.9에서 정의한 것이다.

13.3.6 <key-times>

<key-times> expression은 animation의 pacing을 control하는 relative time values의 list를 지정하는 데 사용되며, 여기서 각 pair of values는 optionally linear white-space(LWSP) characters로 둘러싸인 SEMICOLON(U+003B) character로 separated된다.

구문 표현 – <key-times>
<key-times>
  : time ( <lwsp>? ";" <lwsp>? time )*

time                                // 0 ≥ value ≥ 1
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <digit>+

<key-times> expression의 semantics는 key-times attribute에 적용되는 [SVG 1.1], §19.2.9에서 정의한 것이다.

13.3.7 <repeat-count>

<repeat-count> expression은 repeated animation의 (possibly fractional) number of iterations를 determine하는 데 사용된다.

구문 표현 – <repeat-count>
<repeat-count>
  : count                           // value > 0
  | "indefinite"

count:
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <digit>+

<repeat-count> expression의 semantics는 [SVG 1.1], §19.2.8에서 정의한 것이다.

14 Metadata

이 section은 core vocabulary catalog의 metadata matter를 지정한다. 여기서 metadata는 parameters, content, style, layout, timing, 그리고 metadata 자체에도 적용되는 separable layer of information으로 이해되어야 한다. metadata가 represented하는 information은 두 forms 중 하나를 취한다: (1) document instance에서 standardized use를 위해 이 specification이 정의한 metadata, 그리고 (2) 이 specification의 scope 밖에서 정의된 arbitrary metadata로, 그 use 및 semantics는 application의 TTML Content 사용에 전적으로 depend한다.

이 specification은 metadata에 대한 presentation semantics를 정의하지 않는다. 따라서 conformant presentation processor는 모든 metadata matter를 ignore할 수 있다.

참고:

이 specification은 metadata에 presentation semantics를 ascribe하지 않지만, 이 specification의 superset profile은 그렇게 할 수 있으며, 이 경우 그러한 profile이 정의한 metadata dependent presentation semantics는 이 specification의 scope 밖으로 간주된다.

14.1 Metadata Element Vocabulary

14.1.1 metadata element는 metadata information을 grouping하기 위한 generic container element로 serve한다.

또한 TT Metadata Namespace에서 모두 정의된 다음 elements는 document instance에서 commonly used될 것으로 expected되는 metadata를 위한 standard representations를 제공한다:

14.1.1 metadata

metadata element는 metadata information을 위한 generic container로 function한다.

Metadata information은 metadata element를 사용하여 (1) metadata element에 하나 이상의 metadata attributes 또는 foreign namespace attributes를 지정하거나, (2) 하나 이상의 metadata item 또는 foreign namespace child elements를 지정하거나, (3) 하나 이상의 data child elements를 지정하거나, (4) 앞의 것들의 combination을 지정함으로써 expressed될 수 있다.

참고:

이 specification은 document instance의 formal validity가 모든 foreign namespace elements 및 attributes가 removed된 abstract document instance에 기반하도록 정의한다. 따라서 다음 XML Representation은 foreign namespace attributes 또는 foreign namespace child elements를 그 content model에 formally include하지 않는다. 그럼에도 이러한 foreign namespace child elements는 TTML document instance의 concrete encoding에 나타날 수 있다.

XML Representation – Element Information Item: metadata
<metadata
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {any attributes in TT Metadata Namespace}
  Content: (Data.class|{any element in TT Metadata Namespace})*
</metadata>

참고:

specific metadata item의 meaning은 그것이 나타나는 context에서 evaluated되어야 한다. core vocabulary catalog는 어떤 content element type에도 arbitrary number of metadata element children을 permit한다. 이러한 usage에 적용되는 constraints는 specific element vocabulary definitions를 참조한다.

document metadata의 사용은 다음 예제로 설명된다.

예제 조각 – Document Metadata
...
<head>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:title>Document Metadata Example</ttm:title>
    <ttm:desc>This document employs document metadata.</ttm:desc>
  </metadata>
</head>
...

element metadata의 사용은 다음 예제로 설명된다.

예제 조각 – Element Metadata
...
<div>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:title>Chapter 6 – Sherlock Holmes Gives a Demonstration</ttm:title>
    <ttm:desc>Holmes shows Watson how the murderer entered the window.</ttm:desc>
  </metadata>
</div>
...

metadata attribute items의 사용은 다음 예제로 설명된다.

예제 조각 – Foreign Metadata Attribute Items
...
<div xmlns:ext="http://example.org/ttml#metadata">
  <metadata ext:ednote="remove this division prior to publishing"/>
</div>
...

참고:

위 예제에서는 foreign(external) namespace의 global attribute가 containing div element에 semantically 적용되는 metadata attribute를 express하는 데 사용된다. attribute는 div element에 직접 expressed될 수도 있지만, 이 경우 author는 특정 metadata attributes를 metadata elements에 indirectly 표현함으로써 segregate하고자 한다.

참고:

TTML document instance의 concrete encoding에 foreign namespace attributes가 존재해도, 4 Document Types가 selected한 applicable abstract document type에 대한 document instance의 formal validity에는 영향을 주지 않는다.

foreign element metadata의 사용은 다음 예제로 설명된다.

예제 조각 – Foreign Element Metadata
...
<metadata
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:dcterms="http://purl.org/dc/terms/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <dc:title>Foreign Element Metadata Example</dc:title>
  <dc:description>Express metadata using elements in foreign namespace.</dc:description>
  <dc:format xsi:type="dcterms:IMT">application/ttml+xml</dc:format>
</metadata>
...

참고:

위 예제에서는 Dublin Core metadata vocabulary가 정의한 여러 elements가 document level metadata를 express하는 데 사용된다.

참고:

TTML document instance의 concrete encoding에 foreign namespace elements가 존재해도, 4 Document Types가 selected한 applicable abstract document type에 대한 document instance의 formal validity에는 영향을 주지 않는다.

14.1.2 ttm:actor

ttm:actor element는 (role-based) character agent의 definition을 그 character를 portrays하는 다른 agent와 link하는 데 사용된다.

XML Representation – Element Information Item: ttm:actor
<ttm:actor
  agent = IDREF
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: EMPTY
</ttm:actor>

ttm:actor element의 agent attribute는 character의 part를 acting하는 agent를 denoted하는 significant ttm:agent element를 reference해야 한다.

ttm:actor element의 agent attribute에서 그 parent ttm:agent element로의 reference 사용은 deprecated된다. 또한 이러한 circular chain of references의 semantics는 이 specification에 의해 정의되지 않는다.

참고:

implementation이 이러한 circular chain of agent references를 follow하는 경우, infinite loop를 피하기 위해 이 condition을 detect하고 agent references의 further dereferencing을 terminated하는 것이 권장된다.

참고:

actor가 themselves를 playing하는 경우, 예를 들어 The Trip에서 Steve Coogan이 Steve Coogan을 playing하는 경우, expected practice는 두 ttm:agent elements를 사용하는 것이다. first element(Steve Coogan the person에 대응)는 value persontype attribute를 사용하고, second element(Steve Coogan the character에 대응)는 (i) value charactertype attribute와 (ii) first ttm:agent element를 reference하는 child ttm:actor element를 사용한다.

ttm:actor element의 예제는 위의 Example Fragment – Agent Metadata에 표시되어 있다.

14.1.3 ttm:agent

ttm:agent element는 content information을 그 content의 production 또는 expression에 involved된 agent와 associating하기 위한 목적으로 agent를 define하는 데 사용된다.

ttm:agent element는 그 children으로 zero or more ttm:name elements를 허용하고, 그 뒤에 zero or one ttm:actor element를 허용한다.

person, character, group, 또는 organization의 name인지 여부와 관계없이, agent에 대한 name을 express하는 적어도 하나의 ttm:name element child가 지정되어야 한다.

XML Representation – Element Information Item: 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")
  Content: ttm:name*, ttm:actor?
</ttm:agent>

type attribute는 각 ttm:agent element에 지정되어야 하며, 지정된 경우 다음 values 중 하나를 가져야 한다:

  • person

  • character

  • group

  • organization

  • other

type attribute의 value가 character이면, ttm:agent element instance는 actor의 role을 playing하는 agent를 지정하는 ttm:actor child를 지정해야 한다.

ttm:agent metadata item은 head element의 child로 지정되거나 head element의 metadata element child의 child로 지정될 때만 significant한 것으로 간주된다.

참고:

ttm:agent element instance는 일반적으로 content element type의 ttm:agent attribute를 사용하여 referenced된다.

참고:

character agent가 multiple actors에 의해 played되는 경우, character의 different definitions가 different actors를 지정하는 multiple character agents가 specified(and referenced)될 수 있다.

agent metadata의 사용은 다음 예제로 설명된다.

예제 조각 – Agent Metadata
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml" xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
  <head>
    <ttm:agent xml:id="connery" type="person">
      <ttm:name type="family">Connery</ttm:name>
      <ttm:name type="given">Thomas Sean</ttm:name>
      <ttm:name type="alias">Sean</ttm:name>
      <ttm:name type="full">Sir Thomas Sean Connery</ttm:name>
    </ttm:agent>
    <ttm:agent xml:id="bond" type="character">
      <ttm:name type="family">Bond</ttm:name>
      <ttm:name type="given">James</ttm:name>
      <ttm:name type="alias">007</ttm:name>
      <ttm:actor agent="connery"/>
    </ttm:agent>
  </head>
  <body>
    <div>
      ...
      <p ttm:agent="bond">I travel, a sort of licensed troubleshooter.</p>
      ...
    </div>
  </body>
</tt>

참고:

위 예제에서는 두 agents, 즉 real(person) agent인 Sean Connery와 fictitious(character) agent인 James Bond가 defined되며, latter는 ttm:actor element를 통해 former와 linked된다. 그런 다음 content(p element)에서 그 content와 associated된 (responsible for producing) character agent로 reference가 이루어진다. 이 예제에서 ttm:agent metadata items는 container metadata element 안에 placed되지 않고 document의 head element의 immediate children으로 specified됨에 유의한다.

14.1.4 ttm:copyright

ttm:copyright element는 어떤 scoping level에 적용되는 human-readable copyright를 express하는 데 사용된다.

document as a whole에 적용되는 copyright statement는 head element의 child로 나타나야 한다.

XML Representation – Element Information Item: ttm:copyright
<ttm:copyright
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: #PCDATA
</ttm:copyright>

참고:

이 specification은 ttm:copyright element의 specific use를 정의하지 않는다.

14.1.5 ttm:desc

ttm:desc element는 specific element instance의 human-readable description을 express하는 데 사용된다.

XML Representation – Element Information Item: ttm:desc
<ttm:desc
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: #PCDATA
</ttm:desc>

참고:

이 specification은 ttm:desc element의 specific use를 정의하지 않는다.

ttm:desc element의 examples는 위의 Example Fragment – Document MetadataExample Fragment – Element Metadata에 표시되어 있다.

14.1.6 ttm:item

ttm:item element는 arbitrary named metadata items를 express하는 데 사용된다.

ttm:item element는 다음 두 content models 중 하나를 허용한다: (1) one or more text nodes(즉, #PCDATA) 또는 (2) zero or more nested ttm:item elements.

XML Representation – Element Information Item: ttm:item
<ttm:item
  condition = <condition>
  name = <item-name>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: #PCDATA | ttm:item*
</ttm:item>

item의 name을 identify하기 위해 name attribute가 지정되어야 하며, 그 value는 <item-name> value expression을 따라야 한다.

참고:

same name을 지정하는 multiple named metadata items의 appearance에는 general constraint가 placed되지 않는다. 그러나 specific named item의 definition은 use context 및 same name을 share하는 multiple items의 potential appearance를 further constrain할 수 있다.

named metadata item의 value는 (1) element가 child text 또는 element nodes를 가지지 않으면 empty이고, (2) ttm:item element의 children이 solely text nodes로 구성될 때 ttm:item element의 character content이며, 또는 (3) named metadata sub-items의 collection이다.

참고:

particular named item의 definition은 일반적으로 permitted values의 set을 constrain한다. 또한 specified value가 없는 경우 particular value가 implied된다고 specify할 수 있다.

참고:

named metadata item의 value가 natural language text로 구성되면, xml:lang attribute가 metadata item element에 directly specified되거나, named metadata item value에 적용되는 language를 identify하기 위해 그 element의 nearest ancestor로부터 indirectly inherited될 수 있다.

named metadata item의 사용은 다음 예제로 설명되며, 이는 simple data embedding을 original file name과 associate하기 위한 named metadata item의 사용을 보여준다.

예제 조각 – Named Metadata Item
...
<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>
...

참고:

위 예제는 data element의 child로 ttm:item element를 include하기 위해 single chunk element를 사용한다. 즉 encoded image bytes가 data element 안에 #PCDATA로 직접 included되었다면, ttm:item child element를 include할 수 없었을 것이다. more information은 data element의 supported content models를 참조한다.

14.1.7 ttm:name

ttm:name element는 person, character, group, 또는 organization의 name을 지정하는 데 사용된다.

XML Representation – Element Information Item: 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")
  Content: #PCDATA
</ttm:name>

type attribute는 각 ttm:name element에 지정되어야 하며, 지정된 경우 다음 values 중 하나를 가져야 한다:

  • full

  • family

  • given

  • alias

  • other

name의 type과 name의 syntactic expression 사이의 relationship은 이 specification에 의해 정의되지 않는다.

ttm:name element의 두 examples는 위의 Example Fragment – Agent Metadata에 표시되어 있다.

14.1.8 ttm:title

ttm:title element는 specific element instance의 human-readable title을 express하는 데 사용된다.

XML Representation – Element Information Item: ttm:title
<ttm:title
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  Content: #PCDATA
</ttm:title>

참고:

이 specification은 ttm:title element의 specific use를 정의하지 않는다.

ttm:title element의 examples는 위의 Example Fragment – Document MetadataExample Fragment – Element Metadata에 표시되어 있다.

14.2 Metadata Attribute Vocabulary

이 section은 metadata element 및 content elements와 함께 사용하기 위한 TT Metadata Namespace의 다음 attributes를 지정한다:

14.2.1 ttm:agent

ttm:agent attribute는 IDREFS value를 취하며, content를 perform하거나 content의 performance에 involved되는 agents를 designate하기 위해 content elements와 함께 사용된다.

지정된 경우, ttm:agent attribute는 significant ttm:agent element instances를 reference해야 한다.

same IDREF, IDttm:agent attribute의 value 안에 두 번 이상 appear하지 않아야 한다.

참고:

이 constraint는 redundant agent references의 사용을 discourage하기 위한 것이다.

ttm:agent attribute의 예제는 위의 Example Fragment – Agent Metadata에 표시되어 있다.

14.2.2 ttm:role

ttm:role attribute는 content author가 그렇게 labeled된 content elements의 roles, functions, 또는 characteristics를 express하는 데 사용할 수 있다.

지정된 경우, 이 attribute의 value는 다음 syntax를 따라야 한다:

구문 표현 – ttm:role
ttm:role
  role (<lwsp> role)*

role
  : "action"
  | "caption"
  | "description"
  | "dialog"
  | "expletive"
  | "kinesic"
  | "lyrics"
  | "music"
  | "narration"
  | "quality"
  | "sound"
  | "source"
  | "suppressed"
  | "reproduction"
  | "thought"
  | "title"
  | "transcription"
  | extension-role

extension-role
  : "x-" token-char+

token-char
  : { XML NameChar }    // [XML 1.1] Production [4a]

same role token, Rttm:role attribute의 value 안에 두 번 이상 appear하지 않아야 한다.

참고:

이 constraint는 redundant role tokens의 사용을 discourage하기 위한 것이다.

참고:

x- prefix로 시작하지 않는 ttm:role의 모든 values는 future standardization을 위해 reserved된다.

참고:

ttm:role의 custom x- prefixed form을 사용하는 경우, collisions를 prevent하기 위해 organization unique infix도 사용하는 것이 권장된다. 예: x-example-org-custom-role. 또한 interoperability 및 collision avoidance를 promote하기 위해 role values를 위한 registry가 https://www.w3.org/wiki/TTML/RoleRegistry에 available하다.

14.3 Metadata Value Expressions

Metadata vocabulary는 다음 expressions를 사용할 수 있다:

14.3.1 <item-name>

<item-name> expression은 ttm:item element로 expressed되는 metadata item의 name을 지정하는 데 사용된다.

구문 표현 – <item-name>
<item-name>
  : <named-item>
  | xsd:QName

item name expression이 qualified name(xsd:QName)의 form을 취하면, 그 qualified name의 prefix는 [XML Namespaces 1.0]에서 지정한 namespace declaration에 declared되어 있어야 한다.

qualified name(xsd:QName)의 form을 취하지 않는 <item-name>의 모든 values는 이 specification이 정의하거나 W3C의 future standardization을 위해 reserved된다.

참고:

이 specification이 정의한 모든 item names는 unqualified(prefix 없음)이고, external specifications가 정의한 것들은 qualified(prefix 있음)인 것으로 intended된다.

참고:

qualified item namespaces의 registry는 https://www.w3.org/wiki/TTML/ItemNameRegistry를 참조한다.

14.3.2 <named-item>

<named-item> value는 ttm:item element에 의해 value와 associated된 named metadata items의 enumerated collection의 member이다.

구문 표현 – <named-item>
<named-item>
  : "altText"
  | "usesForced"

altText

alternate text content를 express하는 string이며, 그 value는 xsd:string을 따른다. 일반적으로 어떤 related image content에 대한 text equivalent 또는 summary를 provide하는 데 사용된다.

참고:

이 text equivalent는 content의 indexing을 support하고 authoring 동안 document의 quality checking을 facilitate하는 데 사용될 수 있다.

참고:

[HTML 5.2]와 달리, 이 named metadata item의 text content는 referring element의 primary(alternate와 대비되는) content가 presented될 수 없는 경우 그 element 대신 presented되는 것으로 intended되지 않는다. 그러나 이 alternate text content는 assistive technologies에 의해 사용될 수 있다.

usesForced

어떤 <condition> expression이 forced bound parameter를 사용하는지 여부를 express하는 boolean이며, 그 value는 xsd:boolean을 따른다. 이 named metadata item이 document instance에 present하면, head element의 child로 지정되어야 한다.

A Concrete Encoding

이 appendix는 normative이다.

다른 requirements가 없는 경우, document instance는 UTF-8 character encoding을 사용하여 well-formed XML 1.0 [XML 1.0] document로 concretely encoded되어야 한다.

참고:

XML 1.0 [XML 1.0]을 TTML의 concrete encoding으로 사용할 때, 다음 named character entities만 정의된다: &amp;, &apos;, &gt;, &lt;, 및 &quot;.

B Reduced XML Infoset

이 appendix는 normative이다.

이 specification의 목적상, reduced xml infoset은 다음 information items 및 information item properties만으로 구성되는 XML Information Set [XML InfoSet]이다:

B.1 Document Information Item

  • [document element]

B.2 Element Information Item

  • [namespace URI]

  • [local name]

  • [children]

  • [attributes]

Child information items [children]element information itemscharacter information items로만 reduced된다.

B.3 Attribute Information Item

  • [namespace URI]

  • [local name]

  • [normalized value]

참고:

reduced xml infoset이 XML document entity의 concrete representation으로부터 constructed되면, [normalized value] information item은 [XML 1.0], §3.3.3, step (3), first bullet에서 지정한 unnormalized XML whitespace characters &#9; (HT), &#10; (LF), &#13; (CR), 및 &#20; (SPACE)를 포함할 수 있다. 특히 whitespace character 자체(이는 normalized됨)를 사용하는 대신 이러한 whitespace characters 중 하나를 denoted하기 위해 numeric character reference가 사용되는 경우(이는 normalized되지 않음) 이런 일이 발생할 수 있다.

참고:

attribute information item도 참조한다.

B.4 Character Information Item

  • [character code]

Contiguous character information items는 distinct하게 represented될 필요는 없지만, character codes의 sequence(즉 character string)로 aggregated(chunked)될 수 있다.

참고:

character information item도 참조한다.

C Schemas

이 appendix는 normative이다.

이 appendix는 document instances와 함께 사용하기 위한 다음 schemas를 지정한다:

이 appendix가 지정한 schema가 이 specification 본문에서 정의한 document type, element type, 또는 attribute type의 normative definitions와 다른 경우에는, 이 specification의 본문이 precedence를 가진다.

C.1 Relax NG Compact (RNC) Schema

TTML Content를 위한 Relax NG Compact Syntax (RNC) [RELAX NG] based schema는 ZIP Archive에서 available하다. 이 schema는 이 specification이 정의한 Timed Text Markup Language content의 validity를 정의하기 위한 목적으로는 non-normative로 간주된다. 특히 TTML Content의 formal validity는 3.1 Document Conformance에 의해 정의된다.

C.2 XML Schema Definition (XSD) Schema

TTML Content를 위한 W3C XML Schema Definition (XSD) [XML Schema Part 1] based schema는 ZIP Archive에서 available하다. 이 schema는 이 specification이 정의한 Timed Text Markup Language content의 validity를 정의하기 위한 목적으로는 non-normative로 간주된다. 특히 TTML Content의 formal validity는 3.1 Document Conformance에 의해 정의된다.

D Media Type Registration

이 appendix는 이 specification에서 removed되었다.

E Features

이 appendix는 normative이다.

이 appendix는 (1) 이 specification이 정의한 하나 이상의 syntactic 및/또는 semantic features에 각각 label을 붙이는 feature designations의 set, 그리고 (2) 각 designated feature에 대해, 3.2.2 Transformation Processor Conformance 또는 3.2.3 Presentation Processor Conformance의 requirements를 준수하는 TTML content processor에서 해당 feature가 mandatory인지 optional인지를 지정한다.

참고:

TTML processor는 transformation 또는 presentation processing에 관련되는 feature designation F의 definition에 관해 이 appendix의 requirements를 satisfy하면, feature designation Ftransformation semantics를 implement한다 또는 presentation semantics를 implement한다고 한다.

참고:

아래 feature designation의 definition이 specific element type 또는 context로 scoped되지 않은 경우, 그 designated feature를 supporting한다는 것은 permitted contexts of use 전체에서 이를 supporting하는 것을 의미하도록 intended된다.

예를 들어 #length-root-container-relative feature를 supporting한다는 것은 otherwise prohibited되지 않는 모든 <length> expression에서 그 사용을 supporting한다는 뜻이다.

참고:

TTML processor의 implementation이 어떤 feature의 semantics를 support하지 않지만, 그 feature의 syntactic expression이 implementation에 알려져 있으면, implementation은 expression을 parse할 수 있지만 expression의 unsupported components의 semantics를 ignore할 수 있도록 하는 것이 권장된다.

예를 들어 #textEmphasis-minimal은 supported되지만 #textEmphasis-color는 supported되지 않는 경우, tts:textEmphasis의 values가 <emphasis-color> component를 포함한다면, 그 unsupported component의 semantics는 ignoring하면서 parse되어야 한다(하지만 attribute value의 다른 supported components의 semantics를 ignoring해서는 안 된다).

E.1 Feature Designations

feature designation은 다음 form을 따르는 string으로 expressed된다:

feature-designation
  : feature-namespace designation

feature-namespace
  : TT Feature Namespace                    // http://www.w3.org/ns/ttml/feature/

designation
  : "#" token-char+

token-char
  : { XML NameChar }                        // [XML 1.1] Production [4a]

이 specification이 정의하지 않은 feature-designation의 모든 values는 future standardization을 위해 reserved된다.

다음 sub-sections는 TT Feature Namespace base URI에 대해 relative URIs(fragment identifiers)로 expressed되는 모든 feature designations를 정의한다.

이 section의 feature designator definition이 [TTML1]에서 같은 feature designator의 definition을 reference하고, latter(referenced) definition이 "all defined values"라는 phrase를 사용하는 경우, those values는 [TTML1]에서 정의한 모든 values로 구성된다. 그렇지 않고 "all defined values" phrase가 바로 아래에 나타나는 경우, those values는 이 specification에서 정의한 모든 values로 구성된다.

참고:

suffix -version-2를 가진 이 section의 Feature designations는 TTML specification의 이(second) version, 즉 TTML2에 의해 새로 정의된다.

E.1.1 #animate

TTML processor는 다음 features를 support하는 경우 #animate feature를 support한다:

#animate feature는 #animate-minimal feature의 syntactic 및 semantic extension이다.

content profile이 #animate feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #animate-fill, #animate-minimal, #animate-paced, #animate-repeat, 또는 #animate-spline.

E.1.2 #animate-minimal

TTML transformation processorcalcMode attribute의 discretelinear values와 함께 사용될 때 animate element의 semantics를 recognize하고 transform할 수 있으면 #animate-minimal feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #animate-minimal feature를 support한다.

참고:

calcMode attribute의 discretelinear values에 대한 support는 keyTimes attribute에 대한 support도 imply한다.

참고:

#animate-minimal feature에 대한 support는 다음 features 중 어떤 것도 support한다는 것을 imply하지 않는다: #animate-fill, #animate-paced, #animate-repeat, 또는 #animate-spline.

E.1.3 #animate-fill

TTML transformation processoranimate element의 fill attribute의 semantics를 recognize하고 transform할 수 있으면 #animate-fill feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #animate-fill feature를 support한다.

E.1.4 #animate-paced

TTML transformation processorcalcMode attribute의 paced value와 함께 사용될 때 animate element의 semantics를 recognize하고 transform할 수 있으면 #animate-paced feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #animate-paced feature를 support한다.

E.1.5 #animate-repeat

TTML transformation processoranimate element의 repeatCount attribute의 semantics를 recognize하고 transform할 수 있으면 #animate-repeat feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #animate-repeat feature를 support한다.

E.1.6 #animate-spline

TTML transformation processorcalcMode attribute의 spline value와 함께 사용될 때 animate element의 semantics를 recognize하고 transform할 수 있으면 #animate-spline feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #animate-spline feature를 support한다.

참고:

calcMode attribute의 spline value에 대한 support는 keySplines attribute에 대한 support도 imply한다.

E.1.7 #animation

TTML content processor는 [TTML1], §D.1.1에서 정의된 #animation feature를 support하면 #animation feature를 support한다.

참고:

#animation feature에 대한 support는 #set feature에 대한 support와 functionally equivalent하다.

content profile이 #animation feature의 사용을 require하거나 permit하지만 #set feature의 사용을 prohibit하는 것은 error이다.

E.1.8 #animation-out-of-line

TTML transformation processor13 Animation에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #animation-out-of-line feature를 support한다:

그리고 13.2 Animation Attribute Vocabulary에서 정의한 다음 attribute를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #animation-out-of-line feature를 support한다.

E.1.9 #animation-version-2

TTML processor는 다음 features를 support하는 경우 #animation-version-2 feature를 support한다:

#animation-version-2 feature는 #animation feature의 syntactic 및 semantic extension이다.

content profile이 #animation-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #animate, #animation-out-of-line, 또는 #animation.

E.1.10 #audio

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #audio feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #audio feature를 support한다.

E.1.11 #audio-description

TTML processor는 다음 features를 support하는 경우 #audio-description feature를 support한다:

content profile이 #audio-description feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #audio, #gain, 또는 #pan.

E.1.12 #audio-speech

TTML processor는 다음 features를 support하는 경우 #audio-speech feature를 support한다:

content profile이 #audio-speech feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #pitch, #speak, 또는 #speech.

E.1.13 #background

TTML processor는 다음 features를 support하는 경우 #background feature를 support한다:

content profile이 #background feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #backgroundColor 또는 #background-image.

E.1.14 #background-image

TTML processor는 다음 features를 support하는 경우 #background-image feature를 support한다:

content profile이 #background feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #backgroundClip, #backgroundExtent, #backgroundImage, #backgroundOrigin, #backgroundPosition, 또는 #backgroundRepeat.

E.1.15 #backgroundClip

TTML transformation processortts:backgroundClip attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #backgroundClip feature를 support한다.

TTML presentation processortts:backgroundClip attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #backgroundClip feature를 support한다.

E.1.16 #backgroundColor

TTML content processor는 [TTML1], §D.1.2에서 정의된 #backgroundColor feature를 support하면 #backgroundColor feature를 support한다.

참고:

#backgroundColor feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #backgroundColor feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #backgroundColor-block, #backgroundColor-inline, 또는 #backgroundColor-region.

E.1.17 #backgroundColor-block

TTML content processor는 [TTML1], §D.1.3에서 정의된 #backgroundColor-block feature를 support하면 #backgroundColor-block feature를 support한다.

E.1.18 #backgroundColor-inline

TTML content processor는 [TTML1], §D.1.4에서 정의된 #backgroundColor-inline feature를 support하면 #backgroundColor-inline feature를 support한다.

E.1.19 #backgroundColor-region

TTML content processor는 [TTML1], §D.1.5에서 정의된 #backgroundColor-region feature를 support하면 #backgroundColor-region feature를 support한다.

E.1.20 #backgroundExtent

TTML transformation processortts:backgroundExtent attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #backgroundExtent feature를 support한다.

TTML presentation processortts:backgroundExtent attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #backgroundExtent feature를 support한다.

E.1.21 #backgroundImage

TTML transformation processortts:backgroundImage attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #backgroundImage feature를 support한다.

TTML presentation processortts:backgroundImage attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #backgroundImage feature를 support한다.

E.1.22 #backgroundOrigin

TTML transformation processortts:backgroundOrigin attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #backgroundOrigin feature를 support한다.

TTML presentation processortts:backgroundOrigin attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #backgroundOrigin feature를 support한다.

E.1.23 #backgroundPosition

TTML transformation processortts:backgroundPosition attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #backgroundPosition feature를 support한다.

TTML presentation processortts:backgroundPosition attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #backgroundPosition feature를 support한다.

E.1.24 #backgroundRepeat

TTML transformation processortts:backgroundRepeat attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #backgroundRepeat feature를 support한다.

TTML presentation processortts:backgroundRepeat attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #backgroundRepeat feature를 support한다.

E.1.25 #base

TTML transformation processor6.1 Profile Element Vocabulary에서 정의된 다음 vocabulary에 적용될 때 xml:base attribute를 recognize하고 transform할 수 있으면 #base feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #base feature를 support한다.

E.1.26 #base-general

TTML transformation processor는 다음을 제외하고 이 attribute가 permitted되는 6.1 Profile Element Vocabulary에서 정의한 모든 vocabulary에 적용될 때 xml:base attribute를 recognize하고 transform할 수 있으면 #base-general feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #base-general feature를 support한다.

E.1.27 #base-version-2

TTML processor는 다음 features를 support하는 경우 #base-version-2 feature를 support한다:

#base-version-2 feature는 #base feature의 syntactic 및 semantic extension이다.

content profile이 #base-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #base 또는 #base-general.

E.1.28 #bidi

TTML content processor는 [TTML1], §D.1.6에서 정의된 #bidi feature를 support하면 #bidi feature를 support한다.

참고:

#bidi feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #bidi feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #direction, #unicodeBidi, 또는 #writingMode-horizontal.

E.1.29 #bidi-version-2

TTML processor는 다음 features를 support하는 경우 #bidi-version-2 feature를 support한다:

#bidi-version-2 feature는 #bidi feature의 syntactic 및 semantic extension이다.

content profile이 #bidi-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #bidi 또는 #unicodeBidi-isolate.

E.1.30 #border

TTML processor는 다음 features를 support하는 경우 #border feature를 support한다:

content profile이 #border feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #border-block, #border-inline, 또는 #border-region.

E.1.31 #border-block

TTML transformation processor는 presentation processing 동안 block area를 generate할 content element에 적용될 때 tts:border attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #border-block feature를 support한다.

TTML presentation processor는 block area를 generate하는 content element에 적용될 때 tts:border attribute에 대한 presentation semantic support를 implement하면 #border-block feature를 support한다.

E.1.32 #border-inline

TTML transformation processor는 presentation processing 동안 inline area를 generate할 content element에 적용될 때 tts:border attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #border-inline feature를 support한다.

TTML presentation processor는 inline area를 generate하는 content element에 적용될 때 tts:border attribute에 대한 presentation semantic support를 implement하면 #border-inline feature를 support한다.

E.1.33 #border-radii

TTML processor는 다음 features를 support하는 경우 #border-radii feature를 support한다:

content profile이 #border-radii feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #border-radii-1 또는 #border-radii-2.

E.1.34 #border-radii-1

TTML transformation processortts:border attribute에 지정된 <border-radii> value expression의 one component values를 recognize하고 transform할 수 있으면 #border-radii-1 feature를 support한다.

TTML presentation processortts:border attribute에 지정된 <border-radii> value expression의 one component values에 대한 presentation semantic support를 implement하면 #backgroundClip feature를 support한다.

E.1.35 #border-radii-2

TTML transformation processortts:border attribute에 지정된 <border-radii> value expression의 two component values를 recognize하고 transform할 수 있으면 #border-radii-2 feature를 support한다.

TTML presentation processortts:border attribute에 지정된 <border-radii> value expression의 two component values에 대한 presentation semantic support를 implement하면 #backgroundClip feature를 support한다.

E.1.36 #border-region

TTML transformation processorregion element에 적용될 때 tts:border attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #border-region feature를 support한다.

TTML presentation processorregion element에 적용될 때 tts:border attribute에 대한 presentation semantic support를 implement하면 #border-region feature를 support한다.

E.1.37 #bpd

TTML transformation processortts:bpd attribute를 recognize하고 transform할 수 있으면 #bpd feature를 support한다.

TTML presentation processortts:bpd attribute에 대한 presentation semantic support를 implement하면 #bpd feature를 support한다.

E.1.38 #cellResolution

TTML content processor는 [TTML1], §D.1.7에서 정의된 #cellResolution feature를 support하면 #cellResolution feature를 support한다.

E.1.39 #chunk

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #chunk feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #chunk feature를 support한다.

E.1.40 #clockMode

TTML content processor는 [TTML1], §D.1.8에서 정의된 #clockMode feature를 support하면 #clockMode feature를 support한다.

E.1.41 #clockMode-gps

TTML content processor는 [TTML1], §D.1.9에서 정의된 #clockMode-gps feature를 support하면 #clockMode-gps feature를 support한다.

E.1.42 #clockMode-local

TTML content processor는 [TTML1], §D.1.10에서 정의된 #clockMode-local feature를 support하면 #clockMode-local feature를 support한다.

E.1.43 #clockMode-utc

TTML content processor는 [TTML1], §D.1.11에서 정의된 #clockMode-utc feature를 support하면 #clockMode-utc feature를 support한다.

E.1.44 #color

TTML content processor는 [TTML1], §D.1.12에서 정의된 #color feature를 support하면 #color feature를 support한다.

E.1.45 #condition

TTML processor는 다음 features를 support하는 경우 #condition feature를 support한다:

content profile이 #condition feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #condition-fn-media, #condition-fn-parameter, #condition-fn-supports, #condition-primary.

E.1.46 #condition-fn-media

TTML content processor<condition> value expression에서 사용될 때 <media-function> sub-expression을 support하면 #condition-fn-media feature를 support한다.

E.1.47 #condition-fn-parameter

TTML content processor<condition> value expression에서 사용될 때 <parameter-function> sub-expression을 support하면 #condition-fn-parameter feature를 support한다.

E.1.48 #condition-fn-supports

TTML content processor<condition> value expression에서 사용될 때 <supports-function> sub-expression을 support하면 #condition-fn-supports feature를 support한다.

E.1.49 #condition-primary

TTML content processor<condition-function> sub-expression을 포함하지 않는 <condition> value expressions를 support하면 #condition-primary feature를 support한다.

E.1.50 #content

TTML content processor는 [TTML1], §D.1.13에서 정의된 #content feature를 support하면 #content feature를 support한다.

E.1.51 #content-sizing

TTML processor는 다음 features를 support하는 경우 #content-sizing feature를 support한다:

content profile이 #content-sizing feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #bpd 또는 #ipd.

E.1.52 #contentProfiles

TTML transformation processor는 (1) non-combined profiles를 support하고 (2) 다음을 recognize하고 transform할 수 있으면 #contentProfiles feature를 support한다:

  1. 6.2 Profile Attribute Vocabulary에서 정의한 다음 profile attributes vocabulary:

  2. ttp:inferProcessorProfileSource attribute의 first value,

  3. ttp:profile element의 designator attribute,

  4. ttp:profile element의 type attribute의 content value, 그리고

  5. ttp:featurettp:extension elements의 value attribute의 prohibited value.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #contentProfiles feature를 support한다.

참고:

#contentProfiles feature에 대한 support는 combined profiles 또는 nesting profiles에 대한 support를 imply하지 않는다.

E.1.53 #contentProfiles-combined

TTML transformation processor는 (1) #contentProfiles feature를 support하고, (2) combined profiles를 support하며 (3) 다음을 recognize하고 transform할 수 있으면 #contentProfiles-combined feature를 support한다:

  1. 6.2 Profile Attribute Vocabulary에서 정의한 다음 profile attributes vocabulary:

  2. ttp:inferProcessorProfileSource attribute의 combined value, 그리고

  3. ttp:profile element의 combine attribute.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #contentProfiles-combined feature를 support한다.

#contentProfiles-combine feature는 #contentProfiles feature의 syntactic 및 semantic extension이다.

content profile이 #contentProfiles-combine feature의 사용을 require하거나 permit하지만 #contentProfiles feature의 사용을 prohibit하는 것은 error이다.

참고:

#contentProfiles-combined feature에 대한 support는 nesting profiles에 대한 support를 imply하지 않는다.

E.1.54 #core

TTML content processor는 [TTML1], §D.1.14에서 정의된 #core feature를 support하면 #core feature를 support한다.

E.1.55 #data

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #data feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #data feature를 support한다.

E.1.56 #direction

TTML content processor는 [TTML1], §D.1.15에서 정의된 #direction feature를 support하면 #direction feature를 support한다.

E.1.57 #disparity

TTML transformation processortts:disparity attribute를 recognize하고 transform할 수 있으면 #disparity feature를 support한다.

TTML presentation processortts:disparity attribute에 대한 presentation semantic support를 implement하면 #disparity feature를 support한다.

참고:

#disparity feature에 대한 support는 #region-implied-animation feature에 대한 support를 imply하지 않는다.

E.1.58 #display

TTML content processor는 [TTML1], §D.1.16에서 정의된 #display feature를 support하면 #display feature를 support한다.

참고:

#display feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #display feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #display-block, #display-inline, 또는 #display-region.

E.1.59 #display-block

TTML content processor는 [TTML1], §D.1.17에서 정의된 #display-block feature를 support하면 #display-block feature를 support한다.

E.1.60 #display-inline

TTML content processor는 [TTML1], §D.1.18에서 정의된 #display-inline feature를 support하면 #display-inline feature를 support한다.

E.1.61 #display-inlineBlock

TTML transformation processor는 presentation processing 동안 inline area를 generate할 content element에 적용될 때 tts:display attribute의 inlineBlock value를 recognize하고 transform할 수 있으면 #display-inlineBlock feature를 support한다.

TTML presentation processor는 presentation processing 동안 inline area를 generate할 content element에 적용될 때 tts:display attribute의 inlineBlock value의 presentation semantics를 support하면 #display-inlineBlock feature를 support한다.

E.1.62 #display-region

TTML content processor는 [TTML1], §D.1.19에서 정의된 #display-region feature를 support하면 #display-region feature를 support한다.

E.1.63 #display-version-2

TTML processor는 다음 features를 support하는 경우 #display-version-2 feature를 support한다:

#display-version-2 feature는 #display feature의 syntactic 및 semantic extension이다.

content profile이 #display-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #display, #display-block, #display-inline, #display-inlineBlock, 또는 #display-region.

E.1.64 #displayAlign

TTML content processor는 [TTML1], §D.1.20에서 정의된 #displayAlign feature를 support하면 #displayAlign feature를 support한다.

참고:

#displayAlign feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #displayAlign feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #displayAlign-region 또는 #displayAlign-relative.

E.1.65 #displayAlign-block

TTML transformation processor는 presentation processing 동안 block area를 generate할 content element에 적용될 때 tts:displayAlign attribute에 대한 transformation semantic support를 implement하면 #displayAlign-block feature를 support한다.

TTML presentation processor는 block area를 generate하는 content element에 적용될 때 tts:displayAlign attribute에 대한 presentation semantic support를 implement하면 #displayAlign-block feature를 support한다.

E.1.66 #displayAlign-justify

TTML transformation processortts:displayAlign attribute의 justify value를 recognize하고 transform할 수 있으면 #displayAlign-justify feature를 support한다.

TTML presentation processortts:displayAlign attribute의 justify value에 대한 presentation semantic support를 implement하면 #displayAlign-justify feature를 support한다.

E.1.67 #displayAlign-region

TTML transformation processorregion element에 적용될 때 tts:displayAlign attribute에 대한 transformation semantic support를 implement하면 #displayAlign-region feature를 support한다.

TTML presentation processorregion element에 적용될 때 tts:displayAlign attribute에 대한 presentation semantic support를 implement하면 #displayAlign-region feature를 support한다.

E.1.68 #displayAlign-relative

TTML transformation processortts:displayAlign attribute의 before, center, 및 after values를 recognize하고 transform할 수 있으면 #displayAlign-relative feature를 support한다.

TTML presentation processortts:displayAlign attribute의 before, center, 및 after values에 대한 presentation semantic support를 implement하면 #displayAlign-relative feature를 support한다.

E.1.69 #displayAlign-version-2

TTML processor는 다음 features를 support하는 경우 #displayAlign-version-2 feature를 support한다:

#displayAlign-version-2 feature는 #displayAlign feature의 syntactic 및 semantic extension이다.

content profile이 #displayAlign-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #displayAlign, #displayAlign-block, #displayAlign-justify, #displayAlign-region, 또는 #displayAlign-relative.

E.1.70 #displayAspectRatio

TTML transformation processorttp:displayAspectRatio attribute를 recognize하고 transform할 수 있으면 #displayAspectRatio feature를 support한다.

TTML presentation processorttp:displayAspectRatio attribute에 대한 presentation semantic support를 implement하면 #displayAspectRatio feature를 support한다.

E.1.71 #dropMode

TTML content processor는 [TTML1], §D.1.21에서 정의된 #dropMode feature를 support하면 #dropMode feature를 support한다.

참고:

#dropMode feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #dropMode feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #dropMode-dropNTSC, #dropMode-dropPAL, 또는 #dropMode-nonDrop.

E.1.72 #dropMode-dropNTSC

TTML content processor는 [TTML1], §D.1.22에서 정의된 #dropMode-dropNTSC feature를 support하면 #dropMode-dropNTSC feature를 support한다.

E.1.73 #dropMode-dropPAL

TTML content processor는 [TTML1], §D.1.23에서 정의된 #dropMode-dropPAL feature를 support하면 #dropMode-dropPAL feature를 support한다.

E.1.74 #dropMode-nonDrop

TTML content processor는 [TTML1], §D.1.24에서 정의된 #dropMode-nonDrop feature를 support하면 #dropMode-nonDrop feature를 support한다.

E.1.75 #embedded-audio

TTML processor는 다음 features를 support하는 경우 #embedded-audio feature를 support한다:

content profile이 #embedded-audio feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #embedded-data 또는 #audio.

E.1.76 #embedded-content

TTML processor는 다음 features를 support하는 경우 #embedded-content feature를 support한다:

content profile이 #embedded-content feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #embedded-audio, #embedded-font, 또는 #embedded-image.

E.1.77 #embedded-data

TTML processor는 다음 features를 support하는 경우 #embedded-data feature를 support한다:

content profile이 #embedded-data feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #chunk, #data, #resources, 또는 #source.

E.1.78 #embedded-font

TTML processor는 다음 features를 support하는 경우 #embedded-font feature를 support한다:

content profile이 #embedded-font feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #embedded-data 또는 #font.

E.1.79 #embedded-image

TTML processor는 다음 features를 support하는 경우 #embedded-image feature를 support한다:

content profile이 #embedded-image feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #embedded-data 또는 #image.

E.1.80 #extent

TTML content processor는 [TTML1], §D.1.25에서 정의된 #extent feature를 support하면 #extent feature를 support한다.

참고:

#extent feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #extent feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #extent-region 또는 #extent-root.

참고:

#extent feature에 대한 support는 #region-implied-animation feature에 대한 support를 imply하지 않는다.

E.1.81 #extent-auto

TTML content processor는 [TTML1], §8.2.7에서 정의된 대로 tts:extent attribute의 auto value의 syntax 및 semantics를 support하면 #extent-auto feature를 support한다.

E.1.82 #extent-auto-version-2

TTML transformation processor는 이 specification이 정의한 tts:extent attribute의 auto value의 syntax 및 semantics를 recognize하고 transform할 수 있으면 #extent-auto-version-2 feature를 support한다.

TTML presentation processor는 위에서 설명한 tts:extent attribute의 auto value에 대한 semantic extensions에 대해 presentation semantic support를 implement하면 #extent-auto-version-2 feature를 support한다.

#extent-auto-version-2 feature는 #extent-auto feature의 semantic extension이다.

content profile이 #extent-auto-version-2 feature의 사용을 require하거나 permit하지만 (1) #extent-auto feature 또는 (2) 다음 features 모두의 사용을 prohibit하는 것은 error이다: #extent-root, #extent-region, 및 #extent-image.

참고:

#extent-auto-version-2 feature에 대한 support는 다음 features에 대한 support를 imply하지 않는다:

그러나 이러한 features 중 하나라도 supported되면, #extent-auto-version-2 feature에 대한 support는 그 feature와 관련하여 #extent-auto-version-2가 supported됨을 imply한다. 더 구체적으로 말하면, 그 feature가 support하는 element(s), 즉 각각 다음 element types 중 어느 것과 관련해서도 supported됨을 의미한다: tt, region, 및 image.

E.1.83 #extent-contain

TTML transformation processortts:extent attribute의 contain value를 recognize하고 transform할 수 있으면 #extent-contain feature를 support한다.

TTML presentation processortts:extent attribute의 contain value에 대한 presentation semantic support를 implement하면 #extent-contain feature를 support한다.

E.1.84 #extent-cover

TTML transformation processortts:extent attribute의 cover value를 recognize하고 transform할 수 있으면 #extent-cover feature를 support한다.

TTML presentation processortts:extent attribute의 cover value에 대한 presentation semantic support를 implement하면 #extent-cover feature를 support한다.

E.1.85 #extent-full-version-2

TTML processor는 다음 features를 support하는 경우 #extent-full-version-2 feature를 support한다:

#extent-full-version-2 feature는 #extent-version-2 feature의 syntactic 및 semantic extension이다.

content profile이 #extent-full-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #extent-contain, #extent-cover, #extent-measure, 또는 #extent-version-2.

참고:

#extent-full-version-2 feature에 대한 support는 #region-implied-animation feature에 대한 support를 imply하지 않는다.

E.1.86 #extent-image

TTML transformation processorimage element에 적용될 때 #extent-auto-version-2#extent-length-version-2 features가 support하는 tts:extent attribute values를 support하면 #extent-image feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #extent-image feature를 support한다.

content profile이 #extent-image feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #extent, #extent-auto-version-2, 또는 #extent-length-version-2.

E.1.87 #extent-length

TTML content processor는 [TTML1], §8.2.7에서 정의된 대로 tts:extent attribute의 <length> component values를 support하면 #extent-length feature를 support한다.

E.1.88 #extent-length-version-2

TTML content processor는 tts:extent attribute의 <length> component values에 적용될 때 #length-version-2 feature를 support하면 #extent-length-version-2 feature를 support한다.

#extent-length-version-2 feature는 #extent-length feature의 syntactic 및 semantic extension이다.

content profile이 #extent-length-version-2 feature의 사용을 require하거나 permit하지만 #extent-length feature의 사용을 prohibit하는 것은 error이다.

E.1.89 #extent-measure

TTML transformation processortts:extent attribute와 함께 사용될 때 <measure> style value expression의 다음 values를 recognize하고 transform할 수 있으면 #extent-measure feature를 support한다:

  • auto

  • fitContent

  • maxContent

  • minContent

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #extent-measure feature를 support한다.

E.1.90 #extent-region

TTML content processor는 [TTML1], §D.1.26에서 정의된 #extent-region feature를 support하면 #extent-region feature를 support한다.

참고:

#extent-region feature에 대한 support는 region element에 적용될 때 #extent-auto#extent-length features에 대한 support를 imply한다.

E.1.91 #extent-region-version-2

TTML processor는 다음 features를 support하는 경우 #extent-region-version-2 feature를 support한다:

#extent-region-version-2 feature는 #extent-region feature의 syntactic 및 semantic extension이다.

content profile이 #extent-region-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #extent-region, #extent-auto-version-2, 또는 #extent-length-version-2.

참고:

#extent-region-version-2 feature에 대한 support는 #region-implied-animation feature에 대한 support를 imply하지 않는다.

E.1.92 #extent-root

TTML content processor는 [TTML1], §D.1.27에서 정의된 #extent-root feature를 support하면 #extent-root feature를 support한다.

참고:

#extent-root feature에 대한 support는 tt element에 적용될 때 #extent-auto#extent-length features에 대한 support를 imply한다.

E.1.93 #extent-root-version-2

TTML processor는 다음 features를 support하는 경우 #extent-root-version-2 feature를 support한다:

#extent-root-version-2 feature는 #extent-root feature의 syntactic 및 semantic extension이다.

content profile이 #extent-root-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #extent-root, #extent-auto-version-2, 또는 #extent-length-version-2.

E.1.94 #extent-version-2

TTML processor는 다음 features를 support하는 경우 #extent-version-2 feature를 support한다:

#extent-version-2 feature는 #extent feature의 syntactic 및 semantic extension이다.

content profile이 #extent-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #extent, #extent-image, #extent-region-version-2, 또는 #extent-root-version-2.

참고:

#extent-version-2 feature에 대한 support는 다음 features 중 어떤 것에 대한 support도 imply하지 않는다: #extent-contain, #extent-cover, #extent-measure, 또는 #region-implied-animation.

E.1.95 #font

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #font feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #font feature를 support한다.

E.1.96 #fontFamily

TTML content processor는 [TTML1], §D.1.28에서 정의된 #fontFamily feature를 support하면 #fontFamily feature를 support한다.

참고:

#fontFamily feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #fontFamily feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #fontFamily-generic 또는 #fontFamily-non-generic.

E.1.97 #fontFamily-generic

TTML content processor는 [TTML1], §D.1.29에서 정의된 #fontFamily-generic feature를 support하면 #fontFamily-generic feature를 support한다.

E.1.98 #fontFamily-non-generic

TTML content processor는 [TTML1], §D.1.30에서 정의된 #fontFamily-non-generic feature를 support하면 #fontFamily-non-generic feature를 support한다.

E.1.99 #fontKerning

TTML transformation processortts:fontKerning attribute를 recognize하고 transform할 수 있으면 #fontKerning feature를 support한다.

TTML presentation processortts:fontKerning attribute에 대한 presentation semantic support를 implement하면 #fontKerning feature를 support한다.

E.1.100 #fontSelectionStrategy

TTML transformation processortts:fontSelectionStrategy attribute의 auto value를 recognize하고 transform할 수 있으면 #fontSelectionStrategy feature를 support한다.

TTML presentation processortts:fontSelectionStrategy attribute의 auto value에 대한 presentation semantic support를 implement하면 #fontSelectionStrategy feature를 support한다.

E.1.101 #fontSelectionStrategy-character

TTML transformation processortts:fontSelectionStrategy attribute의 character value를 recognize하고 transform할 수 있으면 #fontSelectionStrategy-character feature를 support한다.

TTML presentation processortts:fontSelectionStrategy attribute의 character value에 대한 presentation semantic support를 implement하면 #fontSelectionStrategy-character feature를 support한다.

E.1.102 #fontShear

TTML transformation processortts:fontShear attribute를 recognize하고 transform할 수 있으면 #fontShear feature를 support한다.

TTML presentation processortts:fontShear attribute에 대한 presentation semantic support를 implement하면 #fontShear feature를 support한다.

E.1.103 #fontSize

TTML content processor는 [TTML1], §D.1.31에서 정의된 #fontSize feature를 support하면 #fontSize feature를 support한다.

참고:

#fontSize feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #fontSize feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #fontSize-anamorphic 또는 #fontSize-isomorphic.

E.1.104 #fontSize-anamorphic

TTML content processor는 [TTML1], §D.1.32에서 정의된 #fontSize-anamorphic feature를 support하면 #fontSize-anamorphic feature를 support한다.

E.1.105 #fontSize-isomorphic

TTML content processor는 [TTML1], §D.1.33에서 정의된 #fontSize-isomorphic feature를 support하면 #fontSize-isomorphic feature를 support한다.

E.1.106 #fontStyle

TTML content processor는 [TTML1], §D.1.34에서 정의된 #fontStyle feature를 support하면 #fontStyle feature를 support한다.

참고:

#fontStyle feature에 대한 support는 (1) #fontStyle-italic#fontStyle-oblique features, 그리고 (2) tts:fontStyle attribute의 normal value에 대한 support와 functionally equivalent하다.

content profile이 #fontStyle feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #fontStyle-italic 또는 #fontStyle-oblique.

E.1.107 #fontStyle-italic

TTML content processor는 [TTML1], §D.1.35에서 정의된 #fontStyle-italic feature를 support하면 #fontStyle-italic feature를 support한다.

E.1.108 #fontStyle-oblique

TTML content processor는 [TTML1], §D.1.36에서 정의된 #fontStyle-oblique feature를 support하면 #fontStyle-oblique feature를 support한다.

E.1.109 #fontVariant

TTML transformation processortts:fontVariant attribute를 recognize하고 transform할 수 있으면 #fontVariant feature를 support한다.

TTML presentation processortts:fontVariant attribute에 대한 presentation semantic support를 implement하면 #fontVariant feature를 support한다.

E.1.110 #fontWeight

TTML content processor는 [TTML1], §D.1.37에서 정의된 #fontWeight feature를 support하면 #fontWeight feature를 support한다.

참고:

#fontWeight feature에 대한 support는 (1) #fontWeight-bold feature 및 (2) tts:fontWeight attribute의 normal value에 대한 support와 functionally equivalent하다.

content profile이 #fontWeight feature의 사용을 require하거나 permit하지만 #fontWeight-bold feature의 사용을 prohibit하는 것은 error이다.

E.1.111 #fontWeight-bold

TTML content processor는 [TTML1], §D.1.38에서 정의된 #fontWeight-bold feature를 support하면 #fontWeight-bold feature를 support한다.

E.1.112 #frameRate

TTML content processor는 [TTML1], §D.1.39에서 정의된 #frameRate feature를 support하면 #frameRate feature를 support한다.

E.1.113 #frameRateMultiplier

TTML content processor는 [TTML1], §D.1.40에서 정의된 #frameRateMultiplier feature를 support하면 #frameRateMultiplier feature를 support한다.

E.1.114 #gain

TTML transformation processortta:gain attribute를 recognize하고 transform할 수 있으면 #gain feature를 support한다.

TTML presentation processortta:gain attribute에 대한 presentation semantic support를 implement하면 #gain feature를 support한다.

E.1.115 #image

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #image feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #image feature를 support한다.

E.1.116 #image-png

TTML transformation processor[PNG]에서 정의한 content type image/pngimage resources를 recognize하고 transform할 수 있으면 #image-png feature를 support한다.

TTML presentation processor[PNG]에서 정의한 content type image/pngimage resources에 대한 presentation semantic support를 implement하면 #image-png feature를 support한다.

E.1.117 #initial

TTML transformation processor10 Styling에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #initial feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #initial feature를 support한다.

E.1.118 #ipd

TTML transformation processortts:ipd attribute를 recognize하고 transform할 수 있으면 #ipd feature를 support한다.

TTML presentation processortts:ipd attribute에 대한 presentation semantic support를 implement하면 #ipd feature를 support한다.

E.1.119 #layout

TTML content processor는 [TTML1], §D.1.41에서 정의된 #layout feature를 support하면 #layout feature를 support한다.

E.1.120 #length

TTML content processor는 [TTML1], §D.1.42에서 정의된 #length feature를 support하면 #length feature를 support한다.

E.1.121 #length-cell

TTML content processor는 [TTML1], §D.1.43에서 정의된 #length-cell feature를 support하면 #length-cell feature를 support한다.

E.1.122 #length-em

TTML content processor는 [TTML1], §D.1.44에서 정의된 #length-em feature를 support하면 #length-em feature를 support한다.

E.1.123 #length-integer

TTML content processor는 [TTML1], §D.1.45에서 정의된 #length-integer feature를 support하면 #length-integer feature를 support한다.

E.1.124 #length-negative

TTML content processor는 [TTML1], §D.1.46에서 정의된 #length-negative feature를 support하면 #length-negative feature를 support한다.

E.1.125 #length-percentage

TTML content processor는 [TTML1], §D.1.47에서 정의된 #length-percentage feature를 support하면 #length-percentage feature를 support한다.

E.1.126 #length-pixel

TTML content processor는 [TTML1], §D.1.48에서 정의된 #length-pixel feature를 support하면 #length-pixel feature를 support한다.

E.1.127 #length-positive

TTML content processor는 [TTML1], §D.1.49에서 정의된 #length-positive feature를 support하면 #length-positive feature를 support한다.

E.1.128 #length-real

TTML content processor는 [TTML1], §D.1.50에서 정의된 #length-real feature를 support하면 #length-real feature를 support한다.

E.1.129 #length-root-container-relative

TTML transformation processor<length> style value expression의 root container relative values를 recognize하고 transform할 수 있으면 #length-root-container-relative feature를 support한다.

TTML presentation processor<length> style value expression의 root container relative values에 대한 presentation semantic support를 implement하면 #length-root-container-relative feature를 support한다.

E.1.130 #length-version-2

TTML processor는 다음 features를 support하는 경우 #length-version-2 feature를 support한다:

#length-version-2 feature는 #length feature의 syntactic 및 semantic extension이다.

content profile이 #length-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #length 또는 #length-root-container-relative.

E.1.131 #letterSpacing

TTML transformation processortts:letterSpacing attribute를 recognize하고 transform할 수 있으면 #letterSpacing feature를 support한다.

TTML presentation processortts:letterSpacing attribute에 대한 presentation semantic support를 implement하면 #letterSpacing feature를 support한다.

E.1.132 #lineBreak-uax14

TTML content processor는 [TTML1], §D.1.51에서 정의된 #lineBreak-uax14 feature를 support하면 #lineBreak-uax14 feature를 support한다.

E.1.133 #lineHeight

TTML content processor는 [TTML1], §D.1.52에서 정의된 #lineHeight feature를 support하면 #lineHeight feature를 support한다.

E.1.134 #lineShear

TTML transformation processortts:lineShear attribute를 recognize하고 transform할 수 있으면 #lineShear feature를 support한다.

TTML presentation processortts:lineShear attribute에 대한 presentation semantic support를 implement하면 #lineShear feature를 support한다.

E.1.135 #luminanceGain

TTML transformation processortts:luminanceGain attribute를 recognize하고 transform할 수 있으면 #luminanceGain feature를 support한다.

TTML presentation processortts:luminanceGain에 대한 presentation semantic support를 implement하면 #luminanceGain feature를 support한다.

E.1.136 #markerMode

TTML content processor는 [TTML1], §D.1.53에서 정의된 #markerMode feature를 support하면 #markerMode feature를 support한다.

참고:

#markerMode feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #markerMode feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #markerMode-continuous 또는 #markerMode-discontinuous.

E.1.137 #markerMode-continuous

TTML content processor는 [TTML1], §D.1.54에서 정의된 #markerMode-continuous feature를 support하면 #markerMode-continuous feature를 support한다.

E.1.138 #markerMode-discontinuous

TTML content processor는 [TTML1], §D.1.55에서 정의된 #markerMode-discontinuous feature를 support하면 #markerMode-discontinuous feature를 support한다.

E.1.139 #metadata

TTML content processor는 [TTML1], §D.1.56에서 정의된 #metadata feature를 support하면 #metadata feature를 support한다.

E.1.140 #metadata-item

TTML transformation processor14 Metadata에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #metadata-item feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #metadata-item feature를 support한다.

참고:

이 specification은 metadata information의 presentation에 대한 standardized form을 정의하지 않는다. metadata information의 presentation 또는 이를 present할 ability는 implementation dependent한 것으로 간주된다.

E.1.141 #metadata-version-2

TTML processor는 다음 features를 support하는 경우 #metadata-version-2 feature를 support한다:

#metadata-version-2 feature는 #metadata feature의 syntactic 및 semantic extension이다.

content profile이 #metadata-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #metadata 또는 #metadata-item.

E.1.142 #nested-div

TTML content processor는 [TTML1], §D.1.57에서 정의된 #nested-div feature를 support하면 #nested-div feature를 support한다.

E.1.143 #nested-span

TTML content processor는 [TTML1], §D.1.58에서 정의된 #nested-span feature를 support하면 #nested-span feature를 support한다.

E.1.144 #opacity

TTML content processor는 [TTML1], §D.1.59에서 정의된 #opacity feature를 support하면 #opacity feature를 support한다.

참고:

#opacity feature에 대한 support는 #opacity-region feature에 대한 support와 functionally equivalent하다.

content profile이 #opacity feature의 사용을 require하거나 permit하지만 #opacity-region feature의 사용을 prohibit하는 것은 error이다.

E.1.145 #opacity-block

TTML transformation processor는 presentation processing 동안 block area를 generate할 content element에 적용될 때 tts:opacity attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #opacity-block feature를 support한다.

TTML presentation processor는 (1) block area를 generate하는 content element에 적용될 때 tts:opacity attribute에 대한 presentation semantic support를 implement하고, (2) opacity의 적어도 eight (8) values를 distinguish하는 output display signal을 display하거나 generate할 수 있으면 #opacity-block feature를 support한다.

E.1.146 #opacity-inline

TTML transformation processor는 presentation processing 동안 inline area를 generate할 content element에 적용될 때 tts:opacity attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #opacity-inline feature를 support한다.

TTML presentation processor는 (1) inline area를 generate하는 content element에 적용될 때 tts:opacity attribute에 대한 presentation semantic support를 implement하고, (2) opacity의 적어도 eight (8) values를 distinguish하는 output display signal을 display하거나 generate할 수 있으면 #opacity-inline feature를 support한다.

E.1.147 #opacity-region

TTML transformation processorregion element에 적용될 때 tts:opacity attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #opacity-region feature를 support한다.

TTML presentation processor는 (1) region element에 적용될 때 tts:opacity attribute에 대한 presentation semantic support를 implement하고, (2) opacity의 적어도 eight (8) values를 distinguish하는 output display signal을 display하거나 generate할 수 있으면 #opacity-region feature를 support한다.

참고:

#opacity-region feature에 대한 support는 #opacity feature에 대한 support와 functionally equivalent하다.

content profile이 #opacity-region feature의 사용을 require하거나 permit하지만 #opacity feature의 사용을 prohibit하는 것은 error이다.

E.1.148 #opacity-version-2

TTML processor는 다음 features를 support하는 경우 #opacity-version-2 feature를 support한다:

#opacity-version-2 feature는 #opacity feature의 syntactic 및 semantic extension이다.

content profile이 #opacity-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #opacity, #opacity-block, #opacity-inline, 또는 #opacity-region.

E.1.149 #origin

TTML content processor는 [TTML1], §D.1.60에서 정의된 #origin feature를 support하면 #origin feature를 support한다.

참고:

#origin feature에 대한 support는 #region-implied-animation feature에 대한 support를 imply하지 않는다.

E.1.150 #overflow

TTML content processor는 [TTML1], §D.1.61에서 정의된 #overflow feature를 support하면 #overflow feature를 support한다.

참고:

#overflow feature에 대한 support는 (1) #overflow-visible feature와 (2) tts:overflow attribute의 hidden value에 대한 support와 functionally equivalent하다.

content profile이 #overflow feature의 사용을 require하거나 permit하지만 #overflow-visible feature의 사용을 prohibit하는 것은 error이다.

E.1.151 #overflow-visible

TTML content processor는 [TTML1], §D.1.62에서 정의된 #overflow-visible feature를 support하면 #overflow-visible feature를 support한다.

E.1.152 #padding

TTML content processor는 [TTML1], §D.1.63에서 정의된 #padding feature를 support하면 #padding feature를 support한다.

참고:

#padding feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #padding feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #padding-1, #padding-2, #padding-3, #padding-4, #padding-region.

E.1.153 #padding-1

TTML content processor는 [TTML1], §D.1.64에서 정의된 #padding-1 feature를 support하면 #padding-1 feature를 support한다.

E.1.154 #padding-2

TTML content processor는 [TTML1], §D.1.65에서 정의된 #padding-2 feature를 support하면 #padding-2 feature를 support한다.

E.1.155 #padding-3

TTML content processor는 [TTML1], §D.1.66에서 정의된 #padding-3 feature를 support하면 #padding-3 feature를 support한다.

E.1.156 #padding-4

TTML content processor는 [TTML1], §D.1.67에서 정의된 #padding-4 feature를 support하면 #padding-4 feature를 support한다.

E.1.157 #padding-block

TTML transformation processor는 presentation processing 동안 block area를 generate할 content element에 적용될 때 tts:padding attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #padding-block feature를 support한다.

TTML presentation processor는 block area를 generate하는 content element에 적용될 때 tts:padding attribute에 대한 presentation semantic support를 implement하면 #padding-block feature를 support한다.

E.1.158 #padding-inline

TTML transformation processor는 presentation processing 동안 inline area를 generate할 content element에 적용될 때 tts:padding attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #padding-inline feature를 support한다.

TTML presentation processor는 inline area를 generate하는 content element에 적용될 때 tts:padding attribute에 대한 presentation semantic support를 implement하면 #padding-inline feature를 support한다.

E.1.159 #padding-region

TTML content processor는 #padding feature를 support하면 #padding-region feature를 support한다.

#padding-region feature는 null extension of the #padding feature이며, null extension이란 어떤 feature가 다른 feature의 extension으로 formally marked되지만, extension semantics가 null set인 것, 즉 두 features가 functionally equivalent하다는 것과 같음을 의미한다.

content profile이 #padding-region feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #padding, #padding-1, #padding-2, #padding-3, 또는 #padding-4.

E.1.160 #padding-version-2

TTML processor는 다음 features를 support하는 경우 #padding-version-2 feature를 support한다:

#padding-version-2 feature는 #padding feature의 syntactic 및 semantic extension이다.

참고:

#padding-region feature가 null extension of the #padding feature이므로, #padding-version-2 feature도 #padding-region feature의 syntactic 및 semantic extension이다.

content profile이 #padding-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #padding, #padding-1, #padding-2, #padding-3, #padding-4. #padding-block, #padding-inline, 또는 #padding-region.

E.1.161 #pan

TTML transformation processortta:pan attribute를 recognize하고 transform할 수 있으면 #pan feature를 support한다.

TTML presentation processortta:pan attribute에 대한 presentation semantic support를 implement하면 #pan feature를 support한다.

E.1.162 #permitFeatureNarrowing

TTML transformation processor는 (1) ttp:permitFeatureNarrowing attribute와 (2) ttp:featurettp:extension elements의 extends attribute를 recognize하고 transform할 수 있으면 #permitFeatureNarrowing feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #permitFeatureNarrowing feature를 support한다.

참고:

TTML processor가 #permitFeatureNarrowing feature가 optional로 designated되었을 때 이를 support하지 않으면, extends attribute의 semantics는 ignored된다. 즉 extended되는 feature에 대한 support만으로는 extension feature가 supported되는 것으로 간주하기에 충분하지 않다.

E.1.163 #permitFeatureWidening

TTML transformation processor는 (1) ttp:permitFeatureWidening attribute와 (2) ttp:featurettp:extension elements의 restricts attribute를 recognize하고 transform할 수 있으면 #permitFeatureWidening feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #permitFeatureWidening feature를 support한다.

참고:

TTML processor가 #permitFeatureWidening feature가 optional로 designated되었을 때 이를 support하지 않으면, restricts attribute의 semantics는 ignored된다. 즉 restricted되는 feature에 대한 support만으로는 restricted feature가 supported되는 것으로 간주하기에 충분하지 않다.

E.1.164 #pitch

TTML transformation processortta:pitch attribute를 recognize하고 transform할 수 있으면 #pitch feature를 support한다.

TTML presentation processortta:pitch attribute에 대한 presentation semantic support를 implement하면 #pitch feature를 support한다.

E.1.165 #pixelAspectRatio

TTML content processor는 [TTML1], §D.1.68에서 정의된 #pixelAspectRatio feature를 support하면 #pixelAspectRatio feature를 support한다.

E.1.166 #position

TTML transformation processortts:position attribute를 recognize하고 transform할 수 있으면 #position feature를 support한다.

TTML presentation processortts:position attribute에 대한 presentation semantic support를 implement하면 #position feature를 support한다.

참고:

#position feature에 대한 support는 #region-implied-animation feature에 대한 support를 imply하지 않는다.

E.1.167 #presentation

TTML content processor는 [TTML1], §D.1.69에서 정의된 #presentation feature를 support하면 #presentation feature를 support한다.

E.1.168 #presentation-version-2

TTML processor는 (1) 3.2.1 Generic Processor Conformance에서 정의한 generic processor criteria를 satisfy하고 (2) 다음 features를 support하는 경우 #presentation-version-2 feature를 support한다:

#presentation-version-2 feature는 #presentation feature의 syntactic 및 semantic extension이다.

content profile이 #presentation-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #presentation 또는 #profile-version-2.

E.1.169 #processorProfiles

TTML transformation processor는 (1) non-combined profiles를 support하고 (2) 다음을 recognize하고 transform할 수 있으면 #processorProfiles feature를 support한다:

  1. 6.2 Profile Attribute Vocabulary에서 정의한 다음 profile attributes vocabulary:

  2. ttp:profile element의 designator attribute, 그리고

  3. ttp:profile element의 type attribute의 processor value.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #processorProfiles feature를 support한다.

참고:

#processorProfiles feature에 대한 support는 combined profiles 또는 nesting profiles에 대한 support를 imply하지 않는다.

E.1.170 #processorProfiles-combined

TTML transformation processor는 (1) #processorProfiles feature를 support하고, (2) combined profiles를 support하며 (3) 다음을 recognize하고 transform할 수 있으면 #processorProfiles-combined feature를 support한다:

  1. 6.2 Profile Attribute Vocabulary에서 정의한 다음 profile attributes vocabulary:

  2. ttp:profile element의 combine attribute.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #processorProfiles-combined feature를 support한다.

#processorProfiles-combine feature는 #processorProfiles feature의 syntactic 및 semantic extension이다.

processor profile이 #processorProfiles-combine feature의 사용을 require하거나 permit하지만 #processorProfiles feature의 사용을 prohibit하는 것은 error이다.

참고:

#processorProfiles-combined feature에 대한 support는 nesting profiles에 대한 support를 imply하지 않는다.

E.1.171 #profile

TTML content processor는 [TTML1], §D.1.70에서 정의된 #profile feature를 support하면 #profile feature를 support한다.

참고:

#profile feature에 대한 support는 다음 features에 대한 support를 imply하지 않는다:

E.1.172 #profile-full-version-2

TTML content processor는 다음 features를 support하는 경우 #profile-full-version-2 feature를 support한다:

#profile-full-version-2 feature는 #profile-version-2 feature의 syntactic 및 semantic extension이다.

content profile이 #profile-full-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #contentProfiles, #contentProfiles-combined, #permitFeatureNarrowing, #permitFeatureWidening, #processorProfiles, #processorProfiles-combined, #profile, #profile-nesting, 또는 #profile-version-2.

E.1.173 #profile-nesting

TTML content processor는 nesting profiles를 support하면 #profile-nesting feature를 support한다.

E.1.174 #profile-version-2

TTML content processor는 다음 features를 support하는 경우 #profile-version-2 feature를 support한다:

#profile-version-2 feature는 #profile feature의 syntactic 및 semantic extension이다.

content profile이 #profile-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #contentProfiles, #processorProfiles, 또는 #profile.

참고:

#profile-version-2 feature에 대한 support는 다음 features에 대한 support를 imply하지 않는다:

E.1.175 #region-implied-animation

TTML transformation processor11.1.2.1 Special Semantics of Inline Animation에 따라 implied region에 적용되는 div 또는 p element의 style attributes를 recognize하고 transform할 수 있으면 #region-implied-animation feature를 support한다.

TTML presentation processor11.1.2.1 Special Semantics of Inline Animation에 따라 implied region에 적용되는 div 또는 p element의 style attributes에 대한 presentation semantic support를 implement하면 #region-implied-animation feature를 support한다.

참고:

#region-implied-animation feature에 대한 support는 다음 features에 대한 support를 imply하지 않는다:

그러나 이러한 features 중 하나라도 supported되면, #region-implied-animation feature에 대한 support는 그 feature와 관련하여 11.1.2.1 Special Semantics of Inline Animation이 supported됨을 imply한다.

E.1.176 #region-inline

TTML transformation processorregion에서 further defined된 대로 content element의 inline region element children을 recognize하고 transform할 수 있으면 #region-inline feature를 support한다.

TTML presentation processorregion에서 further defined된 대로 content element의 inline region element children에 대한 presentation semantic support를 implement하면 #region-inline feature를 support한다.

E.1.177 #region-timing

TTML transformation processorregion element에 적용될 때 다음 vocabulary를 recognize하고 transform할 수 있으면 #region-timing feature를 support한다:

TTML presentation processorregion element에 적용될 때 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #region-timing feature를 support한다.

#region-timing feature는 #timing feature의 semantic restriction이다.

참고:

이 feature는 #timing feature의 semantic subset을 represent하고, latter는 모든 transformation 및 presentation processors의 mandatory feature이므로, 이 feature designation의 utility는 document instance에 의해 이 feature의 사용을 prohibit하도록 선택할 수 있는 content profile definition에서의 사용으로 effectively limited된다.

E.1.178 #resources

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #resources feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #resources feature를 support한다.

E.1.179 #ruby

TTML transformation processortts:ruby attribute의 모든 defined values를 recognize하고 transform할 수 있으면 #ruby feature를 support한다.

TTML presentation processortts:ruby attribute의 모든 defined values에 대한 presentation semantic support를 implement하면 #ruby feature를 support한다.

E.1.180 #ruby-full

TTML processor는 다음 features를 support하는 경우 #ruby-full feature를 support한다:

content profile이 #ruby-full feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #ruby, #rubyAlign, #rubyAlign-withBase, #rubyPosition, 또는 #rubyReserve.

E.1.181 #rubyAlign

TTML processor는 다음 features를 support하는 경우 #rubyAlign feature를 support한다:

content profile이 #rubyAlign feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #rubyAlign-minimal 또는 #rubyAlign-withBase.

E.1.182 #rubyAlign-minimal

TTML transformation processortts:rubyAlign attribute의 다음 values를 recognize하고 transform할 수 있으면 #rubyAlign-minimal feature를 support한다.

  • start

  • center

  • end

  • spaceAround

  • spaceBetween

TTML presentation processor는 위에 enumerated된 same values vocabulary에 대한 presentation semantic support를 implement하면 #rubyAlign-minimal feature를 support한다.

E.1.183 #rubyAlign-withBase

TTML transformation processortts:rubyAlign attribute의 withBase value를 recognize하고 transform할 수 있으면 #rubyAlign-withBase feature를 support한다.

TTML presentation processor는 위에 enumerated된 same value에 대한 presentation semantic support를 implement하면 #rubyAlign-withBase feature를 support한다.

E.1.184 #rubyPosition

TTML transformation processortts:rubyPosition attribute를 recognize하고 transform할 수 있으면 #rubyPosition feature를 support한다.

TTML presentation processortts:rubyPosition attribute에 대한 presentation semantic support를 implement하면 #rubyPosition feature를 support한다.

E.1.185 #rubyReserve

TTML transformation processortts:rubyReserve attribute를 recognize하고 transform할 수 있으면 #rubyReserve feature를 support한다.

TTML presentation processortts:rubyReserve attribute에 대한 presentation semantic support를 implement하면 #rubyReserve feature를 support한다.

E.1.186 #set

TTML content processor는 #animation feature를 support하면 #set feature를 support하며, 따라서 #set feature는 null extension of #animation feature이다.

content profile이 #set feature의 사용을 require하거나 permit하지만 #animation feature의 사용을 prohibit하는 것은 error이다.

E.1.187 #set-fill

TTML transformation processorset element의 fill attribute를 recognize하고 transform할 수 있으면 #set-fill feature를 support한다.

TTML presentation processorset element의 fill attribute에 대한 presentation semantic support를 implement하면 #set-fill feature를 support한다.

E.1.188 #set-multiple-styles

TTML transformation processorset element에 지정될 때 TT Style Namespaces의 multiple attributes를 recognize하고 transform할 수 있으면 #set-multiple-styles feature를 support한다.

TTML presentation processorset element에 지정될 때 TT Style Namespaces의 multiple attributes에 대한 presentation semantic support를 implement하면 #set-multiple-styles feature를 support한다.

E.1.189 #set-repeat

TTML transformation processorset element의 repeatCount attribute를 recognize하고 transform할 수 있으면 #set-repeat feature를 support한다.

TTML presentation processorset element의 repeatCount attribute에 대한 presentation semantic support를 implement하면 #set-repeat feature를 support한다.

E.1.190 #shear

TTML transformation processortts:shear attribute를 recognize하고 transform할 수 있으면 #shear feature를 support한다.

TTML presentation processortts:shear attribute에 대한 presentation semantic support를 implement하면 #shear feature를 support한다.

E.1.191 #showBackground

TTML content processor는 [TTML1], §D.1.71에서 정의된 #showBackground feature를 support하면 #showBackground feature를 support한다.

E.1.192 #source

TTML transformation processor9 Embedded Content에서 정의한 다음 vocabulary를 recognize하고 transform할 수 있으면 #source feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #source feature를 support한다.

E.1.193 #speak

TTML transformation processortta:speak attribute를 recognize하고 transform할 수 있으면 #speak feature를 support한다.

TTML presentation processortta:speak attribute에 대한 presentation semantic support를 implement하면 #speak feature를 support한다.

E.1.194 #speech

TTML processor는 speech synthesis processor를 support하면 #speech feature를 support한다.

E.1.195 #structure

TTML content processor는 [TTML1], §D.1.72에서 정의된 #structure feature를 support하면 #structure feature를 support한다.

E.1.196 #styling

TTML content processor는 [TTML1], §D.1.73에서 정의된 #styling feature를 support하면 #styling feature를 support한다.

E.1.197 #styling-chained

TTML content processor는 [TTML1], §D.1.74에서 정의된 #styling-chained feature를 support하면 #styling-chained feature를 support한다.

E.1.198 #styling-inheritance-content

TTML content processor는 [TTML1], §D.1.75에서 정의된 #inheritance-content feature를 support하면 #styling-inheritance-content feature를 support한다.

E.1.199 #styling-inheritance-region

TTML content processor는 [TTML1], §D.1.76에서 정의된 #styling-inheritance-region feature를 support하면 #styling-inheritance-region feature를 support한다.

E.1.200 #styling-inline

TTML content processor는 [TTML1], §D.1.77에서 정의된 #styling-inline feature를 support하면 #styling-inline feature를 support한다.

E.1.201 #styling-nested

TTML content processor는 [TTML1], §D.1.78에서 정의된 #styling-nested feature를 support하면 #styling-nested feature를 support한다.

E.1.202 #styling-referential

TTML content processor는 [TTML1], §D.1.79에서 정의된 #styling-referential feature를 support하면 #styling-referential feature를 support한다.

E.1.203 #subFrameRate

TTML content processor는 [TTML1], §D.1.80에서 정의된 #subFrameRate feature를 support하면 #subFrameRate feature를 support한다.

E.1.204 #textAlign

TTML content processor는 [TTML1], §D.1.81에서 정의된 #textAlign feature를 support하면 #textAlign feature를 support한다.

참고:

#textAlign feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #textAlign feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #textAlign-absolute 또는 #textAlign-relative.

E.1.205 #textAlign-absolute

TTML content processor는 [TTML1], §D.1.82에서 정의된 #textAlign-absolute feature를 support하면 #textAlign-absolute feature를 support한다.

E.1.206 #textAlign-justify

TTML transformation processortts:textAlign attribute의 justify value를 recognize하고 transform할 수 있으면 #textAlign-justify feature를 support한다.

TTML presentation processortts:textAlign attribute의 justify value에 대한 presentation semantic support를 implement하면 #textAlign-justify feature를 support한다.

E.1.207 #textAlign-relative

TTML content processor는 [TTML1], §D.1.83에서 정의된 #textAlign-relative feature를 support하면 #textAlign-relative feature를 support한다.

E.1.208 #textAlign-version-2

TTML processor는 다음 features를 support하는 경우 #textAlign-version-2 feature를 support한다:

#textAlign-version-2 feature는 #textAlign feature의 syntactic 및 semantic extension이다.

content profile이 #textAlign-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #textAlign, #textAlign-absolute, #textAlign-justify, 또는 #textAlign-relative.

E.1.209 #textCombine

TTML transformation processortts:textCombine attribute를 recognize하고 transform할 수 있으면 #textCombine feature를 support한다.

TTML presentation processortts:textCombine attribute에 대한 presentation semantic support를 implement하면 #textCombine feature를 support한다.

E.1.210 #textDecoration

TTML content processor는 [TTML1], §D.1.84에서 정의된 #textDecoration feature를 support하면 #textDecoration feature를 support한다.

참고:

#textDecoration feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #textDecoration feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #textDecoration-over, #textDecoration-through, 또는 #textDecoration-under.

E.1.211 #textDecoration-over

TTML content processor는 [TTML1], §D.1.85에서 정의된 #textDecoration-over feature를 support하면 #textDecoration-over feature를 support한다.

E.1.212 #textDecoration-through

TTML content processor는 [TTML1], §D.1.86에서 정의된 #textDecoration-through feature를 support하면 #textDecoration-through feature를 support한다.

E.1.213 #textDecoration-under

TTML content processor는 [TTML1], §D.1.87에서 정의된 #textDecoration-under feature를 support하면 #textDecoration-under feature를 support한다.

E.1.214 #textEmphasis

TTML processor는 다음 features를 support하는 경우 #textEmphasis feature를 support한다:

#textEmphasis feature는 #textEmphasis-minimal feature의 syntactic 및 semantic extension이다.

content profile이 #textEmphasis feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #textEmphasis-color, #textEmphasis-minimal, 또는 #textEmphasis-quoted-string.

E.1.215 #textEmphasis-color

TTML transformation processor<emphasis-color> component를 포함하는 tts:textEmphasis attribute의 values를 recognize하고 transform할 수 있으면 #textEmphasis-color feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #textEmphasis-color feature를 support한다.

E.1.216 #textEmphasis-minimal

TTML transformation processor는 (1) <emphasis-color> component를 포함하지 않고 (2) <quoted-string> value의 form을 취하는 <emphasis-style> component를 포함하지 않는 tts:textEmphasis attribute의 values를 recognize하고 transform할 수 있으면 #textEmphasis-minimal feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #textEmphasis-minimal feature를 support한다.

E.1.217 #textEmphasis-quoted-string

TTML transformation processor<quoted-string> value의 form을 취하는 <emphasis-style> component를 포함하는 tts:textEmphasis attribute의 values를 recognize하고 transform할 수 있으면 #textEmphasis-quoted-string feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #textEmphasis-quoted-string feature를 support한다.

E.1.218 #textOrientation

TTML transformation processortts:textOrientation attribute를 recognize하고 transform할 수 있으면 #textOrientation feature를 support한다.

TTML presentation processortts:textOrientation attribute에 대한 presentation semantic support를 implement하면 #textOrientation feature를 support한다.

E.1.219 #textOutline

TTML content processor는 [TTML1], §D.1.88에서 정의된 #textOutline feature를 support하면 #textOutline feature를 support한다.

참고:

#textOutline feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #textOutline feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #textOutline-blurred 또는 #textOutline-unblurred.

E.1.220 #textOutline-blurred

TTML content processor는 [TTML1], §D.1.89에서 정의된 #textOutline-blurred feature를 support하면 #textOutline-blurred feature를 support한다.

E.1.221 #textOutline-unblurred

TTML content processor는 [TTML1], §D.1.90에서 정의된 #textOutline-unblurred feature를 support하면 #textOutline-unblurred feature를 support한다.

E.1.222 #textShadow

TTML transformation processortts:textShadow attribute를 recognize하고 transform할 수 있으면 #textShadow feature를 support한다.

TTML presentation processortts:textShadow attribute에 대한 presentation semantic support를 implement하면 #textShadow feature를 support한다.

E.1.223 #tickRate

TTML content processor는 [TTML1], §D.1.91에서 정의된 #tickRate feature를 support하면 #tickRate feature를 support한다.

E.1.224 #timeBase-clock

TTML content processor는 [TTML1], §D.1.92에서 정의된 #timeBase-clock feature를 support하면 #timeBase-clock feature를 support한다.

E.1.225 #timeBase-media

TTML content processor는 [TTML1], §D.1.93에서 정의된 #timeBase-media feature를 support하면 #timeBase-media feature를 support한다.

E.1.226 #timeBase-smpte

TTML content processor는 [TTML1], §D.1.94에서 정의된 #timeBase-smpte feature를 support하면 #timeBase-smpte feature를 support한다.

E.1.227 #timeContainer

TTML content processor는 [TTML1], §D.1.95에서 정의된 #timeContainer feature를 support하면 #timeContainer feature를 support한다.

E.1.228 #time-clock

TTML content processor는 [TTML1], §D.1.96에서 정의된 #time-clock feature를 support하면 #time-clock feature를 support한다.

E.1.229 #time-clock-with-frames

TTML content processor는 [TTML1], §D.1.97에서 정의된 #time-clock-with-frames feature를 support하면 #time-clock-with-frames feature를 support한다.

E.1.230 #time-offset

TTML content processor는 [TTML1], §D.1.98에서 정의된 #time-offset feature를 support하면 #time-offset feature를 support한다.

E.1.231 #time-offset-with-frames

TTML content processor는 [TTML1], §D.1.99에서 정의된 #time-offset-with-frames feature를 support하면 #time-offset-with-frames feature를 support한다.

E.1.232 #time-offset-with-ticks

TTML content processor는 [TTML1], §D.1.100에서 정의된 #time-offset-with-ticks feature를 support하면 #time-offset-with-ticks feature를 support한다.

E.1.233 #time-wall-clock

TTML transformation processor는 다음 time expression syntax의 subset을 satisfy하는 <time-expression>의 모든 values를 recognize하고 transform할 수 있으면 #time-wall-clock feature를 support한다:

<time-expression>
  : wallclock-time

TTML presentation processor는 위에 지정된 same syntax에 대한 presentation semantic support를 implement하면 #time-wall-clock feature를 support한다.

E.1.234 #timing

TTML content processor는 [TTML1], §D.1.101에서 정의된 #timing feature를 support하면 #timing feature를 support한다.

E.1.235 #transformation

TTML content processor는 [TTML1], §D.1.102에서 정의된 #transformation feature를 support하면 #transformation feature를 support한다.

E.1.236 #transformation-version-2

TTML processor는 (1) 3.2.1 Generic Processor Conformance에서 정의한 generic processor criteria를 satisfy하고 (2) 다음 features를 support하는 경우 #transformation-version-2 feature를 support한다:

#transformation-version-2 feature는 #transformation feature의 syntactic 및 semantic extension이다.

content profile이 #transformation-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #transformation 또는 #profile-version-2.

E.1.237 #unicodeBidi

TTML content processor는 [TTML1], §D.1.103에서 정의된 #unicodeBidi feature를 support하면 #unicodeBidi feature를 support한다.

참고:

#unicodeBidi feature에 대한 support는 #unicodeBidi-isolate feature에 대한 support를 imply하지 않는다.

E.1.238 #unicodeBidi-isolate

TTML transformation processortts:unicodeBidi attribute의 isolate value를 recognize하고 transform할 수 있으면 #unicodeBidi-isolate feature를 support한다.

TTML presentation processortts:unicodeBidi attribute의 isolate value에 대한 presentation semantic support를 implement하면 #unicodeBidi-isolate feature를 support한다.

E.1.239 #unicodeBidi-version-2

TTML content processor는 다음 features를 support하는 경우 #unicodeBidi-version-2 feature를 support한다:

#unicodeBidi-version-2 feature는 #unicodeBidi feature의 syntactic 및 semantic extension이다.

E.1.240 #validation

TTML transformation processor는 다음을 만족하면 #validation feature를 support한다:

  1. validating content processor이다;

  2. 6.2 Profile Attribute Vocabulary에서 정의한 다음 attribute vocabulary를 recognize하고 transform할 수 있다:

TTML presentation processorvalidating content processor이고 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #validation feature를 support한다.

E.1.241 #visibility

TTML content processor는 [TTML1], §D.1.104에서 정의된 #visibility feature를 support하면 #visibility feature를 support한다.

참고:

#visibility feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #visibility feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #visibility-block, #visibility-inline, 또는 #visibility-region.

E.1.242 #visibility-block

TTML content processor는 [TTML1], §D.1.105에서 정의된 #visibility-block feature를 support하면 #visibility-block feature를 support한다.

E.1.243 #visibility-image

TTML transformation processorimage element에 적용될 때 tts:visibility attribute의 모든 defined values를 support하면 #visibility-image feature를 support한다.

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #visibility-image feature를 support한다.

참고:

#visibility-image feature에 대한 support는 #image feature에 대한 support를 imply하지 않는다. 그러나 latter에 대한 support가 없다면 former에 대한 support는 목적을 가지지 않는다.

E.1.244 #visibility-inline

TTML content processor는 [TTML1], §D.1.106에서 정의된 #visibility-inline feature를 support하면 #visibility-inline feature를 support한다.

E.1.245 #visibility-region

TTML content processor는 [TTML1], §D.1.107에서 정의된 #visibility-region feature를 support하면 #visibility-region feature를 support한다.

E.1.246 #visibility-version-2

TTML content processor는 다음 features를 support하는 경우 #visibility-version-2 feature를 support한다:

#visibility-version-2 feature는 #visibility feature의 syntactic 및 semantic extension이다.

content profile이 #visibility-version-2 feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #visibility 또는 #visibility-image.

E.1.247 #wrapOption

TTML content processor는 [TTML1], §D.1.108에서 정의된 #wrapOption feature를 support하면 #wrapOption feature를 support한다.

E.1.248 #writingMode

TTML content processor는 [TTML1], §D.1.109에서 정의된 #writingMode feature를 support하면 #writingMode feature를 support한다.

참고:

#writingMode feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #writingMode feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #writingMode-horizontal 또는 #writingMode-vertical.

E.1.249 #writingMode-horizontal

TTML content processor는 [TTML1], §D.1.111에서 정의된 #writingMode-horizontal feature를 support하면 #writingMode-horizontal feature를 support한다.

참고:

#writingMode-horizontal feature에 대한 support는 다음 features에 대한 support와 functionally equivalent하다:

content profile이 #writingMode-horizontal feature의 사용을 require하거나 permit하지만 다음 features 중 하나의 사용을 prohibit하는 것은 error이다: #writingMode-horizontal-lr 또는 #writingMode-horizontal-rl.

E.1.250 #writingMode-horizontal-lr

TTML content processor는 [TTML1], §D.1.112에서 정의된 #writingMode-horizontal-lr feature를 support하면 #writingMode-horizontal-lr feature를 support한다.

E.1.251 #writingMode-horizontal-rl

TTML content processor는 [TTML1], §D.1.113에서 정의된 #writingMode-horizontal-rl feature를 support하면 #writingMode-horizontal-rl feature를 support한다.

E.1.252 #writingMode-vertical

TTML content processor는 [TTML1], §D.1.110에서 정의된 #writingMode-vertical feature를 support하면 #writingMode-vertical feature를 support한다.

E.1.253 #xlink

TTML transformation processor는 이 vocabulary를 admit하는 supported element types에서 사용하기 위해 8.2 Content Attribute Vocabulary가 정의한 다음 attribute vocabulary를 recognize하고 transform할 수 있으면 #xlink feature를 support한다:

TTML presentation processor는 위에 enumerated된 same vocabulary에 대한 presentation semantic support를 implement하면 #xlink feature를 support한다.

E.1.254 #zIndex

TTML content processor는 [TTML1], §D.1.114에서 정의된 #zIndex feature를 support하면 #zIndex feature를 support한다.

E.2 Feature Support

다음 table, Table E-1 – Feature Support는 정의된 모든 feature designation(TT Feature Namespace 없이 expressed됨)을 enumerate하고, 각 designated feature에 대해 (1) 해당 feature designation이 처음 정의된 TTML version, 그리고 (2) 3.2.2 Transformation Processor Conformance 또는 3.2.3 Presentation Processor Conformance의 requirements를 준수하는 TTML content processor에 대해 designated feature가 implemented되어야 하는지, 즉 mandatory(M)인지, 또는 implemented될 수 있는지, 즉 optional(O)인지 지정한다.

참고:

어떤 경우에는 이 specification의 이 version(또는 이후 version)에서 previously defined되지 않았던 new feature designation이 정의되지만, 그렇게 designated된 underlying functional feature는 earlier version에 의해 previously defined되었을 수 있다. 예를 들어 #padding-region designation은 여기서 introduced된다. 그러나 그것이 reference하는 functionality는 이전에 #padding designation 아래에 included되었으며, 이는 이제 #padding-region의 terms로 정의된다. 여기서 TTML1에서 introduced된 #padding의 underlying meaning과 TTML2에서 introduced된 #padding-region은 identical하게 유지된다.

Table E-1 – Feature Support
Feature Designation Version Transformation Presentation
#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-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-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-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

편의를 위해 다음 table, Table E-2 – Mandatory Features - Transformation3.2.2 Transformation Processor Conformance의 requirements를 준수하는 TTML content processor에 대한 모든 mandatory features를 enumerate하고, usage context 또는 feature의 nature를 summarize하기 위한 additional comments를 제공한다. corresponding TTML Transformation Profile을 정의하는 profile definition documentG.3 TTML2 Transformation Profile에 지정되어 있다.

Table E-2 – Mandatory Features - Transformation
Feature Designations Comments
#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

편의를 위해 다음 table, Table E-3 – Mandatory Features - Presentation3.2.3 Presentation Processor Conformance의 requirements를 준수하는 TTML content processor에 대한 모든 mandatory features를 enumerate하고, usage context 또는 feature의 nature를 summarize하기 위한 additional comments를 제공한다. corresponding TTML Presentation Profile을 정의하는 profile definition documentG.2 TTML2 Presentation Profile에 지정되어 있다.

Table E-3 – Mandatory Features - Presentation
Feature Designations Comments
#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 Extensions

이 appendix는 normative이다.

이 appendix는 extension designations의 syntactic form을 지정하며, 이는 TTML processor에서 extension mechanisms에 대한 support와 관련된 authorial intent를 express하는 데 사용된다.

F.1 Extension Designations

extension designation은 다음 form을 따르는 string으로 expressed된다:

extension-designation
  : extension-namespace designation

extension-namespace
  : TT Extension Namespace                  // http://www.w3.org/ns/ttml/extension/
  | Other Extension Namespace               // expressed as an absolute URI

designation
  : "#" token-char+

token-char
  : { XML NameChar }                        // [XML 1.1] Production [4a]

extension designation의 extension namespace가 TT Extension Namespace이면, 다음 designation token의 모든 values는 future standardization을 위해 reserved된다.

extension designation의 extension namespace가 TT Extension Namespace가 아니면, 즉 Other Extension Namespace이면, extension namespace는 fragment identifier의 form을 취하는 designation token과 combination되어 사용되는 base URI로 serve할 수 있는 absolute URI로 expressed되어야 한다.

G Standard Profiles

이 appendix는 normative이다.

이 appendix는 다음 standard TTML profiles를 지정하거나 reference로 incorporate한다:

각 TTML profile은 profile definition document의 terms로 정의되며, 이는 root element가 6.1.1 ttp:profile를 따르는 XML document로 expressed된다.

G.1 TTML2 Full Profile

TTML2 Full Profile은 transformation 및 presentation processing 모두에 대한 maximum compliance를 express하는 데 사용되도록 intended된다.

참고:

이 profile은 DFXP Full Profile의 superset이다.

<?xml version="1.0" encoding="utf-8"?>
<!-- this file defines the "ttml2-full" profile of ttml -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-full">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- required (mandatory) feature support -->
    <feature value="required" extends="#animate-minimal">#animate</feature>
    <feature value="required">#animate-fill</feature>
    <feature value="required">#animate-minimal</feature>
    <feature value="required">#animate-paced</feature>
    <feature value="required">#animate-spline</feature>
    <feature value="required">#animate-repeat</feature>
    <feature value="required">#animation</feature>
    <feature value="required">#animation-out-of-line</feature>
    <feature value="required" extends="#animation">#animation-version-2</feature>
    <feature value="required">#audio</feature>
    <feature value="required">#audio-description</feature>
    <feature value="required">#audio-speech</feature>
    <feature value="required">#background</feature>
    <feature value="required">#background-image</feature>
    <feature value="required">#backgroundClip</feature>
    <feature value="required">#backgroundColor-block</feature>
    <feature value="required">#backgroundColor-inline</feature>
    <feature value="required">#backgroundColor-region</feature>
    <feature value="required">#backgroundColor</feature>
    <feature value="required">#backgroundExtent</feature>
    <feature value="required">#backgroundImage</feature>
    <feature value="required">#backgroundOrigin</feature>
    <feature value="required">#backgroundPosition</feature>
    <feature value="required">#backgroundRepeat</feature>
    <feature value="required">#base</feature>
    <feature value="required">#base-general</feature>
    <feature value="required" extends="#base">#base-version-2</feature>
    <feature value="required">#bidi</feature>
    <feature value="required" extends="#bidi">#bidi-version-2</feature>
    <feature value="required">#border</feature>
    <feature value="required">#border-block</feature>
    <feature value="required">#border-inline</feature>
    <feature value="required">#border-radii</feature>
    <feature value="required">#border-radii-1</feature>
    <feature value="required">#border-radii-2</feature>
    <feature value="required">#border-region</feature>
    <feature value="required">#bpd</feature>
    <feature value="required">#cellResolution</feature>
    <feature value="required">#chunk</feature>
    <feature value="required">#clockMode</feature>
    <feature value="required">#clockMode-gps</feature>
    <feature value="required">#clockMode-local</feature>
    <feature value="required">#clockMode-utc</feature>
    <feature value="required">#color</feature>
    <feature value="required">#condition</feature>
    <feature value="required">#condition-fn-media</feature>
    <feature value="required">#condition-fn-parameter</feature>
    <feature value="required">#condition-fn-supports</feature>
    <feature value="required">#condition-primary</feature>
    <feature value="required">#content</feature>
    <feature value="required">#content-sizing</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="required">#core</feature>
    <feature value="required">#data</feature>
    <feature value="required">#direction</feature>
    <feature value="required">#disparity</feature>
    <feature value="required">#display</feature>
    <feature value="required">#display-block</feature>
    <feature value="required">#display-inline</feature>
    <feature value="required">#display-inlineBlock</feature>
    <feature value="required">#display-region</feature>
    <feature value="required" extends="#display">#display-version-2</feature>
    <feature value="required">#displayAlign</feature>
    <feature value="required">#displayAlign-block</feature>
    <feature value="required">#displayAlign-justify</feature>
    <feature value="required">#displayAlign-region</feature>
    <feature value="required">#displayAlign-relative</feature>
    <feature value="required" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="required">#displayAspectRatio</feature>
    <feature value="required">#dropMode</feature>
    <feature value="required">#dropMode-dropNTSC</feature>
    <feature value="required">#dropMode-dropPAL</feature>
    <feature value="required">#dropMode-nonDrop</feature>
    <feature value="required">#embedded-audio</feature>
    <feature value="required">#embedded-content</feature>
    <feature value="required">#embedded-data</feature>
    <feature value="required">#embedded-font</feature>
    <feature value="required">#embedded-image</feature>
    <feature value="required">#extent</feature>
    <feature value="required">#extent-auto</feature>
    <feature value="required" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="required">#extent-contain</feature>
    <feature value="required">#extent-cover</feature>
    <feature value="required" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="required">#extent-image</feature>
    <feature value="required">#extent-length</feature>
    <feature value="required" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="required">#extent-measure</feature>
    <feature value="required">#extent-region</feature>
    <feature value="required" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="required">#extent-root</feature>
    <feature value="required" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="required" extends="#extent">#extent-version-2</feature>
    <feature value="required">#font</feature>
    <feature value="required">#fontFamily</feature>
    <feature value="required">#fontFamily-generic</feature>
    <feature value="required">#fontFamily-non-generic</feature>
    <feature value="required">#fontKerning</feature>
    <feature value="required">#fontSelectionStrategy</feature>
    <feature value="required">#fontSelectionStrategy-character</feature>
    <feature value="required">#fontShear</feature>
    <feature value="required">#fontSize</feature>
    <feature value="required">#fontSize-anamorphic</feature>
    <feature value="required">#fontSize-isomorphic</feature>
    <feature value="required">#fontStyle</feature>
    <feature value="required">#fontStyle-italic</feature>
    <feature value="required">#fontStyle-oblique</feature>
    <feature value="required">#fontVariant</feature>
    <feature value="required">#fontWeight</feature>
    <feature value="required">#fontWeight-bold</feature>
    <feature value="required">#frameRate</feature>
    <feature value="required">#frameRateMultiplier</feature>
    <feature value="required">#gain</feature>
    <feature value="required">#image</feature>
    <feature value="required">#image-png</feature>
    <feature value="required">#initial</feature>
    <feature value="required">#ipd</feature>
    <feature value="required">#layout</feature>
    <feature value="required">#length</feature>
    <feature value="required">#length-cell</feature>
    <feature value="required">#length-em</feature>
    <feature value="required">#length-integer</feature>
    <feature value="required">#length-negative</feature>
    <feature value="required">#length-percentage</feature>
    <feature value="required">#length-pixel</feature>
    <feature value="required">#length-positive</feature>
    <feature value="required">#length-real</feature>
    <feature value="required">#length-root-container-relative</feature>
    <feature value="required" extends="#length">#length-version-2</feature>
    <feature value="required">#letterSpacing</feature>
    <feature value="required">#lineBreak-uax14</feature>
    <feature value="required">#lineHeight</feature>
    <feature value="required">#lineShear</feature>
    <feature value="required">#luminance</feature>
    <feature value="required">#markerMode</feature>
    <feature value="required">#markerMode-continuous</feature>
    <feature value="required">#markerMode-discontinuous</feature>
    <feature value="required">#metadata</feature>
    <feature value="required">#metadata-item</feature>
    <feature value="required" extends="#metadata">#metadata-version-2</feature>
    <feature value="required">#nested-div</feature>
    <feature value="required">#nested-span</feature>
    <feature value="required">#opacity</feature>
    <feature value="required">#opacity-block</feature>
    <feature value="required">#opacity-inline</feature>
    <feature value="required">#opacity-region</feature>
    <feature value="required" extends="#opacity">#opacity-version-2</feature>
    <feature value="required">#origin</feature>
    <feature value="required">#overflow</feature>
    <feature value="required">#overflow-visible</feature>
    <feature value="required">#padding</feature>
    <feature value="required">#padding-1</feature>
    <feature value="required">#padding-2</feature>
    <feature value="required">#padding-3</feature>
    <feature value="required">#padding-4</feature>
    <feature value="required">#padding-block</feature>
    <feature value="required">#padding-inline</feature>
    <feature value="required">#padding-region</feature>
    <feature value="required" extends="#padding">#padding-version-2</feature>
    <feature value="required">#pan</feature>
    <feature value="required">#permitFeatureNarrowing</feature>
    <feature value="required">#permitFeatureWidening</feature>
    <feature value="required">#pitch</feature>
    <feature value="required">#pixelAspectRatio</feature>
    <feature value="required">#position</feature>
    <feature value="required">#presentation</feature>
    <feature value="required" extends="#presentation">#presentation-version-2</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="required">#profile-nesting</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#region-implied-animation</feature>
    <feature value="required">#region-inline</feature>
    <feature value="required">#region-timing</feature>
    <feature value="required">#resources</feature>
    <feature value="required">#ruby</feature>
    <feature value="required">#ruby-full</feature>
    <feature value="required">#rubyAlign</feature>
    <feature value="required">#rubyAlign-minimal</feature>
    <feature value="required">#rubyAlign-withBase</feature>
    <feature value="required">#rubyPosition</feature>
    <feature value="required">#rubyReserve</feature>
    <feature value="required" extends="#animation">#set</feature>
    <feature value="required">#set-fill</feature>
    <feature value="required">#set-multiple-styles</feature>
    <feature value="required">#set-repeat</feature>
    <feature value="required">#shear</feature>
    <feature value="required">#showBackground</feature>
    <feature value="required">#source</feature>
    <feature value="required">#speak</feature>
    <feature value="required">#speech</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#styling</feature>
    <feature value="required">#styling-chained</feature>
    <feature value="required">#styling-inheritance-content</feature>
    <feature value="required">#styling-inheritance-region</feature>
    <feature value="required">#styling-inline</feature>
    <feature value="required">#styling-nested</feature>
    <feature value="required">#styling-referential</feature>
    <feature value="required">#subFrameRate</feature>
    <feature value="required">#textAlign</feature>
    <feature value="required">#textAlign-absolute</feature>
    <feature value="required">#textAlign-justify</feature>
    <feature value="required">#textAlign-relative</feature>
    <feature value="required" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="required">#textCombine</feature>
    <feature value="required">#textDecoration</feature>
    <feature value="required">#textDecoration-over</feature>
    <feature value="required">#textDecoration-through</feature>
    <feature value="required">#textDecoration-under</feature>
    <feature value="required" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="required">#textEmphasis-color</feature>
    <feature value="required">#textEmphasis-minimal</feature>
    <feature value="required">#textEmphasis-quoted-string</feature>
    <feature value="required">#textOrientation</feature>
    <feature value="required">#textOutline</feature>
    <feature value="required">#textOutline-blurred</feature>
    <feature value="required">#textOutline-unblurred</feature>
    <feature value="required">#textShadow</feature>
    <feature value="required">#tickRate</feature>
    <feature value="required">#time-clock-with-frames</feature>
    <feature value="required">#time-clock</feature>
    <feature value="required">#time-offset-with-frames</feature>
    <feature value="required">#time-offset-with-ticks</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#time-wall-clock</feature>
    <feature value="required">#timeBase-clock</feature>
    <feature value="required">#timeBase-media</feature>
    <feature value="required">#timeBase-smpte</feature>
    <feature value="required">#timeContainer</feature>
    <feature value="required">#timing</feature>
    <feature value="required">#transformation</feature>
    <feature value="required" extends="#transformation">#transformation-version-2</feature>
    <feature value="required">#unicodeBidi</feature>
    <feature value="required">#unicodeBidi-isolate</feature>
    <feature value="required" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="required">#validation</feature>
    <feature value="required">#visibility</feature>
    <feature value="required">#visibility-block</feature>
    <feature value="required">#visibility-image</feature>
    <feature value="required">#visibility-inline</feature>
    <feature value="required">#visibility-region</feature>
    <feature value="required" extends="#visibility">#visibility-version-2</feature>
    <feature value="required">#wrapOption</feature>
    <feature value="required">#writingMode</feature>
    <feature value="required">#writingMode-horizontal-lr</feature>
    <feature value="required">#writingMode-horizontal-rl</feature>
    <feature value="required">#writingMode-horizontal</feature>
    <feature value="required">#writingMode-vertical</feature>
    <feature value="required">#xlink</feature>
    <feature value="required">#zIndex</feature>
    <!-- optional (voluntary) feature support -->
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- required (mandatory) extension support -->
    <!-- optional (voluntary) extension support -->
  </extensions>
</profile>

G.2 TTML2 Presentation Profile

TTML2 Presentation Profile은 presentation processing에 대한 minimum compliance를 express하는 데 사용되도록 intended된다.

참고:

이 profile은 DFXP Presentation Profile의 superset이다.

<?xml version="1.0" encoding="utf-8"?>
<!-- this file defines the "ttml2-presentation" profile of ttml -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-presentation">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- required (mandatory) feature support -->
    <feature value="required">#content</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required">#core</feature>
    <feature value="required">#presentation</feature>
    <feature value="required" extends="#presentation">#presentation-version-2</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#timing</feature>
    <!-- optional (voluntary) feature support -->
    <feature value="optional">#animate</feature>
    <feature value="optional">#animate-fill</feature>
    <feature value="optional">#animate-minimal</feature>
    <feature value="optional">#animate-paced</feature>
    <feature value="optional">#animate-spline</feature>
    <feature value="optional">#animate-repeat</feature>
    <feature value="optional">#animation</feature>
    <feature value="optional">#animation-out-of-line</feature>
    <feature value="optional" extends="#animation">#animation-version-2</feature>
    <feature value="optional">#audio</feature>
    <feature value="optional">#audio-description</feature>
    <feature value="optional">#audio-speech</feature>
    <feature value="optional">#background</feature>
    <feature value="optional">#background-image</feature>
    <feature value="optional">#backgroundClip</feature>
    <feature value="optional">#backgroundColor-block</feature>
    <feature value="optional">#backgroundColor-inline</feature>
    <feature value="optional">#backgroundColor-region</feature>
    <feature value="optional">#backgroundColor</feature>
    <feature value="optional">#backgroundExtent</feature>
    <feature value="optional">#backgroundImage</feature>
    <feature value="optional">#backgroundOrigin</feature>
    <feature value="optional">#backgroundPosition</feature>
    <feature value="optional">#backgroundRepeat</feature>
    <feature value="optional">#base</feature>
    <feature value="optional">#base-general</feature>
    <feature value="optional" extends="#base">#base-version-2</feature>
    <feature value="optional">#bidi</feature>
    <feature value="optional" extends="#bidi">#bidi-version-2</feature>
    <feature value="optional">#border</feature>
    <feature value="optional">#border-block</feature>
    <feature value="optional">#border-inline</feature>
    <feature value="optional">#border-radii</feature>
    <feature value="optional">#border-radii-1</feature>
    <feature value="optional">#border-radii-2</feature>
    <feature value="optional">#border-region</feature>
    <feature value="optional">#bpd</feature>
    <feature value="optional">#cellResolution</feature>
    <feature value="optional">#chunk</feature>
    <feature value="optional">#clockMode</feature>
    <feature value="optional">#clockMode-gps</feature>
    <feature value="optional">#clockMode-local</feature>
    <feature value="optional">#clockMode-utc</feature>
    <feature value="optional">#color</feature>
    <feature value="optional">#condition</feature>
    <feature value="optional">#condition-fn-media</feature>
    <feature value="optional">#condition-fn-parameter</feature>
    <feature value="optional">#condition-fn-supports</feature>
    <feature value="optional">#condition-primary</feature>
    <feature value="optional">#content-sizing</feature>
    <feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="optional">#data</feature>
    <feature value="optional">#direction</feature>
    <feature value="optional">#disparity</feature>
    <feature value="optional">#display</feature>
    <feature value="optional">#display-block</feature>
    <feature value="optional">#display-inline</feature>
    <feature value="optional">#display-inlineBlock</feature>
    <feature value="optional">#display-region</feature>
    <feature value="optional" extends="#display">#display-version-2</feature>
    <feature value="optional">#displayAlign</feature>
    <feature value="optional">#displayAlign-block</feature>
    <feature value="optional">#displayAlign-justify</feature>
    <feature value="optional">#displayAlign-region</feature>
    <feature value="optional">#displayAlign-relative</feature>
    <feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="optional">#displayAspectRatio</feature>
    <feature value="optional">#dropMode</feature>
    <feature value="optional">#dropMode-dropNTSC</feature>
    <feature value="optional">#dropMode-dropPAL</feature>
    <feature value="optional">#dropMode-nonDrop</feature>
    <feature value="optional">#embedded-audio</feature>
    <feature value="optional">#embedded-content</feature>
    <feature value="optional">#embedded-data</feature>
    <feature value="optional">#embedded-font</feature>
    <feature value="optional">#embedded-image</feature>
    <feature value="optional">#extent</feature>
    <feature value="optional">#extent-auto</feature>
    <feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="optional">#extent-contain</feature>
    <feature value="optional">#extent-cover</feature>
    <feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="optional">#extent-image</feature>
    <feature value="optional">#extent-length</feature>
    <feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="optional">#extent-measure</feature>
    <feature value="optional">#extent-region</feature>
    <feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="optional">#extent-root</feature>
    <feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="optional" extends="#extent">#extent-version-2</feature>
    <feature value="optional">#font</feature>
    <feature value="optional">#fontFamily</feature>
    <feature value="optional">#fontFamily-generic</feature>
    <feature value="optional">#fontFamily-non-generic</feature>
    <feature value="optional">#fontKerning</feature>
    <feature value="optional">#fontSelectionStrategy</feature>
    <feature value="optional">#fontSelectionStrategy-character</feature>
    <feature value="optional">#fontShear</feature>
    <feature value="optional">#fontSize</feature>
    <feature value="optional">#fontSize-anamorphic</feature>
    <feature value="optional">#fontSize-isomorphic</feature>
    <feature value="optional">#fontStyle</feature>
    <feature value="optional">#fontStyle-italic</feature>
    <feature value="optional">#fontStyle-oblique</feature>
    <feature value="optional">#fontVariant</feature>
    <feature value="optional">#fontWeight</feature>
    <feature value="optional">#fontWeight-bold</feature>
    <feature value="optional">#frameRate</feature>
    <feature value="optional">#frameRateMultiplier</feature>
    <feature value="optional">#gain</feature>
    <feature value="optional">#image</feature>
    <feature value="optional">#image-png</feature>
    <feature value="optional">#initial</feature>
    <feature value="optional">#ipd</feature>
    <feature value="optional">#layout</feature>
    <feature value="optional">#length</feature>
    <feature value="optional">#length-cell</feature>
    <feature value="optional">#length-em</feature>
    <feature value="optional">#length-integer</feature>
    <feature value="optional">#length-negative</feature>
    <feature value="optional">#length-percentage</feature>
    <feature value="optional">#length-pixel</feature>
    <feature value="optional">#length-positive</feature>
    <feature value="optional">#length-real</feature>
    <feature value="optional">#length-root-container-relative</feature>
    <feature value="optional" extends="#length">#length-version-2</feature>
    <feature value="optional">#letterSpacing</feature>
    <feature value="optional">#lineBreak-uax14</feature>
    <feature value="optional">#lineHeight</feature>
    <feature value="optional">#lineShear</feature>
    <feature value="optional">#luminance</feature>
    <feature value="optional">#markerMode</feature>
    <feature value="optional">#markerMode-continuous</feature>
    <feature value="optional">#markerMode-discontinuous</feature>
    <feature value="optional">#metadata</feature>
    <feature value="optional">#metadata-item</feature>
    <feature value="optional" extends="#metadata">#metadata-version-2</feature>
    <feature value="optional">#nested-div</feature>
    <feature value="optional">#nested-span</feature>
    <feature value="optional">#opacity</feature>
    <feature value="optional">#opacity-block</feature>
    <feature value="optional">#opacity-inline</feature>
    <feature value="optional">#opacity-region</feature>
    <feature value="optional" extends="#opacity">#opacity-version-2</feature>
    <feature value="optional">#origin</feature>
    <feature value="optional">#overflow</feature>
    <feature value="optional">#overflow-visible</feature>
    <feature value="optional">#padding</feature>
    <feature value="optional">#padding-1</feature>
    <feature value="optional">#padding-2</feature>
    <feature value="optional">#padding-3</feature>
    <feature value="optional">#padding-4</feature>
    <feature value="optional">#padding-block</feature>
    <feature value="optional">#padding-inline</feature>
    <feature value="optional">#padding-region</feature>
    <feature value="optional" extends="#padding">#padding-version-2</feature>
    <feature value="optional">#pan</feature>
    <feature value="optional">#permitFeatureNarrowing</feature>
    <feature value="optional">#permitFeatureWidening</feature>
    <feature value="optional">#pitch</feature>
    <feature value="optional">#pixelAspectRatio</feature>
    <feature value="optional">#position</feature>
    <feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="optional">#profile-nesting</feature>
    <feature value="optional">#region-implied-animation</feature>
    <feature value="optional">#region-inline</feature>
    <feature value="optional">#region-timing</feature>
    <feature value="optional">#resources</feature>
    <feature value="optional">#ruby</feature>
    <feature value="optional">#ruby-full</feature>
    <feature value="optional">#rubyAlign</feature>
    <feature value="optional">#rubyAlign-minimal</feature>
    <feature value="optional">#rubyAlign-withBase</feature>
    <feature value="optional">#rubyPosition</feature>
    <feature value="optional">#rubyReserve</feature>
    <feature value="optional" extends="#animation">#set</feature>
    <feature value="optional">#set-fill</feature>
    <feature value="optional">#set-multiple-styles</feature>
    <feature value="optional">#set-repeat</feature>
    <feature value="optional">#shear</feature>
    <feature value="optional">#showBackground</feature>
    <feature value="optional">#source</feature>
    <feature value="optional">#speak</feature>
    <feature value="optional">#speech</feature>
    <feature value="optional">#styling</feature>
    <feature value="optional">#styling-chained</feature>
    <feature value="optional">#styling-inheritance-content</feature>
    <feature value="optional">#styling-inheritance-region</feature>
    <feature value="optional">#styling-inline</feature>
    <feature value="optional">#styling-nested</feature>
    <feature value="optional">#styling-referential</feature>
    <feature value="optional">#subFrameRate</feature>
    <feature value="optional">#textAlign</feature>
    <feature value="optional">#textAlign-absolute</feature>
    <feature value="optional">#textAlign-justify</feature>
    <feature value="optional">#textAlign-relative</feature>
    <feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="optional">#textCombine</feature>
    <feature value="optional">#textDecoration</feature>
    <feature value="optional">#textDecoration-over</feature>
    <feature value="optional">#textDecoration-through</feature>
    <feature value="optional">#textDecoration-under</feature>
    <feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="optional">#textEmphasis-color</feature>
    <feature value="optional">#textEmphasis-minimal</feature>
    <feature value="optional">#textEmphasis-quoted-string</feature>
    <feature value="optional">#textOrientation</feature>
    <feature value="optional">#textOutline</feature>
    <feature value="optional">#textOutline-blurred</feature>
    <feature value="optional">#textOutline-unblurred</feature>
    <feature value="optional">#textShadow</feature>
    <feature value="optional">#tickRate</feature>
    <feature value="optional">#time-clock-with-frames</feature>
    <feature value="optional">#time-clock</feature>
    <feature value="optional">#time-offset-with-frames</feature>
    <feature value="optional">#time-offset-with-ticks</feature>
    <feature value="optional">#time-wall-clock</feature>
    <feature value="optional">#timeBase-clock</feature>
    <feature value="optional">#timeBase-media</feature>
    <feature value="optional">#timeBase-smpte</feature>
    <feature value="optional">#timeContainer</feature>
    <feature value="optional">#transformation</feature>
    <feature value="optional" extends="#transformation">#transformation-version-2</feature>
    <feature value="optional">#unicodeBidi</feature>
    <feature value="optional">#unicodeBidi-isolate</feature>
    <feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="optional">#validation</feature>
    <feature value="optional">#visibility</feature>
    <feature value="optional">#visibility-block</feature>
    <feature value="optional">#visibility-image</feature>
    <feature value="optional">#visibility-inline</feature>
    <feature value="optional">#visibility-region</feature>
    <feature value="optional" extends="#visibility">#visibility-version-2</feature>
    <feature value="optional">#wrapOption</feature>
    <feature value="optional">#writingMode</feature>
    <feature value="optional">#writingMode-horizontal-lr</feature>
    <feature value="optional">#writingMode-horizontal-rl</feature>
    <feature value="optional">#writingMode-horizontal</feature>
    <feature value="optional">#writingMode-vertical</feature>
    <feature value="optional">#xlink</feature>
    <feature value="optional">#zIndex</feature>
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- required (mandatory) extension support -->
    <!-- optional (voluntary) extension support -->
  </extensions>
</profile>

G.3 TTML2 Transformation Profile

TTML2 Transformation Profile은 transformation processing에 대한 minimum compliance를 express하는 데 사용되도록 intended된다.

참고:

이 profile은 DFXP Transformation Profile의 superset이다.

<?xml version="1.0" encoding="utf-8"?>
<!-- this file defines the "ttml2-transformation" profile of ttml -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- required (mandatory) feature support -->
    <feature value="required">#content</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required">#core</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#timing</feature>
    <feature value="required">#transformation</feature>
    <feature value="required" extends="#transformation">#transformation-version-2</feature>
    <!-- optional (voluntary) feature support -->
    <feature value="optional">#animate</feature>
    <feature value="optional">#animate-fill</feature>
    <feature value="optional">#animate-minimal</feature>
    <feature value="optional">#animate-paced</feature>
    <feature value="optional">#animate-spline</feature>
    <feature value="optional">#animate-repeat</feature>
    <feature value="optional">#animation</feature>
    <feature value="optional">#animation-out-of-line</feature>
    <feature value="optional" extends="#animation">#animation-version-2</feature>
    <feature value="optional">#audio</feature>
    <feature value="optional">#audio-description</feature>
    <feature value="optional">#audio-speech</feature>
    <feature value="optional">#background</feature>
    <feature value="optional">#background-image</feature>
    <feature value="optional">#backgroundClip</feature>
    <feature value="optional">#backgroundColor-block</feature>
    <feature value="optional">#backgroundColor-inline</feature>
    <feature value="optional">#backgroundColor-region</feature>
    <feature value="optional">#backgroundColor</feature>
    <feature value="optional">#backgroundExtent</feature>
    <feature value="optional">#backgroundImage</feature>
    <feature value="optional">#backgroundOrigin</feature>
    <feature value="optional">#backgroundPosition</feature>
    <feature value="optional">#backgroundRepeat</feature>
    <feature value="optional">#base</feature>
    <feature value="optional">#base-general</feature>
    <feature value="optional" extends="#base">#base-version-2</feature>
    <feature value="optional">#bidi</feature>
    <feature value="optional" extends="#bidi">#bidi-version-2</feature>
    <feature value="optional">#border</feature>
    <feature value="optional">#border-block</feature>
    <feature value="optional">#border-inline</feature>
    <feature value="optional">#border-radii</feature>
    <feature value="optional">#border-radii-1</feature>
    <feature value="optional">#border-radii-2</feature>
    <feature value="optional">#border-region</feature>
    <feature value="optional">#bpd</feature>
    <feature value="optional">#cellResolution</feature>
    <feature value="optional">#chunk</feature>
    <feature value="optional">#clockMode</feature>
    <feature value="optional">#clockMode-gps</feature>
    <feature value="optional">#clockMode-local</feature>
    <feature value="optional">#clockMode-utc</feature>
    <feature value="optional">#color</feature>
    <feature value="optional">#condition</feature>
    <feature value="optional">#condition-fn-media</feature>
    <feature value="optional">#condition-fn-parameter</feature>
    <feature value="optional">#condition-fn-supports</feature>
    <feature value="optional">#condition-primary</feature>
    <feature value="optional">#content-sizing</feature>
    <feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="optional">#data</feature>
    <feature value="optional">#direction</feature>
    <feature value="optional">#disparity</feature>
    <feature value="optional">#display</feature>
    <feature value="optional">#display-block</feature>
    <feature value="optional">#display-inline</feature>
    <feature value="optional">#display-inlineBlock</feature>
    <feature value="optional">#display-region</feature>
    <feature value="optional" extends="#display">#display-version-2</feature>
    <feature value="optional">#displayAlign</feature>
    <feature value="optional">#displayAlign-block</feature>
    <feature value="optional">#displayAlign-justify</feature>
    <feature value="optional">#displayAlign-region</feature>
    <feature value="optional">#displayAlign-relative</feature>
    <feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="optional">#displayAspectRatio</feature>
    <feature value="optional">#dropMode</feature>
    <feature value="optional">#dropMode-dropNTSC</feature>
    <feature value="optional">#dropMode-dropPAL</feature>
    <feature value="optional">#dropMode-nonDrop</feature>
    <feature value="optional">#embedded-audio</feature>
    <feature value="optional">#embedded-content</feature>
    <feature value="optional">#embedded-data</feature>
    <feature value="optional">#embedded-font</feature>
    <feature value="optional">#embedded-image</feature>
    <feature value="optional">#extent</feature>
    <feature value="optional">#extent-auto</feature>
    <feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="optional">#extent-contain</feature>
    <feature value="optional">#extent-cover</feature>
    <feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="optional">#extent-image</feature>
    <feature value="optional">#extent-length</feature>
    <feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="optional">#extent-measure</feature>
    <feature value="optional">#extent-region</feature>
    <feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="optional">#extent-root</feature>
    <feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="optional" extends="#extent">#extent-version-2</feature>
    <feature value="optional">#font</feature>
    <feature value="optional">#fontFamily</feature>
    <feature value="optional">#fontFamily-generic</feature>
    <feature value="optional">#fontFamily-non-generic</feature>
    <feature value="optional">#fontKerning</feature>
    <feature value="optional">#fontSelectionStrategy</feature>
    <feature value="optional">#fontSelectionStrategy-character</feature>
    <feature value="optional">#fontShear</feature>
    <feature value="optional">#fontSize</feature>
    <feature value="optional">#fontSize-anamorphic</feature>
    <feature value="optional">#fontSize-isomorphic</feature>
    <feature value="optional">#fontStyle</feature>
    <feature value="optional">#fontStyle-italic</feature>
    <feature value="optional">#fontStyle-oblique</feature>
    <feature value="optional">#fontVariant</feature>
    <feature value="optional">#fontWeight</feature>
    <feature value="optional">#fontWeight-bold</feature>
    <feature value="optional">#frameRate</feature>
    <feature value="optional">#frameRateMultiplier</feature>
    <feature value="optional">#gain</feature>
    <feature value="optional">#image</feature>
    <feature value="optional">#image-png</feature>
    <feature value="optional">#initial</feature>
    <feature value="optional">#ipd</feature>
    <feature value="optional">#layout</feature>
    <feature value="optional">#length</feature>
    <feature value="optional">#length-cell</feature>
    <feature value="optional">#length-em</feature>
    <feature value="optional">#length-integer</feature>
    <feature value="optional">#length-negative</feature>
    <feature value="optional">#length-percentage</feature>
    <feature value="optional">#length-pixel</feature>
    <feature value="optional">#length-positive</feature>
    <feature value="optional">#length-real</feature>
    <feature value="optional">#length-root-container-relative</feature>
    <feature value="optional" extends="#length">#length-version-2</feature>
    <feature value="optional">#letterSpacing</feature>
    <feature value="optional">#lineBreak-uax14</feature>
    <feature value="optional">#lineHeight</feature>
    <feature value="optional">#lineShear</feature>
    <feature value="optional">#luminance</feature>
    <feature value="optional">#markerMode</feature>
    <feature value="optional">#markerMode-continuous</feature>
    <feature value="optional">#markerMode-discontinuous</feature>
    <feature value="optional">#metadata</feature>
    <feature value="optional">#metadata-item</feature>
    <feature value="optional" extends="#metadata">#metadata-version-2</feature>
    <feature value="optional">#nested-div</feature>
    <feature value="optional">#nested-span</feature>
    <feature value="optional">#opacity</feature>
    <feature value="optional">#opacity-block</feature>
    <feature value="optional">#opacity-inline</feature>
    <feature value="optional">#opacity-region</feature>
    <feature value="optional" extends="#opacity">#opacity-version-2</feature>
    <feature value="optional">#origin</feature>
    <feature value="optional">#overflow</feature>
    <feature value="optional">#overflow-visible</feature>
    <feature value="optional">#padding</feature>
    <feature value="optional">#padding-1</feature>
    <feature value="optional">#padding-2</feature>
    <feature value="optional">#padding-3</feature>
    <feature value="optional">#padding-4</feature>
    <feature value="optional">#padding-block</feature>
    <feature value="optional">#padding-inline</feature>
    <feature value="optional">#padding-region</feature>
    <feature value="optional" extends="#padding">#padding-version-2</feature>
    <feature value="optional">#pan</feature>
    <feature value="optional">#permitFeatureNarrowing</feature>
    <feature value="optional">#permitFeatureWidening</feature>
    <feature value="optional">#pitch</feature>
    <feature value="optional">#pixelAspectRatio</feature>
    <feature value="optional">#position</feature>
    <feature value="optional">#presentation</feature>
    <feature value="optional" extends="#presentation">#presentation-version-2</feature>
    <feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="optional">#profile-nesting</feature>
    <feature value="optional">#region-implied-animation</feature>
    <feature value="optional">#region-inline</feature>
    <feature value="optional">#region-timing</feature>
    <feature value="optional">#resources</feature>
    <feature value="optional">#ruby</feature>
    <feature value="optional">#ruby-full</feature>
    <feature value="optional">#rubyAlign</feature>
    <feature value="optional">#rubyAlign-minimal</feature>
    <feature value="optional">#rubyAlign-withBase</feature>
    <feature value="optional">#rubyPosition</feature>
    <feature value="optional">#rubyReserve</feature>
    <feature value="optional" extends="#animation">#set</feature>
    <feature value="optional">#set-fill</feature>
    <feature value="optional">#set-multiple-styles</feature>
    <feature value="optional">#set-repeat</feature>
    <feature value="optional">#shear</feature>
    <feature value="optional">#showBackground</feature>
    <feature value="optional">#source</feature>
    <feature value="optional">#speak</feature>
    <feature value="optional">#speech</feature>
    <feature value="optional">#styling</feature>
    <feature value="optional">#styling-chained</feature>
    <feature value="optional">#styling-inheritance-content</feature>
    <feature value="optional">#styling-inheritance-region</feature>
    <feature value="optional">#styling-inline</feature>
    <feature value="optional">#styling-nested</feature>
    <feature value="optional">#styling-referential</feature>
    <feature value="optional">#subFrameRate</feature>
    <feature value="optional">#textAlign</feature>
    <feature value="optional">#textAlign-absolute</feature>
    <feature value="optional">#textAlign-justify</feature>
    <feature value="optional">#textAlign-relative</feature>
    <feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="optional">#textCombine</feature>
    <feature value="optional">#textDecoration</feature>
    <feature value="optional">#textDecoration-over</feature>
    <feature value="optional">#textDecoration-through</feature>
    <feature value="optional">#textDecoration-under</feature>
    <feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="optional">#textEmphasis-color</feature>
    <feature value="optional">#textEmphasis-minimal</feature>
    <feature value="optional">#textEmphasis-quoted-string</feature>
    <feature value="optional">#textOrientation</feature>
    <feature value="optional">#textOutline</feature>
    <feature value="optional">#textOutline-blurred</feature>
    <feature value="optional">#textOutline-unblurred</feature>
    <feature value="optional">#textShadow</feature>
    <feature value="optional">#tickRate</feature>
    <feature value="optional">#time-clock-with-frames</feature>
    <feature value="optional">#time-clock</feature>
    <feature value="optional">#time-offset-with-frames</feature>
    <feature value="optional">#time-offset-with-ticks</feature>
    <feature value="optional">#time-wall-clock</feature>
    <feature value="optional">#timeBase-clock</feature>
    <feature value="optional">#timeBase-media</feature>
    <feature value="optional">#timeBase-smpte</feature>
    <feature value="optional">#timeContainer</feature>
    <feature value="optional">#unicodeBidi</feature>
    <feature value="optional">#unicodeBidi-isolate</feature>
    <feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="optional">#validation</feature>
    <feature value="optional">#visibility</feature>
    <feature value="optional">#visibility-block</feature>
    <feature value="optional">#visibility-image</feature>
    <feature value="optional">#visibility-inline</feature>
    <feature value="optional">#visibility-region</feature>
    <feature value="optional" extends="#visibility">#visibility-version-2</feature>
    <feature value="optional">#wrapOption</feature>
    <feature value="optional">#writingMode</feature>
    <feature value="optional">#writingMode-horizontal-lr</feature>
    <feature value="optional">#writingMode-horizontal-rl</feature>
    <feature value="optional">#writingMode-horizontal</feature>
    <feature value="optional">#writingMode-vertical</feature>
    <feature value="optional">#xlink</feature>
    <feature value="optional">#zIndex</feature>
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- required (mandatory) extension support -->
    <!-- optional (voluntary) extension support -->
  </extensions>
</profile>

G.4 DFXP Full Profile

DFXP Full Profile은 [TTML1], Appendix F.3, DFXP Full Profile에 의해 specified된다.

G.5 DFXP Presentation Profile

DFXP Presentation Profile은 [TTML1], Appendix F.2, DFXP Presentation Profile에 의해 specified된다.

G.6 DFXP Transformation Profile

DFXP Transformation Profile은 [TTML1], Appendix F.1, DFXP Transformation Profile에 의해 specified된다.

H Root Container Region Semantics

이 appendix는 normative이다.

이 appendix는 root container region의 essential characteristics와 그 사용을 결정하기 위한 semantics를 지정하며, 여기에는 다음이 포함된다:

H.1 Aspect Ratios

세 가지 aspect ratios가 root container region에 적용된다:

display aspect ratio (DAR)

root container의 display aspect ratio는 hypothetical display device에 presented되도록 intended된 display pixels의 terms로 root container의 aspect ratio에 대응한다. 이 display aspect ratio는 tt element의 ttp:displayAspectRatio attribute를 통해 명시적으로 specified되거나, 아래에 설명된 다른 information을 사용하여 inferred된다.

참고:

root container pixels의 실제 physical presentation은 정의된 TTML presentation processing 이후 aspect ratio, sample resolution, color space에서 수많은 transformations의 영향을 받을 수 있다. 그러한 post-TTML processing은 이 specification의 scope에서 완전히 벗어난다.

storage aspect ratio (SAR)

root container의 storage aspect ratiodocument coordinate space에서 logical pixels의 terms로 root container의 aspect ratio에 대응하며, 여기서 bijective (injective 및 surjective) mapping은 각 logical pixel을 unique한 display pixel과 associate한다. 이 storage aspect ratio는 tt element의 tts:extent attribute를 통해 명시적으로 specified되거나, 아래에 설명된 다른 information을 사용하여 inferred된다.

tt element에 tts:extent attribute가 specified되면,

  1. tts:extent attribute의 value가 두 개의 pixel-valued <length> expressions로 구성되는 경우, storage aspect ratio는 specified된 것으로 간주되며, extent의 width를 그 height로 나눈 값과 같은 numeric value를 가진다;

  2. 그렇지 않으면(computed value가 contain), storage aspect ratio는 unspecified인 것으로 간주되며 아래에 설명된 다른 information을 사용하여 inferred된다.

참고:

그 자체로 logical pixel은 intrinsic aspect ratio를 갖지 않는다. 그러나 display pixel에 mapped되면, 아래에 지정된 root container의 pixel aspect ratio가 정의하는 fixed value를 assume한다.

pixel aspect ratio (PAR)

root container의 pixel aspect ratio는 root container의 각 display pixel의 aspect ratio를 정의하며, 이에 따라 document coordinate space의 각 logical pixel은 associated된 display pixel의 fixed aspect ratio를 취하여 DAR = SAR × PAR가 성립한다. 이 pixel aspect ratio는 tt element의 ttp:pixelAspectRato attribute를 통해 명시적으로 specified되거나, 아래에 설명된 다른 information을 사용하여 inferred된다.

다음 sub-sections는 document에서 어떤 (ratios)가 specified되는지에 따라 이러한 aspect ratios가 어떻게 resolved되는지를 지정한다.

H.1.1 No Aspect Ratio

세 가지 aspect ratios 중 아무 것도 specified되지 않은 경우, 세 가지 aspect ratios는 다음 ordered steps에 따라 결정된다:

  1. related media object가 존재하고 defined된 DAR을 가지면, DAR의 resolved value는 related media object의 display aspect ratio이다; 그렇지 않으면 DAR의 value는 document processing context에 의해 (arbitrarily) 결정된다;

  2. SARPAR의 values는 아래 H.1.2 One Aspect Ratio에 따라 resolved된다.

H.1.2 One Aspect Ratio

세 가지 aspect ratios 중 하나만 specified된 경우, 다른 두 aspect ratios의 resolved values는 다음과 같이 결정된다:

  1. DAR이 specified되었거나 위 H.1.1 No Aspect Ratio에 의해 resolved된 경우, 그 resolved value는 specified 또는 resolved value이고, SARPAR의 values는 다음과 같이 결정된다:

    1. SAR의 resolved value는 DAR의 resolved value이다;

    2. PAR의 resolved value는 1 (one)이다.

  2. SAR이 specified된 경우, 그 resolved value는 specified value이고, DARPAR의 values는 다음과 같이 결정된다:

    1. related media object가 존재하고 defined된 DAR을 가지면, DAR의 resolved value는 related media object의 display aspect ratio이고, PAR의 value는 아래 H.1.3 Two Aspect Ratios에 따라 resolved된다;

    2. 그렇지 않으면 DAR의 resolved value는 document processing context에 의해 결정되고, PAR의 value는 아래 H.1.3 Two Aspect Ratios에 따라 resolved된다;

  3. PAR이 specified된 경우, 그 resolved value는 specified value이고, DARSAR의 values는 다음과 같이 결정된다:

    1. related media object가 존재하고 defined된 DAR을 가지면, DAR의 resolved value는 related media object의 display aspect ratio이고, SAR의 value는 아래 H.1.3 Two Aspect Ratios에 따라 resolved된다;

    2. 그렇지 않으면 SAR의 resolved value는 document processing context에 의해 결정되고, DAR의 value는 아래 H.1.3 Two Aspect Ratios에 따라 resolved된다.

H.1.3 Two Aspect Ratios

세 가지 aspect ratios 중 두 개가 specified되었거나 previously resolved된 경우, 세 번째 aspect ratio의 resolved value는 DAR = SAR × PAR equation을 사용하여 결정된다.

H.1.4 Three Aspect Ratios

세 가지 aspect ratios가 모두 specified되고 그 values가 DAR = SAR × PAR equation을 satisfy하면, 이들은 resolved aspect ratios로 간주된다. 그러나 equation이 satisfied되지 않으면, validation processing을 수행할 때 error가 reported되어야 하며 (validation processor configuration의 subject), presentation processing을 수행할 때는 specified된 PAR value가 ignored되고, PAR의 resolved value는 위 H.1.3 Two Aspect Ratios에 의해 결정된다.

H.2 Resolution

root container region은 fixed number of row pixels와 fixed number of column pixels를 가진 logical pixels의 grid로 subdivided되며, column pixels의 수는 horizontal axis에서 root container region의 resolution을 나타내고, row pixels의 수는 vertical axis에서 root container region의 resolution을 나타낸다. 여기서 전자는 각각 root container region의 width로 정의되고, 후자는 height로 정의되며, 두 axes를 따른 (이 두) resolutions의 collection은 root container region의 collective resolution 또는 spatial extent라 한다.

참고:

위의 storage aspect ratio (SAR)에서 noted된 바와 같이, logical pixel은 intrinsic aspect ratio를 갖지 않는다. 즉, logical pixel은 defined shape를 갖지 않으며, 이는 다시 defined size를 갖지 않음을 의미한다. logical pixeldisplay pixel에 mapped될 때에만 fixed shape와 size를 취한다. 그럼에도 불구하고 logical pixel을 square이고 measurable, absolute size를 가진 것으로 생각하는 것이 흔히 convenient하다. 그러나 reader는 이러한 premature(그리고 possibly incorrect) conclusion에 도달하지 않도록 주의해야 한다.

tts:extent attribute의 value가 tt element에 specified되고, 두 개의 pixel-valued <length> expressions로 구성되는 경우, 이 두 expressions는 root container region의 widthheight를 denote하며, consequently, 그 collective resolution을 determine한다; 그렇지 않으면 root container region의 collective resolution은 위 H.1 Aspect Ratios에서 결정된 SAR의 resolved values를 respect하는 방식으로 document processing context에 의해 (arbitrarily) 결정된다.

참고:

document processing contextroot container region에 arbitrary resolution을 assign하는 경우, 이는 internal processing constraints와 processing되는 document instance에 convenient한 임의의 방식으로 수행될 수 있다. 예를 들어 related media object의 storage aspect ratio에 적용되는 same resolution을 assign하거나, 같은 precision을 preserve하는 logical resolution을 assign하기 위해 document에서 발견된 length expressions의 precision을 evaluate할 수 있다.

H.3 Coordinate Space

root container region의 coordinate space, 즉 document coordinate space는 unbounded, two-dimensional plane이며, 그 위에 rectangle R의 form을 취하는 closed set of logical pixels가 정의된다. said pixels는 R의 boundary 내부에(interior to, inside of) 있고, 이 coordinate space의 origin(position)은 R의 upper, left-hand corner와 coincident하며, vertical axis의 positive pixels는 downwards로 extend하고, horizontal axis의 positive pixels는 rightwards로 extend한다. Furthermore, Rwidthheight는 root container region의 resolved resolution으로 설정된다. Lastly, R에 적용되는 aspect ratios는 위에서 indicated된 DAR, SAR, 및 PAR의 resolved values에 따라 established된다.

higher level protocol이 적용되지 않는 한, document coordinate space는 given document instance를 processing할 때 once and only once 결정된다.

I Time Expression Semantics

이 appendix는 normative이다.

이 appendix는 document instances에서 time expressions를 interpreting하기 위한 semantics를 지정한다.

참고:

아래에서 사용되는 local real time phrase는 document processing context의 virtual real time clock을 model하도록 intended되며, 여기서 local은 이 processing context implementation의 immediate proximity에 있음을 의미한다. 이 virtual clock과의 relationships를 정의하는 intent는 didactic purposes를 위한 locally valid physical realization of time을 establish하는 것이다.

참고:

아래에서 사용되는 play rate phrase는 document processing context의 (possibly variable) parameter를 model하도록 intended되며, 여기서 time의 playback(or interpretation) rate는 artificially dilated 또는 narrowed될 수 있다. 예를 들어 related media object의 playback rate를 slow down 또는 speed up할 때이다. 일반성을 잃지 않고, 다음 discussion은 fixed play(back) rate를 assume한다. variable play rates의 경우, resulting computations에 appropriate adjustments가 필요할 수 있다.

document processing contextsynthetic document syncbase를 establish할 때 사용할 applicable epoch와 epoch-related offsets를 정의한다.

I.1 Clock Time Base

clock time base로 operating할 때, time expressions를 interpreting하기 위한 다음 semantics가 적용되며, 이는 <time-expression>로 정의되고 media time 및 local real time과의 relationship을 가진다.

clock time base Cdocument processing context가 defined한 epoch E에서 expressed되는 local real time R과 다음과 같이 related된다:

TTML Semantics – Clock Time and Real Time Relationship


R = C + epochOffset + discontinuityOffset

여기서 C ∈ ℜ, 0 ≤ C < ∞이고, C는 seconds 단위이며, related <time-expression>이 undated form을 취할 때는 (1) reference clock base에 relative한 most immediate prior midnight 이후의 seconds, 또는 related <time-expression>이 dated form을 취할 때는 (2) reference clock base에 relative한 specified date의 midnight 이후의 seconds이다;

epochOffset ∈ ℜ, 0 ≤ epochOffset < ∞이고, epochOffset은 seconds 단위이며, 0은 epoch E의 beginning이고, epochOffset의 value는 ttp:clockMode parameter의 computed value로부터 다음과 같이 결정된다:

(1) local이면, most immediate prior local midnight의 local real time과 epoch E beginning의 local real time 사이의 difference를 seconds로 expressed한 값;

(2) gps이면, most immediate prior GPS midnight의 GPS time과 epoch E beginning의 GPS time 사이의 difference를 seconds로 expressed한 값;

(3) utc이면, most immediate prior UTC midnight의 UTC time과 epoch E beginning의 UTC time 사이의 difference를 seconds로 expressed한 값;

discontinuityOffset ∈ ℜ, −∞ < discontinuityOffset < ∞이고, discontinuityOffset 은 seconds 단위이며, discontinuityOffset의 value는 reference clock base의 most immediate prior midnight 이후에 added(or subtracted)된 leap seconds(및 그 fractions)의 sum과 같다;

그리고 epochOffsetdiscontinuityOffsetroot temporal extent의 beginning 이전에 once and only once 결정되어, value determination과 root temporal extent의 beginning 사이의 period 동안 local midnight 또는 reference clock base discontinuity가 발생하지 않도록 한다.

<time-expression>로 denoted되는 time value expressions는 clock time C와 다음과 같이 related된다:

TTML Semantics – Time Expressions and Clock Time Relationship


<time-expression> form이 ticks (t) metric을 사용하지 않으면:

C = 3600 * hours + 60 * minutes + seconds

여기서 hours, minutes, 및 seconds components는 present하면 time expression에서 extracted되고, present하지 않으면 zero이다. 또한 fraction component가 present하면 seconds component에 added되어 real-valued seconds component를 형성한다.

그렇지 않고 <time-expression> form이 ticks (t) metric을 사용하면:

C = ticks / tickRate

참고:

clock time base를 사용할 때는 time expressions의 framessub-frames terms와 frames (f) metric이 적용되지 않는다.

clock time base C는 media time M과 independent하다:

TTML Semantics – Clock Time and Media Time Relationship


M ¬∝ C

참고:

즉, clock time base가 사용될 때 timing은 media time과 disconnected되어 있다 (반드시 proportional하지 않다). 예를 들어 media play rate가 zero (0)이면 media playback은 suspended된다. 그러나 timing coordinates는 reference clock base에 direct proportion하여 clock time의 natural progression에 따라 계속 advance한다. 또한 playback 중 media play rate가 변경되어도 presentation timing은 영향을 받지 않는다.

I.2 Media Time Base

media time base로 operating할 때, time expressions를 interpreting하기 위한 다음 semantics가 적용되며, 이는 <time-expression>로 정의되고 media time, document time 및 local real time과의 relationship을 가진다.

I.2.1 Relationship to Local Real Time

media time base Mdocument processing context가 defined한 epoch E에서 expressed되는 local real time R과 다음과 같이 related된다:

TTML Semantics – Media Time and Real Time Relationship


R = playRate * M + epochOffset

여기서 M ∈ ℜ, 0 ≤ M < ∞이고, M은 seconds 단위이며, 0은 document temporal coordinate space의 beginning에 correspond한다;

playRate ∈ ℜ, −∞ < playRate < ∞이고, playRate는 unit-less이며, playRate의 value는 document processing context에 의해 결정되거나, 그렇게 결정되지 않으면 1.0 value이다;

그리고 epochOffset ∈ ℜ, 0 ≤ epochOffset < ∞이고, epochOffset은 seconds 단위이며, 0은 epoch E의 beginning에 correspond하고, epochOffset의 value는 document temporal coordinate space의 beginning에서의 local real time과 epoch E의 beginning에서의 local real time 사이의 difference를 seconds로 expressed한 것이다.

참고:

playRate의 value가 document processing context에 의해 결정되는 경우, 즉 default value 1.0으로 설정되지 않는 경우, 그 value는 document presentation 과정에서 real time으로 vary할 수 있으며, 이 경우 given values of M에 대한 R values는 playRate의 new values에 based하여 re-evaluated될 것으로 expected된다.

I.2.2 Relationship to Media Time

<time-expression>로 denoted되는 time value expressions는 ttp:frameRate, ttp:subFrameRate, 및 ttp:frameRateMultiplier parameters에 accordance하여 media time M과 다음과 같이 related된다:

TTML Semantics – Time Expressions and Media Time Relationship


time expression이 clock-time form 또는 ticks (t) metric을 사용하지 않는 offset-time form을 사용하면:

M = referenceBegin + 3600 * hours + 60 * minutes + seconds + ((frames + (subFrames / subFrameRate)) / effectiveFrameRate)

여기서 referenceBegin은 nearest ancestor time container가 parallel (par) 또는 sequential (seq) semantics를 employ하는지에 따라 결정된다: parallel인 경우, 또는 sequential이면서 prior sibling timed element가 존재하지 않는 경우, referenceBegin은 nearest ancestor time container의 beginning에 correspond하는 media time이거나, 이 time container가 root temporal extent이면 zero (0)이다; 그렇지 않고 sequential이며 prior sibling timed element가 존재하는 경우, referenceBegin은 immediately prior sibling timed element의 active end에 correspond하는 media time이다;

hours, minutes, seconds, frames, subFrames components는 present하면 time expression에서 extracted되고, present하지 않으면 zero이다. 또한 time expression이 clock-time expression의 form을 취하는 경우, fraction component가 present하면 seconds component에 added되어 real-valued seconds component를 형성한다. 또는 time expression이 offset-time expression의 form을 취하는 경우, fraction component가 present하면 specified offset metric에 따라 time-count component에 added되어 real-valued time count component를 형성한다;

subFrameRatettp:subFrameRate parameter의 computed value이다;

그리고 effectiveFrameRate (frames per second 단위)는 frameRate * frameRateMultiplier이며, 여기서 frameRatettp:frameRate parameter의 computed value이고, frameRateMultiplierttp:frameRateMultiplier parameter의 computed value이다.

그렇지 않고 time expression이 ticks (t) metric을 사용하는 offset-time form을 사용하면:

M = referenceBegin + ticks / tickRate

여기서 referenceBegin은 위에서 설명한 바와 같다;

ticks component는 time expression에서 extracted된다;

그리고 tickRatettp:tickRate parameter의 computed value이다;

참고:

computed frameRateMultiplier ratio가 integral이 아니면, effectiveFrameRate는 non-integral rational이 된다.

참고:

위의 formalisms는 document temporal coordinate space의 begin time이 related media object의 begin time과 related된다고 assume한다. 이 assumption이 hold하지 않으면, difference를 account하는 additional offset이 media time M을 computing할 때 introduced될 수 있다.

I.2.3 Relationship to Document Time

이 sub-section은 non-normative이다.

ttp:timeBase="media"일 때 computed document times는 offset 없이 equivalent media times로 사용된다.

참고:

예를 들어 wrapper format에 의해 imposed되는 any additional media time processing은 TTML specification의 scope에서 벗어난다.

예를 들어 [ISOBMFF TT]는 segmented 및 non-segmented files에서 TTML documents를 samples로 wrapping하기 위한 mechanism을 제공하고, [MPEG DASH]는 HTTP 및 MPEG-2 TS를 통한 fragmented delivery를 위한 further segmentation semantics를 제공한다.

다음 document fragments는 timing에서 equivalent하다:

Example Fragment – Media Timing 1
<tt ttp:timeBase="media" ...>
...
<body>
   <div xml:id="d1" begin="1s">
      <p xml:id="p1" begin="0s" end="1s">First paragraph</p>
      <p xml:id="p2" begin="2s" end="3s">Second paragraph</p>
   </div>
</body>
</tt>

Example Fragment – Media Timing 2
<tt ttp:timeBase="media" ...>
...
<body>
   <div xml:id="d1">
      <p xml:id="p1" begin="1s" end="2s">First paragraph</p>
      <p xml:id="p2" begin="3s" end="4s">Second paragraph</p>
   </div>
</body>
</tt>

다른 external information이 없을 때 document times가 media times에 mapping되는 것을 보여 주는 timing diagram.
Media time

이 example에서 [SMIL 3.0]의 terminology를 사용하면, body element의 implicit duration은 computed duration과 identical하며, 이는 또한 Root Temporal Extent이다. 그러나 document processing context가 applicable media times의 range를 지정하면, 그것들은 resolved begin 및 end times를 limit하고 therefore Root Temporal Extent도 limit한다.

다음 example에서 processing context는 document가 active인 media time range가 1.5s부터 3.5s까지라고 정의하며, timed content가 이 두 times 모두에 present하므로 이것이 Root Temporal Extent를 정의한다.

processing context에 의해 media time range가 constrained될 때 document times가 media times에 mapping되는 것을 보여 주는 timing diagram.
Media time

gray background는 document processing context가 document를 inactive로 정의하는 periods를 indicate한다. document temporal coordinate space는 이 transformation의 영향을 받지 않는다.

document processing context가 media time range를 0-3s로 정의한다면 Root Temporal Extent는 p1에 의해 defined된 1s부터 2s까지가 되고, p2는 never shown된다.

I.3 SMPTE Time Base

smpte time base로 operating할 때, time expressions를 interpreting하기 위한 다음 semantics가 적용되며, 이는 <time-expression>로 정의되고 media time 및 local real time과의 relationship을 가진다.

ttp:markerMode parameter의 computed value가 discontinuous이면, time expressions와 media time M 또는 local real time R 사이에는 direct relationship이 없다. 이 경우 time expressions는 related media object에서 smpte time codes가 encountered될 때 document processing context에 의해 emitted되는 synchronization events(markers)를 refer한다.

그렇지 않고 ttp:markerMode parameter의 computed value가 continuous이면, time expressions와 local real time 및 media time 사이의 relationships는 여기서 SMPTE time base S라고 referred되는 synthetic smpte document syncbase의 terms로 아래에 described된다.

TTML Semantics – Time Expressions and SMPTE Time Relationship


S = (countedFrames - droppedFrames + (subFrames / subFrameRate)) / effectiveFrameRate

여기서

countedFrames = (3600 * hours + 60 * minutes + seconds) * frameRate + frames

hours, minutes, seconds, frames, subFrames components는 present하면 time expression에서 extracted되고, present하지 않으면 zero이다. 또한 time expression이 clock-time expression의 form을 취하는 경우, fraction component가 present하면 seconds component에 added되어 real-valued seconds component를 형성한다. 또는 time expression이 offset-time expression의 form을 취하는 경우, fraction component가 present하면 specified offset metric에 따라 time-count component에 added되어 real-valued time count component를 형성한다;

droppedFrames는 다음과 같이 computed된다:

1. dropModettp:dropMode parameter의 computed value라고 하자;

2. dropModedropNTSC이면, droppedFrames = (hours * 54 + minutes - floor(minutes/10)) * 2라고 하자;

3. 그렇지 않고 dropModedropPAL이면, droppedFrames = (hours * 27 + floor(minutes/2) - floor(minutes/20)) * 4라고 하자;

4. 그렇지 않으면 droppedFrames = 0이라고 하자;

frameRatettp:frameRate parameter의 computed value이다;

subFrameRatettp:subFrameRate parameter의 computed value이다;

그리고 effectiveFrameRate (frames per second 단위)는 frameRate * frameRateMultiplier이며, 여기서 frameRatettp:frameRate parameter의 computed value이고, frameRateMultiplierttp:frameRateMultiplier parameter의 computed value이다.

위에도 불구하고, time expression이 7.2.4 ttp:dropMode에 따라 dropped로 designated된 frame code를 포함하면, 그 time expression은 validation assessment purposes상 invalid로 간주되어야 한다.

참고:

smpte time base가 적용될 때 time expressions의 offset-time form과 fraction component 둘 다의 deprecation에 관해서는 <time-expression>를 참조하라.

SMPTE time base S는 media time base M와 다음과 같이 related된다:

TTML Semantics – SMPTE Time and Media Time Relationship


M = referenceBegin + S

여기서 referenceBegin은 nearest ancestor time container가 parallel (par) 또는 sequential (seq) semantics를 employ하는지에 따라 결정된다: parallel인 경우, 또는 sequential이면서 prior sibling timed element가 존재하지 않는 경우, referenceBegin은 nearest ancestor time container의 beginning에 correspond하는 SMPTE time이거나, 이 time container가 root temporal extent이면 zero (0)이다; 그렇지 않고 sequential이며 prior sibling timed element가 존재하는 경우, referenceBegin은 immediately prior sibling timed element의 active end에 correspond하는 SMPTE time이다;

위에 described된 derived media time base가 주어지면, media time base M는 local real time R과 위 I.2 Media Time Base에서 described된 대로 related된다.

J Intermediate Document Syntax

이 appendix는 normative이다.

이 appendix는 timed text intermediate document의 syntactic elements와 structure를 지정한다. ISD instance는 standalone document instance로 표현되거나, ISD Sequence instance로 표현되는 collection 안에 표현될 수 있다.

모든 ISD related vocabulary는 TTML ISD Namespace에 정의되며, 여기서는 http://www.w3.org/ns/ttml#isd로 정의되고, recommended prefix는 isd이다.

참고:

TTML ISD Namespace의 elements를 사용하는 것 외에도, ISD document instance는 일반적으로 5.1 Namespaces에 정의된 다른 TTML namespaces 중 하나 이상의 vocabulary를 포함한다.

TTML Intermediate Synchronic Document, 줄여서 ISD 또는 ISD instance는, source TTML document의 discrete하고 temporally non-overlapping interval, 즉 ISD interval을 represent하며, non-discrete animation을 제외하고 모든 content, styling, layout information은 해당 interval 내에서 static하게 유지된다. 특히, TTML document의 timing hierarchy는 flattened된 다음 temporally non-overlapping intervals로 sub-divided되며, 그러한 각 interval은 그 interval 내의 source TTML document의 static view를 정의하고, 그 static view는 ISD instance로 represented된다. TTML Intermediate Synchronic Document의 concrete standalone instance는 root document element로 isd:isd element를 지정해야 한다. Intermediate Synchronic Document의 instance가 Intermediate Synchronic Document Sequence instance 안에 포함되는 경우, ISD instance는 root isd:sequence element의 isd:isd child element로 represented된다.

참고:

ISD instance는 associated interval 내의 continuous animation을 denote하는 하나 이상의 animate elements를 포함할 수 있다. Continuously animated styles는 ISD interval boundaries를 가로질러 sub-divided되어, 그 step-wise concatenation이 intersecting ISD interval(s) 전체에 대해 equivalent한 continuous animation을 express하도록 한다.

TTML Intermediate Synchronic Document Sequence는 begin times에 따라 ordered된 temporally non-overlapping Intermediate Synchronic Document instances의 collection을 represent한다. TTML Intermediate Synchronic Document Sequence의 concrete instance는 root document element로 isd:sequence element를 지정해야 한다.

J.1 ISD Vocabulary

J.1.1 isd:sequence

isd:sequence element는 Intermediate Synchronic Document Sequence document의 root document element로 기능한다.

isd:sequence element는 children으로 zero or more ttm:metadata elements를 accept하고, 그 뒤에 zero or one ttp:profile element, 그 뒤에 zero or more isd:isd elements를 accept한다.

Child isd:isd elements는 그 begin time의 media time equivalent에 따라 ordered되어야 한다. 또한 임의의 두 child isd:isd elements의 temporal intervals는 (time에서) overlap해서는 안 된다.

XML Representation – Element Information Item: isd:sequence
<isd:sequence
  extent = xsd:string
  size = xsd:nonNegativeInteger
  version = xsd:positiveInteger
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {any attributes in the ISD Parameter Attribute Set}>
  Content: ttm:metadata*, ttp:profile?, isd:isd*
</isd:sequence>

extent attribute가 specified되면, 두 개의 pixel-valued <length> expressions로 구성되는 <extent> value syntax의 subset을 따라야 하며, 이 경우 specified value는 H.2 Resolution에서 정의된 root container region의 spatial extent를 express한다. 여기서 이 spatial extent는 child isd:isd element가 represented하는 각 constituent Intermediate Synchronic Document에 globally 적용된다.

size attribute가 specified되면, isd:isd child elements의 수에 corresponding하는 non-negative integer여야 한다. specified되지 않으면, size는 isd:sequence element가 terminated될 때까지 indefinite로 간주되어야 하며, terminated된 경우에는 inspection으로 size가 determined될 수 있다.

참고:

size attribute는 일반적으로 real time captioning의 경우 omitted될 것이다.

version attribute가 specified되면, ISD sequence document를 authoring하는 데 사용된 이 Intermediate Synchronic Document Syntax specification의 version에 corresponding하는 positive integer여야 한다. specified된 경우 numeric value는 two (2) 이상이어야 한다. specified되지 않으면 version은 two (2)와 같다고 간주되어야 한다. 이 Intermediate Synchronic Document Syntax specification과 associated된 version은 two (2)이다.

참고:

[TTML1] §9.3.2에서 referred되거나 implied된 ISD abstraction은 해당 specification에 의해 concretely defined되지 않았다. 여기서는 그 earlier abstraction과 다양한 (non-standardized) realizations에 대한 informal discussion을 위해 version one (1)을 reserve한다.

xml:lang attribute는 isd:sequence element에 specified되어야 한다. 그 value가 empty이면, Intermediate Synchronic Document Sequence 내의 content에 적용되는 default language가 없음을 signify한다. 그렇지 않으면 specified value는 각 constituent Intermediate Synchronic Document에 적용되는 default language를 denote한다.

J.2 ISD Parameter Attribute Set에 enumerated된 restricted parameter attribute set에서 하나 이상의 parameter properties가 specified될 수 있다. specified되면, 그것들은 각 constituent Intermediate Synchronic Document에 globally 적용된다.

Child ttp:profile element가 present하면, 해당 ttp:profile element는 다음 constraints를 satisfy해야 한다:

  • combine attribute가 specified되지 않는다;

  • designator attribute가 specified되지 않는다;

  • type attribute가 specified되지 않는다;

  • use attribute가 specified되지 않는다;

  • descendant element 중 ttp:profile element가 없다;

  • descendant ttp:feature element가 value prohibited를 가진 value attribute를 지정하지 않는다;

  • descendant ttp:extension element가 value prohibited를 가진 value attribute를 지정하지 않는다.

또한 그러한 child ttp:profile element는 externally referenced profile documents를 모두 fetched한 source TTML document의 combined processor profile과 equivalent한 profile을 지정해야 한다.

참고:

단일 ttp:profileisd:sequence에서 specified되는 것을 permit하는 intent는 document를 process하기 위해 충족되어야 하는 processor profile requirements를 declare하는 simplified mechanism을 제공하는 것이다(end-user override가 없는 경우).

J.1.2 isd:isd

isd:isd element는 (1) standalone Intermediate Synchronic Document의 root document element 또는 (2) Intermediate Synchronic Document Sequence document의 isd:sequence element의 child로 기능한다. 여기서 isd:isd element는 construct intermediate document procedure에 의해 생성된 각 intermediate synchronic document form, DOCinter 에 retained된 root tt element로부터 derived되어 이를 replaces한다.

isd:isd element는 children으로 zero or more ttm:metadata elements를 accept하고, 그 뒤에 zero or one ttp:profile element, 그 뒤에 zero or more isd:css elements, 그 뒤에 zero or more isd:region elements를 accept한다.

XML Representation – Element Information Item: isd:isd
<isd:isd
  begin = <time-expression>
  end = <time-expression> | "indefinite"
  extent = xsd:string
  version = xsd:positiveInteger
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {any attributes in the ISD Parameter Attribute Set}>
  Content: ttm:metadata*, ttp:profile?, isd:css*, isd:region*
</isd:isd>

begin attribute가 specified되어야 하며, 그 value는 <time-expression>offset-time form을 취해야 하고, 또한 s (seconds), f (frames), t (ticks)의 metric을 사용하도록 restricted되거나 metric을 omit할 수 있으며, 이 경우 s seconds가 implied된다. 이 begin time은 이 isd:isd element가 derived된 source TTML document의 document temporal coordinate space의 begin time으로부터의 offset으로 expressed된다.

end attribute도 similarly specified되어야 하며, 동일한 constraints가 적용된다. end attribute의 value가 <time-expression>의 form을 취하면, 이 end time은 이 isd:isd element가 derived된 source TTML document의 document temporal coordinate space의 begin time으로부터의 offset으로 expressed된다; 그렇지 않으면(value가 indefinite), temporal extent는 이 attribute가 encoded되는 시점에 known하지 않거나 temporal end point가 없다.

참고:

[SMIL 3.0]의 terminology로 expressed하면, 이러한 beginend attributes의 values는 document begin에 대한 active duration의 resolved begin 및 end times에 correspond한다.

extent attribute가 specified되면, 두 개의 pixel-valued <length> expressions로 구성되는 <extent> value syntax의 subset을 따라야 하며, 이 경우 specified value는 H.2 Resolution에서 정의된 root container region의 spatial extent를 express한다. 여기서 이 spatial extent는 이 isd:isd element가 represented하는 Intermediate Synchronic Document에 적용된다. 또한 이 isd:isd element가 Intermediate Synchronic Document Sequence document 안에 contained되는 경우, container isd:sequence element가 extent attribute를 지정하면, 이 isd:isd element는 extent attribute를 지정하지 않는 것이 좋으며, specified되는 경우 container isd:sequence element에 specified된 extent attribute의 value와 같아야 한다.

xml:lang attribute는 isd:isd element가 standalone Intermediate Synchronic Document document인 경우 해당 element에 specified되어야 한다; 그렇지 않으면 specified될 수 있으며, isd:isd element의 default language가 그 parent isd:sequence element의 default language와 다른 경우 specified되는 것이 좋다. 그 value가 empty이면, Intermediate Synchronic Document 내의 content에 적용되는 default language가 없음을 signify한다. 그렇지 않으면 specified value는 적용되는 default language를 denote한다.

version attribute는 isd:sequence element type의 same named attribute의 syntax와 semantics를 따른다. version attribute는 root document element가 아닌, 즉 isd:sequence element의 child element인 isd:isd element에 specified되어서는 안 된다.

Child ttp:profile element는 isd:isd element가 standalone Intermediate Synchronic Document document인 경우 present할 수 있으며, 이 경우 J.1.1 isd:sequence에 specified된 동일한 constraints와 semantics가 적용된다; 그렇지 않으면 standalone document가 아닌 경우 child ttp:profile element는 present해서는 안 된다.

J.1.3 isd:css

isd:css element는 동일한 computed styles set을 share하는 elements collection의 unique computed style set을 represent하는 데 사용된다. 특히, given Intermediate Synchronic Documentisd:region element로 selected and copied된 source TTML document의 각 element E에 대해, E의 computed style set, CSS(E)가 determined되고, 그 CSS(E)가 기존 isd:css element에 의해 already specified되지 않았으면, unique identifier가 assigned되고 new isd:css element로 instantiated된다.

isd:css element는 children으로 zero or more ttm:metadata elements를 accept한다.

XML Representation – Element Information Item: isd:css
<isd:css
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {any attributes in TT Style Namespaces}
  Content: ttm:metadata*
</isd:css>

isd:isd element의 임의의 isd:css child elements pair, S1S2에 대해, S1의 specified styles set은 S2의 specified styles set과 같아서는 안 된다. 두 specified styles set을 comparing하기 위해, styles는 canonical order로 placed된 다음 value equality에 대해 item by item으로 compared되어야 하며, 여기서 canonical order는 qualified attribute name order에 따른다. 각 qualified name은 tuple <namespace URL, local name>으로 구성되고, 이러한 tuples는 case-sensitive lexical string order로 component-wise compared된다.

J.1.4 isd:region

isd:region element는 layout and presentation region 및 그 region으로 selected된 content를 represent하는 데 사용되며, 그 content는 body element와 그 descendant content elements의 form을 취한다.

isd:region element는 children으로 zero or more ttm:metadata elements를 accept하고, 그 뒤에 zero or more animate elements, 그 뒤에 exactly one body element를 accept한다.

XML Representation – Element Information Item: isd:region
<isd:region
  style = IDREF
  ttm:role = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  Content: ttm:metadata*, animate*, body
</isd:region>

isd:region element가 represented하는 region의 computed style set이 region에 적용되는 initial style values set이 아니면, 해당 region의 computed style set을 specifying하는 isd:css element를 references하는 style attribute가 specified되어야 한다.

body element와 그 descendant elements에는 다음 constraints가 적용된다:

  • animate attribute가 specified되지 않는다;

  • begin attribute가 specified되지 않는다;

  • dur attribute가 specified되지 않는다;

  • end attribute가 specified되지 않는다;

  • region attribute가 specified되지 않는다;

  • timeContainer attribute가 specified되지 않는다;

  • TT Style Namespaces의 attribute가 specified되지 않는다;

  • set element가 present하지 않는다;

  • significant text node, 즉 #PCDATA context의 text node는 no other child를 포함하지 않는 span element 안에 contained되어야 한다.

또한 body element B와 그 각 descendant content elements C에 대해, B 또는 각 C의 computed style set이 its parent element의 computed style set과 equal하지 않으면, 해당 element, 즉 B 또는 C는 해당 element의 computed style set을 specifying하는 isd:css element를 references하는 style attribute를 specified해야 한다.

J.2 ISD Parameter Attribute Set

defined Parameter Attributes의 다음 subset은 위에 described된 대로 isd:sequence 또는 isd:isd element와 함께 사용할 수 있다:

J.3 ISD Interchange

Intermediate Synchronic Document Syntax를 employ하는 concrete document instance는 UTF-8 character encoding을 사용하여 well-formed [XML 1.0] document로 encoded되어야 한다. 또한 그러한 document는 root document element로 isd:sequence element 또는 isd:isd element를 지정해야 한다.

concrete ISD Sequence 또는 ISD instance로 구성된 resource가 interchanged되고, 그 resource의 content type을 identify하기 위해 media type이 사용되는 경우, media type application/ttml+xml을 사용하는 것이 좋으며, 이에 대해서는 [TTML1] Appendix C도 참조하라. 이 media type이 사용되는 경우, optional profile parameter는 specified되어서는 안 되며, specified되더라도 processor에 의해 ignored되어야 한다.

K References

이 appendix는 normative이다.

CSS3 Color
Tantek Çelik and Chris Lilley, CSS Color Module Level 3, W3C Recommendation, 07 June 2011. (참조: http://www.w3.org/TR/2011/REC-css3-color-20110607/.)
Data Encodings
S. Josefsson, The Base16, Base32, and Base64 Data Encodings, RFC 4648, October 2006, IETF. (참조: http://www.rfc-editor.org/rfc/rfc4648.txt.)
GPS
Global Positioning System, US Air Force. (참조: https://www.gps.gov/technical/.)
JLREQ
Richard Ishida et al., Requirements for Japanese Text Layout W3C Working Group Note, 3 April 2012. (참조: http://www.w3.org/TR/2012/NOTE-jlreq-20120403/.)
Media Queries
Florian Rivoal, Media Queries, W3C Recommendation, 19 June 2012. (참조: http://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619/.)
MIME
Ned Freed and Nathaniel Borenstein, Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, RFC 2045, November 1996, IETF. (참조: http://www.rfc-editor.org/rfc/rfc2045.txt.)
MIME Media Types
Ned Freed and Nathaniel Borenstein, Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, RFC 2046, November 1996, IETF. (참조: http://www.rfc-editor.org/rfc/rfc2046.txt.)
PNG
David Duce, Ed., Portable Network Graphics (PNG) Specification (Second Edition), W3C Recommendation, 10 November 2003. (참조: https://www.w3.org/TR/2003/REC-PNG-20031110/.)
RELAX NG
ISO/IEC 19757-2:2003, Information technology – Document Schema Definition Language (DSDL) – Part 2: Regular-grammar-based validation – RELAX NG, International Organization for Standardization (ISO).
Ruby
Masayasu Ishikawa et al., Ruby Annotation W3C Recommendation, 31 May 2001. (참조: http://www.w3.org/TR/2001/REC-ruby-20010531/.)
SMIL 3.0
Dick Bultermann, et al., Synchronized Multimedia Integration Language (SMIL 3.0), W3C Recommendation, 1 December 2008. (참조: http://www.w3.org/TR/2008/REC-SMIL3-20081201/.)
SMPTE ST 12-1
SMPTE ST 12-1:2014, Time and Control Code, SMPTE Standard.
SRGB
IEC 61966-2-1:1999/AMD1:2003, Multimedia systems and equipment – Colour measurement and management – Part 2-1: Colour management – Default RGB colour space – sRGB, International Electrotechnical Commission (IEC).
SVG 1.1
Erik Dahlström et al., Eds., Scalable Vector Graphics (SVG) 1.1 Second Edition, W3C Recommendation, 16 August 2011. (참조: http://www.w3.org/TR/2011/REC-SVG11-20110816/.)
TTML1
Glenn Adams and Pierre-Anthony Lemieux, Eds., Timed Text Markup Language 1 (TTML1) (Third Edition), W3C Recommendation, 08 November 2018. (참조: https://www.w3.org/TR/2018/REC-ttml1-20181108/.)
UAAG
Ian Jacobs, Jon Gunderson, and Eric Hansen, Eds., User Agent Accessibility Guidelines 1.0, W3C Recommendation, 17 December 2002. (참조: http://www.w3.org/TR/2002/REC-UAAG10-20021217/.)
UAX9
M. Davis, A. Lanin, and A. Glass, Unicode Bidirectional Algorithm, Unicode Consortium, 14 May 2017. (참조: http://www.unicode.org/reports/tr9/tr9-37.html.)
UAX14
Asmus Freytag, Line Breaking Properties, Unicode Consortium, 29 August 2005. (참조: http://www.unicode.org/reports/tr14/tr14-17.html.)
URI
T. Berner-Lee, R. Fielding, and L. Masinter, Uniform Resource Identifiers (URI): Generic Syntax, RFC 3986, January 2005, IETF. (참조: http://www.rfc-editor.org/rfc/rfc3986.txt.)
UTC
Recommendation TF.460-6, Standard-Frequency and Time-Signal Emissions, International Telecommunciations Union, Radio Sector (ITU-R).
UTR50
K. Ishii, Unicode Vertical Text Layout, Unicode Consortium, 23 November 2016. (참조: http://www.unicode.org/reports/tr50/tr50-17.html.)
WCAG
Ben Caldwell, et al., Eds., Web Content Accessibility Guidelines (WCAG) 2.0, W3C Recommendation, 11 December 2008. (참조: http://www.w3.org/TR/2008/REC-WCAG20-20081211/.)
XLink 1.1
Steve DeRose, et al. XML Linking Language (XLink) Version 1.1, W3C Recommendation, 06 May 2010. (참조: http://www.w3.org/TR/2010/REC-xlink11-20100506/.)
XML 1.0
Tim Bray, et al. Extensible Markup Language (XML) 1.0 (Fifth Edition), W3C Recommendation, 26 November 2008. (참조: http://www.w3.org/TR/2008/REC-xml-20081126/.)
XML Base
Jonathan Marsh and Richard Tobin, Eds., XML Base (Second Edition), W3C Recommendation, 28 January 2009. (참조: http://www.w3.org/TR/2009/REC-xmlbase-20090128/.)
XML ID
Jonathan Marsh, Daniel Veillard, Norman Walsh, Eds., xml:id Version 1.0, W3C Recommendation, 09 September 2005. (참조: http://www.w3.org/TR/2005/REC-xml-id-20050909/.)
XML InfoSet
John Cowan and Richard Tobin, Eds., XML Information Set (Second Edition), W3C Recommendation, 04 February 2004. (참조: http://www.w3.org/TR/2004/REC-xml-infoset-20040204/.)
XML Media Types
Makato Murata, Simon St. Laurent, Kan Khon, Eds., XML Media Types, RFC 3023, January 2001, IETF. (참조: http://www.rfc-editor.org/rfc/rfc3023.txt.)
XML Namespaces 1.0
Tim Bray, et al. Namespaces in XML 1.0 (Third Edition), W3C Recommendation, 8 December 2009. (참조: http://www.w3.org/TR/2009/REC-xml-names-20091208/.)
XML 1.1
Tim Bray, et al. Extensible Markup Language (XML) 1.1 (Second Edition), W3C Recommendation, 16 August 2006, edited in place 29 September 2006. (참조: http://www.w3.org/TR/2006/REC-xml11-20060816/.)
XML Schema Part 1
Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, Eds., XML Schema Part 1: Structures, W3C Recommendation, 28 October 2004. (참조: https://www.w3.org/TR/2004/REC-xmlschema-1-20041028/.)
XML Schema Part 2
Paul Biron and Ashok Malhotra, XML Schema Part 2: Datatypes, W3C Recommendation, 28 October 2004. (참조: https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/.)
XSL-FO 1.1
Anders Berglund, Extensible Stylesheet Language (XSL) Version 1.1, W3C Recommendation, 05 December 2006. (참조: http://www.w3.org/TR/2006/REC-xsl11-20061205/.)

L Other References (Non-Normative)

CC-DECODER-REQ
Closed Caption Decoder Requirements for Analog Television Receivers, United States Code of Federal Regulations, Title 47, Volume 1, Part 79, §79.101. (참조: http://www.gpo.gov/fdsys/pkg/CFR-2012-title47-vol4/pdf/CFR-2012-title47-vol4-sec79-101.pdf.)
CLREQ
Bobby Tung et al., Requirements for Chinese Text Layout, W3C Working Draft, 29 December 2017. (참조: https://www.w3.org/TR/2017/WD-clreq-20171229/.)
CSS2
Bert Bos et al., Cascading Style Sheets, Level 2 Revision 1, W3C Recommendation, 07 June 2011. (참조: http://www.w3.org/TR/2011/REC-CSS2-20110607/.)
CSS Backgrounds and Borders
Bert Bos, Elika Etamad and Brad Kemper, CSS Backgrounds and Borders Module Level 3, W3C Candidate Recommendation, 17 October 2017. (참조: https://www.w3.org/TR/2017/CR-css-backgrounds-3-20171017/.)
CSS Box Model
Bert Bos, Anton Prowse, CSS3 Basic Box Model, W3C Working Draft, 09 August 2018. (참조: https://www.w3.org/TR/2018/WD-css-box-3-20180809/.)
CSS Flex
Tab Atkins, Elika Etemad, and Rossen Atanassov, CSS Flexible Box Layout Module Level 1, W3C Candidate Recommendation, 19 October 2017. (참조: https://www.w3.org/TR/2017/CR-css-flexbox-1-20171019/.)
CSS Fonts
John Daggett, Myles Maxfield, and Chris Lilley, CSS Fonts Module Level 3, W3C Recommendation, 20 September 2018. (참조: https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/.)
CSS Fragmentation
Rossen Atanassov and Elika Etemad, CSS Fragmentation Module Level 3, W3C Candidate Recommendation, 09 February 2017. (참조: https://www.w3.org/TR/2017/CR-css-break-3-20170209/.)
CSS Ruby
Elika Etemad and Koji Ishii, CSS Ruby Layout Module Level 1, W3C Working Draft, 05 August 2014. (참조: https://www.w3.org/TR/2014/WD-css-ruby-1-20140805/.)
CSS Text
Elika Etamad and Koji Ishii, CSS Text Module Level 3, W3C Working Draft, 20 September 2018. (참조: https://www.w3.org/TR/2018/WD-css-text-3-20180920/.)
CSS Text Decoration
Elika Etamad and Koji Ishii, CSS Text Decoration Module Level 3, W3C Candidate Recommendation, 03 July 2018. (참조: https://www.w3.org/TR/2018/CR-css-text-decor-3-20180703/.)
CSS Transforms
Simon Fraser, Dean Jackson, Theresa O'Connor, and Dirk Schulze, CSS Transforms Module Level 1, W3C Working Draft, 30 November 2017. (참조: https://www.w3.org/TR/2017/WD-css-transforms-1-20171130/.)
CSS Writing Modes
Elika Etamad and Koji Ishii, CSS Writing Modes Level 3, W3C Candidate Recommendation, 24 May 2018. (참조: https://www.w3.org/TR/2018/CR-css-writing-modes-3-20180524/.)
CTA-608-E
EIA/CTA-608-E, Line 21 Data Services, EIA/CTA Standard, Consumer Technology Association (CTA).
CTA-708-E
CTA-708-D, Digital Television (DTV) Closed Captioning, CTA Standard, Consumer Technology Association (CTA).
Data Scheme
L. Masinter, The "data" URL Scheme, RFC 2397, August 1998, IETF. (참조: http://www.rfc-editor.org/rfc/rfc2397.txt.)
DCMES 1.1
Dublin Core Metadata Initiative, Dublin Core Metadata Element Set, Version 1.1: Reference Description. (참조: http://dublincore.org/documents/dces/.)
EBU-TT-D
EBU Tech 3380, EBU-TT-D Subtitling Distribution Format, Version 1.0, European Broadcasting Union (EBU), March 2015. (참조: https://tech.ebu.ch/publications/tech3380.)
EBU-TT-Live
EBU Tech 3370, EBU-TT Part 3 Live Subtitling Applications, Version 1.0, European Broadcasting Union (EBU), May 2017. (참조: https://tech.ebu.ch/publications/tech3370.)
DVBSS
ETSI EN 300 743, Digital Video Broadcasting (DVB); Subtitling systems, Version 1.5.1, ETSI, January 2014. (참조: https://www.etsi.org/deliver/etsi_en/300700_300799/300743/01.05.01_60/en_300743v010501p.pdf.)
HTML 5.2
Steve Faulkner, Arron Eicholz, Travis Leithead, Alex Danilo, and Sangwhan Moon, Eds., HTML 5.2, W3C Recommendation, 14 December 2017. (참조: https://www.w3.org/TR/html52/.)
ISOBMFF TT
ISO/IEC 14496-30, Information technology – Coding of audio-visual objects – Part 30: Timed text and other visual overlays in ISO base media file format, International Organization for Standardization (ISO).
ITU BT.2100-1
Recommendation ITU-R BT.2100-1, Image parameter values for high dynamic range television for use in production and international programme exchange
MPEG DASH
ISO/IEC 23009-1, Information technology – Dynamic adaptive streaming over HTTP (DASH), International Organization for Standardization (ISO).
MPEG7-5
ISO/IEC 15938-5, Information technology – Multimedia content description interface – Part 5: Multimedia description schemes, International Organization for Standardization (ISO).
NSOriginal
Tim Bray, et al. Namespaces in XML, W3C Recommendation, 14 January 1999. (참조: http://www.w3.org/TR/1999/REC-xml-names-19990114/.)
NSState
Norman Walsh, Ed., The Disposition of Names in an XML Namespace, TAG Finding, 9 January 2006. (참조: http://www.w3.org/2001/tag/doc/namespaceState-2006-01-09.)
OFF
ISO/IEC 14496-22, Information technology – Coding of audio-visual objects – Part 22: Open Font Format, International Organization for Standardization (ISO).

참고:

이 specification의 publicly available하고 free of charge인 version에 대해서는 http://standards.iso.org/ittf/PubliclyAvailableStandards/c066391_ISO_IEC_14496-22_2015.zip을 참조하라. related OpenType Specification의 Microsoft version에 대해서는 https://docs.microsoft.com/en-us/typography/opentype/spec/을 참조하라. OpenType은 Microsoft Corporation의 registered trademark이다.

PQ PNG
Pierre-Anthony Lemieux, Using the ITU BT.2100 PQ EOTF with the PNG Format, W3C Working Group Note, 11 September 2017. (참조: https://www.w3.org/TR/png-hdr-pq/.)
QAF SG
Karl Dubost, et al., QA Framework: Specifications Guidelines, W3C Recommendation, 17 August 2005. (참조: http://www.w3.org/TR/qaframe-spec/.)
SDP US
Glenn Adams, Monica Martin, Sean Hayes, TTML Simple Delivery Profile for Closed Captions (US), W3C WG Note, 5 February 2013. (참조: http://www.w3.org/TR/2013/NOTE-ttml10-sdp-us-20130205/.)
SMITH
Smith, Michael D.; Malia, Jason, Controlling Miniaturization in Stereoscopic 3D Imagery, in Motion Imaging Journal, SMPTE , vol.124, no.3, pp.50-58, April 2015 doi: 10.5594/m001513.
SMPTE RP 2052-11:2013
SMPTE RP 2052-11:2013, Conversion from CTA-708 Caption Data to SMPTE-TT, SMPTE Recommended Practice.
SMPTE ST 170
SMPTE ST 170:2004, Television – Composite Analog Video Signal – NTSC for Studio Applications, SMPTE Standard.
SMPTE ST 2052-1
SMPTE ST 2052-1:2013, Timed Text Format (SMPTE-TT), SMPTE Standard.
SSML 1.0
Daniel Burnett, et al., Speech Synthesis Markup Language (SSML) Version 1.0, W3C Recommendation, 7 September 2004. (참조: http://www.w3.org/TR/2004/REC-speech-synthesis-20040907/.)
TTAF1-REQ
Glenn Adams, Ed., Timed Text (TT) Authoring Format 1.0 Use Cases and Requirements, W3C Working Group Note, 27 April 2006. (참조: http://www.w3.org/TR/2006/NOTE-ttaf1-req-20060427/.)
WEBAUDIO
Paul Adenot, Raymond Toy, Eds., Web Web Audio API, W3C Candidate Recommendation, 18 September 2018. (참조: https://www.w3.org/TR/2018/CR-webaudio-20180918/.)
XHTML 1.0
Steven Pemberton, et al., XHTML™ 1.0, The Extensible Hypertext Markup Language (Second Edition), W3C Recommendation, 01 August 2002. (참조: http://www.w3.org/TR/2002/REC-xhtml1-20020801/.)
XML Guidelines
Scott Hollenbeck, et al., Guidelines for the use of Extensible Markup Language (XML) within IETF Protocols, RFC 3470, January 2003, IETF. (참조: http://www.rfc-editor.org/rfc/rfc3470.txt.)
XYZ
ISO 11664-1:2007, Joint ISO/CIE Standard: Colorimetry Part 1. CIE Standard Colorimetric Observers, International Organization for Standardization (ISO). (참조: https://www.iso.org/standard/52495.html.)
XPROC
Norman Walsh, Alex Milowski, Henry S. Thompson, Eds., XProc: An XML Pipeline Language, W3C Recommendation, 11 May 2010. (참조: https://www.w3.org/TR/xproc/.)
XSLT3
XSL Transformations (XSLT) Version 3.0, Michael Kay, Ed., W3C Recommendation 8 June 2017. (참조: https://www.w3.org/TR/xslt-30/.)

M Requirements (Non-Normative)

Distribution Format Exchange Profile (DFXP) of the Timed Text Authoring Format (TTAF)로도 알려진 Timed Text Markup Language (TTML)는 [TTAF1-REQ]가 established한 requirements의 subset을 satisfy한다. 다음 table은 이러한 requirements를 enumerate하고 이 specification에 의해 어느 정도 satisfied되는지 indicate하며, 여기서 S는 requirement가 satisfied됨을, P는 requirement가 partially satisfied됨을, N은 requirement가 not satisfied됨을 denote한다.

Table M-1 – Requirement Satisfaction
ID Name Status Comments
R100 Specification Format S
R101 Specification Modularity S
R102 Specification Organization S
R103 Core and Periphery S TT extension namespaces
R104 Evolution of Core S TT extension namespaces
R105 Ownership of Core S TT Namespaces
R106 Surjection of Core S
R107 Evolution of Periphery S TT extension namespaces
R108 Ownership of Periphery S Non-TT Namespaces
R109 Transformation S 3GPP, QText, RealText, SAMI를 support함
R110 Streamable Transformation S Progressive decoding
R111 Accessibility – Content S Alternative document instances
R112 Accessibility – Authoring System S
R200 Authorability S
R201 Multiple Natural Languages S Alternative document instances
R202 Natural Language Coverage S Unicode 4.0
R203 Natural Language Association Granularity S xml:lang 참조
R204 Minimum Character Representability S Unicode 4.0
R205 Intrinsic and Extrinsic Text Content P Intrinsic only
R206 Markup Association P Intrinsic only
R207 Conditional Content S condition 참조
R208 Flowed Text S
R209 Logical Flowed Text Vocabulary S
R210 Presentational Flowed Text Vocabulary S logical flowed text로부터 implied mapping.
R211 Flowed Text Vocabulary Relationship S
R212 Flowed Text Vocabulary Separation N
R213 Non-Flowed Text N
R214 Non-Flowed Text Vocabulary N
R215 Hybrid Flowed and Non-Flowed Text N
R216 Hyperlinking S xlink 참조
R217 Embedded Graphics P image 및 아래 Note 1 참조.
R218 Non-Embedded Graphics S image 참조
R219 Embedded Fonts S font 참조
R220 Non-Embedded Fonts S font 참조
R221 Descriptive Vocabulary S ttm:agent, ttm:role 참조
R222 Embedded Audio S audio 참조
R223 Non-Embedded Audio S audio 참조
R290 Markup Format S
R291 Markup Format and Unicode Interaction S
R292 Extrinsic Resource References S xlink 참조
R293 Schema Validity Specification S
R300 Inline Styling S
R301 Inline Styling Form P Inline and referential styling
R302 Out-of-Line Styling N
R303 Out-of-Line Styling Form N
R304 Styling Prioritization S
R305 Style Parameters – Aural P tta:gain, tta:pan, tta:pitchtta:speak 참조.
R306 Style Parameters – Visual P 다음을 support함: absolute position, background color, bidirectional treatment, block progression dimension, border (before, after, start, end), color, display none, display inline block, display alignment, font family, font size, font style, font weight, height, inline progression dimension, line height, line wrapping option, opacity, origin, overflow, padding (before, after, start, end), relative position, text alignment, text decoration, text shadow, visibility, white space collapse, white space treatment, width, writing mode, z-index
R390 Style Parameter Symmetry S
R391 Style Parameter Definitions S
R392 Style Parameter Shorthands S
R401 Inline Timing S
R402 Out-of-Line Timing N
R403 Synchronization Parameters P begin, end, dur을 support함
R404 Synchronization Parameter Value Spaces P offset values, media marker values (SMPTE 12M), wall-clock values를 support함
R405 Time Containment Semantics P sequential, parallel을 support함
R500 Animation Modes S animate, animationset 참조
R501 Scroll Animation N
R502 Highlight Animation S <set tts:backgroundColor="..."/>
R503 Fade Transition Animation S <animate tts:opacity="..."/>
R504 Animated Style Parameters – Aural P <animate tta:pan="..."/> , also applied to tta:gain , tta:pitch and tta:speak
R505 Animated Style Parameters – Visual P 다음의 animation을 support함: background color, border color, color, display, opacity, origin, visibility
N506 Animated Content S
R600 Metadata Item Association S metadata, Metadata.class 참조
R601 Metadata Item Constituents P name, value를 support함
R602 Metadata Item Value Representation P metadata 참조
R603 Metadata Item Extensibility S metadatattm:item 참조
R604 Metadata Item Validation S metadata 참조
R690 Dublin Core Preference N ttm:copyright, ttm:desc, ttm:title 및 generic ttm:item을 사용함

참고:

  1. R217은 original text의 presence와 관련된 sub-requirement를 포함한다. 그러나 이 specification은 authorial usage에 restrictions를 두지 않으므로, 이 sub-requirement는 scope 밖으로 ruled out되었다.

N Vocabulary Derivation (Non-Normative)

이 appendix는 elements와 attributes의 derivation을 별도로 설명하면서, TTML vocabulary의 derivation에 대한 information을 제공한다.

N.1 Element Derivation

Table N-1 – Elements의 첫 번째 column은 TTML element vocabulary item을 지정하고, 두 번째 column은 그 vocabulary item이 based되는 syntactic 및/또는 semantic model을 지정하며, 세 번째 column은 그 model을 정의하는 reference를 지정한다 (model이 indicated된 경우); 네 번째 column은 derivation에 대한 details를 지정하고, 마지막 column은 derivation의 nature를 설명하는 additional notes를 참조한다.

derivation의 details를 설명하는 네 번째 column에서는, attribute의 addition 또는 removal을 indicate하기 위해 notation이 사용된다. 예를 들어 tt:div element의 derivation에서 details column에는 "-@class"가 포함되며, 이는 xhtml:div model element와 함께 사용하도록 specified된 class attribute가 corresponding TTML element와 함께 사용하도록 specified되지 않음을 denote한다. 반대로 details column에는 "+@begin"이 포함되며, 이는 xhtml:div model element와 함께 사용하도록 specified되지 않은 begin attribute가 added됨을 denote한다.

Table N-1 – Elements
Element Model Reference Details Notes
tt:animate svg:animate [SVG 1.1] -@* except begin, calcMode, dur, end, fill, keySplines, keyTimes, repeatCount; +style, +@tts:*, +@xml:id 3,6
tt:animation tt:styling [TTML1] conceptual derivation 4,12
tt:audio audio [HTML 5.2] -@accesskey, -@autoplay, -@class, -@contenteditable, -@controls, -@crossorigin, -@dir, -@draggable, -@hidden, -@id, -@lang, -@loop, -@muted, -@preload, -@spellcheck, -@tabindex, -@title, -@translate; +@animate, +@begin, +@clipBegin, +@clipEnd, +@condition, +@dur, +@end, +@format, +@style, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xml:id, +@xml:lang, +@xml:space 2,3
tt:body xhtml:body [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*; content model subsetted to zero or more division (div) children, and supersetted by optional metadata and animation children 1,2
tt:br xhtml:br [XHTML 1.0] -@class, -@title; +@ttm:*, +@tts:*, +@xml:lang, +@xml:space; content model supersetted by optional metadata and animation children for congruity with other content vocabulary 1,2
tt:chunk none [Data Scheme], [Data Encodings] conceptual derivation 4
tt:data none [Data Scheme], [Data Encodings] conceptual derivation 4
tt:div xhtml:div [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; content model subsetted to zero or more paragraph (p) children, and supersetted by optional metadata and animation children 1,2,3
tt:font none
tt:head xhtml:head [XHTML 1.0] -@dir, -@lang, -@profile; +@id, +@xml:space; content model changed to optional metadata children, followed by optional styling child, followed by optional layout child 1,3
tt:image img [HTML 5.2] -@accesskey, -@alt, -@class, -@contenteditable, -@crossorigin, -@dir, -@draggable, -@height, -@hidden, -@id, -@ismap, -@lang, -@longdesc -@referrerpolicy -@sizes, -@spellcheck, -@srcset, -@tabindex, -@title, -@translate; -@usemap, -@width; +@animate, +@begin, +@condition, +@dur, +@end, +@format, +@region, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xlink:href, +@xlink:role, +@xlink:show, +@xlink:title, +@xml:id, +@xml:lang, +@xml:space 2,3
tt:initial none
tt:layout fo:simple-page-master [XSL-FO 1.1] conceptual derivation 4
tt:metadata svg:metadata [SVG 1.1] +@ttm:*, +@xml:lang, +@xml:space; content model is not mixed (no #PCDATA) 3
tt:p xhtml:p [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; content model subsetted to zero or more span children, and supersetted by optional metadata and animation children 1,2,3
tt:region fo:region-* [XSL-FO 1.1] conceptual derivation 4
tt:resources svg:defs conceptual derivation 4
tt:set svg:set [SVG 1.1] -@* except begin, dur, end; +@tts:*, +@xml:lang, +@xml:space 3,6
tt:source source [HTML 5.2] -@media, @srcset, @sizes; +@condition, @format, @xml:space 3
tt:span xhtml:span [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; content model subsetted to zero or more #PCDATA or break (br) children, and supersetted by optional metadata and animation children 1,2,3
tt:style style specification [CSS2] XML representation of identified set of pairs of style property name and value, with optional inclusion of other styles by reference to other style elements 7
tt:styling xhtml:style [XHTML 1.0] XML representation of a set of style specifications sets, each represented by a style child element 1,7
tt:tt xhtml:html [XHTML 1.0] -@dir, -@lang; +@id, +@ttp:*, +@xml:space; content model subsetted by permitting body and/or head to be optional 1,8
ttm:actor mpeg7:Creator [MPEG7-5] conceptual derivation 4
ttm:agent mpeg7:Agent [MPEG7-5] conceptual derivation 4
ttm:copyright mpeg7:CopyrightString [MPEG7-5] conceptual derivation 4
ttm:desc svg:desc [SVG 1.1] -@class, -@style 2,9
ttm:item meta [HTML 5.2] conceptual derivation 4
ttm:name mpeg7:Name [MPEG7-5] conceptual derivation 4
ttm:title svg:title [SVG 1.1] -@class, -@style 2,9
ttp:extension @requiredExtensions [SVG 1.1] conceptual derivation 10
ttp:extensions @requiredExtensions [SVG 1.1] conceptual derivation 10
ttp:feature @requiredFeatures [SVG 1.1] conceptual derivation 10
ttp:features @requiredFeatures [SVG 1.1] conceptual derivation 10
ttp:profile @baseProfile [SVG 1.1] conceptual derivation 11

참고:

  1. Derivation은 [XHTML 1.0], §A.1에서 정의된 strict DTD에 대해 indicated된다.

  2. class attribute는 사실상 style attribute로 replaced되며, 이는 inline style을 specify하는 대신, style specification sets의 set을 정의하는 하나 이상의 style elements를 indirectly refers한다.

  3. xml:langxml:space attributes는 foreign namespace elements의 context에서 작동하는 inheritance semantics를 support하기 위해 모든 element types에 대해 정의된다.

  4. Derivation은 conceptual(notional) only이다.

  5. deleted

  6. svg:setattributeNameto attributes는 tts:* attribute를 사용하여 target attribute name과 value를 direct expression하는 것으로 replaced된다.

  7. CSS style specification syntax는 TT Style Namespace에 정의된 attributes를 사용하여 XML에 mapped된다.

  8. xml:id attribute는 모든 element types에서 사용하도록 정의된다.

  9. style attribute는 10.2.1 style에서 enumerated된 element types에서 supported된다.

  10. svg:svg element에서 @requiredExtensions@requiredFeatures를 사용하는 것에서 derived되지만, optionality의 distinct specification을 support하도록 extended된다.

  11. svg:svg element에서 @baseProfile@version을 사용하는 것에서 derived된다.

  12. 기존 tt:styling element로부터 conceptually derived되며, 이는 styling specifications를 위한 generic container이지만, animation specifications를 정의하는 데 사용된다.

N.2 Attribute Derivation

Table N-2 – Attributes의 첫 번째 column은 TTML attribute vocabulary item을 지정하고, 두 번째 column은 그 vocabulary item이 based되는 syntactic 및/또는 semantic model을 지정하며, 세 번째 column은 그 model을 정의하는 reference를 지정한다 (model이 indicated된 경우); 네 번째 column은 derivation에 대한 details를 지정하고, 마지막 column은 derivation의 nature를 설명하는 additional notes를 참조한다.

derivation의 details를 설명하는 네 번째 column에서는, attribute value의 addition 또는 removal을 indicate하기 위해 notation이 사용된다. 예를 들어 timeContainer attribute의 derivation에서 details column에는 "-excl"이 포함되며, 이는 timeContainer model attribute와 함께 사용하도록 specified된 excl value가 corresponding TTML attribute와 함께 사용하도록 specified되지 않음을 denote한다. 이와 유사하게 details column의 "+value"는 attribute의 values가 value를 포함하도록 extended되었음을 indicate한다.

둘 이상의 TTML element type에서 사용하도록 specified된 attributes만 아래에 listed된다. 특정 TTML element type에 대해 uniquely defined되는 per-element namespace attributes는 아래에 listed되지 않지만, 위 Table N-1 – Elements에 described된 specific element type의 derivation의 일부로 간주된다.

Style attribute derivations는 아래에 separately listed된다.

Table N-2 – Attributes
Attribute Model Reference Details Notes
begin begin [SMIL 3.0] see notes 1,2,3
dur dur [SMIL 3.0] see notes 1,2,3
end end [SMIL 3.0] see notes 1,2,3
region master-reference [XSL-FO 1.1] conceptual derivation
style class [CSS2] dereferences style specification(s) directly
timeContainer timeContainer [SMIL 3.0] -excl, -none; no default attribute value 4
ttm:agent none used to attribute agent of content
ttm:role none used to attribute role of content
ttp:cellResolution none expresses uniform grid resolution for cell based coordinates
ttp:clockMode none determines how to interpret time expressions
ttp:frameRate none expresses integral frame rate
ttp:frameRateMultiplier none used to express non-integral, rational frame rates
ttp:markerMode none expresses marker continuity semantics
ttp:pixelAspectRatio none expresses pixel aspect ratio of root container
ttp:profile none expresses profile of TTML used by a document instance
ttp:dropMode none expresses frame counting (drop) modes
ttp:subFrameRate none expresses sub-frame rate
ttp:tickRate none used to interpret tick based time expressions
ttp:timeBase none used to interpret semantics of time expressions
xml:id xml:id [XML ID] complies with model
xml:lang xml:lang [XML 1.0] complies with model
xml:space xml:space [XML 1.0] see notes 5

참고:

  1. ttp:timeBase attribute가 expressed하는 parameter가 각각 media, smpte, 또는 clock인지에 따라, 다음 중 하나를 denote하는 clock value를 expressing하는 것으로 restricted된다: (1) media time line에 linked된 implicit syncbase로부터의 offset, (2) implicit media marker의 occurrence를 나타내는 event time, 또는 (3) wall-clock time.

  2. [SMIL 3.0] Clock-value syntax를 syntactically subsets 및 supersets한다: (1) non-negative Full-clock-value 또는 Timecount-value를 require한다; (2) Full-clock-value인 경우 hours는 two or more digits여야 한다; (3) Timecount-value인 경우 metric이 specified되어야 한다; (4) minutes를 denote하기 위한 min metric의 alias로 m을 사용한다; (5) 각각 frames 및 ticks를 denote하는 ft metrics를 추가한다; (6) frame count 또는 frame count with subframe count를 specifying함으로써 Full-clock-value에서 optional Fraction의 alternative expression을 추가한다.

  3. time expression의 interpretation은 ttp:clockMode, ttp:dropMode, ttp:frameRate, ttp:frameRateMultiplier, ttp:markerMode, ttp:subFrameRate, ttp:tickRate, 및 ttp:timeBase attributes에 의해 expressed되는 parameters에 의해 further constrained된다.

  4. specified되지 않은 경우, parallel (par) container semantics가 12.2.4 timeContainer에서 specified된 element types에 적용된다.

  5. root element에서는 default attribute value가 default로 specified되며, 이는 whitespace normalization의 terms로 정의된다. preservation 및 default normalization의 semantics는 8.2.10 xml:space에 의해 presentation semantics의 terms로 정의된다.

N.2.1 Style Attribute derivation

이 section은 각 style attribute가 derived되었거나 equivalent로 간주될 수 있는 references와, referenced source에 relative한 differences를 listed한다. 이는 TTML style attributes를 equivalent CSS properties에 mapping하고, available한 경우 XSL properties에 mapping하기 위한 informative reference로 사용될 수 있다. 예를 들어 [SVG 1.1]에 대한 다른 mappings도 가능하다.

CSS equivalence는 각 Intermediate Synchronic Document가 stated style properties가 given된 elements를 가진 equivalent [HTML 5.2] DOM structure에 mapped된다고 assume한다.

참고:

TTML에서는 style attribute names 및 values가 lowerCamelCase naming convention을 사용하도록 normalized된다.

N.2.1.1 tts:backgroundClip
Reference [CSS Backgrounds and Borders], §3.7
Model background-clip
Values Values map directly.
Notes None
N.2.1.2 tts:backgroundColor
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.8.2 [CSS2], §14.2.1
Model background-color background-color
Values -inherit Values map directly
Notes model의 named colors subset을 사용하며, 여기에 다음과 같이 두 aliases가 added된다: magenta as fuchsia, and cyan as aqua. model의 named colors subset을 사용하며, 여기에 다음과 같이 두 aliases가 added된다: magenta as fuchsia, and cyan as aqua. named color orange는 supported되지 않는다.
N.2.1.3 tts:backgroundExtent
Reference [CSS Backgrounds and Borders], §3.9
Model background-size
Values Values map directly
Notes None
N.2.1.4 tts:backgroundImage
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.8.3 [CSS2], §14.2.1
Model background-image background-image
Values -inherit -inherit
Notes None None
N.2.1.5 tts:backgroundOrigin
Reference [CSS Backgrounds and Borders], §3.8
Model background-origin
Values Values map directly
Notes None
N.2.1.6 tts:backgroundPosition
Reference [CSS2], §14.2
Model background-position
Values Values map directly
Notes None
N.2.1.7 tts:backgroundRepeat
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.8.4 [CSS2], §14.2.1
Model background-repeat background-repeat
Values
  • -inherit,

  • repeatX maps to repeat-x,

  • repeatY maps to repeat-y,

  • noRepeat maps to no-repeat.

  • -inherit,

  • repeatX maps to repeat-x,

  • repeatY maps to repeat-y,

  • noRepeat maps to no-repeat.

Notes None None
N.2.1.8 tts:border
Reference [XSL-FO 1.1], §7.31.3, and [CSS Backgrounds and Borders], §4 and §5
Model border
Values -inherit
Notes None
N.2.1.9 tts:bpd
Reference [XSL-FO 1.1], §7.15.6 및 [CSS Box Model], §9에서 정의된 height property
Model insert model
Values Values map directly
Notes None
N.2.1.10 tts:color
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.18.1 [CSS2], §14.1
Model color color
Values -inherit -inherit
Notes model의 named colors subset을 사용하며, 여기에 다음과 같이 두 aliases가 added된다: magenta as fuchsia, and cyan as aqua. model의 named colors subset을 사용하며, 여기에 다음과 같이 두 aliases가 added된다: magenta as fuchsia, and cyan as aqua. named color orange는 supported되지 않는다.
N.2.1.11 tts:direction
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.29.1 [CSS Writing Modes], §2.1
Model direction direction
Values -inherit. Special inheritance semantics apply. Special inheritance semantics apply.
Notes None` None`
N.2.1.12 tts:disparity

No derivation, 즉 이 specification에서 introduced되었다.

참고:

tts:disparity의 computed value는 [DVBSS]에서 정의된 disparity shift value의 half와 equivalent하다.

N.2.1.13 tts:display
Reference [CSS2], §9.2.4
Model display
Values only auto, none
Notes None
N.2.1.14 tts:displayAlign
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.14.4 [CSS Flex], §8.2
Model display-align justify-content (아래 Notes 참조)
Values -inherit, +justify
  • before maps to flex-start

  • center maps to center

  • after maps to flex-end

  • justify maps to space-between

Notes None CSS는 다양한 layouts를 제공한다. tts:displayAlign attribute와 equivalent semantics를 제공하는 그러한 layout 중 하나가 여기에서 described된다:
  • flex layout을 사용하고, main axis를 vertical top to bottom으로 설정한다: display: flex; flex-direction: column; position: absolute;

  • tts:displayAlignjustify-content로 map한다.

N.2.1.15 tts:extent
Reference [XSL-FO 1.1], §7.15.6 and §7.15.14
Model width, height
Values Values map directly
Notes shorthand property
N.2.1.16 tts:fontFamily
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.9.2 [CSS2], §15.3
Model font-family font-family
Values -inherit. Subsets and extends generic family names -inherit. Subsets and extends generic family names
Notes CSS에서와 같이 list delimiters 주변에 white space를 포함할 수 있다. None
N.2.1.17 tts:fontKerning
Reference [CSS Fonts], §6.3
Model font-kerning
Values -auto
Notes None
N.2.1.18 tts:fontSelectionStrategy

Reference [XSL-FO 1.1], §7.9.3.
Model font-selection-strategy
Values -inherit, character maps to character-by-character
Selection criteria is expanded. None.
N.2.1.19 tts:fontShear
Reference [CSS Transforms], §9.1
Model skewX() and skewY() 2D transform functions
Values
  • skewX() applies when the inline progression dimension is the X axis;

  • skewY() applies when the inline progression dimension is the Y axis;

  • Percentage values는 degrees 단위의 angles로 mapped되어야 한다.

Notes similar transformation functions는 [SVG 1.1]에서도 available하다.
N.2.1.20 tts:fontSize
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.9.4. [CSS2], §15.7.
Model font-size font-size
Values -inherit, -<absolute-size>, -<relative-size>. -inherit, -<absolute-size>, -<relative-size>.
Notes
  • Special inheritance semantics apply.

  • size를 percentage일 수 있는 length specification으로 restrict한다;

  • glyph의 EM square에 대한 separate horizontal 및 vertical scaling을 specifying하기 위해 optional second length (or percentage)를 추가한다;

  • font width와 height를 independently specifying하는 것을 permit하기 위한 second length component의 addition은 TTML에서 introduced된 extension이다.

  • Special inheritance semantics apply.

  • size를 percentage일 수 있는 length specification으로 restrict한다;

  • glyph의 EM square에 대한 separate horizontal 및 vertical scaling을 specifying하기 위해 optional second length (or percentage)를 추가한다;

  • font width와 height를 independently specifying하는 것을 permit하기 위한 second length component의 addition은 TTML에서 introduced된 extension이다.

N.2.1.21 tts:fontStyle
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.9.7 [CSS2], §15.4
Model font-style font-style
Values -inherit, -backslant -inherit
Notes None None
N.2.1.22 tts:fontVariant
Reference [CSS Fonts], §6.11
Model font-variant-east-asian and font-variant-position and font-feature-settings
Values
  • font-variant-east-asian: Only full-width, ruby

  • font-variant-position: normal, sub, super

  • font-feature-settings: Only hwid

Notes None
N.2.1.23 tts:fontWeight
Reference [XSL-FO 1.1], §7.9.9 [CSS2], §15.6
Model font-weight font-weight
Values -inherit, -bolder, -lighter, -<number> -inherit, -initial, -bolder, -lighter, -<number>, -unset
Notes None None
N.2.1.24 tts:ipd
Reference [XSL-FO 1.1], §7.15.14 및 [CSS Box Model], §9에서 정의된 width property
Model insert model
Values insert values
Notes insert notes
N.2.1.25 tts:letterSpacing
Reference [CSS Text], §8.2
Model letter-spacing
Values Values map directly
Notes None
N.2.1.26 tts:lineHeight

line stacking semantic은 CSS line box stacking strategy와 match하도록 intended된다.

XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.16.4 [CSS2], §10.8
Model line-height line-height
Values -inherit, -<number>, -<space> -inherit, -<number>, -<space>, -calc, -initial, -unset
Notes line의 allocation rectangle이 [XSL-FO 1.1], §4.5에서 정의된 per-inline-height-rectangle와 consistent해야 한다는 것이 이 specification의 intention이다. 즉 CSS-style line box stacking strategy가 사용된다. None
N.2.1.27 tts:luminanceGain

No derivation, 즉 이 specification에서 introduced되었다.

N.2.1.28 tts:lineShear
Reference [CSS Transforms], §9.1
Model skewX() and skewY() 2D transform functions
Values
  • skewX() applies when the inline progression dimension is the X axis;

  • skewY() applies when the inline progression dimension is the Y axis;

  • Percentage values는 degrees 단위의 angles로 mapped되어야 한다.

Notes similar transformation functions는 [SVG 1.1]에서도 available하다.
N.2.1.29 tts:opacity
Reference [CSS3 Color], §3.2
Model opacity
Values -inherit
Notes None
N.2.1.30 tts:origin
Reference [XSL-FO 1.1]
Model top, left
Values Values map directly
Notes shorthand property
N.2.1.31 tts:overflow
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.21.2 [CSS2], §11.1.1
Model overflow overflow
Values -inherit, -auto, -error-if-overflow -inherit, -auto, -initial, -scroll, -unset
Notes None None
N.2.1.32 tts:padding
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.31.15 [CSS2], §8.4
Model padding padding
Values -inherit. Individual shorthand values map to writing mode relative padding values as defined by [XSL-FO 1.1], §7.8.31, 7.8.32, 7.8.33, and 7.8.34 -calc, -inherit, -unset
Notes absolute padding properties가 아니라 writing mode relative padding properties의 terms로 expressed된다. TTML 및 XSL edge descriptors는 [CSS Writing Modes], §6.2에서 정의된 abstract flow relative edge descriptors로 map된다:
  • before maps to block-start

  • end maps to inline-end

  • after maps to block-end

  • start maps to inline-start

그러한 abstract edge descriptors는 다시 [CSS Writing Modes] §6.4에서 정의된 physical edges로 mapped된다.
N.2.1.33 tts:position
Reference [CSS Backgrounds and Borders], §3.6
Model background-position
Values Values map directly
Notes None
N.2.1.34 tts:ruby
Reference [Ruby] and [CSS Ruby].
Model ruby-*
Values notes 및 specification text 참조.
Notes further information은 [JLREQ], §3.3도 참조하라. 또는 [HTML 5.2] ruby markup으로 mapped될 수도 있다.
N.2.1.35 tts:rubyAlign
Reference [CSS Ruby], §4.3
Model ruby-align
Values +end, +withBase. 이 style attribute의 semantics는 이 specification에 의해 extended된다.
Notes reference에 shown된 examples 및 example renderings가 apply된다.
N.2.1.36 tts:rubyPosition
Reference [CSS Ruby], §4.1
Model insert model
Values insert values
Notes reference에 shown된 examples 및 example renderings는 이 specification에서 정의된 mappings를 modulo하여 apply된다.
N.2.1.37 tts:rubyReserve

No derivation, 즉 이 specification에서 introduced되었다.

N.2.1.38 tts:shear
Reference [CSS Transforms], §9.1
Model skewX() and skewY() 2D transform functions
Values
  • skewX() applies when the inline progression dimension is the X axis;

  • skewY() applies when the inline progression dimension is the Y axis;

  • Percentage values는 degrees 단위의 angles로 mapped되어야 한다.

Notes similar transformation functions는 [SVG 1.1]에서도 available하다.
N.2.1.39 tts:showBackground
Reference [SMIL 3.0], §7.4.2
Model showBackground
Values -inherit
Notes None
N.2.1.40 tts:textAlign
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.16.9 [CSS2], §16.2
Model text-align text-align
Values -inherit -inherit, +start, +end
Notes text-align-last는 "relative"로 set되어야 한다 TTML은 writing mode dependent values startend를 추가하며, 이는 abstract flow-relative directions로 considered되고 [CSS Writing Modes] §6.4에 따라 physical directions로 mapped될 수 있다. further details는 tts:padding CSS derivation을 참조하라.
N.2.1.41 tts:textCombine
Reference [CSS Writing Modes], §9.1
Model text-combine-upright
Values Values map directly
Notes None
N.2.1.42 tts:textDecoration
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.17.4 [CSS2], §16.3.1
Model text-decoration text-decoration
Values -blink, -inherit (keyword), -no-blink -blink, -inherit (keyword), +noUnderline, +noLineThrough, +noOverline. lineThrough maps to line-through.
Notes Special inheritance semantics와 함께 inheritable로 정의된다. Special inheritance semantics apply. underlines의 position을 determining하기 위한 XSL semantic이 applies된다.
N.2.1.43 tts:textEmphasis
Reference [CSS Text Decoration], §3
Model
Values auto를 제외하고, values는 directly map된다. auto의 semantics는 writing mode dependent이다.
Notes None
N.2.1.44 tts:textOrientation
Reference [UTR50] and [CSS Writing Modes], §5.1
Model text-orientation
Values -inherit, -sideways-left, -sideways-right, -use-glyph-orientation
Notes None
N.2.1.45 tts:textOutline
Reference [XSL-FO 1.1]
Model text-shadow
Values -inherit (keyword), defined to be inheritable
Notes two가 아니라 one length specification만 사용하며, 여기서 one length는 glyph contour의 point에 perpendicular한 nominal edge of glyph contour outline으로부터 outline effect의 distance를 정의한다. Percentage lengths도 font size에 relative한 outline effect를 express하기 위해 추가된다. Outline effects는 outer closed contours의 outside와 inner closed contours의 inside 모두에 drawn되도록 intended된다.
N.2.1.46 tts:textShadow
Reference [CSS Text Decoration], §4
Model text-shadow
Values Values map directly
Notes None
N.2.1.47 tts:unicodeBidi
Reference [XSL-FO 1.1], §7.29.6 and [CSS Writing Modes], §2.2
Model unicode-bidi
Values -inherit,+isolate
Notes [CSS Writing Modes]isolate를 추가한다
N.2.1.48 tts:visibility
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.30.17 [CSS2], §11.2
Model visibility visibility
Values -inherit, -collapse -inherit, -collapse
Notes None None
N.2.1.49 tts:wrapOption
Reference [XSL-FO 1.1], §7.16.13
Model wrap-option
Values -inherit
Notes None
N.2.1.50 tts:writingMode
Reference [XSL-FO 1.1], §7.29.7
Model writing-mode
Values -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
Notes None
N.2.1.51 tts:zIndex
XSL derivation CSS derivation
Reference [XSL-FO 1.1], §7.30.18 [CSS2], §9.9.1
Model z-index z-index
Values -inherit -inherit
Notes None None

O QA Framework Compliance (Non-Normative)

이 appendix는 이 specification이 QA Framework Specifications Guidelines, [QAF SG]에서 정의된 requirements 및 guidelines를 준수하는 정도를 지정한다.

O.2 Guidelines

Table O-2 – QA Framework Guidelines Checklist
Guideline YES NO N/A Notes
Good Practice 01: specification의 conformance model을 conformance clause에서 정의한다. YES
Good Practice 02: normative content와 informative content를 distinguish하는 방법을 conformance clause에서 specify한다. YES
Good Practice 03: conformance claims를 위한 wording을 제공한다. YES
Good Practice 04: Implementation Conformance Statement Pro Forma를 제공한다. NO
Good Practice 05: valid conformance claims의 일부로 Implementation Conformance Statement를 require한다. YES
Good Practice 06: examples, use cases, 및 graphics를 제공한다. YES
Good Practice 07: sample code 또는 tests를 작성한다. YES
Good Practice 08: normative references로 requirements를 impose할 때, conformance dependencies를 address한다. YES 1
Good Practice 09: unfamiliar terms를 in-line으로 정의하고 definitions를 glossary section에 consolidate한다. YES
Good Practice 10: 이미 정의된 terms를 그 definition을 변경하지 않고 사용한다. YES 2
Good Practice 11: 가능할 때 formal languages를 사용한다. YES
Good Practice 12: Test Assertions를 작성한다. NO 3
Good Practice 13: warranted될 때 technology의 subdivisions를 생성한다. YES
Good Practice 14: technology가 profiled된 경우, new profiles를 생성하기 위한 rules를 define한다. YES
Good Practice 15: warranted될 때 optional features를 사용한다. YES
Good Practice 16: optional features를 clearly identify한다. YES
Good Practice 17: optional features에 대한 limitations 또는 constraints를 indicate한다. YES
Good Practice 18: extensibility가 allowed되는 경우, extension mechanism을 define한다. YES
Good Practice 19: extension creators에게 conformance를 interfere하지 않는 extensions를 create하도록 warn한다. YES
Good Practice 20: unknown extensions에 대한 error-handling을 define한다. YES 4
Good Practice 21: deprecated feature를 사용하지 않는 방법을 explain한다. YES
Good Practice 22: obsolete features를 identify한다. N/A 5
Good Practice 23: error handling mechanism을 define한다. YES

참고:

  1. external specifications에 normative references를 만들 때, specific clauses 또는 sections가 cited된다.

  2. N Vocabulary Derivation도 참조하라.

  3. Test assertions 및 test suites는 Proposed Recommendation (PR) phase에 들어가기 전에 제공될 것이다.

  4. 3.2 Processor Conformance의 criterion #3과 TTML Abstract Document Instance의 definition을 참조하라.

  5. TTML의 이 version에서는 어떤 feature도 obsoleted되지 않는다.

P Security and Privacy Considerations (Non-Normative)

P.1 Use of XML as Concrete Encoding

[XML 1.0]timed text document instance의 concrete encoding으로 사용되는 경우, [XML Media Types][XML Guidelines]에서 specified된 security considerations가 적용된다.

참고:

XML entities는 timed text document instancereduced xml infoset에 포함되지 않는다. nevertheless, implementations는 TTML processor에서 recursive entity expansion에 대한 protection을 제공하거나 entity expansion을 altogether prevent하도록 encouraged된다.

P.2 Document Processing

timed text document instancecontent processor에 의해 어떤 manner로 process되도록 intended된다. 이 specification은 그러한 processor가 timed text document instance를 conformant하게 processing하는 meaning을 정의하지만, 해당 processor의 actual implementation은 이 specification의 scope 밖에 있다.

P.3 Resource Fetching

이 specification은 timed text document instance가 audio, font, image 및 untyped(generic) data resources를 포함한 external resources를 reference할 수 있게 하는 mechanism을 정의한다. 그러한 resources의 fetching 및 timed text document instance의 concrete representation의 fetching은 content processor의 full control 아래에 있다. 따라서 그러한 resources에 대한 access를 allow하거나 restrict하도록 designed된 controls 역시 이 specification의 scope 밖에 있다.

external resources를 fetching할 때, content processors는 a potentially CORS-enabled request[HTML 5.2]에서 정의된 대로 needed한지 determine해야 한다.

그러한 resources의 fetching이 content processor에 의해 prevented되면, entire document 또는 document의 portions가 intended된 대로 processed되지 않을 수 있으며, therefore document의 일부 또는 전체 content가 presentation processing에 available하지 않을 수 있다.

media playback 중 external resources를 download하는 user agent는 resource의 origin server에 user's media consumption의 progress를 indicate한다. 많은 경우 그러한 media progress information은 다른 mechanisms를 통해, 예를 들어 scripting 또는 streaming media requests를 monitoring함으로써 media의 origin server에 available하다.

external resources를 downloading할 때 cross origin policies를 enforce하지 않는 user agents는 media를 serving하는 web site의 consent 없이, 그리고 user의 consent 없이 그러한 media progress information 및 potentially other user tracking information을 other origins에 expose한다. 이 specification은 APIs를 정의하지 않으며, implementations가 referenced resources를 어떻게 obtain할 것으로 expected되는지에 대해 statement를 하지 않는다.

P.4 Caching of Resources or Processing State

여기에서 정의된 timed text document instance의 processing은 content processor가 어떤 resource 또는 processing state를 caching하거나 storing하는 것에 대해 어떤 방식으로도 specify하거나 depend하지 않는다.

P.5 No Script Language

이 specification은 어떤 script language 또는 executable code의 processing도 include하거나 reference하지 않는다.

P.6 No External Style Sheets

이 specification은 어떤 external style sheet 또는 style specification의 processing도 include하거나 reference하지 않는다. rather, 모든 style information은 TTML document syntax에 directly integrated되며, 이 syntax의 reduced xml infoset respresentation의 terms로 processed된다.

P.7 Access to Processing State

conditional expressions가 user language preference, related media language, forced captions가 enabled인지 여부, 그리고 media query expression이 satisfied되는지 여부를 포함한 certain processing state를 고려할 수 있는 content의 conditional processing을 allow하는 mechanism이 여기에서 정의된다. 그러나 이 state에 대한 direct access는 TTML content에 제공되지 않는다. rather the content processor가 이 state에 access하고 condition이 satisfied되는지 여부에 대해 binary(yes or no) determination을 한다.

P.8 Hyperlinking Mechanisms

[XLink 1.1]에 based된 mechanism이 여기에서 정의되며, 이는 author가 content를 external documents와 associate할 수 있도록 permit한다. 이 mechanism에 대한 semantic support가 content processor에 의해 제공되는지 여부는 이 specification의 scope 밖에서 이루어지는 determination이다. Furthermore, link activation의 semantics도 supported되는 경우 likewise 이 specification의 scope 밖에 있다.

P.9 Privacy of Preference

timed text document instance를 select하고 download 또는 interpret하게 하는 user agent는 origin server에 user가 captions 또는 subtitles를 필요로 한다는 것을 indicate할 수 있으며, therefore captions 또는 subtitles를 fetching하기 위한 user의 language preference를 indicate할 수 있다. 이 language preference는 user에 대한 information을 constitute한다. 그러나 timed text document instance를 offering하는 것과 이를 retrieve하고 process할지 선택하는 것은 offer를 만드는 application(예: [HTML 5.2]에 based한 web application)의 characteristics이지, Document Instance 자체의 characteristics가 아니다.

Q High Dynamic Range Compositing (Non-Normative)

이 appendix는 [SRGB] pixels가 high dynamic range (HDR) pixels 위에 composited될 수 있는 방법을 illustrate한다.

Q.1 Perceptual Quantizer

다음은 perceptual quantizer (PQ) EOTF 및 full-range quantization을 사용하여 [ITU BT.2100-1]에 specified된 system colorimetry를 conform하는 HDR pixels 위에 tts:luminanceGain을 사용하여 [SRGB] pixels를 composite하는 것을 illustrate한다.

  1. (r, g, b)를 opacity가 0과 1 사이인 full-range 8-bit [SRGB] pixel이라고 하자.

  2. (R, G, B)(Rc, Gc, Bc)를 PQ EOTF 및 full-range quantization을 사용하여 [ITU BT.2100-1]에 specified된 system colorimetry의 full-range 10-bit pixels라고 하며, opacity AAc는 0과 1 사이이다.

  3. 8-bit full-range quantization을 invert한다:

    (r, g, b) / 255 → (r, g, b)

  4. [SRGB] EOTF를 사용하여 linearize한다:

    (r2.4, g2.4, b2.4) → (r, g, b)

  5. tts:luminanceGain attribute와 [SRGB] illuminant를 사용하여 HDR absolute luminance를 compute한다:

    80 ∙ tts:luminanceGain ∙ (r, g, b) → (r, g, b)

  6. [SRGB] color space에서 [ITU BT.2100-1] color space로 convert한다:

    [(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로 normalize한다:

    (r, g, b) / 10000 → (r, g, b)

  8. [ITU BT.2100-1]에 specified된 inverse PQ EOTF를 apply한다:

    (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. opacity를 apply한다:

    (1-a) ∙ (r, g, b) → (r, g, b)

  10. 10-bit full-range quantization을 apply한다:

    (Q(r), Q(g), Q(b)) → (r, g, b)

    여기서 Q(N) = floor(1023 ∙ N + 0.5)

  11. composition을 apply하여 (Rc, Gc, Bc)를 yield한다:

    (clamp(r + R), clamp(g + G), clamp(b + B)) → (Rc, Gc, Bc)

    1 + (1 - a) ∙ (A - 1) → Ac

    where

    clamp(x) = 0 for x < 0

    and

    clamp(x) = x for 0 ≤ x ≤ 1023

    and

    clamp(x) = 1023 for x > 1023

Q.2 Hybrid Log-Gamma HDR

다음은 [SRGB] pixels를 Hybrid Log-Gamma (HLG) HDR pixels 위에 compositing하는 것을 illustrate한다.

  1. (r, g, b)를 0과 255 사이의 opacity A를 가진 full-range 8-bit [SRGB] pixel이라고 하자.

  2. (R,G,B)(Rc,Gc,Bc)를 HLG EOTF 및 narrow-range quantization을 사용하여 [ITU BT.2100-1]에 specified된 system colorimetry의 narrow-range 10-bit pixels라고 하자. Subscript c는 post-compositing video signal을 denote한다.

  3. (X,Y,Z)를 CIE 1931 XYZ colour space [XYZ]에 specified된 system colorimetry의 pixels라고 하자.

  4. 8-bit full-range quantization을 invert한다:

    (r, g, b)/255 → (r, g, b)

    A/255 → A

  5. [SRGB] EOTF를 사용하여 linearize한다:

    (r2.0,g2.0,b2.0) → (r,g,b)

  6. [SRGB] color space에서 [ITU BT.2100-1] color space로 convert한다:

    [(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. simplified inverse HLG OOTF를 apply한다:

    ((0.265r),(0.265g),(0.265b)) → (r,g,b)

  8. [ITU BT.2100-1]에 specified된 HLG OETF를 apply한다:

    (HLG(r),HLG(g),HLG(b)) → (r,g,b)

    where

    HLG(x) = (3x)0.5 for 0 ≤ x ≤ 1/12

    and

    HLG(x) = a•ln(12x−b)+c for x > 1/12,

    and a = 0.17883277 and b = 1−4a and c = 0.5−a•ln(4a)

  9. 10-bit narrow-range quantization을 apply한다:

    (Q(r),Q(g),Q(b)) → (r,g,b)

    where Q(x) = floor((940 − 64) • x + 64.5)

  10. foreground graphic (r,g,b)를 opacity A로 background video (R,G,B) 위에 composite하여 (Rc,Gc,Bc)를 yield한다:

    ((A•r+(1−A)R),(A•g+(1−A)G),(A•b+(1−A)B)) → (Rc,Gc,Bc)

  11. output을 10-bit signal range로 clamp한다:

    (clamp(Rc),clamp(Gc),clamp(Bc)) → (Rc,Gc,Bc)

    where

    clamp(x) = 0 for x < 0

    and

    clamp(x) = x for 0 ≤ x ≤ 1023

    and

    clamp(x) = 1023 for x > 1023

참고:

위 algorithm은 HLG HDR에는 absolute gain level이 필요하지 않기 때문에 tts:luminanceGain attribute를 사용하지 않는다. Rather, 이 algorithm은 peak [SRGB] white를 HLG의 "graphics white"로 map하며, 이는 [ITU BT.2100-1]에 정의된 narrow range signal의 75%로 정의된다.

참고:

gamma index 2.0은 [SRGB]에 specified된 gamma 2.2와 intentionally 다르다. 해당 specification의 value 2.2는 그 안에 specified된 viewing environment에 specific하며, 해당 conditions에 대한 psychovisual rendering adjustment를 포함한다. 이 adjustment는 display rendering을 exclude하는 HLG signal에는 required되지 않는다.

R Streaming TTML Content (Non-Normative)

TTML Content는 streaming scenarios에서 useful할 수 있는 다음 characteristics를 meet하도록 authored될 수 있다:

R.1 Root and Branch Fragmentation

TTML Content가 streamed될 수 있는 한 possible means는 document instance의 information set을 non-overlapping fragments로 partition하는 것이다. 여기서 하나의 particular fragment, 즉 root fragment라고 부르는 것은 document instance의 front matter(head)와 top level structural elements를 represent하고, other fragments는 time intervals가 parallel로 active될 것으로 expected되는 content를 represent한다.

stream에 arbitrary(random) entry가 필요한 applications, 즉 arbitrary data access unit에서 data를 reading하기 시작할 수 있는 property가 필요한 경우, decoder가 resynchronize하고 subsequent content fragments를 interpret하기에 sufficient한 structural information을 information set에서 acquire하도록 permit하기 위해 root fragment가 stream에 repetitively transmitted(inserted)된다.

그러한 document instance의 fragmentation example은 Figure 2 – Fragment Streaming에 shown된다.

Figure 2 – Fragment Streaming
Fragment Streaming

참고:

이 specification은 transport buffer model 또는 decoder capabilities model을 정의하지 않는다.

R.2 Temporal Fragmentation

TTML Content가 streamed될 수 있는 another means는 document instance의 information set을 temporally bound fragments로 partition하는 것이다. 각 fragment는 itself document instance이며, 이를 present하기 위해 required되는 모든 front matter(head) 및 content를 포함하고, 각 fragment의 temporal interval은 document interchange context 또는 document processing context 또는 둘 다에 의해 constrained되어, other fragments와의 temporal overlaps가 resolved된다.

예를 들어, 어떤 document processing contexts는 timeline의 어느 moment에도 maximum one document instance만 active할 수 있다고 specifying하고, additionally multiple candidates가 있는 경우 그것이 어떤 document instance인지 establish하기 위한 precedence rules를 specify하여 temporal overlap을 resolve한다.

모든 content가 correctly displayed되도록 ensure하기 위해, interval이 more than one fragmentation interval과 overlap하는 ISD에 속하는 any content는 해당 ISD를 generate하기 위해 required되는 각 fragment 내에서 duplicated될 필요가 있을 수 있다. implementations가 intervals를 제외하고 identical한 adjacent ISDs를 identify하고, 이를 combined interval을 covering하는 single ISD로 replace하는 것이 가능하다.

이 approach의 intent는 presentation processors가 non-streamed version의 document instance에 의해 generated될 sequence와 equivalent한 ISDs sequence를 generate할 수 있게 하면서, segment duration을 varying함으로써 some controllable amount of front matter를 duplicating하지 않는 ability를 take advantage하도록 하는 것이다. original source의 reconstruction이 identical document instance를 result하는 것은 guaranteed되지 않는다.

참고:

이 technique은 예를 들어 [ISOBMFF TT][EBU-TT-Live]에서 사용된다.

그러한 document instance의 fragmentation example은 Figure 3 – Temporal Fragmentation에 shown된다.

Figure 3 – Temporal Fragmentation
Temporal Fragmentation

참고:

위 example에서 single document instance는 T1부터 T6까지의 intervals 동안 visible한 content를 가지고 있으며, two document instances(segments)로 fragmented된다. first는 T1 through T3 동안 required되는 모든 content 및 referenced styles and regions를 포함하고, second는 T4 through T6 동안 required되는 모든 content 및 referenced styles and regions를 포함한다.

R.3 ISD Streaming

document instancetimed text intermediate document instances의 sequence로 transform하고, 이를 discrete entities로 stream하는 것이 가능하다.

이 technique은 client processing requirements를 minimise하지만, all relevant front matter가 적용되는 every ISD에 duplicated될 것을 require한다. original source의 reconstruction이 identical document instance를 result하는 것은 guaranteed되지 않는다.

S Common Caption Style Examples (Non-Normative)

이 section은 desired behavior를 obtain하기 위해 TTML Content를 사용하는 다음 common caption styles의 examples를 제공한다:

S.1 Pop-On Caption Example

paint-on captions의 example이다. 이 example에서는 two regions가 alternating, paint-on content로 targeted되며, content는 explicit sequential time containment rules를 사용하여 timed된다. 각 paragraph는 time에서 non-overlapping이고, targeted region의 same single row에 appears한다.

Example – Pop-On Captions
<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 Roll-Up Caption Example

roll-up captions의 example이다. Roll-up effects는 overlapped time intervals를 사용하여 achieved되며, 여기서 given time에 zero, one, 또는 two paragraphs가 region에 appear한다. wrapping이 발생하지 않으므로 각 paragraph는 region의 single row(line)를 consume한다. presentation processorsmooth scrolling between adjacent synchronic intermediate document instances를 support하는지 여부에 따라, transitions, 즉 old paragraph(line)를 out하고 new paragraph(line)를 in하는 것은 smooth 또는 discrete가 된다.

Example – Roll-Up Captions
<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 Paint-On Caption Example

paint-on captions의 example이다. Paint-on effects는 inline text units, 예: words를 어떤 time interval 동안 expose(paint)하기 위해 timed span elements를 사용함으로써 achieved된다. 여기서는 five paragraphs의 individual words가 every second마다 one new word를 paint하도록 sequentially timed된다. 각 inline element의 active duration의 end는 div element의 parallel time container의 end와 coincides하므로, word가 once painted되면 div element의 active time interval이 lapses할 때까지 region(its rendered line)에 남아 있다.

Example – Paint-On Captions
<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 Options for Presentation Customisation (Non-Normative)

이 section은 document authors 및 implementers가 any given document instance의 presentation을 customise하기 위해 available한 options의 high level summary를 제공한다.

이 context에서 customisation은 specified presentation behaviour의 modification임에 유의하라. 이 section은 font rasterisation algorithms와 같은 unspecified presentation behaviour가 implemented될 수 있는 ways를 enumerate하려는 것이 아니다.

T.1 Customisation Using Condition

condition attribute는 document author가 authoring time에 known한 input parameters에 based하여 intended presentation을 modify할 수 있게 한다. 예를 들어 closed system에서는 content에 적용되는 styling을 modify하는 데 사용될 수 있는 text-size parameter에 대한 pre-defined enumerated values가 있을 수 있다. 또는 media function이 media query에 based하여 applicable regions의 position 및 extent를 modify하는 데 사용될 수 있다. [Media Queries]를 참조하라.

T.2 Customisation Using Pre-processor

presentation 전에 document instance를 modify하기 위해 pre-processing techniques를 apply하는 것이 가능하다. 예를 들어 [XPROC] pipeline의 context에서 perhaps [XSLT3]를 사용하여, style attributes의 initial values 또는 inherited되는 root element style attributes를 modify할 수 있다. 이러한 pre-processing은 이 specification의 scope 밖에 있으며, 단 such pre-processor가 transformation processor의 instance로 간주되는 한에서만 예외이다.

T.3 Customisation by Breaking Presentation Conformance

이 specification은 가능한 extent까지 presentation processor conformance requirements를 define하려고 attempt하지만, 이는 any implementation이 appropriate하다고 deemed되는 경우 그러한 conformance에서 deliberately diverge하는 것을 preclude하지 않는다. 예를 들어 presentation processor는 presented text와 video playback controls 같은 other visual indicators 사이의 positional clashes를 identify하고, affected TTML region을 temporarily moving하여 이를 resolve할 수 있다. 또는 presentation processor는 unexpected line breaks를 introducing하지 않으면서 presented font size를 reduce하는 options를 user에게 offer할 수 있다.

By definition, 그러한 any non-conformance는 이 specification의 scope 밖에 있다.

U Changes to Vocabulary from TTML1 (Non-Normative)

이 section은 Timed Text Markup Language (TTML) Version 1 (TTML1)과 Version 2 (TTML2) 사이의 vocabulary changes에 대한 high level summary를 제공한다. 이 summary가 exhaustive하도록 하는 것은 intent가 아니다. changes에 대한 more details는 Timed Text Markup Language 2 (TTML2) Change Summary를 참조하라.

U.1 New Element Vocabulary

New element vocabulary는 아래에 further described된 대로 이 specification의 다음 sections에 added되었다:

U.1.1 Animation Vocabulary

다음 elements는 animation functionality에 대한 support를 enhance하기 위해 added되었다:

tt:animate

one or more temporally contiguous active time intervals 내에서 및 이를 across하여 continuous animation을 support한다.

tt:animation

header matter에서 out-of-line animation directives의 grouping을 support한다.

U.1.2 Embedded Content Vocabulary

다음 elements는 embedded content 및 content references를 support하기 위해 added되었다:

tt:audio

built-in, embedded, 및 external audio resources의 사용을 support한다.

tt:chunk

audio, data, font, 및 image resources를 embedding할 때 chunking의 사용을 support하며, 여기서 chunking은 resource content를 contiguous data segments(chunks)로 subdividing하는 것을 refer한다.

tt:data

built-in, embedded, 및 external data resources의 사용을 support한다.

tt:font

built-in, embedded, 및 external font resources의 사용을 support한다.

tt:image

built-in, embedded, 및 external image resources의 사용을 support한다.

tt:resources

header matter에서 sharable embedded content 및 content references의 grouping을 support한다.

tt:source

embedded content 및 content references의 alternative sources를 support한다.

U.1.3 Metadata Vocabulary

다음 element는 metadata functionality를 expand하기 위해 added되었다:

ttm:item

named metadata items의 extensible collection을 support한다.

참고:

이 feature는 name과 value로 구성되는 metadata items에 대해 additional new vocabulary를 defining하지 않으려는 desire에 motivated된다. 여기서 generic, named metadata item element는 그러한 items의 unbounded collection을 defining하기 위한 future needs를 serve할 수 있다.

U.1.4 Styling Vocabulary

다음 element는 styling functionality를 expand하기 위해 added되었다:

tt:initial

style properties에 대해 author specified initial values를 support한다.

참고:

이 feature는 multiple requirements에 motivated되며, 여기에는 (1) 이 specification이 implementation dependent로 정의하는 inherited style properties의 certain initial values에 대해 fixed, determinate value를 specify할 수 있는 것이 desirable하다는 것, 예: tts:color의 initial value, 및 (2) certain non-inherited style properties에 대해 각 case마다 explicit하게 style value를 specify하도록 forced되는 것보다 initial value를 override할 수 있는 것이 desirable하다는 것, 예: tts:showBackground에 대한 whenActive의 initial value가 default initial value always 대신 preferred될 수 있음이 포함된다.

U.2 New Attribute Vocabulary

New attribute vocabulary는 아래에 further described된 대로 이 specification의 다음 sections에 added되었다:

U.2.1 Animation Attributes

다음 attribute는 animation functionality를 expand하기 위해 added되었다:

U.2.2 Content Attributes

다음 attributes는 content functionality를 expand하기 위해 added되었다:

U.2.3 Parameter Attributes

다음 attributes는 parameter functionality를 expand하기 위해 added되었다:

U.2.6 Styling Attributes for Audio

다음 attributes는 audio styling functionality를 expand하기 위해 added되었다:

V Acknowledgments (Non-Normative)

editors는 Timed Text Working Group의 current 및 former members, other W3C Working Groups의 members, 그리고 이 document의 process 또는 content에 directly 또는 indirectly contribute한 other forums의 industry experts를 다음과 같이 acknowledge한다:

Thomas Bause-Mason, John Birch, Kees Blom, Bert Bos, Brad Botkin, Dick Bulterman, Cyril Concolato, Frans de Jong, Mike Dolan, Martin Dürst, Donald Evans, Geoff Freed, Al Gilman, Giles Godart-Brown, Markus Gylling, Markku Hakkinen, Sean Hayes, Erik Hodge, Philipp Hoschka, Suzi Hyun, Richard Ishida, Michael Jordan, Masahiko Kaneko, Courtney Kennedy, George Kerscher, Dae Kim, David Kirby, Andrew Kirkpatrick, Philippe Le Hégaret, Pierre-Anthony Lemieux, Chris Lilley, Jason Livingston, Monica Martin, Matthew May, Nigel Megitt, Thierry Michel, Frank Olivier, Soohong Daniel Park, Silvia Pfeiffer, Addison Phillips, Stefan Pöschel, Rohit Puri, Brian Raymor, David Ronca, Patrick Schmitz, David Singer, Craig Smithpeters, Andreas Tai, and Mohamed Zergaoui.

editors는 current 및 past members의 다음 contributions를 especially acknowledge하고자 한다: Mike Dolan (SMPTE time codes, streaming; SMPTE liaison), David Kirby (introductory example document; SMPTE time codes, descriptive metadata; EBU/AAF liaison), Geoff Freed (styling and example images of style properties), Sean Hayes (advanced profile concepts, including applicative timing, HTML/CSS mapping proposal), Erik Hodge (timing), Thierry Michel (metadata), and Dave Singer (animation, scrolling).

editors는 또한 이 specification에 대한 their work의 following current 및 past sponsors의 support를 acknowledge하고자 한다: Cox Communications, Microsoft, Netflix, and Samsung Electronics.

Working Group은 이 specification을 our colleague David Kirby에게 dedicates한다.