UNICODE(7) Linux - prirucka programatora UNICODE(7)
JMENO
Unicode - sjednocena 16-bitova znakova sada
POPIS
Mezinarodni standard ISO 10646 definuje Universal Character Set (UCS).
UCS obsahujici vsechny znaky vsech kodovani znakovych sad. Navic garan-
tuje kompatibilitu zpetne konverze, to jest je mozno postavit konverzni
tabulky tak, aby nedochazelo ke ztrate informace pri konverzi do UCS a
zpet.
UCS obsahuje znaky potrebne pro temer vsechny zname jazyky. Mimo jine
je to mnoho jazyku vyuzivajicich rozsireni latinky a take nasledujici
jazyky a pisma: rectinu, azbuku, hebrejstinu, arabstinu, armenstinu,
gruzinstinu, japonstinu, cinstinu, skripty Hiragana, Katakana,
korejstinu, Hangul, Devangari, Bengali, Gurmukhi, Gujarati, Oriya,
Tamil, Telugu, Kannada, Malayam, Thai, Lao, Bopomofo, a mnoho jinych.
Pracuje se na vlozeni dalsich pisem jako tibetskeho, khmerskeho, run,
etiopskeho, hieroglyfu, ruznych indoevropskych jazyku a mnoha dalsich.
Pro vetsinu techto pisem nebylo v dobe vydani standardu v roce 1993
jasne jake kodovani zvolit. Navic ke znakum pro tyto jazyky je treba
jeste pridat mnoho grafickych, typografickych, matematickych a
vedeckych symbolu pouzivanych napr. v TeXu, PostScriptu, MS-DOSu, sada
pocitacu Macintosh, ve Videotexu, OCR, stejne tak jako mnoho
specialnich kodu, ktere garantuji zpetny preklad pro existujici znakove
sady.
Kodovani UCS (ISO 10646) popisuje 31-bitovou znakovou sadu, ackoli dnes
se z ni pouziva pouze prvnich 65534 kodu (0x0000 to 0xfffd), ktere jsou
nazvany Basic Multilingual Plane (BMP), pricemz se ocekava, ze jenom
velmi exoticke znaky, jako jsou napr. hieroglyfy pro zvlastni vedecke
pouziti, budou kodovany mimo 16-bitovy interval.
Kodovani UCS pro znaky mezi 0x0000 a 0x007f je totozne s beznou sadou
US-ASCII a znaky mezi 0x0000 a 0x00ff jsou totozne se sadou ISO 8859-1
Latin-1
SPOJOVANI ZNAKU
Nektere kody v UCS jsou prirazeny tzv. akcentum. Tyto jsou podobne
neposouvajicim znakum na psacim stroji. Akcent pridava modifikuje
predchozi znak. Nejdulezitejsi znaky s akcenty sice maji sve vlastni
kody v UCS, ale akcentove znaky dovoluji pridat libovolne diakriticke
znamenko k libovolnemu znaku. Akcent vzdy nasleduje znak, ktery je
modifikovan. Napriklad, nemecky znak Umlaut-A muze byt reprezentovan
pomoci kodu UCS 0x00c4 a nebo alternativne jako kombinace normalniho
velkeho A, nasledovaneho akcentem umlaut: 0x0041 0x0308.
UROVNE IMPLEMENTACE
Protoze se neocekava,ze vsechny systemy budou podporovat vsechny
varianty kodovani, ISO 10646 definuje nasledujici tri urovne implemen-
tace UCS:
Level 1 Akcenty a znaky Hanghul Jamo (specialni, komplikovane kodovani
korejskeho pisma, kde jsou jednotlive symboly dany jako
sekvence dvou ci tri znaku) nejsou podporovany.
Level 2 Jako level 1, pricemz nektere kombinujici znaky jsou povoleny
(napr. pro hebrejstinu, arabstinu, Devangari, Bengali, Gur-
mukhi, Gujarati, Oriya, Tamil, Telugo, Kannada, Malayalam,
Thai a Lao).
Level 3 Vsechny znaky z UCS jsou povoleny.
Standard Unicode 1.1 publikovany Unicode Consorciem sestava presne z
UCS Basic Multilingual Plane na urovni implementace level 3, definovane
v ISO 10646. Unicode 1.1 take pridava definice pro nektere znaky z ISO
10646.
UNICODE POD LINUXEM
Operacni system Linux podporuje v teto chvili pouze BMP urovne 1, pro
zachovani male slozitosti implementace. Vyssi urovne jsou nutne pro
specialni zpracovani textu, nikoli pro zakladni znakovou sadu. Datovy
typ jazyka C wchar_t je na Linuxu definovan jako 16 bitu bez znamenka a
je interpretovan jako UCS level 1 BMP kody.
Nastaveni locale urcuje jake je systemove kodovani znaku, napr. UTF-8
nebo ISO 8859-1. Knihovni funkce jako wctomb, mbtowc, nebo wprintf
mohou byt pouzity jako (oboustranne) konverzni do interniho typu
wchar_t pro znaky i retezce.
VYHRAZENA OBLAST
Kody BMP, v intervalu 0xe000 do 0xf8ff nikdy nesmeji byt definovany
standardem a jsou vyhrazeny pro privatni pouziti. Pro uzivatele Linuxu
je tato oblast rozdelena na interval od 0xe000 do 0xefff, ktery je
urcen pro individualni pouziti a tzv. Linuxovou zonu od 0xf000 do
0xf8ff, kde jsou rozsireni definovana pro vsechny instalace Linuxu.
Tato rozsireni jsou registrovana (v soucasne dobe) H. Peter Anvinem
<Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. Momentalne obsahuje
nektere graficke znaky z terminalu DEC VT100, ktere v Unicode chybi,
dale je zde primy vystup na font na konzoli a nektere znaky pro pismo
Klingonu.
LITERATURA
* Information technology - Universal Multiple-Octet Coded Character Set
(UCS) - Part 1: Architecture and Basic Multilingual Plane. Interna-
tional Standard ISO 10646-1, International Organization for Standar-
dization, Geneva, 1993.
Toto je oficialni specifikace UCS. Velmi oficialni, velmi tlusta a
velmi draha. Lze objednat na www.iso.ch.
* The Unicode Standard - Worldwide Character Encoding Version 1.0. The
Unicode Consortium, Addison-Wesley, Reading, MA, 1991.
V soucasne dobe je jiz k dispozici Unicode 1.1.4. Zmeny od verze 1.0
lze najit na ftp.unicode.org. Unicode 2.0 bude publikovano jako kniha
v roce 1996.
* S. Harbison, G. Steele. C - A Reference Manual. Fourth edition, Pren-
tice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Dobra referencni kniha o jazyku C. Ctvrte vydani take zahrnuje doda-
tek (ISO/IEC 9899:1990), ktery definuje mnoho knihovnich funkci pro
praci vetsi znakovou sadou.
CHYBY
V dobe psani tohoto manualu, podpora Linux libc pro UCS neni zdaleka
hotova.
AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
VIZ TEZ
utf-8(7)
Linux 17. cervence 1998 UNICODE(7)