Zmień kolor napisów
Albo wklej tekst napisów
Opcje
Wybierz kolor, w który zmienia się cały plik. Istniejące kolory w wierszu są zastępowane, a nie nakładane, więc jedno uruchomienie zostawia dokładnie jeden kolor na wiersz; pogrubienie, kursywa, podkreślenie i czasy karaoke zostają w spokoju. Zapisywany jest tylko #rrggbb — to jedyny zapis, który wszystkie dziewięć akceptowanych formatów przenosi dokładnie. Nie każdy odtwarzacz rysuje kolor w tekście, a SRT nie ma na to standardu: plik będzie kolor zawierał, ale czy się pokaże, zależy od odtwarzacza.
Ta strona maluje każdy wiersz pliku napisów jednym kolorem. Czyta plik po zawartości, nie po rozszerzeniu, więc to samo uruchomienie działa w dziewięciu formatach, a każdy dostaje kolor w zapisie, który już rozumie: `<font color="#rrggbb">` w SRT, WebVTT, SBV i SAMI, blok nadpisań w ASS i SSA, `<span tts:color>` w TTML, tablicę tagów w JSON oraz te same znaczniki wbudowane wewnątrz ujętych w cudzysłów komórek CSV.
Wybrany kolor zastępuje to, co było, zamiast nakładać się na to. Wiersz, który przyszedł częściowo zielony, wraca w całości w nowym kolorze – jeden zakres na cały wiersz zamiast `<font>` w `<font>`, co niektóre odtwarzacze renderują jako kolor wewnętrzny, a inne ignorują całkowicie. Pogrubienie, kursywa, podkreślenie i czasy karaoke zostają tam, gdzie były, a zakres stylowania nadal obejmuje dokładnie te znaki co wcześniej.
Z założenia to jeden kolor na cały plik. Kolor napisów jest zwykle decyzją dostawczą – firmowa biel, żółty przeżywający jasną scenę, kolor zarezerwowany dla jednego rodzaju mówiącego – a plik, który potrzebowałby dwóch kolorów, wymagałby kogoś, kto zdecyduje, które wiersze dostają który, a to zadanie dla edytora tekstu, nie dla jednej wartości na panelu. Blok bez tekstu nie dostaje nic: nie ma zakresu do pomalowania, a zerowy zakres koloru byłby tagiem o rozmiarze niczego.
Nic nie jest wysyłane i nic nie opuszcza karty przeglądarki. Kolor to jedna z niewielu rzeczy stylowania, które plik napisów może nieść bez renderera obok siebie, ale czy widz go zobaczy, zależy od odtwarzacza – ta strona zapisuje znacznik, a pytania niżej mówią wprost, po której stronie tej granicy stoi.
Przykłady
Dwa zwykłe bloki SRT
Wejście
1
00:00:01,000 --> 00:00:02,000
Hello there.
2
00:00:03,000 --> 00:00:04,000
Second line.
Wynik
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>
Jeden `<font>` na wiersz, otaczający cały wiersz, a znaczniki czasu i puste wiersze są dokładnie takie, jak przyszły. Tag jest zakresem wiersza, a nie właściwością bloku, dlatego blok z dwoma twardo łamanymi wierszami dostaje dwa tagi, a nie jeden obejmujący łamanie.
Wiersz, który już ma kolor i kursywę
Wejście
1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> <font color="#00ff00">there</font>.
Wynik
1
00:00:01,000 --> 00:00:02,000
<font color="#ffcc00"><i>Hello</i> there.</font>
Zielony zakres jest usuwany, zanim trafi nowy kolor, więc wynik to jeden `<font>` wokół wiersza z kursywą w środku – a nie `<font>` w `<font>`, gdzie reguły zagnieżdżania zależą od odtwarzacza, a wynik jest po cichu inny w każdym. To, co było zielone, ma teraz ten sam kolor co reszta, co jest uczciwym odczytem panelu proszącego o jeden kolor.
Ten sam blok w pliku ASS
Wejście
[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
Wynik
[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 nie ma `<font>`; kolor jest kodem nadpisania otwieranym przed tekstem i zamykanym gołym `{\c}` po nim, żeby reszta wiersza nie została przypadkiem pomalowana. `PrimaryColour` w arkuszu stylów nie jest zmieniany – nadpisanie na poziomie bloku jest silniejszą instrukcją i jedyną, która zadziała tylko na ten blok.
Blok bez tekstu
Wejście
1
00:00:01,000 --> 00:00:02,000
2
00:00:03,000 --> 00:00:04,000
Hi.
Wynik
1
00:00:01,000 --> 00:00:02,000
2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Hi.</font>
Pusty blok zostaje pusty, zamiast dostać `<font>` wokół niczego. Pusty blok jest już problemem strukturalnym – strony sprawdzające go zgłoszą – a tag znaczników bez tekstu w środku by go nie naprawił, tylko ukrył przed grepem. Blok, który ma tekst, jest malowany normalnie.
Częste pytania
W których formatach ta strona zapisuje kolor i jak wygląda znacznik w każdym?
W dziewięciu: SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON i CSV. SRT, WebVTT, SBV i SAMI dostają `<font color="#rrggbb">`, ASS i SSA – nadpisanie `{\c&H…&}` zamykane przez `{\c}`, TTML – `<span tts:color="#rrggbb">`, JSON zapisuje kolor jako zakres tagu w wierszu, a CSV zachowuje te same znaczniki `<font>` w komórce tekstowej ujętej w cudzysłów. Formaty, które nie mają gdzie zmieścić koloru w linii, nie są tu w ogóle przyjmowane – plik LRC albo MicroDVD nie ma składni koloru, więc uruchomienie zgłosiłoby zmianę i nie zapisało nic.
Dlaczego wynik ASS pokazuje `&H0000CCFF&`, gdy wybrałem `#ffcc00`?
Bo kolor ASS zapisuje się z bajtami w odwrotnej kolejności: `&HAABBGGRR`, gdzie najpierw jest alfa, a potem pary niebieskiego, zielonego i czerwonego. `#ffcc00` to czerwony 255, zielony 204, niebieski 0, więc powstaje alfa `00`, niebieski `00`, zielony `CC`, czerwony `FF` – `&H0000CCFF&`. Wartość jest kolorem, który wybrałeś, a odtwarzacz pokazuje ten sam żółty; liczby wyglądają tylko na przestawione, bo format przechowuje je od końca.
Czy każdy odtwarzacz wideo naprawdę pokaże nowy kolor?
Nie i to jest uczciwa granica tej strony. `<font color>` nie jest częścią specyfikacji SRT – to znaczniki, które większość odtwarzaczy toleruje, a część ignoruje – a kody nadpisań ASS respektują odtwarzacze oparte na libass, takie jak VLC i mpv, ale nie każdy sprzętowy dekoder. Strona zapisuje znacznik poprawnie i wynik da się zweryfikować w samym pliku; to, czy konkretny odtwarzacz go pokaże, jest decyzją tego odtwarzacza. Jeśli kolor ma być gwarantowany na ekranie, trzeba go wtopić w obraz, a to inne zadanie.
Co dzieje się z kolorami, które plik już miał?
Są zastępowane, a nie nakładane. Każdy zakres koloru w wierszu jest najpierw usuwany, a potem dodawany jest jeden zakres na cały wiersz, więc wynik to pojedynczy `<font>`, a nie `<font>` w `<font>`. Zagnieżdżone tagi koloru to przypadek, w którym odtwarzacze różnią się najbardziej – jedne biorą wewnętrzny, inne zewnętrzny, inne spłaszczają oba – więc plik, który przeszedł przez tę stronę, ma w sobie jedną jednoznaczną odpowiedź.
Czy strona koloruje pojedyncze słowa, czy cały plik napisów?
Cały plik, jeden kolor, każdy wiersz. Na tej stronie nie ma zakresu per blok ani per słowo i to celowe: panel mieści jedną wartość, a uruchomienie, którego wynik zależałby od tego, które bloki kliknąłeś, nie byłoby odtwarzalne z pliku. Wiersz, w którym trzeba wyróżnić jedno słowo, to zadanie edycji tekstu, a nie zmiany koloru, i strony z wyszukiwaniem oraz zamianą potrafią zrobić tę punktową część.
Czy pogrubienie, kursywa, podkreślenie i czasy karaoke zostają przy zmianie koloru?
Zostają, a ich zakresy pozostają przy tych samych znakach. Usuwane i dodawane są tylko zakresy koloru; pozostałe cztery rodzaje są nietknięte, więc kursywa w wierszu zostaje kursywą w nowym kolorze. W ASS oznacza to, że `{\i1}` i jego zamknięcie `{\i0}` nadal stoją w tych samych miejscach wokół tekstu, z nadpisaniem koloru otwartym przed nimi i zamkniętym po nich.