1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
|
.\" -*- nroff -*-
.\" Copyright (c) 1996 Eric S. Raymond <esr@thyrsus.com>
.\" and Andries Brouwer <aeb@cwi.nl>
.\"
.\" 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.
.\"
.\" This is combined from many sources, including notes by aeb and
.\" research by esr. Portions derive from a writeup by Ramon Czybora.
.\"
.TH CHARSETS 7 "5/11/1996" "Linux" "Manual do Programador Linux"
.SH NOME
charsets \- Conjuntos de caracteres e internacionalizao do ponto de vista do programador
.SH DESCRIO
O linux um sistema operacional internacional. Vrios de seus utilitrios
e drivers (inclusive o driver do console) suportam vrios conjuntos de caracteres,
inclusive acentos, ligaduras e marcaes diacrticas;
alm de outros alfabetos, inclusive o
grego, cirlico, rabe e hebraico.
.LP
Esta pgina d uma viso orientada ao programador das diferentes
normas de conjuntos de caracteres, explicando como elas se encaixam no linux.
Os padres abordados incluem ASCII, ISO 8859, KOI8-R, Unicode, ISO 2022 e
ISO 4873.
.SH ASCII
ASCII (American Standard Code For Information Interchange) um conjunto de caracteres
de 7 bits originalmente criado para o ingls americano. Atualmente
descrito pela norma ECMA-6.
.LP
H uma variante do ASCII que substitui o smbolo americano para a libra
com o smbolo britnico da libra esterlina. Este ASCII usado na
Gr-Bretanha, e chamado "UK ASCII",
sendo o americano designado "US ASCII".
.LP
Como o linux foi escrito para hardware americano, ele normalmente
suporta o ASCII americano
.SH ISO 8859
ISO 8859 um conjunto de 10 conjuntos de caracteres de 8 bits que comeam
com o ASCII americano (primeiros 128 caracteres), que so seguidos de caracteres
de controle invisveis (posies 128 a 159) e 96 grficos de largura fixa nas posies de 160 a 255.
.LP
Destes, o mais importante o ISO 8859-1 (Latin-1), que suportado pelo driver
do console linux, razoavelmente bem suportado pelo X11R6
e o conjunto base do HTML.
.LP
O suporte aos outros conjuntos do 8859 pelo console pode ser ativado por
utilitrios como
.BR setfont (8)
que modificam as aes do teclado e a tabela de grficos EGA
e usam a a tabela e fontes mapeada pelo usurio no controlador
do console.
.LP
Seguem descries breves de cada conjunto:
.TP
8859-1 (Latin-1)
Latin-1 serve para a maioria das linguas europias ocidentais como o
albans, catalo, dinamarqus, holands, ingls, finlands, francs, alemo,
galcio, irlands, islands, italiano, noruegu6es, portugus, espanhol e sueco.
A falta de ligaduras ij (holands), oe (francs) e das aspas ,, e `` do alemo
tolervel.
.TP
8859-2 (Latin-2)
Latin-2 serve para a maiora das linguas eslavas e centro-europias de
escrita latina, tais como: croata, tcheco, alemo, hngaro, polons, romeno,
eslovaco e esloveno.
.TP
8859-3 (Latin-3)
Latin-3 muito utilizado por quem escreve em esperanto, galcio, malts e turco.
.TP
8859-4 (Latin-4)
Latin-4 contm letras para o estoniano, ltvio e lituano. Est
basicamente obsoleto, veja 8859-10 Latin-6.
.TP
8859-5
Cirlico. Suporta blgaro, bielorusso, macednio,
russo, srvio e ucraninano. Os ucranianos lem a letra 'ghe' 'heh',
e precisariam de um ghe acentuado para escrever esta letra corretamente.
Veja a discusso sobre o KOI8-R abaixo.
.TP
8859-6
Suporta rabe. A tabela de glifos do 8859-6 uma fonte fixa com formas
separadas. Para exibi-las, um driver tem que conbin-las usando as formas
iniciais, mdia e final.
.TP
8859-7
Suporta o grego moderno.
.TP
8859-8
Suprota hebraico.
.TP
8859-9 (Latin-5)
Uma variante do Latin-1 que substitui letras islandesas raramente
usadas por letras turcas.
.TP
8859-10 (Latin-6)
Latin 6 contm as letras inuit (Groelandesas) e sami (lapnicas)
ausantes do latin-4 de modo a abranger toda a rea nrdica. O RFC 1345
contm um 'latin6' preliminar que diferente. O sami skolt requer alguns
acentos que esto ausentes nesta verso.
.TP
8859-13 (Latin-7)
.TP
8859-14 (Latin-8)
.TP
8859-15
Acrescenta o sinal de euro e as ligaduras francesas que esto ausentes
no Latin-1.
.SH KOI8-R
KOI8-R um conjunto de caracteres no ISO muito usado na Rssia. A metade
inferior ASCII americano, e a superior um conjunto de caracteres
cirlicos um pouco melhor projetado que o do ISO 8859-5.
.LP
O suporte a KOI8-R pelo console acionado por utilitrios que modificam
o mapeamento do teclado e a tabela de grficos EGA, utilizando a tabela
de mapeamento pelo usurio no driver do console.
.SH UNICODE
Unicode (ISO 106460 uma norma que visa representar sem ambigidade todos
os smbolos usados em linguagens humanas. A encodificao em 32 bits
(as verses mais antigas usam 16 bits). Mais informaes sobre o Unicode
em <http://www.unicode.com>.
.LP
O linux representa o unicode com o Unicode transfer Format (UTF-8) de
8 bits. UTF-8 representa o Unicode com comprimento varivel, usando 1 byte
para 7 bits, 2 para 11 bits, 3 para 16 bits, 4 para 21 bits, 5 para 26 bits
e 6 para 31 bits.
.LP
Sejam 0,1,x um zero, um, ou bit arbitrrio. Um byte 0xxxxxxx representa
o caracter unicode 00000000 0xxxxxxx, que por sua vez codifica o mesmo
que 0xxxxxxx em ASCII. Assim, o ASCII no modificado pelo UTF-8, e as
pessoas que usem apenas ASCII no notaro nenhuma diferena: nem no
cdigo nem no tamanho do arquivo.
LP
Um byte 110xxxxx inicia um cdigo de 2 bytes, e a seqncia 110xxxxx
10yyyyyy traduzida para 00000xxx xxyyyyyy. Um byte 1110xxxx inicia
um cdigo de 3 bytes, e 1110xxxx 10yyyyyy 10zzzzzz traduzida para
xxxxyyyy yyzzzzzz. Quando se usa UTF-8 para o ISO 10646 de 31 bits,
esta progresso continua at cdigos de 6 bytes.
.LP
Para os usurios de ISO-8859-1 isto significa que os caracteres com o bit mais significativo
presente passam a ser codificados com dois bytes. Isto tende a aumentar o tamanho de arquivos de texto
em um ou dois porcento. No h problemas de converso, no entanto, porque
os valores unicode dos smbolos ISO-8859-1 so iguais aos valores originais no ISO 8859-1
(seguidos por oito bits zero). Para os usurios japoneses, isto
significa que os cdigos de 16 bits atualmente usados passam a necessitar de 3 bytes,
e so necessrias extensas tabelas de mapeamento. Muitos usurios japoneses
preferem o ISO 2022 por isso.
.LP
Observe que o UTF-8 auto-sincronizante: 10xxxxxx inicia, e todo o
resto do byte termina um cdigo. Observe ainda que bytes ASCII aparecem
em um fluxo UTF-8 representados unicamente do modo como eles aparecem.
especialmente importante que os NULs e '/' no so modificados.
.LP
Como o ASCII,o NUL e o '/' no so modificados, o kernel no percebe
que o UTF-8 est sendo usado. Ele no se importa com quais so os
significados dos bytes com que ele est lidando.
.LP
A traduo de streams unicode normalmente feita por tabelas 'subfont',
que associam subconjuntos do unicode a glifos. Internamente, o kernel
usa unicode para descrever a subfonte carregada na RAM de vdeo. Isto
significa que se pode usar um conjunto de caracteres com 512 smbolos
no modo UTF-8. Isto no suficiente para japons, chins ou coreano,
mas serve para a maioria das outras aplicaes.
.SH ISO 2022 AND ISO 4873
As normas ISO 2022 e 4873 descrevem um modelo de controle de fonte
baseado no VT100. Este modelo parcialmente suportado pelo kernel e
pelo
.BR xterm (1).
popular no Japo e na Coria.
.LP
H quatro conjuntos de caracteres grficos (G0, G1, G2 e G3), um
dos quais o conjunto atual de caracteres para cdigos com o bit
mais significativo ausente (inicialmente o G0), e um deles o
conjunto inicial para cdigos com este bit presente (inicialmente
o G1). Cada conjunto grfico tem 94 ou 96 caracteres, e
essencialmente um conjunto de 7 bits. Eles utilizam os cdigos de
040 a 0177 (ou 041 a 0176) ou de 0240 a 0377 (ou de 0241 a 0376).
G0 sempre tem 94 de tamanho e usa os cdigos de 041 a 0176.
.LP
A mudana entre os conjuntos de caracteres feita com as funes
de permuta ^N (SO ou LS1), ^O (SI ou LS0), ESC n (LS2), ESC o (LS3),
ESC N (SS2), ESC O (SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R).
A funo LS\fIn\fP aciona o conjunto de caracteres G\fIn\fP para
cdigos com o bit mais significativo ausente.
A funo LS\fIn\fPR aciona o conjunto de caracteres G\fIn\fP para
cdigos com o bit mais significativo presente.
A funo SS\fIn\fP aciona o conjunto de caracteres G\fIn\fP (\fIn\fP=2
ou 3) para o prximo caracter independente do valor de seu bit mais
significativo.
.LP
Os conjuntos de caracteres de 94 itens - designado G\fIn\fP -
podem ser ativados pelas seqncias 'ESC ( xx' (G0); 'ESC ) xx'
(G1), 'ESC * xx' (G2) e 'ESC + xx' (G3); onde xx um cdigo
definido pela norma ISO 2375 (conjunto internacional de conjuntos
de caracteres codificados).
Por exemplo, ESC ( @ seleciona o conjunto ISO 646 como G0,
ESC ( A seleciona o conjunto britnico de caracteres (com o
smbolo da libra ao invs do nmero), ESC ( B seleciona ASCII
(com o dlar no lugar do smbolo de moeda), ESC ( M seleciona
um conjunto de caracteres para linguagens africanas, ESC ( !
seleciona um conjunto de caracteres cubano, etc, etc.
.LP
Um conjunto de caracteres de 96 itens - designado G\fIn\fP -
ativvel pela seqncia ESC - xx (G1), ESC . xx (G2) ou ESC /
xx (G3).
Por exemplo, ESC - G seleciona o alfabeto hebraico como G1.
.LP
Um conjunto de caracteres com mltiplos bytes - designado G\fIn\fP -
acionado com as seqncias 'ESC $ xx' ou 'ESC $ ( xx' (G0),
'ESC $ ) xx' (G1), 'ESC $ * xx' (G2), 'ESC $ + xx' (G3). Por exemplo,
ESC $ ( C coloca o conjunto de caracteres coreano em G0.
O conjunto japons invocado por ESC $ B tem uma verso mais recente
selecionvel por 'ESC & @ ESC $ B'.
.LP
ISO 4873 define um conjunto de caracteres mais estreitos, no qual G0
fixo (sempre ASCII), do modo que G1, G2 e G3
s podem ser invocados por cdigos com o bit mais significativo presente.
Especificamente, ^N e ^O no so mais usados, ESC ( xx
pode ser usado apenas com xx=B; e ESC ) xx, ESC * xx e ESC + xx
equivalem a ESC - xx, ESC . xx e ESC / xx respectivamente.
.SH "VEJA TAMBM"
.BR console (4),
.BR console_ioctl (4),
.BR console_codes (4),
.BR ascii (7),
.BR iso_8859_1 (7),
.BR unicode (7),
.BR utf-8 (7)
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWPaulo Csar Mendes <drps@ism.com.br> (traduo)\fR
\&\fR\&\f(CWAndr L. Fassone Canova <lonelywolf@blv.com.br> (reviso)\fR
|