Como melhorar a qualidade das fontes do Java?

9 respostas Resolvido
javaprogramação
G

Estou fazendo um programa em java, só que porem estou percebendo que a qualidade das fontes do java não são tão boas, mais a da idea que eu uso (IntellJ) as fonts são desenhadas perfeitamente, mesmo com o anti-lias ativado não obtive grande qualidade, pareçe que os Glyph estão muito, finos, ai executei meu programa com o jre presente no intellJ, e as fontes desenharam perfeitamente, observe:Sem2t%C3%ADtulo
Segundo oq vc observa não é tanta diferença, mais para algumas letras, como D, M, P, e os numeros a diferença, é bem notavel, existe alguma maneira de configurar o jre no meu programa para que a qualidade fique semelhante ao das letras do IntellJ, (estou sitando ele como exemplo, pois a fonte deles é muito boa), se alguem puder me ajudar, agradeço.

Obs: Ambas as letras foram escriata com a typeface Ubuntu em tamanho 18. (Estou carregando a .ttf dessa fonte, mais tambem tentei com a SansSerif)

9 Respostas

S

Se você ler toda a documentação da classe Font, vai descobrir que o Java usa o conceito de fonte física e fonte lógica.
Às vezes a implementação da máquina virtual pode não conter exatamente a fonte que você quer e o Java acaba carregando uma “parecida”.
Por isso, se você quer usar fontes específicas, é melhor disponibilizar uma cópia do arquivo da fonte, junto com sua aplicação.

G

Eu estou fazendo isso, estou carregando uma .ttf, então ele esta tendo sim a fonte, já tentei com a SansSerif mais o mesmo bug.

S

O JRE utilizado pelo seu IntelliJ é o mesmo do seu sistema operacional?

Já experimentou usar o Look and Feel nativo do sistema operacional?
Experimenta colocar a seguinte instrução no seu método main antes de instanciar qualquer classe de GUI:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
G

Não o intellJ usa um jre customisavel, (intellJ/jbr, ou o do androidStudio/jre/). fiz um teste com o

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

mais continuou a mesma coisa. vc acha que pode ser algo da truetype que estou usando?.

S

Acho mais provável ser a jre do intelij.
Dá uma olhada no diretório de fontes da jre dele, talvez tem alguns ttf diferentes

G

Percebi algumas fontes, na vdd meu jdk, e meu jre, nem tem o diretorio fonts, (Obs: estou usando linux, provavelmente eles usam as fonts do sistemas), você acha que poderia ser isso?

S

No passado eu tive problemas numa aplicação rodando no WebSphere que foi atualizada do Java 6 pro 8, os fontes também tinham um glyph diferente, na época eu resolvi copiando os ttf do Java 6 pra dentro da aplicação que foi atualizada pro Java 8.

Acho mais provável que o InteliJ esteja fazendo alguma maracutaia.
Seu IntelliJ usa uma jre ou um jdk próprio dele?

G

Ele tem um jdk proprio, ou jre, não sei o serto kkkkk, mais provavel que seja o jdk, (pois usei por um tempo como jdk, mais tambem consigo usar o jre como jdk, então fica confuso), como vc instalou os ttf, onde eu jogo as fontes, pois tentetei jogar em /lib/fonts, e não mudou.
ai fui comparar os bin deles com os do meu jdk, e percebi que mesmo que anbos são as mesmas, versões os binarios deles tem tamanho diferente, e existe alguns, arquivos que tem no jdk (e no jre) e não tem no deles como existe arquivos que existe no deles e no meu não existe, kkk, esquisito isso, mais provavelmente, não deve ter um jeito, eu acho, a não ser, que eu crie um binario em C++ para ler ele e passar as vertices e trabalhar com os pontos de uma ttf, e depois (talvez na baze da gambiarra field.setAcessible(true) [Entendores entenderam lkkk] ), ai talvez eu consiga criar uma font ou um Glyph, com qualidade boa.

G
Solucao aceita

Consegui usar a fonte ao convertela de .ttf para .ps (FONT_TYPE_1), não melhorou 100% mais ficou melhor, não entendi direito o bug do java com .ttf,mais ficou assim:
Captura%20de%20tela%20em%202020-10-08%2017-40-39

usei um site para converter, a ttf (Obs: observem a fonte que vcs usarem para ver se a licença dela permite você a fazer isso )
Agradeço ao @staroski pelo desenpenho em tentar me ajudar.
Site usado para fazer a conversão: Convertio.

Criado 7 de outubro de 2020
Ultima resposta 8 de out. de 2020
Respostas 9
Participantes 2