W3C

시간 지정 텍스트 마크업 언어 2 (TTML2) (제2판)

W3C 후보 권고안 스냅샷 2021년 3월 9일

이 버전:
https://www.w3.org/TR/2021/CR-ttml2-20210309/
최신 버전:
https://www.w3.org/TR/ttml2/
이전 버전:
https://www.w3.org/TR/2020/CR-ttml2-20200128/
구현 보고서:
https://www.w3.org/wiki/TimedText/TTML2SecondEditionImplementationReport
편집자:
Glenn Adams, 초청 전문가
Cyril Concolato, Netflix
기여 저자:
Glenn Adams, 초청 전문가
Cyril Concolato, Netflix
Mike Dolan, 초청 전문가
Sean Hayes, Microsoft
Frans de Jong, 유럽 방송 연맹
Dae Kim, Netflix
Pierre-Anthony Lemieux, MovieLabs
Nigel Megitt, 영국 방송 공사
Dave Singer, Apple Computer
Jerry Smith, Microsoft
Andreas Tai, Institut für Rundfunktechnik GmbH
참여:
GitHub w3c/ttml2
버그 신고
커밋 기록
풀 리퀘스트

이 문서의 정오표를 참조하시기 바랍니다. 여기에는 규범적 수정 사항이 포함될 수 있습니다.


개요

본 문서는 TTML2 (2e)라고도 하는 시간 지정 텍스트 마크업 언어(TTML) 버전 2의 제2판을 어휘와 그 의미론의 관점에서 명세합니다.

시간 지정 텍스트 마크업 언어는 저작 시스템 간의 교환을 목적으로 시간 지정 텍스트 미디어를 표현하는 콘텐츠 유형입니다. 시간 지정 텍스트는 시간 정보와 내재적 또는 외재적으로 연관된 텍스트 정보입니다.

현재 자막 및 캡션 기능에 사용 중인 기존 배포 콘텐츠 형식 간에 시간 지정 텍스트 정보를 트랜스코딩하거나 교환하는 용도로 사용하기 위한 것입니다.

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

이 문서의 상태

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

본 문서는 시간 지정 텍스트 마크업 언어 2 (TTML2) 제2판의 두 번째 후보 권고안 (CR2)이며, 권고 제안안 단계로의 진행은 2021년 4월 6일보다 이르지는 않을 것으로 예상됩니다. 이 두 번째 후보 권고안 (CR2)은 앞선 첫 번째 후보 권고안 (CR1)에 기술적 변경을 가하지 않았으며, 편집상(비실질적) 변경만 적용되었습니다.

이 명세가 CR 단계를 마치려면 다음 기준을 충족해야 합니다: 이 명세에서 도입한 실질적 변경의 영향을 받는 각 기능(확장)에 대해, 최소한 두 개의 독립적인 구현이 해당 영향을 받은 기능(확장)을 지원해야 합니다. 이 개정판에서는 (기반) 기능(확장)이 추가되거나 제거되지 않았으므로, 제외 가능성이 있는 것으로 표시된 기능 (확장)은 없습니다.

구현 보고서가 제공됩니다. TTML2 제1판 이후의 기술적 변경 사항 요약은 시간 지정 텍스트 마크업 언어 2 (TTML2) 변경 사항 요약에서 확인하실 수 있습니다. 이 문서에 대한 의견은 GitHub 이슈를 등록하거나 public-tt@w3.org로 이메일을 보내 주시기 바랍니다. (구독, 보관함) 이메일 제목은 [ttml2]로 시작해야 합니다.

본 문서는 시간 지정 텍스트(TT) 작업 그룹이 후보 권고안 스냅샷으로 발행했습니다.

후보 권고안으로 발행되었다고 해서 W3C 회원의 승인을 의미하지는 않습니다. 후보 권고안 스냅샷은 광범위한 검토를 거쳤으며 구현 경험을 수집하기 위한 것입니다.

본 문서는 W3C 특허 정책에 따라 운영되는 그룹이 작성했습니다. W3C는 공개된 특허 공개 목록을 유지하며, 이 목록에는 그룹의 산출물과 관련된 모든 특허 공개가 포함됩니다; 해당 페이지에는 특허를 공개하는 방법에 대한 안내도 포함되어 있습니다. 자신이 실제로 알고 있는 특허가 필수 청구항을 포함한다고 판단하는 개인은 해당 정보를 W3C 특허 정책 제6절에 따라 공개해야 합니다.

본 문서에는 2020년 9월 15일자 W3C 프로세스 문서가 적용됩니다.

1 소개

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

TTML2라고도 하는 시간 지정 텍스트 마크업 언어(TTML) 버전 2는 텍스트 정보의 특정 부분집합을 표준화된 방식으로 표현하며, 저작자 또는 저작 시스템은 교환 및 처리를 목적으로 이 정보에 스타일, 레이아웃 및 타이밍 의미론을 연결합니다.

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

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

참고:

TTML은 HTML 또는 SMIL 문서 인스턴스에 직접 통합(임베딩)하도록 명시적으로 설계되지는 않았지만, 이러한 통합을 배제하지는 않습니다.

참고:

일부 사용 맥락에서는 애니메이션 콘텐츠를 사용하여 시간 지정 텍스트와 동일한 콘텐츠를 수화로 표현하는 것이 적절할 수 있습니다. 해당 콘텐츠는 시간 지정 텍스트 문서 인스턴스로 표현됩니다. 이 사용 사례는 TTML 메커니즘에서 명시적으로 다루지 않지만, SMIL과 같은 외부 멀티미디어 통합 기술로 다룰 수 있습니다.

참고:

이 명세의 이전 초안에서는 TTML을 DFXP(배포 형식 교환 프로파일)라고 불렀습니다. 이 용어는 역사적인 이유로 프로파일 이름 및 지정자와 같은 특정 맥락에서 유지됩니다.

1.1 시스템 모델

TTML은 시간 지정 텍스트의 저작, 트랜스코딩, 배포 및 표시 메커니즘이라는 더 넓은 맥락에서 작동하도록 의도되었으며, 이 메커니즘은 그림 1 – 시스템 모델에 나타낸 시스템 모델을 기반으로 합니다. 이 모델에서 시간 지정 텍스트 마크업 언어는 서로 다른 저작 시스템 간의 양방향 교환 형식으로 사용되며, 다양한 배포 형식으로의 단방향 교환 형식으로도 사용됩니다. 이때 필요에 따라 대상 배포 형식으로 트랜스코딩하거나 컴파일하며, 이러한 배포 형식 중 하나가 TTML 콘텐츠 문서입니다.

두 가지 처리기 부류를 설명합니다. 저작 시스템과 유효성 검사 처리기는 변환 처리기의 예이고, 트랜스코딩 시스템과 렌더링 처리기는 표시 처리기의 예입니다. TTML 프로파일 문서를 TTML 콘텐츠 문서나 처리기에 연결하면, 각각 사용 가능하거나 금지되거나 필수인 기능을 표현할 수 있습니다. 이를 통해 저작부터 표시까지 이어지는 처리 사슬의 제약 조건을 형식 언어로 표현할 수 있습니다.

처리기는 TTML 중간 문서로의 정의된 매핑을 구현할 수 있습니다. 시스템 모델에는 이러한 문서를 다시 HTML 및 CSS 조각으로 매핑하는 렌더링 처리기가 나타나 있으며, 이 조각을 [HTML] 문서에 삽입하여 사용자 에이전트가 표시할 수 있습니다.

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

1.2 문서 예제

다음 절에서는 TTML 문서 인스턴스의 간단한 예제를 설명합니다:

1.2.1 단일 영역 예제

TTML 문서 인스턴스는 tt 문서 요소로 구성되며, 이 요소에는 헤더와 본문이 포함됩니다. 헤더는 문서 수준의 메타데이터, 스타일 정의 및 레이아웃 정의를 지정하고, 본문은 텍스트 콘텐츠와 함께 스타일 및 레이아웃 정보에 대한 참조, 인라인 스타일 및 타이밍 정보를 지정합니다.

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

문서 수준의 메타데이터에는 문서 제목, 설명 및 저작권 정보를 지정할 수 있습니다. 또한 다른 네임스페이스의 임의의 메타데이터를 지정할 수 있습니다.

예제 조각 – TTML 메타데이터
<metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
  <ttm:title>시간 지정 텍스트 TTML 예제</ttm:title>
  <ttm:copyright>저자 (c) 2006</ttm:copyright>
</metadata>

스타일 정보는 레이아웃 및 콘텐츠 정보에서 참조하는 스타일 명세 정의의 형태로 지정하거나, 콘텐츠 정보에 인라인으로 지정하거나, 두 방식을 함께 사용할 수 있습니다.

예제 조각 – TTML 스타일 지정에서는 네 개의 스타일 명세 집합을 정의하며, 그중 하나는 기본 스타일 모음으로 사용됩니다.

예제 조각 – TTML 스타일 지정
<styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <!-- s1은 기본 색상, 글꼴 및 텍스트 정렬을 지정합니다 -->
  <style xml:id="s1"
    tts:color="white"
    tts:fontFamily="proportionalSansSerif"
    tts:fontSize="22px"
    tts:textAlign="center"
  />
  <!-- 노란색 텍스트를 사용하지만 그 외에는 스타일 s1과 동일한 대안입니다 -->
  <style xml:id="s2" style="s1" tts:color="yellow"/>
  <!-- s1을 기반으로 하지만 오른쪽으로 정렬한 스타일입니다 -->
  <style xml:id="s1Right" style="s1" tts:textAlign="end" />     
  <!-- s2를 기반으로 하지만 왼쪽으로 정렬한 스타일입니다 -->
  <style xml:id="s2Left" style="s2" tts:textAlign="start" />
</styling>

레이아웃 정보는 콘텐츠를 표시할 하나 이상의 영역을 정의합니다 — 여기서는 단일 영역을 정의합니다. 영역 정의는 하나 이상의 스타일 명세 집합을 참조하여 해당 영역으로 흐르는 콘텐츠가 이러한 스타일을 상속하도록 할 수 있습니다. 예제 조각 – TTML 레이아웃에서 영역 정의는 스타일 명세 s1을 참조하고 이를 특정 인라인 스타일로 보완합니다. 이들을 함께 사용하면 영역으로 흐르는 콘텐츠가 해당 영역의 스타일을 상속할 수 있습니다(스타일이 콘텐츠에 이미 명시적으로 지정되어 있지 않고 콘텐츠 계층을 통해 상속되지도 않은 경우).

예제 조각 – 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">
      역설처럼 보이지 않습니까,
    </p>
    <p xml:id="subtitle2" begin="5.0s" end="10.0s">
      망막에 맺히는 상이<br/>
      거꾸로 되어 있다는 것은요?
    </p>
    <p xml:id="subtitle3" begin="10.0s" end="16.0s" style="s2">
      이상하지요, 어째서 우리는<br/>
      사물을 거꾸로 보지 않는 걸까요?
    </p>
    <p xml:id="subtitle4" begin="17.2s" end="23.0s">
      그렇다면 뇌도 거꾸로 되어 있다는<br/>
      이론을 들어 보신 적이 없군요?
    </p>
    <p xml:id="subtitle5" begin="23.0s" end="27.0s" style="s2">
      정말 없습니다! 참으로 아름다운 사실이군요!
    </p>
    <p xml:id="subtitle6a" begin="28.0s" end="34.6s" style="s2Left">
      그런데 그것은 어떻게 증명하나요?
    </p>
    <p xml:id="subtitle6b" begin="28.0s" end="34.6s" style="s1Right">
      이렇습니다: 우리가 부르는
    </p>
    <p xml:id="subtitle7" begin="34.6s" end="45.0s" style="s1Right">
      뇌의 꼭대기는<br/>
      사실 그 바닥이고
    </p>
    <p xml:id="subtitle8" begin="45.0s" end="52.0s" style="s1Right">
      우리가 그 바닥이라고 부르는 것은<br/>
      사실 그 꼭대기이니,
    </p>
    <p xml:id="subtitle9a" begin="53.5s" end="58.7s">
      그저 명칭의 문제일 뿐입니다.
    </p>
    <p xml:id="subtitle9b" begin="53.5s" end="58.7s" style="s2">
      정말로 유쾌하군요!
    </p>
  </div>    
</body>

첫 번째 자막인 자막 1 – 시간 구간 [0.76, 3.45)은 0.76초부터 3.45초까지의 시간 구간 동안 표시됩니다. 이 자막은 글꼴 패밀리, 글꼴 크기, 전경색 및 텍스트 정렬을 자신이 표시되는 영역에서 상속합니다. 문단에 영역이 명시적으로 지정되어 있지 않으므로, 영역을 지정하는 가장 가까운 조상이 대상 영역을 결정합니다. 또한 콘텐츠는 이를 포함하는 영역의 아래쪽(후방 가장자리)에 표시되는데, 이는 tts:displayAlign="after"가 영역 정의에 지정되어 있기 때문입니다.

참고:

표기 "[X,Y]"는 X부터 Y까지의 닫힌 구간을 나타내며, X와 Y를 포함합니다; "[X,Y)"는 오른쪽이 열린 반열린 구간으로, X부터 Y까지이며, X는 포함하지만 Y는 포함하지 않습니다; "(X,Y]"는 왼쪽이 열린 반열린 구간으로, X부터 Y까지이며, X는 포함하지 않지만 Y는 포함합니다; "(X,Y)"는 열린 구간으로, X부터 Y까지이며, X와 Y를 모두 포함하지 않습니다.

참고:

이 예제에서 p 요소는 의미적 요소, 즉 언어학적 문단이 아닌 표시 요소로 사용됩니다. 의도한 의미를 전달하기 위해 어떤 TTML 요소를 사용할지는 저작자가 결정합니다. 예를 들어, 이 예제는 span 요소에 타이밍을 사용하도록 작성하여 의미적 문단의 온전성을 유지할 수도 있습니다.

참고:

이 예제에서는 region 속성이 body 요소에 지정되어 있습니다. 대신 div 요소에 지정하거나 개별 p 요소 각각에 지정해도 표시 효과는 동일합니다. 일반적으로 region은 문서 계층의 적절한 위치에 지정하여 장황함을 줄이면서 쉽게 표현할 수 있도록 합니다.

또한 region을 body에 배치하면 모든 자손 요소가 다른 영역에 표시되지 못한다는 점에 유의하시기 바랍니다. 이러한 자손은 다음 [중간 문서 구성] 절차의 결과로 표시 대상에서 제거되기 때문입니다.

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

두 번째 자막도 기본 스타일을 계속 사용하지만, 저작자가 지정한 줄바꿈으로 구분된 두 줄의 텍스트를 포함합니다. 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

다음 자막도 비슷한 방식으로 지정되며, 스타일을 재정의하여 문단을 인라인 진행 방향의 오른쪽(끝)으로 정렬합니다.

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

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

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

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

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

1.2.2 다중 영역 예제

위 예제는 단일 영역으로 향하는 콘텐츠의 시간적 흐름과 어휘적 흐름을 보여 줍니다. 이 개념은 여러 영역으로 확장할 수 있으며, 콘텐츠의 서로 다른 부분이 각각 독립적인 시점에 각 영역으로 흐르게 할 수 있습니다. 예를 들어, 예제 문서 – 다중 영역의 TTML 레이아웃에는 두 개의 자막 문단이 있고, 각각 서로 다른 영역에 배치됩니다. 두 번째 자막은 첫 번째 자막이 화면에서 사라지기 전에 나타나며, 그 후에도 계속 표시되므로, 표시되는 자막의 수가 차례로 하나, 둘, 다시 하나가 됩니다.

예제 문서 – 다중 영역의 TTML 레이아웃
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
    xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <styling xmlns:tts="http://www.w3.org/ns/ttml#styling">
      <style xml:id="pStyle"
        tts:backgroundColor="cyan"
        tts:textAlign="center"
        tts:fontSize="6.7rh"/>
      <style xml:id="spanStyle"
        tts:color="white"
        tts:backgroundColor="black"
        tts:fontFamily="proportionalSansSerif"/>
    </styling>
    <layout xmlns:tts="http://www.w3.org/ns/ttml#styling">
      <region xml:id="topCenterArea"
        tts:position="center top 10% "
        tts:extent="80% 20%"
        tts:displayAlign="before"
        tts:backgroundColor="purple"
        tts:showBackground="whenActive"/>
      <region xml:id="bottomLeftArea"
        tts:position="left 10% bottom 10% "
        tts:extent="60% 20%"
        tts:displayAlign="after"
        tts:backgroundColor="green"
        tts:showBackground="whenActive"/>
    </layout>  
  </head>
  <body>
    <div>
      <p xml:id="subtitle1" begin="00:00:00.500" end="00:00:01.500"
         region="topCenterArea" style="pStyle">
        <span style="spanStyle">생리학 강사님께 왜 그 절묘한 이론을<br/>
        한 번도 알려 주지 않으셨는지 여쭤봐야겠습니다!</span>
      </p>
      <p xml:id="subtitle2" begin="00:00:01" end="00:00:02"
         region="bottomLeftArea" style="pStyle">
        <span style="spanStyle">그 질문을 하실 때라면 무엇을 내주고서라도<br/>
        그 자리에 있고 싶군요!</span>
      </p>
    </div>    
  </body>
</tt>

이 예제에는 시간적으로 겹치는 두 개의 자막이 있습니다. 이로 인해 0.5초와 2초 사이에 세 개의 서로 다른 구간이 생깁니다. 문서에서 시간은 hh:mm:ss 형식으로 표현됩니다. 각 영역과 문단은 자신의 콘텐츠보다 큰 크기로 지정되어 있으며, 대비되는 배경색으로 표시되어 자신의 위치와 자손의 위치가 더 명확하게 보이도록 합니다. 위쪽 영역은 보라색이고, 아래쪽 영역은 녹색입니다. 각 p는 청록색이며, 각 span은 검은색 배경에 흰색 텍스트입니다.

자막 1 – 시간 구간 [0.5, 1.0)
복합 레이아웃 자막 1

첫 번째 구간인 0.5초부터 1.0초까지는 두 줄이 표시되며, 위쪽 중앙 영역의 전방 가장자리에 정렬됩니다. 따라서 영역에서 사용되지 않는 부분은 텍스트 아래에 보라색으로 나타납니다. 마찬가지로 p 요소에서 사용되지 않는 부분은 청록색으로 나타나며, span 요소가 차지하는 공간을 보여 주는 검은색 배경을 둘러쌉니다.

자막 1 및 2 – 시간 구간 [1.0, 1.5)
복합 레이아웃 자막 2

두 번째 구간인 1.0초부터 1.5초까지는 첫 번째 자막이 계속 표시되고, 두 줄로 구성된 두 번째 자막이 왼쪽 아래 영역에 표시됩니다. 새 텍스트는 해당 영역의 후방 가장자리에 정렬되므로, 영역에서 사용되지 않는 부분은 텍스트 위에 녹색으로 나타납니다.

자막 2 – 시간 구간 [1.0, 1.5)
복합 레이아웃 자막 3

세 번째 구간인 1.5초부터 2.0초까지는 첫 번째 자막이 더 이상 표시되지 않습니다.

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

2 정의

2.1 약어

BPD

블록 진행 치수

DAR

표시 종횡비

DFXP

배포 형식 교환 프로파일

IPD

인라인 진행 치수

ISD

중간 동시적 문서

PAR

픽셀 종횡비

SAR

저장 종횡비

TT

시간 지정 텍스트

TTML

시간 지정 텍스트 마크업 언어

TTAF

시간 지정 텍스트 저작 형식

TTWG

시간 지정 텍스트 작업 그룹

2.2 용어

[절대 치수]

길이를 나타내는 스칼라 값이며, 해당 길이는 수평축 또는 수직축상의 길이입니다.

[추상 문서 인스턴스]

추상 데이터 집합의 인스턴스로, 축소된 XML 정보 집합으로 표현됩니다.

[추상 문서 유형]

XML 정보 집합 [XML InfoSet]의 부류를 정의하는 제약 조건 집합입니다.

[애니메이션 가능한 스타일]

스타일 지정 속성 또는 이를 내부화하여 스타일 속성으로 표현한 것으로, 그 정의에서 이산 또는 연속 애니메이션으로 애니메이션할 수 있다고 명시한 것입니다. 스타일 지정 속성의 정의가 (1) 애니메이션 가능성을 none으로 지정하거나 (2) 애니메이션 가능성을 지정하지 않는 경우, 이를 애니메이션 불가능한 스타일이라고 합니다.

[익명 프로파일]

미지정 프로파일을 참조하시기 바랍니다.

[익명 span]

span 요소로, 문서 인스턴스에는 존재하지 않지만, 이에 대응하는 해당 추상 문서 인스턴스에 [익명 span 구성] 절차에 의해 합성되어 삽입됩니다. 이는 11.3.1.3 중간 동시적 문서 구성 또는 11.3.1.4 동시적 흐름 처리 단계에서 수행됩니다.

[area]

주소 지정 가능한 논리 픽셀의 모음으로, 출력 매체의 평면에 있는 경계가 정해진 직사각형 영역의 시각적 콘텐츠를 표현하며, [XSL-FO 1.1], 직사각형 영역, §4.2에 정의되어 있습니다. 특히 [CSS2] 및 [HTML]의 맥락에서는 상자라고도 합니다.

[속성 정보 항목]

XML 문서에서 지정되거나 기본값이 적용된 각 속성은 속성 정보 항목에 대응하며, 이는 [XML InfoSet], §2.3에 정의되어 있습니다.

[오디오 정의 맥락]

audio 요소가 공유 가능한 정의로 사용되도록 지정되는 맥락으로, 이 정의는 다른 audio 요소가 오디오 표시 맥락에서 참조합니다.

[오디오 생성 요소]

audio 요소로서 오디오 표시 맥락에 있는 요소이거나, span 요소로서 그 문자 콘텐츠가 음성 데이터 리소스를 생성하는 데 사용되는 요소입니다.

[오디오 표시 맥락]

audio 요소가 표시(렌더링)를 목적으로 지정되는 맥락입니다. 이러한 audio 요소는 오디오 데이터를 인라인으로 지정할 수 있으며, 이때 data 요소를 source 자식 요소 안에 사용합니다. 또는 다른 audio 요소를 참조할 수 있으며, 이 요소는 오디오 정의 맥락에 지정되어 있습니다. 두 방식을 함께 사용할 수도 있습니다.

[오디오 리소스]

데이터 리소스로, 부호화되었거나 부호화되지 않은 오디오 샘플을 포함합니다.

[오디오 스트림]

오디오 샘플의 시퀀스입니다.

[배경 그리기 직사각형]

문서 좌표 공간의 직사각형으로, 색상이나 이미지와 같은 배경 표시 요소를 필요에 따라 자르고 그리는 기준이 됩니다. 더 구체적으로는 배경과 연결된 요소가 생성하는 영역의 테두리 직사각형, 패딩 직사각형 또는 콘텐츠 직사각형이라는 세 직사각형 중 하나입니다. 어느 직사각형을 적용할지는 다음 속성으로 지정된 스타일 속성의 계산값으로 결정됩니다: tts:backgroundClip 속성입니다.

[배경 배치 직사각형]

문서 좌표 공간의 직사각형으로, 색상이나 이미지와 같은 배경 표시 요소의 위치나 크기를 정하는 기준이 됩니다. 더 구체적으로는 배경과 연결된 요소가 생성하는 영역의 테두리 직사각형, 패딩 직사각형 또는 콘텐츠 직사각형이라는 세 직사각형 중 하나입니다. 어느 직사각형을 적용할지는 다음 속성으로 지정된 스타일 속성의 계산값으로 결정됩니다: tts:backgroundOrigin 속성입니다.

[기준 프로파일]

프로파일로, use 속성을 통해 ttp:profile 요소가 참조하며, 참조하는 프로파일을 채우는 데 사용하는 기준(초기) 명세 집합으로 기능합니다.

[블록 영역]

기본적인 영역 유형으로, [XSL-FO 1.1], 블록 영역, §4.4에 정의되어 있습니다. 그 자식은 모두 블록 영역으로 구성되거나(해당 블록 영역이 줄 영역이 아닌 경우), 모두 인라인 영역으로 구성됩니다(해당 블록 영역이 줄 영역인 경우).

[블록 표시]

블록 표시는 콘텐츠 요소에 특정 맥락에서 적용할 수 있는 레이아웃 의미론의 집합으로, 자식 영역을 블록 진행 방향으로 순차적으로 배치합니다.

참고:

[CSS2]에서는, CSS display 속성의 값이 block인 상태로 콘텐츠 요소에 표시 처리 중 적용되면 블록 표시를 나타냅니다. [XSL-FO 1.1]에서는 블록 표시가 fo:block 요소를 배치할 때 발생합니다.

[블록 진행 치수]

상대 치수로, 블록 진행 축상에 있으며, 즉 양의 블록 진행 방향의 치수이고, bpd 또는 BPD로 줄여 씁니다.

[블록 진행 방향]

특정 서식 지정 맥락에서 블록 영역이 진행하는 방향입니다. 가로쓰기 모드의 맥락에서는 블록 진행 방향이 일반적으로 위에서 아래로 향하지만, 세로쓰기 모드의 맥락에서는 일반적으로 오른쪽에서 왼쪽 또는 왼쪽에서 오른쪽으로 향합니다.

[내장 데이터 리소스]

데이터 리소스로, 그 콘텐츠는 콘텐츠 처리기가 제공하며, 시간 지정 텍스트 콘텐츠 문서 인스턴스가 제공하지 않습니다. 참조할 때는 source 요소 또는 src 속성을 사용하며, 이 속성은 source 요소 또는 임베디드 콘텐츠 요소에 지정됩니다.

[문자 정보 항목]

XML 문서에 나타나는 각 데이터 문자는 문자 정보 항목에 대응하며, 이는 [XML InfoSet], §2.6에 정의되어 있습니다. 하나 이상의 연속된 문자 정보 항목이 동일한 부모 요소 정보 항목을 공유하는 시퀀스를 텍스트 노드라고 합니다.

참고:

B.4 문자 정보 항목에서 추가 정보를 참조하시기 바랍니다.

[청크 데이터 임베딩]

data 요소로, 실제 바이트의 표현을 직접 임베딩하며, 해당 바이트는 임베디드 데이터 리소스의 바이트이고, 자식 chunk 요소를 사용합니다.

[결합된 프로파일]

프로파일로서, constituents 구성 요소가 결합된 명세 집합에 속하고, 이 집합은 연결된 프로파일 인스턴스에 속하며, 해당 구성 요소에 null이 아닌 지정자가 둘 이상 포함되어 있습니다.

[구성 요소]

(1) 기능 단위; (2) 구문 표현식의 일부; (3) 상태 객체의 필드(또는 변수)입니다.

[계산된 셀 크기]

셀의 크기(범위)로, 루트 컨테이너 영역의 너비를 셀 열 수, 즉 수평축의 셀 수로 나누고, 루트 컨테이너 영역의 높이를 셀 행 수, 즉 수직축의 셀 수로 나누어 계산합니다. 셀의 열 수와 행 수는 ttp:cellResolution 매개변수 속성으로 결정됩니다.

참고:

루트 컨테이너 영역의 너비와 높이는 공간적 범위의 너비와 높이에 대응하며, 해당 범위는 루트 컨테이너 영역의 범위로서 H.2 해상도에 명시되어 있습니다; 따라서 계산된 셀 크기는 논리 픽셀로 표현됩니다.

[계산된 스타일 집합]

스타일 집합으로, 계산된 스타일 값을 포함하며, 이는 10.4.4.3 계산된 스타일 집합 처리에 따라 결정됩니다.

[조건이 적용되는 요소]

이 명세에서 정의하거나 이 명세에서 사용하도록 정의한 유형의 요소 중, 다음 속성의 지정을 허용하는 요소입니다: condition 속성의 평가 결과에 따라 요소에 정의된 의미론을 적용할지 무시할지 결정합니다. 이러한 속성이 없으면 요소의 의미론은 항상 적용됩니다.

[조건부 제외(또는 포함)]

조건이 적용되는 요소의 조건 표현식을 평가한 결과가 false이면 해당 요소와 그 자손 요소가 조건부로 제외된다고 합니다. 요소가 조건부로 제외되지 않으면, 조건부로 포함된다고 합니다.

참고:

조건부로 포함되지만 다음 속성의 사용을 허용하지 않거나 이를 지정하지 않은 요소, 즉 condition 속성이 없는 요소는 다음과 같이 부를 수 있습니다: 무조건 포함되는 요소입니다.

요소가 조건부로 제외되면, 달리 명시되지 않는 한 모든 의미론을 무시합니다. 조건부 제외의 자세한 의미론은 condition을 참조하시기 바랍니다.

참고:

특정 요소의 경우, 예를 들어 style 요소에서는, 조건부 제외로 인해 요소의 모든 의미론이 아니라 일부 의미론만 무시되며, 이러한 경우 해당 동작을 명시적으로 설명합니다.

[콘텐츠 요소]

콘텐츠 모듈에서 정의한 모든 요소 유형과, 오디오 모듈 및 이미지 모듈에서 정의한 요소 유형 중 각각 오디오 표시 맥락 또는 이미지 표시 맥락에 나타나는 요소 유형입니다.

참고:

tt 및 head 요소 유형은, 8.1 콘텐츠 요소 어휘에 정의되어 있지만, 의도적으로 위 정의의 범위에 포함되지 않으며, 다음 모듈의 정의에 포함됩니다: 문서 및 헤더 모듈이며, 이들은 표 5-3 – 요소 어휘에 있습니다.

위에 언급한 요소 유형 외에도, 콘텐츠 요소 유형으로 지정된 요소 유형을 포함하며, 이러한 지정은 확장 모듈에서 이루어집니다.

[콘텐츠 이미지]

이미지 리소스로, 의미상 중요한 콘텐츠를 포함하며, 예를 들어 캡션의 렌더링을 표현하는 래스터 이미지입니다.

[콘텐츠 처리기]

시간 지정 텍스트 마크업 언어 콘텐츠를 가져올(수신할) 수 있는 처리 시스템으로, 해당 콘텐츠를 변환하거나 표시하거나 그 밖의 방식으로 처리하기 위한 것입니다.

[콘텐츠 프로파일]

프로파일로서, (1) type 구성 요소의 값이, 연결된 프로파일 인스턴스에서 content이며, (2) 해당 프로파일의 기능 및 확장 모음은 시간 지정 텍스트 마크업 언어 콘텐츠에서 사용해서는 안 되거나, 사용해야 하거나, 사용할 수 있는 것입니다.

[콘텐츠 영역]

표시 처리를 수행할 때 콘텐츠를 렌더링하는 논리적인 직사각형 영역입니다. 맥락이 명확하면 간단히 영역이라고 줄여 부릅니다. 각 콘텐츠 영역은 명시적으로 지정되거나 암시된 region 요소로 정의되며, 이 요소는 콘텐츠 영역의 크기를 루트 컨테이너 영역에 대한 상대적인 값으로 정의하고, 그 밖의 스타일 및 시간적 특성도 정의합니다.

[핵심 모듈]

모듈로, 이 명세의 본문에 정의되어 있으며, 구체적으로는 다음에 정의된 모듈입니다: 표 5-3 – 요소 어휘 및 표 5-5 – 속성 어휘.

[데이터 바인딩 맥락]

data 요소가 의미적 바인딩(연결)을 목적으로 지정되는 맥락입니다. 이러한 data 요소는 데이터를 인라인으로 지정할 수 있으며, 이때 data 요소를 source 자식 요소 안에 사용합니다. 또는 다른 data 요소를 참조할 수 있으며, 이 요소는 데이터 정의 맥락에 지정되어 있습니다. 두 방식을 함께 사용할 수도 있습니다. 표시(렌더링) 의미론은 data 요소가 이 맥락(또는 다른 맥락)에 존재한다는 사실만으로 암시되지 않습니다.

[메타데이터용 데이터 바인딩 맥락]

data 요소로, 그 부모가 다음 요소인 경우입니다: metadata 요소입니다.

[소스용 데이터 바인딩 맥락]

data 요소로, 그 부모가 다음 요소인 경우입니다: source 요소입니다.

[데이터 정의 맥락]

data 요소가 공유 가능한 정의로 사용되도록 지정되는 맥락으로, 이 정의는 다른 data 요소가 데이터 바인딩 맥락에서 참조합니다. 즉, data 요소의 부모가 다음 요소인 경우입니다: resources 요소입니다.

[데이터 요소]

데이터 모듈에서 정의한 요소 유형 중 하나입니다.

[데이터 리소스]

임의의 데이터 리소스로, 데이터 요소를 사용하여 표현하거나 참조합니다. 예를 들어, 데이터 리소스는 오디오 클립, 글꼴, 이미지 또는 임의의 애플리케이션 데이터를 시간 지정 텍스트 콘텐츠 문서 인스턴스에 임베딩하거나 그 안에서 참조하는 데 사용할 수 있습니다.

[기본 처리기 프로파일]

기본 처리기 프로파일로, 유효 처리기 프로파일을 계산하는 데 사용되며, 선언되거나 추론된 처리기 프로파일이 없는 경우에 사용됩니다. 이 기본 처리기 프로파일은 기본 처리기 프로파일 구성 절차에 따라 결정됩니다.

[기본 영역]

기본 비인라인 영역으로, 다음 요소가 없을 때 암시됩니다: 명시적으로 지정된 비인라인 region 요소입니다. 즉, region 요소가 다음 요소의 자식으로 지정되지 않은 경우입니다: layout 요소입니다.

[지정된 프로파일]

프로파일로, <profile-designator>와 연결되며, designator 속성 또는 프로파일 명세의 본문 설명을 통해 연결됩니다.

[표시 종횡비]

DAR의 정의를 참조하시기 바랍니다.

[문서 좌표 공간]

논리적 좌표 공간으로, 종횡비와 해상도를 결정하며, 그 대상은 루트 컨테이너 영역입니다. 이 영역은 해당 문서 인스턴스의 서식을 지정하고 표시하는 데 사용됩니다. 자세한 내용은 H 루트 컨테이너 영역 의미론을 참조하시기 바랍니다.

[문서 인스턴스]

시간 지정 텍스트 문서 인스턴스입니다.

[문서 교환 맥락]

콘텐츠 처리기 외부의 암시적 맥락 또는 환경으로, 문서 교환이 이루어지며, 대역 외 프로토콜이나 명세가 암시적 프로파일과 같은 특정 기본 동작을 정의할 수 있습니다.

[문서 처리 맥락]

콘텐츠 처리기 내부의 암시적 맥락 또는 환경으로, 문서 처리가 이루어지며, 대역 외 프로토콜이나 명세가 특정 기본 동작을 정의할 수 있습니다. 예를 들어 다음의 설정 또는 생성입니다: 합성 문서 동기화 기준.

[문서 시간 좌표 공간]

계산된 시간 표현식을 해석할 때 기준으로 사용하는 시간 좌표계이며, 해당 표현식은 문서 인스턴스에 있습니다. 자세한 내용은 7.2.11 ttp:timeBase를 참조하시기 바랍니다.

[유효 콘텐츠 프로파일]

콘텐츠 프로파일로, 모든 콘텐츠 프로파일의 집합에서 계산됩니다. 이 프로파일들은 TTML 문서 인스턴스에서 명시적 또는 암시적으로 참조하거나 그 인스턴스에 할당한 것이며, 명시적 또는 암시적인 프로파일 결합 방법과 프로파일 명세 결합 방법을 적용한 후 계산합니다. 관련 내용은 유효 콘텐츠 프로파일 구성 절차를 참조하시기 바랍니다. 주어진 문서 인스턴스에 대해 유효성 검사를 수행할 때는, 해당 문서의 유효 콘텐츠 프로파일을 사용하여 검사합니다.

[유효 처리기 프로파일]

처리기 프로파일로, 모든 처리기 프로파일의 집합에서 계산됩니다. 이 프로파일들은 TTML 문서 인스턴스에서 명시적 또는 암시적으로 참조하거나 그 인스턴스에 할당한 것이며, 명시적 또는 암시적인 프로파일 결합 방법과 프로파일 명세 결합 방법을 적용한 후 계산합니다. 관련 내용은 유효 처리기 프로파일 구성 절차를 참조하시기 바랍니다. 콘텐츠 처리기가 주어진 문서 인스턴스를 처리할 수 있는지 여부를 결정할 때는, 해당 문서의 유효 처리기 프로파일을 사용하여 결정합니다.

[유효 유효성 검사 프로파일]

스키마(또는 스키마 집합)를 선택하는 데 사용하는 프로파일로, 해당 스키마는 유효성 검사 처리 중에 사용됩니다. 이 프로파일은 유효 유효성 검사 프로파일 구성 절차에 따라 결정됩니다.

[유효 유효성 검사 스키마]

유효성 검사 처리 중에 사용하는 스키마 집합으로, 다음 유효 유효성 검사 스키마 구성 절차에 따라 결정됩니다.

참고:

어떤 스키마 언어도 이 명세에 정의된 TTML 콘텐츠의 모든 제약 조건을 표현하지는 못하므로, 추가적인 내장 프로그램 방식(코드 기반) 스키마를 유효성 검사 기능이 있는 콘텐츠 처리기에서 사용할 것으로 예상됩니다.

[요소 정보 항목]

XML 문서에 나타나는 각 요소는 요소 정보 항목에 대응하며, 이는 [XML InfoSet], §2.2에 정의되어 있습니다. 요소 노드라고도 합니다.

참고:

B.2 요소 정보 항목에서 추가 정보를 참조하시기 바랍니다.

[임베디드 콘텐츠 요소]

오디오 모듈, 데이터 모듈, 글꼴 모듈 또는 이미지 모듈에서 정의한 요소 유형 중 하나입니다.

[임베디드 콘텐츠 리소스]

오디오 리소스, 데이터 리소스, 글꼴 리소스, 또는 이미지 리소스입니다.

[임베디드 데이터 리소스]

데이터 리소스로, 시간 지정 텍스트 콘텐츠 문서 인스턴스에 임베딩되며, data 요소를 통해 표현됩니다. 해당 data 요소가 실제 바이트를 표현하는지, 즉 데이터 리소스의 바이트를 표현하는지, 아니면 외부 데이터 리소스를 참조하는지와는 무관합니다.

[빈 데이터 리소스]

데이터 리소스로, 렌더링 가능한 콘텐츠를 포함하지 않으며, 또한 이 리소스를 일련의 콘텐츠 샘플로 해석하려고 시도해도 샘플이 생성되지 않습니다.

[포함하는 문서 인스턴스]

문서 인스턴스로, 내부의 기능 또는 다음을 둘러싸거나 그 밖의 방식으로 포함합니다: 기능이나 구성 요소입니다.

[교환 프로파일]

콘텐츠 교환에 필요한 일련의 요구를 충족하는 콘텐츠 프로파일입니다.

[확장]

구문적 또는 의미적 표현이나 기능으로, 다른 (공개 또는 비공개) 명세에서 정의하고 확장 지정을 사용하여 이름을 붙인 것입니다.

[확장 모듈]

모듈로서 핵심 모듈이 아닌 것입니다.

[확장 명세]

제약 조건 또는 요구 사항의 명세로, 확장과 관련되며, 일반적으로 ttp:extension 요소로 표현됩니다.

[외부 데이터 리소스]

데이터 리소스로, 그 표현은 다음 문서의 외부에 있으며(내부에 포함되지 않으며), 시간 지정 텍스트 콘텐츠 문서 인스턴스가 그 문서입니다. 참조할 때는 src 속성을 사용하며, 이 속성은 source 요소 또는 임베디드 콘텐츠 요소에 지정됩니다.

[외부 소스]

(1) source 요소 또는 src 속성으로서 외부 데이터 리소스를 참조하는 것이거나, (2) 참조되는 외부 데이터 리소스입니다.

[기능]

구문적 또는 의미적 표현이나 기능으로, 이 명세(또는 이 명세의 과거 또는 미래 개정판)에서 정의하고 기능 지정을 사용하여 이름을 붙인 것입니다.

[기능 명세]

제약 조건 또는 요구 사항의 명세로, 기능과 관련되며, 일반적으로 ttp:feature 요소로 표현됩니다.

[강제 자막]

자막(또는 캡션)이 활성화되어 있지 않아도 항상 표시하도록 의도된 자막(또는 캡션)입니다. 강제 자막(캡션)은 외국어나 외계 언어 또는 표지판처럼 미디어에 나타나는 텍스트의 번역과 관련된 자막(캡션)을 오픈 캡션으로 처리하는 것, 즉 영상에 직접 새겨 넣는 것을 피하기 위해 사용됩니다.

[글꼴 정의 맥락]

font 요소가 공유 가능한 정의로 사용되도록 지정되는 맥락으로, 이 정의는 글꼴 선택 과정에서 간접적으로 참조합니다.

[글꼴 선택 과정]

표시 처리기에서 사용하는 내부 과정으로, 레이아웃 및 표시 처리 중에 사용할 저작자 정의 글꼴과 플랫폼 글꼴의 집합을 선택하는 것이 목적입니다. 이 과정의 입력 매개변수에는 글꼴 관련 속성의 계산값, 개별 글꼴의 기능, 표시할 텍스트 콘텐츠가 포함됩니다.

[글꼴 리소스]

데이터 리소스로, 문자에서 글리프로의 매핑 데이터, 글리프 윤곽선 또는 이미지, 글리프 메트릭과 같은 글꼴 정보, 그 밖에 문자에서 글리프로의 매핑 및 렌더링 과정에 사용하는 데이터를 포함합니다.

[높이]

절대 치수이며, 수직축상의 치수입니다.

참고:

일부 예외적인 경우에는 높이라는 용어가 수평축을 가리킬 수 있으며, 자세한 내용은 10.2.27 tts:lineHeight를 참조하시기 바랍니다.

[프래그먼트 식별자]

<uri> 값의 구문적 부분집합으로, 다음에 정의된 프래그먼트 식별자 구문을 따릅니다: [URI], §3.5.

[글리프 영역]

인라인 영역의 한 유형으로, [XSL-FO 1.1], 글리프 영역, §4.6.2에 정의되어 있습니다. 이 명세에서 글리프 영역은 하나 이상의 콘텐츠 문자와 특정 글꼴의 하나 이상의 글리프에 연결되며, 글리프 영역을 표시할 때 이 글리프들이 렌더링됩니다. 간격을 차지하는 글리프 영역은 하나 이상의 간격을 차지하는 글리프, 즉 전진 폭(너비 또는 높이)이 0이 아닌 글리프와 연결된 글리프 영역입니다. 간격을 차지하지 않는 글리프 영역은 간격을 차지하는 글리프 영역이 아닌 것으로, 전적으로 간격을 차지하지 않는 글리프로 구성됩니다.

[글리프 영역 자손]

글리프 영역으로, 사용 맥락에서 암시되는 다른 영역의 자손 영역입니다. 예를 들어, 인라인 영역 I의 자손 영역이 글리프 영역이면, 이는 글리프 영역 자손이며, I에 속합니다.

[이미지 정의 맥락]

image 요소가 공유 가능한 정의로 사용되도록 지정되는 맥락으로, 이 정의는 다른 image 요소가 이미지 표시 맥락에서 참조합니다.

[이미지 표시 맥락]

image 요소가 표시(렌더링)를 목적으로 지정되는 맥락입니다. 이러한 image 요소는 이미지 데이터를 인라인으로 지정할 수 있으며, 이때 data 요소를 source 자식 요소 안에 사용합니다. 또는 다른 image 요소를 참조할 수 있으며, 이 요소는 이미지 정의 맥락에 지정되어 있습니다. 두 방식을 함께 사용할 수도 있습니다.

[이미지 리소스]

데이터 리소스로, 래스터 이미지를 포함합니다.

[추론된 처리기 프로파일]

처리기 프로파일로, 추론된 처리기 프로파일 구성 절차에 따라 결정되며, 유효 처리기 프로파일로 사용되어 다음 처리를 수행할 수 있습니다: 유효성 검사 처리.

[인라인 애니메이션]

Animation.class 요소 그룹에 속한 요소로, 다음 요소의 직접적인 자식으로 인라인 정의됩니다: 애니메이션과 연결된 콘텐츠 요소 또는 region 요소입니다. 일대일 관계가 존재하며, 그 관계는 인라인 애니메이션 요소와 그 부모인 콘텐츠 요소 또는 region 요소 사이에 있습니다.

[inline area]

영역의 한 유형으로, [XSL-FO 1.1], 인라인 영역, §4.6에 정의되어 있으며, 그 자식은 모두 인라인 영역으로 구성됩니다. 예를 들어 글리프 영역이 있습니다.

[인라인 블록 표시]

인라인 블록 표시는 콘텐츠 요소에 특정 맥락에서 적용할 수 있는 레이아웃 의미론의 집합으로, 생성된 블록 영역을 인라인 레이아웃 맥락에서 배치할 원자적 영역으로 취급합니다. 즉, 블록 영역을 외부에서 볼 때는 인라인 영역인 것처럼 취급하지만, 내부에서 볼 때는 블록 영역으로 취급합니다.

[인라인 표시]

인라인 표시는 콘텐츠 요소에 특정 맥락에서 적용할 수 있는 레이아웃 의미론의 집합으로, 자식 영역을 인라인 진행 방향으로 순차적으로 배치합니다.

참고:

[CSS2]에서는, CSS display 속성의 값이 inline인 상태로 콘텐츠 요소에 표시 처리 중 적용되면 인라인 표시를 나타냅니다. [XSL-FO 1.1]에서는 인라인 표시가 fo:inline 요소를 배치할 때 발생합니다.

[인라인 진행 치수]

상대 치수로, 인라인 진행 축상에 있으며, 즉 양의 인라인 진행 방향의 치수이고, ipd 또는 IPD로 줄여 씁니다.

[인라인 진행 방향]

특정 서식 지정 맥락에서 인라인 영역이 진행하는 방향입니다. 가로쓰기 모드의 맥락에서는 인라인 진행 방향이 일반적으로 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽으로 향하지만, 세로쓰기 모드의 맥락에서는 일반적으로 위에서 아래로 향합니다.

[inline region]

영역으로, 해당 영역에 선택되어 들어갈 콘텐츠 요소를 기준으로 인라인 방식으로 정의됩니다. 인라인 영역은 region 요소로 지정되며, 이는 특정 콘텐츠 요소의 자식입니다. 일대일 관계가 인라인 region 요소와 그 부모인 콘텐츠 요소 사이에 존재합니다. 인라인 영역에는 부모 요소의 시간 구간이 활성 시간 구간으로 할당됩니다. 어떠한 region 속성도 인라인 영역을 참조하지 않습니다.

[중간 동시적 문서]

시간 지정 텍스트 중간 문서 또는 시간 지정 텍스트 중간 문서 인스턴스로, 사용 맥락에 따라 정해지며, 루트(문서) 요소는 isd:isd 요소입니다. 이는 서로 겹치지 않는 시간 구간을 표현하며, 이 구간은 원본의 콘텐츠, 스타일, 레이아웃 및 타이밍과 교차합니다. 원본은 시간 지정 텍스트 콘텐츠 문서입니다.

[중간 동시적 문서 시퀀스]

시간 지정 텍스트 중간 문서 또는 시간 지정 텍스트 중간 문서 인스턴스로, 사용 맥락에 따라 정해지며, 루트(문서) 요소는 isd:sequence 요소입니다. 이는 다음 인스턴스들의 시퀀스를 표현합니다: 중간 동시적 문서 인스턴스이며, 이들은 원본의 콘텐츠, 스타일, 레이아웃 및 타이밍을 실질적으로 표현합니다. 원본은 시간 지정 텍스트 콘텐츠 문서입니다.

[중간 문서 구문]

구체적인 표현에 사용하는 형식 체계로, 표현 대상은 중간 동시적 문서 시퀀스 또는 중간 동시적 문서입니다.

[내부 데이터 리소스]

데이터 리소스로, 그 표현은 다음 문서의 내부에 있으며(내부에 포함되며), 시간 지정 텍스트 콘텐츠 문서 인스턴스가 그 문서입니다. 참조할 때는 src 속성을 사용하며, 이 속성은 source 요소 또는 임베디드 콘텐츠 요소에 지정됩니다.

[내재적 블록 콘텐츠 크기]

블록 수준 콘텐츠 시퀀스의 크기, 즉 너비와 높이로, 콘텐츠를 크기 제한이 없는 블록 컨테이너 영역에 맞춰 서식 지정한 후, 그 결과로 서식이 지정된 블록 컨테이너의 너비와 높이를 구하여 결정합니다.

[내재적 이미지 크기]

이미지 자체의 내부 정보로부터 결정되는 이미지의 크기, 즉 너비와 높이입니다. 예를 들어, 이미지 픽셀 배열의 너비와 높이입니다.

[내재적 인라인 콘텐츠 크기]

인라인 수준 콘텐츠 시퀀스의 크기, 즉 너비와 높이로, 콘텐츠를 크기 제한이 없는 인라인 컨테이너 영역에 맞춰 서식 지정한 후, 그 결과로 서식이 지정된 인라인 컨테이너의 너비와 높이를 구하여 결정합니다.

[상위 수준 프로토콜]

문서 처리 맥락의 프로토콜 또는 과정으로, 이 명세의 범위를 벗어납니다.

[수평축]

수평면에 평행한 축입니다.

[줄 영역]

블록 영역의 한 유형으로, [XSL-FO 1.1], 줄 영역, §4.5에 정의되어 있으며, 그 자식은 하나 이상의 인라인 영역으로 구성됩니다.

[메타데이터 요소]

메타데이터 모듈에서 정의한 요소 유형 중 하나입니다.

[모듈]

기능 및(또는) 확장 정의의 모음으로, 핵심 모듈 또는 확장 모듈 중 하나로 정의됩니다.

참고:

모듈은 프로파일과 구별되며 서로 독립적입니다. 전자는 사용 애플리케이션과 관계없이 기능을 정의하지만, 후자는 처리기가 지원하거나 문서가 사용할 기능을 선택하기 때문입니다. 또한 하나의 명세가 모듈과 명시적 또는 암시적으로 연결된 기능을 정의하면서 프로파일도 정의할 수 있습니다. 예를 들어, 이 명세는 핵심 모듈 모음을 정의하며, 세 가지 프로파일도 정의합니다. 관련 내용은 각각 5.4.1 핵심 카탈로그 및 G 표준 프로파일을 참조하시기 바랍니다.

[중첩된 프로파일]

구성 프로파일로, 중첩하는 프로파일에 속합니다. 즉, 상위(조상) ttp:profile 요소의 자손 ttp:profile 요소 중 하나입니다. 주어진 ttp:profile은 중첩된 프로파일과 중첩하는 프로파일의 역할을 동시에 할 수 있습니다.

참고:

중첩된 프로파일은 시간 지정 텍스트 콘텐츠 문서 인스턴스 또는 시간 지정 텍스트 프로파일 문서 인스턴스에 나타날 수 있습니다.

[중첩하는 프로파일]

프로파일로, 하나 이상의 자식 ttp:profile 요소를 참조하여 정의됩니다. 이때 프로파일 결합 방법이 여러 자식의 프로파일 명세를 결합하는 방식을 결정하며, 해당 자식은 ttp:profile 요소입니다. constituents 구성 요소가 속한 프로파일 인스턴스가 중첩하는 프로파일과 연결되어 있다면, 이 구성 요소는 null이 아닙니다.

[중첩된 임베디드 소스]

source 요소로, 자식 data 요소를 지정하며, 이 자식은 실제 바이트를 임베딩합니다. 해당 바이트는 임베디드 데이터 리소스의 바이트이며, 임베딩 방식은 단순 데이터 임베딩 또는 청크 데이터 임베딩 중 어느 것이든 가능합니다.

[결합되지 않은 프로파일]

프로파일로서, constituents 구성 요소가 결합된 명세 집합에 속하고, 이 집합은 연결된 프로파일 인스턴스에 속하며, 해당 구성 요소에 null이 아닌 지정자가 최대 하나 포함되어 있습니다.

[비콘텐츠 이미지]

이미지 리소스로, 의미상 중요한 콘텐츠를 포함하지 않습니다. 예를 들어 배경 디자인을 표현하는 래스터 이미지로, 표시되지 않더라도 의미상 중요한 콘텐츠의 표시에 영향을 주지 않습니다.

[중첩되지 않은 임베디드 소스]

source 요소로, 자식 data 요소를 지정하며, 이 자식은 실제 바이트의 표현을 임베딩하지 않습니다. 해당 바이트는 임베디드 데이터 리소스의 바이트입니다.

[중첩하지 않는 프로파일]

프로파일로, 하나 이상의 자식 ttp:profile 요소를 참조하지 않고 정의됩니다. 즉, 자식 ttp:profile 요소를 포함하지 않습니다. constituents 구성 요소가 속한 프로파일 인스턴스가 중첩하지 않는 프로파일과 연결되어 있다면, 이 구성 요소는 null입니다.

[비인라인 애니메이션]

Animation.class 요소 그룹에 속한 요소로, 다음 요소와 분리하여 비인라인으로 정의됩니다: 애니메이션과 연결된 콘텐츠 요소 또는 region 요소입니다. 비인라인 애니메이션은 animation 요소의 자식으로 헤더 (head 요소)에 나타나며, 이 헤더는 문서 인스턴스에 속합니다. 일대다 관계가 참조되는 비인라인 애니메이션 요소와 이를 참조하는 콘텐츠 요소 및 region 요소 사이에 존재합니다.

[비인라인 영역]

region 요소로, 다음 요소와 분리하여 비인라인으로 정의됩니다: 해당 영역과 연결된(해당 영역에 선택되어 들어갈) 콘텐츠 요소 입니다. 비인라인 영역은 layout 요소의 자식으로 헤더 (head 요소)에 나타나며, 이 헤더는 문서 인스턴스에 속합니다. 일대다 관계가 참조되는 비인라인 영역 요소와 이를 참조하는 콘텐츠 요소 사이에 존재합니다. 기본 비인라인 영역은 비인라인 영역이 명시적으로 지정되지 않으면 암시됩니다.

[재정의 콘텐츠 프로파일]

콘텐츠 프로파일로, 다른 모든 가능한 콘텐츠 프로파일 결정 결과를 재정의하도록 결정된 것입니다.

[재정의 처리기 프로파일]

처리기 프로파일로, 다른 모든 가능한 처리기 프로파일 결정 결과를 재정의하도록 결정된 것입니다.

참고:

예를 들어, 선택적인 profile 또는 codecs 매개변수는 다음에 정의되어 있습니다: [TTML Profile Registry], §2, 미디어 유형 등록. 이를 콘텐츠 처리기가 상위 수준 프로토콜로 사용하여 재정의 프로파일을 결정할 수 있습니다.

[픽셀 종횡비]

PAR의 정의를 참조하시기 바랍니다.

[표시 맥락]

표시 처리 맥락을 참조하시기 바랍니다.

[표시 처리 맥락]

가상의 디스플레이 장치로, 루트 컨테이너 영역과 관련 미디어 객체 영역이 이 장치에 표시됩니다.

[표시 맥락 좌표 공간]

표시 맥락과 연결된 좌표 공간입니다.

참고:

주어진 표시 처리기 구현에서는, 디스플레이 픽셀이 논리 픽셀과 문서 좌표 공간에서 연결되어 있고, 이 디스플레이 픽셀이 정확히 대응할 수 있습니다: 표시 픽셀과의 대응이며, 이 픽셀은 표시 맥락 좌표 공간에 있습니다; 그러나 이러한 정확한 대응이 반드시 적용되는 것은 아니며, 특히 이 좌표 공간 사이의 구현 정의 매핑에는 픽셀 종횡비, 해상도, 색 공간, 색상 샘플 깊이 및 그 밖의 구현별 속성에 대한 변환이 적용될 수 있습니다.

[표시 관련 요소]

(1) 표시 가능한 콘텐츠를 포함하거나 표현하거나, (2) 콘텐츠의 표시에 영향을 주는 요소입니다. 전자의 예로는 모든 콘텐츠 요소와 특정 임베디드 콘텐츠 요소가 있으며, 특히 audio 및 image가 있습니다. 후자의 예로는 인라인 animate 및 set이 있습니다. 메타데이터 요소는 이 정의에서 제외된다는 점에 유의하시기 바랍니다.

[표시 처리기]

콘텐츠 처리기로, 레이아웃, 서식 지정 및 렌더링, 즉 표시를 수행하는 것이 목적이며, 그 대상은 시간 지정 텍스트 마크업 언어 콘텐츠입니다. 이때 이 명세에 정의된 표시 의미론을 적용합니다.

[처리기]

콘텐츠 처리기를 참조하시기 바랍니다.

[처리기 프로파일]

프로파일로서, (1) type 구성 요소의 값이, 연결된 프로파일 인스턴스에서 processor이며, (2) 해당 프로파일의 기능 및 확장 모음은 콘텐츠 처리기가 구현(지원)해야 하거나 구현(지원)할 수 있는 것입니다.

[프로파일]

기능 및 확장 명세의 모음으로, 내부화(인스턴스화)되면 프로파일 인스턴스 상태 객체로 표현됩니다. 프로파일의 유형은 콘텐츠 프로파일 또는 처리기 프로파일입니다.

[프로파일 정의 문서]

시간 지정 텍스트 프로파일 문서 또는 시간 지정 텍스트 프로파일 문서 인스턴스이며, 사용 맥락에 따라 정해집니다.

[프로파일 프래그먼트 식별자]

프래그먼트 식별자로, 내부에 정의된 프로파일에 이름을 붙이거나 이를 참조하는 데 사용됩니다. 여기서 내부란 문서 인스턴스의 내부를 의미합니다.

[프로파일 처리]

다음 [지원되지 않는 처리기 프로파일이면 중단] 절차를 수행하는 과정입니다. 부수 효과로 다음을 결정합니다: 유효 콘텐츠 프로파일(필요한 경우) 및 유효 처리기 프로파일이며, 이들은 문서 인스턴스의 프로파일입니다.

[프로파일 명세]

기능 명세 또는 확장 명세, 또는 이들의 내부 상태 표현입니다.

[축소된 XML 정보 집합]

XML 정보 집합 [XML InfoSet]으로, B 축소된 XML 정보 집합에 명시된 제약 조건을 충족합니다.

[참조 데이터 임베딩]

임베디드 콘텐츠 요소로, 다음 리소스의 콘텐츠를 간접적으로 참조합니다: 임베디드 콘텐츠 리소스이며, 이때 해당 src 속성을 사용합니다.

[region]

루트 컨테이너 영역 또는 콘텐츠 영역이며, 한정어 없이 사용하면 후자를 가리킵니다.

참고:

문서 표시와 연결된 루트 컨테이너 영역은 유일하게 하나만 존재하지만, 이 명세는 시간에 걸쳐 사용하거나 특정 시점에 사용하는 콘텐츠 영역의 수를 제한하지 않습니다. 그러나 일부 콘텐츠 프로파일은 이러한 제한을 명시합니다.

[관련 미디어 객체]

미디어 객체로(null일 수 있음), 문서 인스턴스와 연결되거나 그 밖의 방식으로 관련됩니다. 예를 들어, 결합된 오디오/비디오 미디어 객체로, 문서 인스턴스가 이 객체에 대한 캡션 또는 자막 정보를 제공하며, 해당 문서 인스턴스가 이 객체와 연결됩니다.

[관련 미디어 객체 영역]

표시 처리 맥락의 영역으로, null이 아닌 시각적 관련 미디어 객체가 표시되는 곳입니다.

[상대 치수]

인라인 진행 축 또는 블록 진행 축상의 길이를 나타내는 스칼라 값으로, 해당 축은 적용 가능한 쓰기 모드에 따릅니다.

[루트 컨테이너 영역]

유일한 논리적 직사각형 영역으로, 좌표계를 설정하며 이 안에 콘텐츠 영역이 배치되고 선택적으로 잘립니다. 관련 내용은 H 루트 컨테이너 영역 의미론도 참조하시기 바랍니다.

참고:

루트 컨테이너 영역에는 테두리나 패딩이 없으므로, 테두리, 패딩 및 콘텐츠 직사각형의 경계가 일치합니다.

[루트 시간 범위]

시간 범위(구간)로, 문서 인스턴스의 시간적 시작과 끝으로 정의되며, 외부 애플리케이션 또는 표시 맥락과의 관계를 기준으로 합니다.

[루비 컨테이너 span]

span 요소로, 다음 속성의 계산값이 tts:ruby에 대해 "container", "baseContainer", 또는 "textContainer"인 경우입니다.

[유의미한 텍스트 노드]

유의미한 텍스트 노드는 텍스트 노드로, 하나 이상의 유의미한 데이터 문자를 포함합니다. 데이터 문자가 유의미한지 여부는 선언된 콘텐츠 모델과 요소 유형에 정의된 의미론에 따라 결정됩니다. 해당 요소 유형은 텍스트 노드의 부모 요소 노드의 유형이며, 자세한 내용은 [XML 1.0], §3.2를 참조하시기 바랍니다. 특히, 부모 요소 유형의 콘텐츠 모델이 요소 콘텐츠이면, 어떠한 데이터 문자도 유의미하지 않습니다. 그러나 부모 요소 유형의 콘텐츠 모델이 혼합 콘텐츠이면, 부모 요소 유형의 의미론과 적용된 스타일 속성(이 명세에 정의된 대로)에 따라 다음이 결정됩니다: 데이터 문자가 특정 사용 맥락에서 유의미한지(무시되지 않는지) 아닌지(무시되는지)입니다.

참고:

데이터 문자는 다음으로 간주되는 모든 문자입니다: 문자 데이터이며, 이는 [XML 1.0], §2.4에 정의되어 있습니다. 또는 구체적 인코딩이 A 구체적 인코딩을 기반으로 하지 않는 경우에는 이에 해당하는 문자입니다.

[단순 데이터 임베딩]

data 요소로, 실제 바이트의 표현을 직접 임베딩하며, 해당 바이트는 임베디드 데이터 리소스의 바이트입니다. 이때 해당 자식 chunk 요소를 사용하지 않습니다.

[SMPTE 타임 코드]

타임 코드로, 그 형식과 의미론은 [SMPTE ST 12-1]에 의해 정립되며, 방송 오디오/비디오 스트림과 같은 미디어 콘텐츠에 임베딩되거나 그 밖의 방식으로 연결될 수 있습니다.

[소스를 통한 데이터 임베딩]

임베디드 콘텐츠 요소로, 다음 리소스의 콘텐츠를 간접적으로 참조합니다: 임베디드 콘텐츠 리소스이며, 이때 해당 자식 source 요소를 사용합니다.

[지정된 스타일 집합]

스타일 집합으로, 지정된 스타일 값을 포함하며, 이는 10.4.4.2 지정된 스타일 집합 처리에 따라 결정됩니다.

[음성 데이터 리소스]

데이터 리소스로, 다음 처리기의 출력에서 생성된 샘플로 구성됩니다: 음성 합성 처리기입니다.

[음성 합성 처리기]

선택적인 구성 요소로, 콘텐츠 처리기에 속하며, 텍스트 콘텐츠를 음성 오디오로 렌더링하도록 합성하는 기능을 수행합니다.

[저장 종횡비]

SAR의 정의를 참조하시기 바랍니다.

[스타일 집합]

스타일 속성 집합으로, 스타일 속성 집합에 정의되어 있습니다.

[스타일이 적용되는 요소]

계산된 스타일 집합과 연결되어 있거나 연결될 수 있는 요소입니다.

[스타일 지정 속성]

전역 속성으로, (1) TT 스타일 네임스페이스 중 하나에 정의되거나, (2) 기타 네임스페이스에 정의되며, 이 속성을 정의하는 모듈이 해당 속성을 스타일 지정 속성으로 선언한 것입니다.

참고:

10.4.4 스타일 결정 처리의 의미론을 정의하기 위해, 스타일 지정 속성은 지정된 것이든 기본값이 적용된 것이든 스타일 속성으로 내부화(인스턴스화)되도록 의도됩니다.

[합성 문서 동기화 기준]

문서 수준의 동기화 기준 [SMIL 3.0], §5.7.1로, 문서 처리 맥락이 합성하거나 그 밖의 방식으로 설정하며, 관련 미디어 객체 또는 다른 처리 기준을 따릅니다.

[합성 SMPTE 문서 동기화 기준]

합성 문서 동기화 기준으로, SMPTE 타임 코드 값에서 구성되며, 이 값은 관련 미디어 객체에 임베딩되거나 연결되어 있거나, 그 밖의 방식으로 문서 처리 맥락에 의해 결정됩니다.

[시간적으로 활성 상태]

구문적 또는 의미적 기능, 예를 들어 요소 또는 요소의 표시는, 선택한 시간 기준의 현재 시간이 해당 기능의 활성 시간 구간과 교차할 때 시간적으로 활성 상태입니다.

[시간적으로 활성 상태인 영역]

영역으로, 시간적으로 활성 상태인 것입니다.

[텍스트 방향]

글리프 영역의 방향을 회전 각도로 나타낸 것으로, 0°는 upright 방향을 나타내고, 90°, 즉 시계 방향으로 90도는 sideways 방향을 나타냅니다. 관련 내용은 10.2.45 tts:textOrientation도 참조하시기 바랍니다.

[시간이 지정되는 요소]

다음 속성의 지정을 허용하는 유형의 모든 요소입니다: begin 속성입니다.

[시간 지정 텍스트]

시간 정보와 내재적 또는 외재적으로 연관된 텍스트 정보입니다.

[시간 지정 텍스트 저작 시스템]

시간 지정 텍스트 마크업 언어 콘텐츠를 가져오고 내보낼 수 있는 콘텐츠 저작 시스템입니다.

[시간 지정 텍스트 콘텐츠 문서]

추상 문서로, 다음에 해당한다고 주장되거나 확인된 것입니다: 유효한 추상 문서 인스턴스이며, TTML 콘텐츠 문서 유형에 해당합니다.

[시간 지정 텍스트 콘텐츠 문서 인스턴스]

시간 지정 텍스트 콘텐츠 문서의 구체적인 실현으로, 관련 내용은 A 구체적 인코딩도 참조하시기 바랍니다.

[시간 지정 텍스트 문서 인스턴스]

다음 문서의 구체적인 실현입니다: 시간 지정 텍스트 마크업 언어 문서이며, 구체적인 형태는 참조하는 맥락에 따라 달라집니다. TTML 문서 인스턴스 또는 간단히 문서 인스턴스라고도 합니다.

[시간 지정 텍스트 중간 문서]

추상 문서로, 다음에 해당한다고 주장되거나 확인된 것입니다: 유효한 추상 문서 인스턴스이며, TTML 중간 문서 유형에 해당합니다.

[시간 지정 텍스트 중간 문서 인스턴스]

시간 지정 텍스트 중간 문서의 구체적인 실현으로, 관련 내용은 A 구체적 인코딩을 참조하시기 바랍니다.

[시간 지정 텍스트 마크업 언어]

시간 지정 텍스트 콘텐츠, 해당 콘텐츠의 중간 표현, 또는 해당 콘텐츠나 콘텐츠 처리기의 프로파일을 표현하는 콘텐츠 유형입니다.

[시간 지정 텍스트 마크업 언어 문서]

추상 문서로, 다음에 해당한다고 주장되거나 확인된 것입니다: 유효한 추상 문서 인스턴스입니다.

[시간 지정 텍스트 프로파일 문서]

추상 문서로, 다음에 해당한다고 주장되거나 확인된 것입니다: 유효한 추상 문서 인스턴스이며, TTML 프로파일 문서 유형에 해당합니다.

[시간 지정 텍스트 프로파일 문서 인스턴스]

시간 지정 텍스트 프로파일 문서의 구체적인 실현으로, 관련 내용은 A 구체적 인코딩을 참조하시기 바랍니다.

[최상위 프로파일]

프로파일로, ttp:profile 요소로 정의되며, 이 요소는 head 요소의 자식으로 나타납니다. 해당 헤더는 시간 지정 텍스트 콘텐츠 문서 인스턴스에 속합니다.

[변환 처리기]

콘텐츠 처리기로, 변환하거나 그 밖의 방식으로 다시 작성하는 것이 목적이며, 시간 지정 텍스트 마크업 언어 콘텐츠를 시간 지정 텍스트 마크업 언어 또는 다른 임의의 콘텐츠 형식으로 변환합니다. 전자의 예로는 TTML 기능을 제거하거나 다시 작성하여 TTML 프로파일에 적합하도록 만드는 처리기가 있습니다. 후자의 예로는 TTML을 완전히 다른 시간 지정 텍스트 형식으로 변환하는 처리기가 있습니다. 이 명세는 변환 처리를 위한 대상 프로파일이나 형식을 별도로 정의하지 않으므로, 이 명세에서 추가적인 변환 의미론은 정의하지 않습니다.

[미지정 프로파일]

프로파일로, 프로파일 지정자와 연결되지 않으며, 해당 프로파일 정의의 맥락에서 암시적으로 참조됩니다. 익명 프로파일이라고도 합니다.

[유효한 추상 문서 인스턴스]

추상 문서 인스턴스로, 유효성을 평가한 결과, 4 문서 유형에 정의된 대로 유효하다고 판정된 것입니다.

[유효성 검사 처리]

유효성 검사 처리기가 수행하는 기능입니다.

[유효성 검사 처리기]

선택적인 구성 요소로, 콘텐츠 처리기에 속하며, 그 기능은 유효성 검사 처리를 후보 문서 인스턴스에 대해 수행하는 것입니다. 이는 특정 다른 유형의 처리를 수행하기 전에 이루어지며, 해당 유효성 검사 처리는 [문서 유효성 검사] 절차를 수행하는 것으로 구성되고, 이는 5.3 유효성 검사에 정의되어 있습니다.

[유효성 검사 기능이 있는 콘텐츠 처리기]

콘텐츠 처리기로, 유효성 검사 처리기 구성 요소를 전처리 단계로 구현하며, 이 단계는 콘텐츠 처리기로서의 주된 기능을 수행하기 전에 실행됩니다.

참고:

유효성 검사 기능이 있는 콘텐츠 처리기는 (1) 문서 인스턴스의 유효성을 검사(또는 검증)하는 단일 기능만 가질 수 있으며, 이 경우 유효성 검사 기능이 있는 변환 처리기로 볼 수 있고, 그 출력은 유효한지 여부를 나타냅니다. 또는 (2) 여러 기능을 가질 수 있으며, 첫 번째 기능은 문서 인스턴스의 유효성을 검사(또는 검증)하는 것이고, 그다음 주된 기능을 변환 처리기 또는 표시 처리기로서 수행합니다.

참고:

유효성 검사 처리를 수행할 때, 적합한 유효성 검사 기능이 있는 콘텐츠 처리기는 유효성 검사 처리와 콘텐츠 처리를 번갈아 수행할 수 있습니다. 단, 주어진 콘텐츠 단위에 대해 후자가 시간적으로 전자보다 먼저 수행되어서는 안 됩니다.

[수직축]

수평면에 수직인 축입니다.

[너비]

절대 치수이며, 수평축상의 치수입니다.

[쓰기 모드]

토큰의 열거 집합으로, 각 토큰은 인라인 및 블록 지향 콘텐츠 모두의 흐름 축과 방향의 조합을 지정합니다. 관련 내용은 10.2.51 tts:writingMode를 참조하시기 바랍니다.

2.3 문서 표기 규칙

이 명세의 규범적 본문에서 사용하는 표현인 할 수 있습니다, 하는 것이 좋습니다 및 해야 합니다는 다음과 같이 정의됩니다:

할 수 있습니다

적합한 문서 및(또는) TTML 처리기는 설명된 대로 동작하는 것이 허용되지만, 반드시 그렇게 할 필요는 없습니다.

하는 것이 좋습니다

적합한 문서 및(또는) TTML 처리기는 설명된 대로 동작하는 것이 강하게 권장되지만, 반드시 그렇게 할 필요는 없습니다.

해야 합니다

적합한 문서 및(또는) TTML 처리기는 설명된 대로 동작해야 하며, 그렇지 않으면 오류입니다.

규범적 명세의 문장이 명령형을 취하면, 해야 합니다라는 표현이 적용되는 것으로 취급해야 합니다. 또한 규범적 문장이 서술형을 취하고, 그 문장이 해야 합니다의 적용을 받으면, 마찬가지로 해야 합니다라는 표현이 적용되는 것으로 취급해야 합니다.

참고:

예를 들어, "X를 오류로 취급하세요" 및 "X를 오류로 간주하세요"라는 문구는 사용 맥락에서 필수 요구 사항으로 읽어야 합니다. 마찬가지로, 명세 본문이 "X를 적용해야 합니다", "X가 적용됩니다" 또는 "X는 필수입니다"이고, "X"가 다시 "X는 Y 및 Z입니다"로 정의되면, 추이적 폐쇄에 따라 이 마지막 서술형 문구는 사용 맥락에서 "Y는 필수입니다" 및 "Z는 필수입니다"로 읽어야 합니다.

XML 표현 및 그 밖의 관련 용어에 대한 모든 규범적 구문 정의는 연한 황주황색 배경으로 표시되며, 다음과 같이 "XML 표현" 또는 "구문 표현"이라는 레이블이 붙습니다:

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

XML 표현에서 굵은 글씨로 된 속성 이름(예: 위의 count)은 필수 속성 정보 항목을 나타내며, 나머지는 선택 사항입니다. 속성 정보 항목에 열거형 유형 정의가 있으면, 값들은 위의 size처럼 세로줄로 구분하여 표시됩니다. 기본값이 있으면 콜론 뒤에 표시됩니다. 속성 정보 항목에 내장 단순 유형 정의가 있고, 그 정의가 [XML Schema Part 2]에 정의되어 있으면, 해당 정의로 연결되는 하이퍼링크를 제공합니다.

한정되지 않은 속성은 이 명세에서 명시적으로 정의한 경우가 아니면 허용되지 않습니다.

참고:

N.1 요소 유래를 제외하고, 속성의 이름(네임스페이스로 한정될 수 있음) 앞에는 '@' (COMMERCIAL AT) 문자를 붙여 해당 속성과 이름이 같은 요소 유형을 구분합니다. 이때 '@' 문자는 속성의 실제 이름에 포함되지 않습니다. 예를 들어, @ttm:agent는 ttm:agent 속성을 가리키지만, ttm:agent는 ttm:agent 요소를 가리킵니다.

연한 황주황색 배경으로 표시된 정보 항목은 사용이 권장되지 않습니다(예: 위에 표시된 tiny 값으로, size 속성의 값입니다). 사용이 권장되지 않는 정보 항목은 TTML 문서 인스턴스에 나타날 수 있지만 나타나지 않는 것이 좋으며, 유효성 검사 기능이 있는 콘텐츠 처리기는 이러한 항목이 나타나면 경고를 보고하는 것이 좋습니다. 연한 자홍색 배경으로 표시된 정보 항목은 폐기된 것입니다(예: 위에 표시된 micro 값으로, size 속성의 값입니다). 폐기된 정보 항목은 TTML 문서 인스턴스에 나타나서는 안 되며, 유효성 검사 기능이 있는 콘텐츠 처리기는 이러한 항목이 나타나면 오류를 보고하는 것이 좋습니다. 항목에 대한 이러한 지정은 명세 본문에도 명시적으로 언급됩니다.

정보 항목에 허용되는 콘텐츠는 문법 조각으로 표시되며, 클레이니 연산자 ?, * 및 +를 사용합니다. 그 안의 각 요소 이름은 해당 요소의 설명으로 연결되는 하이퍼링크입니다.

선형 공백(LWSP)이라는 용어는 다음 문자로 이루어진 비어 있지 않은 시퀀스로 해석해야 합니다: SPACE (U+0020), TAB (U+0009), CARRIAGE RETURN (U+000D) 또는 LINE FEED (U+000A). 이는 [XML 1.0]에 정의된 생성 규칙 [3] S에 해당합니다.

값 구문 표현식의 명세에는 다음 표기 규칙을 사용합니다:

  • 리터럴 항(따옴표 안에 지정됨)은 나타나는 경우, 지정된 것과 정확히 동일하게 나타나야 합니다 (따옴표 자체는 제외합니다);

  • 리터럴 '\\'는 하나의 역슬래시, 즉 REVERSE SOLIDUS (U+005C)로 해석됩니다;

  • 연결된(나란히 놓인) 항들은 모든 항이 명시된 순서대로 나타나야 함을 의미합니다. 예를 들어, a b는 다음 항들이 a 및 b 모두 존재하며 전자가 후자보다 앞선다는 뜻입니다;

  • 세로줄(|)은 둘 이상의 대안을 구분하며, 그중 정확히 하나가 나타나야 합니다;

  • 이중 세로줄(||)은 둘 이상의 선택 항목을 구분하며, 그중 하나 이상이 중복 없이 임의의 순서로 나타나야 하고, <lwsp>로 구분되어야 합니다;

  • 여는 소괄호와 닫는 소괄호(())는 그룹화 및 연산자 우선순위 결정에 사용됩니다;

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

  • 여는 중괄호와 닫는 중괄호({})는 두 가지 방식으로 사용되며, 일반적으로 맥락만으로 어느 방식이 적용되는지 판단할 수 있습니다(그렇지 않으면 주변 본문에서 어느 방식이 적용되는지 명확히 설명합니다):

    • 반복 횟수 또는 범위를 표현하며, 다음 형식 중 하나를 취합니다:

      • {count}

      • {minimum,maximum}

    • 문자 집합을 표현하며, 그중 하나가 나타나야 합니다. 또한 집합은 집합 간의 차로 지정할 수 있으며, 예를 들어 {char-{specials}}는 모든 XML 문자에서 특수 문자 집합을 뺀 것을 나타냅니다.

  • 클레이니 연산자 ?, * 및 +는 각각 앞선 항이 0개 또는 1개, 0개 이상, 1개 이상임을 표현합니다;

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

    1. 그룹화

    2. 연결(병치)

    3. ||

    4. |

다음 값 구문을 충족하는 표현식 사이에 필수로 나타나는 선형 공백, 즉 || 값 구문의 경우를 제외하면, 값 구문 정의에 명시적으로 표시되지 않은 공백은 허용되지 않습니다. 이러한 표시는 <lwsp> 비단말 기호로 이루어집니다.

반대로 명시하지 않는 한, 수평 및 수직이라는 용어는 쓰기 모드에 상대적인 의미가 아니라 절대적인 의미로 해석하며, 너비는 수평 축을 따른 치수를, 높이는 수직 축을 따른 치수를 가리킵니다. 모든 예외는 본문에 명시적으로 표시됩니다.

"및(또는)"이라는 문구는 포괄적 논리합 (p∨q)을 나타내며, "… 또는 … 중 하나"라는 구문은 배타적 논리합 (p⊕q)을 나타냅니다. 그 밖의 경우 "또는"의 의미는 해당 사용 맥락에서 암시됩니다.

비규범적이라고 명시적으로 표시되지 않은 이 명세의 모든 콘텐츠는 규범적인 것으로 간주합니다. 절 또는 부록의 제목에 "비규범적"이라는 표현이 포함되어 있으면, 해당 절 또는 부록 전체를 비규범적인 것으로 간주합니다.

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

예제 코드 조각은 연한 청록색 배경으로 표시되며, 다음과 같이 "예제 조각"이라는 레이블이 붙습니다:

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

참고:

여기에 표시된 예제 코드 조각은 올바른 형식의 XML로 표현되어 있지만, 완전하고 유효한 TTML 문서가 되도록 의도된 것은 아닙니다; 일반적으로 의도한 예제에 초점을 맞추기 위해 축약되어 있습니다. 특히, 조각은 일반적으로 추가 요소 및(또는) 속성으로 보완해야 TTML 문서 적합성 요구 사항을 충족할 수 있습니다.

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

3 적합성

이 절은 TTML2 문서와 처리기에 대한 일반적인 적합성 요구 사항을 규정합니다.

3.1 문서 적합성

시간 지정 텍스트 문서 인스턴스는 다음 기준을 모두 충족하면 이 명세에 적합합니다.

  1. 문서 인스턴스를 문서 교환 맥락에서 전송하며, 이때 미디어 타입 [MIME 미디어 타입]이 교환되는 문서 인스턴스의 콘텐츠 유형을 식별한다면, 지정된 미디어 타입은 application/ttml+xml이어야 하며, [TTML 프로파일 레지스트리]의 §2, 미디어 타입 등록에 적합해야 합니다.

  2. 문서 인스턴스는 축소된 XML 정보 집합이거나 그러한 형태로 표현될 수 있으며, 그 정의는 B 축소된 XML 정보 집합에 따릅니다.

  3. 축소된 XML 정보 집합 중 해당 문서 인스턴스에 대응하는 정보 집합은 추상 문서 유형 중 하나와 연결되어 있거나 연결될 수 있으며, 해당 유형은 4 문서 유형에서 정의됩니다.

  4. 축소된 XML 정보 집합 중 해당 문서 인스턴스에 대응하는 정보 집합은 유효한 추상 문서 인스턴스이며, 그 유효성은 연결된 추상 문서 유형에 따릅니다.

  5. 축소된 XML 정보 집합은 이 명세에서 정의한 모든 추가적인 필수 구문적 제약과 의미론적 제약을 충족합니다. 또한 이 정보 집합은 웹 콘텐츠 접근성 지침을 충족하는 것이 좋으며, 해당 지침은 [WCAG]에서 규정합니다.

3.2 처리기 적합성

이 절은 TTML2 처리기의 적합성 요구 사항을 일반 처리기 적합성과 두 가지 특수 처리기 적합성 유형인 변환 처리기 적합성 및 표시 처리기 적합성으로 규정합니다.

참고:

이 절에서 정의하는 적합성 요구 사항은 TTML 문서 인스턴스의 정적인 표현을 처리하는 처리기를 대상으로 합니다. 여기서 TTML 문서 인스턴스를 수정하는 처리기, 예를 들어 TTML 문서 인스턴스를 수정하는 저작 도구나 편집 도구에는 이 명세가 적용되지 않습니다. 다만 일련의 수정을 수행하여 얻은 최종 결과인 TTML 문서 인스턴스가 TTML 콘텐츠의 형식적 유효성을 충족해야 한다는 점은 예외이며, 그 유효성은 3.1 문서 적합성에서 정의합니다.

3.2.1 일반 처리기 적합성

TTML2 콘텐츠 처리기는 다음의 일반 처리기 기준을 모두 충족하면 이 명세에 적합합니다.

  1. 처리기는 개념적으로 축소된 XML 정보 집합 표현을 인스턴스화할 수 있는 메커니즘을 하나 이상 제공하며, 해당 표현은 적합한 문서 인스턴스를 나타냅니다.

  2. 처리기는 프로파일 처리를 수행합니다.

    참고:

    프로파일 처리의 수행에는 어느 정도의 부분적 유효성 검사가 내포되지만, [문서 유효성 검사] 절차를 수행하는 수준에는 미치지 않습니다. 이 절차는 바로 다음 항목에서 설명합니다. 특히 구현은 프로파일 관련 어휘의 구문적 표현과 이 어휘의 사용에 적용되는 모든 필수적인 구문적 또는 의미론적 제약을 해당 어휘를 사용하기 전에 기본적으로 검증할 것으로 예상됩니다. 프로파일 처리가 구문적 또는 의미론적 제약의 중대한 위반을 탐지하지 않고 완료되었다면, 더 완전한 유효성 검사를 수행할 수 있으며, 이때 사용하는 절차는 [문서 유효성 검사]입니다.

  3. 처리기가 유효성 검사 기능이 있는 콘텐츠 처리기라면 다음을 수행합니다.

    1. 암시적으로 또는 명시적으로 축소된 XML 정보 집합 표현을 연결하는 메커니즘을 하나 이상 제공합니다. 이 표현은 후보 문서 인스턴스를 나타내며, 연결 대상은 추상 문서 유형 중 하나로, 4 문서 유형에서 정의합니다.

    2. [문서 유효성 검사] 절차를 수행합니다.

    참고:

    이 명세는 유효성 검사 처리의 수행과 프로파일 처리의 수행 사이에 엄격한 순서를 정의하지 않습니다. 프로파일 처리는 앞선 항목에서 설명합니다. 특히 이 두 처리 단계는 서로 번갈아 수행하거나 반복할 수 있으며, 두 단계 모두 문서 인스턴스에 대한 추가적인 변환 또는 표시 처리보다 먼저 완료되면 됩니다.

    위의 설명에도 불구하고, 유효성 검사 처리와 프로파일 처리 사이에는 암묵적인 순서 관계가 있습니다. 구체적으로, 처리를 수행하려면, 즉 유효성 검사 처리를 수행하려면 다음 값이 결정되어야 합니다. 유효 유효성 검사 프로파일의 값입니다. 이 값을 얻으려면 유효 콘텐츠 프로파일의 값을 결정하거나, 그 값이 null이면 유효 처리기 프로파일의 값을 결정해야 합니다. 이 두 값은 프로파일 처리 중에 얻습니다.

    참고:

    유효성 검사 처리와 프로파일 처리를 번갈아 수행하는 예로, 다음 시나리오를 제시된 순서대로 살펴볼 수 있습니다.

    • 입력 문서 소스의 올바른 형식을 검증합니다(유효성 검사 처리).

    • 입력 문서 소스를 잠재적으로 유효한 추상 문서 인스턴스로 인스턴스화합니다(일반 처리).

    • 애플리케이션에 내장된 의미론을 사용하여 유효성 검사 상태를 초기화합니다 (유효성 검사 처리).

    • 애플리케이션에 내장된 의미론을 사용하여 프로파일 상태를 초기화합니다(프로파일 처리).

    • 유효성 검사 관련 어휘의 유효성을 검사합니다(유효성 검사 처리).

    • 유효한 유효성 검사 관련 어휘를 사용하여 유효성 검사 상태를 갱신합니다 (유효성 검사 처리).

    • 프로파일 관련 어휘의 유효성을 검사합니다(유효성 검사 처리).

    • 유효한 프로파일 관련 어휘를 사용하여 프로파일 상태를 갱신합니다(프로파일 처리).

    • [지원되지 않는 처리기 프로파일이면 중단] 절차의 중단 단계를 수행합니다(프로파일 처리).

    • 전체 문서의 유효성을 검사하며, 새 프로파일 상태에 따라 필요한 경우 유효성 검사 및 프로파일 어휘의 유효성을 다시 검사합니다(유효성 검사 처리).

    • 처리가 중단되지 않았다면 변환 또는 표시 처리를 계속합니다(일반 처리).

  4. 처리기는 적합한 문서 인스턴스의 처리를 선험적으로 거부하거나 중단하지 않습니다. 여기서 문서 인스턴스의 처리에 대한 예외는 다음과 같습니다.

    1. 처리기가 필수적인 기능 중 일부를 지원하지 않는 경우입니다. 해당 기능은 적용 대상으로 선언된 TTML 프로파일에 명시되거나 내포되며, 그 적용 대상은 문서 인스턴스입니다.

    2. 유효성 검사 오류가 다음 절차를 수행하는 중에 발생한 경우입니다. [문서 유효성 검사] 절차입니다.

  5. 처리기는 이 명세에서 정의한 모든 필수 처리 의미론을 지원합니다.

    참고:

    필수 의미론이라는 표현은 적합성 핵심 표현인 해야 합니다 및 해서는 안 됩니다의 모든 명시적인 사용뿐 아니라, 이러한 핵심 표현에서 합리적으로 추론할 수 있는 모든 선언적 문장을 가리킵니다.

    참고:

    필수 의미론에 대한 지원은 기능 또는 확장에 적용되며, 해당 기능 또는 확장을 TTML 콘텐츠 처리기가 지원하는 경우에만 적용됩니다.

  6. 처리기가 이 명세에서 정의한 선택적 처리 의미론의 일부를 지원한다면, 정의된 의미론과 일치하는 방식으로 지원합니다.

    참고:

    선택적 의미론이라는 표현은 적합성 핵심 표현인 하는 것이 좋습니다, 하지 않는 것이 좋습니다, 할 수 있습니다, 하지 않을 수 있습니다의 모든 명시적인 사용과, 이러한 핵심 표현에서 합리적으로 추론할 수 있는 모든 선언적 문장을 가리킵니다.

3.2.2 변환 처리기 적합성

TTML 콘텐츠 처리기는 적합한 TTML2 변환 처리기로 간주됩니다. 단, 다음 기준을 모두 충족해야 합니다.

  1. 처리기는 다음 절에서 규정한 모든 요구 사항을 충족합니다. 3.2.1 일반 처리기 적합성입니다.

  2. 처리기는 TTML 변환 프로파일을 지원하며, 이 프로파일은 G.3 TTML2 변환 프로파일에서 규정합니다.

  3. 처리기는 DFXP 변환 프로파일을 지원하며, 이 프로파일은 G.6 DFXP 변환 프로파일에서 규정합니다.

3.2.3 표시 처리기 적합성

TTML 콘텐츠 처리기는 적합한 TTML2 표시 처리기로 간주됩니다. 단, 다음 기준을 모두 충족해야 합니다.

  1. 처리기는 다음 절에서 규정한 모든 요구 사항을 충족합니다. 3.2.1 일반 처리기 적합성입니다.

  2. 처리기는 TTML 표시 프로파일을 지원하며, 이 프로파일은 G.2 TTML2 표시 프로파일에서 규정합니다.

  3. 처리기는 DFXP 표시 프로파일을 지원하며, 이 프로파일은 G.5 DFXP 표시 프로파일에서 규정합니다.

  4. 처리기는 11.3.1.3 중간 동시적 문서 구성과 11.3.1.4 동시적 흐름 처리를 수행합니다.

참고:

적합한 두 표시 처리기가 동일한 적합 문서를 처리할 때 동일한 표시 결과를 생성해야 하는 것은 아닙니다. 예를 들어 서로 다른 표시 처리기는 서로 다른 글꼴, 글꼴 래스터라이저, 줄바꿈 알고리즘을 사용할 수 있으며, 이 명세에서 규정하지 않은 동작을 서로 다르게 구현할 수 있습니다.

3.3 준수 주장

TTML 문서 인스턴스 또는 콘텐츠 처리기의 적합성에 관한 모든 준수 주장은 구현 준수 선언서(ICS)를 참조해야 합니다.

구현 준수 선언서는 이 명세의 필수 기능과 선택적 기능 중 문서 인스턴스 또는 콘텐츠 처리기 구현이 충족하는 모든 기능을 식별해야 합니다. 특히 선언서는 사용하거나 지원하는 TTML 어휘 프로파일을 식별해야 하며, 그 정의는 5.2 프로파일링에 따릅니다. 하위 집합 또는 상위 집합 프로파일을 사용하거나 지원한다면, 해당 하위 집합 또는 상위 집합 프로파일에서 제외하거나 포함하는 기능도 식별해야 합니다.

참고:

앞서 규정한 변환 처리기 적합성과 표시 처리기 적합성의 정의는 각 유형의 처리기가 최소한 두 개의 특정 프로파일을 지원하도록 요구합니다. 하나는 [TTML1]에서 정의한 유형별 프로파일이고, 다른 하나는 이 명세에서 정의한 유형별 프로파일입니다.

이 요구 사항에도 불구하고, 다음과 같은 TTML 콘텐츠 처리기를 구성할 수 있습니다. 변환 또는 표시 처리 기능을 수행하고 일반 처리기 적합성 요구 사항을 충족하지만, 필수 프로파일은 지원하지 않는 처리기입니다. 여기서 필수 프로파일이란 변환 처리기 적합성 또는 표시 처리기 적합성에서 요구하는 프로파일이며, 이 처리기는 그 대신 이 명세의 범위 밖에서 정의한 프로파일만 지원합니다. 이 경우 처리기는 다음을 준수한다고 주장할 수 있습니다. 일반 처리기 적합성입니다. 또한 TTML 변환 처리기 또는 TTML 표시 처리기라고 주장할 수 있지만, 변환 처리기 적합성이나 표시 처리기 적합성을 준수한다고 주장할 수는 없습니다.

문서 인스턴스에 대해 준수를 주장하려면 해당 인스턴스는 다음 중 하나와 연결되어 있어야 합니다.

  1. null이 아닌 유효 콘텐츠 프로파일로서, 명시적으로 지정한 ttp:contentProfiles 속성이나 하나 이상의 최상위 콘텐츠 프로파일에서 파생된 프로파일입니다.

  2. null이 아닌 유효 처리기 프로파일로서, 명시적으로 지정한 ttp:processorProfiles 또는 ttp:profile 속성이나 하나 이상의 최상위 처리기 프로파일에서 파생된 프로파일입니다.

3.4 호환성

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

3.4.1 상위 호환성

적합한 TTML1 처리기는 TTML2 콘텐츠 문서 인스턴스를 처리할 수 있습니다. 단, 알 수 없는 어휘를 무시하고, 알려진 어휘라도 적합한 TTML1 문서에서 허용되지 않는 맥락에 나타나면 무시해야 합니다. 여기서 TTML1 문서란 콘텐츠 문서 인스턴스를 뜻합니다. 그러나 이러한 처리는 콘텐츠를 버리거나 표시하지 못할 수 있으며, 적합한 TTML2 처리기에서 처리할 때 의도한 것과 다르게 콘텐츠를 표시할 수도 있습니다.

참고:

예를 들어 TTML1 처리기가 TTML2에서 정의한 tts:ruby 속성을 무시한다면, 그 처리기는 루비 기능을 사용하는 TTML2 콘텐츠를 여전히 표시할 수 있지만, 의도한 대로 표시하지는 못합니다. 이와 유사하게, TTML1 처리기가 style 요소를 다른 style 요소의 자식으로 만나면, 앞의 중첩된 스타일을 무시할 수 있습니다(TTML1에서는 이 기능을 정의하지 않았기 때문입니다).

3.4.2 하위 호환성

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

4 문서 유형

이 절은 다음 TTML 추상 문서 유형을 정의합니다.

각 추상 문서 유형은 다음 제약으로 구성됩니다.

추상 문서 인스턴스는 유효성의 관점에서 평가할 수 있으며, 유효한 추상 문서 인스턴스로 간주되려면 다음 조건을 충족해야 합니다. 우선 다음을 수행합니다.

  1. 요소 정보 항목 중 이름이 정의된 요소 유형의 모음에 속하지 않는 항목을 모두 제거합니다. 해당 모음은 연결된 추상 문서 유형에서 정의합니다.

  2. 그런 다음, 남아 있는 요소 중 모든 문자 자식이 XML 공백 문자를 나타내고 그 요소의 유형이 비어 있는 것으로 정의된 경우에는 문자 정보 항목 자식을 제거합니다. 해당 정의는 연결된 추상 문서 유형에 따릅니다. 이어서,

  3. 확장된 이름을 가진 모든 속성 정보 항목 중, 그 확장된 이름의 네임스페이스 URI가 표 5-1 – 네임스페이스에 나열되지 않았거나, 표 5-1 – 네임스페이스에 나열되어 있더라도, 해당 속성이 정의된 속성 모음의 구성원이 아니라면 제거합니다. 이 모음은 연결된 추상 문서 유형이 그 속성의 소유 요소 정보 항목에서 사용하도록 정의한 모음입니다.

이러한 수행 후 문서 요소는 허용된 문서 요소 유형 중 하나여야 하며, 허용 여부는 연결된 추상 문서 유형에 따릅니다. 또한 문서 요소의 자손은 각자의 요소 유형에 대한 콘텐츠 명세를 충족하고, 모든 필수 속성이 존재하며, 각 속성의 선언된 값은 해당 속성에 선언된 유형을 충족해야 합니다. 이 유형은 연결된 추상 문서 유형에서 선언합니다.

참고:

적합한 처리기는 적합한 문서 인스턴스를 선험적으로 거부할 수 없지만, 적합한 문서 인스턴스라 하더라도 특정 문서 인스턴스에 대해 작성자나 저작 도구가 더 엄격한 유효성 정의를 충족하도록 제약할 수 있습니다.

참고:

다음 예에서 보듯이, 추상 문서 인스턴스는 유효한 추상 문서 인스턴스일 수 있습니다. 포함된 요소와 속성의 네임스페이스 이름이 표 5-1 – 네임스페이스에 나열되어 있지만, 지역 이름은 이 버전의 명세에서 정의한 어휘에 속하지 않는 경우에도 그러합니다. 구체적으로, foo 요소와 tts:foo 속성은 각각 위의 단계 (1)과 (3)에 따라 제거됩니다. 이는 해당 항목이 연결된 추상 문서 유형의 구성원이 아니기 때문이며, 그 네임스페이스 이름이 표 5-1 – 네임스페이스에 나열되어 있더라도 마찬가지입니다.

예제 조각 – 요소와 속성 제거
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
    <foo>Foo</foo>
    <div>
      <p tts:foo="bar">Bar</p>
    </div>
  </body>
</tt>

4.1 TTML 콘텐츠 문서 유형

TTML 콘텐츠 문서 유형은 추상 문서 유형으로서, 시간 지정 텍스트 마크업 언어의 프로파일에 속하며, 기능적 모듈의 모음으로 정의됩니다.

이 명세는 상위 집합 또는 하위 집합의 유효성을 검사하는 데 사용할 수 있는 두 가지 스키마 유형을 참조하며, 그 대상은 시간 지정 텍스트 콘텐츠 문서 인스턴스입니다.

TTML 콘텐츠 문서 인스턴스의 루트 문서 요소는 tt 요소여야 하며, 그 정의는 8.1.1 tt에 따릅니다.

참고:

이 명세에서 참조하는 스키마는 이 명세에서 정의한 모든 구문적 제약의 유효성을 검사하지는 않으므로, 적합한 TTML 콘텐츠의 상위 집합을 나타냅니다. 특히 위에서 참조한 스키마 중 하나로 유효성 검사를 수행하면 유효성을 거짓 양성으로 판정할 수 있습니다. 예를 들어 RNC 스키마와 XSD 스키마는 모두 tts:fontFamily 속성이 xsd:string XSD 데이터 유형을 충족하도록 규정하지만, 이 데이터 유형은 tts:fontFamily 속성에 사용할 수 있는 값들의 상위 집합입니다.

또한 RNC 스키마는 거짓 음성 유효성 판정을 생성할 수 있습니다. 외부 네임스페이스의 요소에 xml:id 속성을 사용하는 경우가 이에 해당하며, 따라서 적합한 TTML 콘텐츠의 하위 집합을 나타냅니다. 이는 Relax NG 스키마에서 xsd:ID 유형의 속성을 포함하는 와일드카드 패턴을 표현할 때 발생하는 특정한 한계 때문입니다. 이 명세가 문서 인스턴스의 형식적 유효성을 정의할 때는 추상 문서 인스턴스를 기준으로 삼으며, 여기에서는 외부 네임스페이스의 모든 요소와 속성을 제거한다는 점에 유의해야 합니다. 따라서 이러한 거짓 음성의 예외적인 보고는 문서 인스턴스 유효성의 형식적 평가에 영향을 주지 않습니다.

참고:

이 명세에서 참조하는 스키마는 제거 단계 (1)~(3)을 적용한 후 사용하도록 의도되었습니다. 해당 단계는 4 문서 유형에서 규정합니다.

참고:

적합한 일반 처리기는 다음 문서의 입력 수용과 처리를 지원해야 합니다. 시간 지정 텍스트 콘텐츠 문서입니다.

4.2 TTML 중간 문서 유형

TTML 중간 문서 유형은 추상 문서 유형으로서, 다음 문서의 콘텐츠를 표현하는 데 사용하도록 의도되었습니다. 시간 지정 텍스트 콘텐츠 문서입니다. 이 유형에서는 시간 정보를 비계층적(평면적)이고 시간상 선형적인 방식으로 나타내며, 스타일 지정 사항과 같은 일부 정보는 후속 처리를 단순화하기 위해 확정하거나 병합할 수 있습니다. 이 문서 유형은 기능적 모듈의 모음으로 정의됩니다.

이 명세는 다음 인스턴스의 유효성을 검사하는 데 사용할 수 있는 두 가지 스키마 유형을 참조합니다. 시간 지정 텍스트 중간 문서 인스턴스입니다.

TTML 중간 동시적 문서 인스턴스의 루트 문서 요소는 isd:sequence 또는 isd:isd 요소여야 하며, 그 정의는 J 중간 문서 구문에 따릅니다.

참고:

적합한 일반 처리기가 다음 문서의 입력 수용이나 처리를 지원해야 하는 것은 아닙니다. 시간 지정 텍스트 중간 문서입니다.

4.3 TTML 프로파일 문서 유형

TTML 프로파일 문서 유형은 추상 문서 유형으로서, TTML 기능이나 확장의 지원 또는 사용에 관한 제약을 정의하고 전달하는 데 사용하도록 의도되었습니다. 이 문서 유형은 기능적 모듈의 모음으로 정의됩니다.

이 명세는 다음 인스턴스의 유효성을 검사하는 데 사용할 수 있는 두 가지 스키마 유형을 참조합니다. 시간 지정 텍스트 프로파일 문서 인스턴스입니다.

TTML 프로파일 문서 인스턴스의 루트 문서 요소는 ttp:profile 요소여야 하며, 그 정의는 6.1.1 ttp:profile에 따릅니다.

참고:

적합한 일반 처리기는 다음 문서의 입력 수용이나 처리를 지원하는 것이 좋지만 필수는 아닙니다. 시간 지정 텍스트 프로파일 문서입니다. 그러나 콘텐츠 처리기가 http://www.w3.org/ns/ttml/feature/#profile 기능을 지원한다고 주장한다면, 이 기능, 즉 다음 문서의 입력 수용과 처리를 지원해야 합니다. 시간 지정 텍스트 프로파일 문서입니다.

5 어휘

이 절은 시간 지정 텍스트 마크업 언어(TTML)의 네임스페이스, 프로파일 및 어휘를 요소와 속성의 카탈로그 형태로 다음과 같이 정의합니다.

5.1 네임스페이스

시간 지정 텍스트 마크업 언어(TTML)는 요소와 일부 전역 속성에 여러 XML 네임스페이스 [XML 네임스페이스 1.0]를 사용하며, 이를 통틀어 TTML 네임스페이스라고 합니다. 그 정의는 표 5-1 – 네임스페이스에 있으며, 각 네임스페이스에는 설명적인 이름, 기본 네임스페이스 접두사 및 URI가 부여됩니다. 표 5-1 – 네임스페이스에 정의되지 않은 모든 네임스페이스는 다음과 같이 부릅니다. 기타 네임스페이스입니다.

표 5-1 – 네임스페이스
이름 접두사 값
TT tt http://www.w3.org/ns/ttml
TT 매개변수 ttp http://www.w3.org/ns/ttml#parameter
TT 스타일 tts http://www.w3.org/ns/ttml#styling
TT 오디오 스타일 tta http://www.w3.org/ns/ttml#audio
TT 메타데이터 ttm http://www.w3.org/ns/ttml#metadata
TT 중간 동시적 문서 isd http://www.w3.org/ns/ttml#isd
TT 프로파일 없음 http://www.w3.org/ns/ttml/profile/
TT 기능 없음 http://www.w3.org/ns/ttml/feature/
TT 확장 없음 http://www.w3.org/ns/ttml/extension/
TT 리소스 없음 http://www.w3.org/ns/ttml/resource/

모든 TTML 네임스페이스는 변경 가능합니다 [NSState]. 이 네임스페이스들에서 정의되지 않은 모든 이름은 향후 W3C의 표준화를 위해 예약되어 있습니다.

TT 스타일 네임스페이스(http://www.w3.org/ns/ttml#styling)와 TT 오디오 스타일 네임스페이스(http://www.w3.org/ns/ttml#audio)를 통틀어 다음과 같이 부릅니다. TT 스타일 네임스페이스입니다. 특히 명세의 본문에서 이 모음을 참조하면, 해당 어휘 항목이 TT 스타일 네임스페이스 또는 TT 오디오 스타일 네임스페이스 중 하나에 속한다는 뜻입니다.

참고:

특정 문서 인스턴스에서 위에 표시한 기본 접두사를 사용해야 하는 것은 아닙니다. 지정된 네임스페이스 URI와 연결되어 있고 XML 네임스페이스 [XML 네임스페이스 1.0]의 제약을 충족한다면 어떤 접두사나 네임스페이스 바인딩도 사용할 수 있습니다.

참고:

이 명세에서 요소 유형을 참조하며 해당 요소 유형의 이름이 네임스페이스로 한정되지 않았다면 TT 네임스페이스가 적용됩니다.

이 명세에서 속성을 참조하며 해당 속성의 이름이 네임스페이스로 한정되지 않았다면, 해당 속성은 사용되는 요소 유형에 의해 암시적으로 한정됩니다. 즉, 해당 속성은 이른바 요소 유형별 네임스페이스 파티션 [NSOriginal]에 속하며, 이 파티션의 구성원은 해당 속성이 나타나는 요소 유형의 정의에 따라 해석됩니다.

위에서 정의한 일부 네임스페이스의 경우, 이 명세가 해당 네임스페이스에 XML 어휘를 정의하지 않으면 기본 접두사를 없음으로 지정합니다. 향후 버전의 명세에서도 XML 어휘를 정의할 것으로 예상되지 않는 경우입니다. 이러한 경우 네임스페이스 URI는 XML 어휘의 정의 이외의 목적으로 사용됩니다. 예를 들어 프로파일, 기능, 확장을 지정하거나 표준 프로파일 정의를 역참조하는 데 사용됩니다.

5.2 프로파일링

이 절은 TTML 프로파일링 하위 시스템과 이 하위 시스템에 적용되는 상위 수준의 요구 사항을 설명합니다. 이 절의 마지막에는 프로파일 명세의 예와 이러한 명세를 참조하고 사용하는 방법의 예를 담은 하위 절이 있습니다.

5.2.1 소개

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

시간 지정 텍스트 마크업 언어의 콘텐츠 작성자는 특정 프로파일을 두 가지 기능 중 하나에 사용할 수 있습니다. (1) 문서 인스턴스가 사용하는 어휘와 그 사용 방식에 관한 제약의 모음을 따른다고 선언하거나, (2) 처리기가 콘텐츠 처리 방식에 관한 특정 조건을 충족해야 한다고 선언하는 것입니다. 첫 번째 기능은 콘텐츠 프로파일이라고 하며, 두 번째 기능은 처리기 프로파일이라고 합니다.

콘텐츠 프로파일은 작성자가 저작 시점에 문서 인스턴스에 적용하려는 제약을 선언할 수 있도록 사용됩니다. 이러한 선언을 통해 후속 처리기는 콘텐츠의 유효성 검사나 검증을 수행할 수 있을 뿐 아니라, 이후의 콘텐츠 변환이나 편집을 안내하거나 제한하여 작성자가 지정한 콘텐츠 프로파일의 준수를 유지할 수 있습니다. 또한 후속 처리기는 콘텐츠 프로파일 선언을 사용하여 해당 콘텐츠 프로파일이 내포하는 기능을 처리할 수 있는지 조기에 판단할 수 있습니다.

콘텐츠 프로파일은 (1) ttp:contentProfiles 속성을 루트 tt 요소에 사용하거나, (2) 하나 이상의 최상위 ttp:profile 요소를 content 유형으로 사용하여 선언합니다. 선언하지 않으면 어떤 콘텐츠 프로파일도 암시되지 않습니다.

참고:

콘텐츠 프로파일을 ttp:contentProfiles 속성으로 선언할 때, 지정한 하나 이상의 프로파일 지정자가 최상위 ttp:profile 요소를 참조할 수 있으며, 따라서 앞서 언급한 두 프로파일 선언 메커니즘의 기능을 결합할 수 있습니다. 자세한 내용은 유효 콘텐츠 프로파일 구성 절차를 참조하세요.

처리기 프로파일은 작성자가 저작 시점에 문서 인스턴스를 처리할 때 지원해야 하는 처리를 선언할 수 있도록 사용됩니다. 처리기가 지정된 처리를 수행할 수 없다면 처리를 중단하는 것이 좋습니다. 이러한 선언을 통해 후속 처리기는 콘텐츠 작성자의 요구 사항을 충족하는 방식으로 처리할 수 없는 콘텐츠의 처리를 피할 수 있습니다.

처리기 프로파일은 (1) ttp:processorProfiles 속성을 루트 tt 요소에 사용하거나, (2) 하나 이상의 ttp:profile 요소를 processor 유형으로 사용하거나, (3) ttp:profile 속성을 루트 tt 요소에 사용하여 선언합니다. 선언하지 않으면 처리기 프로파일은 선언된 콘텐츠 프로파일 또는 기본 처리기 프로파일에서 추론됩니다.

참고:

처리기 프로파일을 ttp:processorProfiles 속성으로 선언할 때, 지정한 하나 이상의 프로파일 지정자가 최상위 ttp:profile 요소를 참조할 수 있으며, 따라서 앞서 언급한 프로파일 선언 메커니즘 중 처음 두 가지의 기능을 결합할 수 있습니다. 자세한 내용은 유효 처리기 프로파일 구성 절차를 참조하세요.

참고:

적합한 문서 인스턴스가 되기 위해 문서에 처리기 프로파일을 선언해야 하는 것은 아닙니다. 더 구체적으로는 유효 처리기 프로파일을 여러 대체 메커니즘으로 결정할 수 있습니다. 여기에는 (1) 콘텐츠 프로파일에서 처리기 프로파일을 추론하는 방법, (2) 기본 처리기 프로파일에서 처리기 프로파일을 암시하는 방법, (3) 문서 처리 맥락이 결정을 재정의하도록 허용하는 방법이 포함됩니다. 마지막 방법의 예로는 문서 교환 맥락을 사용하여 재정의 처리기 프로파일을 결정하는 방법이 있습니다.

참고:

다음 속성, ttp:processorProfiles 또는 ttp:profile 속성은 작성자가 TTML 콘텐츠의 표준 사전 정의 처리기 프로파일 중 하나 이상을 참조하고자 하며, 해당 프로파일을 상위 집합이나 하위 집합으로 수정하지 않으려는 경우에 사용하도록 의도되었습니다. 작성자는 이 속성으로 비표준 프로파일의 사용을 나타낼 수도 있습니다. 이 경우 지정한 <profile-designator>는 외부에서 정의한 프로파일 정의 문서를 나타내는 URI를 표현합니다. 그러나 적합한 TTML 콘텐츠 처리기가 이처럼 외부에 지정된 프로파일 정의를 역참조할 수 있어야 하는 것은 아닙니다.

이에 비해 ttp:profile 요소는 작성자가 수정된 사전 정의 프로파일을 사용하거나, 문서 인스턴스에 사전 정의 프로파일 중 어느 것에도 기반하지 않은 비표준 프로파일 정의를 포함하려는 경우에 사용하도록 의도되었습니다.

사전 정의 프로파일은 일부 기능이나 확장을 required(필수)로 지정하여 상위 집합으로 만들 수 있습니다. 이는 기초가 되는 기준 프로파일에서 지정하지 않았거나 optional(선택)로 지정한 기능이나 확장에 해당합니다. 사전 정의 프로파일은 일부 기능이나 확장을 optional(선택)로 지정하여 하위 집합으로 만들 수 있습니다. 이는 required(필수)로 기초가 되는 기준 프로파일에 지정된 기능이나 확장에 해당합니다.

기준 프로파일을 하위 집합으로 수정하면 결과로 파생되는 프로파일을 감산 프로파일이라고 하며, 상위 집합으로 수정하면 결과를 가산 프로파일이라고 합니다. 감산과 가산을 동시에 수행하는 파생 프로파일을 정의할 수도 있습니다.

콘텐츠 작성자는 하나의 프로파일만 사용해야 하는 것은 아니며, 두 유형 중 어느 것이든 여러 프로파일을 참조할 수 있습니다. 즉, 여러 콘텐츠 프로파일이나 여러 처리기 프로파일, 또는 둘 다 참조할 수 있습니다. 여러 프로파일을 참조하면 각 프로파일의 명세를 결합하여 문서에 적용되는 하나의 유효 콘텐츠 프로파일과, 문서를 처리할 때 처리기에 적용되는 하나의 유효 처리기 프로파일을 구성합니다. 또한 작성자는 외부에서 정의한 프로파일만 참조해야 하는 것은 아니며, 문서 내에 하나 이상의 프로파일을 인라인으로 정의할 수 있습니다.

참고:

프로파일 결합 자체도 선택적 기능이며, 지원 여부는 처리기가 E.1.53 #contentProfiles-combined 또는 다음 기능을 지원하는지에 따라 결정됩니다. E.1.173 #processorProfiles-combined 기능입니다.

참고:

작성자가 특정 콘텐츠 프로파일이나 처리기 프로파일을 사용하려는 의도를 선언하더라도, 처리기는 작성자의 콘텐츠 프로파일 및 처리기 프로파일 선언 중 하나 또는 둘 다를 재정의할 수 있습니다. 이는 하나의 프로파일이나 제한된 프로파일 집합만 지원하는 처리기의 일반적인 동작으로 예상되며, 특히 처리기가 다음 문서를 역참조(다운로드)하고 처리할 수 없으며, 프로파일 정의 문서를 처리하지 못하는 동시에 다음 항목을 지원하지 않는 경우에 그러합니다. 최상위 프로파일입니다.

5.2.2 프로파일 예제

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

작성자가 정의한 TTML 표시 프로파일의 가산 파생 프로파일 예를 아래의 예제 조각 – TTML 가산 프로파일에 제시합니다.

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

참고:

위 예에서는 기준 프로파일을 TTML2 표시 프로파일로 선언하고, 여기에 #fontStyle-italic 기능을 필수로 지정하여 가산적으로 수정합니다. 이 기능은 G.2 TTML2 표시 프로파일에서는 선택적으로 정의됩니다. 또한 profile 요소의 기본 XMLNS 바인딩을 TT 매개변수 네임스페이스로 재설정한 점에도 유의하세요.

5.2.3 프로파일 지정자

프로파일은 참조하는 문서의 외부에서 정의되었는지, 아니면 참조하는 문서 내부에 인라인으로 정의되었는지에 따라 두 가지 방식 중 하나로 참조됩니다. 외부에서 정의되면 프로파일은 <absolute-profile-designator> 또는 <relative-profile-designator> 표현식으로 참조됩니다. 내부에 인라인으로 정의되면 프로파일은 암시적으로 참조되거나 다음의 <fragment-profile-designator> 표현식으로 참조됩니다.

프로파일 지정자는 <uri> 값 구문을 따라야 합니다. 프로파일 지정자를 상대 URI로 표현한다면, TT 프로파일 네임스페이스 값을 사용하여 절대화해야 합니다. 이 값을 기본 URI로 사용하며, 여기서 절대화라는 용어는 [URI]의 §5에서 설명한 대로 상대 URL을 절대 URL로 해석하는 것을 뜻합니다.

TT 프로파일 네임스페이스를 접두사로 가지지만 표 5-2 – 프로파일에 나열되어 있지 않고 [TTML 프로파일 레지스트리]의 §4, 레지스트리에도 나열되어 있지 않은 모든 프로파일 지정자는 향후 표준화를 위해 예약되어 있으며, 적합한 문서 인스턴스에 나타나서는 안 됩니다. 이러한 제약에도 불구하고, 프로파일 지정자가 다음 표에 열거한 지정자 집합으로 제한되는 것은 아닙니다. 표 5-2 – 프로파일에 없더라도 TTML 프로파일 정의 문서를 실제로 역참조할 수 있는 URI라면 사용할 수 있습니다. 단, TT 프로파일 네임스페이스를 접두사로 사용해서는 안 됩니다.

5.2.3.1 표준 지정자

시간 지정 텍스트 마크업 언어(TTML)는 어휘와 관련 의미론에 대한 여러 표준 사전 정의 프로파일을 사용합니다.

다음 표는 이러한 프로파일 집합을 규정하며, 각 사전 정의 프로파일의 규범적 이름과 지정자를 표시합니다. 각 프로파일의 형식적인 상세 설명은 G 표준 프로파일에 있습니다.

표 5-2 – 프로파일
이름 절대 지정자
DFXP 전체 http://www.w3.org/ns/ttml/profile/dfxp-full
DFXP 표시 http://www.w3.org/ns/ttml/profile/dfxp-presentation
DFXP 변환 http://www.w3.org/ns/ttml/profile/dfxp-transformation
TTML2 전체 http://www.w3.org/ns/ttml/profile/ttml2-full
TTML2 표시 http://www.w3.org/ns/ttml/profile/ttml2-presentation
TTML2 변환 http://www.w3.org/ns/ttml/profile/ttml2-transformation

참고:

DFXP 프로파일의 정의는 [TTML1]을 참조하세요. 추가 프로파일 지정자는 [TTML 프로파일 레지스트리]의 §4, 레지스트리를 참조하세요.

5.2.4 프로파일 의미론

5.2.4.1 프로파일 상태 객체 개념

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

[프로파일 명세]

프로파일 명세는 다음과 같은 내부 상태 정보를 나타내며, 이 정보는 ttp:feature 또는 ttp:extension 요소에 대응합니다.

designator

<uri> 값으로서, type에 따라 기능 지정자 또는 확장 지정자를 나타냅니다.

type

"feature" | "extension"

value

"optional" | "required" | "prohibited"

[결합된 프로파일 명세 집합]

결합된 프로파일 명세 집합은 다음과 같은 내부 상태 정보를 나타내며, 이 정보는 프로파일 명세의 집합에 대응합니다. 또한 이러한 명세를 얻거나 파생한 원본 구성 프로파일을 추가로 기록합니다.

constituents

순서가 있는 <absolute-profile-designator> 표현식의 목록입니다. 각 지정자는 구성 프로파일, 즉 이 결합된 프로파일 명세 집합을 구성하는 프로파일을 나타냅니다.

specifications

순서가 있는 프로파일 명세의 목록입니다.

[빈 프로파일 명세 집합]

결합된 프로파일 명세 집합으로서, constituents 및 specifications 구성 요소가 빈 집합인 경우입니다.

[프로파일 인스턴스]

프로파일 인스턴스는 다음과 같은 내부 상태 정보를 나타냅니다. 이 정보는 ttp:profile 요소에 대응하며, 해당 요소가 명시적으로 지정되었든 암시되었든 관계없습니다.

designator

<absolute-profile-designator> 표현식으로서, 이 프로파일과 연결되어 있으며 이를 고유하게 식별합니다.

type

"content" | "processor"

combine

"leastRestrictive" | "mostRestrictive" | "replace"

use

null 또는 <profile-designator> 표현식이며, 이 프로파일의 기준 프로파일 역할을 하는 프로파일을 나타냅니다.

constituents

프로파일이 중첩하는 프로파일이면, 순서가 있는 <fragment-profile-designator> 표현식의 목록입니다. 각 지정자는 구성 요소인 중첩된 프로파일을 나타냅니다. 그렇지 않으면 null입니다.

참고:

중첩된 프로파일에 xml:id 속성이 지정되어 있으면 그 식별자를 constituents 구성 요소에 사용할 수 있습니다. 그렇지 않으면 처리기 구현은 내부적으로 합성한 식별자를 사용할 것으로 예상됩니다.

specifications

프로파일이 중첩하지 않는 프로파일이면, 순서가 있는 프로파일 명세의 목록입니다. 그렇지 않으면 null입니다.

combined specification set

결합된 프로파일 명세 집합으로서, 이 프로파일이 지정하거나 참조하는 명세를 결합한 결과를 나타냅니다.

참고:

이 명세에서 combined specification set을 특정 프로파일에 대해 참조하면, 이는 결합된 프로파일 명세 집합 상태 객체를 가리킵니다. 해당 객체는 combined specification set 구성 요소가 참조하며, 이 구성 요소는 프로파일 인스턴스에 속합니다. 해당 인스턴스는 앞서 언급한 프로파일과 연결되어 있습니다.

5.2.4.2 콘텐츠 프로파일 의미론
[유효 콘텐츠 프로파일 구성]

모든 TTML 문서 인스턴스에는 null일 수도 있는 유효 콘텐츠 프로파일이 연결되어 있으며, 이 프로파일은 콘텐츠 처리기가 다음 중 일부 또는 전부를 수행하는 데 사용할 수 있습니다.

  1. 유효 처리기 프로파일을 추론합니다.

  2. 유효성 검사 처리를 문서 인스턴스에 대해 수행합니다.

  3. 문서 인스턴스에 대한 변환 처리를 제약하여 콘텐츠 프로파일의 불변 조건을 유지합니다.

유효 콘텐츠 프로파일은 다음 절차에 따라 구성됩니다.

  1. 문서 처리 맥락이 특정 재정의 콘텐츠 프로파일 PO가 다른 모든 결정을 재정의한다고 결정하면, 유효 콘텐츠 프로파일은 PO입니다.

    참고:

    예를 들어 이 명세를 준수하는 [EBU-TT-D] 문서는 다음과 같은 방식으로 ebuttm:conformsToStandard 요소를 지정하여 [EBU-TT-D] 콘텐츠 프로파일의 준수를 알릴 수 있습니다. 이 경우 해당 프로파일을 지원하는 콘텐츠 처리기는 해당 요소의 존재를 재정의 수단으로 사용하여 유효 콘텐츠 프로파일을 결정할 수 있습니다.

  2. 그렇지 않고 ttp:contentProfiles 속성이 루트 tt 요소에 지정되어 있으면, 유효 콘텐츠 프로파일은 프로파일 인스턴스이며, 해당 인스턴스의 combined specification set은 다음과 같이 구성됩니다. 지정된 프로파일의 combined specification set을 결합하되, 콘텐츠 프로파일 결합 방식은 지정된 값 또는 기본값에 따릅니다. 이때 사용되는 것은 ttp:contentProfileCombination 속성으로서, 루트 tt 요소에 있는 속성입니다.

  3. 그렇지 않고 하나 이상의 최상위 콘텐츠 프로파일이 정의되어 있으면, 유효 콘텐츠 프로파일은 프로파일 인스턴스이며, 해당 인스턴스의 combined specification set은 다음 항목을 결합하여 구성됩니다. combined specification set으로서, 모든 해당 최상위 콘텐츠 프로파일에 속하는 항목입니다. 이때 콘텐츠 프로파일 결합 방식은 지정된 값 또는 기본값에 따릅니다. 이때 사용되는 것은 ttp:contentProfileCombination 속성으로서, 루트 tt 요소에 있는 속성입니다.

  4. 그렇지 않으면 유효 콘텐츠 프로파일은 null입니다.

일반 처리기 적합성을 준수하려면, 특정 문서 인스턴스를 처리할 때 유효 콘텐츠 프로파일이 일단 null이 아닌 참조로 설정된 후에는, 그 참조 대상인 프로파일 인스턴스와 함께 변하지 않아야 합니다. 즉, 변하지 않는 프로파일 인스턴스에 대한 일정한 참조로 해당 처리가 지속되는 동안 유지됩니다. 마찬가지로 null 참조로 설정되면 해당 처리가 지속되는 동안 일정한 null 참조로 유지됩니다.

5.2.4.3 처리기 프로파일 의미론
[지원되지 않는 처리기 프로파일이면 중단]
  1. EPP를 유효 처리기 프로파일로 설정합니다. 이 프로파일은 유효 처리기 프로파일 구성 절차를 수행하여 얻습니다.

  2. 각 프로파일 명세 S에 대해, 해당 명세가 combined specification set, 즉 EPP의 해당 집합에 속한다면 다음 단계를 수행합니다.

    1. value 구성 요소가 S에서 required이고, 콘텐츠 처리기가 S를 지원하지 않으면 문서 인스턴스의 처리를 중단합니다. 단, 최종 사용자 또는 구현별 매개변수가 이를 재정의하는 경우는 예외입니다. 해당 매개변수는 최종 사용자나 사용자 또는 시스템 구성 설정에서 비롯된 것임을 추적할 수 있어야 합니다.

[유효 처리기 프로파일 구성]

모든 TTML 문서 인스턴스에는 null이 아닌 유효 처리기 프로파일이 연결되어 있으며, 이 프로파일은 콘텐츠 처리기가 콘텐츠 작성자가 알린 최소 처리 요구 사항을 충족하는지 결정하는 데 사용됩니다.

유효 처리기 프로파일은 다음 절차에 따라 구성됩니다.

  1. 문서 처리 맥락이 특정 재정의 처리기 프로파일 PO가 다른 모든 결정을 재정의한다고 결정하면, 유효 처리기 프로파일은 PO입니다.

  2. 그렇지 않고 ttp:processorProfiles 속성이 루트 tt 요소에 지정되어 있으면 다음을 수행합니다.

    1. ttp:processorProfiles 속성이 all(...) 함수 구문을 사용하거나 함수 구문 없이, 즉 지정자 목록만으로 지정되었다면, 이 경우 유효 처리기 프로파일은 프로파일 인스턴스이며, 해당 인스턴스의 combined specification set은 다음과 같이 구성됩니다. 지정된 프로파일의 combined specification set을 결합하되, 콘텐츠 프로파일 결합 방식은 지정된 값 또는 기본값에 따릅니다. 이때 사용되는 ttp:processorProfileCombination 속성은 루트 tt 요소에 있는 속성입니다.

    2. 그렇지 않고 ttp:processorProfiles 속성이 any(...) 함수 구문을 사용하여 지정되었다면, 지정된 각 프로파일에 대해, 유효 처리기 프로파일은 프로파일 인스턴스이며, 해당 인스턴스의 combined specification set은 다음 항목의 복사본입니다. combined specification set으로서, 지정된 프로파일 목록에서 처음으로 지원되는 프로파일에 속하는 항목이며, 지원하는 주체는 콘텐츠 처리기입니다.

  3. 그렇지 않고 하나 이상의 최상위 처리기 프로파일이 정의되어 있으면, 유효 처리기 프로파일은 프로파일 인스턴스이며, 해당 인스턴스의 combined specification set은 다음 항목을 결합하여 구성됩니다. combined specification set으로서, 모든 해당 최상위 처리기 프로파일에 속하는 항목입니다. 이때 처리기 프로파일 결합 방식은 지정된 값 또는 기본값에 따릅니다. 이때 사용되는 것은 ttp:processorProfileCombination 속성으로서, 루트 tt 요소에 있는 속성입니다.

  4. 그렇지 않고 ttp:profile 속성이 루트 tt 요소에 지정되어 있으면, 유효 처리기 프로파일은 프로파일 인스턴스이며, 해당 인스턴스의 combined specification set은 다음 combined specification set의 복사본입니다. 즉, 이 속성이 지정한 프로파일의 해당 집합입니다.

  5. 그렇지 않으면 유효 처리기 프로파일은 다음 절차를 수행한 결과입니다. 추론된 처리기 프로파일 구성 절차입니다.

일반 처리기 적합성을 준수하려면, 특정 문서 인스턴스를 처리할 때 유효 처리기 프로파일이 일단 다음 객체에 대한 참조로 설정된 후에는, 프로파일 인스턴스에 대한 참조와 그 대상이 변하지 않아야 합니다. 즉, 변하지 않는 프로파일 인스턴스에 대한 일정한 참조로 해당 처리가 지속되는 동안 유지됩니다.

[추론된 처리기 프로파일 구성]
  1. ECP를 유효 콘텐츠 프로파일로 설정합니다.

  2. ECP가 null이 아니면 다음 단계를 수행합니다.

    1. 계산된 값, 즉 ttp:inferProcessorProfileSource 매개변수의 값이 combine이면, 추론된 처리기 프로파일은 다음 함수를 적용한 결과입니다. 처리기 프로파일 추론 함수를 combined specification set, 즉 ECP의 해당 집합에 적용합니다.

    2. 그렇지 않고 계산된 값, 즉 ttp:inferProcessorProfileSource 매개변수의 값이 first이면, 추론된 처리기 프로파일은 처음으로 지원되는 추론된 처리기 프로파일인 IPP입니다. 이 프로파일은 처리기 프로파일 추론 함수를 다음 combined specification set에 적용하여 생성됩니다. 이 집합은 프로파일 인스턴스에 속하며, 해당 인스턴스는 combined specification set, 즉 ECP의 해당 집합의 각 구성원과 연결됩니다. IPP는 다음 처리기가 지원하는 첫 번째 결과여야 합니다. 콘텐츠 처리기입니다.

  3. 그렇지 않으면 추론된 처리기 프로파일은 다음 절차를 수행한 결과입니다. 기본 처리기 프로파일 구성 절차입니다.

[처리기 프로파일 추론](결합된 프로파일 명세 집합 CPSS)
  1. 추론된 처리기 프로파일 IPP를 프로파일 인스턴스로 초기화합니다. 이 인스턴스의 combined specification set은 빈 프로파일 명세 집합의 복사본입니다.

  2. 각 프로파일 명세 S에 대해, 해당 명세가 결합된 프로파일 명세 집합 CPSS에 속한다면 다음을 수행합니다.

    1. 콘텐츠 프로파일 명세 S를 처리기 프로파일 명세 S' 에 매핑합니다. 이때 계산된 ttp:inferPresentationProfileMethod 매개변수 값과 표 6-2 – 처리기 프로파일 추론 방식에 따릅니다.

    2. S' 를 combined specification set, 즉 IPP의 해당 집합에 추가합니다.

  3. IPP를 추론된 처리기 프로파일로 반환합니다.

[기본 처리기 프로파일 구성]
  1. 문서 교환 맥락이 처리기 프로파일 또는 콘텐츠 프로파일과 연결되어 있고, 후자의 경우 처리기 프로파일을 추론할 수 있다면, 기본 처리기 프로파일은 해당 처리기 프로파일입니다.

  2. 그렇지 않고 콘텐츠 처리기의 주된 특성이 표시 처리기라면, 기본 처리기 프로파일은 다음과 같이 구성된 프로파일 인스턴스입니다. TTML2 표시 프로파일을 내부화하여 구성합니다 (http://www.w3.org/ns/ttml/profile/ttml2-presentation).

  3. 그렇지 않고 콘텐츠 처리기의 주된 특성이 변환 처리기라면, 기본 처리기 프로파일은 다음과 같이 구성된 프로파일 인스턴스입니다. TTML2 변환 프로파일을 내부화하여 구성합니다 (http://www.w3.org/ns/ttml/profile/ttml2-transformation).

참고:

콘텐츠 처리기가 하나 이상의 서로 다른 TTML 버전에서 사용되도록 의도되었다면, 기본 처리기 프로파일을 선택할 때 향후 버전의 TTML 표시 또는 변환 프로파일에 기반할 수 있습니다.

5.3 유효성 검사

이 절은 TTML 유효성 검사 하위 시스템과 이 하위 시스템에 적용되는 상위 수준의 요구 사항을 설명합니다.

유효성 검사는 유효성 검사 처리기가 수행하는 선택적 기능이며, 후보 문서 인스턴스를 유효성 검사 기능이 있는 콘텐츠 처리기가 입력으로 받아 사용하거나 다른 방식으로 처리할 때 수행될 수 있습니다. 이러한 처리가 이루어지는 중에 예외 상황이 발생하면 처리를 중단할 수 있으며, 이에 대해서는 아래에서 더 자세히 설명합니다.

유효성 검사 처리 중에 처리가 중단되면, 다음과 같은 결과가 발생할 수 있습니다.

  • 적합하지 않은 문서의 일부만 변환 처리기에 의해 변환되어, 불완전한 변환 결과가 생성될 수 있습니다.

  • 적합하지 않은 문서의 일부만 표시 처리기에 의해 표시되어, 불완전한 표시 결과가 생성될 수 있습니다.

유효성 검사 처리의 결과로 처리가 중단되는 경우, 문서 인스턴스 내에서 어느 위치 이후의 콘텐츠를 더 이상 처리하지 않는지는 이 명세에서 정의하지 않습니다. 특히 구현은 첫 번째 유효성 검사 오류를 만났을 때 처리를 중단하거나, 임의 개수의 유효성 검사 오류를 만난 후에 처리를 중단할 수 있습니다. 따라서 적합하지 않은 문서에서 입력으로 받아 사용한 콘텐츠의 양과 그에 대응하는 변환 또는 표시 출력은 구현마다 다를 수 있습니다.

5.3.1 유효성 검사 의미론

5.3.1.1 유효성 검사 상태 객체 개념

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

[유효성 검사 예외]

유효성 검사 예외는 다음과 같은 내부 상태 정보를 나타내며, 이 정보는 유효성 검사 처리 중에 발생하는 예외 상황에 대응합니다.

message

예외를 설명하거나 그 특성을 나타내는 임의의 문자열로서, 구현에서 정의합니다.

type

"error" | "warning"

유효성 검사 예외의 유형이 error이면 이를 유효성 검사 오류라고 하며, 유효성 검사 예외의 유형이 warning이면 이를 유효성 검사 경고라고 합니다.

상위 수준 프로토콜이 적용되지 않는 한, (1) 이 명세의 의무 사항이나 금지 사항을 문서 인스턴스가 위반한 것이 탐지되면, 이를 오류로 간주하며, 이 경우 유효성 검사 오류 예외가 적용됩니다. (2) 이 명세의 권장 사항이나 비권장 사항을 위반한 것이 탐지되면, 유효성 검사 경고가 적용됩니다.

참고:

이 맥락에서 상위 수준 프로토콜의 예로는 시스템이나 최종 사용자가 정의한 구성 옵션을 들 수 있습니다. 이 옵션은 문서 처리 맥락에 속하며, 경고를 오류로 취급하거나 그 반대로 취급하도록 합니다.

5.3.1.2 유효성 검사 처리 의미론
[유효 유효성 검사 프로파일 구성]
  1. 문서의 유효 콘텐츠 프로파일이 null이 아니면, 유효 유효성 검사 프로파일은 유효 콘텐츠 프로파일입니다.

  2. 그렇지 않으면 유효 유효성 검사 프로파일은 유효 처리기 프로파일입니다.

일반 처리기 적합성을 준수하려면, 특정 문서 인스턴스를 처리할 때 유효 유효성 검사 프로파일이 일단 다음 객체에 대한 참조로 설정된 후에는, 프로파일 인스턴스에 대한 참조와 그 대상이 변하지 않아야 합니다. 즉, 변하지 않는 프로파일 인스턴스에 대한 일정한 참조로 해당 처리가 지속되는 동안 유지됩니다.

[유효 유효성 검사 스키마 구성]
  1. 문서의 유효 유효성 검사 프로파일이 하나 이상의 스키마와 연결되어 있으면, 유효 유효성 검사 스키마의 집합은 이러한 연결된 스키마의 적절한 하위 집합이며, 그 선택 기준은 문서 처리 맥락의 요구 사항입니다.

  2. 그렇지 않으면 유효 유효성 검사 스키마는 다음 맥락이 선택한 기본 스키마 집합입니다. 문서 처리 맥락입니다.

참고:

적절한 스키마 집합이 무엇인지에 대한 판단 기준은 이 명세에서 형식적으로 정의하지 않습니다. 그럼에도 불구하고, 선택 과정에서는 (1) 사용할 수 있고 지원되는 스키마의 유형을 활용할 것으로 예상됩니다. 이는 처리기 구현을 기준으로 합니다. 또한 (2) 휴리스틱으로서, 필수 기능 또는 선택적 기능에 연결된 최대 버전 번호를 활용할 것으로 예상되며, 해당 기능은 유효 유효성 검사 프로파일에 따라 결정됩니다.

[문서 유효성 검사]
  1. 유효성 검사가 상위 수준 프로토콜에 의해 비활성화되었거나, 계산된 ttp:validation 매개변수 값이 prohibited이면, 최종 사용자나 애플리케이션이 이 금지를 재정의하지 않는 한 이 절차를 종료합니다.

  2. 계산된 ttp:validation 매개변수 값이 optional이고, 문서 처리 맥락이 선택적 유효성 검사를 수행하지 않기로 결정하면, 이 절차를 종료합니다.

  3. 그렇지 않으면 유효 유효성 검사 스키마와 필요에 따른 다른 유효성 검사 도구를 사용하여 다음과 같이 문서 적합성을 검사합니다.

유효성 검사 처리를 수행할 때는 다음 의미론이 적용됩니다.

  • 입력 문서가 구체적인 XML 표현의 형태를 취한다면, 예를 들어 다음 부록에서 정의한 구체적인 형태라면, 부록 A 구체적 인코딩에 해당한다면, 다음을 검증합니다.

    • 입력 문서의 인코딩된 문자가 문서에 대해 결정된 문자 인코딩에 따라 올바른 형식인지 검증합니다.

    • 입력 문서가 올바른 형식의 XML 문서인지 검증합니다.

  • 입력 문서가 유효 유효성 검사 스키마에 대해 유효한지 검증합니다.

  • 입력 문서가 이 명세에서 정의한 다른 모든 구문적 및 의미론적 제약을 따르는지 검증합니다. 여기에는 유효 유효성 검사 스키마로 직접 표현되지 않는 제약이 해당합니다.

위의 검증 단계 중 어느 하나라도 의무 사항(해야 합니다)이나 금지 사항(해서는 안 됩니다)에 대한 부적합 상태를 탐지하면, 유효성 검사 오류 상황이 적용됩니다. 위의 검증 단계 중 어느 하나라도 권장 사항(하는 것이 좋습니다)이나 비권장 사항 (하지 않는 것이 좋습니다)에 대한 부적합 상태를 탐지하면, 유효성 검사 경고 상황이 적용됩니다.

참고:

유효 유효성 검사 스키마의 결정은 구현에 따라 달라지며, 유효 유효성 검사 스키마가 가능한 모든 유효성 검사 오류를 탐지해야 한다는 요구 사항도 없으므로, [문서 유효성 검사] 절차를 유효하지 않은 문서 인스턴스에 수행하더라도 유효성 검사 예외가 반드시 발생하는 것은 아닙니다. 이 경우 유효성 검사 처리의 결과는 거짓 양성으로 간주될 수 있습니다.

예를 들어 콘텐츠 프로파일은 다음과 같은 방식으로 기능 사용을 금지할 수 있습니다. value 속성에 prohibited 값을 지정하는 방식이며, 해당 속성은 ttp:feature 또는 ttp:extension 요소에 속합니다. 그러나 특정 구현의 [문서 유효성 검사] 절차는 이러한 금지된 사용을 문서 인스턴스에서 탐지하지 못할 수 있으며, 따라서 거짓 양성 유효성 검사 결과를 생성할 수 있습니다.

이러한 한계로 인해, [문서 유효성 검사] 절차의 명세 표현은 잠재적인 유효성 검사 오류 또는 유효성 검사 경고의 탐지 여부를 전제로 하지만, 가능한 모든 유효성 검사 오류와 유효성 검사 경고를 탐지해야 한다고 요구하지는 않습니다.

거짓 양성에 관한 자세한 내용은 4.1 TTML 콘텐츠 문서 유형의 첫 번째 참고도 참조하세요.

5.4 카탈로그

시간 지정 텍스트 마크업 언어(TTML)의 어휘는 다음의 주요 카탈로그(어휘의 분류)에서 정의합니다.

핵심 카탈로그는 TTML의 기본 핵심 어휘를 정의하며, 특히 TTML 콘텐츠의 어휘를 정의합니다. 확장 카탈로그는 TTML이 정의하는 핵심 어휘에 대한 확장을 위한 자리 역할을 합니다.

5.4.1 핵심 카탈로그

핵심 어휘 카탈로그는 TTML의 요구를 충족하면서 향후 프로파일을 위한 기본 어휘를 제공하도록 의도되었습니다. 이 어휘는 서로 구별되는 범주로 나뉘며, 다음 절들에서 자세히 규정합니다.

문서 인스턴스에서 사용하도록 규정한 핵심 요소 어휘는 이름이 부여된 모듈의 집합으로 표 5-3 – 요소 어휘에 열거되어 있습니다. 각 모듈은 요소 유형의 집합으로 정의되며, 각 모듈의 구성원, 즉 각 모듈의 구성원은 하나 이상의 확장 모듈에 의해 확장될 수 있지만 제한될 수는 없습니다.

표 5-3 – 요소 어휘
모듈 요소
애니메이션 animate, animation, set
오디오 audio
콘텐츠 body, br, div, p, span
데이터 chunk, data, resources, source
문서 tt
글꼴 font
헤드 head
이미지 image
레이아웃 layout, region
메타데이터 metadata
메타데이터 항목 ttm:actor, ttm:agent, ttm:copyright, ttm:desc, ttm:item, ttm:name, ttm:title
프로파일 ttp:features, ttp:feature, ttp:extensions, ttp:extension, ttp:profile
스타일 지정 initial, styling, style

TTML 요소 유형의 콘텐츠 모델을 정의하는 데 사용하는 요소 어휘 그룹은 다음 표에 그룹의 집합으로 열거되어 있습니다. 표 5-4 – 요소 어휘 그룹입니다. 각 그룹은 생성 규칙 [46]을 충족하는 콘텐츠 명세로 정의되며, 해당 규칙은 [XML 1.0]에 있습니다. 각 그룹은 하나 이상의 확장 모듈에 의해 확장될 수 있지만 제한될 수는 없습니다.

표 5-4 – 요소 어휘 그룹
그룹 요소
Animation.class animate | set
Block.class div | p
Data.class data
Embedded.class audio, image
Font.class font
Inline.class span | br | #PCDATA
Layout.class region
Metadata.class metadata | ttm:agent | ttm:copyright | ttm:desc | ttm:item | ttm:title
Profile.class ttp:profile

핵심 어휘 카탈로그와 함께 사용하도록 규정한 속성 어휘는 하나의 집합, 즉 모듈의 집합으로 표 5-5 – 속성 어휘에 열거되어 있습니다. 각 모듈은 속성 유형의 집합으로 정의되며, 각 모듈의 구성원, 즉 각 모듈의 구성원은 하나 이상의 확장 모듈에 의해 확장될 수 있지만 제한될 수는 없습니다.

표 5-5 – 속성 어휘
모듈 속성
애니메이션 바인딩 속성 animate
오디오 스타일 지정 속성 tta:gain, tta:pan, tta:pitch, tta:speak
조건화 속성 condition
핵심 속성 xml:base, xml:id, xml:lang, xml:space
데이터 속성 encoding, format, src, type
레이아웃 바인딩 속성 region
연결 속성 xlink:arcrole, xlink:href, xlink:role, xlink:show, xlink:title
메타데이터 속성 ttm:agent, ttm:role
매개변수 속성 ttp:cellResolution, ttp:clockMode, ttp:displayAspectRatio, ttp:dropMode, ttp:frameRate, ttp:frameRateMultiplier, ttp:markerMode, ttp:pixelAspectRatio, ttp:subFrameRate, ttp:tickRate, ttp:timeBase,
프로파일 속성 ttp:contentProfiles, ttp:contentProfileCombination, ttp:inferProcessorProfileMethod, ttp:inferProcessorProfileSource, ttp:permitFeatureNarrowing, ttp:permitFeatureWidening, ttp:processorProfiles, ttp:processorProfileCombination, ttp:profile, ttp:validation, ttp:validationAction
스타일 바인딩 속성 style
스타일 지정 속성 tts:backgroundClip, tts:backgroundColor, tts:backgroundExtent, tts:backgroundImage, tts:backgroundOrigin, tts:backgroundPosition, tts:backgroundRepeat, tts:border, tts:bpd, tts:color, tts:direction, tts:disparity, tts:display, tts:displayAlign, tts:extent, tts:fontFamily, tts:fontKerning, tts:fontSelectionStrategy, tts:fontShear, tts:fontSize, tts:fontStyle, tts:fontVariant, tts:fontWeight, tts:ipd, tts:letterSpacing, tts:lineHeight, tts:lineShear, tts:luminanceGain, tts:opacity, tts:origin, tts:overflow, tts:padding, tts:position, tts:ruby, tts:rubyAlign, tts:rubyPosition, tts:rubyReserve, tts:shear, tts:showBackground, tts:textAlign, tts:textCombine, tts:textDecoration, tts:textEmphasis, tts:textOrientation, tts:textOutline, tts:textShadow, tts:unicodeBidi, tts:visibility, tts:wrapOption, tts:writingMode, tts:zIndex
타이밍 속성 begin, dur, end, timeContainer

참고:

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

참고:

TTML이 정의하는 모든 어휘는 이른바 lowerCamelCase 명명 규칙을 일관되게 사용합니다. 이에 따라 일부 경우에는 다른 명명 규칙을 사용하는 다른 명세에 기반한 이름이 변경됩니다.

5.4.2 확장 카탈로그

확장 어휘 카탈로그는 향후 TTML 프로파일에서 사용하도록 의도되었으며, 이 버전의 TTML에서는 더 자세히 정의하지 않습니다.

표준화된 확장 어휘 외에도, 적합한 문서 인스턴스는 네임스페이스로 한정된 임의의 요소를 포함할 수 있습니다. 이러한 요소는 이 명세에서 사용하도록 정의한 네임스페이스 이외의 네임스페이스에 속해야 합니다. 또한 적합한 문서 인스턴스는 네임스페이스로 한정된 임의의 속성을 TTML이 정의한 어휘에 포함할 수 있습니다. 이러한 속성은 이 명세에서 사용하도록 정의한 네임스페이스 이외의 네임스페이스에 속해야 합니다.

6 프로파일

이 절은 핵심 어휘 카탈로그의 프로파일 사항을 규정합니다. 여기서 프로파일 사항은 저작이나 처리와 관련된 요구 사항 또는 선택 사항을 표현하는 정보로 이해해야 하며, 그 대상은 시간 지정 텍스트 콘텐츠 문서입니다.

6.1 프로파일 요소 어휘

다음 요소는 모두 TT 매개변수 네임스페이스에 정의되며, 문서 인스턴스 또는 콘텐츠 처리기에 적용되는 매개변수 정보를 지정합니다.

참고:

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

6.1.1 ttp:profile

ttp:profile 요소는 콘텐츠 프로파일 또는 처리기 프로파일을 지정하는 데 사용됩니다. 처리기 프로파일은 필수 기능 및 확장과 선택적 기능 및 확장의 모음을 지정합니다. 이는 콘텐츠 처리기가 지원해야 하거나 지원할 수 있는 항목으로, 다음과 같은 문서를 처리하기 위한 것입니다. 해당 문서 인스턴스는 이러한 기능과 확장을 사용하거나 사용할 수 있습니다. 콘텐츠 프로파일은 금지된 기능 및 확장, 필수 기능 및 확장, 선택적 기능 및 확장의 모음을 지정합니다. 이들은 각각 문서 인스턴스에 있어서는 안 되거나, 있어야 하거나, 있을 수 있는 항목이며, 해당 인스턴스는 그 프로파일의 준수를 선언합니다.

참고:

기능과 확장의 차이는 정의되는 위치와 식별 방식에 있습니다. 이 명세 또는 향후 개정판에서 정의되고 E 기능의 기능 지정으로 식별된다면, 기능으로 간주합니다. 다른 명세에서 정의되고 그 명세에서 확장 지정으로 식별된다면, 확장으로 간주합니다. 일반적으로 기능은 W3C 표준화 절차를 통해 정의되고, 확장은 제삼자가 정의할 것으로 예상됩니다.

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

ttp:profile 요소가 TTML 문서 인스턴스 내에 나타나면, 그 목적은 작성자의 다음 의도를 표현하는 것입니다. (1) 해당 문서를 처리하기 위해 수신 측 콘텐츠 처리기가 어떤 기능과 확장을 지원해야 하거나 지원할 수 있는지, 또는 (2) 어떤 기능과 확장을 포함하거나 다른 방식으로 사용하는 것이 금지되거나 필수이거나 선택적인지입니다. 후자의 적용 대상은 해당 문서 인스턴스입니다.

ttp:profile 요소가 TTML 프로파일 정의 문서 인스턴스에 사용되면, 기계가 읽을 수 있는 특정 TTML 프로파일의 명세를 공개하는 역할을 합니다. 이 명세는 TTML 문서 인스턴스에서 참조할 수 있습니다. 이 명세는 여러 표준 프로파일 정의 문서를 G 표준 프로파일에서 정의합니다.

ttp:profile 요소는 자식으로 0개 이상의 Metadata.class 요소 그룹에 속하는 요소를 허용하며, 그 뒤에는 (1) 0개 이상의 ttp:features 요소와 그 뒤의 0개 이상의 ttp:extensions 요소 또는 (2) 0개 이상의 ttp:profile 요소를 허용합니다. ttp:profile 요소가 자식 ttp:profile 요소를 포함하면, 해당 자식은 중첩된 프로파일이라고 하고, 부모는 중첩하는 프로파일이라고 합니다. 그렇지 않으면 중첩하지 않는 프로파일이라고 합니다.

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

type 속성은 프로파일이 콘텐츠 프로파일인지 처리기 프로파일인지 결정하는 데 사용됩니다. 지정하지 않으면, 해당 프로파일은 처리기 프로파일로 간주됩니다. ttp:profile 요소가 기준 프로파일 또는 중첩된 프로파일을 참조하면, 참조되는 프로파일의 유형은 참조하는 프로파일의 유형과 같아야 합니다. 예를 들어 ttp:profile 요소가 처리기 프로파일을 정의한다면, 다른 처리기 프로파일만 참조할 수 있으며, 콘텐츠 프로파일은 참조할 수 없습니다.

combine 속성은 동일한 기능이나 확장에 여러 명세가 적용되는 경우, 각각의 기능 명세나 확장 명세를 결합하는 방식을 지정하는 데 사용됩니다.

combine 속성의 값이 replace 또는 ignore이면, 어휘적으로 뒤에 오는 기능 명세나 확장 명세가 각각 어휘적으로 앞에 오는 명세를 대체하거나 무시됩니다. 이때 명세 요소는 다음 순서로 배열됩니다.

  1. 기준 프로파일에서 정의한 명세로서, use 속성이 참조하는 프로파일의 명세입니다.

  2. 자손 ttp:profile 요소에서 정의한 명세를 후위 순회 순서로 배열합니다.

  3. 자손 ttp:feature 또는 ttp:extension 요소로 정의한 명세를 후위 순회 순서로 배열합니다.

값이 leastRestrictive이면 가장 제한이 적은 명세 값이 적용됩니다. 값이 mostRestrictive이면 가장 제한이 많은 명세 값이 적용됩니다. 제한의 정도는 적은 것부터 많은 것까지 다음 순서입니다. optional, required, prohibited.

combine 속성을 지정하지 않으면 ignore 의미론이 적용됩니다.

designator 속성을 지정한다면, <absolute-profile-designator> 값 구문을 따라야 합니다. designator 속성은 TTML 문서에 나타나는 ttp:profile 요소에 지정할 수 있습니다. 해당 문서 인스턴스에서 이 속성을 지정하지 않으면, 정의된 프로파일은 미지정 프로파일로 간주됩니다. designator 속성은 TTML 프로파일 정의 문서에 나타나는 ttp:profile 요소에 지정하는 것이 좋습니다. 해당 프로파일 정의 문서 인스턴스에서 지정하지 않으면, 정의 맥락(예: 외부 명세)이 함께 제공하는 정의 본문에 지정자를 명시해야 합니다.

use 속성을 지정한다면, <absolute-profile-designator> 또는 <relative-profile-designator> 값 구문을 따라야 하며, 다음 중 하나를 참조해야 합니다. (1) 표준 사전 정의 프로파일로서, 5.2.3.1 표준 지정자에서 정의한 프로파일, 또는 (2) 실제로 역참조할 수 있는 리소스로서 유효한 프로파일 정의 문서 인스턴스를 나타내는 리소스입니다. 어느 경우든 참조된 프로파일은 기준 프로파일 역할을 하며, 그 적용 대상은 이 속성을 지정한 ttp:profile 요소입니다.

참고:

use 속성은 프로파일 정의 문서 전체를 참조해야 하므로, 최상위 프로파일이나 중첩된 프로파일을 참조하는 데 사용할 수 없습니다. 따라서 use 속성의 <uri> 값에 프래그먼트 구성 요소를 포함할 수 없습니다.

use 속성을 지정하지 않으면, 기준 프로파일, 즉 ttp:profile 요소의 기준 프로파일은 빈(null) 프로파일로 간주해야 합니다. 이는 기능 명세나 확장 명세를 포함하지 않는 미지정 프로파일 정의를 뜻합니다.

결합된 프로파일 명세 집합 CPSS는 프로파일 P의 기능과 확장에 대해 다음의 순서가 있는 규칙에 따라 결정됩니다. 명세 S를 CPSS에 병합할 때는 지정된 combine 속성 값 또는 기본값에 따라 결합 방식을 적용합니다. 또한 결합된 프로파일 명세 집합 CPSS' 를 CPSS에 병합할 때는 CPSS' 의 각 명세를 순서대로 CPSS에 병합합니다.

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

  2. use 속성이 있으면, combined specification set, 즉 참조된 기준 프로파일의 해당 집합을 CPSS에 병합합니다.

  3. P의 각 ttp:profile 자식에 대해, 후위 순회를 사용하여 combined specification set, 즉 자식 프로파일의 해당 집합을 CPSS에 병합합니다.

  4. 각 ttp:feature 및 ttp:extension 자식에 대해, 이들이 속한 ttp:profile 요소에서 후위 순회를 사용하여 해당 기능 명세나 확장 명세를 CPSS에 병합합니다.

적합한 TTML 처리기가 모든 문서를 역참조할 수 있어야 하는 것은 아닙니다. 프로파일 정의 문서가 표준 사전 정의 프로파일 중 하나가 아니라면 그러하며, 해당 표준 프로파일은 G 표준 프로파일에서 정의합니다. 또한, 적합한 TTML 처리기는 각 표준 사전 정의 프로파일의 내장된 정적 형태를 사용하여 네트워크 리소스를 역참조할 필요가 없도록 할 수 있습니다.

TTML 처리기가 비표준 프로파일 정의 문서를 역참조할 수 없다면, 해당 문서의 처리를 계속해서는 안 됩니다. 단, 최종 사용자에 의한 명시적인 재정의가 있거나, 최종 사용자 또는 사용자나 시스템 구성 설정에서 비롯된 것임을 추적할 수 있는 구현별 매개변수가 명시적으로 재정의한 경우는 예외입니다. TTML 처리기가 문서 인스턴스의 처리를 중단한 이유가 비표준 프로파일 정의 문서를 참조할 수 없기 때문이라면, 최종 사용자에게 어떤 형태로든 알리는 것이 좋습니다. 단, 최종 사용자나 시스템이 해당 알림을 비활성화했거나, 처리기가 최종 사용자의 개입을 허용하지 않거나 수반하지 않는 경우는 예외입니다.

적합한 TTML 처리기가 결합된 프로파일이나 중첩하는 프로파일을 지원해야 하는 것은 아닙니다. (1) 결합된 프로파일을 지원하지 않으며, 프로파일을 처리하면 그것이 결합된 프로파일로 간주되는 경우, 또는 (2) 중첩하는 프로파일을 지원하지 않으며, 프로파일을 처리하면 그것이 중첩하는 프로파일로 간주되는 경우에는, 해당 프로파일의 처리를 계속해서는 안 됩니다. 단, 최종 사용자에 의한 명시적인 재정의가 있거나, 최종 사용자 또는 사용자나 시스템 구성 설정에서 비롯된 것임을 추적할 수 있는 구현별 매개변수가 명시적으로 재정의한 경우는 예외입니다. TTML 처리기가 문서 인스턴스의 처리를 중단한 이유가 다음에 대한 지원 부족 때문이라면, 즉 결합된 프로파일 또는 중첩하는 프로파일을 지원하지 않기 때문이라면, 최종 사용자에게 어떤 형태로든 알리는 것이 좋습니다. 단, 최종 사용자나 시스템이 해당 알림을 비활성화했거나, 처리기가 최종 사용자의 개입을 허용하지 않거나 수반하지 않는 경우는 예외입니다.

참고:

문서 인스턴스가 결합된 프로파일에 대한 지원을 요구하지 않는다면, 다음을 사용하지 않는 것이 좋습니다.

참고:

문서 인스턴스가 중첩하는 프로파일에 대한 지원을 요구하지 않는다면, 중첩된 프로파일을 사용하지 않는 것이 좋습니다.

다음 예제는 ttp:profile 요소를 보여 줍니다.

예제 조각 – ttp:profile
<ttp:profile use="ttml2-presentation">
  <ttp:features xml:base="http://www.w3.org/ns/ttml/feature/">
    <ttp:feature>#text-outline</ttp:feature>
  </ttp:features>
</ttp:profile>

참고:

위 예에서는 TTML2 표시 프로파일을 기준 프로파일로 사용합니다. 그런 다음 이 기준 프로파일을 상위 집합으로 확장하여 가산 파생 프로파일을 생성합니다. 이때 지원을 요구하는 것은 #text-outline 기능입니다.

6.1.2 ttp:features

ttp:features 요소는 기능의 지원 및 사용 요구 사항에 관한 정보를 그룹화하는 데 사용하는 컨테이너 요소입니다.

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

XML 표현 – 요소 정보 항목: ttp:features
<ttp:features
  xml:base = <uri> : TT 기능 네임스페이스
  xml:id = ID
  콘텐츠: Metadata.class*, ttp:feature*
</ttp:features>

xml:base 속성을 지정한다면, (1) <uri> 값 구문을 따라야 하고, (2) 절대 URI를 표현해야 하며, 이 URI는 [XML Base]를 따라야 합니다. 또한 (3) 기능 네임스페이스를 표현해야 하며, 그 정의는 E.1 기능 지정에 따릅니다. 지정하지 않으면, xml:base 속성의 기본값이 적용되며, 이 값은 TT 기능 네임스페이스입니다.

xml:base 속성은 기능 지정 URI의 축약을 허용하는 데 사용되며, 해당 URI는 자식 ttp:feature 요소가 표현합니다.

6.1.3 ttp:feature

ttp:feature 요소는 특정 기능의 지원 및 사용 요구 사항에 관한 정보를 지정하는 데 사용됩니다.

XML 표현 – 요소 정보 항목: ttp:feature
<ttp:feature
  extends = xsd:string
  restricts = xsd:string
  value = ("optional" | "required" | "use" | "prohibited") : 아래 본문 참조
  xml:id = ID
  콘텐츠: #PCDATA
</ttp:feature>

ttp:feature 요소의 자식은 비어 있지 않은 문자 정보 항목의 시퀀스를 표현해야 하며, 이 항목들을 이어 붙인 결과는 <uri> 값 구문을 따라야 합니다.

extends 속성이나 restricts 속성 또는 둘 다를 지정한다면, (1) <uri> 값 구문을 따라야 하고, (2) 기능 지정을 표현해야 하며, 그 정의는 E.1 기능 지정에 따릅니다.

extends 속성은 정의하는 기능이 구문적 관점이나 의미론적 관점 또는 두 관점 모두에서 extends 속성이 참조하는 기능의 진상위 집합임을 나타내는 데 사용할 수 있습니다. restricts 속성은 정의하는 기능이 구문적 관점이나 의미론적 관점 또는 두 관점 모두에서 restricts 속성이 참조하는 기능의 진부분 집합임을 나타내는 데 사용할 수 있습니다. extends 속성을 지정하면 restricts 속성을 같은 ttp:feature 요소에 지정해서는 안 됩니다. 마찬가지로 restricts 속성을 지정하면 extends 속성을 지정해서는 안 됩니다.

(1) ttp:feature 요소의 콘텐츠, (2) extends 속성 또는 (3) restricts 속성이 표현하는 URI가 상대 URI이면, 기능 네임스페이스 값과 결합했을 때 절대 URI를 표현해야 합니다. 이 네임스페이스 값은 xml:base 속성으로 표현되며, 가장 가까운 조상 ttp:features 요소에 있는 속성입니다. 원래의 절대 URI이든, 처리 결과로 얻은 절대화된 URI이든 관계없이, ttp:feature 요소가 표현하는 URI는 기능 지정의 구문도 따라야 하며, 그 정의는 E.1 기능 지정에 따릅니다. 또한, 이 URI에 나타나는 구체적인 지정, 즉 기능 지정 중 프래그먼트 식별자 구분자 '#'으로 시작하는 부분은 이 명세 또는 이미 공개된 버전의 명세에서 정의되어야 합니다. 해당 공개 버전은 REC 상태에 도달한 것이어야 합니다.

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

value 속성은 프로파일 유형에 따라 지정된 기능의 지원 또는 사용에 관한 제약을 지정합니다.

프로파일이 처리기 프로파일이면 다음 의미론이 적용됩니다.

  • value 속성의 값이 optional이면, 처리기는 문서를 처리하기 위해 해당 기능을 구현하거나 다른 방식으로 지원할 수 있지만, 반드시 그렇게 해야 하는 것은 아닙니다.

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

    1. 처리기가 해당 기능을 구현하거나 다른 방식으로 지원한다면, 해당 문서의 처리를 계속합니다.

    2. 그렇지 않고 다음 조건을 모두 충족하면, (1) extends 속성이 이 ttp:feature 요소에 지정되어 있고, (2) extends 속성의 값이 지정하는 기능을 처리기가 구현하거나 다른 방식으로 지원하며, (3) 계산된 ttp:permitFeatureNarrowing 속성 값이 루트 tt 요소에서 false가 아니라면, 문서의 처리를 계속합니다.

    3. 그렇지 않고 다음 조건을 모두 충족하면, (1) restricts 속성이 이 ttp:feature 요소에 지정되어 있고, (2) restricts 속성의 값이 지정하는 기능을 처리기가 구현하거나 다른 방식으로 지원하며, (3) 계산된 ttp:permitFeatureWidening 속성 값이 루트 tt 요소에서 false가 아니라면, 문서의 처리를 계속합니다.

    4. 그렇지 않으면 문서의 처리를 중단합니다. 단, 최종 사용자나 구현별 매개변수가 이를 재정의하는 경우는 예외이며, 해당 매개변수는 최종 사용자 또는 사용자나 시스템 구성 설정에서 비롯된 것임을 추적할 수 있어야 합니다.

  • value 속성을 지정하지 않으면 해당 기능 명세는 required 값을 지정한 것처럼 해석해야 합니다.

프로파일이 콘텐츠 프로파일이면 다음 의미론이 적용됩니다.

  • value 속성의 값이 optional이면, 해당 프로파일에 대한 적합성을 주장하는 문서에 해당 기능이 나타날 수 있지만, 반드시 나타나야 하는 것은 아닙니다.

  • value 속성의 값이 required이면, 해당 프로파일에 대한 적합성을 주장하는 문서에 해당 기능이 나타나야 합니다.

  • value 속성의 값이 prohibited이면, 해당 프로파일에 대한 적합성을 주장하는 문서에 해당 기능이 나타나서는 안 됩니다.

  • value 속성을 지정하지 않으면 해당 기능 명세는 optional 값을 지정한 것처럼 해석해야 합니다.

use 값은 value 속성에서 사용 중단되었습니다. 이 값이 프로파일 명세에 나타나면, required를 지정한 것처럼 해석해야 합니다.

정의된 기능(즉, 표준화된 기능)이나 그 밖에 잘 알려진 기능이 콘텐츠 프로파일의 ttp:feature 요소로 지정되지 않았다면, 해당 기능을 지정하면서 value 속성에 optional을 지정한 것처럼 해석해야 합니다. 그러나 처리기 프로파일에서 지정하지 않았다면, 해당 기능의 지원 여부에 관한 어떠한 주장도 암시되지 않습니다.

참고:

특히 어떤 기능이 콘텐츠 프로파일 정의에 없더라도, 이를 해당 기능의 사용이 문서 인스턴스에서 허용되지 않거나 다른 방식으로 금지된다는 뜻으로 해석해서는 안 됩니다. 콘텐츠 프로파일에서 어떤 기능을 허용하지 않으려면, prohibited 값을 사용하여 지정하는 것이 좋습니다.

문서 인스턴스가 E.1 기능 지정에서 정의한 기능을 사용하고, 해당 문서의 의도된 용도가 그 기능의 인식과 처리를 요구한다면, 문서는 선언하거나 참조하는 프로파일 중 하나에 required 기능 명세를 포함해야 합니다.

다음 예제는 ttp:feature 요소를 보여 줍니다.

예제 조각 – ttp:feature
<ttp:profile use="http://www.w3.org/ns/ttml/profile/ttml2-presentation">
  <ttp:features xml:base="http://www.w3.org/ns/ttml/feature/">
    <ttp:feature value="required">#fontStyle-italic</ttp:feature>
    <ttp:feature value="required">#textDecoration-under</ttp:feature>
    <ttp:feature value="prohibited">#textOutline-blurred</ttp:feature>
  </ttp:features>
</ttp:profile>

참고:

위 예에서는 TTML 표시 프로파일을 기준 프로파일로 사용합니다. 그런 다음 이 기준 프로파일을 세 개의 ttp:feature 요소로 수정하여 (1) 기준 프로파일을 상위 집합으로 확장합니다. 이는 #fontStyle-italic과 #textDecoration-under 모두 TTML 표시 프로파일에서 필수가 아니기 때문입니다. 또한 (2) #textOutline-blurred 기능의 사용을 금지합니다. 이 기능은 TTML 표시 프로파일에서 선택적입니다.

이 예제는 작성자의 다음 의도를 표현합니다. 이탤릭체 글꼴 스타일과 텍스트 밑줄을 지원해야 하며, 문서에서 텍스트 외곽선 흐림 효과를 사용해서는 안 된다는 것입니다.

6.1.4 ttp:extensions

ttp:extensions 요소는 확장의 지원 및 사용 요구 사항에 관한 정보를 그룹화하는 데 사용하는 컨테이너 요소입니다.

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

XML 표현 – 요소 정보 항목: ttp:extensions
<ttp:extensions
  xml:base = <uri> : TT 확장 네임스페이스
  xml:id = ID
  콘텐츠: Metadata.class*, ttp:extension*
</ttp:extensions>

xml:base 속성을 지정한다면, (1) <uri> 값 구문을 따라야 하고, (2) 절대 URI를 표현해야 하며, 이 URI는 [XML Base]를 따라야 합니다. 또한 (3) 확장 네임스페이스를 표현해야 하며, 그 정의는 F.1 확장 지정에 따릅니다. 지정하지 않으면, xml:base 속성의 기본값이 적용되며, 이 값은 TT 확장 네임스페이스입니다.

xml:base 속성은 기능 지정 URI의 축약을 허용하는 데 사용되며, 해당 URI는 자식 ttp:extension 요소가 표현합니다.

6.1.5 ttp:extension

ttp:extension 요소는 특정 확장의 지원 및 사용 요구 사항에 관한 정보를 지정하는 데 사용됩니다.

XML 표현 – 요소 정보 항목: ttp:extension
<ttp:extension
  extends = xsd:string
  restricts = xsd:string
  value = ("optional" | "required" | "use" | "prohibited") : 아래 본문 참조
  xml:id = ID
  콘텐츠: #PCDATA
</ttp:extension>

ttp:extension 요소의 자식은 비어 있지 않은 문자 정보 항목의 시퀀스를 표현해야 하며, 이 항목들을 이어 붙인 결과는 <uri> 값 구문을 따라야 합니다.

extends 속성이나 restricts 속성 또는 둘 다를 지정한다면, (1) <uri> 값 구문을 따라야 하고, (2) 기능 지정 또는 확장 지정을 표현해야 하며, 그 정의는 각각 E.1 기능 지정 또는 F.1 확장 지정에 따릅니다.

extends 속성은 정의하는 확장이 구문적 관점이나 의미론적 관점 또는 두 관점 모두에서 extends 속성이 참조하는 기능이나 확장의 진상위 집합임을 나타내는 데 사용할 수 있습니다. restricts 속성은 정의하는 확장이 구문적 관점이나 의미론적 관점 또는 두 관점 모두에서 restricts 속성이 참조하는 기능이나 확장의 진부분 집합임을 나타내는 데 사용할 수 있습니다. extends 속성을 지정하면 restricts 속성을 같은 ttp:extension 요소에 지정해서는 안 됩니다. 마찬가지로 restricts 속성을 지정하면 extends 속성을 지정해서는 안 됩니다.

(1) ttp:extension 요소의 콘텐츠, (2) extends 속성 또는 (3) restricts 속성이 표현하는 URI가 상대 URI이면, 확장 네임스페이스 값과 결합했을 때 절대 URI를 표현해야 합니다. 이 네임스페이스 값은 xml:base 속성으로 표현되며, 가장 가까운 조상 ttp:extensions 요소에 있는 속성입니다. 원래의 절대 URI이든, 처리 결과로 얻은 절대화된 URI이든 관계없이, ttp:extension 요소가 표현하는 URI는 확장 지정의 구문도 따라야 하며, 그 정의는 F.1 확장 지정에 따릅니다. 한편 extends 속성이나 restricts 속성 또는 둘 다가 표현하는 URI는 기능 지정 또는 확장 지정의 구문을 따라야 하며, 그 정의는 각각 E.1 기능 지정 또는 F.1 확장 지정에 따릅니다.

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

value 속성은 프로파일 유형에 따라 지정된 확장의 지원 또는 사용에 관한 제약을 지정합니다.

프로파일이 처리기 프로파일이면 다음 의미론이 적용됩니다.

  • value 속성의 값이 optional이면, 처리기는 문서를 처리하기 위해 해당 확장을 구현하거나 다른 방식으로 지원할 수 있지만, 반드시 그렇게 해야 하는 것은 아닙니다.

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

    1. 처리기가 해당 확장을 구현하거나 다른 방식으로 지원한다면, 해당 문서의 처리를 계속합니다.

    2. 그렇지 않고 다음 조건을 모두 충족하면, (1) extends 속성이 이 ttp:extension 요소에 지정되어 있고, (2) extends 속성의 값이 지정하는 확장을 처리기가 구현하거나 다른 방식으로 지원하며, (3) 계산된 ttp:permitFeatureNarrowing 속성 값이 루트 tt 요소에서 false가 아니라면, 문서의 처리를 계속합니다.

    3. 그렇지 않고 다음 조건을 모두 충족하면, (1) restricts 속성이 이 ttp:extension 요소에 지정되어 있고, (2) restricts 속성의 값이 지정하는 확장을 처리기가 구현하거나 다른 방식으로 지원하며, (3) 계산된 ttp:permitFeatureWidening 속성 값이 루트 tt 요소에서 false가 아니라면, 문서의 처리를 계속합니다.

    4. 그렇지 않으면 문서의 처리를 중단합니다. 단, 최종 사용자나 구현별 매개변수가 이를 재정의하는 경우는 예외이며, 해당 매개변수는 최종 사용자 또는 사용자나 시스템 구성 설정에서 비롯된 것임을 추적할 수 있어야 합니다.

  • value 속성을 지정하지 않으면 해당 확장 명세는 required 값을 지정한 것처럼 해석해야 합니다.

프로파일이 콘텐츠 프로파일이면 다음 의미론이 적용됩니다.

  • value 속성의 값이 optional이면, 해당 프로파일에 대한 적합성을 주장하는 문서에 해당 확장이 나타날 수 있지만, 반드시 나타나야 하는 것은 아닙니다.

  • value 속성의 값이 required이면, 해당 프로파일에 대한 적합성을 주장하는 문서에 해당 확장이 나타나야 합니다.

  • value 속성의 값이 prohibited이면, 해당 프로파일에 대한 적합성을 주장하는 문서에 해당 확장이 나타나서는 안 됩니다.

  • value 속성을 지정하지 않으면 해당 확장 명세는 optional 값을 지정한 것처럼 해석해야 합니다.

use 값은 value 속성에서 사용 중단되었습니다. 이 값이 프로파일 명세에 나타나면, required를 지정한 것처럼 해석해야 합니다.

잘 알려진 확장이 콘텐츠 프로파일의 ttp:extension 요소로 지정되지 않았다면, 해당 확장을 지정하면서 value 속성에 optional을 지정한 것처럼 해석해야 합니다. 그러나 처리기 프로파일에서 지정하지 않았다면, 해당 확장의 지원 여부에 관한 어떠한 주장도 암시되지 않습니다.

참고:

특히 어떤 확장이 콘텐츠 프로파일 정의에 없더라도, 이를 해당 확장의 사용이 문서 인스턴스에서 허용되지 않거나 다른 방식으로 금지된다는 뜻으로 해석해서는 안 됩니다. 콘텐츠 프로파일에서 어떤 확장을 허용하지 않으려면, prohibited 값을 사용하여 지정하는 것이 좋습니다.

문서 인스턴스가 F.1 확장 지정에 따라 지정할 수 있는 확장을 사용하고, 해당 문서의 의도된 용도가 그 확장의 인식과 처리를 요구한다면, 문서는 required 확장 명세를 선언하거나 참조하는 프로파일 중 하나에 포함해야 합니다.

다음 예제는 ttp:extension 요소를 보여 줍니다.

예제 조각 – ttp:extension
<ttp:profile use="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
  <ttp:extensions xml:base="http://example.org/ttml/extension/">
    <ttp:extension value="required">#prefilter-by-language</ttp:extension>
  </ttp:extensions>
</ttp:profile>

참고:

위 예에서는 TTML 변환 프로파일을 기준 프로파일로 사용합니다. 그런 다음 이 기준 프로파일을 상위 집합으로 확장하면서, 제삼자의 네임스페이스에서 정의한 사설 확장에 대한 지원이 필수임을 지정합니다.

이 예제는 작성자의 다음 의도를 표현합니다. 수신 측 처리기는 TTML 변환 프로파일을 지원해야 하며, 제삼자가 정의한 확장도 지원해야 한다는 것입니다.

6.2 프로파일 속성 어휘

다음 속성은 TT 매개변수 네임스페이스에 정의됩니다.

6.2.1 ttp:contentProfiles

ttp:contentProfiles 속성은 콘텐츠 작성자가 하나 이상의 콘텐츠 프로파일을 표현하는 데 사용할 수 있습니다. 이는 시간 지정 텍스트 마크업 언어(TTML)의 프로파일이며, 이를 포함하는 문서 인스턴스는 지정된 집합의 모든 콘텐츠 프로파일에 대한 적합성을 주장합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다. 각 profile-designator 항목은 <uri> 값 구문을 따라야 하며, 프로파일 지정자에 대해 정의된 제약도 따라야 합니다. 해당 제약은 5.2 프로파일링에 따릅니다.

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

designators
  : designator (<lwsp> designator)*

designator
  : <profile-designator>

지정자 목록을 all(...) 함수 구문으로 감싸거나 함수 구문을 사용하지 않으면, 지정된 모든 콘텐츠 프로파일에 대한 적합성을 주장합니다.

여러 지정자를 지정한다면, 각 지정자의 절대화된 형태는 서로 달라야 합니다. 즉, 절대화된 형태로 변환한 후에는 중복되는 지정자가 허용되지 않습니다.

ttp:contentProfiles 속성은 다음 요소에 지정된 경우에만 유의미한 것으로 간주됩니다. tt 요소입니다.

6.2.2 ttp:contentProfileCombination

ttp:contentProfileCombination 속성은 여러 콘텐츠 프로파일을 결합하는 방식을 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

지정하지 않으면 이 매개변수의 값은 ignore로 간주해야 합니다.

순서가 있는 두 프로파일 명세 값 arg1과 arg2, 그리고 콘텐츠 프로파일 결합 방식이 주어졌을 때, 표 6-1 – 콘텐츠 프로파일 결합은 두 명세 값을 결합한 결과를 규정합니다. 이때 인수의 순서는 어휘적 순서에 따라 결정되며, 그 기준은 콘텐츠 프로파일이 문서 인스턴스에 나타나는 순서입니다.

표 6-1 – 콘텐츠 프로파일 결합
arg1 arg2 leastRestrictive mostRestrictive replace ignore
optional optional optional optional optional optional
optional required optional required required optional
optional prohibited optional prohibited prohibited optional
required optional optional required optional required
required required required required required required
required prohibited required prohibited prohibited required
prohibited optional optional prohibited optional prohibited
prohibited required required prohibited required prohibited
prohibited prohibited prohibited prohibited prohibited prohibited

ttp:contentProfileCombination 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.3 ttp:inferProcessorProfileMethod

ttp:inferProcessorProfileMethod 속성은 콘텐츠 프로파일 명세 값을 그에 대응하는 처리기 프로파일 명세 값에 매핑하는 방식을 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

이 매개변수의 값이 loose이면, 콘텐츠 프로파일 명세에서 처리기 프로파일 명세를 추론할 때, 느슨한(관대한) 매핑이 적용됩니다.

이 매개변수의 값이 strict이면, 콘텐츠 프로파일 명세에서 처리기 프로파일 명세를 추론할 때, 엄격한(보수적인) 매핑이 적용됩니다.

지정하지 않으면 이 매개변수의 값은 loose로 간주해야 합니다.

입력 콘텐츠 프로파일 명세 값 input과 처리기 프로파일 추론 방식이 주어졌을 때, 표 6-2 – 처리기 프로파일 추론 방식은 입력 명세 값을 매핑한 결과를 규정합니다.

표 6-2 – 처리기 프로파일 추론 방식
input loose strict
optional optional required
required required required
prohibited optional optional

ttp:inferProcessorProfileMethod 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.4 ttp:inferProcessorProfileSource

ttp:inferProcessorProfileSource 속성은 콘텐츠 프로파일 명세 값을 그에 대응하는 처리기 프로파일 명세 값에 매핑할 때 사용할 원본을 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

이 매개변수의 값이 combined이면, 처리기 프로파일을 추론할 때 combined specification set을 사용합니다. 이는 유효 콘텐츠 프로파일의 해당 집합이며, 추론의 원본으로 사용됩니다.

이 매개변수의 값이 first이면, 처리기 프로파일을 추론할 때, 다음 집합의 구성 프로파일 중 조건을 만족하는 첫 번째 프로파일을 사용합니다. combined specification set, 즉 유효 콘텐츠 프로파일의 해당 집합입니다. 조건은 해당 구성 프로파일에서 추론한 처리기 프로파일을 콘텐츠 처리기가 지원하는 것입니다. 이 구성 프로파일을 추론의 원본으로 사용하며, 자세한 내용은 추론된 처리기 프로파일 구성 절차를 참조하세요.

지정하지 않으면 이 매개변수의 값은 first로 간주해야 합니다.

ttp:inferProcessorProfileSource 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.5 ttp:permitFeatureNarrowing

ttp:permitFeatureNarrowing 속성은 기능이나 확장과 관련된 요구 사항을 구문적 또는 의미론적으로 더 좁은 해석을 통해 충족할 수 있는지 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

구문 표현 – ttp:permitFeatureNarrowing
ttp:permitFeatureNarrowing
  : xsd:boolean                             // [XML 스키마 제2부], §3.2.2 참조

이 매개변수의 값이 true이면, 기능이나 확장의 지원에 관한 요구 사항은 다음 조건에서 충족될 수 있습니다. 해당 기능이나 확장의 정의에 extends 속성이 지정되어 있고, 그 속성이 참조하는 기능이나 확장을 처리기가 지원하는 경우입니다.

이 매개변수의 값이 false이면, 기능이나 확장의 지원에 관한 요구 사항을 extends 속성이 지정하는 더 좁게 정의된 기능이나 확장으로 충족할 수 없습니다.

지정하지 않으면 이 매개변수의 값은 false로 간주해야 합니다.

ttp:permitFeatureNarrowing 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.6 ttp:permitFeatureWidening

ttp:permitFeatureWidening 속성은 기능이나 확장과 관련된 요구 사항을 구문적 또는 의미론적으로 더 넓은 해석을 통해 충족할 수 있는지 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

구문 표현 – ttp:permitFeatureWidening
ttp:permitFeatureWidening
  : xsd:boolean                             // [XML 스키마 제2부], §3.2.2 참조

이 매개변수의 값이 true이면, 기능이나 확장의 지원에 관한 요구 사항은 다음 조건에서 충족될 수 있습니다. 해당 기능이나 확장의 정의에 restricts 속성이 지정되어 있고, 그 속성이 참조하는 기능이나 확장을 처리기가 지원하는 경우입니다.

이 매개변수의 값이 false이면, 기능이나 확장의 지원에 관한 요구 사항을 restricts 속성이 지정하는 더 넓게 정의된 기능이나 확장으로 충족할 수 없습니다.

지정하지 않으면 이 매개변수의 값은 false로 간주해야 합니다.

ttp:permitFeatureWidening 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.7 ttp:profile

ttp:profile 속성은 처리기 프로파일을 나타냅니다. 이는 시간 지정 텍스트 마크업 언어(TTML)의 프로파일로서, 문서 인스턴스를 처리할 때 적용됩니다.

참고:

작성자가 단일 처리기 프로파일 대신 처리기 프로파일 모음 중 하나 이상을 적용하도록 지정하려면, ttp:processorProfiles를 사용하는 것이 좋습니다. 이는 6.2.8 ttp:processorProfiles에서 규정합니다.

참고:

콘텐츠 프로파일을 알리는 방법에 관한 정보는 6.2.1 ttp:contentProfiles를 참조하세요.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다. designator는 <uri> 값 구문을 따라야 하며, 또한 프로파일 지정자를 지정해야 합니다. 이 지정자는 5.2 프로파일링을 따라야 합니다.

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

designator
  : <profile-designator>

ttp:profile 속성은 다음 요소에 지정된 경우에만 유의미한 것으로 간주됩니다. tt 요소입니다.

최상위 처리기 프로파일이 문서 인스턴스에 정의되어 있다면, ttp:profile 속성을 tt 요소에 지정하지 않는 것이 좋습니다.

참고:

5.2.4 프로파일 의미론에서는 다음에 관한 정보를 제공합니다. 유효 처리기 프로파일을 결정하는 방식으로서, 하나 이상의 메커니즘이 문서 처리 시 사용하거나 사용할 수 있는 하나 이상의 프로파일을 지정하는 경우에 해당합니다.

6.2.8 ttp:processorProfiles

ttp:processorProfiles 속성은 콘텐츠 작성자가 하나 이상의 처리기 프로파일을 표현하는 데 사용할 수 있습니다. 이는 시간 지정 텍스트 마크업 언어(TTML)의 프로파일이며, 이를 포함하는 문서 인스턴스는 다음에 대한 지원을 요구합니다. (1) 지정된 집합의 모든 처리기 프로파일 또는 (2) 어느 하나의 프로파일로서, 지정된 집합에 속하는 처리기 프로파일입니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다. 각 profile-designator 항목은 <uri> 값 구문을 따라야 하며, 프로파일 지정자에 대해 정의된 제약도 따라야 합니다. 해당 제약은 5.2 프로파일링에 따릅니다.

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

designators
  : designator (<lwsp> designator)*

designator
  : <profile-designator>

지정자 목록을 all(...) 함수 구문으로 감싸거나 함수 구문을 사용하지 않으면, 지정된 모든 처리기 프로파일에 대한 지원이 요구됩니다. 지정자 목록을 any(...) 함수 구문으로 감싸면, 지정된 프로파일 중 하나 이상에 대한 지원이 요구됩니다. 해당 프로파일은 처리기 프로파일입니다.

여러 지정자를 지정한다면, 각 지정자의 절대화된 형태는 서로 달라야 합니다. 즉, 절대화된 형태로 변환한 후에는 중복되는 지정자가 허용되지 않습니다.

ttp:processorProfiles 속성은 다음 요소에 지정된 경우에만 유의미한 것으로 간주됩니다. tt 요소입니다.

6.2.9 ttp:processorProfileCombination

ttp:processorProfileCombination 속성은 여러 처리기 프로파일을 결합하는 방식을 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

지정하지 않으면 이 매개변수의 값은 ignore로 간주해야 합니다.

순서가 있는 두 프로파일 명세 값 arg1과 arg2, 그리고 처리기 프로파일 결합 방식이 주어졌을 때, 표 6-3 – 처리기 프로파일 결합은 두 명세 값을 결합한 결과를 규정합니다. 이때 인수의 순서는 어휘적 순서에 따라 결정되며, 그 기준은 처리기 프로파일이 문서 인스턴스에 나타나는 순서입니다.

표 6-3 – 처리기 프로파일 결합
arg1 arg2 leastRestrictive mostRestrictive replace ignore
optional optional optional optional optional optional
optional required optional required required optional
required optional optional required optional required
required required required required required required

ttp:processorProfileCombination 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.10 ttp:validation

ttp:validation 속성은 유효성 검사 처리의 허용 여부나 필수 여부를 문서 인스턴스에 대해 지정하는 데 사용됩니다. 이를 수행하는 주체는 유효성 검사 기능이 있는 콘텐츠 처리기입니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

이 매개변수의 값이 required이면, 유효성 검사 기능이 있는 콘텐츠 처리기는 유효성 검사 처리를 TTML 문서 인스턴스에 대해 수행해야 합니다. 이는 표시나 변환 처리 같은 다른 유형의 처리를 수행하기 전에 이루어져야 합니다.

이 매개변수의 값이 optional이면, 유효성 검사 기능이 있는 콘텐츠 처리기는 유효성 검사 처리를 수행할 수 있지만 반드시 해야 하는 것은 아닙니다. TTML 문서 인스턴스에 대해 수행하는 이 처리는 표시나 변환 처리 같은 다른 유형의 처리에 앞서 이루어집니다.

이 매개변수의 값이 prohibited이면, 유효성 검사 기능이 있는 콘텐츠 처리기는 유효성 검사 처리를 TTML 문서 인스턴스에 대해 수행해서는 안 됩니다. 이는 표시나 변환 처리 같은 다른 유형의 처리에 앞서 수행하는 경우에 적용되며, 최종 사용자나 애플리케이션이 이 금지를 재정의하는 경우는 예외입니다.

유효성 검사 처리를 TTML 문서 인스턴스에 대해 수행하고 유효성 검사에 실패하면, 계산된 값을 사용합니다. ttp:validationAction 속성의 계산된 값으로 추가 처리를 수행하기 전에 취할 동작을 결정합니다.

지정하지 않으면 이 매개변수의 값은 optional로 간주해야 합니다.

ttp:validation 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

6.2.11 ttp:validationAction

ttp:validationAction 속성은 취해야 할 동작을 지정하는 데 사용됩니다. 해당 동작의 수행 주체는 유효성 검사 기능이 있는 콘텐츠 처리기이며, 문서 인스턴스의 유효성 검사에 실패했을 때 적용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

이 매개변수의 값이 abort이면, 처리 중단이 최종 사용자나 애플리케이션에 의해 재정의되지 않는 한, 유효성 검사 기능이 있는 콘텐츠 처리기는 TTML 문서 인스턴스의 처리를 중단해야 합니다. 중단 시점은 유효성 검사 오류 예외가 발생했을 때입니다.

이 매개변수의 값이 warn이면, 유효성 검사 기능이 있는 콘텐츠 처리기는 최종 사용자에게 경고하는 것이 좋습니다. 이는 유효성 검사 오류 또는 유효성 검사 경고 예외가 발생했을 때 적용되며, 최종 사용자에게 처리를 계속하거나 중단할 수 있는 선택권을 주는 것이 좋습니다.

이 매개변수의 값이 ignore이면, 유효성 검사 기능이 있는 콘텐츠 처리기는 처리를 중단하거나 최종 사용자에게 경고하지 않는 것이 좋습니다. 이는 유효성 검사 예외가 발생했을 때 적용됩니다.

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

ttp:validationAction 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

7 매개변수

이 절은 핵심 어휘 카탈로그의 매개변수 사항을 규정합니다. 여기서 매개변수는 다음 목적에 (1) 필수적이거나 (2) 상당히 중요한 정보로 이해해야 합니다. 그 목적은 핵심 어휘 항목이 표현하는 다른 유형의 정보에 대한 의미론을 해석하거나, 문서 처리 맥락을 설정하여 TTML 콘텐츠를 외부 환경과 연관 지을 수 있도록 하는 것입니다.

7.1 매개변수 요소 어휘

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

7.2 매개변수 속성 어휘

다음 속성은 TT 매개변수 네임스페이스에 정의됩니다.

7.2.1 ttp:cellResolution

ttp:cellResolution 속성은 작성자가 가로 및 세로 셀의 수를 표현하는 데 사용할 수 있습니다. 이는 루트 컨테이너 영역을 분할하는 셀의 수이며, 균일한 격자를 기준으로 표시 의미론을 표현하기 위한 것입니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

columns | rows
  : <non-negative-integer>

지정하지 않으면 열과 행의 수를 각각 32와 15로 간주해야 합니다. 지정한다면 열이나 행의 수는 영(0)이 되어서는 안 됩니다.

참고:

32와 15라는 값은 [CTA-608-E]에서 정의한 최대 열 수와 행 수에 근거하여 선택되었습니다.

ttp:cellResolution 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

참고:

균일한 격자는 길이를 측정하고 좌표를 표현하는 목적으로만 사용됩니다. 특히 텍스트의 표시나 개별 글리프 영역의 정렬이 이 격자와 맞춰진다고 가정하지 않습니다. 그러한 정렬은 가능하지만, 고정폭 글꼴과, EM 정사각형이 셀 크기와 정확히 일치하는 글꼴 크기를 사용해야 합니다.

달리 명시된 경우를 제외하고, <length>가 셀 단위로 표현되며 인라인 또는 블록 진행 치수와 평행한 치수를 나타내면, 각각 인라인 또는 블록 진행 치수에서의 셀 치수가 적용됩니다.

참고:

예를 들어 네 가장자리 모두의 패딩을 0.1c로 지정하고, 셀 해상도가 20 × 10이며, 루트 컨테이너 영역의 크기가 640 × 480이라면, 위에서 아래로, 왼쪽에서 오른쪽으로 진행하는 쓰기 모드에서 시작 및 끝 패딩은 (640 / 20) * 0.1픽셀이 되고, 전방 및 후방 패딩은 (480 / 10) * 0.1픽셀이 됩니다.

7.2.2 ttp:clockMode

ttp:clockMode 속성은 시간 표현식을 실제 시간 좌표로 해석하는 방식을 지정하는 데 사용됩니다. 이는 시간 기준이 clock인 경우에 적용되며, 해당 시간 기준은 7.2.11 ttp:timeBase에서 정의합니다.

참고:

시간 표현식의 구문과 의미론에 대한 규정은 12.3 시간 값 표현식을 참조하세요.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

시간 기준, 즉 7.2.11 ttp:timeBase에서 정의한 시간 기준이 clock으로 지정되면, 이 매개변수는 다음과 같이 적용됩니다. 매개변수의 값이 local이면 시간 표현식은 현지 벽시계 시간 및 날짜 좌표로 해석됩니다. utc이면 시간 표현식은 UTC 시간 좌표로 해석됩니다 [UTC]. gps이면 시간 표현식은 GPS 시간 좌표로 해석됩니다 [GPS].

참고:

시간 및 날짜 표현식은 특정 시간대를 암시하지 않습니다. 이는 local 시계 모드가 적용될 때의 동작입니다. 특히 콘텐츠 처리기는 처리가 이루어지는 장소의 현지 시간대를 기준으로 현지 시간 및 날짜 표현식을 해석할 것으로 예상됩니다. 작성자가 시간 및 날짜 표현식을 특정 시간대로 고정하려면, 시간 및 날짜 표현식을 UTC로 변환하고 utc 시계 모드의 사용을 지정할 수 있습니다.

참고:

GPS 시간과 UTC 시간의 주된 차이는 GPS 시간에는 윤초 조정이 적용되지 않는 반면, UTC 시간에는 다음과 같이 조정이 적용된다는 것입니다. UTC = TAI(국제 원자시) + 1972년 이후 누적된 윤초. TAI는 프랑스 세브르에 있는 국제 도량형국(BIPM)에서 유지합니다. GPS 시스템 시간은 미국 해군 천문대의 마스터 시계(MC)에 맞춰 조정되며, 이 시계는 TAI와 가깝지만 구체적으로 명시되지 않은 허용 오차 범위 내에서 유지됩니다.

지정하지 않으면 이 매개변수의 값은 utc로 간주해야 합니다.

ttp:clockMode 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

7.2.3 ttp:displayAspectRatio

ttp:displayAspectRatio 속성은 디스플레이 종횡비를 지정하는 데 사용됩니다. 그 대상은 루트 컨테이너 영역이며, 자세한 내용은 H 루트 컨테이너 영역 의미론에 있습니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

numerator | denominator
  : <non-negative-integer>

지정한다면 분자와 분모 모두 영이 아니어야 합니다. 지정하지 않으면, 디스플레이 종횡비, 즉 루트 컨테이너 영역의 디스플레이 종횡비는 H 루트 컨테이너 영역 의미론에 따라 결정됩니다.

ttp:displayAspectRatio 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

7.2.4 ttp:dropMode

ttp:dropMode 속성은 프레임 계수의 해석 및 사용에 관한 제약을 지정하는 데 사용됩니다. 해당 계수는 [SMPTE ST 12-1] 시간 좌표에 대응하며, 시간 기준이 smpte일 때 적용됩니다. 이 시간 기준은 7.2.11 ttp:timeBase에서 정의합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

시간 기준, 즉 7.2.11 ttp:timeBase에서 정의한 시간 기준이 smpte로 지정되면, 이 매개변수는 다음과 같이 적용됩니다. 매개변수의 값이 nonDrop이면, 시간 표현식의 각 초 내에서 프레임을 0부터 N−1까지 셉니다. 여기서 N은 ttp:frameRate 매개변수로 지정한 값이며, ttp:frameRateMultiplier 매개변수로 지정한 값은 무시합니다.

참고:

nonDrop 모드에서는 정상적인 1배속 정방향 재생 중에 시간 표현식의 1초가 실제 시간의 1초와 같을 수도 있고 다를 수도 있습니다. ttp:frameRateMultiplier 매개변수가 지정되어 있고 그 값이 1:1이 아니면, 시간 표현식의 1초는 실제 시간으로 측정한 재생 경과 시간의 1초보다 짧거나 길어집니다.

이 매개변수의 값이 dropNTSC이면, 시간 표현식에서 초 값이 00인 경우를 제외한 각 초 내에서 프레임을 0부터 N−1까지 셉니다. 여기서 N은 ttp:frameRate 매개변수로 지정한 값이며, 다음 매개변수로 지정한 값은 무시합니다. ttp:frameRateMultiplier 매개변수입니다. 시간 표현식의 초 값이 00이고 분 값이 00, 10, 20, 30, 40 또는 50이 아니면, 프레임 코드 00과 01을 해당 초에서 생략합니다. 그렇지 않으면 이러한 프레임 코드를 생략하지 않습니다.

참고:

예를 들어 dropNTSC 모드에서 ttp:frameRate가 30이면, 연속된 프레임 사이에서 프레임 계수의 불연속이 발생합니다. 이는 다음 시간 표현식 시퀀스에 나타납니다. 01:08:59:28, 01:08:59:29, 01:09:00:02, 01:09:00:03.

이 매개변수의 값이 dropPAL이면, 시간 표현식에서 초 값이 00인 경우를 제외한 각 초 내에서 프레임을 0부터 N−1까지 셉니다. 여기서 N은 ttp:frameRate 매개변수로 지정한 값이며, 다음 매개변수로 지정한 값은 무시합니다. ttp:frameRateMultiplier 매개변수입니다. 시간 표현식의 초 값이 00이고 분 값이 짝수이면서 00, 20 또는 40이 아니면, 프레임 코드 00부터 03까지를 해당 초에서 생략합니다. 그렇지 않으면 이러한 프레임 코드를 생략하지 않습니다.

참고:

예를 들어 dropPAL 모드에서 ttp:frameRate가 30이면, 연속된 프레임 사이에서 프레임 계수의 불연속이 발생합니다. 이는 다음 시간 표현식 시퀀스에 나타납니다. 01:09:59:28, 01:09:59:29, 01:10:00:04, 01:10:00:05.

참고:

dropPAL 모드는 M/PAL 또는 PAL (M) 드롭 프레임 코드라고도 하며, PAL 변조와 약 29.97프레임/초의 NTSC 프레임률을 사용합니다. M/PAL 시스템은 주로 브라질에서 사용됩니다.

지정하지 않으면 nonDrop이 적용되는 것으로 가정해야 합니다.

ttp:dropMode 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

7.2.5 ttp:frameRate

ttp:frameRate 속성은 관련 미디어 객체의 프레임률 또는 문서 인스턴스의 내재적 프레임률을 지정하는 데 사용됩니다. 후자는 해당 인스턴스가 독립적인 미디어 객체로 기능하도록 의도된 경우에 해당합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

구문 표현 – ttp:frameRate
ttp:frameRate
  : <non-negative-integer>                                // value > 0

문서 인스턴스에 적용되는 프레임률은 다음과 같은 시간 표현식을 해석하는 데 사용됩니다. 프레임 단위로 표현된 시간 표현식이며, 그 정의는 12.3.1 <time-expression>에 따릅니다.

media 시간 기준이 적용되고 유효 프레임률이 정수이면, 프레임은 미디어 시간 1초를 나눈 단위로 해석됩니다. 프레임률이 F로 지정되면, 미디어 시간 1초를 동일한 지속 시간의 F개 구간으로 나누며, 각 구간은 프레임 f로 식별됩니다. 이때 f ∈ [0…F−1]입니다.

참고:

I.2 미디어 시간 기준에서 자세한 내용을 확인할 수 있습니다. 이는 media 시간 기준에서 시간 표현식을 해석하는 방법에 관한 내용입니다.

지정하지 않으면 프레임률은 애플리케이션에서 정의한 프레임률과 같은 것으로 간주해야 합니다. 적용되는 애플리케이션 정의 프레임률이 없으면, 초당 삼십(30) 프레임으로 간주해야 합니다. 지정한다면 프레임률은 영(0)보다 커야 합니다.

ttp:frameRate 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

7.2.6 ttp:frameRateMultiplier

ttp:frameRateMultiplier 속성은 프레임률에 적용할 배수를 지정하는 데 사용됩니다. 이 프레임률은 ttp:frameRate 속성으로 지정되며, 배수를 적용하여 유효 프레임률을 계산합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

numerator | denominator
  : <non-negative-integer>

프레임률 배수는 원하는 프레임률을 초당 정수 개의 프레임으로 표현할 수 없을 때 사용됩니다.

지정하지 않으면 프레임률 배수는 애플리케이션에서 정의한 프레임률 배수와 같은 것으로 간주해야 합니다. 적용되는 애플리케이션 정의 프레임률 배수가 없으면 일(1:1)로 간주해야 합니다. 분자와 분모 모두 영이 아니어야 합니다.

ttp:frameRateMultiplier 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

참고:

NTSC [SMPTE ST 170] 형식의 초당 30프레임 비디오 객체와 동기화하는 데 사용하는 프레임률 배수는 명목상 1000:1001입니다. NTSC 비디오의 명목 프레임률은 색차 부반송파 주파수 3,579,545.45…Hz(= 5.0MHz × 63/88)에 비율 2/455를 곱한 후, 프레임당 수평 주사선 수인 525로 나눈 값으로 정의됩니다. 이에 따라 초당 29.970029970029…(= 30 × 1000/1001) 프레임의 프레임률을 얻습니다. 사용 지역과 비디오 형식 표준이 다르면 다른 프레임률 배수가 적용됩니다.

참고:

PAL/M을 제외하면, PAL 형식의 초당 25프레임 비디오 객체와 동기화하는 데 사용하는 프레임률 배수는 명목상 1:1입니다.

7.2.7 ttp:markerMode

ttp:markerMode 속성은 시간 표현식의 해석 및 사용에 관한 제약을 지정하는 데 사용됩니다. 해당 표현식은 [SMPTE ST 12-1] 시간 좌표에 대응하며, 시간 기준이 smpte일 때 적용됩니다. 이 시간 기준은 7.2.11 ttp:timeBase에서 정의합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

시간 기준, 즉 7.2.11 ttp:timeBase에서 정의한 시간 기준이 smpte로 지정되면, 이 매개변수는 다음과 같이 적용됩니다. 매개변수의 값이 continuous이면, [SMPTE ST 12-1] 시간 좌표가 선형이고 단조 증가하거나 단조 감소한다고 가정할 수 있습니다. 그러나 discontinuous이면, 시간 좌표의 선형성이나 단조성에 관해 어떤 가정도 해서는 안 됩니다.

지정하지 않으면 이 매개변수의 값은 discontinuous로 간주해야 합니다.

참고:

이 매개변수의 기본값은 처음에 (TTML 1.0 제1판에서) continuous로 규정되었습니다. 그러나 업계 현황을 추가로 검토한 결과, 이 선택은 잘못되었고 가장 일반적인 기본값은 discontinuous인 것으로 나타났습니다.

ttp:markerMode 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

continuous 값이 적용되면, 시간 표현식을 실제 시간 좌표로 변환할 수 있습니다. 이때 계산된 프레임률과 ttp:dropMode 매개변수가 표현하는 드롭 모드를 고려합니다. 이 경우 콘텐츠 처리기는 다음을 생성하고 유지해야 합니다. 합성 SMPTE 문서 동기화 기준이며, 이 기준 내에서 이러한 시간 표현식을 해석합니다. 자세한 설명은 12.4 타이밍 의미론에 있습니다.

참고:

smpte 시간 기준과 continuous 마커 모드를 사용하는 경우에는 암시적인 시간 좌표 공간이 존재하며, 이를 합성 SMPTE 문서 동기화 기준이라고 합니다. 이는 단조 증가하거나 단조 감소하는 [SMPTE ST 12-1] 시간 좌표로 정의되며, 계산된 프레임률과 드롭 모드를 고려합니다. 모든 시간 표현식은 이 시간 좌표 공간을 기준으로 해석되며, 그 바탕은 SMPTE 시간 코드 동기화 이벤트(마커)입니다. 문서 처리 맥락은 이러한 이벤트를 발생시키며, 여기에는 시간 좌표의 단조성과, 생략된 프레임이 존재할 때의 재동기화에 관한 제약이 내포됩니다.

continuous 마커 모드를 smpte 시간 기준과 함께 사용하는 것은 media 시간 기준을 사용하는 것과 다릅니다. (1) ttp:dropMode 매개변수의 의미론이 전자에는 적용되지만 후자에는 적용되지 않으며, (2) [SMPTE ST 12-1] 시간 좌표는 시간의 확장, 축소 또는 역전이 적용된 미디어에도 단조적으로 적용될 수 있기 때문입니다.

discontinuous 값이 적용되면, 시간 표현식을 실제 시간 좌표로 변환해서는 안 됩니다. 시간 표현식에는 산술 연산자(덧셈, 곱셈)가 정의되지 않으며, 따라서 지속 시간을 나타내는 모든 올바른 형식의 표현식을 유효하지 않은 것으로 간주해야 합니다.

참고:

smpte 시간 기준과 discontinuous 마커 모드를 사용하는 경우에는 유효한 시간 좌표 공간이 없습니다. 대신 모든 시간 표현식을 레이블이 부여된 동기화 이벤트(마커)로 해석하며, 문서 처리 맥락이 이러한 이벤트를 발생시킵니다. 이벤트가 동일한 레이블을 나타내는 시간 표현식에 대응하면, 이에 따라 시간 구간이 시작되거나 종료됩니다.

discontinuous 모드로 동작할 때의 추가적인 부수 효과는 자식의 시간 표현식이 그 시간 컨테이너의 시간 표현식과 필연적인 관계를 갖지 않는다는 것입니다. 즉, 시간 컨테이너와 그 자식은 레이블이 부여된 동기화(마커) 이벤트의 발생을 기준으로 서로 독립적으로 시간상 활성화되거나 비활성화됩니다.

참고:

<time-expression>과 레이블이 부여된 동기화 이벤트(마커)의 비교는 구현에 따라 달라지는 것으로 간주됩니다. 특히 이 명세는 구현이 시간 표현식이나 마커에 특정 내부 형식을 사용하거나 특정 비교 알고리즘을 사용하도록 요구하지 않습니다. 그럼에도 불구하고 구현은 이러한 비교를 수행할 때 시간 표현식의 의미론과 마커 레이블에 적용되는 모든 암시적 의미론을 존중할 것으로 예상됩니다.

참고:

이 매개변수가 나타내는 마커 불연속성의 개념은 프레임을 세는 방식과 논리적으로 독립적입니다. 프레임 계수 방식은 ttp:dropMode 매개변수가 표현합니다. 특히 ttp:dropMode 매개변수가 dropNTSC 또는 dropPAL로 지정되어도 마커 모드는 continuous로 지정할 수 있습니다. 프레임 계수 방식으로 인해 계수에 불연속이 생기더라도 그러합니다. 단, 마커 레이블에 다른 비선형성이나 불연속성이 있는 경우는 예외입니다. 예를 들어 연속된 두 프레임에 10:00:00:00과 10:00:01:00이라는 레이블이 부여된 경우입니다.

7.2.8 ttp:pixelAspectRatio

ttp:pixelAspectRatio 속성은 픽셀 종횡비를 지정하는 데 사용됩니다. 그 대상은 루트 컨테이너 영역이며, 자세한 내용은 H 루트 컨테이너 영역 의미론에 있습니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

numerator | denominator
  : <non-negative-integer>

지정한다면 분자와 분모 모두 영이 아니어야 합니다. 지정하지 않으면, 픽셀 종횡비, 즉 루트 컨테이너 영역의 픽셀 종횡비는 H 루트 컨테이너 영역 의미론에 따라 결정됩니다.

ttp:pixelAspectRatio 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

ttp:pixelAspectRatio 속성은 다음 조건이 충족되지 않으면 지정하지 않는 것이 좋습니다. tts:extent 속성이 두 개의 <length> 명세로 구성되고 px (픽셀) 단위를 사용하며, tt 요소에 함께 지정되어 있어야 합니다. 이 조건 없이 ttp:pixelAspectRatio 속성을 사용하는 방식은 사용 중단되었습니다.

7.2.9 ttp:subFrameRate

ttp:subFrameRate 속성은 관련 미디어 객체의 하위 프레임률 또는 문서 인스턴스의 내재적 하위 프레임률을 지정하는 데 사용됩니다. 후자는 해당 인스턴스가 독립적인 미디어 객체로 기능하도록 의도된 경우에 해당합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

구문 표현 – ttp:subFrameRate
ttp:subFrameRate
  : <non-negative-integer>                                // value > 0

문서 인스턴스에 적용되는 하위 프레임률은 다음과 같은 시간 표현식을 해석하는 데 사용됩니다. 하위 프레임 단위로 표현된 시간 표현식이며, 그 정의는 12.3.1 <time-expression>에 따릅니다.

media 시간 기준이 적용되고 유효 프레임률이 정수이면, 하위 프레임은 미디어 시간의 한 프레임을 나눈 단위로 해석됩니다. 하위 프레임률이 S로 지정되면, 미디어 시간의 한 프레임을 동일한 지속 시간의 S개 구간으로 나누며, 각 구간은 하위 프레임 s로 식별됩니다. 이때 s ∈ [0…S−1]입니다.

참고:

I.2 미디어 시간 기준에서 자세한 내용을 확인할 수 있습니다. 이는 media 시간 기준에서 시간 표현식을 해석하는 방법에 관한 내용입니다.

지정하지 않으면 하위 프레임률은 애플리케이션에서 정의한 하위 프레임률과 같은 것으로 간주해야 합니다. 적용되는 애플리케이션 정의 하위 프레임률이 없으면 일(1)로 간주해야 합니다. 지정한다면 하위 프레임률은 영(0)보다 커야 합니다.

ttp:subFrameRate 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

참고:

하위 프레임은 인터레이스 비디오 미디어 객체와 동기화하는 맥락에서 필드라고도 합니다.

7.2.10 ttp:tickRate

ttp:tickRate 속성은 관련 미디어 객체의 틱 레이트 또는 문서 인스턴스 콘텐츠의 내재적 틱 레이트를 지정하는 데 사용됩니다. 후자는 해당 인스턴스가 독립적인 미디어 객체로 기능하도록 의도된 경우에 해당합니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

구문 표현 – ttp:tickRate
ttp:tickRate
  : <non-negative-integer>                                // value > 0

문서 인스턴스에 적용되는 틱 레이트는 다음과 같은 시간 표현식을 해석하는 데 사용됩니다. 틱 단위로 표현된 시간 표현식이며, t 단위를 사용합니다. 그 정의는 12.3.1 <time-expression>에 따릅니다.

media 시간 기준이 적용되면, 틱은 미디어 시간 1초를 정수 개로 나눈 단위로 해석됩니다. 틱 레이트가 T로 지정되면, 미디어 시간 1초를 동일한 지속 시간의 T개 구간으로 나누며, 각 구간은 틱 t로 식별됩니다. 이때 t ∈ [0…T−1]입니다.

참고:

I.2 미디어 시간 기준에서 자세한 내용을 확인할 수 있습니다. 이는 media 시간 기준에서 시간 표현식을 해석하는 방법에 관한 내용입니다.

지정하지 않았고 프레임률이 지정되어 있다면, 틱 레이트는 유효 프레임률에 하위 프레임률을 곱한 값으로 간주해야 합니다. 즉, 틱을 하위 프레임으로 해석합니다. 프레임률이 지정되어 있지 않다면, 틱 레이트는 미디어 시간 1초당 일(1) 틱으로 간주해야 합니다. 지정한다면 틱 레이트는 영(0)이 되어서는 안 됩니다.

참고:

틱과 프레임 또는 하위 프레임 사이에는 미리 정의된 관계가 없습니다. 틱은 초를 임의로 나누는 단위이며, 분수 형태의 잠재적으로 부정확한 초 표현 대신 고정 소수점 연산을 사용할 수 있도록 합니다.

ttp:tickRate 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

7.2.11 ttp:timeBase

ttp:timeBase 속성은 문서 시간 좌표 공간을 지정하는 데 사용됩니다.

이 속성을 지정한다면 그 값은 다음 구문을 따라야 합니다.

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

시간 기준이 media로 지정되면, 시간 표현식은 어떤 미디어 객체의 타임라인에 있는 좌표를 나타냅니다. 이 미디어 객체는 외부 미디어 객체로서 문서 인스턴스의 콘텐츠를 동기화할 대상일 수 있으며, 또는 문서 인스턴스 자체의 콘텐츠일 수도 있습니다. 후자는 시간 지정 텍스트 콘텐츠가 독립적인 타임라인을 설정하도록 의도된 경우에 해당합니다.

참고:

미디어 시간 기준을 사용할 때, 해당 시간 기준이 일시 정지되거나 양의 방향 또는 음의 방향으로 배율 조정된다면, 즉 미디어 재생 속도가 1이 아니라면, 관련 시간 지정 텍스트 콘텐츠의 표시도 이에 맞춰 각각 일시 정지, 가속 또는 감속될 것으로 예상됩니다. 외부 미디어 시간 기준을 제어하는 수단은 이 명세의 범위 밖입니다.

시간 기준이 smpte로 지정되면, 시간 표현식은 [SMPTE ST 12-1] 시간 좌표를 나타내며, 문서 인스턴스의 콘텐츠는 이 좌표에 동기화됩니다. 이 경우 ttp:markerMode와 ttp:dropMode 매개변수의 값이 적용되며, 각각 7.2.7 ttp:markerMode와 7.2.4 ttp:dropMode에서 정의합니다.

참고:

시간 기준이 smpte로 지정되면, 모든 시간 표현식은 미디어 마커 값을 나타냅니다. 이는 [SMIL 3.0]의 §5.4.3에서 정의한 값과 유사하지만, 불투명한 마커 이름 대신 구조화된 [SMPTE ST 12-1] 시간 좌표가 마커 이름으로 사용됩니다.

시간 기준이 clock으로 지정되면, 시간 표현식은 실제 세계의 타임라인에 있는 좌표를 나타냅니다. 이 타임라인은 실제 시계가 설정하며, 예를 들어 현지 벽시계 시간, UTC(협정 세계시) 또는 GPS(위성 위치 확인 시스템) 타임라인이 있습니다.

지정하지 않으면 기본 시간 기준은 media로 간주해야 합니다.

ttp:timeBase 속성은 tt 요소에 지정된 경우에만 유의미한 것으로 간주됩니다.

media 또는 smpte 시간 기준을 사용할 때, 문서 인스턴스의 통시적 표시는 이를 제어하는 타임라인의 변환에 영향을 받을 수 있습니다. 이러한 변환에는 시간 역전, 확장 또는 축소가 있습니다. 그러나 clock 시간 기준을 사용할 때는 어떠한 변환도 허용되지 않으며, 통시적 표시는 실제 시간의 경과를 바탕으로 하는 선형적이고 단조 증가하는 타임라인을 따라 진행됩니다.

참고:

특정 문서 인스턴스에는 하나의 시간 기준 매개변수만 적용되므로, 시간 표현식의 해석은 문서 인스턴스 전체에서 일관됩니다.

참고:

I 시간 표현식 의미론에서 자세한 내용을 확인할 수 있습니다. 이는 지정된 시간 기준에 따라 시간 표현식을 해석하는 방법에 관한 내용입니다.

8 콘텐츠

이 절은 핵심 어휘 카탈로그의 콘텐츠 사항을 규정합니다.

8.1 콘텐츠 요소 어휘

다음 요소는 문서 인스턴스의 구조와 주요 콘텐츠 측면을 지정합니다.

참고:

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

8.1.1 tt

tt 요소는 문서 인스턴스의 루트 문서 요소 역할을 합니다.

tt 요소는 자식으로 0개 또는 1개의 head 요소를 허용하며, 그 뒤에는 0개 또는 1개의 body 요소를 허용합니다.

XML 표현 – 요소 정보 항목: tt
<tt
  tts:extent = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve") : default
  {TT 매개변수 네임스페이스의 모든 속성}
  콘텐츠: head?, body?
</tt>

루트 시간 범위, 즉 문서 인스턴스가 활성 상태인 시간 구간에는 암시적 지속 시간이 있습니다. 이 지속 시간은 문서에 body 요소가 있으면 해당 body 요소의 암시적 지속 시간과 같고, body 요소가 없으면 영입니다.

tts:extent 속성을 tt 요소에 지정한다면, 10.2.16 tts:extent를 따라야 합니다. 이 경우 해당 속성은 공간적 크기를 지정하며, 그 대상은 루트 컨테이너 영역입니다. 이 안에 콘텐츠 영역이 배치되고 표시됩니다. tts:extent 속성을 지정하지 않으면, 공간적 크기, 즉 루트 컨테이너 영역의 공간적 크기는 H 루트 컨테이너 영역 의미론에서 규정한 규칙에 따라 결정됩니다. 루트 컨테이너 영역의 원점은 문서 처리 맥락에 의해 결정됩니다.

참고:

다른 요구 사항이 없고 관련 미디어 객체가 있다면, 문서 처리 맥락이 다음과 같이 결정하는 것이 좋습니다.

참고:

작성자가 루트 컨테이너 영역의 저장 또는 이미지 종횡비를 해상도를 지정하지 않고 알리려면, ttp:displayAspectRato 매개변수 속성을 사용할 수 있습니다.

xml:lang 속성은 tt 요소에 지정해야 합니다. 속성 값이 비어 있으면, 기본 언어가 적용되지 않음을 의미합니다. 그 대상은 문서 인스턴스에 포함된 텍스트입니다.

xml:space 속성을 tt 요소에 지정하지 않으면, 해당 속성을 default 값으로 지정한 것처럼 간주해야 합니다.

8.1.2 head

head 요소는 헤더 사항을 그룹화하는 데 사용하는 컨테이너 요소입니다. 여기에는 메타데이터, 프로파일, 임베디드 콘텐츠 리소스, 스타일 지정 및 레이아웃 정보가 포함됩니다.

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

자식이 지정하는 메타데이터 중 Metadata.class 요소 그룹의 자식이 지정하는 모든 메타데이터는 의미론적으로 문서 인스턴스 전체에 적용되며, head 요소에만 적용되는 것은 아닙니다.

Parameters.class 요소 그룹의 자식이 지정하는 모든 매개변수는 의미론적으로 문서 인스턴스 전체에 적용되며, head 요소에만 적용되는 것은 아닙니다.

resources 자식 요소는 임베디드 콘텐츠 구성을 지정하는 데 사용되며, 이는 특정 스타일 구성과 임베디드 콘텐츠 요소에서 참조됩니다.

styling 자식 요소는 스타일 구성을 지정하는 데 사용되며, 이는 다른 스타일 구성, 레이아웃 구성 및 콘텐츠 요소에서 참조됩니다.

layout 자식 요소는 레이아웃 구성을 지정하는 데 사용되며, 이는 콘텐츠 요소에서 참조됩니다.

animation 자식 요소는 애니메이션 구성을 지정하는 데 사용되며, 애니메이션 가능한 콘텐츠 요소 또는 레이아웃 요소를 대상으로 합니다.

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

시간 의미론이 head 요소의 콘텐츠에 적용되는 범위에서, 이 요소의 암시적 시간 구간은 루트 시간 범위와 시작 및 끝이 일치하는 것으로 정의됩니다.

8.1.3 body

body 요소는 텍스트 콘텐츠 단위의 시퀀스에 대한 논리적 컨테이너이자 시간 구조화 요소로 기능합니다. 이러한 단위는 논리적 구획으로 표현됩니다.

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

자식이 지정하는 메타데이터 중 Metadata.class 요소 그룹의 자식이 지정하는 모든 메타데이터는 의미론적으로 body 요소와 그 자손 전체에 적용됩니다.

자식으로 지정된 애니메이션 요소 중 Animation.class 요소 그룹에 속하는 모든 요소는 의미론적으로 body 요소에 적용됩니다.

XML 표현 – 요소 정보 항목: body
<body
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT 메타데이터 네임스페이스의 모든 속성}
  {모든 스타일 지정 속성}
  콘텐츠: Metadata.class*, Animation.class*, (div|Embedded.class)*
</body>

작성자는 body 요소의 시간 구간을 begin, dur, end 속성으로 지정할 수 있습니다. 이 구간의 시작점이 지정되지 않은 상태로 남으면, 시작점은 다음 두 시작점 중 더 늦은 것으로 해석됩니다. 문서 시간 좌표 공간의 시작점과 루트 시간 범위의 시작점입니다. 이 구간의 끝점이 지정되지 않은 상태로 남으면, 끝점은 루트 시간 범위의 끝점으로 해석됩니다.

참고:

문서 인스턴스가 SMIL 표시에서 참조된다면, 다른 SMIL 미디어 객체에 적용되는 것과 동일한 타이밍 규칙을 따를 것으로 예상됩니다.

상대적인 시작 시간이나 종료 시간을 body 요소에 지정하면, 이러한 시간은 다음 공간의 시작점을 기준으로 해석됩니다. 문서 시간 좌표 공간입니다.

루트 시간 범위가 계산된 지속 시간, 즉 body 요소의 계산된 지속 시간보다 짧으면, body 요소의 활성 시간 구간은 루트 시간 범위의 활성 끝점에서 잘립니다.

작성자는 스타일 속성의 집합을 body 요소에 연결할 수 있으며, 이때 style 속성이나 인라인 스타일 속성 또는 이 둘의 조합을 사용합니다.

참고:

body 요소와 연결된 스타일 속성은 문서 인스턴스 내에서 스타일 상속에 사용할 수 있으며, 자손 콘텐츠 요소가 이를 상속할 수 있습니다.

timeContainer 속성을 body 요소에 지정하지 않으면, 해당 요소는 병렬 시간 포함 의미론을 갖는 것으로 해석해야 합니다.

8.1.4 div

div 요소는 텍스트 콘텐츠 단위의 시퀀스에 대한 논리적 컨테이너이자 시간 구조화 요소로 기능합니다. 이러한 단위는 논리적 하위 구획이나 문단으로 표현됩니다.

참고:

연속적인 비페이지형 시각적 표시 매체에 렌더링될 때, div 요소는 하나 이상의 블록 영역을 생성할 것으로 예상되며, 이 영역은 0개 이상의 자식 블록 영역을 포함합니다. 자식 블록 영역은 div 요소의 자손인 p 요소가 생성합니다.

어떤 블록 영역이 div 요소에 의해 생성되었으나 자식 영역을 포함하지 않으면, 해당 블록 영역은 표시되지 않을 것으로 예상됩니다.

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

자식이 지정하는 메타데이터 중 Metadata.class 요소 그룹의 자식이 지정하는 모든 메타데이터는 의미론적으로 div 요소와 그 자손 전체에 적용됩니다.

자식으로 지정된 애니메이션 요소 중 Animation.class 요소 그룹에 속하는 모든 요소는 의미론적으로 div 요소에 적용됩니다.

XML 표현 – 요소 정보 항목: div
<div
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT 메타데이터 네임스페이스의 모든 속성}
  {모든 스타일 지정 속성}
  콘텐츠: Metadata.class*, Animation.class*, Layout.class?, (Block.class|Embedded.class)*
</div>

작성자는 스타일 속성의 집합을 div 요소에 연결할 수 있으며, 이때 style 속성이나 인라인 스타일 속성 또는 이 둘의 조합을 사용합니다.

참고:

스타일 속성 중 div 요소와 연결된 속성은 문서 인스턴스 내에서 자손 콘텐츠 요소가 스타일 상속에 사용할 수 있습니다.

timeContainer 속성을 div 요소에 지정하지 않으면, 해당 요소는 병렬 시간 포함 의미론을 갖는 것으로 해석해야 합니다.

8.1.5 p

p 요소는 논리적 문단을 나타내며, 블록 수준 서식 의미론과 인라인 수준 서식 의미론 사이의 전환 지점 역할을 합니다.

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

자식이 지정하는 메타데이터 중 Metadata.class 요소 그룹의 자식이 지정하는 모든 메타데이터는 의미론적으로 p 요소와 그 자손 전체에 적용됩니다.

자식으로 지정된 애니메이션 요소 중 Animation.class 요소 그룹에 속하는 모든 요소는 의미론적으로 p 요소에 적용됩니다.

XML 표현 – 요소 정보 항목: p
<p
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT 메타데이터 네임스페이스의 모든 속성}
  {모든 스타일 지정 속성}
  콘텐츠: Metadata.class*, Animation.class*, Layout.class?, (Inline.class|Embedded.class)*
</p>

작성자는 스타일 속성의 집합을 p 요소에 연결할 수 있으며, 이때 style 속성이나 인라인 스타일 속성 또는 이 둘의 조합을 사용합니다.

참고:

p 요소와 연결된 스타일 속성은 문서 인스턴스 내에서 스타일 상속에 사용할 수 있으며, 자손 콘텐츠 요소가 이를 상속할 수 있습니다.

timeContainer 속성을 p 요소에 지정하지 않으면, 해당 요소는 병렬 시간 포함 의미론을 갖는 것으로 해석해야 합니다.

p 요소의 자식 시퀀스가 문자 정보 항목으로만 구성된다면, 해당 시퀀스에는 [익명 span 구성] 처리가 적용됩니다.

참고:

TTML의 표시 의미론은 사실상 p 요소가 줄바꿈을 구성함을 내포합니다. 특히 처음 생성된 줄 영역의 앞과 마지막으로 생성된 줄 영역의 뒤 모두에 블록 쌓기 제약이 연결됩니다. 11.3.1.4 동시적 흐름 처리에서 자세한 내용을 확인할 수 있습니다.

8.1.6 span

span 요소는 텍스트 콘텐츠 단위의 시퀀스에 대한 논리적 컨테이너이자 시간 구조화 요소로 기능합니다. 이러한 단위는 인라인 수준의 서식 의미론을 갖습니다.

시각적 매체에 표시될 때 span 요소는 인라인 영역의 시퀀스를 생성하도록 의도되며, 각 영역은 하나 이상의 글리프 영역을 포함합니다.

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

자식이 지정하는 메타데이터 중 Metadata.class 요소 그룹의 자식이 지정하는 모든 메타데이터는 의미론적으로 span 요소와 그 자손 전체에 적용됩니다.

자식으로 지정된 애니메이션 요소 중 Animation.class 요소 그룹에 속하는 모든 요소는 의미론적으로 span 요소에 적용됩니다.

XML 표현 – 요소 정보 항목: span
<span
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  style = IDREFS
  timeContainer = ("par" | "seq")
  xlink:arcrole = <uri-list>
  xlink:href = <uri>
  xlink:role = <uri-list>
  xlink:show = ("new" | "replace" | "embed" | "other" | "none") : none
  xlink:title = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT 메타데이터 네임스페이스의 모든 속성}
  {모든 스타일 지정 속성}
  콘텐츠: Metadata.class*, Animation.class*, (Inline.class|Embedded.class)*
</span>

작성자는 스타일 속성의 집합을 span 요소에 연결할 수 있으며, 이때 style 속성이나 인라인 스타일 속성 또는 이 둘의 조합을 사용합니다.

참고:

span 요소와 연결된 스타일 속성은 문서 인스턴스 내에서 스타일 상속에 사용할 수 있으며, 자손 콘텐츠 요소가 이를 상속할 수 있습니다.

timeContainer 속성을 span 요소에 지정하지 않으면, 해당 요소는 병렬 시간 포함 의미론을 갖는 것으로 해석해야 합니다.

연결 속성 xlink:*는 span 요소를 관련 콘텐츠와 연결하는 데 사용할 수 있으며, 지정된 위치(href), 역할 및 제목을 사용합니다. 링크 활성화 동작은 xlink:show 속성의 영향을 받으며, 이 속성의 정확한 의미는 문서 처리 맥락에 의해 결정됩니다.

참고:

xlink:show의 기본값은 처음에 (TTML2 제1판에서) new로 규정되었습니다. 그러나 추가로 검토한 결과, none 값이 실제 구현 관행을 더 잘 반영하는 것으로 판단되었습니다. 특히 none의 의미론은 전적으로 구현에 따라 달라지고, new의 의미론은 none 의미론의 가능한 구현 중 하나에 불과하기 때문입니다.

span 요소에 xlink:href 속성이 지정되어 있으면, 자손 요소에는 xlink:href 속성을 지정해서는 안 됩니다. 지정되어 있다면, 표시 또는 링크 활성화 처리 시 후자의 속성을 무시해야 합니다.

span 요소의 자식 시퀀스가 문자 정보 항목으로만 구성된다면, 해당 시퀀스에는 [익명 span 구성] 처리가 적용됩니다.

8.1.7 br

br 요소는 명시적인 줄바꿈을 나타냅니다.

자식이 지정하는 메타데이터 중 Metadata.class 요소 그룹의 자식이 지정하는 모든 메타데이터는 의미론적으로 br 요소와 그 자손 전체에 적용됩니다.

Animation.class 자식의 사용은 사용 중단되었습니다.

참고:

br 요소에는 스타일 속성이 적용되지 않으므로 애니메이션은 br에 영향을 주지 않습니다.

XML 표현 – 요소 정보 항목: br
<br
  condition = <condition>
  style = IDREFS
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT 메타데이터 네임스페이스의 모든 속성}
  {모든 스타일 지정 속성}
  콘텐츠: Metadata.class*, Animation.class*
</br>

시각적 매체에 표시할 때 br 요소의 존재는 강제 줄바꿈으로 해석해야 합니다.

참고:

br 요소의 시각적 표시는 텔레타이프 장치에서 제어 문자 CR(U+000D) 뒤에 제어 코드 LF(U+000A)를 표시하는 것과 같은 효과를 내도록 의도되었습니다. 따라서 연속된 두 br 요소는 하나의 br 요소와 다른 효과를 냅니다.

8.2 콘텐츠 속성 어휘

이 절은 핵심 어휘 카탈로그의 여러 요소 유형 또는 모든 요소 유형에서 사용하는 다음 공통 속성을 정의합니다.

또한 이 절은 핵심 어휘 카탈로그의 특정 요소 유형에서 사용하는 다음 연결 어휘를 정의합니다.

8.2.1 condition

condition 속성은 요소와 그 자손을 조건부로 제외하는 데 사용됩니다. 제외 대상은 의미론적 처리이며, 이 경우 해당 요소를 조건화된 요소라고 합니다.

참고:

요소에 condition 속성을 사용하더라도 해당 요소와 그 자손의 파싱을 막거나, 파싱된 해당 요소와 그 자손의 표현을 축소된 XML 정보 집합에 삽입하는 것을 막지는 않습니다. 이 정보 집합은 이를 포함하는 문서 인스턴스와 연결됩니다.

condition 속성은 (1) 핵심 어휘 카탈로그의 모든 요소에서 사용할 수 있습니다. 단, 프로파일 사항, 즉 프로파일 모듈의 요소는 제외합니다. 또한 (2) 확장 모듈이 정의한 모든 요소에서 사용할 수 있습니다. 단, 해당 요소의 유형이 condition 속성의 지정을 허용해야 합니다.

condition 속성의 값은 <condition> 표현식을 따라야 하며, 이 표현식은 표시 처리 시점에 평가되거나(지연 평가) 표시 처리 시점 이전에 평가됩니다(즉시 평가). 즉시 평가는 평가 결과 값이 표시 처리 중에 변경될 수 없거나 변경되지 않는다고 알려진 경우에만 수행할 수 있습니다.

참고:

예를 들어 조건 표현식이 조건 함수의 값에 의존하면, 표시 처리 중에 조건 표현식의 값이 변경될 수 있으므로, 이 경우 즉시 평가를 사용할 수 없습니다.

표시 처리 시, 요소에 condition 속성이 지정되어 있고, 그 <condition> 표현식의 평가 결과가 false이면, 해당 요소와 그 자손 요소의 의미론은 명시적으로 예외가 지정되지 않는 한 무시해야 합니다. 즉, 해당 요소와 그 자손 요소는 조건부로 제외됩니다. 이는 자손 요소에 지정된 모든 <condition> 표현식의 평가 결과와 관계없습니다.

참고:

예를 들어 p 요소에 condition 속성이 지정되어 있고 그 평가 결과가 false이면, 해당 요소와 그 자손의 콘텐츠는 표시 시 무시됩니다.

참고:

condition 속성의 평가는 필수가 아니며 관련성도 없습니다. 이는 요소가 조건부로 제외되었고, 그 이유가 조상 요소 중 하나의 조건부 제외인 경우에 해당합니다. 즉, 요소는 조건부로 포함될 수 없습니다. 자신의 condition 속성을 평가하더라도, 조상이 조건부로 제외된 경우에는 그러합니다.

참고:

특정 경우에는 요소의 의미론을 condition 속성으로 무시하거나 제외하는 것이 해당 요소의 의미론 전체가 아니라 일부를 무시하는 것을 뜻합니다. 이에 관해서는 다음 본문과 각 요소의 정의를 참조하세요.

상위 수준 프로토콜이 적용되지 않는 한, 다음 예외가 적용됩니다. 이는 무시할 의미론을 결정할 때의 예외이며, <condition> 표현식의 평가 결과가 false인 경우에 해당합니다.

참고:

위의 예외는 조건부로 제외된 요소의 자손에도 적용됩니다.

8.2.2 xlink:arcrole

xlink:arcrole 속성은 [XLink 1.1]에서 정의한 대로 사용됩니다.

xlink:arcrole 속성은 모든 span 또는 image 요소에서 사용할 수 있습니다.

8.2.3 xlink:href

xlink:href 속성은 [XLink 1.1]에서 정의한 대로 사용됩니다.

xlink:href 속성은 모든 span 또는 image 요소에서 사용할 수 있습니다.

xlink:href 의미론을 구현할 때, xlink:type 의미론은 simple 값에 연결된 의미론으로 고정되며, xlink:actuate 의미론은 onRequest 값에 연결된 의미론으로 고정됩니다. 그 정의는 [XLink 1.1]에 따릅니다.

참고:

xlink:type 속성과 xlink:actuate 속성은 모두 직접 사용하도록 문서 인스턴스에 정의되어 있지 않습니다.

8.2.4 xlink:role

xlink:role 속성은 [XLink 1.1]에서 정의한 대로 사용됩니다.

xlink:role 속성은 모든 span 또는 image 요소에서 사용할 수 있습니다.

8.2.5 xlink:show

xlink:show 속성은 [XLink 1.1]에서 정의한 대로 사용됩니다.

xlink:show 속성은 모든 span 또는 image 요소에서 사용할 수 있습니다.

8.2.6 xlink:title

xlink:title 속성은 [XLink 1.1]에서 정의한 대로 사용됩니다.

xlink:title 속성은 모든 span 또는 image 요소에서 사용할 수 있습니다.

8.2.7 xml:base

xml:base 속성은 [XML Base]에서 정의한 대로 사용됩니다.

xml:base 속성은 핵심 어휘 카탈로그의 요소 중 다음을 허용하는 모든 요소에서 사용할 수 있습니다. (1) condition 속성, (2) 자손 요소로서 Metadata.class 요소 그룹에 속하는 요소, 또는 (3) xml:base 속성을 허용하는 자손 요소입니다.

8.2.8 xml:id

xml:id 속성은 [XML ID]에서 정의한 대로 사용됩니다.

xml:id 속성은 핵심 어휘 카탈로그의 모든 요소에서 사용할 수 있습니다.

8.2.9 xml:lang

xml:lang 속성은 [XML 1.0]의 §2.12, 언어 식별에서 정의한 대로 사용됩니다.

xml:lang 속성은 tt 요소에 지정해야 하며, 매개변수 어휘를 제외한 핵심 어휘 카탈로그의 다른 모든 요소 유형의 인스턴스에도 지정할 수 있습니다.

참고:

[XML 1.0]의 §2.12에서 규정한 대로, 요소에 연결된 언어는 해당 요소의 모든 자손에 적용됩니다. 단, 자손이 이를 재정의한 경우는 예외입니다. 즉, 요소에 연결된 언어는 해당 요소에 지정되거나, 실질적으로 해당 요소의 가장 가까운 조상 요소에서 상속됩니다.

이 언어 연결 과정은 전적으로 다음 정보 집합의 구조를 기반으로 합니다. 축소된 XML 정보 집합으로서, 문서 인스턴스의 정보 집합입니다. 또한 이 과정은 중간 동시적 문서 구성을 수행하기 전에 이루어집니다.

다음 예제는 콘텐츠 요소와 메타데이터 요소에서 xml:lang을 사용하는 방법을 보여 줍니다.

예제 조각 – 콘텐츠와 메타데이터의 언어 식별
<tt ... xml:lang="">
...
<p xml:lang="en">Jean이 인사했습니다.</p>
<p xml:lang="fr">Jean이 인사합니다.</p>
<p>
  <image src="#talking-image">
    <ttm:item name="altText" xml:lang="en">말하는 중</ttm:item>
    <ttm:item name="altText" xml:lang="fr">말하는 중</ttm:item>
  </image>
</p>
...
</tt>

참고:

이 예제에서는 루트 tt 요소에 빈 언어 태그가 지정되어 있습니다. 이는 언어가 알려져 있지 않거나 지정되지 않았음을 뜻하며, 이 언어 식별 정보는 재정의되지 않는 한 자손 요소에 실질적으로 상속됩니다. 다음으로, 처음 두 p(문단) 요소에는 각각 en(영어) 및 fr(프랑스어) 언어 식별자가 연결됩니다. 마지막으로 세 번째 p (문단) 요소는 전경 이미지로 구성되며, 이 이미지에는 두 개의 대체 텍스트 설명이 연결됩니다. 이를 위해 이름이 지정된 메타데이터 항목을 사용하며, 이 텍스트 설명들에는 각각 en(영어) 및 fr(프랑스어) 언어 식별자가 연결됩니다.

8.2.10 xml:space

xml:space 속성은 [XML 1.0]의 §2.10, 공백 처리에서 정의한 대로 사용됩니다.

xml:space 속성은 매개변수 어휘를 제외한 핵심 어휘 카탈로그의 모든 요소에서 사용할 수 있습니다.

참고:

[XML 1.0]의 §2.10에서 규정한 대로, 애플리케이션 공백 처리 지시는 어떤 요소에 적용되면 해당 요소의 모든 자손에도 적용됩니다. 단, 자손이 이를 재정의한 경우는 예외입니다. 즉, 요소에 적용되는 애플리케이션 공백 처리 지시는 해당 요소에 지정되거나 실질적으로 해당 요소의 가장 가까운 조상 요소에서 상속됩니다.

이 애플리케이션 공백 처리 지시 과정은 전적으로 다음 정보 집합의 구조를 기반으로 합니다. 축소된 XML 정보 집합으로서, 문서 인스턴스의 정보 집합입니다. 또한 이 과정은 중간 동시적 문서 구성을 수행하기 전에 이루어집니다.

default 값의 의미론은 다음과 같은 의미로 고정됩니다. 문서 인스턴스의 표시 처리를 11.3.1.4 동시적 흐름 처리에 따라 수행할 때, 다음 속성들이 지정된 것처럼 처리해야 합니다. 이 속성들은 동등한 중간 XSL-FO 문서의 영향을 받는 요소들에 지정된 것으로 봅니다.

  • suppress-at-line-break="auto"

  • linefeed-treatment="treat-as-space"

  • white-space-collapse="true"

  • white-space-treatment="ignore-if-surrounding-linefeed"

마찬가지로 preserve 값의 의미론은 다음과 같은 의미로 고정됩니다. 표시 처리를 수행할 때 다음 속성들이 지정된 것처럼 처리해야 합니다. 이 속성들은 동등한 중간 XSL-FO 문서의 영향을 받는 요소들에 지정된 것으로 봅니다.

  • suppress-at-line-break="retain"

  • linefeed-treatment="preserve"

  • white-space-collapse="false"

  • white-space-treatment="preserve"

정규화되지 않은 수평 탭 &#9;(HT) 문자가 문자 정보 항목에 나타나고, 이 항목이 축소된 XML 정보 집합에 속한다면, 시각적으로 표시할 때 해당 탭 문자는 하나의 &#20;(SPACE) 문자인 것처럼 취급됩니다.

이 명세에서 설명한 것과 다른 수단을 통해 최종적으로 시각적 표시를 생성하려는 다른 유형의 처리를 수행할 때도, 위에서 설명한 공백 축약 및 보존 의미론을 존중하는 것이 좋습니다. 그 밖의 유형의 처리에서는 xml:space 속성의 취급이 처리기에 따라 달라지지만, 가능하다면 위에서 설명한 의미론을 존중하는 것이 좋습니다.

참고:

위에서 인용한 네 가지 XSL-FO 속성의 의미론은 [XSL-FO 1.1]의 §7.17.3, 7.16.7, 7.16.12 및 7.16.8에서 각각 정의합니다.

참고:

TAB(U+0009) 문자에는 표시 의미론이 규정되어 있지 않습니다. 또한 TAB (U+0009) 문자는 글리프 영역을 생성할 수 있습니다. 따라서 TAB(U+0009) 문자를 #PCDATA 콘텐츠에 사용하는 것은, 해당 콘텐츠가 p 및 span 요소 안에 있는 경우, 권장되지 않습니다.

8.3 콘텐츠 값 표현식

핵심 어휘는 다음 표현식을 사용할 수 있습니다.

8.3.1 <absolute-profile-designator>

<absolute-profile-designator> 값 표현식은 (1) 로컬에서 정의한 프로파일과 연결된 절대 지정자를 정의하거나 (2) 원격에서 정의한 프로파일을 참조하는 데 사용됩니다.

구문 표현 – <absolute-profile-designator>
<absolute-profile-designator>
  : <absolute-uri>

참고:

이 맥락에서 로컬에서 정의됨은 현재 문서에 정의되었음을 뜻하며, 원격에서 정의됨은 다른 문서에 정의되었음을 뜻합니다.

8.3.2 <absolute-uri>

<absolute-uri> 값 표현식은 절대 URI [URI]를 지정하는 데 사용됩니다.

구문 표현 – <absolute-uri>
<absolute-uri>
  : <uri>                                     // 절대 형식만 허용

<absolute-uri> 값 표현식의 맥락에서, <uri> 표현식의 값 구문은 [URI]의 §4.3에서 정의한 URI의 절대 형식을 따라야 합니다.

8.3.3 <arguments>

<arguments> 값은 function-expression 비단말 기호와 함께 사용하는 하위 표현식이며, 이 비단말 기호는 <expression> 값에 속합니다.

구문 표현 – <arguments>
<arguments>
  : "(" <lwsp>? ")"
  | "(" <lwsp>? argument-list <lwsp>? ")"

argument-list
  : <expression> (<lwsp>? "," <lwsp>? <expression>)*

8.3.4 <bound-parameter>

<bound-parameter> 값은 이름이 지정된 매개변수의 열거된 모음 중 하나입니다. 각 매개변수는 콘텐츠 처리기에 의해 값에 바인딩됩니다.

구문 표현 – <bound-parameter>
<bound-parameter>
  : "forced"
  | "mediaAspectRatio"
  | "mediaLanguage"
  | "userLanguage"
forced

불리언 값으로 평가되며, 이 값은 콘텐츠 처리기가 강제 자막을 활성화한 상태로 동작하는지 나타냅니다. 문서 인스턴스에서 사용한다면, usesForced라는 이름의 메타데이터 항목을 head 요소의 자식으로 지정하는 것이 좋습니다.

mediaAspectRatio

숫자 값으로 평가되며, 이 값은 관련 미디어 객체의 종횡비와 같습니다.

mediaLanguage

문자열 값으로 평가되며, 이 값은 관련 미디어 객체의 주 언어와 같습니다.

userLanguage

사용자의 주 언어와 같은 문자열 값으로 평가되며, 이 언어는 문서 처리 맥락에 의해 결정됩니다.

8.3.5 <condition>

<condition> 값은 이진 값으로 평가되는 표현식을 지정하는 데 사용됩니다. 이 값은 조건화된 요소의 의미론을 콘텐츠 처리 중에 따를지 무시할지 결정하는 데 사용됩니다.

구문 표현 – <condition>
<condition>
  : <expression>

<condition> 값에 나타나는 function-expression은 <condition-function> 표현식의 형태여야 합니다.

8.3.6 <condition-function>

<condition-function> 값은 <condition> 값 표현식에 사용할 수 있는 하위 표현식입니다.

구문 표현 – <condition-function>

8.3.7 <expression>

<expression> 값은 <condition> 값의 하위 표현식입니다.

구문 표현 – <expression>
<expression>
  : logical-or-expression

logical-or-expression
  : logical-and-expression
  | logical-or-expression <lwsp>? "||" <lwsp>? logical-and-expression

logical-and-expression
  : equality-expression
  | logical-and-expression <lwsp>? "&&" <lwsp>? equality-expression

equality-expression
  : relational-expression
  | equality-expression <lwsp>? "==" <lwsp>? relational-expression
  | equality-expression <lwsp>? "!=" <lwsp>? relational-expression

relational-expression
  : additive-expression
  | relational-expression <lwsp>? "<" <lwsp>? additive-expression
  | relational-expression <lwsp>? ">" <lwsp>? additive-expression
  | relational-expression <lwsp>? "<=" <lwsp>? additive-expression
  | relational-expression <lwsp>? ">=" <lwsp>? additive-expression

additive-expression
  : multiplicitive-expression
  | additive-expression <lwsp>? "+" <lwsp>? multiplicitive-expression
  | additive-expression <lwsp>? "-" <lwsp>? multiplicitive-expression

multiplicitive-expression
  : unary-expression
  | multiplicitive-expression <lwsp>? "*" <lwsp>? unary-expression
  | multiplicitive-expression <lwsp>? "/" <lwsp>? unary-expression
  | multiplicitive-expression <lwsp>? "%" <lwsp>? unary-expression

unary-expression
  : primary-or-function-expression
  | "+" <lwsp>? unary-expression
  | "-" <lwsp>? unary-expression
  | "!" <lwsp>? unary-expression

primary-or-function-expression
  : primary-expression
  | function-expression

primary-expression
  : identifier
  | literal
  | "(" <lwsp>? expression <lwsp>? ")"

function-expression
  : identifier <arguments>

identifier
  : xsd:NCName

literal
  : boolean-literal
  | numeric-literal
  | string-literal

boolean-literal
  : "true"
  | "false"

numeric-literal
  : decimal-literal

decimal-literal
  : decimal-integer-literal "." decimal-digits? exponent-part?
  | decimal-integer-literal exponent-part?
  | "." decimal-digits exponent-part?

decimal-integer-literal
  : "0"
  | non-zero-digit decimal-digits?

decimal-digits
  : decimal-digit
  | decimal-digits decimal-digit

decimal-digit
  : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

non-zero-digit
  : "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

exponent-part
  : exponent-indicator signed-integer

exponent-indicator
  : "e" | "E"

signed-integer
  : decimal-digits
  | "+" decimal-digits
  | "-" decimal-digits

string-literal
  : <quoted-string>

참고:

명확히 하자면, 선형 공백(LWSP)은 identifier 토큰과 그 뒤에 오는 표현식의 첫 여는 괄호 '(' 문자 사이에 허용되지 않습니다. 해당 표현식은 <arguments>이며, function-expression에 속합니다.

8.3.8 <fragment-profile-designator>

<fragment-profile-designator> 값 표현식은 로컬 프로파일, 즉 내부에 인라인으로 정의된 프로파일을 참조하여 지정하는 데 사용됩니다.

구문 표현 – <fragment-profile-designator>
<fragment-profile-designator>
  : <fragment-uri>

8.3.9 <fragment-uri>

<fragment-uri> 값 표현식은 프래그먼트 URI [URI]를 지정하는 데 사용됩니다.

구문 표현 – <fragment-uri>
<fragment-uri>
  : <uri>                                     // 프래그먼트 구성 요소만 허용

<fragment-uri> 값 표현식의 맥락에서, <uri> 표현식의 값 구문은 URI의 프래그먼트 구성 요소를 따라야 합니다. 그 정의는 [URI]의 §3 및 §3.5에 따릅니다. 즉, 스킴, 권한, 경로 및 쿼리 구성 요소는 비어 있고 지정되지 않으며, 프래그먼트 구성 요소만 비어 있지 않고 지정되어 있습니다.

8.3.10 <media-function>

<media-function> 값은 <condition> 값 표현식에 사용할 수 있는 하위 표현식이며, 관련 미디어 객체 또는 문서 처리 맥락에 대해 미디어 쿼리를 수행하는 데 사용됩니다.

구문 표현 – <media-function>
<media-function>
  : "media(" <lwsp>? media-query <lwsp>? ")"

media-query
  : <quoted-string>

<media-function> 값 표현식의 media-query 인수는 media_query_list의 구문을 따라야 하며, 이는 [미디어 쿼리]의 §3에서 정의합니다.

<media-function> 값 표현식은 지정된 미디어 쿼리의 결과에 따라 true로 평가됩니다. 해당 쿼리의 평가 결과가 true이면 그러하며, 그렇지 않으면 값 표현식은 false로 평가됩니다.

<media-function> 표현식의 의미론을 지원하지 않으면, 해당 표현식은 반드시 false로 평가되어야 합니다.

8.3.11 <profile-designator>

<profile-designator> 값 표현식은 프로파일을 지정하는 데 사용됩니다. 이는 프로파일을 정의하거나 이미 정의된 프로파일을 참조하기 위한 것입니다.

구문 표현 – <profile-designator>

<profile-designator>가 <fragment-profile-designator> 형태라면, 최상위 프로파일을 참조해야 합니다. 즉, 다음 프로파일을 참조해서는 안 됩니다. 중첩된 프로파일입니다.

8.3.12 <parameter-function>

<parameter-function> 값은 <condition> 값 표현식에 사용할 수 있는 하위 표현식이며, 이름이 지정된 매개변수를 얻는 데 사용됩니다. 해당 매개변수는 문서 처리 맥락에 속합니다.

구문 표현 – <parameter-function>
<parameter-function>
  : "parameter(" <lwsp>? parameter-name <lwsp>? ")"

parameter-name
  : <quoted-string>

<parameter-function> 값 표현식의 parameter-name 인수는 따옴표를 제거했을 때 다음 형식을 따라야 합니다. xsd:NCName이며, 이 값은 다시 열거된 값 중 하나여야 합니다. 해당 값은 <bound-parameter>에서 열거합니다.

<parameter-function> 값 표현식은 연결되거나 바인딩된 값으로 평가됩니다. 이는 지정된 매개변수 이름에 연결된 값입니다.

8.3.13 <quoted-string>

<quoted-string> 값 표현식은 큰따옴표 또는 작은따옴표로 묶인 문자열을 지정하는 데 사용됩니다.

구문 표현 – <quoted-string>
<quoted-string>
  : double-quoted-string
  | single-quoted-string

double-quoted-string
  : '"' ([^"\\] | escape)* '"'

single-quoted-string
  : "'" ([^'\\] | escape)* "'"

escape
  : '\\' char

참고:

명확히 하자면, 따옴표로 묶인 문자열 표현식에는 선형 공백(LWSP)이 허용됩니다. 그러나 이 공백에는 [XML 1.0]의 §3.3.3, 속성 값 정규화가 적용됩니다. 이는 축소된 XML 정보 집합을 시간 지정 텍스트 문서 인스턴스에서 구성할 때 이루어집니다.

8.3.14 <relative-profile-designator>

<relative-profile-designator> 값 표현식은 표준화된 프로파일을 참조하는 데 사용됩니다. 이 참조는 TT 프로파일 네임스페이스를 기준으로 하며, 해당 네임스페이스는 상대 프로파일 지정자를 절대화할 때 사용하는 기본 URI 역할을 합니다.

구문 표현 – <relative-profile-designator>
<relative-profile-designator>
  : <relative-uri>

참고:

<relative-profile-designator>를 절대화할 때는 xml:base 처리가 적용되지 않습니다. TT 프로파일 네임스페이스가 항상 기본 URI 역할을 하기 때문입니다.

참고:

예를 들어 <relative-profile-designator>를 ttml2-presentation으로 표현하면, 절대화된 프로파일 지정자는 다음과 같습니다. http://www.w3.org/ns/ttml/profile/ttml2-presentation.

8.3.15 <relative-uri>

<relative-uri> 값 표현식은 상대 URI [URI]를 지정하는 데 사용됩니다.

구문 표현 – <relative-uri>
<relative-uri>
  : <uri>                                     // 스킴 구성 요소가 없음

<relative-uri> 값 표현식의 맥락에서, <uri> 표현식의 값 구문은 [URI]의 §3에서 정의한 URI의 상대 형식을 따라야 합니다. 즉, 스킴과 권한 구성 요소는 비어 있고 지정되지 않지만, 경로는 지정되며 쿼리 및 프래그먼트 구성 요소는 선택적으로 지정됩니다.

8.3.16 <supports-function>

<supports-function> 값은 <condition> 값 표현식에 사용할 수 있는 하위 표현식이며, 지정된 항목의 지원 여부를 나타내는 불리언 값을 얻는 데 사용됩니다. 해당 항목은 기능 또는 확장이며, 지원되는지 여부를 나타냅니다.

구문 표현 – <supports-function>
<supports-function>
  : "supports(" <lwsp>? feature-or-extension-designator <lwsp>? ")"

feature-or-extension-designator
  : <quoted-string>

<supports-function> 값 표현식의 feature-or-extension-designator 인수는 다음을 표현해야 합니다. 기능 지정 또는 확장 지정이며, 각각 E.1 기능 지정과 F.1 확장 지정에서 정의합니다. 이때 지정에 포함되는 feature-namespace 또는 extension-namespace 구성 요소는 선택적이며, 지정하지 않으면 각각 TT 기능 네임스페이스 또는 TT 확장 네임스페이스와 같은 것으로 간주됩니다.

<supports-function> 값 표현식은 지정된 기능 또는 확장 지정자를 콘텐츠 처리기가 의미론적으로 지원하면 true로 평가됩니다.

8.3.17 <uri>

<uri> 값 표현식은 URI [URI]를 지정하는 데 사용됩니다.

구문 표현 – <uri>
<uri>
  : xsd:anyURI

xsd:anyURI 데이터 유형의 값 구문은 [XML 스키마 제2부]의 §3.2.17에서 규정한 정의를 따라야 합니다.

참고:

명확히 하자면, URI에서 제외하도록 지정된 문자, 즉 [URI]의 §2, 문자에서 지정한 문자와, 더 구체적으로 XML 공백 문자인 &#9; (HT), &#10; (LF), &#13; (CR), &#20; (SPACE)는, [XML 1.0]의 §3.3.3, 단계 (3)의 첫 번째 항목에서 규정한 대로, 이스케이프되지 않은 형태로 나타나지 않습니다. 이는 <uri> 값의 어휘적 표현에 적용됩니다.

8.3.18 <uri-list>

<uri-list> 값 표현식은 URI [URI] 표현식의 비어 있지 않은 목록을 지정하는 데 사용됩니다.

구문 표현 – <uri-list>
<uri-list>
  : <uri> (<lwsp> <uri>)*

9 임베디드 콘텐츠

이 절에서는 핵심 어휘 카탈로그의 임베디드 콘텐츠에 관한 사항을 명세합니다. 여기서 콘텐츠는 임의의 콘텐츠 유형(형식)의 데이터로 이해해야 하며, 임베디드는 이 데이터를 임베딩(인라인으로 포함)하거나 외부 데이터에 대한 참조를 임베딩하는 것을 의미합니다.

9.1 임베디드 콘텐츠 요소 어휘

다음 요소를 사용하여 임베디드 콘텐츠를 지정할 수 있습니다.

9.1.3 data 요소는 임베디드 데이터 리소스의 범용 컨테이너 요소로 사용되며, 이 리소스는 청크로 분할되거나 분할되지 않을 수 있습니다. 청크로 분할되는 경우 데이터 조각은 9.1.2 chunk 요소를 사용하여 표현됩니다. 9.1.1 audio, 9.1.4 font 및 9.1.5 image 요소는 특정 유형의 임베디드 콘텐츠를 참조하는 데 사용되는 특수 요소입니다. 9.1.6 resources 요소는 후속 요소에서 참조할 수 있도록 임베디드 콘텐츠의 정의를 그룹화하는 데 사용됩니다. 9.1.7 source 요소는 임베디드 콘텐츠의 소스를 표현하는 데 사용할 수 있습니다.

9.1.1 audio

audio 요소는 오디오 리소스를 정의하거나 참조하는 데 사용됩니다.

audio 요소는 두 가지 맥락에 나타날 수 있습니다. (1) resources 요소의 자식으로 나타나는 경우와 (2) body 요소의 자식, Block.class 요소 그룹에 속한 요소의 자식, 즉 다음 중 하나의 자식으로 나타나는 경우입니다. div 또는 p 요소이거나, span 요소의 자식으로도 나타날 수 있습니다. 전자는 다음과 같이 부릅니다. 오디오 정의 맥락이며, 후자는 오디오 표시 맥락입니다.

audio 요소가 오디오 정의 맥락에 나타나면, 오디오 리소스의 공유 가능한 정의로 사용되며, 다른 audio 요소에서 참조할 수 있습니다. 이러한 참조는 이를 포함하는 문서 인스턴스 내에서 이루어집니다.

참고:

오디오 리소스의 공유 가능한 정의는 xml:id 속성을 지정하여 참조할 수 있도록 합니다. 참조는 audio 요소에 의해 오디오 표시 맥락에서 이루어집니다.

audio 요소가 오디오 표시 맥락에 나타나면, 오디오 리소스의 공유할 수 없는 정의로 사용되며, 표시(렌더링) 의미론, 즉 해당 리소스를 재생하려는 의도를 내포합니다.

참고:

오디오 리소스의 공유할 수 없는 정의는 xml:id 속성을 지정할 수도 지정하지 않을 수도 있지만, 이 식별자는 다른 audio 요소에서 참조되지 않으며, 참조되더라도 해당 참조는 무시됩니다.

audio 요소는 자식으로 먼저 Metadata.class 요소 그룹에 속한 요소를 0개 이상, 그 뒤에 다음 Animation.class 요소 그룹에 속한 요소를 0개 이상, 그리고 그 뒤에 0개 이상의 source 요소를 허용합니다.

참고:

audio 요소의 자손인 텍스트 노드는 어느 것도 유의미한 텍스트 노드가 아닙니다. 이는 다음 절차를 수행하는 경우에 적용됩니다. [익명 span 구성] 절차입니다.

XML 표현 – 요소 정보 항목: audio
<audio
  animate = IDREFS
  begin = <time-expression>
  clipBegin = <time-expression>
  clipEnd = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  src = <audio>
  style = IDREFS
  timeContainer = ("par" | "seq")
  type = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {모든 스타일 지정 속성}
  {TT 메타데이터 네임스페이스의 모든 속성}
  콘텐츠: Metadata.class*, Animation.class*, source*
</audio>

audio 요소는 오디오 리소스를 지정하며, 이를 위해 다음 중 하나를 사용합니다. 참조 데이터 임베딩 또는 소스를 통한 데이터 임베딩이며, 이는 다음을 수반합니다. (1) 내장 데이터 리소스를 참조하거나, (2) 외부 데이터 리소스를 참조하거나, (3) 임베디드 데이터 리소스를 정의하거나 참조합니다. 이때 데이터 리소스는 오디오 콘텐츠를 포함합니다.

audio 요소가 src 속성을 지정하는 경우, 다음과 같은 자식 source 요소를 지정해서는 안 됩니다. 반대로, audio 요소가 src 속성을 지정하지 않는 경우, 하나 이상의 자식 source 요소를 지정해야 합니다.

audio 요소가 src 속성을 지정하고 그 값이 다음과 같은 내부 데이터 리소스를 참조하지 않는 경우, type 속성을 지정하는 것이 좋습니다. 이 경우 해당 속성, 즉 type 속성의 값은 참조된 리소스의 미디어(콘텐츠) 유형과 일치해야 합니다. 그 외의 경우에는 type 속성을 지정해서는 안 됩니다.

clipBegin 속성을 지정하는 경우, 그 값은 offset-time 형식을 따라야 하며, 이는 12.3.1 <time-expression>의 형식입니다. 이 경우 이 표현식의 값은 참조된 오디오 콘텐츠의 시작을 기준으로 하는 정상 재생 시간 오프셋을 나타내며, 오디오 표시가 시작되는 지점을 지정합니다. 지정된 값이 참조된 오디오 콘텐츠의 내재적 지속 시간보다 큰 경우, clipBegin의 결정된 값은 내재적 지속 시간으로 간주됩니다. clipBegin 속성을 지정하지 않으면 0 값이 적용됩니다.

마찬가지로, clipEnd 속성을 지정하는 경우, 그 값은 offset-time 형식을 따라야 하며, 이는 12.3.1 <time-expression>의 형식입니다. 이 경우 이 표현식의 값은 참조된 오디오 콘텐츠의 시작을 기준으로 하는 정상 재생 시간 오프셋을 나타내며, 표시가 중단되는 지점을 지정합니다. 지정된 값이 참조된 오디오 콘텐츠의 내재적 지속 시간보다 큰 경우, clipEnd의 결정된 값은 내재적 지속 시간으로 간주됩니다. clipEnd 속성을 지정하지 않으면 오디오 콘텐츠의 내재적 지속 시간과 같은 값이 적용됩니다.

audio 요소의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 외부 오디오 리소스
...
<audio src="http://example.com/audio/description.mp3" type="audio/mp3"/>
...

9.1.2 chunk

chunk 요소는 별개의 데이터 청크(조각)를 표현하는 데 사용됩니다.

chunk 요소는 data 요소의 자식으로 나타날 수 있습니다.

XML 표현 – 요소 정보 항목: chunk
<chunk
  encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : base64
  length = <non-negative-integer>
  xml:id = ID
  콘텐츠: #PCDATA
</chunk>

encoding 속성을 지정하는 경우, 그 값은 다음 요소가 표현하는 바이트 시퀀스의 실제 인코딩을 나타내야 합니다. 해당 요소는 chunk 요소입니다. encoding 속성을 지정하지 않으면 인코딩을 base64로 간주해야 합니다.

선형 공백(<lwsp>) 문자가 이 요소의 #PCDATA 콘텐츠에 있으면, 디코딩 처리를 수행할 때 이를 모두 무시해야 합니다.

length 속성을 지정하는 경우, 그 값은 다음 요소가 표현하는 바이트 시퀀스에서 디코딩된 바이트 수를 나타내야 합니다. 해당 요소는 chunk 요소입니다. 디코딩할 때 지정된 길이 값이 디코딩된 바이트 수와 일치하지 않으면, 해당 청크와 그 컨테이너인 data 요소는 길이가 0인 바이트 시퀀스를 반환해야 합니다. length 속성을 지정하지 않으면, 청크의 길이는 실제로 디코딩된 바이트 수와 같은 것으로 간주됩니다.

청크 데이터의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 청크 데이터
...
<data type="text/plain; charset=us-ascii" length="44">
  <chunk length="19">
    VGhlIHF1aWNrIGJyb3duIGZveA==
  </chunk>
  <chunk length="25">
    IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLg==
  </chunk>
</data>
...

9.1.3 data

data 요소는 임의의 데이터를 위한 범용 컨테이너 또는 해당 데이터에 대한 참조로 기능합니다.

data 요소는 세 가지 맥락에 나타날 수 있습니다. (1) resources 요소의 자식으로 나타나는 경우이며, 이를 데이터 정의 맥락이라고 합니다. (2) metadata 요소의 자식으로 나타나는 경우이며, 이를 메타데이터용 데이터 바인딩 맥락이라고 합니다. 또는 (3) source 요소의 자식으로 나타나는 경우이며, 이를 소스용 데이터 바인딩 맥락이라고 합니다. 마지막 두 맥락을 통틀어 데이터 바인딩 맥락이라고 합니다.

data 요소가 데이터 정의 맥락에 나타나면, 공유 가능한 데이터 리소스 정의로 사용되며, 다음 요소들의 src 속성에서 참조할 수 있습니다. (1) 다른 data 요소, (2) 임베디드 콘텐츠 요소 또는 (3) source 요소입니다. 이 경우 맥락에 따른 data 요소의 활성 시간 구간은 다음 두 구간의 교집합입니다. 부모인 resources 요소의 활성 시간 구간과 이를 참조하는 요소의 활성 시간 구간입니다.

참고:

공유 가능한 데이터 리소스 정의는 xml:id 속성을 지정하여 참조할 수 있도록 합니다. 이 참조에는 데이터 바인딩 맥락에서 사용되는 프래그먼트 식별자가 사용됩니다.

data 요소가 데이터 바인딩 맥락에 나타나면, 공유할 수 없는 데이터 리소스 정의로 사용되며, 바인딩 의미론을 내포합니다. 즉, 이를 직접 참조하는 맥락에 바인딩(연결)하려는 의도를 내포합니다. 이 경우 data 요소의 활성 시간 구간은 가장 가까운 조상인 시간 지정 요소의 활성 시간 구간과 같습니다.

참고:

공유할 수 없는 데이터 리소스 정의는 xml:id 속성을 지정할 수도 지정하지 않을 수도 있지만, 이 식별자는 다른 데이터 바인딩 맥락에서 참조되지 않으며, 참조되더라도 바인딩 의미론이 없습니다.

data 요소는 다음 네 가지 콘텐츠 모델 중 하나를 허용합니다. (1) 하나 이상의 텍스트 노드(즉, #PCDATA), (2) 다음 Metadata.class 요소 그룹에 속한 요소 0개 이상. 이는 src 속성이 지정된 경우입니다. (3) 다음 Metadata.class 요소 그룹에 속한 요소 0개 이상과 그 뒤에 오는 하나 이상의 chunk 요소, 또는 (4) 다음 Metadata.class 요소 그룹에 속한 요소 0개 이상과 그 뒤에 오는 하나 이상의 source 요소입니다. 첫 번째는 단순 데이터 임베딩, 두 번째는 참조 데이터 임베딩, 세 번째는 청크 데이터 임베딩, 네 번째는 소스를 통한 데이터 임베딩이라고 합니다.

단순 데이터 임베딩을 사용하는 경우, 데이터 리소스는 #PCDATA 콘텐츠를 디코딩하여 얻습니다. 참조 데이터 임베딩을 사용하는 경우, 데이터 리소스는 다음 속성이 참조하는 데이터 리소스를 역참조하여 얻습니다. 해당 속성은 src 속성입니다. 청크 데이터 임베딩을 사용하는 경우, 데이터 리소스는 각 자식 요소를 디코딩하여 얻은 바이트 시퀀스를 연결하여 얻습니다. 해당 자식 요소는 chunk 요소입니다. 소스를 통한 데이터 임베딩을 사용하는 경우, 데이터 리소스는 다음 조건을 충족하는 첫 번째 자식 source 요소에서 얻습니다. 즉, 다음과 같은 데이터 리소스로 해석할 수 있어야 하며, 해석할 수 있는 요소가 없으면 빈 데이터 리소스를 얻습니다. 또한 자식 source 요소에는 data 요소를 포함해서는 안 되지만, data 요소가 데이터 정의 맥락에 있는 경우 이를 참조할 수 있습니다.

XML 표현 – 요소 정보 항목: data
<data
  condition = <condition>
  encoding = ("base16" | "base32" | "base32hex" | "base64" | "base64url") : 아래 설명 참조
  format = <data-format>
  length = <non-negative-integer>
  src = <data>
  type = xsd:string : 아래 설명 참조
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: #PCDATA | (Metadata.class*, (chunk+ | source+)? )
</data>

단순 데이터 임베딩을 사용하는 경우, encoding 속성을 지정할 수 있으며, 지정하지 않으면 base64로 간주해야 합니다. 참조 데이터 임베딩, 청크 데이터 임베딩 또는 소스를 통한 데이터 임베딩을 사용하는 경우, encoding 속성을 지정해서는 안 되며, 지정된 경우에는 콘텐츠 처리 시 이를 무시해야 합니다.

또한 단순 데이터 임베딩을 사용하는 경우, 선형 공백(<lwsp>) 문자가 이 요소의 #PCDATA 콘텐츠에 있으면, 디코딩 처리를 수행할 때 이를 모두 무시해야 합니다.

length 속성을 지정하는 경우, 그 값은 다음 요소가 표현하는 바이트 시퀀스에서 디코딩된 바이트 수를 나타내야 합니다. 해당 요소는 data 요소입니다. 디코딩할 때 지정된 길이 값이 디코딩된 바이트 수와 일치하지 않으면, 길이가 0인 바이트 시퀀스를 반환해야 합니다. length 속성을 지정하지 않으면, 데이터 리소스의 길이는 실제로 디코딩된 바이트 수와 같은 것으로 간주됩니다. length 속성은 참조 데이터 임베딩 또는 소스를 통한 데이터 임베딩을 사용할 때 지정해서는 안 됩니다.

참고:

length 속성의 목적은 디코딩된 데이터에 대해 간단한 무결성 검사를 수행할 수단을 제공하는 것입니다. 이 검사는 전송 중 데이터 무결성을 보장하지 않는다는 점에 유의하십시오. 즉, 길이를 변경하지 않고도 데이터를 수정할 수 있습니다.

참조 데이터 임베딩을 사용하는 경우, src 속성을 지정해야 합니다. 그 외의 경우(다른 모든 유형의 데이터 임베딩)에는 해당 속성, 즉 src 속성을 지정해서는 안 됩니다.

단순 데이터 임베딩 또는 청크 데이터 임베딩을 사용하는 경우, type 속성을 지정해야 하며, 그 값은 데이터 리소스의 미디어(콘텐츠) 유형과 일치해야 합니다. 이 경우 정의된 유형이 없으면 application/octet-stream 유형을 사용하는 것이 좋습니다. 참조 데이터 임베딩을 사용하는 경우, 참조 대상이 외부 데이터 리소스이면, type 속성을 지정하는 것이 좋으며, 지정된 경우 그 값은 참조된 데이터 리소스의 미디어(콘텐츠) 유형과 일치해야 합니다. 그 외의 경우(내부 데이터 리소스를 참조하는 경우)에는, type 속성을 지정해서는 안 되며, 이 경우 참조된 data 요소의 미디어(콘텐츠) 유형을 유형으로 사용합니다. 소스를 통한 데이터 임베딩을 사용하는 경우, type 속성을 지정해서는 안 되며, 이 경우 해석된 source 요소의 미디어(콘텐츠) 유형을 유형으로 사용합니다.

type 속성이 지정되지도 결정되지도 않았거나 범용 유형으로 지정된 경우, 예를 들어 application/octet-stream으로 지정되었고, 참조된 데이터 리소스에 관해 알려진 추가 형식 정보가 있지만 이를 미디어 유형 [MIME Media Types] 매개변수로 표현할 수 없는 경우, format 속성을 지정하여 콘텐츠 처리기에 힌트를 제공할 수 있습니다.

단순 데이터 임베딩의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 데이터 정의 맥락의 단순 데이터 임베딩
<head>
  <resources>
    <data xml:id="sharedImageData" type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
    <image xml:id="sharedImage">
      <source src="#sharedImageData"/>
    </image>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage"/>
  <div tts:backgroundImage="#sharedImage"/>
</body>

예제 조각 – 메타데이터용 데이터 바인딩 맥락의 단순 데이터 임베딩
<div>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:desc>터널링된 데이터를 포함하는 메타데이터가 있는 자막</ttm:desc>
    <data encoding="base64" type="application/octet-stream">
      TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
      IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
      dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
      dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
      ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
    </data>
  </metadata>
  <p>터널링된 데이터가 있는 자막</p>
</div>

예제 조각 – 소스용 데이터 바인딩 맥락의 단순 데이터 임베딩
<div>
  <image>
    <source>
      <data type="image/png" length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </data>
    </source>
  </image>
</div>

참조 데이터 임베딩의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 데이터 정의 맥락의 참조 데이터 임베딩
<head>
  <resources>
    <data xml:id="sharedImageData" src="test.png" type="image/png"/>
    <image xml:id="sharedImage1" src="#sharedImageData"/>
    <image xml:id="sharedImage2" src="#sharedImageData"/>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage1"/>
  <div tts:backgroundImage="#sharedImage2"/>
</body>

청크 데이터 임베딩의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 데이터 정의 맥락의 청크 데이터 임베딩
<head>
  <resources>
    <data xml:id="sharedImageData" type="image/png" length="119">
      <chunk length="60">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      </chunk>
      <chunk length="59">
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </chunk>
    </data>
    <image xml:id="sharedImage1" src="#sharedImageData"/>
    <image xml:id="sharedImage2" src="#sharedImageData"/>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage1"/>
  <div tts:backgroundImage="#sharedImage2"/>
</body>

소스를 통한 데이터 임베딩의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 데이터 정의 맥락의 소스를 통한 데이터 임베딩
<head>
  <resources>
    <data xml:id="sharedImageData">
      <source src="test.svg" type="image/svg+xml"/>
      <source src="test.png" type="image/png"/>
    </data>
    <image xml:id="sharedImage1" src="#sharedImageData"/>
    <image xml:id="sharedImage2" src="#sharedImageData"/>
  </resources>
</head>
<body xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <div tts:backgroundImage="#sharedImage1"/>
  <div tts:backgroundImage="#sharedImage2"/>
</body>

9.1.4 font

font 요소는 글꼴 리소스를 정의하거나 참조하는 데 사용됩니다.

font 요소는 resources 요소의 자식으로 나타날 수 있으며, 이를 글꼴 정의 맥락이라고 합니다.

font 요소는 자식으로 먼저 Metadata.class 요소 그룹에 속한 요소를 0개 이상, 그 뒤에 0개 이상의 source 요소를 허용합니다.

XML 표현 – 요소 정보 항목: font
<font
  condition = <condition>
  family = xsd:string
  range = <unicode-range>
  style = ("normal" | "italic" | "oblique") : 아래 설명 참조
  src = <font>
  type = xsd:string
  weight = ("normal" | "bold") : 아래 설명 참조
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: Metadata.class*, source*
</font>

font 요소는 글꼴 리소스를 정의하며, 이를 위해 다음 중 하나를 사용합니다. 참조 데이터 임베딩 또는 소스를 통한 데이터 임베딩이며, 이는 다음을 수반합니다. (1) 내장 데이터 리소스를 참조하거나, (2) 외부 데이터 리소스를 참조하거나, (3) 임베디드 데이터 리소스를 정의하거나 참조합니다. 이때 데이터 리소스는 글꼴 콘텐츠를 포함합니다.

font 요소가 src 속성을 지정하는 경우, 다음과 같은 자식 source 요소를 지정해서는 안 됩니다. 반대로, font 요소가 src 속성을 지정하지 않는 경우, 하나 이상의 자식 source 요소를 지정해야 합니다.

font 요소가 src 속성을 지정하고 그 값이 다음과 같은 내부 데이터 리소스를 참조하지 않는 경우, type 속성을 지정하는 것이 좋습니다. 이 경우 해당 속성, 즉 type 속성의 값은 참조된 리소스의 미디어(콘텐츠) 유형과 일치해야 합니다. 그 외의 경우에는 type 속성을 지정해서는 안 됩니다.

family, range, style 또는 weight 속성 중 하나라도 지정된 경우, 해당 속성은 실제 글꼴 리소스의 패밀리 이름, 지원 문자 범위, 스타일 및 굵기를 재정의합니다. 특히, 지정된 속성 값이 이러한 글꼴 특성의 값, 즉 글꼴 리소스에 인코딩된 값과 다른 경우, 인코딩된 글꼴 특성 대신 지정된 속성 값을 사용해야 합니다. 이는 해당 글꼴 리소스에 적용됩니다.

family, range, style 또는 weight 속성 중 지정되지 않은 속성이 있는 경우, 그 값은 같은 이름의 글꼴 특성에 해당하는 값과 같다고 간주해야 합니다. 이는 글꼴 리소스에 인코딩된 값입니다.

명시적으로 지정되었는지 여부와 관계없이, family 속성의 계산된 값이 다음 표현식과 <generic-family-name> 일치하는 경우(대소문자를 구분하여 비교), 이를 오류로 간주하며, 표시 처리 시 참조된 글꼴 리소스를 무시해야 합니다.

참고:

앞 문단에 따라 콘텐츠 작성자는 범용 글꼴 패밀리에 해당하는 내장 글꼴 리소스를 재정의할 수 없습니다.

참고:

작성자는 가능한 한 부분집합 글꼴을 사용하는 것이 좋습니다. 부분집합 글꼴은 구문적으로 유효한 글꼴 리소스이며, 참조되지 않는 글리프와 참조되지 않는 글리프 메트릭을 제거한 것입니다. 일반적으로 부분집합 글꼴은 특정 문서에 종속됩니다. 해당 문서의 실제 문자 콘텐츠를 기반으로 생성되었을 수 있기 때문입니다.

글꼴 리소스를 역참조(다운로드)할 때, 콘텐츠 처리기는 필요한 처리를 수행하기 위해 글꼴 리소스의 콘텐츠가 필요해지는 시점까지 다운로드 과정을 미룰 수 있습니다. 여기서 처리는 변환 또는 표시 처리입니다.

font 요소의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 글꼴
...
<head>
  <resources>
    <data xml:id="lastResortFont" type="application/font-woff">
      ... base64로 인코딩된 데이터 ...
    </data>
    <font family="MyFont" range="u+20-7f,u+90-9f">
      <source src="http://example.com/fonts/myfont.otf" type="font/otf"/>
      <source src="#lastResortFont"/>
    </font>
  </resources>
</head>
...
<p tts:fontFamily="MyFont">내 글꼴 또는 최후의 대체 글꼴 사용</p>
...

9.1.5 image

image 요소는 이미지 리소스를 정의하거나 참조하는 데 사용됩니다.

image 요소는 두 가지 맥락에 나타날 수 있습니다. (1) resources 요소의 자식으로 나타나는 경우와 (2) 다음 중 하나의 자식으로 나타나는 경우입니다. (i) body 요소, (ii) Block.class 요소 그룹에 속한 요소, 즉 다음 중 하나의 자식인 경우로, div 또는 p 요소, 또는 (iii) span 요소입니다. 전자는 다음과 같이 부릅니다. 이미지 정의 맥락이며, 후자는 이미지 표시 맥락입니다.

image 요소가 이미지 정의 맥락에 나타나면, 이미지 리소스의 공유 가능한 정의로 사용되며, 다른 image 요소 또는 tts:backgroundImage 스타일 속성에서 참조할 수 있습니다. 이러한 참조는 이를 포함하는 문서 인스턴스 내에서 이루어집니다.

참고:

이미지 리소스의 공유 가능한 정의는 xml:id 속성을 지정하여 참조할 수 있도록 합니다. 참조는 image 요소 또는 tts:backgroundImage 스타일 속성에 의해 이미지 표시 맥락에서 이루어집니다.

image 요소가 이미지 표시 맥락에 나타나면, 이미지 리소스의 공유할 수 없는 정의로 사용되며, 표시(렌더링) 의미론을 내포합니다.

참고:

이미지 리소스의 공유할 수 없는 정의는 xml:id 속성을 지정할 수도 지정하지 않을 수도 있지만, 이 식별자는 다른 image 요소에서 참조되지 않으며, 참조되더라도 해당 참조는 무시됩니다.

image 요소가 body 요소 또는 div 요소의 자식으로 나타나면, 이를 표시할 때 이미지가 렌더링되는 블록 영역을 생성합니다. 즉, 블록 경계가 image 요소의 앞뒤에 암시됩니다. 반면, image 요소가 p 또는 span 요소의 자식으로 나타나면, 이를 표시할 때 이미지가 렌더링되는 인라인 영역을 생성합니다. 즉, image 요소의 앞뒤에 블록 경계가 암시되지 않습니다.

참고:

[CSS2]에서 이러한 의미론은 image 요소에 연결된 display 스타일 속성의 값이 각각 block 또는 inline인 경우에 해당합니다.

이미지 리소스가 다음 속성에서 참조되는 경우, tts:backgroundImage 스타일 속성에서 참조되는 경우에는, 해당 리소스의 표시가 콘텐츠 레이아웃에 영향을 주어서는 안 됩니다.

image 요소는 자식으로 먼저 Metadata.class 요소 그룹에 속한 요소를 0개 이상, 그 뒤에 다음 Animation.class 요소 그룹에 속한 요소를 0개 이상, 그리고 그 뒤에 0개 이상의 source 요소를 허용합니다.

참고:

image 요소의 자손인 텍스트 노드는 어느 것도 유의미한 텍스트 노드가 아닙니다. 이는 다음 절차를 수행하는 경우에 적용됩니다. [익명 span 구성] 절차입니다.

XML 표현 – 요소 정보 항목: image
<image
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  region = IDREF
  src = <image>
  style = IDREFS
  timeContainer = ("par" | "seq")
  type = xsd:string
  xlink:arcrole = <uri-list>
  xlink:href = <uri>
  xlink:role = <uri-list>
  xlink:show = ("new" | "replace" | "embed" | "other" | "none") : none
  xlink:title = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {모든 스타일 지정 속성}
  {TT 메타데이터 네임스페이스의 모든 속성}
  콘텐츠: Metadata.class*, Animation.class*, source*
</image>

image 요소는 이미지 리소스를 정의하며, 이를 위해 다음 중 하나를 사용합니다. 참조 데이터 임베딩 또는 소스를 통한 데이터 임베딩이며, 이는 다음을 수반합니다. (1) 내장 데이터 리소스를 참조하거나, (2) 외부 데이터 리소스를 참조하거나, (3) 임베디드 데이터 리소스를 정의하거나 참조합니다. 이때 데이터 리소스는 이미지 콘텐츠를 포함합니다.

image 요소가 src 속성을 지정하는 경우, 다음과 같은 자식 source 요소를 지정해서는 안 됩니다. 반대로, image 요소가 src 속성을 지정하지 않는 경우, 하나 이상의 자식 source 요소를 지정해야 합니다.

image 요소가 src 속성을 지정하고 그 값이 다음과 같은 내부 데이터 리소스를 참조하지 않는 경우, type 속성을 지정하는 것이 좋습니다. 이 경우 해당 속성, 즉 type 속성의 값은 참조된 리소스의 미디어(콘텐츠) 유형과 일치해야 합니다. 그 외의 경우에는 type 속성을 지정해서는 안 됩니다.

image 요소는 tts:extent 스타일 속성을 지정하여 이미지의 표시 너비 또는 높이를 지정할 수 있습니다. 이는 내재적 너비 또는 높이 정보를 사용할 수 없거나 이를 재정의하려는 경우에 해당합니다. 이 속성이 두 요소 모두에 지정된 경우, 즉 image 요소가 이미지 표시 맥락에 있고, 이 요소가 참조하는 image 요소가 이미지 정의 맥락에 있으며 두 요소 모두에 지정된 경우에는, 전자에 지정된 속성이 후자에 지정된 속성보다 우선합니다. 이미지 표시에 다음과 같은 tts:extent 스타일 속성이 적용되는 경우, 지정된 크기의 너비와 높이를 얻기 위해 배율 조정 연산이 적용되며, 이 연산은 종횡비를 변경할 수도 있습니다.

연결 속성 xlink:*를 사용하여 image 요소를 관련 콘텐츠와 연결할 수 있으며, 이때 지정된 위치(href), 역할 및 제목을 사용합니다. 링크 활성화 동작은 xlink:show 속성의 영향을 받으며, 이 속성의 정확한 의미는 문서 처리 맥락에 따라 결정됩니다.

참고:

xlink:show의 기본값은 원래 (TTML2 제1판에서) new로 지정되었습니다. 그러나 추가 검토 결과 none 값이 구현 관행을 더 잘 반영하는 것으로 판단되었습니다. 특히 none의 의미론은 전적으로 구현에 의존하며, new의 의미론은 none 의미론의 가능한 구현 중 하나에 불과하기 때문입니다.

image가 이미지 정의 맥락에 나타나면 다음과 같은 추가 제약 조건이 적용됩니다.

  1. 다음 속성인 animate, begin, dur, end, region 및 timeContainer는 지정해서는 안 되며, 나타나는 경우 표시 처리 시 무시해야 합니다.

  2. 다음 Animation.class 요소 그룹에 속한 요소는 자식 요소로 나타나서는 안 되며, 나타나는 경우 표시 처리 시 무시해야 합니다.

image 요소의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 외부 이미지 리소스
<div>
  <p>이 구획에는 이 문단 뒤에 블록 영역으로 나타나는 콘텐츠 이미지가 있습니다.</p>
  <image src="http://example.com/images/caption.png" type="image/png"/>
<div>
...
<div tts:backgroundImage="http://example.com/images/background.png">
  <p>이 구획에는 이 문단 아래에 나타나는 배경 이미지가 있습니다.</p>
<div>
...

예제 조각 – 공유 가능한 임베디드 이미지 리소스
<head>
  <resources>
    <data xml:id="caption" type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
  </resources>
</head>
<body>
  <div>
    <p>
      <image>
        <source src="#caption"/>
      </image>
    <p>
    ...
    <p>
      <image>
        <source src="#caption"/>
      </image>
    <p>
  </div>
</body>

예제 조각 – 공유할 수 없는 대체 이미지가 있는 외부 이미지 리소스
<div>
  <image>
    <source src="http://example.com/images/caption.png" type="image/png"/>
    <source>
      <data type="image/png" length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </data>
    </source>
  </image>
</div>

참고:

image 요소는 #image 확장의 기능을 통합하고 확장합니다. 이 확장은 [SMPTE ST 2052-1]에서 도입되었습니다. 특히, smpte:backgroundImage 속성이 콘텐츠 이미지를 참조하는 경우, 이를 image 요소에 매핑할 수 있습니다. 이때 해당 요소의 src 속성은 smpte:backgroundImage 속성의 값과 같습니다.

9.1.6 resources

resources 요소는 임베디드 콘텐츠의 정의를 그룹화하는 데 사용되는 컨테이너 요소이며, 이 임베디드 콘텐츠에 적용되는 메타데이터도 포함합니다.

resources 요소는 자식으로 0개 이상의 요소를 Metadata.class 요소 그룹에서 허용하며, 그 뒤에 다음 요소 그룹에 속한 요소를 0개 이상 허용합니다. Data.class, Embedded.class 또는 Font.class 요소 그룹입니다.

XML 표현 – 요소 정보 항목: resources
<resources
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: Metadata.class*, (Data.class|Embedded.class|Font.class)*
</resources>

시간 의미론이 다음 요소의 콘텐츠에 적용되는 범위에서, resources 요소의 암시적 시간 구간은 루트 시간 범위와 시작 및 끝이 일치하도록 정의됩니다.

9.1.7 source

source 요소는 임베디드 콘텐츠 리소스의 소스를 지정하는 데 사용됩니다.

source 요소는 자식으로 먼저 Metadata.class 요소 그룹에 속한 요소를 0개 이상, 그 뒤에 0개 또는 1개의 data 요소를 허용합니다.

source 요소가 src 속성을 지정하는 경우, 다음과 같은 자식 data 요소를 지정해서는 안 됩니다. 이 경우 해당 소스는 다음과 같이 부릅니다. 외부 소스라고 부르는 경우는 src 속성이 외부 리소스를 참조할 때이며, 중첩되지 않은 임베디드 소스라고 부르는 경우는 src 속성이 임베디드 리소스를 참조하고, 해당 리소스가 이를 포함하는 문서 인스턴스에 있을 때입니다.

source 요소가 src 속성을 지정하지 않는 경우, 하나의 자식 data 요소를 지정해야 합니다. 이 경우 해당 소스를 중첩된 임베디드 소스라고 합니다.

source 요소에는 조상 source 요소가 있어서는 안 됩니다.

XML 표현 – 요소 정보 항목: source
<source
  condition = <condition>
  format = <data-format>
  src = <data>
  type = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: Metadata.class*, data?
</source>

format 속성을 지정하는 경우, 이 속성은 임베디드 콘텐츠의 형식(즉, 형식 구문)에 관한 추가 힌트 정보를 제공합니다. 이러한 정보는 표준 미디어(콘텐츠) 유형 레이블이 정의되지 않았거나 해당 정보를 미디어 유형 매개변수 [MIME Media Types]로 표현할 수 없는 경우에 유용할 수 있습니다. 또한 source 요소의 사용 맥락에 따라 이 속성의 값에 추가적인 제약이 적용될 수 있습니다.

src 속성이 지정되고 그 값이 이를 포함하는 문서 인스턴스의 프래그먼트를 참조하는 경우, 해당 프래그먼트가 식별하는 data 요소가 resources 요소의 자식으로 존재해야 합니다. 즉, 이 요소에는 xml:id 속성이 있으며, 그 값은 프래그먼트 식별자와 일치해야 합니다.

src 속성이 지정되고 그 값이 다음 문서 인스턴스의 프래그먼트를 참조하지 않는 경우, 즉 이를 포함하는 문서 인스턴스의 프래그먼트를 참조하지 않는 경우, type 속성을 지정하는 것이 좋으며, 이 경우 그 값은 참조된 리소스의 미디어(콘텐츠) 유형과 일치해야 합니다.

src 속성이 지정되고 그 값이 다음 문서 인스턴스의 프래그먼트를 참조하는 경우, 즉 이를 포함하는 문서 인스턴스의 프래그먼트를 참조하는 경우, type 속성을 지정해서는 안 됩니다. 대신 임베디드 리소스의 콘텐츠 유형은 type 속성의 값으로 결정됩니다. 이 속성은 참조되거나 임베딩된 data 요소에 있습니다.

source 요소의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 외부 소스
...
<image>
  <source src="http://example.com/images/caption.png" type="image/png"/>
</image>
...

예제 조각 – 중첩되지 않은 임베디드 소스
...
<data xml:id="caption" type="image/png" length="119">
  iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
  YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
</data>
...
<image>
  <source src="#caption"/>
</image>
...

예제 조각 – 중첩된 임베디드 소스
...
<image>
  <source>
    <data type="image/png" length="119">
      iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
    </data>
  </source>
</image>
...

9.2 임베디드 콘텐츠 속성 어휘

이 절에서는 특정 임베디드 콘텐츠 요소 어휘와 함께 사용할 다음 속성을 정의합니다.

9.2.1 encoding

encoding 속성은 데이터의 인코딩 형식을 지정하는 데 사용됩니다.

encoding 속성은 다음 요소 유형의 인스턴스에서 지정할 수 있습니다.

encoding 속성을 지정하는 경우, 그 값은 다음 중 하나여야 하며, 이 값들은 [Data Encodings]에서 정의됩니다.

  • base16

  • base32

  • base32hex

  • base64

  • base64url

지정하지 않으면 base64 의미론이 적용됩니다.

9.2.2 format

format 속성은 임베디드 콘텐츠 리소스의 미디어(콘텐츠) 형식에 관한 힌트를 지정하는 데 사용되며, 이는 미디어(콘텐츠) 유형 정보 외의 정보입니다. 해당 유형 정보는 type 속성에서 제공됩니다.

참고:

format 속성은 등록된 미디어(콘텐츠) 유형이 없는 경우에 유용합니다. 예를 들어 사용할 수 있는 미디어(콘텐츠) 유형이 없거나 범용 유형인 application/octet-stream 등을 사용하는 경우입니다.

format 속성은 다음 요소 유형의 인스턴스에서 지정할 수 있습니다.

format 속성의 값은 <data-format> 표현식을 따라야 합니다.

사용 맥락에 따라 추가 제약 조건이 적용될 수 있습니다.

9.2.3 src

src 속성은 데이터 리소스의 위치 또는 그 위치에 매핑되는 식별자를 지정하는 데 사용됩니다.

src 속성은 다음 요소 유형의 인스턴스에서 지정할 수 있습니다.

src 속성을 지정하는 경우, 그 값은 <uri> 값 구문을 따라야 합니다.

사용 맥락에 따라 추가 제약 조건이 적용될 수 있습니다.

9.2.4 type

type 속성은 데이터 리소스의 미디어(콘텐츠) 유형을 지정하는 데 사용되며, 데이터의 특성을 나타내는 추가 매개변수를 표현할 수 있습니다.

type 속성은 다음 요소 유형의 인스턴스에서 지정할 수 있습니다.

type 속성을 지정하는 경우, 그 값은 다음 헤더의 값 구문을 따라야 합니다. Content-Type MIME 헤더이며, [MIME], §5.1에서 정의됩니다.

지정하지 않으면 미디어(콘텐츠) 유형을 알 수 없거나 의도적으로 지정하지 않은 것입니다.

type 속성이 지정된 데이터 리소스를 디코딩할 때, 콘텐츠 처리는 지정된 유형이 올바른지 여부에 관계없이 해당 유형을 따라야 합니다. 즉, type 속성이 데이터 리소스의 유형을 잘못 지정한 경우, 콘텐츠 처리는 해당 유형을 재정의하려고 콘텐츠 스니핑을 수행해서는 안 됩니다.

9.3 임베디드 콘텐츠 값 표현식

임베디드 콘텐츠 요소와 특정 스타일 속성 값은 다음 표현식을 사용합니다.

9.3.1 <audio>

<audio> 값 표현식은 오디오 리소스를 참조로 지정하는 데 사용됩니다.

구문 표현 – <audio>
<audio>
  : <uri>

<audio> 값 표현식이 단독 프래그먼트 식별자 형식인 경우, 해당 프래그먼트 식별자는 audio 요소를 참조해야 합니다. 이 요소는 resources 요소의 자식이며, 이를 포함하는 문서 인스턴스에 있어야 합니다.

<audio> 값 표현식의 값이 http://www.w3.org/ns/ttml/resource/#empty인 경우, 참조된 오디오 리소스는 빈 데이터 리소스입니다.

<audio> 값 표현식의 값이 http://www.w3.org/ns/ttml/resource/#speech이고, 음성 합성 처리기가 지원되며 활성화되어 있으면, 참조된 오디오 리소스는 음성 데이터 리소스입니다. 그 외의 경우(음성 합성 처리기가 지원되지 않거나, 지원되지만 비활성화되어 있는 경우), 참조된 오디오 리소스는 빈 데이터 리소스입니다.

9.3.2 <data>

<data> 값 표현식은 데이터 리소스를 참조로 지정하는 데 사용됩니다.

구문 표현 – <data>
<data>
  : <uri>

<data> 값 표현식이 프래그먼트 식별자 형식인 경우, 해당 프래그먼트 식별자는 data 요소를 참조해야 합니다. 이 요소는 resources 요소의 자식이며, 이를 포함하는 문서 인스턴스에 있어야 합니다.

9.3.3 <data-format>

<data-format> 표현식은 데이터 리소스의 형식을 지정하는 데 사용됩니다. 추가 형식 정보는 등록된 미디어(콘텐츠) 유형이 없는 데이터 리소스의 경우에 유용합니다.

구문 표현 – <data-format>
<data-format>
  : xsd:NCName
  | <uri>

형식 표현식이 <uri> 값 형식인 경우, 절대 URI를 표현해야 합니다.

참고:

이 명세는 데이터 콘텐츠에 사용할 형식 토큰 집합을 표준화하지 않습니다. 작성자는 일반적으로 사용되는 토큰을 사용하거나, 그러한 토큰이 없으면 "x-" 접두사를 추가하여 사적 용도의 토큰을 만드는 것이 좋습니다.

9.3.4 <font>

<font> 표현식은 글꼴 리소스를 참조로 지정하는 데 사용됩니다.

구문 표현 – <font>
<font>
  : <uri>

<font> 표현식이 프래그먼트 식별자 형식인 경우, 해당 프래그먼트 식별자는 font 요소를 참조해야 합니다. 이 요소는 resources 요소의 자식이며, 이를 포함하는 문서 인스턴스에 있어야 합니다.

9.3.5 <image>

<image> 표현식은 이미지 리소스를 참조로 지정하는 데 사용됩니다.

구문 표현 – <image>
<image>
  : <uri>

<image> 표현식이 프래그먼트 식별자 형식인 경우, 해당 프래그먼트 식별자는 image 요소를 참조해야 합니다. 이 요소는 resources 요소의 자식이며, 이를 포함하는 문서 인스턴스에 있어야 합니다.

9.3.6 <unicode-range>

<unicode-range> 표현식은 개별 코드 포인트 또는 코드 포인트 범위를 열거하여 유니코드 코드 포인트의 집합을 지정하는 데 사용됩니다.

구문 표현 – <unicode-range>
<unicode-range>
  : range (<lwsp>? "," <lwsp>? range)*

range
  : codepoint
  | codepoint "-" codepoint

codepoint
  : ("U"|"u") "+" hexdigit-or-wildcard{1,6}

hexdigit-or-wildcard
  : <hex-digit>
  | "?"

10 스타일링

이 절에서는 핵심 어휘 카탈로그의 스타일링 관련 내용을 명시하며, 여기서 스타일링은 콘텐츠에 적용되고 해당 콘텐츠의 표현에 관한 작성자의 의도를 나타내는 분리 가능한 정보 계층으로 이해해야 합니다.

스타일링 속성은 표현에 관한 작성자의 의도를 자체 완결적인 문서 안에 포함할 수 있도록 TTML에 포함됩니다. 이 절에서는 표준 처리 모델을 기준으로 스타일 표현의 의미를 설명합니다. TTML 처리기는 문서 인스턴스를 특정한 방식으로 표현할 필요가 없습니다. 그러나 TTML 표현 처리기가 이 모델과 일치하는 외부에서 관찰 가능한 결과를 제공하도록 이 모델을 구현하면 문서 작성자가 의도한 경험과 매우 유사한 사용자 경험으로 이어질 가능성이 높습니다.

참고:

TTML 스타일 표현의 의미는 레이아웃 및 서식 모델을 기준으로 설명되며, 이 모델은 [XSL-FO 1.1]에 정의되어 있습니다. 이 절의 속성이 미치는 효과는 이 모델과 호환되도록 의도되었습니다. 그러나 표현 에이전트는 문서 작성자의 의도를 충족하기 위해 어떤 기술이든 사용할 수 있습니다. 예를 들어, [CSS2] 처리기를 사용하여 이 모델과 공통으로 갖는 기능을 구현할 수 있습니다.

이 명세에서는 <?xml-stylesheet ... ?> 처리 명령의 규범적인 사용을 정의하지 않습니다.

이 절에서 정의하는 스타일링 속성은 다음 네임스페이스의 속성 사용을 허용하는 모든 요소 유형에서 지정할 수 있습니다. 해당 네임스페이스는 TT 스타일 네임스페이스입니다. 그러나 이러한 속성은 각 속성의 정의에서 명시한 요소 유형에만 스타일 프로퍼티로 적용됩니다. 또한, 요소 유형 정의에서 명시적으로 허용하지 않는 한, TT 스타일 네임스페이스의 속성은 해당 요소에 적용되거나 상속 가능한 스타일 프로퍼티를 나타내는 경우에만 요소에 지정하는 것이 좋습니다. 해당 요소에 적용되지 않고 상속 가능한 스타일 프로퍼티도 나타내지 않는다면, 유효성 검사 이외의 처리를 수행할 때 무시해야 합니다. 유효성 검사 처리의 경우, 이러한 사용은 경고로 보고하는 것이 좋습니다.

스타일 프로퍼티의 적용 가능성을 판단할 때, 해당 스타일 프로퍼티가 다음 요소에 적용되도록 정의되어 있다면, 즉 span 요소에 적용된다면, 익명 span 요소에도 적용됩니다.

10.1 스타일링 요소 어휘

다음 요소는 구조와 주요 스타일링 측면을 지정하며, 그 대상은 문서 인스턴스입니다:

10.1.1 initial

initial 요소는 하나 이상의 스타일 프로퍼티의 초기값을 변경하는 데 사용됩니다. 즉, 명세에서 정의한 초기값과는 다른 값을 사용하도록 지정합니다.

initial 요소는 자식으로 0개 이상의 metadata 요소를 허용합니다.

XML 표현 – 요소 정보 항목: initial
<initial
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {임의의 스타일링 속성}
  콘텐츠: Metadata.class*
</initial>

둘 이상의 initial 요소가 같은 스타일 프로퍼티의 초기값을 지정하는 경우, 마지막에 지정된 값이 적용됩니다(전위 순회 순서 기준).

다음 예제는 initial 요소를 보여 주며, 여기서는 tts:color 프로퍼티의 초기값을 yellow로 정의합니다.

예제 코드 조각 – initial
...
<head>
  <styling>
    <initial tts:color="yellow"/>
  <styling>
<head>
...

10.1.2 style

style 요소는 스타일 지정의 집합을 정의하는 데 사용됩니다. 이 집합은 지정 스타일 집합으로 표현되며, 10.4.4.2 지정 스타일 집합 처리를 따릅니다.

style 요소는 자식으로 0개 이상의 metadata 요소를 허용합니다.

XML 표현 – 요소 정보 항목: style
<style
  condition = <condition>
  style = IDREFS
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {임의의 스타일링 속성}
  콘텐츠: Metadata.class*
</style>

style 요소가 region 요소의 자손으로 나타나는 경우, style 요소는 다음 절에서 정의한 참조 스타일을 계산할 때 무시해야 합니다. 해당 절은 10.4.1.2 참조 스타일링 및 10.4.1.3 연쇄 참조 스타일링입니다.

참고:

즉, 요소가 참조 스타일링을 사용하여 style 요소를 참조하는 경우, 참조된 style 요소는 반드시 styling 요소의 자손으로 나타나야 하며, 다른 문맥에 나타나서는 안 됩니다.

참고:

condition 속성이 style 요소에 적용되고 해당 조건이 false로 평가되면, 해당 요소의 중첩 스타일과 인라인 스타일은 무시됩니다. 그러나 참조 또는 연쇄 참조 스타일링을 통해 포함되는 스타일은 무시되지 않습니다. 자세한 내용은 10.4.4.2 지정 스타일 집합 처리를 참조하세요.

10.1.3 styling

styling 요소는 스타일링 관련 내용을 그룹화하는 데 사용되는 컨테이너 요소이며, 스타일링 관련 내용에 적용되는 메타데이터도 포함합니다.

styling 요소는 자식으로 0개 이상의 Metadata.class 요소 그룹에 속하는 요소와, 그 뒤에 오는 0개 이상의 initial 요소, 그 뒤에 오는 0개 이상의 style 요소를 허용합니다.

XML 표현 – 요소 정보 항목: styling
<styling
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: Metadata.class*, initial*, style*
</styling>

시간 의미 체계가 styling 요소의 콘텐츠에 적용되는 범위에서, 이 요소의 암시적 시간 구간은 루트 시간 범위와 시작 및 종료 시점이 일치하는 것으로 정의됩니다.

10.2 스타일링 속성 어휘

이 절에서는 특정 애니메이션 요소, 10.2.1 style 속성을 사용하는 콘텐츠 요소, 특정 레이아웃 요소 및 스타일 정의 요소에 사용되는 이 속성을 정의합니다.

또한 이 절에서는 TT 스타일 네임스페이스의 다음 속성을 지정하며, 이 속성은 스타일 정의 요소, 특정 레이아웃 요소 및 콘텐츠 요소 중 인라인 스타일 지정을 지원하는 요소에 사용됩니다:

위의 시각적 스타일링 속성 외에도, 이 절에서는 다음 오디오 스타일링 속성을 TT 오디오 스타일 네임스페이스에 지정합니다. 이 속성은 스타일 정의 요소 및 콘텐츠 요소 중 인라인 스타일 지정을 지원하는 요소에 사용됩니다:

이 절에서 정의하는 각 스타일 속성(및 해당 프로퍼티)은 스타일 프로퍼티 정의 표를 사용하며, 이 표는 스타일의 다음 측면 중 하나 이상을 지정합니다: 값 구문, 초기값, 스타일이 의미적으로 적용되는 요소, 스타일의 상속 여부, 백분율 값의 해석 방식(해당하는 경우), 스타일의 애니메이션 가능 여부(및 방식), 의미적 근거(유래).

참고:

다음 표의 항목을 해석할 때, 즉 스타일 프로퍼티 정의 표의 항목을 해석할 때, 적용 대상의 정의로는 [CSS2], §1.4.2.3에 명시된 정의가 이 명세에 적용됩니다.

애니메이션 가능한 스타일에서 이산적이라는 용어는 set 요소를 사용하거나, animate 요소를 사용하면서 discrete 값을 <calculation-mode>로 지정하는 것을 뜻합니다. 연속적이라는 용어는 animate 요소를 사용하면서 linear, paced 또는 spline 값을 <calculation-mode>로 지정하는 것을 뜻합니다. 없음이라는 용어는 해당 스타일에 애니메이션을 적용할 수 없음을 나타냅니다.

참고:

이 명세에서는 스타일 속성에 lowerCamelCased 형식의 로컬 이름을 사용하며, 이러한 스타일 속성은 [XSL-FO 1.1]에서 정의한 비슷한 이름의 프로퍼티를 기반으로 합니다. 이 규칙은 이러한 프로퍼티의 토큰 값에도 동일하게 적용됩니다.

참고:

상속 가능한 스타일 프로퍼티는 지정된 속성으로 표현할 수 있으며, 그 대상은 region 요소 또는 콘텐츠 요소 유형이고, 해당 프로퍼티가 그 요소 유형에 적용되는지 여부와는 무관합니다. 이 기능을 통해 상속 가능한 스타일 프로퍼티를 해당 프로퍼티가 적용되지 않는 조상 요소에 표현할 수 있습니다.

참고:

이 명세(및 이 명세에서 참조하는 스키마)의 스타일 속성 지정에 관한 일반적인 구문, 특히 상속을 지원하기 위한 구문으로 인해, 작성자가 실수로 상속할 수 없는 스타일 속성을 요소에 지정하여, 해당 요소나 그 자손 어느 것에도 적용되지 않더라도 콘텐츠 유효성 관점에서는 적합성을 유지할 수 있습니다. 콘텐츠 작성자는 이러한 사용을 감지하고 경고하는 TTML 콘텐츠 검증 도구를 활용할 수 있습니다.

10.2.1 style

style 속성은 참조 스타일 연결에서 사용되며, 각각 스타일(프로퍼티) 집합을 정의하는 하나 이상의 style 요소를 참조합니다.

style 속성은 다음 요소 유형의 인스턴스에 지정할 수 있습니다:

style 속성이 지정된 경우, 그 값은 반드시 [XML Schema Part 2], §3.3.10에서 정의한 IDREFS 데이터 유형을 따라야 하며, 또한 각 IDREF는 style 요소를 참조해야 하고, 해당 요소는 styling 요소를 조상으로 가져야 합니다.

동일한 IDREF인 ID1 이 다음 속성값에 두 번 이상 나타나는 경우, 즉 style 속성값에 나타나는 경우, 그 사이에 IDREF인 ID2 가 있는 것이 좋으며, ID2는 ID1과 같지 않아야 합니다.

참고:

이 제약은 불필요한 참조 스타일링의 사용을 억제하면서도 여전히 동일한 스타일을 여러 번 참조하여 앞서 참조한 스타일을 재정의할 수 있도록 하기 위한 것입니다. 예를 들어, IDREFS 목록에서 그 사이에 서로 다른 스타일이 참조되는 경우가 이에 해당합니다.

참고:

의미에 관한 자세한 내용은 다음 속성의 사용을 허용하는 특정 요소 유형의 정의, 즉 style 속성을 허용하는 정의와 10.4.1.2 참조 스타일링 및 10.4.1.3 연쇄 참조 스타일링을 참조하세요.

10.2.2 tts:backgroundClip

tts:backgroundClip 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 배경 그리기 사각형을 결정하고, 이 사각형 안에 배경을 그립니다.

값: "border" | "content" | "padding"
초기값: border
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: backgroundClip 도출 근거

다음 예제는 tts:backgroundClip 스타일을 보여 줍니다.

예제 코드 조각 – 배경 자르기
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundOrigin="padding"/>
  <style tts:padding="27px 72px"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundClip="content"/>
</region>

예제 렌더링 – 배경 자르기
TTML backgroundClip 스타일 프로퍼티

10.2.3 tts:backgroundColor

tts:backgroundColor 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 영역 또는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역의 배경색을 정의합니다.

값: <color>
초기값: transparent
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적
의미적 근거: backgroundColor 도출 근거

다음 예제는 tts:backgroundColor 스타일을 보여 줍니다.

예제 코드 조각 – 배경색
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:padding="3px 30px"/>
</region>
...
<p region="r1" tts:backgroundColor="purple" tts:textAlign="center">
  반짝, 반짝, 작은 박쥐여!<br/>
  정말 <span tts:backgroundColor="green">궁금해요</span> 어디에 계신지!
</p>

예제 렌더링 – 배경색
TTML backgroundColor 스타일 프로퍼티

10.2.4 tts:backgroundExtent

tts:backgroundExtent 속성은 배경 이미지의 범위(크기)를 지정하는 데 사용할 수 있으며, 이미지의 고유한 범위(크기)와는 독립적입니다.

값: <extent>
초기값: auto
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 적용되는 배경 배치 사각형의 너비와 높이를 기준으로 합니다
애니메이션 가능 여부: 이산적
의미적 근거: backgroundExtent 도출 근거

이 속성의 값이 auto이면, 스타일 프로퍼티의 계산값은 연결된 배경 이미지의 고유한 범위(크기)와 같은 것으로 간주해야 합니다.

이 속성의 값이 contain이면, 스타일 프로퍼티의 계산값은 다음 절차를 수행하여 결정됩니다. [포함 배율 계산] 절차에서, 대상 사각형 TR은 이미지의 고유한 너비와 높이로 초기화되고, 기준 사각형 RR은 배경 배치 사각형으로 설정되며, 대상 사각형 TR의 결과 출력값이 계산값이 됩니다.

이 속성의 값이 cover이면, 스타일 프로퍼티의 계산값은 다음 절차를 수행하여 결정됩니다. [덮기 배율 계산] 절차에서, 대상 사각형 TR은 이미지의 고유한 너비와 높이로 초기화되고, 기준 사각형 RR은 배경 배치 사각형으로 설정되며, 대상 사각형 TR의 결과 출력값이 계산값이 됩니다.

이 속성의 값이 두 개의 <measure> 지정으로 구성되면, 첫 번째 지정은 너비이고 두 번째 지정은 높이이며, 각각 이 프로퍼티 계산값의 너비와 높이에 해당합니다. 이 경우 두 <measure> 지정은 모두 음수가 아닌 길이로 해석되어야 합니다(또는 해석 가능해야 합니다).

이 스타일 프로퍼티의 계산값이 이미지의 고유한 범위(크기)와 다르면, 이미지 래스터는 각 차원에서 독립적으로 크기가 조정되어 계산된 범위 값과 일치하게 됩니다.

이 속성과 연결된 프로퍼티의 계산값이 지원되지 않으면, 표현 처리기는 지원되는 값 중 가장 가까운 값을 사용해야 합니다.

참고:

이 문맥에서 지원되는 값 중 가장 가까운 값이라는 표현은 유클리드 거리가 최소가 되는 값을 뜻하며, 그 거리는 계산된 배경 범위와 지원되는 배경 범위 사이의 거리입니다. 계산값으로부터 같은 거리에 있는 가장 가까운 지원값이 여러 개라면, [0,0]으로부터 가장 먼 값, 즉 범위가 가장 큰 값을 사용합니다.

지원되는 값 중 가장 가까운 값을 결정하는 이 규칙은 지원되는 거리 중 가장 가까운 작은 거리 대신 가장 가까운 큰 거리를 사용합니다.

다음 예제는 tts:backgroundExtent 스타일을 보여 줍니다.

예제 코드 조각 – 배경 범위
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundExtent="cover"/>
</region>

예제 렌더링 – 배경 범위
TTML backgroundExtent 스타일 프로퍼티

10.2.5 tts:backgroundImage

tts:backgroundImage 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 배경용 비콘텐츠 이미지를 지정합니다. 이 이미지는 영역 또는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역의 배경 이미지로 렌더링됩니다.

tts:backgroundImage 속성은 콘텐츠 이미지를 참조하지 않는 것이 좋습니다. 이는 자막을 렌더링한 래스터 이미지처럼 실제 콘텐츠를 나타내는 이미지입니다. 대신 tts:backgroundImage의 사용은 콘텐츠가 다른 수단으로 표현되는 요소의 배경에 스타일을 지정하는 용도로 제한하는 것이 좋습니다. 래스터 이미지를 사용하여 콘텐츠를 표현해야 한다면, 다음 요소를 통해 표현하는 것이 좋습니다. image 요소를 블록 또는 인라인 문맥에서 사용합니다.

값: "none" | <image>
초기값: none
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: backgroundImage 도출 근거

이 스타일 프로퍼티에 사용되는 <image> 표현식은 외부 이미지 리소스를 직접 참조할 수 있습니다. 그러나 작성자는 그러한 사용을 자제하고, 대신 참조 대상을 다음으로만 제한하는 것이 좋습니다. 즉, image 자식 중 resources 요소에 속하는 자식만 참조합니다.

참고:

다음 요소를 통해 이미지를 간접적으로 참조하면, 즉 image 요소를 통해 참조하면, 이미지를 내장 데이터 리소스로 지정할 수 있으며, 또한 콘텐츠 유형과 같은 이미지에 관한 추가 정보를 지정할 수 있습니다. 나아가 여러 자식을 사용하는 방식을 활용하여, 즉 source 자식을 image 요소에 여러 개 사용하여, 해상도별 이미지와 대체 이미지 리소스를 지정할 수 있습니다.

참고:

none 값은 키워드로 사용되므로, 이 값을 다음 image 표현식으로 사용할 수 없습니다. 따라서 이러한 표현식을 사용하려면, 절대 URI 또는 다르지만 동등한 상대 URI를 사용하여 none 키워드와 구별해야 하며, 그 예로는 ./none이 있습니다.

배경 이미지와 연결된 요소가 생성하는 구역의 콘텐츠 사각형 범위는 배경 이미지의 해석된 범위에 영향을 받지 않습니다.

참고:

일부 TTML1 프로파일, 예를 들어 [SMPTE ST 2052-1] 및 이에 종속된 프로파일은 배경 이미지가 연결된 요소가 생성하는 구역의 콘텐츠 사각형 범위에 영향을 미친다고 지정합니다. 이러한 프로파일과 TTML2 간에 변환할 때, 이러한 배경 이미지는 image 요소로 매핑하는 것이 좋으며, tts:backgroundImage 속성으로 매핑하지 않는 것이 좋습니다.

다음 예제는 tts:backgroundImage 스타일을 보여 줍니다.

예제 코드 조각 – 내장 이미지 리소스를 사용하는 배경 이미지
<head>
  <resources>
    <image xml:id="blue102px57px">
      <source>
        <data type="image/png" length="119">
          iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
          YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
        </data>
      </source>
    </image>
  </resources>
</head>
...
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundClip="padding"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:padding="27px 72px"/>
</region>

예제 렌더링 – 배경 이미지
TTML backgroundImage 스타일 프로퍼티

10.2.6 tts:backgroundOrigin

tts:backgroundOrigin 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 배경 배치 사각형을 결정하고, 이 사각형 안에 배경을 배치합니다.

값: "border" | "content" | "padding"
초기값: padding
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: backgroundOrigin 도출 근거

다음 예제는 tts:backgroundOrigin 스타일을 보여 줍니다.

예제 코드 조각 – 배경 원점
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundOrigin="content"/>
</region>

예제 렌더링 – 배경 원점
TTML backgroundOrigin 스타일 프로퍼티

10.2.7 tts:backgroundPosition

tts:backgroundPosition 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 영역 또는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역에 배경 이미지를 배치할지 여부와 배치 방식을 정의합니다.

값: <position>
초기값: 0% 0%
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: backgroundPosition 도출 근거

수평 위치 오프셋의 백분율 값 구성 요소는 다음 사각형의 너비를 기준으로 하되, 배경 배치 사각형의 너비에서 배경 이미지의 너비를 뺀 값을 기준으로 합니다. 수직 위치 오프셋의 백분율 값 구성 요소는 다음 사각형의 높이를 기준으로 하되, 배경 배치 사각형의 높이에서 배경 이미지의 높이를 뺀 값을 기준으로 합니다.

다음 예제는 tts:backgroundPosition 스타일을 보여 줍니다.

예제 코드 조각 – 배경 위치
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundRepeat="noRepeat"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundPosition="center"/>
</region>

예제 렌더링 – 배경 위치
TTML backgroundPosition 스타일 프로퍼티

10.2.8 tts:backgroundRepeat

tts:backgroundRepeat 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 영역 또는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역에 배경 이미지를 반복(타일링)할지 여부와 방식을 정의합니다.

값: "repeat" | "repeatX" | "repeatY" | "noRepeat"
초기값: repeat
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: backgroundRepeat 도출 근거

다음 예제는 tts:backgroundRepeat 스타일을 보여 줍니다.

예제 코드 조각 – 배경 반복
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:backgroundColor="red"/>
  <style tts:backgroundImage="#blue102px57px"/>
  <style tts:backgroundRepeat="repeatX"/>
</region>

예제 렌더링 – 배경 반복
TTML backgroundRepeat 스타일 프로퍼티

10.2.9 tts:border

tts:border 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 영역 또는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역의 테두리를 정의합니다.

참고:

영역에 적용되는 테두리는 영역의 범위 안쪽에 적용됩니다. 즉, 영역에 적용된 테두리로 인해 영역 구역의 콘텐츠 사각형이 줄어듭니다.

값: <border>
초기값: none
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적 (색상만)
의미적 근거: border 도출 근거

tts:border 프로퍼티 값에 테두리 두께가 지정되지 않으면, 테두리 두께는 다음 두께가 지정된 것처럼 해석해야 합니다. 그 두께는 medium입니다.

이 속성과 연결된 테두리 두께의 계산값이 지원되지 않으면, 표현 처리기는 지원되는 값 중 가장 가까운 값을 사용해야 합니다.

참고:

이 문맥에서 지원되는 값 중 가장 가까운 값이라는 표현은 1차원 유클리드 거리가 최소가 되는 값을 뜻하며, 그 거리는 계산된 테두리 두께와 지원되는 테두리 두께 사이에서 각 변을 기준으로 구합니다. 특정 변의 계산값으로부터 같은 거리에 있는 가장 가까운 지원값이 여러 개라면, 0으로부터 가장 가까운 값, 즉 가장 작은 테두리 두께를 사용합니다.

tts:border 프로퍼티 값에 테두리 스타일이 지정되지 않으면, 테두리 스타일은 다음 스타일이 지정된 것처럼 해석해야 합니다. 그 스타일은 none입니다.

이 속성과 연결된 테두리 스타일의 계산값이 지원되지 않으면, 표현 처리기는 다음 값을 사용해야 합니다. 그 값은 solid입니다.

tts:border 프로퍼티 값에 테두리 색상이 지정되지 않으면, 테두리 색상은 요소의 다음 스타일 프로퍼티 계산값과 같은 색상이 지정된 것처럼 해석해야 합니다. 해당 프로퍼티는 tts:color입니다.

tts:border 프로퍼티 값에 테두리 반지름이 지정되지 않으면, 테두리 반지름은 다음 반지름이 지정된 것처럼 해석해야 합니다. 그 반지름은 0입니다.

이 속성과 연결된 테두리 반지름의 계산값이 지원되지 않으면, 표현 처리기는 지원되는 값 중 가장 가까운 값을 사용해야 합니다.

참고:

이 문맥에서 지원되는 값 중 가장 가까운 값이라는 표현은 계산된 테두리 반지름과 지원되는 테두리 반지름이 최소화되는 값을 뜻합니다.

다음 예제는 tts:border 스타일을 보여 줍니다.

예제 코드 조각 – 테두리
<region xml:id="r1">
  <style tts:extent="306px 114px"/>
  <style tts:border="2px solid red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:padding="3px 30px"/>
</region>
...
<p region="r1" tts:border="4px solid green" tts:textAlign="center">
  반짝, 반짝, 작은 박쥐여!<br/>
  정말 <span tts:border="8px solid blue">궁금해요</span> 어디에 계신지!
</p>

예제 렌더링 – 테두리
TTML border 스타일 프로퍼티

다음 예제는 모서리를 둥글게 한 tts:border 스타일을 보여 줍니다.

예제 코드 조각 – 둥근 모서리가 있는 테두리
<style xml:id="roundedBorder" tts:border="2px solid lime 10px" tts:backgroundColor="black"/>
...
<div tts:color="white" tts:textAlign="center">
  <p style="roundedBorder">테두리 모서리가 둥근 <br/>p 요소입니다.</p>
  <p>
    <span style="roundedBorder">테두리 모서리가 둥근 span입니다</span>
    <br/>
    <span style="roundedBorder">더 짧은 span입니다</span>
  </p>
</div>

예제 렌더링 – 테두리 모서리 둥글게 하기
TTML border 스타일 프로퍼티

10.2.10 tts:bpd

tts:bpd 속성은 블록 진행 치수, 더 간단히 말해 bpd를 지정하는 데 사용되며, 이는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역의 치수입니다.

참고:

블록 진행 치수라는 용어는 쓰기 모드를 기준으로 해석하므로, bpd는 항상 블록 진행 방향의 거리에 해당합니다. 따라서 가로 쓰기 모드에서 bpd는 수직 거리를 나타내고, 세로 쓰기 모드에서 bpd는 수평 거리를 나타내며, 여기서 수평과 수직은 항상 절대적인 의미로 해석합니다.

값: <measure>
초기값: auto
적용 대상: body, div, p, span
상속: 아니요
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: bpd 도출 근거

<measure>가 <length> 값으로 표현되면, 음수가 아니어야 합니다.

tts:bpd 속성이 span 요소에 지정되고 해당 요소에 적용되는 tts:display 프로퍼티의 계산값이 inlineBlock이 아니면, tts:bpd의 의미는 적용 가능한 배경색 또는 이미지의 블록 진행 치수를 계산할 때에만 적용됩니다. 그러나 생성된 구역의 콘텐츠 사각형 치수는 변경되지 않습니다.

이 속성의 <length> 표현식에 백분율 값이 사용되면, 해당 값은 적용 가능한 절대 치수를 기준으로 해석되며, 이 치수는 생성된 구역을 포함하는 구역 (가장 가까운 조상 구역)의 치수입니다.

참고:

이 속성에 사용되는 <length> 표현식은 특정한 쓰기 모드 기준 치수와 연결되며, 이 치수는 절대 치수로 해석되는데, 이때 적용되는 쓰기 모드를 따릅니다. 해당 절대 치수가 수직(수평)이면, 백분율 값은 동일한 수직(수평) 절대 치수를 기준으로 해석되며, 이는 기준 구역(가장 가까운 조상 구역)의 치수입니다.

다음 예제는 tts:bpd 스타일을 보여 줍니다.

예제 코드 조각 – 블록 진행 치수
<p tts:fontSize="24px" tts:lineHeight="48px" tts:bpd="96px">
  숲이 <span tts:display="inlineBlock" tts:bpd="36px">푸르러지고 있어요</span> ...
</p>

참고:

위 예제에서 tts:bpd 속성이 지정된 p 요소는 문단이 생성하는 블록 구역의 콘텐츠 사각형 높이에 고정된 치수를 할당하는 반면, tts:bpd 속성이 지정된 span 요소는 고정된 치수를 span이 생성하는 인라인 블록 구역의 콘텐츠 사각형 높이에 할당합니다.

10.2.11 tts:color

tts:color 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 영역에 흘러 들어가는 콘텐츠가 생성하는 구역과 연결된 표식의 전경색을 정의합니다.

값: <color>
초기값: 본문 참조
적용 대상: span; 다음 참고도 참조
상속: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적
의미적 근거: color 도출 근거

tts:color 프로퍼티의 초기값은 구현에 따라 달라지는 것으로 간주합니다. 최종 사용자의 기본 설정 정보가 없으면, 적합한 표현 처리기는 높은 대비를 이루는 초기값을 사용하는 것이 좋으며, 대비 대상은 루트 컨테이너 영역의 배경색입니다.

다음 예제는 tts:color 스타일을 보여 줍니다.

예제 코드 조각 – 색상
<region xml:id="r1">
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  봄이 되어, 숲이 <span tts:color="green">푸르러질 때</span>,<br/>
  제가 무슨 뜻인지 말씀드려 볼게요.
</p>

예제 렌더링 – 색상
TTML color 스타일 프로퍼티

10.2.12 tts:direction

tts:direction 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 사용 문맥에 따라 (1) 양방향 문단 수준 또는 (2) 양방향 임베딩이나 재정의의 방향성을 결정합니다. 이에 관해서는 [UAX9]를 참조하세요.

값: "ltr" | "rtl"
초기값: ltr
적용 대상: p, span
상속: 예, 단 특수 의미 참조
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: direction 도출 근거

p 요소에 적용되는 경우, 이 프로퍼티의 계산값은 다음을 명시적으로 설정합니다. 문단 수준을 설정하며, 이는 [UAX9], §4.3, 상위 수준 프로토콜 HL1에 명시된 바와 같습니다.

span 요소(또는 익명 span)에 적용되는 경우, 이 프로퍼티의 계산값은 tts:unicodeBidi 스타일 프로퍼티의 계산값과 함께 양방향 임베딩 또는 재정의의 방향성을 결정하며, 이는 [UAX9], §4.3, 상위 수준 프로토콜 HL3에 명시된 바와 같습니다.

이 속성과 연결된 프로퍼티의 계산값이 지원되지 않으면, 표현 처리기는 다음 값을 사용해야 합니다. 그 값은 ltr입니다.

다음 예제는 tts:direction 스타일을 보여 줍니다.

예제 코드 조각 – 방향
<p>
이 책의 제목은 다음과 같습니다
"<span tts:unicodeBidi="embed" tts:direction="rtl">국제화 활동، W3C</span>"
</p>

예제 렌더링 – 방향
TTML direction 스타일 프로퍼티
10.2.12.1 방향의 특수 의미

스타일 해석 처리를 수행할 때(10.4.4 스타일 해석 처리 참조), tts:direction의 계산값은 region 요소 R에서 다음 순서의 규칙에 따라 결정되며, 처음으로 적용 가능한 규칙을 적용합니다:

  1. tts:direction 속성이 R에 지정되어 있으면, 계산값은 다음과 같습니다. tts:direction의 계산값은 지정값입니다;

  2. tts:writingMode 속성이 R에 지정되어 있으면, 계산값은 다음과 같습니다. tts:direction의 계산값은 인라인 진행 방향이며, 이 방향은 다음 프로퍼티의 계산값으로 결정됩니다. 해당 프로퍼티는 R의 tts:writingMode입니다;

  3. 그렇지 않으면, tts:direction의 계산값은 초기값입니다.

참고:

위와 같이 결정된 tts:direction의 계산값은 region 요소에서 사실상 다음 요소에 상속되는 tts:direction 값이 됩니다. 해당 요소는 다음 의미가 적용되는 요소입니다. 영역 스타일 상속의 의미가 적용됩니다.

다른 요소 E의 경우, 즉 E가 다음 region 요소가 아닌 경우, 다음 속성의 존재 여부, 즉 tts:writingMode 속성의 존재 여부는 tts:direction 계산값의 해석에 영향을 미치지 않으며, 이는 E에서의 계산값입니다.

참고:

위에서 설명한 의미는 CSS 정의에 대한 XSL의 수정 사항에 해당하며, 그 대상은 [XSL-FO 1.1] §7.29.1에 정의된 direction 프로퍼티입니다. 따라서 이러한 의미는 다음 기능의 범위에 포함됩니다. 해당 기능은 #direction입니다.

10.2.13 tts:disparity

tts:disparity 속성은 입체시(입체적인 깊이)를 모사하기 위해 적용할 양안 시차를 지정하는 데 사용됩니다. 시차 0은 표시 평면에 해당하며, 음수 값은 표시 평면 앞쪽의 깊이에 해당하고, 양수 값은 표시 평면 뒤쪽의 깊이에 해당합니다. 시차와 지각된 깊이 사이의 관계에 관한 자세한 내용은 [SMITH]를 참조하세요.

값: <length>
초기값: 0px
적용 대상: region; 다음 특수 사용법 참조, 대상: div 및 p
상속: 아니요
백분율: 루트 컨테이너 영역의 너비를 기준으로 합니다
애니메이션 가능 여부: 이산적; 연속적
의미적 근거: disparity 도출 근거

입체 이미지 쌍의 오른쪽(왼쪽) 이미지에 영역을 렌더링할 때, 영역의 중심은 수평축을 따라 다음 계산값의 ½ (-½)에 해당하는 값만큼 이동합니다. 해당 계산값은 tts:disparity의 계산값이며, 양수 오프셋은 오른쪽으로, 음수 오프셋은 왼쪽으로 이동합니다.

입체 이미지 쌍에 렌더링하는 경우가 아니면, tts:disparity 속성은 표현 처리에서 무시됩니다.

작성자는 영역이 보이는 전체 시간 동안 영역의 지각된 깊이가 장면의 모든 물체보다 앞에 위치하도록 하는 것이 좋습니다. 장면의 물체가 영역보다 앞에 있는 것으로 지각되면 입체 효과가 깨집니다.

이 속성과 연결된 프로퍼티의 계산값이 지원되지 않으면, 표현 처리기는 지원되는 값 중 가장 가까운 값을 사용해야 합니다.

참고:

이 문맥에서 지원되는 값 중 가장 가까운 값이라는 표현은 유클리드 거리가 최소가 되는 값을 뜻하며, 그 거리는 계산된 시차와 지원되는 시차 사이의 거리입니다. 계산값으로부터 같은 거리에 있는 가장 가까운 지원값이 여러 개라면, 0으로부터 가장 가까운 값을 사용합니다.

참고:

일반적으로 입체 콘텐츠의 표현은 서브픽셀(안티앨리어싱) 렌더링 기법의 사용에 의존합니다. 따라서 시차에 따라 조정된 위치를 정숫값으로 양자화하는 구현은 바람직하지 않은 부작용을 일으킬 수 있습니다. 이는 특히 시차의 부드러운 애니메이션이 적용될 때 거슬리는데, 예를 들어, 작성자가 대상과 그에 연결된 텍스트 사이의 거리를 일정하게 유지하려고 하는 경우가 이에 해당합니다.

다음 예제 코드 조각과 렌더링은 tts:disparity 스타일을 보여 줍니다. 일반적인 텔레비전 환경에서 시차는 화면 너비의 -1%부터 2%까지 범위에 있음을 유의하세요. 시차 5%를 사용하는 이 예제는 설명을 명확하게 하기 위해 시차의 효과를 과장합니다.

예제 코드 조각 – 시차
<region xml:id="r1">
  <style tts:extent="80% 10%"/>
  <style tts:origin="10% 10%"/>
  <style tts:disparity="5%"/>
	...
</region>
...
<p region="r1">
  입체 영상
</p>

예제 렌더링 – 시차 (왼쪽 및 오른쪽 이미지)
TTML disparity 스타일 프로퍼티
10.2.13.1 시차의 특수 사용법

tts:disparity가 예외적으로 div 또는 p에 지정되는 경우, 11.1.2.1 인라인 애니메이션의 특수 의미가 적용됩니다.

10.2.14 tts:display

tts:display 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 요소가 영역에서 레이아웃 및 합성의 대상이 되는지 여부를 정의합니다.

값: "auto" | "none" | "inlineBlock"
초기값: auto
적용 대상: body, div, image, p, region, span
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: display 도출 근거

이 속성의 값이 auto이면, 영향을 받는 요소는 영역 레이아웃 및 표현의 대상이 됩니다. 그러나 값이 none이면, 영향을 받는 요소와 그 자손은 영역 레이아웃 및 표현의 대상이 될 수 없는 것으로 간주해야 합니다.

이 속성의 값이 inlineBlock이고 이 속성이 span 요소에 적용되면, 인라인 블록 표시의 의미가 적용되고 해당 요소는 영역 레이아웃 및 표현의 대상이 됩니다. 또한 다음 경우는 오류로 간주됩니다. inlineBlock 값이 다음 요소가 아닌 요소에 적용되는 경우이며, 해당 요소는 span 요소입니다.

다음 예제는 tts:display 스타일을 보여 줍니다.

예제 코드 조각 – 표시
<region xml:id="r1">
  <style tts:extent="369px 119px"
            tts:backgroundColor="black"
            tts:color="white"
            tts:displayAlign="before"
            tts:textAlign="start"/>
</region>
...
<div region="r1">
  <p dur="5s">
    [[[
    <span tts:display="none">
      <set begin="1s" dur="1s" tts:display="auto"/>
      아름다운 수프,
    </span>
    <span tts:display="none">
      <set begin="2s" dur="1s" tts:display="auto"/>
      아주 진하고 푸르며,
    </span>
    <span tts:display="none">
      <set begin="3s" dur="1s" tts:display="auto"/>
      뜨거운 수프 그릇에서 기다리고 있어요!
    </span>
    ]]]
  </p>
</div>

예제 렌더링 – 표시
TTML display 스타일 프로퍼티 - [0,1)
TTML display 스타일 프로퍼티 - [1,2)
TTML display 스타일 프로퍼티 - [2,3)
TTML display 스타일 프로퍼티 - [3,4)
TTML display 스타일 프로퍼티 - [4,5)

10.2.15 tts:displayAlign

tts:displayAlign 속성은 스타일 프로퍼티를 지정하는 데 사용되며, 이 프로퍼티는 블록 진행 방향에서 블록 구역의 정렬을 정의합니다.

값: "before" | "center" | "after" | "justify"
초기값: before
적용 대상: body, div, p, region
상속: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: displayAlign 도출 근거

이 속성의 값이 justify이면, 사용 가능한 (사용되지 않은) 공간 중 블록 진행 치수의 공간이 균등하게 분배됩니다. 분배 대상은 이 속성이 적용되는 요소가 생성한 블록 구역의 블록 구역 자식들 사이입니다.

이 속성과 연결된 프로퍼티의 계산값이 지원되지 않으면, 표현 처리기는 다음 값을 사용해야 합니다. 그 값은 before입니다.

다음 예제는 tts:displayAlign 스타일을 보여 줍니다.

예제 코드 조각 – 표시 정렬
<region xml:id="r1">
  <style tts:extent="128px 66px" tts:origin="0px 0px"
       tts:backgroundColor="black" tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:extent="192px 66px" tts:origin="128px 66px"/>
       tts:backgroundColor="green" tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r3">
  <style tts:extent="128px 66px"/> style tts:origin="0px 132px"
       tts:backgroundColor="black" tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r4">
  <style tts:extent="192px 66px" tts:origin="128px 198px"/>
       tts:backgroundColor="green" tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="start"/>
</region>
...
<div>
  <p region="r1">물고기들에게 메시지를 보냈어요:</p>
  <p region="r2">그들에게 말했어요<br/> "제가 바라는 것은 이것이에요."</p>
  <p region="r3">바다의 작은 물고기들은,</p>
  <p region="r4">제게<br/> 답장을 보내왔어요.</p>
</div>

예제 렌더링 – 표시 정렬
TTML displayAlign 스타일 프로퍼티

10.2.16 tts:extent

tts:extent 속성은 다음 목적으로 사용할 수 있습니다:

  1. 너비와 높이를 루트 컨테이너 영역에 지정하며, 이를 통해 문서 좌표 공간을 정의합니다. 이에 관해서는 H.3 좌표 공간을 참조하십시오;

  2. 다음에 해당하는 너비와 높이를 콘텐츠 영역에 지정하거나 재정의합니다;

  3. 이미지의 너비와 높이를 지정하여 이미지의 고유 크기를 재정의합니다.

참고:

영역에 테두리 및/또는 패딩이 적용되면 영역의 크기에는 해당 테두리와 패딩이 포함됩니다. 즉, 테두리와 패딩은 모두 안쪽 여백으로 적용되므로 영역의 크기 내부에 위치합니다.

값: <extent>
초깃값: auto
적용 대상: tt, region, image; 다음 특수 용법은 div 및 p를 참조하십시오
상속 여부: 아니요
백분율: 너비와 높이의 기준은 루트 컨테이너 영역입니다
애니메이션 가능 여부: 이산적
의미적 근거: extent 도출

tts:extent 속성을 tt 요소에 지정하는 경우, 지정된 값은 다음 중 하나로 제한됩니다: (1) auto 키워드, (2) contain 키워드 또는 (3) 두 개의 <length> 지정값. 이 지정값은 픽셀 단위를 사용하는 백분율이 아닌 확정 길이로 표현됩니다. 구문상 유효하더라도 다른 모든 값은 이 문맥에서 사용해서는 안 되며, 사용된 경우 오류로 간주해야 하고 표시 처리를 위해서는 무시해야 합니다. 이 경우 초깃값(auto)이 적용됩니다.

tts:extent 속성을 region 요소에 지정하는 경우, 계산값은 너비와 높이를 연관된 콘텐츠 영역에 대해 결정합니다.

tts:extent 속성을 image 요소에 지정하는 경우, 계산된 값은 너비와 높이를 해당 이미지에 대해 결정합니다.

tts:extent 속성을 div 또는 p 요소에 지정하는 경우, 10.2.16.1 크기의 특수 용법에 지정된 의미가 적용됩니다.

이 속성의 값이 auto인 경우, 연관된 속성의 계산값은 다음과 같이 결정됩니다:

  1. 속성이 tt 요소에 적용되면, auto는 contain 값이 지정된 것처럼 해석됩니다;

  2. 속성이 region 요소에 직접 또는 간접적으로 적용되면, auto는 "100% 100%" 값이 지정된 것처럼 해석됩니다;

  3. 속성이 image 요소에 적용되면, auto는 이미지의 고유 크기와 같은 값을 두 개의 픽셀 기반 <length> 성분으로 지정한 것처럼 해석됩니다. 예를 들면 "200px 100px"입니다.

참고:

이 속성은 단일 키워드 "auto"로 구성된 값과 두 키워드 "auto auto"로 구성된 다른 값을 허용합니다. 이 두 값은 서로 다른 의미를 가지며 동등하지 않습니다. 특히 단일 키워드 값 "auto"는 바로 위에서 설명한 의미를 갖습니다. 그러나 두 키워드 값 "auto auto"는 두 개의 <measure> 표현식으로 구성되며, 각각은 <measure> 키워드 auto를 사용합니다. 이는 10.3.24 <measure>에 정의되어 있습니다.

이 속성의 값이 contain인 경우, 연관된 속성의 계산값은 다음과 같이 결정됩니다:

  1. 속성이 tt 요소에 적용되면, contain는 H 루트 컨테이너 영역의 의미에 지정된 대로 해석됩니다;

  2. 속성이 region 요소에 적용되면, 계산값은 [포함 배율 계산] 절차를 수행하여 결정됩니다. 이때 대상 사각형 TR은 고유 블록 콘텐츠 크기, 즉 해당 영역 콘텐츠의 크기로 초기화되고, 기준 사각형 RR은 루트 컨테이너 영역의 크기로 설정되며, 그 결과로 출력되는 대상 사각형 TR의 값이 계산된 값입니다;

  3. 속성이 image 요소에 적용되면, 계산값은 [포함 배율 계산] 절차를 수행하여 결정됩니다. 이때 대상 사각형 TR은 이미지의 고유 이미지 크기로 초기화되고, 기준 사각형 RR은 사용 가능한 콘텐츠 공간으로 설정됩니다. 이 공간은 포함하는 블록 영역 또는 줄 영역의 공간으로, 현재 서식 문맥이 각각 블록 서식 문맥인지 인라인 서식 문맥인지에 따라 정해지며, 그 결과로 출력되는 대상 사각형 TR의 값이 계산된 값입니다.

이 속성의 값이 cover인 경우, 연관된 속성의 계산값은 다음과 같이 결정됩니다:

  1. 속성이 region 요소에 적용되면, 계산값은 [덮기 배율 계산] 절차를 수행하여 결정됩니다. 이때 대상 사각형 TR은 고유 블록 콘텐츠 크기, 즉 해당 영역 콘텐츠의 크기로 초기화되고, 기준 사각형 RR은 루트 컨테이너 영역의 크기로 설정되며, 그 결과로 출력되는 대상 사각형 TR의 값이 계산된 값입니다;

  2. 속성이 image 요소에 적용되면, 계산값은 [덮기 배율 계산] 절차를 수행하여 결정됩니다. 이때 대상 사각형 TR은 이미지의 고유 이미지 크기로 초기화되고, 기준 사각형 RR은 사용 가능한 콘텐츠 공간으로 설정됩니다. 이 공간은 포함하는 블록 영역 또는 줄 영역의 공간으로, 현재 서식 문맥이 각각 블록 서식 문맥인지 인라인 서식 문맥인지에 따라 정해지며, 그 결과로 출력되는 대상 사각형 TR의 값이 계산된 값입니다.

이 속성의 값이 두 개의 <measure> 지정값으로 구성되면, 이를 너비와 높이로 해석해야 합니다. 이때 첫 번째 지정값은 너비이고, 두 번째 지정값은 높이이며, 두 <measure> 지정값 모두 음수가 아닌 길이로 해석되어야 하거나 해석 가능해야 합니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가 계산된 크기와 지원되는 크기 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, [0,0]에서 가장 먼 값, 즉 크기가 가장 큰 값을 사용합니다.

가장 가까운 지원 값을 결정하는 이 규칙은 가장 가까운 더 작은 거리 대신 가장 가까운 더 큰 지원 거리를 사용합니다. 이처럼 처리가 다른 이유는 더 큰 크기를 사용하면 영향받는 콘텐츠가 영역을 넘치지 않고 영역 내부에 포함되도록 보장하지만, 더 작은 크기를 사용하면 영역 넘침이 발생할 가능성이 커지기 때문입니다.

다음 예제는 tts:extent 스타일을 보여 줍니다.

예제 조각 – 크기
<region xml:id="r1">
  <style tts:extent="330px 122px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  바닷가재의 목소리입니다:<br/>
  저는 그가 이렇게 외치는 것을 들었습니다,<br/>
  "당신이 저를 너무 갈색으로 구워 버려서,<br/>
  제 머리에 설탕을 뿌려야겠어요."
</p>

렌더링 예 – 크기
TTML extent 스타일 속성
10.2.16.1 크기의 특수 용법

tts:extent를 예외적으로 div 또는 p에 지정하면, 11.1.2.1 인라인 애니메이션의 특수 의미가 적용됩니다.

10.2.17 tts:fontFamily

tts:fontFamily 속성은 스타일 속성을 지정하는 데 사용되며, 영역으로 흐르는 콘텐츠에서 생성되는 글리프 영역에 대해 글리프를 선택할 글꼴 패밀리를 정의합니다.

값: <font-families>
초깃값: default
적용 대상: p, span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: fontFamily 도출

참고:

초깃값 default는 일반 글꼴 패밀리 이름이며, 아래의 10.3.19 <generic-family-name>에서 자세히 설명합니다.

참고:

span에 적용되는 것 외에도, 이 속성의 계산값은 p 요소에서 다음 tts:lineHeight 속성과 연관된 스타일 속성의 값을 결정하는 데 사용됩니다. 이에 관해서는 10.2.27 tts:lineHeight에 지정되어 있습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 계산된 글꼴 패밀리를 타이포그래피 특성이 비슷한 지원되는 글꼴 패밀리에 매핑하려고 시도해야 합니다. 그러한 매핑이 없으면 default 값을 사용해야 합니다.

다음 예제는 tts:fontFamily 스타일을 보여 줍니다.

예제 조각 – 글꼴 패밀리
<region xml:id="r1">
  <style tts:extent="474px 146px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="start"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<div region="r1">
  <p>
    "때가 왔어요," 바다코끼리가 말했습니다,<br/>
    "많은 것을 이야기할 때가요:
  </p>
  <p tts:textAlign="end" tts:fontFamily="monospaceSerif">
    신발과 배와 봉랍에 관해서,<br/>
    양배추와 왕들에 관해서,
  </p>
  <p>
    그리고 바닷물이 왜 펄펄 끓는지,<br/>
    돼지에게 날개가 있는지에 관해서요."
  </p>
</div>

렌더링 예 – 글꼴 패밀리
TTML fontFamily 스타일 속성

10.2.18 tts:fontKerning

tts:fontKerning 속성은 스타일 속성을 지정하는 데 사용되며, 글리프 영역을 배치할 때 글꼴 커닝을 적용할지 결정합니다.

값: "none" | "normal"
초깃값: normal
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: fontKerning 도출

이 속성의 값이 normal이면, 커닝 데이터를 사용할 수 있는 경우 커닝을 적용하는 것이 좋습니다. 이 속성의 값이 none이면, 커닝 데이터의 사용 가능 여부와 관계없이 커닝을 적용하지 않는 것이 좋습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: normal.

다음 예제는 tts:fontKerning 스타일을 보여 줍니다.

예제 조각 – 글꼴 커닝
<p>
  파도<br/>
  <span tts:fontKerning="none">파도</span>
</p>

렌더링 예 – 글꼴 커닝
TTML fontKerning 스타일 속성

10.2.19 tts:fontSelectionStrategy

tts:fontSelectionStrategy 속성은 스타일 속성을 지정하는 데 사용되며, 글리프 영역에 적용할 전략을 결정합니다. 이 전략은 표시 처리 중 가능한 글꼴 목록에서 글꼴을 선택할 때 사용됩니다.

값: "auto" | "character"
초깃값: auto
적용 대상: p, span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: fontSelectionStrategy 도출

이 속성의 표시 의미는 [XSL-FO 1.1], §7.9.3에 정의된 것과 같으며, 선택 기준의 집합은 다음 속성을 포함하도록 확장됩니다:

글꼴 선택 기준을 충족하는 글꼴 리소스 중에서 선택할 때, 다음과 같이 참조되는 font 요소의 글꼴 리소스는 애플리케이션이나 시스템에서 제공하는 글꼴 리소스보다 우선합니다.

참고:

span에 적용되는 것 외에도, 이 속성의 계산값은 p 요소에서 다음 tts:lineHeight 속성과 연관된 스타일 속성의 값을 결정하는 데 사용됩니다. 이에 관해서는 10.2.27 tts:lineHeight에 지정되어 있습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: auto.

다음 예제는 tts:fontSelectionStrategy 스타일을 보여 줍니다.

예제 조각 – 글꼴 선택 전략
<p tts:fontFamily="font1,font2">
  <span tts:fontSelectionStrategy="character">&#xE000;&#x20DD;</span>
</p>

참고:

위 예제에서 font1 글꼴 패밀리와 연관된 글꼴 리소스가 다음과 같은 글리프를 포함한다고 가정하십시오: 단일 문자 &#xE000;에 매핑되지만, 전체 문맥 문자 시퀀스 &#xE000;&#x20DD;나 단일 문자 &#x20DD;에 매핑되는 글리프는 없습니다. 또한 다음과 같이 가정하십시오: font2 글꼴 패밀리와 연관된 글꼴 리소스에는 전체 문맥 문자 시퀀스에 대한 매핑과 단일 문자에 대한 매핑이 있으며, 그 단일 문자는 &#x20DD;입니다.

작성자가 전체 문맥 문자 시퀀스에 대한 매핑을 font2를 통해 사용하는 것을 허용하면, auto 값을 사용합니다(명시적으로 또는 초깃값을 기본값으로 사용하여). 그러나 작성자가 &#xE000;는 font1을 통해 매핑하고 &#x20DD;는 font2를 통해 매핑하기를 원하면, character 값을 지정합니다. 이 예제에서 작성자는 후자의 동작을 원하므로 character 값을 지정합니다.

10.2.20 tts:fontShear

tts:fontShear 속성은 스타일 속성을 지정하는 데 사용되며, 전단 변환을 글리프 영역에 적용할지와 적용 방법을 결정합니다.

값: <percentage>
초깃값: 0%
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: fontShear 도출

이 속성이 적용되는 각 글리프 영역에 대해, 2차원 전단 변환을 해당 글리프 영역에 적용합니다. 이에 관해서는 10.4.5.3 전단 계산에 지정되어 있습니다.

다음 예제는 tts:fontShear 스타일을 보여 줍니다.

예제 조각 – 글꼴 전단
<p region="horizontal">
  <span tts:fontShear="16.78842%">작심삼일</span><br/>
  <span tts:fontShear="50%">작심삼일</span><br/>
  <span tts:fontShear="64.333%">작심삼일</span>
</p>
<p region="vertical">
  <span tts:fontShear="16.78842%">작심삼일</span><br/>
  <span tts:fontShear="50%">작심삼일</span><br/>
  <span tts:fontShear="64.333%">작심삼일</span>
</p>

렌더링 예 – 글꼴 전단
TTML fontShear 스타일 속성
예제 조각 – 음수 값을 사용하는 글꼴 전단
<p region="horizontal">
  <span tts:fontShear="-16.78842%">작심삼일</span><br/>
  <span tts:fontShear="-50%">작심삼일</span><br/>
  <span tts:fontShear="-64.333%">작심삼일</span>
</p>
<p region="vertical">
  <span tts:fontShear="-16.78842%">작심삼일</span><br/>
  <span tts:fontShear="-50%">작심삼일</span><br/>
  <span tts:fontShear="-64.333%">작심삼일</span>
</p>

렌더링 예 – 음수 값을 사용하는 글꼴 전단
TTML fontShear 스타일 속성

10.2.21 tts:fontSize

tts:fontSize 속성은 스타일 속성을 지정하는 데 사용되며, 선택되는 글리프의 글꼴 크기를 글리프 영역에 대해 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다.

값: <font-size>
초깃값: 1c
적용 대상: p, span; 다음 참고도 참조하십시오
상속 여부: 예, 단 10.2.21.1 글꼴 크기의 특수 의미는 예외입니다
백분율: region 요소가 아니면, 가장 가까운 조상 스타일 지정 요소의 계산된 글꼴 크기를 기준으로 하며, 그렇지 않으면 계산된 셀 크기를 기준으로 합니다
애니메이션 가능 여부: 이산적
의미적 근거: fontSize 도출

단일 <length> 값을 지정하면, 이 길이는 글리프 EM 정사각형의 가로 및 세로 크기를 동일하게 결정합니다; 두 개의 <length> 값을 지정하면, 첫 번째 값은 가로 크기를 결정하고 두 번째 값은 세로 크기를 결정합니다.

가로 및 세로 크기를 독립적으로 표현하는 경우, <length> 값의 단위는 같아야 합니다.

참고:

글리프의 EM 정사각형은 관례적으로 해당 글리프를 포함하는 글꼴의 EM 정사각형으로 정의됩니다. 즉, 글리프에는 글꼴의 EM 정사각형과 구별되는 별도의 EM 정사각형이 없습니다.

상대 <length> 값이 이 속성에 나타나면, 즉 백분율(%), 셀 (c) 또는 EM(em) 단위로 표현된 값은, 참조되는 2차원 크기 값을 기준으로 해석됩니다. 이 값은 두 성분, 즉 너비 성분과 높이 성분으로 구성됩니다. 상대 단위가 백분율이면, 참조되는 값은 계산값, 즉 가장 가까운 스타일 지정 조상 요소의 글꼴 크기 계산값이거나 계산된 셀 크기입니다. 상대 단위가 셀(c)이면, 참조되는 값은 계산된 셀 크기입니다. 상대 단위가 EM(em)이면, 참조되는 값은 백분율 단위를 사용한 것처럼 결정되며, 1em은 100%와 같습니다.

단일 상대 <length> 값을 지정하면, 이 <length>는 참조값의 높이 성분을 기준으로 해석됩니다; 두 개의 상대 <length> 값을 지정하면, 첫 번째 <length>는 참조값의 너비 성분을 기준으로 해석되고, 두 번째 <length>는 참조값의 높이 성분을 기준으로 해석됩니다.

참고:

비등방성 글꼴 배율 조정, 즉 글꼴을 독립적인(그리고 서로 다른) 가로 및 세로 크기로 조정하는 방식은 여러 문맥에서 사용될 것으로 예상됩니다. 예를 들면 작성자가 폭이 좁거나 넓은 글꼴을 합성하려는 경우, 작성자가 정사각형이 아닌 셀 단위에 기반한 글꼴 크기를 사용하려는 경우 등입니다.

참고:

표시 처리기는 글꼴에 적합한 알고리즘을 사용하여 글꼴 리소스에 정의된 EM 정사각형의 높이가 계산된 글꼴 크기의 높이와 일치하도록 글리프 배율을 조정할 것으로 예상됩니다. 비등방성 글꼴 배율 조정을 사용하는 경우, 즉 계산된 글꼴 크기의 너비가 계산된 글꼴 크기의 높이와 다르면, 표시 처리기는 추가로 너비 대 높이의 비율만큼 EM 정사각형을 비등방성으로 조정하고, 이에 따라 표시되는 글리프도 같은 비율로 조정되도록 보장할 것으로 예상됩니다.

글꼴 크기를 표현하는 데 사용하는 <length> 값은 음수가 아니어야 합니다.

이 속성의 값이 c 단위를 <length> 성분에 지정하면, 높이만 또는 너비와 높이 모두를 기준으로 해석됩니다. 이는 셀 길이 단위에 대한 것으로, 10.3.22 <length>에 정의되어 있습니다. 즉, 계산된 셀 크기를 기준으로 해석됩니다.

참고:

예를 들어 단락(p) 요소 P를 생각해 보십시오. 계산된 셀 크기가 (24px,36px)이고, tts:fontSize="1c"를 P에 지정하면, tts:fontSize의 계산값은 (36px,36px)로 해석됩니다. 반면 tts:fontSize="1c 1c"를 P에 지정하면, 계산값은 (24px,36px)로 해석됩니다.

이 속성의 값이 em 단위를 <length> 성분에 지정하면, 동등한 백분율 값을 지정한 것처럼 처리됩니다. 이때 1em은 100%와 같습니다.

참고:

예를 들어 span 요소 S가 단락(p) 요소 P의 자식이라고 가정하십시오. P의 tts:fontSize 계산값이 (18px,24px)이고, tts:fontSize="1em"을 S에 지정하면, 이는 100%를 지정하는 것과 같으며, (24px,24px)로 해석됩니다. 그러나 tts:fontSize="1em 1em"을 S에 지정하면, 이는 100% 100%를 지정하는 것과 같으며 (18px,24px)로 해석됩니다.

참고:

span에 적용되는 것 외에도, 이 속성의 계산값은 p 요소에서 다음 tts:lineHeight 속성과 연관된 스타일 속성의 값을 결정하는 데 사용됩니다. 이에 관해서는 10.2.27 tts:lineHeight에 지정되어 있습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가 계산된 글꼴 크기와 지원되는 글꼴 크기 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, 0(단일 길이 지정) 또는 [0,0](두 길이 지정)에서 가장 먼 값을 사용합니다. 즉, 가장 큰 글꼴 크기를 사용합니다.

다음 예제는 tts:fontSize 스타일을 보여 줍니다.

예제 조각 – 글꼴 크기
<region xml:id="r1">
  <style tts:extent="299px 97px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="18px"/>
</region>
...
<p region="r1">
  그러면 잔을 가득 채우세요<br/>
  당밀과 잉크로,<br/>
  아니면 다른 무엇이든<br/>
  마시기에 <span tts:fontSize="24px">좋은</span> 것으로요.
</p>

렌더링 예 – 글꼴 크기
TTML fontSize 스타일 속성
10.2.21.1 글꼴 크기의 특수 의미

이 속성과 연관된 속성의 계산값은 2-튜플로 구성되며, 각 항목은 글꼴 크기의 너비 및 높이 성분의 계산값을 각각 나타냅니다.

span 요소에 적용되고, 그 요소의 tts:ruby 계산값이 textContainer 또는 text인 경우, 계산된 값, 즉 tts:fontSize의 계산값을 결정할 때 다음 특수 상속 규칙이 적용됩니다.

루비 텍스트 컨테이너는 그것이 명시적인지 암묵적인지와 관계없이, tts:fontSize를 부모로부터 상속하지 않습니다. 대신, 명시적 루비 텍스트 컨테이너이고 tts:fontSize 속성을 지정하지 않거나, 그것이 다음과 같은 암묵적 루비 텍스트 컨테이너이면, 계산값의 50%에 해당하는 값이 적용됩니다. 이는 tts:fontSize의 계산값으로, 가장 가까운 조상 루비 컨테이너의 값입니다; 그렇지 않으면 지정값이 적용됩니다.

span 요소의 계산된 값, 즉 tts:ruby의 계산값이 text이고 다음과 같은 tts:fontSize 속성을 지정하지 않으면, 계산된 값을 상속합니다. tts:fontSize의 계산값을 상속하는 대상은 부모 루비 텍스트 컨테이너이며, 부모가 명시적인지 암묵적인지와 무관하게 루비 텍스트 컨테이너로부터 상속합니다.

10.2.22 tts:fontStyle

tts:fontStyle 속성은 스타일 속성을 지정하는 데 사용되며, 선택되는 글리프에 적용할 글꼴 스타일을 글리프 영역에 대해 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다. 글꼴 스타일 값을 특정 글꼴 또는 스타일 매개변수 설정에 매핑하는 방법은 이 명세에서 결정하지 않습니다.

값: "normal" | "italic" | "oblique"
초깃값: normal
적용 대상: p, span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: fontStyle 도출

oblique 값의 사용은 전단 변환을 나타냅니다(지정되지 않은 각도로 인라인 진행 방향에 적용됩니다).

참고:

span에 적용되는 것 외에도, 이 속성의 계산값은 p 요소에서 다음 tts:lineHeight 속성과 연관된 스타일 속성의 값을 결정하는 데 사용됩니다. 이에 관해서는 10.2.27 tts:lineHeight에 지정되어 있습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: normal.

다음 예제는 tts:fontStyle 스타일을 보여 줍니다.

예제 조각 – 글꼴 스타일
<region xml:id="r1">
  <style tts:extent="331px 84px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  가을에 나뭇잎이 갈색으로 물들면,<br/>
  펜과 잉크를 들고, <span tts:fontStyle="italic">그것을 적으세요.</span>
</p>

렌더링 예 – 글꼴 스타일
TTML fontStyle 스타일 속성

10.2.23 tts:fontVariant

tts:fontVariant 속성은 선택을 활성화하는 데 사용되며, 영역으로 흐르는 콘텐츠에서 생성되는 글리프 영역에 대해 타이포그래피 글리프 변형을 선택할 수 있게 합니다.

값: <font-variant>
초깃값: normal
적용 대상: p, span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: fontVariant 도출

참고:

span에 적용되는 것 외에도, 이 속성의 계산값은 p 요소에서 다음 tts:lineHeight 속성과 연관된 스타일 속성의 값을 결정하는 데 사용됩니다. 이에 관해서는 10.2.27 tts:lineHeight에 지정되어 있습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: normal.

다음 예제는 tts:fontVariant 스타일을 보여 줍니다.

예제 조각 – 글꼴 변형
<region xml:id="r1">
  <style tts:extent="376px 95px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  뛰어오르며 <span tts:fontVariant="super">위로</span> 그리고
  <span tts:fontVariant="sub">아래로</span> 극심한 공포 속에서 몸부림칩니다.
</p>

렌더링 예 – 글꼴 변형
TTML fontVariant 스타일 속성

10.2.24 tts:fontWeight

tts:fontWeight 속성은 스타일 속성을 지정하는 데 사용되며, 선택되는 글리프에 적용할 글꼴 굵기를 글리프 영역에 대해 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다. 글꼴 굵기 값을 특정 글꼴 또는 굵기 매개변수 설정에 매핑하는 방법은 이 명세에서 결정하지 않습니다.

값: "normal" | "bold"
초깃값: normal
적용 대상: p, span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: fontWeight 도출

참고:

span에 적용되는 것 외에도, 이 속성의 계산값은 p 요소에서 다음 tts:lineHeight 속성과 연관된 스타일 속성의 값을 결정하는 데 사용됩니다. 이에 관해서는 10.2.27 tts:lineHeight에 지정되어 있습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: normal.

다음 예제는 tts:fontWeight 스타일을 보여 줍니다.

예제 조각 – 글꼴 굵기
<region xml:id="r1">
  <style tts:extent="376px 95px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:fontFamily="proportionalSansSerif"/>
</region>
...
<p region="r1">
  그들은 당신이 그녀에게 다녀왔다고 제게 말했어요,<br/>
  <span tts:fontWeight="bold">그리고 그에게 제 이야기를 했다고요:</span><br/>
  그녀는 저를 좋게 평가했지만<br/>
  <span tts:fontWeight="bold">제가 수영을 못한다고 했어요.</span>
</p>

렌더링 예 – 글꼴 굵기
TTML fontWeight 스타일 속성

10.2.25 tts:ipd

tts:ipd 속성은 다음을 지정하는 데 사용됩니다: 인라인 진행 치수, 또는 더 간결하게 ipd라고 하며, 영역으로 흐르는 콘텐츠에서 생성된 영역의 치수입니다.

참고:

인라인 진행 치수라는 용어는 쓰기 모드에 상대적인 방식으로 해석되므로, ipd는 항상 인라인 진행 방향의 거리에 해당합니다. 따라서 가로 쓰기 모드에서 ipd는 가로 거리를 나타내고, 세로 쓰기 모드에서 ipd는 세로 거리를 나타냅니다. 여기서 가로와 세로는 항상 절대적인 의미로 해석됩니다.

값: <measure>
초깃값: auto
적용 대상: body, div, p, span
상속 여부: 아니요
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: ipd 도출

<measure>를 <length> 값으로 표현하면, 음수가 아니어야 합니다.

tts:ipd 속성을 span 요소에 지정하고, 그 요소에 적용되는 tts:display 속성의 계산값이 inlineBlock이 아니면, tts:ipd의 의미는 적용 가능한 배경색 또는 이미지의 인라인 진행 치수를 계산할 때만 적용됩니다; 그러나 생성되는 영역의 콘텐츠 사각형 치수는 변경되지 않습니다.

이 속성의 <length> 표현식에 백분율 값을 사용하면, 생성된 영역을 포함하는 영역의 해당 절대 치수를 기준으로 해석됩니다. 이 영역은 가장 가까운 조상 영역입니다.

참고:

이 속성에 사용되는 <length> 표현식은 다음과 연관됩니다: 특정한 쓰기 모드 상대 치수. 이 치수는 절대 치수로 해당 쓰기 모드에 따라 해석됩니다. 그 절대 치수가 가로(세로)이면, 백분율 값은 같은 가로(세로) 절대 치수를 기준으로 참조 영역(가장 가까운 조상 영역)에서 해석됩니다.

다음 예제는 tts:ipd 스타일을 보여 줍니다.

예제 조각 – 인라인 진행 치수
<p tts:fontSize="24px" tts:lineHeight="48px" tts:ipd="300px">
  숲이 <span tts:display="inlineBlock" tts:ipd="150px">푸르러지고 있어요</span> ...
</p>

참고:

위 예제에서 tts:ipd 속성을 갖는 p 요소는 단락에서 생성되는 블록 영역의 콘텐츠 사각형 너비에 고정 치수를 할당하며, tts:ipd 속성을 갖는 span 요소는 고정 치수를 인라인 블록 영역의 콘텐츠 사각형 너비에 할당합니다. 이 영역은 span에서 생성됩니다.

10.2.26 tts:letterSpacing

tts:letterSpacing 속성은 스타일 속성을 지정하는 데 사용되며, 글리프 영역 사이의 명목상 거리를 늘리거나 줄입니다.

자간은 줄 영역의 시작이나 끝에서는 영향을 주지 않으며, 전진 폭이 0인 글리프에는 적용해서는 안 됩니다. 또한 자간으로 인해 보통 연결되어 있는 글리프가, 예를 들어 필기체 문자 체계나 필기체 글꼴에 사용되는 글리프가 분리되어서는 안 됩니다.

자간은 커닝 및 양쪽 맞춤과 독립적으로 적용됩니다. 사용하는 글꼴, 표시되는 문자 체계, 표시 처리기의 기능에 따라, 커닝과 양쪽 맞춤 중 하나 또는 둘 모두를 자간에 추가로 적용할 수 있습니다.

값: "normal" | <length>
초깃값: normal
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: letterSpacing 도출

normal 값은 <length> 값으로 영(0)을 지정하는 것에 해당합니다. 즉, 인접한 글리프 간격을 늘리거나 줄이지 않습니다.

<length> 값을 양의 스칼라로 표현하면, 인접한 글리프 사이의 간격은 해당 스칼라 값만큼 추가로 늘어납니다. 음의 스칼라로 표현하면, 인접한 글리프 사이의 간격은 해당 스칼라 값만큼 추가로 줄어들며, 글리프 영역이 겹칠 수 있습니다. 최대 감소량은 유효 전진 폭이 영(0)이 되는 양입니다.

이 속성과 연관된 자간의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 1차원 유클리드 거리가 계산된 자간과 지원되는 자간 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 특정 가장자리의 계산값과의 거리가 같으면, 0에 가장 가까운 값을 사용합니다.

다음 예제는 tts:letterSpacing 스타일을 보여 줍니다.

예제 조각 – 자간
<p>
  파도<br/>
  <span tts:letterSpacing="20px">파도</span>
</p>

렌더링 예 – 자간
TTML letterSpacing 스타일 속성

10.2.27 tts:lineHeight

tts:lineHeight 속성은 스타일 속성을 지정하는 데 사용되며, 영역으로 흐르는 콘텐츠에서 생성되는 줄 영역 사이의 기준선 간격을 정의합니다.

참고:

예외적으로 lineHeight 토큰이나 줄 높이라는 표현의 높이는 연관된 줄 영역의 블록 진행 치수에 해당하는 축을 가리킵니다. 이 축은 가로 쓰기 모드에서는 세로축이지만, 세로 쓰기 모드에서는 가로축입니다.

참고:

11.3.2.2 줄 쌓기에서 줄 높이와 관련된 추가 정보를 참조하십시오.

값: "normal" | <length>
초깃값: normal
적용 대상: p
상속 여부: 예, 단 특수 의미를 참조하십시오
백분율: 이 요소의 글꼴 크기를 기준으로 합니다
애니메이션 가능 여부: 이산적
의미적 근거: lineHeight 도출

참고:

p 요소에 명시적으로 적용되는 것 외에도, 이 스타일 속성의 값은 span 요소와 익명 span 자손에 상속됩니다. 이들은 p 요소의 자손이며, 상속된 값은 이들이 생성하는 영역의 반행간을 계산하는 데 사용됩니다. 해당 인라인 영역에 관해서는 [XSL-FO 1.1], §4.5와 [CSS2], §10.8.1을 참조하십시오.

이 속성의 값이 normal이면, 이 스타일 속성의 사용값은 다음과 같이 결정됩니다:

  1. P를 p 요소로 둡니다. 이 요소에 해당 스타일 속성이 적용됩니다.

  2. FF를 tts:fontFamily의 계산값으로 둡니다. 이는 P의 스타일 속성입니다.

  3. FS를 tts:fontSize 스타일 속성의 계산값으로 둡니다. 이는 P의 속성입니다.

  4. F0를 각 글꼴 패밀리를 순차적으로 매핑할 때 얻는 첫 번째 글꼴로 둡니다. FF의 각 패밀리를 사용 가능한 글꼴 집합에 매핑하며, 이 사용 가능한 글꼴 집합은 계산값을 충족하도록 필요에 따라 제한됩니다. 해당 속성은 tts:fontSelectionStrategy, tts:fontStyle, tts:fontWeight 및 tts:fontVariant이며, 모두 P의 스타일 속성입니다.

  5. F0에 연관된 글꼴 메트릭이 상승 높이 A, 하강 깊이 D, 줄 간격 G를 지정하면, LH를 scaled(A), scaled(D) 및 scaled(G)의 합으로 설정합니다. 여기서 scaled(X)는 글꼴 메트릭 X를 글꼴 크기 FS에 따라 배율 조정한 것을 나타냅니다.

    참고:

    여기서 참조하는 상승 높이, 하강 깊이 및 줄 간격 매개변수는 각각 sTypoAscender, -sTypoDescender, 즉 음의 일(-1)에 sTypoDescender를 곱한 값, 그리고 sTypoLineGap 필드에 대응하도록 의도되었습니다. 이 필드들은 OS/2 테이블, 즉 OpenType [OFF] 글꼴의 테이블에 속합니다(또는 다른 글꼴 형식의 동등한 항목에 대응합니다). 또한 일반적으로, scaled(A) 및 scaled(D) 표현식은 text-altitude 및 text-depth 영역 특성에 대응하도록 의도되었습니다. 이는 [XSL-FO 1.1]에서 use-font-metrics 값을 연관된 속성인 text-altitude와 text-depth에 각각 사용할 때의 특성입니다.

  6. 그렇지 않으면 LH는 구현에 따라 달라지는 것으로 간주됩니다. 그러나 구현별 요구 사항이 없으면, LH를 FS의 125%로 설정하는 것이 권장됩니다.

  7. 이 스타일 속성의 사용값을 LH로 설정합니다.

참고:

콘텐츠 작성자가 서로 다른 해석 가능성을 피하고자 한다면, 즉 normal이 예를 들어 사용 가능한 글꼴 집합의 차이로 다르게 해석되는 것을 피하고자 한다면, <length> 값 표현식을 사용하여 줄 높이 값을 명시적으로 지정하는 것이 권장됩니다.

이 명세는 위 알고리즘이 [XSL-FO 1.1] 및 [CSS2]와 호환되도록 의도합니다.

<length>로 지정하면, 길이는 음수가 아니어야 합니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가 계산된 줄 높이와 지원되는 줄 높이 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, 0에서 가장 먼 값, 즉 가장 큰 줄 높이를 사용합니다.

다음 예제는 tts:lineHeight 스타일을 보여 줍니다.

예제 조각 – 줄 높이
<region xml:id="r1">
  <style tts:extent="255px 190px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="start"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="16px"/>
  <style tts:lineHeight="32px"/>
</region>
...
<p region="r1">
  그는 코끼리를 보았다고 생각했어요,<br/>
  피리 연습을 하는 코끼리를요:<br/>
  다시 보니 그것은<br/>
  아내가 보낸 편지였어요.<br/>
  "마침내 깨달았어요," 그가 말했어요,<br/>
  "인생의 씁쓸함을요.
"</p>

렌더링 예 – 줄 높이
TTML lineHeight 스타일 속성
10.2.27.1 줄 높이의 특수 의미

이 속성의 지정값이 normal이면, 계산값은 지정값입니다. 따라서 상속 의미를 적용할 때 normal 값이 상속값입니다. 그러나 이 계산값을 단락 레이아웃 수행에 사용하려면, 추가로 처리하여 사용값을 얻습니다. 이는 위에서 설명한 대로 수행됩니다.

10.2.28 tts:lineShear

tts:lineShear 속성은 스타일 속성을 지정하는 데 사용되며, 전단 변환을 각 줄 영역에 적용할지와 적용 방법을 결정합니다. 이 영역은 p 요소에서 생성됩니다.

값: <percentage>
초깃값: 0%
적용 대상: p
상속 여부: 예
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: lineShear 도출

이 속성이 적용되는 각 줄 영역에 대해, 2차원 전단 변환을 해당 줄 영역에 적용합니다. 이에 관해서는 10.4.5.3 전단 계산에 지정되어 있습니다.

다음 예제는 tts:lineShear 스타일을 보여 줍니다.

예제 조각 – 줄 전단
<region xml:id="right" tts:writingMode="tbrl" tts:displayAlign="center" .../>
<region xml:id="left" tts:writingMode="tbrl" tts:displayAlign="center" .../>
...
<div>
  <p region="right" tts:lineShear="0%">
    산에서의<span tts:ruby="container"><span tts:ruby="base">조난</span><span
    tts:ruby="text">조난</span></span><br/>
    <span tts:ruby="container"><span tts:ruby="base">최다</span><span
    tts:ruby="text">최다</span></span><span tts:ruby="container"><span
    tts:ruby="base">해</span><span tts:ruby="text">년</span></span>
  </p>
  <p region="left" tts:lineShear="16.67%">
    산에서의<span tts:ruby="container"><span tts:ruby="base">조난</span><span
    tts:ruby="text">조난</span></span><br/>
    <span tts:ruby="container"><span tts:ruby="base">최다</span><span
    tts:ruby="text">최다</span></span><span tts:ruby="container"><span
    tts:ruby="base">해</span><span tts:ruby="text">년</span></span>
  </p>
</div>

렌더링 예 – 줄 전단 - 루비가 있는 세로줄
TTML lineShear 스타일 속성

참고:

위 예제에서 노란색 선은 특정 표시 처리기가 생성한 장식이며, 레이아웃 문제의 디버깅을 돕기 위한 것입니다. 이 선은 이 명세에서 정의하는 규범적 TTML 표시의 일부가 아닙니다. 여기서 장식은 (1) 바깥쪽 블록 영역의 경계를 나타냅니다. 이 영역은 region 요소에서 생성됩니다. (2)는 줄 영역 자식의 경계로, 바깥쪽 블록 영역의 자식이며 p 요소에서 생성됩니다. (3)은 인라인 영역 자식의 경계로, 줄 영역의 자식이며 암묵적 루비 텍스트 컨테이너에서 생성됩니다.

이 예제는 전단(기울이기) 변환이 영향받는 각 줄 영역 전체에 적용되는 방식을 보여 줍니다. 그러나 줄에 줄 전단을 적용하려면, 해당 줄에 할당할 수 있는 사용 가능한 거리, 즉 전단 변환 전의 최대 인라인 진행 치수 길이가 B*sin(θ)만큼 줄어듭니다. 여기서 B는 줄 영역의 블록 진행 치수이고 θ는 전단 각도입니다. 이는 줄이 단락의 바깥쪽 블록 영역에 있는 콘텐츠 사각형 안에 들어가도록 하기 위한 것입니다.

10.2.29 tts:luminanceGain

tts:luminanceGain 속성은 영역의 절대 휘도를 결정하는 데 사용됩니다. 영역을 표시할 때 [SRGB] 색 공간에서 제공하는 것보다 더 큰 동적 범위가 필요하고, 해당 표시에 절대 휘도 값이 필요한 경우에 사용됩니다.

참고:

절대 휘도는 이득 배율을 절대 기준 백색점 휘도인 [SRGB] 색 공간의 80 cd∙m-2에 적용하여 결정합니다. 이는 특정 출력 디스플레이 장치의 실제 백색 휘도에 적용하는 것이 아닙니다.

이 이득을 지정할 수 없으면, [SRGB] 공간에서 지정한 색을 훨씬 더 큰 최대 휘도로 표시하도록 의도된 고동적 범위(HDR) 콘텐츠와 안정적으로 합성할 수 없습니다. 이러한 콘텐츠의 예로는 지각 양자화기 전기광학 전달 함수(PQ EOTF)를 사용하는 콘텐츠가 있으며, 이 함수는 [ITU BT.2100-1]에 지정되어 있습니다. 구체적으로,

  • [SRGB] 색을 배율 조정하지 않은 상태로 두고 장면의 평균 휘도가 80 cd∙m-2를 초과하면 색이 너무 어둡게 보일 수 있습니다; 또한

  • [SRGB] 색을 임의의 큰 휘도로 일괄 배율 조정하면, 예를 들어 10,000 cd∙m-2로 조정하면 색이 너무 밝게 보일 수 있습니다.

값: <non-negative-number>
초깃값: 1.0
적용 대상: region
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적
의미적 근거: luminanceGain 도출

tts:luminanceGain 속성과 연관된 계산값은 모든 해당 픽셀에 적용됩니다. 이들은 연관된 region 내부에서 [SRGB] 색 값을 절대 휘도 값으로 변환해야 하는 픽셀입니다. 절대 휘도 픽셀 값을 생성해야 한다는 요구 사항은 문서 처리 문맥에서 도출됩니다.

참고:

처리 시 절대 휘도 픽셀 값을 생성하는 이미지, 예를 들어 [PQ PNG]를 준수하는 이미지를 영역에 배치하고, 그 영역에 텍스트 또는 처리 시 [SRGB] 픽셀 값을 생성하는 이미지도 포함되어 있으며, 절대 휘도 출력이 필요하면, [SRGB] 픽셀 값만 변환됩니다.

tts:luminanceGain을 적용할 때, 선형 광학 출력값 (Cr, Cg, Cb)은 영역 내 픽셀의 성분에 대해 다음과 같이 정의됩니다: 80 ∙ tts:luminanceGain ∙ (r, g, b). 여기서 (r, g, b)는 정규화된 선형 [SRGB] 픽셀 성분입니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

다음 예제는 tts:luminanceGain 스타일을 보여 줍니다.

예제 조각 – tts:luminanceGain
<region xml:id="r1">
  <style tts:extent="60% 20%"/>
  <style tts:origin="10% 70%"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:luminanceGain="3.8"/>
</region>
<region xml:id="r2">
  <style tts:extent="60% 20%"/>
  <style tts:origin="10% 10%"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:luminanceGain="1.0"/>
</region>
...
<p region="r1">
  첫 번째 영역 "r1"의 텍스트 절대 휘도는 3.8배
  더 밝아야 합니다. 기준은 두 번째 영역 "r2"의 텍스트 절대 휘도입니다. 
</p>
<p region="r2">
  휘도를 그대로 유지하는 조정값(1.0)을 적용한 다른 텍스트입니다.
</p>

휘도 조정 계산의 예를 아래에서 설명합니다.

예 – tts:luminanceGain을 사용한 절대 선형 광학 출력 계산
tts:luminanceGain="1.5"가 주어지면, 렌더링된 픽셀의 성분에 대한 절대 선형 광학 출력은 해당 색이 rgb(218,165,32)일 때 (82.37, 42.21, 0.82) ≈ 80 ∙ 1.5 ∙((218/255)2.4, (165/255)2.4, (32/255)2.4)입니다. 여기서 지수 2.4는 [SRGB] EOTF가 적용하는 감마 보정입니다.

참고:

[SRGB] 픽셀을 HDR 픽셀 위에 합성할 때 tts:luminanceGain을 사용하는 자세한 예는 부록 Q.1 지각 양자화기에 제시되어 있습니다.

참고:

10.3.9 <color>에 지정된 대로, 렌더링된 문서 인스턴스의 영역을 대상 매체에 합성할 때는 일반적으로 픽셀 성분을 대상 매체의 역 EOTF로 인코딩하여 사용합니다. 이는 픽셀 성분을 선형 광으로 표현하는 것과는 다릅니다. 따라서 반투명 영역을 사용하면 대상 매체가 사용하는 역 EOTF에 따라 지각적으로 다른 결과가 나타날 수 있습니다. 특히 렌더링된 문서 인스턴스와 대상 매체의 픽셀 사이에 휘도 차이가 클 때 그렇습니다. 그러므로 작성자는 반투명 요소가 포함된 시각적 결과를 고려하는 것이 권장됩니다.

10.2.30 tts:opacity

tts:opacity 속성은 스타일 속성을 지정하는 데 사용되며, 불투명도(또는 반대로 투명도)를 영역이나 영역으로 흐르는 콘텐츠에서 생성된 영역과 연관된 표시 흔적에 대해 정의합니다.

시각 매체에 표시할 때 영역의 불투명도는 균일하게 선형 척도로 적용됩니다. 이는 해당 영역을 대상으로 하는 콘텐츠에서 생성되는 모든 표시 흔적에 적용되며, 먼저 콘텐츠 요소별 불투명도를 해당 콘텐츠에서 생성된 영역에 적용한 후 수행됩니다.

값: <alpha>
초깃값: 1.0
적용 대상: body, div, image, p, region, span
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적
의미적 근거: opacity 도출

다음 예제는 tts:opacity 스타일을 보여 줍니다.

예제 조각 – 불투명도
<p>
  <span tts:opacity="1.00">그리고 </span>
  <span tts:opacity="0.75">그때 </span>
  <span tts:opacity="0.50">그곳에는 </span>
  <span tts:opacity="0.25">아무도 </span>
  <span tts:opacity="0.00">없었습니다.</span>
</p>

렌더링 예 – 불투명도
TTML opacity 스타일 속성

10.2.31 tts:origin

tts:origin 속성은 x 및 y 좌표를 지정하는 데 사용됩니다. 이는 영역 원점의 좌표이며, 기준은 루트 컨테이너 영역의 원점입니다.

tts:origin과 tts:position 속성을 모두 요소에 지정하고 tts:position이 지원되는 속성이면, tts:origin 속성을 표시 처리에서 무시해야 합니다.

값: <origin>
초깃값: auto
적용 대상: region; 다음 특수 용법은 div 및 p를 참조하십시오
상속 여부: 아니요
백분율: 너비와 높이의 기준은 루트 컨테이너 영역입니다
애니메이션 가능 여부: 이산적
의미적 근거: origin 도출

이 속성의 값이 두 개의 <length> 지정값으로 구성되면, 이를 x 및 y 좌표로 해석해야 합니다. 이때 첫 번째 지정값은 x 좌표이고, 두 번째 지정값은 y 좌표입니다.

이 속성의 값이 auto이면, 스타일 속성의 계산값을 루트 컨테이너 영역의 원점과 같은 것으로 간주해야 합니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가 계산된 원점과 지원되는 원점 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, [0,0]에 가장 가까운 값, 즉 좌표 공간 원점에 가장 가까운 값을 사용합니다.

다음 예제는 tts:origin 스타일을 보여 줍니다.

예제 조각 – 원점
<region xml:id="r1">
  <style tts:origin="40px 40px"/>
  <style tts:extent="308px 92px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  "식사를 하다니!" 그녀는 용처럼 격노하여 비명을 질렀습니다.<br/>
  "온통 거품투성이인 포도주를 마시다니!<br/>
   식탁보 앞에서 실실 웃다니!"
</p>

렌더링 예 – 원점
TTML origin 스타일 속성
10.2.31.1 원점의 특수 용법

tts:origin을 예외적으로 div 또는 p에 지정하면, 11.1.2.1 인라인 애니메이션의 특수 의미가 적용됩니다.

10.2.32 tts:overflow

tts:overflow 속성은 스타일 속성을 지정하는 데 사용되며, 영역의 자손 영역들이 그 크기를 넘칠 때 영역을 잘라낼지 정의합니다.

값: "visible" | "hidden"
초깃값: hidden
적용 대상: region
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: overflow 도출

이 속성의 값이 visible이면, 영향받는 영역 밖의 콘텐츠를 잘라내지 않는 것이 좋습니다. 값이 hidden이면, 영향받는 영역 밖의 콘텐츠를 잘라내는 것이 좋습니다.

참고:

영역의 콘텐츠 사각형과 연관된 콘텐츠에서 생성되는 표시 흔적은 해당 콘텐츠 사각형 바깥에 렌더링되어 영역의 패딩 및 테두리 사각형과 겹칠 수 있으며, 이때는 tts:overflow 속성의 영향을 받지 않습니다. 이러한 표시 흔적은 영역의 크기 밖으로 확장될 때에만 영역 넘침의 대상이 됩니다. 이 크기는 영역의 테두리 사각형과 일치하며, 테두리 사각형은 패딩 사각형을 포함하고, 패딩 사각형은 콘텐츠 사각형을 포함합니다.

참고:

콘텐츠 작성자가 수동 줄 바꿈 요소 br을 사용하지 않는 한, 특정 영역의 단락은 그 영역에서 하나를 초과하는 줄 영역을 생성하지 않습니다. 이는 영역의 tts:overflow 및 tts:wrapOption 스타일 속성의 계산값이 각각 visible과 noWrap인 경우입니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: hidden.

다음 예제는 tts:overflow 스타일을 보여 줍니다.

예제 조각 – 넘침
<?xml version="1.0"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" 
    xml:lang="en" tts:extent="320px 240px">
  <head>
    <styling>
      <style xml:id="s1" tts:backgroundColor="black" tts:padding="6px"/>
      <style xml:id="s2" tts:color="red" tts:backgroundColor="white" 
             tts:wrapOption="noWrap" tts:fontFamily="proportionalSansSerif" 
             tts:fontSize="10px"/>
    </styling>
    <layout>
      <region xml:id="r1" style="s1" tts:extent="100px 40px" tts:origin="20px 20px" 
              tts:overflow="visible"/>
      <region xml:id="r2" style="s1" tts:extent="100px 40px" tts:origin="20px 180px" 
              tts:overflow="hidden"/>
    </layout>
  </head>
  <body>
    <div>
      <p region="r1" style="s2">
  "하지만 잠깐만 기다려 주세요," 굴들이 외쳤어요,<br/>
  "이야기를 나누기 전에요;
      </p>
      <p region="r2" style="s2">
  우리 중 몇몇은 숨이 차고,<br/>
  우리 모두 뚱뚱하니까요!"
      </p>
    </div>
  </body>
</tt>

렌더링 예 – 넘침
TTML overflow 스타일 속성

참고:

위 예제에서는 tts:noWrap을 noWrap으로 설정하여 자동 줄 바꿈을 방지합니다; 이를 지정하지 않으면, 넘침은 인라인 진행 방향 대신 블록 진행 방향으로 발생합니다.

10.2.33 tts:padding

tts:padding 속성은 패딩(또는 안쪽 여백) 공간을 영역이나 영역으로 흐르는 콘텐츠에서 생성된 영역의 한 면 이상에 지정하는 데 사용됩니다.

참고:

패딩은 영역의 안쪽 여백으로 적용됩니다. 즉, 영역의 콘텐츠 사각형은 해당 영역에 적용되는 패딩으로 인해 줄어듭니다.

값: <padding>
초깃값: 0px
적용 대상: body, div, image, p, region, span
상속 여부: 아니요
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: padding 도출

이 속성의 값이 하나의 <length> 지정값으로 구성되면, 해당 길이가 영향받는 영역의 모든 가장자리에 적용됩니다. 값이 두 개의 <length> 지정값으로 구성되면, 첫 번째 값은 다음에 적용됩니다: 앞쪽 및 뒤쪽 가장자리. 두 번째 값은 시작 및 끝 가장자리에 적용됩니다. 세 개의 <length> 지정값이 제공되면, 첫 번째 값은 앞쪽 가장자리에, 두 번째 값은 시작 및 끝 가장자리에, 세 번째 값은 뒤쪽 가장자리에 적용됩니다. 네 개의 <length> 지정값이 제공되면, 각각 앞쪽, 끝, 뒤쪽, 시작 가장자리에 적용됩니다.

참고:

백분율 값은 적용되는 영역의 치수를 기준으로 합니다. 예를 들어 앞쪽 및 뒤쪽 가장자리가 영역의 위쪽 및 아래쪽 가장자리에 해당하면, 즉 라틴 문자 텍스트에서 tts:writingMode가 "lrtb"인 경우처럼, 두 가장자리 중 어느 쪽에 적용되든 백분율 값은 영역의 높이를 기준으로 합니다. 반대로, 앞쪽 및 뒤쪽 가장자리가 영역의 오른쪽 및 왼쪽 가장자리에 해당하면, 즉 일본어 텍스트에서 tts:writingMode가 "tbrl"인 경우처럼, 두 가장자리 중 어느 쪽에 적용되든 백분율 값은 영역의 너비를 기준으로 합니다.

패딩을 표현하는 데 사용하는 <length> 값은 음수가 아니어야 합니다.

패딩을 span 요소에 적용하고, 해당 요소의 콘텐츠가 여러 줄 영역에 걸쳐 나뉘면, 지정된 패딩을 각 줄 바꿈 경계에 적용해야 합니다. 반면, 단일 줄 영역 안에서 요소가 여러 인라인 영역을 생성하면, 지정된 패딩을 해당 줄 영역에서 처음 및/또는 마지막으로 생성된 인라인 영역에 적용해야 합니다. 이 순서는 포함하는 블록 수준 요소의 인라인 진행 순서를 따릅니다.

참고:

span 요소의 패딩 동작은 다음을 사용하는 것에 해당합니다: CSS box-decoration-break 속성을 줄 바꿈에서는 clone 값으로, 끝이 아닌 인라인 영역 경계에서는 slice 값으로 사용하는 것입니다. 끝이 아닌 경계란 첫 번째도 마지막도 아닌 경계이며, 이는 [CSS Fragmentation], §5.4에 정의되어 있습니다.

백분율 값을 이 속성의 <length> 성분에 사용하면, 다음과 같이 해석됩니다:

  • region 요소에 적용하면, 백분율은 해당 영역의 해석된 크기에서 적용 가능한 절대 치수를 기준으로 합니다. 단, 그 치수가 영역 콘텐츠의 크기에 따라 달라지면, 백분율은 적용 가능한 초깃값의 해당 성분으로 해석됩니다;

  • 그 밖의 모든 요소에 적용하면, 백분율은 가장 가까운 조상 영역의 해당 절대 치수를 기준으로 합니다. 단, 그 치수가 해당 영역 콘텐츠의 크기에 따라 달라지면, 백분율은 적용 가능한 초깃값의 해당 성분으로 해석됩니다.

참고:

이 속성에 사용되는 각 <length> 성분은 특정한 쓰기 모드 상대 가장자리와 연관되며, 그 가장자리는 절대 치수로 해당 쓰기 모드에 따라 해석됩니다. 그 절대 치수가 가로(세로)이면, 백분율 값은 같은 가로(세로) 절대 치수를 기준으로 참조 영역(루트 컨테이너 영역 또는 가장 가까운 조상 영역)에서 해석됩니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 1차원 유클리드 거리가 계산된 패딩과 지원되는 패딩 사이에서 가장자리별로 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 특정 가장자리의 계산값과의 거리가 같으면, 0에 가장 가까운 값, 즉 가장 작은 패딩을 사용합니다.

다음 예제는 tts:padding 스타일을 보여 줍니다.

예제 조각 – region의 패딩
<region xml:id="r1">
  <style tts:extent="446px 104px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
  <style tts:padding="10px 40px"/>
</region>
...
<p region="r1" tts:backgroundColor="red">
  스나크에게 딱 맞는 곳입니다! 두 번 말했어요:<br/>
  그것만으로도 선원들에게 힘이 될 거예요.<br/>
  스나크에게 딱 맞는 곳입니다! 세 번 말했어요:<br/>
  제가 세 번 말하는 것은 사실이에요.
</p>

패딩이 적용되는 영역을 렌더링할 때, 해당 영역에 적용되는 배경색은 영역의 패딩 부분에도 렌더링됩니다.

렌더링 예 – region의 패딩
TTML padding 스타일 속성

참고:

위 예제는 패딩이 영역의 안쪽 여백으로 적용되는 방식을 보여 줍니다. 구체적으로, 10px의 패딩이 앞쪽(위쪽) 및 뒤쪽(아래쪽) 가장자리에 적용되고, 40px의 패딩이 시작(왼쪽) 및 끝(오른쪽) 가장자리에 적용됩니다. 이를 영역의 크기에서 빼면 영역의 콘텐츠 사각형은 366px의 너비와 84px의 높이를 갖게 됩니다. 영역의 검은색 배경색은 영역의 패딩 사각형에 나타나고, 단락의 빨간색 배경색은 영역의 콘텐츠 사각형에 나타납니다.

예제 조각 – span의 패딩
<region xml:id="r1">
  <style tts:extent="446px 72px"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
  <style tts:backgroundColor="green"/>
</region>
...
<p region="r1">
  <span tts:backgroundColor="black" tts:color="white" tts:padding="0c 0.5c">
  선원은 모두 모였어요: 구두닦이도 있었고--<br/>
  보닛과 두건을 만드는 사람도 있었어요--
  </span>
</p>

패딩이 적용되는 span을 렌더링할 때, 패딩은 생성되는 각 줄 영역에 독립적으로 적용됩니다.

렌더링 예 – span의 패딩
TTML padding 스타일 속성

10.2.34 tts:position

tts:position 속성은 위치 지정 사각형을 기준으로 영역의 위치를 지정하는 또 다른 방법으로 사용됩니다.

tts:position과 tts:origin 속성을 모두 요소에 지정하고 tts:position이 지원되는 속성이면, tts:origin 속성을 표시 처리에서 무시해야 합니다.

값: <position>
초깃값: top left
적용 대상: region; 다음 특수 용법은 div 및 p를 참조하십시오
상속 여부: 아니요
백분율: 본문 참조
애니메이션 가능 여부: 이산적; 연속적
의미적 근거: position 도출

가로 위치 오프셋의 백분율 값 성분은 다음 너비를 기준으로 합니다: 위치 지정 사각형의 너비에서 연관된 영역의 너비를 뺀 값. 세로 위치 오프셋의 백분율 값 성분은 다음 높이를 기준으로 합니다: 위치 지정 사각형의 높이에서 연관된 영역의 높이를 뺀 값.

다음 이미지는 위치 값 "75% 50%"를 보여 줍니다. 점선 사각형은 위치 지정 사각형을 나타내고, 실선 사각형은 배치되는 영역을 나타냅니다. 이 경우 영역은 자신의 너비 75% 지점에 있는 세로선이 위치 지정 사각형 너비 75% 지점에 있는 세로선과 일치하고, 자신의 높이 50% 지점에 있는 가로선이 위치 지정 영역 너비 50% 지점에 있는 세로선과 일치하도록 배치됩니다.

백분율 기반 위치 지정
백분율을 사용하는 TTML position 스타일 속성

region 요소에 지정하면, 위치 지정 사각형은 루트 컨테이너 영역의 콘텐츠 사각형에 해당합니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가 계산된 위치와 지원되는 위치 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, [0,0]에 가장 가까운 값, 즉 좌표 공간 위치에 가장 가까운 값을 사용합니다.

다음 예제는 tts:position 스타일을 보여 주며, 영역을 다음과 같이 배치합니다: 가로 치수에서는 가운데에 놓고, 세로 치수에서는 아래쪽 가장자리를 위치 지정 사각형의 아래쪽에서 10% 위로 오프셋합니다. 이때 오프셋은 위치 지정 사각형의 높이와 영역의 높이 간 차이의 10%입니다.

예제 조각 – 위치
<tt tts:extent="640px 480px">
...
<region xml:id="r1">
  <style tts:position="center bottom 10%"/>
  <style tts:extent="308px 92px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="center"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  "식사를 하다니!" 그녀는 용처럼 격노하여 비명을 질렀습니다.<br/>
  "온통 거품투성이인 포도주를 마시다니!<br/>
   식탁보 앞에서 실실 웃다니!"
</p>

렌더링 예 – 위치
TTML position 스타일 속성

10.2.34.1 위치의 특수 용법

tts:position을 예외적으로 div 또는 p에 지정하면, 11.1.2.1 인라인 애니메이션의 특수 의미가 적용됩니다.

10.2.35 tts:ruby

tts:ruby 속성은 루비 스타일의 적용을 지정하는 데 사용됩니다.

값: "none" | "container" | "base" | "baseContainer" | "text" | "textContainer" | "delimiter"
초깃값: none
적용 대상: span
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 없음
의미적 근거: ruby 도출

이 속성의 값이 none이면 루비 의미가 적용되지 않습니다; 그렇지 않으면, 다음에 열거된 루비 의미, 표 10-1 – 루비 의미 매핑이 적용됩니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: none.

표 10-1 – 루비 의미 매핑
범주 tts:ruby 주석 [Ruby] CSS display [CSS Ruby]
루비 컨테이너 container ruby ruby
루비 베이스 콘텐츠 base rb ruby-base
루비 텍스트 콘텐츠 text rt ruby-text
루비 베이스 컨테이너 baseContainer rbc ruby-base-container
루비 텍스트 컨테이너 textContainer rtc ruby-text-container
루비 대체 표시 구분자 delimiter rp none | inline

표시 처리에서 문서 처리 문맥은 표시 모드, 즉 일반 표시 또는 대체 표시를 결정합니다. 루비 텍스트 주석의 일반 표시 처리를 수행할 때, 구분자 콘텐츠는 인라인 영역을 생성해서는 안 됩니다. 루비의 대체 표시를 수행할 때는 구분자와 구분자가 아닌 루비(베이스 및 텍스트) 콘텐츠 모두 일반 인라인 영역을 생성해야 합니다. 표시 처리기가 루비 표시를 지원하지 않으면, 대체 루비 표시를 수행해야 합니다.

tts:ruby를 사용할 때 다음 중첩 제약 조건이 루비 컨테이너에 적용됩니다. 즉, tts:ruby의 계산값이 span 요소에서 container이면, 다음이 적용됩니다:

  • 모든 조상 요소의 tts:ruby 계산값은 none입니다;

  • 각 자식 요소의 tts:ruby 계산값은 none이 아닙니다;

  • 첫 번째 자식 요소의 tts:ruby 계산값은 baseContainer 또는 base입니다;

  • 각 텍스트 노드 자식은 <lwsp>만 포함하며, 표시 처리에서 이를 무시해야 합니다. 이는 계산값, 즉 xml:space 속성의 계산값이 preserve인지와 관계없이 적용됩니다;

tts:ruby를 사용할 때 다음 중첩 제약 조건이 루비 베이스 컨테이너에 적용됩니다. 즉, tts:ruby의 계산값이 span 요소에서 baseContainer이면, 다음이 적용됩니다:

  • 부모 요소의 tts:ruby 계산값은 container입니다;

  • 각 자식 요소의 tts:ruby 계산값은 none이 아닙니다;

  • 첫 번째 자식 요소의 tts:ruby 계산값은 base입니다;

  • 이전 형제는 null입니다(즉, 이전 형제가 없습니다);

  • 각 텍스트 노드 자식은 <lwsp>만 포함하며, 표시 처리에서 이를 무시해야 합니다. 이는 계산값, 즉 xml:space 속성의 계산값이 preserve인지와 관계없이 적용됩니다;

tts:ruby를 사용할 때 다음 중첩 제약 조건이 루비 텍스트 컨테이너에 적용됩니다. 즉, tts:ruby의 계산값이 span 요소에서 textContainer이면, 다음이 적용됩니다:

  • 부모 요소의 tts:ruby 계산값은 container입니다;

  • 각 자식 요소의 tts:ruby 계산값은 none이 아닙니다;

  • 첫 번째 자식 요소의 tts:ruby 계산값은 text 또는 delimiter입니다;

  • 이전 형제의 tts:ruby 계산값은 baseContainer 또는 textContainer입니다;

  • 형제 중 최대 하나만 tts:ruby의 계산값이 textContainer입니다;

  • 각 텍스트 노드 자식은 <lwsp>만 포함하며, 표시 처리에서 이를 무시해야 합니다. 이는 계산값, 즉 xml:space 속성의 계산값이 preserve인지와 관계없이 적용됩니다;

tts:ruby를 사용할 때 다음 중첩 제약 조건이 루비 베이스 콘텐츠에 적용됩니다. 즉, tts:ruby의 계산값이 span 요소에서 base이면, 다음이 적용됩니다:

  • 부모 요소의 tts:ruby 계산값은 container 또는 baseContainer입니다;

  • 이전 형제가 null이거나(즉, 이전 형제가 없거나), 이전 형제의 tts:ruby 계산값이 base입니다;

  • 부모 요소의 tts:ruby 계산값이 container이면, 어떤 형제도 tts:ruby의 계산값이 base여서는 안 됩니다;

  • 어떤 자손 요소도 tts:ruby의 계산값이 none이 아닌 값이어서는 안 됩니다;

  • 어떤 자손 요소도 br 요소여서는 안 됩니다;

  • 각 텍스트 노드 자손은 다음을 포함하지 않습니다: U+2028 (줄 구분자) 또는 U+2029 (단락 구분자);

tts:ruby를 사용할 때 다음 중첩 제약 조건이 루비 텍스트 콘텐츠에 적용됩니다. 즉, tts:ruby의 계산값이 span 요소에서 text이면, 다음이 적용됩니다:

  • 부모 요소의 tts:ruby 계산값은 container 또는 textContainer입니다;

  • 이전 형제가 null이거나(즉, 이전 형제가 없거나), 이전 형제의 tts:ruby 계산값이 base, text 또는 delimiter입니다;

  • 부모 요소의 tts:ruby 계산값이 container이면, 어떤 형제도 tts:ruby의 계산값이 text여서는 안 됩니다;

  • 어떤 자손 요소도 tts:ruby의 계산값이 none이 아닌 값이어서는 안 됩니다;

  • 어떤 자손 요소도 br 요소여서는 안 됩니다;

  • 각 텍스트 노드 자손은 다음을 포함하지 않습니다: U+2028 (줄 구분자) 또는 U+2029 (단락 구분자);

tts:ruby를 사용할 때 다음 중첩 제약 조건이 루비 대체 표시 구분자에 적용됩니다. 즉, tts:ruby의 계산값이 span 요소에서 delimiter이면, 다음이 적용됩니다:

  • 부모 요소의 tts:ruby 계산값은 container 또는 textContainer입니다;

  • 이전 형제가 null이거나(즉, 이전 형제가 없거나), 이전 형제의 tts:ruby 계산값이 base 또는 text입니다;

  • 정확히 하나의 형제에서 tts:ruby의 계산값이 delimiter입니다;

  • tts:ruby의 계산값이 delimiter이면, 어떤 자손 요소도 tts:ruby의 계산값이 none이 아닌 값이어서는 안 됩니다;

  • 어떤 자손 요소도 br 요소여서는 안 됩니다;

  • 각 텍스트 노드 자손은 다음을 포함하지 않습니다: U+2028 (줄 구분자) 또는 U+2029 (단락 구분자).

유효성 검사 콘텐츠 처리기는 위 제약 조건 중 어느 하나라도 위반하면 오류로 처리해야 합니다. 표시 처리에서는 이러한 제약 조건을 위반할 경우 루비 텍스트 주석을 대체(인라인) 표시하는 것이 좋습니다. 또한 어떤 제약 조건을 위반하는 콘텐츠가 다음과 같은 콘텐츠, 즉 br 요소나 U+2028 (줄 구분자) 또는 U+2029 (단락 구분자) 문자이면, U+0020 (공백) 문자에 매핑하는 것이 좋습니다. 다른 콘텐츠라면 무시하는 것이 좋습니다(표시하지 않습니다).

참고:

위에 나열된 제약 조건은 다음 중첩 모델을 지정하는 것으로 해석하도록 의도되었습니다:

container
  : base text
  | base delimiter text delimiter
  | baseContainer textContainer textContainer?

baseContainer
  : base+

textContainer
  : text+
  | delimiter text+ delimiter

base | text | delimiter
  : (#PCDATA | { span - tts:ruby })*

이 모델은 ruby 요소의 최대 콘텐츠 모델에 해당합니다. 이는 [Ruby], §2.1에 정의되어 있으며, 다만 rtc는 실질적으로 확장되어 구분자(rp)를 선택적으로 사용할 수 있다는 점이 다릅니다:

ruby
  : rb rt
  | rb rp rt rp
  | rbc rtc rtc?

rbc
  : rb+

rtc
  : rt+
  | rp rt+ rp                            // [Ruby]에 대한 확장

또한 이 모델은 [Ruby], §2.6과 일치하며, 다음 제약 조건, 즉 루비 컨테이너의 중첩을 지원하지 않는다는 조건에 부합합니다(이에 관해서는 위의 중첩 제약 조건을 참조하십시오).

참고:

마크업을 최소화할 수 있는 경우의 수는 [HTML]에서 허용하는 것만큼 많지 않지만, 여기서 정의하는 루비 주석 형식은 다음 단축 표현을 허용합니다:

base text =
  baseContainer
    base
  textContainer
    text

base delimiter text delimiter =
  baseContainer
    base
  textContainer
    delimiter text delimiter

base의 콘텐츠가 B이고 text의 콘텐츠가 T이면, base text 표현식은 [HTML]에서 다음과 같이 여러 방식으로 표현할 수 있습니다:

<ruby>B<rt>T</ruby>
<ruby>B<rt>T</rt></ruby>
<ruby><rb>B<rt>T</ruby>
<ruby><rb>B</rb><rt>T</ruby>
<ruby><rb>B</rb><rt>T</rt></ruby>
<ruby>B<rtc><rt>T</ruby>
<ruby>B<rtc><rt>T</rtc></ruby>
<ruby>B<rtc><rt>T</rt></ruby>
<ruby>B<rtc><rt>T</rt></rtc></ruby>
<ruby><rb>B<rtc><rt>T</ruby>
<ruby><rb>B<rtc><rt>T</rtc></ruby>
<ruby><rb>B</rb><rtc><rt>T</ruby>
<ruby><rb>B</rb><rtc><rt>T</rtc></ruby>
<ruby><rb>B</rb><rtc><rt>T</rt></ruby>
<ruby><rb>B</rb><rtc><rt>T</rt></rtc></ruby>

한편 TTML2에서는 다음과 같은 대체 표현이 가능합니다:

<span tts:ruby="container">
  <span tts:ruby="base">B</span>
  <span tts:ruby="text">T</span>
</span>

또는 이와 동등한 표현입니다

<span tts:ruby="container">
  <span tts:ruby="baseContainer">
    <span tts:ruby="base">B</span>
  </span>
  <span tts:ruby="textContainer">
    <span tts:ruby="text">T</span>
  </span>
</span>

참고:

TTML 구문은 여러 루비 베이스 콘텐츠를 루비 베이스 컨테이너 안에, 그리고 여러 루비 텍스트 콘텐츠를 루비 텍스트 컨테이너 안에 사용할 수 있게 합니다. 이들은 모두 동일한 루비 컨테이너 안에 있습니다. 이 TTML 버전은 루비 베이스 콘텐츠와 루비 텍스트 콘텐츠 사이의 매핑을 정의하지 않습니다. 이는 루비 텍스트 콘텐츠의 수가 루비 베이스 콘텐츠의 수와 같지 않은 경우이며, 같은 루비 컨테이너 안에서 비교합니다.

참고:

인라인 영역이 표시 처리를 수행하여 생성되고, 처리 대상이 루비 텍스트 컨테이너 또는 루비 텍스트 콘텐츠이면, 해당 인라인 영역의 상위 영역은(해당 영역은 자손이 됩니다) 다음 줄 영역이 됩니다. 이 줄 영역은 루비 베이스 콘텐츠를 포함하며, 해당 베이스 콘텐츠에는 루비 텍스트 콘텐츠가 연관되어 있습니다.

다음 예제는 tts:ruby를 사용하여 단순 루비 주석을 지정하는 방법을 보여 줍니다.

예제 조각 – 단순 루비
<span tts:ruby="container" tts:rubyAlign="spaceAround">
  <span tts:ruby="base">이용 허락</span>
  <span tts:ruby="text">라이선스</span>
</span>

렌더링 예 – 단순 루비
TTML ruby 스타일 속성

다음 예제는 tts:ruby를 사용하여 양쪽 루비 주석을 지정하는 방법을 보여 줍니다.

예제 조각 – 양쪽 루비
<span>
  <span tts:ruby="container" tts:rubyAlign="spaceAround">
    <span tts:ruby="baseContainer">
      <span tts:ruby="base">동남</span>
    </span>
    <span tts:ruby="textContainer" tts:rubyPosition="before">
      <span tts:ruby="text">동남</span>
    </span>
    <span tts:ruby="textContainer" tts:rubyPosition="after">
      <span tts:ruby="text">손방</span>
    </span>
  </span>
  <span>쪽 방향</span>
</span>

렌더링 예 – 양쪽 루비
TTML ruby 스타일 속성

참고:

루비 주석의 문자 사이 배치 모드, 예를 들어 주음부호 문자에 사용하는 모드는, 시장 요구 사항이 없으므로 이 TTML 버전에서는 지원하지 않습니다.

tts:ruby 속성은 주석에 라틴 문자를 사용하는 경우에도 사용할 수 있습니다. 예를 들어 [CLREQ]에서 설명하는 병음에 사용할 수 있으며, 다음 예제에서 이를 보여 줍니다.

예제 조각 – 병음 주석이 있는 루비
<p>
<span tts:ruby="container" tts:rubyAlign="center">
  <span tts:ruby="base">주걸륜</span><span tts:ruby="text">제이 추</span>
</span>

렌더링 예 – 병음 주석을 사용하는 루비
병음을 사용하는 TTML ruby 스타일 속성
10.2.35.1 루비 주석의 특수 의미

구현별 요구 사항이 없으면, 루비 텍스트 콘텐츠와 루비 베이스 콘텐츠 사이의 정렬 제약 조건으로 인해 줄 영역을 넘칠 가능성이 있는 경우, 루비 텍스트 콘텐츠를 줄 영역의 시작 또는 끝 가장자리에서 멀어지도록 이동하여 이를 해소하는 것이 좋습니다.

참고:

[JLREQ], §3.3.8, 베이스 문자보다 길이가 긴 루비의 조정, 그리고 [CSS Ruby], §5, 가장자리 효과에서 추가 정보를 참조하십시오.

구현별 요구 사항이 없으면, 루비 텍스트 콘텐츠가 루비 베이스 콘텐츠를 넘어 돌출되는 것은 베이스 텍스트가 다음 문자 클래스 중 하나에 속할 때만 허용하는 것이 좋습니다. 이 클래스는 [JLREQ], 부록 A, 문자 클래스에 정의되어 있습니다:

  • hiragana

  • ideographic

  • punctuationMarks

참고:

[JLREQ], §3.3.8, 베이스 문자보다 길이가 긴 루비의 조정에서 추가 정보를 참조하십시오.

표시 처리를 수행할 때, 고립된 루비 콘텐츠, 즉, 루비 베이스 콘텐츠 또는 루비 텍스트 콘텐츠가 각각 루비 베이스 컨테이너 또는 루비 텍스트 컨테이너 없이 지정된 경우, 필요에 따라 익명 루비 베이스 컨테이너 및/또는 익명 루비 텍스트 컨테이너가 존재하는 것으로 간주하여 처리합니다. 암묵적 루비 베이스 컨테이너 및/또는 암묵적 루비 텍스트 컨테이너는 암묵적 또는 집합적 스타일 의미를 생성하고 적용하기 위해 필요합니다. 이 의미가 적용되는 인라인 블록 영역은 인라인 영역을 포함하며, 해당 인라인 영역은 고립된 루비 콘텐츠에서 생성됩니다.

명시적으로 지정된 span 요소에서 스타일 속성 tts:ruby의 계산값이 baseContainer이면, 이 요소를 명시적 루비 베이스 컨테이너라고 합니다; 마찬가지로, 명시적으로 지정된 span 요소에서 스타일 속성 tts:ruby의 계산값이 textContainer이면, 이 요소를 명시적 루비 텍스트 컨테이너라고 합니다.

참고:

글리프 영역에 적용되는 스타일 속성은 표시 처리 중 루비 컨테이너 span에 의미적 영향을 주지 않습니다. 이는 유의미한 텍스트 노드가 자식으로 나타나지 않기 때문이며, 여기서 부모가 되는 익명 span은 그러한 span 요소의 자식입니다. 예를 들어, tts:fontStyle 속성을 다음 요소인 루비 컨테이너 span에 지정하면, 유의미한 텍스트 노드가 범위 안에 없으므로 이를 적용할 대상이 없습니다. 그러나 tts:fontStyle에 지정한 값은 루비 컨테이너 span에서 여전히 스타일 상속을 위해 적용됩니다. 이를 상속하는 대상은 다른(익명이 아닌) span 요소, 즉 루비 컨테이너 span의 자식입니다.

10.2.36 tts:rubyAlign

tts:rubyAlign 속성은 인라인 영역 내 루비 텍스트의 위치를 지정하는 데 사용됩니다. 이 영역은 루비 텍스트 컨테이너 주석에서 생성됩니다.

값: "start" | "center" | "end" | "spaceAround" | "spaceBetween" | "withBase"
초깃값: center
적용 대상: span, 단 계산값, 즉 tts:ruby의 계산값이 container인 경우에만 적용됩니다
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: rubyAlign 도출

이 속성을 지정한 span 요소에서 tts:ruby의 계산값이 container이면, 연관된 스타일 속성의 루비 정렬 의미가 생성되는 인라인 영역에 집합적으로 적용됩니다. 이 영역은 컨테이너를 구성하는 루비 컨테이너와 루비 콘텐츠에서 생성됩니다.

참고:

루비 정렬을 루비 컨테이너 전체에 적용하면, 컨테이너와 그 구성 요소에 적용되는 루비 정렬이 균일하게 유지됩니다(변하지 않습니다).

IR과 IB를 각각 다음에서 생성되는 인라인 영역으로 둡니다: (1) 루비 텍스트 컨테이너 또는 루비 텍스트 주석과 (2) 연관된 루비 베이스 컨테이너 또는 루비 베이스. 또한 NR 과 NB 를 각각 글리프 영역 자손의 수로 둡니다. 이들은 해당 인라인 영역의 자손입니다.

이 속성의 값이 start이면, 첫 번째 글리프 영역 자손의 시작 가장자리는, 해당 자손이 속한 IR, 즉 그 인라인 영역의 시작 가장자리에 정렬됩니다. 값이 center이면, 여분의 공백이 첫 번째와 마지막 루비 주석 글리프 영역의 앞과 뒤에 각각 균등하게 분배됩니다. 이 속성의 값이 end이면, 첫 번째 글리프 영역 자손의 끝 가장자리는, 해당 자손이 속한 IR, 즉 그 인라인 영역의 끝 가장자리에 정렬됩니다. 값이 spaceBetween이면, 여분의 공백이 각 루비 주석 글리프 영역 사이에 균등하게 분배됩니다. 값이 spaceAround이면, 여분의 공백이 각 루비 주석 글리프 영역 자손의 앞과 뒤에 균등하게 분배됩니다.

이 속성의 값이 withBase이고, NR과 NB가 같으면, ith 글리프 영역 자손, 즉 IR의 해당 자손은 가로 또는 세로 방향으로 ith 글리프 영역 자손, 즉 IB의 해당 자손과 가운데 정렬됩니다; 그렇지 않으면(루비와 베이스의 글리프 영역 수가 같지 않으면), center의 의미가 적용됩니다.

참고:

위 의미의 문맥에서 글리프 영역 자손을 해석할 때는, 공간을 차지하는 글리프 영역 자손만 고려합니다; 즉, 공간을 차지하지 않는 글리프 영역 자손, 예를 들어 결합 부호는, 루비 정렬에 영향을 주지 않습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: center.

참고:

이 명세에서는 시간 지정 텍스트 애플리케이션의 루비 주석이 좁다고 가정합니다. 표시 공간과 사용 가능한 시간이 제한되는 경우가 많기 때문입니다. 따라서 이 TTML 버전에서는 작성자가 루비 주석이 베이스 텍스트보다 넓을 때 간격이 분배되는 방식을 제어할 수 없습니다. 이는 줄의 시작 또는 끝 가장자리에 있는 넓은 루비 주석에 문제가 될 수 있습니다. 문제를 피하려면, 작성자는 적절한 tts:rubyAlign 값을 사용하고/하거나 넓은 루비 주석이 포함된 이벤트를 여러 줄 또는 여러 이벤트로 나누는 것이 권장됩니다.

다음 예제는 tts:rubyAlign 스타일을 보여 줍니다.

예제 조각 – 루비 정렬
<p>
<span tts:ruby="container" tts:rubyAlign="start">
  <span tts:ruby="base">자업자득</span><span tts:ruby="text">일이삼</span>
</span>
<span tts:ruby="container" tts:rubyAlign="spaceAround">
  <span tts:ruby="base">자업자득</span><span tts:ruby="text">일이삼</span>
</span>
<br/>
<span tts:ruby="container" tts:rubyAlign="end">
  <span tts:ruby="base">자업자득</span><span tts:ruby="text">일이삼</span>
</span>
<span tts:ruby="container" tts:rubyAlign="spaceBetween">
  <span tts:ruby="base">자업자득</span><span tts:ruby="text">일이삼</span>
</span>
</p>

렌더링 예 – 루비 정렬
TTML rubyAlign 스타일 속성

10.2.37 tts:rubyPosition

tts:rubyPosition 속성은 루비 텍스트의 위치를 블록 진행 치수에서 연관된 루비 베이스를 기준으로 지정하는 데 사용됩니다.

값: <annotation-position>
초깃값: outside
적용 대상: span, 단 계산값, 즉 tts:ruby의 계산값이 textContainer 또는 text인 경우에만 적용됩니다
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: rubyPosition 도출

이 속성과 연관된 스타일 속성은 인라인 영역의 상대 위치를 결정합니다. 이 영역은 루비 텍스트 컨테이너와 루비 텍스트 주석에서 생성되며, 연관된 베이스 텍스트 컨테이너와 베이스 텍스트를 기준으로 배치됩니다. 이때 <annotation-position>의 방향 의미가 적용됩니다.

이 속성을 지정한 span 요소에서 tts:ruby의 계산값이 textContainer이면, 연관된 스타일 속성의 루비 위치 의미가 생성되는 인라인 영역에 집합적으로 적용됩니다. 이 영역은 명시적 루비 텍스트 컨테이너와 그 구성 요소인 루비 텍스트 콘텐츠에서 생성됩니다.

이 속성을 지정한 span 요소에서 tts:ruby의 계산값이 text이면, 연관된 스타일 속성의 루비 위치 의미가 생성되는 인라인 영역에 집합적으로 적용됩니다. 이 영역은 해당 요소의 암묵적 루비 텍스트 컨테이너와 자체 루비 텍스트 콘텐츠에서 생성됩니다.

이 속성은 다음 조건에 해당하는 span 요소에 지정해서는 안 됩니다: tts:ruby의 계산값이 text이고, 해당 span 요소의 부모가 span 요소이며, 부모에서 tts:ruby의 계산값이 textContainer인 경우입니다. 지정하면(앞서 언급한 루비 텍스트 콘텐츠에), 이를 오류로 간주하며, 표시 처리에서 무시해야 합니다.

루비 텍스트 컨테이너 또는 루비 텍스트 주석의 절대 위치는 tts:writingMode 스타일 속성의 계산값에 따라 결정됩니다. 이 속성은 영향받는 콘텐츠가 배치되는 영역의 속성입니다; 특히, 다음에 열거된 매핑인 표 10-2 – 쓰기 모드별 절대 루비 위치 의미 매핑이 적용되며, 자세한 정의는 [CSS Ruby], §4.1을 따릅니다.

두 루비 텍스트 컨테이너가 같은 루비 베이스 컨테이너에 적용되면, 다음 경우를 오류로 간주합니다: 이 속성과 연관된 속성의 사용값으로 인해 두 루비 텍스트 컨테이너가 루비 베이스 컨테이너의 상대적으로 같은 쪽에 배치되는 경우입니다. 이 경우, 이 속성의 표시 의미는 이 명세에서 정의하지 않습니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: before.

표 10-2 – 쓰기 모드별 절대 루비 위치 의미 매핑
tts:rubyPosition lrtb rltb tbrl tblr
before over over right left
after under under left right

참고:

몽골 문자를 왼쪽에서 오른쪽으로 진행하는 세로줄에 배치할 때는, 루비 위치에 할당하는 초깃값을 outside 대신 after로 설정하는 것이 바람직할 수 있습니다. outside는 마지막 줄을 제외한 모든 줄에서 before로 해석됩니다. 이 경우, 작성자는 요소를 포함하여 이 속성의 기본 초깃값을 재정의할 수 있습니다. 해당 요소인 <initial tts:rubyPosition="after"/>를 문서의 styling 요소에 포함합니다.

다음 예제는 tts:rubyPosition 스타일을 보여 주며, 이를 통해 루비 위치의 결정이 쓰기 모드에 따라 달라지는 방식을 보여 줍니다. 이 예제는 [JLREQ]에 정의된 모노 루비를 사용한다는 점에 유의하십시오.

예제 조각 – 루비 위치
<region xml:id="left" tts:writingMode="tblr"/>
<region xml:id="middle" tts:writingMode="lrtb"/>
<region xml:id="right" tts:writingMode="tbrl"/>
...
<p region="left">
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">일</span>
    <span tts:ruby="text">일</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">이</span>
    <span tts:ruby="text">이</span>
  </span>삼사<br/>오육
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">칠</span>
    <span tts:ruby="text">칠</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">팔</span>
    <span tts:ruby="text">팔</span>
  </span>
</p>
<p region="middle">
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">일</span>
    <span tts:ruby="text">일</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">이</span>
    <span tts:ruby="text">이</span>
  </span>삼사<br/>오육
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">칠</span>
    <span tts:ruby="text">칠</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">팔</span>
    <span tts:ruby="text">팔</span>
  </span>
</p>
<p region="right">
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">일</span>
    <span tts:ruby="text">일</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="before">
    <span tts:ruby="base">이</span>
    <span tts:ruby="text">이</span>
  </span>삼사<br/>오육
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">칠</span>
    <span tts:ruby="text">칠</span>
  </span>
  <span tts:ruby="container" tts:rubyPosition="after">
    <span tts:ruby="base">팔</span>
    <span tts:ruby="text">팔</span>
  </span>
</p>

렌더링 예 – 루비 위치
TTML rubyPosition 스타일 속성

참고:

위 예제에서는 서식 지정을 돕기 위해 span 요소 안과 주변에 공백을 넣었습니다; 표시된 렌더링 예와 같은 결과를 얻으려면, 추가된 공백을 제거하여 렌더링 출력에 나타나지 않도록 해야 합니다.

10.2.38 tts:rubyReserve

tts:rubyReserve 속성은 영향받는 줄 영역에 적용할 추가 공간을 지정하는 데 사용됩니다. 이를 통해 블록 진행 치수에 충분한 공간을 확보하여 인라인 영역을 포함할 수 있게 합니다. 이 영역은 루비 텍스트 컨테이너에서 생성되며, 줄 영역의 경계 안에 배치됩니다.

참고:

작성자는 tts:rubyReserve 속성을 사용하여 블록 영역 안의 줄 영역에서 연속된 기준선들이 루비 텍스트 주석의 존재 여부와 관계없이 고정된 배치를 유지하도록 보장할 수 있습니다.

값: <ruby-reserve>
초깃값: none
적용 대상: p
상속 여부: 예
백분율: 이 요소의 글꼴 크기를 기준으로 합니다
애니메이션 가능 여부: 이산적
의미적 근거: rubyReserve 도출

이 속성의 값이 none이면, 루비 공간 예약이 적용되지 않습니다; 그렇지 않으면, 이 속성의 값은 위치 성분 뒤에 선택적 길이 성분이 오는 형태로 지정됩니다.

위치 성분이 before이면, 영향받는 줄 영역의 앞쪽 행간이 늘어납니다. 증가량은 사용값, 즉 길이 성분의 사용값에 따라 결정됩니다.

위치 성분이 after이면, 영향받는 줄 영역의 뒤쪽 행간이 늘어납니다. 증가량은 사용값, 즉 길이 성분의 사용값에 따라 결정됩니다.

위치 성분이 both이면, before와 after 위치의 의미가 모두 영향받는 각 줄 영역에 적용됩니다.

위치 성분이 outside이면, 현재 블록 영역에 줄 영역이 정확히 하나만 있는 경우 both 위치가 적용됩니다. 그렇지 않으면 before 위치의 의미가 현재 블록 영역의 첫 번째 줄 영역에 적용되고, after 위치의 의미가 현재 블록 영역의 다른 모든 줄 영역에 적용됩니다.

길이 성분은 증가량을 간접적으로 결정하는 데 사용되며, 이 증가량만큼 영향받는 줄 영역의 앞쪽 및 뒤쪽 행간이 늘어납니다. 길이 성분의 계산값은 스타일 속성의 계산값을 나타내는 것으로 간주됩니다. 이는 tts:fontSize 속성과 연관된 것으로, 가상의 루비 텍스트 콘텐츠가 p 요소에 실제로 존재할 경우의 값입니다.

길이 성분을 지정하지 않으면, 다음 속성과 연관된 스타일 속성의 값과 같은 것으로 간주해야 합니다: tts:fontSize. 이 값은 다음에 상속되는 값입니다: 가상의 루비 텍스트 컨테이너 또는 루비 텍스트 콘텐츠. 이는 그러한 콘텐츠가 실제로 존재한다고 가정한 경우이며, p 요소 안에 존재합니다. 이때 10.2.21.1 글꼴 크기의 특수 의미를 적용하여 이 상속값을 계산합니다.

<length> 성분을 지정하면, 음수가 아니어야 합니다.

tts:rubyReserve를 p 요소에 지정하고 그 요소에 루비 텍스트 콘텐츠가 포함되어 있으면, 예약된 행간이 위에서 설명한 대로 줄 영역에 적용됩니다. 그런 다음 실제 루비 텍스트 콘텐츠를 수용하는 데 필요한 추가 조정을 해당 행간에 수행합니다.

렌더링 예 – 루비 공간 예약
tts:rubyReserve 루비 없음 루비 있음
none TTML rubyReserve 스타일 속성: 'auto' TTML rubyReserve 스타일 속성: 'auto'
before TTML rubyReserve 스타일 속성: 'after' TTML rubyReserve 스타일 속성: 'after'
after TTML rubyReserve 스타일 속성: 'after' TTML rubyReserve 스타일 속성: 'after'
both TTML rubyReserve 스타일 속성: 'after' TTML rubyReserve 스타일 속성: 'after'
outside TTML rubyReserve 스타일 속성: 'after' TTML rubyReserve 스타일 속성: 'after'

10.2.39 tts:shear

tts:shear 속성은 스타일 속성을 지정하는 데 사용되며, 전단 변환을 가장 바깥쪽 블록 영역에 적용할지와 적용 방법을 결정합니다. 이 영역은 영향받는 요소에서 생성됩니다.

값: <percentage>
초깃값: 0%
적용 대상: p
상속 여부: 예
백분율: 본문 참조
애니메이션 가능 여부: 이산적
의미적 근거: shear 도출

이 속성이 적용되는 각 블록 영역에 대해, 2차원 전단 변환을 해당 블록 영역에 적용합니다. 이에 관해서는 10.4.5.3 전단 계산에 지정되어 있습니다.

다음 예제는 tts:shear 스타일을 보여 줍니다.

예제 조각 – 전단
<region xml:id="right" tts:writingMode="tbrl" tts:displayAlign="center" .../>
<region xml:id="left" tts:writingMode="tbrl" tts:displayAlign="center" .../>
...
<div>
  <p region="right" tts:shear="0%">
  산의<br/>
  최다<span tts:textCombine="all">1998</span>년
  </p>
  <p region="left" tts:shear="16.67%">
  산의<br/>
  최다<span tts:textCombine="all">1998</span>년
  </p>
</div>

렌더링 예 – 전단 - 세로쓰기 속 가로쓰기가 있는 세로줄
TTML shear 스타일 속성

참고:

위 예제에서 노란색 선은 특정 표시 처리기가 생성한 장식이며, 레이아웃 문제의 디버깅을 돕기 위한 것입니다. 이 선은 이 명세에서 정의하는 규범적 TTML 표시의 일부가 아닙니다. 여기서 장식은 (1) 바깥쪽 블록 영역의 경계를 나타냅니다. 이 영역은 region 요소에서 생성됩니다. 또한 (2)는 줄 영역 자식의 경계로, 바깥쪽 블록 영역의 자식이며, p 요소에서 생성됩니다.

이 예제는 전단(기울이기) 변환이 영향받는 바깥쪽 블록 영역에 적용되는 방식을 보여 줍니다. 이 영역은 p 요소에서 생성됩니다. 그러나 바깥쪽 블록 영역에 전단을 적용하려면, 해당 블록 영역에 할당할 수 있는 사용 가능한 거리, 즉 전단 변환 전의 최대 인라인 진행 치수 길이가 B*sin(θ)만큼 줄어듭니다. 여기서 B는 바깥쪽 블록 영역의 블록 진행 치수이고, θ는 전단 각도입니다. 이는 블록 영역이 단락의 바로 위 조상 블록 영역에 있는 콘텐츠 사각형 안에 들어가도록 하기 위한 것입니다.

10.2.40 tts:showBackground

tts:showBackground 속성은 영역의 배경을 표시할 시점에 대한 제약 조건을 지정하는 데 사용됩니다.

참고:

영역의 배경에는 (1) 배경색 및/또는 (2) 배경 이미지에서 생성되는 표시 흔적이 포함됩니다. 이는 둘 중 하나라도 영역에 적용되는 경우입니다.

값: "always" | "whenActive"
초깃값: always
적용 대상: region
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: showBackground 도출

영역이 시간적으로 활성 상태가 아니면, 배경은 렌더링되지 않습니다. 그러나 시간적으로 활성 상태이면, 다음이 적용됩니다:

  1. 이 속성의 값이 whenActive이면, 영역의 배경은 다음 경우에만 렌더링됩니다: 콘텐츠가 해당 영역으로 선택되고, 그 콘텐츠 역시 시간적으로 활성 상태인 경우입니다;

  2. 그렇지 않고 이 속성의 값이 always이면, 영역의 배경은 콘텐츠가 해당 영역으로 선택되는지와 관계없이 렌더링됩니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: always.

다음 예제는 tts:showBackground 스타일을 보여 줍니다.

예제 조각 – 배경 표시
<region xml:id="r1">
  <style tts:origin="0px 0px"/>
  <style tts:extent="265px 100px"/>
  <style tts:backgroundColor="black"/>
  <style tts:showBackground="always"/>
  <style tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:origin="205px 60px"/>
  <style tts:extent="290px 100px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:displayAlign="before"/>
  <style tts:textAlign="end"/>
  <style tts:showBackground="whenActive"/>
</region>

10.2.41 tts:textAlign

tts:textAlign 속성은 스타일 속성을 지정하는 데 사용되며, 포함하는 블록 영역 안에서 인라인 영역을 인라인 진행 방향으로 정렬하는 방식을 정의합니다.

값: "left" | "center" | "right" | "start" | "end" | "justify"
초깃값: start
적용 대상: p
상속 여부: 본문 참조
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: textAlign 도출

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: start.

다음 예제들은 tts:textAlign 스타일을 보여 줍니다.

예제 조각 – 텍스트 정렬
<region xml:id="r1">
  <style tts:extent="355px 43px"/>
  <style tts:origin="0px 0px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:textAlign="start"/>
</region>
<region xml:id="r2">
  <style tts:extent="355px 43px"/>
  <style tts:origin="0px 47px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
</region>
...
<p region="r1">
  아들이여, 재버워크를 조심하세요!<br/>
  물어뜯는 턱과 움켜잡는 발톱을요!
</p>
<p region="r2">
  접접새를 조심하고, 피하세요<br/>
  사납고 성난 밴더스내치를요!
</p>

렌더링 예 – 텍스트 정렬
TTML textAlign 스타일 속성

참고:

마지막 블록 영역의 마지막 줄 영역에 대한 텍스트 정렬은, 해당 영역을 생성한 p 요소에 대해, text-align-last 속성의 의미를 따릅니다. 이때 값은 relative이며, [XSL-FO 1.1], §7.16.10을 따릅니다.

10.2.42 tts:textCombine

세로 쓰기 모드가 적용되면, tts:textCombine 속성은 스타일 속성을 지정하는 데 사용됩니다. 이 속성은 영역으로 흐르는 콘텐츠에서 생성되는 글리프 영역에 적용되며, 여러 글리프 영역을 가로로 결합할지와 결합 방법을 결정하여, 주변 세로 텍스트의 한 줄에 해당하는 블록 진행 치수 안에 들어가도록 합니다. 가로 쓰기 모드가 적용되면, 이 속성은 표시 처리에서 무시됩니다.

결합 처리는 하나 이상의 기법을 사용하여 주변 세로 텍스트의 EM 정사각형 안에 시각적으로 결합하는 목표를 달성할 수 있습니다. 예를 들어 반각 변형 형태를 선택하거나, 합자를 선택하거나, 더 작은 글꼴 크기를 적용할 수 있습니다. 이 스타일 속성을 지원하는 구현은 최소한 반각 변형 형태를 사용할 수 있는 경우 이를 선택할 수 있어야 합니다. 이러한 기법 중 어느 것으로도 포함하는 줄 영역의 블록 진행 치수에서 목표 치수를 달성할 수 없으면, 적용 중인 줄 쌓기 전략이 허용하는 경우 포함하는 줄 영역의 해당 치수를 늘릴 수 있습니다.

값: <text-combine>
초깃값: none
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: textCombine 도출

이 속성의 지정값이 none이면, 결합 처리가 적용되지 않습니다. 이 속성의 지정값이 all이면, 영향받는 모든 문자를 결합하는 것이 좋습니다.

결합은 영향받는 모든 문자를 가로 쓰기 모드가 적용된 것처럼 처리한 후에 적용됩니다. 특히 양방향 처리, 합자, 글리프 대체 또는 유니코드 결합 문자의 결합이 사용되는 경우, 이들은 tts:textCombine 속성에서 지정한 결합 처리 전에 적용됩니다.

결합은 요소 경계, 양방향 경계 또는 글리프가 아닌 영역의 경계를 넘어서는 안 됩니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: none.

참고:

이 TTML 버전은 tts:textCombine 속성에 대해, 루비 컨테이너 문맥에서의 의미를 정의하지 않습니다. 따라서 콘텐츠 작성자는 특정 동작을 기대하지 않는 것이 좋습니다. 이는 적합한 표시 처리기가 tts:textCombine 속성을 루비 컨테이너 문맥에서 처리하는 경우에 해당합니다.

다음 예제는 tts:textCombine 스타일을 보여 줍니다.

예제 조각 – 텍스트 결합
<p region="tbrlLeft">あい
  <span tts:textCombine="none">AB34</span>三四
</p>
<p region="tbrlRight">あい
  <span tts:textCombine="all">AB34</span>三四
</p>

렌더링 예 – 텍스트 결합
TTML textCombine 스타일 속성

참고:

위 예제에서 가장 오른쪽 영역은 all 값을 사용하는 경우를 보여 줍니다. 여기서는 표시 처리기가 영향받는 문자의 반각 변형 글리프에 배율 조정을 적용하여, 결합된 텍스트가 주변 세로 텍스트와 같은 크기의 EM 정사각형 안에 들어가도록 했습니다.

10.2.43 tts:textDecoration

tts:textDecoration 속성은 스타일 속성을 지정하는 데 사용되며, 글리프 영역에 적용할 텍스트 장식 효과를 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다.

값: <text-decoration>
초깃값: none
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예, 단 특수 의미를 참조하십시오
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: textDecoration 도출

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: none.

참고:

위에서 이 속성의 값을 정의하는 데 사용한 구문은 값 성분 구문에 기반하며, 이는 [CSS2], §1.4.2.1에 정의되어 있습니다. 본질적으로, ||로 구분된 값 중 하나 이상이 속성 값에 임의의 순서로 나타날 수 있습니다. 예를 들면 "noUnderline overline lineThrough"입니다.

참고:

"none" 값을 지정하는 것은 "noUnderline noLineThrough noOverline"을 지정하는 것과 같습니다.

다음 예제는 tts:textDecoration 스타일을 보여 줍니다.

예제 조각 – 텍스트 장식
<region xml:id="r1">
  <style tts:extent="385px 82px"/>
  <style tts:origin="0px 0px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:padding="5px 2px"/>
  <style tts:textDecoration="underline"/>
</region>
...
<p region="r1">
  바다는 축축했어요<span tts:textDecoration="noUnderline"> 더없이 </span>축축할
  <span tts:textDecoration="noUnderline">
    만큼요,<br/>
    모래는 더없이 말라 있었어요.<br/>
    <span tts:textDecoration="lineThrough">아무것도 없었어요</span>
    당신은 <span tts:textDecoration="lineThrough">볼 수 없었어요</span>
    구름을 볼 수 없었어요<br/>
    하늘에 구름이 없었으니까요.
  </span>
</p>

렌더링 예 – 텍스트 장식
TTML textDecoration 스타일 속성
10.2.43.1 텍스트 장식의 특수 의미

이 속성과 연관된 속성의 계산값은 3-튜플로 구성되며, 각 항목은 각각 밑줄, 취소선 또는 윗줄 장식을 영향받는 텍스트에 적용할지를 나타냅니다. 또한 상속 의미를 적용할 때, 각 항목은 다른 항목과 독립적으로 상속되는 것으로 간주됩니다.

참고:

예를 들어, tts:textDecoration의 계산값이 div(구획) 요소에 적용되고, 그 값이 튜플 (noUnderline, lineThrough, overline)이며, 해당 div의 자식인 p(단락) 요소가 tts:textDecoration="noLineThrough"를 지정하면, p 요소에 적용되는 종합 계산값은 (noUnderline, noLineThrough, overline)입니다. 이 값은 이후 p 요소의 자식들에게 상속됩니다.

10.2.44 tts:textEmphasis

tts:textEmphasis 속성은 스타일 속성을 지정하는 데 사용되며, 글리프 영역에 적용할 텍스트 강조 효과를 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다.

값: <text-emphasis>
초깃값: none
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적(색상만)
의미적 근거: textEmphasis 도출

강조 스타일을 지정하지 않으면, 강조 스타일은 auto 스타일을 지정한 것처럼 해석해야 합니다. 강조 색상을 지정하지 않으면, 강조 색상은 current 색상을 지정한 것처럼 해석해야 합니다. 강조 위치를 지정하지 않으면, 강조 위치는 outside 위치를 지정한 것처럼 해석해야 합니다.

참고:

몽골 문자를 왼쪽에서 오른쪽으로 진행하는 세로줄에 배치할 때는, 강조 위치에 할당하는 초깃값을 outside 대신 after로 설정하는 것이 바람직할 수 있습니다. outside는 마지막 줄을 제외한 모든 줄에서 before로 해석됩니다. 이 경우, 작성자는 요소를 포함하여 이 속성의 기본 초깃값을 재정의할 수 있습니다. 해당 요소인 <initial tts:textEmphasis="none transparent after"/>를 문서의 styling 요소에 포함합니다.

다음 예제는 tts:textEmphasis 스타일을 보여 줍니다.

예제 조각 – 텍스트 강조
<p>
  <span tts:textEmphasis="filled circle before">꽃</span>
  <span tts:textEmphasis="filled dot before">보</span>
  <span tts:textEmphasis="filled sesame before">다</span>
  <span tts:textEmphasis="open circle before">는</span>
  <span tts:textEmphasis="open dot before">경</span>
  <span tts:textEmphasis="open sesame before">단</span>
  <br/>
  <span tts:textEmphasis="filled circle after">꽃</span>
  <span tts:textEmphasis="filled dot after">보</span>
  <span tts:textEmphasis="filled sesame after">다</span>
  <span tts:textEmphasis="open circle after">는</span>
  <span tts:textEmphasis="open dot after">경</span>
  <span tts:textEmphasis="open sesame after">단</span>
</p>

렌더링 예 – 텍스트 강조
TTML textEmphasis 스타일 속성

10.2.45 tts:textOrientation

tts:textOrientation 속성은 스타일 속성을 지정하는 데 사용되며, 생성되는 글리프 영역에 적용할 텍스트 방향을 정의합니다. 이 영역은 세로 쓰기 모드가 적용되는 영역으로 흐르는 콘텐츠에서 생성됩니다.

값: "mixed" | "sideways" | "upright"
초깃값: mixed
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: textOrientation 도출

이 스타일 속성의 표시 의미는 세로 쓰기 모드가 적용되는 경우에만 적용됩니다. 따라서 가로 쓰기 모드가 적용되면, 이 스타일 속성은 효과가 없습니다.

다음에서는 콘텐츠 문자와 연관된 글리프 영역을 세로 쓰기 모드에서 회전되는지 또는 회전되지 않는지에 따라 설명합니다. 이 결정은 각 콘텐츠 문자의 Vertical_Orientation에 따라 이루어지며, 이는 [UTR50]에 따라 결정됩니다.

이 속성의 값이 mixed이면, 회전되는 글리프 영역은 옆으로 눕혀지고, 회전되지 않는 글리프 영역은 똑바로 세워집니다. 여기서 옆으로 눕힘은 시계 방향으로 90° 회전함을 의미하고, 똑바로 세움은 회전하지 않음을 의미합니다.

참고:

[UTR50]에 따르면, 글리프 영역의 시각적 회전은 회전된 글리프 영역으로 대체하거나 아핀 회전 변환을 수행하여 글리프 영역의 윤곽선(또는 래스터 이미지)에 적용하는 방식으로 이루어질 수 있습니다. 어느 방식을 적용할지는 표시 처리 중 사용하는 특정 글꼴에 따라 결정됩니다.

이 속성의 값이 sideways이면, 모든 글리프 영역이 시계 방향으로 90° 회전됩니다.

이 속성의 값이 upright이면, 모든 문자는 세로 방향 값이 U인 것으로 간주되며, 이 경우 어떤 글리프 영역도 회전되지 않습니다. 이 경우 회전된 글리프 영역으로의 잠재적인 대체와 아핀 회전 변환의 적용이 비활성화되며, 렌더링되는 글리프 영역은 회전되지 않은 형태입니다. 또한 양방향 처리에서 이 값은 영향받는 모든 문자를 강한 왼쪽에서 오른쪽 방향으로 처리하게 합니다. 즉, tts:direction에 ltr를, tts:unicodeBidi에 override를 적용한 것처럼 처리합니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: mixed.

다음 예제는 tts:textOrientation 스타일을 보여 줍니다.

예제 조각 – 텍스트 방향
<region xml:id="vertical" tts:writingMode="tblr"/>
...
<p region="vertical">
  <span tts:textOrientation="mixed">A</span>
  <span tts:textOrientation="upright">B</span>
</p>

렌더링 예 – 텍스트 방향
TTML textOrientation 스타일 속성

10.2.46 tts:textOutline

tts:textOutline 속성은 스타일 속성을 지정하는 데 사용되며, 선택되는 글리프에 적용할 텍스트 윤곽선 효과를 글리프 영역에 대해 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다.

값: <text-outline>
초깃값: none
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 이 요소의 글꼴 크기를 기준으로 합니다
애니메이션 가능 여부: 이산적; 연속적(색상만)
의미적 근거: textOutline 도출

이 속성의 값은 선택적 <color> 항 뒤에 하나 또는 두 개의 <length> 항이 오는 형태로 구성됩니다. 색상 항이 있으면 윤곽선 색상을 나타냅니다; 색상 항이 없으면 tts:color의 계산값이 적용됩니다. 첫 번째 길이 항은 윤곽선 두께를 나타내고, 두 번째 길이 항이 있으면 흐림 반경을 나타냅니다.

윤곽선 두께 또는 흐림 반경에 상대 <length> 값을 지정하면, 참조하는 글꼴 크기 또는 계산된 셀 크기의 높이 성분을 기준으로 해석됩니다. 셀 크기는 계산된 셀 크기를 따릅니다.

두께와 흐림 반경을 표현하는 데 사용하는 <length> 값은 음수가 아니어야 합니다.

흐림 반경을 지정하지 않으면, 즉 <length> 항이 하나만 있으면, 계산값 0px이 적용됩니다.

참고:

<length>를 셀 단위로 표현하여 tts:textOutline 값에 사용하면, 셀의 높이가 적용됩니다. 예를 들어 텍스트 윤곽선 두께가 0.1c로 지정되고, 셀 해상도가 20 × 10이며, 루트 컨테이너 영역의 크기가 640 × 480이면, 윤곽선 두께의 명목값은 480 / 10 * 0.1 픽셀, 즉 4.8px이며, 이는 래스터화 효과를 고려하지 않은 값입니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: none.

다음 예제는 tts:textOutline 스타일을 보여 줍니다.

예제 조각 – 텍스트 윤곽선
<region xml:id="r1">
  <style tts:backgroundColor="transparent"/>
  <style tts:color="yellow"/>
  <style tts:textOutline="black 2px 0px"/>
  <style tts:fontFamily="proportionalSansSerif"/>
  <style tts:fontSize="24px"/>
</region>
...
<p>
  작은 악어는 어쩌면 그렇게도<br/>
  반짝이는 꼬리를 아름답게 가꾸고,<br/>
  나일강의 물을 부을까요<br/>
  황금빛 비늘 하나하나에!<br/>
  얼마나 즐겁게 웃는 듯한지,<br/>
  얼마나 가지런히 발톱을 펼치는지,<br/>
  작은 물고기들을 반겨 맞아요,<br/>
  부드럽게 미소 짓는 턱으로!
</p>

렌더링 예 – 텍스트 윤곽선
textOutline 스타일 속성

10.2.47 tts:textShadow

tts:textShadow 속성은 스타일 속성을 지정하는 데 사용되며, 선택되는 글리프에 적용할 하나 이상의 텍스트 그림자 장식을 글리프 영역에 대해 정의합니다. 이 영역은 영역으로 흐르는 콘텐츠에서 생성됩니다.

여러 텍스트 그림자가 적용되면, 지정된 순서대로 해당 글리프 영역을 그리기 직전에 그림자를 그립니다.

값: <text-shadow>
초깃값: none
적용 대상: span; 다음 참고도 참조하십시오
상속 여부: 예
백분율: 이 요소의 글꼴 크기를 기준으로 합니다
애니메이션 가능 여부: 이산적; 연속적(색상만)
의미적 근거: textShadow 도출

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: none.

예제 조각 – 텍스트 그림자
<style xml:id="s1"
  tts:backgroundColor="black"
  tts:color="white"
  tts:lineHeight="125%"
  tts:textAlign="center"/>
...
<p style="s1">
<span tts:padding="1%">
저는 그것을 채소와 함께 내놓아요, 그런 
<span tts:textShadow="10% -20% 5% lime">그늘진 풍경 속에서요,</span><br/>
그리고 그것을 불을 붙이는 데 사용해요:</span>
</p>

렌더링 예 – 텍스트 그림자
TTML textShadow 스타일 속성

10.2.48 tts:unicodeBidi

tts:unicodeBidi 속성은 스타일 속성을 지정하는 데 사용되며, 유니코드 양방향 알고리즘에 따라 명시적 방향 임베딩, 재정의 또는 격리를 정의합니다.

값: "normal" | "embed" | "bidiOverride" | "isolate"
초깃값: normal
적용 대상: p, span
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: unicodeBidi 도출

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: normal.

다음 예제는 tts:unicodeBidi 스타일을 보여 줍니다.

예제 조각 – 유니코드 양방향성
<region xml:id="r1">
  <style tts:extent="265px 84px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:textAlign="center"/>
</region>
...
<p region="r1">
  작은 새들이 연주하고 있어요<br/>
  바닷가에서 백파이프를요,<br/>
  <span tts:unicodeBidi="bidiOverride" tts:direction="rtl">관광객들이 코를 고는 그곳에서요.</span>
</p>

렌더링 예 – 유니코드 양방향성
TTML unicodeBidi 스타일 속성

10.2.49 tts:visibility

tts:visibility 속성은 스타일 속성을 지정하는 데 사용되며, 생성된 영역이 시각적 표시 매체에 렌더링될 때 보이는지 여부를 정의합니다.

값: "visible" | "hidden"
초깃값: visible
적용 대상: body, div, image, p, region, span
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: visibility 도출

tts:visibility 스타일은 콘텐츠 레이아웃이나 합성에 영향을 주지 않으며, 합성된 콘텐츠가 보이는지만 결정합니다.

이 속성과 연관된 속성의 계산값이 visible이면, 이 요소에서 생성되는 영역은 시각 매체에 표시될 때 보이도록 렌더링됩니다. 계산값이 hidden이면, 보이도록 렌더링되지 않습니다. 즉, 숨겨집니다. 그러나 앞서 설명한 내용에도 불구하고, 숨겨진 요소의 자손 요소는 이 속성의 계산값이 해당 자손에서 visible이면 보이도록 렌더링됩니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: visible.

다음 예제는 tts:visibility 스타일을 보여 줍니다.

예제 조각 – 가시성
<region xml:id="r1">
  <style tts:extent="398px 121px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style/>
</region>
...
<p region="r1" dur="4s">
  <span tts:visibility="hidden">
    <set begin="1s" tts:visibility="visible"/>
    더 이상하고
  </span>
  <span tts:visibility="hidden">
    <set begin="2s" tts:visibility="visible"/>
    또
  </span>
  <span tts:visibility="hidden">
    <set begin="3s" tts:visibility="visible"/>
    더 이상해요!
  </span>
</p>

렌더링 예 – 가시성
TTML visibility 스타일 속성 - [0,1)
TTML visibility 스타일 속성 - [1,2)
TTML visibility 스타일 속성 - [2,3)
TTML visibility 스타일 속성 - [3,4)

10.2.50 tts:wrapOption

tts:wrapOption 속성은 스타일 속성을 지정하는 데 사용되며, 영향받는 요소의 문맥에서 자동 줄 바꿈을 적용할지 정의합니다.

값: "wrap" | "noWrap"
초깃값: wrap
적용 대상: span
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: wrapOption 도출

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: wrap.

다음 예제는 tts:wrapOption 스타일을 보여 줍니다.

예제 조각 – 줄 바꿈 옵션
<region xml:id="r1">
  <style tts:extent="192px 117px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:displayAlign="after"/>
  <style tts:overflow="hidden"/>
  <style tts:wrapOption="noWrap"/>
</region>
...
<p>
  말씀드릴 수 있는 것은 모두 말씀드릴게요:<br/>
  할 이야기는 별로 없어요.<br/>
  저는 아주아주 나이 든 노인을 보았어요,<br/>
  문 위에 앉아 있었지요.
</p>

렌더링 예 – 줄 바꿈 옵션
TTML wrapOption 스타일 속성

10.2.51 tts:writingMode

tts:writingMode 속성은 스타일 속성을 지정하는 데 사용되며, 블록 및 인라인 진행 방향을 정의합니다. 이 방향은 영역 안에 블록 및 인라인 영역을 쌓는 데 사용됩니다.

값: "lrtb" | "rltb" | "tbrl" | "tblr" | "lr" | "rl" | "tb"
초깃값: lrtb
적용 대상: region
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: writingMode 도출

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 다음 값을 사용해야 합니다: lrtb.

참고:

인라인 진행 방향이 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽인 쓰기 모드는 다음과 같이 부릅니다: 가로 쓰기 모드. 반면, 인라인 진행 방향이 위에서 아래인 쓰기 모드는 세로 쓰기 모드라고 합니다.

다음 예제는 tts:writingMode 스타일을 보여 줍니다.

예제 조각 – 쓰기 모드
<tt ... xml:lang="en">
...
<region xml:id="top" tts:origin="10% 10%" tts:extent="55% 10%"
  tts:writingMode="rltb"/>
<region xml:id="right" tts:origin="70% 10%" tts:extent="10% 80%"
  tts:writingMode="tbrl"/>
...
<p region="top"><span xml:lang="ar">국제화 활동،</span> W3C</p>    
<p region="right">안녕하세요 <span xml:lang="ja">여러분、<br/>안녕하세요</span></p>    
...
</tt>

렌더링 예 – 쓰기 모드
TTML writingMode 스타일 속성

참고:

이 예제에서는 텍스트 콘텐츠의 자연어를 식별하기 위해 여러 xml:lang 속성을 사용합니다. tts:writingMode 속성을 보여 주는 데 기술적으로 필수는 아니지만, 여러 자연어로 된 콘텐츠가 포함된 마크업에서는 명시적 언어 식별을 사용하는 것이 권장됩니다.

10.2.52 tts:zIndex

tts:zIndex 속성은 스타일 속성을 지정하는 데 사용되며, 영역들이 겹치는 경우 앞에서 뒤로의 순서를 정의합니다.

값: "auto" | <integer>
초깃값: auto
적용 대상: region
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적
의미적 근거: zIndex 도출

두 영역이 같은 Z-index 값과 연관되어 있고, 그 영역들이 공간상 겹치면, 어휘적으로 뒤에 있는 요소에서 생성된 영역을 어휘적으로 앞에 있는 요소에서 생성된 영역 위에 렌더링해야 합니다. 여기서 어휘 순서는 문서 인스턴스의 후위 순회로 정의됩니다.

auto 값의 의미는 [XSL-FO 1.1], §7.30.18에 정의된 것과 같으며, tt 요소가 루트 쌓임 맥락을 형성하는 것으로 간주됩니다.

이 속성과 연관된 속성의 계산값이 지원되지 않으면, 표시 처리기는 가장 가까운 지원 값을 사용해야 합니다.

참고:

이 문맥에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가 계산된 z-index와 지원되는 z-index 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, 0에 가장 가까운 값, 즉 현재 쌓임 맥락의 기본 쌓임 수준에 가장 가까운 값을 사용합니다.

다음 예제는 tts:zIndex 스타일을 보여 줍니다.

예제 조각 – Z 인덱스
<region xml:id="r1">
  <style tts:origin="0px 0px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:zIndex="0"/>
</region>
<region xml:id="r2">
  <style tts:origin="100px 60px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
  <style tts:zIndex="1"/>
</region>
<region xml:id="r3">
  <style tts:origin="0px 120px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="black"/>
  <style tts:color="white"/>
  <style tts:zIndex="2"/>
</region>
<region xml:id="r4">
  <style tts:origin="100px 180px"/>
  <style tts:extent="400px 100px"/>
  <style tts:padding="5px"/>
  <style tts:backgroundColor="red"/>
  <style tts:color="white"/>
  <style tts:textAlign="end"/>
  <style tts:zIndex="3"/>
</region>
...
<p region="r1">
  저는 그의 정원을 지나며 한쪽 눈으로 보았어요,<br/>
  부엉이와 표범이 파이를 나누어 먹는 모습을요.
</p>
<p region="r2">
  표범은 파이 껍질과 육즙과 고기를 가져갔고,<br/>
  부엉이는 그 대접의 자기 몫으로 접시를 받았어요.
</p>
<p region="r3">
  파이를 다 먹고 나자, 부엉이는 호의로,<br/>
  숟가락을 주머니에 넣어도 된다는 친절한 허락을 받았어요:
</p>
<p region="r4">
  한편 표범은 나이프와 포크를 받았어요<br/>
  으르렁거리며,<br/>
  그리고 연회를 마무리했어요...
</p>

렌더링 예 – Z 인덱스
TTML zIndex 스타일 속성

10.2.53 tta:gain

tta:gain 속성은 오디오 스타일 속성을 지정하는 데 사용되며, 해당 오디오 콘텐츠에 적용할 이득 배율을 결정합니다. 이 배율은 이 속성이 지정된 요소의 활성 지속 시간 동안 적용됩니다.

값: <number>
초깃값: 1
적용 대상: audio, body, div, p, span
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적

이 속성의 지정값이 [-1,1] 구간에 포함되지 않으면, 이 속성과 연관된 속성의 계산값은 이 유계 구간으로 제한됩니다.

이 속성과 연관된 속성의 계산값이 음수이면, 이득은 해당 계산값의 절댓값으로 설정되고 위상 반전이 적용됩니다.

이득이 0이면 활성 오디오 콘텐츠가 완전히 음소거됩니다. 이득이 1이면 활성 오디오 콘텐츠의 진폭이 변경되지 않습니다. 그렇지 않으면 이득은 0보다 크고 1보다 작으며, 이 경우 상대 감쇠가 결합된 활성 오디오 콘텐츠에 적용됩니다. 이 감쇠는 [0,1] 구간에서 선형입니다.

다음 예제는 tta:gain 스타일을 보여 줍니다.

예제 조각 – 이득
<div>
  <audio src="#track1" tta:gain="0.5"/>
  <p tta:gain="0.3">
    <audio src="#track2" tta:gain="0.8"/>
  </p>
</div>

참고:

이 예제에서는 두 오디오 소스인 track1과 track2가 활성 상태입니다. div 요소는 하나의 활성 오디오 트랙을 자식 요소에 출력으로 제공합니다. 이 자식은 p이며, 자식 p는 두 번째 활성 오디오 트랙을 결합하여 자체 자식들에게 전달할 출력을 구성합니다. 또한 각 소스 오디오와 p의 출력에 서로 다른 이득이 지정되어, 최종 출력은 0.3[0.5(track1) + 0.8(track2)]가 됩니다.

참고:

이 속성이 나타내는 스타일 속성의 의미는 [WEBAUDIO], §2.7에 정의된 의미에 기반합니다. 해당 속성이 지정된 요소는 오디오 그래프에 GainNode를 생성하며, 이 노드의 gain 속성은 같은 계산값을 갖습니다. 이 노드의 입력은, 콘텐츠 요소가 오디오 생성 요소가 아닌 경우, 해당 요소의 부모 요소에서 출력되는 오디오와 모든 자식 오디오 생성 요소의 결합된(선형 합산된) 오디오 출력을 합한 것입니다. 그렇지 않은 경우, 즉 오디오 생성 요소의 경우, 입력은 해당 요소에서 생성한 오디오입니다.

10.2.54 tta:pan

tta:pan 속성은 오디오 스타일 속성을 지정하는 데 사용되며, 해당 오디오 콘텐츠에 적용할 스테레오 패닝 벡터를 결정합니다. 이 벡터는 이 속성이 지정된 요소의 활성 지속 시간 동안 적용됩니다.

값: <number>
초깃값: 0
적용 대상: audio, body, div, p, span
상속 여부: 아니요
백분율: 해당 없음
애니메이션 가능 여부: 이산적; 연속적

이 속성의 지정값이 [-1,1] 구간에 포함되지 않으면, 이 속성과 연관된 속성의 계산값은 이 유계 구간으로 제한됩니다.

이 속성과 연관된 속성의 계산값이 음수이면, 패닝 방향은 중앙에서 왼쪽입니다. 패닝 값이 0이면 활성 오디오 콘텐츠의 스테레오 방향성이 변경되지 않습니다. 그렇지 않으면 패닝 값은 양수이며, 이 경우 패닝 방향은 중앙에서 오른쪽입니다. 이때 -1 값은 완전히 왼쪽을 나타내고, 1 값은 완전히 오른쪽을 나타냅니다.

다음 예제는 tta:pan 스타일을 보여 줍니다.

예제 조각 – 패닝
<div>
  <audio src="#track1" tta:pan="0.5"/>
  <p tta:pan="0.3">
    <audio src="#track2" tta:pan="0.8"/>
  </p>
</div>

참고:

이 예제에서는 두 오디오 소스인 track1과 track2가 활성 상태입니다. div 요소는 하나의 활성 오디오 트랙을 자식 요소에 출력으로 제공합니다. 이 자식은 p이며, 자식 p는 두 번째 활성 오디오 트랙을 결합하여 자체 자식들에게 전달할 출력을 구성합니다. 또한 각 소스 오디오와 p의 출력에 서로 다른 패닝 값이 지정되어, 최종 출력 패닝은 0.3[0.5(track1) + 0.8(track2)]가 됩니다.

참고:

이 속성이 나타내는 스타일 속성의 의미는 [WEBAUDIO], §2.21에 정의된 의미에 기반합니다. 해당 속성이 지정된 요소는 오디오 그래프에 StereoPannerNode를 생성하며, 이 노드의 pan 속성은 같은 계산값을 갖습니다. 이 노드의 입력은, 콘텐츠 요소가 오디오 생성 요소가 아닌 경우, 해당 요소의 부모 요소에서 출력되는 오디오와 모든 자식 오디오 생성 요소의 결합된(선형 합산된) 오디오 출력을 합한 것입니다. 그렇지 않은 경우, 즉 오디오 생성 요소의 경우, 입력은 해당 요소에서 생성한 오디오입니다.

10.2.55 tta:pitch

tta:pitch 속성은 오디오 스타일 속성을 지정하는 데 사용되며, 영향받는 콘텐츠에 음성 합성이 활성화되면 음성의 음높이를 결정합니다

값: <pitch>
초깃값: 0%
적용 대상: span
상속 여부: 예
백분율: 입력 오디오의 음높이를 기준으로 합니다
애니메이션 가능 여부: 없음

다음 예제는 tta:pitch 스타일을 보여 줍니다.

예제 조각 – 음높이
<p>상대 음높이 조정을 <span tta:pitch="+10hz">이</span> 단어에 적용합니다.</p>

참고:

이 속성이 나타내는 스타일 속성의 의미는 [SSML 1.0] §3.2.4에 정의된 의미에서 도출됩니다. 여기서는 prosody 요소에 계산값과 같은 pitch 속성을 지정한 것과 동등한 처리가 발화되는 문자 콘텐츠에 적용됩니다.

10.2.56 tta:speak

tta:speak 속성은 오디오 스타일 속성을 지정하는 데 사용되며, 영향을 받는 콘텐츠에 대해 음성 합성을 활성화할지 여부와, 활성화하는 경우 적용할 발화 속도를 결정합니다.

값: "none" | "normal" | "fast" | "slow"
초깃값: none
적용 대상: span
상속 여부: 예
백분율: 해당 없음
애니메이션 가능 여부: 없음

이 속성의 값이 none이면 영향을 받는 콘텐츠에 대해 음성 합성이 비활성화됩니다. 그렇지 않고, 이 속성의 값이 normal, fast 또는 slow이면, 음성 합성이 각각 보통, 빠른 또는 느린 발화 속도로 활성화됩니다.

다음 예제는 tta:speak 스타일을 보여 줍니다.

예제 조각 – 발화
<p>소리 내어 <span tta:speak="normal">이</span> 단어를 읽어 주세요.</p>

참고:

이 속성이 나타내는 스타일 속성의 의미는 [SSML 1.0] §3.2.4에 정의된 의미에서 유래하며, prosody 요소의 rate 속성이 계산값과 같은 경우에 해당하는 처리가 발화되는 문자 콘텐츠에 적용됩니다.

10.2.56.1 발화의 특수 의미

어떤 span 요소 또는 익명 span S의 tta:speak 계산값이 none이 아니면,

  1. S에 자식 audio 요소 A가 있고 A가 소스 오디오 리소스를 참조 데이터 임베딩 또는 소스 지정 데이터 임베딩으로 참조하지 않으면, 음성 데이터 리소스에 대한 참조 데이터 임베딩을 통한 참조가 암시됩니다;

  2. S의 자식 중 audio 요소가 없고, S의 조상 중 오디오 생성 요소로서 참조하는 오디오 리소스의 소스가 음성 데이터 리소스인 요소가 없으면, 자식 audio 요소가 암시되며, 이 요소는 음성 데이터 리소스를 참조 데이터 임베딩으로 참조합니다.

    참고:

    반면, S의 어떤 조상이 오디오 생성 요소이고 참조하는 오디오 리소스의 소스가 해당 음성 데이터 리소스이면, 음성 오디오 샘플 중 S에서 합성된 샘플은 해당 음성 데이터 리소스와 결합(선형 합산)되도록 의도되며, 이 결합은 오디오 프레젠테이션 컨텍스트 중 해당 조상 요소의 컨텍스트에서 이루어집니다.

다음 예제는 위의 두 경우 중 첫 번째 경우를 보여 줍니다.

예제 조각 – 암시된 오디오 소스를 사용하는 발화
<span tta:speak="normal">
  <audio/>
  발화되는 텍스트
</span>

다음 예제는 위의 경우 중 두 번째 경우를 보여 줍니다.

예제 조각 – 암시된 오디오를 사용하는 발화
<span tta:speak="normal">
  발화되는 텍스트
</span>

다음 조각은 앞의 두 예제 각각에 위의 특수 의미를 적용하여 얻는 것과 동등한 결과를 보여 주며, 설명을 위해 서식을 보기 쉽게 만드는 데 필요한 추가 공백을 넣었습니다.

예제 조각 – 동등한 발화
<span tta:speak="normal">
  <audio src="http://www.w3.org/ns/ttml/resource/#speech"/>
  발화되는 텍스트
</span>

10.3 스타일 지정 값 표현식

스타일 속성값에는 다음 표현식이 사용됩니다:

10.3.1 <alpha>

<alpha> 표현식은 불투명도 값을 표현하는 데 사용되며, 0은 완전히 투명함을, 1은 완전히 불투명함을 의미합니다.

구문 표현 – <alpha>
<alpha>
  : float

위의 구문 표현에서 구문 요소 float는 어휘적 표현을 [XML Schema Part 2], §3.2.4.1에 정의된 대로 따라야 합니다. 표현된 값이 0.0보다 작으면, 0.0과 같은 것으로 해석해야 합니다; 마찬가지로, 표현된 값이 1.0보다 크면, 1.0으로 해석해야 합니다. NaN 값은 0.0으로 해석해야 합니다.

<alpha>의 지정값은 NaN이거나, 0보다 작거나, 1보다 크지 않도록 하는 것이 좋습니다.

프레젠테이션 처리기가 특정한 유효 불투명도 값을 지원하지 않으면, 해당 값을 가장 가까운 지원 값과 같은 것으로 해석해야 합니다.

참고:

이 컨텍스트에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가, 계산된 불투명도와 지원되는 불투명도 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, 0에서 가장 먼 값, 즉 가장 큰 불투명도를 사용합니다.

10.3.2 <annotation-color>

<annotation-color> 표현식은 루비 또는 강조 표시와 같은 텍스트 주석 표시의 색상을 표현하는 데 사용됩니다.

구문 표현 – <annotation-color>
<annotation-color>
  : "current"
  | <color>
current

영향을 받는 텍스트의 tts:color 계산값과 같습니다.

<color>

지정된 색상입니다.

구현이 주석 색상 값을 인식하거나 달리 구별하지 못하면, current 스타일이 지정된 것처럼 해석해야 합니다; 따라서, 구현 중 텍스트 주석 표시를 지원하는 구현은 최소한 current 값을 지원해야 합니다.

10.3.3 <annotation-position>

<annotation-position> 표현식은 루비 또는 강조 표시와 같은 텍스트 주석 표시의 위치를 표현하는 데 사용됩니다.

구문 표현 – <annotation-position>
<annotation-position>
  : "before"
  | "after"
  | "outside"
before

영향을 받는 글리프 영역의 앞쪽 가장자리 방향입니다. 가로쓰기 모드가 적용되면, 글리프 영역의 위쪽 방향입니다. 세로쓰기 모드가 적용되면, 오른쪽 또는 왼쪽 방향인 글리프 영역의 가장자리 중 하나이며, 이는 tts:writingMode가 각각 tbrl 또는 tblr로 결정되는지에 따라 정해집니다.

after

영향을 받는 글리프 영역의 뒤쪽 가장자리 방향입니다. 가로쓰기 모드가 적용되면, 글리프 영역의 아래쪽 방향입니다. 세로쓰기 모드가 적용되면, 왼쪽 또는 오른쪽 방향인 글리프 영역의 가장자리 중 하나이며, 이는 tts:writingMode가 각각 tbrl 또는 tblr로 결정되는지에 따라 정해집니다.

outside

before와 같은 경우는 (1) 유일한 줄 영역 또는 (2) 첫 번째 줄 영역인 경우이며, 이 줄 영역은 마지막 블록 영역에 속하고 해당 블록 영역은 주석이 있는 텍스트를 포함하는 p 요소가 생성합니다; 그 밖의 경우에는 after와 같습니다.

구현이 주석 위치 값을 인식하거나 달리 구별하지 못하는 경우, before 위치가 지정된 것처럼 해석해야 합니다; 따라서, 구현 중 텍스트 주석 표시를 지원하는 구현은 최소한 before 값을 지원해야 합니다.

10.3.4 <border>

<border> 표현식은 하나 이상의 테두리 스타일 구성 요소 표현식을 표현하는 데 사용됩니다.

구문 표현 – <border>

테두리 스타일 구성 요소 중 적어도 하나가 있어야 하며, 예를 들면 <border-style> 구성 요소의 값이 none인 경우입니다. 구성 요소의 순서는 중요하지 않습니다.

10.3.5 <border-color>

<border-color> 표현식은 하나 이상의 테두리 색상을 표현하는 데 사용됩니다.

구문 표현 – <border-color>
<border-color>
  : <color>

10.3.6 <border-radii>

<border-radii> 표현식은 하나 이상의 테두리 반지름을 표현하는 데 사용됩니다.

구문 표현 – <border-radii>
<border-radii>
  : "radii(" <lwsp>? <length> ( <lwsp>? "," <lwsp>? <length> )? <lwsp>? ")"

두 개의 <length> 표현식이 지정되면, 첫 번째 길이는 인라인 진행 치수(콘텐츠의 경우) 또는 가로 방향(영역의 경우)의 사분 타원 반지름에 해당하며, 두 번째 길이가 있으면 그 길이는 블록 진행 치수(콘텐츠의 경우) 또는 세로 방향(영역의 경우)의 사분 타원 반지름에 해당합니다. 길이가 하나만 있으면, 같은 값을 갖는 두 길이가 지정된 것처럼 해석합니다.

10.3.7 <border-style>

<border-style> 표현식은 하나 이상의 테두리 스타일을 표현하는 데 사용됩니다.

구문 표현 – <border-style>
<border-style>
  : "none"
  | "dotted"
  | "dashed"
  | "solid"
  | "double"

dotted, dashed 및 double의 해석은 구현에 따라 달라지는 것으로 간주합니다.

구현이 이러한 테두리 스타일 값 중 하나를 인식하거나 달리 구별하지 못하면, solid 스타일이 지정된 것처럼 해석해야 합니다; 따라서, 구현 중 테두리를 지원하는 구현은 최소한 solid 값을 지원해야 합니다.

10.3.8 <border-thickness>

<border-thickness> 표현식은 하나 이상의 테두리 두께를 표현하는 데 사용됩니다.

구문 표현 – <border-thickness>
<border-thickness>
  : "thin"
  | "medium"
  | "thick"
  | <length>

thin, medium 및 thick의 해석은 구현에 따라 달라지는 것으로 간주합니다; 다만, 결정된 길이는 다음 제약을 따라야 합니다: thickness(thin) < thickness(medium); thickness(medium) < thickness(thick).

테두리 두께가 <length>로 표현되면, 백분율 값의 형식이어서는 안 됩니다; 즉, 스칼라 값의 형식이어야 합니다.

10.3.9 <color>

<color> 표현식은 이름 있는 색상, 정확한 RGB 색상 삼중항, 또는 정확한 RGBA 색상 튜플을 지정하는 데 사용되며, 알파 구성 요소가 표현된 경우, 불투명도 100%에서 최댓값(255)이고 불투명도 0%에서 최솟값(0)입니다. 적용되는 색 공간은 [SRGB]에 정의되어 있습니다.

구문 표현 – <color>
<color>
  : "#" rrggbb
  | "#" rrggbbaa
  | "rgb(" r-value "," g-value "," b-value ")"
  | "rgba(" r-value "," g-value "," b-value "," a-value ")"
  | <named-color>

rrggbb
  :  <hex-digit>{6}

rrggbbaa
  :  <hex-digit>{8}

r-value | g-value | b-value | a-value
  : <lwsp>? component-value <lwsp>? 

component-value
  : <non-negative-integer>                    // 유효 범위: [0,255]

RGB 구성 요소 값을 표현할 때 이러한 값에는 알파가 미리 곱해져 있지 않은 것으로 간주합니다.

완전히 불투명하거나 완전히 투명하지 않은 알파 또는 불투명도 값이 적용되도록 프레젠테이션 처리를 수행하는 경우, 합성 함수의 의미는 [SRGB] 색 공간을 합성 함수의 입력과 출력 모두에 사용하는 것을 기준으로 정의됩니다.

참고:

명시된 합성 의미에 [SRGB]를 사용하는 것은 실제 처리기가 내부 또는 외부 목적을 위해 다른 색 공간을 사용하는 것을 막으려는 의도가 아닙니다. 예를 들어, 프레젠테이션 처리기는 최종적으로 여기서 사용하는 SRGB 값을 텔레비전 장치에 렌더링하기 위해 YUV 색 공간으로 변환할 수 있습니다.

프레젠테이션 처리기가 특정한 유효 색상 또는 알파 값을 지원하지 않으면, 해당 값을 가장 가까운 지원 값과 같은 것으로 해석해야 합니다.

참고:

이 컨텍스트에서 가장 가까운 지원 값이라는 표현은 유클리드 거리가, RGB 색 공간에서 계산된 색상 및 알파와 지원되는 색상 및 알파 사이에서 최소가 되는 값을 의미합니다. 가장 가까운 지원 값이 여러 개이고 계산값과의 거리가 같으면, 불투명한 검은색 rgba(0,0,0,255)과의 거리가 가장 작은 값, 즉 불투명한 검은색에 가장 가까운 값을 사용합니다.

10.3.10 <digit>

<digit>는 정수 및 다른 유형의 숫자 또는 토큰을 표현하는 데 사용됩니다.

구문 표현 – <digit>
<digit>
  : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

10.3.11 <emphasis-color>

<emphasis-color> 표현식은 텍스트 강조 표시의 색상을 표현하는 데 사용됩니다.

구문 표현 – <emphasis-color>
<emphasis-color>
  : <annotation-color>

10.3.12 <emphasis-position>

<emphasis-position> 표현식은 텍스트 강조 표시의 위치를 표현하는 데 사용됩니다.

구문 표현 – <emphasis-position>
<emphasis-position>
  : <annotation-position>

10.3.13 <emphasis-style>

<emphasis-style> 표현식은 텍스트 강조 표시의 스타일을 표현하는 데 사용됩니다.

구문 표현 – <emphasis-style>
<emphasis-style>
  : "none"
  | "auto" 
  | ( "filled" | "open" ) || ( "circle" | "dot" | "sesame" )
  | <quoted-string>

텍스트 강조 스타일 값의 의미는 다음과 같이 정의됩니다:

none

텍스트 강조 표시가 없습니다.

auto

세로쓰기 모드가 적용되면 filled sesame와 같습니다; 그렇지 않으면, filled circle과 같습니다.

filled

강조 표시를 강조 색상으로 채웁니다.

open

강조 표시를 채우지 않습니다. 즉, 윤곽선을 강조 색상으로 그리지만 내부는 채우지 않습니다.

circle

강조 표시는 원입니다. 채워진 경우 U+25CF '●'와 같고, 비어 있는 경우 U+25CB '○'와 같습니다

dot

강조 표시는 점입니다. 채워진 경우 U+2022 '•'와 같고, 비어 있는 경우 U+25E6 '◦'와 같습니다

sesame

강조 표시는 참깨 모양입니다. 채워진 경우 U+FE45 '﹅'와 같고, 비어 있는 경우 U+FE46 '﹆'와 같습니다

<quoted-string>

강조 표시는 문자열의 첫 번째 자소 클러스터이며, 문자열의 나머지는 무시합니다.

filled 또는 open만 지정되면, 각각 filled circle 및 open circle과 같습니다.

circle, dot 또는 sesame만 지정되면, 각각 filled circle, filled dot 및 filled sesame와 같습니다.

구현이 강조 스타일 값을 인식하거나 달리 구별하지 못하면, auto 스타일이 지정된 것처럼 해석해야 합니다; 따라서, 구현 중 텍스트 강조 표시를 지원하는 구현은 최소한 auto 값을 지원해야 합니다.

10.3.14 <extent>

<extent> 표현식은 직사각형 영역의 치수를 지정합니다.

구문 표현 – <extent>
<extent>
  : "auto"
  | "contain"
  | "cover"
  | <measure> <lwsp> <measure>

10.3.15 <family-name>

<family-name> 표현식은 글꼴 패밀리 이름을 지정합니다.

구문 표현 – <family-name>
<family-name>
  : unquoted-string
  | <quoted-string>

unquoted-string
  : identifier (<lwsp> identifier)*

identifier
  : [-]? identifier-start identifier-following*

identifier-start
  : [_a-zA-Z]
  | non-ascii-or-c1
  | escape

identifier-following
  : [_a-zA-Z0-9-]
  | non-ascii-or-c1
  | escape

non-ascii-or-c1
  : [^\0-\237]

escape
  : '\\' char

위에 지정된 구문 규칙을 따르는 것 외에도 다음 의미 규칙이 적용됩니다:

  • <family-name> 표현식의 의미 값은 해당하는 unquoted-string 또는 quoted-string 비단말 기호의 의미 값입니다;

  • unquoted-string 비단말 기호의 의미 값은 쌍 <quoted, content>이며, 여기서 quoted는 불리언 false이고, content는 각 identifier 비단말 기호의 값을 어휘 순서대로 덧붙인 결과입니다. 각 식별자가 첫 번째 식별자가 아니면 그 값 앞에 SPACE (U+0020) 문자 하나를 붙입니다;

  • quoted-string 비단말 기호의 의미 값은 쌍 <quoted, content>이며, 여기서 quoted는 불리언 true이고, content는 따옴표로 묶인 문자열에서 따옴표를 제외한 내용, 즉 구분 따옴표 사이의 문자 시퀀스입니다.

  • escape 비단말 기호의 의미 값은 이스케이프된 char의 값입니다;

  • <family-name>이 unquoted-string 형식이고 여기에 포함된 identifier가 두 개의 - HYPHEN-MINUS (U+002D) 문자로 시작하면 유효하지 않은 것으로 간주해야 합니다;

  • <family-name>이 unquoted-string 형식이고 여기에 포함된 단일 identifier가 <generic-family-name>과 (대소문자를 구분하여 비교할 때) 일치하면 해당 <generic-family-name>으로 해석해야 합니다;

  • <family-name>이 quoted-string 형식이고 그 내용이 (따옴표를 제외한 값이) <generic-family-name>과 (대소문자를 구분하여 비교할 때) 일치하더라도 해당 <generic-family-name>으로 해석해서는 안 되며, 일반 글꼴 패밀리가 아닌 실제 글꼴 패밀리의 이름으로 해석해야 합니다.

  • 구문 요소 char는 [XML 1.0], §2.2에 정의된 Char 생성 규칙에 따라 해석합니다.

참고:

[CSS2], §4.1.1에 정의된 {unicode} 이스케이프 메커니즘은 이 구문에서 지원되지 않습니다; 대신 작성자는 (1) 문서 인코딩을 사용하여 문자를 직접 인코딩하거나 (2) XML 문자 참조를 [XML 1.0], §4.1에 따라 사용해야 합니다. 구문적으로 중요한 문자를 일반적인 구문 해석 없이 사용해야 하는 경우, 위에 지정된 백슬래시 (역슬래시) escape 비단말 기호를 사용하여 이스케이프할 수 있습니다.

백슬래시(역슬래시) escape 비단말 기호를 사용할 때, 위의 구문은 어떤 문자를 이스케이프할 수 있는지에 관한 제한을 두지 않습니다. 예를 들어, \\[\n\r\f0-9a-f]가 허용됩니다. 이러한 이스케이프 중 하나가 <family-name> 표현식에 나타나면, 이를 표준 XSL-FO 또는 CSS 파서에서 사용하기 위해서는 {unicode} 이스케이프로 변환해야 합니다. 특히, 백슬래시 뒤에 줄바꿈이 오는 경우 CSS에서는 무시하지만, 위의 구문에서는 무시하지 않습니다. 이처럼 무시되지 않은 이스케이프된 줄바꿈을 CSS에서 표현하려면 동등한 {unicode} 이스케이프, 예를 들어 \a를 사용하여 나타내야 합니다.

10.3.16 <font-families>

<font-families> 표현식은 비어 있지 않은 글꼴 패밀리 목록을 지정합니다.

구문 표현 – <font-families>
<font-families>
  : font-family (<lwsp>? "," <lwsp>? font-family)*

font-family
  : <family-name>
  | <generic-family-name>

10.3.17 <font-size>

<font-size> 표현식은 하나 또는 두 개의 <length> 표현식으로 글꼴 크기를 지정합니다.

구문 표현 – <font-size>
<font-size>
  : <length> (<lwsp> <length>)?

10.3.18 <font-variant>

<font-variant> 표현식은 문자를 글리프에 매핑하는 과정에 영향을 주는 하나 이상의 키워드를 지정하며, 구체적으로 프레젠테이션 처리 시 변형 글리프를 선택할지 여부와 선택할 유형을 (해당 글꼴에서 사용할 수 있는 경우) 지정합니다.

구문 표현 – <font-variant>
<font-variant>
  : "normal"
  | ("super" | "sub") || ("full" | "half") || "ruby"

normal 값이 적용되면, 상위 수준 프로토콜이 적용되는 경우를 제외하고, 아래 첨자, 위 첨자, 전각, 반각 또는 루비 글리프 변형을 선택하지 않습니다.

super 키워드가 적용되면, 위 첨자 글리프 변형을 선택합니다(사용할 수 있는 경우). 예를 들어, OpenType 글꼴로 렌더링할 때 OpenType sups 기능이 활성화됩니다. sub 키워드가 적용되면, 아래 첨자 글리프 변형을 선택합니다(사용할 수 있는 경우). 예를 들어, OpenType 글꼴로 렌더링할 때 OpenType subs 기능이 활성화됩니다.

full 키워드가 적용되면, 전각 글리프 변형을 선택합니다(사용할 수 있는 경우). 예를 들어, OpenType 글꼴로 렌더링할 때 OpenType fwid 기능이 활성화됩니다. half 키워드가 적용되면, 반각 글리프 변형을 선택합니다(사용할 수 있는 경우). 예를 들어, OpenType 글꼴로 렌더링할 때 OpenType hwid 기능이 활성화됩니다.

ruby 키워드가 적용되면, 루비 글리프 변형을 선택합니다(사용할 수 있는 경우). 예를 들어, OpenType 글꼴로 렌더링할 때 OpenType ruby 기능이 활성화됩니다.

참고:

OpenType 글꼴의 정의는 [OFF]를 참조하세요.

여러 변형이 적용되면, 적용 가능한 변형을 가장 많이 충족하는 글리프를 선택합니다. 예를 들어, super와 half 변형이 모두 지정되면, 위 첨자와 반각 변형으로 동시에 지정된 글리프를 선택합니다(사용할 수 있는 경우). 요청된 변형의 부분 집합만 충족할 수 있고, 선택되는 변형 글리프에 차이를 일으킬 수 있는 부분 집합이 둘 이상이면, 어느 부분 집합을 적용할지는 구현에 따라 달라지는 것으로 간주하며, 즉 문서 처리 컨텍스트에 의해 결정됩니다.

10.3.19 <generic-family-name>

<generic-family-name> 표현식은 글꼴 패밀리의 부류를 나타내는 일반 토큰을 사용하여 글꼴 패밀리를 지정합니다.

일반 패밀리 이름을 구체적인 글꼴 인스턴스로 결정하는 방식은 콘텐츠 작성과 콘텐츠 해석 모두에서 구현에 따라 달라지는 것으로 간주합니다.

구문 표현 – <generic-family-name>
<generic-family-name>
  : "default"
  | "monospace"
  | "sansSerif"
  | "serif"
  | "monospaceSansSerif"
  | "monospaceSerif"
  | "proportionalSansSerif"
  | "proportionalSerif"

일반 (글꼴) 패밀리 이름과 실제 글꼴 사이의 매핑은 이 명세에서 결정하지 않습니다; 다만, 프레젠테이션을 수행할 때 가능하면 고정폭과 가변폭의 구별 및 세리프와 산세리프의 구별을 유지하는 것이 좋습니다.

일반 (글꼴) 패밀리 이름으로 monospace가 지정되면, monospaceSansSerif 또는 monospaceSerif와 같은 것으로 해석할 수 있습니다. 일반 패밀리 이름 sansSerif 및 serif는 각각 proportionalSansSerif 및 proportionalSerif와 같은 것으로 해석합니다.

일반 패밀리 이름 default가 지정되면(또는 초깃값으로 암시되면), 그 조판 특성은 구현에 따라 달라지는 것으로 간주합니다; 다만, 이 기본 글꼴 패밀리를 고정폭 산세리프 글꼴에 매핑하는 것이 권장됩니다.

10.3.20 <hex-digit>

<hex-digit>는 16진법을 사용하는 정수 및 다른 유형의 숫자 또는 토큰을 표현하는 데 사용됩니다.

파싱할 때 소문자와 대문자를 구별해서는 안 됩니다.

구문 표현 – <hex-digit>
<hex-digit>
  : <digit>
  | "a" | "b" | "c" | "d" | "e" | "f"
  | "A" | "B" | "C" | "D" | "E" | "F"

10.3.21 <integer>

<integer> 표현식은 임의의 부호 있는 정숫값을 표현하는 데 사용됩니다.

구문 표현 – <integer>
<integer>
  : sign? <non-negative-integer>

sign
  : "+" | "-"

참고:

어휘적 표현 "-0", "0" 및 "+0"의 값은, 앞이나 뒤에 추가적인 "0" 숫자가 있는지 여부와 관계없이, 정숫값 영(0)과 같은 것으로 간주합니다.

10.3.22 <length>

<length> 표현식은 점의 좌표 구성 요소를 데카르트 공간에서 표현하거나 데카르트 공간에서 두 점 사이의 거리를 표현하는 데 사용됩니다.

구문 표현 – <length>
<length>
  : scalar
  | <percentage>

scalar
  : <number> units

units
  : "px"
  | "em"
  | "c"                                     // "cell"의 약어
  | "rw"
  | "rh"

스칼라 길이 값에서 단위 구성 요소를 생략하는 것은 오류입니다.

px (픽셀) 단위는 논리 픽셀에 해당하며, 이는 문서 좌표 공간의 픽셀로, H.3 좌표 공간에 정의되어 있습니다; 다만, px (픽셀) 단위는 <length> 표현식에서 사용하지 않는 것이 좋으며, 예외는 tts:extent 속성이 px (픽셀) 단위를 사용하는 두 개의 <length> 지정으로 구성되어 tt 요소에 지정된 경우입니다, 이러한 지정 없이 px (픽셀) 단위를 사용하는 것은 더 이상 권장되지 않습니다

크기가 단일 길이 또는 서로 같은 두 길이로 표현되는 글꼴을 기준으로 지정하면, em 단위는 [XSL-FO 1.1], §5.9.13에 정의된 단위와 같은 것으로 간주합니다; 그러나 크기가 서로 다른 두 길이로 표현되는 글꼴을 기준으로 지정하면, 하나의 em은 비균등하게 크기가 조정된 글꼴의 인라인 진행 치수와 같으며, 이는 인라인 진행 방향의 길이를 지정하는 데 사용되는 경우입니다. 블록 진행 방향의 길이를 지정하는 데 사용되는 경우에는 크기가 조정된 글꼴의 블록 진행 치수와 같습니다.

달리 지정되지 않는 한, em 단위는 tts:fontSize 속성과 연관된 속성의 계산값을 기준으로 결정되며, 이 속성은 em 단위를 결정하는 컨텍스트의 요소에 적용됩니다.

c (셀) 단위의 의미는 매개변수 7.2.1 ttp:cellResolution에 정의되어 있습니다.

루트 컨테이너 상대 단위 rw 및 rh는 루트 컨테이너 영역의 너비와 높이의 1퍼센트(1%)로 각각 정의됩니다. 예를 들어, 25rw 길이는 루트 컨테이너 영역 너비의 25%로 해석됩니다.

10.3.23 <lwsp>

<lwsp>는 일반적인 선형 공백(LWSP) 구문 구성을 표현하는 데 사용됩니다.

구문 표현 – <lwsp>
<lwsp>
  : <whitespace>+

10.3.24 <measure>

<measure> 값은 거리를 절대 치수 또는 상대 치수로 표현하며, 사용 컨텍스트에 따라 적용되는 치수가 결정됩니다.

두 절대 치수 중 하나인 높이 또는 너비가 적용되면, 연관된 상대 치수인 bpd 또는 ipd는 적용되는 쓰기 모드와 텍스트 방향에 따라 결정되며, 이렇게 연관된 상대 치수가 아래 설명과 같이 지정값의 해석을 좌우합니다.

그렇지 않으면, 두 상대 치수 중 하나인 bpd 또는 ipd가 적용되며, 이 경우 해당 상대 치수가 아래에 정의된 대로 지정값의 해석을 좌우합니다.

구문 표현 – <measure>
<measure>
  : "auto"
  | "fitContent"
  | "maxContent"
  | "minContent"
  | <length>

이 값들의 의미는 다음과 같이 정의됩니다:

auto

ipd의 경우, 이미지에 적용되면 인라인 진행 방향의 고유 크기입니다; 그렇지 않으면, 100% 값이 지정되었을 때 얻는 수치입니다.

bpd의 경우, 이미지에 적용되면 블록 진행 방향의 고유 크기입니다; 그렇지 않으면, 100% 값이 지정되었을 때 얻는 수치입니다.

fitContent

(1) minContent 값과 (2) maxContent 및 auto 값 중 최솟값, 이 두 값 중 최댓값과 같은 수치입니다.

maxContent

ipd의 경우, 요소의 모든 콘텐츠를 포함하는 최대 수치이며, 줄은 강제, 즉 필수 줄바꿈 지점에서만 나뉘고, 그 결과 부모의 ipd를 넘치더라도 그렇게 합니다.

bpd의 경우, 요소의 모든 콘텐츠를 포함하는 최대 수치이며, 줄은 가능한 모든 줄바꿈 위치, 즉 강제(필수) 및 소프트(선택적) 줄바꿈 지점 모두에서 나뉩니다.

minContent

ipd의 경우, 요소의 모든 콘텐츠를 포함하는 최소 수치이며, 줄은 가능한 모든 줄바꿈 위치, 즉 강제(필수) 및 소프트(선택적) 줄바꿈 지점 모두에서 나뉩니다.

bpd의 경우, 요소의 모든 콘텐츠를 포함하는 최소 수치이며, 줄은 강제, 즉 필수 줄바꿈 지점에서만 나뉘고, 그 결과 부모의 ipd를 넘치더라도 그렇게 합니다.

<length>

스칼라 또는 백분율로 표현된 음수가 아닌 수치입니다.

10.3.25 <named-color>

<named-color>는 편리한 이름으로 RGBA 색상을 표현하는 데 사용되며, 적용되는 색 공간은 [SRGB]에 정의되어 있습니다.

파싱할 때 소문자와 대문자를 구별해서는 안 됩니다.

구문 표현 – <named-color>
<named-color>
  : "transparent"                           // #00000000
  | "black"                                 // #000000ff
  | "silver"                                // #c0c0c0ff
  | "gray"                                  // #808080ff
  | "white"                                 // #ffffffff
  | "maroon"                                // #800000ff
  | "red"                                   // #ff0000ff
  | "purple"                                // #800080ff
  | "fuchsia"                               // #ff00ffff
  | "magenta"                               // #ff00ffff (= fuchsia)
  | "green"                                 // #008000ff
  | "lime"                                  // #00ff00ff
  | "olive"                                 // #808000ff
  | "yellow"                                // #ffff00ff
  | "navy"                                  // #000080ff
  | "blue"                                  // #0000ffff
  | "teal"                                  // #008080ff
  | "aqua"                                  // #00ffffff
  | "cyan"                                  // #00ffffff (= aqua)

참고:

transparent를 제외하면, 위에 지정된 이름 있는 색상 집합은 진부분집합을 이루며, 그 상위 집합은 [SVG 1.1], §4.2에 지정된 이름 있는 색상 집합입니다.

10.3.26 <non-negative-integer>

<non-negative-integer> 표현식은 임의의 음수가 아닌 정숫값을 표현하는 데 사용됩니다.

구문 표현 – <non-negative-integer>
<non-negative-integer>
  : <digit>+

10.3.27 <non-negative-number>

<non-negative-number> 표현식은 임의의 음수가 아닌 정수 또는 실수를 표현하는 데 사용됩니다.

구문 표현 – <non-negative-number>
<non-negative-number>
  : <non-negative-integer>
  | non-negative-real

non-negative-real
  : <digit>* "." <digit>+
  | <digit>+ "."

10.3.28 <number>

<number> 표현식은 선택적으로 부호를 갖는 임의의 정수 또는 실수를 표현하는 데 사용됩니다.

구문 표현 – <number>
<number>
  : sign? <non-negative-number>

sign
  : "+" | "-"

참고:

다음 어휘적 표현의 값, "-0", "-0.", "-.0", "-0.0", "0", "0.", ".0", "0.0", "+0", "+0.", "+.0" 및 "+0.0"은, 앞이나 뒤에 추가적인 "0" 숫자가 있는지 여부와 관계없이, 수치 영(0)과 같은 것으로 간주합니다.

10.3.29 <origin>

<origin> 표현식은 직사각형 영역의 치수를 지정합니다.

구문 표현 – <origin>
<origin>
  : "auto"
  | <length> <lwsp> <length>

10.3.30 <padding>

<padding> 표현식은 영역의 패딩 직사각형에 적용되는 안쪽 간격을 지정합니다.

구문 표현 – <padding>

10.3.31 <percentage>

<percentage> 표현식은 임의의 부호 있는 정수 또는 실수 백분율을 표현하는 데 사용됩니다.

구문 표현 – <percentage>
<percentage>
  : <number> "%"

10.3.32 <pitch>

<pitch> 값은 합성된 음성에 적용할 절대적 또는 상대적 음높이 주파수 조정을 표현합니다.

구문 표현 – <pitch>
<pitch>
  : <percentage>
  | <number> pitch-units?

pitch-units
  : "hz" | "st"

<percentage>로 지정되면, 출력 음높이 (주파수)는 input pitch (frequency) * (1.0 + (percentage/100))입니다. <number>로 지정되고 sign이 지정되면, 출력 음높이는 입력 음높이를 양의 방향 (음의 방향)으로 조정한 값이며, 이는 부호가 양수인지(음수인지)에 따라 결정됩니다; 그러나 부호가 지정되지 않으면 입력 음높이는 지정된 값으로 설정됩니다. 즉, 입력 음높이에 상대적이지 않습니다. units 구성 요소가 있으면, 헤르츠(hz) 또는 반음(st), 즉 표준 온음계의 반음 간격을 지정합니다. units 구성 요소가 지정되지 않으면, 헤르츠가 암시됩니다.

10.3.33 <position>

<position> 표현식은 기준 영역에 대한 영역 또는 이미지의 원점을 간접적으로 결정하는 데 사용됩니다.

구문 표현 – <position>
<position>
  : offset-position-h                             // 구성 요소가 하나인 값
  | edge-keyword-v                                // 구성 요소가 하나인 값
  | offset-position-h <lwsp> offset-position-v    // 구성 요소가 두 개인 값
  | position-keyword-v <lwsp> position-keyword-h  // 구성 요소가 두 개인 값
  | position-keyword-h <lwsp> edge-offset-v       // 구성 요소가 세 개인 값
  | position-keyword-v <lwsp> edge-offset-h       // 구성 요소가 세 개인 값
  | edge-offset-h <lwsp> position-keyword-v       // 구성 요소가 세 개인 값
  | edge-offset-v <lwsp> position-keyword-h       // 구성 요소가 세 개인 값
  | edge-offset-h <lwsp> edge-offset-v            // 구성 요소가 네 개인 값
  | edge-offset-v <lwsp> edge-offset-h            // 구성 요소가 네 개인 값

offset-position-h
  : position-keyword-h
  | <length>

offset-position-v
  : position-keyword-v
  | <length>

edge-offset-h
  : edge-keyword-h <lwsp> <length>

edge-offset-v
  : edge-keyword-v <lwsp> <length>

position-keyword-h
  : "center"
  | edge-keyword-h

position-keyword-v
  : "center"
  | edge-keyword-v

edge-keyword-h
  : "left"
  | "right"

edge-keyword-v
  : "top"
  | "bottom"

<position> 표현식은 다음과 같이 하나에서 네 개의 구성 요소 값으로 구성될 수 있으며, 위의 구문으로 형식적으로 정의됩니다:

구성 요소 하나

가로 오프셋 위치 또는 세로 가장자리 키워드입니다

구성 요소 두 개

가로 위치 오프셋 뒤에 세로 위치 오프셋이 오거나, 세로 위치 키워드 뒤에 가로 위치 키워드가 옵니다

구성 요소 세 개

가로 가장자리 오프셋과 세로 위치 키워드 또는 가로 위치 키워드와 세로 가장자리 오프셋이며, 순서는 상관없습니다

구성 요소 네 개

가로 가장자리 오프셋과 세로 가장자리 오프셋이며, 순서는 상관없습니다

모든 <position> 표현식은 네 개의 구성 요소를 갖는 동등한 형식인 left <length> top <length>로 다음의 동등성 표를 사용하여 변환할 수 있습니다:

구성 요소 하나의 동등한 표현
값 동등한 표현
center center center
left left center
right right center
top center top
bottom center bottom
<length> <length> center

구성 요소 두 개의 동등한 표현
값 동등한 표현
bottom center left 50% top 100%
bottom left left 0% top 100%
bottom right left 100% top 100%
center center left 50% top 50%
center top left 50% top 0%
center bottom left 50% top 100%
center left left 0% top 50%
center right left 100% top 50%
center <length> left 50% top <length>
left center left 0% top 50%
left top left 0% top 0%
left bottom left 0% top 100%
left <length> left 0% top <length>
right center left 100% top 50%
right top left 100% top 0%
right bottom left 100% top 100%
right <length> left 100% top <length>
top center left 50% top 0%
top left left 0% top 0%
top right left 100% top 0%
<length> center left <length> top 50%
<length> top left <length> top 0%
<length> bottom left <length> top 100%
<length-1> <length-2> left <length-1> top <length-2>

참고:

두 구성 요소 표현식이 두 개의 <length> 값으로 이루어지면, 해석이 모호해질 가능성을 피하기 위해 첫 번째는 가로 길이로, 두 번째는 세로 길이로 해석하며, 이는 위 표의 마지막 행에 나와 있습니다.

구성 요소 세 개의 동등한 표현
값 동등한 표현
bottom left <length> left <length> top 100%
bottom right <length> right <length> top 100%
bottom <length> center left 50% bottom <length>
bottom <length> left left 0% bottom <length>
bottom <length> right left 100% bottom <length>
center bottom <length> left 50% bottom <length>
center left <length> left <length> top 50%
center right <length> right <length> top 50%
center top <length> left 50% top <length>
left bottom <length> left 0% bottom <length>
left top <length> left 0% top <length>
left <length> bottom left <length> top 100%
left <length> center left <length> top 50%
left <length> top left <length> top 0%
right bottom <length> left 100% bottom <length>
right top <length> left 100% top <length>
right <length> bottom right <length> top 100%
right <length> center right <length> top 50%
right <length> top right <length> top 0%
top left <length> left <length> top 0%
top right <length> right <length> top 0%
top <length> center left 50% top <length>
top <length> left left 100% top <length>
top <length> right left 100% top <length>

구성 요소 네 개의 동등한 표현
값 동등한 표현
bottom <length-v> left <length-h> left <length-h> top (100% - <length-v>)
bottom <length-v> right <length-h> left (100% - <length-h>) top (100% - <length-v>)
left <length-h> bottom <length-v> left <length-h> top (100% - <length-v>)
right <length-h> bottom <length-v> left (100% - <length-h>) top (100% - <length-v>)
right <length-h> top <length-v> left (100% - <length-h>) top <length-v>
top <length-v> left <length-h> left <length-h> top <length-v>
top <length-v> right <length-h> left (100% - <length-h>) top <length-v>

<length> 구성 요소가 백분율로 표현되면, 해당 백분율은 어떤 기준 치수에 상대적으로 해석되며, 기준 치수는 사용 컨텍스트에 의해 정의됩니다.

<length> 구성 요소가 <position> 표현식에 포함된 경우 양수 또는 음수일 수 있습니다. 양의 길이는 참조된 가장자리에서 안쪽으로 들어간 거리로 해석하고, 음의 길이는 참조된 가장자리에서 바깥쪽으로 나간 거리로 해석합니다. 예를 들어, left 가장자리에서 안쪽으로 들어간 위치는 해당 가장자리의 오른쪽에 있으며(0이 아닌 경우), 바깥쪽으로 나간 위치는 left 가장자리의 왼쪽에 있습니다(0이 아닌 경우). 이와 반대로, right 가장자리에서 안쪽으로 들어간 위치는 해당 가장자리의 왼쪽에 있고( 0이 아닌 경우), right 가장자리에서 바깥쪽으로 나간 위치는 해당 가장자리의 오른쪽에 있습니다(0이 아닌 경우). 비슷한 관계가 top 및 bottom 가장자리에도 성립합니다.

네 구성 요소의 동등한 표현으로 변환할 때, (100% - <length-h>) 표현식은 100%와 <length-h> 표현식의 백분율 환산값 사이의 차이로 해석합니다. 마찬가지로, (100% - <length-v>) 표현식은 100%와 <length-v> 표현식의 백분율 환산값 사이의 차이로 해석합니다. 두 경우 모두 결과인 차이는 음의 백분율일 수 있습니다.

10.3.34 <ruby-reserve>

<ruby-reserve> 표현식은 루비 텍스트 콘텐츠의 배치를 위한 공간을 확보하는 데 사용됩니다.

구문 표현 – <ruby-reserve>
<ruby-reserve>
  : "none"
  | ("both" | <annotation-position>) (<lwsp> <length>)?

10.3.35 <shadow>

<shadow> 값은 생성된 영역에 적용할 그림자 장식을 표현합니다. 생성된 영역이 글리프 영역이면, 글리프의 윤곽선에 적용됩니다 (글리프 영역의 경계 상자가 아닙니다). 생성된 영역이 글리프 영역이 아니면, 해당 영역의 테두리 직사각형에 적용됩니다.

구문 표현 – <shadow>

그림자 값 표현식은 두 개에서 세 개의 <length> 항과 선택적인 <color> 항으로 이루어지며, 각 항은 선형 공백(LWSP)으로 서로 구분됩니다.

첫 번째 <length> 항은 연관된 영역의 가로축 치수를 따른 오프셋을 나타내며, 양수는 오른쪽 가장자리 방향, 음수는 왼쪽 가장자리 방향을 의미합니다. 두 번째 <length> 항은 연관된 영역의 세로축 치수를 따른 오프셋을 나타내며, 양수는 아래쪽 가장자리 방향, 음수는 위쪽 가장자리 방향을 의미합니다. 세 번째 <length> 항이 있으면, 흐림 반지름을 나타내며 음수가 아니어야 합니다.

흐림 반지름이 지정되지 않으면, 즉 두 개의 <length> 항만 있으면, 계산값 0px가 적용됩니다.

<color> 항이 없으면, tts:color 속성의 계산값이 적용됩니다.

참고:

<length>가 셀 단위로 표현되어 tts:textShadow 값에 사용되면, 셀의 블록 진행 치수가 적용됩니다. 예를 들어, 텍스트 그림자 두께가 0.1c로 지정되고, 셀 해상도가 20 × 10이며, 루트 컨테이너 영역의 크기가 640 × 480이면, 그림자 두께는 명목상 480 / 10 * 0.1 픽셀, 즉 4.8px가 되며, 래스터화 효과는 고려하지 않습니다.

10.3.36 <text-combine>

<text-combine> 표현식은 세로쓰기 텍스트에서 텍스트 결합 효과의 동작을 결정하는 데 사용됩니다.

구문 표현 – <text-combine>
<text-combine>
  : "none"
  | "all"

10.3.37 <text-decoration>

<text-decoration> 표현식은 텍스트 장식 효과의 동작을 결정하는 데 사용됩니다.

구문 표현 – <text-decoration>
<text-decoration>
  : "none"
  | (("underline" | "noUnderline") || ("lineThrough" | "noLineThrough") || ("overline" | "noOverline"))

10.3.38 <text-emphasis>

<text-emphasis> 표현식은 텍스트 강조 효과의 동작을 결정하는 데 사용됩니다.

구문 표현 – <text-emphasis>

10.3.39 <text-outline>

<text-outline> 표현식은 텍스트 윤곽선 효과의 동작을 결정하는 데 사용됩니다.

구문 표현 – <text-outline>
<text-outline>
  : "none"
  | (<color> <lwsp>)? <length> (<lwsp> <length>)?

10.3.40 <text-shadow>

<text-shadow> 표현식은 텍스트 그림자 효과의 동작을 결정하는 데 사용됩니다.

구문 표현 – <text-shadow>
<text-shadow>
  : "none"
  | <shadow> (<lwsp>? "," <lwsp>? <shadow>)*

10.3.41 <whitespace>

<whitespace> 값은 일반적인 공백 문자를 표현하는 데 사용됩니다.

구문 표현 – <whitespace>
<whitespace>
  : ( " " | "\t" | "\n" | "\r" )

10.4 스타일 지정 의미

이 절에서는 다음과 같은 표준 처리 모델을 바탕으로 스타일 결정의 의미를 정의합니다:

외부에서 관찰할 수 있는 결과가 이 모델에서 생성하는 결과와 일치한다면, 이 모델의 어떤 구현도 허용됩니다.

참고:

여기에서 사용하는 스타일 결정의 의미는 [XSL-FO 1.1], §5를 기반으로 합니다.

10.4.1 스타일 연관

스타일 연관은 10.4.4 스타일 결정 처리의 하위 과정으로, 각 콘텐츠 및 레이아웃 요소의 지정 스타일 집합을 결정하는 데 사용됩니다.

스타일 정보는 여러 가지 방식으로 콘텐츠 및 레이아웃 정보와 연관될 수 있습니다:

위의 방식 외에도, 다음을 사용하여 스타일 정보를 레이아웃 정보와 연관시킬 수 있습니다:

10.4.1.1 인라인 스타일 지정

스타일 속성은 영향을 받는 요소에 스타일 지정 속성을 직접 지정하여 인라인 방식으로 표현할 수 있습니다. 이러한 방식으로 표현할 때, 스타일 정보의 연관을 인라인 스타일 지정이라고 합니다.

인라인 스타일 지정으로 연관된 스타일 속성에는 다른 모든 스타일 연관 방식보다 높은 우선순위가 부여됩니다.

예제 – 인라인 스타일 지정
<p tts:color="white">흰색 1 <span tts:color="yellow">노란색</span> 흰색 2</p>

참고:

위 예제에서 두 텍스트 노드 "흰색 1 " 및 " 흰색 2"는 익명 span으로 해석되며, 색상 스타일 속성과 연관되지 않습니다; 대신, 부모 p 요소로부터 색상 스타일을 상속하며, 이는 아래의 10.4.2.1 콘텐츠 스타일 상속에 설명되어 있습니다.

10.4.1.2 참조 스타일 지정

스타일 속성은 별도로 분리된 방식으로 표현할 수 있으며, 영향을 받는 요소에서 style 속성을 사용하여 참조할 수 있습니다. 이러한 방식으로 표현할 때, 스타일 정보의 연관을 참조 스타일 지정이라고 합니다.

style 속성이 여러 참조를 지정하면, 해당 참조는 지정된 순서로 평가되며, 스타일 속성이 여러 참조 경로를 따라 지정된 경우 그 순서가 스타일 속성값의 결정에 적용됩니다.

참조 스타일 지정은 styling 요소의 자손인 style 요소를 참조하는 경우에만 사용할 수 있습니다. 다음을 참조하는 것은 오류로 간주됩니다: style 요소가 layout 요소의 자손인 경우이며, 이러한 경우의 프레젠테이션 의미는 이 명세에 정의되어 있지 않습니다.

참고:

참조 스타일 지정은 참조의 지역성을 희생하는 대신 스타일 지정의 재사용을 장려합니다.

참고:

콘텐츠 요소는 인라인 스타일 지정과 참조 스타일 지정을 혼합하여 스타일 속성과 연관시킬 수 있으며, 이 경우 인라인 스타일 지정에 우선순위가 부여됩니다. 이는 위의 10.4.1.1 인라인 스타일 지정에 설명되어 있습니다.

예제 – 참조 스타일 지정
<style xml:id="s1" tts:color="white"/>
<style xml:id="s2" tts:color="yellow"/>
...
<p style="s1">흰색 1 <span style="s2">노란색</span> 흰색 2</p>

참고:

위 예제에서 두 텍스트 노드 "흰색 1 " 및 " 흰색 2"는 익명 span으로 해석되며, 색상 스타일 속성과 연관되지 않습니다; 대신, 부모 p 요소로부터 색상 스타일을 상속하며, 이는 아래의 10.4.2.1 콘텐츠 스타일 상속에 설명되어 있습니다.

10.4.1.3 연쇄 참조 스타일 지정

스타일 속성은 별도로 분리된 방식으로 표현할 수 있으며, 그 자체가 다른 분리된 스타일 속성을 참조하여, 영향을 받는 요소에서 시작되는 참조 체인을 만들 수 있습니다. 이러한 방식으로 표현할 때, 스타일 정보의 연관을 연쇄 참조 스타일 지정이라고 합니다.

연쇄 스타일 참조 시퀀스의 순환은 오류로 간주해야 합니다.

참조 스타일 지정은 styling 요소의 자손인 style 요소를 참조하는 경우에만 사용할 수 있습니다. 다음을 참조하는 것은 오류로 간주됩니다: style 요소가 layout 요소의 자손인 경우이며, 이러한 경우의 프레젠테이션 의미는 이 명세에 정의되어 있지 않습니다.

참고:

연쇄 참조 스타일 지정은 스타일 지정을 일반적인 집합과 구체적인 집합으로 그룹화하도록 장려하며, 이를 통해 스타일 지정의 재사용을 더욱 돕습니다.

참고:

콘텐츠 요소는 인라인 스타일 지정, 참조 스타일 지정 및 연쇄 참조 스타일 지정을 혼합하여 스타일 속성과 연관시킬 수 있으며, 이 경우 인라인 스타일 지정에 우선순위가 부여됩니다. 이는 위의 10.4.1.1 인라인 스타일 지정에 설명되어 있습니다.

예제 – 연쇄 참조 스타일 지정
<style xml:id="s1" tts:color="white" tts:fontFamily="monospaceSerif"/>
<style xml:id="s2" style="s1" tts:color="yellow"/>
...
<p style="s1">흰색 고정폭</p>
<p style="s2">노란색 고정폭</p>

참고:

위 예제에서 두 번째 문단의 텍스트는 노란색입니다. 그 이유는 tts:color="yellow"가 실질적으로 tts:color="white"를 덮어쓰기(위에 병합) 때문이며, 흰색 값은 스타일 s2가 스타일 s1을 참조하여 얻습니다.

10.4.1.4 중첩 스타일 지정

스타일 속성은 영향을 받는 요소의 자식으로 하나 이상의 style 요소를 직접 지정하여 중첩 방식으로 표현할 수 있습니다. 이러한 방식으로 표현할 때, 스타일 정보의 연관을 중첩 스타일 지정이라고 합니다.

중첩 스타일 지정으로 연관된 스타일 속성에는 인라인 스타일 지정보다 낮지만 참조 스타일 지정보다 높은 우선순위가 부여됩니다.

예제 – 중첩 스타일 지정
<region xml:id="r1">
  <style tts:extent="128px 66px"/>
  <style tts:origin="0px 0px"/>
  <style tts:displayAlign="center"/>
</region>

참고:

이 TTML 버전에서 중첩 스타일 지정은 region 요소에만 적용됩니다.

10.4.2 스타일 상속

스타일 상속은 10.4.4 스타일 결정 처리의 하위 과정으로, 각 콘텐츠 및 레이아웃 요소의 지정 스타일 집합을 결정하는 데 사용됩니다.

스타일은 다음을 사용하여 콘텐츠 정보로 추가로 전파됩니다:

상속되는 스타일을 결정할 때는 문서 인스턴스의 중간 동시적 문서 형식에 있는 요소 계층 구조를 사용해야 하며, 이러한 중간 형식은 11.3.1.3 중간 동시적 문서 구성에 정의되어 있습니다.

참고:

영역 상속 처리를 용이하게 하기 위해 원래 형식 대신 중간 동시적 문서 형식을 사용합니다.

10.4.2.1 콘텐츠 스타일 상속

스타일 속성은 조상 콘텐츠 요소로부터 중간 동시적 문서 내에서 상속됩니다. 이는 스타일 속성이 콘텐츠 요소 (또는 익명 span)와 연관되지 않고 해당 스타일 속성이 상속 가능한 것으로 지정된 경우입니다.

스타일 속성에 상속이 필요한 것으로 결정되면, 상속값은 동일한 이름의 스타일 속성이 갖는 값이어야 하며, 이 값은 계산 스타일 집합 중 해당 속성을 정의하는 가장 가까운 조상 요소의 집합에 있는 값입니다. 해당 조상 요소는 적용되는 중간 동시적 문서 안에 있어야 합니다.

예제 – 콘텐츠 스타일 상속
<p tts:fontFamily="monospaceSansSerif">
  <span tts:color="yellow">노란색 고정폭</span>
</p>

참고:

위 예제에서 문자 항목을 포함하는 span 요소, 즉 노란색 고정폭을 포함하는 요소는 tts:fontFamily 스타일 속성을 지정하지 않으며 이 속성은 상속 가능합니다; 따라서, tts:fontFamily 스타일의 값은 계산 스타일 집합 중 조상 p 요소의 집합으로부터 상속되고, 해당 값은 지정 스타일 집합 중 span 요소의 집합에 추가됩니다.

10.4.2.2 영역 스타일 상속

스타일 속성은 다음 경우에 region 요소로부터 상속됩니다:

  1. 상속 가능한 스타일 속성 P가 다음과 연관되지 않고, 즉 콘텐츠 요소 또는 익명 span E와 연관되지 않으며,

  2. 해당 스타일 속성 P가 계산 스타일 집합 중 영역 R의 집합에 있고,

  3. 해당 요소 E가 영역 R로 흘러 들어가는(그 안에 표시되는) 경우입니다.

예제 – 영역 스타일 상속
<region xml:id="r1">
  <style tts:color="yellow"/>
  <style tts:fontFamily="monospaceSerif"/>
</region>
...
<p region="r1">노란색 고정폭</p>

참고:

위 예제에서 익명 span은 문자 항목인 노란색 고정폭을 포함하며, 실질적으로 tts:color 및 tts:fontFamily 스타일을 region 요소로부터 상속합니다. 해당 요소는 p 요소가 흘러 들어가는(표시되는) 영역입니다.

10.4.3 스타일 결정 값 범주

스타일 결정, 레이아웃 및 프레젠테이션 처리 중에는, 스타일 속성 값의 세 범주를 다음과 같이 구별합니다:

10.4.3.1 지정값

스타일 속성의 값 중 요소 또는 익명 span과 연관되거나 해당 요소 또는 익명 span에 상속되는 값을 지정값이라고 합니다. 주어진 요소의 모든 지정된 스타일 속성으로 이루어진 집합을 지정 스타일 집합이라고 하며, 해당 요소에 속합니다.

10.4.3.2 계산값

스타일 속성이 상대적 값 표현식으로 지정되면, 예를 들어 이름 있는 색상, 상대 단위(예: 셀) 또는 백분율로 지정되면, RGB 삼중항, 픽셀 등의 절대 단위로 추가로 결정해야 합니다.

스타일 결정 과정에서, 지정된 스타일 값은 절대적인 기준으로 다시 해석(또는 다시 계산)된 후, 계산값으로 기록될 수 있습니다. 주어진 요소의 모든 계산된 스타일 속성으로 이루어진 집합을 계산 스타일 집합이라고 하며, 해당 요소에 속합니다.

스타일 값이 명시적으로 또는 암시적으로 상속될 때, 조상 요소로부터 상속되는 것은 스타일의 계산값입니다. 이는 백분율과 같은 특정 상대 단위를 결정하려면 표현식을 직접적인 (지역적) 참조 컨텍스트에서 평가해야 하며, 관련된 (결정에 필요한) 표현식을 사용할 수 없는 먼 (원격) 참조 컨텍스트에서 평가해서는 안 되기 때문입니다.

10.4.3.3 사용값

스타일 상속 이후, 계산값은 레이아웃 또는 프레젠테이션 시점에 추가적인 결정이 필요할 수 있습니다. 이는 특정 속성의 의미에서 그러한 결정을 요구하거나, 결정에 필요한 정보를 레이아웃 또는 프레젠테이션 처리가 이루어질 때까지 사용할 수 없는 경우입니다. 이러한 값을 사용값이라고 하며, 최종적인 실제 값과 같을 필요는 없습니다. 실제값은 아래에 설명되어 있습니다.

참고:

사용값의 결정에 앞서 항상 계산값의 상속이 이루어집니다; 즉, 사용값 계산은 명목상 10.4.4.4 스타일 결정 과정이 완료된 후 수행됩니다.

참고:

[CSS2], §6.1.3도 참조하세요.

10.4.3.4 실제값

실제 프레젠테이션 과정에서는 다른 변환이 이루어져, 일부 값 표현식이 구체적인 물리적 값으로 매핑됩니다. 예를 들어, 계산된 스타일 값의 색상에는 표시 과정에서 가장 가까운 색상으로의 근사와 감마 보정이 추가로 적용됩니다. 또한, 계산된 스타일 값에서 픽셀을 사용하는 길이 값 표현식은 물리적 (장치) 픽셀이 아니라 논리적 픽셀을 표현하는 것으로 간주합니다. 따라서, 이러한 논리 픽셀은 프레젠테이션 중 물리적 (장치) 픽셀로 추가로 변환되거나 매핑됩니다.

논리적 값에서 장치 값으로의 매핑 과정에서 나오는 최종 값을 실제값이라고 합니다. 주어진 요소의 모든 실제 스타일 속성으로 이루어진 집합을 해당 요소의 실제 스타일 집합이라고 합니다.

참고:

프레젠테이션 과정에서 실제값 집합이 둘 이상 생성될 수 있습니다. 예를 들어, TTML 프레젠테이션 처리기 장치가 RGBA 성분 영상 신호를 출력하면, NTSC 또는 PAL 텔레비전에서 이를 추가로 변환하여 최종 이미지를 생성할 수 있습니다. 이 경우, 색상과 치수 모두 표시되기 전에 추가로 수정될 수 있습니다.

참고:

일반적으로, TTML 프레젠테이션 처리기는 실제 스타일 집합 값에 접근할 수 없습니다; 따라서, 아래에서 스타일 결정 과정을 형식적으로 설명할 때 실제값을 더 이상 사용하거나 참조하지 않습니다.

10.4.4 스타일 결정 처리

스타일 결정 과정은 여기에서 콘텐츠 및 레이아웃 요소에 적용되는 모든 스타일 속성의 계산값을 결정하는 절차(및 그 결과)로 정의됩니다:

여기에 설명된 과정은 다음 과정의 필수적인 하위 과정을 이룹니다: 11.3.1 영역 레이아웃 및 프레젠테이션.

10.4.4.1 개념적 정의

아래에 지정된 스타일 결정 처리 모델을 해석하기 위해 다음 개념적 정의를 적용합니다:

[스타일 속성]

스타일 속성 P는 튜플 [name, value]로 구성되는 것으로 간주하며, 속성의 이름은 튜플 [namespace value, unqualified name]이고 속성의 값은 튜플 [category, type, value expression]입니다. 여기서 P는 다음과 같은 상태를 나타냅니다: 명시적으로 지정되거나 기본값이 적용된 스타일 지정 속성과 연관된 인터닝된(인스턴스화된) 상태입니다.

예제 – 개념적 스타일 속성
[
  ["http://www.w3.org/ns/ttml#styling", "color"],
  ["specified", color, "red"]
]

[스타일 (속성) 집합]

스타일 (속성) 집합은 순서가 없는 스타일 속성 모음으로 구성되며, 집합 내의 두 스타일 속성이 동일한 이름을 가질 수 없습니다. 여기서 "동일한 이름"은 이름 튜플의 네임스페이스 값과 한정되지 않은 이름이 각각 같음을 의미합니다.

지정 스타일 (속성) 집합에서 각 스타일 속성의 범주는 "specified"입니다; 요소 E의 지정 스타일 (속성) 집합은 SSS(E)로 지칭합니다.

예제 – 개념적 (지정) 스타일 (속성) 집합
{
  [
    ["http://www.w3.org/ns/ttml#styling", "backgroundColor"],
    ["specified", color, 0x00FF00 ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "color"],
    ["specified", color, "red" ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "fontSize"],
    ["specified", length, "1c" ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "lineHeight"],
    ["specified", length, "117%" ]
  ]
}

계산 스타일 (속성) 집합에서 각 스타일 속성의 범주는 "specified" 또는 "computed"입니다; 계산 스타일 (속성) 집합이 속하는 요소가 E이면 이 집합을 CSS(E)로 지칭합니다.

예제 – 개념적 (계산) 스타일 (속성) 집합
{
  [
    ["http://www.w3.org/ns/ttml#styling", "backgroundColor"],
    ["specified", color, 0x00FF00 ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "color"],
    ["computed", color, 0xFF0000 ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "fontSize"],
    ["computed", length, "24px" ]
  ],
  [
    ["http://www.w3.org/ns/ttml#styling", "lineHeight"],
    ["computed", length, "28px" ]
  ]
}

[스타일 (속성) 병합]

스타일 속성 Pnew를 스타일 (속성) 집합에 병합하는 방법은, 해당 집합 SS에 대해 다음과 같습니다: 스타일 속성 Pold가 이미 SS에 있고 Pnew의 이름이 Pold의 이름과 같으면 , Pold를 SS에서 Pnew로 대체합니다 ; 그렇지 않으면, Pnew를 SS에 추가합니다.

[스타일 (속성) 집합 병합]

스타일 (속성) 집합 SSnew를 기존 스타일 (속성) 집합 SSold에 병합하는 방법은 다음과 같습니다: 각 스타일 속성 Pnew가 SSnew에 속하면 , Pnew를 SSold에 병합합니다 .

10.4.4.2 지정 스타일 집합 처리

지정 스타일 집합 SSS가 요소 또는 익명 span E에 속하는 경우, SSS(E)는 다음 규칙에 따라 순서대로 결정됩니다:

  1. [초기화] 초기화할 지정 스타일 집합 SSS는 E의 집합이며, 이를 빈 집합으로 초기화합니다;

  2. [참조 및 연쇄 참조 스타일 지정] 각 style 요소 SREF가 style 속성에 의해 참조되고 그 속성이 E에 지정되어 있으면, style 속성에 지정된 순서대로 처리합니다. SREF가 styling 요소의 자손이면, 다음 지정 스타일 집합을 병합합니다: SREF의 집합 , SSS(SREF)를 E의 지정 스타일 집합인 SSS(E)에 병합합니다;

  3. [중첩 스타일 지정] E가 조건부로 제외되지 않으면, 중첩된 각 조건부로 포함되는 style 자식 요소 SNEST에 대해, 이 요소의 부모가 E일 때, 지정된 자식 요소 순서대로 다음을 병합합니다: SNEST의 지정 스타일 집합 , SSS(SNEST)를 지정 스타일 집합인 E의 SSS(E)에 병합합니다;

  4. [인라인 스타일 지정] E가 조건부로 제외되지 않으면, 각 스타일 속성 P가 인터닝된 (인스턴스화된) 원본이 지정된 스타일 지정 속성이고 해당 속성이 E에 속하는 경우, P를 지정 스타일 집합인 E의 SSS(E)에 병합합니다;

  5. [애니메이션 스타일 지정] E의 요소 유형이 인라인 애니메이션 요소가 아니면, 각 조건부로 포함되는 인라인 애니메이션 자식 요소 A에 대해, 그 부모가 요소 E일 때, 지정 스타일 집합의 애니메이션 가능한 스타일을 병합합니다. 이 스타일 집합은 A의 집합인 SSS(A)이며, 병합 대상은 E의 지정 스타일 집합인 SSS(E)입니다;

  6. [암시적 상속 및 초깃값 대체 적용] E의 요소 유형이 Animation.class 요소 그룹에 속하지 않고 스타일 지정 요소 유형 style도 아니면, 각 스타일 속성 P에 대해, 해당 속성이 인터닝된(인스턴스화된) 원본이 스타일 지정 속성인 경우, 다음 하위 단계를 순서대로 수행합니다:

    1. P가 지정 스타일 집합인 E의 SSS(E)에 있으면, 다음 스타일 속성으로 진행합니다;

    2. P가 상속 가능하고 E가 region 요소가 아니면, 다음을 수행합니다:

      • P′를 다음 조회의 결과로 설정합니다: 계산 스타일 집합에서 P의 값을 조회하며, 그 집합은 E의 가장 가까운 조상 요소인 NEAREST-ANCESTOR(E)의 집합이고, CSS(NEAREST-ANCESTOR(E))에는 다음의 정의가 포함되어야 합니다: P;

    3. (1) P가 상속 가능하고 E가 region 요소이거나 (2) P가 상속 불가능하고 P가 E에 적용되면, 다음을 수행합니다:

      • P′를 다음 속성의 초깃값으로 설정합니다: 속성 P이며, 속성의 초깃값은 다음과 같이 결정됩니다:

        1. initial 요소가 P의 초깃값을 정의하면, 해당 값을 사용합니다;

        2. 그렇지 않으면, 속성 정의에 지정된 초깃값을 사용하며, 해당 정의는 P의 정의입니다;

    4. P′의 값이 정의되어 있으면, P′를 E의 지정 스타일 집합인 SSS(E)에 병합합니다.

10.4.4.3 계산 스타일 집합 처리

계산 스타일 집합 CSS가 요소 또는 익명 span E에 속하는 경우, CSS(E)는 다음 규칙에 따라 순서대로 결정됩니다:

  1. [지정 스타일 결정] 지정 스타일 집합 SSS가 속하는 요소가 E일 때, 해당 집합인 SSS(E)를 다음에 따라 결정합니다(얻습니다): 10.4.4.2 지정 스타일 집합 처리;

  2. [초기화] CSS(E)를 다음 집합의 (깊은) 복사본으로 초기화합니다: SSS(E);

  3. [필터링] E가 animate, set 또는 style 요소이면, CSS(E)를 추가적인 결정 없이 결과 계산 스타일 집합으로 반환합니다; 그렇지 않으면, 다음 규칙으로 진행합니다;

  4. [상대값 결정] 각 스타일 속성 P가 CSS(E)에 있고, P의 값 유형이 상대적이면, 다음 하위 단계를 순서대로 수행합니다:

    1. 가능하면, P의 상대값을 동등한 비상대적 (계산) 값으로 대체합니다;

    2. P의 범주를 "computed"로 설정합니다.

참고:

위의 필터링 규칙에 따라, animate, set 또는 style 요소의 계산 스타일 집합에는 지정값만 포함되며, 이 경우 상대값 표현식은 상대적인 상태로 유지됩니다; 따라서, 상대값 표현식의 결정은(참조 스타일 연관을 통해 할당될 수 있는 표현식도 포함하여) 항상 레이아웃 요소 또는 콘텐츠 요소의 컨텍스트에서 이루어지며, 이는 프레젠테이션 컨텍스트를 갖는 요소의 컨텍스트입니다. 프레젠테이션이 없는 선언 컨텍스트인 animate, set 또는 참조 가능한 style 요소의 컨텍스트에서는 이루어지지 않습니다.

참고:

위의 상대값 결정 규칙으로 상대값이 결정되지 않을 수 있으므로, 예를 들어, 레이아웃 또는 프레젠테이션 시점까지 결정할 수 없는 경우에는, 계산값을 추가로 결정해야 사용값을 얻을 수 있습니다.

10.4.4.4 스타일 결정 과정

최상위 스타일 결정 과정은 다음과 같이 정의됩니다: 각 요소 및 익명 span을 전위 순회하며, 순회 대상 E가 속한 중간 동시적 문서는 DOCinter입니다 . 다음 하위 단계를 순서대로 수행합니다:

  1. [필터링] E가 다음 중 하나가 아니면, 전위 순회에서 다음 요소로 진행합니다. 즉, E에 대해 아래의 후속 단계를 수행하지 않습니다:

    또는 스타일이 지정된 요소로서, 지원되는 확장 모듈에 정의된 요소입니다;

  2. [계산 스타일 결정] 계산 스타일 집합 CSS가 속하는 요소가 E일 때, 해당 집합인 CSS(E)를 다음에 따라 결정합니다(얻습니다): 10.4.4.3 계산 스타일 집합 처리.

10.4.5 스타일 절차

이 절에서는 이 명세의 다른 부분에서 참조하는 다양한 스타일 관련 절차를 정의합니다.

10.4.5.1 포함 계산
[포함 배율 계산](inout 대상 직사각형 TR, in 기준 직사각형 RR)
  1. 대상 직사각형 TR 또는 기준 직사각형 RR의 단위 중 어느 하나라도 다음 단위로 표현되지 않으면, 즉 논리 픽셀 (다시 말해, px 단위)로 표현되지 않으면, 필요에 따라 단위를 논리 픽셀로 변환합니다.

  2. 대상 직사각형 TR의 너비인 Wt가  영이면, Wt를 일로 설정합니다; 마찬가지로, 대상 직사각형 TR의 높이인 Ht가  영이면, Ht를 일로 설정합니다.

  3. SARr를 기준 직사각형 RR의 저장 종횡비로 둡니다.

  4. SARt를 대상 직사각형 TR의 저장 종횡비로 둡니다.

  5. 배율 계수 SF를 다음과 같이 결정합니다:

    1. SARr가 SARt보다 작거나 같으면 , SF는 Wr / Wt입니다 . 여기서 Wr 및 Wt는 각각 기준 직사각형과 대상 직사각형의 너비입니다.

    2. 그렇지 않으면, SARr가 SARt보다 크므로 , SF는 Hr / Ht입니다 . 여기서 Hr 및 Ht는 기준 직사각형과 대상 직사각형의 높이에 각각 해당합니다.

  6. SF가 1.0과 같지 않으면, Wt를 SF * Wt로 그리고 Ht를 SF * Ht로 설정합니다 , 즉, 대상 직사각형 TR 자체의 크기를 다음 배율 계수로 조정합니다: SF.

참고:

위 알고리즘을 구현할 때, 저장 종횡비 및 배율 계수는 십진 유효숫자를 최소 7자리 제공하는 형식으로 표현해야 합니다.

10.4.5.2 덮기 계산
[덮기 배율 계산](inout 대상 직사각형 TR, in 기준 직사각형 RR)
  1. 대상 직사각형 TR 또는 기준 직사각형 RR의 단위 중 어느 하나라도 다음 단위로 표현되지 않으면, 즉 논리 픽셀 (다시 말해, px 단위)로 표현되지 않으면, 필요에 따라 단위를 논리 픽셀로 변환합니다.

  2. 대상 직사각형 TR의 너비인 Wt가  영이면, Wt를 일로 설정합니다; 마찬가지로, 대상 직사각형 TR의 높이인 Ht가  영이면, Ht를 일로 설정합니다.

  3. SFW 를 WR /WT 로 둡니다. 여기서 WR 및 WT 는 각각 기준 직사각형 RR 및 대상 직사각형 TR의 너비입니다.

  4. SFH 를 HR /HT 로 둡니다. 여기서 HR 및 HT 는 각각 기준 직사각형 RR 및 대상 직사각형 TR의 높이입니다.

  5. SFW 및 SFH 가 일보다 크면, SF를 SFW 및 SFH 중 작은 값으로 둡니다; 그렇지 않으면, SF를 SFW 및 SFH 중 큰 값으로 둡니다.

  6. SF가 1.0과 같지 않으면, Wt를 SF * Wt로 그리고 Ht를 SF * Ht로 설정합니다 , 즉, 대상 직사각형 TR 자체의 크기를 다음 배율 계수로 조정합니다: SF.

참고:

위 알고리즘을 구현할 때, 배율 계수는 십진 유효숫자를 최소 7자리 제공하는 형식으로 표현해야 합니다.

10.4.5.3 전단 계산

전단 값은 선형 함수에 의해 전단 각도로 매핑되며, 전단 각도는 전단 (백분율) 값에 90도를 곱한 값과 같습니다. 전단 값이 0%이면 전단 변환이 적용되지 않습니다; 값이 100%이면, 2D 전단 변환이 인라인 진행 방향과 연관된 축을 따라 90도로 적용됩니다; 값이 -100%이면, 전단 변환이 -90도로 적용됩니다. 지정된 백분율의 절댓값이 100%보다 크면, 적절한 부호를 붙인 100%가 지정된 것처럼 해석해야 합니다.

참고:

결과 전단 각도의 절댓값이 90도이면, 전단 각도의 사용값을 줄일 수 있으며, 작은 엡실론만큼 줄여 사용값의 탄젠트가 정의되도록 할 수 있습니다.

인라인 진행 방향이 X축에 해당하면, 2D 전단 변환은 다음 행렬로 설명됩니다:

| 1 a 0 |
| 0 1 0 |
| 0 0 1 |

여기서 a는 전단 각도의 탄젠트와 같습니다.

인라인 진행 방향이 Y축에 해당하면, 2D 전단 변환은 다음 행렬로 설명됩니다:

| 1 0 0 |
| a 1 0 |
| 0 0 1 |

11 레이아웃

이 절에서는 핵심 어휘 목록의 레이아웃 정보를 명세합니다. 레이아웃은 콘텐츠에 적용되는 분리 가능한 정보 계층으로, 해당 콘텐츠의 프레젠테이션에 관한 작성자의 의도를 나타냅니다.

참고:

레이아웃 정보와 스타일 정보의 두 계층은 각각 독립적으로 분리할 수 있습니다. 레이아웃 정보는 콘텐츠를 표시할 하나 이상의 공간이나 영역을 지정하며, 스타일 정보는 해당 레이아웃 안에서 표시하는 방식을 지정합니다.

경우에 따라 콘텐츠 작성자는 스타일 정보를 레이아웃이나 콘텐츠 정보에 직접 삽입(인라인화)할 수 있습니다. 이때는 참조 스타일 지정을 사용하는 대안도 있으며, 이 방식에서는 스타일 정보를 삽입(인라인화)하지 않습니다.

11.1 레이아웃 요소 어휘

다음 요소는 문서 인스턴스의 구조와 주요 레이아웃 측면을 지정합니다:

11.1.1 layout

layout 요소는 레이아웃 정보에 적용되는 메타데이터를 포함하여 아웃오브라인 레이아웃 정보를 묶는 컨테이너 요소입니다.

layout 요소의 자식으로는 Metadata.class 요소 그룹의 요소가 0개 이상 올 수 있으며, 그 뒤에 region 요소가 0개 이상 올 수 있습니다.

XML 표현 – 요소 정보 항목: layout
<layout
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: Metadata.class*, region*
</layout>

시간 의미론이 layout 요소의 콘텐츠에 적용되는 범위에서, 이 요소의 암시적 시간 구간은 루트 시간 범위와 시작 및 종료 시점이 같도록 정의됩니다.

11.1.2 region

region 요소는 프레젠테이션을 위해 콘텐츠가 흘러 들어갈 직사각형 공간이나 영역을 정의합니다.

region 요소는 (1) layout 요소의 자식이나 (2) Block.class 요소 그룹에 속한 요소의 자식으로 나타날 수 있습니다. 전자의 영역은 아웃오브라인 영역이라고 하며, 후자는 인라인 영역이라고 합니다.

또한 10.4.2.2 영역 스타일 상속에 따라, region 요소는 해당 영역으로 흘러 들어오는 콘텐츠가 상속할 수 있는 스타일 속성을 지정하는 데 사용할 수 있습니다.

region 요소의 자식으로는 Metadata.class 요소 그룹의 요소가 0개 이상 올 수 있으며, 그 뒤에 Animation.class 요소 그룹의 요소가 0개 이상, 이어서 style 요소가 0개 이상 올 수 있습니다.

Metadata.class 요소 그룹의 자식으로 지정한 메타데이터는 의미론적으로 region 요소와 그 자손 전체에 적용됩니다. Animation.class 요소 그룹의 자식으로 지정한 애니메이션 요소는 의미론적으로 region 요소에 적용됩니다. 모든 style 자식 요소는 이를 포함하는 region 요소에만 적용되는 로컬 스타일 정의로 간주해야 합니다. 즉, 참조 스타일 지정의 결정에는 적용되지 않지만 영역 스타일 상속에는 적용됩니다.

XML 표현 – 요소 정보 항목: region
<region
  animate = IDREFS
  begin = <time-expression>
  condition = <condition>
  dur = <time-expression>
  end = <time-expression>
  style = IDREFS
  timeContainer = ("par" | "seq")
  ttm:role = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {임의의 스타일 지정 속성}
  콘텐츠: Metadata.class*, Animation.class*, style*
</region>

아웃오브라인 region 요소에는 다음 타이밍 속성 중 하나 이상을 지정할 수 있습니다: begin, end, dur. 인라인 region 요소에는 타이밍 속성을 지정해서는 안 되며, 지정되어 있더라도 프레젠테이션 처리 시 무시해야 합니다.

아웃오브라인 region 요소에 begin 및/또는 end 속성이 지정되면, 이 속성은 영역을 활성화할 수 있는 시간 구간의 시작점 및/또는 끝점을 지정합니다. 영역의 애니메이션 자식 요소의 타이밍은 이 구간을 기준으로 정해집니다. 이러한 시작점과 끝점이 지정되면, 시간 구간이 명시적인지 암시적인지에 관계없이 시간 구간과 연관된 가장 가까운 조상 요소의 시간 구간을 기준으로 합니다. 아웃오브라인 region 요소에서 시간 구간과 연관된 가장 가까운 조상 요소는 layout 요소입니다. 아웃오브라인 region 요소에 dur 속성이 지정되면, 이 속성은 영역의 단순 지속 시간을 지정합니다.

인라인 region 요소의 활성 시간 구간은 부모 콘텐츠 요소의 활성 시간 구간입니다.

프레젠테이션 처리의 의미론을 결정할 때, 시간적으로 비활성인 영역은 시각 매체에 표시되어도 눈에 보이는 표시를 생성해서는 안 됩니다.

참고:

아웃오브라인 region 요소를 시간 구간과 연관시키는 목적은 두 가지입니다. (1) 영역과 그 콘텐츠의 프레젠테이션을 시간적으로 제한하고, (2) 영역 스타일의 애니메이션을 적용할 수 있는 시간 컨텍스트를 제공합니다.

예를 들어 작성자는 아웃오브라인 region 요소를 비어 있는 상태로 지정하되, 특정 시점부터 영역의 지속 시간 동안 보이는 배경색을 표시하도록 할 수 있습니다. 영역의 단순 지속 시간은 해당 영역을 대상으로 하는 콘텐츠의 프레젠테이션 효과 범위도 제한합니다. 또한 작성자는 애니메이션 효과로 영역을 루트 컨테이너 영역 안에서 이동하거나 배경색을 변경할 수 있습니다. 두 경우 모두 영역의 활성 시간 구간을 설정해야 합니다.

아웃오브라인 영역과 달리, 인라인 영역은 부모 콘텐츠 요소의 시간 컨텍스트에 직접 연결되므로, 독립적인 타이밍을 지정할 필요가 없으며 지정할 수도 없습니다.

region 요소에 timeContainer 속성이 지정되지 않으면, 병렬 시간 포함 의미론을 갖는 것으로 해석해야 합니다.

tts:origin과 tts:position 속성이 모두 region 요소에 있으면, tts:origin은 프레젠테이션 처리 시 무시해야 합니다. tts:origin과 tts:position 속성이 모두 없으면, 프레젠테이션 처리 시 tts:position 속성의 초깃값 의미론을 적용합니다.

ttm:role 속성이 region 요소에 지정되면, 구문 표현 – ttm:role에 정의된 값 구문을 따라야 합니다. 이 속성이 식별하는 역할은 해당 영역을 대상으로 하는 (영역과 연관된) 콘텐츠의 의미적 역할과는 독립적으로 영역 자체의 의미적 역할을 나타냅니다.

11.1.2.1 인라인 애니메이션의 특수 의미론

다음 스타일 속성이 div 또는 p 요소 E에 지정되면, 아래에 자세히 명시된 대로 E와 연관된 region R에 예외적으로 적용됩니다:

이 경우 각 스타일 속성의 적용은 익명 인라인 애니메이션과 동등한 것으로 간주합니다. 이 애니메이션은 set 애니메이션 요소 A의 형태이며, E의 활성 시간 구간과 같은 활성 시간 구간 동안 R에 적용됩니다. 여러 애니메이션 요소 (Ai , ..., Aj)가 이미 R에 적용되어 있으면, A는 기존 애니메이션 중 마지막 애니메이션 다음, 즉 Aj 바로 뒤에 적용됩니다.

참고:

같은 스타일 속성의 익명 인라인 애니메이션 여러 개가 영역 R에 적용되면, 이에 해당하는 set 애니메이션 요소 Aj , ..., Ak 는 이 애니메이션을 생성한 요소 Ej , ..., Ek의 전위 순회 순서에 따라 R에 추가됩니다.

또한 특정 요소의 특정 스타일 속성에 여러 애니메이션을 적용하는 의미론은 10.4.4.2 지정 스타일 집합 처리의 단계 (5), [애니메이션 스타일 지정]에 따릅니다.

다음 모델 예제는 tts:extent 스타일 속성을 사용하여 이러한 특수 의미론을 보여 줍니다. 이 모델은 위에 나열한 모든 스타일 속성에 일반적으로 적용됩니다:

예제 – 영역의 익명 인라인 애니메이션 - 입력 조각
<region xml:id="r1" tts:extent="80% 10%" .../>
...
<p region="r1" begin="10s" end="12s" tts:extent="70% 20%">크기 변경</p>

위 입력 조각 예제에서는 단락(p) 요소에 tts:extent 속성을 지정합니다. 일반성을 잃지 않고 이 요소에 시간 구간 [10s,12s)를 할당합니다. 그런 다음 이 속성으로 다음 출력 조각의 set 요소 형태인 익명 애니메이션을 합성합니다. 이때 해당 속성을 동등한 타이밍 속성과 함께 set 요소에 복사합니다. 이후 원래의 tts:extent를 단락(p)에서 제거합니다.

예제 – 영역의 익명 인라인 애니메이션 - 동등한 출력 조각
<region xml:id="r1" tts:extent="80% 10%" ...>
  <set begin="10s" end="12s" tts:extent="70% 20%"</set>
</region>
...
<p region="r1" begin="10s" end="12s">크기 변경</p>

출력 조각에서 영역의 원래 크기는 유지되지만, 지정된 시간 구간 동안 자식 애니메이션이 이 크기를 덮어쓰므로 의도한 대로 영역의 크기를 (일시적으로) 변경하는 효과가 발생합니다.

11.2 레이아웃 속성 어휘

이 절에서는 콘텐츠 요소에 사용하는 11.2.1 region 속성을 정의합니다.

11.2.1 region

region 속성은 region 요소를 참조합니다. 이 요소는 콘텐츠 요소가 흘러 들어갈 공간이나 영역을 정의합니다.

region 속성이 지정되면, 그 값은 [XML Schema Part 2], §3.3.9에 정의된 IDREF 데이터 유형을 따라야 하며, 이 IDREF는 layout 요소를 조상으로 갖는 region 요소를 참조해야 합니다.

region 속성은 다음 요소 유형의 인스턴스에 지정할 수 있습니다:

참고:

region 속성이 참조하는 region 요소가 조건부로 제외되면, 해당 영역은 region 속성이 지정된 요소와 연관되지 않습니다.

참고:

영역 내 콘텐츠 흐름에 관한 자세한 내용은 아래의 11.3.1 영역 레이아웃과 프레젠테이션을 참조하십시오.

11.3 레이아웃 의미론

11.3.1 영역 레이아웃과 프레젠테이션

이 절에서는 다음과 같은 표준 처리 모델을 통해 영역 레이아웃과 프레젠테이션의 의미론을 정의합니다:

외부에서 관찰할 수 있는 결과가 이 모델의 결과와 일치한다면 어떤 구현도 허용됩니다.

11.3.1.1 기본 영역

문서 인스턴스에 아웃오브라인 영역이 지정되지 않으면, 다음 특성을 가진 기본 영역이 암시됩니다:

또한 아웃오브라인 영역이 지정되지 않으면, region 속성을 문서 인스턴스의 어떤 콘텐츠 요소에도 지정해서는 안 됩니다.

특정 문서 인스턴스에 기본 영역이 암시되면, body 요소는 암시적으로 기본 영역을 대상으로 합니다(기본 영역과 연관됩니다).

기본 영역을 암시할 때는 문서 인스턴스를 다음 예제와 같이 region 요소와 그 부모 layout 요소가 head 요소 안에 지정되고, 이에 대응하는 region 속성이 body 요소에 지정된 것처럼 처리해야 합니다:

예제 – 암시적 기본 영역
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <layout>
      <region xml:id="anonymous"/>
    </layout>
  </head>
  <body region="anonymous"/>
</tt>

참고:

위 예제에서는 기본 region 요소와 region 속성이 암시됩니다. 또한 암시된 region 요소를 위한 layout 컨테이너 요소도 암시됩니다.

11.3.1.2 인라인 영역

인라인 영역은 영역 명세와 해당 영역을 참조하는 콘텐츠 사이의 구문적 거리를 최소화하여 영역을 지정하는 구문적 수단입니다. 의미론적으로 각 인라인 영역은 고유한 아웃오브라인 영역을 지정하는 것과 같습니다. 이 영역은 해당 인라인 영역이 지정된(또는 암시된) 컨텍스트의 콘텐츠 요소에 의해서만 암시적으로 참조됩니다.

인라인 영역은 Block.class 요소 그룹에 속한 콘텐츠 요소의 자식으로 region 요소를 지정하여 선언하며, 이를 인라인 영역 명세라고 합니다.

인라인 영역은 [인라인 영역 처리] 절차에 따라 처리됩니다. 이 절차는 인라인 영역에 대응하는 아웃오브라인 영역을 생성합니다. 또한 인라인 영역과 연관된 콘텐츠 요소를 생성된 해당 아웃오브라인 영역에 연결합니다.

참고:

콘텐츠 요소는 특정 중간 동시적 문서 안에서 하나의 영역과만 연관될 수 있습니다. 이 연관은 속성 지정이나 자식 region 요소를 통해 이루어집니다. 따라서 콘텐츠 요소에 region 속성이 지정되면, 모든 인라인 영역 명세는 무시됩니다.

[인라인 영역 처리]

Block.class 요소 그룹에 속한 각 콘텐츠 요소 B에 대해, 다음 단계를 순서대로 수행합니다:

  1. B의 [attributes] 정보 항목 속성에 region 속성이 포함되어 있으면, 이 절차를 종료합니다

  2. B의 [children] 정보 항목 속성에 region 요소 R이 포함되어 있지 않으면, 이 절차를 종료합니다;

  3. 빈 region 요소 R' 를 만들고, 다음과 같이 초기화합니다:

    • R' 의 [children] 정보 항목 속성을 R의 [children] 정보 항목 속성의 깊은 복사본으로 설정합니다;

    • R' 의 [attributes] 정보 항목 속성을 R의 [attributes] 정보 항목 속성의 깊은 복사본으로 설정합니다;

    • R' 의 [attributes] 정보 항목 속성에 xml:id 속성이 없으면, TTML 문서 인스턴스 범위 내에서 고유한 값 ID를 생성하여 암시적 xml:id 속성으로 추가합니다; 그렇지 않으면 ID를 R' 의 xml:id 속성값으로 설정합니다;

    • 다음 속성이 있으면 R' 의 [attributes] 정보 항목 속성에서 제거합니다: begin, dur, end;

    • R' 의 [attributes] 정보 항목 속성에 begin과 end 속성을 다음과 같이 추가합니다:

      1. smpte 시간 기준과 불연속 마커 모드로 동작하지 않으면, 이 begin과 end 속성값을 문서 시간 좌표 공간 내 B의 활성 시작 및 종료 시각에 각각 해당하는 값으로 설정합니다;

      2. 그렇지 않으면(smpte 불연속 모드), 이 begin과 end 속성값을 문서 시간 좌표 공간 내 B의 시작 및 종료 시각 각각에 적용되는 레이블이 있는 동기화 이벤트(마커)에 해당하는 값으로 설정합니다;

  4. TTML 문서 인스턴스에 head 요소가 없으면, 빈 head 요소를 tt 요소의 첫 번째 자식으로 삽입합니다;

  5. head 요소에 layout 자식 요소가 없으면, 빈 layout 요소를 삽입합니다. styling 요소가 있으면 그 바로 뒤에, animation 요소가 있으면 그 바로 앞에 삽입하며, 둘 다 없으면 head 요소의 마지막 자식으로 삽입합니다;

  6. R' 를 head 요소의 자식인 layout 요소의 [children] 정보 항목 속성 끝에 추가합니다;

  7. 값이 ID인 region 속성을 B의 [attributes] 정보 항목 속성에 추가합니다;

  8. B의 [children] 정보 항목 속성에서 R을 제거합니다.

다음 예제는 인라인 영역 명세의 사용과 그 결과로 생성되는 아웃오브라인 영역을 보여 줍니다.

예제 – 인라인 영역 명세
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head/>
  <body>
    <div begin="5s" dur="10s">
      <region tts:extent="540px 100px" tts:origin="50px 339px"/>
      <p>일부 콘텐츠</p>
    <div/>
  <body/>
</tt>

예제 – 생성된 아웃오브라인 영역
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml">
  <head>
    <layout>
      <region xml:id="region3451" begin="5s" end="15s"
        tts:extent="540px 100px" tts:origin="50px 339px"/>
    </layout>
  </head>
  <body>
    <div begin="5s" dur="10s" region="region3451">
      <p>일부 콘텐츠</p>
    <div/>
  <body/>
</tt>

참고:

위 두 예제에서 생성된 아웃오브라인 영역의 타이밍 속성에는 인라인 region 요소의 부모인 div 요소의 원래 dur 속성 대신 end 속성을 사용합니다. 이처럼 dur을 end로 변환하는 것은 생성된 아웃오브라인 영역의 활성 시간 구간을 루트 시간 범위 안에서 지정하기 위해 위 절차에서 요구하는 사항입니다.

참고:

이 예제에서 생성된 영역 ID인 region3451은 구현에 따라 달라집니다. 유일한 요구 사항은 xml:id 속성의 유효한 값이어야 한다는 것이며, 여기에는 문서 인스턴스 범위 내에서 고유해야 한다는 조건이 포함됩니다.

11.3.1.3 중간 동시적 문서 구성

프레젠테이션 처리를 수행하려면, (1) [타이밍 결정] 절차를 호출한 다음, (2) [중간 문서 구성] 절차를 호출합니다.

[타이밍 결정]
  1. 선택적으로 [익명 span 구성] 절차를 호출합니다; 이때 호출하지 않으면, 이 절차를 호출했을 때 암시적 지속 시간이 결정되었을 각 텍스트 노드에 대해 해당 암시적 지속 시간을 결정합니다;

  2. 현재 문서 인스턴스의 활성 지속 시간을 순서가 있는 시간 좌표 시퀀스 {T0, T1, T2, ...}로 나눕니다. 각 시간 좌표 Ti에서는 어떤 요소가 시간적으로 활성화되거나 비활성화됩니다.

[익명 span 구성]

다음 단계를 순서대로 수행합니다:

  1. 콘텐츠 요소의 자식인 각 유의미한 텍스트 노드에 대해, 해당 텍스트 노드를 감싸는 익명 span을 합성하고, 형제 및 부모 계층에서 원래 텍스트 노드 자식을 새 익명 span으로 대체합니다;

  2. 연속된 익명 span 시퀀스마다, 해당 시퀀스를 하나의 익명 span으로 대체합니다. 이 span에는 원래 익명 span 시퀀스의 개별 텍스트 노드 자식을 나타내는 텍스트 노드 시퀀스를 포함합니다;

  3. 자식이 단일 익명 span인 각 span 요소에 대해, 해당 익명 span을 그 자식 텍스트 노드 시퀀스로 대체합니다.

[중간 문서 구성]

[타이밍 결정] 절차에서 얻은 각 시간 구간에 대해, 각 구간이 연속된 시간 좌표 쌍 (Ti,Ti+1), 즉 (T0,T1), (T1,T2), …로 구성될 때, 다음 단계를 순서대로 수행하여 현재 문서 인스턴스를 원래 소스 형태인 DOCsource 에서 중간 동시적 문서 형태인 DOCinter 로 매핑합니다:

  1. [인라인 영역 처리] 절차를 호출합니다;

  2. 각 시간적으로 활성인 영역 R에 대해, body 요소를 루트로 하는 DOCsource의 하위 트리를 복제합니다;

  3. 이 하위 트리를 후위 순회로 평가하면서, 다음 조건 중 하나라도 참이면 해당 요소를 가지치기합니다:

    1. 프레젠테이션 관련 요소가 아닙니다 ; 또는

    2. 시간적으로 비활성입니다; 또는

    3. 비어 있으며 Animation 요소도 br 요소도 아닙니다; 또는

    4. [영역 연관] 절차에 따라 영역 R과 연관되지 않습니다.

  4. 가지치기한 하위 트리가 비어 있지 않으면, 그 부모를 R 요소로 변경합니다;

  5. 마지막으로 위 단계를 완료한 뒤, 중간 문서에서 원래 body 요소를 가지치기하고, 더 이상 의미론적으로 관련이 없는 모든 region, begin, end, dur 속성을 가지치기합니다.

참고:

이 절에서 요소에 대해 사용하는 가지치기라는 용어는 해당 요소를 부모의 자식 목록에서 제거한다는 뜻입니다. 따라서 가지치기한 요소의 자손도 더 이상 해당 요소의 부모의 자손이 아닙니다. 속성에 대해 가지치기를 사용하면, 해당 속성을 연관된(소유한) 요소 노드에서 제거한다는 뜻입니다.

참고:

규격을 준수하는 프레젠테이션 처리기는 위 절차의 후처리 단계로 스타일 결정을 미리 수행할 수 있습니다. 자세한 내용은 [흐름 변환] 절차의 단계 (2)를 참조하십시오.

[영역 연관]

콘텐츠 요소는 다음 순서의 규칙에 따라 영역과 연관됩니다. 처음 충족하는 규칙을 사용하고 나머지 규칙은 건너뜁니다:

  1. 요소에 region 속성이 지정되어 있고 해당 영역이 조건부로 제외되지 않으면, 요소는 해당 속성이 참조하는 영역과 연관됩니다;

  2. 요소의 조상에 region 속성이 지정되어 있고 해당 영역이 조건부로 제외되지 않으면, 요소는 이 속성을 지정한 가장 가까운 조상이 참조하는 영역과 연관됩니다;

  3. 요소가 region 속성을 지정한 자손 요소를 포함하고, 해당 영역이 조건부로 제외되지 않으면, 요소는 해당 속성이 참조하는 영역과 연관됩니다;

  4. region 요소가 전혀 없어 기본 영역이 암시되었다면, 요소는 기본 영역과 연관됩니다;

  5. 요소는 어떤 영역과도 연관되지 않습니다.

위 처리를 수행하면 N개의 중간 동시적 문서 인스턴스 시퀀스 DOCinter0 … DOCinterN−1가 생성됩니다.

참고:

구현이 인접한 두 동시적 문서 인스턴스인 DOCinterN와 DOCinterN−1 사이의 상당한 유사성을 감지할 수 있다면 , 처리기 구현은 두 인스턴스의 프레젠테이션 간 전환을 최대한 매끄럽게 처리할 수 있습니다. 예를 들어 [CTA-608-E], §C.3 및 [CC-DECODER-REQ]에 설명된 방식을 사용할 수 있습니다.

11.3.1.4 동시적 흐름 처리

시간적(동시적) 분할을 수행하고 영역별로 선택한 콘텐츠 계층을 다시 매핑한 후, 생성된 중간 동시적 문서에 흐름 변환 단계를 적용합니다. 이 단계는 [XSL-FO 1.1]에 정의된 XSL FO 문서 인스턴스로 표현되는 루트가 있는 흐름 객체 트리를 생성하며, XSL FO에 대응 항목이 없는 TTML 고유 스타일 속성으로 의미론을 확장합니다.

참고:

이 절에서 XSL FO는 개념적으로만 사용하며, TTML의 규범적 프레젠테이션 의미론을 정의하는 데에만 사용합니다. 이 알고리즘의 실제 구현은 XSL-FO 표현을 만들거나 처리할 필요가 없습니다. 특히 종속형 시트(CSS)와 같은 다른 프레젠테이션 모델로도 이 의미론을 구현할 수 있습니다.

참고:

특정 문서 인스턴스에는 [XSL-FO 1.1]에 대응 항목이 없는 TTML 스타일 속성이나 스타일 속성값이 있을 수 있습니다. 따라서 구현자는 이 명세가 [XSL-FO 1.1]의 레이아웃 모델을 참조하며, 규격을 준수하는 [XSL-FO 1.1] 서식 처리기의 사용을 요구하지 않는다는 점에 유의해야 합니다. 그러한 처리기는 이 명세에 정의된 전체 프레젠테이션 의미론을 충족하기에 반드시 충분한 것은 아니며, TTML의 프레젠테이션 의미론을 구현하는 데 불필요한 기능도 다수 포함하기 때문입니다.

프레젠테이션 처리를 위해, 11.3.1.3 중간 동시적 문서 구성으로 생성된 각 중간 동시적 문서 DOCinteri 에 대해, (1) 다음 [흐름 변환] 절차를 호출하여 XSL FO 문서 인스턴스 Fi 를 얻습니다. 그런 다음 (2) 시각 매체의 프레젠테이션이 필요하면, Fi에 [XSL-FO 1.1]과 이 명세의 규정에 부합하는 모든 관련 서식 지정 및 렌더링 의미론을 적용합니다.

[흐름 변환]
  1. 이전에 호출하지 않았다면, [익명 span 구성] 절차를 수행합니다;

    참고:

    규격을 준수하는 프레젠테이션 처리기는 이 단계를 더 이른 처리 단계에서 수행할 수 있으며, 이 경우 여기에서 반복하지 않습니다. 익명 span 구성이 11.3.1.3 중간 동시적 문서 구성에 정의된 중간 동시적 문서 구성보다 먼저 수행되면, 중간 동시적 문서에는 익명 span이 포함됩니다.

  2. 10.4.4.4 스타일 결정 과정에 따라 스타일을 결정합니다;

    참고:

    규격을 준수하는 프레젠테이션 처리기는 [중간 문서 구성] 절차를 수행하면서 후처리 단계로 이 단계를 수행할 수 있습니다. 이 경우 11.3.1.3 중간 동시적 문서 구성으로 생성된 각 중간 동시적 문서에는 계산 스타일 집합이 포함되므로, 여기에서 이 단계를 반복하지 않습니다.

  3. tt 요소를 fo:root 요소로 매핑합니다. 처음에는 유효한 fo:simple-page-master를 포함하는 fo:layout-master-set 요소를 배치하고, 해당 fo:simple-page-master는 fo:region-body 자식을 포함합니다. tt 요소에 표현된 루트 컨테이너 영역의 크기는 fo:simple-page-master 요소의 page-width와 page-height 속성으로 매핑합니다;

  4. layout 요소를 fo:page-sequence 요소와 그 자식 fo:flow 요소로 매핑합니다. 이들은 위에서 생성한 단순 페이지 마스터가 정의하는 페이지 마스터와 페이지 영역을 참조합니다;

    참고:

    [XSL-FO 1.1] 서식 처리기로 F를 서식 지정하여 생성한 XSL FO 영역 트리에서, page-viewport-area는 유일하게 생성된 fo:simple-page-master 요소를 fo:page-sequence 요소가 참조하여 생성합니다. 이는 위의 2 정의에서 정의한 루트 컨테이너 영역에 해당합니다.

  5. 비어 있지 않은 각 region 요소를 fo:block-container 요소로 매핑합니다. absolute-position 속성값은 absolute로 설정하고, top, left, bottom, right 속성은 영역의 원점 및 크기(패딩 포함)에 해당하는 직사각형을 나타내도록 설정하며, line-stacking-strategy 속성값은 line-height로 설정합니다;

    참고:

    영역의 크기는 fo:block-container가 생성하는 블록 영역의 할당 직사각형에 해당합니다.

    참고:

    region 요소를 fo:block-container로 매핑할 때, 영역이 포함 블록 밖으로 확장되면 top, left, bottom, right XSL-FO 속성 중 하나 이상에 음수 오프셋을 사용해야 할 수 있습니다.

  6. 각 (1) body, div, p 요소 또는 (2) 블록 수준 컨텍스트의 image 요소, 즉 Block.class 요소 그룹에 속한 요소의 image 자식에 대해, 해당 요소가 값이 none인 tts:display 스타일 속성과 연관되지 않으면:

    1. 요소가 image 요소가 아니면, 별도의 fo:block 요소로 매핑하고, 원래 TTML 콘텐츠 요소 각각과 연관된 계산 스타일 집합을 사용하여 fo:block의 스타일 속성을 채웁니다;

    2. 그렇지 않으면(요소가 image 요소이면), 단일 fo:external-graphic 자식 요소를 포함하는 별도의 fo:block 요소로 매핑합니다. 원래 TTML 콘텐츠 요소 각각과 연관된 계산 스타일 집합을 사용하여 fo:block과 fo:external-graphic의 스타일 속성을 채우고, 관련 이미지 리소스에 대한 적절한 참조를 사용하여 fo:external-graphic 요소의 src 속성을 채웁니다;

  7. 이전 단계에서 생성된 fo:block 서식 객체 중 body 요소에 해당하는 객체에 대해, 다음 하위 단계를 순서대로 수행합니다:

    1. 이 fo:block의 display-align 스타일 속성값이 center 또는 after이면, 다음 속성을 갖는 빈 fo:block을 합성하여 이 fo:block의 첫 번째 자식으로 삽입합니다: space-after.optimum, space-after.maximum, 그리고 space-after.conditionality. 앞의 두 속성값은 이를 포함하는 fo:block-container 요소의 높이 또는 너비 중 블록 진행 치수로 지정된 값이며, 마지막 속성값은 retain으로 설정합니다;

    2. 이 fo:block의 display-align 스타일 속성값이 center 또는 before이면, 다음 속성을 갖는 빈 fo:block을 합성하여 이 fo:block의 마지막 자식으로 삽입합니다: space-after.optimum, space-after.maximum, 그리고 space-after.conditionality. 앞의 두 속성값은 이를 포함하는 fo:block-container 요소의 높이 또는 너비 중 블록 진행 치수로 지정된 값이며, 마지막 속성값은 retain으로 설정합니다;

    참고:

    body 요소에 해당하는 fo:block의 블록 진행 치수에 축소 가능한 추가 공간을 삽입하는 목적은 이 fo:block의 앞쪽 및 뒤쪽 가장자리가 이를 포함하는 region에 해당하는 fo:block-container의 앞쪽 및 뒤쪽 가장자리와 일치하도록 하면서, 블록 진행 치수의 정렬 요구 사항도 충족하는 것입니다. 예를 들어 body 요소의 배경색이 transparent가 아니면, 포함 영역 전체를 채우도록 보장합니다.

  8. 각 (1) span 요소와 익명 span 또는 (2) 인라인 수준 컨텍스트의 image 요소, 즉 p 또는 span 요소의 image 자식에 대해, 해당 요소나 익명 span이 값이 none인 tts:display 스타일 속성과 연관되지 않으면:

    1. 객체가 익명 span이면, 해당 익명 span의 문자 항목 시퀀스를 별도의 fo:inline 요소로 매핑하고, 익명 span과 연관된 계산 스타일 집합을 사용하여 fo:inline의 스타일 속성을 채웁니다;

    2. 객체가 span 요소이면, 별도의 fo:inline 요소로 매핑하고, span과 연관된 계산 스타일 집합을 사용하여 fo:inline의 스타일 속성을 채웁니다;

    3. 그렇지 않으면(객체가 image 요소이면), 단일 fo:external-graphic 자식 요소를 포함하는 별도의 fo:inline 요소로 매핑합니다. image 요소와 연관된 계산 스타일 집합을 사용하여 fo:inline과 fo:external-graphic의 스타일 속성을 채우고, 관련 이미지 리소스에 대한 적절한 참조를 사용하여 fo:external-graphic 요소의 src 속성을 채웁니다;

  9. 값이 none인 tts:display 스타일 속성과 연관되지 않은 각 br 요소를 다음 속성을 갖는 별도의 fo:character 요소로 매핑합니다:

    • character="&#x000A;"

    • suppress-at-line-break="retain"

  10. 계산 스타일 집합의 각 스타일 속성 중 [XSL-FO 1.1]에 대응 항목이 없는 속성은, 해당 스타일 속성이 적용되는 입력 TTML 콘텐츠 요소가 생성하는 관련 서식 객체로 직접 매핑합니다;

  11. 선택적으로, 생성된 각 서식 객체 요소에 고유한 id 속성을 합성하여, 해당 요소를 그 서식 객체 요소의 생성에 사용된 입력 요소와 연결합니다;

11.3.1.5 상세 예제 (비규범적)

위 처리 단계의 예제를 예제 – 샘플 소스 문서부터 시작하여 아래에 자세히 설명합니다.

예제 – 샘플 소스 문서
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
      </region>
    </layout>
  </head>
  <body xml:id="b1">
    <div xml:id="d1" begin="0s" dur="2s">
      <p xml:id="p1" region="r1">텍스트 1</p>
      <p xml:id="p2" region="r2">텍스트 2</p>
    </div>
    <div xml:id="d2" begin="1s" dur="2s">
      <p xml:id="p3" region="r2">텍스트 3</p>
      <p xml:id="p4" region="r1">텍스트 4</p>
    </div>
  </body>
</tt>

위 문서의 콘텐츠 계층은 각각 두 단락을 포함하는 두 구획으로 구성됩니다. 이 콘텐츠는 위치와 전경색을 제외하면 스타일이 같고 서로 겹치지 않는 두 영역 중 하나를 대상으로 합니다(해당 영역과 연관됩니다). 전경색은 부모가 해당 영역으로 변경된 span(이 경우 익명 span)에 상속되어 적용됩니다.

다음 첫 번째 중간 문서는 시간 구간 [0,1)의 동시적 상태를 보여 줍니다. 이 구간에서는 구획 d1만 시간적으로 활성이고, 단락 p1과 p2(및 그 조상)는 각각 영역 r1과 r2에 연관됩니다.

참고:

아래 중간 문서는 유효한 문서 인스턴스가 아니라, 설명을 위해 가능한 내부 처리 상태를 표현한 것입니다.

예제 – 중간 문서 – [0s,1s)
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-1">
          <div xml:id="d1-1">
            <p xml:id="p1">텍스트 1</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d1-2">
            <p xml:id="p2">텍스트 2</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

첫 번째 중간 문서에 흐름 처리를 수행하여 생성할 수 있으며, TTML과 일치하는 렌더링 결과를 내는 XSL FO 문서 인스턴스를 아래에 보여 줍니다.

예제 – XSL FO 문서 – [0s,1s)
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="m1"
      page-width="640px" page-height="480px">
      <fo:region-body/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="m1">
    <fo:flow flow-name="xsl-region-body">
      <!-- region (r1) -->
      <fo:block-container id="r1" absolute-position="absolute"
        left="10px" top="100px" width="620px" height="96px"
        background-color="black" display-align="center">
        <!-- body (b1) -->
        <fo:block id="b1-1">
          <!-- body의 공간(앞쪽) 채우기 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
          <!-- div (d1) -->
          <fo:block id="d1-1">
            <!-- p (p1) -->
            <fo:block id="p1" text-align="center">
              <fo:inline font-size="40px" font-weight="bold"
              color="red">텍스트 1</fo:inline>
            </fo:block>
          </fo:block>
          <!-- body의 공간(뒤쪽) 채우기 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
        </fo:block>
      </fo:block-container>
      <!-- region (r2) -->
      <fo:block-container id="r2" absolute-position="absolute"
        left="10px" top="300px" width="620px" height="96px"
        background-color="black" display-align="center">
        <!-- body (b1) -->
        <fo:block id="b1-2">
          <!-- body의 공간(앞쪽) 채우기 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
          <!-- div (d1) -->
          <fo:block id="d1-2">
            <!-- p (p2) -->
            <fo:block id="p2" text-align="center">
              <fo:inline font-size="40px" font-weight="bold"
              color="yellow">텍스트 2</fo:inline>
            </fo:block>
          </fo:block>
          <!-- body의 공간(뒤쪽) 채우기 -->
          <fo:block
            space-after.optimum="96px"
            space-after.maximum="96px"
            space-after.conditionality="retain"/>
        </fo:block>
      </fo:block-container>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

다음 두 번째 중간 문서는 시간 구간 [1,2)의 동시적 상태를 보여 줍니다. 이 구간에서는 구획 d1과 d2가 모두 시간적으로 활성이고, 단락 p1과 p4(및 그 조상)는 영역 r1에 연관되며, 단락 p2와 p3(및 그 조상)는 영역 r2에 연관됩니다.

예제 – 중간 문서 – [1s,2s)
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-1">
          <div xml:id="d1-1">
            <p xml:id="p1">텍스트 1</p>
          </div>
          <div xml:id="d2-1">
            <p xml:id="p4">텍스트 4</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d1-2">
            <p xml:id="p2">텍스트 2</p>
          </div>
          <div xml:id="d2-2">
            <p xml:id="p3">텍스트 3</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

다음 세 번째 중간 문서는 시간 구간 [2,3)의 동시적 상태를 보여 줍니다. 이 구간에서는 구획 d2만 시간적으로 활성이고, 단락 p4와 p3(및 그 조상)는 각각 영역 r1과 r2에 연관됩니다.

예제 – 중간 문서 – [2s,3s)
<tt tts:extent="640px 480px" xml:lang="en"
  xmlns="http://www.w3.org/ns/ttml"
  xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1">
        <style tts:origin="10px 100px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="red"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-1">
          <div xml:id="d2-1">
            <p xml:id="p4">텍스트 4</p>
          </div>
        </body>
      </region>
      <region xml:id="r2">
        <style tts:origin="10px 300px"/>
        <style tts:extent="620px 96px"/>
        <style tts:fontSize="40px"/>
        <style tts:fontWeight="bold"/>
        <style tts:backgroundColor="black"/>
        <style tts:color="yellow"/>
        <style tts:textAlign="center"/>
        <style tts:displayAlign="center"/>
        <body xml:id="b1-2">
          <div xml:id="d2-2">
            <p xml:id="p3">텍스트 3</p>
          </div>
        </body>
      </region>
    </layout>
  </head>
</tt>

11.3.2 줄 레이아웃

단락을 나타내는 p 요소를 프레젠테이션 처리기가 처리할 때, 그 콘텐츠는 줄바꿈으로 분할되며, 각 조각은 고유한 줄 영역에 할당됩니다. 이와 관련하여 이 명세는 [XSL-FO 1.1], 특히 §4.5, §4.6 및 §4.7에 정의된 서식 지정 모델에 기반한 모델을 채택합니다.

11.3.2.1 줄바꿈

문서 인스턴스에 적용되는 프로파일이 #lineBreak-uax14 기능의 지원이나 사용을 요구하면, 줄바꿈 알고리즘 [UAX14]의 권장 사항을 해당 문서 인스턴스 콘텐츠의 줄 레이아웃에 적용합니다.

11.3.2.2 줄 쌓기

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

줄 영역의 블록 진행 치수, 통상 줄 높이라고 부르는 값의 계산은 특히 복잡할 수 있습니다. 여러 글꼴 패밀리, 글꼴 크기, 글꼴 스타일, 글꼴 리소스와 함께 루비, 텍스트 강조, 텍스트 결합(다테추요코) 등의 고급 텍스트 서식 기능을 적용할 때 특히 그렇습니다.

이 과정에서 생성되는 각 줄 영역은 쌓입니다. 즉, 가로쓰기에서는 앞선 줄 영역의 수직 아래쪽에, 세로쓰기에서는 앞선 줄의 수평 옆쪽에 배치됩니다. [흐름 변환] 절차의 단계 (5)에 명시된 대로, TTML은 line-height 줄 쌓기 전략을 사용합니다. 이 전략은 [XSL-FO 1.1], §4.5에 정식으로 정의되어 있으며, 아래에서는 해당 절의 용어와 개념을 사용합니다.

이 전략을 사용할 때 줄 영역의 치수는 해당 줄 영역에 대해 계산한 per-inline-height-rectangle의 치수에 해당합니다. 해당 줄 영역의 이 치수는 다음 두 치수를 평가하여 결정됩니다. (1) 단락의 각 줄 영역에서 동일한 expanded-nominal-requested-line-rectangle의 치수와 (2) 줄 영역의 각 인라인 영역 자식의 expanded-rectangle 치수입니다. 후자는 단락의 각 줄 영역에 속한 인라인 영역마다 달라질 수 있습니다.

위에서 언급한 줄 높이를 tts:lineHeight 속성과 연관된 스타일 속성의 계산값과 혼동해서는 안 됩니다. 후자는 줄 영역과 개별 인라인 영역에 적용하는 반행간을 계산하는 매개변수입니다. 이 반행간은 각각 (1) 줄 영역의 expanded-nominal-requested-line-rectangle 치수와 (2) 해당 줄 영역의 자식인 인라인 영역의 expanded-rectangle 치수를 결정하는 매개변수입니다. 줄 영역에 적용하는 반행간과 해당 줄 영역의 자식인 인라인 영역에 적용하는 반행간은 서로 다른 값인 경우가 많습니다. 줄 영역에 적용되는 경우의 자세한 내용은 [XSL-FO 1.1], §6.5.2에서 확인할 수 있습니다. 특정 인라인 영역에도 비슷한 처리가 적용됩니다. 이는 [XSL-FO 1.1]에 명시되어 있지는 않지만, [CSS2], §10.8.1의 설명에서 추론할 수 있습니다.

요약하면, [XSL-FO 1.1], §4.5에 정의되고 TTML이 채택한 line-height 줄 쌓기 전략의 동작은 [CSS2]의 줄 쌓기 전략과 호환되도록 설계되었으며, 다음을 의미합니다:

  • 단락의 tts:lineHeight 계산값이 normal이면, (1) 단락의 각 줄 영역은 같은 단락의 앞선 줄 영역에 정확히 맞닿고 겹치지 않으며, (2) 단락의 줄 영역의 줄 높이는 각 줄 영역에서 스타일이 적용된 콘텐츠에 따라 달라집니다;

  • 단락의 tts:lineHeight 계산값이 지정된 <length>이면, 단락의 줄 영역들은 서로 정확히 맞닿지만, 콘텐츠 직사각형은 (1) 콘텐츠를 담는 데 필요한 것보다 블록 진행 치수의 공간을 적게 차지할 수 있으며, 이 경우 콘텐츠가 단락의 앞선 줄 영역과 겹칠 수 있습니다. 또는 (2) 콘텐츠를 담는 데 필요한 것보다 블록 진행 치수의 공간을 더 많이 차지할 수 있습니다.

참고:

다음 고급 텍스트 서식 기능 중 하나라도 줄의 콘텐츠에 적용되면, 줄 높이에 추가 조정이 발생할 수 있습니다:

  • 루비 텍스트 주석

  • 텍스트 결합(다테추요코)

  • 텍스트 강조

  • (글리프별) 글꼴 전단

11.3.3 렌더링 모델

이 절에서는 서식이 지정된 TTML 문서 인스턴스의 렌더링과 관련된 특정 측면을 자세히 명세합니다.

11.3.3.1 그리기 순서

프레젠테이션 처리기가 사용하는 렌더링 순서는 [XSL-FO 1.1], §4.9의 렌더링 모델과 일치해야 합니다. 또한 다음 제약 조건이 적용됩니다:

  • 루비 텍스트 span이 생성한 줄 영역의 인라인 영역 자손은 해당 줄 영역의 다른 인라인 영역 자손 뒤에 렌더링됩니다;

  • image 요소가 생성한 블록 영역이나 인라인 영역의 고유 표시는 연관된 이미지의 래스터로 구성됩니다.

참고:

tts:backgroundImage 속성이 참조하는 image 요소가 생성한 표시는 블록 영역이나 인라인 영역의 고유 표시에 포함되지 않습니다. 즉, 이는 영역의 배경 표시의 일부입니다.

12 타이밍

이 절에서는 핵심 어휘 목록의 타이밍 정보를 명세합니다. 타이밍은 콘텐츠에 적용되는 분리 가능한 정보 계층으로, 해당 콘텐츠의 시간적 프레젠테이션에 관한 작성자의 의도를 나타냅니다.

12.1 타이밍 요소 어휘

핵심 어휘 목록에서 사용하는 타이밍 관련 요소 어휘는 정의되어 있지 않습니다.

12.2 타이밍 속성 어휘

이 절에서는 시간 지정 요소에 사용하는 다음 기본 타이밍 속성을 정의합니다:

또한 타이밍 컨테이너 역할도 하는 시간 지정 요소에 사용하는 12.2.4 timeContainer 속성을 정의합니다.

12.2.1 begin

begin 속성은 시간 지정 요소와 연관된 시간 구간의 시작점을 지정합니다. 이 속성이 지정되면, begin 속성값은 12.3.1 <time-expression>에 정의된 <time-expression> 명세를 따라야 합니다.

시간 구간의 시작점은 해당 구간에 포함됩니다. 즉, 구간의 왼쪽 끝은 닫혀 있습니다.

begin 속성의 의미론은 [SMIL 3.0], §5.4.3의 정의를 따르며, 이 명세에서 재정의한 의미론을 고려합니다.

참고:

[SMIL 3.0], §5.4.3에 정의된 대로, 시간 지정 요소에 begin 속성이 명시되지 않으면, 속성의 기본값은 가장 가까운 시간 컨테이너 조상이 결정합니다. 다만 TTML에서 해당 조상은 병렬 시간 컨테이너 또는 순차 시간 컨테이너이며, 둘 다 기본값 0s를 적용합니다.

12.2.2 dur

dur 속성은 시간 지정 요소와 연관된 시간 구간의 지속 시간을 지정합니다. 이 속성이 지정되면, dur 속성값은 12.3.1 <time-expression>에 정의된 <time-expression> 명세를 따라야 합니다.

참고:

<time-expression> 명세의 clock-time 형식을 dur 속성에 사용하면, 암시된 두 시계 시간 표현식의 차이로 해석하도록 의도된 것입니다.

문서 인스턴스에서 smpte 시간 기준과 discontinuous 마커 모드를 사용하도록 지정하면, 어떤 요소에도 (올바른 형식의) dur 속성을 지정해서는 안 됩니다.

dur 속성의 의미론은 [SMIL 3.0], §5.4.3의 정의를 따르며, 이 명세에서 재정의한 의미론을 고려합니다. [SMIL 3.0], §5.4.3과 의도적으로 다르게, dur 속성값으로 0(0s)을 허용합니다.

참고:

이 명세가 지원하는 [SMIL 3.0] 의미론의 하위 집합에서는, end와 dur 속성을 모두 지정한 요소의 활성 지속 시간은 dur 속성값과 end 속성값에서 요소의 시작 시각을 뺀 값 중 작은 값입니다.

12.2.3 end

end 속성은 시간 지정 요소와 연관된 시간 구간의 끝점을 지정합니다. 이 속성이 지정되면, end 속성값은 12.3.1 <time-expression>에 정의된 <time-expression> 명세를 따라야 합니다.

시간 구간의 끝점은 해당 구간에 포함되지 않습니다. 즉, 구간의 오른쪽 끝은 열려 있습니다.

비어 있지 않은 활성 시간 구간의 프레젠테이션 효과는 끝점이 지정한 시각과 같거나 그 바로 뒤에 있는 프레임(또는 틱)의 직전 프레임까지 포함하지만, 해당 끝점의 프레임(또는 틱)까지 이어지지는 않습니다.

참고:

예를 들어 활성 구간이 [10s,10.33333s)이고 프레임률이 초당 30프레임이면, 해당 구간의 프레젠테이션 효과는 프레임 300부터 309까지로 제한됩니다(0s가 프레임 0에 해당한다고 가정). 활성 구간을 [300f,310f)로 지정해도 마찬가지입니다.

end 속성의 의미론은 [SMIL 3.0], §5.4.3의 정의를 따르며, 이 명세에서 재정의한 의미론을 고려합니다.

12.2.4 timeContainer

timeContainer 속성은 시간 지정 자식 요소의 시간적 위치를 정하는 로컬 시간 컨텍스트를 지정합니다.

timeContainer 속성이 지정되면, 그 값은 다음 중 하나여야 합니다:

  • par

  • seq

요소 인스턴스의 시간 컨테이너 의미론이 par이면, 자식 요소의 시간 구간은 병렬로, 즉 시간적으로 동시에 적용되는 것으로 간주합니다. 또한 각 자식 요소의 시간 구간 명세는 컨테이너 요소 인스턴스의 시간 구간을 기준으로 하는 것으로 간주합니다. par 시간 컨테이너의 [SMIL 3.0] endsync 의미론을 결정할 때는 기본값 all을 적용합니다.

참고:

endsync 동작에 기본값 all을 사용하는 것은 기본값 last를 사용하는 [SMIL 3.0]과 다릅니다.

요소 인스턴스의 시간 컨테이너 의미론이 seq이면, 자식 요소의 시간 구간은 순차적으로, 즉 시간 순서대로 적용되는 것으로 간주합니다. 또한 각 자식 요소의 시간 구간 명세는 형제 요소의 시간 구간을 기준으로 하는 것으로 간주합니다. 다만 첫 번째 자식 요소는 컨테이너 요소 인스턴스의 시간 구간을 기준으로 하는 것으로 간주합니다.

각 시간 컨테이너는 독립적인 시간 기준, 즉 시간 좌표계를 구성하는 것으로 간주합니다.

시간 컨테이너 의미론이 있는 요소에 timeContainer 속성이 지정되지 않으면, par 시간 컨테이너 의미론을 적용해야 합니다.

시간 컨테이너 의미론은 다음 요소 유형에만 적용됩니다:

병렬 및 순차 시간 포함의 의미론은 [SMIL 3.0], §5.4.4의 정의를 따르며, 이 명세에서 재정의한 의미론을 고려합니다.

12.3 시간 값 표현식

타이밍 속성값에는 다음 표현식을 사용합니다:

12.3.1 <time-expression>

<time-expression>은 특정 시간 기준 내의 좌표를 지정합니다. 적용되는 시간 기준은 ttp:timeBase 매개변수로 결정되며, I 시간 표현식 의미론에 정의된 의미론을 적용합니다.

참고:

프레임률, 서브프레임률, 틱률 및 시간 기준을 명시적으로 지정하는 방법의 자세한 내용은 7.2.5 ttp:frameRate, 7.2.9 ttp:subFrameRate, 7.2.10 ttp:tickRate, 7.2.11 ttp:timeBase를 함께 참조하십시오.

구문 표현 – <time-expression>
<time-expression>
  : clock-time
  | offset-time
  | wallclock-time

clock-time
  : hours ":" minutes ":" seconds ( fraction | ":" frames ( "." sub-frames )? )?

offset-time
  : time-count fraction? metric

wallclock-time
  : "wallclock(" <lwsp>? ( date-time | wall-time | date ) <lwsp>? ")"

date-time
  : date "T" wall-time

wall-time
  : ( hhmm-time | hhmmss-time )

date
  : years "-" months "-" days

hhmm-time
  : hours2 ":" minutes

hhmmss-time
  : hours2 ":" minutes ":" seconds fraction?

years
  : <digit> <digit> <digit> <digit>

hours
  : hours2
  | hours3plus

hours3plus
  : <digit> <digit> <digit>+

months | days | hours2 | minutes | seconds
  : <digit> <digit>

frames
  : <digit> <digit>
  | <digit> <digit> <digit>+

sub-frames
  : <digit>+

fraction
  : "." <digit>+

time-count
  : <digit>+

metric
  : "h"                 // 시간
  | "m"                 // 분
  | "s"                 // 초
  | "ms"                // 밀리초
  | "f"                 // 프레임
  | "t"                 // 틱

<time-expression>에는 <whitespace> 문자를 포함해서는 안 됩니다. 다만 앞선 구문 정의에서 <lwsp> 비단말 기호가 나타나 명시적으로 허용한 위치는 예외입니다.

<time-expression>을 clock-time으로 표현하면, 10 미만의 시간, 분, 초 및 프레임에는 앞에 0을 붙입니다. 분은 [0…59]로 제한되며, 초(소수 부분 포함)는 닫힌 구간 [0,60]으로 제한됩니다. 값 60은 윤초에만 적용됩니다. ttp:timeBase가 clock이고 ttp:clockMode가 local 또는 utc인 경우를 제외하고, 윤초를 나타내기 위해 60초라는 특수값을 사용하는 것은 사용 중단 예정입니다. 프레젠테이션 처리 시 다른 시간 기준이나 시계 모드에서 이 특수값이 나타나면, 값 59가 지정된 것처럼 해석해야 합니다.

<time-expression>을 clock-time으로 표현하고 frames 항을 지정하면, 해당 항의 값은 [0…F-1] 구간으로 제한해야 합니다. 여기서 F는 7.2.5 ttp:frameRate에 정의된 대로 ttp:frameRate 매개변수로 결정되는 프레임률입니다. clock 시간 기준이 적용될 때 frames 항이나 f(프레임) 단위를 지정하면 오류로 간주합니다.

<time-expression>을 clock-time으로 표현하고 sub-frames 항을 지정하면, 해당 항의 값은 [0…S-1] 구간으로 제한해야 합니다. 여기서 S는 7.2.9 ttp:subFrameRate에 정의된 대로 ttp:subFrameRate 매개변수로 결정되는 서브프레임률입니다. clock 시간 기준이 적용될 때 sub-frames 항을 지정하면 오류로 간주합니다.

문서 인스턴스에서 <time-expression>의 wallclock-time 형식을 사용하면서 지배적인 시간 기준이 clock이 아니면 오류로 간주합니다.

지배적인 시간 기준의 계산값이 smpte이면, (1) <time-expression>의 offset-time 형식 사용은 사용 중단 예정이며, (2) <time-expression>의 clock-time 형식에서 초의 fraction 구성 요소를 사용하는 것도 사용 중단 예정입니다.

참고:

위에 명시된 <time-expression> 구문은 시간대 정보의 표현을 명시적으로 제외합니다. 작성자가 <time-expression>을 특정 시간대와 연관시키려면, 시간 표현식을 UTC로 변환하고 utc 시계 모드를 사용하도록 지정할 수 있습니다. 관련 내용은 7.2.2 ttp:clockMode를 참조하십시오.

12.4 타이밍 의미론

[SMIL 3.0]에 정의된 시간 포함, 지속 시간 및 구간의 의미론은 이 명세에서 정의한 동일한 이름의 시간 지정 요소와 타이밍 어휘의 해석에 적용되며, 다음 제약 조건을 따릅니다:

  • 익명 span의 암시적 지속 시간은 다음과 같이 정의됩니다: 익명 span의 부모 시간 컨테이너가 병렬 시간 컨테이너이면, 암시적 지속 시간은 [SMIL 3.0]에 정의된 indefinite 지속 시간 값과 같습니다. 익명 span의 부모 시간 컨테이너가 순차 시간 컨테이너이면, 암시적 지속 시간은 0과 같습니다.

  • animate, audio, br, image 또는 set 요소의 암시적 지속 시간은 해당 요소를 익명 span으로 취급했을 때와 같도록 정의됩니다.

  • 비혼합 콘텐츠, 즉 #PCDATA 텍스트 노드만 포함하는 span 요소의 암시적 지속 시간은, 해당 span 요소를 익명 span으로 취급했을 때와 같도록 정의됩니다.

  • 혼합 콘텐츠를 포함하는 body, div, p, span 요소의 암시적 지속 시간은 (1) 해당 요소가 병렬 시간 컨테이너인지 순차 시간 컨테이너인지, (2) 위의 12.2.4 timeContainer에서 정의한 기본 endsync 의미론, (3) 이 시간 컨테이너에 적용되는 [SMIL 3.0]의 의미론에 따라 결정됩니다.

  • region 요소의 암시적 지속 시간은 [SMIL 3.0]에 정의된 indefinite 지속 시간 값과 같도록 정의됩니다.

  • 지배적인 시간 기준이 clock이면, 시간 표현식은 [SMIL 3.0]의 벽시계 기반 타이밍과 동등한 것으로 간주하며, I.1 시계 시간 기준의 구체적인 의미론을 적용합니다.

  • 지배적인 시간 기준이 media이면, 시간 표현식은 [SMIL 3.0]의 오프셋 기반 타이밍과 동등한 것으로 간주하며, I.2 미디어 시간 기준의 구체적인 의미론을 적용합니다.

  • 지배적인 시간 기준이 smpte이면, 시간 표현식은 [SMIL 3.0]의 오프셋 기반 타이밍 또는 이벤트 기반 타이밍과 동등한 것으로 간주하며, 다음 절의 구체적인 의미론을 적용합니다: I.3 SMPTE 시간 기준.

12.4.1 익명 span 타이밍

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

다음 예제는 순차 및 병렬 시간 컨테이너의 자식인 익명 span의 타이밍 의미론을 보여 줍니다. 안녕하세요와 여보세요는 모두 순차 시간 컨테이너 (p 요소)의 자식인 익명 span에 포함됩니다. 따라서 안녕하세요와 여보세요는 모두 표시되지 않습니다. 익명 span의 암시적 지속 시간이 0이기 때문입니다. 반면 좋은이라는 단어를 포함하는 익명 span과 하루라는 단어를 포함하는 가장 안쪽의 span은 병렬 시간 컨테이너 의미론을 갖는 요소(가장 바깥쪽 span 요소)의 자식입니다. 따라서 좋은과 하루는 모두 표시됩니다. 각각의 부모 익명 span과 span 요소의 암시적 지속 시간이 무기한이며, 그 결과 조상인 span, p, div, body의 암시적 지속 시간도 무기한이 되기 때문입니다.

예제 조각 – 순차 및 병렬 시간 컨테이너에 속한 익명 span의 타이밍
...
<body>
  <div>
    <p timeContainer="seq">
      안녕하세요
      <span>좋은 <span>하루</span></span>
      여보세요
    </p>
  </div>
</body>

13 애니메이션

이 절에서는 핵심 어휘 목록의 애니메이션 정보를 명세합니다. 애니메이션은 타이밍과 스타일 지정을 결합하는 분리 가능한 정보 계층으로, 콘텐츠의 (시간적으로) 동적인 스타일 지정에 관한 작성자의 의도를 나타냅니다.

13.1 애니메이션 요소 어휘

다음 요소는 문서 인스턴스의 구조와 주요 애니메이션 측면을 지정합니다:

13.1.1 animate

animate 요소는 연관된 요소의 하나 이상의 애니메이션 가능한 스타일을 대상으로 적용할 일련의 변경(애니메이션)을 표현합니다.

animate 요소는 (1) 콘텐츠 요소나 region 요소의 자식으로 나타날 수 있으며, 이를 인라인 애니메이션이라고 합니다. 또는 (2) animation 요소의 자식으로 나타날 수 있으며, 이를 아웃오브라인 애니메이션이라고 합니다. 전자의 경우 animate 요소의 부모가 연관된 요소이며, 후자의 경우 animate 속성으로 해당 animate 요소를 참조하는 모든 요소가 연관된 요소입니다.

animate 요소의 자식으로는 Metadata.class 요소 그룹의 요소가 0개 이상 올 수 있습니다.

XML 표현 – 요소 정보 항목: animate

스타일 지정 속성은 animate 요소의 직접적인 대상이 됩니다. 애니메이션 값의 목록(시퀀스)은 <animation-value-list> 구문을 따르며, 목록을 구성하는 각 <animation-value>는 지정된 속성의 구문을 따릅니다.

애니메이션할 수 없는 스타일을 대상으로 지정하면 오류로 간주하며, 프레젠테이션 처리 시 무시해야 합니다.

참고:

[SVG 1.1], §19.2.12와 달리, 여기에 정의된 단일 animate 요소는 하나의 스타일 지정 속성만을 대상으로 하는 데 제한되지 않고, 대상 스타일 지정 속성 집합에 연속 애니메이션을 수행할 수 있습니다. [SVG 1.1]에서는 이를 위해 단일 animate 요소 대신 여러 animate 요소가 필요합니다.

또한 애니메이션을 적용할 스타일 속성과 키 값을 직접 지정하므로, [SVG 1.1], §19.2.9에 정의된 from, to, by, values 애니메이션 값 속성을 사용할 필요가 없습니다.

animate 요소와 위에 나열한 속성의 의미론은 [SVG 1.1], §19.2에 명시된 것으로 정의되며, 다음 제약 조건과 추가 설명이 적용됩니다:

  1. animate 요소가 대상으로 하는 속성과 해당 속성에 적용할 값은 스타일 지정 속성을 직접 사용하여 지정합니다. 따라서 [SVG 1.1]에 정의된 attributeName, from, to, by, values 속성은 이 버전의 TTML에서 지원하지 않습니다.

    참고:

    이름이 직접 명시된 스타일 속성을 사용하는 효과는 여러 [SVG 1.1] animate 요소를 지정하고, 각 요소에 attributeName과 values 속성을 지정하는 것과 같습니다.

    참고:

    예를 들어 tts:color="red;green;blue"를 지정하는 것은 [SVG 1.1]에서 attributeName="tts:color"와 values="red;green;blue"를 지정하는 것과 동등한 것으로 간주합니다.

  2. calcMode 속성이 지정되지 않으면, calcMode 값으로 linear를 적용합니다.

    참고:

    이 암시적 값은 [SVG 1.1], §19.2.9의 기본값에 해당합니다.

  3. 대상 애니메이션 가능한 스타일에 이산적 애니메이션은 가능하지만 연속적 애니메이션은 불가능할 때, 적용되는 calcMode 속성값이 discrete가 아니면 오류로 간주합니다. 이 경우 대상 애니메이션 가능한 스타일을 프레젠테이션 처리 시 무시해야 합니다.

  4. fill 속성이 지정되지 않으면, fill 값으로 remove를 적용합니다.

    참고:

    이 암시적 값은 [SVG 1.1], §19.2.9의 기본값에 해당합니다.

  5. keyTimes 속성이 지정되고 calcMode 계산값이 "paced"이면, 이러한 사용을 오류로 간주해야 하며, 프레젠테이션 처리 시 해당 애니메이션을 무시해야 합니다.

  6. keyTimes 속성이 지정되고 calcMode 계산값이 "paced"가 아니면, keyTimes 속성에 지정된 시간 구성 요소 수는 애니메이션을 적용하는 각 속성에 지정된 애니메이션 값의 수와 일치해야 합니다.

    참고:

    이 제약 조건은 같은 animate 요소가 하나의 속성을 대상으로 하는지 여러 속성을 대상으로 하는지와 관계없이 적용됩니다. 따라서 여러 속성을 대상으로 할 때는 각 애니메이션 속성의 <animation-value-list>에 같은 수의 값을 지정해야 합니다.

    참고:

    예를 들어 아래의 첫 번째 animate 요소는 유효합니다. 애니메이션 속성에 값이 3개 있기 때문입니다. 두 번째와 세 번째 요소는 유효하지 않습니다. 두 번째는 애니메이션 속성의 값이 2개지만 키 시각은 3개 지정되어 있고, 세 번째는 첫 번째 애니메이션 속성의 값이 2개, 두 번째 애니메이션 속성의 값이 4개지만 키 시각은 3개 지정되어 있습니다:

    <!-- 키 시각 수가 일치하는 단일 속성의 유효한 애니메이션 -->
    <animate xml:id="a1" keyTimes="0;0.2;1" tts:color="red;green;blue"/>
    
    <!-- 키 시각 수가 일치하지 않는 단일 속성의 유효하지 않은 애니메이션 -->
    <animate xml:id="a2" keyTimes="0;0.2;1" tts:color="red;green"/>
    
    <!-- 키 시각 수가 일치하지 않는 여러 속성의 유효하지 않은 애니메이션 -->
    <animate xml:id="a3" keyTimes="0;0.2;1"
      tts:color="red;green" tts:backgroundColor="cyan;magenta;yellow;black"/>
    
  7. keyTimes 속성이 지정되지 않고 calcMode 계산값이 "paced"가 아니면, 애니메이션의 단순 지속 시간 전체에 걸쳐 지정된 애니메이션 값을 균등한(선형) 간격으로 배치하는 keyTimes 값을 적용합니다.

    참고:

    예를 들어 애니메이션 스타일이 tts:color="red;green;blue"로 지정되면, keyTimes의 암시적 값은 "0;0.5;1"입니다.

  8. keySplines 속성이 지정되고 calcMode 계산값이 "spline"이 아니면, 이러한 사용을 오류로 간주해야 하며, 프레젠테이션 처리 시 해당 애니메이션을 무시해야 합니다.

  9. keySplines 속성이 지정되고 calcMode 계산값이 "spline"이면, keySplines 속성에 지정된 제어 구성 요소 수는 keyTimes 속성의 계산값에 포함된 시간 구성 요소 수보다 하나 적어야 합니다.

  10. keySplines 속성이 지정되지 않고 calcMode 계산값이 "spline"이면, 이러한 사용을 오류로 간주해야 하며, 프레젠테이션 처리 시 해당 애니메이션을 무시해야 합니다.

  11. repeatCount 속성이 지정되지 않으면, repeatCount 값으로 1을 적용합니다.

  12. [SVG 1.1], §19.2.10에 정의된 additive 속성은 이 버전의 TTML에서 지원하지 않습니다. 따라서 이 속성이 없으므로, 해당 속성의 "replace" 값에 대한 의미론을 적용합니다.

  13. [SVG 1.1], §19.2.10에 정의된 accumulate 속성은 이 버전의 TTML에서 지원하지 않습니다. 따라서 이 속성이 없으므로, 해당 속성의 "none" 값에 대한 의미론을 적용합니다.

animate 요소로 콘텐츠 스타일에 애니메이션을 적용하는 예제는 다음과 같습니다:

예제 조각 – 콘텐츠 스타일 애니메이션
...
<p dur="5s">
<animate tts:color="yellow;red;green;blue;yellow"/>
색상이 연속적으로 변하는 텍스트!
</p>
...

참고:

위 예제에서 "색상이 연속적으로 변하는 텍스트!" 콘텐츠의 전경색은 5초 동안 노란색에서 빨간색, 초록색, 다시 빨간색을 거쳐 노란색으로 연속적으로 변화합니다. 이후 애니메이션 효과가 제거되고 원래 색상으로 복원됩니다(fill의 기본값이 "remove"이기 때문입니다).

animate 요소로 영역 스타일에 애니메이션을 적용하는 예제는 다음과 같습니다:

예제 조각 – 영역 스타일 애니메이션
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    xmlns:tts="http://www.w3.org/ns/ttml#styling"
    ttp:extent="640px 480px">
    <head>
      <layout>
	<region xml:id="r1" timeContainer="seq" tts:opacity="0">
	  <animate dur="1s" tts:opacity="0;1"/>
	  <set dur="5s" tts:opacity="1"/>
	  <animate dur="1s" tts:opacity="1;0"/>
	  <style tts:extent="480px 60px"/>
	  <style tts:origin="80px 400px"/>
	</region>
      </layout>
    </head>
    <body region="r1">...</body>
</tt>

참고:

위 예제에서 영역 r1은 처음에 불투명도 0%인 완전 투명 상태로 설정된 뒤, 1초 동안 불투명도 100%인 완전 불투명 상태로 페이드 인됩니다. 불투명도는 5초 더 100%로 유지된 다음, 1초 동안 0%로 페이드 아웃되어 그 상태를 유지합니다.

참고:

animate 요소의 의미론은 [SVG 1.1], §19.2.12의 정의에 기반하며, 이는 다시 [SMIL 3.0], §12에 기반합니다.

13.1.2 animation

animation 요소는 아웃오브라인 애니메이션 정보를 묶는 컨테이너 요소로, 애니메이션 정보에 적용되는 메타데이터도 포함합니다.

animation 요소의 자식으로는 Metadata.class 요소 그룹의 요소가 0개 이상 올 수 있으며, 그 뒤에 Animation.class 요소 그룹의 요소가 0개 이상 올 수 있습니다.

XML 표현 – 요소 정보 항목: animation
<animation
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: Metadata.class*, Animation.class*
</animation>

시간 의미론이 animation 요소의 콘텐츠에 적용되는 범위에서, 이 요소의 암시적 시간 구간은 루트 시간 범위와 시작 및 종료 시점이 같도록 정의됩니다.

13.1.3 set

set 요소는 연관된 요소의 하나 이상의 애니메이션 가능한 스타일을 대상으로 적용할 하나 이상의 이산적 변경(애니메이션)을 표현합니다.

set 요소는 (1) 콘텐츠 요소나 region 요소의 자식으로 나타날 수 있으며, 이를 인라인 애니메이션이라고 합니다. 또는 (2) animation 요소의 자식으로 나타날 수 있으며, 이를 아웃오브라인 애니메이션이라고 합니다. 전자의 경우 set 요소의 부모가 연관된 요소이며, 후자의 경우 animate 속성으로 해당 set 요소를 참조하는 모든 요소가 연관된 요소입니다.

set 요소의 자식으로는 Metadata.class 요소 그룹의 요소가 0개 이상 올 수 있습니다.

XML 표현 – 요소 정보 항목: set

set 요소가 대상으로 하는 스타일 속성은 TT 스타일 네임스페이스나 TT 네임스페이스가 아닌 네임스페이스의 속성을 사용하여 직접 지정합니다. 이때 단일 대상 애니메이션(키) 값은 <animation-value> 구문을 따릅니다.

애니메이션할 수 없는 스타일을 대상으로 지정하면 오류로 간주하며, 프레젠테이션 처리 시 무시해야 합니다.

참고:

[SVG 1.1], §19.2.13과 달리, 여기에 정의된 단일 set 요소는 하나의 스타일 지정 속성만을 대상으로 하는 데 제한되지 않고, 대상 스타일 지정 속성 집합에 이산 애니메이션을 수행할 수 있습니다. [SVG 1.1]에서는 이를 위해 단일 set 요소 대신 여러 set 요소가 필요합니다.

아래에 나열한 제약 조건이나 차이점을 제외하면, set 요소와 위에 나열한 속성의 의미론은 [SVG 1.1], §19.2.13에 명시된 것으로 정의됩니다:

  1. set 요소가 대상으로 하는 속성과 해당 속성에 적용할 이산 값은 스타일 지정 속성을 직접 사용하여 지정합니다 (SVG의 attributeName 및 to 속성을 사용하는 방식과 다릅니다).

    참고:

    예를 들어 tts:color="red"를 지정하는 것은 [SVG 1.1]에서 attributeName="tts:color"와 to="red"를 지정하는 것과 동등한 것으로 간주합니다.

  2. fill 속성이 지정되지 않으면, fill 값으로 remove를 적용합니다.

set 요소로 콘텐츠 스타일에 애니메이션을 적용하는 예제는 다음과 같습니다:

예제 조각 – 콘텐츠 스타일 애니메이션
...
<p dur="5s" tts:color="yellow">
<set begin="1s" dur="1s" tts:color="red"/>
<set begin="2s" dur="1s" tts:color="green"/>
<set begin="3s" dur="1s" tts:color="red"/>
색상이 깜박이는 텍스트!
</p>
...

참고:

위 예제에서 "색상이 깜박이는 텍스트!" 콘텐츠의 전경색은 5초 동안 노란색에서 빨간색, 초록색, 다시 빨간색을 거쳐 노란색으로 변화합니다.

set 요소로 영역 스타일에 애니메이션을 적용하는 예제는 다음과 같습니다:

예제 조각 – 영역 스타일 애니메이션
<tt xml:lang="" xmlns="http://www.w3.org/ns/ttml"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    xmlns:tts="http://www.w3.org/ns/ttml#styling"
    ttp:cellResolution="40 16">
    <head>
      <layout>
	<region xml:id="r1" timeContainer="seq">
	  <set dur="10s" tts:origin=" 8c 14c"/>
	  <set dur="2s"  tts:origin=" 2c  2c"/>
	  <set dur="3s"  tts:origin=" 8c 14c"/>
	  <set dur="2s"  tts:origin="14c  4c"/>
	  <set dur="10s" tts:origin=" 8c 14c"/>
	  <style tts:extent="24c 2c"/>
	</region>
      </layout>
    </head>
    <body region="r1">...</body>
</tt>

참고:

위 예제에서 루트 컨테이너 영역은 40열과 16행의 셀 격자로 나뉩니다. 그런 다음 24열과 2행 크기의 영역 r1을 루트 컨테이너 영역 안에 배치하고, 시간에 따라 위치를 변경하여 영역이 이동하는 효과를 만듭니다. 이는 자막이 배경 영상의 등장인물을 가리지 않도록 할 때 유용할 수 있습니다.

참고:

set 요소의 의미론은 [SVG 1.1], §19.2.13의 정의에 기반하며, 이는 다시 [SMIL 3.0], §12에 기반합니다.

13.2 애니메이션 속성 어휘

이 절에서는 13.2.1 animate 속성을 정의합니다. 이 속성은 콘텐츠 요소와 특정 레이아웃 요소에 사용합니다.

13.2.1 animate

animate 속성은 Animation.class 요소 그룹의 요소를 하나 이상 참조합니다. 각 요소는 특정 아웃오브라인 애니메이션을 정의합니다.

animate 속성은 다음 요소 유형의 인스턴스에 지정할 수 있습니다:

animate 속성이 지정되면, 그 값은 [XML Schema Part 2], §3.3.10에 정의된 IDREFS 데이터 유형을 따라야 합니다. 또한 각 IDREF는 Animation.class 요소 그룹에 속하며 animation 요소를 조상으로 갖는 요소를 참조해야 합니다.

동일한 IDREF는 animate 속성값에 두 번 이상 나타나서는 안 됩니다.

요소 E의 animate 속성이 참조하는 각 아웃오브라인 애니메이션 요소 A에 대해, 지정된 IDREF 순서대로 다음 단계를 수행합니다:

  1. A의 깊은 복사본 A'를 만듭니다;

  2. A'에서 xml:id 속성을 제거합니다 ;

  3. A'를 E의 [children] 정보 항목 속성에 삽입합니다. 이때 A'는 E의 콘텐츠 모델에 있는 Animation.class* 와일드카드에 해당하는 자식 요소 부분 시퀀스의 마지막 요소가 되도록 합니다.

참고:

아웃오브라인 애니메이션의 의미론은 본질적으로 인라인 애니메이션 지정을 간소화하는 방식이며, 여러 참조 요소에서 같은 애니메이션을 사용하는 경우에 유용합니다.

참고:

animate 속성의 사용을 허용하는 각 요소 유형의 정의도 참조하십시오.

13.3 애니메이션 값 표현식

애니메이션 속성값에는 다음 표현식을 사용합니다:

13.3.1 <animation-value>

<animation-value> 표현식은 애니메이션 대상 속성의 시작(초기), 중간 또는 종료(최종) 값을 지정합니다.

구문 표현 – <animation-value>
<animation-value>
  : ([^;] | escape)+

escape
  : '\\' char

<animation-value> 표현식의 구문은 애니메이션 대상 속성에 적용되는 모든 구문 요구 사항을 충족해야 하며, 이스케이프되지 않은 세미콜론을 포함해서는 안 됩니다.

<animation-value> 표현식의 의미론은 [SVG 1.1], §19.2.9에 정의된 것과 같습니다.

13.3.2 <animation-value-list>

<animation-value-list> 표현식은 애니메이션 대상 속성에 순차적으로 적용할 애니메이션 값 목록을 지정합니다.

구문 표현 – <animation-value-list>
<animation-value-list>
  : <animation-value> (<lwsp>? ";" <lwsp>? <animation-value>)+

<animation-value-list> 표현식에 포함된 <animation-value>의 구문은 애니메이션 대상 속성에 적용되는 모든 구문 요구 사항을 충족해야 합니다.

<animation-value-list> 표현식의 의미론은 [SVG 1.1], §19.2.9에 정의된 것과 같습니다.

13.3.3 <calculation-mode>

<calculation-mode> 표현식은 애니메이션의 보간 모드를 제어합니다.

구문 표현 – <calculation-mode>
<calculation-mode>
  : "discrete"
  | "linear"
  | "paced"
  | "spline"

<calculation-mode> 표현식의 의미론은 [SVG 1.1], §19.2.9에 정의된 것과 같습니다.

13.3.4 <fill>

<fill> 표현식은 애니메이션의 활성 상태가 종료된 후 애니메이션의 효과를 결정합니다.

구문 표현 – <fill>
<fill>
  : "freeze"
  | "remove"

<fill> 표현식의 의미론은 [SVG 1.1], §19.2.8에 정의된 것과 같습니다.

13.3.5 <key-splines>

<key-splines> 표현식은 애니메이션의 진행 속도를 제어하는 베지어 제어점 목록을 지정합니다. 각 값 쌍은 SEMICOLON(U+003B) 문자로 구분되며, 이 문자 양쪽에 선형 공백(LWSP) 문자가 선택적으로 올 수 있습니다.

구문 표현 – <key-splines>
<key-splines>
  : control ( <lwsp>? ";" <lwsp>? control )*

control
  : x1 <lwsp> y1 <lwsp> x2 <lwsp> y2

x1, x2, y1, y2
  : coordinate

coordinate                                // 0 ≥ 값 ≥ 1
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <non-negative-integer>

<key-splines> 표현식의 의미론은 [SVG 1.1], §19.2.9에서 key-splines 속성에 적용하도록 정의한 것과 같습니다.

13.3.6 <key-times>

<key-times> 표현식은 애니메이션의 진행 속도를 제어하는 상대 시간 값 목록을 지정합니다. 각 값 쌍은 SEMICOLON(U+003B) 문자로 구분되며, 이 문자 양쪽에 선형 공백(LWSP) 문자가 선택적으로 올 수 있습니다.

구문 표현 – <key-times>
<key-times>
  : time ( <lwsp>? ";" <lwsp>? time )*

time                                // 0 ≥ 값 ≥ 1
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <non-negative-integer>

<key-times> 표현식의 의미론은 [SVG 1.1], §19.2.9에서 key-times 속성에 적용하도록 정의한 것과 같습니다.

13.3.7 <repeat-count>

<repeat-count> 표현식은 반복 애니메이션의 반복 횟수 (소수일 수도 있음)를 결정합니다.

구문 표현 – <repeat-count>
<repeat-count>
  : count                           // 값 > 0
  | "indefinite"

count:
  : whole
  | whole "." fraction
  | "." fraction

whole, fraction
  : <non-negative-integer>

<repeat-count> 표현식의 의미론은 [SVG 1.1], §19.2.8에 정의된 것과 같습니다.

14 메타데이터

이 절에서는 핵심 어휘 목록의 메타데이터 부분을 규정하며, 여기서 메타데이터는 여러 대상에 적용되는 분리 가능한 정보 계층을 의미하고, 그 대상에는 매개변수, 콘텐츠, 스타일, 레이아웃, 타이밍뿐 아니라 메타데이터 자체도 포함됩니다. 메타데이터가 표현하는 정보는 다음 두 가지 형태 중 하나입니다. (1) 이 명세에서 문서 인스턴스에 표준적으로 사용하도록 정의한 메타데이터, 그리고 (2) 이 명세의 범위 밖에서 정의된 임의의 메타데이터로서, 그 사용과 의미가 전적으로 애플리케이션의 TTML 콘텐츠 사용에 따라 달라지는 메타데이터입니다.

이 명세는 메타데이터에 대한 어떠한 표시 의미도 정의하지 않으므로, 적합한 표시 처리기는 모든 메타데이터 내용을 무시할 수 있습니다.

참고:

이 명세는 메타데이터에 어떠한 표시 의미도 부여하지 않지만, 이 명세의 상위 집합에 해당하는 프로파일은 이를 부여할 수 있습니다. 이 경우 그러한 프로파일에서 정의한 메타데이터 의존적인 표시 의미는 모두 이 명세의 범위 밖에 있는 것으로 간주됩니다.

14.1 메타데이터 요소 어휘

14.1.1 metadata 요소는 메타데이터 정보를 그룹화하기 위한 범용 컨테이너 요소 역할을 합니다.

또한, 모두 TT 메타데이터 네임스페이스에 정의된 다음 요소들은 문서 인스턴스에서 일반적으로 사용될 것으로 예상되는 메타데이터에 대한 표준 표현을 제공합니다:

14.1.1 metadata

metadata 요소는 메타데이터 정보를 위한 범용 컨테이너로 기능합니다.

메타데이터 정보는 metadata 요소를 사용하여 다음을 지정함으로써 표현할 수 있습니다: (1) metadata 요소의 하나 이상의 메타데이터 속성 또는 외부 네임스페이스 속성, (2) 하나 이상의 메타데이터 항목 또는 외부 네임스페이스 자식 요소, (3) 하나 이상의 data 자식 요소, 또는 (4) 앞서 나열한 것들의 조합.

참고:

이 명세는 문서 인스턴스의 형식적 유효성을 다음에 기반하도록 정의합니다: 모든 외부 네임스페이스 요소와 속성이 제거된 추상 문서 인스턴스. 따라서 다음 XML 표현의 콘텐츠 모델에는 외부 네임스페이스 속성이나 외부 네임스페이스 자식 요소가 형식적으로 포함되지 않습니다. 그럼에도 불구하고, 이러한 외부 네임스페이스 자식 요소는 구체적으로 인코딩된 TTML 문서 인스턴스에 나타날 수 있습니다.

XML 표현 – 요소 정보 항목: metadata
<metadata
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  {TT 메타데이터 네임스페이스의 임의의 속성}
  콘텐츠: (Data.class|{TT 메타데이터 네임스페이스의 임의의 요소})*
</metadata>

참고:

특정 메타데이터 항목의 의미는 해당 항목이 나타나는 문맥에서 평가해야 합니다. 핵심 어휘 목록은 모든 콘텐츠 요소 유형에 임의 개수의 metadata 요소 자식을 허용합니다. 이러한 사용에 적용되는 제약 사항은 개별 요소 어휘 정의를 참조하십시오.

문서 메타데이터의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 문서 메타데이터
...
<head>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:title>문서 메타데이터 예제</ttm:title>
    <ttm:desc>이 문서는 문서 메타데이터를 사용합니다.</ttm:desc>
  </metadata>
</head>
...

요소 메타데이터의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 요소 메타데이터
...
<div>
  <metadata xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
    <ttm:title>제6장 – 셜록 홈스가 시범을 보입니다</ttm:title>
    <ttm:desc>홈스는 살인자가 창문으로 어떻게 들어왔는지 왓슨에게 보여 줍니다.</ttm:desc>
  </metadata>
</div>
...

메타데이터 속성 항목의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 외부 메타데이터 속성 항목
...
<div xmlns:ext="http://example.org/ttml#metadata">
  <metadata ext:ednote="게시하기 전에 이 구획을 제거하십시오"/>
</div>
...

참고:

위 예제에서는 외부 네임스페이스의 전역 속성을 사용하여 이를 포함하는 div 요소에 의미적으로 적용되는 메타데이터 속성을 표현합니다. 이 속성을 div 요소에 직접 표현할 수도 있습니다. 그러나 이 경우 작성자는 특정 메타데이터 속성을 metadata 요소에 간접적으로 표현하여 분리하고자 합니다.

참고:

구체적으로 인코딩된 TTML 문서 인스턴스에 외부 네임스페이스 속성이 존재하더라도 해당 문서 인스턴스의 형식적 유효성에는 영향을 주지 않습니다. 이는 적용 가능한 추상 문서 유형을 기준으로 하며, 해당 유형은 4 문서 유형에 따라 선택됩니다.

외부 요소 메타데이터의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 외부 요소 메타데이터
...
<metadata
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:dcterms="http://purl.org/dc/terms/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <dc:title>외부 요소 메타데이터 예제</dc:title>
  <dc:description>외부 네임스페이스의 요소를 사용하여 메타데이터를 표현합니다.</dc:description>
  <dc:format xsi:type="dcterms:IMT">application/ttml+xml</dc:format>
</metadata>
...

참고:

위 예제에서는 더블린 코어 메타데이터 어휘에 정의된 여러 요소를 사용하여 문서 수준의 메타데이터를 표현합니다.

참고:

구체적으로 인코딩된 TTML 문서 인스턴스에 외부 네임스페이스 요소가 존재하더라도 해당 문서 인스턴스의 형식적 유효성에는 영향을 주지 않습니다. 이는 적용 가능한 추상 문서 유형을 기준으로 하며, 해당 유형은 4 문서 유형에 따라 선택됩니다.

14.1.2 ttm:actor

ttm:actor 요소는 역할 기반 등장인물 에이전트의 정의를 해당 등장인물을 연기하는 다른 에이전트와 연결하는 데 사용됩니다.

XML 표현 – 요소 정보 항목: ttm:actor
<ttm:actor
  agent = IDREF
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: EMPTY
</ttm:actor>

ttm:actor 요소의 agent 속성은 등장인물의 역할을 연기하는 에이전트를 나타내는 유의미한 ttm:agent 요소를 참조해야 합니다.

다음과 같은 사용 방식은 더 이상 권장되지 않습니다: agent 속성에서 이를 포함하는 ttm:actor 요소의 부모 ttm:agent 요소를 참조하는 방식. 또한, 이러한 순환 참조 연결의 의미는 이 명세에서 정의하지 않습니다.

참고:

구현이 이러한 에이전트 참조의 순환 연결을 따라가는 경우, 무한 루프를 방지하기 위해 이러한 상태를 감지하고 에이전트 참조에 대한 추가 역참조를 중단하는 것이 권장됩니다.

참고:

배우가 자기 자신을 연기하는 경우, 예를 들어 스티브 쿠건이 더 트립에서 스티브 쿠건을 연기하는 경우, 두 개의 ttm:agent 요소를 사용하는 방식이 예상됩니다. 첫 번째 요소는 실제 인물인 스티브 쿠건에 해당하며, type 속성에 person 값을 사용합니다. 반면, 두 번째 요소는 등장인물인 스티브 쿠건에 해당하며, (i) type 속성에 character 값을 사용하고 (ii) 첫 번째 요소를 참조하는 자식 ttm:actor 요소를 사용합니다. 이때 참조 대상은 ttm:agent 요소입니다.

ttm:actor 요소의 예제는 위의 예제 조각 – 에이전트 메타데이터에 나와 있습니다.

14.1.3 ttm:agent

ttm:agent 요소는 콘텐츠 정보를 해당 콘텐츠의 제작이나 표현에 관여하는 에이전트와 연결하기 위해 에이전트를 정의하는 데 사용됩니다.

ttm:agent 요소는 자식으로 0개 이상의 ttm:name 요소를 허용하며, 그 뒤에 0개 또는 1개의 ttm:actor 요소가 올 수 있습니다.

에이전트의 이름을 표현하는 ttm:name 자식 요소를 하나 이상 지정하는 것이 좋습니다. 해당 이름은 사람, 등장인물, 집단 또는 조직의 이름일 수 있습니다.

XML 표현 – 요소 정보 항목: ttm:agent
<ttm:agent
  condition = <condition>
  type = ("person" | "character" | "group" | "organization" | "other")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: ttm:name*, ttm:actor?
</ttm:agent>

각 ttm:agent 요소에는 type 속성을 지정해야 하며, 지정된 경우 다음 값 중 하나를 가져야 합니다:

  • person

  • character

  • group

  • organization

  • other

type 속성의 값이 character인 경우, ttm:agent 요소 인스턴스는 배우 역할을 하는 에이전트를 지정하는 ttm:actor 자식을 지정하는 것이 좋습니다.

ttm:agent 메타데이터 항목은 head 요소의 자식으로 지정되거나, head 요소의 자식인 metadata 요소의 자식으로 지정된 경우에만 유의미한 것으로 간주됩니다.

참고:

ttm:agent 요소 인스턴스는 일반적으로 ttm:agent 속성을 사용하여 콘텐츠 요소 유형에서 참조됩니다.

참고:

등장인물 에이전트를 여러 배우가 연기하는 경우, 여러 등장인물 에이전트를 지정하고 참조할 수 있으며, 이때 각 등장인물 정의는 서로 다른 배우를 지정합니다.

에이전트 메타데이터의 사용은 다음 예제에 나와 있습니다.

예제 조각 – 에이전트 메타데이터
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml" xmlns:ttm="http://www.w3.org/ns/ttml#metadata">
  <head>
    <ttm:agent xml:id="connery" type="person">
      <ttm:name type="family">코너리</ttm:name>
      <ttm:name type="given">토머스 숀</ttm:name>
      <ttm:name type="alias">숀</ttm:name>
      <ttm:name type="full">토머스 숀 코너리 경</ttm:name>
    </ttm:agent>
    <ttm:agent xml:id="bond" type="character">
      <ttm:name type="family">본드</ttm:name>
      <ttm:name type="given">제임스</ttm:name>
      <ttm:name type="alias">007</ttm:name>
      <ttm:actor agent="connery"/>
    </ttm:agent>
  </head>
  <body>
    <div>
      ...  
      <p ttm:agent="bond">저는 여행을 다니며 일종의 공인 해결사로 일합니다.</p>
      ...  
    </div>
  </body>
</tt>

참고:

위 예제에서는 실제 인물 에이전트인 숀 코너리와 허구의 등장인물 에이전트인 제임스 본드라는 두 에이전트를 정의하며, 후자는 전자와 ttm:actor 요소를 통해 연결됩니다. 그런 다음 콘텐츠, 즉 p 요소에서 해당 콘텐츠와 연관된 (해당 콘텐츠의 생성에 책임이 있는) 등장인물 에이전트를 참조합니다. 이 예제에서는 ttm:agent 메타데이터 항목을 컨테이너에 배치하지 않고 문서의 head 요소의 직접적인 자식으로 지정합니다. 여기서 컨테이너는 metadata 요소를 의미합니다.

14.1.4 ttm:copyright

ttm:copyright 요소는 특정 범위 수준에 적용되는 사람이 읽을 수 있는 저작권 표시를 표현하는 데 사용됩니다.

문서 전체에 적용되는 저작권 표시는 head 요소의 자식으로 나타나는 것이 좋습니다.

XML 표현 – 요소 정보 항목: ttm:copyright
<ttm:copyright
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: #PCDATA
</ttm:copyright>

참고:

이 명세는 ttm:copyright 요소의 구체적인 용도를 정의하지 않습니다.

14.1.5 ttm:desc

ttm:desc 요소는 사람이 읽을 수 있는 특정 요소 인스턴스의 설명을 표현하는 데 사용됩니다.

XML 표현 – 요소 정보 항목: ttm:desc
<ttm:desc
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: #PCDATA
</ttm:desc>

참고:

이 명세는 ttm:desc 요소의 구체적인 용도를 정의하지 않습니다.

ttm:desc 요소의 예제는 위의 예제 조각 – 문서 메타데이터와 예제 조각 – 요소 메타데이터에 나와 있습니다.

14.1.6 ttm:item

ttm:item 요소는 이름이 지정된 임의의 메타데이터 항목을 표현하는 데 사용됩니다.

ttm:item 요소는 다음 두 콘텐츠 모델 중 하나를 허용합니다: (1) 하나 이상의 텍스트 노드(즉, #PCDATA) 또는 (2) 0개 이상의 중첩된 ttm:item 요소.

XML 표현 – 요소 정보 항목: ttm:item
<ttm:item
  condition = <condition>
  name = <item-name>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: #PCDATA | ttm:item*
</ttm:item>

항목의 이름을 식별하기 위해 name 속성을 지정해야 하며, 해당 값은 다음을 따라야 합니다: <item-name> 값 표현식.

참고:

동일한 이름을 지정하는 여러 메타데이터 항목의 출현에는 일반적인 제약을 두지 않습니다. 그러나 이름이 지정된 특정 항목의 정의는 사용 문맥뿐 아니라 동일한 이름을 공유하는 여러 항목의 출현 가능성도 추가로 제한할 수 있습니다.

이름이 지정된 메타데이터 항목의 값은 다음과 같습니다: (1) 요소에 자식 텍스트 노드나 요소 노드가 없는 경우 빈 값, (2) ttm:item 요소의 자식이 텍스트 노드로만 구성된 경우 해당 요소의 문자 콘텐츠, 또는 (3) 이름이 지정된 메타데이터 하위 항목의 모음.

참고:

이름이 지정된 특정 항목의 정의는 일반적으로 허용되는 값의 집합을 제한합니다. 또한, 지정된 값이 없으면 특정 값이 암시되도록 규정할 수 있습니다.

참고:

이름이 지정된 메타데이터 항목의 값이 자연어 텍스트로 구성되는 경우, xml:lang 속성을 메타데이터 항목 요소에 직접 지정하거나 해당 요소의 가장 가까운 조상에서 간접적으로 상속받아 이름이 지정된 메타데이터 항목 값에 적용되는 언어를 식별할 수 있습니다.

이름이 지정된 메타데이터 항목의 사용은 다음 예제에 나와 있으며, 이 예제는 이름이 지정된 메타데이터 항목을 사용하여 단순 데이터 삽입을 원래 파일 이름과 연결하는 방법을 보여 줍니다.

예제 조각 – 이름이 지정된 메타데이터 항목
...
<image>
  <source>
    <data type="image/png">
      <ttm:item name="originalFileName"
        xmlns:ttm="http://www.w3.org/ns/ttml#metadata">image.png</ttm:item>
      <chunk length="119">
        iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY2BgYAAAAAQAAVzN/2kAAAAASUVORK5CYII=
      </chunk>
    </data>
  </source>
</image>
...

참고:

위 예제에서는 하나의 chunk 요소를 사용하여 ttm:item 요소를 data 요소의 자식으로 포함합니다. 즉, 인코딩된 이미지 바이트를 #PCDATA로 data 요소에 직접 포함했다면, ttm:item 자식 요소를 포함할 수 없었을 것입니다. 자세한 내용은 지원되는 콘텐츠 모델을 data 요소에서 참조하십시오.

14.1.7 ttm:name

ttm:name 요소는 사람, 등장인물, 집단 또는 조직의 이름을 지정하는 데 사용됩니다.

XML 표현 – 요소 정보 항목: ttm:name
<ttm:name
  condition = <condition>
  type = ("full" | "family" | "given" | "alias" | "other")
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: #PCDATA
</ttm:name>

각 ttm:name 요소에는 type 속성을 지정해야 하며, 지정된 경우 다음 값 중 하나를 가져야 합니다:

  • full

  • family

  • given

  • alias

  • other

이름의 유형과 이름의 구문적 표현 사이의 관계는 이 명세에서 정의하지 않습니다.

ttm:name 요소의 두 가지 예제는 위의 예제 조각 – 에이전트 메타데이터에 나와 있습니다.

14.1.8 ttm:title

ttm:title 요소는 사람이 읽을 수 있는 특정 요소 인스턴스의 제목을 표현하는 데 사용됩니다.

XML 표현 – 요소 정보 항목: ttm:title
<ttm:title
  condition = <condition>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  xml:space = ("default" | "preserve")
  콘텐츠: #PCDATA
</ttm:title>

참고:

이 명세는 ttm:title 요소의 구체적인 용도를 정의하지 않습니다.

ttm:title 요소의 예제는 위의 예제 조각 – 문서 메타데이터와 예제 조각 – 요소 메타데이터에 나와 있습니다.

14.2 메타데이터 속성 어휘

이 절에서는 TT 메타데이터 네임스페이스의 다음 속성을 규정하며, 이 속성들은 metadata 요소 및 콘텐츠 요소와 함께 사용됩니다:

14.2.1 ttm:agent

ttm:agent 속성은 IDREFS 값을 가지며, 콘텐츠 요소와 함께 사용되어 콘텐츠를 수행하거나 그 수행에 관여하는 에이전트를 지정합니다.

지정된 경우, ttm:agent 속성은 유의미한 ttm:agent 요소 인스턴스를 참조해야 합니다.

동일한 IDREF인 ID가 ttm:agent 속성 값에 두 번 이상 나타나지 않는 것이 좋습니다.

참고:

이 제약은 중복된 에이전트 참조의 사용을 억제하기 위한 것입니다.

ttm:agent 속성의 예제는 위의 예제 조각 – 에이전트 메타데이터에 나와 있습니다.

14.2.2 ttm:role

콘텐츠 작성자는 ttm:role 속성을 사용하여 해당 속성으로 표시된 콘텐츠 요소의 역할, 기능 또는 특성을 표현할 수 있습니다.

지정된 경우, 이 속성의 값은 다음 구문을 따라야 합니다:

구문 표현 – ttm:role
ttm:role
  role (<lwsp> role)*

role
  : "action"
  | "caption"
  | "description"
  | "dialog"
  | "expletive"
  | "kinesic"
  | "lyrics"
  | "music"
  | "narration"
  | "quality"
  | "sound"
  | "source"
  | "suppressed"
  | "reproduction"
  | "thought"
  | "title"
  | "transcription"
  | extension-role

extension-role
  : "x-" token-char+

token-char
  : { XML NameChar }    // [XML 1.0] 생성 규칙 [4a]

동일한 role 토큰인 R이 ttm:role 속성 값에 두 번 이상 나타나지 않는 것이 좋습니다.

참고:

이 제약은 중복된 역할 토큰의 사용을 억제하기 위한 것입니다.

참고:

ttm:role의 모든 값 중 접두사 x-로 시작하지 않는 값은 향후 표준화를 위해 예약되어 있습니다.

참고:

x- 접두사가 붙은 사용자 정의 형태의 ttm:role을 사용하는 경우, 충돌을 방지하기 위해 조직 고유의 중간 문자열도 함께 사용하는 것이 권장됩니다. 예를 들면 x-example-org-custom-role입니다. 또한, 역할 값의 레지스트리는 https://www.w3.org/wiki/TTML/RoleRegistry에서 제공되며, 상호운용성과 충돌 방지를 촉진하기 위한 것입니다.

14.3 메타데이터 값 표현식

메타데이터 어휘는 다음 표현식을 사용할 수 있습니다:

14.3.1 <item-name>

<item-name> 표현식은 다음 요소로 표현되는 메타데이터 항목의 이름을 지정하는 데 사용됩니다: ttm:item 요소.

구문 표현 – <item-name>
<item-name>
  : <named-item>
  | xsd:QName

항목 이름 표현식이 정규화된 이름(xsd:QName)의 형태를 취하는 경우, 해당 정규화된 이름의 접두사는 [XML Namespaces 1.0]에서 규정한 네임스페이스 선언으로 선언되어 있어야 합니다.

정규화된 이름(xsd:QName)의 형태를 취하지 않는 모든 <item-name> 값은 이 명세에서 정의되거나 W3C의 향후 표준화를 위해 예약되어 있습니다.

참고:

이 명세에서 정의하는 모든 항목 이름은 비정규화된 형태(접두사 없음)이며, 외부 명세에서 정의하는 항목 이름은 정규화된 형태(접두사 있음)가 되도록 의도되었습니다.

참고:

다음 주소에서 https://www.w3.org/wiki/TTML/ItemNameRegistry 정규화된 항목 네임스페이스의 레지스트리를 참조하십시오.

14.3.2 <named-item>

<named-item> 값은 이름이 지정된 메타데이터 항목의 열거된 모음에 속하는 항목이며, 각 항목은 ttm:item 요소에 의해 값과 연결됩니다.

구문 표현 – <named-item>
<named-item>
  : "altText"
  | "usesForced"

altText

대체 텍스트 콘텐츠를 표현하는 문자열이며, 해당 값은 다음을 따릅니다: xsd:string. 일반적으로 관련 이미지 콘텐츠에 대해 동등한 텍스트나 요약을 제공하는 데 사용됩니다.

참고:

이러한 동등한 텍스트는 콘텐츠의 색인 생성을 지원하고, 작성 중인 문서의 품질 검사를 용이하게 하는 데 사용할 수 있습니다.

참고:

[HTML]과 달리, 이름이 지정된 이 메타데이터 항목의 텍스트 콘텐츠는 이를 참조하는 요소의 기본 콘텐츠(대체 콘텐츠와 구별되는)를 표시할 수 없을 때 해당 요소 대신 표시하기 위한 것이 아닙니다. 그러나 이 대체 텍스트 콘텐츠는 보조 기술에서 사용할 수 있습니다.

usesForced

어떤 <condition> 표현식이 forced 바인딩된 매개변수를 사용하는지 나타내는 불리언이며, 해당 값은 다음을 따릅니다: xsd:boolean. 이름이 지정된 이 메타데이터 항목이 문서 인스턴스에 존재하는 경우, 다음 요소의 자식으로 지정해야 합니다: head 요소.

A 구체적 인코딩

이 부록은 규범적입니다.

다른 요구 사항이 없는 경우, 문서 인스턴스는 UTF-8 문자 인코딩을 사용하여 올바른 형식의 XML 1.0 [XML 1.0] 문서로 구체적으로 인코딩하는 것이 좋습니다.

참고:

XML 1.0 [XML 1.0]을 TTML의 구체적 인코딩으로 사용하는 경우, 다음과 같은 이름이 지정된 문자 엔티티만 정의됩니다: &amp;, &apos;, &gt;, &lt; 및 &quot;.

B 축소된 XML 정보 집합

이 부록은 규범적입니다.

이 명세에서 축소된 XML 정보 집합은 XML 정보 집합 [XML InfoSet] 중 다음에 나열된 정보 항목 및 정보 항목 속성만으로 구성되는 것을 의미합니다:

B.1 문서 정보 항목

  • [document element]

B.2 요소 정보 항목

  • [namespace URI]

  • [local name]

  • [children]

  • [attributes]

자식 정보 항목인 [children]은 요소 정보 항목과 문자 정보 항목으로만 제한됩니다.

B.3 속성 정보 항목

  • [namespace URI]

  • [local name]

  • [normalized value]

참고:

축소된 XML 정보 집합이 XML 문서 엔티티의 구체적인 표현으로부터 구성되는 경우, [normalized value] 정보 항목에는 정규화되지 않은 XML 공백 문자가 포함될 수 있습니다. 이러한 문자는 &#9; (HT), &#10; (LF), &#13; (CR) 및 &#20; (SPACE)이며, [XML 1.0], §3.3.3, 단계 (3)의 첫 번째 항목에 규정되어 있습니다. 특히, 이러한 상황은 공백 문자 중 하나를 나타내기 위해 숫자 문자 참조(정규화되지 않음)를 사용하고 공백 문자 자체(정규화됨)를 사용하지 않는 경우에 발생할 수 있습니다.

참고:

속성 정보 항목도 참조하십시오.

B.4 문자 정보 항목

  • [character code]

연속된 문자 정보 항목을 개별적으로 표현할 필요는 없으며, 문자 코드의 시퀀스(즉, 문자열)로 모아서 청크로 만들 수 있습니다.

참고:

문자 정보 항목도 참조하십시오.

C 스키마

이 부록은 규범적입니다.

이 부록은 다음 스키마를 규정하며, 이 스키마들은 문서 인스턴스와 함께 사용됩니다:

이 부록에서 규정한 스키마가 이 명세의 본문에 정의된 문서 유형, 요소 유형 또는 속성 유형의 규범적 정의와 다른 경우에는 언제나 이 명세의 본문이 우선합니다.

C.1 Relax NG 간결 구문(RNC) 스키마

TTML 콘텐츠용 Relax NG 간결 구문(RNC) [RELAX NG] 기반 스키마는 ZIP 아카이브에서 이용할 수 있습니다. 이 스키마는 이 명세에 정의된 시간 지정 텍스트 마크업 언어 콘텐츠의 유효성을 정의하는 목적에서는 비규범적인 것으로 간주해야 합니다. 특히, TTML 콘텐츠의 형식적 유효성은 3.1 문서 적합성에 정의되어 있습니다.

C.2 XML 스키마 정의(XSD) 스키마

TTML 콘텐츠용 W3C XML 스키마 정의(XSD) [XML Schema Part 1] 기반 스키마는 ZIP 아카이브에서 이용할 수 있습니다. 이 스키마는 이 명세에 정의된 시간 지정 텍스트 마크업 언어 콘텐츠의 유효성을 정의하는 목적에서는 비규범적인 것으로 간주해야 합니다. 특히, TTML 콘텐츠의 형식적 유효성은 3.1 문서 적합성에 정의되어 있습니다.

D 미디어 유형 등록

이 부록은 이 명세에서 제거되었습니다.

E 기능

이 부록은 규범적입니다.

이 부록은 (1) 기능 지정의 집합을 규정하며, 각 기능 지정은 이 명세에 정의된 하나 이상의 구문적 및/또는 의미적 기능을 식별합니다. 또한 (2) 지정된 각 기능이 다음 요구 사항을 준수하는 TTML 콘텐츠 처리기에 필수인지 선택 사항인지를 규정합니다: 3.2.2 변환 처리기 적합성 또는 3.2.3 표시 처리기 적합성.

참고:

TTML 처리기가 변환 의미를 구현한다거나 표시 의미를 구현한다고 말하는 것은 기능 지정 F에 대해 이 부록의 요구 사항을 충족하는 경우를 의미하며, 각각 기능 지정 F의 정의 중 변환 처리 또는 표시 처리와 관련된 요구 사항에 해당합니다.

참고:

아래의 기능 지정 정의가 특정 요소 유형이나 문맥으로 범위를 한정하지 않는 경우, 해당 기능의 지원은 허용되는 모든 사용 문맥에서 그 지정된 기능을 지원한다는 의미로 의도되었습니다.

예를 들어, #length-root-container-relative 기능의 지원은 모든 <length> 표현식에서 달리 금지되지 않는 한 해당 기능의 사용을 지원함을 의미합니다.

참고:

처리기 구현이 어떤 기능의 의미를 지원하지 않지만 해당 기능의 구문적 표현을 알고 있는 경우, 구현은 그 표현을 파싱할 수 있으면서도 표현에서 지원하지 않는 구성 요소의 의미는 무시하도록 하는 것이 권장됩니다.

예를 들어, #textEmphasis-minimal은 지원하지만 #textEmphasis-color는 지원하지 않는 경우, tts:textEmphasis 값에 <emphasis-color> 구성 요소가 포함되어 있더라도 해당 값을 파싱하되 지원하지 않는 그 구성 요소의 의미는 무시하는 것이 좋습니다 (단, 속성 값에서 지원되는 다른 구성 요소의 의미는 무시하지 않습니다).

E.1 기능 지정

기능 지정은 다음 형식을 따르는 문자열로 표현됩니다:

feature-designation
  : feature-namespace designation

feature-namespace
  : TT Feature Namespace                    // http://www.w3.org/ns/ttml/feature/

designation
  : "#" token-char+

token-char
  : { XML NameChar }                        // [XML 1.0] 생성 규칙 [4a]

이 명세에서 정의하지 않은 모든 feature-designation 값은 향후 표준화를 위해 예약되어 있습니다.

다음 하위 절에서는 모든 기능 지정을 정의하며, 이들은 TT 기능 네임스페이스의 기본 URI를 기준으로 하는 상대 URI(프래그먼트 식별자)로 표현됩니다.

이 절의 기능 지정자 정의가 동일한 기능 지정자의 정의를 [TTML1]에서 참조하고, 참조된 정의에 "정의된 모든 값"이라는 문구가 사용된 경우, 해당 값은 [TTML1]에 정의된 모든 값으로 구성됩니다. 반면, "정의된 모든 값"이라는 문구가 아래에 직접 나타나는 경우, 해당 값은 이 명세에 정의된 모든 값으로 구성됩니다.

참고:

이 절에서 접미사 -version-2가 붙은 기능 지정은 이번 TTML 명세 버전, 즉 두 번째 버전인 TTML2에서 새로 정의되었습니다.

E.1.1 #animate

TTML 처리기는 #animate 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#animate 기능은 #animate-minimal 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #animate 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #animate-fill, #animate-minimal, #animate-paced, #animate-repeat 또는 #animate-spline.

E.1.2 #animate-minimal

TTML 변환 처리기가 #animate-minimal 기능을 지원하는 경우는 animate 요소가 discrete 및 linear 값을 갖는 calcMode 속성과 함께 사용될 때 해당 요소의 의미를 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기는 #animate-minimal 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

참고:

discrete 및 linear 값을 갖는 calcMode 속성의 지원은 keyTimes 속성도 지원함을 의미합니다.

참고:

#animate-minimal 기능의 지원이 다음 기능 중 어느 것의 지원도 의미하지는 않습니다: #animate-fill, #animate-paced, #animate-repeat 또는 #animate-spline.

E.1.3 #animate-fill

TTML 변환 처리기는 #animate-fill 기능을 fill 속성의 의미를 인식하고 변환할 수 있는 경우에 지원하며, 이 속성은 animate 요소의 속성입니다.

TTML 표시 처리기는 #animate-fill 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.4 #animate-paced

TTML 변환 처리기가 #animate-paced 기능을 지원하는 경우는 animate 요소가 paced 값을 갖는 calcMode 속성과 함께 사용될 때 그 의미를 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기는 #animate-paced 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.5 #animate-repeat

TTML 변환 처리기는 #animate-repeat 기능을 다음 속성의 의미를 인식하고 변환할 수 있는 경우에 지원합니다: repeatCount 속성으로, animate 요소의 속성입니다.

TTML 표시 처리기는 #animate-repeat 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.6 #animate-spline

TTML 변환 처리기가 #animate-spline 기능을 지원하는 경우는 animate 요소가 spline 값을 갖는 calcMode 속성과 함께 사용될 때 그 의미를 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기는 #animate-spline 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

참고:

spline 값을 갖는 calcMode 속성의 지원은 다음 속성의 지원도 의미합니다: keySplines 속성.

E.1.7 #animation

TTML 콘텐츠 처리기는 #animation 기능을 지원합니다. 이는 #animation 기능을 [TTML1], §D.1.1에 정의된 대로 지원하는 경우입니다.

참고:

#animation 기능의 지원은 기능적으로 #set 기능의 지원과 동등합니다.

콘텐츠 프로파일이 #animation 기능의 사용을 요구하거나 허용하면서 #set 기능의 사용을 금지하는 것은 오류입니다.

E.1.8 #animation-out-of-line

TTML 변환 처리기가 #animation-out-of-line 기능을 지원하는 조건은 다음 어휘를 인식하고 변환할 수 있는 것이며, 이 어휘는 13 애니메이션에 정의되어 있습니다:

그리고 다음 속성을 지원하는 것이며, 이 속성은 13.2 애니메이션 속성 어휘에 정의되어 있습니다:

TTML 표시 처리기는 #animation-out-of-line 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.9 #animation-version-2

TTML 처리기는 #animation-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#animation-version-2 기능은 #animation 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #animation-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #animate, #animation-out-of-line 또는 #animation.

E.1.10 #audio

TTML 변환 처리기는 #audio 기능을 다음 어휘를 인식하고 변환할 수 있는 경우에 지원하며, 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기는 #audio 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.11 #audio-description

TTML 처리기는 #audio-description 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #audio-description 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #audio, #gain 또는 #pan.

E.1.12 #audio-speech

TTML 처리기는 #audio-speech 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #audio-speech 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #pitch, #speak 또는 #speech.

E.1.13 #background

TTML 처리기는 #background 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #background 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #backgroundColor 또는 #background-image.

E.1.14 #background-image

TTML 처리기는 #background-image 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #background 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #backgroundClip, #backgroundExtent, #backgroundImage, #backgroundOrigin, #backgroundPosition 또는 #backgroundRepeat.

E.1.15 #backgroundClip

TTML 변환 처리기는 #backgroundClip 기능을 다음 속성에 정의된 모든 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:backgroundClip 속성.

TTML 표시 처리기는 #backgroundClip 기능을 다음 속성에 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:backgroundClip 속성.

E.1.16 #backgroundColor

TTML 콘텐츠 처리기는 #backgroundColor 기능을 지원합니다. 이는 #backgroundColor 기능을 [TTML1], §D.1.2에 정의된 대로 지원하는 경우입니다.

참고:

#backgroundColor 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #backgroundColor 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #backgroundColor-block, #backgroundColor-inline 또는 #backgroundColor-region.

E.1.17 #backgroundColor-block

TTML 콘텐츠 처리기는 #backgroundColor-block 기능을 지원합니다. 이는 #backgroundColor-block 기능을 [TTML1], §D.1.3에 정의된 대로 지원하는 경우입니다.

E.1.18 #backgroundColor-inline

TTML 콘텐츠 처리기는 #backgroundColor-inline 기능을 지원합니다. 이는 #backgroundColor-inline 기능을 [TTML1], §D.1.4에 정의된 대로 지원하는 경우입니다.

E.1.19 #backgroundColor-region

TTML 콘텐츠 처리기는 #backgroundColor-region 기능을 지원합니다. 이는 #backgroundColor-region 기능을 [TTML1], §D.1.5에 정의된 대로 지원하는 경우입니다.

E.1.20 #backgroundExtent

TTML 변환 처리기는 #backgroundExtent 기능을 다음 속성에 정의된 모든 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:backgroundExtent 속성.

TTML 표시 처리기는 #backgroundExtent 기능을 다음 속성에 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:backgroundExtent 속성.

E.1.21 #backgroundImage

TTML 변환 처리기는 #backgroundImage 기능을 다음 속성에 정의된 모든 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:backgroundImage 속성.

TTML 표시 처리기는 #backgroundImage 기능을 다음 속성에 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:backgroundImage 속성.

E.1.22 #backgroundOrigin

TTML 변환 처리기는 #backgroundOrigin 기능을 다음 속성에 정의된 모든 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:backgroundOrigin 속성.

TTML 표시 처리기는 #backgroundOrigin 기능을 다음 속성에 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:backgroundOrigin 속성.

E.1.23 #backgroundPosition

TTML 변환 처리기는 #backgroundPosition 기능을 다음 속성에 정의된 모든 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:backgroundPosition 속성.

TTML 표시 처리기는 #backgroundPosition 기능을 다음 속성에 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:backgroundPosition 속성.

E.1.24 #backgroundRepeat

TTML 변환 처리기는 #backgroundRepeat 기능을 다음 속성에 정의된 모든 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:backgroundRepeat 속성.

TTML 표시 처리기는 #backgroundRepeat 기능을 다음 속성에 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:backgroundRepeat 속성.

E.1.25 #base

TTML 변환 처리기가 #base 기능을 지원하는 경우는 xml:base 속성이 다음 어휘에 적용될 때 이를 인식하고 변환할 수 있는 경우이며, 해당 어휘는 6.1 프로파일 요소 어휘에 정의되어 있습니다:

TTML 표시 처리기는 #base 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.26 #base-general

TTML 변환 처리기가 #base-general 기능을 지원하는 조건은 xml:base 속성이 허용되는 모든 어휘에 적용될 때 이를 인식하고 변환할 수 있는 것이며, 해당 어휘는 6.1 프로파일 요소 어휘에 정의되어 있습니다. 단, 다음은 제외됩니다:

TTML 표시 처리기는 #base-general 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.27 #base-version-2

TTML 처리기는 #base-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#base-version-2 기능은 #base 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #base-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #base 또는 #base-general.

E.1.28 #bidi

TTML 콘텐츠 처리기는 #bidi 기능을 지원합니다. 이는 #bidi 기능을 [TTML1], §D.1.6에 정의된 대로 지원하는 경우입니다.

참고:

#bidi 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #bidi 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #direction, #unicodeBidi 또는 #writingMode-horizontal.

E.1.29 #bidi-version-2

TTML 처리기는 #bidi-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#bidi-version-2 기능은 #bidi 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #bidi-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #bidi 또는 #unicodeBidi-isolate.

E.1.30 #border

TTML 처리기는 #border 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #border 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #border-block, #border-inline 또는 #border-region.

E.1.31 #border-block

TTML 변환 처리기가 #border-block 기능을 지원하는 경우는 정의된 모든 값을 인식하고 변환할 수 있는 tts:border 속성이 콘텐츠 요소에 적용되는 경우이며, 해당 요소는 표시 처리 중에 블록 영역을 생성하게 됩니다.

TTML 표시 처리기가 #border-block 기능을 지원하는 경우는 표시 의미 지원을 구현한 tts:border 속성이 콘텐츠 요소에 적용되는 경우이며, 해당 요소는 다음 영역을 생성합니다: 블록 영역.

E.1.32 #border-inline

TTML 변환 처리기가 #border-inline 기능을 지원하는 경우는 정의된 모든 값을 인식하고 변환할 수 있는 tts:border 속성이 콘텐츠 요소에 적용되는 경우이며, 해당 요소는 표시 처리 중에 인라인 영역을 생성하게 됩니다.

TTML 표시 처리기가 #border-inline 기능을 지원하는 경우는 표시 의미 지원을 구현한 tts:border 속성이 콘텐츠 요소에 적용되는 경우이며, 해당 요소는 다음 영역을 생성합니다: 인라인 영역.

E.1.33 #border-radii

TTML 처리기는 #border-radii 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #border-radii 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #border-radii-1 또는 #border-radii-2.

E.1.34 #border-radii-1

TTML 변환 처리기는 #border-radii-1 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다: 하나의 구성 요소로 이루어진 <border-radii> 값 표현식의 값으로, 해당 표현식은 tts:border 속성에 지정됩니다.

TTML 표시 처리기는 #backgroundClip 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: 하나의 구성 요소로 이루어진 <border-radii> 값 표현식의 값으로, 해당 표현식은 tts:border 속성에 지정됩니다.

E.1.35 #border-radii-2

TTML 변환 처리기는 #border-radii-2 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다: 두 개의 구성 요소로 이루어진 <border-radii> 값 표현식의 값으로, 해당 표현식은 tts:border 속성에 지정됩니다.

TTML 표시 처리기는 #backgroundClip 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: 두 개의 구성 요소로 이루어진 <border-radii> 값 표현식의 값으로, 해당 표현식은 tts:border 속성에 지정됩니다.

E.1.36 #border-region

TTML 변환 처리기가 #border-region 기능을 지원하는 경우는 정의된 모든 값을 인식하고 변환할 수 있는 tts:border 속성이 region 요소에 적용되는 경우입니다.

TTML 표시 처리기가 #border-region 기능을 지원하는 경우는 표시 의미 지원을 구현한 tts:border 속성이 region 요소에 적용되는 경우입니다.

E.1.37 #bpd

TTML 변환 처리기는 #bpd 기능을 다음 속성을 인식하고 변환할 수 있는 경우에 지원합니다: tts:bpd 속성.

TTML 표시 처리기는 #bpd 기능을 다음 속성에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:bpd 속성.

E.1.38 #cellResolution

TTML 콘텐츠 처리기는 #cellResolution 기능을 지원합니다. 이는 #cellResolution 기능을 [TTML1], §D.1.7에 정의된 대로 지원하는 경우입니다.

E.1.39 #chunk

TTML 변환 처리기는 #chunk 기능을 다음 어휘를 인식하고 변환할 수 있는 경우에 지원하며, 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기는 #chunk 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.40 #clockMode

TTML 콘텐츠 처리기는 #clockMode 기능을 지원합니다. 이는 #clockMode 기능을 [TTML1], §D.1.8에 정의된 대로 지원하는 경우입니다.

E.1.41 #clockMode-gps

TTML 콘텐츠 처리기는 #clockMode-gps 기능을 지원합니다. 이는 #clockMode-gps 기능을 [TTML1], §D.1.9에 정의된 대로 지원하는 경우입니다.

E.1.42 #clockMode-local

TTML 콘텐츠 처리기는 #clockMode-local 기능을 지원합니다. 이는 #clockMode-local 기능을 [TTML1], §D.1.10에 정의된 대로 지원하는 경우입니다.

E.1.43 #clockMode-utc

TTML 콘텐츠 처리기는 #clockMode-utc 기능을 지원합니다. 이는 #clockMode-utc 기능을 [TTML1], §D.1.11에 정의된 대로 지원하는 경우입니다.

E.1.44 #color

TTML 콘텐츠 처리기는 #color 기능을 지원합니다. 이는 #color 기능을 [TTML1], §D.1.12에 정의된 대로 지원하는 경우입니다.

E.1.45 #condition

TTML 처리기는 #condition 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #condition 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #condition-fn-media, #condition-fn-parameter, #condition-fn-supports, #condition-primary.

E.1.46 #condition-fn-media

TTML 콘텐츠 처리기가 #condition-fn-media 기능을 지원하는 경우는 <media-function> 하위 표현식이 <condition> 값 표현식에서 사용될 때 이를 지원하는 경우입니다.

E.1.47 #condition-fn-parameter

TTML 콘텐츠 처리기가 #condition-fn-parameter 기능을 지원하는 경우는 <parameter-function> 하위 표현식이 <condition> 값 표현식에서 사용될 때 이를 지원하는 경우입니다.

E.1.48 #condition-fn-supports

TTML 콘텐츠 처리기가 #condition-fn-supports 기능을 지원하는 경우는 <supports-function> 하위 표현식이 <condition> 값 표현식에서 사용될 때 이를 지원하는 경우입니다.

E.1.49 #condition-primary

TTML 콘텐츠 처리기가 #condition-primary 기능을 지원하는 경우는 <condition> 값 표현식을 지원하되 해당 표현식에 다음 하위 표현식이 포함되지 않는 경우입니다: <condition-function> 하위 표현식.

E.1.50 #content

TTML 콘텐츠 처리기는 #content 기능을 지원합니다. 이는 #content 기능을 [TTML1], §D.1.13에 정의된 대로 지원하는 경우입니다.

E.1.51 #content-sizing

TTML 처리기는 #content-sizing 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #content-sizing 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #bpd 또는 #ipd.

E.1.52 #contentProfiles

TTML 변환 처리기는 #contentProfiles 기능을 (1) 비결합 프로파일을 지원하고 (2) 다음을 인식하고 변환할 수 있는 경우에 지원합니다:

  1. 다음 프로파일 속성 어휘로, 6.2 프로파일 속성 어휘에 정의되어 있습니다:

  2. first 값으로, 다음 ttp:inferProcessorProfileSource 속성의 값,

  3. designator 속성으로, ttp:profile 요소의 속성,

  4. content 값으로, type 속성의 값이며 ttp:profile 요소에 사용되는 값, 그리고

  5. prohibited 값으로, value 속성의 값이며 ttp:feature 및 ttp:extension 요소에 사용되는 값.

TTML 표시 처리기는 #contentProfiles 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

참고:

#contentProfiles 기능의 지원이 결합 프로파일 또는 중첩 프로파일의 지원을 의미하지는 않습니다.

E.1.53 #contentProfiles-combined

TTML 변환 처리기는 #contentProfiles-combined 기능을 (1) #contentProfiles 기능을 지원하고, (2) 결합 프로파일을 지원하며, (3) 다음을 인식하고 변환할 수 있는 경우에 지원합니다:

  1. 다음 프로파일 속성 어휘로, 6.2 프로파일 속성 어휘에 정의되어 있습니다:

  2. combined 값으로, 다음 ttp:inferProcessorProfileSource 속성의 값, 그리고

  3. combine 속성으로, ttp:profile 요소의 속성.

TTML 표시 처리기는 #contentProfiles-combined 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

#contentProfiles-combine 기능은 #contentProfiles 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #contentProfiles-combine 기능의 사용을 요구하거나 허용하면서 #contentProfiles 기능의 사용을 금지하는 것은 오류입니다.

참고:

#contentProfiles-combined 기능의 지원이 중첩 프로파일의 지원을 의미하지는 않습니다.

E.1.54 #core

TTML 콘텐츠 처리기가 #core 기능을 지원하는 경우는 #core 기능을 [TTML1], §D.1.14에 정의된 대로 지원하는 경우입니다.

E.1.55 #data

TTML 변환 처리기는 #data 기능을 다음 어휘를 인식하고 변환할 수 있는 경우에 지원하며, 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기는 #data 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.56 #direction

TTML 콘텐츠 처리기가 #direction 기능을 지원하는 경우는 #direction 기능을 [TTML1], §D.1.15에 정의된 대로 지원하는 경우입니다.

E.1.57 #disparity

TTML 변환 처리기는 #disparity 기능을 다음 속성을 인식하고 변환할 수 있는 경우에 지원합니다: tts:disparity 속성.

TTML 표시 처리기는 #disparity 기능을 다음 속성에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:disparity 속성.

참고:

#disparity 기능의 지원이 #region-implied-animation 기능의 지원을 의미하지는 않습니다.

E.1.58 #display

TTML 콘텐츠 처리기가 #display 기능을 지원하는 경우는 #display 기능을 [TTML1], §D.1.16에 정의된 대로 지원하는 경우입니다.

참고:

#display 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #display 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #display-block, #display-inline 또는 #display-region.

E.1.59 #display-block

TTML 콘텐츠 처리기가 #display-block 기능을 지원하는 경우는 #display-block 기능을 [TTML1], §D.1.17에 정의된 대로 지원하는 경우입니다.

E.1.60 #display-inline

TTML 콘텐츠 처리기가 #display-inline 기능을 지원하는 경우는 #display-inline 기능을 [TTML1], §D.1.18에 정의된 대로 지원하는 경우입니다.

E.1.61 #display-inlineBlock

TTML 변환 처리기가 #display-inlineBlock 기능을 지원하는 경우는 inlineBlock 값을 갖는 tts:display 속성이 콘텐츠 요소에 적용될 때 그 값을 인식하고 변환할 수 있는 경우이며, 해당 요소는 표시 처리 중에 인라인 영역을 생성하게 됩니다.

TTML 표시 처리기가 #display-inlineBlock 기능을 지원하는 경우는 inlineBlock 값을 갖는 tts:display 속성이 콘텐츠 요소에 적용될 때 그 값의 표시 의미를 지원하는 경우이며, 해당 요소는 표시 처리 중에 인라인 영역을 생성하게 됩니다.

E.1.62 #display-region

TTML 콘텐츠 처리기가 #display-region 기능을 지원하는 경우는 #display-region 기능을 [TTML1], §D.1.19에 정의된 대로 지원하는 경우입니다.

E.1.63 #display-version-2

TTML 처리기는 #display-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#display-version-2 기능은 #display 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #display-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #display, #display-block, #display-inline, #display-inlineBlock 또는 #display-region.

E.1.64 #displayAlign

TTML 콘텐츠 처리기가 #displayAlign 기능을 지원하는 경우는 #displayAlign 기능을 [TTML1], §D.1.20에 정의된 대로 지원하는 경우입니다.

참고:

#displayAlign 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #displayAlign 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #displayAlign-region 또는 #displayAlign-relative.

E.1.65 #displayAlign-block

TTML 변환 처리기가 #displayAlign-block 기능을 지원하는 경우는 다음 속성에 대한 변환 의미 지원을 구현한 경우입니다: tts:displayAlign 속성이 콘텐츠 요소에 적용되는 경우로, 해당 요소는 표시 처리 중에 블록 영역을 생성하게 됩니다.

TTML 표시 처리기가 #displayAlign-block 기능을 지원하는 경우는 다음 속성에 대한 표시 의미 지원을 구현한 경우입니다: tts:displayAlign 속성이 콘텐츠 요소에 적용되는 경우로, 해당 요소는 블록 영역을 생성합니다.

E.1.66 #displayAlign-justify

TTML 변환 처리기는 #displayAlign-justify 기능을 다음 속성의 값을 인식하고 변환할 수 있는 경우에 지원합니다. 해당 값은 justify이며, tts:displayAlign 속성의 값입니다.

TTML 표시 처리기는 #displayAlign-justify 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: justify 값으로, tts:displayAlign 속성의 값입니다.

E.1.67 #displayAlign-region

TTML 변환 처리기가 #displayAlign-region 기능을 지원하는 경우는 다음 속성에 대한 변환 의미 지원을 구현한 경우입니다: tts:displayAlign 속성이 region 요소에 적용되는 경우.

TTML 표시 처리기가 #displayAlign-region 기능을 지원하는 경우는 다음 속성에 대한 표시 의미 지원을 구현한 경우입니다: tts:displayAlign 속성이 region 요소에 적용되는 경우.

E.1.68 #displayAlign-relative

TTML 변환 처리기는 #displayAlign-relative 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다: before, center, 그리고 after 값으로, tts:displayAlign 속성의 값입니다.

TTML 표시 처리기는 #displayAlign-relative 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: before, center, 그리고 after 값으로, tts:displayAlign 속성의 값입니다.

E.1.69 #displayAlign-version-2

TTML 처리기는 #displayAlign-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#displayAlign-version-2 기능은 #displayAlign 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #displayAlign-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #displayAlign, #displayAlign-block, #displayAlign-justify, #displayAlign-region 또는 #displayAlign-relative.

E.1.70 #displayAspectRatio

TTML 변환 처리기는 #displayAspectRatio 기능을 다음 속성을 인식하고 변환할 수 있는 경우에 지원합니다: ttp:displayAspectRatio 속성.

TTML 표시 처리기는 #displayAspectRatio 기능을 다음 속성에 대한 표시 의미 지원을 구현한 경우에 지원합니다: ttp:displayAspectRatio 속성.

E.1.71 #dropMode

TTML 콘텐츠 처리기가 #dropMode 기능을 지원하는 경우는 #dropMode 기능을 [TTML1], §D.1.21에 정의된 대로 지원하는 경우입니다.

참고:

#dropMode 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #dropMode 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #dropMode-dropNTSC, #dropMode-dropPAL 또는 #dropMode-nonDrop.

E.1.72 #dropMode-dropNTSC

TTML 콘텐츠 처리기가 #dropMode-dropNTSC 기능을 지원하는 경우는 #dropMode-dropNTSC 기능을 [TTML1], §D.1.22에 정의된 대로 지원하는 경우입니다.

E.1.73 #dropMode-dropPAL

TTML 콘텐츠 처리기가 #dropMode-dropPAL 기능을 지원하는 경우는 #dropMode-dropPAL 기능을 [TTML1], §D.1.23에 정의된 대로 지원하는 경우입니다.

E.1.74 #dropMode-nonDrop

TTML 콘텐츠 처리기가 #dropMode-nonDrop 기능을 지원하는 경우는 #dropMode-nonDrop 기능을 [TTML1], §D.1.24에 정의된 대로 지원하는 경우입니다.

E.1.75 #embedded-audio

TTML 처리기는 #embedded-audio 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #embedded-audio 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #embedded-data 또는 #audio.

E.1.76 #embedded-content

TTML 처리기는 #embedded-content 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #embedded-content 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #embedded-audio, #embedded-font 또는 #embedded-image.

E.1.77 #embedded-data

TTML 처리기는 #embedded-data 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #embedded-data 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #chunk, #data, #resources 또는 #source.

E.1.78 #embedded-font

TTML 처리기는 #embedded-font 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #embedded-font 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #embedded-data 또는 #font.

E.1.79 #embedded-image

TTML 처리기는 #embedded-image 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #embedded-image 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #embedded-data 또는 #image.

E.1.80 #extent

TTML 콘텐츠 처리기가 #extent 기능을 지원하는 경우는 #extent 기능을 [TTML1], §D.1.25에 정의된 대로 지원하는 경우입니다.

참고:

#extent 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #extent 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #extent-region 또는 #extent-root.

참고:

#extent 기능의 지원이 #region-implied-animation 기능의 지원을 의미하지는 않습니다.

E.1.81 #extent-auto

TTML 콘텐츠 처리기는 #extent-auto 기능을 다음 값의 구문과 의미를 지원하는 경우에 지원합니다: auto 값으로, tts:extent 속성의 값이며 [TTML1], §8.2.7에 정의되어 있습니다.

E.1.82 #extent-auto-version-2

TTML 변환 처리기는 #extent-auto-version-2 기능을 다음 값의 구문과 의미를 인식하고 변환할 수 있는 경우에 지원합니다: auto 값으로, tts:extent 속성의 값이며 이 명세에 정의되어 있습니다.

TTML 표시 처리기는 #extent-auto-version-2 기능을 다음 값의 의미적 확장에 대한 표시 의미 지원을 구현한 경우에 지원합니다: auto 값으로, tts:extent 속성의 값이며 위에서 설명한 대로입니다.

#extent-auto-version-2 기능은 #extent-auto 기능의 의미적 확장입니다.

콘텐츠 프로파일이 #extent-auto-version-2 기능의 사용을 요구하거나 허용하면서 (1) #extent-auto 기능의 사용을 금지하거나 (2) 다음 기능 모두의 사용을 금지하는 것은 오류입니다: #extent-root, #extent-region, 그리고 #extent-image.

참고:

#extent-auto-version-2 기능의 지원이 다음 기능들의 지원을 의미하지는 않습니다:

그러나 이러한 기능 중 어느 하나라도 지원되는 경우, #extent-auto-version-2 기능의 지원은 해당 기능과 관련하여 #extent-auto-version-2가 지원됨을 의미합니다. 더 구체적으로는, 해당 기능이 지원하는 요소와 관련하여 지원됨을 의미하며, 이는 다음 요소 유형 각각에 해당합니다: tt, region, 그리고 image.

E.1.83 #extent-contain

TTML 변환 처리기는 #extent-contain 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다: contain 값으로, tts:extent 속성의 값입니다.

TTML 표시 처리기는 #extent-contain 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: contain 값으로, tts:extent 속성의 값입니다.

E.1.84 #extent-cover

TTML 변환 처리기는 #extent-cover 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다: cover 값으로, tts:extent 속성의 값입니다.

TTML 표시 처리기는 #extent-cover 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: cover 값으로, tts:extent 속성의 값입니다.

E.1.85 #extent-full-version-2

TTML 처리기는 #extent-full-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#extent-full-version-2 기능은 #extent-version-2 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #extent-full-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #extent-contain, #extent-cover, #extent-measure 또는 #extent-version-2.

참고:

#extent-full-version-2 기능의 지원이 #region-implied-animation 기능의 지원을 의미하지는 않습니다.

E.1.86 #extent-image

TTML 변환 처리기는 #extent-image 기능을 다음 속성 값들을 지원하는 경우에 지원합니다: tts:extent 속성의 값 중 #extent-auto-version-2 및 #extent-length-version-2 기능이 지원하는 값으로, image 요소에 적용되는 경우입니다.

TTML 표시 처리기는 #extent-image 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

콘텐츠 프로파일이 #extent-image 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #extent, 기능: #extent-auto-version-2 또는 #extent-length-version-2.

E.1.87 #extent-length

TTML 콘텐츠 처리기는 #extent-length 기능을 다음 값을 지원하는 경우에 지원합니다: <length> 구성 요소 값으로, tts:extent 속성의 값이며 [TTML1], §8.2.7에 정의되어 있습니다.

E.1.88 #extent-length-version-2

TTML 콘텐츠 처리기는 #extent-length-version-2 기능을 다음 기능을 지원하는 경우에 지원합니다: #length-version-2 기능으로, 그 적용 대상은 다음과 같습니다: <length> 구성 요소 값으로, tts:extent 속성의 값입니다.

#extent-length-version-2 기능은 #extent-length 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #extent-length-version-2 기능의 사용을 요구하거나 허용하면서 #extent-length 기능의 사용을 금지하는 것은 오류입니다.

E.1.89 #extent-measure

TTML 변환 처리기는 #extent-measure 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다. 이는 <measure> 스타일 값 표현식의 값으로, 다음 tts:extent 속성과 함께 사용되는 경우입니다:

  • auto

  • fitContent

  • maxContent

  • minContent

TTML 표시 처리기는 #extent-measure 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.90 #extent-region

TTML 콘텐츠 처리기가 #extent-region 기능을 지원하는 경우는 #extent-region 기능을 [TTML1], §D.1.26에 정의된 대로 지원하는 경우입니다.

참고:

#extent-region 기능의 지원은 #extent-auto 및 #extent-length 기능이 region 요소에 적용될 때 지원됨을 의미합니다.

E.1.91 #extent-region-version-2

TTML 처리기는 #extent-region-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#extent-region-version-2 기능은 #extent-region 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #extent-region-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #extent-region, #extent-auto-version-2 또는 #extent-length-version-2.

참고:

#extent-region-version-2 기능의 지원이 #region-implied-animation 기능의 지원을 의미하지는 않습니다.

E.1.92 #extent-root

TTML 콘텐츠 처리기가 #extent-root 기능을 지원하는 경우는 #extent-root 기능을 [TTML1], §D.1.27에 정의된 대로 지원하는 경우입니다.

참고:

#extent-root 기능의 지원은 #extent-auto 및 #extent-length 기능이 tt 요소에 적용될 때 지원됨을 의미합니다.

E.1.93 #extent-root-version-2

TTML 처리기는 #extent-root-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#extent-root-version-2 기능은 #extent-root 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #extent-root-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #extent-root, #extent-auto-version-2 또는 #extent-contain.

참고:

#extent-root-version-2 기능의 지원은 다음 기능의 지원을 의미하도록 의도되었습니다: #extent-contain 기능으로, 루트 tt 요소에 적용되는 경우에만 해당하며, 다른 요소 유형에는 해당하지 않습니다.

E.1.94 #extent-version-2

TTML 처리기는 #extent-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#extent-version-2 기능은 #extent 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #extent-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #extent, #extent-image, #extent-region-version-2 또는 #extent-root-version-2.

참고:

#extent-version-2 기능의 지원이 다음 기능 중 어느 것의 지원도 의미하지는 않습니다: #extent-contain, #extent-cover, #extent-measure 또는 #region-implied-animation.

E.1.95 #font

TTML 변환 처리기는 #font 기능을 다음 어휘를 인식하고 변환할 수 있는 경우에 지원하며, 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기는 #font 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.96 #fontFamily

TTML 콘텐츠 처리기가 #fontFamily 기능을 지원하는 경우는 #fontFamily 기능을 [TTML1], §D.1.28에 정의된 대로 지원하는 경우입니다.

참고:

#fontFamily 기능의 지원은 기능적으로 다음 기능들의 지원과 동등합니다:

콘텐츠 프로파일이 #fontFamily 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #fontFamily-generic 또는 #fontFamily-non-generic.

E.1.97 #fontFamily-generic

TTML 콘텐츠 처리기가 #fontFamily-generic 기능을 지원하는 경우는 #fontFamily-generic 기능을 [TTML1], §D.1.29에 정의된 대로 지원하는 경우입니다.

E.1.98 #fontFamily-non-generic

TTML 콘텐츠 처리기가 #fontFamily-non-generic 기능을 지원하는 경우는 #fontFamily-non-generic 기능을 [TTML1], §D.1.30에 정의된 대로 지원하는 경우입니다.

E.1.99 #fontKerning

TTML 변환 처리기는 #fontKerning 기능을 다음 속성을 인식하고 변환할 수 있는 경우에 지원합니다: tts:fontKerning 속성.

TTML 표시 처리기는 #fontKerning 기능을 다음 속성에 대한 표시 의미 지원을 구현한 경우에 지원합니다: tts:fontKerning 속성.

E.1.100 #fontSelectionStrategy

TTML 변환 처리기는 #fontSelectionStrategy 기능을 다음 값을 인식하고 변환할 수 있는 경우에 지원합니다: auto 값으로, tts:fontSelectionStrategy 속성의 값입니다.

TTML 표시 처리기는 #fontSelectionStrategy 기능을 다음 값에 대한 표시 의미 지원을 구현한 경우에 지원합니다: auto 값으로, tts:fontSelectionStrategy 속성의 값입니다.

E.1.101 #fontSelectionStrategy-character

TTML 변환 처리기가 #fontSelectionStrategy-character 기능을 지원하는 경우는 character 값이 지정된 tts:fontSelectionStrategy 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #fontSelectionStrategy-character 기능을 지원하는 경우는 character 값이 지정된 tts:fontSelectionStrategy 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.102 #fontShear

TTML 변환 처리기가 #fontShear 기능을 지원하는 경우는 tts:fontShear 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #fontShear 기능을 지원하는 경우는 tts:fontShear 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.103 #fontSize

TTML 콘텐츠 처리기가 #fontSize 기능을 지원하는 경우는 #fontSize 기능을 [TTML1], §D.1.31에 정의된 대로 지원하는 경우입니다.

참고:

#fontSize 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #fontSize 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #fontSize-anamorphic 또는 #fontSize-isomorphic.

E.1.104 #fontSize-anamorphic

TTML 콘텐츠 처리기가 #fontSize-anamorphic 기능을 지원하는 경우는 #fontSize-anamorphic 기능을 [TTML1], §D.1.32에 정의된 대로 지원하는 경우입니다.

E.1.105 #fontSize-isomorphic

TTML 콘텐츠 처리기가 #fontSize-isomorphic 기능을 지원하는 경우는 #fontSize-isomorphic 기능을 [TTML1], §D.1.33에 정의된 대로 지원하는 경우입니다.

E.1.106 #fontStyle

TTML 콘텐츠 처리기가 #fontStyle 기능을 지원하는 경우는 #fontStyle 기능을 [TTML1], §D.1.34에 정의된 대로 지원하는 경우입니다.

참고:

#fontStyle 기능의 지원은 다음 두 가지를 함께 지원하는 것과 기능적으로 동등합니다: (1) 다음의 #fontStyle-italic 및 #fontStyle-oblique 기능 그리고 (2) normal 값이 지정된 tts:fontStyle 속성.

콘텐츠 프로파일이 #fontStyle 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #fontStyle-italic 또는 #fontStyle-oblique.

E.1.107 #fontStyle-italic

TTML 콘텐츠 처리기가 #fontStyle-italic 기능을 지원하는 경우는 #fontStyle-italic 기능을 [TTML1], §D.1.35에 정의된 대로 지원하는 경우입니다.

E.1.108 #fontStyle-oblique

TTML 콘텐츠 처리기가 #fontStyle-oblique 기능을 지원하는 경우는 #fontStyle-oblique 기능을 [TTML1], §D.1.36에 정의된 대로 지원하는 경우입니다.

E.1.109 #fontVariant

TTML 변환 처리기가 #fontVariant 기능을 지원하는 경우는 tts:fontVariant 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #fontVariant 기능을 지원하는 경우는 tts:fontVariant 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.110 #fontWeight

TTML 콘텐츠 처리기가 #fontWeight 기능을 지원하는 경우는 #fontWeight 기능을 [TTML1], §D.1.37에 정의된 대로 지원하는 경우입니다.

참고:

#fontWeight 기능의 지원은 다음 두 가지를 함께 지원하는 것과 기능적으로 동등합니다: (1) #fontWeight-bold 기능 그리고 (2) normal 값이 지정된 tts:fontWeight 속성.

콘텐츠 프로파일이 #fontWeight 기능의 사용을 요구하거나 허용하면서 #fontWeight-bold 기능의 사용을 금지하는 것은 오류입니다.

E.1.111 #fontWeight-bold

TTML 콘텐츠 처리기가 #fontWeight-bold 기능을 지원하는 경우는 #fontWeight-bold 기능을 [TTML1], §D.1.38에 정의된 대로 지원하는 경우입니다.

E.1.112 #frameRate

TTML 콘텐츠 처리기가 #frameRate 기능을 지원하는 경우는 #frameRate 기능을 [TTML1], §D.1.39에 정의된 대로 지원하는 경우입니다.

E.1.113 #frameRateMultiplier

TTML 콘텐츠 처리기가 #frameRateMultiplier 기능을 지원하는 경우는 #frameRateMultiplier 기능을 [TTML1], §D.1.40에 정의된 대로 지원하는 경우입니다.

E.1.114 #gain

TTML 변환 처리기가 #gain 기능을 지원하는 경우는 tta:gain 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #gain 기능을 지원하는 경우는 tta:gain 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.115 #image

TTML 변환 처리기가 #image 기능을 지원하는 경우는 다음 어휘를 인식하고 변환할 수 있는 경우입니다. 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기가 #image 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.116 #image-png

TTML 변환 처리기가 #image-png 기능을 지원하는 경우는 다음 이미지 리소스를 인식하고 변환할 수 있는 경우입니다: 콘텐츠 유형이 image/png이며 [PNG]에 정의된 리소스.

TTML 표시 처리기가 #image-png 기능을 지원하는 경우는 다음 이미지 리소스에 대한 표시 의미 지원을 구현한 경우입니다: 콘텐츠 유형이 image/png이며 [PNG]에 정의된 리소스.

E.1.117 #initial

TTML 변환 처리기가 #initial 기능을 지원하는 경우는 다음 어휘를 인식하고 변환할 수 있는 경우입니다. 이 어휘는 10 스타일링에 정의되어 있습니다:

TTML 표시 처리기가 #initial 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.118 #ipd

TTML 변환 처리기가 #ipd 기능을 지원하는 경우는 tts:ipd 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #ipd 기능을 지원하는 경우는 tts:ipd 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.119 #layout

TTML 콘텐츠 처리기가 #layout 기능을 지원하는 경우는 #layout 기능을 [TTML1], §D.1.41에 정의된 대로 지원하는 경우입니다.

E.1.120 #length

TTML 콘텐츠 처리기가 #length 기능을 지원하는 경우는 #length 기능을 [TTML1], §D.1.42에 정의된 대로 지원하는 경우입니다.

E.1.121 #length-cell

TTML 콘텐츠 처리기가 #length-cell 기능을 지원하는 경우는 #length-cell 기능을 [TTML1], §D.1.43에 정의된 대로 지원하는 경우입니다.

E.1.122 #length-em

TTML 콘텐츠 처리기가 #length-em 기능을 지원하는 경우는 #length-em 기능을 [TTML1], §D.1.44에 정의된 대로 지원하는 경우입니다.

E.1.123 #length-integer

TTML 콘텐츠 처리기가 #length-integer 기능을 지원하는 경우는 #length-integer 기능을 [TTML1], §D.1.45에 정의된 대로 지원하는 경우입니다.

E.1.124 #length-negative

TTML 콘텐츠 처리기가 #length-negative 기능을 지원하는 경우는 #length-negative 기능을 [TTML1], §D.1.46에 정의된 대로 지원하는 경우입니다.

E.1.125 #length-percentage

TTML 콘텐츠 처리기가 #length-percentage 기능을 지원하는 경우는 #length-percentage 기능을 [TTML1], §D.1.47에 정의된 대로 지원하는 경우입니다.

E.1.126 #length-pixel

TTML 콘텐츠 처리기가 #length-pixel 기능을 지원하는 경우는 #length-pixel 기능을 [TTML1], §D.1.48에 정의된 대로 지원하는 경우입니다.

E.1.127 #length-positive

TTML 콘텐츠 처리기가 #length-positive 기능을 지원하는 경우는 #length-positive 기능을 [TTML1], §D.1.49에 정의된 대로 지원하는 경우입니다.

E.1.128 #length-real

TTML 콘텐츠 처리기가 #length-real 기능을 지원하는 경우는 #length-real 기능을 [TTML1], §D.1.50에 정의된 대로 지원하는 경우입니다.

E.1.129 #length-real-version-2

TTML 변환 처리기가 #length-real-version-2 기능을 지원하는 경우는 다음 <length> 스타일 값 표현식의 실수 값에 대한 구문과 의미를 인식하고 변환할 수 있는 경우입니다. 이 실수 값에는 non-negative-real 비단말 표현식의 모든 값이 포함되며, 이 비단말 표현식은 다음에 정의되어 있습니다: <non-negative-number>.

TTML 표시 처리기가 #length-real-version-2 기능을 지원하는 경우는 위에서 설명한 <length> 스타일 값 표현식의 값에 대한 표시 의미 지원을 구현한 경우입니다.

#length-real-version-2 기능은 #length-real 기능의 구문적 확장입니다.

콘텐츠 프로파일이 #length-real-version-2 기능의 사용을 요구하거나 허용하면서 #length-real 기능의 사용을 금지하는 것은 오류입니다.

E.1.130 #length-root-container-relative

TTML 변환 처리기가 #length-root-container-relative 기능을 지원하는 경우는 다음의 루트 컨테이너 상대 값을 인식하고 변환할 수 있는 경우입니다: <length> 스타일 값 표현식의 값.

TTML 표시 처리기가 #length-root-container-relative 기능을 지원하는 경우는 다음의 루트 컨테이너 상대 값에 대한 표시 의미 지원을 구현한 경우입니다: <length> 스타일 값 표현식의 값.

E.1.131 #length-version-2

TTML 처리기는 #length-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#length-version-2 기능은 #length 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #length-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #length, #length-real-version-2, 또는 #length-root-container-relative.

E.1.132 #letterSpacing

TTML 변환 처리기가 #letterSpacing 기능을 지원하는 경우는 tts:letterSpacing 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #letterSpacing 기능을 지원하는 경우는 tts:letterSpacing 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.133 #lineBreak-uax14

TTML 콘텐츠 처리기가 #lineBreak-uax14 기능을 지원하는 경우는 #lineBreak-uax14 기능을 [TTML1], §D.1.51에 정의된 대로 지원하는 경우입니다.

E.1.134 #lineHeight

TTML 콘텐츠 처리기가 #lineHeight 기능을 지원하는 경우는 #lineHeight 기능을 [TTML1], §D.1.52에 정의된 대로 지원하는 경우입니다.

E.1.135 #lineShear

TTML 변환 처리기가 #lineShear 기능을 지원하는 경우는 tts:lineShear 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #lineShear 기능을 지원하는 경우는 tts:lineShear 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.136 #luminanceGain

TTML 변환 처리기가 #luminanceGain 기능을 지원하는 경우는 tts:luminanceGain 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #luminanceGain 기능을 지원하는 경우는 tts:luminanceGain에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.137 #markerMode

TTML 콘텐츠 처리기가 #markerMode 기능을 지원하는 경우는 #markerMode 기능을 [TTML1], §D.1.53에 정의된 대로 지원하는 경우입니다.

참고:

#markerMode 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #markerMode 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #markerMode-continuous 또는 #markerMode-discontinuous.

E.1.138 #markerMode-continuous

TTML 콘텐츠 처리기가 #markerMode-continuous 기능을 지원하는 경우는 #markerMode-continuous 기능을 [TTML1], §D.1.54에 정의된 대로 지원하는 경우입니다.

E.1.139 #markerMode-discontinuous

TTML 콘텐츠 처리기가 #markerMode-discontinuous 기능을 지원하는 경우는 #markerMode-discontinuous 기능을 [TTML1], §D.1.55에 정의된 대로 지원하는 경우입니다.

E.1.140 #metadata

TTML 콘텐츠 처리기가 #metadata 기능을 지원하는 경우는 #metadata 기능을 [TTML1], §D.1.56에 정의된 대로 지원하는 경우입니다.

E.1.141 #metadata-item

TTML 변환 처리기가 #metadata-item 기능을 지원하는 경우는 다음 어휘를 인식하고 변환할 수 있는 경우입니다. 이 어휘는 14 메타데이터에 정의되어 있습니다:

TTML 표시 처리기가 #metadata-item 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

이 명세는 메타데이터 정보를 표시하기 위한 표준화된 형식을 정의하지 않습니다. 메타데이터 정보의 표시 또는 이를 표시하는 능력은 구현에 종속되는 것으로 간주됩니다.

E.1.142 #metadata-version-2

TTML 처리기는 #metadata-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#metadata-version-2 기능은 #metadata 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #metadata-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #metadata 또는 #metadata-item.

E.1.143 #nested-div

TTML 콘텐츠 처리기가 #nested-div 기능을 지원하는 경우는 #nested-div 기능을 [TTML1], §D.1.57에 정의된 대로 지원하는 경우입니다.

E.1.144 #nested-span

TTML 콘텐츠 처리기가 #nested-span 기능을 지원하는 경우는 #nested-span 기능을 [TTML1], §D.1.58에 정의된 대로 지원하는 경우입니다.

E.1.145 #opacity

TTML 콘텐츠 처리기가 #opacity 기능을 지원하는 경우는 #opacity 기능을 [TTML1], §D.1.59에 정의된 대로 지원하는 경우입니다.

참고:

#opacity 기능의 지원은 #opacity-region 기능의 지원과 기능적으로 동등합니다.

콘텐츠 프로파일이 #opacity 기능의 사용을 요구하거나 허용하면서 #opacity-region 기능의 사용을 금지하는 것은 오류입니다.

E.1.146 #opacity-block

TTML 변환 처리기가 #opacity-block 기능을 지원하는 경우는 다음 tts:opacity 속성을 콘텐츠 요소에 적용할 때 정의된 모든 값을 인식하고 변환할 수 있는 경우입니다. 이 요소는 표시 처리 중에 블록 영역을 생성하는 요소입니다.

TTML 표시 처리기가 #opacity-block 기능을 지원하는 경우는 (1) 다음 속성에 대한 표시 의미 지원을 구현하고, tts:opacity 속성이 적용되는 콘텐츠 요소가 하나의 블록 영역을 생성하며, (2) 적어도 여덟(8) 가지 불투명도 값을 구별하여 표시하거나 이를 구별하는 출력 표시 신호를 생성할 수 있는 경우입니다.

E.1.147 #opacity-image

TTML 변환 처리기가 #opacity-image 기능을 지원하는 경우는 tts:opacity 속성을 image 요소에 적용할 때 정의된 모든 값을 지원하는 경우입니다.

TTML 표시 처리기가 #opacity-image 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

#opacity-image 기능의 지원이 #image 기능의 지원을 의미하지는 않습니다. 그러나 후자를 지원하지 않으면 전자를 지원하는 것은 아무런 목적도 달성하지 못합니다.

E.1.148 #opacity-inline

TTML 변환 처리기가 #opacity-inline 기능을 지원하는 경우는 다음 tts:opacity 속성을 콘텐츠 요소에 적용할 때 정의된 모든 값을 인식하고 변환할 수 있는 경우입니다. 이 요소는 표시 처리 중에 인라인 영역을 생성하는 요소입니다.

TTML 표시 처리기가 #opacity-inline 기능을 지원하는 경우는 (1) 다음 속성에 대한 표시 의미 지원을 구현하고, tts:opacity 속성이 적용되는 콘텐츠 요소가 하나의 인라인 영역을 생성하며, (2) 적어도 여덟(8) 가지 불투명도 값을 구별하여 표시하거나 이를 구별하는 출력 표시 신호를 생성할 수 있는 경우입니다.

E.1.149 #opacity-region

TTML 변환 처리기가 #opacity-region 기능을 지원하는 경우는 다음 tts:opacity 속성을 region 요소에 적용할 때 정의된 모든 값을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #opacity-region 기능을 지원하는 경우는 (1) 다음 속성에 대한 표시 의미 지원을 구현하고, tts:opacity 속성이 region 요소에 적용되며, (2) 적어도 여덟(8) 가지 불투명도 값을 구별하여 표시하거나 이를 구별하는 출력 표시 신호를 생성할 수 있는 경우입니다.

참고:

#opacity-region 기능의 지원은 다음 #opacity 기능의 지원과 기능적으로 동등합니다.

콘텐츠 프로파일이 #opacity-region 기능의 사용을 요구하거나 허용하면서 #opacity 기능의 사용을 금지하는 것은 오류입니다.

E.1.150 #opacity-version-2

TTML 처리기는 #opacity-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#opacity-version-2 기능은 #opacity 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #opacity-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #opacity, #opacity-block, #opacity-image, #opacity-inline, 또는 #opacity-region.

E.1.151 #origin

TTML 콘텐츠 처리기가 #origin 기능을 지원하는 경우는 #origin 기능을 [TTML1], §D.1.60에 정의된 대로 지원하는 경우입니다.

참고:

#origin 기능의 지원이 #region-implied-animation 기능의 지원을 의미하지는 않습니다.

E.1.152 #overflow

TTML 콘텐츠 처리기가 #overflow 기능을 지원하는 경우는 #overflow 기능을 [TTML1], §D.1.61에 정의된 대로 지원하는 경우입니다.

참고:

#overflow 기능의 지원은 다음 두 가지를 함께 지원하는 것과 기능적으로 동등합니다: (1) 다음의 #overflow-visible 기능 그리고 (2) hidden 값이 지정된 tts:overflow 속성.

콘텐츠 프로파일이 #overflow 기능의 사용을 요구하거나 허용하면서 #overflow-visible 기능의 사용을 금지하는 것은 오류입니다.

E.1.153 #overflow-visible

TTML 콘텐츠 처리기가 #overflow-visible 기능을 지원하는 경우는 #overflow-visible 기능을 [TTML1], §D.1.62에 정의된 대로 지원하는 경우입니다.

E.1.154 #padding

TTML 콘텐츠 처리기가 #padding 기능을 지원하는 경우는 #padding 기능을 [TTML1], §D.1.63에 정의된 대로 지원하는 경우입니다.

참고:

#padding 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #padding 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #padding-1, #padding-2, #padding-3, #padding-4, #padding-region.

E.1.155 #padding-1

TTML 콘텐츠 처리기가 #padding-1 기능을 지원하는 경우는 #padding-1 기능을 [TTML1], §D.1.64에 정의된 대로 지원하는 경우입니다.

E.1.156 #padding-2

TTML 콘텐츠 처리기가 #padding-2 기능을 지원하는 경우는 #padding-2 기능을 [TTML1], §D.1.65에 정의된 대로 지원하는 경우입니다.

E.1.157 #padding-3

TTML 콘텐츠 처리기가 #padding-3 기능을 지원하는 경우는 #padding-3 기능을 [TTML1], §D.1.66에 정의된 대로 지원하는 경우입니다.

E.1.158 #padding-4

TTML 콘텐츠 처리기가 #padding-4 기능을 지원하는 경우는 #padding-4 기능을 [TTML1], §D.1.67에 정의된 대로 지원하는 경우입니다.

E.1.159 #padding-block

TTML 변환 처리기가 #padding-block 기능을 지원하는 경우는 다음 tts:padding 속성을 콘텐츠 요소에 적용할 때 정의된 모든 값을 인식하고 변환할 수 있는 경우입니다. 이 요소는 표시 처리 중에 블록 영역을 생성하는 요소입니다.

TTML 표시 처리기가 #padding-block 기능을 지원하는 경우는 다음 속성에 대한 표시 의미 지원을 구현한 경우입니다: tts:padding 속성. 이 속성이 적용되는 콘텐츠 요소는 하나의 블록 영역을 생성하는 요소입니다.

E.1.160 #padding-inline

TTML 변환 처리기가 #padding-inline 기능을 지원하는 경우는 다음 tts:padding 속성을 콘텐츠 요소에 적용할 때 정의된 모든 값을 인식하고 변환할 수 있는 경우입니다. 이 요소는 표시 처리 중에 인라인 영역을 생성하는 요소입니다.

TTML 표시 처리기가 #padding-inline 기능을 지원하는 경우는 다음 속성에 대한 표시 의미 지원을 구현한 경우입니다: tts:padding 속성. 이 속성이 적용되는 콘텐츠 요소는 하나의 인라인 영역을 생성하는 요소입니다.

E.1.161 #padding-region

TTML 콘텐츠 처리기는 #padding-region 기능을 #padding 기능을 지원하는 경우에 지원합니다.

#padding-region 기능은 널 확장에 해당하며, 그 대상은 #padding 기능입니다. 여기서 널 확장이란 어떤 기능이 형식적으로 다른 기능의 확장으로 표시되지만, 확장의 의미가 공집합인 경우를 뜻합니다. 이는 곧 두 기능이 기능적으로 동등하다는 의미입니다.

콘텐츠 프로파일이 #padding-region 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #padding, #padding-1, #padding-2, #padding-3, 또는 #padding-4.

E.1.162 #padding-version-2

TTML 처리기는 #padding-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#padding-version-2 기능은 #padding 기능의 구문적 및 의미적 확장입니다.

참고:

#padding-region 기능은 널 확장이며, 그 대상은 #padding 기능이므로, #padding-version-2 기능은 또한 다음 기능의 구문적 및 의미적 확장입니다: #padding-region 기능.

콘텐츠 프로파일이 #padding-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #padding, #padding-1, #padding-2, #padding-3, #padding-4. #padding-block, #padding-inline, 또는 #padding-region.

E.1.163 #pan

TTML 변환 처리기가 #pan 기능을 지원하는 경우는 tta:pan 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #pan 기능을 지원하는 경우는 tta:pan 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.164 #permitFeatureNarrowing

TTML 변환 처리기는 #permitFeatureNarrowing 기능을 다음을 인식하고 변환할 수 있는 경우에 지원합니다: (1) ttp:permitFeatureNarrowing 속성 및 (2) 다음 요소에 지정된 extends 속성: ttp:feature 및 ttp:extension 요소.

TTML 표시 처리기가 #permitFeatureNarrowing 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

TTML 처리기가 #permitFeatureNarrowing 기능이 선택 사항으로 지정되어 있을 때 이를 지원하지 않으면, extends 속성의 의미는 무시됩니다. 즉, 확장의 대상이 되는 기능을 지원하는 것만으로는 확장 기능이 지원된다고 간주하기에 충분하지 않습니다.

E.1.165 #permitFeatureWidening

TTML 변환 처리기는 #permitFeatureWidening 기능을 다음을 인식하고 변환할 수 있는 경우에 지원합니다: (1) ttp:permitFeatureWidening 속성 및 (2) 다음 요소에 지정된 restricts 속성: ttp:feature 및 ttp:extension 요소.

TTML 표시 처리기가 #permitFeatureWidening 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

TTML 처리기가 #permitFeatureWidening 기능이 선택 사항으로 지정되어 있을 때 이를 지원하지 않으면, restricts 속성의 의미는 무시됩니다. 즉, 제한의 대상이 되는 기능을 지원하는 것만으로는 제한된 기능이 지원된다고 간주하기에 충분하지 않습니다.

E.1.166 #pitch

TTML 변환 처리기가 #pitch 기능을 지원하는 경우는 tta:pitch 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #pitch 기능을 지원하는 경우는 tta:pitch 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.167 #pixelAspectRatio

TTML 콘텐츠 처리기가 #pixelAspectRatio 기능을 지원하는 경우는 #pixelAspectRatio 기능을 [TTML1], §D.1.68에 정의된 대로 지원하는 경우입니다.

E.1.168 #position

TTML 변환 처리기가 #position 기능을 지원하는 경우는 tts:position 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #position 기능을 지원하는 경우는 tts:position 속성에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

#position 기능의 지원이 #region-implied-animation 기능의 지원을 의미하지는 않습니다.

E.1.169 #presentation

TTML 콘텐츠 처리기가 #presentation 기능을 지원하는 경우는 #presentation 기능을 [TTML1], §D.1.69에 정의된 대로 지원하는 경우입니다.

E.1.170 #presentation-audio

TTML 콘텐츠 처리기는 #presentation-audio 기능을 다음 조건을 충족하는 경우에 지원합니다: (1) 다음에 정의된 일반 처리기 기준을 충족합니다: 3.2.1 일반 처리기 적합성, (2) 오디오 표시(렌더링) 의미에 대한 지원을 구현합니다. 그리고 (3) 다음 기능들에 대한 오디오 표시 의미를 구현합니다:

또한, #presentation-audio 기능을 지원하는 TTML 처리기는 [UAAG]에 명시된 사용자 에이전트 접근성 지침을 충족하는 것이 좋습니다.

E.1.171 #presentation-version-2

TTML 처리기는 #presentation-version-2 기능을 다음 조건을 충족하는 경우에 지원합니다: (1) 다음에 정의된 일반 처리기 기준을 충족합니다: 3.2.1 일반 처리기 적합성. 그리고 (2) 다음 기능들을 지원합니다:

#presentation-version-2 기능은 #presentation 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #presentation-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #presentation 또는 #profile-version-2.

E.1.172 #processorProfiles

TTML 변환 처리기는 #processorProfiles 기능을 (1) 비결합 프로파일을 지원하고 (2) 다음을 인식하고 변환할 수 있는 경우에 지원합니다:

  1. 다음에 정의된 아래의 프로파일 속성 어휘: 6.2 프로파일 속성 어휘:

  2. 다음 요소의 designator 속성: ttp:profile 요소, 그리고

  3. processor 값이 지정된 type 속성으로, ttp:profile 요소에 지정되는 속성.

TTML 표시 처리기가 #processorProfiles 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

#processorProfiles 기능의 지원이 결합 프로파일 또는 중첩 프로파일의 지원을 의미하지는 않습니다.

E.1.173 #processorProfiles-combined

TTML 변환 처리기는 #processorProfiles-combined 기능을 (1) 다음 #processorProfiles 기능을 지원하고, (2) 결합 프로파일을 지원하며, (3) 다음을 인식하고 변환할 수 있는 경우에 지원합니다:

  1. 다음에 정의된 아래의 프로파일 속성 어휘: 6.2 프로파일 속성 어휘:

  2. 다음 요소의 combine 속성: ttp:profile 요소.

TTML 표시 처리기가 #processorProfiles-combined 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

#processorProfiles-combine 기능은 #processorProfiles 기능의 구문적 및 의미적 확장입니다.

처리기 프로파일이 #processorProfiles-combine 기능의 사용을 요구하거나 허용하면서 #processorProfiles 기능의 사용을 금지하는 것은 오류입니다.

참고:

#processorProfiles-combined 기능의 지원이 중첩 프로파일의 지원을 의미하지는 않습니다.

E.1.174 #profile

TTML 콘텐츠 처리기가 #profile 기능을 지원하는 경우는 #profile 기능을 [TTML1], §D.1.70에 정의된 대로 지원하는 경우입니다.

참고:

#profile 기능의 지원이 다음 기능들의 지원을 의미하지는 않습니다:

E.1.175 #profile-full-version-2

TTML 콘텐츠 처리기는 #profile-full-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#profile-full-version-2 기능은 #profile-version-2 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #profile-full-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #contentProfiles, #contentProfiles-combined, #permitFeatureNarrowing, #permitFeatureWidening, #processorProfiles, #processorProfiles-combined, #profile, #profile-nesting, 또는 #profile-version-2.

E.1.176 #profile-nesting

TTML 콘텐츠 처리기는 #profile-nesting 기능을 중첩 프로파일을 지원하는 경우에 지원합니다.

E.1.177 #profile-version-2

TTML 콘텐츠 처리기는 #profile-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#profile-version-2 기능은 #profile 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #profile-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #contentProfiles, #processorProfiles, 또는 #profile.

참고:

#profile-version-2 기능의 지원이 다음 기능들의 지원을 의미하지는 않습니다:

E.1.178 #region-implied-animation

TTML 변환 처리기가 #region-implied-animation 기능을 지원하는 경우는 다음 요소에 지정된 스타일 속성을 인식하고 변환할 수 있는 경우입니다. 이 스타일 속성은 div 또는 p 요소에 지정되며, 암시된 영역에 적용됩니다. 이때 적용은 11.1.2.1 인라인 애니메이션의 특수 의미를 따릅니다.

TTML 표시 처리기가 #region-implied-animation 기능을 지원하는 경우는 다음 요소에 지정된 스타일 속성에 대한 표시 의미 지원을 구현한 경우입니다. 이 스타일 속성은 div 또는 p 요소에 지정되며, 암시된 영역에 적용됩니다. 이때 적용은 11.1.2.1 인라인 애니메이션의 특수 의미를 따릅니다.

참고:

#region-implied-animation 기능의 지원이 다음 기능들의 지원을 의미하지는 않습니다:

그러나 이러한 기능 중 어느 하나가 지원되는 경우, #region-implied-animation 기능의 지원은 11.1.2.1 인라인 애니메이션의 특수 의미가 해당 기능에 대해 지원된다는 것을 의미합니다.

E.1.179 #region-inline

TTML 변환 처리기가 #region-inline 기능을 지원하는 경우는 인라인 영역 요소를 콘텐츠 요소의 자식으로 인식하고 변환할 수 있는 경우입니다. 이는 region에서 더 자세히 정의합니다.

TTML 표시 처리기가 #region-inline 기능을 지원하는 경우는 콘텐츠 요소의 자식인 인라인 영역 요소에 대한 표시 의미 지원을 구현한 경우입니다. 이는 다음에서 더 자세히 정의합니다: region.

E.1.180 #region-timing

TTML 변환 처리기는 #region-timing 기능을 아래에 열거된 어휘가 다음 요소에 적용될 때 이를 인식하고 변환할 수 있는 경우에 지원합니다: region 요소:

TTML 표시 처리기는 #region-timing 기능을 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원하며, 이는 해당 어휘가 region 요소에 적용되는 경우를 말합니다.

#region-timing 기능은 #timing 기능의 의미적 제한입니다.

참고:

이 기능은 #timing 기능의 의미적 부분집합을 나타내며, 후자는 모든 변환 처리기와 표시 처리기에 필수적인 기능이므로, 이 기능 지정의 유용성은 사실상 콘텐츠 프로파일 정의에서의 사용으로 제한됩니다. 이러한 정의는 문서 인스턴스에서 이 기능을 사용하는 것을 금지하도록 선택할 수 있습니다.

E.1.181 #resources

TTML 변환 처리기가 #resources 기능을 지원하는 경우는 다음 어휘를 인식하고 변환할 수 있는 경우입니다. 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기가 #resources 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.182 #ruby

TTML 변환 처리기가 #ruby 기능을 지원하는 경우는 다음 tts:ruby 속성에 대해 정의된 모든 값을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #ruby 기능을 지원하는 경우는 다음 tts:ruby 속성에 대해 정의된 모든 값에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.183 #ruby-full

TTML 처리기는 #ruby-full 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #ruby-full 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #ruby, #rubyAlign, #rubyPosition, 또는 #rubyReserve.

E.1.184 #rubyAlign

TTML 처리기는 #rubyAlign 기능을 다음 기능들을 지원하는 경우에 지원합니다:

콘텐츠 프로파일이 #rubyAlign 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #rubyAlign-minimal 또는 #rubyAlign-withBase.

E.1.185 #rubyAlign-minimal

TTML 변환 처리기는 #rubyAlign-minimal 기능을 다음 속성의 아래에 열거된 값을 인식하고 변환할 수 있는 경우에 지원합니다: tts:rubyAlign 속성.

  • start

  • center

  • end

  • spaceAround

  • spaceBetween

TTML 표시 처리기가 #rubyAlign-minimal 기능을 지원하는 경우는 위에 열거된 것과 동일한 값 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.186 #rubyAlign-withBase

TTML 변환 처리기가 #rubyAlign-withBase 기능을 지원하는 경우는 withBase 값이 지정된 tts:rubyAlign 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #rubyAlign-withBase 기능을 지원하는 경우는 위에 열거된 것과 동일한 값에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.187 #rubyPosition

TTML 변환 처리기가 #rubyPosition 기능을 지원하는 경우는 tts:rubyPosition 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #rubyPosition 기능을 지원하는 경우는 tts:rubyPosition 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.188 #rubyReserve

TTML 변환 처리기가 #rubyReserve 기능을 지원하는 경우는 tts:rubyReserve 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #rubyReserve 기능을 지원하는 경우는 tts:rubyReserve 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.189 #set

TTML 콘텐츠 처리기는 #set 기능을 #animation 기능을 지원하는 경우에 지원하며, 따라서 #set 기능은 널 확장에 해당하고, 그 대상은 #animation 기능입니다.

콘텐츠 프로파일이 #set 기능의 사용을 요구하거나 허용하면서 다음 #animation 기능의 사용을 금지하는 것은 오류입니다.

E.1.190 #set-fill

TTML 변환 처리기가 #set-fill 기능을 지원하는 경우는 fill 속성이 지정된 set 요소에서 해당 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #set-fill 기능을 지원하는 경우는 fill 속성이 지정된 set 요소에서 해당 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.191 #set-multiple-styles

TTML 변환 처리기가 #set-multiple-styles 기능을 지원하는 경우는 여러 스타일링 속성이 지정된 set 요소에서 이러한 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #set-multiple-styles 기능을 지원하는 경우는 여러 스타일링 속성이 지정된 set 요소에서 이러한 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.192 #set-repeat

TTML 변환 처리기가 #set-repeat 기능을 지원하는 경우는 repeatCount 속성이 지정된 set 요소에서 해당 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #set-repeat 기능을 지원하는 경우는 repeatCount 속성이 지정된 set 요소에서 해당 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.193 #shear

TTML 변환 처리기가 #shear 기능을 지원하는 경우는 tts:shear 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #shear 기능을 지원하는 경우는 tts:shear 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.194 #showBackground

TTML 콘텐츠 처리기가 #showBackground 기능을 지원하는 경우는 #showBackground 기능을 [TTML1], §D.1.71에 정의된 대로 지원하는 경우입니다.

E.1.195 #source

TTML 변환 처리기가 #source 기능을 지원하는 경우는 다음 어휘를 인식하고 변환할 수 있는 경우입니다. 이 어휘는 9 삽입된 콘텐츠에 정의되어 있습니다:

TTML 표시 처리기가 #source 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.196 #speak

TTML 변환 처리기가 #speak 기능을 지원하는 경우는 tta:speak 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #speak 기능을 지원하는 경우는 tta:speak 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.197 #speech

TTML 처리기는 #speech 기능을 음성 합성 처리기를 지원하는 경우에 지원합니다.

E.1.198 #structure

TTML 콘텐츠 처리기가 #structure 기능을 지원하는 경우는 #structure 기능을 [TTML1], §D.1.72에 정의된 대로 지원하는 경우입니다.

E.1.199 #styling

TTML 콘텐츠 처리기가 #styling 기능을 지원하는 경우는 #styling 기능을 [TTML1], §D.1.73에 정의된 대로 지원하는 경우입니다.

E.1.200 #styling-chained

TTML 콘텐츠 처리기가 #styling-chained 기능을 지원하는 경우는 #styling-chained 기능을 [TTML1], §D.1.74에 정의된 대로 지원하는 경우입니다.

E.1.201 #styling-inheritance-content

TTML 콘텐츠 처리기가 #styling-inheritance-content 기능을 지원하는 경우는 #inheritance-content 기능을 [TTML1], §D.1.75에 정의된 대로 지원하는 경우입니다.

E.1.202 #styling-inheritance-region

TTML 콘텐츠 처리기가 #styling-inheritance-region 기능을 지원하는 경우는 #styling-inheritance-region 기능을 [TTML1], §D.1.76에 정의된 대로 지원하는 경우입니다.

E.1.203 #styling-inline

TTML 콘텐츠 처리기가 #styling-inline 기능을 지원하는 경우는 #styling-inline 기능을 [TTML1], §D.1.77에 정의된 대로 지원하는 경우입니다.

E.1.204 #styling-nested

TTML 콘텐츠 처리기가 #styling-nested 기능을 지원하는 경우는 #styling-nested 기능을 [TTML1], §D.1.78에 정의된 대로 지원하는 경우입니다.

E.1.205 #styling-referential

TTML 콘텐츠 처리기가 #styling-referential 기능을 지원하는 경우는 #styling-referential 기능을 [TTML1], §D.1.79에 정의된 대로 지원하는 경우입니다.

E.1.206 #subFrameRate

TTML 콘텐츠 처리기가 #subFrameRate 기능을 지원하는 경우는 #subFrameRate 기능을 [TTML1], §D.1.80에 정의된 대로 지원하는 경우입니다.

E.1.207 #textAlign

TTML 콘텐츠 처리기가 #textAlign 기능을 지원하는 경우는 #textAlign 기능을 [TTML1], §D.1.81에 정의된 대로 지원하는 경우입니다.

참고:

#textAlign 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #textAlign 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #textAlign-absolute 또는 #textAlign-relative.

E.1.208 #textAlign-absolute

TTML 콘텐츠 처리기가 #textAlign-absolute 기능을 지원하는 경우는 #textAlign-absolute 기능을 [TTML1], §D.1.82에 정의된 대로 지원하는 경우입니다.

E.1.209 #textAlign-justify

TTML 변환 처리기가 #textAlign-justify 기능을 지원하는 경우는 justify 값이 지정된 tts:textAlign 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #textAlign-justify 기능을 지원하는 경우는 justify 값이 지정된 tts:textAlign 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.210 #textAlign-relative

TTML 콘텐츠 처리기가 #textAlign-relative 기능을 지원하는 경우는 #textAlign-relative 기능을 [TTML1], §D.1.83에 정의된 대로 지원하는 경우입니다.

E.1.211 #textAlign-version-2

TTML 처리기는 #textAlign-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#textAlign-version-2 기능은 #textAlign 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #textAlign-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #textAlign, #textAlign-absolute, #textAlign-justify, 또는 #textAlign-relative.

E.1.212 #textCombine

TTML 변환 처리기가 #textCombine 기능을 지원하는 경우는 tts:textCombine 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #textCombine 기능을 지원하는 경우는 tts:textCombine 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.213 #textDecoration

TTML 콘텐츠 처리기가 #textDecoration 기능을 지원하는 경우는 #textDecoration 기능을 [TTML1], §D.1.84에 정의된 대로 지원하는 경우입니다.

참고:

#textDecoration 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #textDecoration 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #textDecoration-over, #textDecoration-through, 또는 #textDecoration-under.

E.1.214 #textDecoration-over

TTML 콘텐츠 처리기가 #textDecoration-over 기능을 지원하는 경우는 #textDecoration-over 기능을 [TTML1], §D.1.85에 정의된 대로 지원하는 경우입니다.

E.1.215 #textDecoration-through

TTML 콘텐츠 처리기가 #textDecoration-through 기능을 지원하는 경우는 #textDecoration-through 기능을 [TTML1], §D.1.86에 정의된 대로 지원하는 경우입니다.

E.1.216 #textDecoration-under

TTML 콘텐츠 처리기가 #textDecoration-under 기능을 지원하는 경우는 #textDecoration-under 기능을 [TTML1], §D.1.87에 정의된 대로 지원하는 경우입니다.

E.1.217 #textEmphasis

TTML 처리기는 #textEmphasis 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#textEmphasis 기능은 #textEmphasis-minimal 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #textEmphasis 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #textEmphasis-color, #textEmphasis-minimal, 또는 #textEmphasis-quoted-string.

E.1.218 #textEmphasis-color

TTML 변환 처리기가 #textEmphasis-color 기능을 지원하는 경우는 다음 tts:textEmphasis 속성의 값 중 <emphasis-color> 구성 요소를 포함하는 값을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #textEmphasis-color 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.219 #textEmphasis-minimal

TTML 변환 처리기는 #textEmphasis-minimal 기능을 다음 조건을 충족하는 값을 인식하고 변환할 수 있는 경우에 지원합니다. 이 값은 tts:textEmphasis 속성의 값으로, (1) <emphasis-color> 구성 요소를 포함하지 않으며, (2) <emphasis-style> 구성 요소 중 <quoted-string> 값의 형식을 취하는 구성 요소를 포함하지 않습니다.

TTML 표시 처리기가 #textEmphasis-minimal 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.220 #textEmphasis-quoted-string

TTML 변환 처리기는 #textEmphasis-quoted-string 기능을 다음 조건을 충족하는 값을 인식하고 변환할 수 있는 경우에 지원합니다. 이 값은 tts:textEmphasis 속성의 값으로, <emphasis-style> 구성 요소를 포함하며, 이 구성 요소는 <quoted-string> 값의 형식을 취합니다.

TTML 표시 처리기가 #textEmphasis-quoted-string 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.221 #textOrientation

TTML 변환 처리기가 #textOrientation 기능을 지원하는 경우는 tts:textOrientation 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #textOrientation 기능을 지원하는 경우는 tts:textOrientation 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.222 #textOutline

TTML 콘텐츠 처리기가 #textOutline 기능을 지원하는 경우는 #textOutline 기능을 [TTML1], §D.1.88에 정의된 대로 지원하는 경우입니다.

참고:

#textOutline 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #textOutline 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #textOutline-blurred 또는 #textOutline-unblurred.

E.1.223 #textOutline-blurred

TTML 콘텐츠 처리기가 #textOutline-blurred 기능을 지원하는 경우는 #textOutline-blurred 기능을 [TTML1], §D.1.89에 정의된 대로 지원하는 경우입니다.

E.1.224 #textOutline-unblurred

TTML 콘텐츠 처리기가 #textOutline-unblurred 기능을 지원하는 경우는 #textOutline-unblurred 기능을 [TTML1], §D.1.90에 정의된 대로 지원하는 경우입니다.

E.1.225 #textShadow

TTML 변환 처리기가 #textShadow 기능을 지원하는 경우는 tts:textShadow 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #textShadow 기능을 지원하는 경우는 tts:textShadow 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.226 #tickRate

TTML 콘텐츠 처리기가 #tickRate 기능을 지원하는 경우는 #tickRate 기능을 [TTML1], §D.1.91에 정의된 대로 지원하는 경우입니다.

E.1.227 #timeBase-clock

TTML 콘텐츠 처리기가 #timeBase-clock 기능을 지원하는 경우는 #timeBase-clock 기능을 [TTML1], §D.1.92에 정의된 대로 지원하는 경우입니다.

E.1.228 #timeBase-media

TTML 콘텐츠 처리기가 #timeBase-media 기능을 지원하는 경우는 #timeBase-media 기능을 [TTML1], §D.1.93에 정의된 대로 지원하는 경우입니다.

E.1.229 #timeBase-smpte

TTML 콘텐츠 처리기가 #timeBase-smpte 기능을 지원하는 경우는 #timeBase-smpte 기능을 [TTML1], §D.1.94에 정의된 대로 지원하는 경우입니다.

E.1.230 #timeContainer

TTML 콘텐츠 처리기가 #timeContainer 기능을 지원하는 경우는 #timeContainer 기능을 [TTML1], §D.1.95에 정의된 대로 지원하는 경우입니다.

E.1.231 #time-clock

TTML 콘텐츠 처리기가 #time-clock 기능을 지원하는 경우는 #time-clock 기능을 [TTML1], §D.1.96에 정의된 대로 지원하는 경우입니다.

E.1.232 #time-clock-with-frames

TTML 콘텐츠 처리기가 #time-clock-with-frames 기능을 지원하는 경우는 #time-clock-with-frames 기능을 [TTML1], §D.1.97에 정의된 대로 지원하는 경우입니다.

E.1.233 #time-offset

TTML 콘텐츠 처리기가 #time-offset 기능을 지원하는 경우는 #time-offset 기능을 [TTML1], §D.1.98에 정의된 대로 지원하는 경우입니다.

E.1.234 #time-offset-with-frames

TTML 콘텐츠 처리기가 #time-offset-with-frames 기능을 지원하는 경우는 #time-offset-with-frames 기능을 [TTML1], §D.1.99에 정의된 대로 지원하는 경우입니다.

E.1.235 #time-offset-with-ticks

TTML 콘텐츠 처리기가 #time-offset-with-ticks 기능을 지원하는 경우는 #time-offset-with-ticks 기능을 [TTML1], §D.1.100에 정의된 대로 지원하는 경우입니다.

E.1.236 #time-wall-clock

TTML 변환 처리기가 #time-wall-clock 기능을 지원하는 경우는 다음 <time-expression>의 값 중 아래의 시간 표현식 구문 부분집합을 만족하는 모든 값을 인식하고 변환할 수 있는 경우입니다:

<time-expression>
  : wallclock-time

TTML 표시 처리기가 #time-wall-clock 기능을 지원하는 경우는 위에 명시된 것과 동일한 구문에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.237 #timing

TTML 콘텐츠 처리기가 #timing 기능을 지원하는 경우는 #timing 기능을 [TTML1], §D.1.101에 정의된 대로 지원하는 경우입니다.

E.1.238 #transformation

TTML 콘텐츠 처리기가 #transformation 기능을 지원하는 경우는 #transformation 기능을 [TTML1], §D.1.102에 정의된 대로 지원하는 경우입니다.

E.1.239 #transformation-version-2

TTML 처리기는 #transformation-version-2 기능을 다음 조건을 충족하는 경우에 지원합니다: (1) 다음에 정의된 일반 처리기 기준을 충족합니다: 3.2.1 일반 처리기 적합성. 그리고 (2) 다음 기능들을 지원합니다:

#transformation-version-2 기능은 #transformation 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #transformation-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #transformation 또는 #profile-version-2.

E.1.240 #unicodeBidi

TTML 콘텐츠 처리기가 #unicodeBidi 기능을 지원하는 경우는 #unicodeBidi 기능을 [TTML1], §D.1.103에 정의된 대로 지원하는 경우입니다.

참고:

#unicodeBidi 기능의 지원이 #unicodeBidi-isolate 기능의 지원을 의미하지는 않습니다.

E.1.241 #unicodeBidi-isolate

TTML 변환 처리기가 #unicodeBidi-isolate 기능을 지원하는 경우는 isolate 값이 지정된 tts:unicodeBidi 속성을 인식하고 변환할 수 있는 경우입니다.

TTML 표시 처리기가 #unicodeBidi-isolate 기능을 지원하는 경우는 isolate 값이 지정된 tts:unicodeBidi 속성에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.242 #unicodeBidi-version-2

TTML 콘텐츠 처리기는 #unicodeBidi-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#unicodeBidi-version-2 기능은 #unicodeBidi 기능의 구문적 및 의미적 확장입니다.

E.1.243 #validation

TTML 변환 처리기는 #validation 기능을 다음 조건을 충족하는 경우에 지원합니다:

  1. 검증 콘텐츠 처리기입니다;

  2. 다음에 정의된 아래의 속성 어휘를 인식하고 변환할 수 있습니다: 6.2 프로파일 속성 어휘:

TTML 표시 처리기는 #validation 기능을 자신이 검증 콘텐츠 처리기이고 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우에 지원합니다.

E.1.244 #visibility

TTML 콘텐츠 처리기가 #visibility 기능을 지원하는 경우는 #visibility 기능을 [TTML1], §D.1.104에 정의된 대로 지원하는 경우입니다.

참고:

#visibility 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #visibility 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #visibility-block, #visibility-inline, 또는 #visibility-region.

E.1.245 #visibility-block

TTML 콘텐츠 처리기가 #visibility-block 기능을 지원하는 경우는 #visibility-block 기능을 [TTML1], §D.1.105에 정의된 대로 지원하는 경우입니다.

E.1.246 #visibility-image

TTML 변환 처리기가 #visibility-image 기능을 지원하는 경우는 tts:visibility 속성에 대해 정의된 모든 값을 다음 요소에 적용할 때 지원하는 경우입니다: image 요소.

TTML 표시 처리기가 #visibility-image 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

참고:

#visibility-image 기능의 지원이 #image 기능의 지원을 의미하지는 않습니다. 그러나 후자를 지원하지 않으면 전자를 지원하는 것은 아무런 목적도 달성하지 못합니다.

E.1.247 #visibility-inline

TTML 콘텐츠 처리기가 #visibility-inline 기능을 지원하는 경우는 #visibility-inline 기능을 [TTML1], §D.1.106에 정의된 대로 지원하는 경우입니다.

E.1.248 #visibility-region

TTML 콘텐츠 처리기가 #visibility-region 기능을 지원하는 경우는 #visibility-region 기능을 [TTML1], §D.1.107에 정의된 대로 지원하는 경우입니다.

E.1.249 #visibility-version-2

TTML 콘텐츠 처리기는 #visibility-version-2 기능을 다음 기능들을 지원하는 경우에 지원합니다:

#visibility-version-2 기능은 #visibility 기능의 구문적 및 의미적 확장입니다.

콘텐츠 프로파일이 #visibility-version-2 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #visibility 또는 #visibility-image.

E.1.250 #wrapOption

TTML 콘텐츠 처리기가 #wrapOption 기능을 지원하는 경우는 #wrapOption 기능을 [TTML1], §D.1.108에 정의된 대로 지원하는 경우입니다.

E.1.251 #writingMode

TTML 콘텐츠 처리기가 #writingMode 기능을 지원하는 경우는 #writingMode 기능을 [TTML1], §D.1.109에 정의된 대로 지원하는 경우입니다.

참고:

#writingMode 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #writingMode 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #writingMode-horizontal 또는 #writingMode-vertical.

E.1.252 #writingMode-horizontal

TTML 콘텐츠 처리기가 #writingMode-horizontal 기능을 지원하는 경우는 #writingMode-horizontal 기능을 [TTML1], §D.1.111에 정의된 대로 지원하는 경우입니다.

참고:

#writingMode-horizontal 기능의 지원은 다음 기능들의 지원과 기능적으로 동등합니다:

콘텐츠 프로파일이 #writingMode-horizontal 기능의 사용을 요구하거나 허용하면서 다음 기능 중 어느 하나의 사용을 금지하는 것은 오류입니다: #writingMode-horizontal-lr 또는 #writingMode-horizontal-rl.

E.1.253 #writingMode-horizontal-lr

TTML 콘텐츠 처리기가 #writingMode-horizontal-lr 기능을 지원하는 경우는 #writingMode-horizontal-lr 기능을 [TTML1], §D.1.112에 정의된 대로 지원하는 경우입니다.

E.1.254 #writingMode-horizontal-rl

TTML 콘텐츠 처리기가 #writingMode-horizontal-rl 기능을 지원하는 경우는 #writingMode-horizontal-rl 기능을 [TTML1], §D.1.113에 정의된 대로 지원하는 경우입니다.

E.1.255 #writingMode-vertical

TTML 콘텐츠 처리기가 #writingMode-vertical 기능을 지원하는 경우는 #writingMode-vertical 기능을 [TTML1], §D.1.110에 정의된 대로 지원하는 경우입니다.

E.1.256 #xlink

TTML 변환 처리기가 #xlink 기능을 지원하는 경우는 아래의 속성 어휘를 인식하고 변환할 수 있는 경우입니다. 이 어휘는 8.2 콘텐츠 속성 어휘에 정의되어 있으며, 이 어휘를 허용하는 지원 대상 요소 유형에 사용됩니다:

TTML 표시 처리기가 #xlink 기능을 지원하는 경우는 위에 열거된 것과 동일한 어휘에 대한 표시 의미 지원을 구현한 경우입니다.

E.1.257 #zIndex

TTML 콘텐츠 처리기가 #zIndex 기능을 지원하는 경우는 #zIndex 기능을 [TTML1], §D.1.114에 정의된 대로 지원하는 경우입니다.

E.2 기능 지원

다음 표인 표 E-1 – 기능 지원는, 정의된 모든 기능 지정(TT 기능 네임스페이스를 제외하여 표현)을 열거하고, 지정된 각 기능에 대해 (1) 해당 기능 지정이 처음 정의된 TTML 버전과, (2) 지정된 기능을 반드시 구현해야 하는지, 즉 필수(M)인지, 또는 구현해도 되는지, 즉, 선택 사항(O)인지를 TTML 콘텐츠 처리기에 대해 명시합니다. 해당 처리기가 준수하는 요구 사항은 다음에 명시되어 있습니다: 3.2.2 변환 처리기 적합성 또는 3.2.3 표시 처리기 적합성.

참고:

경우에 따라, 이전에는 정의되지 않았던 새로운 기능 지정이 이 명세의 현재(또는 이후) 버전에서 정의되지만, 그 지정이 가리키는 실제 기능은 이미 이전 버전에서 정의되어 있을 수 있습니다. 예를 들어, #padding-region 지정은 여기서 도입되지만, 이 지정이 참조하는 기능은 이전에 #padding 지정에 포함되어 있었으며, 이제 이 지정은 #padding-region을 기준으로 정의됩니다. 여기서 #padding(TTML1에서 도입)의 기본 의미와 #padding-region(TTML2에서 도입)의 기본 의미는 여전히 동일합니다.

표 E-1 – 기능 지원
기능 지정 버전 변환 표시
#animate 2 O O
#animate-fill 2 O O
#animate-minimal 2 O O
#animate-paced 2 O O
#animate-spline 2 O O
#animate-repeat 2 O O
#animation 1 O O
#animation-out-of-line 2 O O
#animation-version-2 2 O O
#audio 2 O O
#audio-description 2 O O
#audio-speech 2 O O
#background 2 O O
#background-image 2 O O
#backgroundClip 2 O O
#backgroundColor 1 O O
#backgroundColor-block 1 O O
#backgroundColor-inline 1 O O
#backgroundColor-region 1 O O
#backgroundExtent 2 O O
#backgroundImage 2 O O
#backgroundOrigin 2 O O
#backgroundPosition 2 O O
#backgroundRepeat 2 O O
#base 2 O O
#base-general 2 O O
#base-version-2 2 O O
#bidi 1 O O
#bidi-version-2 2 O O
#border 2 O O
#border-block 2 O O
#border-inline 2 O O
#border-radii 2 O O
#border-radii-1 2 O O
#border-radii-2 2 O O
#border-region 2 O O
#bpd 2 O O
#cellResolution 1 O O
#chunk 2 O O
#clockMode 1 O O
#clockMode-gps 1 O O
#clockMode-local 1 O O
#clockMode-utc 1 O O
#color 1 O O
#condition 2 O O
#condition-fn-media 2 O O
#condition-fn-parameter 2 O O
#condition-fn-supports 2 O O
#condition-primary 2 O O
#content 1 M M
#content-sizing 2 O O
#contentProfiles 2 M M
#contentProfiles-combined 2 O O
#core 1 M M
#data 2 O O
#direction 1 O O
#disparity 2 O O
#display 1 O O
#display-block 1 O O
#display-inline 1 O O
#display-inlineBlock 2 O O
#display-region 1 O O
#display-version-2 2 O O
#displayAlign 1 O O
#displayAlign-block 2 O O
#displayAlign-justify 2 O O
#displayAlign-region 2 O O
#displayAlign-relative 2 O O
#displayAlign-version-2 2 O O
#displayAspectRatio 2 O O
#dropMode 1 O O
#dropMode-dropNTSC 1 O O
#dropMode-dropPAL 1 O O
#dropMode-nonDrop 1 O O
#embedded-audio 2 O O
#embedded-content 2 O O
#embedded-data 2 O O
#embedded-font 2 O O
#embedded-image 2 O O
#extent 1 O O
#extent-auto 2 O O
#extent-auto-version-2 2 O O
#extent-contain 2 O O
#extent-cover 2 O O
#extent-full-version-2 2 O O
#extent-image 2 O O
#extent-length 2 O O
#extent-length-version-2 2 O O
#extent-measure 2 O O
#extent-region 1 O O
#extent-region-version-2 2 O O
#extent-root 1 O O
#extent-root-version-2 2 O O
#extent-version-2 2 O O
#font 2 O O
#fontFamily 1 O O
#fontFamily-generic 1 O O
#fontFamily-non-generic 1 O O
#fontKerning 2 O O
#fontSelectionStrategy 2 O O
#fontSelectionStrategy-character 2 O O
#fontShear 2 O O
#fontSize 1 O O
#fontSize-anamorphic 1 O O
#fontSize-isomorphic 1 O O
#fontStyle 1 O O
#fontStyle-italic 1 O O
#fontStyle-oblique 1 O O
#fontVariant 2 O O
#fontWeight 1 O O
#fontWeight-bold 1 O O
#frameRate 1 O O
#frameRateMultiplier 1 O O
#gain 2 O O
#image 2 O O
#image-png 2 O O
#initial 2 O O
#ipd 2 O O
#layout 1 O O
#length 1 O O
#length-cell 1 O O
#length-em 1 O O
#length-integer 1 O O
#length-negative 1 O O
#length-percentage 1 O O
#length-pixel 1 O O
#length-positive 1 O O
#length-real 1 O O
#length-real-version-2 2 O O
#length-root-container-relative 2 O O
#length-version-2 2 O O
#letterSpacing 2 O O
#lineBreak-uax14 1 O O
#lineHeight 1 O O
#lineShear 2 O O
#luminanceGain 2 O O
#markerMode 1 O O
#markerMode-continuous 1 O O
#markerMode-discontinuous 1 O O
#metadata 1 O O
#metadata-item 2 O O
#metadata-version-2 2 O O
#nested-div 1 O O
#nested-span 1 O O
#opacity 1 O O
#opacity-block 2 O O
#opacity-image 2 O O
#opacity-inline 2 O O
#opacity-region 2 O O
#opacity-version-2 2 O O
#origin 1 O O
#overflow 1 O O
#overflow-visible 1 O O
#padding 1 O O
#padding-1 1 O O
#padding-2 1 O O
#padding-3 1 O O
#padding-4 1 O O
#padding-block 2 O O
#padding-inline 2 O O
#padding-region 2 O O
#padding-version-2 2 O O
#pan 2 O O
#permitFeatureNarrowing 2 O O
#permitFeatureWidening 2 O O
#pitch 2 O O
#pixelAspectRatio 1 O O
#position 2 O O
#presentation 1 O M
#presentation-audio 2 O O
#presentation-version-2 2 O M
#processorProfiles 2 M M
#processorProfiles-combined 2 O O
#profile 1 M M
#profile-full-version-2 2 O O
#profile-nesting 2 O O
#profile-version-2 2 M M
#region-implied-animation 2 O O
#region-inline 2 O O
#region-timing 2 O O
#resources 2 O O
#ruby 2 O O
#ruby-full 2 O O
#rubyAlign 2 O O
#rubyAlign-minimal 2 O O
#rubyAlign-withBase 2 O O
#rubyPosition 2 O O
#rubyReserve 2 O O
#set 2 O O
#set-fill 2 O O
#set-multiple-styles 2 O O
#set-repeat 2 O O
#shear 2 O O
#showBackground 1 O O
#source 2 O O
#speak 2 O O
#speech 2 O O
#structure 1 M M
#styling 1 O O
#styling-chained 1 O O
#styling-inheritance-content 1 O O
#styling-inheritance-region 1 O O
#styling-inline 1 O O
#styling-nested 1 O O
#styling-referential 1 O O
#subFrameRate 1 O O
#textAlign 1 O O
#textAlign-absolute 1 O O
#textAlign-justify 2 O O
#textAlign-relative 1 O O
#textAlign-version-2 2 O O
#textCombine 2 O O
#textDecoration 1 O O
#textDecoration-over 1 O O
#textDecoration-through 1 O O
#textDecoration-under 1 O O
#textEmphasis 2 O O
#textEmphasis-color 2 O O
#textEmphasis-minimal 2 O O
#textEmphasis-quoted-string 2 O O
#textOrientation 2 O O
#textOutline 1 O O
#textOutline-blurred 1 O O
#textOutline-unblurred 1 O O
#textShadow 2 O O
#tickRate 1 O O
#timeBase-clock 1 O O
#timeBase-media 1 O O
#timeBase-smpte 1 O O
#timeContainer 1 O O
#time-clock 1 O O
#time-clock-with-frames 1 O O
#time-offset 1 M M
#time-offset-with-frames 1 O O
#time-offset-with-ticks 1 O O
#time-wall-clock 2 O O
#timing 1 M M
#transformation 1 M O
#transformation-version-2 2 M O
#unicodeBidi 1 O O
#unicodeBidi-isolate 2 O O
#unicodeBidi-version-2 2 O O
#validation 2 O O
#visibility 1 O O
#visibility-block 1 O O
#visibility-image 2 O O
#visibility-inline 1 O O
#visibility-region 1 O O
#visibility-version-2 2 O O
#wrapOption 1 O O
#writingMode 1 O O
#writingMode-horizontal 1 O O
#writingMode-horizontal-lr 1 O O
#writingMode-horizontal-rl 1 O O
#writingMode-vertical 1 O O
#xlink 2 O O
#zIndex 1 O O

편의를 위해 다음 표인 표 E-2 – 필수 기능 - 변환은 다음 요구 사항을 준수하는 TTML 콘텐츠 처리기의 모든 필수 기능을 열거합니다. 해당 요구 사항은 3.2.2 변환 처리기 적합성에 명시되어 있으며, 표에는 기능의 사용 맥락이나 특성을 요약하는 추가 설명도 제공됩니다. 해당 프로파일 정의 문서는 이에 대응하는 TTML 변환 프로파일을 정의하며, 다음에 명시되어 있습니다: G.3 TTML2 변환 프로파일.

표 E-2 – 필수 기능 - 변환
기능 지정 설명
#content body, div, p, span, br
#contentProfiles
#core xml:id, xml:lang, xml:space
#processorProfiles
#profile
#profile-version-2
#structure tt, head
#time-offset
#timing begin, dur, end
#transformation
#transformation-version-2

편의를 위해 다음 표인 표 E-3 – 필수 기능 - 표시은 다음 요구 사항을 준수하는 TTML 콘텐츠 처리기의 모든 필수 기능을 열거합니다. 해당 요구 사항은 3.2.3 표시 처리기 적합성에 명시되어 있으며, 표에는 기능의 사용 맥락이나 특성을 요약하는 추가 설명도 제공됩니다. 해당 프로파일 정의 문서는 이에 대응하는 TTML 표시 프로파일을 정의하며, 다음에 명시되어 있습니다: G.2 TTML2 표시 프로파일.

표 E-3 – 필수 기능 - 표시
기능 지정 설명
#content body, div, p, span, br
#contentProfiles
#core xml:id, xml:lang, xml:space
#processorProfiles
#profile
#profile-version-2
#presentation
#presentation-version-2
#structure tt, head
#time-offset
#timing begin, dur, end

F 확장

이 부록은 규범적입니다.

이 부록은 확장 지정의 구문 형식을 명시하며, 이러한 지정은 TTML 처리기의 확장 메커니즘 지원에 관한 작성자의 의도를 표현하는 데 사용됩니다.

F.1 확장 지정

확장 지정은 다음 형식을 따르는 문자열로 표현됩니다:

extension-designation
  : extension-namespace designation

extension-namespace
  : TT 확장 네임스페이스                  // http://www.w3.org/ns/ttml/extension/
  | 기타 확장 네임스페이스               // 절대 URI로 표현됩니다

designation
  : "#" token-char+

token-char
  : { XML NameChar }                        // [XML 1.0] 생성 규칙 [4a]

확장 지정의 확장 네임스페이스가 TT 확장 네임스페이스인 경우, 뒤따르는 designation 토큰의 모든 값은 향후 표준화를 위해 예약됩니다.

확장 지정의 확장 네임스페이스가 TT 확장 네임스페이스가 아닌, 즉 기타 확장 네임스페이스인 경우, 해당 확장 네임스페이스는 절대 URI로 표현되어야 하며, 이 URI는 다음 토큰과 함께 사용되는 기본 URI의 역할을 할 수 있어야 합니다: designation 토큰. 이 토큰은 프래그먼트 식별자의 형식을 취합니다.

G 표준 프로파일

이 부록은 규범적입니다.

이 부록은 다음 표준 TTML 프로파일을 명시하거나 참조를 통해 포함합니다:

각 TTML 프로파일은 프로파일 정의 문서를 통해 정의됩니다. 이 문서는 XML 문서로 표현되며, 루트 요소는 6.1.1 ttp:profile을 따릅니다.

G.1 TTML2 전체 프로파일

TTML2 전체 프로파일은 변환 처리와 표시 처리 모두에 대해 최대 준수 수준을 표현하는 데 사용하기 위한 것입니다.

참고:

이 프로파일은 DFXP 전체 프로파일의 상위 집합입니다.

<?xml version="1.0" encoding="utf-8"?>
<!-- 이 파일은 ttml의 "ttml2-full" 프로파일을 정의합니다 -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-full">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- 요구되는(필수) 기능 지원 -->
    <feature value="required" extends="#animate-minimal">#animate</feature>
    <feature value="required">#animate-fill</feature>
    <feature value="required">#animate-minimal</feature>
    <feature value="required">#animate-paced</feature>
    <feature value="required">#animate-spline</feature>
    <feature value="required">#animate-repeat</feature>
    <feature value="required">#animation</feature>
    <feature value="required">#animation-out-of-line</feature>
    <feature value="required" extends="#animation">#animation-version-2</feature>
    <feature value="required">#audio</feature>
    <feature value="required">#audio-description</feature>
    <feature value="required">#audio-speech</feature>
    <feature value="required">#background</feature>
    <feature value="required">#background-image</feature>
    <feature value="required">#backgroundClip</feature>
    <feature value="required">#backgroundColor-block</feature>
    <feature value="required">#backgroundColor-inline</feature>
    <feature value="required">#backgroundColor-region</feature>
    <feature value="required">#backgroundColor</feature>
    <feature value="required">#backgroundExtent</feature>
    <feature value="required">#backgroundImage</feature>
    <feature value="required">#backgroundOrigin</feature>
    <feature value="required">#backgroundPosition</feature>
    <feature value="required">#backgroundRepeat</feature>
    <feature value="required">#base</feature>
    <feature value="required">#base-general</feature>
    <feature value="required" extends="#base">#base-version-2</feature>
    <feature value="required">#bidi</feature>
    <feature value="required" extends="#bidi">#bidi-version-2</feature>
    <feature value="required">#border</feature>
    <feature value="required">#border-block</feature>
    <feature value="required">#border-inline</feature>
    <feature value="required">#border-radii</feature>
    <feature value="required">#border-radii-1</feature>
    <feature value="required">#border-radii-2</feature>
    <feature value="required">#border-region</feature>
    <feature value="required">#bpd</feature>
    <feature value="required">#cellResolution</feature>
    <feature value="required">#chunk</feature>
    <feature value="required">#clockMode</feature>
    <feature value="required">#clockMode-gps</feature>
    <feature value="required">#clockMode-local</feature>
    <feature value="required">#clockMode-utc</feature>
    <feature value="required">#color</feature>
    <feature value="required">#condition</feature>
    <feature value="required">#condition-fn-media</feature>
    <feature value="required">#condition-fn-parameter</feature>
    <feature value="required">#condition-fn-supports</feature>
    <feature value="required">#condition-primary</feature>
    <feature value="required">#content</feature>
    <feature value="required">#content-sizing</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="required">#core</feature>
    <feature value="required">#data</feature>
    <feature value="required">#direction</feature>
    <feature value="required">#disparity</feature>
    <feature value="required">#display</feature>
    <feature value="required">#display-block</feature>
    <feature value="required">#display-inline</feature>
    <feature value="required">#display-inlineBlock</feature>
    <feature value="required">#display-region</feature>
    <feature value="required" extends="#display">#display-version-2</feature>
    <feature value="required">#displayAlign</feature>
    <feature value="required">#displayAlign-block</feature>
    <feature value="required">#displayAlign-justify</feature>
    <feature value="required">#displayAlign-region</feature>
    <feature value="required">#displayAlign-relative</feature>
    <feature value="required" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="required">#displayAspectRatio</feature>
    <feature value="required">#dropMode</feature>
    <feature value="required">#dropMode-dropNTSC</feature>
    <feature value="required">#dropMode-dropPAL</feature>
    <feature value="required">#dropMode-nonDrop</feature>
    <feature value="required">#embedded-audio</feature>
    <feature value="required">#embedded-content</feature>
    <feature value="required">#embedded-data</feature>
    <feature value="required">#embedded-font</feature>
    <feature value="required">#embedded-image</feature>
    <feature value="required">#extent</feature>
    <feature value="required">#extent-auto</feature>
    <feature value="required" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="required">#extent-contain</feature>
    <feature value="required">#extent-cover</feature>
    <feature value="required" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="required">#extent-image</feature>
    <feature value="required">#extent-length</feature>
    <feature value="required" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="required">#extent-measure</feature>
    <feature value="required">#extent-region</feature>
    <feature value="required" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="required">#extent-root</feature>
    <feature value="required" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="required" extends="#extent">#extent-version-2</feature>
    <feature value="required">#font</feature>
    <feature value="required">#fontFamily</feature>
    <feature value="required">#fontFamily-generic</feature>
    <feature value="required">#fontFamily-non-generic</feature>
    <feature value="required">#fontKerning</feature>
    <feature value="required">#fontSelectionStrategy</feature>
    <feature value="required">#fontSelectionStrategy-character</feature>
    <feature value="required">#fontShear</feature>
    <feature value="required">#fontSize</feature>
    <feature value="required">#fontSize-anamorphic</feature>
    <feature value="required">#fontSize-isomorphic</feature>
    <feature value="required">#fontStyle</feature>
    <feature value="required">#fontStyle-italic</feature>
    <feature value="required">#fontStyle-oblique</feature>
    <feature value="required">#fontVariant</feature>
    <feature value="required">#fontWeight</feature>
    <feature value="required">#fontWeight-bold</feature>
    <feature value="required">#frameRate</feature>
    <feature value="required">#frameRateMultiplier</feature>
    <feature value="required">#gain</feature>
    <feature value="required">#image</feature>
    <feature value="required">#image-png</feature>
    <feature value="required">#initial</feature>
    <feature value="required">#ipd</feature>
    <feature value="required">#layout</feature>
    <feature value="required">#length</feature>
    <feature value="required">#length-cell</feature>
    <feature value="required">#length-em</feature>
    <feature value="required">#length-integer</feature>
    <feature value="required">#length-negative</feature>
    <feature value="required">#length-percentage</feature>
    <feature value="required">#length-pixel</feature>
    <feature value="required">#length-positive</feature>
    <feature value="required">#length-real</feature>
    <feature value="required" extends="#length-real">#length-real-version-2</feature>
    <feature value="required">#length-root-container-relative</feature>
    <feature value="required" extends="#length">#length-version-2</feature>
    <feature value="required">#letterSpacing</feature>
    <feature value="required">#lineBreak-uax14</feature>
    <feature value="required">#lineHeight</feature>
    <feature value="required">#lineShear</feature>
    <feature value="required">#luminance</feature>
    <feature value="required">#markerMode</feature>
    <feature value="required">#markerMode-continuous</feature>
    <feature value="required">#markerMode-discontinuous</feature>
    <feature value="required">#metadata</feature>
    <feature value="required">#metadata-item</feature>
    <feature value="required" extends="#metadata">#metadata-version-2</feature>
    <feature value="required">#nested-div</feature>
    <feature value="required">#nested-span</feature>
    <feature value="required">#opacity</feature>
    <feature value="required">#opacity-block</feature>
    <feature value="required">#opacity-image</feature>
    <feature value="required">#opacity-inline</feature>
    <feature value="required">#opacity-region</feature>
    <feature value="required" extends="#opacity">#opacity-version-2</feature>
    <feature value="required">#origin</feature>
    <feature value="required">#overflow</feature>
    <feature value="required">#overflow-visible</feature>
    <feature value="required">#padding</feature>
    <feature value="required">#padding-1</feature>
    <feature value="required">#padding-2</feature>
    <feature value="required">#padding-3</feature>
    <feature value="required">#padding-4</feature>
    <feature value="required">#padding-block</feature>
    <feature value="required">#padding-inline</feature>
    <feature value="required">#padding-region</feature>
    <feature value="required" extends="#padding">#padding-version-2</feature>
    <feature value="required">#pan</feature>
    <feature value="required">#permitFeatureNarrowing</feature>
    <feature value="required">#permitFeatureWidening</feature>
    <feature value="required">#pitch</feature>
    <feature value="required">#pixelAspectRatio</feature>
    <feature value="required">#position</feature>
    <feature value="required">#presentation</feature>
    <feature value="required">#presentation-audio</feature>
    <feature value="required" extends="#presentation">#presentation-version-2</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="required">#profile-nesting</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#region-implied-animation</feature>
    <feature value="required">#region-inline</feature>
    <feature value="required">#region-timing</feature>
    <feature value="required">#resources</feature>
    <feature value="required">#ruby</feature>
    <feature value="required">#ruby-full</feature>
    <feature value="required">#rubyAlign</feature>
    <feature value="required">#rubyAlign-minimal</feature>
    <feature value="required">#rubyAlign-withBase</feature>
    <feature value="required">#rubyPosition</feature>
    <feature value="required">#rubyReserve</feature>
    <feature value="required" extends="#animation">#set</feature>
    <feature value="required">#set-fill</feature>
    <feature value="required">#set-multiple-styles</feature>
    <feature value="required">#set-repeat</feature>
    <feature value="required">#shear</feature>
    <feature value="required">#showBackground</feature>
    <feature value="required">#source</feature>
    <feature value="required">#speak</feature>
    <feature value="required">#speech</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#styling</feature>
    <feature value="required">#styling-chained</feature>
    <feature value="required">#styling-inheritance-content</feature>
    <feature value="required">#styling-inheritance-region</feature>
    <feature value="required">#styling-inline</feature>
    <feature value="required">#styling-nested</feature>
    <feature value="required">#styling-referential</feature>
    <feature value="required">#subFrameRate</feature>
    <feature value="required">#textAlign</feature>
    <feature value="required">#textAlign-absolute</feature>
    <feature value="required">#textAlign-justify</feature>
    <feature value="required">#textAlign-relative</feature>
    <feature value="required" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="required">#textCombine</feature>
    <feature value="required">#textDecoration</feature>
    <feature value="required">#textDecoration-over</feature>
    <feature value="required">#textDecoration-through</feature>
    <feature value="required">#textDecoration-under</feature>
    <feature value="required" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="required">#textEmphasis-color</feature>
    <feature value="required">#textEmphasis-minimal</feature>
    <feature value="required">#textEmphasis-quoted-string</feature>
    <feature value="required">#textOrientation</feature>
    <feature value="required">#textOutline</feature>
    <feature value="required">#textOutline-blurred</feature>
    <feature value="required">#textOutline-unblurred</feature>
    <feature value="required">#textShadow</feature>
    <feature value="required">#tickRate</feature>
    <feature value="required">#time-clock-with-frames</feature>
    <feature value="required">#time-clock</feature>
    <feature value="required">#time-offset-with-frames</feature>
    <feature value="required">#time-offset-with-ticks</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#time-wall-clock</feature>
    <feature value="required">#timeBase-clock</feature>
    <feature value="required">#timeBase-media</feature>
    <feature value="required">#timeBase-smpte</feature>
    <feature value="required">#timeContainer</feature>
    <feature value="required">#timing</feature>
    <feature value="required">#transformation</feature>
    <feature value="required" extends="#transformation">#transformation-version-2</feature>
    <feature value="required">#unicodeBidi</feature>
    <feature value="required">#unicodeBidi-isolate</feature>
    <feature value="required" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="required">#validation</feature>
    <feature value="required">#visibility</feature>
    <feature value="required">#visibility-block</feature>
    <feature value="required">#visibility-image</feature>
    <feature value="required">#visibility-inline</feature>
    <feature value="required">#visibility-region</feature>
    <feature value="required" extends="#visibility">#visibility-version-2</feature>
    <feature value="required">#wrapOption</feature>
    <feature value="required">#writingMode</feature>
    <feature value="required">#writingMode-horizontal-lr</feature>
    <feature value="required">#writingMode-horizontal-rl</feature>
    <feature value="required">#writingMode-horizontal</feature>
    <feature value="required">#writingMode-vertical</feature>
    <feature value="required">#xlink</feature>
    <feature value="required">#zIndex</feature>
    <!-- 선택적(자발적) 기능 지원 -->
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- 요구되는(필수) 확장 지원 -->
    <!-- 선택적(자발적) 확장 지원 -->
  </extensions>
</profile>

G.2 TTML2 표시 프로파일

TTML2 표시 프로파일은 표시 처리에 대한 최소 준수 수준을 표현하는 데 사용하기 위한 것입니다.

참고:

이 프로파일은 DFXP 표시 프로파일의 상위 집합입니다.

<?xml version="1.0" encoding="utf-8"?>
<!-- 이 파일은 ttml의 "ttml2-presentation" 프로파일을 정의합니다 -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-presentation">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- 요구되는(필수) 기능 지원 -->
    <feature value="required">#content</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required">#core</feature>
    <feature value="required">#presentation</feature>
    <feature value="required" extends="#presentation">#presentation-version-2</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#timing</feature>
    <!-- 선택적(자발적) 기능 지원 -->
    <feature value="optional">#animate</feature>
    <feature value="optional">#animate-fill</feature>
    <feature value="optional">#animate-minimal</feature>
    <feature value="optional">#animate-paced</feature>
    <feature value="optional">#animate-spline</feature>
    <feature value="optional">#animate-repeat</feature>
    <feature value="optional">#animation</feature>
    <feature value="optional">#animation-out-of-line</feature>
    <feature value="optional" extends="#animation">#animation-version-2</feature>
    <feature value="optional">#audio</feature>
    <feature value="optional">#audio-description</feature>
    <feature value="optional">#audio-speech</feature>
    <feature value="optional">#background</feature>
    <feature value="optional">#background-image</feature>
    <feature value="optional">#backgroundClip</feature>
    <feature value="optional">#backgroundColor-block</feature>
    <feature value="optional">#backgroundColor-inline</feature>
    <feature value="optional">#backgroundColor-region</feature>
    <feature value="optional">#backgroundColor</feature>
    <feature value="optional">#backgroundExtent</feature>
    <feature value="optional">#backgroundImage</feature>
    <feature value="optional">#backgroundOrigin</feature>
    <feature value="optional">#backgroundPosition</feature>
    <feature value="optional">#backgroundRepeat</feature>
    <feature value="optional">#base</feature>
    <feature value="optional">#base-general</feature>
    <feature value="optional" extends="#base">#base-version-2</feature>
    <feature value="optional">#bidi</feature>
    <feature value="optional" extends="#bidi">#bidi-version-2</feature>
    <feature value="optional">#border</feature>
    <feature value="optional">#border-block</feature>
    <feature value="optional">#border-inline</feature>
    <feature value="optional">#border-radii</feature>
    <feature value="optional">#border-radii-1</feature>
    <feature value="optional">#border-radii-2</feature>
    <feature value="optional">#border-region</feature>
    <feature value="optional">#bpd</feature>
    <feature value="optional">#cellResolution</feature>
    <feature value="optional">#chunk</feature>
    <feature value="optional">#clockMode</feature>
    <feature value="optional">#clockMode-gps</feature>
    <feature value="optional">#clockMode-local</feature>
    <feature value="optional">#clockMode-utc</feature>
    <feature value="optional">#color</feature>
    <feature value="optional">#condition</feature>
    <feature value="optional">#condition-fn-media</feature>
    <feature value="optional">#condition-fn-parameter</feature>
    <feature value="optional">#condition-fn-supports</feature>
    <feature value="optional">#condition-primary</feature>
    <feature value="optional">#content-sizing</feature>
    <feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="optional">#data</feature>
    <feature value="optional">#direction</feature>
    <feature value="optional">#disparity</feature>
    <feature value="optional">#display</feature>
    <feature value="optional">#display-block</feature>
    <feature value="optional">#display-inline</feature>
    <feature value="optional">#display-inlineBlock</feature>
    <feature value="optional">#display-region</feature>
    <feature value="optional" extends="#display">#display-version-2</feature>
    <feature value="optional">#displayAlign</feature>
    <feature value="optional">#displayAlign-block</feature>
    <feature value="optional">#displayAlign-justify</feature>
    <feature value="optional">#displayAlign-region</feature>
    <feature value="optional">#displayAlign-relative</feature>
    <feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="optional">#displayAspectRatio</feature>
    <feature value="optional">#dropMode</feature>
    <feature value="optional">#dropMode-dropNTSC</feature>
    <feature value="optional">#dropMode-dropPAL</feature>
    <feature value="optional">#dropMode-nonDrop</feature>
    <feature value="optional">#embedded-audio</feature>
    <feature value="optional">#embedded-content</feature>
    <feature value="optional">#embedded-data</feature>
    <feature value="optional">#embedded-font</feature>
    <feature value="optional">#embedded-image</feature>
    <feature value="optional">#extent</feature>
    <feature value="optional">#extent-auto</feature>
    <feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="optional">#extent-contain</feature>
    <feature value="optional">#extent-cover</feature>
    <feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="optional">#extent-image</feature>
    <feature value="optional">#extent-length</feature>
    <feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="optional">#extent-measure</feature>
    <feature value="optional">#extent-region</feature>
    <feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="optional">#extent-root</feature>
    <feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="optional" extends="#extent">#extent-version-2</feature>
    <feature value="optional">#font</feature>
    <feature value="optional">#fontFamily</feature>
    <feature value="optional">#fontFamily-generic</feature>
    <feature value="optional">#fontFamily-non-generic</feature>
    <feature value="optional">#fontKerning</feature>
    <feature value="optional">#fontSelectionStrategy</feature>
    <feature value="optional">#fontSelectionStrategy-character</feature>
    <feature value="optional">#fontShear</feature>
    <feature value="optional">#fontSize</feature>
    <feature value="optional">#fontSize-anamorphic</feature>
    <feature value="optional">#fontSize-isomorphic</feature>
    <feature value="optional">#fontStyle</feature>
    <feature value="optional">#fontStyle-italic</feature>
    <feature value="optional">#fontStyle-oblique</feature>
    <feature value="optional">#fontVariant</feature>
    <feature value="optional">#fontWeight</feature>
    <feature value="optional">#fontWeight-bold</feature>
    <feature value="optional">#frameRate</feature>
    <feature value="optional">#frameRateMultiplier</feature>
    <feature value="optional">#gain</feature>
    <feature value="optional">#image</feature>
    <feature value="optional">#image-png</feature>
    <feature value="optional">#initial</feature>
    <feature value="optional">#ipd</feature>
    <feature value="optional">#layout</feature>
    <feature value="optional">#length</feature>
    <feature value="optional">#length-cell</feature>
    <feature value="optional">#length-em</feature>
    <feature value="optional">#length-integer</feature>
    <feature value="optional">#length-negative</feature>
    <feature value="optional">#length-percentage</feature>
    <feature value="optional">#length-pixel</feature>
    <feature value="optional">#length-positive</feature>
    <feature value="optional">#length-real</feature>
    <feature value="optional" extends="#length-real">#length-real-version-2</feature>
    <feature value="optional">#length-root-container-relative</feature>
    <feature value="optional" extends="#length">#length-version-2</feature>
    <feature value="optional">#letterSpacing</feature>
    <feature value="optional">#lineBreak-uax14</feature>
    <feature value="optional">#lineHeight</feature>
    <feature value="optional">#lineShear</feature>
    <feature value="optional">#luminance</feature>
    <feature value="optional">#markerMode</feature>
    <feature value="optional">#markerMode-continuous</feature>
    <feature value="optional">#markerMode-discontinuous</feature>
    <feature value="optional">#metadata</feature>
    <feature value="optional">#metadata-item</feature>
    <feature value="optional" extends="#metadata">#metadata-version-2</feature>
    <feature value="optional">#nested-div</feature>
    <feature value="optional">#nested-span</feature>
    <feature value="optional">#opacity</feature>
    <feature value="optional">#opacity-block</feature>
    <feature value="optional">#opacity-image</feature>
    <feature value="optional">#opacity-inline</feature>
    <feature value="optional">#opacity-region</feature>
    <feature value="optional" extends="#opacity">#opacity-version-2</feature>
    <feature value="optional">#origin</feature>
    <feature value="optional">#overflow</feature>
    <feature value="optional">#overflow-visible</feature>
    <feature value="optional">#padding</feature>
    <feature value="optional">#padding-1</feature>
    <feature value="optional">#padding-2</feature>
    <feature value="optional">#padding-3</feature>
    <feature value="optional">#padding-4</feature>
    <feature value="optional">#padding-block</feature>
    <feature value="optional">#padding-inline</feature>
    <feature value="optional">#padding-region</feature>
    <feature value="optional" extends="#padding">#padding-version-2</feature>
    <feature value="optional">#pan</feature>
    <feature value="optional">#permitFeatureNarrowing</feature>
    <feature value="optional">#permitFeatureWidening</feature>
    <feature value="optional">#pitch</feature>
    <feature value="optional">#pixelAspectRatio</feature>
    <feature value="optional">#position</feature>
    <feature value="optional">#presentation-audio</feature>
    <feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="optional">#profile-nesting</feature>
    <feature value="optional">#region-implied-animation</feature>
    <feature value="optional">#region-inline</feature>
    <feature value="optional">#region-timing</feature>
    <feature value="optional">#resources</feature>
    <feature value="optional">#ruby</feature>
    <feature value="optional">#ruby-full</feature>
    <feature value="optional">#rubyAlign</feature>
    <feature value="optional">#rubyAlign-minimal</feature>
    <feature value="optional">#rubyAlign-withBase</feature>
    <feature value="optional">#rubyPosition</feature>
    <feature value="optional">#rubyReserve</feature>
    <feature value="optional" extends="#animation">#set</feature>
    <feature value="optional">#set-fill</feature>
    <feature value="optional">#set-multiple-styles</feature>
    <feature value="optional">#set-repeat</feature>
    <feature value="optional">#shear</feature>
    <feature value="optional">#showBackground</feature>
    <feature value="optional">#source</feature>
    <feature value="optional">#speak</feature>
    <feature value="optional">#speech</feature>
    <feature value="optional">#styling</feature>
    <feature value="optional">#styling-chained</feature>
    <feature value="optional">#styling-inheritance-content</feature>
    <feature value="optional">#styling-inheritance-region</feature>
    <feature value="optional">#styling-inline</feature>
    <feature value="optional">#styling-nested</feature>
    <feature value="optional">#styling-referential</feature>
    <feature value="optional">#subFrameRate</feature>
    <feature value="optional">#textAlign</feature>
    <feature value="optional">#textAlign-absolute</feature>
    <feature value="optional">#textAlign-justify</feature>
    <feature value="optional">#textAlign-relative</feature>
    <feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="optional">#textCombine</feature>
    <feature value="optional">#textDecoration</feature>
    <feature value="optional">#textDecoration-over</feature>
    <feature value="optional">#textDecoration-through</feature>
    <feature value="optional">#textDecoration-under</feature>
    <feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="optional">#textEmphasis-color</feature>
    <feature value="optional">#textEmphasis-minimal</feature>
    <feature value="optional">#textEmphasis-quoted-string</feature>
    <feature value="optional">#textOrientation</feature>
    <feature value="optional">#textOutline</feature>
    <feature value="optional">#textOutline-blurred</feature>
    <feature value="optional">#textOutline-unblurred</feature>
    <feature value="optional">#textShadow</feature>
    <feature value="optional">#tickRate</feature>
    <feature value="optional">#time-clock-with-frames</feature>
    <feature value="optional">#time-clock</feature>
    <feature value="optional">#time-offset-with-frames</feature>
    <feature value="optional">#time-offset-with-ticks</feature>
    <feature value="optional">#time-wall-clock</feature>
    <feature value="optional">#timeBase-clock</feature>
    <feature value="optional">#timeBase-media</feature>
    <feature value="optional">#timeBase-smpte</feature>
    <feature value="optional">#timeContainer</feature>
    <feature value="optional">#transformation</feature>
    <feature value="optional" extends="#transformation">#transformation-version-2</feature>
    <feature value="optional">#unicodeBidi</feature>
    <feature value="optional">#unicodeBidi-isolate</feature>
    <feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="optional">#validation</feature>
    <feature value="optional">#visibility</feature>
    <feature value="optional">#visibility-block</feature>
    <feature value="optional">#visibility-image</feature>
    <feature value="optional">#visibility-inline</feature>
    <feature value="optional">#visibility-region</feature>
    <feature value="optional" extends="#visibility">#visibility-version-2</feature>
    <feature value="optional">#wrapOption</feature>
    <feature value="optional">#writingMode</feature>
    <feature value="optional">#writingMode-horizontal-lr</feature>
    <feature value="optional">#writingMode-horizontal-rl</feature>
    <feature value="optional">#writingMode-horizontal</feature>
    <feature value="optional">#writingMode-vertical</feature>
    <feature value="optional">#xlink</feature>
    <feature value="optional">#zIndex</feature>
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- 요구되는(필수) 확장 지원 -->
    <!-- 선택적(자발적) 확장 지원 -->
  </extensions>
</profile>

G.3 TTML2 변환 프로파일

TTML2 변환 프로파일은 변환 처리에 대한 최소 준수 수준을 표현하는 데 사용하기 위한 것입니다.

참고:

이 프로파일은 DFXP 변환 프로파일의 상위 집합입니다.

<?xml version="1.0" encoding="utf-8"?>
<!-- 이 파일은 ttml의 "ttml2-transformation" 프로파일을 정의합니다 -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
  designator="http://www.w3.org/ns/ttml/profile/ttml2-transformation">
  <features xml:base="http://www.w3.org/ns/ttml/feature/">
    <!-- 요구되는(필수) 기능 지원 -->
    <feature value="required">#content</feature>
    <feature value="required">#contentProfiles</feature>
    <feature value="required">#core</feature>
    <feature value="required">#processorProfiles</feature>
    <feature value="required">#profile</feature>
    <feature value="required" extends="#profile">#profile-version-2</feature>
    <feature value="required">#structure</feature>
    <feature value="required">#time-offset</feature>
    <feature value="required">#timing</feature>
    <feature value="required">#transformation</feature>
    <feature value="required" extends="#transformation">#transformation-version-2</feature>
    <!-- 선택적(자발적) 기능 지원 -->
    <feature value="optional">#animate</feature>
    <feature value="optional">#animate-fill</feature>
    <feature value="optional">#animate-minimal</feature>
    <feature value="optional">#animate-paced</feature>
    <feature value="optional">#animate-spline</feature>
    <feature value="optional">#animate-repeat</feature>
    <feature value="optional">#animation</feature>
    <feature value="optional">#animation-out-of-line</feature>
    <feature value="optional" extends="#animation">#animation-version-2</feature>
    <feature value="optional">#audio</feature>
    <feature value="optional">#audio-description</feature>
    <feature value="optional">#audio-speech</feature>
    <feature value="optional">#background</feature>
    <feature value="optional">#background-image</feature>
    <feature value="optional">#backgroundClip</feature>
    <feature value="optional">#backgroundColor-block</feature>
    <feature value="optional">#backgroundColor-inline</feature>
    <feature value="optional">#backgroundColor-region</feature>
    <feature value="optional">#backgroundColor</feature>
    <feature value="optional">#backgroundExtent</feature>
    <feature value="optional">#backgroundImage</feature>
    <feature value="optional">#backgroundOrigin</feature>
    <feature value="optional">#backgroundPosition</feature>
    <feature value="optional">#backgroundRepeat</feature>
    <feature value="optional">#base</feature>
    <feature value="optional">#base-general</feature>
    <feature value="optional" extends="#base">#base-version-2</feature>
    <feature value="optional">#bidi</feature>
    <feature value="optional" extends="#bidi">#bidi-version-2</feature>
    <feature value="optional">#border</feature>
    <feature value="optional">#border-block</feature>
    <feature value="optional">#border-inline</feature>
    <feature value="optional">#border-radii</feature>
    <feature value="optional">#border-radii-1</feature>
    <feature value="optional">#border-radii-2</feature>
    <feature value="optional">#border-region</feature>
    <feature value="optional">#bpd</feature>
    <feature value="optional">#cellResolution</feature>
    <feature value="optional">#chunk</feature>
    <feature value="optional">#clockMode</feature>
    <feature value="optional">#clockMode-gps</feature>
    <feature value="optional">#clockMode-local</feature>
    <feature value="optional">#clockMode-utc</feature>
    <feature value="optional">#color</feature>
    <feature value="optional">#condition</feature>
    <feature value="optional">#condition-fn-media</feature>
    <feature value="optional">#condition-fn-parameter</feature>
    <feature value="optional">#condition-fn-supports</feature>
    <feature value="optional">#condition-primary</feature>
    <feature value="optional">#content-sizing</feature>
    <feature value="optional" extends="#contentProfiles">#contentProfiles-combined</feature>
    <feature value="optional">#data</feature>
    <feature value="optional">#direction</feature>
    <feature value="optional">#disparity</feature>
    <feature value="optional">#display</feature>
    <feature value="optional">#display-block</feature>
    <feature value="optional">#display-inline</feature>
    <feature value="optional">#display-inlineBlock</feature>
    <feature value="optional">#display-region</feature>
    <feature value="optional" extends="#display">#display-version-2</feature>
    <feature value="optional">#displayAlign</feature>
    <feature value="optional">#displayAlign-block</feature>
    <feature value="optional">#displayAlign-justify</feature>
    <feature value="optional">#displayAlign-region</feature>
    <feature value="optional">#displayAlign-relative</feature>
    <feature value="optional" extends="#displayAlign">#displayAlign-version-2</feature>
    <feature value="optional">#displayAspectRatio</feature>
    <feature value="optional">#dropMode</feature>
    <feature value="optional">#dropMode-dropNTSC</feature>
    <feature value="optional">#dropMode-dropPAL</feature>
    <feature value="optional">#dropMode-nonDrop</feature>
    <feature value="optional">#embedded-audio</feature>
    <feature value="optional">#embedded-content</feature>
    <feature value="optional">#embedded-data</feature>
    <feature value="optional">#embedded-font</feature>
    <feature value="optional">#embedded-image</feature>
    <feature value="optional">#extent</feature>
    <feature value="optional">#extent-auto</feature>
    <feature value="optional" extends="#extent-auto">#extent-auto-version-2</feature>
    <feature value="optional">#extent-contain</feature>
    <feature value="optional">#extent-cover</feature>
    <feature value="optional" extends="#extent-version-2">#extent-full-version-2</feature>
    <feature value="optional">#extent-image</feature>
    <feature value="optional">#extent-length</feature>
    <feature value="optional" extends="#extent-length">#extent-length-version-2</feature>
    <feature value="optional">#extent-measure</feature>
    <feature value="optional">#extent-region</feature>
    <feature value="optional" extends="#extent-region">#extent-region-version-2</feature>
    <feature value="optional">#extent-root</feature>
    <feature value="optional" extends="#extent-root">#extent-root-version-2</feature>
    <feature value="optional" extends="#extent">#extent-version-2</feature>
    <feature value="optional">#font</feature>
    <feature value="optional">#fontFamily</feature>
    <feature value="optional">#fontFamily-generic</feature>
    <feature value="optional">#fontFamily-non-generic</feature>
    <feature value="optional">#fontKerning</feature>
    <feature value="optional">#fontSelectionStrategy</feature>
    <feature value="optional">#fontSelectionStrategy-character</feature>
    <feature value="optional">#fontShear</feature>
    <feature value="optional">#fontSize</feature>
    <feature value="optional">#fontSize-anamorphic</feature>
    <feature value="optional">#fontSize-isomorphic</feature>
    <feature value="optional">#fontStyle</feature>
    <feature value="optional">#fontStyle-italic</feature>
    <feature value="optional">#fontStyle-oblique</feature>
    <feature value="optional">#fontVariant</feature>
    <feature value="optional">#fontWeight</feature>
    <feature value="optional">#fontWeight-bold</feature>
    <feature value="optional">#frameRate</feature>
    <feature value="optional">#frameRateMultiplier</feature>
    <feature value="optional">#gain</feature>
    <feature value="optional">#image</feature>
    <feature value="optional">#image-png</feature>
    <feature value="optional">#initial</feature>
    <feature value="optional">#ipd</feature>
    <feature value="optional">#layout</feature>
    <feature value="optional">#length</feature>
    <feature value="optional">#length-cell</feature>
    <feature value="optional">#length-em</feature>
    <feature value="optional">#length-integer</feature>
    <feature value="optional">#length-negative</feature>
    <feature value="optional">#length-percentage</feature>
    <feature value="optional">#length-pixel</feature>
    <feature value="optional">#length-positive</feature>
    <feature value="optional">#length-real</feature>
    <feature value="optional" extends="#length-real">#length-real-version-2</feature>
    <feature value="optional">#length-root-container-relative</feature>
    <feature value="optional" extends="#length">#length-version-2</feature>
    <feature value="optional">#letterSpacing</feature>
    <feature value="optional">#lineBreak-uax14</feature>
    <feature value="optional">#lineHeight</feature>
    <feature value="optional">#lineShear</feature>
    <feature value="optional">#luminance</feature>
    <feature value="optional">#markerMode</feature>
    <feature value="optional">#markerMode-continuous</feature>
    <feature value="optional">#markerMode-discontinuous</feature>
    <feature value="optional">#metadata</feature>
    <feature value="optional">#metadata-item</feature>
    <feature value="optional" extends="#metadata">#metadata-version-2</feature>
    <feature value="optional">#nested-div</feature>
    <feature value="optional">#nested-span</feature>
    <feature value="optional">#opacity</feature>
    <feature value="optional">#opacity-block</feature>
    <feature value="optional">#opacity-image</feature>
    <feature value="optional">#opacity-inline</feature>
    <feature value="optional">#opacity-region</feature>
    <feature value="optional" extends="#opacity">#opacity-version-2</feature>
    <feature value="optional">#origin</feature>
    <feature value="optional">#overflow</feature>
    <feature value="optional">#overflow-visible</feature>
    <feature value="optional">#padding</feature>
    <feature value="optional">#padding-1</feature>
    <feature value="optional">#padding-2</feature>
    <feature value="optional">#padding-3</feature>
    <feature value="optional">#padding-4</feature>
    <feature value="optional">#padding-block</feature>
    <feature value="optional">#padding-inline</feature>
    <feature value="optional">#padding-region</feature>
    <feature value="optional" extends="#padding">#padding-version-2</feature>
    <feature value="optional">#pan</feature>
    <feature value="optional">#permitFeatureNarrowing</feature>
    <feature value="optional">#permitFeatureWidening</feature>
    <feature value="optional">#pitch</feature>
    <feature value="optional">#pixelAspectRatio</feature>
    <feature value="optional">#position</feature>
    <feature value="optional">#presentation</feature>
    <feature value="optional">#presentation-audio</feature>
    <feature value="optional" extends="#presentation">#presentation-version-2</feature>
    <feature value="optional" extends="#processorProfiles">#processorProfiles-combined</feature>
    <feature value="optional" extends="#profile-version-2">#profile-full-version-2</feature>
    <feature value="optional">#profile-nesting</feature>
    <feature value="optional">#region-implied-animation</feature>
    <feature value="optional">#region-inline</feature>
    <feature value="optional">#region-timing</feature>
    <feature value="optional">#resources</feature>
    <feature value="optional">#ruby</feature>
    <feature value="optional">#ruby-full</feature>
    <feature value="optional">#rubyAlign</feature>
    <feature value="optional">#rubyAlign-minimal</feature>
    <feature value="optional">#rubyAlign-withBase</feature>
    <feature value="optional">#rubyPosition</feature>
    <feature value="optional">#rubyReserve</feature>
    <feature value="optional" extends="#animation">#set</feature>
    <feature value="optional">#set-fill</feature>
    <feature value="optional">#set-multiple-styles</feature>
    <feature value="optional">#set-repeat</feature>
    <feature value="optional">#shear</feature>
    <feature value="optional">#showBackground</feature>
    <feature value="optional">#source</feature>
    <feature value="optional">#speak</feature>
    <feature value="optional">#speech</feature>
    <feature value="optional">#styling</feature>
    <feature value="optional">#styling-chained</feature>
    <feature value="optional">#styling-inheritance-content</feature>
    <feature value="optional">#styling-inheritance-region</feature>
    <feature value="optional">#styling-inline</feature>
    <feature value="optional">#styling-nested</feature>
    <feature value="optional">#styling-referential</feature>
    <feature value="optional">#subFrameRate</feature>
    <feature value="optional">#textAlign</feature>
    <feature value="optional">#textAlign-absolute</feature>
    <feature value="optional">#textAlign-justify</feature>
    <feature value="optional">#textAlign-relative</feature>
    <feature value="optional" extends="#textAlign">#textAlign-version-2</feature>
    <feature value="optional">#textCombine</feature>
    <feature value="optional">#textDecoration</feature>
    <feature value="optional">#textDecoration-over</feature>
    <feature value="optional">#textDecoration-through</feature>
    <feature value="optional">#textDecoration-under</feature>
    <feature value="optional" extends="#textEmphasis-minimal">#textEmphasis</feature>
    <feature value="optional">#textEmphasis-color</feature>
    <feature value="optional">#textEmphasis-minimal</feature>
    <feature value="optional">#textEmphasis-quoted-string</feature>
    <feature value="optional">#textOrientation</feature>
    <feature value="optional">#textOutline</feature>
    <feature value="optional">#textOutline-blurred</feature>
    <feature value="optional">#textOutline-unblurred</feature>
    <feature value="optional">#textShadow</feature>
    <feature value="optional">#tickRate</feature>
    <feature value="optional">#time-clock-with-frames</feature>
    <feature value="optional">#time-clock</feature>
    <feature value="optional">#time-offset-with-frames</feature>
    <feature value="optional">#time-offset-with-ticks</feature>
    <feature value="optional">#time-wall-clock</feature>
    <feature value="optional">#timeBase-clock</feature>
    <feature value="optional">#timeBase-media</feature>
    <feature value="optional">#timeBase-smpte</feature>
    <feature value="optional">#timeContainer</feature>
    <feature value="optional">#unicodeBidi</feature>
    <feature value="optional">#unicodeBidi-isolate</feature>
    <feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
    <feature value="optional">#validation</feature>
    <feature value="optional">#visibility</feature>
    <feature value="optional">#visibility-block</feature>
    <feature value="optional">#visibility-image</feature>
    <feature value="optional">#visibility-inline</feature>
    <feature value="optional">#visibility-region</feature>
    <feature value="optional" extends="#visibility">#visibility-version-2</feature>
    <feature value="optional">#wrapOption</feature>
    <feature value="optional">#writingMode</feature>
    <feature value="optional">#writingMode-horizontal-lr</feature>
    <feature value="optional">#writingMode-horizontal-rl</feature>
    <feature value="optional">#writingMode-horizontal</feature>
    <feature value="optional">#writingMode-vertical</feature>
    <feature value="optional">#xlink</feature>
    <feature value="optional">#zIndex</feature>
  </features>
  <extensions xml:base="http://www.w3.org/ns/ttml/extension/">
    <!-- 요구되는(필수) 확장 지원 -->
    <!-- 선택적(자발적) 확장 지원 -->
  </extensions>
</profile>

G.4 DFXP 전체 프로파일

DFXP 전체 프로파일은 [TTML1], 부록 F.3, DFXP 전체 프로파일에 명시되어 있습니다.

G.5 DFXP 표시 프로파일

DFXP 표시 프로파일은 [TTML1], 부록 F.2, DFXP 표시 프로파일에 명시되어 있습니다.

G.6 DFXP 변환 프로파일

DFXP 변환 프로파일은 [TTML1], 부록 F.1, DFXP 변환 프로파일에 명시되어 있습니다.

H 루트 컨테이너 영역 의미

이 부록은 규범적입니다.

이 부록은 루트 컨테이너 영역의 주요 특성과 그 사용을 결정하기 위한 의미를 명시하며, 여기에는 다음이 포함됩니다:

H.1 종횡비

세 가지 종횡비가 루트 컨테이너 영역에 적용됩니다:

표시 종횡비(DAR)

루트 컨테이너의 표시 종횡비는 루트 컨테이너의 종횡비를 표시 픽셀 단위로 나타낸 것에 해당하며, 이 픽셀은 가상의 표시 장치에 표시하기 위한 것입니다. 이 표시 종횡비는 ttp:displayAspectRatio 속성을 통해 명시적으로 지정되며, 이 속성은 tt 요소에 지정됩니다. 또는 아래에서 설명하는 대로 다른 정보를 사용하여 추론됩니다.

참고:

루트 컨테이너 픽셀의 실제 물리적 표시에는 정의된 TTML 표시 처리 이후에 종횡비, 샘플 해상도 및 색 공간에 대한 여러 변환이 적용될 수 있습니다. 이러한 TTML 이후의 처리는 전적으로 이 명세의 범위 밖입니다.

저장 종횡비(SAR)

루트 컨테이너의 저장 종횡비는 루트 컨테이너의 종횡비를 논리 픽셀 단위로 나타낸 것에 해당합니다. 이 픽셀은 문서 좌표 공간에 있으며, 전단사(단사이면서 전사인) 매핑을 통해 각 논리 픽셀은 고유한 표시 픽셀에 연결됩니다. 이 저장 종횡비는 tts:extent 속성을 통해 명시적으로 지정되며, 이 속성은 tt 요소에 지정됩니다. 또는 아래에서 설명하는 대로 다른 정보를 사용하여 추론됩니다.

tts:extent 속성이 tt 요소에 지정되면, 다음이 적용됩니다:

  1. tts:extent 속성의 값이 픽셀 값을 갖는 두 개의 <length> 표현식으로 구성되면, 저장 종횡비는 지정된 것으로 간주되며, 그 수치는 범위의 너비를 높이로 나눈 값과 같습니다;

  2. 그렇지 않으면(계산값이 contain이면), 저장 종횡비는 지정되지 않은 것으로 간주되며 아래에서 설명하는 다른 정보를 사용하여 추론됩니다.

참고:

논리 픽셀 자체에는 고유한 종횡비가 없습니다. 그러나 표시 픽셀에 매핑되면, 아래에 명시된 루트 컨테이너의 픽셀 종횡비로 정의되는 고정값을 갖게 됩니다.

픽셀 종횡비(PAR)

루트 컨테이너의 픽셀 종횡비는 루트 컨테이너에 있는 각 표시 픽셀의 종횡비를 정의합니다. 이에 따라 각 논리 픽셀은, 자신이 속한 문서 좌표 공간에서, 자신과 연결된 표시 픽셀의 고정된 종횡비를 갖게 되며, 다음 관계가 성립합니다: DAR = SAR × PAR. 이 픽셀 종횡비는 ttp:pixelAspectRato 속성을 통해 명시적으로 지정되며, 이 속성은 tt 요소에 지정됩니다. 또는 아래에서 설명하는 대로 다른 정보를 사용하여 추론됩니다.

다음 하위 절에서는 문서에 어떤 종횡비가 지정되어 있는지에 따라 이러한 종횡비가 어떻게 확정되는지를 명시합니다.

H.1.1 종횡비가 지정되지 않은 경우

세 가지 종횡비 중 어느 것도 지정되지 않은 경우, 세 가지 종횡비는 다음 순서에 따라 결정됩니다:

  1. 관련 미디어 객체가 존재하고 정의된 DAR을 갖는 경우, DAR의 확정값은 관련 미디어 객체의 표시 종횡비입니다; 그렇지 않으면, DAR의 값은 문서 처리 컨텍스트에 의해 (임의로) 결정됩니다;

  2. 그런 다음 SAR과 PAR의 값은 아래의 H.1.2 하나의 종횡비에 따라 확정됩니다.

H.1.2 하나의 종횡비

세 가지 종횡비 중 하나만 지정된 경우, 나머지 두 종횡비의 확정값은 다음과 같이 결정됩니다:

  1. DAR이 지정되었거나 위의 H.1.1 종횡비가 지정되지 않은 경우에 따라 확정된 경우, 그 확정값은 지정되었거나 확정된 값이며, SAR과 PAR의 값은 다음과 같이 결정됩니다:

    1. SAR의 확정값은 DAR의 확정값입니다;

    2. PAR의 확정값은 1(일)입니다.

  2. SAR이 지정된 경우, 그 확정값은 지정값이며, DAR과 PAR의 값은 다음과 같이 결정됩니다:

    1. 관련 미디어 객체가 존재하고 정의된 DAR을 갖는 경우, DAR의 확정값은 관련 미디어 객체의 표시 종횡비이며, PAR의 값은 아래의 H.1.3 두 개의 종횡비에 따라 확정됩니다;

    2. 그렇지 않으면, DAR의 확정값은 문서 처리 컨텍스트에 의해 결정되며, PAR의 값은 아래의 H.1.3 두 개의 종횡비에 따라 확정됩니다;

  3. PAR이 지정된 경우, 그 확정값은 지정값이며, DAR과 SAR의 값은 다음과 같이 결정됩니다:

    1. 관련 미디어 객체가 존재하고 정의된 DAR을 갖는 경우, DAR의 확정값은 관련 미디어 객체의 표시 종횡비이며, SAR의 값은 아래의 H.1.3 두 개의 종횡비에 따라 확정됩니다;

    2. 그렇지 않으면, SAR의 확정값은 문서 처리 컨텍스트에 의해 결정되며, DAR의 값은 아래의 H.1.3 두 개의 종횡비에 따라 확정됩니다.

H.1.3 두 개의 종횡비

세 가지 종횡비 중 두 개가 지정되었거나 이미 확정된 경우, 세 번째 종횡비의 확정값은 다음 방정식을 사용하여 결정됩니다: DAR = SAR × PAR.

H.1.4 세 개의 종횡비

세 가지 종횡비가 모두 지정되고 그 값이 다음 방정식을 만족하는 경우, DAR = SAR × PAR, 이 값들은 확정된 종횡비로 간주됩니다. 그러나 방정식을 만족하지 않는 경우, 다음의 검증 처리를 수행할 때 오류를 보고하는 것이 좋으며 (검증 처리기의 구성에 따라), 표시 처리를 수행할 때에는 지정된 PAR 값을 무시하고, PAR의 확정값을 위의 H.1.3 두 개의 종횡비에 따라 결정합니다.

H.2 해상도

루트 컨테이너 영역은 논리 픽셀의 격자로 세분되며, 이 격자는 고정된 수의 행 픽셀과 고정된 수의 열 픽셀을 갖습니다. 열 픽셀의 수는 루트 컨테이너 영역의 수평축 해상도를 나타내고, 행 픽셀의 수는 루트 컨테이너 영역의 수직축 해상도를 나타냅니다. 전자는 루트 컨테이너 영역의 너비로 정의되고, 후자는 높이로 정의됩니다. 또한 두 축의 해상도를 (이 두 가지를) 함께 일컬어 루트 컨테이너 영역의 종합 해상도 또는 공간 범위라고 합니다.

참고:

위의 저장 종횡비(SAR)에서 언급했듯이, 논리 픽셀에는 고유한 종횡비가 없습니다. 다시 말해, 논리 픽셀에는 정의된 모양이 없으며, 이는 곧 정의된 크기도 없다는 의미입니다. 논리 픽셀이 표시 픽셀에 매핑될 때에만 고정된 모양과 크기를 갖게 됩니다. 그럼에도 불구하고, 논리 픽셀을 정사각형이며 측정 가능한 절대 크기를 갖는 것으로 생각하는 것이 편리한 경우가 많습니다. 그러나 독자는 이러한 성급한 (그리고 잘못되었을 수도 있는) 결론을 내리지 않도록 주의해야 합니다.

tts:extent 속성의 값이 tt 요소에 지정되고 픽셀 값을 갖는 두 개의 <length> 표현식으로 구성되는 경우, 이 두 표현식은 루트 컨테이너 영역의 너비와 높이를 나타내며, 따라서 해당 영역의 종합 해상도를 결정합니다; 그렇지 않으면, 루트 컨테이너 영역의 종합 해상도는 다음에 의해 (임의로) 결정됩니다: 문서 처리 컨텍스트. 이 결정은 SAR의 확정값을 준수하는 방식으로 이루어지며, 해당 값은 위의 H.1 종횡비에 따라 결정됩니다.

참고:

문서 처리 컨텍스트가 임의의 해상도를 루트 컨테이너 영역에 할당하는 경우, 내부 처리 제약 조건과 처리 중인 문서 인스턴스에 편리한 어떤 방식으로든 할당할 수 있습니다. 예를 들어, 다음 객체의 저장 종횡비에 적용되는 것과 동일한 해상도를 할당할 수 있습니다: 관련 미디어 객체. 또는 문서에 있는 길이 표현식의 정밀도를 평가하여, 동일한 정밀도를 보존하는 논리 해상도를 할당할 수 있습니다.

H.3 좌표 공간

루트 컨테이너 영역의 좌표 공간은 문서 좌표 공간이라고도 하며, 경계가 없는 2차원 평면입니다. 이 평면에는 논리 픽셀의 닫힌 집합이 직사각형 R의 형태로 정의되며, 해당 픽셀은 R의 경계 내부에 있습니다. 이 좌표 공간의 원점 (위치)은 R의 왼쪽 위 모서리와 일치하며, 수직축의 양의 픽셀 방향은 아래쪽이고 수평축의 양의 픽셀 방향은 오른쪽입니다. 또한, 너비와 높이는, R에 대해, 루트 컨테이너 영역의 확정된 해상도로 설정됩니다. 마지막으로, R에 적용되는 종횡비는 위에서 나타낸 DAR, SAR, PAR의 확정값에 따라 설정됩니다.

상위 수준 프로토콜이 적용되는 경우를 제외하면, 문서 좌표 공간은 주어진 문서 인스턴스를 처리할 때 단 한 번만 결정됩니다.

I 시간 표현식 의미

이 부록은 규범적입니다.

이 부록은 문서 인스턴스의 시간 표현식을 해석하기 위한 의미를 명시합니다.

참고:

아래에서 사용하는 로컬 실제 시간이라는 구절은 문서 처리 컨텍스트의 가상 실제 시간 시계를 모델링하기 위한 것이며, 여기서 로컬은 이 처리 컨텍스트의 구현과 매우 가까운 곳을 의미합니다. 이 가상 시계와의 관계를 정의하는 목적은 설명을 위해 로컬에서 유효한 물리적 시간 구현을 확립하는 것입니다.

참고:

아래에서 사용하는 재생률이라는 구절은 문서 처리 컨텍스트의 (변할 수도 있는) 매개변수를 모델링하기 위한 것으로, 시간의 재생(또는 해석) 속도를 인위적으로 늘리거나 줄일 수 있습니다. 예를 들어, 다음 객체의 재생 속도를 늦추거나 높이는 경우가 있습니다: 관련 미디어 객체. 일반성을 잃지 않고, 다음 설명에서는 고정된 재생률을 가정합니다. 재생률이 변하는 경우, 계산 결과에 적절한 조정이 필요할 수 있습니다.

문서 처리 컨텍스트는 적용할 에포크와 에포크 관련 오프셋을 정의하며, 이는 합성 문서 동기화 기준을 설정할 때 사용됩니다.

I.1 시계 시간 기준

clock 시간 기준으로 동작할 때에는 시간 표현식과 그 관계를 해석하기 위해 다음 의미가 적용됩니다. 시간 표현식은 <time-expression>으로 정의되며, 그 관계는 미디어 시간 및 로컬 실제 시간과의 관계입니다.

시계 시간 기준 C는 로컬 실제 시간 R과 관계가 있으며, 이 실제 시간은 에포크 E를 기준으로 표현됩니다(이는 문서 처리 컨텍스트에 의해 정의됩니다). 그 관계는 다음과 같습니다:

TTML 의미 – 시계 시간과 실제 시간의 관계


R = C + epochOffset + discontinuityOffset

여기서 C ∈ ℜ, 0 ≤ C < ∞이며, C는 다음 시점 중 하나로부터 경과한 초 단위의 시간입니다: (1) 기준 시계 기준에 따른 가장 최근의 이전 자정, 관련 <time-expression>이 날짜가 없는 형식을 취하는 경우,; 또는 (2) 기준 시계 기준에 따른 지정된 날짜의 자정, 관련 <time-expression>이 날짜가 있는 형식을 취하는 경우;

epochOffset ∈ ℜ, 0 ≤ epochOffset < ∞이며, epochOffset은 초 단위이고, 0은 에포크 E의 시작을 의미합니다. epochOffset의 값은 ttp:clockMode 매개변수의 계산값에 따라 다음과 같이 결정됩니다:

(1) local인 경우, 가장 최근의 이전 로컬 자정의 로컬 실제 시간과 에포크 E 시작 시점의 로컬 실제 시간의 차이를 초 단위로 나타낸 값;

(2) gps인 경우, 가장 최근의 이전 GPS 자정의 GPS 시간과 에포크 E 시작 시점의 GPS 시간의 차이를 초 단위로 나타낸 값;

(3) utc인 경우, 가장 최근의 이전 UTC 자정의 UTC 시간과 에포크 E 시작 시점의 UTC 시간의 차이를 초 단위로 나타낸 값;

discontinuityOffset ∈ ℜ, −∞ < discontinuityOffset < ∞이며, discontinuityOffset은 초 단위이고, discontinuityOffset의 값은 기준 시계 기준의 가장 최근 이전 자정 이후에 더해진(또는 빼진) 윤초(및 그 소수 부분)의 합과 같습니다;

그리고 epochOffset과 discontinuityOffset은 다음이 시작되기 전에 단 한 번만 결정됩니다: 루트 시간 범위. 이때 값을 결정한 시점부터 루트 시간 범위가 시작되는 시점까지 로컬 자정이나 기준 시계 기준의 불연속이 발생하지 않아야 합니다.

시간 값 표현식은 <time-expression>으로 표시되며, 시계 시간 C와 다음과 같은 관계를 갖습니다:

TTML 의미 – 시간 표현식과 시계 시간의 관계


<time-expression> 형식이 틱(t) 단위를 사용하지 않는 경우:

C = 3600 * hours + 60 * minutes + seconds

여기서 hours, minutes, seconds 구성 요소는 시간 표현식에 있으면 추출하고, 없으면 0으로 합니다. 또한, fraction 구성 요소가 있으면, seconds 구성 요소에 더하여 실수 값을 갖는 초 구성 요소를 만듭니다.

그렇지 않고, <time-expression> 형식이 틱(t) 단위를 사용하는 경우:

C = ticks / tickRate

참고:

시간 표현식의 frames 및 sub-frames 항과 프레임(f) 단위는 다음 시간 기준을 사용하는 경우에는 적용되지 않습니다: clock 시간 기준.

시계 시간 기준 C는 미디어 시간 M과 독립적입니다:

TTML 의미 – 시계 시간과 미디어 시간의 관계


M ¬∝ C

참고:

즉, 타이밍은 미디어 시간과 분리되어 있으며(반드시 비례하지 않으며), 이는 clock 시간 기준을 사용하는 경우에 해당합니다. 예를 들어, 미디어 재생률이 영(0)이면 미디어 재생은 일시 중단되지만, 시간 좌표는 기준 시계 기준에 정비례하는 시계 시간의 자연스러운 진행에 따라 계속 증가합니다. 또한 재생 중 미디어 재생률이 변경되더라도 표시 타이밍은 영향을 받지 않습니다.

I.2 미디어 시간 기준

media 시간 기준으로 동작할 때에는 시간 표현식과 그 관계를 해석하기 위해 다음 의미가 적용됩니다. 시간 표현식은 <time-expression>으로 정의되며, 그 관계는 미디어 시간, 문서 시간 및 로컬 실제 시간과의 관계입니다.

I.2.1 로컬 실제 시간과의 관계

미디어 시간 기준 M은 로컬 실제 시간 R과 관계가 있으며, 이 실제 시간은 에포크 E를 기준으로 표현됩니다(이는 문서 처리 컨텍스트에 의해 정의됩니다). 그 관계는 다음과 같습니다:

TTML 의미 – 미디어 시간과 실제 시간의 관계


R = playRate * M + epochOffset

여기서 M ∈ ℜ, 0 ≤ M < ∞이며, M은 초 단위이고, 0은 문서 시간 좌표 공간의 시작에 해당합니다;

playRate ∈ ℜ, −∞ < playRate < ∞이며, playRate에는 단위가 없고, playRate의 값은 문서 처리 컨텍스트에 의해 결정되거나, 그렇게 결정되지 않으면 1.0입니다;

그리고 epochOffset ∈ ℜ, 0 ≤ epochOffset < ∞이며, epochOffset은 초 단위이고, 0은 다음의 에포크 E의 시작에 해당합니다. epochOffset의 값은 다음이 시작되는 시점의 로컬 실제 시간과, 문서 시간 좌표 공간, 에포크 E 시작 시점의 로컬 실제 시간의 차이를 초 단위로 나타낸 값입니다.

참고:

playRate의 값이 문서 처리 컨텍스트에 의해 결정되는 경우, 즉 기본값 1.0으로 설정되지 않은 경우, 해당 값은 문서를 표시하는 동안 실시간으로 변할 수 있습니다. 이 경우 주어진 M 값에 대한 R 값은 새로운 playRate 값을 기준으로 다시 평가될 것으로 예상됩니다.

I.2.2 미디어 시간과의 관계

시간 값 표현식은 <time-expression>으로 표시되며, 미디어 시간 M과의 관계는 ttp:frameRate, ttp:subFrameRate, ttp:frameRateMultiplier 매개변수에 따라 다음과 같이 정해집니다:

TTML 의미 – 시간 표현식과 미디어 시간의 관계


시간 표현식이 clock-time 형식 또는 틱(t) 단위를 사용하지 않는 offset-time 형식을 사용하는 경우:

M = referenceBegin + 3600 * hours + 60 * minutes + seconds + ((frames + (subFrames / subFrameRate)) / effectiveFrameRate)

여기서 referenceBegin은 가장 가까운 조상 시간 컨테이너가 병렬(par) 의미를 사용하는지 순차(seq) 의미를 사용하는지에 따라 결정됩니다: 병렬이거나, 순차이면서 앞선 형제 시간 지정 요소가 존재하지 않는 경우, referenceBegin은 가장 가까운 조상 시간 컨테이너의 시작에 해당하는 미디어 시간이거나, 이 시간 컨테이너가 루트 시간 범위이면 영(0)입니다; 그렇지 않고, 순차이면서 앞선 형제 시간 지정 요소가 존재하는 경우, referenceBegin은 다음 요소의 활성 종료에 해당하는 미디어 시간입니다: 바로 앞선 형제 시간 지정 요소;

hours, minutes, seconds, frames, subFrames 구성 요소는 시간 표현식에 있으면 추출하고, 없으면 0으로 합니다; 또한, 시간 표현식이 clock-time 표현식의 형식을 취하는 경우, fraction 구성 요소가 있으면, seconds 구성 요소에 더하여 실수 값을 갖는 seconds 구성 요소를 만듭니다. 또는 시간 표현식이 offset-time 표현식의 형식을 취하는 경우, fraction 구성 요소가 있으면, time-count 구성 요소에 더하여 실수 값을 갖는 시간 카운트 구성 요소를 만듭니다. 이는 지정된 오프셋 단위를 따릅니다;

subFrameRate는 ttp:subFrameRate 매개변수의 계산값입니다;

그리고 effectiveFrameRate(초당 프레임 수)는 frameRate * frameRateMultiplier이며, 여기서 frameRate는 ttp:frameRate 매개변수의 계산값이고, frameRateMultiplier는 ttp:frameRateMultiplier 매개변수의 계산값입니다.

그렇지 않고, 시간 표현식이 offset-time 형식을 사용하면서 틱(t) 단위를 사용하는 경우:

M = referenceBegin + ticks / tickRate

여기서 referenceBegin은 위에서 설명한 것과 같습니다;

ticks 구성 요소는 시간 표현식에서 추출합니다;

그리고 tickRate는 ttp:tickRate 매개변수의 계산값입니다;

참고:

계산된 frameRateMultiplier 비율이 정수가 아닌 경우, effectiveFrameRate는 정수가 아닌 유리수가 됩니다.

참고:

위의 수식은 문서 시간 좌표 공간의 시작 시간이 관련 미디어 객체의 시작 시간과 관련되어 있다고 가정합니다. 이 가정이 성립하지 않으면, 그 차이를 반영하는 추가 오프셋을 미디어 시간 M을 계산할 때 도입할 수 있습니다.

I.2.3 문서 시간과의 관계

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

ttp:timeBase="media"인 경우, 계산된 문서 시간은 오프셋 없이 동등한 미디어 시간으로 사용됩니다.

참고:

예를 들어 래퍼 형식에 의해 부과되는 추가적인 미디어 시간 처리는 TTML 명세의 범위 밖입니다.

예를 들어, [ISOBMFF TT]는 TTML 문서를 분할된 파일 및 분할되지 않은 파일의 샘플로 감싸는 메커니즘을 제공하며, [MPEG DASH]는 HTTP 및 MPEG-2 TS를 통한 조각 단위 전달을 위한 추가적인 분할 의미를 제공합니다.

다음 문서 조각들은 타이밍이 동등합니다:

예제 조각 – 미디어 타이밍 1
<tt ttp:timeBase="media" ...>
...
<body>
   <div xml:id="d1" begin="1s">
      <p xml:id="p1" begin="0s" end="1s">첫 번째 문단</p>
      <p xml:id="p2" begin="2s" end="3s">두 번째 문단</p>
   </div>
</body>
</tt>

예제 조각 – 미디어 타이밍 2
<tt ttp:timeBase="media" ...>
...
<body>
   <div xml:id="d1">
      <p xml:id="p1" begin="1s" end="2s">첫 번째 문단</p>
      <p xml:id="p2" begin="3s" end="4s">두 번째 문단</p>
   </div>
</body>
</tt>

다른 외부 정보가 없을 때 문서 시간이 미디어 시간으로 매핑되는 방식을 보여 주는 타이밍 다이어그램.
미디어 시간

이 예제에서는 다음의 용어를 사용합니다: [SMIL 3.0]. body 요소의 암시적 지속 시간은 계산된 지속 시간과 동일하며, 이는 또한 루트 시간 범위이기도 합니다. 그러나 문서 처리 컨텍스트가 적용 가능한 미디어 시간의 범위를 지정하면, 이 범위는 확정된 시작 시간과 종료 시간을 제한하고, 따라서 루트 시간 범위도 제한합니다.

다음 예제에서는 처리 컨텍스트가 문서가 활성 상태인 미디어 시간 범위를 1.5s부터 3.5s까지로 정의합니다. 두 시점 모두에 시간 지정 콘텐츠가 존재하므로, 이 범위가 루트 시간 범위를 정의합니다.

처리 컨텍스트에 의해 미디어 시간 범위가 제한될 때 문서 시간이 미디어 시간으로 매핑되는 방식을 보여 주는 타이밍 다이어그램.
미디어 시간

회색 배경은 문서 처리 컨텍스트가 문서를 비활성 상태로 정의하는 기간을 나타냅니다. 문서 시간 좌표 공간은 이 변환의 영향을 받지 않습니다.

문서 처리 컨텍스트가 미디어 시간 범위를 0-3s로 정의한다면, 루트 시간 범위는 p1에 의해 정의되는 1s부터 2s까지가 되며, p2는 한 번도 표시되지 않습니다.

I.3 SMPTE 시간 기준

smpte 시간 기준으로 동작할 때에는 시간 표현식과 그 관계를 해석하기 위해 다음 의미가 적용됩니다. 시간 표현식은 <time-expression>으로 정의되며, 그 관계는 미디어 시간 및 로컬 실제 시간과의 관계입니다.

ttp:markerMode 매개변수의 계산값이 discontinuous인 경우, 시간 표현식과 미디어 시간 M 또는 로컬 실제 시간 R 사이에는 직접적인 관계가 없습니다. 이 경우 시간 표현식은 문서 처리 컨텍스트가 smpte 타임 코드를 관련 미디어 객체에서 만날 때 발생시키는 동기화 이벤트(마커)를 참조합니다.

그렇지 않고, ttp:markerMode 매개변수의 계산값이 continuous인 경우, 시간 표현식과 로컬 실제 시간 및 미디어 시간 사이의 관계는 아래에서 설명하는 합성 smpte 문서 동기화 기준을 통해 정의되며, 여기서는 이를 SMPTE 시간 기준 S라고 합니다.

TTML 의미 – 시간 표현식과 SMPTE 시간의 관계


S = (countedFrames - droppedFrames + (subFrames / subFrameRate)) / effectiveFrameRate

여기서

countedFrames = (3600 * hours + 60 * minutes + seconds) * frameRate + frames

hours, minutes, seconds, frames, subFrames 구성 요소는 시간 표현식에 있으면 추출하고, 없으면 0으로 합니다; 또한, 시간 표현식이 clock-time 표현식의 형식을 취하는 경우, fraction 구성 요소가 있으면, seconds 구성 요소에 더하여 실수 값을 갖는 seconds 구성 요소를 만듭니다. 또는 시간 표현식이 offset-time 표현식의 형식을 취하는 경우, fraction 구성 요소가 있으면, time-count 구성 요소에 더하여 실수 값을 갖는 시간 카운트 구성 요소를 만듭니다. 이는 지정된 오프셋 단위를 따릅니다;

droppedFrames는 다음과 같이 계산됩니다:

1. dropMode를 ttp:dropMode 매개변수의 계산값으로 합니다;

2. dropMode가 dropNTSC인 경우, 다음과 같이 설정합니다: droppedFrames = (hours * 54 + minutes - floor(minutes/10)) * 2;

3. 그렇지 않고, dropMode가 dropPAL인 경우, 다음과 같이 설정합니다: droppedFrames = (hours * 27 + floor(minutes/2) - floor(minutes/20)) * 4;

4. 그렇지 않으면, 다음과 같이 설정합니다: droppedFrames = 0;

frameRate는 ttp:frameRate 매개변수의 계산값입니다;

subFrameRate는 ttp:subFrameRate 매개변수의 계산값입니다;

그리고 effectiveFrameRate(초당 프레임 수)는 frameRate * frameRateMultiplier이며, 여기서 frameRate는 ttp:frameRate 매개변수의 계산값이고, frameRateMultiplier는 ttp:frameRateMultiplier 매개변수의 계산값입니다.

위의 내용에도 불구하고, 시간 표현식이 드롭되는 것으로 지정된 프레임 코드를 포함하고, 그 지정이 7.2.4 ttp:dropMode에 따른 것이라면, 해당 시간 표현식은 검증 평가의 목적상 유효하지 않은 것으로 간주되어야 합니다.

참고:

<time-expression>에서는 다음 두 항목의 사용 중단 권고에 대해 설명합니다: offset-time 형식과 시간 표현식의 fraction 구성 요소. 이는 smpte 시간 기준이 적용되는 경우에 해당합니다.

SMPTE 시간 기준 S는 미디어 시간 기준 M과 다음과 같은 관계를 갖습니다:

TTML 의미 – SMPTE 시간과 미디어 시간의 관계


M = referenceBegin + S

여기서 referenceBegin은 가장 가까운 조상 시간 컨테이너가 병렬(par) 의미를 사용하는지 순차(seq) 의미를 사용하는지에 따라 결정됩니다: 병렬이거나, 순차이면서 앞선 형제 시간 지정 요소가 존재하지 않는 경우, referenceBegin은 가장 가까운 조상 시간 컨테이너의 시작에 해당하는 SMPTE 시간이거나, 이 시간 컨테이너가 루트 시간 범위이면 영(0)입니다; 그렇지 않고, 순차이면서 앞선 형제 시간 지정 요소가 존재하는 경우, referenceBegin은 다음 요소의 활성 종료에 해당하는 SMPTE 시간입니다: 바로 앞선 형제 시간 지정 요소;

위에서 설명한 대로 도출된 미디어 시간 기준이 주어지면, 미디어 시간 기준 M과 로컬 실제 시간 R의 관계는 위의 I.2 미디어 시간 기준에서 설명한 것과 같습니다.

J 중간 문서 구문

이 부록은 규범적입니다.

이 부록은 다음 문서의 구문 요소와 구조를 명시합니다: 시간 지정 텍스트 중간 문서. ISD 인스턴스는 독립적인 문서 인스턴스로 표현되거나, ISD 시퀀스 인스턴스로 표현되는 컬렉션에 포함될 수 있습니다.

모든 ISD 관련 어휘는 TTML ISD 네임스페이스에 정의되며, 이 네임스페이스는 여기서 다음과 같이 정의됩니다: http://www.w3.org/ns/ttml#isd, 권장 접두사는 isd입니다.

참고:

ISD 문서 인스턴스는 TTML ISD 네임스페이스의 요소를 사용하는 것 외에도, 일반적으로 하나 이상의 다른 TTML 네임스페이스의 어휘를 포함하며, 이러한 네임스페이스는 5.1 네임스페이스에 정의되어 있습니다.

TTML 중간 동기 문서는, 줄여서 ISD 또는 ISD 인스턴스라고 하며, 원본 TTML 문서의 이산적이고 시간적으로 겹치지 않는 구간인 ISD 구간을 나타냅니다. 이 구간에서는 비이산 애니메이션을 제외한 모든 콘텐츠, 스타일링 및 레이아웃 정보가 정적인 상태를 유지합니다. 구체적으로, TTML 문서의 타이밍 계층을 평탄화한 다음 시간적으로 겹치지 않는 구간으로 세분하며, 이러한 각 구간은 해당 구간 내 원본 TTML 문서의 정적 뷰를 정의합니다. 이 정적 뷰는 ISD 인스턴스로 표현됩니다. TTML의 구체적이고 독립적인 중간 동기 문서 인스턴스는 isd:isd 요소를 루트 문서 요소로 지정해야 합니다. 다음 문서의 중간 동기 문서 인스턴스가 중간 동기 문서 시퀀스 인스턴스에 포함되는 경우, ISD 인스턴스는 isd:isd 자식 요소로 표현되며, 그 부모는 루트 isd:sequence 요소입니다.

참고:

ISD 인스턴스는 관련 구간 내에서 연속 애니메이션을 나타내는 하나 이상의 animate 요소를 포함할 수 있습니다. 연속적으로 애니메이션되는 스타일은 ISD 구간 경계에 따라 세분되며, 이를 단계적으로 이어 붙이면 교차하는 모든 ISD 구간에 걸쳐 동등한 연속 애니메이션이 표현됩니다.

TTML 중간 동기 문서 시퀀스는 시간적으로 겹치지 않는 중간 동기 문서 인스턴스들을 시작 시간에 따라 정렬한 컬렉션을 나타냅니다. TTML의 구체적인 중간 동기 문서 시퀀스 인스턴스는 isd:sequence 요소를 루트 문서 요소로 지정해야 합니다.

J.1 ISD 어휘

J.1.1 isd:sequence

isd:sequence 요소는 중간 동기 문서 시퀀스 문서의 루트 문서 요소 역할을 합니다.

isd:sequence 요소는 자식으로 0개 이상의 metadata 요소를 허용하며, 그 뒤에 0개 또는 1개의 ttp:profile 요소가 오고, 그 뒤에 0개 이상의 isd:isd 요소가 옵니다.

자식 isd:isd 요소는 자신의 시작 시간에 해당하는 미디어 시간에 따라 정렬되어야 합니다. 또한, 임의의 두 자식 isd:isd 요소의 시간 구간은 (시간적으로) 겹쳐서는 안 됩니다.

XML 표현 – 요소 정보 항목: isd:sequence
<isd:sequence
  extent = xsd:string
  size = <non-negative-integer>
  version = <non-negative-integer>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {ISD 매개변수 속성 집합에 속하는 임의의 속성}>
  콘텐츠: metadata*, ttp:profile?, isd:isd*
</isd:sequence>

extent 속성이 지정되면, 그 값은 <extent> 값 구문의 부분집합을 따라야 하며, 이 부분집합은 픽셀 값을 갖는 두 개의 <length> 표현식으로 구성됩니다. 이 경우 지정값은 루트 컨테이너 영역의 공간 범위를 나타내며, 이는 다음에 정의되어 있습니다: H.2 해상도. 이 공간 범위는 각 각 구성 중간 동기 문서에 전역적으로 적용되며, 해당 문서는 자식 isd:isd 요소로 표현됩니다.

size 속성이 지정되면, 그 값은 음이 아닌 정수여야 하며, 다음의 개수에 해당해야 합니다: isd:isd 자식 요소. 지정되지 않으면, 다음 요소가 종료될 때까지 크기를 미정으로 간주해야 합니다: isd:sequence 요소. 이 요소가 종료되면 크기를 확인하여 결정할 수 있습니다.

참고:

size 속성은 일반적으로 실시간 자막의 경우 생략됩니다.

version 속성이 지정되면, 그 값은 양의 정수(0보다 큰 정수)여야 하며, 다음 중간 동기 문서 구문 명세의 버전에 해당해야 합니다. 이는 ISD 시퀀스 문서를 작성할 때 사용된 버전입니다. 지정되는 경우, 수치는 이 (2) 이상이어야 합니다. 지정되지 않으면, 버전은 이(2)와 같은 것으로 간주해야 합니다. 이 중간 동기 문서 구문 명세와 관련된 버전은 이(2)입니다.

참고:

[TTML1] §9.3.2에서 참조하거나 암시하는 ISD 추상화는 해당 명세에서 구체적으로 정의되지 않았습니다. 여기서는 버전 일(1)을 이전 추상화와 그 다양한 (표준화되지 않은) 구현에 대한 비공식적인 논의를 위해 예약합니다.

xml:lang 속성은 다음 isd:sequence 요소에 지정되어야 합니다. 값이 비어 있으면, 다음 문서 내의 콘텐츠에 적용되는 기본 언어가 없음을 의미합니다: 중간 동기 문서 시퀀스. 그렇지 않으면, 지정값은 각 구성 중간 동기 문서에 적용되는 기본 언어를 나타냅니다.

하나 이상의 매개변수 특성을 제한된 매개변수 속성 집합에서 지정할 수 있으며, 이 집합은 J.2 ISD 매개변수 속성 집합에 열거되어 있습니다. 지정되면, 각 구성 중간 동기 문서에 전역적으로 적용됩니다.

자식 ttp:profile 요소가 존재하면, 해당 ttp:profile 요소는 다음 제약 조건을 만족해야 합니다:

  • combine 속성이 지정되지 않습니다;

  • designator 속성이 지정되지 않습니다;

  • type 속성이 지정되지 않습니다;

  • use 속성이 지정되지 않습니다;

  • 어떤 자손 요소도 ttp:profile 요소가 아닙니다;

  • 어떤 자손 ttp:feature 요소도 value 속성에 prohibited 값을 지정하지 않습니다;

  • 어떤 자손 ttp:extension 요소도 value 속성에 prohibited 값을 지정하지 않습니다.

또한, 이러한 자식 ttp:profile 요소는 원본 TTML 문서의 결합된 처리기 프로파일과 동등한 프로파일을 지정해야 하며, 이는 외부에서 참조하는 모든 프로파일 문서를 가져온 상태의 프로파일입니다.

참고:

하나의 ttp:profile을 isd:sequence에 지정할 수 있도록 허용하는 목적은 처리기 프로파일 요구 사항을 선언하는 간소화된 메커니즘을 제공하는 것입니다. 이러한 요구 사항은 문서를 처리하기 위해 충족되어야 합니다 (최종 사용자가 재정의하지 않는 경우).

J.1.2 isd:isd

isd:isd 요소는 다음 중 하나의 역할을 합니다: (1) 독립적인 중간 동기 문서의 루트 문서 요소 또는 (2) isd:sequence 요소의 자식 요소. 이 요소는 다음의 중간 동기 문서 시퀀스 문서에 속합니다. 여기서 isd:isd 요소는 루트 tt 요소로부터 도출되어 이를 대체하며, 해당 루트 요소는 각 중간 동기 문서 형식인 DOCinter 에 유지되는 요소입니다. 이 형식은 다음의 중간 문서 구성 절차에 의해 생성됩니다.

isd:isd 요소는 자식으로 0개 이상의 metadata 요소를 허용하며, 그 뒤에 0개 또는 1개의 ttp:profile 요소가 오고, 그 뒤에 0개 이상의 isd:css 요소가 오며, 그 뒤에 0개 이상의 isd:region 요소가 옵니다.

XML 표현 – 요소 정보 항목: isd:isd
<isd:isd
  begin = <time-expression>
  end = <time-expression> | "indefinite"
  extent = xsd:string
  version = <non-negative-integer>
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {ISD 매개변수 속성 집합에 속하는 임의의 속성}>
  콘텐츠: metadata*, ttp:profile?, isd:css*, isd:region*
</isd:isd>

begin 속성이 지정되어야 하며, 그 값은 offset-time 형식의 <time-expression>이어야 합니다. 또한, 사용할 수 있는 단위는 다음으로 제한됩니다: s(초), f(프레임), t(틱). 또는 단위를 생략할 수 있으며, 이 경우 s 초가 암시됩니다. 이 시작 시간은 다음 공간의 시작 시간으로부터의 오프셋으로 표현됩니다: 문서 시간 좌표 공간. 이는 이 isd:isd 요소가 도출된 원본 TTML 문서의 공간입니다.

end 속성도 마찬가지로 지정되어야 하며, 동일한 제약 조건이 적용됩니다. end 속성의 값이 <time-expression>의 형식을 취하는 경우, 이 종료 시간은 문서 시간 좌표 공간의 시작 시간으로부터의 오프셋으로 표현되며, 이는 이 isd:isd 요소가 도출된 원본 TTML 문서의 공간입니다; 그렇지 않으면(값이 indefinite이면), 이 속성을 인코딩하는 시점에 시간 범위를 알 수 없거나 시간적 종료 지점이 없는 것입니다.

참고:

[SMIL 3.0]의 용어로 표현하면, 이러한 begin 및 end 속성의 값은 활성 지속 시간의 확정된 시작 시간과 종료 시간에 해당하며, 이는 문서 시작을 기준으로 합니다.

extent 속성이 지정되면, 그 값은 <extent> 값 구문의 부분집합을 따라야 하며, 이 부분집합은 픽셀 값을 갖는 두 개의 <length> 표현식으로 구성됩니다. 이 경우 지정값은 루트 컨테이너 영역의 공간 범위를 나타내며, 이는 다음에 정의되어 있습니다: H.2 해상도. 이 공간 범위는 다음 중간 동기 문서에 적용됩니다: 이 isd:isd 요소로 표현되는 문서. 또한, 이 isd:isd 요소가 중간 동기 문서 시퀀스 문서에 포함되어 있고, 컨테이너 isd:sequence 요소가 다음 extent 속성을 지정하면, 이 isd:isd 요소에는 extent 속성을 지정하지 않는 것이 좋습니다. 지정하는 경우에는 다음 속성의 값과 같아야 합니다: 컨테이너에 지정된 extent 속성. 해당 컨테이너는 isd:sequence 요소입니다.

xml:lang 속성은 다음 isd:isd 요소가 독립적인 중간 동기 문서 문서인 경우 지정되어야 합니다; 그렇지 않으면 지정할 수 있으며, 다음 요소의 기본 언어가 isd:isd 요소, 그 부모의 기본 언어와 다르면 지정하는 것이 좋습니다. 해당 부모는 isd:sequence 요소입니다. 값이 비어 있으면, 다음 문서 내의 콘텐츠에 적용되는 기본 언어가 없음을 의미합니다: 중간 동기 문서. 그렇지 않으면, 지정값은 적용되는 기본 언어를 나타냅니다.

version 속성은 다음 요소 유형에 있는 같은 이름의 속성과 동일한 구문 및 의미를 따릅니다: isd:sequence 요소 유형. version 속성은 루트 문서 요소가 아닌 isd:isd 요소에는 지정되어서는 안 됩니다. 즉, isd:sequence 요소의 자식 요소에는 지정되어서는 안 됩니다.

자식 ttp:profile 요소는 다음 isd:isd 요소가 독립적인 중간 동기 문서 문서인 경우 존재할 수 있으며, 이 경우 J.1.1 isd:sequence에 명시된 것과 동일한 제약 조건과 의미가 적용됩니다; 그렇지 않고 독립적인 문서가 아닌 경우, 자식 ttp:profile 요소가 존재해서는 안 됩니다.

J.1.3 isd:css

isd:css 요소는 동일한 계산된 스타일 집합을 공유하는 요소 컬렉션의 고유한 계산된 스타일 집합을 나타내는 데 사용됩니다. 구체적으로, 원본 TTML 문서의 각 요소 E가 선택되어, isd:region 요소로 복사된 경우를 생각합니다. 이 요소는 주어진 중간 동기 문서에 속합니다. 이때 계산된 스타일 집합, 즉 E의 CSS(E)가 결정되며, 해당 CSS(E)가 이미 지정되어 있지 않으면, 즉 기존 isd:css 요소에 의해 지정되어 있지 않으면, 고유한 식별자가 할당되고 새로운 isd:css 요소로 인스턴스화됩니다.

isd:css 요소는 자식으로 0개 이상의 metadata 요소를 허용합니다.

XML 표현 – 요소 정보 항목: isd:css
<isd:css
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  {임의의 스타일링 속성}
  콘텐츠: metadata*
</isd:css>

임의의 isd:css 자식 요소 쌍이 isd:isd 요소에 속하는 경우, 이를 S1과 S2라고 하면, S1에 지정된 스타일 집합은 S2에 지정된 스타일 집합과 같아서는 안 됩니다. 지정된 두 스타일 집합을 비교하려면, 스타일을 정규 순서로 배열한 다음 각 항목의 값이 같은지 비교해야 합니다. 여기서 정규 순서는 한정된 속성 이름의 순서를 따르며, 각 한정된 이름은 다음 튜플로 구성됩니다: <namespace URL, local name>. 이러한 튜플은 대소문자를 구분하는 사전식 문자열 순서에 따라 구성 요소별로 비교됩니다.

J.1.4 isd:region

isd:region 요소는 레이아웃 및 표시 영역과 해당 영역으로 선택된 콘텐츠를 나타내는 데 사용됩니다. 이 콘텐츠는 body 요소와 그 자손 콘텐츠 요소의 형식을 취합니다.

isd:region 요소는 자식으로 0개 이상의 metadata 요소를 허용하며, 그 뒤에 0개 이상의 animate 요소가 오고, 그 뒤에 정확히 하나의 body 요소가 옵니다.

XML 표현 – 요소 정보 항목: isd:region
<isd:region
  style = IDREF
  ttm:role = xsd:string
  xml:base = <uri>
  xml:id = ID
  xml:lang = xsd:string
  콘텐츠: metadata*, animate*, body
</isd:region>

isd:region 요소가 나타내는 영역의 계산된 스타일 집합이 다음 요소에 적용되는 초기 스타일 값의 집합과 다르면, region, style 속성을 지정해야 합니다. 이 속성은 isd:css 요소를 참조하며, 해당 요소는 영역의 계산된 스타일 집합을 지정합니다.

다음 제약 조건이 body 요소와 그 자손 요소에 적용됩니다:

  • animate 속성이 지정되지 않습니다;

  • begin 속성이 지정되지 않습니다;

  • dur 속성이 지정되지 않습니다;

  • end 속성이 지정되지 않습니다;

  • region 속성이 지정되지 않습니다;

  • timeContainer 속성이 지정되지 않습니다;

  • TT 스타일 네임스페이스에 속하는 어떤 속성도 지정되지 않습니다;

  • set 요소가 존재하지 않습니다;

  • 모든 유의미한 텍스트 노드는 span 요소의 자식이며, 해당 요소에는 다른 자식이 없습니다.

또한, body 요소 B와 그 각각의 자손 콘텐츠 요소 C에 대해, B 또는 각 C의 계산된 스타일 집합이 부모 요소의 계산된 스타일 집합과 같지 않으면, 해당 요소인 B 또는 C는 style 속성을 지정해야 합니다. 이 속성은 isd:css 요소를 참조하며, 해당 요소는 그 요소의 계산된 스타일 집합을 지정합니다.

J.2 ISD 매개변수 속성 집합

정의된 매개변수 속성의 다음 부분집합은 위에서 설명한 대로 isd:sequence 또는 isd:isd 요소와 함께 사용할 수 있습니다:

J.3 ISD 교환

중간 동기 문서 구문을 사용하는 구체적인 문서 인스턴스는 UTF-8 문자 인코딩을 사용하는 올바른 형식의 [XML 1.0] 문서로 인코딩되어야 합니다. 또한, 이러한 문서는 isd:sequence 요소 또는 isd:isd 요소를 루트 문서 요소로 지정해야 합니다.

구체적인 ISD 시퀀스 또는 ISD 인스턴스로 구성된 리소스를 교환하고, 미디어 유형을 사용하여 해당 리소스의 콘텐츠 유형을 식별하는 경우, application/ttml+xml 미디어 유형을 사용하는 것이 좋습니다. 이에 대해서는 [TTML1] 부록 C도 참조하십시오. 이 미디어 유형을 사용하는 경우, 선택적인 profile 매개변수를 지정해서는 안 되며, 지정된 경우에는 처리기가 이를 무시해야 합니다.

K 참고 문헌

이 부록은 규범적입니다.

데이터 인코딩
S. Josefsson, Base16, Base32 및 Base64 데이터 인코딩, RFC 4648, 2006년 10월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc4648.txt.)
GPS
전 지구 위치 결정 시스템, 미국 공군. (참조: https://www.gps.gov/technical/.)
JLREQ
Richard Ishida 외, 일본어 텍스트 레이아웃 요구 사항 W3C 작업 그룹 참고 문서, 2012년 4월 3일. (참조: http://www.w3.org/TR/2012/NOTE-jlreq-20120403/.)
미디어 쿼리
Florian Rivoal, 미디어 쿼리, W3C 권고안, 2012년 6월 19일. (참조: http://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619/.)
MIME
Ned Freed 및 Nathaniel Borenstein, 다목적 인터넷 메일 확장(MIME) 제1부: 인터넷 메시지 본문 형식, RFC 2045, 1996년 11월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc2045.txt.)
MIME 미디어 유형
Ned Freed 및 Nathaniel Borenstein, 다목적 인터넷 메일 확장(MIME) 제2부: 미디어 유형, RFC 2046, 1996년 11월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc2046.txt.)
PNG
David Duce, 편집, 이식 가능한 네트워크 그래픽(PNG) 명세(제2판), W3C 권고안, 2003년 11월 10일. (참조: https://www.w3.org/TR/2003/REC-PNG-20031110/.)
RELAX NG
ISO/IEC 19757-2:2003, 정보 기술 – 문서 스키마 정의 언어(DSDL) – 제2부: 정규 문법 기반 검증 – RELAX NG, 국제표준화기구(ISO).
루비
Masayasu Ishikawa 외, 루비 주석 W3C 권고안, 2001년 5월 31일. (참조: http://www.w3.org/TR/2001/REC-ruby-20010531/.)
SMIL 3.0
Dick Bultermann, 외, 동기화 멀티미디어 통합 언어(SMIL 3.0), W3C 권고안, 2008년 12월 1일. (참조: http://www.w3.org/TR/2008/REC-SMIL3-20081201/.)
SMPTE ST 12-1
SMPTE ST 12-1:2014, 시간 및 제어 코드, SMPTE 표준.
SRGB
IEC 61966-2-1:1999/AMD1:2003, 멀티미디어 시스템 및 장비 – 색 측정 및 관리 – 제2-1부: 색 관리 – 기본 RGB 색 공간 – sRGB, 국제전기기술위원회 (IEC).
SVG 1.1
Erik Dahlström 외, 편집, 확장 가능한 벡터 그래픽(SVG) 1.1 제2판, W3C 권고안, 2011년 8월 16일. (참조: http://www.w3.org/TR/2011/REC-SVG11-20110816/.)
TTML1
Glenn Adams 및 Pierre-Anthony Lemieux, 편집, 시간 지정 텍스트 마크업 언어 1(TTML1) (제3판), W3C 권고안, 2018년 11월 08일. (참조: https://www.w3.org/TR/2018/REC-ttml1-20181108/.)
TTML 프로파일 레지스트리
Glenn Adams 및 Mike Dolan, 편집, TTML 미디어 유형 정의 및 프로파일 레지스트리, W3C 작업 그룹 참고 문서. (참조: https://www.w3.org/TR/ttml-profile-registry/.)
UAAG
Ian Jacobs, Jon Gunderson 및 Eric Hansen, 편집, 사용자 에이전트 접근성 지침 1.0, W3C 권고안, 2002년 12월 17일. (참조: http://www.w3.org/TR/2002/REC-UAAG10-20021217/.)
UAX9
M. Davis, A. Lanin 및 A. Glass, 유니코드 양방향 알고리즘, 유니코드 컨소시엄, 2017년 5월 14일. (참조: http://www.unicode.org/reports/tr9/tr9-37.html.)
UAX14
Asmus Freytag, 줄 바꿈 속성, 유니코드 컨소시엄, 2005년 8월 29일. (참조: http://www.unicode.org/reports/tr14/tr14-17.html.)
URI
T. Berner-Lee, R. Fielding 및 L. Masinter, 통합 자원 식별자(URI): 일반 구문, RFC 3986, 2005년 1월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc3986.txt.)
UTC
권고안 TF.460-6, 표준 주파수 및 시각 신호 송출, 국제 전기통신연합, 전파통신 부문(ITU-R).
UTR50
K. Ishii, 유니코드 세로쓰기 텍스트 레이아웃, 유니코드 컨소시엄, 2016년 11월 23일. (참조: http://www.unicode.org/reports/tr50/tr50-17.html.)
WCAG
Ben Caldwell, 외, 편집, 웹 콘텐츠 접근성 지침(WCAG) 2.0, W3C 권고안, 2008년 12월 11일. (참조: http://www.w3.org/TR/2008/REC-WCAG20-20081211/.)
XLink 1.1
Steve DeRose, 외 XML 연결 언어(XLink) 버전 1.1, W3C 권고안, 2010년 5월 06일. (참조: http://www.w3.org/TR/2010/REC-xlink11-20100506/.)
XML 1.0
Tim Bray, 외 확장 가능한 마크업 언어(XML) 1.0(제5판), W3C 권고안, 2008년 11월 26일. (참조: http://www.w3.org/TR/2008/REC-xml-20081126/.)
XML Base
Jonathan Marsh 및 Richard Tobin, 편집, XML Base (제2판), W3C 권고안, 2009년 1월 28일. (참조: http://www.w3.org/TR/2009/REC-xmlbase-20090128/.)
XML ID
Jonathan Marsh, Daniel Veillard, Norman Walsh, 편집, xml:id 버전 1.0, W3C 권고안, 2005년 9월 09일. (참조: http://www.w3.org/TR/2005/REC-xml-id-20050909/.)
XML 정보 집합
John Cowan 및 Richard Tobin, 편집, XML 정보 집합 (제2판), W3C 권고안, 2004년 2월 04일. (참조: http://www.w3.org/TR/2004/REC-xml-infoset-20040204/.)
XML 네임스페이스 1.0
Tim Bray, 외 XML 1.0의 네임스페이스(제3판), W3C 권고안, 2009년 12월 8일. (참조: http://www.w3.org/TR/2009/REC-xml-names-20091208/.)
XML 스키마 제1부
Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, 편집, XML 스키마 제1부: 구조, W3C 권고안, 2004년 10월 28일. (참조: https://www.w3.org/TR/2004/REC-xmlschema-1-20041028/.)
XML 스키마 제2부
Paul Biron 및 Ashok Malhotra, XML 스키마 제2부: 데이터 유형, W3C 권고안, 2004년 10월 28일. (참조: https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/.)
XSL-FO 1.1
Anders Berglund, 확장 가능한 스타일시트 언어(XSL) 버전 1.1, W3C 권고안, 2006년 12월 05일. (참조: http://www.w3.org/TR/2006/REC-xsl11-20061205/.)

L 기타 참고 문헌(비규범적)

CC-DECODER-REQ
아날로그 텔레비전 수상기용 폐쇄 자막 디코더 요구 사항, 미국 연방규정집, 제47편, 제1권, 제79부, §79.101. (참조: http://www.gpo.gov/fdsys/pkg/CFR-2012-title47-vol4/pdf/CFR-2012-title47-vol4-sec79-101.pdf.)
CLREQ
Bobby Tung 외, 중국어 텍스트 레이아웃 요구 사항, W3C 작업 초안, 2017년 12월 29일. (참조: https://www.w3.org/TR/2017/WD-clreq-20171229/.)
CSS2
Bert Bos 외, 캐스케이딩 스타일 시트, 레벨 2 개정 1, W3C 권고안, 2011년 6월 07일. (참조: http://www.w3.org/TR/2011/REC-CSS2-20110607/.)
CSS 배경 및 테두리
Bert Bos, Elika Etamad 및 Brad Kemper, CSS 배경 및 테두리 모듈 레벨 3, W3C 후보 권고안, 2017년 10월 17일. (참조: https://www.w3.org/TR/2017/CR-css-backgrounds-3-20171017/.)
CSS 색
Tantek Çelik, Chris Lilley 및 L. David Baron, CSS 색 모듈 레벨 3, W3C 권고안, 2018년 6월 19일. (참조: https://www.w3.org/TR/2018/REC-css-color-3-20180619/.)
CSS Flex
Tab Atkins, Elika Etemad 및 Rossen Atanassov, CSS 유연한 박스 레이아웃 모듈 레벨 1, W3C 후보 권고안, 2018년 11월 19일. (참조: https://www.w3.org/TR/2018/CR-css-flexbox-1-20181119/.)
CSS 글꼴
John Daggett, Myles Maxfield 및 Chris Lilley, CSS 글꼴 모듈 레벨 3, W3C 권고안, 2018년 9월 20일. (참조: https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/.)
CSS 조각화
Rossen Atanassov 및 Elika Etemad, CSS 조각화 모듈 레벨 3, W3C 후보 권고안, 2018년 12월 04일. (참조: https://www.w3.org/TR/2018/CR-css-break-3-20181204/.)
CSS 루비
Elika Etemad 및 Koji Ishii, CSS 루비 레이아웃 모듈 레벨 1, W3C 작업 초안, 2014년 8월 05일. (참조: https://www.w3.org/TR/2014/WD-css-ruby-1-20140805/.)
CSS 텍스트
Elika Etamad, Koji Ishii 및 Florian Rivoal CSS 텍스트 모듈 레벨 3, W3C 작업 초안, 2019년 11월 13일. (참조: https://www.w3.org/TR/2019/WD-css-text-3-20191113/.)
CSS 텍스트 장식
Elika Etamad 및 Koji Ishii, CSS 텍스트 장식 모듈 레벨 3, W3C 후보 권고안, 2019년 8월 13일. (참조: https://www.w3.org/TR/2019/CR-css-text-decor-3-20190813/.)
CSS 변환
Simon Fraser, Dean Jackson, Theresa O'Connor 및 Dirk Schulze, CSS 변환 모듈 레벨 1, W3C 후보 권고안, 2019년 2월 14일. (참조: https://www.w3.org/TR/2019/CR-css-transforms-1-20190214/.)
CSS 쓰기 모드
Elika Etamad 및 Koji Ishii, CSS 쓰기 모드 레벨 3, W3C 권고안, 2019년 12월 10일. (참조: https://www.w3.org/TR/2019/REC-css-writing-modes-3-20191210/.)
CTA-608-E
EIA/CTA-608-E, 21번 주사선 데이터 서비스, EIA/CTA 표준, 소비자기술협회(CTA).
CTA-708-E
CTA-708-D, 디지털 텔레비전(DTV) 폐쇄 자막, CTA 표준, 소비자기술협회(CTA).
Data 스킴
L. Masinter, "data" URL 스킴, RFC 2397, 1998년 8월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc2397.txt.)
DCMES 1.1
더블린 코어 메타데이터 이니셔티브, 더블린 코어 메타데이터 요소 집합, 버전 1.1: 참조 설명. (참조: http://dublincore.org/documents/dces/.)
EBU-TT-D
EBU Tech 3380, EBU-TT-D 자막 배포 형식, 버전 1.0, 유럽방송연맹(EBU), 2015년 3월. (참조: https://tech.ebu.ch/publications/tech3380.)
EBU-TT-Live
EBU Tech 3370, EBU-TT 제3부 실시간 자막 응용, 버전 1.0, 유럽방송연맹(EBU), 2017년 5월. (참조: https://tech.ebu.ch/publications/tech3370.)
DVBSS
ETSI EN 300 743, 디지털 비디오 방송(DVB); 자막 시스템, 버전 1.5.1, ETSI, 2014년 1월. (참조: https://www.etsi.org/deliver/etsi_en/300700_300799/300743/01.05.01_60/en_300743v010501p.pdf.)
HTML
Anne van Kesteren, Domenic Denicola, Ian Hickson, Philip Jägenstedt 및 Simon Pieters, 편집, HTML 표준, WHATWG. 커밋 스냅샷(이 버전 또는 이후 버전을 사용하십시오). 2020년 1월 22일. (참조: https://html.spec.whatwg.org/commit-snapshots/2793ee4a461c6c39896395f1a45c269ea820c47e/.)
ISOBMFF TT
ISO/IEC 14496-30, 정보 기술 – 시청각 객체의 부호화 – 제30부: ISO 기반 미디어 파일 형식의 시간 지정 텍스트 및 기타 시각적 오버레이, 국제표준화기구(ISO).
ITU BT.2100-1
권고안 ITU-R BT.2100-1, 제작 및 국제 프로그램 교환에 사용되는 고동적 범위 텔레비전의 영상 매개변수 값
MPEG DASH
ISO/IEC 23009-1, 정보 기술 – HTTP를 통한 동적 적응형 스트리밍 (DASH), 국제표준화기구(ISO).
MPEG7-5
ISO/IEC 15938-5, 정보 기술 – 멀티미디어 콘텐츠 기술 인터페이스 – 제5부: 멀티미디어 기술 스킴, 국제표준화기구(ISO).
NSOriginal
Tim Bray, 외 XML의 네임스페이스, W3C 권고안, 1999년 1월 14일. (참조: http://www.w3.org/TR/1999/REC-xml-names-19990114/.)
NSState
Norman Walsh, 편집, XML 네임스페이스에서 이름의 취급, TAG 검토 결과, 2006년 1월 9일. (참조: http://www.w3.org/2001/tag/doc/namespaceState-2006-01-09.)
OFF
ISO/IEC 14496-22, 정보 기술 – 시청각 객체의 부호화 – 제22부: 개방형 글꼴 형식, 국제표준화기구(ISO).

참고:

이 명세의 무료 공개 버전은 다음을 참조하십시오: http://standards.iso.org/ittf/PubliclyAvailableStandards/c066391_ISO_IEC_14496-22_2015.zip. 관련 OpenType 명세의 Microsoft 버전은 다음을 참조하십시오: https://docs.microsoft.com/en-us/typography/opentype/spec/. OpenType은 Microsoft Corporation의 등록 상표입니다.

PQ PNG
Pierre-Anthony Lemieux, PNG 형식에서 ITU BT.2100 PQ EOTF 사용, W3C 작업 그룹 참고 문서, 2017년 9월 11일. (참조: https://www.w3.org/TR/png-hdr-pq/.)
QAF SG
Karl Dubost, 외, QA 프레임워크: 명세 지침, W3C 권고안, 2005년 8월 17일. (참조: http://www.w3.org/TR/qaframe-spec/.)
SMITH
Smith, Michael D.; Malia, Jason, 입체 3D 영상의 축소 현상 제어, Motion Imaging Journal, SMPTE , 제124권, 제3호, 50-58쪽, 2015년 4월 doi: 10.5594/m001513.
SMPTE RP 2052-11:2013
SMPTE RP 2052-11:2013, CTA-708 자막 데이터를 SMPTE-TT로 변환, SMPTE 권장 지침.
SMPTE ST 170
SMPTE ST 170:2004, 텔레비전 – 복합 아날로그 비디오 신호 – 스튜디오 응용을 위한 NTSC, SMPTE 표준.
SMPTE ST 2052-1
SMPTE ST 2052-1:2013, 시간 지정 텍스트 형식 (SMPTE-TT), SMPTE 표준.
SSML 1.0
Daniel Burnett, 외, 음성 합성 마크업 언어 (SSML) 버전 1.0, W3C 권고안, 2004년 9월 7일. (참조: http://www.w3.org/TR/2004/REC-speech-synthesis-20040907/.)
TTAF1-REQ
Glenn Adams, 편집, 시간 지정 텍스트(TT) 저작 형식 1.0 사용 사례 및 요구 사항, W3C 작업 그룹 참고 문서, 2006년 4월 27일. (참조: http://www.w3.org/TR/2006/NOTE-ttaf1-req-20060427/.)
WEBAUDIO
Paul Adenot, Raymond Toy, 편집, 웹 웹 오디오 API, W3C 후보 권고안, 2018년 9월 18일. (참조: https://www.w3.org/TR/2018/CR-webaudio-20180918/.)
XHTML 1.0
Steven Pemberton, 외, XHTML™ 1.0, 확장 가능한 하이퍼텍스트 마크업 언어(제2판), W3C 권고안, 2002년 8월 01일. (참조: http://www.w3.org/TR/2002/REC-xhtml1-20020801/.)
XML 지침
Scott Hollenbeck, 외, IETF 프로토콜 내에서 확장 가능한 마크업 언어(XML)를 사용하기 위한 지침, RFC 3470, 2003년 1월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc3470.txt.)
XML 미디어 유형
Makato Murata, Simon St. Laurent, Kan Khon, 편집, XML 미디어 유형, RFC 3023, 2001년 1월, IETF. (참조: http://www.rfc-editor.org/rfc/rfc3023.txt.)
XYZ
ISO 11664-1:2007, ISO/CIE 공동 표준: 측색 제1부. CIE 표준 측색 관찰자, 국제표준화기구(ISO). (참조: https://www.iso.org/standard/52495.html.)
XPROC
Norman Walsh, Alex Milowski, Henry S. Thompson, 편집, XProc: XML 파이프라인 언어, W3C 권고안, 2010년 5월 11일. (참조: https://www.w3.org/TR/xproc/.)
XSLT3
XSL 변환(XSLT) 버전 3.0, Michael Kay, 편집., W3C 권고안 2017년 6월 8일. (참조: https://www.w3.org/TR/xslt-30/.)
FINGER
Nick Doty, 편집, 웹 명세에서 브라우저 핑거프린팅 완화, W3C 관심 그룹 참고 문서, 2019년 3월 28일. (참조: https://www.w3.org/TR/2019/NOTE-fingerprinting-guidance-20190328/.)

M 요구 사항(비규범적)

시간 지정 텍스트 저작 형식(TTAF)의 배포 형식 교환 프로파일(DFXP)이라고도 알려진 시간 지정 텍스트 마크업 언어(TTML)는 [TTAF1-REQ]에서 정한 요구 사항의 하위 집합을 충족합니다. 다음 표는 이러한 요구 사항을 나열하고 이 명세에서 각 요구 사항이 충족되는 정도를 나타냅니다. 여기서 S는 요구 사항이 충족됨을, P는 요구 사항이 부분적으로 충족됨을, N은 요구 사항이 충족되지 않음을 나타냅니다.

표 M-1 – 요구 사항 충족도
ID 이름 상태 설명
R100 명세 형식 S
R101 명세 모듈성 S
R102 명세 구성 S
R103 핵심 및 주변부 S TT 확장 네임스페이스
R104 핵심의 발전 S TT 확장 네임스페이스
R105 핵심의 소유권 S TT 네임스페이스
R106 핵심의 전사성 S
R107 주변부의 발전 S TT 확장 네임스페이스
R108 주변부의 소유권 S 비 TT 네임스페이스
R109 변환 S 3GPP, QText, RealText, SAMI 지원
R110 스트리밍 가능한 변환 S 점진적 디코딩
R111 접근성 – 콘텐츠 S 대체 문서 인스턴스
R112 접근성 – 저작 시스템 S
R200 저작 가능성 S
R201 여러 자연어 S 대체 문서 인스턴스
R202 자연어 지원 범위 S 유니코드 4.0
R203 자연어 연결 세분성 S xml:lang 참조
R204 최소 문자 표현 가능성 S 유니코드 4.0
R205 내부 및 외부 텍스트 콘텐츠 P 내부만 지원
R206 마크업 연결 P 내부만 지원
R207 조건부 콘텐츠 S condition 참조
R208 흐름 텍스트 S
R209 논리적 흐름 텍스트 어휘 S
R210 표시용 흐름 텍스트 어휘 S 논리적 흐름 텍스트로부터의 암묵적 매핑.
R211 흐름 텍스트 어휘 간 관계 S
R212 흐름 텍스트 어휘 분리 N
R213 비흐름 텍스트 N
R214 비흐름 텍스트 어휘 N
R215 흐름 및 비흐름 텍스트의 혼합 N
R216 하이퍼링크 연결 S xlink 참조
R217 삽입된 그래픽 P image 및 아래 참고 1 참조.
R218 삽입되지 않은 그래픽 S image 참조
R219 삽입된 글꼴 S font 참조
R220 삽입되지 않은 글꼴 S font 참조
R221 기술 어휘 S ttm:agent, ttm:role 참조
R222 삽입된 오디오 S audio 참조
R223 삽입되지 않은 오디오 S audio 참조
R290 마크업 형식 S
R291 마크업 형식과 유니코드의 상호 작용 S
R292 외부 리소스 참조 S xlink 참조
R293 스키마 유효성 명세 S
R300 인라인 스타일링 S
R301 인라인 스타일링 형식 P 인라인 및 참조 스타일링
R302 외부 스타일링 N
R303 외부 스타일링 형식 N
R304 스타일링 우선순위 지정 S
R305 스타일 매개변수 – 청각 P 다음 참조: tta:gain, tta:pan, tta:pitch 및 tta:speak.
R306 스타일 매개변수 – 시각 P 지원 항목: 절대 위치, 배경색, 양방향 처리, 블록 진행 치수, 테두리(앞, 뒤, 시작, 끝), 색, 표시 없음, 인라인 블록 표시, 표시 정렬, 글꼴 패밀리, 글꼴 크기, 글꼴 스타일, 글꼴 굵기, 높이, 인라인 진행 치수, 줄 높이, 자동 줄 바꿈 옵션, 불투명도, 원점, 넘침, 패딩(앞, 뒤, 시작, 끝), 상대 위치, 텍스트 정렬, 텍스트 장식, 텍스트 그림자, 가시성, 공백 축소, 공백 처리, 너비, 쓰기 모드, z-index
R390 스타일 매개변수 대칭성 S
R391 스타일 매개변수 정의 S
R392 스타일 매개변수 단축형 S
R401 인라인 타이밍 S
R402 외부 타이밍 N
R403 동기화 매개변수 P begin, end, dur 지원
R404 동기화 매개변수 값 공간 P 오프셋 값, 미디어 마커 값(SMPTE 12M), 벽시계 값 지원
R405 시간 포함 관계 의미 P 순차, 병렬 지원
R500 애니메이션 모드 S animate, animation 및 set 참조
R501 스크롤 애니메이션 N
R502 강조 애니메이션 S <set tts:backgroundColor="..."/>
R503 페이드 전환 애니메이션 S <animate tts:opacity="..."/>
R504 애니메이션 스타일 매개변수 – 청각 P <animate tta:pan="..."/> , 다음에도 적용: tta:gain , tta:pitch 및 tta:speak
R505 애니메이션 스타일 매개변수 – 시각 P 애니메이션 지원 항목: 배경색, 테두리 색, 색, 표시, 불투명도, 원점, 가시성
N506 애니메이션 콘텐츠 S
R600 메타데이터 항목 연결 S metadata, Metadata.class 참조
R601 메타데이터 항목 구성 요소 P 이름, 값 지원
R602 메타데이터 항목 값 표현 P metadata 참조
R603 메타데이터 항목 확장성 S metadata 및 ttm:item 참조
R604 메타데이터 항목 검증 S metadata 참조
R690 더블린 코어 우선 사용 N ttm:copyright, ttm:desc, ttm:title 및 범용 ttm:item 사용

참고:

  1. R217에는 원문 텍스트의 존재에 관한 하위 요구 사항이 포함되어 있습니다. 그러나 이 명세는 저작자의 사용 방식에 제한을 두지 않으므로, 이 하위 요구 사항은 범위에서 제외되었습니다.

N 어휘 파생(비규범적)

이 부록은 TTML 어휘의 파생에 대한 정보를 제공하며, 요소와 속성의 파생을 각각 설명합니다.

N.1 요소 파생

표 N-1 – 요소의 첫 번째 열은 TTML 요소 어휘 항목을 지정합니다. 두 번째 열은 해당 어휘 항목의 기반이 되는 구문 및(또는) 의미 모델을 지정합니다. 세 번째 열은 모델이 표시된 경우 해당 모델을 정의하는 참고 문헌을 지정합니다. 네 번째 열은 파생에 대한 세부 사항을 지정합니다. 마지막 열은 파생의 성격을 설명하는 추가 참고 사항을 참조합니다.

파생의 세부 사항을 설명하는 네 번째 열에서는 속성의 추가 또는 제거를 나타내는 표기법을 사용합니다. 예를 들어, tt:div 요소의 파생에서 세부 사항 열에는 "-@class"가 포함됩니다. 이는 class 속성이 xhtml:div 모델 요소에서 사용하도록 지정되어 있지만 해당 TTML 요소에서는 사용하도록 지정되어 있지 않음을 나타냅니다. 반면, 세부 사항 열의 "+@begin"은 begin 속성이 xhtml:div 모델 요소에는 지정되어 있지 않지만 추가되었음을 나타냅니다.

표 N-1 – 요소
요소 모델 참고 문헌 세부 사항 참고 사항
tt:animate svg:animate [SVG 1.1] -@* (begin, calcMode, dur, end, fill, keySplines, keyTimes, repeatCount 제외); +style, +@tts:*, +@xml:id 3,6
tt:animation tt:styling [TTML1] 개념적 파생 4,12
tt:audio audio [HTML] -@accesskey, -@autoplay, -@class, -@contenteditable, -@controls, -@crossorigin, -@dir, -@draggable, -@hidden, -@id, -@lang, -@loop, -@muted, -@preload, -@spellcheck, -@tabindex, -@title, -@translate; +@animate, +@begin, +@clipBegin, +@clipEnd, +@condition, +@dur, +@end, +@format, +@style, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xml:id, +@xml:lang, +@xml:space 2,3
tt:body xhtml:body [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*; 콘텐츠 모델을 0개 이상의 구획(div) 자식으로 축소하고, 선택적인 메타데이터 및 애니메이션 자식으로 확장함 1,2
tt:br xhtml:br [XHTML 1.0] -@class, -@title; +@ttm:*, +@tts:*, +@xml:lang, +@xml:space; 다른 콘텐츠 어휘와의 일관성을 위해 선택적인 메타데이터 및 애니메이션 자식으로 콘텐츠 모델을 확장함 1,2
tt:chunk 없음 [Data Scheme], [Data Encodings] 개념적 파생 4
tt:data 없음 [Data Scheme], [Data Encodings] 개념적 파생 4
tt:div xhtml:div [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 콘텐츠 모델을 0개 이상의 문단(p) 자식으로 축소하고, 선택적인 메타데이터 및 애니메이션 자식으로 확장함 1,2,3
tt:font 없음
tt:head xhtml:head [XHTML 1.0] -@dir, -@lang, -@profile; +@id, +@xml:space; 콘텐츠 모델을 선택적인 메타데이터 자식, 그 뒤의 선택적인 스타일링 자식, 그 뒤의 선택적인 레이아웃 자식으로 변경함 1,3
tt:image img [HTML] -@accesskey, -@alt, -@class, -@contenteditable, -@crossorigin, -@dir, -@draggable, -@height, -@hidden, -@id, -@ismap, -@lang, -@longdesc -@referrerpolicy -@sizes, -@spellcheck, -@srcset, -@tabindex, -@title, -@translate; -@usemap, -@width; +@animate, +@begin, +@condition, +@dur, +@end, +@format, +@region, +@timeContainer, +@type, +@tta:*, +@tts:*, +@ttm:*, +@xlink:href, +@xlink:role, +@xlink:show, +@xlink:title, +@xml:id, +@xml:lang, +@xml:space 2,3
tt:initial 없음
tt:layout fo:simple-page-master [XSL-FO 1.1] 개념적 파생 4
tt:metadata svg:metadata [SVG 1.1] +@ttm:*, +@xml:lang, +@xml:space; 콘텐츠 모델이 혼합형이 아님(#PCDATA 없음) 3
tt:p xhtml:p [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 콘텐츠 모델을 0개 이상의 span 자식으로 축소하고, 선택적인 메타데이터 및 애니메이션 자식으로 확장함 1,2,3
tt:region fo:region-* [XSL-FO 1.1] 개념적 파생 4
tt:resources svg:defs 개념적 파생 4
tt:set svg:set [SVG 1.1] -@* (begin, dur, end 제외); +@tts:*, +@xml:lang, +@xml:space 3,6
tt:source source [HTML] -@media, @srcset, @sizes; +@condition, @format, @xml:space 3
tt:span xhtml:span [XHTML 1.0] -@class, -@dir, -@lang, -@on*, -@title; +@begin, +@dur, +@end, +@region, +@timeContainer, +@ttm:*, +@tts:*, +@xml:space; 콘텐츠 모델을 0개 이상의 #PCDATA 또는 줄 바꿈(br) 자식으로 축소하고, 선택적인 메타데이터 및 애니메이션 자식으로 확장함 1,2,3
tt:style 스타일 지정 [CSS2] 식별자가 부여된 스타일 속성 이름과 값 쌍의 집합을 XML로 표현하며, 다른 style 요소를 참조하여 다른 스타일을 선택적으로 포함함 7
tt:styling xhtml:style [XHTML 1.0] 스타일 지정 집합들의 집합을 XML로 표현하며, 각 집합은 style 자식 요소로 표현됨 1,7
tt:tt xhtml:html [XHTML 1.0] -@dir, -@lang; +@id, +@ttp:*, +@xml:space; body 및(또는) head를 선택 사항으로 허용하여 콘텐츠 모델을 축소함 1,8
ttm:actor mpeg7:Creator [MPEG7-5] 개념적 파생 4
ttm:agent mpeg7:Agent [MPEG7-5] 개념적 파생 4
ttm:copyright mpeg7:CopyrightString [MPEG7-5] 개념적 파생 4
ttm:desc svg:desc [SVG 1.1] -@class, -@style 2,9
ttm:item meta [HTML] 개념적 파생 4
ttm:name mpeg7:Name [MPEG7-5] 개념적 파생 4
ttm:title svg:title [SVG 1.1] -@class, -@style 2,9
ttp:extension @requiredExtensions [SVG 1.1] 개념적 파생 10
ttp:extensions @requiredExtensions [SVG 1.1] 개념적 파생 10
ttp:feature @requiredFeatures [SVG 1.1] 개념적 파생 10
ttp:features @requiredFeatures [SVG 1.1] 개념적 파생 10
ttp:profile @baseProfile [SVG 1.1] 개념적 파생 11

참고:

  1. 파생은 [XHTML 1.0], §A.1에 정의된 엄격한 DTD를 기준으로 표시됩니다.

  2. class 속성은 사실상 style 속성으로 대체됩니다. 이 속성은 인라인 스타일을 지정하는 대신, 하나 이상의 style 요소를 간접적으로 참조하며, 이 요소들은 스타일 지정 집합들의 집합을 정의합니다.

  3. xml:lang 및 xml:space 속성은 모든 요소 유형에 정의되어 있으며, 이는 외부 네임스페이스 요소의 컨텍스트에서도 해당 속성의 상속 의미가 작동하도록 지원하기 위한 것입니다.

  4. 파생은 개념적(관념적)인 것에 한정됩니다.

  5. 삭제됨

  6. attributeName 및 to 속성은 svg:set에서 사용되지만, 여기서는 대상 속성의 이름과 값을 직접 표현하는 tts:* 속성으로 대체됩니다.

  7. CSS 스타일 지정 구문은 TT 스타일 네임스페이스에 정의된 속성을 사용하여 XML로 매핑됩니다.

  8. xml:id 속성은 모든 요소 유형에서 사용하도록 정의됩니다.

  9. style 속성은 10.2.1 style에 나열된 요소 유형에서 지원됩니다.

  10. @requiredExtensions 및 @requiredFeatures를 svg:svg 요소에서 사용하는 방식에서 파생되었지만, 선택성의 개별 지정을 지원하도록 확장되었습니다.

  11. @baseProfile 및 @version을 svg:svg 요소에서 사용하는 방식에서 파생되었습니다.

  12. 기존 tt:styling 요소에서 개념적으로 파생되었습니다. 이 요소는 스타일링 지정을 위한 범용 컨테이너이지만, 여기서는 애니메이션 지정을 정의하는 데 사용됩니다.

N.2 속성 파생

표 N-2 – 속성의 첫 번째 열은 TTML 속성 어휘 항목을 지정합니다. 두 번째 열은 해당 어휘 항목의 기반이 되는 구문 및(또는) 의미 모델을 지정합니다. 세 번째 열은 모델이 표시된 경우 해당 모델을 정의하는 참고 문헌을 지정합니다. 네 번째 열은 파생에 대한 세부 사항을 지정합니다. 마지막 열은 파생의 성격을 설명하는 추가 참고 사항을 참조합니다.

파생의 세부 사항을 설명하는 네 번째 열에서는 속성 값의 추가 또는 제거를 나타내는 표기법을 사용합니다. 예를 들어, timeContainer 속성의 파생에서 세부 사항 열에는 "-excl"이 포함됩니다. 이는 excl 값이 timeContainer 모델 속성에서 사용하도록 지정되어 있지만 해당 TTML 속성에서는 사용하도록 지정되어 있지 않음을 나타냅니다. 마찬가지로, 세부 사항 열의 "+value"는 속성의 값이 확장되어 value를 포함하게 되었음을 나타냅니다.

아래에는 둘 이상의 TTML 요소 유형에서 사용하도록 지정된 속성만 나열됩니다. 특정 TTML 요소 유형에 고유하게 정의된 요소별 네임스페이스 속성은 아래에 나열되지 않으며, 위의 표 N-1 – 요소에서 설명한 해당 요소 유형의 파생에 포함되는 것으로 간주됩니다.

스타일 속성의 파생은 아래에 별도로 나열됩니다.

표 N-2 – 속성
속성 모델 참고 문헌 세부 사항 참고 사항
begin begin [SMIL 3.0] 참고 사항 참조 1,2,3
dur dur [SMIL 3.0] 참고 사항 참조 1,2,3
end end [SMIL 3.0] 참고 사항 참조 1,2,3
region master-reference [XSL-FO 1.1] 개념적 파생
style class [CSS2] 하나 이상의 스타일 지정을 직접 역참조함
timeContainer timeContainer [SMIL 3.0] -excl, -none; 기본 속성 값 없음 4
ttm:agent 없음 콘텐츠의 행위자를 지정하는 데 사용됨
ttm:role 없음 콘텐츠의 역할을 지정하는 데 사용됨
ttp:cellResolution 없음 셀 기반 좌표를 위한 균일한 격자 해상도를 표현함
ttp:clockMode 없음 시간 표현식의 해석 방법을 결정함
ttp:frameRate 없음 정수 프레임률을 표현함
ttp:frameRateMultiplier 없음 정수가 아닌 유리수 프레임률을 표현하는 데 사용됨
ttp:markerMode 없음 마커 연속성 의미를 표현함
ttp:pixelAspectRatio 없음 루트 컨테이너의 픽셀 종횡비를 표현함
ttp:profile 없음 문서 인스턴스에서 사용하는 TTML 프로파일을 표현함
ttp:dropMode 없음 프레임 계수(드롭) 모드를 표현함
ttp:subFrameRate 없음 서브프레임률을 표현함
ttp:tickRate 없음 틱 기반 시간 표현식을 해석하는 데 사용됨
ttp:timeBase 없음 시간 표현식의 의미를 해석하는 데 사용됨
xml:id xml:id [XML ID] 모델을 준수함
xml:lang xml:lang [XML 1.0] 모델을 준수함
xml:space xml:space [XML 1.0] 참고 사항 참조 5

참고:

  1. 다음 중 하나를 나타내는 시계 값을 표현하는 것으로 제한됩니다. 각 경우는 ttp:timeBase 속성으로 표현되는 매개변수가 media, smpte, 또는 clock인지에 각각 대응합니다: (1) 미디어 타임라인에 연결된 암묵적 동기화 기준으로부터의 오프셋, (2) 암묵적 미디어 마커의 발생을 나타내는 이벤트 시간, 또는 (3) 벽시계 시간.

  2. [SMIL 3.0]의 Clock-value 구문을 다음과 같이 구문적으로 축소하고 확장합니다: (1) 음수가 아닌 Full-clock-value 또는 Timecount-value가 필요합니다; (2) Full-clock-value인 경우, hours는 두 자리 이상이어야 합니다; (3) Timecount-value인 경우, metric을 지정해야 합니다; (4) m을 min 단위의 별칭으로 사용하여 분을 나타냅니다; (5) 각각 프레임과 틱을 나타내는 f 및 t 단위를 추가합니다; (6) 선택적인 Fraction을 Full-clock-value에서 프레임 수 또는 프레임 수와 서브프레임 수로 지정하는 대체 표현을 추가합니다.

  3. 시간 표현식의 해석은 다음 속성으로 표현되는 매개변수에 의해 추가로 제한됩니다: ttp:clockMode, ttp:dropMode, ttp:frameRate, ttp:frameRateMultiplier, ttp:markerMode, ttp:subFrameRate, ttp:tickRate 및 ttp:timeBase.

  4. 지정되지 않은 경우, 병렬(par) 컨테이너 의미가 12.2.4 timeContainer에 지정된 요소 유형에 적용됩니다.

  5. 루트 요소에서 기본 속성 값은 default로 지정되며, 이는 공백 정규화로 정의됩니다. 보존 및 기본 정규화의 의미는 표시 의미의 관점에서 8.2.10 xml:space에 정의되어 있습니다.

N.2.1 스타일 속성 파생

이 절은 각 스타일 속성이 파생되었거나 동등한 것으로 간주될 수 있는 참고 문헌과 해당 참조 원문과의 차이점을 나열합니다. TTML 스타일 속성을 동등한 CSS 속성으로 매핑하고, 가능한 경우 XSL 속성으로 매핑하기 위한 정보성 참고 자료로 사용할 수 있습니다. 다른 매핑도 가능하며, 예를 들어 [SVG 1.1]로 매핑할 수 있습니다.

CSS와의 동등성은 각 중간 동기 문서가 명시된 스타일 속성이 요소에 부여된 동등한 [HTML] DOM 구조로 매핑된다고 가정합니다.

참고:

TTML에서 스타일 속성 이름과 값은 lowerCamelCase 명명 규칙을 사용하도록 정규화됩니다.

N.2.1.1 tts:backgroundClip
참고 문헌 [CSS Backgrounds and Borders], §3.7
모델 background-clip
값 값이 직접 매핑됩니다.
참고 사항 없음
N.2.1.2 tts:backgroundColor
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.8.2 [CSS2], §14.2.1
모델 background-color background-color
값 -inherit 값이 직접 매핑됩니다
참고 사항 모델의 명명된 색상 하위 집합을 사용하며, 다음 두 별칭을 추가합니다: magenta는 fuchsia의 별칭이고, cyan은 aqua의 별칭입니다. 모델의 명명된 색상 하위 집합을 사용하며, 다음 두 별칭을 추가합니다: magenta는 fuchsia의 별칭이고, cyan은 aqua의 별칭입니다. 명명된 색상 orange는 지원되지 않습니다.
N.2.1.3 tts:backgroundExtent
참고 문헌 [CSS Backgrounds and Borders], §3.9
모델 background-size
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.4 tts:backgroundImage
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.8.3 [CSS2], §14.2.1
모델 background-image background-image
값 -inherit -inherit
참고 사항 없음 없음
N.2.1.5 tts:backgroundOrigin
참고 문헌 [CSS Backgrounds and Borders], §3.8
모델 background-origin
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.6 tts:backgroundPosition
참고 문헌 [CSS2], §14.2
모델 background-position
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.7 tts:backgroundRepeat
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.8.4 [CSS2], §14.2.1
모델 background-repeat background-repeat
값
  • -inherit,

  • repeatX는 repeat-x로 매핑됩니다,

  • repeatY는 repeat-y로 매핑됩니다,

  • noRepeat는 no-repeat로 매핑됩니다.

  • -inherit,

  • repeatX는 repeat-x로 매핑됩니다,

  • repeatY는 repeat-y로 매핑됩니다,

  • noRepeat는 no-repeat로 매핑됩니다.

참고 사항 없음 없음
N.2.1.8 tts:border
참고 문헌 [XSL-FO 1.1], §7.31.3 및 [CSS Backgrounds and Borders], §4 및 §5
모델 border
값 -inherit
참고 사항 없음
N.2.1.9 tts:bpd
참고 문헌 height 속성의 정의: [XSL-FO 1.1], §7.15.6 및 [CSS2], §10.5
모델 모델 삽입
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.10 tts:color
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.18.1 [CSS2], §14.1
모델 color color
값 -inherit -inherit
참고 사항 모델의 명명된 색상 하위 집합을 사용하며, 다음 두 별칭을 추가합니다: magenta는 fuchsia의 별칭이고, cyan은 aqua의 별칭입니다. 모델의 명명된 색상 하위 집합을 사용하며, 다음 두 별칭을 추가합니다: magenta는 fuchsia의 별칭이고, cyan은 aqua의 별칭입니다. 명명된 색상 orange는 지원되지 않습니다.
N.2.1.11 tts:direction
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.29.1 [CSS Writing Modes], §2.1
모델 direction direction
값 -inherit. 특수 상속 의미가 적용됩니다. 특수 상속 의미가 적용됩니다.
참고 사항 없음` 없음`
N.2.1.12 tts:disparity

파생되지 않았으며, 즉 이 명세에서 도입되었습니다.

참고:

tts:disparity의 계산값은 [DVBSS]에 정의된 시차 이동 값의 절반에 해당합니다.

N.2.1.13 tts:display
참고 문헌 [CSS2], §9.2.4
모델 display
값 auto, none만 사용
참고 사항 없음
N.2.1.14 tts:displayAlign
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.14.4 [CSS Flex], §8.2
모델 display-align justify-content (아래 참고 사항 참조)
값 -inherit, +justify
  • before는 flex-start로 매핑됩니다

  • center는 center로 매핑됩니다

  • after는 flex-end로 매핑됩니다

  • justify는 space-between으로 매핑됩니다

참고 사항 없음 CSS는 다양한 레이아웃을 제공합니다. 여기에서는 다음과 같이 tts:displayAlign 속성과 동등한 의미를 제공하는 레이아웃 하나를 설명합니다:
  • 플렉스 레이아웃을 사용하고, 주축을 위에서 아래로 향하는 수직 방향으로 설정합니다: display: flex; flex-direction: column; position: absolute;

  • tts:displayAlign을 justify-content로 매핑합니다.

N.2.1.15 tts:extent
참고 문헌 [XSL-FO 1.1], §7.15.6 및 §7.15.14
모델 width, height
값 값이 직접 매핑됩니다
참고 사항 단축 속성
N.2.1.16 tts:fontFamily
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.9.2 [CSS2], §15.3
모델 font-family font-family
값 -inherit. 일반 패밀리 이름의 하위 집합을 사용하고 확장함 -inherit. 일반 패밀리 이름의 하위 집합을 사용하고 확장함
참고 사항 CSS와 마찬가지로 목록 구분자 주변에 공백을 포함할 수 있습니다. 없음
N.2.1.17 tts:fontKerning
참고 문헌 [CSS Fonts], §6.3
모델 font-kerning
값 -auto
참고 사항 없음
N.2.1.18 tts:fontSelectionStrategy

참고 문헌 [XSL-FO 1.1], §7.9.3.
모델 font-selection-strategy
값 -inherit, character는 character-by-character로 매핑됩니다
선택 기준이 확장됩니다. 없음.
N.2.1.19 tts:fontShear
참고 문헌 [CSS Transforms], §9.1
모델 skewX() 및 skewY() 2D 변환 함수
값
  • skewX()는 인라인 진행 차원이 X축일 때 적용됩니다;

  • skewY()는 인라인 진행 차원이 Y축일 때 적용됩니다;

  • 백분율 값은 도 단위의 각도로 매핑해야 합니다.

참고 사항 유사한 변환 함수를 [SVG 1.1]에서 사용할 수 있습니다
N.2.1.20 tts:fontSize
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.9.4. [CSS2], §15.7.
모델 font-size font-size
값 -inherit, -<absolute-size>, -<relative-size>. -inherit, -<absolute-size>, -<relative-size>.
참고 사항
  • 특수 상속 의미가 적용됩니다.

  • 크기를 백분율일 수도 있는 길이 지정으로 제한합니다;

  • 글리프의 EM 사각형에 대해 수평 및 수직 배율을 별도로 지정할 수 있도록 선택적인 두 번째 길이(또는 백분율)를 추가합니다;

  • 두 번째 길이 구성 요소를 추가하여 글꼴의 너비와 높이를 독립적으로 지정할 수 있게 한 것은 TTML에서 도입한 확장입니다.

  • 특수 상속 의미가 적용됩니다.

  • 크기를 백분율일 수도 있는 길이 지정으로 제한합니다;

  • 글리프의 EM 사각형에 대해 수평 및 수직 배율을 별도로 지정할 수 있도록 선택적인 두 번째 길이(또는 백분율)를 추가합니다;

  • 두 번째 길이 구성 요소를 추가하여 글꼴의 너비와 높이를 독립적으로 지정할 수 있게 한 것은 TTML에서 도입한 확장입니다.

N.2.1.21 tts:fontStyle
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.9.7 [CSS2], §15.4
모델 font-style font-style
값 -inherit, -backslant -inherit
참고 사항 없음 없음
N.2.1.22 tts:fontVariant
참고 문헌 [CSS Fonts], §6.11
모델 font-variant-east-asian 및 font-variant-position 및 font-feature-settings
값
  • font-variant-east-asian: 다음으로 한정 full-width, ruby

  • font-variant-position: normal, sub, super

  • font-feature-settings: 다음으로 한정 hwid

참고 사항 없음
N.2.1.23 tts:fontWeight
참고 문헌 [XSL-FO 1.1], §7.9.9 [CSS2], §15.6
모델 font-weight font-weight
값 -inherit, -bolder, -lighter, -<number> -inherit, -initial, -bolder, -lighter, -<number>, -unset
참고 사항 없음 없음
N.2.1.24 tts:ipd
참고 문헌 width 속성의 정의: [XSL-FO 1.1], §7.15.14 및 [CSS2], §10.2
모델 모델 삽입
값 값 삽입
참고 사항 참고 사항 삽입
N.2.1.25 tts:letterSpacing
참고 문헌 [CSS Text], §8.2
모델 letter-spacing
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.26 tts:lineHeight

줄 쌓기 의미는 CSS 줄 박스 쌓기 전략과 일치하도록 의도되었습니다.

XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.16.4 [CSS2], §10.8
모델 line-height line-height
값 -inherit, -<number>, -<space> -inherit, -<number>, -<space>, -calc, -initial, -unset
참고 사항 이 명세는 줄의 할당 사각형이 per-inline-height-rectangle과 일치하도록 의도합니다. 이는 [XSL-FO 1.1], §4.5에 정의되어 있으며, 즉 CSS 방식의 줄 박스 쌓기 전략을 사용한다는 의미입니다. 없음
N.2.1.27 tts:luminanceGain

파생되지 않았으며, 즉 이 명세에서 도입되었습니다.

N.2.1.28 tts:lineShear
참고 문헌 [CSS Transforms], §9.1
모델 skewX() 및 skewY() 2D 변환 함수
값
  • skewX()는 인라인 진행 차원이 X축일 때 적용됩니다;

  • skewY()는 인라인 진행 차원이 Y축일 때 적용됩니다;

  • 백분율 값은 도 단위의 각도로 매핑해야 합니다.

참고 사항 유사한 변환 함수를 [SVG 1.1]에서 사용할 수 있습니다
N.2.1.29 tts:opacity
참고 문헌 [CSS Color], §3.2
모델 opacity
값 -inherit
참고 사항 없음
N.2.1.30 tts:origin
참고 문헌 [XSL-FO 1.1]
모델 top, left
값 값이 직접 매핑됩니다
참고 사항 단축 속성
N.2.1.31 tts:overflow
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.21.2 [CSS2], §11.1.1
모델 overflow overflow
값 -inherit, -auto, -error-if-overflow -inherit, -auto, -initial, -scroll, -unset
참고 사항 없음 없음
N.2.1.32 tts:padding
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.31.15 [CSS2], §8.4
모델 padding padding
값 -inherit. 개별 단축 값은 쓰기 모드에 상대적인 패딩 값으로 매핑되며, 이는 [XSL-FO 1.1], §7.8.31, 7.8.32, 7.8.33 및 7.8.34에 정의되어 있습니다 -calc, -inherit, -unset
참고 사항 절대적인 패딩 속성 대신 쓰기 모드에 상대적인 패딩 속성으로 표현됩니다. TTML 및 XSL의 가장자리 기술자는 추상적인 흐름 상대 가장자리 기술자로 매핑되며, 이는 [CSS Writing Modes], §6.2에 정의되어 있습니다:
  • before는 block-start로 매핑됩니다

  • end는 inline-end로 매핑됩니다

  • after는 block-end로 매핑됩니다

  • start는 inline-start로 매핑됩니다

이러한 추상적인 가장자리 기술자는 다시 물리적 가장자리로 매핑되며, 그 매핑은 [CSS Writing Modes] §6.4에 정의되어 있습니다.
N.2.1.33 tts:position
참고 문헌 [CSS Backgrounds and Borders], §3.6
모델 background-position
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.34 tts:ruby
참고 문헌 [Ruby] 및 [CSS Ruby].
모델 ruby-*
값 참고 사항 및 명세 본문을 참조하십시오.
참고 사항 자세한 내용은 [JLREQ], §3.3도 참조하십시오. 또는 다음의 루비 마크업으로 매핑할 수도 있습니다: [HTML].
N.2.1.35 tts:rubyAlign
참고 문헌 [CSS Ruby], §4.3
모델 ruby-align
값 +end, +withBase. 이 스타일 속성의 의미는 이 명세에서 확장됩니다.
참고 사항 참고 문헌에 제시된 예제 및 예제 렌더링이 적용됩니다.
N.2.1.36 tts:rubyPosition
참고 문헌 [CSS Ruby], §4.1
모델 모델 삽입
값 값 삽입
참고 사항 참고 문헌에 제시된 예제 및 예제 렌더링은 이 명세에 정의된 매핑을 반영하여 적용됩니다.
N.2.1.37 tts:rubyReserve

파생되지 않았으며, 즉 이 명세에서 도입되었습니다.

N.2.1.38 tts:shear
참고 문헌 [CSS Transforms], §9.1
모델 skewX() 및 skewY() 2D 변환 함수
값
  • skewX()는 인라인 진행 차원이 X축일 때 적용됩니다;

  • skewY()는 인라인 진행 차원이 Y축일 때 적용됩니다;

  • 백분율 값은 도 단위의 각도로 매핑해야 합니다.

참고 사항 유사한 변환 함수를 [SVG 1.1]에서 사용할 수 있습니다
N.2.1.39 tts:showBackground
참고 문헌 [SMIL 3.0], §7.4.2
모델 showBackground
값 -inherit
참고 사항 없음
N.2.1.40 tts:textAlign
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.16.9 [CSS2], §16.2
모델 text-align text-align
값 -inherit -inherit, +start, +end
참고 사항 text-align-last를 "relative"로 설정해야 합니다 TTML은 쓰기 모드에 따라 달라지는 값 start 및 end를 추가합니다. 이 값들은 추상적인 흐름 상대 방향으로 간주할 수 있으며, 물리적 방향으로 [CSS Writing Modes] §6.4에 따라 매핑할 수 있습니다. 자세한 내용은 tts:padding CSS 파생을 참조하십시오.
N.2.1.41 tts:textCombine
참고 문헌 [CSS Writing Modes], §9.1
모델 text-combine-upright
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.42 tts:textDecoration
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.17.4 [CSS2], §16.3.1
모델 text-decoration text-decoration
값 -blink, -inherit (키워드), -no-blink -blink, -inherit (키워드), +noUnderline, +noLineThrough, +noOverline. lineThrough는 line-through로 매핑됩니다.
참고 사항 상속 가능한 것으로 정의되며, 특수 상속 의미가 적용됩니다. 상속 가능한 것으로 정의되며, 특수 상속 의미가 적용되고, 밑줄의 위치를 결정하기 위한 XSL 의미가 적용됩니다. 또한, none 값의 의미는 CSS의 같은 이름을 가진 값과 다릅니다. TTML에서는 이 값이 noUnderline, noLineThrough 및 noOverline과 동등한 것으로 정의되기 때문입니다. 이 값들은 모두 CSS에 정의되어 있지 않으며, TTML에서 상속된 장식을 제거하는 의미를 가집니다. 이 기능은 CSS에서 (직접적으로) 지원되지 않습니다.
N.2.1.43 tts:textEmphasis
참고 문헌 [CSS Text Decoration], §3
모델
값 auto를 제외한 값은 직접 매핑됩니다. auto의 의미는 쓰기 모드에 따라 달라집니다.
참고 사항 없음
N.2.1.44 tts:textOrientation
참고 문헌 [UTR50] 및 [CSS Writing Modes], §5.1
모델 text-orientation
값 -inherit, -sideways-left, -sideways-right, -use-glyph-orientation
참고 사항 없음
N.2.1.45 tts:textOutline
참고 문헌 [XSL-FO 1.1]
모델 text-shadow
값 -inherit (키워드), 상속 가능한 것으로 정의됨
참고 사항 두 개 대신 하나의 길이만 지정하며, 이 길이는 글리프 윤곽선의 명목상 가장자리에서 윤곽선 위의 한 점에 수직인 방향으로 외곽선 효과까지의 거리를 정의합니다. 글꼴 크기에 상대적인 외곽선 효과를 표현하기 위해 백분율 길이도 추가되었습니다. 외곽선 효과는 바깥쪽 닫힌 윤곽선의 외부와 안쪽 닫힌 윤곽선의 내부 모두에 그려지도록 의도되었습니다.
N.2.1.46 tts:textShadow
참고 문헌 [CSS Text Decoration], §4
모델 text-shadow
값 값이 직접 매핑됩니다
참고 사항 없음
N.2.1.47 tts:unicodeBidi
참고 문헌 [XSL-FO 1.1], §7.29.6 및 [CSS Writing Modes], §2.2
모델 unicode-bidi
값 -inherit,+isolate
참고 사항 isolate를 [CSS Writing Modes]에서 가져와 추가함
N.2.1.48 tts:visibility
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.30.17 [CSS2], §11.2
모델 visibility visibility
값 -inherit, -collapse -inherit, -collapse
참고 사항 없음 없음
N.2.1.49 tts:wrapOption
참고 문헌 [XSL-FO 1.1], §7.16.13
모델 wrap-option
값 -inherit
참고 사항 없음
N.2.1.50 tts:writingMode
참고 문헌 [XSL-FO 1.1], §7.29.7
모델 writing-mode
값 -inherit, -bt-lr, -bt-rl, -lr-bt, -rl-bt, -lr-alternating-rl-bt, -lr-alternating-rl-tb, -lr-inverting-rl-bt, -lr-inverting-rl-tb, -tb-lr-in-lr-pairs
참고 사항 없음
N.2.1.51 tts:zIndex
XSL 파생 CSS 파생
참고 문헌 [XSL-FO 1.1], §7.30.18 [CSS2], §9.9.1
모델 z-index z-index
값 -inherit -inherit
참고 사항 없음 없음

O QA 프레임워크 준수(비규범적)

이 부록은 다음 문서에 정의된 요구 사항 및 지침에 대한 이 명세의 준수 여부를 명시합니다: QA 프레임워크 명세 지침, [QAF SG].

O.2 지침

표 O-2 – QA 프레임워크 지침 점검표
지침 예 아니요 해당 없음 참고 사항
권장 실천 01: 적합성 조항에서 명세의 적합성 모델을 정의하십시오. 예
권장 실천 02: 적합성 조항에서 규범적 콘텐츠와 정보성 콘텐츠를 구별하는 방법을 명시하십시오. 예
권장 실천 03: 적합성 주장에 사용할 문구를 제공하십시오. 예
권장 실천 04: 구현 적합성 명세서 양식을 제공하십시오. 아니요
권장 실천 05: 유효한 적합성 주장의 일부로 구현 적합성 명세서를 요구하십시오. 예
권장 실천 06: 예제, 사용 사례 및 그래픽을 제공하십시오. 예
권장 실천 07: 예제 코드 또는 테스트를 작성하십시오. 예
권장 실천 08: 규범적 참조를 통해 요구 사항을 부과할 때 적합성 의존성을 다루십시오. 예 1
권장 실천 09: 익숙하지 않은 용어를 본문에서 정의하고, 그 정의들을 용어집 절에 모으십시오. 예
권장 실천 10: 이미 정의된 용어는 정의를 변경하지 않고 사용하십시오. 예 2
권장 실천 11: 가능한 경우 형식 언어를 사용하십시오. 예
권장 실천 12: 테스트 단언을 작성하십시오. 아니요 3
권장 실천 13: 타당한 경우 기술을 세분화하십시오. 예
권장 실천 14: 기술에 프로파일을 사용하는 경우, 새 프로파일을 만드는 규칙을 정의하십시오. 예
권장 실천 15:타당한 경우 선택적 기능을 사용하십시오. 예
권장 실천 16: 선택적 기능을 명확하게 식별하십시오. 예
권장 실천 17: 선택적 기능에 대한 제한이나 제약을 표시하십시오. 예
권장 실천 18: 확장성이 허용되는 경우, 확장 메커니즘을 정의하십시오. 예
권장 실천 19: 확장 작성자에게 적합성을 방해하지 않는 확장을 만들도록 주의를 주십시오. 예
권장 실천 20: 알 수 없는 확장에 대한 오류 처리를 정의하십시오. 예 4
권장 실천 21: 사용이 권장되지 않는 기능의 사용을 피하는 방법을 설명하십시오. 예
권장 실천 22: 폐기된 기능을 식별하십시오. 해당 없음 5
권장 실천 23: 오류 처리 메커니즘을 정의하십시오. 예

참고:

  1. 외부 명세를 규범적으로 참조할 때는 구체적인 조항이나 절을 인용합니다.

  2. N 어휘 파생도 참조하십시오.

  3. 테스트 단언과 테스트 모음은 제안 권고안(PR) 단계에 진입하기 전에 제공됩니다.

  4. 3.2 처리기 적합성의 기준 #3 및 TTML 추상 문서 인스턴스의 정의를 참조하십시오.

  5. 이 TTML 버전에서 폐기된 기능은 없습니다.

P 보안 및 개인정보 보호 고려 사항(비규범적)

P.1 구체적 인코딩으로 XML 사용

[XML 1.0]을 시간 지정 텍스트 문서 인스턴스의 구체적 인코딩으로 사용하는 경우, [XML Media Types] 및 [XML Guidelines]에 명시된 보안 고려 사항이 적용됩니다.

참고:

XML 엔티티는 축소 XML 정보 집합, 즉 시간 지정 텍스트 문서 인스턴스의 해당 정보 집합에 포함되지 않습니다; 그럼에도 불구하고, 구현은 재귀적 엔티티 확장에 대한 보호 기능을 제공하거나 TTML 처리기에서 엔티티 확장을 완전히 방지하는 것이 권장됩니다.

P.2 문서 처리

시간 지정 텍스트 문서 인스턴스는 콘텐츠 처리기에 의해 어떤 방식으로든 처리되도록 의도됩니다. 이 명세는 이러한 처리기가 시간 지정 텍스트 문서 인스턴스를 적합하게 처리한다는 것의 의미를 정의하지만, 해당 처리기의 실제 구현은 이 명세의 범위 밖입니다.

P.3 리소스 가져오기

이 명세는 시간 지정 텍스트 문서 인스턴스가 오디오, 글꼴, 이미지 및 유형이 지정되지 않은(범용) 데이터 리소스를 포함한 외부 리소스를 참조할 수 있도록 하는 메커니즘을 정의합니다. 이러한 리소스를 가져오는 작업과 시간 지정 텍스트 문서 인스턴스의 구체적 표현을 가져오는 작업은 전적으로 콘텐츠 처리기의 제어하에 있습니다. 따라서 이러한 리소스에 대한 접근을 허용하거나 제한하도록 설계된 모든 제어 수단도 이 명세의 범위 밖입니다.

외부 리소스를 가져올 때 콘텐츠 처리기는 잠재적 CORS 요청 생성을 수행해야 하는지 판단하는 것이 좋습니다. 이는 [HTML] §2.6, 리소스 가져오기에 정의되어 있습니다.

이러한 리소스를 가져오는 작업이 콘텐츠 처리기에 의해 차단되는 경우, 문서 전체 또는 일부가 의도한 대로 처리되지 않을 수 있으며, 따라서 문서 콘텐츠의 일부 또는 전체를 표시 처리에 사용할 수 없을 수 있습니다.

미디어 재생 중 외부 리소스를 다운로드하는 콘텐츠 처리기는 리소스의 원본 서버에 사용자의 미디어 소비 진행 상황을 알립니다. 많은 경우 이러한 미디어 진행 정보는 다른 메커니즘을 통해 미디어의 원본 서버에서도 사용할 수 있습니다. 예를 들어, 스크립팅이나 스트리밍 미디어 요청 모니터링을 통해 얻을 수 있습니다.

콘텐츠 처리기가 외부 리소스를 다운로드할 때 교차 출처 정책을 적용하지 않으면 이러한 미디어 진행 정보와 잠재적으로 기타 사용자 추적 정보를 미디어를 제공하는 웹사이트와 사용자의 동의 없이 다른 출처에 노출하게 됩니다. 이 명세는 API를 정의하지 않으며, 구현이 참조된 리소스를 어떻게 가져와야 하는지에 대해서도 규정하지 않습니다.

P.4 리소스 또는 처리 상태의 캐싱

여기에 정의된 시간 지정 텍스트 문서 인스턴스의 처리는 콘텐츠 처리기가 리소스나 처리 상태를 캐싱하거나 저장하는 것을 명시하지 않으며, 어떠한 방식으로도 이에 의존하지 않습니다.

P.5 스크립트 언어 없음

이 명세는 어떠한 스크립트 언어나 실행 가능한 코드의 처리도 포함하거나 참조하지 않습니다.

P.6 외부 스타일시트 없음

이 명세는 어떠한 외부 스타일시트나 스타일 지정의 처리도 포함하거나 참조하지 않습니다; 모든 스타일 정보는 TTML 문서 구문에 직접 통합되며, 이 구문의 축소 XML 정보 집합 표현을 바탕으로 처리됩니다.

P.7 처리 상태에 대한 접근

여기에서는 콘텐츠의 조건부 처리를 허용하는 메커니즘을 정의합니다. 조건 표현식은 사용자의 언어 선호도, 관련 미디어의 언어, 강제 자막의 활성화 여부 및 미디어 쿼리 표현식의 충족 여부를 포함한 특정 처리 상태를 고려할 수 있습니다. 그러나 이 상태에 대한 직접 접근은 TTML 콘텐츠에 제공되지 않습니다. 대신 콘텐츠 처리기가 이 상태에 접근하여 조건이 충족되는지 이진적으로(예 또는 아니요) 판단합니다.

P.8 하이퍼링크 메커니즘

여기에서는 [XLink 1.1]을 기반으로 작성자가 콘텐츠를 외부 문서와 연결할 수 있도록 하는 메커니즘을 정의합니다. 이 메커니즘에 대한 의미적 지원을 콘텐츠 처리기가 제공할지 여부는 이 명세의 범위 밖에서 결정됩니다. 또한 링크 활성화가 지원되는 경우 그 의미도 마찬가지로 이 명세의 범위 밖입니다.

P.9 선호 정보 보호

콘텐츠 처리기가 특정 시간 지정 텍스트 문서 인스턴스를 선택하여 다운로드하거나 해석하게 하면, 원본 서버에 사용자가 캡션이나 자막을 필요로 한다는 사실을 알릴 수 있으며, 따라서 캡션이나 자막을 가져올 때 사용자가 선호하는 언어를 알릴 수도 있습니다. 이러한 언어 선호도는 사용자에 관한 정보에 해당합니다. 그러나 시간 지정 텍스트 문서 인스턴스를 제공하는 것과 이를 가져와 처리할지 선택하는 것은 문서 인스턴스 자체의 특성이 아니라 이를 제공하는 애플리케이션(예를 들어 [HTML] 기반 웹 애플리케이션)의 특성입니다.

P.10 글꼴 감지

조건부로 글꼴 리소스를 역참조(다운로드)하되, 그 조건이 로컬에 설치된 글꼴 리소스의 존재 여부인 경우, 콘텐츠 처리기는 [FINGER]에 정의된 잠재적인 핑거프린팅 취약점을 도입하게 됩니다. 이러한 취약점의 존재 여부와 완화는 콘텐츠 처리기의 구현 및 전체 시스템 아키텍처에 따라 달라집니다.

참고:

예를 들어, 완화 전략으로 사용자가 설치한 글꼴 리소스를 무시하고 글꼴 리소스의 역참조(다운로드) 여부를 선택할 수 있습니다.

콘텐츠 처리기를 범용 브라우저의 컨텍스트에서 구현하는 경우, 이 용어는 [FINGER]에서 사용하는 의미이며, 사용자가 설치한 글꼴의 존재 여부에 따라 외부 글꼴 리소스를 조건부로 역참조하지 않는 방안을 고려하는 것이 좋습니다. 이는 해당 역참조가 사용자 시스템에 관한 정보를 드러내거나 사용자를 핑거프린팅할 수 있는 경우에 해당합니다.

Q 고동적 범위 합성(비규범적)

이 부록은 [SRGB] 픽셀을 고동적 범위 (HDR) 픽셀 위에 합성하는 방법을 설명합니다.

Q.1 지각 양자화기

다음은 tts:luminanceGain을 사용하여 [SRGB] 픽셀을 HDR 픽셀 위에 합성하는 방법을 설명합니다. 이 HDR 픽셀은 [ITU BT.2100-1]에 명시된 시스템 측색 체계를 따르며, 지각 양자화기(PQ) EOTF와 전체 범위 양자화를 사용합니다.

참고:

다음 예제는 범용 색 관리를 제공하거나 모든 상황에 적용되도록 의도된 것이 아닙니다. 예를 들어, 대상 합성 표면이 10비트이며 전체 범위 양자화를 사용한다고 가정합니다.

  1. (r, g, b)를 불투명도가 0과 1 사이인 전체 범위 8비트 [SRGB] 픽셀로 정의합니다.

  2. (R, G, B) 및 (Rc, Gc, Bc)를 PQ EOTF와 전체 범위 양자화를 사용하는 [ITU BT.2100-1]의 시스템 측색 체계에 따른 전체 범위 10비트 픽셀로 정의하며, 불투명도 A 및 Ac는 0과 1 사이입니다.

  3. 8비트 전체 범위 양자화를 역변환합니다:

    (r, g, b) / 255 → (r, g, b)

  4. [SRGB] 기준 디스플레이 EOTF를 사용하여 선형화합니다:

    (r2.2, g2.2, b2.2) → (r, g, b)

  5. tts:luminanceGain 속성과 [SRGB] 광원을 사용하여 HDR 절대 휘도를 계산합니다:

    80 ∙ tts:luminanceGain ∙ (r, g, b) → (r, g, b)

  6. [SRGB] 색 공간에서 [ITU BT.2100-1] 색 공간으로 변환합니다:

    [(0.62740389593470, 0.32928303837789, 0.04331306568741), (0.06909728935823, 0.91954039507545, 0.01136231556630), (0.01639143887515, 0.08801330787723, 0.89559525324763)] ∙ (r, g, b) → (r, g, b)

  7. 10,000 cd∙m-2로 정규화합니다:

    (r, g, b) / 10000 → (r, g, b)

  8. [ITU BT.2100-1]에 명시된 역 PQ EOTF를 적용합니다:

    (PQ(r), PQ(g), PQ(b)) → (r, g, b)

    여기서 PQ(L) = [(c1 + c2 ∙ Lm1) / (1 + c3 ∙ Lm1)]m2이며, m1 = 0.1593017578125, m2 = 78.84375, c1 = 0.8359375, c2 = 18.8515625 및 c3 = 18.6875입니다.

  9. 불투명도를 적용합니다:

    (1-a) ∙ (r, g, b) → (r, g, b)

  10. 10비트 전체 범위 양자화를 적용합니다:

    (Q(r), Q(g), Q(b)) → (r, g, b)

    여기서 Q(N) = floor(1023 ∙ N + 0.5)입니다

  11. 합성을 적용하여 (Rc, Gc, Bc)를 얻습니다:

    (clamp(r + R), clamp(g + G), clamp(b + B)) → (Rc, Gc, Bc)

    1 + (1 - a) ∙ (A - 1) → Ac

    여기서

    clamp(x) = 0 (x < 0인 경우)

    그리고

    clamp(x) = x (0 ≤ x ≤ 1023인 경우)

    그리고

    clamp(x) = 1023 (x > 1023인 경우)

Q.2 하이브리드 로그 감마 HDR

다음은 [SRGB] 픽셀을 하이브리드 로그 감마 (HLG) HDR 픽셀 위에 합성하는 방법을 설명합니다.

  1. (r, g, b)를 불투명도 A가 0과 255 사이인 전체 범위 8비트 [SRGB] 픽셀로 정의합니다.

  2. (R,G,B) 및 (Rc,Gc,Bc)를 HLG EOTF와 제한 범위 양자화를 사용하는 [ITU BT.2100-1]의 시스템 측색 체계에 따른 제한 범위 10비트 픽셀로 정의합니다. 아래 첨자 c는 합성 후의 비디오 신호를 나타냅니다.

  3. (X,Y,Z)를 CIE 1931 XYZ 색 공간 [XYZ]에 명시된 시스템 측색 체계의 픽셀로 정의합니다 .

  4. 8비트 전체 범위 양자화를 역변환합니다:

    (r, g, b)/255 → (r, g, b)

    A/255 → A

  5. [SRGB] EOTF를 사용하여 선형화합니다:

    (r2.0,g2.0,b2.0) → (r,g,b)

  6. [SRGB] 색 공간에서 [ITU BT.2100-1] 색 공간으로 변환합니다:

    [(0.4124, 0.3576, 0.1805), (0.2126, 0.7152, 0.0722), (0.0193,0.1192,0.9505)]•(r,g,b)→(X,Y,Z)

    [(1.7167, −0.3557, −0.2534), (−0.6667, 1.6165, 0.0158), (0.0176,−0.04277,0.9421)]•(X,Y,Z)→(r,g,b)

  7. 단순화된 역 HLG OOTF를 적용합니다:

    ((0.265r),(0.265g),(0.265b)) → (r,g,b)

  8. [ITU BT.2100-1]에 명시된 HLG OETF를 적용합니다:

    (HLG(r),HLG(g),HLG(b)) → (r,g,b)

    여기서

    HLG(x) = (3x)0.5 (0 ≤ x ≤ 1/12인 경우)

    그리고

    HLG(x) = a•ln(12x−b)+c (x > 1/12인 경우),

    그리고 a = 0.17883277 및 b = 1−4a 및 c = 0.5−a•ln(4a)입니다

  9. 10비트 제한 범위 양자화를 적용합니다:

    (Q(r),Q(g),Q(b)) → (r,g,b)

    여기서 Q(x) = floor((940 − 64) • x + 64.5)입니다

  10. 전경 그래픽 (r,g,b)를 배경 비디오 (R,G,B) 위에 불투명도 A로 합성하여 (Rc,Gc,Bc)를 얻습니다:

    ((A•r+(1−A)R),(A•g+(1−A)G),(A•b+(1−A)B)) → (Rc,Gc,Bc)

  11. 출력을 10비트 신호 범위로 제한합니다:

    (clamp(Rc),clamp(Gc),clamp(Bc)) → (Rc,Gc,Bc)

    여기서

    clamp(x) = 0 (x < 0인 경우)

    그리고

    clamp(x) = x (0 ≤ x ≤ 1023인 경우)

    그리고

    clamp(x) = 1023 (x > 1023인 경우)

참고:

위 알고리즘은 tts:luminanceGain 속성을 사용하지 않습니다. HLG HDR에는 절대 이득 수준이 필요하지 않기 때문입니다. 대신, 이 알고리즘은 최대 [SRGB] 백색을 HLG의 "그래픽 백색"으로 매핑하며, 이는 제한 범위 신호의 75%로 [ITU BT.2100-1]에 정의되어 있습니다.

참고:

감마 지수 2.0은 의도적으로 [SRGB]에 명시된 감마 2.2와 다릅니다. 해당 명세의 값 2.2는 그 명세에 지정된 시청 환경에 특화되어 있으며, 해당 조건에 대한 시각 심리학적 렌더링 조정을 포함합니다. 이 조정은 디스플레이 렌더링을 제외하는 HLG 신호에는 필요하지 않습니다.

R TTML 콘텐츠 스트리밍(비규범적)

TTML 콘텐츠는 스트리밍 시나리오에서 유용할 수 있는 다음 특성을 충족하도록 작성할 수 있습니다:

R.1 루트 및 가지 조각화

TTML 콘텐츠를 스트리밍하는 한 가지 가능한 방법은 문서 인스턴스의 정보 집합을 서로 겹치지 않는 조각으로 분할하는 것입니다. 이때 루트 조각이라고 부르는 특정 조각은 문서 인스턴스의 앞부분(head)과 최상위 구조 요소를 나타내며, 다른 조각들은 시간 구간이 병렬로 활성화될 것으로 예상되는 콘텐츠를 나타냅니다.

스트림에 대한 임의(무작위) 진입, 즉 임의의 데이터 접근 단위에서 데이터 읽기를 시작할 수 있는 특성이 필요한 애플리케이션에서는 루트 조각이 스트림에 반복적으로 전송(삽입)됩니다. 이를 통해 디코더는 다시 동기화하고, 후속 콘텐츠 조각을 해석하는 데 필요한 충분한 구조 정보를 정보 집합에서 얻을 수 있습니다.

문서 인스턴스를 이러한 방식으로 조각화하는 예가 그림 2 – 조각 스트리밍에 나와 있습니다.

그림 2 – 조각 스트리밍
조각 스트리밍

참고:

이 명세는 전송 버퍼 모델이나 디코더 기능 모델을 정의하지 않습니다.

R.2 시간적 조각화

TTML 콘텐츠를 스트리밍하는 또 다른 방법은 문서 인스턴스의 정보 집합을 시간적으로 한정된 조각으로 분할하는 것입니다. 각 조각 자체가 이를 표시하는 데 필요한 모든 앞부분(head)과 콘텐츠를 포함하는 문서 인스턴스입니다. 각 조각의 시간 구간은 문서 교환 컨텍스트 또는 문서 처리 컨텍스트 또는 둘 모두에 의해 제한되어, 다른 조각과의 시간적 중첩이 해소됩니다.

예를 들어, 일부 문서 처리 컨텍스트는 타임라인의 어느 순간에도 최대 하나의 문서 인스턴스만 활성 상태일 수 있다고 지정하여 시간적 중첩을 해소하고, 후보가 여러 개인 경우 어떤 문서 인스턴스가 활성 상태가 되는지 결정하는 우선순위 규칙을 추가로 지정합니다.

모든 콘텐츠가 올바르게 표시되도록 하려면, 둘 이상의 조각화 구간과 겹치는 구간을 가진 ISD에 속하는 콘텐츠를 해당 ISD를 생성하는 데 필요한 각 조각에 중복하여 포함해야 할 수도 있습니다. 구현은 구간만 다르고 나머지는 동일한 인접 ISD를 식별하여, 합쳐진 구간을 포괄하는 하나의 ISD로 대체할 수 있습니다.

이 접근법은 표시 처리기가 스트리밍되지 않은 문서 인스턴스의 버전에서 생성될 ISD 시퀀스와 동등한 시퀀스를 생성할 수 있게 하면서, 세그먼트 지속 시간을 조정하여 앞부분의 중복을 조절 가능한 범위에서 피할 수 있다는 이점을 활용하려는 것입니다. 원본 소스를 재구성해도 동일한 문서 인스턴스가 나온다고 보장되지는 않습니다.

참고:

이 기법은 예를 들어 [ISOBMFF TT] 및 [EBU-TT-Live]에서 사용됩니다.

문서 인스턴스를 이러한 방식으로 조각화하는 예가 그림 3 – 시간적 조각화에 나와 있습니다.

그림 3 – 시간적 조각화
시간적 조각화

참고:

위 예에서 하나의 문서 인스턴스는 T1부터 T6까지의 구간에 표시되는 콘텐츠를 가지며, 두 문서 인스턴스(세그먼트)로 조각화됩니다. 첫 번째는 T1부터 T3까지 필요한 모든 콘텐츠와 참조된 스타일 및 영역을 포함하고, 두 번째는 필요한 모든 콘텐츠와 참조된 스타일 및 영역을 T4부터 T6까지의 구간에 대해 포함합니다.

R.3 ISD 스트리밍

문서 인스턴스를 시간 지정 텍스트 중간 문서 인스턴스의 시퀀스로 변환하고, 이를 개별 엔티티로 스트리밍할 수 있습니다.

이 기법은 클라이언트의 처리 요구 사항을 최소화하는 동시에, 관련된 모든 앞부분을 해당 내용이 적용되는 모든 ISD에 중복하여 포함하도록 요구합니다. 원본 소스를 재구성해도 동일한 문서 인스턴스가 나온다고 보장되지는 않습니다.

S 일반적인 자막 스타일 예제(비규범적)

이 절은 TTML 콘텐츠를 사용하여 원하는 동작을 얻는 다음과 같은 일반적인 자막 스타일의 예제를 제공합니다:

S.1 팝온 자막 예제

페인트온 자막의 예제입니다. 이 예제에서는 번갈아 표시되는 페인트온 콘텐츠가 두 영역을 대상으로 하며, 콘텐츠의 타이밍은 명시적인 순차 시간 포함 규칙을 사용하여 지정됩니다. 각 문단은 시간적으로 겹치지 않으며, 대상 영역의 동일한 한 행에 나타납니다.

예제 – 팝온 자막
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
  xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 1c"/>
      <region xml:id="r2" tts:color="yellow" tts:origin="10c 8c" tts:extent="40c 1c"/>
    </layout>
  </head>
  <body>
    <div timeContainer="seq">
      <p region="r1" dur="4s">Lorem ipsum dolor sit</p>
      <p region="r2" dur="4s">Amet consectetur adipiscing elit</p>
      <p region="r1" dur="6s">Sed do eiusmod tempor incididunt labore</p>
      <p region="r2" dur="4s">et dolore magna aliqua</p>
      <p region="r1" dur="7s">Ut enim ad minim veniam quis, nostrud</p>
    </div>
  </body>
</tt>

S.2 롤업 자막 예제

롤업 자막의 예제입니다. 롤업 효과는 중첩된 시간 구간을 사용하여 구현되며, 특정 시점에 영역에 0개, 1개 또는 2개의 문단이 나타납니다. 줄 바꿈이 발생하지 않으므로 각 문단은 영역의 한 행(줄)을 차지합니다. 표시 처리기가 인접한 동기 중간 문서 인스턴스 사이의 부드러운 스크롤을 지원하는지에 따라, 전환, 즉 기존 문단(줄)이 나가고 새 문단(줄)이 들어오는 이동은 부드럽거나 불연속적으로 이루어집니다.

예제 – 롤업 자막
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
  xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 2c"
              tts:displayAlign="after"/>
    </layout>
  </head>
  <body>
    <div region="r1">
      <p>
        <span begin="0s" end="8s">Lorem ipsum dolor sit</span>
        <span begin="4s" end="12s"><br/>Amet consectetur adipiscing elit</span>
        <span begin="8s" end="18s"><br/>Sed do eiusmod tempor incididunt labore</span>
        <span begin="14s" end="25s"><br/>et dolore magna aliqua</span>
        <span begin="18s" end="29s"><br/>Ut enim ad minim veniam quis, nostrud</span>
      </p>
    </div>
  </body>
</tt>

S.3 페인트온 자막 예제

페인트온 자막의 예제입니다. 페인트온 효과는 타이밍이 지정된 span 요소를 사용하여 단어와 같은 인라인 텍스트 단위를 일정한 시간 구간에 걸쳐 드러내는(그리는) 방식으로 구현됩니다. 여기서는 다섯 문단의 각 단어에 순차적으로 타이밍을 지정하여 매초 새 단어 하나를 그립니다. 각 인라인 요소의 활성 지속 시간은 div 요소의 병렬 시간 컨테이너와 동시에 끝나므로, 한 번 그려진 단어는 div 요소의 활성 시간 구간이 끝날 때까지 영역의 렌더링된 줄에 남아 있습니다.

예제 – 페인트온 자막
<tt ttp:cellResolution="60 20" xml:lang="en" xmlns="http://www.w3.org/ns/ttml"
  xmlns:ttp="http://www.w3.org/ns/ttml#parameter" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <head>
    <layout>
      <region xml:id="r1" tts:color="white" tts:origin="10c 4c" tts:extent="40c 5c"/>
    </layout>
  </head>
  <body>
    <div begin="0s" end="25s">
      <p>
        <span begin="0s">Lorem</span>
        <span begin="1s">ipsum</span>
        <span begin="2s">dolor</span>
        <span begin="3s">sit</span>
      </p>
      <p>
        <span begin="4s">Amet</span>                
        <span begin="5s">consectetur</span>
        <span begin="6s">adipiscing</span>
        <span begin="7s">elit</span>
      </p>
      <p>
        <span begin="8s">Sed</span>
        <span begin="9s">do</span>
        <span begin="10s">eiusmod</span>
        <span begin="11s">tempor</span>
        <span begin="12s">incididunt </span>
        <span begin="13s">labore</span>
     </p>
     <p>
        <span begin="14s">et</span>
        <span begin="15s">dolore</span>
        <span begin="16s">magna</span>
        <span begin="17s">aliqua</span>
      </p>
      <p>
        <span begin="18s">Ut</span>
        <span begin="19s">enim</span>
        <span begin="20s">ad</span>
        <span begin="21s">minim</span>
        <span begin="22s">veniam</span>
        <span begin="23s">quis,</span>
        <span begin="24s">nostrud</span>
      </p>
    </div>
  </body>
</tt>

T 표시 사용자 지정 옵션(비규범적)

이 절은 문서 작성자와 구현자가 주어진 문서 인스턴스의 표시를 사용자 지정할 때 사용할 수 있는 옵션을 개괄적으로 요약합니다.

이 컨텍스트에서 사용자 지정은 지정된 표시 동작을 수정하는 것을 의미합니다. 이 절은 글꼴 래스터화 알고리즘과 같이 지정되지 않은 표시 동작을 구현하는 방법을 나열하려는 것이 아닙니다.

T.1 조건을 사용한 사용자 지정

condition 속성을 사용하면 문서 작성자는 작성 시점에 알려진 입력 매개변수를 바탕으로 의도된 표시를 수정할 수 있습니다. 예를 들어, 폐쇄형 시스템에는 text-size 매개변수에 대해 미리 정의된 열거 값이 있을 수 있으며, 이를 사용하여 콘텐츠에 적용되는 스타일링을 수정할 수 있습니다. 또는 media 함수를 사용하여 미디어 쿼리에 따라 적용 대상 영역의 위치와 범위를 수정할 수 있습니다 - [Media Queries]를 참조하십시오.

T.2 전처리기를 사용한 사용자 지정

전처리 기법을 적용하여 문서 인스턴스를 표시하기 전에 수정할 수 있습니다. 예를 들어 [XSLT3]를, 경우에 따라 [XPROC] 파이프라인의 컨텍스트에서 사용하여 스타일 속성의 초기값이나 상속되는 루트 요소의 스타일 속성을 수정할 수 있습니다. 이러한 전처리는 해당 전처리기가 변환 처리기의 인스턴스로 간주된다는 점을 제외하면 이 명세의 범위 밖입니다.

T.3 표시 적합성 위반을 통한 사용자 지정

이 명세는 가능한 범위에서 표시 처리기의 적합성 요구 사항을 정의하려 하지만, 적절하다고 판단되는 경우 구현이 이러한 적합성에서 의도적으로 벗어나는 것을 막지는 않습니다. 예를 들어, 표시 처리기는 표시된 텍스트와 비디오 재생 컨트롤 같은 다른 시각적 표시 요소 사이의 위치 충돌을 식별하고, 영향을 받는 TTML 영역을 일시적으로 이동하여 이를 해결할 수 있습니다. 또는 표시 처리기가 예상하지 못한 줄 바꿈을 유발하지 않으면서 표시되는 글꼴 크기를 줄이는 옵션을 사용자에게 제공할 수 있습니다.

정의상 이러한 모든 부적합은 이 명세의 범위 밖입니다.

U TTML1 대비 어휘 변경 사항(비규범적)

이 절은 시간 지정 텍스트 마크업 언어 (TTML) 버전 1(TTML1)과 버전 2(TTML2) 사이의 어휘 변경 사항을 개괄적으로 요약합니다. 이 요약은 모든 변경 사항을 빠짐없이 다루려는 것이 아닙니다.

U.1 새로운 요소 어휘

이 명세의 다음 절에 새로운 요소 어휘가 추가되었으며, 자세한 내용은 아래에 설명되어 있습니다:

U.1.1 애니메이션 어휘

애니메이션 기능에 대한 지원을 강화하기 위해 다음 요소가 추가되었습니다:

tt:animate

시간적으로 연속된 하나 이상의 활성 시간 구간 내부와 구간 사이의 연속 애니메이션을 지원합니다.

tt:animation

헤더부에서 외부 애니메이션 지시문을 그룹화하는 기능을 지원합니다.

U.1.2 삽입된 콘텐츠 어휘

삽입된 콘텐츠 및 콘텐츠 참조를 지원하기 위해 다음 요소가 추가되었습니다:

tt:audio

내장, 삽입 및 외부 오디오 리소스의 사용을 지원합니다.

tt:chunk

오디오, 데이터, 글꼴 및 이미지 리소스를 삽입할 때 청킹 사용을 지원합니다. 여기서 청킹은 리소스 콘텐츠를 연속적인 데이터 세그먼트(청크)로 세분화하는 것을 의미합니다.

tt:data

내장, 삽입 및 외부 데이터 리소스의 사용을 지원합니다.

tt:font

내장, 삽입 및 외부 글꼴 리소스의 사용을 지원합니다.

tt:image

내장, 삽입 및 외부 이미지 리소스의 사용을 지원합니다.

tt:resources

헤더부에서 공유 가능한 삽입된 콘텐츠 및 콘텐츠 참조를 그룹화하는 기능을 지원합니다.

tt:source

삽입된 콘텐츠 및 콘텐츠 참조의 대체 소스를 지원합니다.

U.1.3 메타데이터 어휘

메타데이터 기능을 확장하기 위해 다음 요소가 추가되었습니다:

ttm:item

이름이 부여된 메타데이터 항목의 확장 가능한 모음을 지원합니다.

참고:

이 기능은 이름과 값으로 구성된 메타데이터 항목에 대해 새로운 어휘를 계속 추가하여 정의하는 일을 피하려는 필요에서 비롯되었습니다. 이름이 부여된 범용 메타데이터 항목 요소는 향후 이러한 항목을 제한 없이 정의해야 하는 요구에 대응할 수 있습니다.

U.1.4 스타일링 어휘

스타일링 기능을 확장하기 위해 다음 요소가 추가되었습니다:

tt:initial

작성자가 지정하는 스타일 속성의 초기값을 지원합니다.

참고:

이 기능은 다음을 포함한 여러 요구 사항에서 비롯되었습니다: (1) 이 명세에서 구현에 따라 달라지는 것으로 정의한 상속되는 스타일 속성의 일부 초기값에 대해 고정되고 확정적인 값을 지정할 수 있는 것이 바람직합니다. 예를 들면, tts:color의 초기값이 이에 해당합니다; 그리고 (2) 매번 스타일 값을 명시적으로 지정해야 하는 대신, 상속되지 않는 특정 스타일 속성의 초기값을 재정의할 수 있는 것이 바람직합니다. 예를 들어, tts:showBackground의 초기값으로 whenActive를 기본 초기값인 always보다 선호할 수 있습니다.

U.2 새로운 속성 어휘

이 명세의 다음 절에 새로운 속성 어휘가 추가되었으며, 자세한 내용은 아래에 설명되어 있습니다:

U.2.1 애니메이션 속성

애니메이션 기능을 확장하기 위해 다음 속성이 추가되었습니다:

U.2.2 콘텐츠 속성

콘텐츠 기능을 확장하기 위해 다음 속성이 추가되었습니다:

U.2.3 매개변수 속성

매개변수 기능을 확장하기 위해 다음 속성이 추가되었습니다:

U.2.6 오디오용 스타일링 속성

오디오 스타일링 기능을 확장하기 위해 다음 속성이 추가되었습니다:

V 감사의 말(비규범적)

편집자들은 이 문서의 작성 과정이나 내용에 직접 또는 간접적으로 기여한 시간 지정 텍스트 작업 그룹의 전·현직 구성원, 다른 W3C 작업 그룹의 구성원 및 다른 포럼의 업계 전문가인 다음 분들께 감사드립니다:

Thomas Bause-Mason, John Birch, Kees Blom, Bert Bos, Brad Botkin, Dick Bulterman, Cyril Concolato, Frans de Jong, Mike Dolan, Martin Dürst, Donald Evans, Geoff Freed, Al Gilman, Giles Godart-Brown, Markus Gylling, Markku Hakkinen, Sean Hayes, Erik Hodge, Philipp Hoschka, Suzi Hyun, Richard Ishida, Michael Jordan, Masahiko Kaneko, Courtney Kennedy, George Kerscher, Dae Kim, David Kirby, Andrew Kirkpatrick, Philippe Le Hégaret, Pierre-Anthony Lemieux, Chris Lilley, Jason Livingston, Monica Martin, Matthew May, Nigel Megitt, Thierry Michel, Frank Olivier, Soohong Daniel Park, Silvia Pfeiffer, Addison Phillips, Stefan Pöschel, Rohit Puri, Brian Raymor, David Ronca, Patrick Schmitz, David Singer, Craig Smithpeters, Andreas Tai, 및 Mohamed Zergaoui.

편집자들은 전·현직 구성원들의 다음 기여에 특별히 감사드립니다: Mike Dolan(SMPTE 타임코드, 스트리밍; SMPTE 연락 담당), David Kirby(도입부 예제 문서; SMPTE 타임코드, 기술 메타데이터; EBU/AAF 연락 담당), Geoff Freed(스타일링 및 스타일 속성의 예제 이미지), Sean Hayes(적용 타이밍을 포함한 고급 프로파일 개념, HTML/CSS 매핑 제안), Erik Hodge(타이밍), Thierry Michel(메타데이터) 및 Dave Singer(애니메이션, 스크롤).

작업 그룹은 이 명세를 동료 David Kirby에게 헌정합니다.