Andare al contenuto principale
SubtitleMatrix

Rimuovere i tag HTML dai sottotitoli

Testo e stileTogliere marcatori e tag
Oppure incollare il testo dei sottotitoli

Opzioni

Un riquadro, sette scelte, e ciascuna scelta ha una pagina propria. Corsivo, grassetto, sottolineato e colore rimuovono quel singolo tipo di intervallo e lasciano stare il resto dello stile della riga. Tutto rimuove ogni intervallo modellato dallo strumento — quei quattro più la temporizzazione karaoke — lasciando intatto tutto il resto del testo. HTML fa lo stesso e poi spazza via anche il markup tra parentesi angolari rimasto nel testo perché lo strumento non lo modella, come i tag di interlocutore <v Bob> di VTT e <c.className>. ASS fa lo stesso invece con i blocchi di override, cancellando i codici {...} non riconosciuti in fase di analisi, come {\fad(500,500)}. Questa pagina riempie il riquadro con la scelta che il suo titolo nomina e non ne elenca altre.

La frequenza dei fotogrammi in cui sono contati i tempi. Nelle pagine di formato è quella che serve a MicroDVD, perché memorizza i tempi come numeri di fotogramma. Nelle pagine della frequenza dei fotogrammi è la cadenza con cui è stato temporizzato il file — la versione per cui sono stati creati i sottotitoli — e il secondo riquadro della pagina accetta la frequenza del video con cui verranno usati. 23,976, 24, 25, 29,97, 30, 50, 59,94 e 60 sono quelle comuni. Sbagliarla sposta l’intera timeline, e nelle pagine della frequenza dei fotogrammi la sposta di un rapporto anziché di un importo fisso.

Questa pagina toglie il markup dal testo dei sottotitoli: ogni intervallo di stile che il file porta, più i tag tra parentesi angolari rimasti nel testo stesso. Ciò che torna indietro è dialogo semplice e leggibile — le parole, i tempi e nulla di più. È l’esecuzione per un file il cui testo contiene ancora cose come un tag di interlocutore, un tag di classe o un tag di chiusura spaiato in mezzo a una riga.

È per questa seconda metà che la pagina esiste accanto a quella che rimuove tutta la formattazione. Lo strumento modella i quattro tag di enfasi che conosce e lascia tutto il resto esattamente dov’era, che è la scelta giusta durante la lettura di un file: mangiare in silenzio markup che non riconosce significherebbe perdere dati. Ma significa anche che un file WebVTT con `<v Bob>` dentro conserva quel tag attraverso ogni altra pulizia del sito, e un file passato per OCR o per modifiche a mano ha spesso un tag di chiusura spaiato in mezzo a una riga. Questa pagina è quella che li spazza via, e il suo titolo lo dice.

La spazzata è volutamente stretta. Rimuove solo qualcosa che ha la forma di un tag: una lettera o una barra subito dopo la parentesi di apertura. Un confronto nel dialogo come `5 < 10` e una faccina come `<3` restano completamente intatti, perché una regola più larga cancellerebbe le parole tra le due parentesi e non lascerebbe nell’output nulla che mostri di averlo fatto. Ciò che non è modellato non viene indovinato. Nulla viene caricato: il file viene letto e scritto dentro la scheda del browser. Un file già in testo semplice torna byte per byte, che è anche il modo più economico per scoprire se il markup invisibile che sospettate c’è davvero.

Esempi

Un file WebVTT con tag di interlocutore e di classe

Ingresso

WEBVTT

00:00:01.000 --> 00:00:02.000
<v Bob><c.yellow>Hello there</c>

00:00:03.000 --> 00:00:04.000
<i>She left</i> <ruby>東京<rt>とうきょう</rt></ruby>.

Uscita

WEBVTT

00:00:01.000 --> 00:00:02.000
Hello there

00:00:03.000 --> 00:00:04.000
She left 東京とうきょう.

Tag di interlocutore, tag di classe, corsivo e annotazione ruby se ne vanno tutti, lasciando le parole. Notate il secondo blocco: la lettura dentro `<rt>` era testo e non markup, quindi resta, e l’output mostra il kana accanto al kanji come avrebbe fatto comunque un lettore.

Un file SRT con un tag di chiusura spaiato

Ingresso

1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> there</i> again.

2
00:00:03,000 --> 00:00:04,000
<b>And</b> one more.

Uscita

1
00:00:01,000 --> 00:00:02,000
Hello there again.

2
00:00:03,000 --> 00:00:04,000
And one more.

La coppia intorno a `Hello` è stata letta come intervallo e rimossa in blocco; il `</i>` spaiato dopo `there` era stato lasciato nel testo dal lettore e viene spazzato via qui. Entrambi finiscono fuori dall’output, ed è il punto di fare i due lavori in un’unica esecuzione: i tag spaiati come questo sono ciò che resta dopo OCR o modifiche a mano.

Confronti e simboli non sono tag

Ingresso

1
00:00:01,000 --> 00:00:02,000
5 < 10 and 3 > 1

2
00:00:03,000 --> 00:00:04,000
<3 you

Uscita

1
00:00:01,000 --> 00:00:02,000
5 < 10 and 3 > 1

2
00:00:03,000 --> 00:00:04,000
<3 you

Non viene rimosso nulla, ed è la metà della pagina che conta di più. La spazzata tocca solo qualcosa che ha la forma di un tag, cioè una lettera o una barra subito dopo la parentesi; un confronto matematico e un cuore fatto con un segno di minore sopravvivono intatti, e così tutto ciò che è scritto tra due parentesi.

Domande frequenti

Che differenza c’è tra questa pagina e la rimozione di tutta la formattazione?

Questa fa quel lavoro e poi va oltre. La rimozione della formattazione toglie gli intervalli di stile che lo strumento modella: corsivo, grassetto, sottolineato, colore e karaoke. Questa pagina li rimuove anch’essi e poi spazza i tag tra parentesi angolari rimasti nel testo: tag di interlocutore, tag di classe, markup ruby e tag di chiusura spaiati. Se il vostro file non contiene markup di quel tipo, le due pagine producono lo stesso output.

Quali tag rimuove la spazzata e quali lascia?

Rimuove tutto ciò che ha la forma di un tag: una parentesi di apertura seguita subito da una lettera o da una barra, fino alla parentesi di chiusura successiva. Non tocca invece una parentesi seguita da qualunque altra cosa, quindi un confronto come `5 < 10 and 3 > 1` e un simbolo come `<3` passano intatti. Quella strettezza è voluta: una regola più larga cancellerebbe il dialogo tra due parentesi senza lasciare traccia nell’output.

Questa pagina rimuove anche le parole che stavano dentro un tag rimosso?

Dipende da che cosa c’era dentro. Gli attributi di un tag se ne vanno con lui, e così qualsiasi cosa annidata dentro un tag che viene a sua volta rimosso: la lettura dentro un’annotazione ruby, per esempio, è testo e resta nella riga mentre il markup ruby intorno sparisce. Ciò che non succede mai è rimuovere testo che sta tra due parentesi nel dialogo normale, perché quello non ha la forma di un tag.

L’output sarà ancora valido nel mio lettore dopo la rimozione del markup?

Sì, e in modo più affidabile di prima. WebVTT accetta un tag di chiusura spaiato senza protestare, ma un tag di interlocutore a cui manca la parentesi di chiusura può inghiottire il resto della riga in alcuni lettori, e i diversi lettori non sono d’accordo su che cosa significhi un tag sconosciuto. Il testo semplice non ha questa ambiguità, ed è per questo che un file destinato a una piattaforma che sovrascrive lo stile spesso sta meglio pulito che stilizzato.

Posso rimuovere solo il markup rimasto e tenere i miei corsivi?

Non su questa pagina: gli intervalli di enfasi se ne vanno prima e la spazzata gira dopo, quindi un file con corsivi torna senza. L’ordine non è arbitrario: rimuovere markup accorcia il testo, e ogni intervallo successivo dovrebbe essere ricalcolato per continuare a puntare ai caratteri giusti. Fare i due lavori insieme è ciò che rende il risultato esatto, quindi qui non esiste un’impostazione intermedia.

Perché l’esecuzione non ha segnalato nulla quando il mio file aveva chiaramente del markup?

La ragione probabile è che il markup non ha la forma di un tag: una parentesi seguita da uno spazio, da una cifra o da un simbolo viene lasciata stare di proposito, quindi non è stato rimosso nulla e il file è tornato byte per byte. Se il file contiene davvero qualcosa come `<v Bob>` e torna comunque invariato, controllate che sia il file che pensate: la pagina legge un file per il formato che è davvero, non per l’estensione che porta.

Strumenti correlati