跳至主要內容
SubtitleMatrix

去除字幕斜體標籤

文字樣式移除標記與標籤
或者貼上字幕文字

選項

一個欄位,七個選項,每個選項都有自己的頁面。斜體、粗體、底線和顏色只去掉對應的那一種區間,行內其他樣式不動。全部 會去掉工具建模的所有區間 —— 那四種加上卡拉 OK 計時 —— 文字裡的其他內容保持原樣。HTML 做同樣的事,並額外清掉解析時因為不被建模而留在文字裡的角括號標記,例如 VTT 的 <v Bob> 說話者標籤和 <c.className>。ASS 則改為清掉覆寫區塊,即解析時未能辨識的 {...} 代碼,例如 {\fad(500,500)}。這一頁會把欄位填成標題裡點名的選項,並且不列出其他選項。

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

這一頁把字幕檔裡的每一段斜體範圍移除,文字保持不動。把檔案拖進來、跑一次,字幕文字就會照當初打進去的樣子回來——拼法一樣、標點一樣、換行一樣、時間碼一樣——而斜體標記不見了。這不是轉檔,也不是改寫:變的只有檔案說哪幾段文字該是斜的。

斜體是幾乎每一份字幕檔都會用到的行內樣式,因為它帶的是意義而不是裝飾。畫外對白、電話裡的聲音、旁白、外語詞、字卡與內心話,慣例上都用斜體。這就是為什麼這一頁與移除粗體、移除底線分成不同頁:在一份正常的檔案上,你想拿掉其中一種、留下其餘,而一頁什麼都移的頁面辦不到這件事。

不管檔案怎麼拼,移除的方式都一樣。SRT、WebVTT、SBV 與 SAMI 寫 `<i>` 與 `</i>`;ASS 與 SSA 寫 `{\i1}` 與 `{\i0}`;TTML 寫帶字體樣式的 span。同樣一件事的不同語法,而檔案是照它實際上是什麼讀的,不是照副檔名宣稱的,所以三種跑起來行為一致。這一頁刻意留下的一樣東西,是像 `<c.lawyer>` 這樣的 WebVTT class 標籤:那是頁面自己的樣式表定義的名字,不是斜體範圍,工具也從來沒有建模過它——掃掉那類標記的頁面,標題裡就寫明了。

不上傳。檔案在瀏覽器分頁裡讀入與寫出,不能離開本機的素材就留在本機;本來就沒有斜體的檔案會逐位元組回來。

範例

SRT 檔裡的畫外對白

輸入

1
00:00:01,000 --> 00:00:02,000
<i>A voice off screen.</i> The door opens.

2
00:00:03,000 --> 00:00:04,000
<i>I can hear you.</i>

輸出

1
00:00:01,000 --> 00:00:02,000
A voice off screen. The door opens.

2
00:00:03,000 --> 00:00:04,000
I can hear you.

兩段斜體範圍都走,包括涵蓋整條字幕的那一段,而第二條的文字原樣不動。斜體範圍在同一行上緊鄰普通對白時,兩邊的文字會用一個空格接起來,那本來就是讀者看到的樣子。

同時帶 class 標籤的 WebVTT 檔

輸入

WEBVTT

00:00:01.000 --> 00:00:02.000
<c.lawyer><i>The defendant was not present.</i></c>

輸出

WEBVTT

00:00:01.000 --> 00:00:02.000
<c.lawyer>The defendant was not present.</c>

斜體走,`<c.lawyer>` 留著。class 名稱不是樣式範圍——它是在頁面的樣式表裡查的,`<c.lawyer>` 在那裡可以是任何意思。留著它是對一個工具從未建模的標籤最誠實的讀法;移除那種形狀標記的頁面是「移除 HTML 標籤」。

沒有斜體的檔案

輸入

1
00:00:01,000 --> 00:00:02,000
<b>The room was dark.</b>

2
00:00:03,000 --> 00:00:04,000
She left early.

輸出

1
00:00:01,000 --> 00:00:02,000
<b>The room was dark.</b>

2
00:00:03,000 --> 00:00:04,000
She left early.

沒有東西可移除,所以檔案逐位元組回來,粗體也留在原處。在一份你懷疑、但看不到斜體的檔案上,這是最便宜的確認方法——而且它不會悄悄把粗體一起帶走。

常見問題

字幕檔裡什麼算一段斜體範圍?

看檔案怎麼拼。在 SRT 或 WebVTT 檔裡是一對包住某些字的 `<i>` 標籤;在 ASS 或 SSA 檔裡是 `{\i1}` 與 `{\i0}`;在 TTML 裡是字體樣式為斜體的 span。三者描述同一件事,而頁面按每份檔案實際上是什麼格式讀,所以不管哪種語法都找得到。它不猜:只是看起來斜的文字,例如用裝飾字體打的字,並沒有斜體範圍,不會被動。

移除斜體會改變時間碼或文字嗎?

兩者都不會。頁面只重寫文字周圍的標記,所以每條字幕的起止精確到毫秒都保留、字幕順序是檔案自己的,字幕條數也不變。除了標籤字元本身,文字逐位元組相同——沒有標點被加上去、沒有一行被併到另一行,兩行的字幕跑完還是兩行。

可以只移除某些字幕的斜體、其他保留嗎?

這一頁不行:整份檔案都做,每條字幕、每一行。如果檔案有一部分需要保留斜體,今天可行的做法是先跑這一頁,再把標籤補回你想留的字幕,或先把檔案切開、只對其中一部分跑。逐條的選擇不是一份拖進來的檔案能表達的東西——檔案裡沒有東西可以讓頁面讀出這個決定。

為什麼斜體重要到需要自己一頁?

因為在字幕裡,它通常帶的是意義而不是裝飾。斜體的一行慣例上代表不在畫面上的聲音、旁白、外語詞或內心話,讀者失去它就失去場景說過的其中一部分。這也是它與移除全部樣式分開的原因:在真實的檔案上,你常常想為了台內規範拿掉斜體,同時保留粗體的標題字幕。

為什麼跑完之後我的 WebVTT 檔還有 class 標籤?

因為 class 名稱不是斜體範圍。`<c.lawyer>` 沒有說文字被套上某種樣式——它說文字屬於一個具名的群組,那個群組長什麼樣由檔案本身沒有的樣式表決定。工具從來沒有建模那些標籤,所以把它們留在文字裡,而不是刪掉自己讀不懂的東西。「移除 HTML 標籤」才是掃掉它們的頁面,標題裡也寫明了。

斜體移除是作用在字幕裡的文字,還是整條字幕?

作用在檔案標記的那一段文字上,而那常常不是整條字幕。一行可以從斜體的旁白開始,再回到普通字體,只有旁白那一段失去標記;涵蓋整條字幕的斜體範圍,也就是畫外對白的常見情況,則整條都走。無論哪一種,字元本身都不會被重寫,所以結果不取決於範圍從哪裡開始。

相關工具