UNICODE(7)

NOME
Unicode - o superconjunto unificado de caracteres de 16 bits

DESCRIÇÃO
O padrão internacional ISO 10646 define o Universal Character Set (UCS). UCS contém todos os caracteres de todos os outros padrões de conjuntos de caracteres. Ele também garante a compatibilidade retroativa ,isto é, as tabelas de conversão podem ser construídas de forma que nenhuma informação seja perdida quando uma string é convertida de qualquer outra codificação para UCS e vice-versa.

UCS contém os caracteres requeridos para representar quase todas as línguas conhecidas. Isto inclui a maioria das línguas que usam extensões da escrita latina, e também as seguintes escritas e línguas: grego, cirílico, hebraico, árabe, armênio, gregoriano, japonês, chinês, hiragana, katakana, coreano, hangul, devangari, bengali, gurmukhi, gujarati, oriya, tamil, telugu, kannada, malaio, thai, lao, bopomofo, e um muitas outras. Trabalha-se para que sejam incluídos mais escritas, como tibetano, khmer, rúnico, etíope, hieróglifos, várias línguas indo-européias, e muitas outras. Para muitas dessas escritas mais antigas, ainda não era claro como elas poderiam ser codificadas melhor quando o padrão foi publicado, em 1993. Além dos caracteres requeridos por essas escritas, foi incluído um grande número de símbolos gráficos, tipográficos, matemáticos e científicos, como aqueles fornecidos pelo Tex, PostScript, MS-DOS, Macintosh, Videotexto, OCR, e muitos sistemas de processamento de texto, além de códigos especiais que garantem compatibility retroativa para todos os outros padrões de conjuntos de caracteres existentes.

O padrão UCS (ISO 10646) descreve uma arquitetura de conjunto de caracteres de 31 bits, porém hoje apenas as primeiras 65534 posições de código (0x0000 to 0xfffd), que são chamadas de Plano Multilingual Básico (Basic Multilingual Plane - BMP), receberam a atribuição de caracteres, e é esperado que somente caracteres muito exóticos (por exemplo, hieróglifos) para propósitos científicos especiais terão lugar fora desse BMP de 16 bits.

Os caracteres UCS de 0x0000 a 0x007f são idênticos àqueles do conjunto clássico de caracteres US-ASCII , e os caracteres na faixa de 0x0000 a 0x00ff são idênticos àqueles no conjunto de caracteres ISO 8859-1 Latin-1

COMBINANDO CARACTERES
Alguns pontos de código no UCS têm sido atribuídos aos caracteres combinantes. Estes são similares às chaves 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 em UCS, porém o mecanismo de caracteres combinantes permitem acrescentar acentos e outras marcas diacríticas a qualquer caractere. Os caracteres combinantes sempres seguem o caractere que eles modificam. Por exemplo, o caractere alemão Umlaut-A ("letra A maiúscula com trema") pode ser representada por um 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.

NÍVEIS DE IMPLEMENTAÇÃO
Como nem todo sistema suporta mecanismos avançados, como caracteres combinantes, a ISO 10646 especifica os três seguintes níveis de implementação da 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 subcaracteres) não são implementados.

Nível 2
    Como o nível 1, porém em algumas escritas, alguns caracteres combinantes são permitidos (por exemplo, para hebraico, árabe, devangari, bengali, gurmukhi, gujarati, oriya, tamil, telugo, kannada, malaio, thai e lao).

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

O padrão Unicode 1.1 publicado pelo Unicode Consortium contém exatamente o Plano Multilingual Básico da UCS no nível 3 de implementação, como descrito na ISO 10646. O Unicode 1.1 também acrescenta algumas definições semânticas para alguns caracteres para as definições da ISO 10646.

UNICODE SOB LINUX
Sob o Linux, somente o nível de implementação 1 do BMP deve ser usado no momento, de forma a manter a complexidade de implementação dos caracteres combinantes baixos. Os níveis de implementação mais altos são mais confiáveis para formatos especiais de formatação de palavras, mas não como um conjunto de caracteres de um sistema genérico. O tipo do C wchar_t é, em Linux, um tipo inteiro de 32 bits com sinal, e seu valor é interpretado como um código UCS4

A configuração do locale especifica se a codificação de caractere do sistema é, por exemplo, UTF-8 ou ISO 8859-1. Funções de biblioteca, como wctomb, mbtowc, ou wprintf podem ser usadas para transformar os caracteres e strings wchar_t internos em codificação de caracteres do sistema, e vice-versa.

ÁREA PRIVATIVA
No BMP, a faixa de 0xe000 a 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 nas faixas: x0e000 a 0xefff pode ser usada individualmente por algum usuário final; e a zona Linux da faixa de 0xf000 a 0xf8ff onde as extensões são coordenadas entre todos os usuários Linux. O registro dos caracteres atribuídos à zona Linux é mantido atualmente por H. Peter Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. Ele contém alguns caracteres gráficos do VT100 da DEC, perdidos no Unicode, dá acesso direto aos caracteres no buffer de fontes do console, e contém os caracteres usados por escritas um pouco avançadas, como o Klingon.

LITERATURA

*   Tecnologia da informação - Conjunto Universal de Caracteres Codificados em Múltiplos Octetos (UCS) - Parte 1: Arquitetura e Plano Multilingual Básico. Padrão Internacional ISO 10646-1, Organização Internacional para Padronização, Genebra, 1993.

    Esta é a especificação oficial do UCS. Bem oficial, bem denso, e bem caro. Para informações sobre encomenda, verifique www.iso.ch.

*   O Padrão Unicode - Codificação Mundial de Caracteres Versão 1.0. O Consórcio Unicode, Addison-Wesley, Reading, MA, 1991.

    Já existe o Unicode 1.1.4 disponível. As mudanças para o livro do 1.0 estão disponíveis a partir de ftp.unicode.org. O Unicode 2.0 será publicado novamente como um livro em 1996.

*   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 (ISO/IEC 9899:1990), que acrescenta um grande número de novas funções da biblioteca C para manipulação de grandes conjuntos de caracteres.

PROBLEMAS
No momento em que esta página de manual foi escrita, o suporte da libc do Linux para o UCS estava longe de estar completo.

AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>

VEJA TAMBÉM
utf-8(7)

TRADUZIDO POR LDP-BR em 21/08/2000.
Rubens de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fassone Canova <lonelywolf@blv.com.br> (revisão)