Fonts (fontes) bonitas no Linux: é possível!

johnzap

Power Member
Não sei se isto sucede com todos, mas, uma das coisas que sempre me decepcionou no Linux, qualquer distribuição que tenha experimentado, é o quão feiosas, comparadas com, por exemplo, o Windows, são as fonts. Pelo menos em ecrans TFT, que é o que uso, normalmente.

Por defeito, as distribuições vêm com o "anti-aliasing" activo. Segundo li, até não fica muito mal em ecrans CRT. Mas em TFTs? :puke: Ficam com um ar sujo, sem a excelente claridade das fonts no Windows (Cleartype). Se se experimenta remover o "anti-aliasing", a coisa também não fica muito bem, pelo menos com as fonts que experimentei, mesmo as Bitstream, que parecem não ser más de todo.

Como disse, retirando o antialiasing, até que a coisa melhora um pouco, por um lado. As fonts deixam de ficar com aquele ar sujo, mas, por outro lado, têm tendência a ficar com contornos pouco definidos, com pixels um bocado fora do sítio desejável.

Já frustrado com este tema, perguntava-me porque diabo não seria possível o Linux ter um display de jeito, como o Windows tem, desde há muito.

A solução surgiu por acaso. Encontrei uma página, http://convexhull.com/mandrake_fonts.html , que explica o que fazer para termos fonts tão boas, pelo menos, como no Windows. É realmente incrível, tanto o ambiente gráfico (KDE, por exemplo) fica excelente como a navegação nas páginas WWW, fica tal e qual como no Windows (exceptuando diferenças de "rendering" entre os browsers; mas, por exemplo, o Firefox no Windows e no Linux passam a comportar-se 100% iguais). Também explica porque razão as fonts no Linux se apresentam, por defeito, tão feiosas (questão de patentes, que pertencem à Apple).

Nesta página há solução para tudo, isto é, podemos corrigir as coisas, por exemplo, no KDE e este fica todo lindinho. Mas depois entramos no Firefox e a coisa continua mal, ou aplicações Gnome, etc, etc. Estão lá soluções para tudo isso. No caso do Firefox, por exemplo, como não liga aos "settings" do KDE, temos de lhe colocar os nossos próprios "settings".

A página explica como fazer para o Mandrake, mas já experimentei também no Suse 9.2 e Xandros 3.0 e as técnicas explicadas funcionaram perfeitamente. Até melhor e mais facilmente, do que no caso do Mandrake. Apenas há diferenças no capítulo intitulado "First Option: Copy fonts from Windows partition". Isto porque no Suse, por exemplo, os comandos que são referidos, não existem.

Para o Suse podemos usar o comando "SuSEconfig-module fonts" ou "/usr/sbin/fonts-config", que é a mesma coisa. No caso do Xandros até nem tive de fazer importação de fonts do Windows, porque ele já tinha quase todas as fontes que interessam.

Uma nota final para algumas recomendações contidas na página. Como o ecran do moço é algo grandito, ele usa uma resolução muito grande (1600x1200). No meu caso uso uma resolução menor. Por essa razão, a recomendação, que se encontra ao longo do texto, de usar font com tamanho 7, não dá, é muito pequenita. Temos de usar uma font maior, tipo 10 ou 11. Experimentem e deixem ficar como gostarem mais.

Atenção que, na maioria dos casos, se tiverem programas abertos, terão de os fechar e tornar a abrir para verem as alterações. Ou, no caso do KDE, terão de o fechar e tornar a abrir. No fim de tudo configurado, um "restart" para arrancar tudo limpinho, é recomendado, mas não essencial.

Se algum moderador vir isto, talvez se possa fazer disto um "sticky". Tenho a impressão que, tal como eu, deve haver muita gente frustrada com este tema e talvez não tenham uma solução tão perfeita e completa, como esta.
 
Por acaso tens razão, uma coisa que nunca gostei no Linux são as fontes que são feiosas e que ficam ainda piores num TFT. Num CRT a coisa é menos má.
 
@ Pretender: segue as explicações do homem com atenção, que tudo o que lá está é para ser seguido. Vai com calma que vais obter uns excelentes resultados.

Ah, uma coisa que não disse. Um dos passos implica compilar uma aplicação (Freetype2). Para isso basta terem instalados os compiladores normais do Linux, tipo o gcc. Normalmente é fácil de instalar, caso já não esteja.

@ NoMercy: yap, fica muito feioso, mesmo. Mas com estas dicas fica excelente, pelo menos tão bom como no Windows XP.
 
Última edição:
Não conhecia este tutorial, mas um que costumo usar é o HOWTO: Xorg and Fonts. Este aplica-se ao pessoal que usa Gentoo, mas a diferença para as outras distribuições é só na forma como instalam os vários pacotes de fontes.
Com este fico com as fontes todas "smooth", mas eu também (ainda) uso um CRT, por isso não sei se advirá daí a diferença.
 
mikan disse:
A solução passa por colocar como serviço o X.Font.Server... ;)

Para gentoo; http://gentoo-wiki.com/HOWTO_Xorg_and_Fonts

Outras distros, www.google.pt ;)
Não penso que seja necessário usares um servidor de fontes. Aliás, apenas considero útil usares um servidor de fontes quando tens uma rede de computadores e queres pôr a configuração de fonts apenas num local.
Inclusivé, o howto que referenciaste (que foi o que eu referenciei antes) não usa servidor de fontes. :) Basicamente, basta declarares as fontes que queres carregar no xorg.conf.
 
noup disse:
Não conhecia este tutorial, mas um que costumo usar é o HOWTO: Xorg and Fonts. Este aplica-se ao pessoal que usa Gentoo, mas a diferença para as outras distribuições é só na forma como instalam os vários pacotes de fontes.
Com este fico com as fontes todas "smooth", mas eu também (ainda) uso um CRT, por isso não sei se advirá daí a diferença.

O tutorial que referes é um bocado Gentoo specific. Por exemplo, para solucionar o problema do Firefox, diz para compilar o programa. Muito à maneira do Gentoo. ;) Há solução, sem ser necessário compilar, solução essa que, parece-me, não é explicada. Também me parece que, seguindo o tutorial do Gentoo, não se está a activar o método mais sofisticado e melhor, de "hinting" das fontes. A menos que os pacotes para o Gentoo já venham com essa "feature" activada, o que é estranho, pois existem questões de patentes e, por defeito, isso não vem activado. Ou seja, vem comentado no código fonte. Se no Gentoo isso vem activado (no pacote "freetype"), o mesmo parece não acontecer nas outras distribuições, o que coloca o tutorial como não muito eficiente quando não se usa Gentoo.
 
johnzap disse:
O tutorial que referes é um bocado Gentoo specific. Por exemplo, para solucionar o problema do Firefox, diz para compilar o programa. Muito à maneira do Gentoo. ;) Há solução, sem ser necessário compilar, solução essa que, parece-me, não é explicada. Também me parece que, seguindo o tutorial do Gentoo, não se está a activar o método mais sofisticado e melhor, de "hinting" das fontes. A menos que os pacotes para o Gentoo já venham com essa "feature" activada, o que é estranho, pois existem questões de patentes e, por defeito, isso não vem activado. Ou seja, vem comentado no código fonte. Se no Gentoo isso vem activado (no pacote "freetype"), o mesmo parece não acontecer nas outras distribuições, o que coloca o tutorial como não muito eficiente quando não se usa Gentoo.
A única coisa "gentoo-specific" que encontro é apenas essa que mencionaste, do firefox. No tutorial diz que se deve compilar o programa sem uma USE flag, de modo a não usar o rendering de fonts default. Porém, não sei até que ponto o binário pré-compilado pactua ou não com isto, já que tenho um outro computador no qual usei o binário pré-compilado e as fontes ficam todas bem à mesma. :)
Quanto ao segundo ponto, qual é então o método mais eficaz? Pelo que me pareceu ver no tutorial, aquilo está comentado por apenas ser útil para quem tem um monitor LCD. :)
 
noup disse:
Quanto ao segundo ponto, qual é então o método mais eficaz? Pelo que me pareceu ver no tutorial, aquilo está comentado por apenas ser útil para quem tem um monitor LCD. :)

Estamos a falar de coisas diferentes. O que eu me refiro está explicado, no tutorial que deixei, no capítulo intitulado "Step 2: Turn on FreeType native hinting". O Freetype é o pacote que trata do "font rendering". Ora o que se passa é que, devido a algumas patentes de "font hinting" pertencerem à Apple, o Freetype não as usa por defeito. Todavia é possível remover um comentário num dos ficheiros fonte e depois compilar. Ao fazermos isso estamos a usar esse método da Apple, que é mais eficaz, o que tem como consequência melhor qualidade de "rendering". Vai ao sítio que referi acima, que está lá tudo explicado. Como isso não é referido no tutorial do Gentoo, não se conseguirá tão boa qualidade em LCD. Como disse, só uso LCD, não posso ter a certeza se em CRT isso é irrelevante ou não.

Outra coisa. Se reparares, no tutorial do Gentoo diz, "The last option activates the antialiasing for font point sizes 9 to 14 and is quite explicative.". Ora isto é um desastre, num LCD. Activar o antialias é exactamente o que se pretende evitar, pelo menos com um LCD. É o antialiasing que torna a fonts "sujas" e meio turvas. Não tinha reparado nisto na primeira leitura, só agora reparei melhor. Concluo agora que este tutorial usa uma estratégia diferente e não acho que funcione muito bem com LCDs.

O método que indiquei, desactiva totalmente o antialiasing. A questão é que ao fazeres isso, os métodos que o Freetype usa para gerar as fontes não são muito eficientes. Sucede então que estas deixam de ficar sujas e turvas mas ficam com contornos mal definidos. É aí que entra a tal alteração no código fonte. Este vai activar um método muito mais eficaz e que gera as fonts muito perfeitinhas. Creio que é o mesmo método que usa o Windows (e os Apple?), pois as fonts ficam exactamente iguais. Tenho o XP e o Linux e posso comparar facilmente.

Para além disso, o tutorial do Gentoo não é tão completo. Há vários pormenores que não estão lá. Se tiveres pachorra, compara ponto por ponto o que o "meu" tutorial diz e verás.
 
Heh calma, é óbvio que o tutorial de gentoo não é tão completo, basta comparar o número de tópicos que abrangem. O que eu estava a tentar dizer é que com o tutorial de gentoo fico com as fontes bonitas, ou seja, parece-me ser suficiente para o meu caso. Isto pode ter muito a ver com o tipo de monitor, mas também bem interessa abranger os meus conceitos neste aspecto porque vou brevemente mudar de monitor para um TFT.
Obrigado pela explicação. Realmente, lembro-me de já ter visto essa discussão das patentes dos algoritmos de rasterização (penso que é a palavra correcta) de fontes. No caso do gentoo, estive a investigar um pouco mais, e confirmei a suposição que tinha. Não sei se estás dentro do mecanismo de pacotes do gentoo, mas para cada pacote há um conjunto de "USE flags", que são basicamente opções que podes activar ou desactivar, sendo o pacote compilado com ou sem essas opções, conforme o que escolheste. No caso do pacote freetype, há uma USE flag que permite escolher se queres ou não compilar com os algoritmos patenteados.
O problema das patentes está oficialmente descrito aqui.
Ainda assim, não percebo porque é que o anti-aliasing "estraga" as fontes.. A ideia do anti-aliasing é precisamente a contrária, ou seja, de tornar as fontes mais "smooth". Tenho de ver com os próprios olhos... ;)
 
noup disse:
Ainda assim, não percebo porque é que o anti-aliasing "estraga" as fontes.. A ideia do anti-aliasing é precisamente a contrária, ou seja, de tornar as fontes mais "smooth". Tenho de ver com os próprios olhos... ;)

Pois. Se calhar em CRTs, o antialiasing, tem algum efeito positivo. Tive a oportunidade de experimentar num CRT e fica melhor do que num LCD. Mas mesmo assim, usando o método comum, não fica tão bom como quando se remove o antialiasing e se activa o freetype com os métodos patenteados (e com fontes jeitosas, tipo, a Tahoma).

De qualquer modo, quando tiveres oportunidade de verificar com os teus próprios olhos, num LCD, verás que o antialiasing é uma desgraça. Bom, pelo menos aquilo que, por defeito, é instalado em todas as distribuições que já testei. O problema é que ficas com o contorno principal da fonte a preto e depois, à sua volta, é colocada uma máscara de cinzento(s), que procura disfarçar as imperfeições da parte preta. Isto em LCDs fica péssimo. A situação está explicada em vários textos e deve-se, aparentemente, a que o olho procura focar a melhor imagem possível e acaba por não conseguir, provocando cansaço visual. Para além do efeito de "sujidade" que já referi. Feio, mesmo.
 
johnzap disse:
A situação está explicada em vários textos e deve-se, aparentemente, a que o olho procura focar a melhor imagem possível e acaba por não conseguir, provocando cansaço visual. Para além do efeito de "sujidade" que já referi. Feio, mesmo.
Tenho que ler o tutorial por inteiro, então. Vou ver com os próprios olhos assim que o meu monitorzinho da Apple (já que estamos numa de apple) chegar. :cool: E é sempre bom saber antecipadamente, não fosse eu experimentar o monitor e achar que ficava tudo com pior aspecto do que com um CRT. :)
 
Back
Topo