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-2161198202163209211166172175177230234179241243182188191
różniceˇ     ¦¬ ±     Ľ
Windows-1250165198202163209211140143175185230234179241243156159191
CP852164143168157227224151141189165134169136228162152171190
Tablica kodów zawierająca przykładowe różnice w polskich znakach.

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).
Przykład ligatury ozdobnej st (minuskuły st).

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

Jeden znak o kodzie U+FDFD oznaczający basmalę, napisany w Microsoft Word.

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

  • 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ń 😉

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *