Timed Text Markup Language

AperturaSalvataggioXMLCon stile

L'XML del W3C per sottotitoli e didascalie, quello richiesto da emittenti e servizi di streaming. DFXP era il nome del suo primo profilo, e molti file lo portano ancora. IMSC, EBU-TT-D e iTT di Apple sono anch'essi TTML, ciascuno con le sue abitudini.

In breve

Estensione.ttml
Tipo di mediaapplication/ttml+xml
SpecificaW3C, Timed Text Markup Language 1 (TTML1), una Recommendation. TTML2 lo estende; IMSC e EBU-TT-D sono sottoinsiemi per la distribuzione.
Precisione dei tempiQualsiasi: frazioni di secondo, fotogrammi o tick
Codifica del testoDichiarata nell'XML. Quasi sempre UTF-8.
StileStili con nome e attributi tts:: carattere, dimensione, colore, sfondo, corsivo, grassetto, sottolineato, barrato, contorno
PosizionamentoRegioni: riquadri collocati e dimensionati ovunque sull'immagine
ParlantiAgenti (ttm:agent), nominati nell'intestazione
Nei contenitoriMP4 come stpp (ISO/IEC 14496-30), in flussi DASH, CMAF e HLS

Anatomia di un file

Un documento XML: un'intestazione che nomina stili e regioni, e un corpo di paragrafi, uno per ogni sottotitolo.

<tt xml:lang="en" …>
<head>styles, regions</head>
<body><div>
<p begin="00:00:23.000"
   end="00:00:24.500">
You're a jerk,<br/>Thom.</p>
</div></body>
</tt>
  1. 1 · Radice

    <tt>, con gli spazi dei nomi di TTML, la lingua e l'orologio con cui si contano i tempi: ttp:frameRate, ttp:tickRate.

  2. 2 · Intestazione

    Stili con nome, le regioni dello schermo e chi parla.

  3. 3 · Tempi

    Il begin di ogni paragrafo, e la sua end oppure dur.

  4. 4 · Testo

    Il sottotitolo. Gli span applicano parti di stile al testo, e <br/> interrompe la riga.

Tempi

TTML scrive un tempo in più modi di qualsiasi altro formato di sottotitoli:

Scritto Cos'è
00:00:23.500 Ore, minuti, secondi e una frazione
00:00:23:12 Fotogrammi dopo i secondi: dodici, con il ttp:frameRate del file
23.5s, 23500ms, 1h Uno scostamento in ore, minuti, secondi o millisecondi
564f Fotogrammi
235000000t Tick, ttp:tickRate al secondo

I tempi si contano da ciò che li contiene. Il begin di un paragrafo si conta dall'inizio del suo <div> e del suo <body>, e un paragrafo senza una fine propria termina con loro.

Stili

Uno stile è un insieme di attributi tts:. Il testo li riceve in ordine: dalla sua regione, poi dal body, dal div, dal paragrafo e dallo span che lo contengono. Ogni elemento riceve gli stili che nomina (style="s1 s2", e quelli che questi nominano), poi i propri attributi.

Attributo Effetto In Subtitld
tts:fontStyle="italic" Corsivo Mantenuto
tts:fontWeight="bold" Grassetto Mantenuto
tts:textDecoration="underline", "lineThrough" Sottolineato, barrato Mantenuti
tts:color Colore del testo: un nome, #rrggbb, #rrggbbaa o rgb() Mantenuto, senza la sua trasparenza
tts:displayAlign, tts:textAlign Dove si trova il testo nella regione Mantenuti, come una delle nove posizioni
tts:fontFamily, tts:fontSize Carattere e dimensione Non mantenuti
tts:backgroundColor, tts:textOutline Un riquadro dietro il testo, un contorno Non mantenuti
<set> Uno stile che cambia nel tempo Non mantenuto

Regioni

Una regione è un riquadro sull'immagine, collocato da tts:origin e dimensionato da tts:extent. Al suo interno, tts:displayAlign pone il testo in alto, al centro o in basso (before, center, after), e tts:textAlign a un lato o al centro.

<region xml:id="top"
        tts:origin="10% 10%"
        tts:extent="80% 80%"
        tts:displayAlign="before"/>

Subtitld calcola dove cade il testo, che la regione sia misurata in percentuali, pixel o celle, e sceglie la più vicina delle nove posizioni che {\an1} fino a {\an9} di SubRip indicano. Quando scrive un file, ogni posizione usata diventa una regione con quel nome: bottom, top, top-left…

Quando un file non lo dice. I valori predefiniti di TTML collocano il testo in alto a sinistra della sua regione, ma i player lo mostrano in basso e centrato, e così fa Subtitld. Legge anche textAlign="start" in una regione senza dimensione né posizione come centrato: i file scritti con pycaption, compresi quelli dei vecchi Subtitld, lo mettono su ogni regione.

Profili

La maggior parte dei TTML è scritta secondo un profilo: un sottoinsieme del linguaggio, con regole proprie. Subtitld legge ciascuno di essi come TTML.

Profilo Dove è usato Sue abitudini
DFXP Il primo profilo di TTML, e l'estensione .dfxp File più vecchi nello spazio dei nomi http://www.w3.org/2006/10/ttaf1
IMSC 1 Streaming su DASH, CMAF e HLS Il profilo del W3C per sottotitoli e didascalie online
EBU‑TT‑D Lettori online delle emittenti europee Elementi spesso scritti con un prefisso: <tt:p>
SMPTE‑TT Didascalie della televisione americana online Aggiunte di SMPTE, per didascalie portate dalla trasmissione
iTT (.itt) Consegne all'iTunes Store di Apple e ad Apple TV Tempi in fotogrammi (ttp:timeBase="smpte")

TTML in Subtitld

Conservato nel .ttml
  • Testo e a capo di ogni sottotitolo
  • Corsivo, grassetto, sottolineato, barrato e colore
  • Dove si trova sullo schermo
  • Parlanti, come agenti
  • Inizio e fine, al millisecondo, in ordine
Senza posto nel formato
  • Caratteri, dimensioni, sfondi e contorni riga per riga
  • Dimensione e posizione esatte di una regione
  • Stili che cambiano nel tempo, ruby, sottotitoli immagine
  • Traduzioni accanto all'originale, doppiaggi, volti dei parlanti

Salvi un progetto .usfx per conservare ciò che è di Subtitld.

Aprire un file TTML

Subtitld apre .ttml, .dfxp, .itt e .xml, e:

  • legge il TTML in qualunque forma sia scritto: nel suo spazio dei nomi, in quello vecchio di DFXP, o con tt: davanti a ogni elemento;
  • legge ogni forma di tempo, ciascuno contato dal div e dal body in cui si trova;
  • segue gli stili come li applica TTML, conservando corsivo, grassetto, sottolineato, barrato e qualsiasi colore diverso dal bianco;
  • colloca ogni sottotitolo dove lo mostra la sua regione;
  • prende gli agenti come parlanti, pronti per il doppiaggio, e lo xml:lang del file come lingua del progetto;
  • legge la codifica dichiarata dal file, e le entità HTML come &nbsp;.

Un file che non è XML ben formato si apre con un messaggio che indica la riga e la colonna. Un file che non è affatto TTML lo dice.

Esportare TTML

La finestra di esportazione di Subtitld con TTML selezionato e i parlanti scritti come agenti

Esporta, poi Sottotitoli e TTML o DFXP, offre:

  • TestoL'originale, una traduzione, o entrambi, con la traduzione sotto.
  • Nomi dei parlantiEsclusi, prima del testo (Thom: …), oppure come agenti (ttm:agent), il modo proprio di TTML.
  • FormattazioneMantenuta, oppure rimossa.
  • Sposta i tempiOgni sottotitolo anticipato o ritardato della stessa quantità.
  • AspettoBianco con contorno nero, oppure come lo disegna l'anteprima di Subtitld: il suo carattere, colore e un riquadro traslucido.

Il file è TTML 1 in UTF-8. I tempi sono scritti come 00:00:23.000, ogni posizione dei sottotitoli come una regione, la formattazione come span e i ritorni a capo come <br/>. Il suo xml:lang è la lingua del testo che contiene. TTML e DFXP ottengono lo stesso file; cambia solo l'estensione.

TTML o WebVTT?

WebVTT per un <track> su una pagina web: i browser lo leggono da soli. TTML per le emittenti, per i servizi di streaming che lo richiedono, e per i player che lo leggono, come dash.js e Shaka Player. La pagina WebVTT contiene il resto.

Curiosità

2010

TTML 1.0 divenne una Recommendation del W3C nel novembre 2010, dopo bozze che prendevano il nome dal suo primo profilo: il Distribution Format Exchange Profile, DFXP.

ttaf1

Il vecchio spazio dei nomi, http://www.w3.org/2006/10/ttaf1, risale alle bozze del 2006, quando TTML era il Timed Text Authoring Format. I file lo portano ancora.

Emmy

Nel 2016 il W3C ricevette per il TTML un Technology & Engineering Emmy, insieme a HBO, Netflix, Telestream e SMPTE.

Formati correlati

Ha un file .ttml da correggere?

Lo apra in Subtitld con il video e lo sincronizzi sulla forma d'onda.

Scarica Subtitld