跳至主要內容
SubtitleMatrix

過長字幕行拆分

文字樣式重排換行
或者貼上字幕文字

選項

一個欄位,五個選項,每個選項都有自己的頁面。重排 會把每條字幕重新按欄寬折行,既能把過長的行縮短,也可能把短行合併上來。只拆長行 只處理超過欄數的行,其餘原樣保留。均衡 保持每條字幕原有的行數,只在行之間挪動詞語,讓最長的那一行盡可能短。合併 把每條字幕並成一行。限制 對已經在行數上限內的字幕不做任何改動。這一頁會把欄位填成標題裡點名的選項,並且不列出其他選項。

按欄而不是字元計算,所以一個漢字或日文假名佔兩欄,一個帶重音的拉丁字母佔一欄。拉丁字母字幕常用 42。調小會讓行更短但行數更多;任何內容都不會被截掉。

時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。

這一頁只做一件事:把超過你設定欄數的行斷開。每一行只要已經在欄數之內,就完全照原樣留下,連一個位元組都不差,包括緊鄰著被斷開那些行的行。如果你的檔案裡有幾行失控的長行,其餘斷行都很好,就是這一頁修那幾行、其他都不碰。

這個數字按欄計算。一個拉丁字母佔一欄、一個中文字佔兩欄,所以上限 42 可以放 42 個拉丁字母或 21 個中文字,兩者在螢幕上一樣寬。預設是 42,拉丁文字字幕用了幾十年的數字。

斷行發生在詞與詞的邊界,永遠不會在詞裡面。比整個上限還長的詞,例如網址或很長的德文複合詞,會自己佔一行並留在上限之外,而執行結果會說還有幾行太寬。把詞切成兩半等於在改你的文字,而這一頁的標題承諾的是移動換行,不是改詞。

開始之前要講清楚一件事:這一頁不合併。兩行各 12 欄的字幕即使一行就放得下,還是維持兩行,因為把它們拉在一起是重排而不是拆分,那件事另有其頁。全部在你的瀏覽器裡跑,不上傳、不用註冊,接受每條字幕能放多行的 11 種格式:SRT、WebVTT、ASS、SSA、SBV、SAMI、LRC、MicroDVD、TTML、JSON 與 CSV。

範例

一行失控,旁邊一行正常

輸入

1
00:00:01,000 --> 00:00:04,000
I told you we would miss the last train if we stayed any longer
Short line

輸出

1
00:00:01,000 --> 00:00:04,000
I told you we would miss the last train if
we stayed any longer
Short line

第一行是 52 欄對上上限 42,所以在最後一個放得下的詞之後斷開,剛好停在 42。第二行是 10 欄,原樣回來、逐位元組、位置也一樣——既沒有被重新量測,也沒有被考慮跟任何東西合併。後面這半句就是這一頁跟換行頁的全部差別:換行會把兩行都重排,很可能把這條短行搬到別的地方。

比整行長度還長的詞

輸入

1
00:00:01,000 --> 00:00:04,000
Say it: pneumonoultramicroscopicsilicovolcanoconiosis

輸出

1
00:00:01,000 --> 00:00:04,000
Say it:
pneumonoultramicroscopicsilicovolcanoconiosis

45 欄的詞不管怎麼斷都無法在保住它是個詞的前提下塞進 42,所以讓它自己佔一行、留在上限之外,執行結果回報還有一行太寬。它前面的兩個詞因此上移到第一行。把詞切成兩半會產生沒有人讀得懂的東西,而那是在改你的對白而不是版面,不是這一頁被要求做的事。

同一上限下的一條短行與一條中文行

輸入

WEBVTT

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

輸出

WEBVTT

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

同一條字幕裡兩行,只有一行超標。`Good.` 是 5 欄,不動;中文行是 24 個字、也就是 48 欄,在第 21 個字之後斷開。中文沒有空格,所以每個字自己就是斷點,斷點落在句子中間——那對這種文字是正常的,也是為什麼這裡按螢幕寬度而不是按字數計算。WEBVTT 標頭與時間行原樣進出。

常見問題

拆分過長行跟字幕換行重排有什麼不同?

換行會把每條字幕從頭重排,所以一條短行旁邊有長行時,短行可能被拉上去,你原本的斷行可能全部移動。這一頁只碰超過欄數的行。兩者用同一個欄數,對一條自己就超標的字幕可能產出同樣的檔案,但對每一條本來就沒問題的字幕行為不同:換行可能改它,拆分是一個位元組都不動。

為什麼本來就短的行完全沒變?

因為對它們沒有事可做。頁面逐行量測,把超標的斷開,其餘的通過而不是從重新量測的副本重寫一遍。這不只是說產物看起來一樣:在欄數內的行,是以檔案原本持有的同一份資料通過的,這正是這一頁可以安全跑在一份你已經手工修好斷行的檔案上的原因。

斷開一條過長的字幕行會改變它的起止時間嗎?

不會。被斷開的字幕兩行同時在畫面上,停留的時間正是這條字幕原本就有的。時間軸沒有任何改變,字幕編號也是檔案自己的。如果你要的是兩半先後出現,那是另一件事:把一條長字幕拆成兩條 cue 的頁面會連時間一起切,那對影片時間軸是可見的改變,不是版面。

被斷開的字幕行到底斷在哪裡?

斷在空格,或斷在不使用空格的文字的字元邊界。詞裡面永遠不會斷:那會把詞切成兩半,改變觀眾讀到的東西。中文與日文沒有空格可斷,所以每個字都是邊界,斷點可以落在句子任何地方。那些文字本來就是這樣排的,也是上限按螢幕欄數而不是按字數計算的原因。

拆分過長行之後,報告會顯示什麼?

有幾條字幕有一行被斷開,以及執行結束時還有幾行超過上限。第二個數字才是要看的,因為那是無法被帶進欄數內的行數——比上限長的詞是常見原因。本來就在欄數內的字幕完全不會被計入,所以報告寫一條,就是真的有一條被改了。

哪些字幕格式可以拆分過長的行?

每條字幕能放多行的 11 種:SRT、WebVTT、ASS、SSA、SBV、SAMI、LRC、MicroDVD、TTML、JSON 與 CSV。純文字被排除,因為那種格式裡一行文字就是一條字幕,字幕內部沒有行可斷,對文字檔執行會原樣返回。行長是可見文字的屬性,所以涵蓋斷點的樣式範圍會在兩半上都保留,而不是被丟掉。

相關工具