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

Перенести субтитры по длине строки

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

Параметры

Одно поле, пять вариантов, и у каждого своя страница. «Переложить по числу колонок» укладывает каждую реплику в заданное число колонок, что может как укоротить слишком длинную строку, так и подтянуть короткую. «Разбить только длинные строки» трогает только строки длиннее лимита и оставляет остальные точно как были. «Выровнять существующие строки» сохраняет число строк в каждой реплике и перекладывает слова между ними, пока самая длинная не станет как можно короче. «Соединить» ставит каждую реплику в одну строку. «Ограничить» не трогает реплики, уже укладывающиеся в число строк. Эта страница заполняет поле вариантом, названным в её заголовке, и других не предлагает.

Считается в колонках, а не символах: китайский или японский иероглиф занимает две, латинская буква с диакритикой — одну. 42 — обычное число для субтитров латиницей. Уменьшите — строки станут короче, но их будет больше; ничего никогда не обрезается.

В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.

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

Ничего не обрезается ради числа: страница двигает переносы, а слова остаются целыми, и строку, которую никакой перенос не укладывает в лимит, она честно называет в отчёте. Строка, начинающаяся с тире, означает смену говорящего и служит стеной: текст по обе стороны от неё переразбивается отдельно, но две такие строки никогда не сливаются в одну. Принимаются одиннадцать форматов с несколькими строками внутри реплики — SRT, WebVTT, ASS, SSA, SBV, SAMI, LRC, MicroDVD, TTML, JSON и CSV, — а обычный текст исключён, потому что в нём одна строка и есть одна реплика.

Примеры

Одна реплика разбита слишком рано, другая слишком поздно

Вход

1
00:00:01,000 --> 00:00:04,000
We could take the train
and be there by six

2
00:00:05,000 --> 00:00:09,000
I told you we would miss the last train if we stayed any longer

Выход

1
00:00:01,000 --> 00:00:04,000
We could take the train and be there by
six

2
00:00:05,000 --> 00:00:09,000
I told you we would miss the last train if
we stayed any longer

Две противоположные болезни в одном файле, обе исправлены при длине по умолчанию 42 столбца. Первая реплика пришла строками в 23 и 19 столбцов, вместе 43 — на один столбец больше лимита, — поэтому страница соединяет их и сразу ломает на слово раньше, оставляя 39 и 3. Вторая была одной строкой в 63 столбца и выходит как 42 и 20. Слова не добавлены и не потеряны: двигались только переносы, а хвост из трёх столбцов — честная цена жадной укладки.

Китайская строка, где один иероглиф — два столбца

Вход

WEBVTT

00:00:01.000 --> 00:00:04.000
你好世界今天天气很好我们出去玩吧顺便买点东西回来

Выход

WEBVTT

00:00:01.000 --> 00:00:04.000
你好世界今天天气很好我们出去玩吧顺便买点东
西回来

Двадцать четыре китайских иероглифа — это сорок восемь столбцов, поэтому строка выходит за лимит и ломается после двадцать первого. Инструмент, считающий символы, назвал бы двадцать четыре короткой строкой и оставил бы её, и двухстрочный китайский субтитр оказался бы вдвое шире английского рядом. Пробелов в тексте нет, поэтому каждый иероглиф служит точкой разрыва, и разрыв попадает в середину фразы — так китайские субтитры и верстают.

Два говорящих, две строки

Вход

1
00:00:01,000 --> 00:00:04,000
- Then we walk
- All the way home

Выход

1
00:00:01,000 --> 00:00:04,000
- Then we walk
- All the way home

Файл возвращается байт в байт, и это правильный результат, а не сбой. Строки в 14 и 18 столбцов поместились бы в одну строку из 32, но каждая начинается с тире, то есть говорит другой человек. Объединение отдало бы одному актёру чужие слова, а по отдельности обе строки в лимит укладываются, так что делать больше нечего.

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

Как перенос строк выбирает место разрыва в субтитре?

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

Почему моя короткая вторая строка присоединилась к первой?

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

Длина строки считается в символах или в столбцах?

В столбцах, потому что именно так измеряется строка субтитра на экране. Латинская буква, цифра и пробел занимают один столбец, а китайский и японский иероглиф, корейский слог и эмодзи — два. Поэтому лимит 42 принимает сорок два латинских символа или двадцать один иероглиф, и обе строки выходят одинаковой ширины.

Почему две строки с тире не объединились при переносе?

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

Что происходит со словом длиннее заданной длины строки?

Оно получает отдельную строку и остаётся длиннее лимита, а запуск сообщает, сколько строк всё ещё выходит за предел. Разрыв внутри слова изменил бы само слово, а настройка ширины не для этого; немецкие сложные слова и длинные URL — обычные случаи. Если такую строку нужно уложить в лимит, разрыв придётся делать внутри слова осознанно.

В каких форматах можно переразбить строки субтитров по ширине?

В одиннадцати, где реплика может содержать больше одной строки: SRT, WebVTT, ASS, SSA, SBV, SAMI, LRC, MicroDVD, TTML, JSON и CSV. Обычный текст остаётся за бортом, потому что в нём одна строка уже является репликой и внутри реплики нет переноса, который можно двигать. Формат определяется по содержимому, а не по расширению, и файлы не загружаются на сервер.

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