Remover tags de override do ASS
Ou cole o texto da legenda
Opções
Uma caixa, sete opções, e cada opção tem sua própria página. Itálico, Negrito, Sublinhado e Cor removem aquele tipo de intervalo e deixam o resto do estilo da linha em paz. Tudo remove cada intervalo que a ferramenta modela — esses quatro mais a sincronização karaokê — e deixa todo o resto do texto intocado. HTML faz o mesmo e depois também varre a marcação entre colchetes angulares que sobrou no texto porque a ferramenta não a modela, como as tags de falante <v Bob> e <c.className> do VTT. ASS faz o mesmo para os blocos de substituição, limpando os códigos {...} que não foram reconhecidos na leitura, como {\fad(500,500)}. Esta página preenche a caixa com a opção que seu título nomeia e não lista nenhuma outra.
A taxa de quadros em que os tempos são contados. Nas páginas de formato é o que o MicroDVD precisa, porque ele guarda os tempos como números de quadro. Nas páginas de taxa de quadros é a taxa com que o arquivo foi cronometrado — a versão para a qual as legendas foram feitas — e a segunda caixa da página recebe a taxa do vídeo com que você vai usá-las. 23,976, 24, 25, 29,97, 30, 50, 59,94 e 60 são as comuns. Errar isso desloca toda a linha do tempo e, nas páginas de taxa de quadros, desloca por uma proporção em vez de por uma quantidade fixa.
Esta página limpa os códigos de override de um arquivo ASS ou SSA: os trechos de estilo, a marcação de karaokê, os blocos de efeito que sobraram e o posicionamento. O que volta é texto cronometrado simples — as palavras, os tempos dos blocos e a estrutura do próprio arquivo, com as linhas no lugar em que o estilo nomeado delas as coloca.
O ASS é o formato que mais consegue dizer, e a maior parte do que ele diz é escrita como códigos de override dentro do texto de uma linha. Alguns desses códigos são estilo que a ferramenta modela — `{\i1}`, `{\b1}`, `{\c&H...&}`, `{\k50}` — e alguns são efeitos que ela não modela: fades, movimentos, escala, desfoque, todos escritos como blocos da mesma forma. Esses blocos não modelados ficam no texto enquanto o arquivo é lido, de propósito, porque comer marcação que a ferramenta não consegue ler seria perder dados. Esta é a página que os varre.
O posicionamento também é limpo aqui, e é a única coisa que esta página faz que não é simplesmente remover marcação: onde uma linha fica é propriedade do evento inteiro e não de um trecho sobre o texto, então uma linha posicionada volta para onde o estilo nomeado dela a coloca. É isso que torna a saída genuinamente simples. A folha de estilos nomeados em si fica em paz — um bloco cujo estilo é negrito continua parecendo negrito, porque o negrito pertence ao estilo e não ao texto.
Um código fica, e a página diz isso em vez de deixar você descobrir: um alinhamento de nove células como `{\an8}` é preservado como escrito. Ele codifica posicionamento vertical além do horizontal, e a ideia de alinhamento da própria ferramenta cobre só esquerda, centro e direita, então não há onde guardar a outra metade. Entendê-lo pela metade significaria um arquivo que faz a ida e volta errado. Nada é enviado; um arquivo sem nada a remover volta byte a byte.
Exemplos
Estilo e um bloco de efeito que sobrou
Entrada
[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}
Saída
[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)}` pede ao tocador que faça a linha aparecer e desaparecer em meio segundo para cada lado. A ferramenta nunca o modelou, então ele ficou no texto até esta execução o varrer — e o par de itálico ao lado vai pelo mesmo caminho, deixando a linha em si. Nada na saída registra que o fade algum dia esteve ali.
Uma linha posicionada
Entrada
[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
Saída
[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
A linha não recebe mais instrução de onde ficar, então cai onde quer que o estilo nomeado no evento a coloque. Esta é a única parte da execução que não é simplesmente remover marcação, e é por isso que a página é a certa para um arquivo que precisa se tornar simples, não apenas sem ênfase.
Um alinhamento de nove células que fica
Entrada
[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
Saída
[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
Este volta inalterado, e isso não é uma falha. `{\an8}` diz topo e centro ao mesmo tempo, enquanto o alinhamento da ferramenta cobre só esquerda, centro e direita — então a metade vertical não tem onde morar, e a marcação é preservada inteira em vez de entendida pela metade. O código de posição é limpo; este não.
Perguntas frequentes
Por que uma marcação de alinhamento de nove células sobrevive a esta página?
Porque a ferramenta não consegue representá-la com exatidão. Um alinhamento como `{\an8}` nomeia uma de nove células, o que codifica uma posição horizontal e uma vertical ao mesmo tempo, enquanto o alinhamento da ferramenta só tem esquerda, centro e direita. Guardar a metade horizontal e descartar a outra faria o arquivo errar na ida e volta, então a marcação é preservada literalmente. O código de posição é limpo; o de alinhamento não é, e a página informa isso em vez de deixar você perceber sozinho.
O que é um bloco de override, e por que ele está no texto?
É um conjunto de instruções escrito dentro do texto de uma linha, entre chaves, que diz ao tocador para fazer algo com aquela linha: mudar o estilo, animar, esmaecer, mover. A ferramenta modela o subconjunto comum de estilo e o lê para a própria estrutura, mas deixa o resto exatamente onde encontrou — fades, movimentos, desfoques e afins são mantidos literalmente em vez de descartados, porque descartar marcação que o leitor não entende seria perder dados em silêncio. Esta página é onde eles finalmente saem.
Limpar os códigos de override muda os tempos ou o texto?
Não. As palavras voltam byte a byte, cada bloco mantém início e fim no milissegundo e a ordem dos blocos é a do arquivo. Quebras de linha dentro de um bloco fazem parte do bloco e não do seu estilo, então ficam onde o arquivo as colocou. O que muda são as instruções em volta das palavras e, em alguns casos, onde a linha fica na tela.
A saída ainda toca corretamente depois que os códigos somem?
Toca, e de forma mais previsível do que antes. Um código de override que um tocador não entende é, no melhor caso, ignorado, e no pior, mal interpretado, e os tocadores discordam especialmente sobre os códigos de efeito. Texto cronometrado simples não tem essa ambiguidade. Se o arquivo dependia do posicionamento para colocar uma legenda sobre algo específico na cena, esse posicionamento se foi e a linha fica onde o estilo a coloca.
Isto também remove os estilos nomeados da folha de estilos?
Não — a folha de estilos e o estilo para o qual cada bloco aponta ficam exatamente como estavam. A página trabalha nos códigos escritos dentro do texto de uma linha, e um bloco cujo estilo nomeado é negrito continua parecendo negrito depois, porque o negrito vem do estilo e não do texto da linha. Limpar uma folha de estilos é outro trabalho e ainda não há página para ele.
Posso usar esta página em um arquivo SRT, ou só em ASS e SSA?
Você pode entregar qualquer um dos formatos que o site lê. Em um arquivo SRT ou WebVTT a primeira metade continua fazendo seu trabalho — os trechos de estilo saem — e a varredura simplesmente não encontra nada, já que blocos entre chaves não ocorrem nesses formatos. Um arquivo sem estilo e sem blocos entre chaves volta byte a byte, que é o resultado honesto de uma execução sem nada a fazer.