Unicode HOWTO <author>Avtor: Bruno Haible, <htmlurl url="mailto:haible@clisp.cons.org" name="<haible@clisp.cons.org>">; prevedel: Jernej Kovačič <htmlurl url="mailto:jkovacic@email.si" name="<jkovacic@email.si>"> <date>v0.18, 4. avgust 2000, prevod 28. marec 2001 <abstract> Ta spis opisuje, kako nastaviti sistem Linux, da bo kodiral besedila po standardu UTF-8. To še vedno ni dokončna različica spisa. Avtor bo vesel vsakega dodatnega nasveta, popravka, kazalca ali povezave URL. </abstract> <toc> <sect>Uvod <p> <sect1>Zakaj Unicode? <p> Ljudje v različnih deželah zapisujejo svojo materinščino z različnimi črkopisi. Dandanes je večina aplikacij, skupaj s sistemi za elektronsko pošto in spletnimi brskalniki, čisto 8-bitna, kar pomeni, da lahko pravilno prikažejo besedilo, če je napisano v enem izmed 8-bitnih naborov znakov, npr. ISO-8859-1 ali ISO-8859-2. Po svetu je v rabi precej več kot 256 znakov, pomislite samo na cirilico, hebrejščino, arabščino, kitajščino, japonščino, korejščino in tajščino, še vedno pa tu in tam uvedejo tudi kak nov znak. Uporabnik lahko naleti na naslednje težave: <itemize> <item> Nemogoče je shraniti besedilo z znaki iz različnih naborov znakov. Na primer v publikaciji v nemščini ali francoščini (ali slovenščini, op. pr.) je mogoče citirati članek v ruščini, če uporabljate TeX, xdvi in postscript, ne morete pa tega storiti v čistem besedilu. <item> Dokler je vsak dokument napisan v svojem naboru znakov in ta nabor ni prepoznan avtomatsko, so ročne nastavitve neizogibne. Če si npr. želite ogledati domačo stran distribucije XTeamLinux na naslovu <htmlurl url="http://www.xteamlinux.com.cn/" name="http://www.xteamlinux.com.cn/">, morate nastaviti Netscape na kodno stran GB2312. <item> Uvajajo se novi simboli (npr. za evro). ISO je uvedel nov standard ISO-8859-15, ki se večinoma ujema z ISO-8859-1, le da so odstranjeni nekateri redko rabljeni znaki (stari znaki za valute) in je dodan znak za evro. Če uporabniki sprejmejo ta standard, imajo na disku dokumente v različnih naborih znakov in se morajo vsak dan ubadati s tem. Računalniki pa bi morali stvari poenostaviti, ne še bolj zaplesti. </itemize> Rešitev te težave je sprejetje po vsem svetu uporabnega nabora znakov. Tak nabor znakov se imenuje Unicode (<htmlurl url="http://www.unicode.org/" name="http://www.unicode.org/">). Če vas zanimajo podrobnosti o Unicode, vtipkajte `<tt>man 7 unicode</tt>' (to je priročniška stran, zajeta v paketu man-pages-1.20). <sect1>Kodiranja po Unicode <p> Unicode resda lahko odpravi probleme različnih kodnih strani, prinese pa tehnično težavo: kako zapisati znake Unicode z 8-bitnimi zlogi? 8-bitni zlog je pri večini računalnikov najmanjša naslovljiva enota in tudi osnovna enota pri omrežnih povezavah prek protokola TCP/IP. Uporaba enega zloga za predstavitev enega znaka je zgodovinsko naključje, predvsem posledica dejstva, da se je razvoj računalništva začel v Evropi in ZDA, kjer je 96 znakov zadostovalo za dolgo vrsto let. V osnovi poznamo štiri načine kodiranja znakov Unicode v zloge: <descrip> <tag>UTF-8</tag> 128 znakov se kodira z uporabo enega zloga (znaki ASCII). 1920 znakov se kodira z uporabo dveh zlogov (rimski, grški, cirilični, koptski, armenski, hebrejski in arabski znaki). 63488 znakov se kodira z uporabo treh znakov (med drugim kitajski in japonski znaki). Preostalih 2147418112 znakov (ki še niso povsem določeni) se lahko kodira z uporabo 4, 5 ali 6 zlogov. Če vas podrobneje zanima UTF-8, vtipkajte `<tt>man 7 utf-8</tt>' (priročniška stran, ki je del paketa ldpman-1.20). <tag>UCS-2</tag> Vsak znak je predstavljen z dvema zlogoma. Tako kodiranje lahko predstavi le prvih 65536 znakov iz Unicode. <tag>UTF-16</tag> To je razširitev UCS-2, ki lahko predstavi 1112064 znakov iz Unicode. Prvih 65536 znakov je predstavljenih z dvema zlogoma, drugi s štirimi. <tag>UCS-4</tag> Vsak znak je predstavljen s štirimi zlogi. </descrip> Prostorske zahteve za kodiranje besedil v primerjavi s trenutno rabljenimi (8-bitni za evropske jezike, več za kitajščino/japonščino/korejščino) so razvidne iz spodnjega opisa. Pri tem gre za porabo prostora na disku in hitrost prenašanja po omrežju, če ni uporabljena nobena oblika stiskanja. <descrip> <tag>UTF-8</tag> Nobene spremembe za US ASCII, samo nekaj odstotkov več za ISO-8859-1, 50 % več za kitajske, japonske ali korejske znake, 100 % več za grške in cirilične znake. <tag>UCS-2 in UTF-16</tag> Nobene spremembe za kitajske, japonske ali korejske znake. 100 % več za US ASCII, ISO-8859-1, ISO-8859-2, grške in cirilične znake. <tag>UCS-4</tag> 100 % več za kitajske, japonske ali korejske znake. 300 % več za US ASCII, ISO-8859-1, ISO-8859-2, grške in cirilične znake. </descrip> Ker uporaba UCS-2, UTF-16 in UCS-4 "prizadene" evropske in severnoameriške uporabnike, se ne zdi verjetno, da bi bili omenjeni načini kodiranja kdaj sprejeti za široko rabo. Microsoftov programerski vmesnik Win32 podpira UCS-2 vsaj od leta 1995, vendar tako kodiranje še ni bilo splošno sprejeto, saj npr. na Japonskem še vedno prevladuje SJIS. Po drugi strani se zdi, da ima UTF-8 svetlejšo prihodnost, kar zadeva široko rabo, ker ne "kaznuje" evropskih in severnoameriških uporabnikov in ker precej programov za urejanje besedil sploh ne bo treba zamenjati zaradi podpore UTF-8. V nadaljevanju bomo opisali, kako si nastavite sistem Linux, da bo besedila kodiral po UTF-8. <sect2>Opombe za programerje v C/C++ <p> Microsoftov pristop Win32 razvijalcem olajša izdelovanje različic programov, ki podpirajo Unicode. Na začetku programa je treba vnesti <tt>#define UNICODE</tt> in potem tako dolgo spreminjati `<tt>char</tt>' v `<tt>TCHAR</tt>', dokler se program ne prevede brez opozoril. Težava je v tem, da na koncu dobite dve različici programa: ena "razume" besedilo, kodirano po UCS-2, ne "razume" pa 8-bitnih kodiranj, druga pa "razume" samo stara 8-bitna kodiranja. Še več, pri UCS-2 in UCS-4 nastane še problem vrstnega reda zlogov. Register naborov znakov IANA na naslovu <htmlurl url="http://www.isi.edu/in-notes/iana/assignments/character-sets" name="http://www.isi.edu/in-notes/iana/assignments/character-sets"> pravi o ISO-10646-UCS-2: "zlogi morajo biti podani v omrežnem vrstnem redu: standard tega namreč ne določa". Omrežni vrstni red je "big endian" (najprej zlogi z večjo utežjo, pri arhitekturah, ki temeljijo na Intelu, se uporablja ravno nasproten "little endian", op. pr.). RFC 2152 je še jasnejši: "ISO/IEC 10646-1:1993(E) določa, da je oblika UCS-2 predstavljena v 8-bitnih zlogih tako, da najprej nastopijo zlogi z večjo utežjo". Microsoft pa po drugi strani v svojih razvojnih orodjih C/C++ priporoča uporabo strojno odvisnega vrstnega reda zlogov (npr. "little endian" pri procesorjih x86) in/ali oznako za vrstni red zlogov na začetku dokumenta ali neke vrste statistično hevristiko(!). Pristop UTF-8 po drugi strani ohrani `<tt>char*</tt>' kot standarden tip za nize v jeziku C. Rezultat tega je, da bo vaš program obravnaval besedilo US ASCII ne glede na vse spremenljivke okolja in bo prepoznal besedilo, kodirano tako po ISO 8859-1 ali UTF-8, če je spremenljivka okolja LANG nastavljena pravilno. <sect1>Viri dodatnih informacij <p> Markus Kuhn redno vzdržuje seznam virov dodatnih informacij: <itemize> <item> <htmlurl url="http://www.cl.cam.ac.uk/~mgk25/unicode.html" name="http://www.cl.cam.ac.uk/~mgk25/unicode.html"> <item> <htmlurl url="http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html" name="http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html"> </itemize> Roman Czyborra ima stran s pregledom programov, ki podpirajo Unicode, UTF-8: <htmlurl url="http://czyborra.com/utf/#UTF-8" name="http://czyborra.com/utf/#UTF-8"> Zgledi datotek, kodiranih po UTF-8: <itemize> <item> V paketu ucs-fonts Markusa Kuhna: <htmlurl url="http://www.cl.cam.ac.uk/~mgk25/ucs/examples/quickbrown.txt" name="quickbrown.txt">, <htmlurl url="http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt" name="UTF-8-test.txt">, <htmlurl url="http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt" name="UTF-8-demo.txt">. <item> <htmlurl url="ftp://ftp.cs.su.oz.au/gary/x-utf8.html" name="ftp://ftp.cs.su.oz.au/gary/x-utf8.html"> <item> Datoteka <tt>iso10646</tt> v paketu trans-1.1.1 Koste Kostisa <htmlurl url="ftp://ftp.nid.ru/pub/os/unix/misc/trans111.tar.gz" name="ftp://ftp.nid.ru/pub/os/unix/misc/trans111.tar.gz"> <item> <htmlurl url="ftp://ftp.dante.de/pub/tex/info/lwc/apc/utf8.html" name="ftp://ftp.dante.de/pub/tex/info/lwc/apc/utf8.html"> <item> <htmlurl url="http://www.cogsci.ed.ac.uk/~richard/unicode-sample.html" name="http://www.cogsci.ed.ac.uk/~richard/unicode-sample.html"> </itemize> <sect>Nastavitev prikaza <p> Predvidevamo, da ste že prilagodili svojo konzolo in nastavili X11 na svojo tipkovnico in locale. Ta postopek je razložen v spisu Danish/International HOWTO, pa tudi v drugih nacionalnih spisih: Finnish, French, German, Italian, Polish, Spanish, Cyrillic, Hebrew, Chinese, Thai, Esperanto in tudi Slovenian HOWTO (avtor je Primož Peterlin). Vendar vas prosimo, da ne upoštevate nasveta v Thai HOWTO, kjer se pretvarjate, da uporabljate znake iz nabora ISO-8859-1 (U0000 - U00FF), medtem ko dejansko vtipkavate tajske znake (U0E01 - U0E5B). Če boste upoštevali te napotke, boste imeli ob prehodu na Unicode samo težave. <sect1>Linux konzola <p> O konzoli na tem mestu ne bomo veliko govorili, saj avtor na tistih računalnikih, ki nimajo nameščenega xdm, v konzoli vtipka le svoje uporabniško ime, geslo in "xinit". Vseeno, paketa kbd-0.99 (<htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz">) in močno razširjena različica paketa console-tools-0.2.3 (<htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-tools-0.2.3.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-tools-0.2.3.tar.gz">) imata v imeniku kbd-0.99/src/ (ali console-tools-0.2.3/screenfonttools/) dva programa: `unicode_start' in `unicode_stop'. Ko poženete `unicode_start', se izhod konzole na zaslon interpretira, kot da je kodiran po UTF-8. Tudi vhod s tipkovnice se obravnava kot Unicode (oglejte si "man kbd_mode"). V tem načinu so znaki iz Unicode vtipkani kot Alt-x1, ..., Alt-xn, (x1 - xn so tipke na številskem delu tipkovnice) oddajajo kodirani po UTF-8. Če ima vaša tipkovnica, natančneje vaša običajna razporeditev tipk, tipke za ne-ASCII znake (npr. nemški preglasi ali slovenski šumniki), za katere bi radi, da sledijo stanju tipke CapsLock, boste morali uporabiti popravek za jedro <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/linux-2.2.9-keyboard.diff" name="linux-2.2.9-keyboard.diff"> ali <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/linux-2.3.12-keyboard.diff" name="linux-2.3.12-keyboard.diff">. Verjetno boste želeli videti znake iz različnih pisav na istem zaslonu. Za to boste potrebovali konzolno pisavo Unicode. V paketih <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz"> in <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-data-1999.08.29.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-data-1999.08.29.tar.gz"> je pisava LatArCyrHeb-{08,14,16,19}.psf, ki pokriva latinico, cirilico, hebrejsko in arabsko pisavo. V enem kosu zajema standarde ISO 8859 s končnicami 1, 2, 3, 4, 5, 6, 8, 9 in 10. Pisavo namestite tako, da datoteko prenesete v imenik /usr/lib/kbd/consolefonts/ in izvedete "/usr/bin/setfont /usr/lib/kbd/consolefonts/LatArCyrHeb-14.psf". Če želite, da bo "rezanje in lepljenje" (angl. cut & paste) delovalo tudi v konzoli s podporo UTF-8, boste potrebovali popravek <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/linux-2.3.12-console.diff" name="linux-2.3.12-console.diff">, katerega avtorja sta Edmund Thomas Grimley Evans in Stanislav Voronyi. Aprila 2000 je Edmund Thomas Grimley Evans (<htmlurl url="mailto:edmundo@rano.org" name="edmundo@rano.org">) izdelal terminalski posnemovalnik konzole UTF-8. Uporablja pisave Unicode in se zanaša na Linuxov pomnilnik za prikaz na zaslonu (angl. frame buffer). <sect1>Tuje pisave za X11 <p> Ne oklevajte z namestitvijo ciriličnih, kitajskih, japonskih idr. pisav. Tudi če niso pisave Unicode, bodo v pomoč pri prikazu dokumentov, kodiranih po Unicode: vsaj Netscape Communicator in Java bosta uporabljala tuje pisave, kadar so na voljo. Pri namestitvi pisav so koristni naslednji programi: <itemize> <item> "mkfontdir <imenik>" pripravi imenik s pisavami, da jih bo strežnik X lahko uporabljal. Ukaz je treba izvesti po namestitvi pisav v imenik. <item> "xset fp+ <imenik>" doda imenik na trenutni seznam imenikov s pisavami za strežnik X. Če želite imenik dodati na seznam za stalno, dodajte vrstico "FontPath" v datoteko /etc/XF86Config, v razdelek "Files". <item> "xset fp rehash" je treba izvesti po klicu ukaza mkfontdir v imeniku, ki je že uvrščen na trenutni seznam imenikov s pisavami strežnika X. <item> "xfontsel" vam omogoča, da brskate po nameščenih pisavah z izbiranjem med različnimi lastnostmi pisav. <item> "xlsfonts -fn <vzorec>" izpiše vse pisave, ki ustrezajo vzorcu za ime pisave. Prikaže tudi različne lastnosti pisav. Predvsem "xlsfonts -ll -fn <pisava>" izpiše lastnosti CHARSET_REGISTRY in CHARSET_ENCODING, ki skupaj določata kodiranje pisave. <item> "xfd -fn <pisava>" prikaže pisave po straneh. </itemize> Spodaj naštete pisave so prosto dostopne (seznam ni popoln): <itemize> <item> Pisave, vsebovane z XFree86, včasih so zapakirane v ločenih paketih. Zgled je distribucija SuSE, v kateri so v osnovnem paketu 'xf86' le pisave 75dpi. Druge pisave so v paketih `xfnt100', `xfntbig', `xfntcyr' in `xfntscl'. <item> Mednarodne pisave za Emacs, (<htmlurl url="ftp://ftp.gnu.org/pub/gnu/intlfonts/intlfonts-1.2.tar.gz" name="ftp://ftp.gnu.org/pub/gnu/intlfonts/intlfonts-1.2.tar.gz">). Kot je bilo že omenjeno, so te pisave koristne tudi, če namesto GNU Emacsa raje uporabljate XEmacs ali če Emacsa celo sploh ne uporabljate. </itemize> <sect1>Pisave Unicode za X11 <p> Programi, v katerih želimo prikazati več pisav hkrati (npr. cirilica in grška pisava), lahko to dosežejo z uporabo različnih pisav za X v različnih delih besedila. To znata Netscape Communicator in Java. Vendar je ta pristop bolj zapleten, ker mora programer namesto `Font' in `XFontStruct' uporabljati `XFontSet', in tudi zato, ker se velikosti pri različnih pisavah lahko nekoliko razlikujejo. <itemize> <item> Markus Kuhn je sestavil 75 dpi pisave z nespremenljivo širino (fixed-width), v katerih so po Unicode kodirane latinica, cirilica, grška, armenska, gruzinska, hebrejska in simbolna pisava. V enem kosu so pokrite pisave po standardih ISO 8859 1, 2, 3, 4, 5, 7, 8, 9, 10, 13, 14 in 15. Ta pisava je potrebna za uporabo xterma v načinu UTF-8. Pisave so na naslovu <htmlurl url="http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz" name="http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz"> <item> Roman Czyborra je sestavil 75 dpi pisavo velikosti 8x16/16x16, ki zajema velikanski del nabora Unicode. Z naslova <htmlurl url="http://czyborra.com/unifont/" name="http://czyborra.com/unifont/"> naložite unifont.hex.gz in hex2bdf. To ni pisava z nespremenljivo širino. Evropski znaki so široki 8 pik, kitajski pa 16 pik. Sledijo navodila za namestitev: <tscreen><verb> $ gunzip unifont.hex.gz $ hex2bdf < unifont.hex > unifont.bdf $ bdftopcf -o unifont.pcf unifont.bdf $ gzip -9 unifont.pcf # cp unifont.pcf.gz /usr/X11R6/lib/X11/fonts/misc # cd /usr/X11R6/lib/X11/fonts/misc # mkfontdir # xset fp rehash </verb></tscreen> <item> Primož Peterlin je sestavil družino pisav ETL, ki zajema latinico, cirilico, grško, armensko, gruzinsko in hebrejsko pisavo. Pisave lahko snamete z naslova <htmlurl url="ftp://ftp.x.org/contrib/fonts/etl-unicode.tar.gz" name="ftp://ftp.x.org/contrib/fonts/etl-unicode.tar.gz">. Za namestitev uporabite program "bdftopcf". <item> Mark Leisher je sestavil proporcionalno pisavo višine 17 pik (12 točk) z imenom ClearlyU, ki zajema latinico, cirilico, grško, armensko, gruzinsko, hebrejsko, tajsko in laoško pisavo. Na voljo je na naslovu <htmlurl url="http://crl.nmsu.edu/~mleisher/cu.html" name="http://crl.nmsu.edu/~mleisher/cu.html">. Navodila za namestitev: <tscreen><verb> $ bdftopcf -o cu12.pcf cu12.bdf $ gzip -9 cu12.pcf # cp cu12.pcf.gz /usr/X11R6/lib/X11/fonts/misc # cd /usr/X11R6/lib/X11/fonts/misc # mkfontdir # xset fp rehash </verb></tscreen> </itemize> <sect1>Unicode pod xtermom <p> Xterm je del X11R6 in XFree86, vendar ga ločeno vzdržuje Tom Dickey (<htmlurl url="http://www.clark.net/pub/dickey/xterm/xterm.html" name="http://www.clark.net/pub/dickey/xterm/xterm.html">). Novejše različice (popravki stopnje 109 ali novejši) podpirajo pretvorbo signalov s tipkovnice v UTF-8, še preden jih posredujejo programu, ki teče v xtermu. Podprt je tudi prikaz znakov Unicode, ki jih ta program vrne v obliki UTF-8. Če želite pognati xterm v načinu UTF-8, morate: <itemize> sneti datoteko xterm.tar.gz z naslova <htmlurl url="http://www.clark.net/pub/dickey/xterm/xterm.tar.gz" name="http://www.clark.net/pub/dickey/xterm/xterm.tar.gz">, <item> ga nastaviti z "./configure --enable-wide-chars ...", ga nato prevesti in namestiti. <item> imeti nameščeno pisavo Unicode z nespremenljivo širino. Za to je primeren ucs-fonts.tar.gz Markusa Kuhna (glej zgoraj). <item> pognati "xterm -u8 -fn '-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1'". Možnost "-u8" vključi Unicode in UTF-8. Pisava, določena z dolgo možnostjo "-fn", je pisava Unicode Markusa Kuhna. Brez te možnosti se uporabi privzeta pisava "fixed", to je pisava po ISO-8859-1 velikosti 6x13. <item> ogledati si vzorčne datoteke iz paketa ucs-fonts Markusa Kuhna: <tscreen><verb> $ cd .../ucs-fonts $ cat quickbrown.txt $ cat utf-8-demo.txt </verb></tscreen> Med drugim bi morali videti grške in ruske znake. <item> dodati vrstice <tscreen><verb> XTerm*utf8: 1 *VT100*font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 </verb></tscreen> v svoj $HOME/.Xdefaults (nastavitve veljajo le za vas), da bo xterm podpiral UTF-8 ob vsakem zagonu. Spreminjanja sistemskih nastavitev v /usr/X11R6/lib/X11/app-defaults/XTerm vam ne priporočamo, ker se bodo zbrisale ob naslednji nadgradnji na novo različico XFree86. </itemize> Dodaten popravek Roberta Bradyja (<htmlurl url="mailto:rwb197@ecs.soton.ac.uk" name="rwb197@ecs.soton.ac.uk">), ki doda podporo znakom dvojne širine (večinoma gre za ideografe CJK) in kombinirane znake, je na voljo na naslovu: <htmlurl url="http://www.zepler.org/~rwb197/xterm/" name="http://www.zepler.org/~rwb197/xterm/">. Temelji na popravku za xterm stopnje 140 (<htmlurl url="http://www.clark.net/pub/dickey/xterm/xterm-140.tgz" name="http://www.clark.net/pub/dickey/xterm/xterm-140.tgz">) in ga je najbolje uporabiti z naslednjimi nastavitvami. <tscreen><verb> *VT100*font: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 *VT100*wideFont: -Daewoo-Gothic-Medium-R-Normal--18-18-100-100-M-180-ISO10646-1 </verb></tscreen> <sect1>Pisave truetype <p> Zgoraj omenjene pisave so nespremenljive širine in jim ni mogoče spreminjati velikosti. V nekaterih aplikacijah, še posebej v tistih za tiskanje, so nujno potrebne pisave z veliko ločljivostjo. Najpomembnejša vrsta pisav z nastavljivo velikostjo in veliko ločljivostjo so pisave truetype. Trenutno jih podpirajo <itemize> XFree86 4.0.1; v razdelek Modules vaše datoteke XF86Config morate dodati vrstico: <tscreen><verb> Load "freetype" </verb></tscreen> ali <tscreen><verb> Load "xtt" </verb></tscreen> <item> Gonilniki za prikaz v drugih operacijskih sistemih. <item> Urejevalnik Yudit (opisan je v nadaljevanju) in njegov gonilnik za tiskanje. </itemize> Nekatere brezplačne pisave truetype, ki pokrivajo precejšen del Unicode, so: <descrip> <tag>Bitstream Cyberbit</tag> Pokriva cirilico, rimsko, grško, hebrejsko, arabsko, kitajsko, korejsko, japonsko in druge pisave skupaj s kombiniranimi diakritičnimi znamenji. Naložite jo lahko z: <htmlurl url="ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP" name="ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP">. <tag>Microsoft Arial</tag> Pokriva cirilico, rimsko, grško, hebrejsko, arabsko, vietnamsko pisavo in nekatera kombinirana diakritična znamenja. Če jih želite pobrati, z internetnimi iskalniki poiščite strežnike FTP z datotekami <tt>arial.ttf</tt>, <tt>ariali.ttf</tt>, <tt>arialbd.ttf</tt> in <tt>arialbi.ttf</tt>. <tag>Lucida Sans Unicode</tag> Pokriva cirilico, rimsko, grško, hebrejsko pisavo in kombinirana diakritična znamenja. Zajeti so v IBM JDK 1.3.0 beta za Linux, lahko pa jih neposredno poberete pod imenoma <tt>LucidaSansRegular.ttf</tt> in <tt>LucidaSansOblique.ttf</tt> z naslova <htmlurl url="ftp://ftp.maths.tcd.ie/Linux/opt/IBMJava2-13/jre/lib/fonts/" name="ftp://ftp.maths.tcd.ie/Linux/opt/IBMJava2-13/jre/lib/fonts/">. </descrip> Naslove za te in druge pisave truetype dobite na seznamu (avtor Christoph Singer) prosto dostopnih pisav Unicode Trutype na naslovu <htmlurl url="http://www.ccss.de/slovo/unifonts.htm" name="http://www.ccss.de/slovo/unifonts.htm">. Pisave truetype lahko pretvorite v nizko ločljive, po velikosti nenastavljive pisave za X11 z uporabo pripomočka ttf2bdf (avtor Mark Leisher). Dobite ga na naslovu <htmlurl url="ftp://crl.nmsu.edu/CLR/multiling/General/ttf2bdf-2.8-LINUX.tar.gz" name="ftp://crl.nmsu.edu/CLR/multiling/General/ttf2bdf-2.8-LINUX.tar.gz">. Podrobnosti o pisavah truetype najdete v spisu Linux TrueType HOWTO na naslovu <htmlurl url="http://www.moisty.org/~brion/linux/TrueType-HOWTO.html" name="http://www.moisty.org/~brion/linux/TrueType-HOWTO.html">. <sect1>Razno <p> Programček, ki ugotovi, ali je konzola ali xterm nastavljen na UTF-8, je na naslovu <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/x-lt-1.18.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/system/keyboards/x-lt-1.18.tar.gz">. V paketu avtorja Ricardasa Cepasa sta datoteki testUTF-8.c in testUTF8.c. Večina programov bo delovala brez tega, zato pa naj bi preverjali vrednosti spremenljivk okolja. Glej tudi razdelek "Spremenljivke okolja za locale". <sect>Nastavitev locale <p> <sect1>Datoteke in jedro <p> V imenih datotek je že mogoče uporabljati znake iz Unicode brez sprememb v jedru ali orodjih za delo z datotekami. Temu je vzrok dejstvo, da jedro za ime datoteke sprejme vse, razen zloga "null" in '/', ki je določen za ločevanje podimenikov. Pri kodiranju z UTF-8 se ne-ASCII znaki nikoli ne bodo pretvorili v zlog "null" ali poševnico. Zgodi se le, da ime datoteke ali imenika porabi več zlogov, kot ima znakov v imenu. Na primer ime iz petih grških znakov se bo v jedru prikazalo kot ime iz 10 zlogov. Jedro ne "ve" (in mu tega tudi ni treba "vedeti"), da se ti zlogi prikažejo po grško. To je splošna teorija, dokler datoteke upravlja samo Linux. V datotečnih sistemih, ki jih uporabljajo tudi drugi operacijski sistemi, pa morate poskrbeti za pretvorbo imen iz/v UTF-8. <itemize> <item> Datotečni sistem "vfat" ima možnost vpetja (angl. mount) "utf8". Oglejte si <htmlurl url="file:/usr/src/linux/Documentation/filesystems/vfat.txt" name="file:/usr/src/linux/Documentation/filesystems/vfat.txt">. Ko možnost vpetja "iocharset" nastavite drugače, kot je privzeto (tj. ISO-8859-1), rezultati z "utf8" ali brez njega ne bodo konsistentni. Zato se možnost vpetja "iocharset" ne priporoča. <item> Datotečna sistema "msdos" in "umsdos" imata ob vpetju isto možnost, ki pa nima nobenega učinka. <item> Datotečni sistem "iso9660" ima možnost vpetja "utf8". Oglejte si <htmlurl url="file:/usr/src/linux/Documentation/filesystems/isofs.txt" name="file:/usr/src/linux/Documentation/filesystems/isofs.txt">. <item> Od Linuxovih jeder 2.2.x naprej ima tudi datotečni sistem "ntfs" možnost vpetja "utf8". Oglejte si <htmlurl url="file:/usr/src/linux/Documentation/filesystems/ntfs.txt" name="file:/usr/src/linux/Documentation/filesystems/ntfs.txt">. </itemize> Drugi datotečni sistemi (nfs, smbfs, ncpfs, hpfs itd.) ne pretvarjajo imen, zato podpirajo imena datotek Unicode v UTF-8 samo, če jih podpira tudi operacijski sistem na drugi strani. Da se bodo datotečni sistemi vpeli s pravilno možnostjo tudi ob vnovičnih vpetjih, dodajte te možnosti v četrti stolpec ustreznih vrstic v datoteki /etc/fstab. <sect1>TTY in jedro <p> TTY je neke vrste dvosmerna cev med dvema programoma, ki omogoča zanimive lastnosti, npr. "odmev" pritisnjenih tipk ali urejanje v ukazni vrstici. V xtermu lahko poženete "cat" brez argumentov, vnesete in urejate lahko poljubno število vrstic, ki se "odbijejo" nazaj vrstica za vrstico. Pri jedru postopki urejanja niso pravilni, še posebej odziv na tipki Backspace in Tab. To odpravite takole: <itemize> <item> uporabite popravek jedra <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/linux-2.0.35-tty.diff" name="linux-2.0.35-tty.diff"> ali <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/linux-2.2.9-tty.diff" name="linux-2.2.9-tty.diff"> ali <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/linux-2.3.12-tty.diff" name="linux-2.3.12-tty.diff"> in znova prevedite jedro. <item> če uporabljate glibc2, uporabite popravek <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/glibc211-tty.diff" name="glibc211-tty.diff"> in znova prevedite libc (oz. če niste tako pustolovski, zadostuje tudi popravek že nameščene datoteke "include": <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/glibc-tty.diff" name="glibc-tty.diff">), <item> uporabite popravek <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/stty.diff" name="stty.diff"> za GNU sh-utils-1.16b, znova zgradite program "stty" in ga preizkusite: "stty -a" in "stty iutf8". <item> dodajte ukaz "stty iutf8" v skript "unicode_start" in dodajte ukaz "stty -iutf8" v skript "unicode_stop". <item> Uporabite popravek <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/xterm.diff" name="xterm.diff"> za xterm-109 in znova prevedite "xterm", zatem ga preizkusite z zagonom "xterm -u8" / "xterm +u8", v njem poženite "stty -a" in znotraj njega interaktivni "cat". </itemize> <sect1>Splošna pretvorba podatkov <p> Potrebovali boste program za pretvorbo vaših lokalno (najverjetneje po ISO-8859-1 ali 2) kodiranih dokumentov v UTF-8 (druga možnost bi bila, da še naprej uporabljate različno kodirane dokumente v istem računalniku, a to dolgoročno ni preveč zabavno). Eden takih programov je `iconv', ki se ga dobi poleg glibc-2.1. Enostavno vtipkajte <tscreen><verb> $ iconv --from-code=ISO-8859-2 --to-code=UTF-8 < stara_datoteka > nova_datoteka </verb></tscreen> Tu sta še priročna lupinska skripta "i2u" <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/i2u.sh" name="i2u.sh"> (za pretvorbo iz ISO v UTF) in "u2i" <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/u2i.sh" name="u2i.sh"> (za pretvorbo iz UTF v ISO). Prilagodite si ju v skladu z vašim trenutnim 8-bitnim naborom znakov. Če nimate nameščenega glibc-2.1 in iconv, lahko namesto tega uporabite GNU recode 3.5. "i2u" <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/i2u_recode.sh" name="i2u_recode.sh"> je "recode ISO-8859-1..UTF-8", in "u2i" <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/u2i_recode.sh" name="u2i_recode.sh"> je "recode UTF-8..ISO-8859-1". Recode dobite na <htmlurl url="ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5.tar.gz" name="ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5.tar.gz"> ali <htmlurl url="ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz" name="ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz">. Opombe: potrebujete GNU recode 3.5 ali novejšega. Da bi ga prevedli v sistemih brez glibc2 (to so skoraj vsi sistemi Linux razen najnovejših), ga morate nastaviti z možnostjo "--disable-nls", drugače se ne bo povezal. Novejše različice s podporo CJK so na naslovu <htmlurl url="http://www.iro.umontreal.ca/contrib/recode/" name="http://www.iro.umontreal.ca/contrib/recode/">. Namesto tega lahko uporabite tudi CLISP. Na voljo sta tudi "i2u" <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/i2u.lisp" name="i2u.lisp"> in "u2i" <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/u2i.lisp" name="u2i.lisp"> v lispu. Potrebna je različica iz julija 1999 ali novejša. CLISP dobite na naslovu: <htmlurl url="ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz" name="ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz">. Drugi programi za pretvorbo podatkov, manj zmogljivi od GNU recode, so `trans' (<htmlurl url="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/trans113.tar.gz" name="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/trans113.tar.gz">), `tcs' od operacijskega sistema Plan9 (<htmlurl url="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/tcs.tar.gz" name="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/tcs.tar.gz">) in `utrans' / `uhtrans' / `hutrans' (<htmlurl url="ftp://ftp.cdrom.com/pub/FreeBSD/distfiles/i18ntools-1.0.tar.gz" name="ftp://ftp.cdrom.com/pub/FreeBSD/distfiles/i18ntools-1.0.tar.gz">) avtorja G. Adama Stanislava (<htmlurl url="mailto:adam@whizkidtech.net" name="adam@whizkidtech.net">). Za ponavljajočo se pretvorbo datotek v UTF-8 iz različnih naborov znakov lahko uporabite polavtomatsko orodje: <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/to-utf8" name="to-utf8"> prikaže ne-ASCII dele datoteke uporabniku, da vnese izvirni nabor znakov, potem to pretvori v UTF-8. <sect1>Spremenljivke okolja za locale <p> Verjetno imate nastavljene naslednje spremenljivke okolja, ki se nanašajo na locale: <descrip> <tag>LANGUAGE</tag> nadomešča LC_MESSAGES, uporablja jo samo GNU gettext <tag>LC_ALL</tag> nadomešča vse druge spremenljivke LC_* <tag>LC_CTYPE, LC_MESSAGES, LC_COLLATE, LC_NUMERIC, LC_MONETARY, LC_TIME</tag> posamezne spremenljivke za: vrsto znakov in kodiranje, sporočila v naravnem jeziku, pravila za urejanje, obliko številk, obliko denarnih zneskov, prikaz datuma in časa <tag>LANG</tag> privzeta vrednost za vse spremenljivke LC_* </descrip> (Oglejte si `<tt>man 7 locale</tt>', če vas zanima podrobnejši opis.) Vsaka od spremenljivk LC_* in LANG lahko obsega ime locale naslednje oblike. <quote> jezik[_območje[.nabor_znakov][@modifikator] </quote> kjer jezik pomeni kodo jezika po <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/ISO_639.html" name="ISO 639"> (z malimi črkami), območje pomeni kodo države po <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/ISO_3166.html" name="ISO 3166"> (z velikimi črkami), nabor_znakov je samoumeven, modifikator pa označuje posebne značilnosti (npr. posebno narečje, nestandardno črkovanje). Spremenljivka LANGUAGE lahko obsega več imen localov, ločenih s podpičji. Če želite sistemu in vsem programom povedati, da uporabljate UTF-8, morate vsem imenom locale dodati končnico UTF-8. Če ste npr. uporabljali <tscreen><verb> LC_CTYPE=sl_SI </verb></tscreen>, ga boste spremenili v <tscreen><verb> LC_CTYPE=sl_SI.UTF-8 </verb></tscreen>. Spremenljivke okolja LANGUAGE vam <em>ni</em> treba spreminjati. GNU gettext omogoča pretvorbo prevodov v pravo kodiranje. Dokler ne izide glibc-2.2, morate le nastaviti spremenljivko okolja OUTPUT_CHARSET. <tscreen><verb> $ export OUTPUT_CHARSET=UTF-8 </verb></tscreen> glibc-2.2 ne bo potreboval te spremenljivke, saj jo bo znal sam izpeljati iz spremenljivke LC_CTYPE. <sect1>Izdelovanje podpornih datotek za locale <p> Če imate nameščen glibc-2.1, glibc-2.1.1 ali glibc-2.1.2, najprej z uporabo "localdef --help" preverite, ali je sistemski imenik za razporeditev znakov enak /usr/share/i18n/charmaps. Nato popravite datoteko /usr/share/i18n/charmaps/UTF8 z ustreznim popravkom <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/glibc21.diff" name="glibc21.diff">, <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/glibc211.diff" name="glibc211.diff"> ali <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/glibc212.diff" name="glibc212.diff">. Zatem naredite podporno datoteko za vsak UTF-8 locale, ki ga nameravate uporabljati, npr.: <tscreen><verb> $ localedef -v -c -i sl_SI -f UTF8 /usr/share/locale/sl_SI.UTF-8 </verb></tscreen>. Tu morate podati absolutno pot, sicer bo localedef naredil locale v imeniku "sl_SI.utf8", kar ne bo delovalo z XFree86-4.0.1. Največkrat vam ni treba narediti localov "de", "fr" ali "sl" brez končnice za državo, ker te locale največkrat uporabljajo samo spremenljivka LANGUAGE, ne pa spremenljivke LC_*, LANGUAGE pa samo nadomešča LC_MESSAGES. <sect1>Dodajanje podpore v knjižnico C <p> Glibc-2.2 bo podpiral večzložne locale, še posebej locale UTF-8, ki smo jih naredili malo prej. Glibc-2.1.x pa tega v resnici ne podpira. Zato bo edini učinek prej omenjene izdelave datotek /usr/share/locale/sl_SI.UTF-8/* ta, da bo `setlocale(LC_ALL,"")' vrnil "sl_SI.UTF-8" v skladu z vašimi spremenljivkami okolja, namesto da bi odrezal končnico ".UTF-8". Če želite dodati podporo locale UTF-8, boste morali prevesti in namestiti naslednje tri knjižnice: <itemize> <item> `libutf8_plug.so' iz <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/libutf8-0.7.3.tar.gz" name="libutf8-0.7.3.tar.gz">, <item> `libiconv_plug.so', iz <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/libiconv-1.3.tar.gz" name="libiconv-1.3.tar.gz">, <item> `libintl_plug.so', iz <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/gettext-0.10.35-iconv.tar.gz" name="gettext-0.10.35-iconv.tar.gz">. </itemize> Potem lahko spremenljivko okolja LD_PRELOAD nastavite, da kaže na nameščene knjižnice: <tscreen><verb> $ export LD_PRELOAD=/usr/local/lib/libutf8_plug.so:/usr/local/lib/libiconv_plug.so:/usr/local/lib/libintl_plug.so </verb></tscreen> Potem bodo v vsakem programu, ki uporablja te spremenljivke okolja, funkcije v libutf8_plug.so, libiconv_plug.so in libintl_plug.so nadomestile prvotne v /lib/libc.so.6. Če vas zanimajo podrobnosti o LD_PRELOAD si oglejte "man 8 ld.so". Vsega tega ne bo več treba počenjati, ko izide glibc2-2. <sect>Posebni (specifični) programi <p> <sect1>Programi za delo z omrežjem <p> <sect2>telnet <p> V nekaterih namestitvah telnet privzeto ni nastavljen na 8-bitni prenos. Da bi lahko poslali znake iz nabora Unicode oddaljenemu računalniku, morate najprej nastaviti telnet na način "outbinary". Za to sta dve možnosti: <tscreen><verb> $ telnet -L <host> </verb></tscreen> in <tscreen><verb> $ telnet telnet> set outbinary telnet> open <host> </verb></tscreen> <sect2>kermit <p> Komunikacijski program C-Kermit (<htmlurl url="http://www.columbia.edu/kermit/ckermit.html" name="http://www.columbia.edu/kermit/ckermit.html">), (interaktivno orodje za nastavljanje povezave, telnet, prenos datotek, s podporo TCP/IP in zaporednim povezavam) v različici 7.0 ali novejši pozna kodiranji UTF-8 in UCS-2 za prenos podatkov, prav tako pozna tudi terminalsko kodiranje po UTF-8. Zna tudi pretvarjati v obe kodiranji in še v številna druga. Dokumentacijo za te značilnosti najdete na <htmlurl url="http://www.columbia.edu/kermit/ckermit2.html#x6.6" name="http://www.columbia.edu/kermit/ckermit2.html#x6.6">. <sect1>Brskalniki <p> <sect2>Netscape <p> Netscape 4.05 ali novejši lahko prikaže dokumente HTML, ki so kodirani po UTF-8. V dokumentu mora med oznakama <head> in </head> stati tudi: <tscreen><verb> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </verb></tscreen> Netscape 4.05 ali novejši lahko prikaže tudi dokumente in tekstovne datoteke, kodirane po UCS-2, z oznako o vrstnem redu zlogov. Netscapova domača stran je: <htmlurl url="http://www.netscape.com/computing/download/" name="http://www.netscape.com/computing/download/">. <sect2>Mozilla <p> V Mozilla milestone M16 je internacionalizacija rešena precej bolje kakor v Netscape 4. Prikaže lahko dokumente HTML, kodirane po UTF-8, s podporo več jezikom. Zato pa ima manjšo lepotno napako pri pisavah CJK. Nekateri simboli so lahko večji od višine vrstice, tako da prekrijejo prejšnjo ali naslednjo vrstico. Mozillina domača stran je: <htmlurl url="http://www.mozilla.org/" name="http://www.mozilla.org/">. <sect2>Lynx <p> Lynx-2.8 ima zaslon z možnostmi (tipka 'O'), na katerem se lahko nastavi nabor znakov za prikaz. Ko poganjate Lynx v xtermu ali konzoli v načinu UTF-8, nastavite to na "UNICODE UTF-8". Da začne ta nastavitev delovati v trenutnem teku brskalnika, jo morate potrditi v polju "Accept Changes" (sprejmi spremembe), da bo delovala vedno, pa morate izbrati polje "Save options to disk" (shrani možnosti na disk) in to potrditi s poljem "Accept Changes". Tudi tokrat mora v dokumentu med oznakama <head> and </head> stati: <tscreen><verb> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </verb></tscreen> Pri prikazovanju tekstovnih datotek, kodiranih po UTF-8, morate v ukazni vrstici podati možnost "-assume_local_charset=UTF-8" (deluje samo pri naslovih, ki se začnejo s 'file:/') ali "-assume_charset=UTF-8" (deluje pri vseh vrstah naslovov). V Lynxu 2.8.2 lahko tudi na zaslonu z možnostmi (tipka 'O') spremenite predpostavljeni nabor znakov v "utf-8". Na zaslonu z možnostmi je tudi možnost, da nastavite svoj "naljubši nabor znakov v dokumentu" (angl. preferred document character set). Vendar to ne deluje, če se URL začne s 'file:/...' ali s 'http://...' in je na strežniški strani Apache 1.3.0. Problem je tudi s presledki in prelomom vrstic. Oglejte si razdelek o ruščini v x-utf8.html ali v utf-8-demo.txt. Če je Lynx 2.8.2 nastavljen z --enable-prettysrc, barvna shema ne deluje več pravilno, ko nabor znakov na zaslonu nastavite na "UNICODE UTF-8". To popravite s preprostim popravkom <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/lynx282.diff" name="lynx282.diff">. Razvijalci Lynxa pravijo: "Za vsako resno uporabo z izhodom na zaslon po UTF-8 se še vedno priporoča prevajanje s knjižnico slang in -DSLANG_MBCS_HACK." Zadnja stabilna različica: <htmlurl url="ftp://ftp.gnu.org/pub/gnu/lynx/lynx-2.8.2.tar.gz" name="ftp://ftp.gnu.org/pub/gnu/lynx/lynx-2.8.2.tar.gz"> Izvirno kodo Lynxa dobite na: <htmlurl url="http://lynx.isc.org/" name="http://lynx.isc.org/">. Splošna domača stran: <htmlurl url="http://lynx.browser.org/" name="http://lynx.browser.org/"> Novejše različice, ki jih še razvijajo: <htmlurl url="http://lynx.isc.org/current/" name="http://lynx.isc.org/current/">, <htmlurl url="ftp://lynx.isc.org/current/" name="ftp://lynx.isc.org/current/"> <sect2>W3M <p> W3m avtorja Akinorija Ita (<htmlurl url="http://ei5nazha.yz.yamagata-u.ac.jp/~aito/w3m/eng/" name="http://ei5nazha.yz.yamagata-u.ac.jp/~aito/w3m/eng/">) je tekstovni brskalnik po straneh HTML. Njegov prikaz tabel, naštevanj ipd. v HTML je precej lepši kot v Lynxu. Uporaben je tudi kot zelo dober pretvornik iz HTML v besedilo. W3m ima izbire iz ukazne vrstice za tri najpomembnejša japonska kodiranja, lahko pa ga uporabite tudi za datoteke, ki so kodirane po UTF-8. Če v ukazni vrstici ne vnesete nobene izbire, morate pogosto pritiskati Ctrl-L za osveževanje prikaza, prelom vrstic v odstavkih v cirilici in v CJK pa ni dober. To odpravite s popravkom Hironorija Sakamota (<htmlurl url="http://www2u.biglobe.ne.jp/~hsaka/w3m/" name="http://www2u.biglobe.ne.jp/~hsaka/w3m/">), ki med kodiranja za prikaz doda UTF-8. <sect2>Strani za preizkušanje <p> Nekaj strani za preizkus brskalnikov najdete na straneh Alana Wooda (<htmlurl url="http://www.hclrss.demon.co.uk/unicode/#links" name="http://www.hclrss.demon.co.uk/unicode/#links">) in Jamesa Kassa (<htmlurl url="http://home.att.net/~jameskass/" name="http://home.att.net/~jameskass/">). <sect1>Urejevalniki <p> <sect2>Yudit <p> Yudit avtorja Gáspárja Sinaia (<htmlurl url="http://czyborra.com/yudit/" name="http://czyborra.com/yudit/"> in <htmlurl url="http://www.yudit.org" name="http://www.yudit.org">) je prvovrsten urejevalnik besedil, kodiranih po Unicode, za sistem X Window. Podpira hkratno obdelavo pri več jezikih, načinih vnosa in pretvorbah za krajevne standarde znakov. Ima pripomočke za vnašanje besedila v vseh jezikih z angleško tipkovnico, pri čemer se uporabljajo nastavitve za razporeditve tipk. Prevesti ga je mogoče v treh različicah: Xlib GUI, KDE GUI ali Motif GUI. Prilagoditi si ga je zelo lahko. Ponavadi si najprej prilagodite pisavo tako, da z menuja pisave (angl. font) izberete "Unicode". Nato izberete pisavo velikosti 13 (pri ukazu "xlsfonts '*-*-iso10646-1'" tu in tam še vedno nastane zmešnjava), ki se ujema s 13-točkovno pisavo stalne širine Markusa Kuhna. Zatem si prilagodite način vnosa. Najbolj značilni so "Straight", "Unicode" in "SGML". Podrobnosti o drugih vgrajenih načinih vnosa najdete v /usr/local/share/yudit/data/. Da bi postala sprememba privzeta ob vseh nadaljnjih zagonih programa, vnesite želene spremembe v datoteko $HOME/.yuditrc. Splošne zmožnosti urejevalnika so omejene na urejanje, 'rezanje & lepljenje' (angl. cut & paste) ter iskanje & nadomeščanje. Možnosti razveljavitve (angl. undo) ni. Yudit lahko prikaže besedilo z uporabo pisave truetype, oglejte si razdelek "Pisave truetype". Dobre rezultate da tudi pisava Bitstream Cyberbit. Da bi jo Yudit lahko našel, naredite povezavo nanjo na <tt>/usr/local/share/yudit/data/cyberbit.ttf</tt>. <sect2>Vim <p> Vim (pri različici 6.0b) dobro podpira UTF-8: ko ga poženete v UTF-8 locale, privzame kodiranje UTF-8 za konzolo in za tekstovne datoteke, ki jih urejate. Podpira znake z dvojno širino (npr. CJK) pa tudi kombiniranje znakov in se zato odlično prilega v Xterm z omogočenim UTF-8. Namestitev: z naslova <htmlurl url="http://www.vim.org/" name="http://www.vim.org/"> si naložite izvirno kodo. Ko odpakirate vse štiri dele, popravite datoteko src/Makefile tako, da bo vključeno tudi stikalo <tt>--with-features=big</tt>. Tako boste vključili značilnosti FEAT_MBYTE, FEAT_RIGHTLEFT in FEAT_LANGMAP. Zatem poženite "make" in "make install". <sect2>Emacs <p> Najprej si preberite razdelek o podpori mednarodnim naborom znakov (angl. "International Character Set Support") v priročniku za Emacs. Še posebej upoštevajte, da morate pognati Emacs z ukazom <tscreen><verb> $ emacs -fn fontset-standard </verb></tscreen>, da se bo uporabila pisava s precej mednarodnimi znaki. Na kratko povedano, paketa za uporabo UTF-8 v Emacsu sta dva. Pri nobenem izmed njiju vam Emacsa ni treba še enkrat prevajati. <itemize> <item> Paket emacs-utf (<htmlurl url="http://www.cs.ust.hk/faculty/otfried/Mule/" name="http://www.cs.ust.hk/faculty/otfried/Mule/">) avtorja Otfrieda Cheonga omogoča v Emacsu kodiranje "unicode-utf8". <item> Paket oc-unicode (<htmlurl url="http://www.cs.ust.hk/faculty/otfried/Mule/" name="http://www.cs.ust.hk/faculty/otfried/Mule/">) istega avtorja je razširitev paketa Mule-UCS (<htmlurl url="ftp://etlport.etl.go.jp/pub/mule/Mule-UCS/Mule-UCS-0.70.tar.gz" name="ftp://etlport.etl.go.jp/pub/mule/Mule-UCS/Mule-UCS-0.70.tar.gz">, zrcalni strežnik tudi na <htmlurl url="http://riksun.riken.go.jp/archives/misc/mule/Mule-UCS/Mule-UCS-0.70.tar.gz" name="http://riksun.riken.go.jp/archives/misc/mule/Mule-UCS/Mule-UCS-0.70.tar.gz">) avtorja Miyashite Hisashija in v Emacsu omogoča kodiranje "utf-8". </itemize> Uporabljate lahko kateregakoli izmed njiju, lahko tudi oba skupaj. Prednosti kodiranja po "unicode-utf8" (paket emacs-utf) sta, da se naloži hitreje in da se bolje obnese pri kombiniranju znakov (to je pomembno pri tajščini). Prednost kodiranja po "utf-8" (paket Mule-UCS/oc-unicode) pa je, da lahko tudi obdeluje medpomnilnik (kot npr. M-x shell) in ne samo nalaga in shranjuje datoteke. Prav tako bolje obravnava širino znakov (pomembno pri etiopščini). Zato pa je manj zanesljivo: po obsežnem urejanju datoteke se lahko zgodi, da se po shranjevanju datoteke nekateri znaki iz Unicode nadomestijo z U+FFFD. Da bi namestili paket emacs-utf, najprej prevedite program "utf2mule" in ga namestite v enega izmed imenikov, ki so našteti v spremenljivki PATH. Nekam namestite tudi unicode.el, muleuni-1.el in unicode-char.el. Nato v datoteko $HOME/.emacs dodajte vrstice: <tscreen><verb> (setq load-path (cons "/home/user/somewhere/emacs" load-path)) (if (not (string-match "XEmacs" emacs-version)) (progn (require 'unicode) ;(setq unicode-data-path "..../UnicodeData-3.0.0.txt") (if (eq window-system 'x) (progn (setq fontset12 (create-fontset-from-fontset-spec "-misc-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-standard")) (setq fontset13 (create-fontset-from-fontset-spec "-misc-fixed-medium-r-normal-*-13-*-*-*-*-*-fontset-standard")) (setq fontset14 (create-fontset-from-fontset-spec "-misc-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-standard")) (setq fontset15 (create-fontset-from-fontset-spec "-misc-fixed-medium-r-normal-*-15-*-*-*-*-*-fontset-standard")) (setq fontset16 (create-fontset-from-fontset-spec "-misc-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard")) (setq fontset18 (create-fontset-from-fontset-spec "-misc-fixed-medium-r-normal-*-18-*-*-*-*-*-fontset-standard")) ; (set-default-font fontset15) )))) </verb></tscreen> Katerikoli nabor pisav lahko sprožite prek menuja Mule - Set Font/Fontset ali s kombinacijo Shift - dol - miška - 1. Trenutno so v Unicode najbolje pokrite pisave z višino 15 in 13, predvsem po zaslugi pisav 9x15 in 6x13 Markusa Kuhna. Da bo nabor pisav postal začetni nabor pisav za prvo okno ob zagonu, odkomentirajte vrstico <tt>set-default-font</tt> v zgornjih nastavitvah Emacsa. Za namestitev paketa oc-unicode vnesite ukaz <tscreen><verb> $ emacs -batch -l oc-comp.el </verb></tscreen> in namestite nekam tako nastale datoteke <tt>un-define.elc</tt> pa tudi <tt>oc-unicode.el</tt>, <tt>oc-charsets.el</tt> in <tt>oc-tools.el</tt>. Nato v datoteko $HOME/.emacs dodajte vrstice: <tscreen><verb> (setq load-path (cons "/home/user/somewhere/emacs" load-path)) (if (not (string-match "XEmacs" emacs-version)) (progn (require 'oc-unicode) ;(setq unicode-data-path "..../UnicodeData-3.0.0.txt") (if (eq window-system 'x) (progn (setq fontset12 (oc-create-fontset "-misc-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-standard" "-misc-fixed-medium-r-normal-ja-12-*-iso10646-*")) (setq fontset13 (oc-create-fontset "-misc-fixed-medium-r-normal-*-13-*-*-*-*-*-fontset-standard" "-misc-fixed-medium-r-normal-ja-13-*-iso10646-*")) (setq fontset14 (oc-create-fontset "-misc-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-standard" "-misc-fixed-medium-r-normal-ja-14-*-iso10646-*")) (setq fontset15 (oc-create-fontset "-misc-fixed-medium-r-normal-*-15-*-*-*-*-*-fontset-standard" "-misc-fixed-medium-r-normal-ja-15-*-iso10646-*")) (setq fontset16 (oc-create-fontset "-misc-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard" "-misc-fixed-medium-r-normal-ja-16-*-iso10646-*")) (setq fontset18 (oc-create-fontset "-misc-fixed-medium-r-normal-*-18-*-*-*-*-*-fontset-standard" "-misc-fixed-medium-r-normal-ja-18-*-iso10646-*")) ; (set-default-font fontset15) )))) </verb></tscreen> Ustrezen nabor pisav si nastavite enako kot pri paketu emacs-utf. Da boste lahko naložili datoteko, kodirano v UTF-8, vtipkajte <tscreen><verb> M-x universal-coding-system-argument unicode-utf8 RET M-x find-file datoteka RET </verb></tscreen> ali <tscreen><verb> C-x RET c unicode-utf8 RET C-x C-f datoteka RET </verb></tscreen> (oz. utf-8 namesto unicode-utf8, če imate rajši oc-unicode/Mule-UCS). Lupinsko okno z vhodom in izhodom v UTF-8 odprete, če vtipkate: <tscreen><verb> M-x universal-coding-system-argument utf-8 RET M-x shell RET </verb></tscreen> (To deluje samo z oc-unicode/Mule-UCS.) Upoštevajte, da vse to deluje samo z Emacsom v okenskem načinu, ne pa tudi v terminalskem. Richard Stallman načrtuje, da bo dolgoročno dodal v Emacs integrirano podporo UTF-8. Podobno načrtuje tudi skupina razvijalcev XEmacsa. <sect2>Xemacs <p> (Ta razdelek je napisal Gilbert Baumann.) XEmacs (različica 20.4 nastavljena z MULE) si lahko prilagodite na UTF-8 takole. Žal boste potrebovali izvirno kodo, da boste lahko vnesli popravke. Najprej potrebujete naslednji datoteki, ki ju je prispeval Tomohiko Morioka: <htmlurl url="http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/xemacs-21.0-b55-emc-b55-ucs.diff" name="http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/xemacs-21.0-b55-emc-b55-ucs.diff"> in <htmlurl url="http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/xemacs-ucs-conv-0.1.tar.gz" name="http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/xemacs-ucs-conv-0.1.tar.gz">. Končnica .diff se nanaša na izvirnik v jeziku C. V paketih tar je koda v elispu, ki omogoča precej kodnih tabel za prenose v Unicode in iz njega. Kot je razvidno iz imena datoteke .diff, se nanaša na XEmacs-21. Treba je bilo nekaj 'popravkov'. Najopaznejša razlika v izvirniku za XEmacs 20.4 je, da se je file-coding.[ch] preimenoval v mule-coding.[ch]. Nekaj hitrih napotkov za vse, ki se podobno kakor avtor ne spoznajo preveč na XEmacs-MULE: To, kar se imenuje kodiranje (angl. encoding), se v MULE imenuje 'coding-system'. Najpomembnejša ukaza sta: <tscreen><verb> M-x set-file-coding-system M-x set-buffer-process-coding-system [comint buffers] </verb></tscreen> in spremenljivka `file-coding-system-alist', ki ukazu `find-file' pomaga uganiti uporabljeni način kodiranja. Ko zadevo poženete, morate najprej storiti <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/gb-hacks.el" name="tole">. Ta koda preveri posebno vrstico z načinom, ki se začne z -*- nekje med prvimi 600 zlogi datoteke, ki jo nameravate odpreti. Če se tam prikaže polje "Encoding: xyz;" in kodiranje 'xyz' obstaja, ga izberite. Zdaj lahko npr. storite <tscreen><verb> ;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: CLEX; Encoding: utf-8; -*- </verb></tscreen> in XEmacs se preklopi v način utf. Ko ste vse pognali, lahko definirate \u03BB (grška lambda) kot makro: <tscreen><verb> (defmacro \u03BB (x) `(lambda .,x)) </verb></tscreen> <sect2>Nedit <p> <sect2>Xedit <p> Če imate XFree86-4.0.1, lahko z Xeditom urejate datoteke, kodirane po UTF-8, če ste ustrezno nastavili locale (glejte zgoraj) in dodali vrstico "Xedit*international: true" v datoteko $HOME/.Xdefaults. <sect2>Axe <p> V različici 6.1.2 Axe podpira samo 8-bitne locale. Če v $HOME/.Xdefaults dodaste vrstico "Axe*international: true", se bo preprosto 'sesul'. <sect2>Pico <p> <sect2>Mined98 <p> Mined98 (<htmlurl url="http://www.inf.fu-berlin.de/~wolff/mined.html" name="http://www.inf.fu-berlin.de/~wolff/mined.html">) je preprost urejevalnik avtorjev Michiela Huisjesa, Achima Müllerja in Thomasa Wolffa. V xtermu, ki podpira UTF-8 ali druga 8-bitna kodiranja, vam omogoča urejanje datotek, ki so kodirane po UTF-8 ali drugem 8-bitnem standardu. Zelo dobro tudi omogoča vnašanje znakov iz nabora Unicode. Mined vam omogoča urejanje 8-bitno kodiranih in po UTF-8 kodiranih datotek. Privzeto uporabi hevristično samozaznavo. Če se nočete zanašati na hevristiko, v ukazni vrstici podajte stikalo <tt>-u</tt>, kadar urejate datoteko po UTF-8, ali <tt>+u</tt>, kadar urejate 8-bitno kodirano datoteko. To lahko kadarkoli spremenite znotraj urejevalnika. V vrstici z menujem se prikaže kodiranje z "L:h" za 8-bitna kodiranja in "U:h" za UTF-8. Kliknite prvega izmed teh znakov, če želite to spremeniti. Mined pozna znake z dvojno širino ter kombinirane znake in jih tudi pravilno prikaže. Ima tudi lepo organizirane padajoče menuje, zato pa tipke, kot so Home, End ali Delete, ne delujejo. <sect1>Programi za elektronsko pošto <p> MIME: RFC 2279 definira UTF-8 kot nabor znakov MIME, ki se lahko prenaša pod 8-bitnimi kodiranji ter kodiranjema 'quoted-printable' in base64. Za starejši predlog MIME UTF-7 (RFC 2152) velja, da je v zatonu, zato naj se ga ne bi več uporabljalo. Poštni odjemalci, ki so izšli po 1. januarju 1999, bi morali znati pošiljati in prikazovati po UTF-8 kodirana sporočila, sicer se upoštevajo kot neustrezni. Toda ta sporočila morajo nositi oznako MIME <tscreen><verb> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit </verb></tscreen> Enostavno pošiljanje datoteke, kodirane po UTF-8, po cevi v "mail" brez popravka oznak MIME ne bo uspešno. Programerji odjemalcev za elektronsko pošto bi si morali ogledati strani <htmlurl url="http://www.imc.org/imc-intl/" name="http://www.imc.org/imc-intl/"> in <htmlurl url="http://www.imc.org/mail-i18n.html" name="http://www.imc.org/mail-i18n.html">. Zdaj pa k posameznim poštnim odjemalcem (oz. "agentom za uporabo el. pošte"): <sect2>Pine <p> Stanje za nepopravljeni Pine različice 4.10 je naslednje. Pine ne pretvarja naborov znakov. Omogoča pa vam, da si ogledate po UTF-8 kodirana sporočila v tekstovnem oknu, ki ima nastavljen UTF-8 (konzola za Linux ali xterm). Ponavadi vas bo Pine opozoril na drug nabor znakov vsakič, ko gledate sporočilo, kodirano po UTF-8. Teh opozoril se znebite, če izberete S (setup), zatem C (config), nato pa "character-set" nastavite na UTF-8. Tako ne boste storili nič posebnega, le opozoril ne bo več, saj v Pine ni vgrajenega nobenega znanja o UTF-8. Upoštevajte tudi, da je pri Pinu koncept znakov iz Unicode precej omejen. Prikazal bo znake v latinici in grške znake, preostalih znakov pa ne. Popravek Roberta Bradyja (el. pošta: <htmlurl url="mailto:rwb197@ecs.soton.ac.uk" name="rwb197@ecs.soton.ac.uk">, nahajališče popravka: <htmlurl url="http://www.ents.susu.soton.ac.uk/~robert/pine-utf8-0.1.diff" name="http://www.ents.susu.soton.ac.uk/~robert/pine-utf8-0.1.diff">) doda Pinu podporo UTF-8. S tem popravkom se zaglavja in telesa dekodirajo in prikažejo pravilno. Popravek je odvisen od knjižnice libunicode (<htmlurl url="http://cvs.gnome.org/lxr/source/libunicode/" name="http://cvs.gnome.org/lxr/source/libunicode/">) za GNOME. Kljub vsemu poravnava ne deluje povsod pravilno, pri odgovarjanju se nabor znakov ne pretvori ustrezno, urejevalnik Pico pa sploh ne zna delati z večzložnimi znaki. <sect2>Kmail <p> Kmail (različica, ki se distribuira s KDE 1.0) sploh ne podpira UTF-8. <sect2>Netscape Communicator <p> Messenger (del Netscape Communicatorja) zna pošiljati in prikazati sporočila, ki so kodirana po UTF-8, vendar je treba tudi nekaj malega ročnega posredovanja. Pošiljanje sporočil, kodiranih po UTF-8: ko odprete okno za sestavljanje sporočila (Compose), morate, še preden začnete pisati sporočilo, z menuja izbrati "View -> Character Set -> Unicode (UTF-8)". Potem lahko napišete sporočilo in ga odpošljete. Ko prejmete tako kodirano sporočilo, ga Netscape žal ne bo takoj prikazal v pravem naboru znakov, niti vam ne bo tega vidno nakazal. Z menuja morate ročno izbrati "View -> Character Set -> Unicode (UTF-8)". Nato izberite kategorijo pisav Unicode. <sect2>Emacs (Rmail, Vm) <p> <sect2>Mutt <p> Mutt-1.0, ki ga dobite na naslovu <htmlurl url="http://www.mutt.org/" name="http://www.mutt.org/">, ima zelo omejeno podporo UTF-8. Za polno podporo je Edmund Grimley Evans naredil popravke, ki jih dobite na naslovu <htmlurl url="http://www.rano.demon.co.uk/mutt.html" name="http://www.rano.demon.co.uk/mutt.html">. <sect2>Exmh <p> Exmh 2.1.2 s Tk 8.4a1 prepozna in pravilno prikaže sporočila, kodirana po UTF-8 (vendar brez znakov CJK), če v datoteko <tt>$HOME/.Xdefaults</tt> dodaste naslednje vrstice: <tscreen><verb> ! ! Exmh ! exmh.mimeUCharsets: utf-8 exmh.mime_utf-8_registry: iso10646 exmh.mime_utf-8_encoding: 1 exmh.mime_utf-8_plain_families: fixed exmh.mime_utf-8_fixed_families: fixed exmh.mime_utf-8_proportional_families: fixed exmh.mime_utf-8_title_families: fixed </verb></tscreen> <sect1>Obdelava besedil <p> <sect2>Groff <p> Groff 1.16, izvedba GNU tradicionalnega sistema troff/nroff za obdelavo besedil v Unixih, lahko na izhodu doda oblikovano besedilo z znaki po UTF-8. Namesto '<tt>groff -Tlatin1</tt>' ali '<tt>groff -Tascii</tt>' enostavno vtipkajte '<tt>groff -Tutf8</tt>'. <sect2>TeX <p> Distribucije TeTeX 0.9 in novejše imajo prilagoditev Texa za Unicode, ki se imenuje Omega (<htmlurl url="http://www.gutenberg.eu.org/omega/" name="http://www.gutenberg.eu.org/omega/">, <htmlurl url="ftp://ftp.ens.fr/pub/tex/yannis/omega" name="ftp://ftp.ens.fr/pub/tex/yannis/omega">). Skupaj z datoteko unicode.tex, ki je v <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/utf8-tex-0.1.tar.gz" name="utf8-tex-0.1.tar.gz">, vam omogoča, da kot vhod v TeX vnesete izvirnike, kodirane po UTF-8. Trenutno je podprtih na tisoče znakov iz Unicode. Spremeni se le to, da poženete `omega' (namesto `tex') ali `lambda' (namesto `latex') in v glavo vašega izvirnika vrinete naslednje vrstice: <tscreen><verb> \ocp\TexUTF=inutf8 \InputTranslation currentfile \TexUTF </verb></tscreen> <tscreen><verb> \input unicode </verb></tscreen> Verjetno sta tej tematiki posvečeni tudi naslednji povezavi: <htmlurl url="http://www.dante.de/projekte/nts/NTS-FAQ.html" name="http://www.dante.de/projekte/nts/NTS-FAQ.html"> in <htmlurl url="ftp://ftp.dante.de/pub/tex/language/chinese/CJK/" name="ftp://ftp.dante.de/pub/tex/language/chinese/CJK/">. <sect1>Zbirke podatkov <p> <sect2>PostgreSQL <p> PostgreSQL 6.4 ali novejši zgradite z naslednjo možnostjo nastavitve: <tt>--with-mb=UNICODE</tt>. <sect1>Drugi programi v tekstovnem načinu <p> <sect2>Less <p> S programom Less, ki se ga dobi na naslovu <htmlurl url="http://www.flash.net/~marknu/less/less-358.tar.gz" name="http://www.flash.net/~marknu/less/less-358.tar.gz">, lahko brskate po tekstovnih datotekah, ki so kodirane po UTF-8, če konzola ali xterm podpirata tako kodiranje. Preverite, da spremenljivka okolja LESSCHARSET ni nastavljena (ali da je nastavljena na utf-8). Če je nastavljena tudi spremenljivka LESSKEY, preverite, ali datoteka, na katero kaže, ne definira spremenljivke LESSCHARSET. Če je treba, naredite to datoteko še enkrat z ukazom `lesskey' ali pa spremenljivko LESSKEY "prekličite". <sect2>Lv <p> Lv-4.21 (<htmlurl url="http://www.mt.cs.keio.ac.jp/person/narita/lv/" name="http://www.mt.cs.keio.ac.jp/person/narita/lv/">) avtorja Tomia Narite je pregledovalnik datotek z vgrajenim pretvornikom naborov znakov. Če želite v konzoli, podprti z UTF-8, pregledati datoteke, kodirane po UTF-8, vtipkajte "lv -Au8". Lahko pa ga uporabite tudi za pregledovanje po drugih kodiranjih CJK kodiranih datotek v konzoli s podporo UTF-8. Program ima tudi drobno napakico: kazalec (kurzor) v xtermu izgine in se po koncu ne pokaže znova. <sect2>Expand, Wc <p> Priskrbite si GNU textutils-2.0 in uporabite popravek <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/textutils-2.0.diff" name="textutils-2.0.diff">, nato si prilagodite nastavitve in v config.h dodajte vrstice "#define HAVE_MBRTOWC 1", "#define HAVE_FGETWC 1" in "#define HAVE_FPUTWC 1". V datoteki src/Makefile popravite CFLAGS in LDFLAGS tako, da zajemata tudi imenike, v katerih je nameščen libutf8. Zatem prevedite vse skupaj. <sect2>Col, Colcrt, Colrm, Column, Rev in Ul <p> Priskrbite si paket util-linux-2.9y, ga nastavite in zatem v datoteki defines.h definirajte ENABLE_WIDECHAR. V datoteki lib/widechar.h "#if 0" popravite v "if 1". V datoteki text-utils/Makefile popravite CFLAGS in LDFLAGS tako, da zajemata imenike, v katerih je nameščen libutf8. Prevedite vse skupaj. <sect2>Figlet <p> Figlet 2.2 ima stikalo za vnos po UTF-8: "figlet -C utf8" <sect2>Temeljni pripomočki <p> Seznam ukazov in pripomočkov Li18nux, ki bi moral biti povezljiv z UTF-8, je še vedno nepopoln in potrebuje še precej koristnih informacij. Avtorju jih še ni uspelo zbrati :-). Pri glibc-2.2 bodo delovali le regularni izrazi z 8-bitnimi znaki. Pri locale za UTF-8 regularni izrazi, ki obsegajo ne-ASCII znake ali v katerih naj bi primerjali posamezne večzložne znake s ".", ne bodo delovali. Posledice tega se bodo poznale v vseh ukazih in pripomočkih, ki so našteti spodaj. <descrip> <tag>alias</tag> Na voljo ni še nobenih informacij <tag>ar</tag> Na voljo ni še nobenih informacij <tag>arch</tag> Na voljo ni še nobenih informacij <tag>arp</tag> Na voljo ni še nobenih informacij <tag>asa</tag> Na voljo ni še nobenih informacij <tag>at</tag> Pri at-3.1.8 sta dve uporabi isalnum v at.c neveljavni in ju je treba nadomestiti z uporabo quotearg.c ali s seznamom za izključevanje seznamov metaznakov iz lupine. Dve uporabi %8s v at.c in atd.c sta neveljavni in ju je treba popraviti na poljubno dolžino. <tag>basename</tag> Kot pri sh-utils-2.0i: vse je v redu. <tag>batch</tag> Na voljo ni še nobenih informacij <tag>bc</tag> Na voljo ni še nobenih informacij <tag>bg</tag> Na voljo ni še nobenih informacij <tag>bunzip2</tag> Na voljo ni še nobenih informacij <tag>bzip2</tag> Na voljo ni še nobenih informacij <tag>bzip2recover</tag> Na voljo ni še nobenih informacij <tag>cal</tag> Na voljo ni še nobenih informacij <tag>cat</tag> Na voljo ni še nobenih informacij <tag>cd</tag> Na voljo ni še nobenih informacij <tag>cflow</tag> Na voljo ni še nobenih informacij <tag>chgrp</tag> Kot pri fileutils-4.0u: vse v redu <tag>chmod</tag> Kot pri fileutils-4.0u: vse v redu <tag>chown</tag> Kot pri fileutils-4.0u: vse v redu <tag>chroot</tag> Kot pri sh-utils-2.0i: vse v redu <tag>cksum</tag> Kot pri textutils-2.0e: vse vredu <tag>clear</tag> Na voljo ni še nobenih informacij <tag>cmp</tag> Na voljo ni še nobenih informacij <tag>col</tag> Na voljo ni še nobenih informacij <tag>comm</tag> Na voljo ni še nobenih informacij <tag>command</tag> Na voljo ni še nobenih informacij <tag>compress</tag> Na voljo ni še nobenih informacij <tag>cp</tag> Kot pri fileutils-4.0u: vse v redu <tag>cpio</tag> Na voljo ni še nobenih informacij <tag>csplit</tag> Na voljo ni še nobenih informacij <tag>ctags</tag> Na voljo ni še nobenih informacij <tag>crontab</tag> Na voljo ni še nobenih informacij <tag>cut</tag> Na voljo ni še nobenih informacij <tag>date</tag> Kot pri sh-utils-2.0i: vse v redu <tag>dd</tag> Kot pri fileutils-4.0u: stikali conv=lcase in conv=ucase ne delujeta pravilno <tag>depmod</tag> Na voljo ni še nobenih informacij <tag>df</tag> Kot pri fileutils-4.0u: vse v redu <tag>diff</tag> Kot pri diffutils-2.7 (1994): diff se ne zaveda nastavitev locale, način --side-by-side zato ne izračuna pravilno širine stolpca, to velja celo za locale, ki temeljijo na ISO-8859-1 <tag>diff3</tag> Na voljo ni še nobenih informacij <tag>dirname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>domainname</tag> Na voljo ni še nobenih informacij <tag>du</tag> Kot pri fileutils-4.0u: vse v redu <tag>echo</tag> Kot pri sh-utils-2.0i: vse v redu <tag>env</tag> Kot pri sh-utils-2.0i: vse v redu <tag>expand</tag> Na voljo ni še nobenih informacij <tag>expr</tag> Kot pri sh-utils-2.0i: operatorji "match", "substr", "index" in "length" ne delujejo pravilno <tag>false</tag> Kot pri sh-utils-2.0i: vse v redu <tag>fc</tag> Na voljo ni še nobenih informacij <tag>fg</tag> Na voljo ni še nobenih informacij <tag>file</tag> Na voljo ni še nobenih informacij <tag>find</tag> Kot pri findutils-4.1.5: stikalo "-ok" še ne pozna mednarodnih nastavitev, popravek je že bil posredovan vzdrževalcu. Stikalo "-iregex" ne deluje pravilno, potreben je popravek v funkciji find/parser.c:insert_regex <tag>fort77</tag> Na voljo ni še nobenih informacij <tag>ftp[BSD]</tag> Na voljo ni še nobenih informacij <tag>fuser</tag> Na voljo ni še nobenih informacij <tag>getconf</tag> Na voljo ni še nobenih informacij <tag>getopts</tag> Na voljo ni še nobenih informacij <tag>gunzip</tag> Na voljo ni še nobenih informacij <tag>gzip</tag> Gzip je zmožen uporabljati UTF-8, vendar uporablja le angleška sporočila v naboru ASCII. Pri pravilni prilagoditvi bi bilo treba: uporabiti gettext, klicati setlocale. V funkciji check_ofname (datoteka gzip.c) namesto spraševanja vrste da/ne uporabite funkcijo rpmatch. Uporaba funkcije strlen v gzip.c:852 je napačna, treba je uporabiti funkcijo mbswidth. <tag>hash</tag> Na voljo ni še nobenih informacij <tag>head</tag> Na voljo ni še nobenih informacij <tag>hostname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>id</tag> Kot pri sh-utils-2.0i: vse v redu <tag>ifconfig</tag> Na voljo ni še nobenih informacij <tag>imake</tag> Na voljo ni še nobenih informacij <tag>insmod</tag> Na voljo ni še nobenih informacij <tag>ipchains</tag> Na voljo ni še nobenih informacij <tag>ipcrm</tag> Na voljo ni še nobenih informacij <tag>ipcs</tag> Na voljo ni še nobenih informacij <tag>ipmasqadm</tag> Na voljo ni še nobenih informacij <tag>jobs</tag> Na voljo ni še nobenih informacij <tag>join</tag> Na voljo ni še nobenih informacij <tag>kerneld</tag> Na voljo ni še nobenih informacij <tag>kill</tag> Na voljo ni še nobenih informacij <tag>killall</tag> Na voljo ni še nobenih informacij <tag>ksyms</tag> Na voljo ni še nobenih informacij <tag>ldd</tag> Na voljo ni še nobenih informacij <tag>less</tag> Na voljo še ni popolnih informacij <tag>lex</tag> Na voljo ni še nobenih informacij <tag>lilo</tag> Na voljo ni še nobenih informacij <tag>ln</tag> Kot pri fileutils-4.0u: vse v redu <tag>loadkeys</tag> Na voljo ni še nobenih informacij <tag>logger</tag> Na voljo ni še nobenih informacij <tag>Logname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>lp</tag> Na voljo ni še nobenih informacij <tag>lpc[BSD]</tag> Na voljo ni še nobenih informacij <tag>lpr[BSD]</tag> Na voljo ni še nobenih informacij <tag>lprm[BSD]</tag> Na voljo ni še nobenih informacij <tag>lpq[BSD]</tag> Na voljo ni še nobenih informacij <tag>ls</tag> Kot pri fileutils-4.oy: vse v redu <tag>lsmod</tag> Na voljo ni še nobenih informacij <tag>m4</tag> Na voljo ni še nobenih informacij <tag>mailx</tag> Na voljo ni še nobenih informacij <tag>make</tag> Na voljo ni še nobenih informacij <tag>mesg</tag> Na voljo ni še nobenih informacij <tag>mkdir</tag> Kot pri fileutils-4.0u: vse v redu <tag>mkfifo</tag> Kot pri fileutils-4.0u: vse v redu <tag>mkfs</tag> Na voljo ni še nobenih informacij <tag>mkswap</tag> Na voljo ni še nobenih informacij <tag>modprobe</tag> Na voljo ni še nobenih informacij <tag>more</tag> Na voljo ni še nobenih informacij <tag>mount</tag> Na voljo ni še nobenih informacij <tag>mv</tag> Kot pri fileutils-4.0u: vse v redu <tag>netstat</tag> Na voljo ni še nobenih informacij <tag>newgrp</tag> Na voljo ni še nobenih informacij <tag>nice</tag> Kot pri sh-utils-2.0i: vse v redu <tag>nl</tag> Na voljo ni še nobenih informacij <tag>nohup</tag> Kot pri sh-utils-2.0i: vse v redu <tag>nslookup</tag> Na voljo ni še nobenih informacij <tag>nm</tag> Na voljo ni še nobenih informacij <tag>od</tag> Na voljo ni še nobenih informacij <tag>passwd[BSD]</tag> Na voljo ni še nobenih informacij <tag>paste</tag> Na voljo ni še nobenih informacij <tag>patch</tag> Na voljo ni še nobenih informacij <tag>pathchk</tag> Kot pri sh-utils-2.0i: vse v redu <tag>ping</tag> Na voljo ni še nobenih informacij <tag>printf</tag> Kot pri sh-utils-2.0i: vse v redu <tag>pr</tag> Na voljo ni še nobenih informacij <tag>ps</tag> Na voljo ni še nobenih informacij <tag>pwd</tag> Kot pri sh-utils-2.0i: vse v redu <tag>read</tag> Na voljo ni še nobenih informacij <tag>rdev</tag> Na voljo ni še nobenih informacij <tag>reboot</tag> Na voljo ni še nobenih informacij <tag>renice</tag> Na voljo ni še nobenih informacij <tag>rm</tag> Kot pri fileutils-4.0u: vse v redu <tag>rmdir</tag> Kot pri fileutils-4.0u: vse v redu <tag>rmmod</tag> Na voljo ni še nobenih informacij <tag>shar[BSD]</tag> Na voljo ni še nobenih informacij <tag>shutdown</tag> Na voljo ni še nobenih informacij <tag>sleep</tag> Kot pri sh-utils-2.0i: vse v redu <tag>split</tag> Na voljo ni še nobenih informacij <tag>strings</tag> Na voljo ni še nobenih informacij <tag>strip</tag> Na voljo ni še nobenih informacij <tag>stty</tag> Kot pri sh-utils-2.o1: niza "<undef>" se ne bi smelo prevajati, potreben je popravek v funkciji stty.c:visible. <tag>su[BSD]</tag> Na voljo ni še nobenih informacij <tag>sum</tag> Kot pri textutils-2.0e: vse v redu <tag>tac</tag> Na voljo ni še nobenih informacij <tag>tail</tag> Na voljo ni še nobenih informacij <tag>talk</tag> Na voljo ni še nobenih informacij <tag>tar</tag> Kot pri tar-1.13.17: v redu, če sta imeni uporabnika in skupine vedno zapisani v ASCII <tag>tclsh</tag> Na voljo ni še nobenih informacij <tag>tee</tag> Kot pri Sh-utils-2.0i: vse v redu <tag>telnet</tag> Na voljo ni še nobenih informacij <tag>test</tag> Kot pri sh-utils-2.0i: vse v redu <tag>time</tag> Na voljo ni še nobenih informacij <tag>touch</tag> Kot pri fileutils-4.0u: vse v redu <tag>tput</tag> Na voljo ni še nobenih informacij <tag>tr</tag> Na voljo ni še nobenih informacij <tag>true</tag> Kot pri Sh-utils-2.0i: vse v redu <tag>tsort</tag> Na voljo ni še nobenih informacij <tag>tty</tag> Kot pri sh-utils-2.0i: vse v redu <tag>type</tag> Na voljo ni še nobenih informacij <tag>ulimit</tag> Na voljo ni še nobenih informacij <tag>umask</tag> Na voljo ni še nobenih informacij <tag>umount</tag> Na voljo ni še nobenih informacij <tag>unalias</tag> Na voljo ni še nobenih informacij <tag>uname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>uncompress</tag> Na voljo ni še nobenih informacij <tag>unexpand</tag> Na voljo ni še nobenih informacij <tag>uniq</tag> Na voljo ni še nobenih informacij <tag>unlink</tag> Na voljo ni še nobenih informacij <tag>uudecode</tag> Na voljo ni še nobenih informacij <tag>uuencode</tag> Na voljo ni še nobenih informacij <tag>wait</tag> Na voljo ni še nobenih informacij <tag>wc</tag> Kot pri textutils-2.oe: wc ne more prešteti znakov, popravek je že posredovan vzdrževalcu <tag>who</tag> Kot pri sh-utils-2.0i: vse v redu <tag>wish</tag> Na voljo ni še nobenih informacij <tag>write</tag> Na voljo ni še nobenih informacij <tag>xargs</tag> Kot pri findutils-4.1.5: program uporabi strstr, popravek je že posredovan vzdrževalcu <tag>yacc</tag> Na voljo ni še nobenih informacij <tag>zcat</tag> Na voljo ni še nobenih informacij </descrip> <sect1>Preostali programi za X11 <p> Owen Taylor trenutno razvija knjižnico pango za prikaz večjezičnih besedil. Več o tem na <htmlurl url="http://www.labs.redhat.com/~otaylor/pango/" name="http://www.labs.redhat.com/~otaylor/pango/"> in <htmlurl url="http://www.pango.org/" name="http://www.pango.org/">. <sect>Tiskanje <p> Ker postscript sam po sebi ne podpira pisav Unicode, morajo vso odgovornost za podporo Unicode pri tiskanju prevzeti programi, ki naredijo datoteko v postscriptu, ne pa interpreter postscripta. Postscriptne pisave, ki so bile opažene doslej: (.pfa / .pfb / .afm / .pfm / .gsf) podpirajo samo majhno področje simbolov in niso pisave Unicode. <sect1>Tiskanje z uporabo pisav truetype <p> Tako uniprint kot wprint omogočata dobro tiskanje tekstovnih datotek, ki so kodirane po Unicode. Oba zahtevata nameščene pisave truetype. Oglejte si razdelek "Pisave truetype". Pisava Bitstream Cyberbit da dobre rezultate. <sect2>Uniprint <p> Program "uniprint", ki je del paketa Yudit, zna tekstovno datoteko pretvoriti v postscript. Da bo uniprint lahko našel pisavo Cyberbit, naredite simbolično povezavo na <tt>/usr/local/share/yudit/data/cyberbit.ttf</tt>. <sect2>Wprint <p> Program "wprint" (WorldPrint) (<htmlurl url="http://ttt.esperanto.org.uy/programoj/angle/wprint.html" name="http://ttt.esperanto.org.uy/programoj/angle/wprint.html">) avtorja Eduarda Trapanija naknadno obdela izhod v postscriptu, ki ga iz strani HTML ali tekstovnih datotek izdelata Netscape Communicator ali Mozilla. Rezultat je skorajda popoln, le v odstavkih s cirilico se najdejo nepravilni prelomi vrstic, saj so vrstice široke samo polovico pričakovane širine. <sect2>Primerjava <p> Pri tekstovnih datotekah je splošna razporeditev pri uniprintu nekoliko boljša, zato pa samo wprint pravilno izpiše besedila v tajščini. <sect1>Klasični pristop <p> Drug način za tiskanje s pisavami truetype je pretvorba te pisave v pisavo za postscript s pripomočkom <tt>ttf2pt1</tt> (<htmlurl url="http://www.netspace.net.au/~mheath/ttf2pt1/" name="http://www.netspace.net.au/~mheath/ttf2pt1/"> ali <htmlurl url="http://quadrant.netspace.net.au/ttf2pt1/" name="http://quadrant.netspace.net.au/ttf2pt1/">). Podrobnosti najdete v dokumentu Juliusa Chroboczeka "Printing with TrueType fonts in Unix" na naslovu <htmlurl url="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/printing.html" name="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/printing.html">. <sect2>TeX, Omega <p> Raziskati je treba še: CJK, metafont, omega, dvips, odvips, utf8-tex-0.1 <sect2>DocBook <p> Raziskati je treba še: db2ps, jadetex <sect2>Groff -Tps <p> "groff -Tps" naredi izhod v postscriptu. Njegov gonilnik za postscript podpira zelo omejen nabor znakov iz Unicode (samo tisto, kar postscript podpira že sam po sebi). <sect1>Ni bilo sreče z ... <sect2>Tiskanje iz Netscapa <p> V različici 4.72 Netscape Communicator ne zna pravilno natisniti strani HTML, ki so kodirane po UTF-8. Ne preostane vam drugega kot wprint. <sect2>Tiskanje iz Mozille <p> V različici M16 tiskanje očitno sploh ni izvedeno. <sect2>Html2ps <p> V različici 1.0b1 pretvornik iz HTML v postscript html2ps ne podpira po UTF-8 kodiranih strani HTML in ne zna ravnati s pisavami. To pomeni, da zmeraj uporablja standardne postscriptne pisave. <sect2>A2ps <p> V različici 4.12 a2ps ne podpira tiskanja besedil, kodiranih po UTF-8. <sect2>Enscript <p> V različici 1.6.1 enscript ne podpira tiskanja besedil, kodiranih po UTF-8. Privzeto uporablja samo standardne postscriptne pisave, mogoče pa je vključiti tudi druge pisave. <sect>Kaj storiti, da se bodo vaši programi "zavedali" standarda Unicode <p> <sect1>C/C++ <p> C-jevski tip `<tt>char</tt>' je 8-bitni in bo tak tudi ostal, ker je tolikšna najmanjša naslovljiva podatkovna enota. Na voljo je več pripomočkov: <sect2>Za običajno ravnanje z besedilom <p> Standard ISO/ASCII obsega v skladu z dopolnili iz leta 1995 tip "širokega znaka" (angl. "wide character") `<tt>wchar_t</tt>', nabor "dvojnikov" funkcij iz <tt><string.h></tt> in <tt><ctype.h></tt> (deklarirane so v <tt><wchar.h></tt> in <tt><wctype.h></tt>) in nabor funkcij za pretvorbo iz enega tipa v drugega (deklarirane so v <tt><stdlib.h></tt>). Dobre reference za ta programerski vmesnik so <itemize> <item> The GNU libc-2.1 Manual, poglavji 4 "Character Handling" (ravnanje z znaki) in 6 "Character Set Handling" (ravnanje z nabori znakov) <item> priročniške strani <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/man-mbswcs.tar.gz" name="man-mbswcs.tar.gz">, zdaj se jih dobi tudi na lokaciji <htmlurl url="ftp://ftp.win.tue.nl/pub/linux-local/manpages/man-pages-1.29.tar.gz" name="ftp://ftp.win.tue.nl/pub/linux-local/manpages/man-pages-1.29.tar.gz"> <item> predstavitev skupine OpenGroup: <htmlurl url="http://www.unix-systems.org/version2/whatsnew/login_mse.html" name="http://www.unix-systems.org/version2/whatsnew/login_mse.html">, <item> Specifikacije Single Unix iste skupine: <htmlurl url="http://www.UNIX-systems.org/online.html" name="http://www.UNIX-systems.org/online.html">, <item> Standard ISO/IEC 9899:1999 (ISO C 99). Zadnji osnutek pred sprejetjem se imenuje n2794. Najdete ga na naslovu <htmlurl url="ftp://ftp.csn.net/DMK/sc22wg14/review/" name="ftp://ftp.csn.net/DMK/sc22wg14/review/"> ali <htmlurl url="http://java-tutor.com/docs/c/" name="http://java-tutor.com/docs/c/">. <item> Predstavitev Cliva Featherja na <htmlurl url="http://www.lysator.liu.se/c/na1.html" name="http://www.lysator.liu.se/c/na1.html">, <item> Dinkumwarov referenčni priročnik h knjižnici C: <htmlurl url="http://www.dinkumware.com/htm_cl/" name="http://www.dinkumware.com/htm_cl/">. </itemize> Prednosti uporabe tega programerskega vmesnika: <itemize> <item> Od izdelovalcev neodvisen standard <item> Funkcije naredijo pravo stvar, odvisno od uporabnikove nastavitve locale. V programu je treba le poklicati funkcijo <tt>setlocale(LC_ALL,"");</tt>. </itemize> Pomanjkljivosti tega programerskega vmesnika: <itemize> <item> Nekatere funkcije niso varne v večnitnem (angl. multithread) delovanju, saj obdržijo skrito notranje stanje med klici funkcij. <item> Ni prvorazrednega podatkovnega tipa za locale. Zato tega programerskega vmesnika ni pametno uporabljati povsod, kjer je hkrati potrebnih več localov ali naborov znakov. <item> V nekaterih operacijskih sistemih ni dobre podpore temu programerskemu vmesniku. </itemize> <sect3>Opombe o prenosljivosti <p> Tip `<tt>wchar_t</tt>' je lahko ali pa tudi ne kodiran po Unicode. To je odvisno od sistema in včasih tudi od nastavitev locale. Enako velja za kodiranje večzložne sekvence `<tt>char *</tt>' po UTF-8. Podrobneje o tipu '<tt>wchar_t</tt> pravi <htmlurl url="http://www.UNIX-systems.org/online.html" name="Single Unix specification"> tole : <em> Vse kode za "široke" znake v danem procesu so sestavljene iz enakega števila bitov. To je v nasprotju z znaki, ki so lahko sestavljeni iz spremenljivega števila zlogov. Zlog ali zaporedje zlogov, ki predstavlja znak, je lahko predstavljen tudi kot koda "širokega" znaka. Kode "širokih" znakov tako omogočajo uniformno velikost za ravnanje s tekstovnimi podatki. Koda "širokega" znaka, pri kateri so vsi biti enaki 0, je znak 'null' za "široke" znake in označuje konec niza iz "širokih" znakov. Vrednost "širokega" znaka za vsakega člana prenosnega nabora znakov </em> (tj. ASCII) <em> bo enaka svoji vrednosti, ko se jo uporabi kot osamljen znak v celoštevilski znakovni konstanti. Kode "širokih" znakov za druge znake so odvisne od locale in od izvedbe. Zlogi za stanje premika nimajo predstavitve med "širokimi" znaki. </em> Posledica tega je, da v prenosljivih programih ne smete uporabljati ne-ASCII znakov v konstantnih nizih. To pomeni, da četudi poznate kodi Unicode za dvojni narekovaj (U+201C in U+201D), v programih v jeziku C ne smete zapisati niza <tt>"\u201cLep pozdrav,\u201d je rekel"</tt> ali <tt>"\xe2\x80\x9cLep pozdrav,\xe2\x80\x9d" je rekel"</tt>. Namesto tega uporabite GNU gettext in isto stvar napišite kot <tt>gettext("'Lep pozdrav,' je rekel")</tt> in naredite zbirko podatkov sporočil sl.po, ki "'Lep pozdrav,' je rekel" prevede v "\u201cLep pozdrav,\u201d je rekel". Sledi prikaz prenosljivosti pripomočkov za ISO/ANSI C med različnimi vrstami Unixa. GNU glibc-2.2 podpira vse izmed njih, trenutna slika pa je taka. <descrip> <tag>GNU glibc-2.0.x, glibc-2.1.x</tag> <itemize> <item><wchar.h> in <wctype.h> obstajata. <item>Obstajata funkciji wcs in mbs, ne pa fgetwc, fputwc in wprintf. <item>Locale za UTF-8 ne obstaja <item>mbrtowc vrne EILSEQ za zloge, ki so večji ali enaki 0x80. </itemize> <tag>AIX 4.3</tag> <itemize> <item><wchar.h> in <wctype.h> obstajata. <item>Obstajata funkciji wcs in mbs, prav tako fgetwc, fputwc, wprintf idr. <item>Precej localov za UTF-8, po eden za vsako državo. <item>Za definiranje mbstate_t je potreben -D_XOPEN_SOURCE=500. <item>mbrtowc deluje. </itemize> <tag>Solaris 2.7</tag> <itemize> <item><wchar.h> in <wctype.h> obstajata. <item>Obstajata funkciji wcs in mbs, prav tako fgetwc, fputwc, wprintf idr. <item>Ima naslednje locale za UTF-8: en_US.UTF-8, de.UTF-8, es.UTF-8, fr.UTF-8, it.UTF-8, sv.UTF-8. <item>mbrtowc vrne -1/EILSEQ (namesto -2) za zloge, ki so večji ali enaki 0x80. </itemize> <tag>OSF/1 4.0d</tag> <itemize> <item><wchar.h> in <wctype.h> obstajata. <item>Obstajata funkciji wcs in mbs, prav tako fgetwc, fputwc, wprintf idr. <item>Ima dodan locale universal.utf8@ucs4, oglejte si "man 5 unicode". <item>mbrtowc ne pozna UTF-8. </itemize> <tag>Irix 6.5</tag> <itemize> <item><wchar.h> in <wctype.h> obstajata. <item>Obstajata funkciji wcs in mbs, prav tako fgetwc in fputwc, wprintf pa ne. <item>Nima večzložnih localov. <item>Vsebuje le deklaracijo za mbstate_t, ki bo verjetno definiran v prihodnosti. <item>Ne zajema mbrtowc. </itemize> <tag>HP-UX 11.00</tag> <itemize> <item><wchar.h> obstaja, <wctype.h> pa ne. <item>Obstajata funkciji wcs in mbs, prav tako fgetwc in fputwc, wprintf pa ne. <item>Obsega locale C.utf8. <item>Ne zajema mbstate_t. <item>Ne zajema mbrtowc. </itemize> </descrip> Posledično se priporoča uporaba funkcij wcsr in mbsr, ki ju je mogoče znova pognati in sta primerni za večnitno delovanje, pozabite pa na sisteme, ki teh funkcij nimajo (Irix, HP-UX, AIX), in uporabljajte vtičnico za locale, ki podpira UTF-8 - libutf8_plug.so (gl. spodaj) v sistemih, ki dovoljujejo prevajanje programov, ki uporabljajo ti funkciji wcsr in mbsr (Linux, Solaris, OSF/1). Podobno svetuje tudi Sun v <htmlurl url="http://www.sun.com/software/white-papers/wp-unicode/" name="http://www.sun.com/software/white-papers/wp-unicode/">, v razdelku "Internationalized Applications with Unicode": <em>Za pravilno krajevno prilagoditev programov upoštevajte naslednje napotke:</em> <enum> <item><em>Izogibajte se neposrednemu dostopu z Unicode. To je opravilo za lokalizacijski del vašega sistema.</em> <item><em>Uporabljajte model POSIX za vmesnik do večzložnih in "širokih" znakov.</em> <item><em>Uporabljajte samo programerske vmesnike, ki jih pozna lokalizacijski okvir za operacije z jezikovnimi in kulturnimi posebnostmi.</em> <item><em>Ostanite neodvisni od nabora znakov.</em> </enum> Če iz takega ali drugačnega razloga v delu programa zares morate predpostaviti, da je `wchar_t' Unicode (npr. če želite posebno obdelavo nekaterih znakov iz Unicode), morate ta kos programa narediti pogojno odvisen od rezultata funkcije <tt>is_locale_utf8()</tt>. Drugače boste pomešali vedenje programa v različnih localih in sistemih. Funkcija <tt>is_locale_utf8</tt> je deklarirana v <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/utf8locale.h" name="utf8locale.h"> in definirana v <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/utf8locale.c" name="utf8locale.c">. <sect3>Knjižnica libutf8 <p> Prenosljiva izvedba programerskega vmesnika ISO/ANSI C, ki podpira 8-bitne in UTF-8 locale, je v <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/utf8/libutf8-0.7.3.tar.gz" name="libutf8-0.7.3.tar.gz">. Prednosti: <itemize> <item> Prenosljiva podpora Unicode UTF-8 zdaj tudi pri operacijskih sistemih, v katerih podpora večzložnim znakom ne deluje ali celo sploh nimajo take podpore. <item> Ista binarna koda deluje v vseh operacijskih sistemih s podporo 8-bitnim in UTF-8 localom. <item> Ko izdelovalec operacijskega sistema doda ustrezno podporo večzložnim znakom, lahko to izkoristite z enostavnim vnovičnim prevajanjem brez uporabe stikala -DHAVE_LIBUTF8. </itemize> <sect3>Rešitev pri Plan9 <p> Operacijski sistem Plan9 (zvrst Unixa) uporablja UTF-8 za kodiranje znakov v vseh programih. Njegov tip za "široke" znake se imenuje `<tt>Rune</tt>' in ne `<tt>wchar_t</tt>'. Deli njegove knjižnice, avtor je Rob Pike, so dostopni na <htmlurl url="ftp://ftp.cdrom.com/pub/netlib/research/9libs/9libs-1.0.tar.gz" name="ftp://ftp.cdrom.com/pub/netlib/research/9libs/9libs-1.0.tar.gz">. Podobna knjižnica avtorja Alistairja G. Crooksa je na <htmlurl url="ftp://ftp.cdrom.com/pub/NetBSD/packages/distfiles/libutf-2.10.tar.gz" name="ftp://ftp.cdrom.com/pub/NetBSD/packages/distfiles/libutf-2.10.tar.gz">. V obeh knjižnicah je iskalnik po regularnih izrazih, ki se zaveda UTF-8. Pomanjkljivost tega programerskega vmesnika: <itemize> <item> UTF-8 je že vgrajen vanj, ne pa ponujen kot možnost. Programi, ki jih prevedete z njim, izgubijo podporo 8-bitnim naborom znakov, ki so še vedno pogosti v Evropi. </itemize> <sect2>Za grafični uporabniški vmesnik <p> V knjižnici Qt-2.0 (<htmlurl url="http://www.troll.no/" name="http://www.troll.no/">) je razred QString, ki pokriva celoten Unicode. Za pretvarjanje v/iz UTF-8 lahko uporabljate članski funkciji QString::utf8 in QString::fromUtf8. Funkcij QString::ascii in QString::latin1 se ne bi smelo več uporabljati. <sect2>Za naprednejše ravnanje z besedilom <p> Prej omenjene knjižnice izvedejo različice konceptov ASCII, ki se zavedajo Unicoda. Zdaj pa si oglejmo še knjižnice, ki imajo opravka s konceptom Unicode, npr. tretji tip črk (različen od malih in velikih črk), ločevanje slovničnih znamenj in simbolov, kanonična razgradnja, kombiniranje razredov, kanonično urejanje ipd. <descrip> <tag>ucdata-2.4</tag> Knjižnica ucdata ( <htmlurl url="http://crl.nmsu.edu/~mleisher/ucdata.html" name="http://crl.nmsu.edu/~mleisher/ucdata.html">) avtorja Marka Leisherja se ukvarja z lastnostmi znakov, pretvorbo iz malih v velike črke in nazaj, razstavljanjem in kombiniranjem razredov. Pridružen mu je tudi paket ure-0.5 (<htmlurl url="http://crl.nmsu.edu/~mleisher/ure-0.5.tar.gz" name="http://crl.nmsu.edu/~mleisher/ure-0.5.tar.gz">) za izvajanje regularnih izrazov pod Unicode. <tag>ustring</tag> Knjižnica za C++ ustring (<htmlurl url="http://ustring.charabia.net/" name="http://ustring.charabia.net/">) avtorja Rodriga Reyesa se ukvarja z lastnostmi znakov, pretvorbo iz velikih v male črke in nazaj, razstavljanjem, kombiniranjem razredov in obsega še izvajalnik regularnih izrazov za Unicode. <tag>ICU</tag> ICU pomeni International Components for Unicode (<htmlurl url="http://oss.software.ibm.com/icu/" name="http://oss.software.ibm.com/icu/">, glejte tudi <htmlurl url="http://oss.software.ibm.com/icu/icuhtml/API1.5/" name="http://oss.software.ibm.com/icu/icuhtml/API1.5/">). Zelo obsežna knjižnica podjetja IBM za internacionalizacijo s podporo nizom po Unicode, združevanju sredstev, oblikovanju številk, časa in datuma, sporočilom, povzemanju itd. Podprtih je veliko localov. Prenosljiva je v Unix in Win32, vendar se do konca (brez potrebnih naknadnih popravkov) prevede le pri libc6 v Linuxu, ne pa pri libc5. <tag>libunicode</tag> Gnomova knjižnica libunicode (<htmlurl url="http://cvs.gnome.org/lxr/source/libunicode/" name="http://cvs.gnome.org/lxr/source/libunicode/">) avtorja Toma Tromeyja in drugih pokriva pretvorbo iz enega nabora znakov v drugega, lastnosti znakov in razstavljanje. </descrip> <sect2>Za pretvarjanje <p> Na voljo sta dve vrsti knjižnic za pretvorbo, ki podpirata UTF-8 in precej 8-bitnih naborov znakov: <sect3>iconv <p> Izvedba knjižnice avtorja Ulricha Drepperja je v GNU glibc-2.1.3 (<htmlurl url="ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.1.3.tar.gz" name="ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.1.3.tar.gz">). Priročniške strani so na <htmlurl url="ftp://ftp.win.tue.nl/pub/linux-local/manpages/man-pages-1.29.tar.gz" name="ftp://ftp.win.tue.nl/pub/linux-local/manpages/man-pages-1.29.tar.gz">. Prenosljiva izvedba avtorja Bruna Haibla je na <htmlurl url="ftp://ftp.ilog.fr/pub/Users/haible/gnu/libiconv-1.3.tar.gz" name="ftp://ftp.ilog.fr/pub/Users/haible/gnu/libiconv-1.3.tar.gz">. Prenosljiva izvedba avtorja Konstantina Čugejeva (<htmlurl url="mailto:joy@urc.ac.ru" name="joy@urc.ac.ru">) pa je na voljo na <htmlurl url="ftp://ftp.urc.ac.ru/pub/local/OS/Unix/converters/iconv-0.4.tar.gz" name="ftp://ftp.urc.ac.ru/pub/local/OS/Unix/converters/iconv-0.4.tar.gz">. Prednosti: <itemize> <item> Knjižnica iconv je standardizirana po POSIX, programi, ki jo uporabljajo za pretvarjanje v/iz UTF-8, bodo delovali tudi v Solarisu. Vendar pa se imena naborov znakov nekoliko razlikujejo v različnih operacijskih sistemih, npr. "EUC-JP" pod glibc je "eucJP" pod HP-UX (uradno ime IANA za ta nabor znakov je "EUC-JP", tako da je to nedvomno zmota HP-UX). <item> V sistemih z glibc-2.1 ni potrebna nobena dodatna knjižnica. V drugih sistemih je potrebna ena izmed drugih dveh izvedb knjižnice. </itemize> <sect3>librecode <p> Librecode avtorja Françoisa Pinarda se dobi na naslovu <htmlurl url="ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz" name="ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz">. Prednosti: <itemize> <item> Podpora transliteraciji, tj. pretvorbi ne-ASCII znakov v zaporedja znakov ASCII, da se ohrani čitljivost tudi, kadar ni mogoča pretvorba brez izgub. </itemize> Pomanjkljivosti: <itemize> <item> Nestandarden programerski vmesnik <item> Počasna inicializacija. </itemize> <sect3>ICU <p> ICU pomeni International Components for Unicode in se ga dobi na <htmlurl url="http://oss.software.ibm.com/icu/" name="http://oss.software.ibm.com/icu/"> (glej tudi <htmlurl url="http://oss.software.ibm.com/icu/icuhtml/API1.5/" name="http://oss.software.ibm.com/icu/icuhtml/API1.5/">). Knjižnica IBM za internacionalizacijo ima tudi orodja za pretvorbo, ki so deklarirana v `<tt>ucnv.h</tt>'. Prednosti: <itemize> <item> Obsežen nabor podprtih kodiranj. </itemize> Pomanjkljivosti: <itemize> <item> Nestandarden programerski vmesnik </itemize> <sect2>Drugi pristopi <p> <descrip> <tag>libutf-8</tag> Libutf-8 avtorja G. Adama Stanislava (<htmlurl url="mailto:adam@whizkidtech.net" name="adam@whizkidtech.net">) obsega nove funkcije za sprotno pretvorbo v/iz po UTF-8 kodiranih tokov `FILE*'. Dobite jo na <htmlurl url="http://www.whizkidtech.net/i18n/libutf-8-1.0.tar.gz" name="http://www.whizkidtech.net/i18n/libutf-8-1.0.tar.gz">. Prednosti: <itemize> <item> Zelo majhna </itemize> Pomanjkljivosti: <itemize> <item> Nestandarden programerski vmesnik <item> UTF-8 je že vgrajen vanj in ni dodan kot možnost. Programi, ki se prevedejo s to knjižnico, izgubijo podporo 8-bitnih kodiranj, ki so še vedno pogosta v Evropi. <item> Namestitev ni enostavna, Makefile je treba ročno nastaviti, ni samodejnega nastavljanja </itemize> </descrip> <sect1>Java <p> Java ima podporo Unicodu že vgrajeno v jezik. Tip 'char' predstavlja znak po Unicode, razred `java.lang.String' pa predstavlja niz, sestavljen iz znakov Unicode. Java lahko skozi svoj okenski sistem AWT prikaže katerikoli znak iz Unicode, če: 1. ustrezno nastavite Javino sistemsko lastnost "user.language", 2. so definicije pisav /usr/lib/java/lib/font.properties.<it>jezik</it> ustrezno nastavljene, 3. so nameščene pisave, ki so določene v tej datoteki. Da bi lahko npr. prikazali japonske znake, morate najprej namestiti japonske pisave in pognati "java -Duser.language=ja ...". Mogoče je kombinirati nabore pisav: če želite hkrati prikazati zahodnoevropske, grške in japonske znake, morate narediti kombinacijo datotek "font.properties" (pokriva ISO-8859-1), "font.properties.el" (pokriva ISO-8859-7) in "font.properties.ja" v eno datotek. ??To ni preizkušeno?? Vmesnika java.io.DataInput in java.io.DataOutput zajemata metodi `readUTF' in `writeUTF'. Upoštevajte pa, da ne uporabljata UTF-8. Namesto tega uporabljata spremenjeno kodiranje UTF-8: znak NUL je kodiran kot dvozložno zaporedje 0xC0 0x80 namesto 0x00 in zlog 0x00 se doda na koncu. V tako kodiranih nizih so lahko znaki NUL in kljub vsemu ni treba, da se jim na začetek doda polje length. Zato lahko z njimi manipulirajo tudi Cjevske funkcije iz <string.h>, npr. strlen() in strcpy(). <sect1>Lisp <p> Standard Common Lisp določa dva znakovna tipa: `base-char' in `character'. Podpora Unicode je odvisna od izvedbe. Jezik določa tudi parameter za ključno besedo `:external-format' v `open' kot logično mesto za določanje nabora znakov ali kodiranja. Med brezplačnimi izvedbami Common Lispa samo CLISP (<htmlurl url="http://clisp.cons.org/" name="http://clisp.cons.org/">) podpira Unicode. Potrebujete različico CLISPA iz marca 2000 ali novejšo (<htmlurl url="ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz" name="ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz">). Tipa `base-char' in `character' sta ekvivalentna 16-bitnemu Unicode. Funkciji <tt>char-width</tt> in <tt>string-width</tt> omogočata programerski vmesnik, primerljiv z <tt>wcwidth()</tt> in <tt>wcswidth()</tt>. Kodiranje za vhodno izhodne operacije datotek, cevi ali omrežnih priključkov se lahko določi prek parametra `:external-format'. Kodiranja za tty in privzeta kodiranja za datoteke, cevi ali omrežne priključke so odvisna od locale. Med komercialnimi izvedbami Common Lispa: LispWorks (<htmlurl url="http://www.xanalys.com/software_tools/products/" name="http://www.xanalys.com/software_tools/products/">) podpira Unicode. Tip `base-char' je enakovreden ISO-8859-1, tip `simple-char' (podtip tipa `character') vsebuje vse znake iz Unicode. Kodiranje za vhod/izhod datotečnih operacij se lahko določi prek parametra `:external-format', npr. '(:UTF-8)'. Omejitve: kodiranja ni mogoče uporabljati za vhodno izhodne operacije omrežnih priključkov. Z urejevalnikom ni mogoče urejati datotek, kodiranih po UTF-8. Eclipse (<htmlurl url="http://www.elwood.com/eclipse/eclipse.htm" name="http://www.elwood.com/eclipse/eclipse.htm">) podpira Unicode. Oglejte si <htmlurl url="http://www.elwood.com/eclipse/char.htm" name="http://www.elwood.com/eclipse/char.htm">. Tip `base-char' je enakovreden ISO-8859-1, tip `character' pa zajema vse znake Unicode. Kodiranje za vhodno izhodne operacije nad datotekami se lahko določi s kombinacijo parametrov `:element-type' in `:external-format' k `open'. Omejitve: funkcije za lastnosti znakov so odvisne od locale. V izvirnih in prevedenih izvirnih datotekah ne more biti konstantnih nizov z znaki iz Unicode. Komercialna izvedba Common Lispa Allegro CL bo podpirala Unicode v prihajajoči različici 6.0. <sect1>Ada95 <p> Ada 95 je bila izdelana za podporo Unicode in standardna knjižnica Ada95 pozna posebna podatkovna tipa Wide_Character in Wide_String za ISO 10646-1 kot tudi številne pridružene funkcije. Prevajalnik GNU Ada95 (gnat-3.11 ali novejši) podpira UTF-8 kot zunanje kodiranje širokih znakov. To vam omogoča uporabo UTF-8 tako v izvirni kodi kot tudi v vhodno/izhodnih operacijah programov. Da v programu sprožite to možnost, uporabite "WCEM=8" v nizu FORM, ko odpirate datoteko in vklopite stikalo "-gnatW8" prevajalnika, če je izvirna koda kodirana po UTF-8. Podrobnosti si oglejte v referenčnih priročnikih za GNAT (<htmlurl url="ftp://cs.nyu.edu/pub/gnat/" name="ftp://cs.nyu.edu/pub/gnat/">) in Ada95 (<htmlurl url="ftp://ftp.cnam.fr/pub/Ada/PAL/userdocs/docadalt/rm95/index.htm" name="ftp://ftp.cnam.fr/pub/Ada/PAL/userdocs/docadalt/rm95/index.htm">). <sect1>Python <p> Python 2.0 (<htmlurl url="http://starship.python.net/crew/amk/python/writing/new-python/new-python.html#SECTION000300000000000000000" name="http://starship.python.net/crew/amk/python/writing/new-python/new-python.html">) bo podpiral Unicode. Imel bo tudi podatkovni tip `unicode', ki bo predstavljal niz v Unicode, modul `unicodedata' za lastnosti znakov in nabor pretvornikov za najpomembnejša kodiranja. Podrobnosti si oglejte na <htmlurl url="http://starship.python.net/crew/lemburg/unicode-proposal.txt" name="http://starship.python.net/crew/lemburg/unicode-proposal.txt">. <sect1>JavaScript/ECMAscript <p> Od Javascripta različice 1.3 naprej so nizi vedno kodirani po Unicode. Znakovnega tipa ni, lahko pa uporabljate označbo \uXXXX za znake iz Unicode znotraj nizov. Ne opravi se nobena notranja normalizacija, zato se pričakuje sprejem Unicode Normalization Form C, ki ga priporoča W3C. Za podrobnosti si oglejte <htmlurl url="http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#Unicode" name="http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#Unicode"> in <htmlurl url="http://developer.netscape.com/docs/javascript/e262-pdf.pdf" name="http://developer.netscape.com/docs/javascript/e262-pdf.pdf"> za popolno specifikacijo ECMAscript. <sect1>Tcl <p> Tcl/Tk je začel uporabljati Unicode kot osnovni nabor znakov v različici 8.1. Njegova notranja predstavitev nizov je UTF-8. Podpira označevanje \uXXXX za znake iz Unicode. Oglejte si <htmlurl url="http://dev.scriptics.com/doc/howto/i18n.html" name="http://dev.scriptics.com/doc/howto/i18n.html">. <sect1>Perl <p> Perl 5.6 notranje shranjuje nize v zapisu UTF-8, če na začetku skripta vnesete <tscreen><verb> use utf8; </verb></tscreen> <tt>length()</tt> vrne število znakov v nizu. Če vas zanimajo podrobnosti, si oglejte Perl-i18n FAQ na naslovu <htmlurl url="http://rf.net/~james/perli18n.html" name="http://rf.net/~james/perli18n.html">. <sect>Drugi viri informacij <p> <sect1>Dopisni seznami <p> Širok krog občinstva dosežete na naslednjih dopisnih seznamih. Upoštevajte, da morate tam, kjer stoji `na', dejansko vnesti `@' (zaradi preprečevanja nezaželenih sporočil). <sect2>linux-utf8 <p> Naslov: <tt>linux-utf8</tt> na <tt>nl.linux.org</tt> Ta dopisni seznam je namenjen internacionalizaciji z Unicode in zajema široko področje tem, od gonilnikov za tipkovnico do pisav za X11. Arhivi so na naslovu <htmlurl url="http://mail.nl.linux.org/linux-utf8/" name="http://mail.nl.linux.org/linux-utf8/">. Vpišete se tako, da na naslov <tt>majordomo</tt> na <tt>nl.linux.org</tt> pošljete sporočilo z vrstico "subscribe linux-utf8" v telesu sporočila. <sect2>li18nux <p> Naslov: <tt>linux-i18n</tt> na <tt>sun.com</tt> Ta dopisni seznam se osredotoča na organiziranje dela pri internacionalizaciji Linuxa in urejanju sestankov med ljudmi. Vpišete se tako, da na naslovu http://www.li18nux.org/ izpolnite obrazec in ga pošljete na naslov <tt>linux-i18n-request</tt> na <tt>sun.com</tt>. <sect2>unicode <p> Naslov: <tt>unicode</tt> na <tt>unicode.org</tt> Ta dopisni seznam se osredotoča na standardizacijo, nadaljnji razvoj standarda Unicode in s tem povezane tehnologije, kot npr. Bidi in algoritmi za sortiranje. Arhivi so na naslovu <htmlurl url="ftp://ftp.unicode.org/Public/MailArchive/" name="ftp://ftp.unicode.org/Public/MailArchive/">, vendar se ne posodabljajo redno. Podatke o vpisu najdete na <htmlurl url="http://www.unicode.org/unicode/consortium/distlist.html" name="http://www.unicode.org/unicode/consortium/distlist.html">. <sect2>Internacionalizacija X11 <p> Naslov: <tt>i18n</tt> na <tt>xfree86.org</tt> Ta dopisni seznam je namenjen tistim, ki se ukvarjajo z boljšo internacionalizacijo sistema X11/XFree86. Arhivi so na naslovu <htmlurl url="http://devel.xfree86.org/archives/i18n/" name="http://devel.xfree86.org/archives/i18n/">. Vpišete se tako, da pošljete sporočilo prijaznemu človeku na naslovu <tt>i18n-request</tt> na <tt>xfree86.org</tt> z razlago vaše motivacije. <sect2>Pisave za X11 <p> Naslov: <tt>fonts</tt> na <tt>xfree86.org</tt> Ta dopisni seznam je namenjen tistim, ki se ukvarjajo s pisavami Unicode in podsistemom pisav za sistem X11/XFree86. Arhivi so na <htmlurl url="http://devel.xfree86.org/archives/fonts/" name="http://devel.xfree86.org/archives/fonts/">. Vpišete se tako, da prezaposlenemu človeku na naslovu <tt>fonts-request</tt> na <tt>xfree86.org</tt> pošljete sporočilo z obrazložitvijo vaše motivacije. </article>