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 .

ISO/IEC 13818 H.262/ 14496-2 MPEG-4 Przedrostek struktury danych użytkownika wideo
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

H.264 / H.265 przedrostek dodatkowych informacji o ulepszeniach
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 .

Pakietowanie SMPTE 291M
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.

user_data_type_structure
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 .

  1. Domyślny
  2. Szeryf o stałej szerokości
  3. Proporcjonalny szeryf
  4. Bezszeryfowe o stałej szerokości
  5. Proporcjonalny bezszeryfowy
  6. Bezszeryfowa o stałej szerokości — przezroczystość tła jest przezroczysta
  7. 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.

  1. Wyskakujące okienko w stylu CEA-608
  2. PopUp z przezroczystym tłem — krycie wypełnienia jest przezroczyste
  3. CEA-608 Style PopUp Centered — justowanie jest na środku
  4. Zestaw zbiorczy stylu CEA-608 — zawijanie słów jest włączone
  5. RollUp z przezroczystym tłem — zawijanie tekstu jest włączone; krycie wypełnienia jest przezroczyste
  6. CEA-608 Style Centered RollUp — zawijanie tekstu jest włączone; uzasadnienie jest na środku
  7. Ticker Tape - kierunek druku to góra do dołu; kierunek przewijania to od prawej do lewej

Jak interpretować strumień napisów

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:
Eia-708-anchor-id.png

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 .

Proportional vs. monospace fonts
Rockwell font.png
Proporcjonalny szeryfowy
Proporcjonalny bezszeryfowy
Arial sample.png

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