Rimuovere i tag override ASS
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 ripulisce i codici di override da un file ASS o SSA: gli intervalli di stile, i tempi karaoke, i blocchi di effetti rimasti e il posizionamento. Ciò che torna indietro è testo semplice con i suoi tempi — le parole, gli orari dei blocchi e la struttura del file, con le righe che finiscono dove le mette il loro stile con nome.
ASS è il formato che sa dire di più, e gran parte di ciò che sa dire è scritta come codici di override dentro il testo di una riga. Alcuni sono stile che lo strumento modella — `{\i1}`, `{\b1}`, `{\c&H...&}`, `{\k50}` — e altri sono effetti che non modella: dissolvenze, movimenti, ridimensionamenti, sfocature, tutti scritti come blocchi della stessa forma. Quei blocchi non modellati restano nel testo durante la lettura, deliberatamente, perché mangiare markup che lo strumento non sa leggere significherebbe perdere dati. Questa è la pagina che li spazza via.
Anche il posizionamento viene ripulito, ed è l’unica cosa che questa pagina fa oltre a rimuovere markup: la posizione di una riga è una proprietà dell’intero evento e non un intervallo sopra il suo testo, quindi una riga posizionata torna là dove la colloca il suo stile con nome. È questo che rende l’output davvero semplice. Il foglio di stile con nome resta intatto: un blocco il cui stile è grassetto continua a sembrare grassetto, perché il grassetto appartiene allo stile e non al testo. Un codice resta, e la pagina lo dice invece di lasciarvelo scoprire: un allineamento a nove celle come `{\an8}` viene conservato così com’è. Codifica anche la posizione verticale oltre a quella orizzontale, e l’idea di allineamento dello strumento copre solo sinistra, centro e destra, quindi non c’è dove tenere l’altra metà: capirlo a metà produrrebbe un file che torna indietro sbagliato. Nulla viene caricato; un file che non ha nulla da rimuovere torna byte per byte.
Esempi
Stile e un blocco di effetti rimasto
Ingresso
[Script Info]
Title: fade
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\fad(500,500)}{\i1}hello{\i0}
Uscita
[Script Info]
Title: fade
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,hello
`{\fad(500,500)}` chiede al lettore di far apparire e sparire la riga con una dissolvenza di mezzo secondo per lato. Lo strumento non l’ha mai modellato, quindi è rimasto nel testo fino a questa esecuzione, e la coppia di corsivo accanto se ne va allo stesso modo lasciando la riga. Nulla nell’output registra che la dissolvenza sia mai esistita.
Una riga posizionata
Ingresso
[Script Info]
Title: position
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}hello there
Uscita
[Script Info]
Title: position
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,hello there
Alla riga non viene più detto dove stare, quindi ricade là dove la colloca lo stile indicato sull’evento. È l’unica parte dell’esecuzione che non si limita a togliere markup, ed è il motivo per cui la pagina è quella giusta per un file che deve diventare semplice e non solo perdere l’enfasi.
Un allineamento a nove celle che resta
Ingresso
[Script Info]
Title: alignment
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\an8}hello there
Uscita
[Script Info]
Title: alignment
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\an8}hello there
Questo torna invariato, e non è una dimenticanza. `{\an8}` dice alto e centro insieme, mentre l’allineamento dello strumento copre solo sinistra, centro e destra: la metà verticale non ha dove vivere, quindi il tag viene conservato intero invece di essere capito a metà. Il codice di posizione viene ripulito, questo no.
Domande frequenti
Perché un tag di allineamento a nove celle sopravvive a questa pagina?
Perché lo strumento non può rappresentarlo esattamente. Un allineamento come `{\an8}` nomina una delle nove celle, che codifica insieme una posizione orizzontale e una verticale, mentre l’allineamento dello strumento ha solo sinistra, centro e destra. Conservare la metà orizzontale e buttare l’altra renderebbe sbagliato il viaggio di andata e ritorno del file, quindi il tag viene preservato alla lettera. Il codice di posizione viene ripulito, quello di allineamento no, e la pagina ve lo dice invece di lasciarvelo notare.
Che cos’è un blocco di override e perché sta nel testo?
È un insieme di istruzioni scritto dentro il testo di una riga, tra parentesi graffe, che dice al lettore di fare qualcosa a quella riga: cambiare lo stile, animarla, farla apparire e sparire, spostarla. Lo strumento modella il sottoinsieme di stile più comune e lo legge nella propria struttura, ma lascia il resto esattamente dov’era — dissolvenze, movimenti e sfocature vengono conservati alla lettera invece di essere buttati, perché buttare markup che il lettore non capisce significherebbe perdere dati in silenzio. Questa pagina è il punto in cui finalmente se ne vanno.
Ripulire i codici di override cambia gli orari o il testo?
No. Le parole tornano identiche byte per byte, ogni blocco conserva inizio e fine al millisecondo e l’ordine dei blocchi è quello del file. Le interruzioni di riga dentro un blocco fanno parte del blocco e non del suo stile, quindi restano dove il file le ha messe. Ciò che cambia sono le istruzioni intorno alle parole e, in alcuni casi, la posizione della riga sullo schermo.
L’output si riprodurrà ancora correttamente dopo la rimozione dei codici?
Sì, e in modo più prevedibile di prima. Un codice di override che un lettore non capisce viene nella migliore delle ipotesi ignorato e nella peggiore interpretato male, e i diversi lettori non sono d’accordo proprio sui codici di effetto. Il testo semplice con i suoi tempi non ha questa ambiguità. Se il file contava sul posizionamento per mettere un sottotitolo sopra qualcosa di preciso nell’inquadratura, quel posizionamento è sparito e la riga starà dove la mette lo stile.
Questa pagina rimuove anche gli stili con nome dal foglio di stile?
No: il foglio di stile e lo stile a cui punta ogni blocco restano esattamente com’erano. La pagina lavora sui codici scritti dentro il testo di una riga, e un blocco il cui stile con nome è grassetto continua a sembrare grassetto dopo l’esecuzione, perché il grassetto viene dallo stile e non dal testo della riga. Ripulire un foglio di stile è un lavoro diverso e non c’è ancora una pagina per farlo.
Posso usare questa pagina su un file SRT o solo su ASS e SSA?
Potete trascinare qualunque formato che il sito legge. Su un file SRT o WebVTT la prima metà fa comunque il suo lavoro — gli intervalli di stile se ne vanno — e la spazzata non trova nulla, dato che i blocchi tra graffe non compaiono in quei formati. Un file che non ha né stile né blocchi tra graffe torna byte per byte, che è il risultato onesto di un’esecuzione senza nulla da fare.