Olá a todos!
Nesta pequena e rápida dica irei mostrar como habilitar o
anti-aliasing de fontes em aplicações gráficas feitas em
Java.
Aqui um exemplo:
Esta simples calculadora fica com um aspecto muito feio se executada no
GNU/Linux, mas fica normal se executada no Windows.
Mais um exemplo, agora prático:
Crie um arquivo "
Teste.java" com o seguinte conteúdo:
import javax.swing.JOptionPane;
public class Teste {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "Este é um teste de FONTE!", "Teste", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
Compile (se você tiver o Java JDK instalado):
javac Teste.java
Execute:
java Teste
Repare que a fonte está serrilhada.
Para corrigir, há três maneiras:
1. A difícil:
Executar o arquivo java passando o parâmetro "
-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true". No nosso exemplo, ficaria:
java -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true Teste
Mas este modo é inviável, especialmente se executamos vários programas Java diferentes.
2. A personalizada:
Adicionar este parâmetro no seu arquivo
.bashrc, através da variável
_JAVA_OPTIONS:
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true"
Assim, toda vez que você executar um programa Java, automaticamente ele setará esta opção, inclusive se você executar a aplicação dentro de uma IDE (como o Eclipse, por exemplo).
Obs.: não se esqueça de efetuar logoff/logon para que as mudanças façam efeito.
3. A correta:
Altere o arquivo Java*!
*Isso se você for o próprio desenvolvedor do programa, rs.
Assim, o anti-aliasing já estará ativado por padrão, no próprio aplicativo, sem a necessidade do usuário final configurar algo.
Para isso, simplesmente adicione os parâmetros:
System.setProperty("swing.aatext", "true" );
System.setProperty("awt.useSystemAAFontSettings","on");
Dentro da classe main, antes de chamar a sua aplicação. O nosso exemplo Teste.java ficaria assim:
import javax.swing.JOptionPane;
public class Teste {
public static void main(String[] args) {
System.setProperty("swing.aatext", "true" );
System.setProperty("awt.useSystemAAFontSettings","on");
JOptionPane.showMessageDialog(null, "Este é um teste de FONTE!", "Teste", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
Para finalizar, eis a calculadora com anti-aliasing ativado (bem melhor, não? =)):
Referências:
Dica também publicada no Mundo GNU: