[OpenBSD]

Fontes sem serrilhado e TrueType no OpenBSD

Conteúdo


Captura de tela do xterm

xterm(1) com fontes com e sem serrilhado, lado a lado:
[O xterm padrão e o sem serrilhado]

Captura de tela do Konqueror

Ainda não está convencido? Vamos olhar isto aqui.

O navegador da Web Konqueror com fontes com e sem serrilhado, lado a lado:

[O Konqueror padrão e o sem serrilhado]

Como funciona?

Para suportar fontes sem serrilhado, o X apresentou em 2001 um novo motor de renderização de fontes, no lado cliente. Os cálculos para a fonte sem serrilhado são feitos pelo FreeType, um motor de fontes livre que é utilizado por uma biblioteca chamada Xft(3), a interface X FreeType. A extensão Render fornece as operações de composição necessárias para misturar as formas de fonte sup-pixel no fundo do aplicativo.

Adicionalmente, o X.Org utiliza a biblioteca fontconfig(3) para gerenciar as fontes instaladas, incluindo seus nomes e propriedades.

O que precisa ser feito?

Basicamente, nada. O OpenBSD distribui o X.org com a extensão X Render ativada em todos os drivers de placas de vídeo com 8 bits por pixel ou mais.

Você pode verificar se a extensão Render está ativada executando:

$ /usr/X11R6/bin/xdpyinfo | grep RENDER
RENDER

Em adição à família de fontes DejaVu que é distribuída com o OpenBSD (OpenBSD tem a família de fontes Bitstream Vera, incluindo até a versão 4.7), uma coleção de fontes TrueType populares tem sido compiladas e estão disponíveis na árvore de portes do OpenBSD, em /usr/ports/fonts/msttcorefonts. Elas podem ser instaladas fazendo o seguinte:

# cd /usr/ports/fonts/msttcorefonts
# make install

A coleção de portes também inclui outros pacotes de fontes TrueType, especialmente as fontes liberation, que podem ser utilizadas como substitutas das fontes Web da Microsoft mencionadas acima, e são distribuídas com uma licença mais aceitável.

Quais aplicativos podem utilizar fontes sem serrilhado (anti-aliase)?

Qualquer aplicativo que faz interface com a biblioteca Xft pode mostrar fontes sem serrilhado. Isso inclui os aplicativos QT 3.x (utilizados pelo KDE) e GTK+ (utilizados pelo GNOME). Programas padrão de um ambiente X11, que utilizem estas interfaces, são: xterm(1), xclock e alguns outros.

xterm

O xterm pode ser executado com argumentos para ativar a renderização Xft de fontes:
$ xterm -fa 'Mono' -fs 14
Essas opções são:
Opção    Recurso          Significado
------------------------------------------
 -fa     XTerm*faceName   Nome da fonte
 -fs     XTerm*faceSize   Tamanho da fonte
Alternativamente, os recursos do X podem ser utilizados. Por padrão, eles são colocados em $HOME/.Xdefaults e são controlados através do programa xrdb(1).

Algumas fontes TrueType (tais como Arial, Georgia e Verdana, por exemplo) não funcionam bem no xterm. Isso é porque o xterm utiliza a largura máxima de todos os caracteres na fonte especificada para mostrar cada caractere. Com uma fonte do tipo monospace, a largura de todos os caracteres é a mesma, e tudo funciona. Com uma fonte proporcional, iguais àquelas mencionadas, o xterm encaixa cada caractere em um célula do tamanho da largura máxima, criando grandes espaços ilegíveis entre os caracteres.

Aplicativos Qt/KDE

Aplicativos que utilizam Qt 3.x ou versões superiores, tais como quaisquer aplicativos do KDE 2.5.x, incluindo o Konqueror, utilizam a renderização Xft por padrão.

Aplicativos GTK+

Aplicativos GTK+2 e GTK+3 agora também utilizam Xft por padrão.

Como posso adicionar fontes manualmente?

Adicionar uma fonte TrueType "no X" requer o registro da fonte ao nível da biblioteca fontconfig e do servidor X, já que ambos mantêm o registro de fontes separadamente.

Sistema de renderização de fonte no lado cliente

Fontes instaladas como um pacote a partir da coleção de portes são registradas automaticamente no sistema fontconfig. Fontconfig utiliza o arquivo /etc/fonts/fonts.conf para sua configuração global principal, mas como esse arquivo é substituído em atualizações subsequentes do X, /etc/fonts/local.conf deve ser utilizado para gerenciar as mudanças globais. Fontconfig pesquisa fontes em todos os subdiretórios dos diretórios listados em /etc/fonts/fonts.conf; então não existe a necessidade de editar esse arquivo quando novas fontes são adicionadas naquelas hierarquias.

Depois que um diretório é adicionado, o cache de fontes para o diretório precisa ser gerado novamente. O comando a seguir instrui o fontconfig a reconstruir os caches de fontes de todos os diretórios especificados em sua configuração:

# /usr/X11R6/bin/fc-cache -v
Essas mudanças entram em efeito na sessão atual do X, então o X não precisa ser reiniciado, mas os aplicativos em execução precisam.

O comando fc-list pode ser utilizado para listar todas as fontes conhecidas no sistema. Mas fique atento, esse comando mostra nomes de fontes internacionais codificadas em UTF-8. Então é melhor executá-lo em um programa de emulação de terminal que suporta UTF-8, como o uxterm.

O sistema de renderização no lado servidor

Caminhos de fontes (ou seja, diretórios contendo fontes) são gerenciados diretamente pelo servidor X, utilizando /etc/X11/xorg.conf, ou por um programa separado, como o xfs(1). Para adicionar uma fonte, adicione o diretório onde ela reside no /etc/X11/xorg.conf:
Section "Files"
	FontPath	"/usr/X11R6/lib/X11/fonts/TTF/"
	FontPath	"/usr/local/lib/X11/fonts/minhasfontes/"
	...
EndSection
Ou, utilizando o xfs, adicione o diretório no /etc/X11/fs/config:
catalogue = /usr/X11R6/lib/X11/fonts/TTF/,
	    /usr/local/lib/X11/fonts/minhasfontes/
Após isso, o servidor X precisa ser avisado da fonte naquele índice de fontes de diretório, ou seja, o arquivo fonts.dir. Tradicionalmente, todos os tamanhos disponíveis de uma fonte são listados no índice de fontes, gerado pelo comando mkfontdir(1). Mas desde que as fontes TrueType podem ser escaladas para qualquer tamanho, a listagem de cada tamanho possível não é exigida. Em vez disso, fontes escaláveis são listadas no arquivo fonts.scale, que é reconhecido pelo mkfontdir quando este está gerando índices fonts.dir.

Para construir um arquivo fonts.scale, o programa mkfontscale(1) pode ser utilizado:

# cd /usr/local/lib/X11/fonts/minhasfontes
# /usr/X11R6/bin/mkfontscale
# /usr/X11R6/bin/mkfontdir
E finalmente, para aplicar as mudanças na sessão atual do X, em vez de reiniciar o X, o comando a seguir pode ser utilizado para examinar novamente os caminhos de fontes registrados atualmente em busca de mudanças:
$ xset fp rehash
Ou, se um novo caminho de fontes foi adicionado:
$ xset +fp /usr/local/lib/X11/fonts/minhasfontes
Se xfs está em uso, o comando a seguir deve ser utilizado no lugar:
# pkill -HUP xfs

[voltar] www@openbsd.org
$OpenBSD: truetype.html,v 1.4 2013/01/05 15:19:49 ajacoutot Exp $