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!

Referências

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Dorian Bolivar