去除字幕底線標籤
或者貼上字幕文字
選項
一個欄位,七個選項,每個選項都有自己的頁面。斜體、粗體、底線和顏色只去掉對應的那一種區間,行內其他樣式不動。全部 會去掉工具建模的所有區間 —— 那四種加上卡拉 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 把底線寫成 `<u>` 與 `</u>`,ASS 與 SSA 寫成 `{\u1}` 與 `{\u0}`,TTML 寫成帶底線裝飾的 span。不上傳;檔案在瀏覽器分頁裡讀入與寫出,本來就沒有底線的檔案會逐位元組回來。
範例
為了交付而畫底線的姓名
輸入
1
00:00:01,000 --> 00:00:02,000
The <u>defendant</u> was not present.
2
00:00:03,000 --> 00:00:04,000
<u>Exhibit B</u> is a letter.
輸出
1
00:00:01,000 --> 00:00:02,000
The defendant was not present.
2
00:00:03,000 --> 00:00:04,000
Exhibit B is a letter.
畫底線的詞保住拼法與在句子裡的位置,只有標籤對不見了。產物裡沒有任何東西顯示 `defendant` 與 `Exhibit B` 曾經被標記過,這正是這一輪的重點,也是跑之前該確認的事。
同時帶 class 標籤與底線的 WebVTT 檔
輸入
WEBVTT
00:00:01.000 --> 00:00:02.000
<c.lawyer>The <u>defendant</u></c> was not present.
輸出
WEBVTT
00:00:01.000 --> 00:00:02.000
<c.lawyer>The defendant</c> was not present.
底線走,`<c.lawyer>` 留著,因為 class 名稱不是樣式範圍——它是播放器會到頁面自己的樣式表裡查的名字。留著它是工具面對一個從未建模的標籤唯一誠實的做法,而掃掉那類標記的頁面,標題裡就寫明了。
斜體旁邊有底線的 ASS 檔
輸入
[Script Info]
Title: underline
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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,,{\u1}hello{\u0} {\i1}there{\i0}
輸出
[Script Info]
Title: underline
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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,,hello {\i1}there{\i0}
同樣的移除,只是換成 ASS 語法:`{\u1}` 與 `{\u0}` 消失,緊鄰的斜體對完全照檔案寫的留著。同一行上有兩段範圍相鄰,而只有其中一段被要求移除,這正是工具在真實檔案上必須做對的情況。
常見問題
底線在每種字幕格式裡寫法都一樣嗎?
不一樣,但意思都相同。SRT、WebVTT、SBV 與 SAMI 用一對 `<u>` 標籤,ASS 與 SSA 用 `{\u1}` 開啟、`{\u0}` 關閉,TTML 則把文字包進帶底線裝飾的 span。檔案是按它真正的格式讀的,所以一份其實是 WebVTT 的 `.srt` 檔,底線一樣找得到。
移除底線會改變檔案的文字或時間嗎?
兩者都不會。頁面只重寫標記,其他什麼都不動:字幕起止保留毫秒值、字幕順序是檔案自己的、字幕條數不變。除了標籤字元,字元逐位元組相同,所以沒有詞被重新拼寫、沒有一行被併到另一行、也沒有標點被加上去。
我會失去哪些詞被畫底線的資訊嗎?
會,而這是跑之前唯一要想清楚的事。底線是一個詞被標記過的唯一紀錄,所以一旦拿掉,檔案就再也分不出被標記的詞與普通的詞。如果那些記號有意義——審稿要檢查的詞表、字幕員的當事人名單——先把清單從檔案裡抄出來,再跑這一頁。
為什麼字幕交付規範不鼓勵底線?
因為底線會貼著字母,被讀成字母的一部分。下伸部會跟底線撞在一起,而在小字級下,畫底線的字很容易被誤認成別的字——在一個只能讀一次、速度很快、還沒辦法停下來再看一眼的媒介裡,這是實實在在的成本。這就是為什麼一份充滿工作註記的檔案,值得在送出去之前清乾淨。
可以只移除檔案一部分的底線嗎?
這一頁處理整份檔案,所以不行。如果只有某些字幕需要清理,可靠的做法是先把檔案切開、只對需要的那部分跑這一頁,或先跑這一頁、再把標籤補回你想留的字幕。單獨一份拖進來的檔案,並沒有攜帶要動哪幾條的指令。
底線被移除的那一行上,粗體、斜體與顏色會怎樣?
會留著。每一種樣式都是獨立的範圍,所以同時有底線與粗體的一行,回來是粗體、沒有底線;位在斜體範圍裡的底線一行,斜體會照檔案原本的範圍留著。一次全部移除是「移除全部字幕樣式」那一頁,跟拿掉其中一種是兩件不同的工作。