unicode(7)

NOME
unicode - conjunto de caracteres universal

DESCRIÇÃO
The international standard ISO/IEC 10646 defines the Universal Character Set (UCS). UCS contains all characters of all other character set standards. It also guarantees "round-trip compatibility"; in other words, conversion tables can be built such that no information is lost when a string is converted from any other encoding to UCS and back.

UCS contém os caracteres necessários para representar quase todas as línguas conhecidas. Isto inclui não somente a latina, grega, cirílica, hebraica, árabe, armênia e gregoriana, mas também chinesa, japonesa e coreana, como também as escritas em ideogramas hiragana, katakana, hangul, devangari, bengali, gurmukhi, gujarati, oriya, tamil, telugu, kannada, malaio, thai, lao, khmer, bopomofo, tibetana, rúnica, etíope, silábica canadense, cherokee, mongol, oghan, myanmar, sinhalam thaana, yi e muitas outras. Para escritas ainda não cobertas, pesquisas de como se fazer a codificação para o computador ainda são realizadas e elas serão eventualmente adicionadas. Isto não inclui somente símbolos gráficos e várias linguagens históricas indo-europeias mas, também, escritas artísticas como o tengwar, cirth e klingon. A UCS também incluí um grande número de símbolos gráficos, tipográficos, matemáticos e científicos, como aqueles fornecidos pelo Tex, PostScript, APL, MS-DOS, MS-Windows, Macintosh, fontes OCR e muitos sistemas de processamento de texto e de publicação, e mais será adicionado.

The UCS standard (ISO/IEC 10646) describes a 31-bit character set architecture consisting of 128 24-bit groups, each divided into 256 16-bit planes made up of 256 8-bit rows with 256 column positions, one for each character. Part 1 of the standard (ISO/IEC 10646-1) defines the first 65534 code positions (0x0000 to 0xfffd), which form the Basic Multilingual Plane (BMP), that is plane 0 in group 0. Part 2 of the standard (ISO/IEC 10646-2) adds characters to group 0 outside the BMP in several supplementary planes in the range 0x10000 to 0x10ffff. There are no plans to add characters beyond 0x10ffff to the standard, therefore of the entire code space, only a small fraction of group 0 will ever be actually used in the foreseeable future. The BMP contains all characters found in the commonly used other character sets. The supplemental planes added by ISO/IEC 10646-2 cover only more exotic characters for special scientific, dictionary printing, publishing industry, higher-level protocol and enthusiast needs.

A representação de cada caractere UCS como uma palavra de 2 bytes é referida pela forma UCS-2 (somente para caracteres BMP), enquanto que UCS-4 é a representação de cada caractere por uma palavra de 4 bytes. Adicionalmente, existem duas formas de codificação UTF-8 para tratamento de compatibilidade reversa com processamento ASCII e UTF-16 para tratamento de compatibilidade reversa com caracteres que não estejam no BMP para 0x10ffff para UCS-2.

Os caracteres UCS 0x0000 até 0x007f são idênticos ao clássico conjunto de caracteres US-ASCII e no intervalo de 0x000 até 0x00ff são idênticos ao ISO 8859-1 (Latin-1).

  Caracteres combinantes
Alguns pontos de código no UCS têm sido atribuídos aos caracteres combinantes. Estes são similares às teclas de acento de não-espaçamento em uma máquina de escrever. Um caractere combinante apenas acrescenta um acento a um caractere anterior. Os caracteres acentuados mais importantes têm seus próprios códigos no UCS, porém o mecanismo de caracteres combinantes permitem acrescentar acentos e outras marcas diacríticas a qualquer caractere. Os caracteres combinantes sempre seguem o caractere que eles modificam. Por exemplo, o caractere alemão Umlaut-A ("letra A maiúscula com trema") pode ser representado pelo código UCS pré-composto 0x00c4, ou alternativamente como a combinação de uma "letra A maiúscula" normal seguida de um "trema combinante": 0x0041 0x0308.

Caracteres combinantes são essencialmente para codificar a escrita thai ou tipografia matemática e usuários do Alfabeto Fonético Internacional.

  Níveis de implementação
As not all systems are expected to support advanced mechanisms like combining characters, ISO/IEC 10646-1 specifies the following three implementation levels of UCS:

Nível 1
    Caracteres combinantes e caracteres Hangul Jamo (uma codificação especial e mais complicada da escrita coreana, onde as sílabas Hangul são codificadas como dois ou três códigos vogal/consoante) não são implementados.

Nível 2
    Em adição ao nível 1, caracteres combinantes são agora permitidos para algumas línguas, onde são essenciais (por exemplo, thai, lao, hebraico, árabe, devangari, malaio, etc.).

Nível 3
    Todos os caracteres UCS são suportados.

The Unicode 3.0 Standard published by the Unicode Consortium contains exactly the UCS Basic Multilingual Plane at implementation level 3, as described in ISO/IEC 10646-1:2000. Unicode 3.1 added the supplemental planes of ISO/IEC 10646-2. The Unicode standard and technical reports published by the Unicode Consortium provide much additional information on the semantics and recommended usages of various characters. They provide guidelines and algorithms for editing, sorting, comparing, normalizing, converting, and displaying Unicode strings.

  Unicode no Linux
No GNU/Linux, o tipo C wchar_t é um tipo inteiro, com sinal, de 32 bits. Estes valores são sempre interpretados pela biblioteca C como código UCS (em todas as localizações), uma convenção que é assinalada pela biblioteca GNU C para aplicações pela definição da constante __STDC_ISO_10646__ como especificado no padrão ISO C99.

UCS/Unicode pode ser usado como ASCII nos fluxos de entrada/saída, comunicação de terminais, arquivos de texto simples, nomes de arquivos e variáveis de ambiente na codificação multibyte UTF-8, compatível ASCII. Para sinalizar o uso do UTF-8 como codificação caractere para todos aplicativos, uma localidade (locale) adequada deve ser selecionada pela variáveis de ambiente (por exemplo, "LANG=en_GB.UTF-8").

A função nl_langinfo(CODESET) retorna o nome da codificação selecionada. Bibliotecas de funções como wctomb(3) e mbsrtowcs(3) podem ser usadas para transformar os caracteres wchar_t e strings internas na codificação de caracteres do sistema, e vice-versa, e wcwidth(3) informa quantas posições (0–2) o cursor avança pela saída de um caractere.

  Área de Uso Privativo (PUA)
No Plano Multilíngue Básico, a faixa de 0xe000 até 0xf8ff nunca será atribuída a qualquer caractere pelo padrão, e é reservada para uso privativo. Para a comunidade Linux, esta área privativa foi dividida na faixa de x0e000 até 0xefff, que pode ser usada individualmente por algum usuário final, e a zona Linux na faixa de 0xf000 até 0xf8ff, onde as extensões são coordenadas entre todos os usuários Linux. O registro dos caracteres atribuídos à zona Linux é mantido por LANANA e o registro em si é Documentation/admin-guide/unicode.rst no código-fonte do kernel Linux (ou Documentation/unicode.txt antes do Linux 4.10).

Dois outros planos estão reservados para uso privativo: plano 15 (Área-A de Uso Privativo Suplementar, faixa de 0xf0000 até 0xffffd) e plano 16 (Área-B de Uso Privativo Suplementar, faixa de 0x100000 até 0x10fffd).

  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, Genebra, 2000.

    Esta é a especificação oficial do UCS. Disponível em 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: Um Manual de Referência. Quarta edição, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.

    Um bom livro de referência sobre a linguagem de programação C. A quarta edição agora cobre também a Emenda de 1994 para o padrão ISO do C 90, que acrescenta um grande número de novas funções da biblioteca C para manipulação de conjuntos de caracteres largos e multi-bytes, mas ele não cobre a ISO C 99, que aprimora o suporte a caracteres largos e multi-bytes.

•   Relatórios técnicos Unicode.
    http://www.unicode.org/reports/

•   Markus Kuhn: UTF-8 e Unicode FAQ para UNIX/Linux.
    http://www.cl.cam.ac.uk/~mgk25/unicode.html

•   Bruno Haible: Unicode HOWTO.
    http://www.tldp.org/HOWTO/Unicode-HOWTO.html

VEJA TAMBÉM
locale(1), setlocale(3), charsets(7), utf-8(7)

TRADUÇÃO
A tradução para português brasileiro desta página man foi criada por Rubens de Jesus Nogueira <darkseid99@usa.net>, André Luiz Fassone <lonely_wolf@ig.com.br> e Rafael Fontenelle <rafaelff@gnome.org>.

Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 (https://www.gnu.org/licenses/gpl-3.0.html) ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.

Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores (debian-l10n-portuguese@lists.debian.org).