157 lines
10 KiB
HTML
157 lines
10 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>Linux Portuguese-HOWTO: Informações gerais</TITLE>
|
|
<LINK HREF="Portuguese-HOWTO-3.html" REL=next>
|
|
<LINK HREF="Portuguese-HOWTO-1.html" REL=previous>
|
|
<LINK HREF="Portuguese-HOWTO.html#toc2" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Portuguese-HOWTO-3.html">Next</A>
|
|
<A HREF="Portuguese-HOWTO-1.html">Previous</A>
|
|
<A HREF="Portuguese-HOWTO.html#toc2">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="s2">2. Informações gerais</A></H2>
|
|
|
|
<H2><A NAME="ss2.1">2.1 Conjuntos de caracteres</A>
|
|
</H2>
|
|
|
|
<P>Um conjunto de caracteres é definido de acordo com os símbolos constantes no
|
|
alfabeto utilizado para escrita em uma ou mais línguas. A Organização
|
|
Internacional de Normas (<EM>International Standards Organization</EM> - ISO)
|
|
padronizou através da norma ISO-8859 vários desses conjuntos, identificados
|
|
por ISO-8859-<EM>x</EM> onde o <EM>x</EM> corresponde a um determinado alfabeto. O
|
|
conjunto ISO-8859 utiliza 8 bits para representar cada caracter, o que permite
|
|
uma gama de 256 sinais (valores de zero a 255). Em cada um dos conjuntos, os
|
|
códigos zero a 127 correspondem ao conjunto ASCII (<EM>American Standard Code
|
|
for Information Interchange</EM>) e os códigos 160 a 255 são usados para
|
|
caracteres nacionais.
|
|
<P>Para a língua portuguesa, recomenda-se o uso do conjunto ISO-8859-1, que
|
|
compreende o alfabeto latino e letras acentuadas usadas pelas línguas do
|
|
oeste da Europa e América. Este conjunto de caracteres também é frequentemente
|
|
chamado de Latin-1 ou ISO Latin-1.
|
|
<P>Um padrão mais recente é o Unicode, definido pela norma ISO-10646, que permite
|
|
definir caracteres cuja representação interna no computador utiliza mais de um
|
|
byte (ou <EM>octeto</EM> na nomenclatura ISO). Todas as versões mais recentes de
|
|
sistemas Unix suportam Unicode (ou pelo menos seus fabricantes alegam
|
|
suportar).
|
|
<P>Além dos caracteres alfanuméricos e sinais de acentuação, é possível também
|
|
gerar sinais <EM>semigráficos</EM> para desenho de linhas e bordas.
|
|
Esses sinais podem aproveitar códigos não utilizados pelo conjunto oficial,
|
|
tornando-os não portáveis.
|
|
<P>O <B>Linux</B> foi desenhado internamente de modo a facilitar a sua fácil
|
|
configuração e extensão em tempo de execução, não constituindo o tratamento do
|
|
teclado e fontes de caracteres excepção. Ele possui uma implementação ``nível
|
|
1'' do padrão Unicode. Maiores detalhes podem ser encontrados nos manuais do
|
|
Linux, que podem ser lido com os comandos
|
|
<PRE>
|
|
man unicode
|
|
man utf-8
|
|
man iso_8859_1
|
|
man ascii
|
|
</PRE>
|
|
|
|
mas antes disso certifique-se de que o <EM>man</EM> está configurado corretamente,
|
|
conforme mostrado na seção
|
|
<A HREF="Portuguese-HOWTO-6.html#SEC:MAN">Man, groff, troff</A>.
|
|
<P>
|
|
<H2><A NAME="SEC:DIFXC"></A> <A NAME="ss2.2">2.2 Modo texto versus Sistema de Janelas X</A>
|
|
</H2>
|
|
|
|
<P>Alguns sistemas operativos, tais como MacOS, Microsoft Windows e NeXT, possuem
|
|
interfaces gráficas próprias. No Linux, assim como na maioria dos
|
|
sistemas compatíveis com Unix, é de uso corrente um ambiente gráfico criado
|
|
para ser ``multiplataforma'': o X Window System, que também foi projetado para
|
|
suportar diversos conjuntos de caracteres, idiomas e formatos de teclado, mas
|
|
ainda <B>não</B> suporta totalmente o padrão Unicode e sim uma extensão do
|
|
ISO-8859.
|
|
<P>
|
|
<BLOCKQUOTE>
|
|
A rigor o X Window System <B>não</B> é uma interface gráfica com o usuário, mas
|
|
a combinação de um protocolo de comunicação com uma interface com programas
|
|
aplicativos (API) <EM>sobre a qual</EM> se construíram várias interfaces gráficas.
|
|
Tanto o protocolo quanto o Sistema de Janelas definem um conjunto de
|
|
<EM>mecanismos</EM> e não <EM>políticas</EM> (elementos característicos da política de
|
|
uma Interface Gráfica com o Usuário são menus, botões e caixas de diálogo).
|
|
O uso do termo ``XWindows'' é incorreto e deve ser evitado, dando-se
|
|
preferência ao nome genérico ``X''.
|
|
</BLOCKQUOTE>
|
|
<P>Existem muitas semelhanças entre os dois ambientes. Ambos se baseiam em
|
|
padrões internacionais para definição de conjuntos de caracteres. Tanto no X
|
|
quanto no console do Linux pode-se definir uma tecla chamada <EM>Compose</EM>
|
|
cujo pressionamento seguido de duas outras gerará o caracter correspondente.
|
|
Assim sendo, o pressionamento da seqüência <B>compose-,-c</B> gerará um c
|
|
cedilhado.
|
|
<P>O tratamento do console é feito diretamente pelo sistema operativo e
|
|
aplicações comuns não se envolvem com o processamento dos códigos de varredura
|
|
do teclado, recebendo um caracter ou uma seqüência deles ao ser pressionada
|
|
cada tecla, de tal sorte que tendo sido corretamente configurados o
|
|
teclado e a fonte de caracteres pouco mais se tem a fazer.
|
|
<P>O X possui uma arquitetura muito diferente: tanto o teclado quanto a(s)
|
|
tela(s) -- pode haver mais de uma tela -- são controlados por uma aplicação
|
|
especial chamada <EM>servidor X</EM>. O pressionamento de uma tecla gera uma
|
|
mensagem (chamada de <EM>evento</EM>) que é passada pelo servidor X à aplicação
|
|
<EM>cliente</EM>. Há um programa muito útil chamado <EM>xev</EM> que permite observar
|
|
cada evento a ele transmitido. Cliente e servidor se comunicam via
|
|
rede usando um conjunto de regras chamado <EM>protocolo X</EM> e podem rodar em
|
|
máquinas diferentes. A máquina onde roda o servidor é chamada <EM>estação de
|
|
trabalho</EM> ou <EM>terminal X</EM> e a máquina onde roda a aplicação (programa
|
|
cliente) também é chamada de <EM>cliente</EM>.
|
|
<P>Foge ao escopo deste texto a discussão mais profunda do tratamento de eventos
|
|
no X. Para maiores informações, sugere-se a consulta aos documentos
|
|
mencionados na seção
|
|
<A HREF="Portuguese-HOWTO-10.html#SEC:BIBLIOGRAFIA">Leituras recomendadas</A>, mas
|
|
é importante esclarecer que o evento enviado pelo servidor ao cliente não
|
|
contém o código numérico da tecla, chamado <EM>keycode</EM> na terminologia do X.
|
|
Ao invés disso, é enviado um símbolo, chamado <EM>keysymbol</EM> ou <EM>keysym</EM>,
|
|
obtido pela consulta a uma tabela de conversão mantida na memória do servidor.
|
|
Esta tabela pode ser modificada total ou parcialmente a qualquer momento por
|
|
meio de requisições definidas no protocolo X.
|
|
<P>Existe um programa chamado <EM>xmodmap</EM> capaz de ler um arquivo contendo uma
|
|
tabela de conversão <EM>keycode</EM>--><EM>keysym</EM> e enviá-la, também na forma
|
|
de mensagens no protocolo X, ao servidor. É responsabilidade do cliente e
|
|
não do servidor interpretar o <EM>keysym</EM>, o que significa que a
|
|
aplicação deve saber esperar mais um caracter ao receber uma ``tecla
|
|
morta'' para compor uma letra acentuada.
|
|
<P>Desde a revisão 5 do X existe na bibliotaca de funções (<EM>Xlib</EM>) um
|
|
mecanismo sofisticado de suporte à geração de caracteres em diversos códigos.
|
|
A função de tratamento de entrada de texto que já existia nas versões
|
|
anteriores, chamada <B>XLookupString</B>, entretanto, não processa as
|
|
seqüências de acentos e letras de modo transparente às aplicações. Ao invés
|
|
disso foi incluído um método de composição usando <EM>contextos de entrada</EM>
|
|
(<EM>input contexts</EM>) por meio das funções <B>XmbLookupString</B> e
|
|
<B>XwcLookupString</B>, cujo uso é responsabilidade da aplicação -- ou do seu
|
|
programador, melhor dizendo -- mesmo no caso da tecla <EM>Compose</EM>. Isto
|
|
deve-se so fato de o <EM>X Consortium</EM> ter chegado à conclusão de que o
|
|
sistema de mapeamento de teclas não tratava de forma satisfatória toda a
|
|
imensa variedade de línguas escritas nas várias partes do mundo. Deste modo,
|
|
decidiu-se que o ``peso'' relativo à gestão do teclado fosse transferido para
|
|
as aplicações X, o que cria uma dificuldade quando usamos aquelas mais
|
|
antigas, que não usam o novo método de tratar a entrada.
|
|
<P>Por essas razões é normalmente mais difícil conseguir acrescentar suporte à
|
|
geração de caracteres acentuados em aplicativos que rodam sob o X,
|
|
principalmente quando não se possui o código fonte. Aplicativos feitos para
|
|
rodar apenas em modo texto, tais como <B>vi</B> e <B>minicom</B> dependerão
|
|
totalmente dos recursos do emulador de terminal em uso quando rodando em uma
|
|
janela do X. Se for usada uma versão atual do <EM>xterm</EM> ou <EM>rxvt</EM> o
|
|
emulador fará o tratamento correto dos acentos.
|
|
<P>O francês Thomas Quinot, cansado de esperar uma solução melhor para o problema
|
|
da acentuação no X, resolveu implementar uma modificação para a Xlib proposta
|
|
por André D. Balsa, que adiciona suporte à acentuação direta conforme mostrado
|
|
na seção
|
|
<A HREF="Portuguese-HOWTO-5.html#SEC:CONTOR-X">Contornando os limites do X</A>. Isso
|
|
permite usar aplicações como <EM>xfig</EM> ou <EM>xedit</EM> sem que seja necessário
|
|
alterá-las. O truque parece funcionar apenas para caracteres do código
|
|
ISO-8859-1 mas é suficiente para o Português e outras línguas. Como bem
|
|
observa Balsa, a longo prazo todos os programas deverão ser modificados para
|
|
usar os novos recursos do X, mas como a longo prazo estaremos todos mortos a
|
|
solução de curto prazo de Quinot torna-se bastante atraente...
|
|
<P>
|
|
<HR>
|
|
<A HREF="Portuguese-HOWTO-3.html">Next</A>
|
|
<A HREF="Portuguese-HOWTO-1.html">Previous</A>
|
|
<A HREF="Portuguese-HOWTO.html#toc2">Contents</A>
|
|
</BODY>
|
|
</HTML>
|