Ir para o conteúdo principal
SubtitleMatrix

Mudar a posição das legendas

Texto e estiloMover as legendas na tela
Ou cole o texto da legenda

Opções

Nove células predefinidas mais uma remoção. A marca gravada é {\anN} na ordem do teclado numérico — 7/8/9 é a linha de cima, 4/5/6 a do meio, 1/2/3 a de baixo — e vai na frente da primeira linha de cada bloco. ASS e SSA a leem de volta como um código de alinhamento real; no SRT é texto literal que libass, VLC e mpv respeitam e reprodutores mais simples imprimem. Coordenadas \pos existentes nunca são tocadas. Escolha a última opção para remover as marcas de posição em vez de acrescentar uma.

Esta página move todos os blocos de um arquivo de legenda para uma de nove posições na tela, ou remove a marcação de posição de um arquivo que já tem uma. Ela grava um código de alinhamento `{\anN}` no início da primeira linha de cada bloco, em que N numera as células como um teclado numérico: `7` `8` `9` na fileira de cima, `4` `5` `6` na do meio, `1` `2` `3` na de baixo. Essa disposição não é ordem de leitura, e os exemplos desta página existem principalmente para tornar impossível escolher canto superior esquerdo e acabar com canto inferior esquerdo por acidente.

A marcação é a única peça de posicionamento em que três formatos concordam. No ASS e no SSA ela é um código de override legítimo, lido de volta para o bloco como campo próprio e reescrito na ordem documentada atrás de qualquer `\pos` — então um arquivo que nunca sai do ASS atravessa a ida e volta exatamente. No SRT não existe sintaxe de posicionamento, então a marcação é gravada como texto literal no começo da linha: tocadores baseados em libass, como VLC e mpv, a respeitam, e um tocador que não a conhece imprime os caracteres na tela. A página diz isso com clareza em vez de prometer um posicionamento que não pode garantir.

Posição é tratada como propriedade do bloco inteiro, então a marcação vai na frente da primeira linha só, mesmo quando o bloco tem duas ou três linhas. Um `\pos(x,y)` existente é deixado em paz: uma coordenada em pixels prende o bloco a um tamanho de tela e quebra em todos os outros, enquanto um código de alinhamento deixa o tocador calcular a posição por conta própria, e mover um bloco que alguém posicionou à mão não é o que esta página foi chamada a fazer.

Escolher Remover na lista de posições é uma instrução real, não uma décima posição. Ela retira a marcação do início e o alinhamento guardado de todos os blocos — o único caminho para devolver um SRT à forma simples, sem marcação —, enquanto uma marcação escrita no meio de uma linha fica onde está, porque essa é diálogo e não posicionamento. Nada é enviado e os timecodes nunca são tocados.

Exemplos

Dois blocos SRT simples movidos para o centro superior

Entrada

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

2
00:00:03,000 --> 00:00:04,000
Second line.

Saída

1
00:00:01,000 --> 00:00:02,000
{\an8}Hello there.

2
00:00:03,000 --> 00:00:04,000
{\an8}Second line.

`\an8` é a célula do centro superior — a tecla do meio da fileira de cima de um teclado numérico. A marcação vai no começo do texto, não em uma linha própria, e os timecodes, os números de bloco e as linhas em branco não são tocados, então o arquivo continua sendo um SRT válido que só carrega quatro caracteres a mais por bloco.

O mesmo arquivo no canto superior esquerdo e no inferior esquerdo

Entrada

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

Saída

1
00:00:01,000 --> 00:00:02,000
{\an7}Hello there.

O canto superior esquerdo é `7`, enquanto o inferior esquerdo é `1` — seis de distância, porque a numeração segue um teclado e não a ordem de leitura. Esse é o mapeamento que mais se erra à mão, e é por isso que cada uma das nove predefinições tem um caso próprio nesta página: um único dígito trocado é invisível até alguém assistir ao vídeo.

Mover um bloco ASS que já estava no canto superior esquerdo

Entrada

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,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,,{\an7\i1}Hello there{\i0}

Saída

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,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,,{\an2}{\i1}Hello there{\i0}

O `\an7` antigo é limpo antes de o `\an2` ser gravado, então o bloco carrega um alinhamento só em vez de dois — uma duplicata deixaria o tocador tomando o último que encontrasse, que é um valor que ninguém nesta execução escolheu. O par de itálico fica exatamente onde estava. No ASS a marcação é um código de override de verdade, então nada aqui aparece como texto na tela.

Remover marcações de um arquivo que tem duas diferentes

Entrada

1
00:00:01,000 --> 00:00:02,000
{\an8}Hello there.

2
00:00:03,000 --> 00:00:04,000
{\an2}Second line.

Saída

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

2
00:00:03,000 --> 00:00:04,000
Second line.

Remover retira o que estiver ali, não só a predefinição que você teria escolhido, e não grava nada de volta. Um arquivo que sai desta execução toca na posição padrão do próprio tocador, e é esse o ponto: é o único caminho de volta de uma marcação para texto simples, já que nenhuma posição se expressa pela ausência de uma.

Perguntas frequentes

Em que posição da tela fica `{\an1}`, e por que a contagem não começa no canto superior esquerdo?

`1` é o canto inferior esquerdo. Os nove valores seguem o teclado numérico: `7` `8` `9` é a fileira de cima de células, `4` `5` `6` a fileira do meio e `1` `2` `3` a de baixo. Assim, o canto superior esquerdo é `7`, o centro é `5` e o canto inferior direito é `3`. A lista de posições da página está escrita em ordem de leitura e é traduzida para esses números para você, que é o principal motivo de usá-la em vez de editar a marcação à mão.

Esta página funciona em arquivos WebVTT, SAMI ou TTML?

Não, e a lista de formatos aceitos é curta de propósito: só SRT, ASS e SSA. WebVTT e TTML têm sintaxe de posicionamento própria — ajustes de bloco como `line:` e `align:`, ou atributos `tts:` — e esta página não os grava; aceitá-los significaria dizer que a posição mudou enquanto o arquivo sairia intacto. O mesmo raciocínio exclui o JSON, cujo campo de posição tem cinco valores horizontais em vez de nove células.

A marcação fica visível como texto dentro de um arquivo SRT?

Depende do tocador, e esta página não pode mudar isso. O SRT não tem sintaxe de posicionamento, então `{\an8}` fica guardado como caracteres comuns no começo da linha. Tocadores construídos sobre libass — VLC e mpv entre eles — leem a marcação como instrução de alinhamento e posicionam o bloco de acordo; tocadores mais simples a tratam como texto e mostram os caracteres na tela. Se você precisa de posicionamento garantido em todo aparelho, o bloco tem de ser gravado na imagem, o que está fora do que um arquivo de legenda consegue fazer.

Um `\pos(x,y)` existente será sobrescrito pela posição nova?

Não — o `\pos` é deixado exatamente como estava. Uma coordenada em pixels e um código de alinhamento são instruções diferentes: `\an` pede ao tocador que calcule a posição para a tela em que está, enquanto `\pos` prende o bloco a um ponto em uma resolução. Remover um `\pos` colocado à mão desfaria trabalho deliberado, então esta página só grava alinhamento e só limpa um alinhamento anterior, nunca uma coordenada.

Um bloco tem duas linhas — cada linha ganha sua própria marcação?

Só a primeira linha recebe uma, porque a posição pertence ao bloco e não à linha. Uma marcação em cada linha seria no mínimo redundante e, no ASS, seria um segundo bloco de override fazendo a mesma coisa que o primeiro. Quando a marcação é removida, a mesma regra vale ao contrário: só uma marcação no início absoluto da primeira linha é retirada, e uma escrita no meio da frase é tratada como parte do diálogo.

O que acontece se eu aplicar a mesma posição duas vezes?

Nada — a segunda execução produz um arquivo idêntico byte a byte e informa que nenhum bloco mudou. A página limpa qualquer marcação existente antes de gravar a nova, então reaplicar uma predefinição que o arquivo já tem remove e recoloca os mesmos caracteres. Isso importa quando um arquivo entra em um ciclo de revisão: rodar a página de novo para ter certeza de que a posição foi aplicada não desloca nada, e o download é o mesmo arquivo, não uma cópia com algo diferente em silêncio.

Ferramentas relacionadas