Provided by:
manpages-cs_0.17.20080113-1_all 
JMÉNO
Unicode - sjednocená 16-bitová znaková sada
POPIS
Mezinárodní standard ISO 10646 definuje Universal Character Set (UCS).
UCS obsahuje všechny znaky všech kódování znakových sad. Navíc
garantuje kompatibilitu zpětné konverze, to jest je možno postavit
konverzní tabulky tak, aby nedocházelo ke ztrátě informace při konverzi
z jiného kódování do UCS a zpět.
UCS obsahuje znaky potřebné pro téměř všechny známé jazyky. Mimo jiné
je to mnoho jazyků využívajících rozšíření latinky a také následující
jazyky a písma: řečtinu, azbuku, hebrejštinu, arabštinu, arménštinu,
gruzínštinu, japonštinu, čínštinu, korejské ideogramy Han, písma
Hiragana, Katakana, Hangul, Devangari, Bengali, Gurmukhi, Gujarati,
Oriya, Tamil, Telugu, Kannada, Malayalam, thajštinu, Lao, Khmer,
Bopomofo, tibetštinu, runové písmo, etiopštinu, kanadské slabiky,
Cherokee, mongolštinu, Ogham, barmštinu, sinhálštinu, Thaana, Yi a
mnoho jiných. Pracuje se na vložení dalších písem jako hieroglyfy a
různé historické indoevropské jazyky, eventuálně by mohly být začleněny
některé umělé jazyky, jako Tengwar, Cirth a klingonština. UCS navíc ke
znakům pro tyto jazyky obsahuje grafické, typografické, matematické a
vědecké symboly používané např. v TeXu, PostScriptu, APL, MS-DOSu, MS-
Windows, Macintosh, OCR, stejně tak jako v mnoha systémech pro
zpracování textu a publikování, které neustále přibývají.
Kódování UCS (ISO 10646) popisuje 31-bitovou znakovou sadu, sestávající
ze 128 24-bitových IR skupin , z nichž každá je rozdělena do 256
16-bitových planes(ploch), které se skládají z 256 8-bitových ad s 256
sloupci - pro každý znak jeden. Část 1 standardu (ISO 10646-1) definuje
prvních 65534 kódů (0x0000 až 0xfffd), tvoří tzv. Basic Multilingual
Plane (BMP), tj. plochu 0 ve skupině 0. Část 2 standardu (ISO 10646-2)
doplňuje znaky do skupiny 0 mimo BMP v několika doplkovch plochch v
rozsahu 0x100000 až 0x10ffff. Doplnění znaků nad 0x10ffff se neplánuje,
z celého kódového prostoru skupiny 0 bude tedy v dohledné budoucnosti
využita pouze malá část. BMP obsahuje všechny znaky, obsažené v obvykle
užívaných znakových sadách. Doplňkové plochy doplněné v ISO 10646-2
zahrnují pouze exotické znaky pro zvláštní vědecké použití, tisk
slovníků, publikování, vysokoúrovňové protokoly a nadšence.
Reprezentaci každého UCS znaku jako dvoubajtového slova se říká UCS-2
forma (jen pro znaky z BMP), zatímco UCS-4 je reprezentace každého
znaku čtyřbajtovým slovem. Navíc existují dvě formy kódování: UTF-8
pro zpětnou kompatibilitu s programy zpracovávajícími ASCII a UTF-16
pro zpětně kompatibilní zpracování znaků mimo BMP až do 0x10ffff
programy používajícími UCS-2.
Kódování UCS pro znaky mezi 0x0000 a 0x007f je totožné s běžnou sadou
US-ASCII a znaky mezi 0x0000 a 0x00ff jsou totožné se sadou ISO 8859-1
Latin-1.
Spojování znaků
Některé kódy v UCS jsou přiřazeny tzv. akcentům. Tyto jsou podobné
neposouvajícím znakům na psacím stroji. Akcent modifikuje předchozí
znak. Nejdůležitější znaky s akcenty sice mají své vlastní kódy v UCS,
ale akcentové znaky dovolují přidat libovolné diakritické znaménko k
libovolnému znaku. Akcent vždy následuje znak, který je modifikován.
Například, německý znak Umlaut-A ("Velké A v latince s umlautem") může
být reprezentován pomocí kódu UCS 0x00c4 a nebo alternativně jako
kombinace normálního velkého A, následovaného akcentem umlaut: 0x0041
0x0308.
Akcenty jsou nezbytné např. pro thajské písmo, pro matematické tisky a
pro uživatele Mezinárodní fonetické abecedy.
Úrovně implementace
Protože se neočekává,že všechny systémy budou podporovat všechny
varianty kódování, ISO 10646-1 definuje následující tři rovn
implementace UCS:
Level 1 Akcenty a znaky Hanghul Jamo (speciální, komplikované kódování
korejského písma, kde jsou jednotlivé symboly dány jako
sekvence dvou či tří znaků) nejsou podporovány.
Level 2 Jako level 1, přičemž některé kombinující znaky jsou povoleny
(např. pro thajštinu, Lao, hebrejštinu, arabštinu, Devangari,
Malayalam atd.
Level 3 Všechny znaky z UCS jsou povoleny.
Standard Unicode 3.0 publikovaný Unicode Consorciem sestává přesně z
UCS Basic Multilingual Plane na úrovni implementace level 3, definované
v ISO 10646-1:2000. Unicode 3.1 přidává doplňkové plochy z ISO
10646-2. Standard Unicode a technické zprávy, které Unicode Consotium
publikuje, obsahují mnoho dodatečných informací o semantice a
doporučených použitích různých znaků. Poskytují vodítka a algoritmy pro
editování, třídění, porovnávání, normalizování, konverzi a zobrazování
Unicode řetězců.
Unicode pod Linuxem
V GNU/Linuxu je datový typ jazyka C wchar_t definován jako 32 bitový
integer. Knihovna jazyka C jeho hodnoty vždy interpretuje jako kódové
hodnoty UCS (ve všech locale), což je konvence, kterou GNU knihovna
jazyka C oznamuje aplikacím definováním konstanty __STDC_ISO_10646__,
tj. tak, jak to určuje standard ISO C99. UCS/Unicode může být, stejně
jako ASCII, používáno ve vstupních a výstupních proudech, terminálové
komunikaci, souborech prostého textu, názvech souborů a proměnných
prostředí prostřednictvím ASCII kompatibilního vícebajtového kódování
UTF-8. K užívání UTF-8 jako kódování znaků pro všechny aplikace je
třeba vybrat vhodné locale pomocí proměnných prostředí (např.
"LANG=en_GB.UTF-8").
Funkce nl_langinfo(CODESET) vrací název zvoleného kódování. Knihovní
funkce jako wctomb(3) a mbsrtowcs(3) mohou být použity ke konverzi
interního typu wchar_t do kódování používaného systémem a naopak.
Funkce wcwidth(3) říká, kolik o pozic (0-2) postoupil kurzor po
vytištění znaku.
V Linuxu je obecně používána pouze BMP Level 1. Některé UTF-8
emulátory terminálů a ISO 10646 fonty (level 2) podporují až dva
akcenty pro jeden základní znak u některých písem (zejm. thajština),
ale obecně by tam, kde je to možné, měly být upřednostňovány znaky s
vlastními kódy. (Unicode to nazývá Normalization Form C).
Vyhrazená oblast
Kódy BMP, v intervalu 0xe000 do 0xf8ff nikdy nesmějí být definovány
standardem a jsou vyhrazeny pro privátní použití. Pro uživatele Linuxu
je tato oblast rozdělena na interval od 0xe000 do 0xefff, který je
určen pro individuální použití a tzv. Linuxovou zónu od 0xf000 do
0xf8ff, kde jsou rozšíření definována pro všechny instalace Linuxu.
Tato rozšíření jsou registrována (v současné době) H. Peter Anvinem
<Peter.Anvin@linux.org>.
Literatura
* Information technology -- Universal Multiple-Octet Coded Character
Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane.
International Standard ISO/IEC 10646-1, International Organization
for Standardization, Geneva, 2000.
Toto je oficiální specifikace UCS. Lze objednat jako PDF soubor na
CD-ROM z http://www.iso.ch/.
* The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-
Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.
* S. Harbison, G. Steele. C: A Reference Manual. Fourth edition,
Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Dobrá referenční kniha o jazyku C. Čtvrté vydání také zahrnuje
dodatek 1 z roku 1994 ke standardu ISO C 90, který přidává mnoho
knihovních funkcí pro práci s wide-byte a multi-byte kódováními, ale
ještě nezahrnuje ISO C99, které dále zlepšilo podporu těchto
kódování.
* Technické zprávy Unicode.
http://www.unicode.org/unicode/reports/
* Markus Kuhn: UTF-8 and Unicode FAQ for Unix/Linux.
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Obsahuje informace, jak se připojit ke e-mailové konferenci linux-
utf8, což je nejlepší místo pro hledání rady ohledně užívání Unicode
v Linuxu.
* Bruno Haible: Unicode HOWTO.
ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html
CHYBY
V době psaní tohoto manuálu byla podpora v Linux libc pro UTF-8 locales
hotova a podpora v XFree86 byla v pokročilém stadiu, ale práce na
tvorbě aplikací (zejm. editorů) vhodných pro použití v UTF-8 locale
ještě probíhaly. Současná obecná podpora UCS v Linuxu obvykle zahrnuje
CJK znaky s dvojitou šířkou a někdy i jednoduché akcenty, ale většinou
nezahrnuje podporu pro písma, která se píší zprava doleva nebo
požadavky na ligature substitution, jako např. hebrejština, arabština
nebo indická písma. Tato písma jsou v současnosti podporována pouze v
některých GUI aplikacích (prohlížeče HTML, textové procesory)
obsahujících sofistikované nástroje pro vykreslování textu.
VIZ TÉŽ
setlocale(3), charsets(7), utf-8(7)
TIRÁŽ
Tato stránka je součástí projektu Linux man-pages. Popis projektu a
informace o hlášení chyb najdete na http://www.kernel.org/doc/man-
pages/.