# The Cyrillic HOWTO

## Autor: Aleksander L. Belikoff
v3.0, 13 sierpień 1995
Wersja polska: Gwidon S. Naskrent naskrent@hoth.amu.edu.pl
v2.0, luty 1998

Dokument ten opisuje jak skonfigurować swój system linuxowy aby móc pisać, oglądać i drukować dokumenty w języku rosyjskim. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/

## 1. 1. Uwagi ogólne

## 1.1 1.1 Wstęp

Dokument ten obejmuje to czego potrzebujesz aby skutecznie pisać, oglądać i drukować dokumenty po rosyjsku pod Linuxem. Chociaż dokument ten zakłada że jako systemu operacyjnego używasz Linuxa, większość z przedstawionych informacji stosuje się także do innych odmian Unixa. Postaram się zachować rozróżnienie tak widocznym jak to możliwe.

Istnieje pewna liczba popularnych dystrybucji linuxowych. Jako system przykładowy opiszę Linuxa Red Hat 3.0.3 (Picasso) oraz Red Hat 4.1 (Vanderbildt) - tego którego osobiście używam. Niemniej jednak postaram się zaznaczyć różnice, jeśli takowe istnieją, w instalacji Linux Slackware.

Ponieważ taka instalacja bezpośrednio modyfikuje i rozszerza system operacyjny, powinieneś zdawać sobie sprawę z tego co robisz. Chociaż starałem się sprawy maksymalnie uprościć, posiadanie pewnego doświadczenia z danym programem jest korzystne. Nie zamierzam opisywać czym jest system X Windows i jak składać dokumenty używając TeXa lub LaTeXa, albo jak zainstalować drukarkę w Linuxie. Problemy te omawiane są w innych dokumentach.

Z tych samych powodów opisuję instalację na skalę systemową, domyślnie wymagającą uprawnień administratora. Jeśli jednak istnieje możliwość instalacji na poziomie użytkownika, nie omieszkam jej wspomnieć.

Uwaga: system X Windows, TeX i inne składniki Linuxa są złożonymi systemami z wyrafinowaną konfiguracją. Jeśli coś sknocisz, możesz nie tylko nie dokonać instalacji cyrilicy, ale popsuć składnik, jeśli nie cały system. Nie ma to na celu cię odstraszać, lecz tylko sprawić abyś zrozumiał powagę operacji i był ostrożnym. Wstępna kopia zapasowa plików konfiguracyjnych jest wielce pożądana. Posiadanie pod ręką jakiegoś guru zawsze się przydaje.

## 1.2 1.2 Dostępność i uwagi

Dokument ten dostępny jest na sunsite.unc.edu lub tsx-11.mit.edu jako część Linux Documentation Project. Może także być dostępny w różnych archiwach zawierających Linuxa. Co więcej, może także wchodzić w skład dystrybucji Linuxa.

Można go wreszcie otrzymać bezpośrednio od autora, na ftp.netvision.net.il.

Jeśli masz jakieś pytania dotyczące tego dokumentu, nie wahaj się, proszę, skontaktować się ze mną pod adresem belikoff@netvision.net.il. Każda nowa i użyteczna informacja na temat obsługi Cyrilicy w różnych Unixach jest mile widziana. Pamiętaj, pomoże to innym.

Wielu ludzi pomogło mi (i nie tylko mi) wartościowymi informacjami oraz sugestiami. Jeszcze więcej ludzi dołożyło oprogramowania na użytek publiczny. Przepraszam jeżeli zapomniałem kogoś wymienić.

Oto więc oni: Bas v. de Bakker, David Daves, Siergiej Wakulenko, Siergiej O. Naoumow, Winfried Trümper, Michael van Canneyt.

Ten dokument jest (c) 1995 Aleksander L. Belikoff. Można go używać i rozpowszechniać zgodnie ze zwykłymi warunkami Linux HOWTO opisanymi poniżej.

Poniższe jest notką o prawach autorskich Linux HOWTO:

Dokumenty Linux HOWTO stanowią prawną własność ich autorów, chyba że zaznaczono inaczej. Dokumenty Linux HOWTO mogą być reprodukowane i rozposzechniane w całości lub części, w każdym fizycznym lub elektronicznym środku przekazu, tak długo jak w każdej kopii pozostaje niniejsza notka o prawach autorskich. Redystrybucja komercyjna jest dozwolona i popierana; autorzy jednak woleliby zostać o takich dystrybucjach powiadomieni.

Wszystkie tłumaczenia, prace pochodne i zbiorowe zawierające dokumenty Linux HOWTO muszą podlegać po tą notkę o prawach autorskich. To jest, nie możesz stworzyć z HOWTO pracy pochodnej i nałożyć dodatkowe ograniczenia na jej dystrybucję. Wyjątki do tych reguł mogą być udzielone pod pewnymi warunkami; proszę skontaktować się z koordynatorem Linux HOWTO pod adresem podanym poniżej.

W skrócie, chcielibyśmy promować rozprzestrzenianie się tych informacji tak wieloma kanałami jak to możliwe. Pragnęlibyśmy jednakże zachować prawa autorskie do dokumentów HOWTO, i być powiadamianymi o każdych planach ich redystrybucji.

Jeśli masz pytania, skontaktuj się proszę z Gregiem Hankinsem, koordynatorem Linux HOWTO, pod adresem `gregh@sunsite.unc.edu`. Możesz użyć tego adresu z programem finger by zdobyć numer telefonu i inne dodatkowe informacje dotyczące kontaktu.

Unix jest zastrzeżonym znakiem przemysłowym X/Open Ltd.; MS-DOS, Windows, Windows NT i Windows 95 są zastrzeżonymi znakami Microsoft Corp.; System X Windows jest znakiem zastrzeżonym Consortium X, Inc. Wszystkie inne znaki zastrzeżone należą do ich odpowiednich posiadaczy.

## 2. 2. Znaki i zestawy znaków

Ażeby zrozumieć i wyświetlać znaki różnych języków, system i programy muszą być zdolne odróżniać je od innych znaków. To jest, każdy pojedynczy znak musi mieć odrębną reprezentację wewnątrz systemu operacyjnego, bądź konkretnego pakietu programów. Taka kolekcja wszystkich odrębnych znaków które jakiś system jest w stanie reprezentować w danym momencie nazywa się zestawem znaków.

W czasie tworzenia największych systemów operacyjnych nikt nie dbał o to aby programy były wielojęzyczne. Dlatego też najpopularniejszym zestawem znaków był (i ciągle jest) ASCII (American Standard Code for Information Interchange).

Standardowy ASCII (aka siedmiobitowy ASCII) zawiera 128 odrębnych kodów. Niektóre z nich ASCII definiuje jako faktyczne drukowalne znaki, a niektóre są tak zwanymi znakami kontrolnymi, które posiadały specjalne znaczenia w starszych protokołach komunikacyjnych. Każdy element zestawu identyfikuje kod będący liczbą całkowitą (0-127). Podzbiór znaków drukowalnych przedstawia te które znaleźć można na klawiaturze maszyny do pisania, z niewielkimi dodatkami. Każdy znak zajmuje siedem najmniej znaczących bitów bajtu, podczas gdy najbardziej znaczący używany był dla celów kontrolnych (np. kontroli transmisji w starszych pakietach komunikacyjnych).

Koncepcję ASCII siedmiobitowego rozszerzył ASCII ośmiobitowy (aka rozszerzony ASCII). W tym zestawie zakres kodów znaków to 0-255. Dolna połowa (0-127) to czysty ASCII, podczas gdy górna zawiera 127 dodatkowych znaków. Ponieważ zestaw ten jest wstecznie kompatybilny z ASCII (znak ciągle zajmuje osiem bitów, kody odpowiadają staremu ASCII), zyskał on sobie szeroką popularność.

ASCII ośmiobitowe nie definiuje zawartości górnej połówki zestawu. Dlatego ISO powzięło zadanie ustalenia rodziny standardów znanych jako rodzina ISO-8859-X. Jest to zbiór kodowań ośmiobitowych, w których niższa połowa każdego kodowania (0-127) odpowiada ASCII, a wyższa definiuje znaki dla różnych języków. Zdefiniowano na przykład następujące kodowania:

- 8859-1 - Europa Zachodnia, Ameryka Łacińska (znany też jako Latin 1)
- 8859-2 - Europa Środkowa i Wschodnia
- 8859-5 - cyrylica
- 8859-8 - hebrajski

W Latin 1 górna połowa tabeli definiuje różne znaki które nie są częścią alfabetu angielskiego, ale znajdują się w różnych językach zachodnioeuropejskich (umlauty niemieckie, akcenty francuskie).

Programy które nie zakładają nic co do ósmego bitu danych ASCII zwane są ośmiobitowo czystymi. Niektóre starsze programy, napisane z myślą o ASCII 7-bitowym, nie są czyste ośmiobitowe i mogą działać niepoprawnie z danymi ośmiobitowymi. Większość jednak pakietów domyślnie radzi sobie z ośmiobitowym ASCII, albo wymaga bardzo prostego ustawienia. UWAGA: zanim wyślesz pytanie "Wszystko ustawiłem poprawnie, a nie mogę wprowadzać/oglądać znaków cyrylicowych!", zajrzyj do sekcji 8 co do uwag o programie którego używasz.

Ponieważ na większości systemów ASCII zajmuje osiem bitów, nie ma już możliwość aby ciągle je rozszerzać. Sposobem na zaimplementowanie nowych symboli w kodowaniach opartych na ASCII jest stworzenie innej implementacji rozszerzonego ASCII. W taki właśnie sposób zaimplementowane zostało kodowanie cyrylicy w ASCII.

Wspomnieliśmy już o standardzie ISO-8859-5 jako określającym kodowanie cyrylicy. Lecz jak to często bywa ze standardami, stworzono go nie biorąc pod uwagę istniejącej praktyki w byłym ZSRR. Jedyną więc rzeczą jaką ten standard osiągnął było spotęgowanie zamieszania. Nie powiedziałbym że gdzieś się znacząco używa ISO-8859-5.

Innymi standardami kodowania cyrylicy są tak zwane kodowanie Alt i strona kodowa 1251 Microsoftu. Ta pierwsza stworzona została (przez kogo?) dość dawno temu na potrzeby MS-DOS. W tamtych czasach nie było jeszcze tego całego szumu o internetowaniu, intencją więc było uczynienie jej jak najbardziej kompatybilnej ze standardem IBM. Dlatego kodowanie Alt jest w rzeczywistości stroną kodową IBM, gdzie wszystkie specjalne znaki europejskie w górnej połówce zastąpiono cyrylicznymi, z wyłączeniem pseudografiki. Nie rujnowało to łatwego tworzenia okienek i dawało także znaki cyrylicowe. Standard Alt ciągle żyje i jest niesłychanie popularny w świecie MS-DOSa.

Strona kodowa 1251 to po prostu próba Microsoftu pokazania nowego standardu dla kodowania cyrylicy w Windows. Na ile wiem, nie jest ona kompatybilna z czymkolwiek (niezbyt dziwne, co?)

I w końcu istnieje KOI-8. Jest ono również stare, ale zaprojektowano je mądrze i dzisiaj założenia tego projektu wyglądają naprawdę użytecznie.

I znów, jest ono kompatybilne z ASCII, a znaki cyrylicy umieszczone są w górnej połówce. Lecz głównym założeniem projektowania KOI-8 jest to że pozycje znaków cyrylicy muszą odpowiadać znakom angielskim o zbliżonej wymowie. Konkretnie, jeśli ustawimy ósmy bit w angielskim 'a', dostaniemy 'a' cyrylicowe. Oznacza to że jeśli mamy tekst pisany cyrylicą w KOI-8, możemy uciąć ósmy bit z każdego znaku i dalej mieć czytelny tekst. Bardzo to dzisiaj ważne, ponieważ w Internecie jest wiele węzłów pocztowych które po prostu po cichu obcinają ósmy bit, pewne że wszyscy na całej Ziemi mówią po angielsku.

Nic dziwnego że KOI-8 szybko stał się de facto standardem dla cyrylicy w Internecie. Andriej A. Czernow poczynił ogromne nakłady pracy aby ustalić w tym obszarze standard. Jest on autorem RFC 1489 ("Registration of a Cyrillic character set").

Te dwa standardy [Alt i KOI-8] różnią się tylko pozycjami znaków cyrylicowych w tabeli (to jest kodami znaków cyrylicowych)/

Główną różnicą jest to że kodowanie Alt używane jest tylko przez użytkowników MS-DOS, podczas gdy KOI-8 używane jest w Unixie, a także w MS-DOSie (chociaż w tym drugim jest znacznie mniej popularne). Ponieważ robimy to co trzeba (to znaczy pracujemy w systemie Unixowym) skupimy się głównie na KOI-8.

Co do standardu ISO, jest on bardziej popularny jako standard cyrylicy. w Europie i USA. W Rosji zdecydowanie przoduje KOI-8.

Istnieją i inne standardy, różne od ASCII i o wiele bardziej elastyczne. Najbardziej znanym jest Unicode. Nie są jednak one zaimplementowane tak dobrze jak te podstawowe w Unixie w ogólności i Linuxie w szczególności. Dlatego też nie będę ich tu opisywał.

## 3. 3. Ustawianie trybu tekstowego

Zasadniczo tryb tekstowy jest najprostszą metodą pokazywania i wprowadzania znaków cyrylicy. Istnieje jednak jedna zasadnicza komplikacja: fonty w trybie tekstowym i operacje na układzie klawiatury zależą od implementacji sterownika terminala. Nie ma więc przenośnej metody dla osiągnięcia tego celu między różnymi systemami.

Za chwilę opiszę sposób radzenia sobie ze sterownikiem konsoli Linuxa. Tak więc jeśli masz inny system, nie spodziewaj się że będzie to działać u ciebie. Zajrzyj raczej do dokumentacji swojego sterownika terminala. Poślij mi jednakże jakiekolwiek informacje jakie znajdziesz, tak aby mógł włączyć je do przyszłych wersji tego dokumentu.

## 3.1 4.1. Konsola

Sterownik konsoli Linuxa jest dość elastycznym kawałkiem software'u. Potrafi on zmieniać fonty oraz układy klawiatury. Aby to osiągnąć, będziesz potrzebował pakietu kbd. RedHat i Slackware instalują kbd jako część systemu.

Pakiet kbd zawiera narzędzia do kontrolowania klawiatury oraz znaczny zbiór fontów i układów klawiatury.

By ustawić cyrylicę, trzeba wykonać dwie rzeczy:

1. Ustawienie czcionki ekranowej. Wykonywane jest to za pomocą programu `setfont`. Pliki z czcionkami umieszczone są w `/usr/lib/kbd/consolefonts`. UWAGA: Nigdy nie uruchamiaj programu setfont pod X, ponieważ zawiesi on twój system. Dzieje się tak ponieważ działa on z odwołaniami niskiego poziomu do karty graficznej, których nie lubi X.
2. Załadować odpowiedni układ klawiatury programem `loadkeys`.

UWAGA: W RedHat 3.0.3 `/usr/bin/loadkeys` ma zbyt zawężone prawa dostępu, konkretnie 700 (`rwx------`). Nie ma powodu aby tak było, ponieważ każdy może skompilować swoją własną kopię i uruchomić ją (odpowiednie odwołania do systemu nie są zarezerwowane tylko dla administratora). Poproś więc swojego sysadmina aby ustawił dlań bardziej sensowne prawa dostępu (na przykład 755).

Oto wyciąg z mojego skryptu `cyrload`, który ustawia tryb cyrylicy dla konsoli linuxowej.

> `

>       if [ notset.$DISPLAY != notset. ]; then
>           echo "`basename $0`:  nie działa pod X"
>           exit
>       fi

>       loadkeys /usr/lib/kbd/keytables/ru.map
>       setfont /usr/lib/kbd/consolefonts/Cyr_a8x16
>       mapscrn /usr/lib/kbd/consoletrans/koi2alt
>       echo -ne "\033(K"              # magiczna sekwencja
>       echo "Użyj prawego Ctrl aby zmienić tryb"

> `

Pozwól mi to nieco wyjaśnić. Ładujesz odpowiednie mapowanie klawiatury. Następnie ładujesz font odpowiadający zestawowi znaków Alt. Później, aby móc poprawnie wyświetlać tekst w KOI-8, ładujesz tablicę przekodowywania ekranowego. Dokonuje ona translacji niektórych znaków z górnej połówki kodowania na kodowanie Alt. Kluczowe znaczenie ma słowo 'niektóre' - nie wszystkie znaki podlegają translacji, dlatego też niektóre z nich, jak pseudograficzne znaki IBM, trafiają na ekran niezmodyfikowane i wyświetlają się poprawnie, ponieważ są one kompatybilne z kodowaniem Alt, w przeciwieństwie do KOI-8. Aby się upewnić, uruchom `mc` i udawaj że jesteś znów w MS-DOS 3.3...

W końcu, owa magiczna sekwencja jest ważna, ale nie mam żadnego pojęcia co takiego robi [resetuje konsolę i mapy odwzorowań; patrz Keyboard-HOWTO - przyp. GSN]. Pożyczyłem/podkradłem ją z German-HOWTO jeszcze w 1994, kiedy było no chyba jedynym HOWTO zorientowanym na języki narodowe. Jeśli masz jakiś pomysł co do tej magicznej sekwencji, powiadomij mnie, proszę.

Dla tych purystów którzy nie chcą próbować kodowania Alt dołączam jeszcze jedną wersję powyższego skryptu, używającą rdzennych fontów KOI-8.

> `

>       if [ notset.$DISPLAY != notset. ]; then
>           echo "`basename $0`:  cannot run under X"
>           exit
>       fi

>       loadkeys /usr/lib/kbd/keytables/ru.map
>       setfont /usr/lib/kbd/consolefonts/koi-8x16
>       echo "Użyj prawego Ctrl aby zmienić tryb"

> `

Nie spodziewaj się jednak ładnych ramek w swoich okienkowych aplikacjach tekstowych.

Chcesz to pewnie teraz wypróbować. Ustaw bash lub tcsh jak trzeba, uruchom je ponownie, potem naciśnij prawy klawisz Ctrl i upewnij się że otrzymujesz prawidłowe znaki cyrylicy. Klawisz 'q' musi dawać rosyjskie 'krótkie i', w generować 'c' itd.

Jeśli coś pokręciłeś, najlepszą rzeczą jest przywrócenie ustawień oryginalnych (tj. amerykańskich). Wykonaj następujące komendy:

> `

>       loadkeys /usr/lib/kbd/keytables/defkeymap.map
>       setfont /usr/lib/kbd/consolefonts/default8x16

> `

UWAGA: niestety sterownik konsoli nie jest w stanie zachować swojego statusu (a przynajmniej nie w prosty sposób) podczas uruchamiania X Windows. Dlatego, kiedy wyjdziesz z X (albo przełączysz zeń na konsolę), będziesz musiał ponownie załadować rosyjski font konsolowy.

## 3.2 Konsola FreeBSD

Nie używam FreeBSD, tak więc nie mogłem przetestować poniższej informacji. Trzeba zacząć od tego że wszystkie dane w tej sekcji należy traktować jako wskaźniki. Strona domowa projektu FreeBSD może mieć jakieś informacje na ten temat. Innym dobrym źródłem jest grupa newsowa `relcom.fido.ru.unix`. Sprawdź także zasoby wyliczone w sekcji 11.

W każdym razie, oto co Ilja K. Orechow sugeruje zrobić aby konsola FreeBSD mówiła po rosyjsku:

1. dodaj w `/etc/sysconfig`:

   > `

   >          keymap=ru.koi8-r
   >          keyrate=fast
   >          # UWAGA: ^[ poniżej to pojedynczy znak kontrolny [ESC]
   >          keychange="61 ^[[K"
   >          cursor=destructive
   >          scrnmap=koi8-r2cp866
   >          font8x16=cp866b-8x16
   >          font8x14=cp866-8x14
   >          font8x8=cp866-8x8

   > `

2. w `/etc/csh.login`:

   > `

   >          setenv ENABLE_STARTUP_LOCALE
   >          setenv LANG ru_SU.KOI8-R
   >          setenv LESSCHARSET latin1

   > `

## 3.3 System X Window

Podobnie jak tryb konsoli, środowisko X również wymaga nieco konfiguracji. Zawiera się w niej ustawienie trybu wprowadzania i Xowych czcionek. Oba aspekty omówione są poniżej.

### Xowe czcionki

Po pierwsze zdobyć musisz kolekcję czcionek posiadających znaki cyrylicy w odpowiednich miejscach.

Jeśli używasz najnowszej dystrybucji X (lub XFree86), istnieje szansa że masz już takie czcionki. W końcu 1995 X Windows System włączył zestaw czcionek cyrylicowych, stworzonych przez Cronyxa. Zapytaj swojego administratora systemu, albo jeśli to ty nim jesteś, sprawdź swój system, to jest:

1. Uruchom `xlsfonts | grep koi8`. Jeśli wyliczono jakieś czcionki, twój X-serwer już o nich wie.
2. W przeciwnym razie wykonaj

   > `

   >     find /usr -name crox\*.pcf\*

   > `

   aby znaleźć miejsce czcionek cyrylicowych na serwerze. Będziesz musiał włączyć te czcionki dla X-serwera, jak wyjaśniam poniżej.

Jeśli nie znalazłeś takich fontów zainstalowanych, będziesz musiał to sam zrobić.

Istnieje pewna rozbieżność co do czcionek. XFree86 twierdzi że kolekcję czcionek rosyjskich zamieszczonych w dystrybucji stworzył Cronyx. Niemniej na sieci znaleźć można inne czcionki cyrylicowe Cronyxa (np. na `ftp.klae.su`), znane jako pakiet `xrus` (nie myl go z programem `xrus`, który używany jest do ustawienia układu klawiatury cyrylicy). Na szczęście ten drugi został ostatnio przemianowany na `xruskb`. `xrus` ma mniej czcionek niż kolekcja w XFree86 (38 wobec 68), ale te drugie czcionki nie chciały działać z moim ustawieniem Netscape - dawały mi jakąś strasznie dużą czcionkę w pasku menu. Pakiet `xrus` nie stwarzał tego problemu.

Sugerowałbym ściągnięcie i wypróbowanie obydwu. Wybierz ten który bardziej ci się podoba. Mam także zamiar wkrótce stworzyć pakiety RPM dla obu kolekcji i podładować je do `ftp.redhat.com` oraz mojego FTP.

Istnieją także starsze rzeczy, na przykład pakiet VakuFonts, stworzony przez Sergieja Wakulenko `( mailto:vak@cronyx.ru)`, który tworzył podstawę dla tego w dystrubucji X. Istnieją też inne. Ważną rzeczą jest to że nazwy czcionek w starszych kolekcjach nie całkiem ściśle stosowały się do standardów. Późniejsze są w zasadzie w porządku, ale czasami wywołać mogą różne dziwne błędy. Miałem na przykład niemiłe doświadczenia z Maple V dla Linuxa, który wykładał się tajemniczo z pakietem VakuFonts, ale działał bez zarzutu ze "standardowymi".

Zacznijmy więc od czcionek:

1. Ściągnij odpowiednią kolekcję czcionek. Pakiet dla XFree86 można znaleźć w każdym FTP zawierającym dystrybucję Xa, na przykład możesz ją ściągnąć] bezpośrednio z FTP XFree86. Pakiet `xrus` znaleźć można na `ftp.klae.su`.
2. Teraz kiedy masz czcionki, stwórz dla nich jakiś katalog. Zwykle złym pomysłem jest wsadzanie nowych czcionek do już istniejącego katalogu. Umieść je więc w, powiedzmy, `/usr/lib/X11/fonts/cyrillic` dla instalacji całosystemowej, albo po prostu utwórz katalog prywatny dla użytku osobistego.
3. Jeśli nowe czcionki są w formacie BDF (pliki *.bdf), musisz je skompilować. Wykonaj dla każdej czcionki

              bdftopcf -o name.pcf name.bdf

   Jeśli twój serwer obsługuje czcionki skompresowane, skompresuj je używając programu `compress`

              compress name.pcf

   Jeśli chcesz wsadzić nowe czcionki do już istniejącego katalogu, będziesz musiał połączyć stary i nowy `font.alias`. w przypadku gdy oba istnieją, np.

       cat font.alias.new >> font.alias

   Teraz, żeby wszystko ustawić, powinieneś wykonać trzy rzeczy:
4. Każda katalog z czcionkami w X musi zawierać listę znajdujących się w nim czcionek. Lista ta przechowywana jest w `fonts.dir`. Nie musisz jej tworzyć ręcznie. Zamiast tego, wykonaj

       cd <katalog_z_nowymi_czcionkami>
       mkfontdir

5. Musisz teraz powiadomić X-serwer o tym katalogu z czcionkami. Masz tu kilka opcji:
   - Instalacja dla całego systemu XFree86. Jeśli uruchamiasz tą wersję X, dołącz nowy katalog do listy katalogów w `XF86Config`. Aby znaleźć położenie tego pliku spójrz na wyjście `startx`. Patrz też XF86Config{4,5} po szczegóły.
   - Instalacja dla całego systemu poprzez `xinit`. Dodaj katalog startowy do pliku startowego `xinit`. Patrz xinit(1x) i następny punkt po szczegóły.
   - Instalacja osobista. Masz specjalny plik startowy dla X - `~/.xinitrc` (albo `~/.Xclients`, albo `~/.xsession` dla użytkowników RedHata). Dodaj do niego następujące komedy:

     > `

     >     xset +fp katalog_z_czcionkami
     >     xset fp rehash

     > `

   - Zrestartuj teraz X. Jeśli wykonałeś wszystko prawidłowo, testy na początku sekcji powiodą się. Pobaw się także xfontsel(1x), aby się upewnić że możesz wybierać czcionki cyrylicowe.

Aby klienci X używali czcionek cyrylicowych, musisz ustawić odpowiednie X-zasoby. Na przykład, ustawiam czcionkę rosyjską jako domyślną w swoim /.Xdefaults:

> `

>     *font           6x13

> `

Ponieważ moje czcionki cyrylicowe są pierwsze na liście ścieżek do czcionek (patrz rezultaty [xinit, wybrana zostanie pierwsza czcionka o aliasie 6x13)]

To prostszy przykład. Jeśli chcesz ustawić odpowiednią część X-klienta by używała czcionek cyrylicowych, musisz znaleźć nazwę zasobu (np. za pomocą editres(1x) i ustalić go albo w bazie danych zasobów, albo w linii komend. Oto kilka przykładów:

> `

>       $ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'

>       $ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'

> `

### Tłumaczenie danych wprowadzanych

W najnowszych wersjach X (X11R61 i wyższych) istnieją dwie "standardowe" metody wprowadzania znaków: pierwotna, działająca z użyciem programu `xmodmap`, oraz nowa, zwana (Xkb) XKeyBoard. Pierwsze co powinieneś zrobić to wyłączyć metodę Xkb! Nie daj się oczarować jej możliwościami ustawienia "cyrylicznej klawiatury". Wygląda na to że ta metoda używa klawsymów zdefiniowanych w `keysymdef.h`. Plik ten definiuje klawsymy dla wielu języków. Jednym problemem jest to że te definicje nie mają nic wspólnego z rozszerzonym zestawem znaków ASCII - jedynym na którym potrafi wyłącznie operować większość programów! Ledwie wiem o jakiś programach które zdolne są przetworzyć klawsymy z `keysymdef.h` różne od ośmiobitowego ASCII. Jednakowoż naszym celem jest sprawienie żeby obsługa KOI-8 zadziałała.

Aby wyłączyć obsługę Xkb, przeglądnij sekcję Keyboard w swoim pliku `XF86Config` i wykomentuj wszystkie linie zaczynające się od Xkb (wielkość liter bez znaczenia). Zamiast nich, wstaw następującą linię:

> `

>       XkbDisable

> `

Program `xmodmap` pozwala na dopasowanie kodów które wysyłają różne znaki i ich kombinacje. Ustawia on to opierając się na pliku zawierającym tabelę tłumaczeń.

Jeśli nie chcesz zajmować się wszystkimi tymi trikami i wolisz rozwiązanie od ręki, [bądź to] ściągnij odpowiednią tablicę xmodmapową, dostępną na wielu ftpach zajmujących się cyrylicą, na przykład `ftp.kiae.su` albo `ftp.funet.fi`. Sam sporządziłem również mapę opisaną poniżej, dostępną przez mój ftp.

Bardziej odpowiednią alternatywą jest instalacja pakietu `xruskb`, który pozwala ci skonfigurować większość parametrów translacji wejściowej bez potrzeby obeznania się z `xmodmap`.

Poniżej uproszczony opis przystosowania wejścia. Jeśli chcesz jakiś bardziej wyrafinowanych trików, zajrzyj do xmodmap(1) lub, jeszcze lepiej, poczekaj na następną wersję główną X, która miejmy nadzieję zajmie się bieżącymi problemami ze wprowadzaniem danych.

W naszym przypadku, tablica tłumaczeń powinna definiować dwie rzeczy:

- kody znaków wysyłane przez klawisze alfanumeryczne, oraz
- zasady przełączania się między trybami

### Tablica znaków

Jest to w zasadzie sekwencja dyrektyw które przypisują pewne klawsymy określonym kodom klawiszy. Ogólna składnia to:

    keycode kod = sym1 sym2 sym3 sym4

gdzie `kod` to numeryczny kod określonego klawisza na klawiaturze (zajrzyj do tablicy standardowej dla twojego systemu. W moim przypadku znajduje się ona w pliku `/usr/lib/X11/etc/xmodmap.std`). "Symy" definiują klawsymy wysyłane przez ten klawisz w różnych stanach. `Sym1` jest klawsymem wysyłanym w stanie normalnym, `sym2` odpowiada klawiszowi z naciśniętym Shift (zwykle), `Sym3` i `sym4` definiują klawsymy wysyłane przy aktywnym Mode_switch dla stanów normalnych i ze Shiftem odpowiednio (grupa 2, zgodnie z X Protocol Specification). W naszym przypadku aktywny Mode_switch odpowiada wprowadzaniu w trybie cyrylicy.

Wartościami powinny być albo kody szesnastkowe, albo stałe symboliczne z `/usr/include/X11/keysymdef.h` (bez początkowego "XK_").

Tak więc jeżeli chcielibyśmy aby klawisz odpowiadający łacińskiemu "a" wypisywał "a" rosyjskie w trybie alternatywnym, napisalibyśmy jak niżej:

    keycode 38  =  a  A  0xC1 0xE1

Czytelnik ciekaw być może dlaczego nie użyłem stałych Cyrillic_a oraz Cyrillic_A, odpowiednio. Odpowiedż brzmi: nie działają one dla mnie. Nie jestem zbyt obeznany z wnętrznościami specyfikacji systemu X Windows, ale mam następujące wytłumaczenie: symboliczne stałe powyżej mają wartości 0x6C1 oraz 0x6E1 odpowiednio. Oznacza to że w rzeczywiście multijęzykowym środowisku możnaby używać ich bez ich nakładania się na inne zestawy znaków. Jednak standard KOI-8 nie jest szczególnie przystosowany do takiego środowiska. Ponieważ więc chcemy pozostać kompatybilni z przeszłością, naruszymy reguły obsługi wielu języków w systemie X Windows.

Oto tabela dla najbardziej popularnej rosyjskiej klawiatury w układzie JCUKEN (tabele te pochodzą od tych z pakietu VakuFonts).

> `

>       keysym  4             = 4               dollar          4       quotedbl
>       keysym  5             = 5               percent         5       colon
>       keysym  6             = 6               asciicircum     6       comma
>       keysym  7             = 7               ampersand       7       period
>       keysym  q             = q               Q               0xCA    0xEA
>       keysym  w             = w               W               0xC3    0xE3
>       keysym  e             = e               E               0xD5    0xF5
>       keysym  r             = r               R               0xCB    0xEB
>       keysym  t             = t               T               0xC5    0xE5
>       keysym  y             = y               Y               0xCE    0xEE
>       keysym  u             = u               U               0xC7    0xE7
>       keysym  i             = i               I               0xDB    0xFB
>       keysym  o             = o               O               0xDD    0xFD
>       keysym  p             = p               P               0xDA    0xFA
>       keysym  bracketleft   = bracketleft     braceleft       0xC8    0xE8
>       keysym  bracketright  = bracketright    braceright      0xDF    0xFF
>       keysym  a             = a               A               0xC6    0xE6
>       keysym  s             = s               S               0xD9    0xF9
>       keysym  d             = d               D               0xD7    0xF7
>       keysym  f             = f               F               0xC1    0xE1
>       keysym  g             = g               G               0xD0    0xF0
>       keysym  h             = h               H               0xD2    0xF2
>       keysym  j             = j               J               0xCF    0xEF
>       keysym  k             = k               K               0xCC    0xEC
>       keysym  l             = l               L               0xC4    0xE4
>       keysym  semicolon     = semicolon       colon           0xD6    0xF6
>       keysym  apostrophe    = apostrophe      quotedbl        0xDC    0xFC
>       keysym  grave         = grave           asciitilde      0xA3    0xB3
>       keysym  z             = z               Z               0xD1    0xF1
>       keysym  x             = x               X               0xDE    0xFE
>       keysym  c             = c               C               0xD3    0xF3
>       keysym  v             = v               V               0xCD    0xED
>       keysym  b             = b               B               0xC9    0xE9
>       keysym  n             = n               N               0xD4    0xF4
>       keysym  m             = m               M               0xD8    0xF8
>       keysym  comma         = comma           less            0xC2    0xE2
>       keysym  period        = period          greater         0xC0    0xE0

> `

Dla używających rosyjskiego układu JAWERTY dołączyłem następującą tabelę:

> `

>       keysym  q             = q               Q               0xD1    0xF1
>       keysym  w             = w               W               0xD7    0xF7
>       keysym  e             = e               E               0xC5    0xE5
>       keysym  r             = r               R               0xD2    0xF2
>       keysym  t             = t               T               0xD4    0xF4
>       keysym  y             = y               Y               0xD9    0xF9
>       keysym  u             = u               U               0xD5    0xF5
>       keysym  i             = i               I               0xC9    0xE9
>       keysym  o             = o               O               0xCF    0xEF
>       keysym  p             = p               P               0xD0    0xF0
>       keysym  bracketleft   = bracketleft     braceleft       0xDB    0xFB
>       keysym  bracketright  = bracketright    braceright      0xDD    0xFD
>       keysym  a             = a               A               0xC1    0xE1
>       keysym  s             = s               S               0xD3    0xF3
>       keysym  d             = d               D               0xC4    0xE4
>       keysym  f             = f               F               0xC6    0xE6
>       keysym  g             = g               G               0xC7    0xE7
>       keysym  h             = h               H               0xC8    0xE8
>       keysym  j             = j               J               0xCA    0xEA
>       keysym  k             = k               K               0xCB    0xEB
>       keysym  l             = l               L               0xCC    0xEC
>       keysym  z             = z               Z               0xDA    0xFA
>       keysym  x             = x               X               0xD8    0xF8
>       keysym  c             = c               C               0xC3    0xE3
>       keysym  v             = v               V               0xD6    0xF6
>       keysym  b             = b               B               0xC2    0xE2
>       keysym  n             = n               N               0xCE    0xEE
>       keysym  m             = m               M               0xCD    0xED
>       keysym  backslash     = backslash       bar             0xDC    0xFC
>       keysym  grave         = grave           asciitilde      0xC0    0xE0
>       keysym  equal         = equal           plus            0xDE    0xFE
>       keysym  3             = 3               numbersign      3       0xDF
>       keysym  4             = 4               dollar          4       0xFF

> `

### Zasady przełączania trybów

Jest to zasadniczo część konfiguracji Xowej cyrylicy wymagająca najwięcej wiedzy. Zdefiniować powinieneś warunki w których tryb bieżący przełączany jest między trybem zwykłym i cyrylicy. Dzięki mądremu zaprojektowaniu translacji wejścia w X, jest ona nieprzenośna, nieelastyczna, niekompletna i ogólnie mówiąc do kitu. Nic dziwnego że ludzie przenoszą się na MS Windows.

Obecnie dużo się dzieje w rozwijaniu XFree86 w ogólności i modelu wejścia w X w szczególności. Rezultat jest taki że twoja konfiguracja może działać z jedną wersją XFree86 i nie działać z inną. Co gorsza, czasami rzeczy różnią się między różnymi serwerami w tej samej dystrybucji.

Najpierw opiszę moje ustawienia, które w obecnej chwili działają dla mnie. Pracuję w XFree86 3.3, serwer SVGA. W moim pliku `XF86Config` (w dystrybucji RedHata umieszczony jest on w `/etc/X11`, w sekcji "Keyboard" mam następujące dyrektywy:

Istnieją dwa sposoby osiągnięcia tego w Linuxie. Jedna jest specyficzna dla XFree86, podczas gdy druga jest bardziej ogólna (nie za bardzo może, jak i pokażę niżej).

> `

>          LeftAlt         Meta
>          RightAlt        ModeShift
>          ScrollLock      ModeLock
>          RightCtl        Control

> `

UWAGA: Metoda ustawiania reguł przełączania trybów poprzez plik `XF86Config` jest specyficzna dla XFree86. Nie będzie ona działać w innych wersjach X.

Teraz ładuję tabelę opisaną w poprzedniej sekcji i zachowaną w jakimś pliku używając narzędzia xmodmap(1x):

> `

>       xmodmap  <plik_z_tabelą>

> `

Teraz mam możliwość zaznaczenia trybu wprowadzania cyrylicy używając prawego klawisza Alt oraz przełączenia na cyrylicę i z powrotem używając ScrollLock. Zdziwisz się jeśli zobaczysz że ani CapsLock ani klawisze Control nie działają w trybie wprowadzania cyrylicy. Cóż, powiem to raz jeszcze: model wejścia X jest do kitu!

Resztę tej sekcji zajmuje zwięzły opis zwykłej konfiguracji translacji wejścia w X. Działała ona dla starszych wydań XFree86, ale teraz wykazuje rozmaite problemy. Pozostawiłem ją tutaj, tak aby co bardziej ciekawi z was mogli spróbować części tego i zużytkować to.

Powinieneś zrobić co następuje:

- przypisać klawsym Mode_switch jakiemuś klawiszowi, oraz
- dodać Mode_switch do jakieś nieużywanego układu

Teraz klawisz do którego przypisany jest ModeShift będzie działał jako przełącznik trybów. Oznacza to że gdy jest przyciśnięty, klawiatura znajduje się w trybie alternatywnym.

Co więcej, jeśli dodasz klawsym Mode_lock do tego układu, będzie on ustawiał na stałe tryb alternatywny.

Uwaga: są jednak pewne problemy. Siergiej Wakulenko (`vax@cronyx.com`) wskazał że różne implementacje X-serwerów mają różne zasady przypisywania przełączników trybu (np. niektóre serwery ograniczają zestaw klawiszy które mogą działać w trybie przełącznika do, powiedzmy, CapsLock, NumLock oraz ScrollLock). Na szczęście ma się to zmienić w następnym wydaniu systemu X Windows. Po szczegóły patrz specyfikacja X Protocol.

Niestety nie udało mi się zmusić CapsLock aby miał tą samą funkcjonalność w trybie alternatywnym, konkretnie aby na stałe włączał duże litery. Wydaje mi się że nie można tego dokonać z powodu idiotycznego zaprojektowania translacji wejścia w X. Jeśli się mylę, proszę mnie poprawić.

Zobaczmy przykład. Załóżmy że chce się używać prawego Alt jako przełącznika trybów i ScrollLock do ustawiania trybu na stałe. Najpierw powinno się sprawdzić domyślny układ modyfikatorów. Osiąga się to uruchamiając xmodmap bez argumentów.

> `

>            $ xmodmap

>            xmodmap:  up to 2 keys per modifier, (keycodes in parentheses):

>            shift       Shift_L (0x32),  Shift_R (0x3e)
>            lock        Caps_Lock (0x42)
>            control     Control_L (0x25)
>            mod1        Alt_L (0x40),  Alt_R (0x71)
>            mod2        Num_Lock (0x4d)
>            mod3
>            mod4
>            mod5

> `

Zgodnie z powyższym, plan ataku wygląda jak następuje:

1. usunąć klawisz Alt_R z klawsymu mod1
2. przypisać klawsym Mode_switch klawiszowi Alt_R
3. przypisać klawsym Scroll_Lock do kodu klawisza 78 (kodu rzeczywistego ScrollLock)
4. dodać Mode_switch do nieużywanego klawsymu mod3 i
5. dodać klawsym Scroll_Lock do mod3

Oto więc rozwiązanie:

> `

>       remove mod1 = Alt_R
>       keysym Alt_R = Mode_switch
>       keycode 78 = Scroll_Lock
>       add mod3 = Mode_switch
>       add mod3 = Scroll_Lock

> `

Jeśli użyjesz tego drugiego rozwiązania, możesz połączyć tabelę i dyrektywy dotyczące trybów w swoim pliku `~/.Xmodmap`.

Pliki takie dostarczane są przeważnie razem z różnymi pakietami do obsługi cyrylicy pod X. Dobrym przykładem są tabele w doskonałym pakiecie Siergieja Wakulenki, opisanym wyżej.

Gdy już masz taki plik zawierający tabelę, powinieneś wykonać komendę:

    xmodmap filename

Plik dla całego systemu to `/usr/lib/X11/xinit/xinitrc`; osobisty to albo `~/.xinitrc`, albo `~/.Xclients`, albo `~/.xsession`, zależnie od tego co masz [zainstalowane].

UWAGA: Jeśli `xmodmap` narzeka na twoją tabelę, spróbuj załadować najpierw domyślną. Tabela domyślna znajduje się zwykle w `/usr/lib/X11/etc/xmodmap.std`.

## 4. Obsługa cyrylicy w LaTeXie

W tej sekcji opiszę kilka sposobów nakłonienia TeXa i LaTeXa do składania tekstu w cyrylicy. Istnieje kilka sposobów, które różnią się wyrafinowaniem instalacji i wygodą w obsłudze. Dla przykładu, jedną z możliwości jest zacząć bez żadnej wstępnej instalacji i użyć fontów cyrylicowych Washington AMSTeX. Z drugiej strony, możesz zainstalować pakiet LaTeX, który zapewnia wysoki stopień ustawień dotyczących cyrylicy. Mam pewne doświadczenia z dwoma pakietami. Pierwszy to pakiet `cmcyralt` autorstwa Wadima W. Żytnikowa ( mailto:vvzhy@phy.ncu.edu.tw) i Aleksandra Harina ( harin@lourie.und.ac.za), a ten drugi to pakiet `LH` autorstwa CyrTUG [Cyrillic TeX Users Group] ze stylami i dzieleniem wyrazów dla LaTeX2e autorstwa Sergieja O. Naoumowa ( serge@astro.unc.edu). Opiszę obydwa.

Zauważ że dostępne są dwie wersje LaTeXa : 2.09 jest wersją starszą, podczas gdy 2e jest nowszym wydaniem pre-3.0. Jeśli używasz LaTeXa 2.09, przestaw się szybko na 2e. Ten drugi pozostaje kompatybilny z tym pierwszym, ale ma o wiele więcej funkcji. Miejmy nadzieję że wersja 3 zostanie wkrótce wypuszczona. Opiszę ustawienia dla LaTeXa 2e.

Uwaga: oba te pakiety wymagają aby tekst w cyrylicy składany był z użyciem zestawu znaków Alt, nie KOI-8! Spowodowane jest to przyczynami historycznymi, ponieważ twórcy tych pakietów pracowali byli z EmTeXem - MS-DOSową wersją TeXa (nie wiedzieli jeszcze o Linuxie :-). Przestawienie ich na KOI-8 wymaga nieco wysiłku i spodziewane jest niebawem. Na razie, używaj jakiegoś narzędzia do konwersji tekstu rosyjskiego z KOI-8 do Alt. Patrz sekcja "Narzędzia użytkownika".

## 4.1 Używanie Washington Cyryliic

Pakiet ten został stworzony przez American Mathematics Society w celu uzupełnienia dokumentów o odnośniki po rosyjsku. Dlatego też autorzy nie byli zbyt uważni, a czcionki wyglądają raczej niezręcznie. Pakiet ten określa się zwykle jako 'całkiem kiepski pakiet cyrylicy dla TeXa'.

Niemniej jednak omówimy go, ponieważ jest on bardzo łatwy w użyciu i nie wymaga żadnej konfiguracji - kolekcja ta dostarczana jest z większością dystrybucji TeXa.

Oczywiście nie będziesz mógł sobie pozwolić na taki luksus jak automatyczne przenoszenie wyrazów, ale jednak...

1. Poprzedź swój dokument następującymi dyrektywami:

   > `

   >     \input cyracc.def
   >     \font\tencyr=wncyr10
   >     \def\cyr{\tencyr\cyracc}

   > `

2. Teraz aby napisać literę w cyrylicy, wprowadzasz

       \cyr

   i używasz odpowiedniej litery łacińskiej albo komendy TeXa. I tak małe litery rosyjskiego alfabetu wyrażają następujące kody: a b v g d e \"e zh z i {\u l} k l m n o p q r s t u f kh c ch sh shch {\cprime} y {\cdprime} \'e yu ya

Jest bardzo niewygodnym przekonwertować twoje teksty rosyjskie na takie kodowanie, lecz proces można zautomatyzować. Program translit (sekcja 11) obsługuje wynik w postaci TeXowej.

## 4.2 Pakiet KOI-8 dla LaTeXa

Pojawił się jakiś nowy pakiet `teTeX-rus`. Podobno obsługuje on zestaw znaków KOI-8 i ma wszystkie podstawowe rzeczy wymagane dla TeXa i LaTeXa. Osobiście jeszcze go nie próbowałem, chociaż słyszałem o pomyślnym go używaniu.

## 4.3 Używanie pakietu cmcyralt dla LaTeXa

Pakiet `cmcyralt` znaleźć można na każdym z węzłów CTAN (Comprehensive TeX Archive Network), jak `ftp.dante.de`. Powinieneś zdobyć dwie kolekcje: kolekcję fontów z [katalogu] `/fonts/cmcyralt` oraz style i reguły dzielenia wyrazów z [katalogu] `/macros/latex/contrib/others/cmcyralt`.

Uwaga: upewnij się że masz zainstalowany pakiet Sauter, bowiem `cmcyralt` potrzebuje z niego niektórych fontów. Pakiet ten możesz również zdobyć z węzła CTAN.

Powinieneś teraz zrobić co następuje:

1. Umieścić nowe czcionki w drzewie czcionek TeXa. W moim systemie (Slackware 2.2) stworzyłem podkatalog `cmcyralt` w `/usr/lib/texmf/fonts/cm/`. Utwórz w nim podkatalogi `src`, `tfm` i `vf`. Umieść tam pliki `.mf`, `.tfm` oraz `.vf`, odpowiednio.
2. Umieść pliki sterowników czcionek (`*.fd`) z archiwum stylów w odpowiednim miejscu (w moim przypadku był to `/usr/lib/texmf/tex/latex/fd)`.
3. Umieść pliki stylów (`*.sty`) w odpowiednim katalogu stylów LaTeXa (w moim przypadku `/usr/lib/texmf/tex/latex/sty`).

Teraz konfiguracja dzielenia wyrazów. Wymaga to przerobienia pliku bazowego LaTeXa.

1. Plik `hyphen.cfg` zawiera dyrektywy dla dzielenia wyrazów w angielskim i rosyjskim. Wytnij to co tyczy się rosyjskiego i umieść to w pliku konfiguracji dzielenia wyrazów LaTeXa, `lthyphen.ltx`. W moim przypadku plik ten znajdował się w `/usr/lib/texmf/tex/latex/latex-base`.
2. W tym samym katalogu umieść plik `rhyphen.tex`. Potrzebny jest on do stworzenia nowego pliku bazowego. Później możesz go usunąć.
3. Wykonaj w tym katalogu `make`. Nie zapomnij stworzyć odnośnika z `Makefile` do `Makefile.unx`. Podczas wykonywania `make` sprawdź komunikaty. Powinno się pojawić:

       Loading hyphenation patterns for Russian

Jeśli wszystko pójdzie poprawnie, otrzymasz w tym katalogu nowy `latex.fmt`. Wstaw go w odpowiednie miejsce, tam gdzie znajdował się poprzedni (np. `/usr/lib/texmf/ini/`). Nie zapomnij zachować starego pliku!

Otoż i to. Instalacja gotowa. Spróbuj przetworzyć przykłady z archiwum stylów. Jeśli możesz stworzyć pliki postscriptowe bez żadnych problemów, wszystko jest w porządku. Teraz aby używać cyrylicy w LaTeXie, wstaw na początek swojego dokumentu poniższą dyrektywę:

    \usepackage{cmcyralt}

Po szczegóły patrz plik `README` w archiwum stylów `cmcyralt`.

Uwaga: jeśli masz problemy z przykładami, założywszy że instalowałeś prawidłowo, to prawdopodobnie twój system TeX nie został zainstalowany poprawnie. Na przykład, przy mojej pierwszym teście każda próba stworzenia plików `.pk` dla czcionek rosyjskich nie udawała się (etap `MakeTeXPK`). Dokładne przyjrzenie się plikom wykryło pewien niejawny konflikt między konfiguracjami METAFONT `localfont` i `ljfour`. Kiedyś było to działało, ale rozpadło się po instalacji `cmcyralt`. Skontaktuj się ze swoim lokalnym guru od TeXa - TeX jest bardzo (czasami za bardzo) złożony aby rekonfigurować go bez wcześniejszej znajomości.

## 4.4 Pakiet CyrTUG

Pakiet CyrTUG uzyskać możesz z archiwum SunSite `( ftp://sunsite.unc.edu/pub/academic/russian-studies/Software)`. Zrzuć stamtąd pliki `CyrTUGfonts.tar.gz`, `CyrTUGmacro.tar.gz` i `hyphen.tar.Z`.

Proces instalacji nie różni się od opisanego powyżej.

## 5. Cyrylica w PostScriptcie

Eksperci powiadają że PostScript jest łatwy. Nie potrafię osądzić - mam zbyt wiele rzeczy do nauczenia się aby poświęcić trochę czasu na naukę PostScriptu. Spróbuję więc opisać moje smutne z nim doświadczenia. Mile widziałbym wsparcie od każdego kto wie więcej na ten temat ode mnie (ok. 99% ludzkości).

Zasadniczo aby wydrukować tekst z użyciem PostScriptu, musisz się upewnić co do następujących rzeczy:

- Czcionka cyrylicowa jest załadowana lub zawarta w dokumencie
- W dokumencie zawarty jest tekst w cyrylicy
- Tekst w cyrylicy używa odpowiednich kodów które odpowiadają wymaganiom czcionki
- Wybrano odpowiednią czcionkę do drukowania tekstu w cyrylicy

Nie ma rozwiązania na tyle ogólnego aby je polecić jako środek ostateczny, Spróbuję nakreślić różne sposoby radzenia sobie z różnymi problemami odnośnie tematu.

Jednym ze sposobów podejścia do konfiguracji cyrylicy jest użycie Ghostscripta. Ghostscript (lub po prostu gs w nowomowie) to darmowy (no, quasi-darmowy) interpreter PostScriptu. Ma on wiele zalet, pomiędzy nimi:

- Możliwość działania na różnych platformach (Windows, różne Unixy)
- Obsługa szerokiego zakresu drukarek niepostscriptowych
- Duży stopień konfigurowalności

To co ważne w naszym konkretnym przypadku to to że gdy już raz skonfigurujemy Ghostscripta, możemy za jego pomocą dokonywać całości drukowania, eliminując tym samym ekstra konfigurację dla innych urządzeń postscriptowych (np. HP Laserjet IV).

## 5.1 Dodawanie czcionek cyrylicowych do Ghostscripta

Jest to ważne, ponieważ zapewne nie będziesz chciał polegać na innych programach przy umieszczaniu w wynikowym postscripcie czcionek cyrylicowych. Zamiast tego dodajesz je do `gs`. i po prostu zmuszasz programy aby generowały wyjście w cyrylicy kompatybilne z czcionkami.

Aby dodać do `gs` nową czcionkę (w formacie .pfa lub .pfb), musisz:

1. Dodać ją do katalogu czcionek `gs` (np. `/usr/lib/ghostscript/fonts`).
2. Dodać odpowiednie nazwy i aliasy dla czcionki w pliku `Fontmap` w katalogu `gs`

Ostatnio pojawił się porządny zestaw czcionek cyrylicowych dla GhostScripta. Znajduje się on na `ftp.kapella.gpi.ru`. Ma on nawet konieczny wpis który trzeba dodać do pliku `Fontmap`. Ściągnąć musisz zawartość katalogu `/pub/cyrillic/psfonts/`. Plik `README` opisuje niezbędne szczegóły.

## 6. Drukowanie

Drukowanie zawsze jest rzeczą zawiłą. Istnieją różne drukarki różnych producentów z różnymi możliwościami. Nawet co do drukowania w "gołym" formacie nie ma jednorodnego rozwiązania (odnosi się to nie tylko do Unixa, ale również do innych systemów operacyjnych).

Drukarki mają różne języki kontrolne, a często mają bardzo różne poglądy na obsługę innych takich języków. Dobrą wiadomością jest to że jeden taki język kontrolny wydaje się być uznawany za de facto standard dla opisywania zadań związanych z drukiem - to język PostScript, stworzony przez Adobe Corporation.

Innym problemem jest różnorodność wymagań związanych z usługą drukowania. Na przykład, czasem chcesz po prostu wydrukować kawałek programu w C z rosyjskimi komentarzami, więc nie potrzebujesz żadnego ładnego drukowania - po prostu czysty wydruk ASCII w pojedynczej czcionce. Innym razem, kiedy projektujesz pocztówkę dla swojej dziewczyny, będziesz zapewne musiał ją złożyć używając różnych czcionek, i tak dalej. Będzie to wymagało z pewnością więcej wysiłku w kwestii ustawienia obsługi cyrylicy.

Aby podołać pierwszemu zadaniu będziesz musiał po prostu zmusić swoją drukarkę aby rozumiała jeden font cyrylicowy i (być może) zainstalować jakiś program filtrujący, który będzie wypisywał dane w odpowiednim formacie. Aby dokonać tego drugiego [zadania], będziesz musiał nauczyć swoją drukarkę różnych czcionek i mieć specjalny software.

Istnieje także sytuacja pośrodku, gdy masz program który wie jak wygenerować i fonty i odpowiednie dane dla drukarki, możesz więc, powiedzmy, wykonać parę ładnych wydruków kodu źródłowego bez wyrafinowanych systemów obróbki tekstu.

Wszystkie te opcje zostaną mniej lub bardziej omówione poniżej.

## 6.1 Ładowanie czcionek cyrylicowych do drukarki niepostscriptowej

Jeśli masz starą dobrą drukarkę igłową i potrzebujesz tylko wydrukować czysty tekst w KOI-8, spróbuj poniższego:

1. Znajdź odpowiednią czcionkę KOI-8 dla swojej drukarki. Sprawdź kolekcje MS-DOSowe w Internecie (na przykład archiwum SimTel, `ftp. simtel.net`)
2. Dowiedz się z instrukcji jak załadować czcionkę do drukarki i, możliwie, napisz prosty program który to robi
3. Uruchom ten program z odpowiedniego pliku .rc w czasie startu systemu.

Tak więc mając znaki cyrylicowe w górnej połówce zestawu znaków drukarki będziesz mógł drukować teksty po rosyjsku bez żadnych ceregieli.

Alternatywnie z czcionkami KOI-8 możesz użyć czcionek Alt. Są ku temu dwa powody:

- Może być łatwiej znaleźć czcionkę Alt, bowiem takowe były bardzo rozpowszechnione w kulturze MS-DOSowej
- Posiadanie odpowiedniej czcionki Alt pozwoli ci drukować również pseudografikę

Niemniej w tym przypadku będziesz musiał przekodować swoje teksty z KOI-8 na Alt przed posłaniem ich do drukarki. Jest to całkiem łatwe, ponieważ pełno jest programów które to robią (patrz "translit", na przykład), tak więc wystarczy że właściwie wywołasz ten program w polu `if` `/etc/ printcap`. Na przykład dla programu `translit` napisać możesz:

> `

>     if=/usr/bin/translit -t koi8-alt.rus

> `

Patrz printcap(5) po szczegóły.

## 6.2 Drukowanie różnymi czcionkami

Jednym świetnym sposobem poradzenia sobie z różnymi czcionkami i drukarkami jest użycie TeXa. Sterowniki TeXa zajmują się wszelkimi detalami, więc skoro już raz nauczyłeś TeXa rozumieć czcionki cyrylicowe, sprawa załatwiona.

Inną możliwością jest użycie PostScriptu. Zdecydowałem się poświęcić temu cały rozdział, ponieważ nie jest to łatwe.

W końcu, są i inne edytory tekstów które mają sterowniki drukarek. Nigdy nie próbowałem niczego poza TeXem, więc nie mogę niczego zasugerować

## 6.3 Konwersja tekstu do TeXa

Jeśli tym czego potrzebujesz jest wydrukowanie tekstu w ASCII bez żadnego dodatkowego przetworzenia, możesz spróbować użyć kilku programów które przerobią twój tekst w cyrylicy na gotowe do przetworzenia plik TeXa. Jednym z najlepszych programów do tego celu jest `translit`. W tym przypadku nie musisz się nawet kłopotać instalowaniem czcionek cyrylicowych dla TeXa, ponieważ translit używa pakietu Washington Cyriliic, który włączony jest do większości dystrybucji TeXa (a może się mylę?)

## 6.4 Konwersja tekstu do postscriptu

Czasami masz tekst w czystym KOI-8 i chcesz go wydrukować tylko po to żeby mieć go na papierze. Jedną z najprostszych metod osiągnięcia tego jest użycie specjalnych programów konwertujących tekst do postscriptu.

Istnieje pewna liczba programów dokonujących takiej konwersji. Osobiście preferuję `a2ps`. Stworzony początkowo jako prosty konwerter tekstu do postscriptu, stał się on dużym i wysoce konfigurowalnym programem z wieloma opcjami, pozwalając ci obsłużyć różne wielkości strony, podświetlanie składni itp. Inne narzędzie (obecnie dostępne jako część projektu GNU) to `enscript`

Głównym problemem z takimi programami jest to że nie wiedzą one nic o czcionkach cyrylicowych. Właśnie rozważam możliwość zawierania w nich czcionek cyrylicowych, tak aby rozumiały cyrylicę.

Niemniej cała ta powyższa gadanina byłaby bezcelowa bez żadnej rzeczywistej rady. Oto więc ona:

Jak zwykle, GNU wygrywa. GNUsowy program `enscript` zaprojektowany został do konwersji tekstu na postscript i ma doskonałą obsługę nie-ASCIIowych zestawów znaków. Nie zawiera on cyrylicowych czcionek postscriptowych, ale bardzo łatwo je zdobyć, jak wyjaśniono poniżej (podziękowania dla Michaela Van Canneyta).

1. Zainstaluj najnowszy `enscript`. Jak na razie najświeższą wersją jest 1.5. Możesz ściągnąć go albo z ftp GNU, albo jako pakiet RPM z ftp RedHata.
2. Teraz, jeśli masz szczęście być użytkownikiem RedHat Linuxa, ściągnij i zainstaluj czcionkę Cyriliic Textbook (`ftp://ftp.redhat.com/pub/ contrib/i386/enscript-fonts-koi8-1.0.1-i386.rpm`)
3. Jeśli nie używasz RPM, ściągnij plik `textbook.tar.gz` z Cyrillic Software Collection na `ftp://sunsite.unc.edu/pub/academic/russian-studies/Software/`). Rozpakuj go do katalogu w którym zainstalowane są czcionki `enscripta`. Przejdź teraz do tego katalogu i wykonaj:

   > `

   >     mkamfmap *.afm

   > `

4. Koniec konfiguracji. Spróbuj wydrukować jakiś tekst w KOI-8 poniższą komendą:

   > `

   >     enscript --font=Textbook8 --encoding=koi8 jakis_plik

   > `

Jeśli chcesz jakiegoś szybkiego rozwiązania i nie dbasz o jakość wydruku, a wszystkim czego potrzebujesz jest cyrylica na papierze, spróbuj pakietu `rtxt2ps`. Jest to bardzo prosty i niewyszukany konwerter tekstu do postscriptu. Jakość wydruku jest nienajlepsza (albo, mówiąc szczerze, całkiem zła), ale robi on to co powinien.

Jeszcze inną deską ratunku jest przerobiona wersja `a2ps`. Jest ona dość stara, więc nie spodziewaj się tych wszystkich fajerwerków z nowszych wersji. Ale drukuje ona tekst w cyrylicy, a jakość wydruku jest znacząco lepsza niż ta `rtxt2ps`. Doświadczyłem przy niej jednak różnych rodzajów problemów, np. nie mogłem wydrukować więcej niż dwóch stron (???)

## 7. Konfiguracja różnych narzędzi

Ogólnie, aby przestawić pewne narzędzia w trybie operowania cyrylicą wymagane jest po prostu umożliwienie danych ośmiobitowych. W kilku przypadkach wymagane jest powiedzenie aplikacji aby pokazała rozszerzone znaki ASCII w ich bazowej formie.

## 7.1 6.1. bash

Aby bash rozumiał ośmiobitowe znaki, powinieneś ustawić trzy zmienne, Najlepszym miejscem jest plik `~/.inputrc`. Ustaw co następuje:

> `

>       set meta-flag on
>       set convert-meta off
>       set output-meta on

> `

## 7.2 6.2. csh/tcsh

Powinienieś ustawić poniższe w `.cshrc`:

> `

>       setenv LC_CTYPE iso_8859_5
>       stty pass8

> `

Jeśli nie masz stty zgodnego z POSIX (niemożliwe w Linuxie), zastąp ostatnie wywołanie przez:

    stty -istrip cs8

## 7.3 6.3. emacs

Minimalną obsługę cyrylicy w emacsie zapewnia dodanie poniższych wywołań do pliku `.emacs` (zakładając że zainstalowana jest obsługa zestawu znaków cyrylicy dla konsoli lub X, odpowiednio).

> `

>       (standard-display-european t)

>       (set-input-mode (car (current-input-mode))
>          (nth 1 (current-input-mode))
>          0)

> `

Umożliwia to użytkownikowi oglądanie i wprowadzanie rosyjskich dokumentów.

Taki tryb nie jest jednak wielką wygodą, ponieważ `emacs` nie rozpoznaje zwykłych komend klawiatury gdy znajduje się w trybie wprowadzania cyrylicy. Istnieje pewna liczba pakietów które używają innego podejścia. Nie polegają one na "input mode" ustalonym przez środowisko (X lub konsolę). Zamiast tego, pozwalają użytkownikowi przełączać tryb wprowadzania specjalnymi komendami emacsa, a emacs sam jest odpowiedzialny za przedefiniowanie zestawu znaków. Autor miał szansę zaznajomić się z trzema takimi pakietami. Pakiet `russian.el` Walerego Aleksiejewa ( mailto:ava@math.jhu.edu) pozwala użytkownikowi przełączać się między trybami cyrylicy i zwykłym oraz tłumaczyć zawartość bufora z jednego kodowania cyrylicy na drugie (co jest szczególnie użyteczne przy czytaniu tekstów przeniesionych z MS-DOS). `rustable.el` (nie znam niestety autora) dodaje do emacsa reguły składniowe zestawu znaków (granice słów, reguły zmiany wielkości liter itd.) Pakiety te znaleźć można w większości archiwów emacsowego Lispa.

Jedyną niewygodą jest to że emacs ciągle traktuje znaki rosyjskie jako specjalne, nie rozpoznaje więc granic słów rosyjskich i zmian wielkości liter. Aby to poprawić, musisz zmodyfikować składnię i tablice wielkości liter emacsa:

> `

>       ;; w zmiennych poniżej znajdują się śmiecie, ponieważ SGML nie lubi
>       ;; znaków cyrylicy. Będziesz musiał wstawić duże i małe litery
>       ;; rosyjskiego alfabetu, odpowiednio (patrz faktyczne pliki)

>       (setq *russian-abc-ucase* "tu wstaw duże litery")
>       (setq *russian-abc-lcase* "tu wstaw małe litery")

>       (let ((i 0)
>             (len (length *russian-abc-ucase*)))

>            (while (< i len)
>              (modify-syntax-entry (elt *russian-abc-ucase* i) "w  ")
>              (modify-syntax-entry (elt *russian-abc-lcase* i) "w  ")
>              (set-case-syntax-pair (elt *russian-abc-ucase* i)
>                                    (elt *russian-abc-lcase* i)
>                                    (standard-case-table))
>              (setq i (+ i 1))))

> `

Dla tego celu stworzyłem plik `rusup.el` który tego dokonuje, podobnie jak kilka poręcznych funkcji. Musisz załadować go w swoim `~/.emacs`.

Jeszcze jeden pakiet to `remap`, który próbuje bardziej utypowić obsługę cyrylicy. Pakiet ten napisał Per Abrahamsen (`mailto:abraham@iesd.auc.dk`), i dostępny jest on na `ftp.iesd.auc.dk`.

We własnej opinii, sugerowałbym zacząć od `russian.el`, bowiem jest on bardzo łatwy w konfiguracji i użyciu.

## 7.4 6.4. ispell

Istnieje dodatek `rspell` do pakietu GNU `ispell`, stworzony przez Neala Daltona (`nrd@cray.com`), ale doświadczyłem z nim kilku problemów próbując go zmusić do natychmiastowego działania. Spróbuj go - może tobie się poszczęści.

## 7.5 joe

Spróbuj opcji `-asis`

## 7.6 ksh

Co do implementacji public domain `ksh`, `pdksh 5.1.3`, możesz wprowadzać znaki ośmiobitowe tylko w trybie vi. Użyj

> `

>        set -o vi

> `

## 7.7 less

Jak na razie, `less` nie obsługuje zestawu znaków KOI-8, ale poniższa zmienna środowiskowa załatwia sprawę:

> `

>     LESSCHARSET=latin1

> `

## 7.8 lynx

Od wersji 2.6 możesz wybrać odpowiednią wartość dla opcji Display Character Set.

## 7.9 mc (Midnight Commander)

Aby poprawnie wyświetlać znaki cyrylicy, zaznacz opcję 'full 8 bits' w menu Options/Display.

Jeśli masz problem z brzydkimi ramkami okien, zobacz sekcję ''

Off topic: jeśli chcesz zmusić mc do używania kolorów w oknie `xterma`, ustaw zmienną `COLORTERM`

> `

>     COLORTERM= ; export COLORTERM

> `

## 7.10 Netscape Navigator

Upewnij się że używasz wersji Netscape'a większej niż 3. Jeśli twój Netscape jest starszy, ściągnij nowszego z www.netscape.com.

### Konfiguracja podstawowa

Aby móc oglądać tekst cyrylicą w większej części dokumentów HTMLowych, zrób co następuje:

- W menu Options/Encoding Document wybierz Cyrillic (KOI-8)
- W menu Options/General Preferences/Fonts wybierz Cyrillic (KOI-8), Times(Cronyx) jako czcionkę proporcjonalną i Courier(Cronyx) jako czcionkę o stałej szerokości.
- Zachowaj ustawienia

UWAGA: konfiguracja ta będzie działała z większą częścią dokumentu. Jednakże nie będziesz mógł wyświetlać tekstu cyrylicą w nagłówku okna, menu i niektórych dialogach. Aby naprawić te problemy:

### Konfiguracja zaawansowana

Andriej A. Czernow wie więcej niż inni o KOI-8 w ogóle i o Netscape w szczególności. Odwiedź jego doskonałą stronę o KOI-8 i ściągnij łatę do pliku zasobów Netscape, co sprawi że Netscape będzie mówiło po rosyjsku na tyle na ile może.

## 7.11 pine

Wstaw następującą dyrektywę do `~/.pinerc` dla konfiguracji osobistej, albo do `/usr/lib/pine.conf` dla globalnej:

> `

>     character-set=ISO-8859-5

> `

## 7.12 rlogin

Upewnij się że powłoka na serwerze docelowym jest ustawiona poprawnie. Potem, jeśli twój `rlogin` nie działa domyślnie [prawidłowo], użyj `rlogin -8`.

## 7.13 sendmail (aka 'zguba sysadmina')

Od wersji 8 sendmail domyślnie prawidłowo radzi sobie z 8-bitowymi danymi. Jeśli nie jest tak u ciebie, sprawdź opcję EightBitMode i opcję -7 przekazywaną mailerom w twoim `/etc/sendmail.cf`. Patrz "Sendmail; Installation and Operation Guide" po szczegóły.

## 8. zsh

Używaj w ten sam sposób jak `csh` (patrz sekcja o `csh`). Plikami startowymi w tym przypadku są `.zshrc` oraz `/etc/zshrc`.

## 9. Użyteczne narzędzia

## 9.1 Narzędzia do konwersji

Istnieje pewna liczba programów zdolna konwertować z KOI-8 na Alt i z powrotem. Poszukaj w SovInformBureau albo na `ftp.funet.fi` listy poręcznych małych programików. Możesz też użyć specjalnego trybu emacsa (patrz sekcja o emacsie).

Szczególnie polecałbym jednakże pakiet `translit`. Obsługuje on wiele popularnych zestawów znaków i potrafi nawet stworzyć pliki TeXa (patrz sekcja 5.1). z tekstu rosyjskiego. Użytkownicy RedHata mają do dyspozycji `translit` w postaci pliku RPM.

## 9.2 Narzędzia programisty

Jak dotąd objaśniałem sposoby zmuszenia programów do akceptowania i wyświetlania zestawu znaków cyrylicy. Niemniej pełne przystosowanie systemu do warunków lokalnych obejmuje o wiele więcej. To co omówiono powyżej nie wystarcza. System powinien być przyjazny dla użytkownika, który niekoniecznie musi znać angielski. W mojej opinii, nie jest wielką sprawą obeznanie się z angielskim na poziomie komunikatów programów. Jednakże nie jest całkiem fair tego wymagać.

Tak więc następny poziom przystosowania wymaga aby programy były dostosowywalne do wymagań różnych języków i zwyczajów w przedstawianiu danych.

Wcześniej dokonywano tego poprzez rozwijanie pewnej abstrakcji komunikatów będących rezultatem kodu programu. Teraz ten mechanizm jest (mniej czy więcej) ustandaryzowany. I, oczywiście, istnieją jego darmowe implementacje!

Dobra wiadomość to to że GNU w końcu przyjęło sposób tworzenia zinternacjonalizowanych aplikacji. Ulrich Drepper (`mailto:drepper@ipd.info.uni-karlsruhe.de`) stworzył pakiet `gettext`, dostępny we wszystkich repozytoriach GNU, takich jak `ftp://prep.ai.mit.edu/pub/gnu/`. Pozwala on tworzyć programy w sposób który łatwo można roszerzyć na obsługę wielu języków. Nie zamierzam opisywać technik programistycznych, zwłaszcza że pakiet gettext zawiera doskonały podręcznik.

Tak więc jeżeli tworzysz programy które wypisują jakieś komunikaty (a stworzyłeś kiedyś taki który by ich wypisywał?), nie leń się i włóż ociupinę (naprawdę ociupinę) wysiłku w uczynienie swojego programu świadomym locale.

Prośba o współpracę: jeśli chcesz nauczyć się pakietu `gettext` i równocześnie dołożyć coś do projektu GNU; lub nawet jeśli tylko chcesz dołożyć, możesz to zrobić! GNU się internacjonalizuje, więc wszystkie narzędzia przerabiane są na świadome locale. Problemem jest przetłumaczenie komunikatów z angielskiego na rosyjski (i inne języki, jak wam się podoba). Zasadniczo, to co trzeba zrobić to zdobyć specjalny plik `.po`, składający się z angielskich komunikatów konkretnego narzędzia i dołączyć do każdego komunikatu jego odpowiednik po rosyjsku. W ostatecznym rozrachunku sprawi to że system będzie odzywał się po rosyjsku, jeśli zechce tego użytkownik! Po więcej szczegółów i dalsze wskazówki skontaktuj się z Ulrichem Drepperem (`mailto:drepper@ipd.info.uni-karlsruhe.de`)

## 10. Wykaz użytecznych zasobów

Strona domowa `a2ps`: `http://www-inf.enst.fr/~demaille/a2ps.html`

Strona A. Czernowa o KOI-8: `http://www.nagual.ru/~ache/koi8.html`

Ogólna informacja o Linuxie: `http://sunsite.unc.edu/mdw/linux.html`

Moja kolekcja rzeczy związanych z konfiguracją cyrylicy: `ftp://netvision.net.il/pub/home/b/belikoff/cyrillic/`

Kolekcja cyrylicowa na `ftp.kiae.su`: `ftp://ftp.kiae.su/cyrillic`

Kolekcja cyrylicowa na `ftp.relcom.ru`: `ftp://ftp.relcom.ru/cyrillic/`

Kolekcja programów cyrylizujących `ftp://ftp.funet.fi/pub/culture/russian/comp/`

Cronyx `http://www.cronyx.ru/` - twórcy czcionek cyrylicowych dla systemu X Windows.

Pakiet remap dla emacsa `ftp://frp.iesd.auc.dk/`

Czcionki cyrylicowe dla Ghostscripta: `ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts`

Czcionki cyrylicowe dla X: `ftp://ftp.kiae.su/cyrillic/x11/fonts/xrus-2.1.1-src.tgz`

Ghostscript: `http://www.cs.wisc.edu/~ghost/index.html`

GNU nenscript: `ftp://ftp.prep.ai.mit.edu/pub/gnu`

Informacja o Cyrlillic Software: `http://sunsite.oit.unc.edu/sergei/Software/Software.html`

Grupa newsowa `relcom.fido.ru.unix`.

RFC 1489: `http://ds.internic.net/rfc/rfc1489.txt`

Użyteczne pakiety obsługujące cyrylicę: `ftp://sunsite.unc.edu/pub/academic/russian-studies/Software`

Pakiet kbd dla Linuxa: `ftp://sunsite.unc.edu/pub/Linux/system/Keyboards/`

Kolekcje czcionek X: `ftp://ftp.switch.ch/mirror/linux/X11/fonts/`

SovInformBureau: `http://www.siber.com/sib/russify/`

Pakiet rusyfikujący teTeX: `ftp://xray.sai.msu.su/pub/outgoing/teTeX-rus/`

`rtxt2ps` i przerobiony `a2ps`: `http://www.siber.com/sib/russify/converters/`

Pakiet `translit`: `ftp://ftp.osc.edu/pub/russian/translit/translit.tar.Z`

Pakiet `xruskb`: `ftp://ftp.relcom.ru/x11/cyrillic/`

`rspell`: `ftp://sunsite.unc.edu/pub/academic/russian-studies/Software/rspell.tar.gz`

FTP XFree86: `http://www.xfree86.org`