<!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>