Cambiare il colore dei sottotitoli
Oppure incollare il testo dei sottotitoli
Opzioni
Scegliere il colore in cui diventa l’intero file. I colori esistenti su una riga vengono sostituiti anziché sovrapposti, quindi un’esecuzione lascia esattamente un colore per riga; grassetto, corsivo, sottolineato e temporizzazioni karaoke restano intatti. Viene scritto solo #rrggbb: è l’unica grafia che tutti e nove i formati accettati sanno portare esattamente. Non ogni lettore disegna il colore in linea, e SRT non ha uno standard per farlo: il file conterrà il colore, ma se si veda dipende dal lettore.
Questa pagina colora ogni riga di un file di sottotitoli con un unico colore. Legge il file per ciò che è davvero invece che per l’estensione, quindi la stessa esecuzione funziona su nove formati, e ciascuno riceve il colore nella notazione che già comprende: `<font color="#rrggbb">` in SRT, WebVTT, SBV e SAMI, un blocco di override in ASS e SSA, un `<span tts:color>` in TTML, l’array di tag in JSON e lo stesso markup in linea dentro le celle tra virgolette di un CSV.
Il colore che scegliete sostituisce quello che c’era invece di impilarsi sopra. Una riga arrivata in parte verde torna tutta nel nuovo colore: un unico intervallo sull’intera riga invece di un `<font>` dentro un `<font>`, che alcuni lettori mostrano con il colore interno e altri ignorano del tutto. Grassetto, corsivo, sottolineato e tempi di karaoke restano dove sono, e un intervallo formattato continua a coprire esattamente i caratteri che copriva prima.
È un solo colore per l’intero file, per scelta. Il colore dei sottotitoli è di solito una decisione di consegna — un bianco di casa, un giallo che sopravvive a una scena luminosa, un colore riservato a un certo tipo di interlocutore — e un file che avesse bisogno di due colori richiederebbe che qualcuno decida quali righe prendono quale, che è un lavoro da editor di testo più che un singolo valore su un pannello. Un blocco senza testo non riceve nulla: non c’è un intervallo da colorare, e un intervallo di colore a lunghezza zero sarebbe un tag grande quanto nulla.
Nulla viene caricato e nulla esce dalla scheda del browser. Il colore è una delle poche parti di stile che un file di sottotitoli può portare senza un renderer accanto, ma se lo spettatore lo veda è una decisione del lettore: questa pagina scrive il marcatore, e la sezione delle domande qui sotto dice chiaramente da quale parte di quel confine si colloca.
Esempi
Due blocchi SRT senza formattazione
Ingresso
1
00:00:01,000 --> 00:00:02,000
Hello there.
2
00:00:03,000 --> 00:00:04,000
Second line.
Uscita
1
00:00:01,000 --> 00:00:02,000
<font color="#ffcc00">Hello there.</font>
2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Second line.</font>
Un `<font>` per riga, avvolto attorno a tutta la riga, e i timecode e le righe vuote sono esattamente come sono arrivati. Il tag è un intervallo sulla riga invece che una proprietà del blocco, ed è per questo che un blocco con due righe separate da un’interruzione dura riceve due tag invece di uno che attraversa l’interruzione.
Una riga che portava già un colore e un corsivo
Ingresso
1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> <font color="#00ff00">there</font>.
Uscita
1
00:00:01,000 --> 00:00:02,000
<font color="#ffcc00"><i>Hello</i> there.</font>
L’intervallo verde viene rimosso prima che il nuovo colore venga applicato, quindi il risultato è un unico `<font>` attorno alla riga con il corsivo ancora all’interno, non un `<font>` dentro un `<font>`, dove le regole di annidamento dipendono dal lettore e l’esito è diverso in silenzio su ciascuno. Ciò che era verde ora ha lo stesso colore di tutto il resto, che è la lettura onesta di un pannello che chiede un colore solo.
Lo stesso blocco su un file ASS
Ingresso
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize
Style: Default,Arial,20
[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,Hello there
Uscita
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize
Style: Default,Arial,20
[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,{\c&H0000CCFF&}Hello there{\c}
ASS non ha `<font>`; il colore è un codice di override che si apre prima del testo e si chiude con un `{\c}` nudo dopo, così il resto della riga non viene colorato per sbaglio. Il `PrimaryColour` del foglio di stile non viene modificato: l’override a livello di blocco è un’istruzione più forte ed è l’unica che si applichi a questo blocco soltanto.
Un blocco senza testo
Ingresso
1
00:00:01,000 --> 00:00:02,000
2
00:00:03,000 --> 00:00:04,000
Hi.
Uscita
1
00:00:01,000 --> 00:00:02,000
2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Hi.</font>
Il blocco vuoto resta vuoto invece di ricevere un `<font>` attorno al nulla. Un blocco vuoto è già un problema strutturale — le pagine di controllo lo segnalano — e un tag di markup senza testo dentro non lo risolverebbe, lo nasconderebbe soltanto a una ricerca nel testo. Il blocco che ha del testo viene colorato normalmente.
Domande frequenti
Quali formati colora questa pagina, e che aspetto ha il marcatore in ciascuno?
Nove: SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON e CSV. SRT, WebVTT, SBV e SAMI accettano `<font color="#rrggbb">`, ASS e SSA un override `{\c&H…&}` chiuso da `{\c}`, TTML un `<span tts:color="#rrggbb">`, JSON scrive il colore come intervallo di tag sulla riga, e un CSV conserva lo stesso markup `<font>` dentro la cella di testo tra virgolette. I formati che non hanno dove mettere un colore in linea non sono accettati affatto da questa pagina: un file LRC o MicroDVD non ha sintassi per il colore, quindi un’esecuzione lì riporterebbe un cambiamento senza scrivere nulla.
Perché l’output ASS dice `&H0000CCFF&` quando ho scelto `#ffcc00`?
Perché un colore ASS viene scritto con i byte nell’ordine opposto: `&HAABBGGRR`, dove l’alfa viene per primo e poi le coppie blu, verde e rosso. `#ffcc00` è rosso 255, verde 204, blu 0, quindi diventa `00` di alfa, `00` di blu, `CC` di verde, `FF` di rosso: `&H0000CCFF&`. Il valore è il colore che avete scelto, e un lettore che lo mostra mostra lo stesso giallo; i numeri sembrano solo riordinati perché il formato li memorizza al contrario.
Ogni lettore video mostrerà davvero il nuovo colore?
No, ed è il confine onesto di questa pagina. `<font color>` non fa parte della specifica SRT: è markup che la maggior parte dei lettori tollera e alcuni ignorano, e i codici di override ASS sono rispettati dai lettori basati su libass come VLC e mpv ma non da ogni decoder hardware da salotto. La pagina scrive il marcatore correttamente e il risultato è verificabile nel file stesso; se un particolare lettore lo mostri è una decisione di quel lettore. Se il colore deve essere garantito sullo schermo, deve essere inciso nell’immagine, che è un lavoro diverso.
Che cosa succede ai colori che il file aveva già?
Vengono sostituiti, non sovrapposti. Ogni intervallo di colore su una riga viene prima rimosso e poi viene aggiunto un unico intervallo che copre l’intera riga, quindi il risultato è un solo `<font>` invece di un `<font>` dentro un `<font>`. I tag di colore annidati sono il caso in cui i lettori sono più in disaccordo: alcuni prendono quello interno, altri quello esterno, altri appiattiscono entrambi, quindi un file passato da questa pagina ha dentro una sola risposta non ambigua.
La pagina colora singole parole o l’intero file di sottotitoli?
L’intero file, un colore solo, ogni riga. Non c’è un ambito per blocco o per parola su questa pagina, e volutamente: il pannello contiene un unico valore, e un’esecuzione il cui risultato dipendesse da quali blocchi avevate selezionato non sarebbe riproducibile a partire dal file. Una riga che ha bisogno di una parola evidenziata è una modifica di testo più che un cambio di colore, e le pagine di ricerca e sostituzione di questo sito possono fare la parte mirata di quel lavoro.
Grassetto, corsivo, sottolineato e tempi di karaoke restano quando si applica il colore?
Restano, e i loro intervalli rimangono attaccati agli stessi caratteri. Solo gli intervalli di colore vengono rimossi e riaggiunti; gli altri quattro tipi non vengono toccati, quindi una parola in corsivo dentro una riga resta in corsivo dentro il nuovo colore. Su ASS ciò significa che `{\i1}` e il suo `{\i0}` di chiusura stanno ancora negli stessi punti attorno al testo, con l’override di colore aperto prima di loro e chiuso dopo.