.\" -*- nroff -*- .\" .\" Copyright (C) Markus Kuhn, 1995 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" .\" 1995-11-26 Markus Kuhn .\" First version written .\" .TH UNICODE 7 "27/12/1995" "Linux" "Manual do Programador Linux" .SH NOME Unicode \- o superconjunto unificado de caracteres de 16 bits .SH DESCRIÇÃO O padrão internacional .B ISO 10646 define o .BR "Universal Character Set (UCS)" . .B UCS contém todos os caracteres de todos os outros padrões de conjuntos de caracteres. Ele também garante a .BR "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 .B UCS e vice-versa. .B 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 .B 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 .BR "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 .B UCS de 0x0000 a 0x007f são idênticos àqueles do conjunto clássico de caracteres .B US-ASCII , e os caracteres na faixa de 0x0000 a 0x00ff são idênticos àqueles no conjunto de caracteres .B ISO 8859-1 Latin-1 . .SH COMBINANDO CARACTERES Alguns pontos de código no .B UCS têm sido atribuídos aos .BR "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 .BR 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 .B UCS pré-composto 0x00c4, ou alternativamente como a combinação de uma "letra A maiúscula" normal seguida de um "trema combinante": 0x0041 0x0308. .SH 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 .BR UCS: .TP 0.9i 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. .TP 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). .TP Nível 3 Todos os caracteres .B UCS são suportados. .PP O padrão Unicode 1.1 publicado pelo Unicode Consortium contém exatamente o .B 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. .SH UNICODE SOB LINUX Sob o Linux, somente o nível de implementação 1 do .B 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 .B wchar_t é, em Linux, um tipo inteiro de 32 bits com sinal, e seu valor é interpretado como um código .B UCS4 . A configuração do locale especifica se a codificação de caractere do sistema é, por exemplo, .B UTF-8 ou .BR "ISO 8859-1" . Funções de biblioteca, como .BR wctomb, .BR mbtowc, ou .B wprintf podem ser usadas para transformar os caracteres e strings .B wchar_t internos em codificação de caracteres do sistema, e vice-versa. .SH ÁREA PRIVATIVA No .BR 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 , 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. .SH LITERATURA .TP 0.2i * 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 .BR UCS . Bem oficial, bem denso, e bem caro. Para informações sobre encomenda, verifique www.iso.ch. .TP * 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. .TP * 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. .SH PROBLEMAS No momento em que esta página de manual foi escrita, o suporte da libc do Linux para o .B UCS estava longe de estar completo. .SH AUTOR Markus Kuhn .SH "VEJA TAMBÉM" .B utf-8(7) .SH TRADUZIDO POR LDP-BR em 21/08/2000. \&\fR\&\f(CWRubens de Jesus Nogueira (tradução)\fR \&\fR\&\f(CWAndré L. Fassone Canova (revisão)\fR