Provided by: manpages-pl_0.5-1_all bug

NAZWA

       Unicode - zunifikowany zestaw znaków

OPIS

       Międzynarodowy  standard  ISO  10646  definiuje Universal Character Set (UCS). UCS zawiera
       wszelkie znaki wszelkich innych zestawów znaków. Gwarantuje on również  kompatybilność  na
       okrągło,  tj.  budowanie  takich tablic konwersji, że podczas konwersji łańcucha z jednego
       kodowania na UCS i z powrotem nie jest tracona żadna informacja.

       UCS zawiera znaki wymagane  do  przedstawienia  praktycznie  wszystkich  znanych  języków.
       Obejmuje   to  nie  tylko  pismo  łacińskie,  greckie,  hebrajskie,  arabskie,  armeńskie,
       gruzińskie i cyrylicę, lecz także ideogramy chińskie, japońskie oraz koreańskie  Han,  jak
       również   następujące:  hiragana,  katakana,  hangul,  dewanagari,  bengalskie,  gurmukji,
       gujarati, oriya, tamil, telugu, kannada,  malajlamski,  tajski,  lao,  kmerski,  bopomofo,
       tybetański,  runiczne, etiopskie, kanadyjskie sylabiczne, cherokee, mongolskie, oghamskie,
       myanmar, sinhala, thaana, yi i inne. Nad pismami, które nie zostały jeszcze  uwzględnione,
       trwają prace nad najlepszym ich zakodowaniem do użytku komputerowego i ostatecznie zostaną
       one dodane. Ujęte mogą zostać w końcu nie tylko hieroglify  i  różne,  historyczne  języki
       indoeuropejskie,  lecz  także  wybrane pisma artystyczne, jak tengwar, cirth i klingoński.
       UCS  obejmuje  również  wiele  symboli  graficznych,  typograficznych,  matematycznych   i
       naukowych,  dostarczanych  z  TeX-em,  PostScriptem,  APL-em,  MS-DOS-em, Macintoshem oraz
       fontami OCR i  wieloma innymi systemami przetwarzania tekstów, a wciąż dodawane są nowe.

       Standard UCS (ISO 10646) opisuje zestaw znaków o architekturze 31-bitowej  składający  się
       ze  128  24-bitowych  grup,  z  których  każda  dzieli  się  na 256 16-bitowych płaszczyzn
       złożonych z 256 8-bitowych wierszy z 256 kolumnami, po  jednej  na  każdy  znak.  Pierwsza
       część  standardu  (ISO 10646-1) definiuje pierwsze 65534 pozycji (0x0000 do 0xfffd), która
       składa się na podstawową płaszczyznę wielojęzyczną (BMP) - ang. Basic Multilingual  Plane,
       która  jest 0. płaszczyzną w grupie 0. Druga część standardu (ISO 10646-2) dodaje znaki do
       grupy zerowej poza BMP w wielu płaszczyznach uzupełniających, w  zakresie  od  0x10000  do
       0x10ffff.  Nie  istnieją plany dodawania znaków poza  0x10ffff do standardu, zatem z całej
       przestrzeni kodu jedynie niewielka część grupy 0. może być kiedykolwiek faktycznie użyta w
       przewidywalnej przeszłości. BMP zawiera wszystkie znaki, które można znaleźć powszechnie w
       innych zestawach znaków. Płaszczyzny uzupełniające, dodane w ISO 10646-2 obejmują  jedynie
       bardziej  egzotyczne  znaki  o  specjalnym  zastosowaniu  naukowym,  do wydruku słowników,
       wydawnictw, wysokopoziomowych protokołów i potrzeb entuzjastów.

       Reprezentacja każdego znaku UCS jako 2-bajtowe słowo jest nazywana postacią  UCS-2  (tylko
       znaki  BMP),  podczas  gdy  UCS-4  jest  reprezentacją każdego znaku jako słowo 4-bajtowe.
       Dodatkowo, istnieją dwie postacie kodowania: UTF-8  w  celu  kompatybilności  wstecznej  z
       programami  przetwarzającymi ASCII i UTF-16, w celu kompatybilnej obsługi znaków spoza BMP
       - aż do 0x10ffff, przez programy UCS-2.

       Znaki UCS 0x0000 do 0x007f są identyczne z tymi w klasycznym zestawie znaków  US-ASCII,  a
       znaki  w  zakresie  0x000  do  0x00ff  są  identyczne  z tymi w zestawie znaków ISO 8859-1
       Latin-1.

   Znaki składające
       Niektóre punkty kodowe w UCS zostały przypisane do znaków składających.  Podobne są one do
       niespacyjnych  klawiszy  akcentów na maszynie do pisania. Znak składający dodaje akcent do
       poprzedniego znaku. Najważniejsze  znaki  akcentowane  mają  osobne  kody  w  UCS,  jednak
       mechanizm znaków składających pozwala dodawać akcenty i inne znaki diakrytyczne do każdego
       znaku.  Znaki składające zawsze następują po  znaku,  który  modyfikują.   Dla  przykładu,
       niemiecki  znak  A-umlaut ("Latin capital letter A with diaeresis") może być przedstawiony
       za pomocą bądź to istniejącego już złożonego znaku UCS o kodzie 0x00c4, bądź alternatywnie
       jako  kombinacja  zwykłych znaków "Latin capital letter A" i "combining diaeresis": 0x0041
       0x0308.

       Znaki składające są istotne na przykład do kodowania pisma tajskiego lub do składu  zapisu
       matematycznego oraz użytkowników międzynarodowego alfabetu fonetycznego (IPA).

   Poziomy implementacji
       Ponieważ  należy  się  spodziewać,  że  nie wszystkie systemy będą obsługiwać zaawansowane
       mechanizmy w rodzaju składania  znaków,  ISO  10646-1  określa  następujące  trzy  poziomy
       implementacji UCS:

       Poziom 1 Nieobsługiwane są znaki składane i Hangul Jamo (specjalne, bardziej skomplikowane
                kodowanie pisma koreańskiego, w którym sylaby Hangul są  kodowane  jako  dwa  lub
                trzy podznaki).

       Poziom 2 Oprócz zastrzeżeń poziomu 1, obsługiwane są znaki składające w przypadku języków,
                dla których są one istotne (np.  tajski,  lao,  hebrajski,  arabski,  dewanagari,
                malajski).

       Poziom 3 Obsługiwane są wszystkie znaki UCS.

       Unicode  3.0  Standard  opublikowany  przez Unicode Consortium zawiera dokładnie UCS Basic
       Multilingual Plane (płaszczyznę podstawową) w poziomie  implementacji  3,  zgodnie  z  ISO
       10646-1:2000. Unicode 3.1 dodaje płaszczyzny uzupełniające z ISO 10646-2. Standard Unikodu
       i dokumenty techniczne opublikowane przez Unicode Consortium zawierają  wiele  dodatkowych
       informacji  o  semantyce  i  zalecanym  użyciu  różnych  znaków.  Dostarczają  wskazania i
       algorytmy  do  edytowania,  sortowania,  porównywania,  normalizowania,  konwertowania   i
       wyświetlania łańcuchów Unikodu.

   Unikod w systemie Linux
       W  systemie  GNU/Linux,  typ  C wchar_t jest 32-bitową liczbą typu integer ze znakiem. Jej
       wartość są interpretowane przez bibliotekę C, zawsze jako wartości kodu UCS (we wszystkich
       ustawieniach  locale), a ta konwencja jest sygnalizowana przez bibliotekę GNU C w stosunku
       do aplikacji, przez zdefiniowane stałej __STDC_ISO_10646__, zgodnie ze standardem ISO C99.

       UCS/Unikod  może  być  używany  identycznie  jak  ASCII  w   łańcuchach   wejścia/wyjścia,
       komunikacji  terminalowej, plikach tekstowych, nazwach plików i zmiennych środowiskowych w
       wielobajtowym kodowaniu UTF-8 kompatybilnym z ASCII. Aby zasygnalizować używanie kodowania
       znaków  UTF-8  wszystkim  aplikacjom, należy wybrać odpowiednie locale za pomocą zmiennych
       środowiskowych (np. "LANG=pl_PL.UTF-8").

       Funkcja nl_langinfo(CODESET) zwraca nazwę wybranego kodowania. Funkcje biblioteczne, takie
       jak  wctomb(3)  i  mbsrtowcs(3)  mogą być używane do przekształcenia wewnętrznych znaków i
       łańcuchów wchar_t na kodowanie znaków systemowych i z powrotem,  a  wcwidth(3)  informuje,
       jak wiele pozycji (0–2) kursor przesunął się przez wyświetlenie znaku.

       Generalnie,  w  systemie  Linux  powinien  być używany jedynie poziom 1 implementacji BMP.
       Część emulatorów terminala UTF-8 i fontów ISO 10646  obsługuje  również  do  dwóch  znaków
       składających  na znak w przypadku określonych pism, w szczególności: tajskiego (poziom 2),
       ale ogólnie rzecz biorąc powinno się używać gotowych znaków, tam gdzie są  tylko  dostępne
       (Unikod nazywa to Normalization Form C).

   Obszar prywatny
       W  BMP,  kodom  z  zakresu  0xe000  do  0xf8ff  nigdy nie zostaną przypisane znaki; są one
       zarezerwowane do użytku prywatnego.  Dla społeczności Linuksowej ów obszar prywatny został
       dalej  podzielony  na  zakres od 0xe000 do 0xefff, którego może używać indywidualnie każdy
       użytkownik, oraz strefę linuksową w zakresie 0xf000 do 0xf8ff, której rozszerzanie podlega
       koordynacji  pomiędzy  wszystkimi  użytkownikami  Linuksa.  Rejestr znaków przypisanych do
       strefy Linuksowej utrzymuje obecnie H. Peter Anvin <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, Genewa, 2000.

         Jest to oficjalna specyfikacja UCS. Dostępna  jako  plik  PDF  na  CD-ROM-ie  ze  strony
         ⟨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.

         Dobra  książka-informator  języka  programowania  C.   Czwarte  wydanie obejmuje także 1
         Poprawkę do standardu ISO C90, która dodaje znaczną liczbę nowych funkcji bibliotecznych
         C  do  obsługi  szerokich  i   wielobajtowych  zestawów znaków, ale nie opisuje ISO C99,
         jeszcze bardziej poprawiającej obsługę znaków szerokich i wielobajtowych.

       * Unicode Technical Reports.
         ⟨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⟩

         Zawiera informacje o subskrypcji listy dyskusyjnej  linux-utf8,  która  jest  najlepszym
         miejscem do szukania porad na temat używania Unikodu w systemie Linux.

       * Bruno Haible: Unicode HOWTO.
         ⟨ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html

BŁĘDY

       Gdy  ta  strona  podręcznika  była  aktualizowana  po  raz ostatni, obsługa locale UTF-8 w
       bibliotece GNU C była już dojrzała, podobnie  jak  obsługa  XFree86,  która  również  była
       zaawansowana,  ale wciąż trwały prace nad programami (głównie edytorami), aby umożliwić im
       używanie locale UTF-8. Obecnie, obsługa UCS w systemie Linux obejmuje zwykle znaki  CJK  o
       podwójnej  szerokości,  a  niekiedy  nawet proste nakładanie znaków składających, lecz nie
       obejmuje najczęściej obsługi pism pisanych od prawej do lewej  lub  wymaganych  podstawień
       ligatur,  w  pismach  takich  jak  hebrajskie, arabskie lub indyjskie. Pisma te są obecnie
       obsługiwane jedynie  w  określonych  programach  z  interfejsem  graficznym  (przeglądarki
       internetowe, edytory tekstu) z zaawansowanymi silnikami renderowania tekstu.

ZOBACZ TAKŻE

       setlocale(3), charsets(7), utf-8(7)

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  3.52  projektu Linux man-pages. Opis
       projektu  oraz  informacje  dotyczące  zgłaszania  błędów  można   znaleźć   pod   adresem
       http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej strony podręcznika man są: Gwidon S. Naskrent
       (PTM) <naskrent@hoth.amu.edu.pl> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów  na
       stronie   http://sourceforge.net/projects/manpages-pl/.   Jest   zgodne   z  wersją   3.52
       oryginału.