Notka na temat kodowania wg. normy ISO-8859-2
E. Behr, 30 maja 1997

Uwaga: Jeśli widzisz tu śmieci zamiast prawdziwych polskich liter ąęśćŁ, to albo Twój czytacz nie jest poprawnie ustawiony (czytaj poniżej!), albo używasz Netscape, które często nie reaguje od razu na instrukcje o kodowaniu. Spróbuj zrobić "reload", może pomoże.

Wstęp

Istnieje szereg różnych standartów przypisywania liter i znaków graficznych kodom ("bajtom"), z których złożone są pliki komputerowe. Seria kodowań ISO-8859-X ustalona została po to, żeby ujednolicić posługiwanie się czcionkami, które zawierają znaki diakrytyczne i inne symbole w różnych językach europejskich. Polskie "ogonki" znajdują się w czcionkach kodowanych wg. ISO-8859-2 (również znane jako "Latin 2"), podczas gdy zwykłe anglosaskie czcionki używają ISO-8859-1.

Wyświetlanie ogonków

Ta część jest dość prosta. Należy ściągnąć i zainstalować odpowiednie czcionki ("fonty") kodowane wg. ISO-8859-2: np. TrueType Times CE, Courier CE dla Macintosha, Charter Bitstream 8859-2 i Adobe Courier 8859-2 dla X-Windows, itp. Zajrzyj tutaj a znajdziesz wiele informacji na ten temat.

Po zainstalowaniu takich czcionek na swoim systemie musimy kazać "browser'owi" zacząć ich używać. Na przykładzie Netscape: ściągnij menu Options - General Preferences - Fonts. Selektorem "For the encoding:" wybierz "Central European (iso-8859-2)", i poniżej ustaw odpowiednie fonty; Charter Bitstream i Times CE są przykładem czcionek proporcjonalnych, natomiast Courier jest "fixed" czyli "monospaced".

Jesli opcja "Central European (iso-8859-2)" nie pojawia się w ogóle, to zwykle oznacza to, że odpowiednie fonty nie izostały zainstalowane. Na przykład pod Unixowym X11 trzeba pamiętać o komendzie mkfontdir, i o poprawnym ustawieniu "font path" przy pomocy xset fp ...

Poprawnie stworzone dokumenty kodowane wg. ISO-8859-2 powinny zawierać w sobie element <META>, który nakaże wyświetlaczowi automatycznie przełączyć się na ten standart. Niestety wiele dokumentów tej instrukcji nie ma, a niektóre "browser'y" (np. Netscape) nie zawsze nań reagują. Żeby te problemy ominąć, można wyświetlacz ręcznie zmusić do używania tego kodowania ściągając menu Options - Document Encoding i wybierając tam "Central European". Można to zrobić na stałe, bo różne kodowania serii ISO-8859 mają tak samo ustawione pierwsze 128 znaków, a tylko takich z reguły używają "anglosaskie" strony sieciowe. Będą się więc i one pojawiać jak należy.

Nadal jednak nie wiem jak drukować takie teksty z Unix'owej przeglądarki.

Pisanie ogonków

Jak już wspomniałem, strona kodowana wg. ISO-8859-2 powinna wysyłać tę informację do przeglądarki przy pomocy elementu <META>. Na początku pliku, najlepiej gdzieś pomiędzy <HEAD> i </HEAD>, należy umieścić coś takiego:

<META HTTP-EQUIV="Content-Type"
  CONTENT="text/html;charset=iso-8859-2">

Następnym problemem jest łatwe pisanie z użyciem polskich ogonków. Musimy się martwić "tylko" o 18 znaków (ą,ć,ę,ł,ń,ó,ś,ż i ź, plus odpowiednie duże litery). Mi osobiście najłatwiej pisze się gdy dostępne są one przez przytrzymanie któregoś ze specjalnych klawiszy (Alt, Option etc.) i jednoczesne naciśnięcie "naturalnej" litery - np. ś dostaje się jako Option-s, a Ł jako Shift-Option-L. Wyjątkiem jest ź, bo kłóci się z ż; wygodne dla mnie jest tu użycie np. Option-x.

W sumie głównym naszym celem jest teraz nakazanie komputerowi, żeby odpowiednio interpretował naciskanie takich kombinacji klawiszy. Ponieważ każdy font ISO-8859-2 ma duże L z kreską w pozycji 163 (czyli a3 w układzie szeststkowym), chcemy, żeby Shift-Option-L wysyłało do naszego edytora kod 163, również znany (w X-Windows) pod dźwięczną nazwą "sterling". Kłopot, że klawiatura przypisuje tym klawiszom jakiś zupełnie inny kod. Musimy więc zrobić coś, co nazywa się "keyboard remapping", a to zależy bardzo od używanego systemu.

Dla wygody podaję poniżej kody jakie wysyła typowa amerykańska klawiatura Sun'a, odpowiadające im kody znaków, które chcemy otrzymać, i ich nazwy pod okienkami X11:

Sun Type 5
litera +	Chcemy otrzymać te kody:
klawisz
Alt:		octal	hex	nazwa w X11

a 341           261     b1      plusminus
c 343           346     e6      ae
e 345           352     ea      ecircumflex
l 354           263     b3      threesuperior
n 356           361     f1      ntilde
o 357           363     f3      oacute
s 363           266     b6      paragraph
z 372           277     bf      questiondown
x 370           274     bc      onequarter
A 301           241     a1      exclamdown
C 303           306     c6      AE
E 305           312     ca      Ecircumflex
L 314           243     a3      sterling
N 316           321     d1      Ntilde
O 317           323     d3      Oacute
S 323           246     a6      brokenbar
Z 332           257     af      macron
X 330           254     ac      notsign
Z braku bardziej eleganckiego rozwiązania podaję fragment pliku, który wczytany przy pomocy xmodmap nazwa_pliku na poczatku sesji X11 te zmiany właśnie powoduje (na sieci krążą inne wersje, i żadna u mnie nie chciała działać):
! added 5/7/97 EJB for Polish ISO Latin 2 mappings
!
remove Mod1 = Alt_L
keysym a = a A 0xb1 0xa1
keysym c = c C 0xe6 0xc6
keysym e = e E ecircumflex Ecircumflex
keysym l = l L 0xb3 0xa3
keysym n = n N 0xf1 0xd1
keysym o = o O 0xf3 0xd3
keysym s = s S 0xb6 0xa6
keysym z = z Z 0xbf 0xaf
keysym x = x X 0xbc 0xac
keysym Alt_L = Mode_switch
add Mod2 = Mode_switch
!
W ten sposób mogę używać niemal każdego edytora (włącznie ze zwykłym vi) do pisania ogonków. Oczywiście nie będą one poprawnie pojawiać się na ekranie jeśli "okienko" nie wżywa fontu ISO-8859-2! Na moim systemie robie na przykład to:
xterm [różne opcje X11] -fn \
  -adobe-courier-bold-r-normal--17-120-100-100-m-100-iso8859-2
Podobna procedura powinna się stosować do Linux'a i innych Unix'ów używających X11.

Skonstruowałem też też plik systemowy typu "Keyboard", który służy temu samemu na moim Macintoshu w połączeniu z fontami Apple'a serii CE - mogę wysłać na życzenie. Na razie tyle. O Windows nic nie napiszę, bo się na nich nie znam, a poza tym gorąco radzę wszystkim z Pecetami, żeby je czym prędzej wyrzucili i kupili coś porządnego ;-)

Uwagi? Sugestie? Poprawki?
Last modified: 5/30/97


Wróć do polskiego zakątka