De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Deixando as fontes com ótima aparência
Colaboração: Dorian Bolivar
Data de Publicação: 30 de Março de 2005
Uma das coisas que mais me decepcionava no Linux era a
qualidade das fontes na tela, principalmente as TrueType. Sem
anti-aliasing, ficavam com um serrilhado grotesco; com, sumia
o serrilhado mas ficavam borradas.
Me perguntava porque no Windows as fontes ficavam sem serrilhado
e com ótima definição. Mesmo importando as fontes do Windows
no Linux, e ativando as opções Hinting Style: Full (KDE) ou
Best Contrast (Gnome), não ficavam com a mesma nitidez. Já
comentei e vi comentários a respeito em fóruns de discussão,
sem solução. Alguns diziam as fontes pareciam boas, mas basta
comparar sua exibição no Linux e no Windows para comprovar a
diferença (experimente utilizar a fonte Tahoma para os menus,
no Linux, que é a mesma usada no Windows, e perceba como
não tem a mesma nitidez). E pude comprovar que isso não é
uma característica da minha máquina ou distribuição usada,
pois já usei diversas distribuições em outros computadores,
com o mesmo problema.
Em um dia de inspiração, pesquisando no Google, veio a solução.
Hinting, anti-aliasing e FreeType
É preciso, inicialmente, explicar o que é hinting e
anti-aliasing. Basicamente, o hinting é uma técnica através
da qual se determina o correto posicionamento dos pixels de
cada caractere da fonte, ao ser redimensionada (1, 2). As
fontes TrueType, ao invés de serem renderizadas utilizando um
paradigma de hinting único, possuem embutido um pequeno programa
que faz essa tarefa, da melhor forma possível para cada fonte
(1). Trata-se de uma verdadeira linguagem de programação,
que inclui (1):
- Laços
- Blocos condicionais
- Funções definidas pelo usuário
- Instruções para mover, alinhar e interpolar os pontos de várias maneiras, geralmente com referência a valores de controle
- Métodos para arredondar pontos à grade do dispositivo
- Instruções lógicas e aritméticas
Já o anti-aliasing é uma técnica que adiciona pontos
sombreados ao contorno da fonte (ou qualquer outra figura
vetorial), de forma a borrar a imagem e tornar seu contorno
mais suave (2).
O problema com o anti-aliasing é justamente esse: o contorno
das fontes não fica nítido. Por que não usar, então, o hinting
embutido nas fontes TrueType? Porque isso é patenteado, essa é
a resposta. O FreeType, renderizador de fontes TrueType padrão
na maioria das distribuições Linux, sendo um software livre,
não poderia incluir esse interpretador de hinting - chamado
bytecode interpreter (3) - por default, ao contrário do
Windows. Assim, desenvolveu um paradigma de hinting próprio,
que não chega a ser tão eficiente.
A solução
Eu disse antes que o FreeType não incluía o bytecode interpreter
por default - mas há como habilitá-lo. A primeira maneira
de fazer isso é recompilar a biblioteca manualmente, alterando
um pequeno trecho de código (4):
- Após descompactar os fontes, abra o arquivo include/freetype/config/ftoption.h.
- Localize a linha que contém o texto #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
- Altere-o para #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
- Proceda com a compilação e instalação da biblioteca, conforme suas instruções (arquivos README e INSTALL).
A segunda maneira é obter o pacote src.rpm do
FreeType para a sua distribuição, e trocar a linha
%define without_bytecode_interpreter 1 por **%define
without_bytecode_interpreter 0, no arquivo.spec** (4)
(não vou entrar no mérito de como gerar pacotes RPM).
A terceira maneira, bem mais fácil e rápida, é obter um pacote
do FreeType para a sua distribuição que já venha com essa opção
habilitada. No Mandrake, existe um pacote liberado pelo PLF
(Penguin Liberation Front). Basta instalá-lo e pronto. Para
saber como adicionar um mirror do PLF no seu URPMI, consulte o
site do Easy-URPMI, nas referências (5). Depois, procure pelo
pacote libfreetype6 com sufixo -plf e instale-o.
Por fim, você deve desabilitar o anti-aliasing no Gnome
ou no KDE, e habilitar o hinting em modo full. Como uso
Gnome, seguem as instruções para ele:
- Abra o Font Preferences no Control Center.
- Em Font Rendering, escolha Monochrome (isso desabilita o anti-aliasing).
- Clique em Details. Em Hinting, escolha Full.
Reinicie o X, e pronto, suas fontes estão com ótima aparência!