Convertire i fine riga dei sottotitoli
Oppure incollare il testo dei sottotitoli
Opzioni
Ogni riga del file termina con un carattere invisibile (LF) o due (CRLF). Lettori, editor e strumenti per sottotitoli leggono entrambi, quindi quasi mai è questa la causa di un file di sottotitoli che si comporta male: le due ragioni per cui lo è sono una pipeline di build o un analizzatore severo che rifiuta l’altro, e uno strumento di diff che mostra ogni singola riga come modificata perché le terminazioni differiscono. LF è la scelta predefinita qui perché è quella usata da Unix, macOS e dal web, e perché un file che ce l’ha già resta com’è. Scegliendo CRLF si convertono entrambi i tipi di terminazione esistenti, così un file misto esce coerente.
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.
Un’interruzione di riga è il carattere o la coppia di caratteri che termina una riga, e nell’uso comune ce ne sono due. I sistemi Unix terminano una riga con un carattere, LF; Windows la termina con due, CR poi LF. Entrambi sembrano uguali sullo schermo, ed entrambi vengono letti allo stesso modo dai lettori di sottotitoli, ed è per questo che si tratta di una di quelle differenze che restano invisibili finché qualcosa a valle non se ne occupa.
Ciò che se ne occupa: il controllo di versione, dove ogni riga di un file può apparire cambiata perché sono cambiate le terminazioni; gli script di build e le pipeline che tolgono l’ultimo carattere di una riga e si ritrovano un ritorno a capo vagante quando si aspettavano un’interruzione; gli strumenti che dividono un file su LF e finiscono con un ritorno a capo attaccato all’ultimo campo; e qualsiasi specifica di consegna che nomini una delle due. Un file di sottotitoli che deve essere confrontato con un altro, o concatenato con un altro, è un file le cui interruzioni di riga fanno parte della sua interfaccia.
La pagina è deliberatamente uniforme in ciò che produce. Un file con terminazioni miste — alcune righe CRLF perché è stato modificato su Windows, altre LF perché è stato modificato altrove — esce interamente nello stile scelto, perché la pagina normalizza prima a LF e poi applica la vostra scelta. Non è lo stesso che convertire le terminazioni già corrette e lasciare stare il resto: significa che la risposta a «che stile ha questo file» smette di dipendere da quale riga guardate, che è l’unica versione della risposta utile a uno script.
Un ritorno a capo nudo, la terminazione dei Mac precedenti a OS X, viene gestito insieme al resto. Nessuno lo sceglie più, ma i file continuano a comparire con quella terminazione, e un file le cui righe terminano così è una sola riga per ogni strumento che cerca soltanto LF. Normalizzare prima fa sì che quei file escano corretti invece di uscire come un unico blocco enorme. I due riquadri di questa pagina sono l’unico punto in questa famiglia in cui la differenza è direttamente visibile: un’interruzione di riga è un carattere vero, e un file che in un visualizzatore che non le nasconde sembra avere righe doppie è un file con CRLF. Tutti e dodici i formati sono accettati, perché un’interruzione di riga è una proprietà del testo e non del formato dei sottotitoli: anche una trascrizione in testo semplice ha righe. Nulla viene caricato, e il file viene letto, modificato e scritto nel browser.
Esempi
Convertire un file Unix in terminazioni Windows
Ingresso
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
Uscita
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
Ogni interruzione di riga diventa due caratteri, compresa la riga vuota tra i blocchi: anche quella riga vuota è un’interruzione, e una conversione che la saltasse lascerebbe un file il cui separatore di blocchi è ancora un LF nudo. Il testo atteso scrive le terminazioni come coppie CR LF, così il conteggio si legge direttamente, e nulla d’altro nel file si è mosso.
Convertire un file Windows di nuovo in terminazioni Unix
Ingresso
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Uscita
1
00:00:01,000 --> 00:00:02,000
The room is dark.
La direzione con la conseguenza visibile. Un file che conserva un ritorno a capo vagante appare in alcuni editor come se avesse una riga vuota dopo ogni riga, e in una pipeline di shell come un ritorno a capo incollato alla fine dell’ultimo campo. Il video, gli orari e il testo sono identici nei due file; la differenza è un carattere alla fine di ogni riga, ed è questa la direzione che lo toglie.
Un file modificato su due macchine, reso uniforme
Ingresso
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
Uscita
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
Lo stesso file toccato su due macchine: alcune righe terminano CRLF, altre LF, e un separatore di blocco è scritto in ciascuno dei due modi. L’output è uniforme, ed è questo il punto: il file non significa più qualcosa di diverso a seconda della riga che leggete. Una ricerca e sostituzione ingenua sbaglia questo caso in entrambe le direzioni: lascia stare le righe LF andando in un verso e produce un ritorno a capo raddoppiato andando nell’altro.
Domande frequenti
Come faccio a vedere quali interruzioni di riga usa un file di sottotitoli?
Nella maggior parte degli editor lo stile dell’interruzione è mostrato nella barra di stato, come LF, CRLF o una mescolanza. Da una shell, un file le cui righe terminano CRLF mostra un ritorno a capo finale su ogni riga quando lo guardate con uno strumento che rende visibili i caratteri di controllo. Il test diretto è guardare i byte alla fine di una riga: un singolo 0A è LF e la coppia 0D 0A è CRLF.
Che cosa fa questa pagina con un file di sottotitoli che ha interruzioni di riga miste?
Le rende tutte uguali. Il file viene prima normalizzato a LF e poi convertito allo stile scelto, quindi un file in cui alcune righe terminano in un modo e altre nell’altro esce completamente uniforme invece che parzialmente convertito. I file finiscono in quello stato per essere stati modificati su più di una macchina, e la mescolanza è esattamente ciò che rende illeggibile un confronto con un’altra copia del file.
Le interruzioni di riga cambiano gli orari dei sottotitoli o il testo dei blocchi?
No. I blocchi, i loro numeri, i loro orari di inizio e di fine e le parole al loro interno sono identici prima e dopo; ciò che cambia è l’uno o i due caratteri alla fine di ogni riga. Un lettore legge entrambi i file allo stesso modo, ed è per questo che è una conversione che potete fare per un requisito di consegna senza preoccuparvi dei sottotitoli stessi.
Dovrei convertire le interruzioni di riga dei sottotitoli in LF o in CRLF?
In LF, a meno che qualcosa davanti a voi nomini CRLF. È ciò che si aspettano gli strumenti Unix, la maggior parte delle pipeline di build e la specifica WebVTT, e rende un file un byte più corto per riga. Scegliete CRLF quando lo chiede una specifica di consegna o uno strumento solo per Windows, e notate che la scelta è per file e non globale: un file di sottotitoli consegnato da solo può differire dal resto del progetto.
Perché convertire in CRLF cambia anche la riga vuota tra i sottotitoli?
Perché quella riga vuota è una riga, e la sua terminazione è un’interruzione come qualsiasi altra. SRT separa i blocchi con una riga vuota, quindi un file convertito in CRLF il cui separatore di blocchi restasse un LF nudo avrebbe una terminazione di tipo diverso in mezzo a un file uniforme, che è precisamente la mescolanza che questa pagina esiste per rimuovere. Lo stesso vale per l’ultima riga del file.
Vengono convertiti anche i vecchi ritorni a capo dei Mac?
Sì. Un file le cui righe terminano con un ritorno a capo nudo, lo stile usato da Mac OS prima di OS X, viene normalizzato insieme al resto, quindi esce nello stile scelto invece di restare come un unico blocco lunghissimo. Non c’è un’opzione per CR sul pannello perché nessuno scrive più file in quel modo, ma i file che già lo sono vengono letti e riscritti correttamente.