Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

eyegene-Unicode priručnik

Kratak priručnik o Unicode-u, i

internacionalizaciji softvera pod

Linux-om i Unix-om

Unicode

Pisao Edward H. Trager.

General Introduction

Ova stranica pruža kratak pregled informacija sa linkovima ka drugim URL adresama, u pogledu upotrebe Unicode-a, za višejezičnu internacionalizaciju projekata na Linux i ostalim operativnim sistemima zasnovanim na UNIX-u. Ako želite mogućnost upotrebe više od jednog jezika na svom Linux/UNIX računaru, ali još niste shvatili kako da to uradite, onda treba da pročitate ovu stranicu. Testirao sam softver i podešavanje konfiguracija nevedenih u ovom dokumentu, prvenstveno na softverima Linux (SuSE 7.2, 7.3, 8.1, 8.2, 9.0beta) i, u manjoj meri na OpenBSD (3.2, 3.3) i Solaris 8.

Ciljevi ovog dokumenta su: 1) da predstavim neke od neizostavnih Open Source upotrebu Unicode-a u Linux-u ili drugom UNIX okruženju, i 2) da istaknem ključne aspekte postavljanja takvog softvera. Ostali Unicode web resursi pokrivaju neke od tema ispod, u mnogo većoj meri nego ovde. Umesto da budem sveobuhvatan, trudio sam se da se fokusiram na neke ključne delove softvera, i ključne konfiguracione probleme, koji će vam omogućiti da brzo postanete produktivni na vašim višejezičkim ili internacionalizovanim projektima Linux-a, ili drugim operativnim sistemima koji se danas zasnivaju na Unix-u. Kroz dokument su obezbeđene smernice za obuhvatniji tretman različitih tema.

Napomena: Ovaj dokument pretpostavlja da lako radite u komandnom okruženju, i da već imate osnovna znanja o sistemsko administrativnim zadacima Linux/UNIX -a,( kao što su: kako kompajlirati, ili instalirati softver iz izvora upotrebom zajedničke
./configure --> make --> su -c "make install" komandne sekvence).

Uvod u Unicode

Računari dodeljuju brojeve ( kodne tačke) koji predstavljaju slova. Postoje stotine nacionalnih i ISO standarda za kompjutersko kodiranje modernih jezičkih zapisa. Mnogi od ovih starih kodnih rasporeda znakova ograničeni su na 256 ( tj. 28 ) kodnih tačaka. Ovo rezultira brojnim problemima. Glavni problem je da 256 kodnih tačaka, često nije dovoljno čak ni za samo jedan jezik, a kamoli za više jezika. Drugi, prilično očigledan problem, je da će kodne tačke koje predstavljaju slova u nacionalnom ili ISO kodiranju, biti neizbežno ponovo korišćene da predstave neka potpuno druga slova u nekom drugom nacionalnom ili ISO kodiranju, ( npr. MALO LATINSKO SLOVO SA TEŠKIM AKCENTOM "ù", po zapadnoevropskom kodiranju ISO-8859-1 postaje MALO LATINSKO SLOVO SA KRUŽIĆEM IZNAD "ů" po centralno i istočnoevropskom ISO-8859-2 kodiranju; MALO GRČKO SLOVO OMEGA "ω" u ISO-8859-7, HEBREJSKO SLOVO SHIN"ש "u ISO-8859-8 ... i tako dalje! Za više neobičnih detalja, pročitajte ovo). To lako može da dovede do izobličavanja emailova, web stranica, ili, između ostalog, baze podataka.

Za ilustraciju istog problema u nešto drugačijem domenu, razmotrite poznati jezik kao što je engleski. Jezik može biti napisan sa samo 26 slova, ali izdavačima naučnih i matematičkih dokumenata na engleskom jeziku je potrebno mnogo dodatnih simbola - a 256 kodnih tačaka jednostavno nije dovoljno! Zamislite samo koliko problematičnih elektronskih razmena informacija može kod jezika kao što je kineski, gde postoji više nekompatibilnih kodiranja.

Unicode rešava probleme višestrukih kodiranja dodeljivanjem jedinstvenih kodnih tačaka za pisma i ideograme za sve savremene svetske jezičke zapise i najčešće korišćene simbole. Stanica Unicode Consortium-a je na www.unicode.org.

UTF-8

UTF-8 je metod serijalizacije za Uniocode koji je de facto standard za šifriranje Unicode-a na operatvnim sistemima zasnovanim na UNIX-u, naročito LInux-u. UTF-8 je takođe prioritetan za kodiranje na višejezičnim web stranicama. U ovoj metodi, ASCII kodovi zauzimaju jedan bajt. To je ASCII podskup Unicode serijalizacije u UTF-8 koji je identičan ASCII-ju. Unicode kodne tačke u osnovnoj višejezičnoj ravni iznad ASCII dometa, serijalizovane su od dva do tri bajta (dodatne ravni postoje u Unicode-u koje mogu dovesti do serijalizacije do šest bajtova).

Kada su karakteri serijalizovani na više bajtova, najvažniji bit je uvek postavljen, pa ovakvi bajtovi nikada ne padaju u ASCII okvir. Takođe, prvi bajt višebajtnog niza koja predstavlja ne-ASCII karakter, uvek zadržava neke bitove koji označavaju koliko bajtova je korišćeno za serijalizaciju ovog karaktera (Slika. 1).

UTF-8 Serialization Table
Slika. 1. UTF-8. Kada su Unicode karakteri serijalizovani višestrukim bajtovima u UTF-8, najveća vrednost bitova prvog serijalizovanog bajta označava koliko bajtova je upotrebljeno za serijalizaciju tog karaktera. Bitovi predstavljeni karakterom "n" zadržavaju unicode karakter vrednosti koda.

Ovo rezultira kodiranjem bez uzimanja u obzir stanja, u kojima će bajtovi koji nedostaju biti očigledni. UTF-8 obezbeđuje jednostavno i elegantno rešenje za internacionalizaciju UNIX-a, na bajt orijentisanim operativnim sistemima i softverima. Za više detalja, pročitajte Markus Kuhn-eov odličan FAQ, UTF-8 and Unicode FAQ za Unix/Linux. Svi dole pomenuti softveri takođe dobro podržavaju UTF-8.

Savet: UTF-8 je jednostavan za upotrebu, skladištenje, pregled u dokumentima, bazi podataka, i izvornom kodu. Koristite UTF-8 sistem kodiranja za sve vaše višejezične, međunarodne, ili ne-engleske podatke i dokumenta. Izbegavajte upotrebu zastarelih karaktera nacionalnog kodiranja (tj. ISO-8859-1,ISO-8859-2, ISO-8859-15, TIS-620, shift-jis, gb-18030, KOI8, itd.). Postoje takođe dobri razlozi da izbegnete upotrebu ostalih Unicode kodiranja, kao što je UTF-16. Informacije kako konvertovati zastrele podatke u UTF-8 nalaze se ispod (pogledajte Utilities).

Podešavanje vašeg lokalnog standarda na UTF-8

Da biste u potpunosti iskoristili prednosti Unicode-a na vašem Linux-u, ili nekom drugom UNIX sistemu, treba da podesite vaš lokalni standard na UTF-8. Neke skorije distribucije Linux-a sada po pravilu koriste UTF-8 standard. Međutim, osim ako ne koristite zaista noviju Linux distribuciju, vrlo je verovatno da još uvek koristite zastareli lokalni standard, zasnovan na ISO-8859, ili neko drugo nacionalno kodiranje. Ako koristite neki OS zasnovan na UNIX-u a ne Linux-u, još je manje verovatno da koristite UTF-8 standard. Da biste odredili vašu trenutnu postavku lokalnog standarda, ukucajte locale. Evo nekih rezultata sa Linux-a i Solaris-a:

"locale" example from Linux:
user_a@some_linux_box:~> locale
LANG=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE=POSIX
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=
"locale" example from Solaris:
user_b@some_sun_box:~> locale
LANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=

Sva UTF-8 podešavanja lokalnog standarda završavaju u "UTF-8", tako da je očigledno da ni user_a ni user_b u primerima iznad ne koriste UTF-8 lokalni standard. Da biste utvrdili čime druga lokalna podešavanja raspolažu, ukucajte locale -a:

"locale -a" primer iz Linux-a:
user_a@some_linux_box:~> locale -a
C
POSIX
af_ZA
ar_AE
ar_BH
ar_DZ
ar_EG
ar_EG.utf8
ar_IN

. . .

uz_UZ
vi_VN.utf8
yi_US
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_TW
zh_TW.euctw
zh_TW.utf8
"locale -a" primer iz Solaris-a:
user_b@some_sun_box:~> locale -a
POSIX
C
iso_8859_1

Očigledno je da Linux distribucija (za primer je korišćena (SuSE 7.3 ima više UTF-8 instaliranih lokalnih standarda (nisu svi prikazani), dok Solaris polje nema nijedan. Solaris obezbeđuje UTF-8 lokalne standarde, ali oni moraju biti instalirani kao opcioni paketi: pogledajte Solaris Internationalization Guide.

Da biste promenili vaša lokalna podešavanja za Linux, samo postavite varijabilu LANG okruženja u vašem .profile file. Imajte na umu da izlaz iz locale -a na Linux kutiji prikazanoj iznad pokazuje "utf8" kod malih slova bez crtica: ovo je greška. Kada postavite LANG varijabilu, otkucajte UTF-8 velikim slovima i sa crticom:

Podešavanje LANG varijabile u a.profile fajlu za BASH komandno okruženje pod Linuxom:
...
export LANG=en_US.UTF-8

Kada se ponovo prijavite koristeći novu LANG postavku, sada bi trebalo videti da je većina ostalih "LC_" varijabila lokalnog okruženja automatski ažurirana:

Posle podešavanja LANG u UTF-8 ulokalnom Linux-u:
user_a@some_linux_box:~> locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE=POSIX
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Pod UTF-8 lokalnim standardom, sada možete da imate sve prednosti Unicode-a na vašoj mašini. Imajte na umu da neki Unicode softveri mogu biti korišćeni prilično efiksano, čak i ako ne možete, ili niste spremni da pređete na lokalni UTF-8. Na primer Yudit, dole opisan, dobro će raditi čak i na sistemma kao što su OpenBSD koji trenutno ne podržava druge lokalne standarde.

Terminal Emulatori

Čak i u vreme KDE i Gnome, nema poklonika Linux-a ili UNIX-a koji bi radio bez dobrog terminal emulatora. Nekoliko Unicode terminal emulatora su opisani niže.

Mlterm

Mlterm je bez sumnje najbolji terminal emulator za višejezični rad, i svakako je moj omiljeni (Slika. 1). Kada je sastavljen od fribidi i libind, mlterm podržava složene hindu zapise popu Devanagari, izvedene indijske zapise kao što je tajlandski, zapise s desna na levo kao arapski i hebrejski. Mlterm takođe nosi GTK+ GUI konfigurator, koji se aktivira upotrebom prilično neobične kombinacije CTRL-<DESNI KLIK MIŠEM> (Slika . 2).
mlterm
Slika. 2. Mlterm. GUI konfigurator olakšava podešavanje mlterm. HTML fajl, kodiran u UTF-8 vidi se u vim pod mlterm.

Mlterm po pravilu,obično koristi bitmap font GNU Unifont ,koji je već bio instaliran u većini Linux distribucija i ostalim besplatnim Unices-ima GNU Unifont je bitmap font prikazan u Slici 2 iznad..

Ako želite, možete takođe da imate Mlterm uTrueType font umekšanih ivica. U tom slučaju neproporcionalni font kao Bitstream Vera Sans Mono ili Everson Mono Unicode su najbolji. Trebaćete da (verovatno kao root) modifikujete Mlterm $PREFIX/etc/mlterm/aafont konfiguracione fajlove, da bi označili koje fontove želite da koristite da prikažete normalne i CJK karaktere duple širine ($PREFIX zavisi od toga gde je Mlterm instaliran. Ako ga instalirate sami, to je verovatno /usr/local/. Ako je došao instaliran, verovatno je /etc. Kao primer, evo kako moj aafont fajl izgleda:

ISO10646_UCS4_1=Everson Mono Unicode-iso10646-1;
ISO10646_UCS4_1_BIWIDTH=Bitstream Cyberbit-iso10646-1;

Ovo navodi da se Eversonov sans-serif Everson Mono Unicode font koristi za normalnu širinu karaktera, dok se serif Bitstream Cyberbit font koristi za duplu širinu CJK karaktera. Da bi prebacio na fontove sa umekšanim ivicama, treba da počnem Mlterm sa -A flag, ovako:

mlterm -A &

Evo kako rezultat izgleda na Mandrake Linux polju:

Ako želite da koristite varijabilne širine fontova, tada posle promene aafont -a na odgovarajući način, pokrenite Mlterm ovako:

mlterm -A -V &

Napomena:Možda ćete morati da postavite osnovu da bi sastavili libind. Problem se javlja u obezbeđivanju Makefile. Možete ili da popravite Makefile, ili se možete ulenjiti i samo postavitiroot.

Xterm

Alternativa je upotrebiti xterm (Slika. 3) koji se dobija sa XFree86. Xterm ne podržava jezike koji se pišu s desna na levo kao arapski ili hebrejski. Mislim, da ne podržava ni većinu indijskih zapisa. Ipak, podržava tajlandski kao što je prikazano dole Slika . 3 .

xterm
Slika . 3. Xterm u UTF-8 režimu. Xterm podržava UTF-8,uključujući tajlandski, ali ne i jezike koji se pišu s desna ma levo, kao arapski.

Za oba mlterm i xterm, moraćete da podesite vaš lokalni standard na UTF-8. Kada ja koristim neki nalog ili mašinu gde lokalni standard nije UTF-8, koristim sledeća "mini skripta" da pokrenem mlterm i xterm za višejezični rad:

"uterm" script za pokretanje mlterm sa UTF-8 podrškom, kada lokalni standard još nije podešen na UTF-8:
#!/bin/sh
LC_CTYPE=en_US.UTF-8 mlterm --sbmod=right &

"uxterm" cript za pokretanje xterm sa UTF-8 podrškom, kada lokalni standard još nije podešen na UTF-8:

Za xterm morate da odredite font na komandnoj liniji, što je veoma nezgodno, ukoliko ne koristite skript ili pseudonim da to pokrenete:

#!/bin/sh
LC_CTYPE=en_US.UTF-8 xterm -u8 -fn \
'-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1' &

Napomena: OpenBSD 3.2 izgleda da nema podršku lokalnog standarda, pa takvi zapisi daju poruku "lokalna podešavanja nisu uspela" . Uprkos tome, jednostavne programske alatke kao što su UNIX cat ne rade ispravno, i ne proizvode čitljiv prikaz UTF-8 fajlova na OpenBSD. Međutim, drugi softveri kao što je vim ne uspevaju da rade ispravno u odsustvu podrške lokalnog standarda sa operativnog sistema, uprkos mogućnostima terminal emulatora.

Iako mi se sviđaju karakteristike KDE Konsole (KDE 3.x), primetio sam greške kod tajlandskih i arapskih zapisa pod UTF-8 lokalnim standardom, tako da se, za sada, suzdržavam da ga preporučim za višejezične poslove.

Unicode Editori

Sada je dostupan veliki broj dobrih unicode editora za Linux / Unix, ali ću ja opisati samo tri:

Yudit

Yudit (Slika. 4) ije neizostavan unicode text editor za X Window System. Yudit može biti korišćen u bilo kom lokalnom podešavanju. Može čak biti korišćen i na OpenBSD kome nedostaje lokalni standard. Program je krajnje jednostavan za upotrebu i dolazi sa velikim brojem mapa na tastaturi -- čak i sa prepoznavanjem rukopisa za Kanji (japanski) i Hanzi (kineski). Prepoznavanje rukopisa je odlična ideja, ali u praksi on funkcioniše dobro samo kod prilično jednostavnih karaktera sa vrlo malo poteza, kao što su: "人" ili "水", jer je crtanje složenijih karaktera pomoću miša vrlo zamorno. Za ozbiljnije kineske, japanske ili korejske (CJK) kucačke zadatke, potreban je metod unosa kakav je SCIM (više u nastavku niže) .

Pored samog editora, program distribucije uključuje dva apsolutno neophodna alata:

  • uniprint obezbeđuje Postscript način štampanja Uniprint može da se koristi za štampu u okviru Yudit, ili iz komandnog okruženja.
  • uniconv neprimetno konvertuje fajlove između velikog broja Unicode i zastarelih nacionalnih, i ISO standarda kodiranja.

Informacije o upotrebi uniprint i uniconv se nalaze u poglavlju Alati.

Program meniji su dostupni na mnogim jezicima. Program ima nekoliko spoljnih zavisnosti (osim samog X Windows-a), i nema potrebe za prethodnim instaliranjem okruženja višejezičnih lokalnih standarda. Na primer, , Yudit savršeno radi na OpenBSD 3.2, kome nedostaje lokalna podrška, gde vim ne uspeva.

Yudit
Slika. 4. Yudit dolazi sa unapred instalitranom mapom tastera za brojne jezike. Program i njegovi prateći alati , uniprint i uniconv, su obavezni alati u vašem Unicode skupu alata.

Vim

Mnogi profesionalni programeri su već zavisni od upotrebe vi kao svog izabranod editora, tako da je lepo znati da popularna primena vim u potpunosti podržava UTF-8 (Slika. 5).
VIM
Slika. 5. Vim pokrenut u mlterm-u sa isticanjem sintakse boja za C/C++. U kodu prikazanom ovde, statički C-stil nizova direktno sadrži UTF-8 šifrirane podatke lokalnog standarda.

Postoje dva tastera da se režim rada konzolevim napravi korisnim za višejezični rad. Prvo, morate da pokrenete vim iu UTF-8- osposobljenom terminal emulatoru kao što je mlterm. Drugo, trebaće vam mapa tastera za unos jezika po vašem izboru. Za razliku od Yudit,brojne standardne mape tastera izgleda da nisu distribuirane uz vim.

Da biste odredili koje su mape tastatura raspoložive, unesite sledeću komandu:

:echo globpath(&rtp, "keymap/*.vim")

Ovo vam govori lokaciju globalno dostupnih mapa tastera, a takođe i putanju gde ćete želeti da smestite mapu tastera koju ste kreirali, ako hoćete da je načinite dostupnom svim korisnicima.

Podešavanje i upotreba mape tastera za vim nije zahtevna. Izvod iz tajlandske mape tastera je prikazan dole. Konvencije za imenovanje fajla na mapi tastera su:

<language>_<encoding>.vim

Dakle, u ovom slučaju, fajl će se zvati:

thai_utf-8.vim

Evo jednog izvoda iz fajla:

Primer vim mape tastera: Izvod iz thai_utf-8.vim je prikazan dole.
" Vim Keymap file for UTF-8 Thai
" Maintainer: Edward H. Trager <ehtrager@umich.edu>
" Last Updated: 2003-04-08.ET
"
" This mapping adheres to the Thai standard TIS820-2538 keyboard
" layout.

let b:keymap_name = "thai"

loadkeymap

~ ๛
! ๅ
@ ๑
# ๒
$ ๓
% ๔
^ <char-0x0E39> " THAI CHARACTER SARA UU
& <char-0x0E4E> " THAI CHARACTER YAMAKKAN
. .
. .
. .

Linija za komentare na mapi tastera počinje znacima navoda, '"'. Linija, "let b:keymap_name = "thai"" obezbeđuje kratko ime za mapu, tako da možemo da izdamo komandu u vim da bi upotrebili mapu ovako:

:set keymap=thai

Sve u ovoj liniji prati reč "loadkeymap"koja predstavlja mapiranje tastera. Jedan ili više tastera mogu biti navedeni u prvoj koloni, kao tasteri za kucanje. Jedan ili više bajtova mogu biti navedeni kao rezultat u drugoj koloni.

Na primer, kao što je prikazano na izvodu gore, prvih šest ključnih mapiranja na početku, u gornjem redu QWERTY tastature direktno su mapirani u tajlandske karaktere, koji su serijalizovani kao UTF-8. Svaki od ovih karaktera obično zahteva tri bajta, ali oni se pojavljuju kao tajlandski karakteri u vašem web pretraživaču. Najbrži način da se stvori mapa tastera kao što je ova, je da se koristi Yudit, što sam ja upravo uradio.

Naredne dve stavke pokazuju alternativni pristup: ovde su unicode kodne tačke unete direktno u heksadecimale, koje mogu biti otkucane prostom upotrebom ASCII editora koji želite. Unicode kodne tačke za bilo kakav zapis mogu da se nađu online, u prenosivim formatima dokumenata (PDF) sa www.unicode.org/charts/.

Pošto ste napravili mapu tastature i smestili je na odgovarajuću lokaciju (na primer, /usr/share/vim/current/keymap), jednostavno otkucajte iz vim-a:

:set keymap=thai

da omogućite ovu alternativnu mapu tastera. Kada ste u režimu unosa, možete da se prebacujete između standardnih i alternativnih mapa tastera upotrebom CTRL-^.

Konačno, samo da vam dam ideju o tome šta još možete da uradite, ovde je kratak izvod iz prilagođenih fajlova mapa tastera koji koriste pinyin romanizaciju za određivanje nekih kineskih karaktera. Ovaj primer jednostavno pokazuje kako serija više otkucaja na tastaturi može biti mapirana u unicode karaktere:

Još jedan primer vim mape tastera: Izvod iz posebne mape koja koristi proveru unosa nekih kineskih karaktera:
" Custom pinyin keymap
" Maintainer: Edward H. Trager <ehtrager@umich.edu>
" Last Updated: 2003-04-08.ET
"
let b:keymap_name = "special"

loadkeymap

ri 日
shui 水
ni 你
ren 人
xin 心
zhu 竹

. .
. .
. .

Imajte na umu da možete da odredite mapu tastera za upotrebu na vašem.vimrc fajlu, kao što to pokazuje sledeći primer.

Primer ~/.vimrc file:
Ovaj .vimrc fajl navodi alternativnu mapu tastera na koju se možete prebaciti upotrebom komande CTRL-^. Ostale linije postavljaju vim za C/C++ sintaksu označavanja boja i automatsko ulegnuće.
set nocp incsearch
set cinwords=if,else,while,do,for,switch,case
set cindent
set nowrap
set keymap=thai
syntax on

Za kompletan način upotrebe Unicode-a i mape tastera, iz vim ukucajte:

:help mbyte.txt
:help mbyte-keymap

Mined

Mined je režim konzole unicode editora sa intuitivnim korisničkim interfejsom, padajućim menijem, proširenom Unicode podrškom, koja uključuje duplu širinu i kombinovanje karaktera, arapsko pridruživanje ligaturom, mapiranje tastera, označavanje sintaksi, i mnoge druge karakteristike. Mined može biti korišćen na UNIX i DOS/Windows platformama,

Mined
Slika . 6. Mined je još jedan unicode editor.

Ja lično ne koristim mined, ali izgleda da ima dobar set karakteristika.

Za detaljniji pregled Unicode editora, pogledajte Alan Wood-ov rezime Unicode and Multilingual Editors and Word Processors for Unix and Linux.

Ulazne metode za kineski, japanski, korejski i druge jezike

Mape tastatura nisu dovoljne za kucanje kineskog, japanskog i korejskog ( obično nazvani kao "CJK") i drugih jezika, kakav je tibetanski. Ovi jezici zahtevaju sofisticirane metode unosa (IMs) koje funkcionišu kroz XIM. Mike Fabian daje odličan set stranica, u kojima opisuje kako postaviti CJK computing environment u vašem Linux polju, u kojem daje opis i detalje podešavanja za brojne IM motore. Jedan od najboljih Open Source IM motora je Smart Common Input Method (SCIM) , koji dole opisujem.

SCIM (智能通用输入法平台)

SCIM logo James Su-ov Smart Common Input Method (SCIM) je IM platforma Unicode-a napisana u C++. Za korisnike, SCIM je odličan izbor, jer je jednostavan za podešavanje i koristi u UTF-8, ili nasleđeni lokalni standard. Takođe je pogodan za programere, jer apstrahuje metode unosa interfejsa u set prostih, nezavisnih klasa, tako da lako mogu da napišu svoj metod unosa u svega nekoliko kodnih linija.
Google search for 'Olympics'
Slika . 7. SCIM e odlična IM aplikacija, jer podržava brojne CJK metode unosa, uključujući 自然码zìránmǎ koji je prikazan za unos na kineskom, za Google pretragu u Mozilla..

SCIM trenutno obezbeđuje tabele unosa za sledeće metode:

  • Japanese hiragana
  • Japanese katakana
  • Korean hangul 한글입력
  • Korean hanja 漢字입력
  • Chinese Cangjie 倉頡
  • Cantonese guangdong pinyin 廣東拼音
  • Chinese erbi 二筆
  • Chinese jyutping 粵語拼音
  • Chinese simplex 簡易
  • Chinese wubi 五筆字型
  • Chinese zìránmǎ 自然碼
  • Chinese intelligent pinyin 智能拼音

Od brojnih kineskih metoda unosa na raspolaganju, intelligent pinyin i ziranma su najlakši za upotrebu. Raspored na tastaturi, i opis kako koristiti znake 自然碼 zìránmǎ, ili 自然双拼 zìrán shuāngpīn, možete pronaći ovde. Imajte na umu da je metod intelligent pinyin zatvoreni izvorni softver, ali možete da instalirate binarnu RPM verziju za upotrebu sa SCIM besplatno. Ako se kompajlira iz izvora, mislim da ćete metode 自然碼 zìránmǎ smatrati vrlo zadovoljavajućim.

SCIM zahteva atk-1.0+, glib 2.0+, pango-1.0+, i gtk+2.0+. Ove biblioteke će biti prisutne u novijim Linux distribucijama, ili možete da ih preuzmete sa GTK+ sajta ovde.

Kada izvršite kompajliranje SCIM, trebaćete da dodate sledeće linije vašem .xinitrc fajlu da bi sačuvali SCIM početak kad god pokrenete X windows:

Primer linija koje treba dodati ~/.xinitrc fajlu za pokretanje SCIM-a:
Prva linija počinje scim kao daemon. Druga linija govori X da koristi SCIM kao serverski metod unosa.
scim -d
export XMODIFIERS=@im=SCIM

Ako koristite stariju verziju SCIM (pre verzije 0.8.0) i još ne pokrećete kineske, japanske ili korejske lokalne standarde,onda će vam trebati set LC_CTYPE varijabila okruženja, koje se odnose na kineski, japanski ili korejski lokalni standard na vašem ~/.profile file. Imajte na umu da to možete da uradite, čak i ako je vaše LANG okruženje podešeno za drugi (UTF-8) lokalni standard, kao što je engleski, kako je prikazano u primeru ispod. Verzije SCIM posle v. 0.8.0 će raditi dobro sa LANG podešenim na bilo koji UTF-8 lokalni standard.

Primer linija koje treba dodati ~/.profile fajlu za pokretanje SCIM-a:
Verzije SCIM pre v. 0.8.0 trebalo bi da rade u CJK okruženju. Međutim, SCIM će raditi pod drugim primarnim jezičkim okruženjem, kakav je UTF-8 za engleski, podešavanjem LANG i LC_TYPE varijabila okruženja na način prikazan ovde. Ovaj primer podrazumeva da koristite BASH osnovu. Sa verzijama SCIM posle v. 0.8.0, bilo koji UTF-8 lokalni standard će raditi, i nećete morati da postavite LC_CTYPE posebno.
export LANG=en_US.UTF-8
export LC_CTYPE=zh_TW.UTF-8

Email Agenti

Mutt

Mutt logo Mutt je odličan email agent sa dobrom UTF-8 Unicode podrškom. Mutt se takođe može široko prilagoditi vašim individualnim potrebama. Na primer, vrlo jednostavno prilagođavanje je da primate emalove od određenih ljudi, domena, ili mailing lista , označavanjem specijalnim bojama u indeksu za poruke. Takav primer je prikazan na slici dole levo (Slika 8). Još jedna karakteristika koja mi se sviđa ukod Mutt-a, je što možete da koristite bilo koji editor da sastavite emailove. Ja imam Mutt podešen za upotrebu Yudit za sastavljanje mailova u UTF-8. Mnogo češći izbor je upotreba editora Vim Kad upotrebite Mutt nekoliko puta i počenete da se igrate sa različitim konfiguracionim opcijama, nikada se više nećete vratiti na upotrebu drugog email agenta.

Mutt index in Konsole Mutt displaying a UTF-8-encoded email
Fig. 8. Mutt je odličan email agent. Ako ste koristili Mutt nekoliko puta i prilagodili ga svom ukusu, nikada nećete želeti da koristite bilo koji drugi email agent! Leva strana: Poruka indeksa pokazuje Mutt sa prilagođenim bojama koje rade na terminalu KDE konsole Desna strana: Mutt prikazuje UTF-8 kodiranu poruku u mlterm.

Alati

Ovaj odeljak navodi konverzije i alate za štampu.

Alati za konverziju

Za konverziju jednog kodiranog fajla u drugi, postoje tri alata vredna pomena:

  • iconv koji je deo GNU libc (i zato je verovatno već u vašem sistemu).
  • uniconv koji se distribuira sa Yudit
  • convmv.

    Upotreba ovih alata je prikazana dole.

    iconv

    GNU iconv poseduje veliki broj kodiranja, iako autori upozoravaju da "to ne znači da sve kombinacije ovih imena mogu da se koriste za FROM i TO parametre komandne linije ". Da biste dobili spisak svih poznatih kodiranja, ukucajte:

    iconv -l

    Upotreba je kako sledi:

    iconv -f <from_encoding> -t <to_encoding> [-o <output_file>] <input_file>
    % iconv -f ISO8859-8 -t UTF-8 -o myfile.utf8 myfile.input

    uniconv

    Uniconv se distribuira sa Yudit i podrazumeva koristan niz internih i eksternih kodiranja. Za kompletan spisak, ukucajte: uniconv --help

    uniconv --help

    Upotreba je prikazana dole:

    uniconv -decode <from_encoding> -encode <to_encoding> -in <input_file> -out <output_file>
    % uniconv -decode java -encode utf-8 -in myfile.input -out myfile.utf8

    piconv

    Perl 5.8+ se distribuira sa piconv. Upotreba je gotovo identična sa GNU iconv (i na neki način način mnogo inteligentnija). Man stranica za piconv obezbeđuje detalje . piconv -l daje spisak za više od 120 priznatih kodiranja, od kojih su neki pseudonimi drugih.

    convmv

    Convmv je alat za konverziju imena fajlova u stablu direktorijuma iz jednog kodiranja u drugo (na primer, iz jednog zastarelog kodiranja u kodiranje UTF-8) . Konvertuju se samo nazivi fajlova; sadržaj fajla ostaje nepromenjen. Man stranicu za convmv možete naći ovde.

    Alati za štampanje

    Za štampanje Unicode teksta ili podataka, postoji uniprint koji se distribuira sa paketom Yudit Drugi, manje poznat se zove paps. I Ako ste programer, pogledajte i LASi, C++ biblioteku zasnovanu na protoku štampanja Postscript-a..

    Uniprint

    Uniprint se distribuira sa Yudit. Dok ga Yudit koristi za štampanje, on može direktno biti korišćen iz komandne linije. Upotrebu možete dobiti ako ukucate:

    uniprint --help

    Tipična upotreba je prikazana ovde:

    uniprint -hsize <header_font_size> -font <truetype_font_to_use> -in <input_file> -out <output_file>
    % uniprint -hsize 0 -font /usr/local/fonts/cyberbit/cyberbit.ttf -in myfile.utf8 -out myfile.ps

    Paps

    Paps je UTF-8-to-Postscript konverter dostupan na http://imagic.weizmann.ac.il/~dov/freesw/paps/. Paps ima opcije za položeno štampanje , i za štampanje više kolona na jednoj strani, što bi moglo da bude veoma korisno.

    Pogledajte takođe LASi Postscript printing library diskusiju niže.

    Fontovi

    Zbog brzog sazrevanja Open Source softvera poslednjih nekoliko godina, sada je moguće doživeti Linux desktop iskustvo potpuno, sa visokokvalitetnim fontovima umekšanih ivica, konkurišući onome što je već dostižno na Mac-u ili Windows PC-u. Unicode fontovi su prirodno važan deo stvaranja internacionalizovanog, višejezičkog desktopa. Da biste napravili takvo okruženje, potrebno je da znate:

    • Kako instalirati fontove, naročito Unicode TrueType fontove, za upotrebu X Windows.
    • Neke sugestije kako instalirati Unicode fontove.

    Ove teme su pokrivene niže.

    Instalacija fonta iz KDE

    Ako pokrećete KDE na skorijoj Linux distribuciji, najlakši način instalacije je da koristite KDE -ov grafički instalacioni program za font, koji je deo Control Center. Iz menija KDE označite Control Center, System Administration, a zatim Font Installer. Da biste instalirali fontove za svakoga, kliknite na Adminstrative Mode i unesite root lozinku. Zatim jednostavno kliknite dugme Add i dodajte fontove koje želite(Slika. 9). Kada to završite, označite Apply. KDE će pokrenuti sve neophodna scenarija da ažurira konfiguraciju fonta na vašoj mašini .

    KDE Font Installer
    Slika . 9. KDE's Font Installer molakšava da instalirate Unicode TrueType fontove u Linux.

    Ručna instalacija fonta

    Savremene Linux distribucije koriste sistem fontconfig za upravljanje fontovima. Fontconfig povremeno skenira font direktorijume koji su navedeni u globalnim /etc/fonts/fonts.conf i korisničko-specifičnim ~/.fonts.conf .konfiguracionim fajlovima. Sve što korisnici treba da urade je da stave nove fajlove fonta u neki poznati direktorijum, i oni će automatski postati dostupni za upotrebu. Mnogo je lakše nego nekada!

    Na primer, na SuSE Linux i mnogim drugim sistemima koji koriste X windowing system, TrueType i OpenType fontovi se čuvaju u /usr/X11R6/lib/X11/fonts/truetype. Pošto je ova putanja dugačka, i ne želim da je se prisećam, na sistemima na kojima ja upravljam koristim simbolički link da olakšam sebi život:

    ~> su
       password: ******
    ~> cd /
    ~> ln -s /usr/X11R6/lib/X11/fonts/truetype/ /fonts
    

    Sada instaliranje novih fontova za sistem široke upotrebe home direktorijuma, nije ništa više od:

     ~> su -c "mv my_new_font.otf /fonts"
       password: ****** 
    

    A instalacija fonta za ličnu upotrebu je samo:

     ~> mv my_new_font.otf .fonts
    

    Unicode Fontovi

    Unicode Font Guide For Free/Libre Open Source Operating Systems je sažet vodič za besplatno i legalno preuzimanje vektorskih fontova (TrueType and OpenType) koji odgovaraju upotrebi Open Source operativnih sistema. Vodič za fontove daje linkove za izbor kvalitetnih Unicode fontova za većinu svetskih skrpti kodiranih u Unicode-u.

    Za obuhvatniji tretman fontova,uključujući mnoge komercijalne fontove koji nisu uključeni u Unicode vodič za fontove, pomenut iznad, pogledajte Alan Wood's font pages.

    Font Editori

    Pfaedit

    Pfaedit je Open Source font editor za Linux/UNIX koji omogućava da kreirate sopstveni Postscript, TrueType, OpenType, cid-keyed i bitmap (bdf) fontove. Možete takođe da uredite postojeće fajlove fontova u različitim formatima.

    Čak i ako ne planirate da kreirate sopstveni font, Pfaedit je krajnje koristan za određivanje koji su Unicode blokovi, a samim tim i skripta, pokriveni u Unicode fontom. Takođe je nezamenjiv za pregled formi glifova pre instaliranja fonta. Pregled fonta obezbeđen u KDEinstalacionom programu za fontove, i ostalim programima su obično potpuno nedekvatni, jer su uopšteno prikazani samo ASCII ili latinski blokovi. Za nelatinične zapise, Pfaedit je mnogo korisniji program za pregled fonta. Za kratak pregled svih glifova u fontu, označite View --> Compacted View. Podrazumevani Encoded View će prikazati polje svih Unicode kodnih tačaka, od kojih će mnoge biti nedefinisane u datom fontu.

    PFAEdit Font Editor
    Slika . 10. Pfaedit je Open Source font editor za Linux.

    Office programski paketi

    Open Office

    Open Office logo Skorije izdataOpen Office verzija 1.1 ima odličnu internacionalizaciju karakteristika , uključujući i podršku složenih tekstualnih rasporeda (CTL), s desna na levo (RTL), i dvosmernu algoritamsku (BiDi) podršku. Open Office takođe obezbeđuje odličnu podršku za formate Microsoft documenata, izvoz u PDF, XML podršku, i mnoge druge karakteristike. Open Office lokalizacija postoji za mnoge jezike i lokalne standarde, uključujući češki, danski, nemački, španski, francuski, indijski, italijanski, japanski, holandski, portugalski (Brazil), rumunski, finski, tajlandski i turski.

    Programiranje i podaci resursa

    ICU

    IBM ICU logo IBM-ova Open Source International Components for Unicode biblioteka obezbeđuje robusne Unicode usluge, uključujići rukovanje tekstom, Unicode regularnu analizu izraza, jezički osetljiva uparivanja, i oblikovanje pravila za preko 200 lokalnih standarda. Biblioteke su dostupne u C, C++, i Java. Čak i ako ne planiranje da koristite ICU biblioteke direktno, lokalni podaci su sami po sebi krajnje koristan resurs. Ovo je neverovatan resurs koji ne treba zanemariti.

    Pango

    Pango obezbeđuje Open Source biblioteku za raspored i postavku internacionalnog teksta. Pango je započeo Owen Taylor iz Redhat-a da bi obezbedio višejezične rasporede zasnovane na Unicode uslugama za GTK+ i GNOME. Pango, međutim ne zavisi od GTK+ ili GNOME, i može biti korišćen i u drugim projektima.

    FreeType

    FreeType 2 je open source font motor. Obezbeđuje jednostavan API za korišćenje pristupa sadržaju fonta, nezavisno od formata fajla. Klijentski programi mogu pristupiti obrisima glif podataka, ili iskoristiti Free Type raster da se dobije monohromna, ili bitmapa sa ublaženim ivicama.

    Izuzetno zanimljiva karakteristika biblioteke FreeeType 2, je da ona sadrži "autohinter" kako bi se izbeglo kršenje tri patenta koje poseduje Apple Computer, Inc. Ako ste platili licencu za Apple, možete da kompajlirate Free Type, pa će biti korišćen patentiran font za tehnologiju korekcije debljine slova. Srećom za Linux, kao i za sve ostale koji ne želi da kupe licencu od kompanije Apple, Free Type može takođe da bude kompajliran da koristi "autohinter", koji je posebno izrađen da izbegne kršenje patenata, dok se još uvek prave bitmape glifova u maloj veličini piksela.

    LASi C++ Postscript Printing biblioteka

    LASi je nova Postscript printing biblioteka koju je prvobitno napravio moj prijatelj,, Larry Siden i sada se održava ovde, i na eyegene web sajtu. Koristi Pango i Freetype2 za Unicode raspored teksta i postavku glifova.

    Prvenstveno je dizajniran za upotrebu u naučnim i drugim programima (kakav je moj Madeline) koji zahteva mogućnost da štampa naučne i druge nelatinske simbole i zapise u Postscript dokumentima , a da ne bude povezan sa velikom GUI aplikacionom biliotekom kakve su QT, KDE, ili GTK+/Gnome.

    Kao što je prikazano na slici desno, i na dole navedenom primeru LASi obezbeđuje jednostavan API zasnovan na protoku C++ koji izoluje programera od složenih detalja za štampanje Unicode teksta, uključujući zapise s desna na levo (hebrejski, arapski) i one koji imaju složena pravila oblikovanja (arapski, tajlandski devenagari). Pored svetskih skripti, korisnici, naravno, mogu da iskoriste prednost brojnih naučnih i matematičkih simbola koji su definisani u Unicode-u, prostim dodavanjem UTF-8-kodiranih nizova prikazanoj () metodi. show() .

    Extended LASi Example
    Slika . 11. čini da lako inkorporirate tekst iz Unicode-a u vaša PostScript dokumenta. Izvorni kod upotrebljen da generiše karakteristike vrlo slične ovima, može se videti odve.

    Primer LASi Postscript printing biblioteke
    #include <iostream>
    #include <stdexcept>
    #include <psDoc.h>
    
    using namespace LASi;
    using namespace std;
    
    int main(const int argc, char* const argv[])
    {
      try {
        PostscriptDocument doc;
    
        doc.osBody() << "100 300 translate\n" ;
        doc.osBody() << setFont("sans") << setFontSize(72) << show("foobar");
    
        doc.osBody() << "10 0 translate\n" ;
        doc.osBody() << setFont("sans") << setFontSize(72) << show("שלום");//shalom
    
        cerr << "doc.write(cout);\n";
        doc.write(cout);
      } catch (runtime_error& e) {
        cerr << e.what() << endl;
        return 1;
      }
    
      return 0;
    }
          
    Output: Sample postscript rendered by LASi library

    Sada možete da saznate više o LASi i da dobijete savremenije verzije biblioteka sa http://unifont.org/lasi/.

    Unicode Compliant!
Published (Last edited): 06-03-2013 , source: http://unifont.org/unicodeprimer/