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. Ta spis še vedno ni v dokončni različici. Avtor bo vesel vsakega dodatnega nasveta, popravka, kazalca ali URL povezave. </abstract> <toc> <sect>Uvod <p> <sect1>Zakaj Unicode? <p> Ljudje v različnih deželah uporabljajo različne črkopise za predstavitev besed v njihovih maternih jezikih. Dandanes je večina aplikacij, vključno s sistemi za elektronsko pošto in spletnimi brskalniki, čisto 8-bitnih, 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. Na svetu obstaja 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 se od časa do časa uvede kakšen nov znak. Uporabnik lahko naleti na naslednje probleme: <itemize> <item> Nemogoče je hraniti besedilo z znaki iz različnih naborov znakov. Na primer, v publikaciji v nemščini ali francoščini (ali tudi 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 tekstu. <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 v veliki večini ujema z ISO-8859-1, le da so odstranjeni nekateri redko uporabljani 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 začnejo vsakodnevno razmišljati o tem. Vendar bi računalniki morali stvari poenostaviti, ne pa še bolj zakomplicirati. </itemize> Rešitev tega problema 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/">). Za več informacij o Unicode vtipkajte `<tt>man 7 unicode</tt>' (to je priročniška stran, vsebovana v paketu man-pages-1.20). <sect1>Kodiranja po Unicode <p> Unicode resda lahko odpravi probleme različnih kodnih strani, prinese pa tehnični problem: kako zapisati Unicode znake 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 preko protokola TCP/IP. Uporaba enega zloga za predstavitev enega znaka je zgodovinsko naključje, predvsem posledica dejstva, da se je razvoj računalništva pričel v Evropi in ZDA, kjer je 96 znakov zadostovalo za dolgo vrsto let. V osnovi obstajajo štirje načini za kodiranje Unicodovih znakov 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 drugimi kitajski in japonski znaki). Ostalih 2147418112 znakov (ki še niso povsem določeni) se lahko kodira z uporabo 4, 5 ali 6 zlogov. Za več informacij o 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. Ta način kodiranja 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, ostali s štirimi. <tag>UCS-4</tag> Vsak znak je predstavljen s štirimi zlogi. </descrip> Prostorske zahteve za kodiranje besedil v primerjavi s trenutno uporabljanimi (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 krčenja. <descrip> <tag>UTF-8</tag> Nobene spremembe za US ASCII, samo nekaj odstotkov več za ISO-8859-1, 50% več za kitajske, japonske oz. korejske znake, 100% več za grške in cirilične znake. <tag>UCS-2 in UTF-16</tag> Nobene spremembe za kitajske, japonske oz. 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 oz. 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 "prizadane" evropske in severnoameriške uporabnike, se ne zdi verjetno, da bi omenjeni načini kodiranja kdaj bili sprejeti za široko uporabo. Microsoftov programerski vmesnik Win32 podpira UCS-2 vsaj od leta 1995, vendar ta način kodiranja še ni bil široko sprejet za uporabo, saj npr. na Japonskem še vedno prevladuje SJIS. Po drugi strani se zdi, da ima UTF-8 svetlejšo prihodnost pri široki uporabi, ker ne "kaznuje" evropskih in severnoameriških uporabnikov in ker precej programov za urejanje besedil sploh ne bo potrebno zamenjati zaradi podpore za UTF-8. V nadaljevanju bomo opisali, kako si nastavite vaš sistem Linux, da bo besedila kodiral po UTF-8. <sect2>Opombe za programerje v C/C++ <p> Microsoftov pristop Win32 razvijalcem olajša izdelavo različic programov, ki podpirajo Unicode. Na začetku programa je potrebno vnesti <tt>#define UNICODE</tt> in potem tako dolgo spreminjati `<tt>char</tt>' v `<tt>TCHAR</tt>', dokler se program ne prevede brez opozoril. Problem je, da na koncu dobite dve različici programa: ena "razume" po UCS-2 kodiran tekst, ne "razume" pa 8-bitnih kodiranj, druga pa "razume" samo stara 8-bitna kodiranja. Še več, pri UCS-2 in UCS-4 nastopi š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 obraten "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 se najprej pojavijo 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 US ASCII tekst ne glede na vse spremenljivke okolja in bo prepoznal tekst kodiran 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"> Primeri po UTF-8 kodiranih datotek: <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 vašo konzolo in nastavili X11 na vašo tipkovnico in locale. Ta postopek je razložen v spisu Danish/International HOWTO, kot tudi v ostalih 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 le probleme. <sect1>Linux konzola <p> O konzoli na tem mestu ne bo veliko govora, 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">) vsebujeta 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 se znaki iz Unicode vtipkani kot Alt-x1, ..., Alt-xn, (x1 - xn so tipke na numeričnem delu tipkovnice) oddajajo kodirani po UTF-8. Če vaša tipkovnica, natančneje vaša običajna razporeditev tipk, vsebuje 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. Paketa <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"> vsebujeta pisavo 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 izvršite "/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 leta 2000 je Edmund Thomas Grimley Evans (<htmlurl url="mailto:edmundo@rano.org" name="edmundo@rano.org">) izdelal terminalski emulator 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 potrebno izvesti po namestitvi pisav v imenik. <item> "xset fp+ <imenik>" doda imenik v trenutni seznam imenikov s pisavami za X strežnik. Če želite imenik dodati v seznam za stalno, dodajte vrstico "FontPath" v datoteko /etc/XF86Config, v razdelek "Files". <item> "xset fp rehash" je potrebno izvesti po klicu ukaza mkfontdir na imeniku, ki je že vsebovan v trenutnem seznamu imenikov s pisavami X strežnika. <item> "xfontsel" vam omogoča brskanje med nameščenimi pisavami 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. Primer je distribucija SuSE, kjer se v osnovnem paketu 'xf86' nahajajo le pisave 75dpi. Ostale pisave se nahajajo 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, te pisave so koristne tudi, če namesto GNU Emacsa raje uporabljate XEmacs ali Emacsa celo sploh ne uporabljate. </itemize> <sect1>Pisave Unicode za X11 <p> Programi, kjer ž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 narediti 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 s fiksno širino (fixed-width), kjer so po Unicode kodirane latinica, cirilica, grška, armenska, gruzinska, hebrejska in simbolna pisava. V enem kosu so pokrite pisave po standadih 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 se nahajajo 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 ogromen 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 s fiksno š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) vsebujejo podporo za 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 s fiksno širino. Za to je primeren ucs-fonts.tar.gz Markusa Kuhna (glejte 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 vaš $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 izbrisale 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 za znake 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 imajo fiksno širino in se jim ne da spreminjati velikosti. V nekaterih aplikacijah, še posebej v tistih za tiskanje, so nujno potrebne pisave z veliko ločljivostjo. Najpomembnejši tip 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 ostalih 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 vključno s kombiniranimi diakritičnimi oznakami. 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 nekatere kombinirane diakritične oznake. Če jih želite pobrati, z internetnimi iskalniki poiščite FTP strežnike 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 kombinirane diakritične oznake. Vsebovani so v IBMovemu JDK 1.3.0beta 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 lahko 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 lahko 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">. Več informacij o pisavah Truetype lahko 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 oz. xterm nastavljen na UTF-8, se nahaja 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. Glejte 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. Vzrok temu je dejstvo, da jedro za ime datoteke sprejme vse z izjemo 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 pojavilo kot ime iz 10 zlogov. Jedro ne "ve" (in mu tega tudi ni potrebno "vedeti"), da se ti zlogi prikažejo po grško. To je splošna teorija, dokler z datotekami upravlja samo Linux. V datotečnih sistemih, ki jih uporabljajo tudi drugi operacijski sistemi, 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 (t.j. ISO-8859-1), rezultati z oz. brez "utf8" 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> Ostali datotečni sistemi (nfs, smbfs, ncpfs, hpfs itd.) ne pretvarjajo imen, zato podpirajo Unicode imena datotek 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 ponovnih 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 ni pravilen. To odpravite na naslednji način: <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 ponovno 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 ponovno 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, ponovno 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 ponovno 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 na istem računalniku, kar pa dolgoročno ni preveč zabavno). Eden takšnih 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> Tukaj 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ši. Da ga prevedete na sistemih brez glibc2 (to so skoraj vsi sistemi Linux razen najnovejših), ga morate nastaviti z možnostjo "--disable-nls", sicer se ne bo povezal. Novejše različice s podporo za CJK se nahajajo 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 z 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">. Ostali 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 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 originalni nabor znakov, potem to pretvori v UTF-8. <sect1>Spremenljivke okoja 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 ostale spremenljivke LC_* <tag>LC_CTYPE, LC_MESSAGES, LC_COLLATE, LC_NUMERIC, LC_MONETARY, LC_TIME</tag> posamezne spremenljivke za: tip 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>' za podrobnejši opis.) Vsaka od spremenljivk LC_* in LANG lahko vsebuje 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 vsebuje več imen localov ločenih s podpičji. Da sistemu in vsem programom poveste, 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> potrebno spreminjati. GNU gettext ima možnost pretvoriti prevode v pravo kodiranje. Dokler ne izide glibc-2.2, je vse, kar morate storiti to, da nastavite 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>Izdelava 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> Tukaj 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 potrebno narediti localov "de", "fr" ali "sl" brez končnice za državo, ker te locale največkrat uporabljaja 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". Da dodate podporo za 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. Za več informacij 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 mrežo <p> <sect2>telnet <p> V nekaterih namestitvah telnet privzeto ni nastavljen na 8-bitni prenos. Da lahko pošiljate znake iz nabora Unicode na oddaljen računalnik, morate najprej nastaviti telnet na način "outbinary". To lahko storite na dva načina: <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 za TCP/IP in serijske povezave) v različici 7.0 ali novejši pozna kodiranji UTF-8 in UCS-2 za prenos podatkov, ravno tako pozna tudi terminalsko kodiranje po UTF-8. Zna tudi pretvarjati med obema kodiranjema in še med mnogimi drugimi kodiranji. Dokumentacijo za te značilnosti lahko 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> Mozilla milestone M16 ima internacionalizacijo rešeno precej bolje kot Netscape 4. Prikaže lahko dokumente HTML, kodirane po UTF-8 s podporo za več jezikov. Zato pa obstaja manjša lepotna napaka glede pisav CJK. Nekateri simboli so lahko večji od višine vrstice, tako da prekrijejo prejšnjo oz. 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'), kjer 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 ta nastavitev prične delovati v trenutnem teku brskalnika, jo morate potrditi na polju "Accept Changes" (sprejmi spremembe), da pa bo delovala vedno, morate izbrati polje "Save options to disk" (shrani možnosti na disk) in to potem 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 predpostavljen nabor znakov v "utf-8". Na zaslonu z možnostmi je tudi možnost, da nastavite "priljubljen nabor znakov v dokumentu" (angl. preferred document character set). Vendar to ne deluje, če se URL začne s 'file:/...' oz. če se začne s 'http://...' in se na strežniški strani nahaja Apache 1.3.0. Problem je tudi s presledki in s prelomom vrstic. Poglejte 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"> Izvorno 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 še v razvoju: <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 pri Lynxu. Uporaben je tudi kot zelo dober pretvornik iz HTML v tekst. 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 lahko 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 lokalne standarde znakov. Ima pripomočke za vnos besedila v vseh jezikih z angleško tipkovnico, kjer se uporabljajo nastivitve za razporeditve tipk. Prevesti ga je mogoče v treh različicah: Xlib GUI, KDE GUI ali Motif GUI. Prilagoditev je zelo lahka. Ponavadi si najprej prilagodite pisavo tako, da iz menija pisave (angl. font) izberete "Unicode". Nato izberete pisavo z velikostjo 13 (pri ukazu "xlsfonts '*-*-iso10646-1'" še vedno prihaja do nekaterih zmešnjav), 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". Za podrobnosti o ostalih vgrajenih načinih vnosa poglejte v /usr/local/share/yudit/data/. Da bo sprememba postala 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 jo Yudit lahko najde, 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) kot 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 izvorno 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 mednarodnih naborov 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 obstajata dva paketa za uporabo UTF-8 v Emacsu. Pri nobenem izmed njiju vam Emacsa ni potrebno še enkrat prrevajati. <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 širine 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 zamenjajo z U+FFFD. Da namestite 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 aktivirate preko menija 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 datoteko <tt>un-define.elc</tt> kot 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 v terminalskem načinu. Richard Stallman načrtuje, da bo dolgoročno dodal v Emacs integrirano podporo za 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 na naslednji način. Žal boste potrebovali izvorno 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 C-ju. V paketih tar se nahaja koda v elispu, ki omogoča precej kodnih tabel za prenose v in iz Unicode. Kot je razvidno iz imena datoteke .diff, se nanaša na XEmacs-21. Potrebno je bilo nekaj 'popravkov'. Najbolj opazna 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 kot 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 uporabljen 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 prične z -*- nekje med prvimi 600 zlogi datoteke, ki jo nameravate odpreti. Če se tam pojavi polje "Encoding: xyz;" in kodiranje 'xyz' obstaja, ga izberite. Sedaj 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 dodate 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. Ima tudi zelo dobre možnosti za vnos 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 menijem se prikaže kodiranje z "L:h" za 8-bitna kodiranja in "U:h" za UTF-8. Kliknite na prvega izmed teh znakov, da to spremenite. Mined pozna znake z dvojno širino ter kombinirane znake in jih tudi pravilno prikaže. Ima tudi lepo organizirane spuščajoče se menije, 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) se šteje, da je v zatonu, zato se naj 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 po UTF-8 kodirane datoteke po cevi v "mail" brez popravka oznak MIME ne be 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> Situacija za nepopravljen Pine različice 4.10 je naslednja. Pine ne izvaja pretvorb med nabori 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 o drugem naboru znakov vsakič, ko gledate po UTF-8 kodirano sporočilo. Teh opozoril se znebite, če izberete S (setup), zatem C (config), nato pa "character-set" nastavite na UTF-8. Na ta način ne boste storili nič posebnega, le opozoril ne bo več, saj Pine nima 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">, lokacija 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 za 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 potrebnega tudi nekaj malega ročnega posredovanja. Pošiljanje po UTF-8 kodiranih sporočil: ko odprete okno za sestavljanje sporočila (Compose), morate še pred začetkom pisanja sporočila v meniju 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. V meniju 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 lahko dobite na naslovu <htmlurl url="http://www.mutt.org/" name="http://www.mutt.org/">, ima zelo omejeno podporo za UTF-8. Za polno podporo je Edmund Grimley Evans naredil popravke, ki jih lahko 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 lahko prepozna in pravilno prikaže po UTF-8 kodirana sporočila (vendar brez znakov CJK), če v datoteko <tt>$HOME/.Xdefaults</tt> dodate 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, GNU izvedba tradicionalnega sistema troff/nroff za obdelavo besedil na 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 vsebujejo 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 se nahaja 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 po UTF-8 kodirane izvirnike. Trenutno je podprtih na tisoče znakov iz Unicode. Vse, kar se spremeni, je, 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>Podatkovne baze <p> <sect2>PostgreSQL <p> PostgreSQL 6.4 ali novejši lahko zgradite z naslednjo možnostjo nastavitve: <tt>--with-mb=UNICODE</tt>. <sect1>Ostali 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 podpira ta način kodiranja. Prepričajte se, da spremenljivka okolja LESSCHARSET ni nastavljena (ali da je nastavljena na utf-8). Če je nastavljena tudi spremenljivka LESSKEY, se prepričajte, da datoteka, na katero kaže, ne definira spremenljivke LESSCHARSET. Če je potrebno, 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 med nabori znakov. Če želite v z UTF-8 podprti konzoli pregledati po UTF-8 kodirane datoteke, vtipkajte "lv -Au8". Lahko pa ga uporabite tudi za pregledovanje po drugih kodiranjih CJK kodiranih datotek v konzoli s podporo za UTF-8. Program ima tudi majhno napakico: utripač (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 vključujeta tudi imenike, kjer 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 vključujeta imenike, kjer je nameščen libutf8. Prevedite vse skupaj. <sect2>Figlet <p> Figlet 2.2 vsebuje 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 to še ni uspelo :-). Pri glibc-2.2 bodo delovali le regularni izrazi z 8-bitnimi znaki. Pri locale za UTF-8 regularni izrazi, ki vsebujejo ne-ASCII znake ali kjer 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 še ni nobenih informacij <tag>ar</tag> Na voljo še ni nobenih informacij <tag>arch</tag> Na voljo še ni nobenih informacij <tag>arp</tag> Na voljo še ni nobenih informacij <tag>asa</tag> Na voljo še ni 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 še ni nobenih informacij <tag>bc</tag> Na voljo še ni nobenih informacij <tag>bg</tag> Na voljo še ni nobenih informacij <tag>bunzip2</tag> Na voljo še ni nobenih informacij <tag>bzip2</tag> Na voljo še ni nobenih informacij <tag>bzip2recover</tag> Na voljo še ni nobenih informacij <tag>cal</tag> Na voljo še ni nobenih informacij <tag>cat</tag> Na voljo še ni nobenih informacij <tag>cd</tag> Na voljo še ni nobenih informacij <tag>cflow</tag> Na voljo še ni 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 še ni nobenih informacij <tag>cmp</tag> Na voljo še ni nobenih informacij <tag>col</tag> Na voljo še ni nobenih informacij <tag>comm</tag> Na voljo še ni nobenih informacij <tag>command</tag> Na voljo še ni nobenih informacij <tag>compress</tag> Na voljo še ni nobenih informacij <tag>cp</tag> Kot pri fileutils-4.0u: vse v redu <tag>cpio</tag> Na voljo še ni nobenih informacij <tag>csplit</tag> Na voljo še ni nobenih informacij <tag>ctags</tag> Na voljo še ni nobenih informacij <tag>crontab</tag> Na voljo še ni nobenih informacij <tag>cut</tag> Na voljo še ni 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 še ni 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 še ni nobenih informacij <tag>dirname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>domainname</tag> Na voljo še ni 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 še ni 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 še ni nobenih informacij <tag>fg</tag> Na voljo še ni nobenih informacij <tag>file</tag> Na voljo še ni 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 še ni nobenih informacij <tag>ftp[BSD]</tag> Na voljo še ni nobenih informacij <tag>fuser</tag> Na voljo še ni nobenih informacij <tag>getconf</tag> Na voljo še ni nobenih informacij <tag>getopts</tag> Na voljo še ni nobenih informacij <tag>gunzip</tag> Na voljo še ni 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 potrebno: uporabiti gettext, klicati setlocale. V funkciji check_ofname (datoteka gzip.c) namesto spraševanja tipa da/ne uporabite funkcijo rpmatch. Uporaba funkcije strlen v gzip.c:852 je napačna, potrebno je uporabiti funkcijo mbswidth. <tag>hash</tag> Na voljo še ni nobenih informacij <tag>head</tag> Na voljo še ni 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 še ni nobenih informacij <tag>imake</tag> Na voljo še ni nobenih informacij <tag>insmod</tag> Na voljo še ni nobenih informacij <tag>ipchains</tag> Na voljo še ni nobenih informacij <tag>ipcrm</tag> Na voljo še ni nobenih informacij <tag>ipcs</tag> Na voljo še ni nobenih informacij <tag>ipmasqadm</tag> Na voljo še ni nobenih informacij <tag>jobs</tag> Na voljo še ni nobenih informacij <tag>join</tag> Na voljo še ni nobenih informacij <tag>kerneld</tag> Na voljo še ni nobenih informacij <tag>kill</tag> Na voljo še ni nobenih informacij <tag>killall</tag> Na voljo še ni nobenih informacij <tag>ksyms</tag> Na voljo še ni nobenih informacij <tag>ldd</tag> Na voljo še ni nobenih informacij <tag>less</tag> Na voljo še ni popolnih informacij <tag>lex</tag> Na voljo še ni nobenih informacij <tag>lilo</tag> Na voljo še ni nobenih informacij <tag>ln</tag> Kot pri fileutils-4.0u: vse v redu <tag>loadkeys</tag> Na voljo še ni nobenih informacij <tag>logger</tag> Na voljo še ni nobenih informacij <tag>Logname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>lp</tag> Na voljo še ni nobenih informacij <tag>lpc[BSD]</tag> Na voljo še ni nobenih informacij <tag>lpr[BSD]</tag> Na voljo še ni nobenih informacij <tag>lprm[BSD]</tag> Na voljo še ni nobenih informacij <tag>lpq[BSD]</tag> Na voljo še ni nobenih informacij <tag>ls</tag> Kot pri fileutils-4.oy: vse v redu <tag>lsmod</tag> Na voljo še ni nobenih informacij <tag>m4</tag> Na voljo še ni nobenih informacij <tag>mailx</tag> Na voljo še ni nobenih informacij <tag>make</tag> Na voljo še ni nobenih informacij <tag>mesg</tag> Na voljo še ni 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 še ni nobenih informacij <tag>mkswap</tag> Na voljo še ni nobenih informacij <tag>modprobe</tag> Na voljo še ni nobenih informacij <tag>more</tag> Na voljo še ni nobenih informacij <tag>mount</tag> Na voljo še ni nobenih informacij <tag>mv</tag> Kot pri fileutils-4.0u: vse v redu <tag>netstat</tag> Na voljo še ni nobenih informacij <tag>newgrp</tag> Na voljo še ni nobenih informacij <tag>nice</tag> Kot pri sh-utils-2.0i: vse v redu <tag>nl</tag> Na voljo še ni nobenih informacij <tag>nohup</tag> Kot pri sh-utils-2.0i: vse v redu <tag>nslookup</tag> Na voljo še ni nobenih informacij <tag>nm</tag> Na voljo še ni nobenih informacij <tag>od</tag> Na voljo še ni nobenih informacij <tag>passwd[BSD]</tag> Na voljo še ni nobenih informacij <tag>paste</tag> Na voljo še ni nobenih informacij <tag>patch</tag> Na voljo še ni nobenih informacij <tag>pathchk</tag> Kot pri sh-utils-2.0i: vse v redu <tag>ping</tag> Na voljo še ni nobenih informacij <tag>printf</tag> Kot pri sh-utils-2.0i: vse v redu <tag>pr</tag> Na voljo še ni nobenih informacij <tag>ps</tag> Na voljo še ni nobenih informacij <tag>pwd</tag> Kot pri sh-utils-2.0i: vse v redu <tag>read</tag> Na voljo še ni nobenih informacij <tag>rdev</tag> Na voljo še ni nobenih informacij <tag>reboot</tag> Na voljo še ni nobenih informacij <tag>renice</tag> Na voljo še ni nobenih informacij <tag>rm</tag> Kot pri fileutils-4.0u: vse vredu <tag>rmdir</tag> Kot pri fileutils-4.0u: vse vredu <tag>rmmod</tag> Na voljo še ni nobenih informacij <tag>shar[BSD]</tag> Na voljo še ni nobenih informacij <tag>shutdown</tag> Na voljo še ni nobenih informacij <tag>sleep</tag> Kot pri sh-utils-2.0i: vse v redu <tag>split</tag> Na voljo še ni nobenih informacij <tag>strings</tag> Na voljo še ni nobenih informacij <tag>strip</tag> Na voljo še ni 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 še ni nobenih informacij <tag>sum</tag> Kot pri textutils-2.0e: vse v redu <tag>tac</tag> Na voljo še ni nobenih informacij <tag>tail</tag> Na voljo še ni nobenih informacij <tag>talk</tag> Na voljo še ni 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 še ni nobenih informacij <tag>tee</tag> Kot pri Sh-utils-2.0i: vse v redu <tag>telnet</tag> Na voljo še ni nobenih informacij <tag>test</tag> Kot pri sh-utils-2.0i: vse v redu <tag>time</tag> Na voljo še ni nobenih informacij <tag>touch</tag> Kot pri fileutils-4.0u: vse v redu <tag>tput</tag> Na voljo še ni nobenih informacij <tag>tr</tag> Na voljo še ni nobenih informacij <tag>true</tag> Kot pri Sh-utils-2.0i: vse v redu <tag>tsort</tag> Na voljo še ni nobenih informacij <tag>tty</tag> Kot pri sh-utils-2.0i: vse v redu <tag>type</tag> Na voljo še ni nobenih informacij <tag>ulimit</tag> Na voljo še ni nobenih informacij <tag>umask</tag> Na voljo še ni nobenih informacij <tag>umount</tag> Na voljo še ni nobenih informacij <tag>unalias</tag> Na voljo še ni nobenih informacij <tag>uname</tag> Kot pri sh-utils-2.0i: vse v redu <tag>uncompress</tag> Na voljo še ni nobenih informacij <tag>unexpand</tag> Na voljo še ni nobenih informacij <tag>uniq</tag> Na voljo še ni nobenih informacij <tag>unlink</tag> Na voljo še ni nobenih informacij <tag>uudecode</tag> Na voljo še ni nobenih informacij <tag>uuencode</tag> Na voljo še ni nobenih informacij <tag>wait</tag> Na voljo še ni 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 še ni nobenih informacij <tag>write</tag> Na voljo še ni 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 še ni nobenih informacij <tag>zcat</tag> Na voljo še ni nobenih informacij </descrip> <sect1>Preostali programi za X11 <p> Owen Taylor trenutno razvija knjižnico pango za prikaz večjezičnih besedil. Več informacij 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. Obstoječe pisave postscript, ki so bile opažene do sedaj: (.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 prihaja do nepravilnih prelomov 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 pomočjo pripomočka <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 lahko 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 nič 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 pisave postscript. <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 pisave postscript, možno pa je vključiti tudi druge pisave. <sect>Kaj narediti, 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 s tekstom <p> Standard ISO/ASCII vsebuje 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 med tipoma (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 njegovim 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 proizvajalcev neodvisen standard <item> Funkcije naredijo pravo stvar, odvisno od uporabnikove nastavitve locale. V programu je potrebno 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 istočasno potrebnih več localov ali naborov znakov. <item> Pri nekaterih operacijskih sistemih ni dobre podpore za ta programerski vmesnik. </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 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 se sestojijo iz enakega števila bitov. To je v nasprotju z znaki, ki se lahko sestojijo 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, kjer 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> (t. j. ASCII) <em> bo enaka svoji vrednosti, ko se jo uporabi kot osamljen znak v celoštevilski znakovni konstanti. Kode "širokih" znakov za ostale 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 Unicode kodi za dvojni narekovaj (U+201C in U+201D), v programih v jeziku C ne smete zapisati niza <tt>L"\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 podatkovno bazo 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 takšna. <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, ravno 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, ravno 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, ravno 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, ravno tako fgetwc in fputwc, wprintf pa ne obstaja <item>Nima večzložnih localov. <item>Vsebuje le deklaracijo za mbstate_t, ki bo verjetno definiran v prihodnosti. <item>Ne vsebuje mbrtowc. </itemize> <tag>HP-UX 11.00</tag> <itemize> <item><wchar.h> obstaja, <wctype.h> pa ne. <item>Obstajata funkciji wcs in mbs, ravno tako fgetwc in fputwc, wprintf pa ne obstaja <item>Vsebuje locale C.utf8. <item>Ne vsebuje mbstate_t. <item>Ne vsebuje mbrtowc. </itemize> </descrip> Posledično se priporoča uporaba funkcij wcsr in mbsr, ki ju je mogoče ponovno pognati in sta primerni za večnitno delovanje, pozabite pa na sisteme, ki teh funkcij nimajo (Irix, HP-UX, AIX) in uporabljate vtičnico za locale, ki podpira UTF-8 - libutf8_plug.so (gl. spodaj) na 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 lokalizacijo 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 kakršnega koli 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>. Sicer boste pomešali obnašanje 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, se nahaja 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 za Unicode UTF-8 sedaj tudi pri operacijskih sistemih, kjer podpora za večzložne znake ne deluje ali celo sploh nimajo tovrstne podpore. <item> Ista binarna koda deluje v vseh operacijskih sistemih s podporo za 8-bitne in UTF-8 locale. <item> Ko proizvajalec operacijskega sistema doda ustrezno podporo za večzložne znake, lahko to izkoristite z enostavnim ponovnim 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 se nahaja 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">. Obe knjižnici vsebujeta 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 za 8-bitne nabore znakov, ki so še vedno pogosti v Evropi. </itemize> <sect2>Za grafični uporabniški vmesnik <p> Knjižnica Qt-2.0 (<htmlurl url="http://www.troll.no/" name="http://www.troll.no/">) vsebuje 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 s tekstom <p> Prej omenjene knjižnice izvedejo Unicoda zavedajoče se različice konceptov ASCII. Sedaj 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 med slovničnimi znamenji in simboli, 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 med malimi in velikim črkami, 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> Knižnica za C++ ustring (<htmlurl url="http://ustring.charabia.net/" name="http://ustring.charabia.net/">) avtorja Rodriga Reyesa se ukvarja z lastnostmi znakov, pretvorbo med velikimi in malimi črkami, razstavljanjem, kombiniranjem razredov in vključuje š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/">). IBMova zelo obsežna knjižnica za internacionalizacijo s podporo za nize po Unicode, združevanje sredstev, oblikovanje številk, časa, datuma, sporočil, povzemanje itd. Podprtih je veliko localov. Prenosljiva je na Unix in Win32, vendar se do konca (brez potrebnih naknadnih popravkov) prevede le pri libc6 na 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 Tromeya in ostalih pokriva pretvorbo med nabori znakov, lastnosti znakov in razstavljanje. </descrip> <sect2>Za pretvarjanje <p> Na voljo sta dve vrsti knjižnic za pretvorbo, ki podpirajo UTF-8 in precej 8-bitnih naborov znakov: <sect3>iconv <p> Izvedba knjižnice avtorja Ulricha Drepperja se nahaja 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 se nahajajo 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 se nahaja 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 pod Solarisom. Vendar pa se imena naborov znakov nekoliko razlikujejo med različnimi operacijskimi sistemi, 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> Na sistemih z glibc-2.1 ni potrebna nobena dodatna knjižnica. Na ostalih sistemih je potrebna ena izmed ostalih 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 za transliteracijo, t.j. pretvorba ne ASCII znakov v zaporedja znakov ASCII, da se ohrani berljivost 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/"> (glejte tudi <htmlurl url="http://oss.software.ibm.com/icu/icuhtml/API1.5/" name="http://oss.software.ibm.com/icu/icuhtml/API1.5/">). IBMova knjižnica 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>Ostali pristopi <p> <descrip> <tag>libutf-8</tag> Libutf-8 avtorja G. Adama Stanislava (<htmlurl url="mailto:adam@whizkidtech.net" name="adam@whizkidtech.net">) vsebuje 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 za 8-bitna kodiranja, ki so še vedno pogosta v Evropi. <item> Namestitev ni enostavna, Makefile je potrebno ročno nastaviti, ni samodejnega nastavljanja </itemize> </descrip> <sect1>Java <p> Java ima podporo za Unicode že vgrajeno v jezik. Tip 'char' predstavlja znak po Unicode in razred `java.lang.String' 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šcene pisave, ki so določene v tej datoteki. Da lahko npr. prikažete 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 vsebujeta 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. Tako kodirani nizi lahko vsebujejo znake NUL in kljub vsemu ni potrebno, 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 za 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 z 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 mrežnih priključkov se lahko določi preko parametra `:external-format'. Kodiranja za tty in privzeta kodiranja za datoteke, cevi oz.mrež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 ekvivalenten 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 preko parametra `:external-format', npr. '(:UTF-8)'. Omejitve: kodiranje se ne more uporabljati za vhodno izhodne operacije omrežnih priključkov. Z urejevalnikom ni mogoče urejati po UTF-8 kodiranih datotek. 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 vsebuje 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. Izvorne in prevedene izvorne datoteke ne morejo vsebovati konstantnih nizov z znaki iz Unicode. Komercialna izvedba Common Lispa Allegro CL bo vsebovala podporo za 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 zunaje kodiranje širokih znakov. To vam omogoča uporabo UTF-8 tako v izvorni kodi kot tudi v vhodno/izhodnih operacijah programov. Da v programu aktivirate to možnost, uporabite "WCEM=8" v nizu FORM, ko odpirate datoteko in vklopite prevajalnikovo stikalo "-gnatW8", če je izvorna koda kodirana po UTF-8. Za podrobnosti si oglejte referenčna priročnika 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 vseboval podporo za 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. Za podrobnosti si oglejte <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 pričel uoporabljati 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. Za podrobnosti si oglejte Perl-i18n FAQ na naslovu <htmlurl url="http://rf.net/~james/perli18n.html" name="http://rf.net/~james/perli18n.html">. <sect>Ostali viri informacij <p> <sect1>Dopisni seznami <p> Širok krog občinstva lahko 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 se nahajajo 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 se nahajajo na naslovu <htmlurl url="ftp://ftp.unicode.org/Public/MailArchive/" name="ftp://ftp.unicode.org/Public/MailArchive/">, vendar se ne posodabljajo redno. Za informacije o vpisu si oglejte <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 ljudem, ki se ukvarjajo z boljšo internacionalizacijo sistema X11/XFree86. Arhivi se nahajajo 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 prijazni osebi 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 ljudem, ki se ukvarjajo s pisavami Unicode in podsistemom pisav za sistem X11/XFree86. Arhivi se nahajajo na <htmlurl url="http://devel.xfree86.org/archives/fonts/" name="http://devel.xfree86.org/archives/fonts/">. Vpišete se tako, da prezaposleni osebi na naslovu <tt>fonts-request</tt> na <tt>xfree86.org</tt> pošljete sporočilo z obrazložitvijo vaše motivacije. </article>