Typo koduje
Cykl „Typografia Typa”, część II
W części pierwszej omówiłem podstawowe pojęcia związane z typografią, a w tym artykule wspomnę co nieco o kodowaniu i kodach. Co z tego wyjdzie oceńcie sami i zostawcie komentarz.
Od wielu lat kodowanie znaków jest utrapieniem informatyków, a także ludzi związanych z obróbką tekstów i druku. Znaki (fonty) zapisane w danym zestawie czcionek dotychczas były jednobajtowe, co oznaczało, że w jednym zestawie można było zapisać do 256 znaków. Powodowało to powstawanie wielu wariantów tych samych fontów (np. cyrylica, greka, wietnamski), a także piktogramów czy nut. Trudnością była migracja z jednej strony kodowej na inną, gdyż tej samej literze w innej stronie kodowej odpowiadał różny kod.
Dla naszego języka były stosowane (i nadal są) standardy CP852 (MS-DOS Latin II), Windows-1250 (Windows CE) i ISO 8859-2 (Latin 2), a rozbieżności powstawały najczęściej w znakach narodowych. Chyba wszyscy znamy te dziwne znaczki, które niespodziewanie pojawiały się choćby przy przenoszeniu dokumentów między programami. W poniższej tabeli zebrano trzy strony kodowe i podano przykładowe różnice, gdzie dana litera jest reprezentowana różnym kodem.
| Standard | Ą | Ć | Ę | Ł | Ń | Ó | Ś | Ź | Ż | ą | ć | ę | ł | ń | ó | ś | ź | ż |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ISO-8859-2 | 161 | 198 | 202 | 163 | 209 | 211 | 166 | 172 | 175 | 177 | 230 | 234 | 179 | 241 | 243 | 182 | 188 | 191 |
| różnice | ˇ | ¦ | ¬ | ± | ¶ | Ľ | ||||||||||||
| Windows-1250 | 165 | 198 | 202 | 163 | 209 | 211 | 140 | 143 | 175 | 185 | 230 | 234 | 179 | 241 | 243 | 156 | 159 | 191 |
| CP852 | 164 | 143 | 168 | 157 | 227 | 224 | 151 | 141 | 189 | 165 | 134 | 169 | 136 | 228 | 162 | 152 | 171 | 190 |
Unicode
Wejście standardu Unicode spowodowało, że dany znak w każdym typie fontu występuje zawsze w tym samym miejscu (ma ten sam kod). Standard ten umożliwia także umieszczenie w tablicy znaków ze wszystkich znanych języków, a także ligatur, znaków specjalnych i piktogramów. W Unicode mamy kilka sposobów kodowań: UTF-8, UTF-16 i UTF-32. Ten pierwszy koduje jeden znak w postaci jednego bajtu, drugi – dwóch bajtów, a trzeci – czterech bajtów. W naszej części świata stosuje się dwa pierwsze, bo więcej nam nie potrzeba. Natomiast kodowanie UTF-32, w którym można zapisać ponad dwa miliony znaków, stosuje się w Chinach, Japonii i Korei, gdzie tamte języki zagospodarowują wolną przestrzeń swoimi znakami, przy czym te przestrzenie (bloki) zyskały swoja nazwę jako CJK (skrót od China Japan Korea).
W jednym zestawie UTF-16 można zapisać „tylko” 65536 znaków, więc dla tak „niewielkiej” liczby po prostu stworzyłem stronę z tabelą znaków UTF-16. Każdy znak jest reprezentowany liczbą dziesiętną (od 0 do 65535) lub szesnastkową (ang. hexadecimal) w postaci U+xxxx, gdzie xxxx jest liczbą z zakresu od 0x0000 do 0xFFFF. Warto nadmienić, że w standardzie Unicode większość znaków otrzymała swoją unikalna nazwę, np:
ă – latin small letter A with breve (hex: U+0103, dec: 259)
Znając kod lub nazwę, jest możliwy bezpośredni zapis takiej litery w HTML w jeden z trzech sposobów (koniecznie ze średnikiem na końcu):
hex: ă dec: ă ă
Polecam ciekawą stronę, na której są omówione wszystkie znaki Unicode, a ten konkretny jest tu: https://www.compart.com/en/unicode/U+0103.
OpenType
Jest to stosunkowo nowy format znaków, który ma na celu pozostawienie tylko jednego użytecznego formatu do wszystkich platform i systemów komputerowych. Został stworzony wspólnie przez Adobe i Microsoft. Obecnie istnieje kilka różnych formatów w różnych opcjach, które mogą z czasem ulec likwidacji. Najpopularniejszy, to TrueType (TTF), a także Type 1 (T1) i TeX Font Metric (TFM).
Znaki w formacie OpenType są kodowane w Unicode, a także zawierają wiele nowych funkcji niedostępnych w popularnych starszych formatach, tj. znaki alternatywne i funkcje zecerskie. Istnieją dwa rodzaje fontów OpenType:
- OpenType TT (z rozszerzeniem *.ttf, czyli faktycznie TrueType z dodatkami),
- OpenType PS (postscriptowe z rozszerzeniem *.otf).

Powyższa ligatura posiada znak U+FB06 i nazwę latin small ligature st.
Ciekawostki
Największym, najdłuższym i najbardziej skomplikowanym pojedynczym znakiem jest basmala, czyli formuła „w imię Allaha miłosiernego litościwego”. Jest to ligatura, która posiada kod U+FDFD, nazwano ją arabic ligature bismillah ar-rahman ar-raheem i wygląda następująco:
﷽
Wklejając to do Microsoft Word nie uzyska się tego samego znaku, choć w języku arabskim będzie znaczył to samo! Zależy to od rodzaju czcionki, a także od włączonej obsługi ligatur, które dla zaznaczonego tekstu włącza się poprzez: okno Czcionka → zakładka Zaawansowane → opcja Ligatury → wybierz Wszystkie. Druga kolumna jest zwykłym tekstem, a trzecia ligaturą.

W tekście pojawiło się wiele razy słowo ligatura, które jak pamiętacie, wyjaśniłem w pierwszej części.
W tym cyklu także:









2 komentarze
Typo
Jak wiadomo, jeśli za dużo napiszesz, to możesz zamącić 🙂 Ale dla Antoniego mącenie, to codzienność.
Antoni
Dla naszego języka były stosowane (i nadal są) standardy CP852 (MS-DOS Latin II), Windows-1250 (Windows CE) i ISO 8859-2 (Latin 2),
To windows, a jest jeszcze kilka innych systemów i kilka kodowań 😉