Перейти к основному содержимому
SubtitleMatrix

Сменить положение субтитров

Текст и оформлениеПеремещение субтитров на экране
Или вставьте текст субтитров

Параметры

Девять заданных ячеек плюс удаление. Записывается маркер {\anN} в порядке цифровой клавиатуры — 7/8/9 верхний ряд, 4/5/6 средний, 1/2/3 нижний — и ставится перед первой строкой каждой реплики. ASS и SSA читают его как настоящий код выравнивания; в SRT это буквальный текст, который соблюдают libass, VLC и mpv, а простые плееры печатают. Существующие координаты \pos никогда не трогаются. Выберите последний вариант, чтобы снять маркеры позиции, а не добавить.

Эта страница переносит каждый субтитр в одну из девяти позиций на экране или снимает маркер положения с файла, где он уже стоит: в начало первой строки записывается код выравнивания {\anN}, где N нумерует клетки как цифровая клавиатура, — 7, 8, 9 по верхнему ряду, 4, 5, 6 посередине и 1, 2, 3 по нижнему. Этот порядок не является порядком чтения, и примеры на странице нужны в том числе для того, чтобы верхний левый угол нельзя было случайно перепутать с нижним левым.

В ASS и SSA маркер — законный код переопределения, который читается обратно в поле субтитра и выводится в документированном порядке после \pos, поэтому файл, не покидающий ASS, переживает оборот точно; в SRT синтаксиса положения нет вовсе, поэтому маркер пишется буквальным текстом в начале строки, и плееры на libass, такие как VLC и mpv, его понимают, а незнающий плеер напечатает четыре символа на экране.

Положение принадлежит всему субтиру, поэтому маркер ставится только перед первой строкой, даже если их две или три, а существующий \pos(x,y) не трогается; выбор удаления — это настоящее указание, а не десятая позиция: он снимает ведущий маркер и сохранённое выравнивание у каждого субтитра, а маркер посреди строки остаётся, потому что это уже реплика, а не положение. Всё выполняется в браузере без отправки на сервер, и таймкоды не меняются никогда.

Примеры

Два обычных субтитра SRT, перенесённые в верхний центр

Вход

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

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

Выход

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} — верхняя средняя клетка, средняя клавиша верхнего ряда цифровой клавиатуры. Маркер ставится в начало текста, а не отдельной строкой, таймкоды, номера субтитров и пустые строки не тронуты, поэтому файл остаётся корректным SRT, который просто несёт четыре лишних символа на субтитр.

Тот же файл в верхнем левом и нижнем левом углу

Вход

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

Выход

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

Верхний левый угол — это 7, а нижний левый — 1, они разнесены на шесть, потому что нумерация идёт по клавиатуре, а не по порядку чтения. Эту схему чаще всего путают вручную, и именно поэтому у каждой из девяти позиций на странице есть свой пример: одна переставленная цифра иначе незаметна, пока кто-нибудь не посмотрит видео.

Перенос субтитра ASS, который уже был в верхнем левом углу

Вход

[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}

Выход

[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}

Старый {\an7} стирается до записи {\an2}, поэтому у субтитра одно выравнивание, а не два: дубликат оставил бы плееру выбирать последнее, а это значение в этом запуске никто не выбирал. Пара курсива остаётся на месте. В ASS маркер — настоящее переопределение, поэтому на экране он текстом не появится.

Удаление маркеров из файла, где их два разных

Вход

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

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

Выход

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

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

Удаление снимает то, что было, а не только выбранную вами позицию, и ничего не пишет обратно. Файл из этого запуска играет в положении плеера по умолчанию, и в этом смысл: только так можно вернуться от маркера к чистому тексту, потому что отсутствие позиции не выражается никакой позицией.

Частые вопросы

Где на экране находится {\an1} и почему нумерация не начинается с верхнего левого угла?

1 — это нижний левый угол. Девять значений идут по цифровой клавиатуре: 7, 8, 9 — верхний ряд клеток, 4, 5, 6 — средний, 1, 2, 3 — нижний. Поэтому верхний левый угол — 7, центр — 5, нижний правый — 3. Список позиций на странице написан в порядке чтения и переводится в эти числа за вас; это главная причина пользоваться им, а не править маркер вручную.

Работает ли страница смены положения с файлами WebVTT, SAMI или TTML?

Нет, и список принимаемых форматов намеренно короткий: только SRT, ASS и SSA. У WebVTT и TTML собственная запись положения — настройки субтитра вроде line: и align: или атрибуты tts:, — и страница их не пишет; приняв такие файлы, она сообщала бы о смене положения, тогда как файл выходил бы без изменений. По той же причине исключён JSON, где поле положения содержит пять горизонтальных значений, а не девять клеток.

Виден ли маркер {\an8} как текст в файле SRT?

Зависит от плеера, и страница этого изменить не может. В SRT нет синтаксиса положения, поэтому {\an8} хранится обычными символами в начале строки. Плееры на libass — среди них VLC и mpv — читают его как указание выравнивания и ставят субтитр соответственно; более простые плееры считают его текстом и покажут четыре символа на экране. Если положение нужно гарантированно на любом устройстве, субтитр придётся вжечь в изображение, а это уже вне возможностей файла субтитров.

Перезапишется ли существующий \pos(x,y) новой позицией?

Нет, \pos остаётся ровно таким, каким был. Пиксельная координата и код выравнивания — разные указания: \an просит плеер вычислить положение для текущего экрана, а \pos прибивает субтитр к одной точке при одном разрешении. Удаление поставленного вручную \pos отменило бы осознанную работу, поэтому страница пишет только выравнивание и снимает только прежнее выравнивание, но никогда координату.

Субтитр занимает две строки — получит ли маркер каждая строка при смене положения?

Маркер получает только первая строка, потому что положение принадлежит субтиру, а не строке. Маркер на каждой строке был бы в лучшем случае избыточен, а в ASS это был бы второй блок переопределения, делающий то же, что первый. При удалении действует обратное правило: снимается только маркер в самом начале первой строки, а написанный посреди фразы считается частью реплики.

Что будет, если применить одну и ту же позицию дважды?

Ничего: второй запуск даёт побайтово тот же файл и сообщает, что ни один субтитр не изменён. Страница стирает существующий маркер перед записью нового, поэтому повторное применение той же позиции снимает и возвращает одни и те же четыре символа. Это важно, когда файл ходит по кругу проверок: повторный запуск для уверенности ничего не сдвинет, и скачается тот же файл, а не копия с тихо изменённым содержимым.

Похожие инструменты