跳至主要內容
SubtitleMatrix

字幕顏色修改

文字樣式變更文字顏色
或者貼上字幕文字

選項

#ffcc00

選整個檔案要變成的顏色。行上既有的顏色會被取代而不是疊加,所以執行一次後每行只剩一種顏色;粗體、斜體、底線和卡拉 OK 計時不受影響。只寫出 #rrggbb —— 這是九種可接受的格式都能精確承載的唯一寫法。並非所有播放器都會繪製行內顏色,SRT 對此也沒有標準:檔案裡會有這個顏色,但是否顯示取決於播放器。

這一頁把整份字幕的每一行刷成同一個顏色。檔案按實際內容判讀,不看副檔名,所以一次執行就能處理九種格式,而且每種格式收到的都是它本來就認得的寫法:SRT、WebVTT、SBV 與 SAMI 用 `<font color="#rrggbb">`,ASS 與 SSA 用覆寫碼,TTML 用 `<span tts:color>`,JSON 寫進標籤陣列,CSV 則在帶引號的儲存格裡放同樣的行內標記。

選的顏色是取代原本的顏色,不是疊上去。原本只有一部分是綠色的一行,出來整行都是新顏色——整行一個區間,而不是 `<font>` 裡再套一層 `<font>`(有的播放器取內層、有的整個忽略)。粗體、斜體、下劃線與卡拉 OK 計時留在原處,樣式區間仍精確覆蓋原本那些字元。

整份檔案只能一個顏色,這是刻意的。字幕顏色通常是交付決定——統一的白色、亮場也看得清的黃色、某一類說話者專用色——需要兩種顏色的檔案得由人判斷哪幾行用哪種,那是文字編輯器的工作,不是面板上一個數值。沒有文字的字幕段落什麼都不加:沒有範圍可刷,零長度的顏色區間只是一個尺寸為零的標籤。

檔案不會上傳,也不會離開瀏覽器分頁。顏色是字幕檔少數不需要渲染器就能攜帶的樣式之一,但觀眾看不看得見由播放器決定——這一頁負責把標記寫對,下面的問答會如實說明界線在哪裡。

範例

兩條普通的 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
<font color="#ffcc00">Hello there.</font>

2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Second line.</font>

每行一個 `<font>`,包住整行,時間碼與空行跟進來時一模一樣。標籤是覆蓋整行的區間,不是字幕段落的屬性,所以一條字幕若有兩個強制換行的行,會得到兩個標籤,而不是一個跨過換行的標籤。

本來就帶顏色與斜體的一行

輸入

1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> <font color="#00ff00">there</font>.

輸出

1
00:00:01,000 --> 00:00:02,000
<font color="#ffcc00"><i>Hello</i> there.</font>

綠色區間先被移除,新顏色才蓋上去,所以結果是一個包住整行的 `<font>`、斜體仍在裡面——不是 `<font>` 裡再套 `<font>`;嵌套時規則看播放器,結果每個都不一樣。原本綠色的部分現在跟其他字同色,這是「面板只要求一個顏色」的誠實讀法。

同一條字幕放在 ASS 檔裡

輸入

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize
Style: Default,Arial,20

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,Hello there

輸出

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize
Style: Default,Arial,20

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,{\c&H0000CCFF&}Hello there{\c}

ASS 沒有 `<font>`,顏色是一段覆寫碼,在文字前打開、文字後用單獨的 `{\c}` 關閉,這樣後面的內容才不會被順便刷上顏色。樣式表中的 `PrimaryColour` 沒有被改——字幕段落層級的覆寫是更強的指令,也是唯一只作用於這一條字幕的做法。

沒有文字的字幕段落

輸入

1
00:00:01,000 --> 00:00:02,000

2
00:00:03,000 --> 00:00:04,000
Hi.

輸出

1
00:00:01,000 --> 00:00:02,000

2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Hi.</font>

空字幕維持空白,而不是被加上一對包住「什麼都沒有」的 `<font>`。空字幕本身就是結構問題,質檢頁會回報;沒有文字的標記修不好它,只會讓它躲過搜尋。有文字的那條字幕照常上色。

常見問題

字幕顏色修改會把顏色標記寫成什麼樣子,支援哪些格式?

九種:SRT、WebVTT、ASS、SSA、SBV、SAMI、TTML、JSON 與 CSV。SRT、WebVTT、SBV、SAMI 用 `<font color="#rrggbb">`;ASS 與 SSA 用 `{\c&H…&}` 覆寫、由 `{\c}` 關閉;TTML 用 `<span tts:color="#rrggbb">`;JSON 把顏色寫成覆蓋整行的標籤區間;CSV 在帶引號的文字儲存格裡保留同樣的 `<font>` 標記。沒有地方放行內顏色的格式,這一頁一律不接受——LRC 或 MicroDVD 沒有顏色語法,在那裡執行只會回報有變更卻什麼都沒寫。

為什麼選了 `#ffcc00`,ASS 產物卻寫成 `&H0000CCFF&`?

ASS 的顏色是位元組反過來排的 `&HAABBGGRR`:先 alpha,再藍、綠、紅。`#ffcc00` 是紅 255、綠 204、藍 0,所以寫成 alpha `00`、藍 `00`、綠 `CC`、紅 `FF`,也就是 `&H0000CCFF&`。值就是你選的顏色,播放器顯示的仍是同一個黃色,只是這個格式把數字倒著存。

字幕顏色修改之後,每個播放器都會顯示新顏色嗎?

不一定,而這就是這一頁誠實的界線。`<font color>` 不在 SRT 規格裡,是多數播放器容忍、少數直接忽略的標記;ASS 覆寫碼在 VLC、mpv 這類以 libass 為基礎的播放器有效,但不是每台硬體機上盒都認。頁面把標記寫對,結果在檔案裡可以自行驗證;某個播放器顯不顯示是它的決定。顏色若必須保證出現在畫面上,只能燒進影像,那是另一件工作。

檔案原本就有的顏色,會被字幕顏色修改疊上去嗎?

不會,是取代。每一行的顏色區間先被移除,再套上一個覆蓋整行的區間,所以結果是單一 `<font>`,不是 `<font>` 裡再套一層。嵌套顏色標籤正是播放器分歧最大的地方——有的取內層、有的取外層、有的兩層都攤平——跑過這一頁的檔案只有一個明確答案。

字幕顏色修改是改整個檔案,還是可以只改幾個字?

整個檔案、一個顏色、每一行。這一頁沒有每條字幕或每個字的範圍設定,這是刻意的:面板上只有一個值,若結果取決於你點選了哪幾條字幕,就無法從檔案重現。需要挑出一個字上色,那是文字編輯而不是改顏色,本站的尋找取代可以處理其中針對性的部分。

套用字幕顏色時,粗體、斜體、下劃線與卡拉 OK 計時會保留嗎?

會,而且它們的區間仍附在同樣的字元上。只有顏色區間會被移除再重新加入,其餘四種原樣不動,所以行內的斜體字在新顏色裡仍是斜體。在 ASS 上,`{\i1}` 與收尾的 `{\i0}` 仍在文字兩側原來的位置,顏色覆寫在它們之前打開、在之後關閉。

相關工具