CTA-708
CTA -708 (dawniej EIA-708 i CEA-708 ) to standard napisów kodowanych dla strumieni telewizji cyfrowej ATSC (DTV) w Stanach Zjednoczonych i Kanadzie . Został opracowany przez sektor Consumer Electronics należący do Electronic Industries Alliance, który jest obecnie samodzielną organizacją Consumer Technology Association .
W przeciwieństwie do napisów RLE DVB i DVD, napisy CTA-708 mają niską przepustowość i są tekstowe, podobnie jak tradycyjne napisy EIA-608 i napisy teletekstowe EBU . Jednak w przeciwieństwie do par bajtów EIA-608, napisy CTA-708 nie mogą być modulowane na wyjściu kompozytowym NTSC VBI line 21 odbiornika ATSC i muszą być wstępnie renderowane przez odbiornik z cyfrowymi ramkami wideo. Zestaw znaków Latin-1 i zawiera kody pośredniczące obsługujące pełne napisy UTF-32 oraz czcionki do pobrania. Strumienie napisów CTA-708 mogą również opcjonalnie zawierać wewnętrznie pary bajtów EIA-608, co jest dość powszechnym zastosowaniem.
Napisy CTA-708 są wstrzykiwane do strumieni wideo MPEG-2 w danych użytkownika obrazu . Pakiety są ułożone w kolejności obrazków i muszą być przestawiane tak, jak ramki obrazków. Jest to znane jako strumień transportowy DTVCC. Jest to kanał o stałej przepustowości , który ma zwykle 960 bitów/s przydzielonych dla napisów linii 21 kompatybilnych z poprzednimi wersjami, oraz 8640 bitów/s dla napisów CTA-708, co daje w sumie 9600 bitów/s. Standard ATSC A/53 zawiera specyfikę kodowania. Główną formą sygnalizacji jest deskryptor napisów PSIP, który wskazuje język każdego napisu i jeśli jest sformatowany dla „łatwego czytelnika” (poziom 3. klasy dla osób uczących się języków) w PSIP EIT na podstawie każdego zdarzenia i opcjonalnie w H.222 PMT tylko wtedy, gdy film zawsze wysyła dane napisów.
Dekodery napisów CTA-708 są wymagane w Stanach Zjednoczonych przez przepisy FCC we wszystkich telewizorach cyfrowych o przekątnej 13 cali (33 cm) lub większych. Ponadto niektórzy nadawcy są zobowiązani przepisami FCC do umieszczania napisów w procentach swoich programów.
Pakiety w CTA-708
Strumienie napisów są przesyłane z wieloma opakowaniami pakietów wokół nich. Są to dane użytkownika obrazu, które zawierają dane napisów, które zawierają dane cc_data, które zawierają pakiety kanału napisów, które zawierają blok usług, który zawiera strumienie napisów. Pakiety te są szczegółowo opisane w tej sekcji. Ale same strumienie są opisane w poniższych sekcjach.
Ta warstwa jest oparta na modelu referencyjnym protokołu OSI :
Warstwy OSI | Warstwy DTVCC | Uwagi |
---|---|---|
Aplikacja | Interpretacja | Wydawanie poleceń i dołączanie tekstu do okien |
Prezentacja | Kodowanie | Rozbijanie poszczególnych komend i znaków |
Sesja | Praca | Pakiety blokad serwisowych |
-- | Paczka | Zestaw pakietów DTVCC z pakietów cc_data |
Transport | Zastrzyk | cc_data Pakiety wyodrębnione z klatek wideo |
Sieć | nie używany | bezpośrednio podłączony link |
Połączyć | SMPTE 259M lub H.222 lub MXF | klatki wideo podzielone z formatu łącza |
Fizyczny | SDI lub 8VSB | format łącza demodulowany z transmisji |
Ta sekcja opisuje różne pakiety, warstwy kodowania i warstwy prezentacji są opisane w pozostałej części tego dokumentu.
Dane użytkownika obrazu
Są one wstawiane przed aktywną ramką wideo SMPTE 259M lub pakietem wideo. Typowe pakiety wideo to nagłówek obrazu, zestaw parametrów obrazu i formatu wymiany materiałów .
Długość | Nazwa | Typ | Wartość |
---|---|---|---|
32 bity | user_data_start_code | wzorzyste bslbf | 0x000001B2 |
32 bity | identyfikator_użytkownika | ASCII bslbf | GA94 |
8 bitów | user_data_type_code | uimsbf | 3 |
X*8 bitów | user_data_type_structure | dwójkowy | dowolna forma |
bslbf: łańcuch bitów, najpierw lewy bit; uimsbf: liczba całkowita bez znaku, najpierw najbardziej znaczący bit
Długość | Nazwa | Typ | Wartość |
---|---|---|---|
8-16 bitów | nal_jednostka | wzorzyste bslbf |
6 na 8 bitów dla H.264 39 na 16 bitów dla H.265 |
8 bitów | typ ładunku | uimsbf | 4 |
8 bitów | rozmiar ładunku | uimsbf | zmienny |
8 bitów | itu_t_t35_kod_kraju | uimsbf | 181 |
16 bitów | itu_t_t35_kod_dostawcy | uimsbf | 49 lub 47 |
32 bity |
ATSC_user_identifier (tylko jeśli dostawcą jest 49) |
ASCII bslbf | GA94 |
8 bitów |
ATSC1_data_user_data_type_code (tylko jeśli dostawcą jest 47 lub 49) |
uimsbf | 3 |
8 bitów |
DIRECTV_user_data_length (tylko jeśli dostawcą jest 47) |
uimsbf | zmienny |
X*8 bitów | user_data_type_structure | dwójkowy | dowolna forma |
bslbf: łańcuch bitów, najpierw lewy bit; uimsbf: liczba całkowita bez znaku, najpierw najbardziej znaczący bit
UWAGA : SEI w zależności od kodera może zawierać więcej ładunków niż tylko napisy, więc trzeba by nawigować po wszystkich zawartych w nim typach ładunków.
Gdy itu_t_t35_country_code jest ustawiony na 181, itu_t_t35_provider_code definiuje producentów obsługiwanych przez USA.
Kod itu_t_t35_provider_code dla producentów z USA, gdy jest ustawiony na 47, definiuje dane_użytkownika DirecTV , a na 49 definiuje dane_użytkownika ATSC .
Kod ATSC_user_identifier dla ATSC1_data to „GA94”, a dla EBU AFD_data to „DTG1”.
Jeśli ATSC1_user_data_type_code nie wynosi 3 dla DTV CC lub 4 dla SCTE EIA-608 lub 5 dla próbek luminancji z modulacją amplitudy impulsu SCTE lub 6 dla danych słupkowych EBU, wówczas pakiet zostanie zakończony bajtami 0x0, 0x0, 0x1 .
Długość | Nazwa | Typ | Domyślny |
---|---|---|---|
16 lub 128 bitów |
flaga_pomocnicza lub nagłówek_pomocniczy |
wzorzyste bslbf lub 7 uimsbf |
0xFFFF lub różni się |
8 bitów | identyfikator_danych | uimsbf | 97 (0x61) |
8 bitów | drugorzędne_identyfikator_danych | uimsbf | 1 |
8 bitów | data_count | uimsbf | 78 (0x4E) |
16 bitów | identyfikator_cdp | uimsbf | 0x9669 |
8 bitów | cdp_liczba_danych | uimsbf | 78 (0x4E) |
4 bity |
cdp_framing_rate (30000/1001 = 4) |
uimsbf | 4 |
4 bity | cdp_zarezerwowany | uimsbf | 15 (0xF) |
1 bit | cdp_timecode_added | flaga | 0 |
1 bit | cdp_data_block_added | flaga | 1 |
1 bit | cdp_service_info_added | flaga | 0 |
1 bit | cdp_service_info_start | flaga | 0 |
1 bit | cdp_service_info_changed | flaga | 0 |
1 bit | cdp_service_info_end | flaga | 0 |
1 bit | cdp_contains_captions | flaga | 1 |
1 bit | cdp_zarezerwowany | flaga | 1 |
16 bitów | licznik_cdp | uimsbf | różni się |
8 bitów | sekcja_danych_cdp | uimsbf | 0x72 |
X*8 bitów | user_data_type_structure | dwójkowy | dowolna forma |
8 bitów | cdp_footer_section | uimsbf | 0x74 |
16 bitów | licznik_cdp | uimsbf | różni się |
8 bitów | suma_kontrolna cdp | uimsbf | różni się |
bslbf: łańcuch bitów, najpierw lewy bit; uimsbf: liczba całkowita bez znaku, najpierw najbardziej znaczący bit
Ta struktura została zaprojektowana dla dowolnego cyfrowego dźwięku lub metadanych, które mają być zsynchronizowane z klatką wideo. SDI transportuje co osiem bitów w 10-bitowym pakiecie wyrównanym, w przeciwieństwie do MXF, który jest wyrównany bajtowo, a pomocnicze bajty flag są zastępowane 128-bitowym nagłówkiem. przed sekcją cdp_data_section wstawiana jest pięciobajtowa sekcja kodu czasowego SMPTE . Jeśli cdp_service_info_added ma wartość true, to po cdp_data_section wstawiany jest dwubajtowy nagłówek i siedem bajtów na usługę z listą usług napisów. cdp_framing_rate można ustawić na następujące wyliczenia: 1 dla 24000/1001, 2 dla 24, 3 dla 25, 4 dla 30000/1001, 5 dla 30, 6 dla 50, 7 dla 60000/1001 i 8 dla 60 klatek na sekundę .
Kod cdp_timecode jest używany, gdy strumień danych cdp jest nieciągły (tj. nie jest dopełniony), a cdp_service_info jest używany do dodawania dodatkowych szczegółów do metadanych transmisji PSIP , takich jak kod języka, łatwy czytnik i użycie szerokoekranowe.
cdp_checksum jest wartością niezbędną do tego, aby suma arytmetyczna całego pakietu (pierwszy bajt cdp_id do cdp_checksum włącznie) modulo 256 była równa zeru.
Długość | Nazwa | Typ | Domyślny |
---|---|---|---|
1 bit (b7) | flaga_danych_procesu | flaga | 1 |
1 bit (b6) | proces_cc_data_flag | flaga | 1 |
1 bit (b5) | dodatkowa_flaga_danych | flaga | 0 |
5 bitów (b0-b4) | liczba_cc | uimsbf | zmienny |
8 bitów |
em_data (nie w danych CDP) |
uimsbf | 255 |
cc_count*24 bity | cc_data_pkt | bslbf | dowolna forma |
8 bitów |
marker_bits (nie w danych CDP) |
wzorzyste bslbf | 255 |
ponad 24 bity |
ATSC_reserved_user_data (nie w danych CDP) |
bslbf | dowolna forma |
Bity znacznika i bity zarezerwowane powinny być ustawione domyślnie. Jeśli ustawiona jest flaga_dodatkowych danych, wówczas ATSC_reserved_user_data będzie znajdować się na końcu pakietu, zakończona bajtami 0x0,0x0,0x1. Jeśli ustawiono process_cc_data_flag, cc_data_pkt należy przeanalizować w następujący sposób:
W przyszłości flaga process_em_data_flag wskaże, czy przetwarzać łańcuch bitów em_data. Ponieważ znaczenie nie zostało jeszcze zdefiniowane w standardzie ATSC a/53.
Pakiet danych napisów kodowanych (cc_data_pkt)
Łącznie 3 bajty:
Długość | Nazwa | Typ | Domyślny |
---|---|---|---|
5 bitów (b7-b3) | znacznik_bity (wszystkie jedynki) | wzorzyste bslbf | 31 |
1 bit (b2) | cc_ważny | flaga | 1 |
2 bity (b1-b0) | typ_cc | bslbf | 0 |
8 bitów | cc_data_1 | bslbf | Dowolny format DTVCC/EIA-608 bajt 1 |
8 bitów | cc_data_2 | bslbf | DTVCC w dowolnej formie/EIA-608 bajt 2 |
Jeśli cc_valid nie jest ustawione, cc_data_pkt należy uznać za wypełnienie i odrzucić. Jeśli jest ustawione, cc_type będzie jedną z czterech wartości NTSC_CC_FIELD_1 = 0, NTSC_CC_FIELD_2 = 1, DTVCC_PACKET_DATA = 2, DTVCC_PACKET_START = 3. Jeśli wynosi 0 lub 1 , pola cc_data powinny być interpretowane jako podpisy EIA-608 (pozwalając na łącznie 4 podpisy, tak jak robi to EIA-608). Jeśli cc_type wynosi 3, wówczas dekoder powinien rozpocząć składanie pakietu kanału napisów z danymi cc_data, jak opisano poniżej, a jeśli typ cc_type wynosi 2, powinien dołączyć dane cc_data do każdego składanego pakietu kanału napisów. Jeśli pakiet DTVCC jest już montowany i albo cc_valid jest ustawione, a cc_type wynosi 3, albo cc_valid jest puste, a cc_type wynosi 2 lub 3, wówczas pakiet należy uznać za kompletny.
UWAGA: W dekoderze napisów pakiety cc_data muszą zostać ponownie złożone we właściwej kolejności, aby utworzyć pakiety DTVCC. Standard nie jest w tym jasny, ale wydaje się, że powinno to być w kolejności wyświetlania ramek, a nie w kolejności zakodowanych ramek. Oznacza to, że w koderze DTVCC pakiety powinny być prawdopodobnie podzielone i wstawione do danych użytkownika obrazu jako pakiety cc_data również w kolejności wyświetlania.
UWAGA: Aby uniknąć tego błędu w standardzie CTA-708, niektóre kodery kodują napisy tylko w jednym typie ramki, np. ten sam.
Pakiet DTVCC (cc_data_1/cc_data_2)
Długość | Nazwa | Typ | Domyślny |
---|---|---|---|
2 bity | numer sekwencji | uimsbf | 0 |
6 bitów |
rozmiar_pakietu (jeśli 0, rozmiar_pakietu wynosi 64) |
uimsbf | zmienny |
(rozmiar_pakietu * 2 - 1) * 8 bitów | dane_pakietu | dwójkowy | dowolna forma |
W data_pakietu istnieje tylko jeden typ pakietu. Nazywa się to blokiem serwisowym. To dodatkowo dzieli strumień transportowy DTVCC na 63 strumienie podrzędne, z których każdy opisuje dyskretną usługę tworzenia napisów. Usługa 1 jest oznaczona jako Podstawowa Usługa Napisów, natomiast Usługa 2 to Usługa Języka Dodatkowego. Deskryptor tytułowy opisuje wszelkie inne oferowane usługi. pakiet_rozmiar określa liczbę dwubajtowych bloków, po których następują bloki nieparzyste uzupełnione bajtem NULL.
Pakiet usługi Service Block (dane_pakietu)
Długość | Nazwa | Typ | Domyślny |
---|---|---|---|
3 bity | numer_usługi | uimsbf | 1 |
5 bitów | rozmiar bloku | uimsbf | zmienny |
2 bity |
null_fill (tylko jeśli service_number to 7) |
wyrównanie bajtów | 0 |
6 bitów |
rozszerzony_numer_usługi (tylko jeśli numer_usługi wynosi 7) |
uimsbf | zmienny |
rozmiar_bloku*8 bitów |
block_data (gdy rozmiar_bloku > 0) |
uimsbf | dowolna forma |
Jeśli numer_usługi wynosi 7, to numer_rozszerzonej_usługi jest dodawany i używany zamiast numeru_usługi. Jeśli wielkość_bloku wynosi 0, numer_usługi również musi wynosić zero bez danych blokowych. Jest to znane jako Null Service Block Header, który jest używany do wypełnienia pakietu, gdy nie są wysyłane żadne napisy.
Uwaga: Blokady usług nie mogą przekraczać granic pakietów kanałów napisów. Oznacza to, że każdy pakiet kanału napisów może być analizowany bez zachowywania stanu samych bloków serwisowych.
Kodowanie strumienia napisów (block_data)
63 podstrumienie usługi napisów zawierają mieszany strumień poleceń i tekstu, podobnie jak Telnet . Istnieją cztery podgrupy kodu logicznego: CL, GL, CR i GR. Każdy z nich ma jedno- i wieloznakowe zestawy kodów.
Grupa CL: C0 | 0x00-0x1F | Podzbiór kodów kontrolnych ASCII |
Grupa CR: C1 | 0x80-0x9F | Kody kontroli napisów |
Grupa CL: C2 | 0x1000-0x101F | Rozszerzone różne kody kontrolne |
Grupa CR: C3 | 0x1080-0x109F | Rozszerzony zestaw kodów kontrolnych 2 |
Grupa GL: G0 | 0x20-0x7F | Zmodyfikowana wersja zestawu znaków drukowalnych ANSI X3.4 (ASCII) |
GR Grupa: G1 | 0xA0-0xFF | ISO 8859-1 Latin 1 Znaki |
Grupa GL: G2 | 0x1020-0x107F | Rozszerzony zestaw kodów kontrolnych 1 |
Grupa GR: G3 | 0x10A0-0x10FF | Przyszłe postacie i ikony |
Za każdym razem, gdy widoczny jest znak polecenia, każdy tekst zgromadzony w parserze powinien zostać opróżniony. Ponieważ tekst może wymagać opróżnienia, gdy nie ma żadnego oczekującego polecenia, w zestawie poleceń C0 istnieje polecenie puste, znane jako polecenie ETX. Istnieją również dwa specjalne polecenia, Reset i DelayCancel. Muszą one zostać przeanalizowane z wyprzedzeniem. Wydane wcześniej polecenie Delay można anulować w dowolnym momencie za pomocą polecenia DelayCancel, więc gdy Delay zostanie zauważone, dekoder musi szukać DelayCancel i szukać tylko DelayCancel. Z drugiej strony polecenie Reset jest wysyłane w celu wyrwania się z nieznanego stanu dekodera i wszystkich danych, zanim będą musiały zostać zignorowane.
Grupy postaci
Tabela C0
0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 | 0x09 | 0x0a | 0x0b | 0x0c | 0x0d | 0x0e | 0x0f | |
0x00 | NUL | ETX | BS | FF | CR | HCR | ||||||||||
0x10 | ZEWN1 | P16 |
NUL, BS, FF i CR są interpretowane tak, jak w kodach kontrolnych ASCII. HCR przenosi lokalizację pisaka na początek bieżącego wiersza i usuwa jego zawartość. FF czyści ekran i przesuwa położenie pióra do (0,0). ETX to wspomniane wcześniej polecenie NULL, które służy do opróżniania tekstu do bieżącego okna, gdy żadne inne polecenie nie jest w toku. EXT1 służy do ucieczki do tablic „C2”, „C3”, „G2” i „G3” dla następnego bajtu. Wreszcie, P16 może być użyte do ucieczki kolejnych dwóch bajtów dla map chińskich i innych dużych znaków.
Po wszystkich znakach z zakresu 0x10-0x17, który obecnie obejmuje EXT1, następuje jeden bajt, który należy interpretować inaczej. A po wszystkich znakach z zakresu 0x18-x1f, który obecnie obejmuje P16, następują dwa bajty, które należy interpretować inaczej. Jeśli dekoder napotka jeden z nich i nie będzie wiedział, co zrobić, przed kontynuacją powinien pominąć następny bajt lub dwa odpowiednio.
Tabela C1
0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 | 0x09 | 0x0a | 0x0b | 0x0c | 0x0d | 0x0e | 0x0f | |
0x80 | CW0 | CW1 | CW2 | CW3 | CW4 | CW5 | CW6 | CW7 | CLW | DSW | HDW | TGW | DLW | DLY | DLC | RST |
0x90 | SPA | SPC | SPL | SWA | DF0 | DF1 | DF2 | DF3 | DF4 | DF5 | DF6 | DF7 |
Tabela C1 zawiera wszystkie aktualnie zdefiniowane polecenia napisów. Zostaną one szczegółowo opisane w następnej sekcji.
Tabela C2
Tabela C2 nie zawiera żadnych poleceń od wersji A CTA-708. Jednakże, jeśli polecenie jest widoczne w tych zestawach kodów, dekoder musi pominąć odpowiednią liczbę kolejnych bajtów.
0x00-0x07 | +0 bajtów |
0x08-0x0f | +1 bajt |
0x10-0x17 | +2 bajty |
0x18-0x1f | +3 bajty |
Tabela C3
Tabela C3 nie zawiera żadnych poleceń od wersji A CTA-708. Jeśli jednak polecenie jest widoczne w tych zestawach kodów, dekoder musi pominąć odpowiednią liczbę kolejnych bajtów.
0x80-0x87 | +4 bajty |
0x88-0x8f | +5 bajtów |
Tabela G0
0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 | 0x09 | 0x0a | 0x0b | 0x0c | 0x0d | 0x0e | 0x0f | |
0x20 | Sp | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
0x30 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
0x40 | @ | A | B | C | D | mi | F | G | H | I | J | k | Ł | M | N | O |
0x50 | P | Q | R | S | T | u | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
0x60 | ` | A | B | C | D | mi | F | G | H | I | J | k | l | M | N | o |
0x70 | P | Q | R | S | T | u | w | w | X | y | z | { | | | } | ~ | MN |
Tabela G0 składa się w większości ze znaków ASCII. SP jest tutaj skrótem dla przestrzeni. MN to nuta muzyczna, która zastępuje kod polecenia Usuń w ASCII i może być dowolnym z „♩”, „♪”, „♫” lub „♬”, w zależności od producenta odbiornika.
Tabela G1
0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 | 0x09 | 0x0a | 0x0b | 0x0c | 0x0d | 0x0e | 0x0f | |
0xa0 | NBS | ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © | ª | « | ¬ | - | ® |  ̄ |
0xb0 | ° | ± | ² | ³ | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ | ¾ | ¿ |
0xc0 | A | A | A | A | A | A | Æ | C | MI | MI | MI | MI | I | I | I | I |
0xd0 | D | N | Ò | O | Ô | Õ | O | × | Ø | Ù | U | Û | U | Ý | Þ | SS |
0xe0 | A | A | A | A | A | A | ć | C | mi | mi | mi | mi | I | I | I | I |
0xf0 | D | N | O | ó | ô | õ | ö | ÷ | ø | u | u | u | u | ý | þ | ÿ |
Tabela G1 to w zasadzie zestaw znaków ISO 8859-1 Latin-1. Uwaga znak 0xa0 to nierozdzielająca spacja , której należy użyć, aby zapobiec rozdzielaniu dwóch słów na osobne wiersze przez zawijanie słów.
Tabela G2
0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 | 0x09 | 0x0a | 0x0b | 0x0c | 0x0d | 0x0e | 0x0f | |
0x20 | TSP | NBTSP | … | S | Œ | |||||||||||
0x30 | BLK | ' | ' | “ | ” | • | ™ | S | œ | ℠ | ź | |||||
0x40 | ||||||||||||||||
0x50 | ||||||||||||||||
0x60 | ||||||||||||||||
0x70 | ⅛ | ⅜ | ⅝ | ⅞ | │ | ┐ | └ | ─ | ┘ | ┌ |
TSP i NBTSP to odpowiednio przezroczysta przestrzeń i nieprzerywająca przezroczysta przestrzeń. Tabela G2 zawiera różne znaki, które mogą nie być wyświetlane we wszystkich przeglądarkach. BLK oznacza pełny blok, który wypełnia cały blok znaków jednolitym kolorem pierwszego planu.
Tabela G3
Tabela G3 zawiera tylko jeden znak, ikonę [CC], z kwadratowymi rogami. Ten znak znajduje się pod adresem 0xa0.
Polecenia napisów
bity | Nazwa polecenia | Parametry | |
---|---|---|---|
ETX0x03 | 8 | Koniec tekstu | |
CW0–CW7 0x80–0x87 | 8 | Ustaw bieżące okno 0–7 | |
CLW 0x88 | 16 | Wyczyść Windows | mapa bitowa okna |
DSW 0x89 | 16 | Wyświetl okna | mapa bitowa okna |
HDW 0x8A | 16 | UkryjWindows | mapa bitowa okna |
TGW 0x8B | 16 | Przełącz Windows | mapa bitowa okna |
DLW 0x8C | 16 | UsuńWindows | mapa bitowa okna |
DLY 0x8D | 16 | Opóźnienie | dziesiętne sekundy |
DLC0x8E | 8 | Opóźnij Anuluj | |
RST 0x8F | 8 | Resetowanie | |
SPA0x90 | 24 | Ustaw atrybuty pióra | rozmiar pióra, czcionka, skrypty, kursywa, podkreślenie |
SPC0x91 | 32 | Ustaw kolor pióra | kolor pierwszego planu, krycie pierwszego planu, kolor tła, krycie tła, kolor krawędzi, typ krawędzi |
SPL 0x92 | 24 | Ustaw lokalizację pióra | wiersz, kolumna |
SWA0x97 | 40 | Ustaw atrybuty okna | justowanie, kierunek drukowania, kierunek przewijania, zawijanie wyrazów, efekt wyświetlania, kierunek efektu, szybkość efektu. kolor wypełnienia, kolor obramowania, typ obramowania, krycie |
DF0–DF7 0x98–0x9F | 56 | Zdefiniuj okno 0–7 | priorytet, numer kotwicy, kotwica pionowa, kotwica pozioma, liczba wierszy, liczba kolumn, zablokowana, widoczna, wyśrodkowana, identyfikator stylu |
Koniec tekstu (0x03)
Polecenie EndOfText jest poleceniem pustym, którego można użyć do opróżnienia dowolnego buforowanego tekstu do bieżącego okna. Wszystkie polecenia wymuszają opróżnienie dowolnego buforowanego tekstu do bieżącego okna, więc to polecenie jest potrzebne tylko wtedy, gdy żadne inne polecenie nie oczekuje.
SetCurrentWindow0-7 (0x80-0x87)
SetCurrentWindow mówi dekoderowi napisów, które okno opisują następujące polecenia: SetWindowAttributes, SetPenAttributes, SetPenColor, SetPenLocation. Jeśli określone okno nie zostało jeszcze utworzone za pomocą polecenia DefineWindow, polecenie SetCurrentWindow i właściwości okna można bezpiecznie zignorować.
ClearWindows (0x88 + 1 bajt)
ClearWindows czyści wszystkie okna określone w 8-bitowej mapie bitowej okna.
WyświetlaczWindows (0x89 + 1 bajt)
DisplayWindows wyświetla wszystkie okna określone w 8-bitowej mapie bitowej okna.
Ukryj Windows (0x8A + 1 bajt)
HideWindows ukrywa wszystkie okna określone w 8-bitowej mapie bitowej okna.
ToggleWindows (0x8B + 1 bajt)
ToggleWindows ukrywa wszystkie wyświetlane okna i wyświetla wszystkie ukryte okna określone w 8-bitowej mapie bitowej okna.
Usuń Windows (0x8C + 1 bajt)
DeleteWindows usuwa wszystkie okna określone w 8-bitowej mapie bitowej okna. Jeśli bieżące okno, określone w ostatnim poleceniu SetCurrentWindow, zostanie usunięte, wówczas bieżące okno stanie się niezdefiniowane, a polecenia dotyczące atrybutów okna nie powinny działać aż do następnego polecenia SetCurrentWindow lub DefineWindow.
Opóźnienie (0x8D + 1 bajt)
Opóźnienie wstrzymuje przetwarzanie bieżącej usługi, z wyjątkiem skanowania DelayCancel i Reset. Okres zawieszenia jest ustawiany przez parametr jednobajtowy. Parametr określa opóźnienie w dziesiątych częściach sekundy, więc minimalne opóźnienie to 0,1 sekundy, a maksymalne opóźnienie to 25,5 sekundy. Zero sekundowe opóźnienie można bezpiecznie zignorować w dekoderze, ale nie powinno ono być emitowane przez koder. Opóźnienie powinno zostać anulowane, jeśli bufor wejściowy dekodera napisów zapełni się, odebrano DelayCancel lub Reset, lub upłynie określony czas opóźnienia.
Opóźnienie Anuluj (0x8E)
DelayCancel kończy aktywne opóźnienie i wznawia normalne przetwarzanie poleceń. DelayCancel należy przeskanować podczas opóźnienia.
Zresetuj (0x8F)
Reset usuwa wszystkie okna, anuluje wszelkie aktywne opóźnienia i czyści bufor przed poleceniem Reset. Reset powinien być skanowany podczas opóźnienia.
SetPenAttributes (0x90 + 2 bajty)
Polecenie SetPenAttributes określa sposób renderowania określonych atrybutów kolejnych znaków w bieżącym oknie, aż do następnego polecenia SetPenAttributes. To polecenie ma następujące parametry:
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |TXT_TAG|OFS|PSZ| |I|U|EDTYP|FNTAG| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ 15 8 7 0 OFS = offset ; PSZ = rozmiar pisaka I = kursywa przełącznik ; U = przełącznik podkreślenia EDTYP = typ krawędzi ; FNTAG = znacznik czcionki
- rozmiar pisaka, 2 bity, { SMALL=0, STANDARD=1, LARGE=2, ILLEGAL_VAL=3 }
- offset, 2 bity, { SUBSCRIPT=0, NORMAL=1, SUPERSCRIPT=2, ILLEGAL_VAL=3 }
- tag tekstowy, 4 bity, { dialog=0, source_or_speaker_id=1, electronically_reproduced_voice=2, dialog_in_other_language=3, voiceover=4, audible_translation=5, subtitle_translation=6, voice_quality_description=7, song_lyrics=8, sound_effect_description=9, musical_score_description=10 , przysięga=11, niezdefiniowana_0=12, niezdefiniowana_1=13, niezdefiniowana_2=14, niewidoczna=15 }
- znacznik czcionki, 3 bity, { default=0, monospaced_serif=1, proporcjonalna_szeryf=2, monospaced_sanserif=3, proporcjonalna_sanserif=4, casual=5, cursive=6, smallcaps=7 }
- typ krawędzi, 3 bity, { BRAK=0, PODNIESIONY=1, WCIŚNIĘTY=2, UNIFORM=3, LEFT_DROP_SHADOW=4, RIGHT_DROP_SHADOW=5, ILLEGAL_VAL0=6, ILLEGAL_VAL1=7 }
- podkreślenie, 1 bit, { NIE=0, TAK=1 }
- kursywa, 1 bit, { NIE=0, TAK=1 }
SetPenColor (0x91 + 3 bajty)
SetPenColor ustawia kolor pierwszego planu, tła i krawędzi dla kolejnych znaków. Kolor jest określany za pomocą 6 bitów, po 2 dla każdego koloru: niebieskiego, zielonego i czerwonego. Bity najniższego rzędu odpowiadają kolorowi niebieskiemu, kolejne dwa bity zielonemu, a bity najwyższego rzędu odpowiadają czerwieni. Nieprzezroczystość jest reprezentowana przez dwa bity, reprezentują one SOLID=0, FLASH=1, TRANSLUCENT=2 i TRANSPARENT=3. Kolor krawędzi jest kolorem obrysowanych krawędzi tekstu, ale kontur ma takie samo krycie jak pierwszy plan, więc bity najwyższego rzędu trzeciego bajtu parametru powinny być wyczyszczone. Parametry są następujące:
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + |FOP|F_R|F_G|F_B| |BOP|B_R|B_G|B_B| |0|0|E_R|E_G|E_B| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + 23 16 15 8 7 0 FOP = krycie pierwszego planu; BOP = krycie tła F_? = składnik koloru pierwszego planu; B_? = składowa koloru tła E_? = składowa koloru krawędzi
- kolor pierwszego planu, 6 bitów
- krycie pierwszego planu, 2 bity
- kolor tła, 6 bitów
- krycie tła, 2 bity
- kolor krawędzi, 6 bitów
SetPenLocation (0x92 + 2 bajty)
SetPenLocation ustawia położenie następnego bitu dołączonego tekstu w bieżącym oknie. Ma dwa parametry, wiersz i kolumnę. Jeśli okno nie jest zablokowane (zobacz Zdefiniuj okno) i obowiązuje czcionka MAŁA, lokalizacja może znajdować się poza prawidłowymi adresami.
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |0|0|0|0| WIERSZ | |0|0| KOLUMNA | +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ 15 8 7 0
- rząd, 4 bity, normalnie 0-14
- wypełnienie zerowe, 4 bity
- kolumna, 6 bitów, zwykle 0-31 dla formatów 4:3 i 0-41 dla formatów 16:9
- wypełnienie zerowe, 2 bity
SetWindowAttributes (0x97 + 4 bajty)
SetWindowAttributes Ustawia atrybuty bieżącego okna. Kolor wypełnienia jest określony za pomocą 6 bitów, po 2 dla każdego koloru niebieskiego, zielonego i czerwonego. Bity najniższego rzędu odpowiadają kolorowi niebieskiemu, kolejne dwa bity zielonemu, a bity najwyższego rzędu odpowiadają czerwieni. Nieprzezroczystość wypełnienia jest reprezentowana przez dwa bity, reprezentują one SOLID=0, FLASH=1, TRANSLUCENT=2 i TRANSPARENT=3. Kolor obramowania okna określa się w ten sam sposób. Jednak typ obramowania jest podzielony na dwa pola. Powinny być one połączone, przy czym obramowanie typu 01 reprezentuje bity niższego rzędu, a obramowanie typu 2 — bit wyższego rzędu. Po połączeniu Typ obramowania ma 6 prawidłowych wartości: NONE=0, RAISED=1, DEPRESSED=2, UNIFORM=3, SHADOW_LEFT=4 i SHADOW_RIGHT=5.
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + +-+-+-+-+-+-+-+-+ |FOP|F_R|F_G|F_B| |BTP|B_R|B_G|B_B| |W|B|PRD|SCD|JST| |EFT_SPD|EFD|DEF| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + +-+-+-+-+-+-+-+-+ 31 24 23 16 15 8 7 0 FOP = krycie wypełnienia ; BTP = dolne bity typu obramowania; B = górny bit typu obramowania F_? = składnik koloru wypełnienia; B_? = składnik koloru obramowania W = przełączanie zawijania wyrazów; PRD = kierunek druku; SCD = kierunek przewijania JST = wyrównanie ; EFT_SPD = prędkość efektu; EFD = kierunek efektu; DEF = efekt wyświetlania
- kolor wypełnienia, 6 bitów. Kolor wnętrza okna.
- krycie wypełnienia, 2 bity. { SOLID=0, FLASH=1, PRZEZROCZYSTY=2 i PRZEZROCZYSTY=3 }
- kolor obramowania, 6 bitów. Kolor obramowania okna.
- typ obramowania 01, 2 bity. Zobacz dyskusję powyżej.
- wyrównać, 2 bity. Dla kierunków drukowania od lewej do prawej i od prawej do lewej wartości są następujące: {LEWO=0, PRAWO=1, ŚRODEK=2, PEŁNY=3}, dla kierunków drukowania od góry do dołu i od dołu do góry wartości to: GÓRA=0, DÓŁ=1, ŚRODEK=2, PEŁNY=3
W przypadku wyrównania do lewej , dekodery powinny wyświetlać dowolną część odebranego wiersza tekstu po jego odebraniu. Dla środka , do prawej i pełnego , dekodery mogą wyświetlać dowolną część odebranego wiersza tekstu po jego odebraniu lub mogą opóźniać wyświetlanie odebranego wiersza tekstu do czasu odebrania wskaźnika zakończenia wiersza. Wskaźnik ukończenia wiersza jest definiowany jako otrzymanie CR , ETX lub dowolnego innego polecenia, z wyjątkiem SetPenColor , SetPenAttributes lub SetPenLocation , gdzie przemieszczenie pisaka znajduje się w tym samym rzędzie.
Odebranie znaku dla wyświetlanego wiersza, który zawiera już tekst z wyrównaniem do środka , do prawej lub pełnym spowoduje wyczyszczenie wiersza przed wyświetleniem nowo odebranego znaku i ewentualnych kolejnych znaków. Otrzymanie polecenia justowania zmieniającego ostatnio otrzymane uzasadnienie dla danego okna spowoduje wyczyszczenie tego okna.
- kierunek przewijania, 2 bity. Określa, w jakim kierunku tekst będzie przewijany po osiągnięciu końca „linii” podpisu. Ma jedną z czterech wartości: LEFT_TO_RIGHT=0, RIGHT_TO_LEFT=1, TOP_TO_BOTTOM=2 i BOTTOM_TO_TOP=3.
- kierunek drukowania, 2 bity. Określa sposób dodawania tekstu zamówienia do okna. Ma jedną z czterech wartości: LEFT_TO_RIGHT=0, RIGHT_TO_LEFT=1, TOP_TO_BOTTOM=2 i BOTTOM_TO_TOP=3.
- zawijanie słów, 1 bit. Jeśli ustawione zawijanie słów jest włączone, w przeciwnym razie zawijanie słów nie powinno być stosowane.
- obramowanie typu 2, 1 bit. Zobacz dyskusję powyżej.
- efekt wyświetlania, 2 bity. Określa efekt, który ma być użyty do wyświetlenia lub ukrycia okna. Ma jedną z trzech prawidłowych wartości: SNAP=0, FADE=1 i WIPE=2. SNAP oznacza, że okno powinno natychmiast przyjąć pełną nieprzezroczystość. FADE oznacza, że okno powinno pojawiać się lub znikać z odpowiednią szybkością . Wreszcie, WIPE oznacza, że okno powinno wlatywać lub wychodzić z ekranu od granicy obramowania ekranu określonego w kierunku efektu z szybkością określoną w efekcie prędkości
- kierunek efektu, 2 bity. Określa, skąd pochodzi efekt wycierania na wyświetlaczu okna. Ma jedną z czterech wartości: LEFT_TO_RIGHT=0, RIGHT_TO_LEFT=1, TOP_TO_BOTTOM=2 i BOTTOM_TO_TOP=3. Gdy okno jest wycierane z ekranu, należy je wycierać w kierunku przeciwnym do tego, w jaki zostało wytarte na ekranie.
- szybkość efektu, 4 bity. Określa to w półsekundach, jak długo powinien trwać efekt wyświetlania lub ukrywania napisów, taki jak FADE i WIPE. Maksymalny czas to 7,5 sekundy, a minimalna wartość różna od zera to 0,5 sekundy.
Kolory, malowanie tekstu, efekty i typy obramowań można dostosować za pomocą poleceń SetWindowAttributes i SetPenAttributes . Jednak dostawca napisów może chcieć użyć predefiniowanych standardowych stylów okien. Zestaw predefiniowanych stylów będzie na stałe przechowywany w odbiornikach. Ten zestaw przewiduje najczęściej używane typy okien napisów w celu zachowania przepustowości kanału napisów poprzez wyeliminowanie konieczności przesyłania zbędnych poleceń SetWindowAttributes i SetPenAttributes .
Predefiniowane style okien i piór można określić za pomocą parametrów stylu okna i identyfikatora stylu pióra w poleceniu DefineWindow .
DefineWindow07 (0x98-0x9F, + 6 bajtów)
DefineWindow0-7 tworzy jedno z ośmiu okien używanych przez dekoder napisów. Polecenie to powinno być okresowo wysyłane przez koder napisów, nawet dla wcześniej istniejących okien, tak aby nowo dostrojony dekoder napisów mógł rozpocząć wyświetlanie napisów. W przypadku wydania na wcześniej istniejącym oknie styl pióra i styl okna mogą pozostać puste, co mówi dekoderowi, aby nie zmieniał bieżących stylów, jeśli istnieją, i zainicjował oba do stylu 1, jeśli okno nie istnieje w swoim kontekście.
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + |0|0|V|R|C|PRZEDNI| |P| VERT_ANCHOR | | HOR_ANCHOR | +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + 47 40 39 32 31 24 V = widoczne ; R = przełącznik blokady rzędu; C = przełącznik blokady kolumny PRIOR = priorytet ; P = przełącznik względny +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+- +-+-+ |ANC_ID |ROW_CNT| |0|0| COL_COUNT | |0|0|WNSTY|PNSTY| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+- + 23 16 15 8 7 0 WNSTY = styl okna ; PNSTY = styl pióra
Parametry są następujące:
- priorytet, 3 bity, 0-7. Dekoder jest wymagany tylko do wyświetlenia do czterech okien. Jeśli zażądano więcej niż czterech wyświetlanych okien, dekoder powinien wyświetlić cztery okna o najwyższym priorytecie.
- blokada kolumny, 1 bit. Jeśli jest ustawiona, blokada kolumn ustala bezwzględną liczbę wyświetlanych kolumn. Jeśli nie jest ustawiona, dekoder napisów może wyświetlać więcej kolumn tekstu, gdy pozwala na to rozmiar czcionki, a polecenie SetPenLocation może przejść do lokalizacji poza zdefiniowanym rozmiarem okna.
- blokada wiersza, 1 bit. Jeśli jest ustawiona, blokada wierszy ustala bezwzględną liczbę wyświetlanych wierszy. Jeśli nie jest ustawiona, dekoder napisów może wyświetlać więcej wierszy tekstu, gdy pozwala na to rozmiar czcionki, a polecenie SetPenLocation może przejść do lokalizacji poza zdefiniowanym rozmiarem okna.
- widoczny, 1 bit. Jeśli jest ustawiona, ta flaga powoduje, że okno jest wyświetlane po utworzeniu, jeśli nie jest ustawiona, okno jest początkowo ukryte.
- zero, 2 bity. Wypełnienie zerowe.
- kotwica pionowa, 7 bitów. Pionowe położenie punktu zakotwiczenia okna. Zakres wynosi zwykle 0-74. gdy pozycjonowania względnego, zakres wynosi 0-99.
- pozycjonowanie względne, 1 bit. Jeśli jest ustawiona, kotwica pozioma i pionowa reprezentują względne współrzędne, procenty, zamiast regularnych współrzędnych.
- kotwica pozioma, 8 bitów. Poziome położenie punktu zaczepienia okna. Zakres wynosi zwykle 0-209, gdy współczynnik kształtu strumienia wynosi 16:9, i 0-159, gdy współczynnik kształtu strumienia wynosi 4:3. gdy pozycjonowania względnego, zakres wynosi 0-99.
- liczba wierszy, 4 bity. Jest to liczba wierszy tekstu, przy założeniu STANDARDOWEGO rozmiaru czcionki, które zmieści się w oknie. Zakres wynosi 0-15. UWAGA: W praktyce dekoder musi dodać jeden do liczby, aby uzyskać zamierzony efekt. czyli 0 -> 1, 1 -> 2 itd.
- identyfikator kotwicy, 4 bity. Prawidłowe wartości: { LEWY_GÓRNY=0, ŚRODKOWY_GÓRNY=1, PRAWY_GÓRNY=2, LEWY_ŚRODKOWY=3, ŚRODKOWY_ŚRODKOWY=4, PRAWY_ŚRODKOWY=5, LEWY_DOLNY=6, ŚRODKOWY_DOLNY=7, PRAWY_DOLNY=8 }
- liczba kolumn, 6 bitów. Jest to liczba kolumn tekstu, przy założeniu STANDARDOWEJ wielkości czcionki, które zmieści się w oknie. Zakres wynosi 0-31 dla strumieni 4:3 i 0-41 dla strumieni 16:9. UWAGA: W praktyce dekoder musi dodać jeden do liczby, aby uzyskać zamierzony efekt. czyli 0 -> 1, 1 -> 2 itd.
- zero, 2 bity. Wypełnienie zerowe.
- styl pióra, 3 bity. Jeśli wartość wynosi zero i jest to nowe okno, dla przyszłych znaków należy użyć stylu pióra. Jeśli wartość wynosi zero i jest to istniejące okno, należy nadal używać poprzedniego stylu pióra. Dla wartości niezerowych styl pisaka należy ustawić tak, jakby wywołano SetPenStyle z parametrami w stylów pisaków poniżej.
- styl okna, 3 bity. Jeśli wartość wynosi zero i jest to nowe okno, dla przyszłych znaków należy użyć stylu okna pierwszego. Jeśli wartość wynosi zero i jest to istniejące okno, należy nadal używać poprzedniego stylu okna. Dla wartości niezerowych styl okna powinien być ustawiony tak, jakby wywołano SetWindowStyle z parametrami z stylów okien .
- zero, 2 bity. Wypełnienie zerowe.
Predefiniowany styl pióra
Jeśli nie zaznaczono inaczej, predefiniowany rozmiar czcionki jest standardowy, przesunięcie jest normalne, kursywa i podkreślenie nie są ustawione, rodzaj krawędzi jest brak, kolor pierwszego planu jest biały, krycie pierwszego planu jest stałe, kolor tła jest czarny, krycie tła jest jednolite, a kolor krawędzi jest czarny .
- Domyślny
- Szeryf o stałej szerokości
- Proporcjonalny szeryf
- Bezszeryfowe o stałej szerokości
- Proporcjonalny bezszeryfowy
- Bezszeryfowa o stałej szerokości — przezroczystość tła jest przezroczysta
- Proporcjonalny Sans Serif — przezroczystość tła jest przezroczysta
Predefiniowany styl okna
O ile nie zaznaczono inaczej, predefiniowane wyrównanie jest do lewej, kierunek drukowania jest od lewej do prawej, kierunek przewijania jest od dołu do góry, zawijanie wyrazów jest wyłączone, efekt wyświetlania jest przyciągany, kierunek efektu i prędkość nie są ustawione, kolor wypełnienia jest czarny, wypełnienie krycie jest pełne, a typ obramowania to brak.
- Wyskakujące okienko w stylu CEA-608
- PopUp z przezroczystym tłem — krycie wypełnienia jest przezroczyste
- CEA-608 Style PopUp Centered — justowanie jest na środku
- Zestaw zbiorczy stylu CEA-608 — zawijanie słów jest włączone
- RollUp z przezroczystym tłem — zawijanie tekstu jest włączone; krycie wypełnienia jest przezroczyste
- CEA-608 Style Centered RollUp — zawijanie tekstu jest włączone; uzasadnienie jest na środku
- Ticker Tape - kierunek druku to góra do dołu; kierunek przewijania to od prawej do lewej
Tekst/polecenia
Zawijanie tekstu
Czasami może być pożądane, aby zawijanie słów było wykonywane w dekoderze napisów. Może się tak zdarzyć, ponieważ użytkownik końcowy dekodera napisów określa inną czcionkę niż żąda koder lub użytkownik końcowy chce zobaczyć więcej tekstu napisów niż normalnie jest to możliwe. Zauważ, że SetWindowAttributes ustawia flagę zawijania słów, gdy jest ustawiona, oznacza to, że napisy są pisane z myślą o zawijaniu słów, i może to być użyte jako wskazówka dla dekodera, że zawijanie słów jest bezpieczne. Zawijanie wyrazów może być wykonywane na znakach powrotu karetki, spacji i łącznika, jednak zarówno nierozdzielająca spacja (0xA0 w tablicy G1), jak i nierozdzielająca przezroczysta spacja (0x21 w tablicy G2) nie powinny być uważane za znaki bezpieczne przepisać.
Identyfikator kotwicy
Istnieje dziewięć prawidłowych identyfikatorów zakotwiczenia, pokazanych poniżej:
Służą one do informowania dekodera napisów, jak rozwinąć pole tekstowe, gdy tekst jest dodawany do okna napisów. Do okna jest przypisany punkt kontrolny lub lokalizacja oraz identyfikator kotwicy. Jeśli punkt zakotwiczenia to powiedzmy 0,0, a identyfikator zakotwiczenia to 0, okno rozwinie się w dół i w prawo od lewego górnego rogu obszaru podpisu. Jeśli punkt zakotwiczenia to 50%, 50%, a identyfikator zakotwiczenia to 4, okno rozszerzy się jednakowo we wszystkich kierunkach od środka obszaru podpisu.
Czcionki
CTA-708 obsługuje osiem znaczników czcionek: niezdefiniowana, szeryfowa o stałej szerokości, szeryfowa proporcjonalna, bezszeryfowa o stałej szerokości, proporcjonalna bezszeryfowa, dorywcza, kursywa, małe wielkie litery. Pierwsza nie jest zdefiniowana i prawdopodobnie należy jej unikać. Jakkolwiek te czcionki są zaimplementowane, powinna istnieć możliwość ich podkreślenia i pochylenia. Wersje pogrubione nie są potrzebne, ale powinno być możliwe narysowanie obrysu każdej litery innym kolorem i przezroczystością niż wypełnienie. Wreszcie, te czcionki muszą umożliwiać indeksy górne i dolne oraz obsługiwać Latin-1 oraz dodatkowe symbole w CTA-708, takie jak symbol [CC] i kilkanaście znaków Unicode w tym standardzie. Poniżej znajduje się kilka przykładów czcionek, aby uzyskać więcej informacji, zobacz o czcionkach w Wikipedii .
Proporcjonalny szeryfowy | |
---|---|
Proporcjonalny bezszeryfowy | |
Okna
Adresowalny obszar okna powinien zawsze znajdować się w obszarze Safe-Title, tak aby wszystkie adresowalne lokalizacje znajdowały się w obrębie okna wyświetlacza, jeśli monitor przeskanuje obraz na nieprostokątny ekran. Jeżeli strumień wideo ma współczynnik proporcji 16:9 adresy powinny zawierać się w zakresie 0..74 dla adresów pionowych i 0..209 dla adresów poziomych. Jeżeli strumień wideo ma proporcje 4:3 adresy powinny zawierać się w zakresie 0..74 dla adresów pionowych i 0..159 dla adresów poziomych. Dla innych współczynników proporcji należy stosować adresowanie względne, a adresy pionowe i poziome powinny zawierać się w przedziale 0..99%.
Rozmiar okna powinien być skalowany na podstawie rozmiaru czcionki. Mając to na uwadze, wiersze dłuższe niż 32 znaki są odradzane nawet na ekranie o proporcjach 16:9, aby użytkownik mógł wybrać większe czcionki niż określone.
Blokowanie wierszy i kolumn
Funkcje blokowania wierszy i kolumn są obsługiwane w standardzie CTA-708-B, ale w późniejszej wersji CTA-708-C przyjęto, że blokowane są zarówno wiersze, jak i kolumny. Podstawowa funkcjonalność jest jak poniżej:
W sumie dostępne są cztery kombinacje 1) Zablokowany wiersz i zablokowana kolumna 2) Odblokowany wiersz i zablokowana kolumna 3) Zablokowany wiersz i odblokowana kolumna 4) Odblokowany wiersz i odblokowana kolumna
1. Wiersz zablokowany i Kolumna zablokowana: Jeśli zarówno wiersze, jak i kolumny są zablokowane, nie można rozszerzyć rozmiaru okna pod względem kolumn i wierszy.
Dla okna jeśli liczba wierszy i kolumn jest zdefiniowana jako, powiedzmy 3 i 10, wtedy tekst "ROWS AND COLUMNS NOT LOCKED FOR EVER AND EVER AND EVER" który pojawia się w wierszu 0 wygląda jak poniżej (zakładając, że zawijanie wyrazów jest niepełnosprawny)
1. RZĘDY I C 2. 3.
Ponieważ oba są zablokowane, tekst nie może zostać rozszerzony poza 10 kolumn, a wiersz nie może zostać rozszerzony poza wiersz 0.
2. Wiersz odblokowany i Kolumna zablokowana: W tym przypadku okno można rozszerzyć do maksymalnego wiersza podanego w poleceniu definiowania okna. Ten sam powyższy tekst będzie wyglądał jak poniżej
1. RZĘDY I C 2. KOLUMNY SĄ 3. NIE ZABLOKOWANE
Wiersz jest odblokowany, więc tekst można rozszerzyć do maksymalnej liczby wierszy polecenia definiującego okno.
3. Wiersz zablokowany i Kolumna odblokowana: W tym przypadku okno można rozszerzyć do maksymalnej liczby kolumn. Zgodnie ze standardem CTA-708 Maksymalna liczba kolumn dla dowolnego okna to 32. Ten sam powyższy tekst wygląda wtedy jak poniżej
1. WIERSZY I KOLUMNY NIE SĄ ZABLOKOWANE 2. 3.
Kolumna jest odblokowana, więc tekst można rozszerzyć do maksymalnej liczby kolumn.
4. Wiersz odblokowany i Kolumna odblokowana: W tym przypadku okno można rozszerzyć zarówno pod względem wierszy, jak i kolumn. Ten sam powyższy tekst wygląda wtedy jak poniżej
1. WIERSZY I KOLUMNY NIE SĄ ZABLOKOWANE 2. NA ZAWSZE I NA ZAWSZE
Ponieważ oba są odblokowane, więc tekst może zostać rozszerzony do 32 kolumn, a także do całkowitej liczby wierszy.
Notatki wdrożeniowe
- Minimalny rozmiar bufora dla każdej z 63 możliwych usług (Service Input Buffers) wynosi 128 bajtów.
- W dekoderze napisów polecenia DelayCancel i Reset powinny być interpretowane poza mechanizmem buforowania. Skanowanie tylko w poszukiwaniu kodów 0x8E i 0x8F powinno być bezpieczne.
- W koderze napisów wartości 0x8E i 0x8F mogą wymagać zakodowania w parametrze do innego polecenia. Aby uniknąć tego problemu, polecenia można podzielić na kilka podpoleceń.
- Ikona napisów w zestawie kodów G3 nie może być renderowana z zaokrąglonymi rogami w kraju WTO ze względu na problemy z licencjonowaniem znaków towarowych.
Linki zewnętrzne
- czcionek napisów CTA-708
- ANSI /CTA-708 R-2018 (bezpłatnie)