Змінити позицію субтитрів
Або вставте текст субтитрів
Параметри
Дев’ять готових комірок плюс вилучення. Записується маркер {\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) лишається недоторканим: піксельна координата прив’язує репліку до одного розміру екрана й ламається на кожному іншому, а код вирівнювання дає плеєру вирахувати позицію самому, і рухати репліку, яку хтось поставив руками, — не те, про що цю сторінку просили.
Вибір Remove зі списку позицій — справжня інструкція, а не десята позиція. Він знімає провідний маркер і збережене вирівнювання з кожної репліки — єдиний спосіб повернути SRT до його простого, вільного від маркерів вигляду, — а маркер, написаний посеред рядка, лишається на місці, бо той є діалогом, а не розміщенням. Нічого не завантажується, і таймкоди ніколи не чіпаються.
Приклади
Дві прості репліки 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.
Remove знімає те, що було, а не лише той варіант, який ви обрали б, і нічого не записує назад. Файл після цього прогону грає на типовій позиції самого плеєра, і в цьому сенс: це єдиний шлях від маркера назад до простого тексту, бо жодна позиція не виражається відсутністю позиції.
Часті запитання
У якій позиції екрана стоїть {\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, чиє поле позиції має п’ять горизонтальних значень, а не дев’ять клітинок.
Чи видно маркер як текст у файлі SRT?
Залежить від плеєра, і ця сторінка цього не змінює. У SRT немає синтаксису розміщення, тому {\an8} зберігається як звичайні символи на початку рядка. Плеєри на основі libass — VLC і mpv серед них — читають його як інструкцію вирівнювання й ставлять репліку відповідно; простіші плеєри трактують його як текст і покажуть чотири символи на екрані. Якщо потрібне гарантоване розміщення на кожному пристрої, репліку треба впалювати в зображення, а це поза тим, що може файл субтитрів.
Чи буде наявний \pos(x,y) перезаписаний новою позицією?
Ні — \pos лишається точно як був. Піксельна координата й код вирівнювання — різні інструкції: \an просить плеєр вирахувати позицію для того екрана, на якому він є, а \pos прив’язує репліку до однієї точки в одному розширенні. Зняти поставлений руками \pos означало б скасувати навмисну роботу, тому сторінка пише лише вирівнювання й знімає лише попереднє вирівнювання, ніколи координату.
Репліка має два рядки — чи отримує кожен рядок власний маркер?
Лише перший рядок отримує маркер, бо позиція належить репліці, а не рядку. Маркер на кожному рядку був би щонайменше надлишковим, а в ASS — другим блоком перевизначення, що робить те саме, що й перший. Коли маркер знімають, діє те саме правило навпаки: знімається лише маркер на самому початку першого рядка, а написаний посеред речення вважається частиною діалогу.
Що буде, якщо застосувати ту саму позицію двічі?
Нічого — другий прогін дає байт у байт ідентичний файл і повідомляє, що жодна репліка не змінилася. Сторінка знімає будь-який наявний маркер перед тим, як писати новий, тому повторне застосування вже наявного варіанта знімає й додає ті самі чотири символи. Це важить, коли файл ходить по колу перевірок: повторний прогін, щоб переконатися, що позицію застосовано, нічого не зсуне, а завантаження буде тим самим файлом, а не копією з чимось тихо іншим.