GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Problemas com font Graphics2D

Estou enfrentando um problema aqui… Quando tento escrever em uma imagem utilizando Graphics2D, as letras acentuadas não aparecem… Surgem, no lugar, caracteres como um quadrado.
Eu tentei por exemplo:

   {
   g.drawString(new String(line.getBytes(), StandardCharsets.UTF_8), x, y);
   }

Alguém sabe uma solução para escrever com acentos utilizando o graphics2d?

Você está lendo essas String a partir de um arquivo?
Então esse arquivo não está em UTF8.

Oi, na verdade é direto de uma variável String.
Mas já tentei com arquivos em utf-8, utf-16, uscii.
O resultado é sempre o mesmo.
Não tenho idéia de o porque isso está acontecendo.

Rodei, rodei, a única solução que consegui foi salvar imagens de cada letra, separadamente, e no programa criar um laço de ifs para pintar na imagem letra por letra. :confused:

Se você colocar uma variável String direto, com acentos, como fica? Se funciona, então provavelmente é algo no arquivo (ou na forma como ele está sendo lido).

Testei rapidamente aqui algo como:

class Qualquer extends JFrame{
  String texto = "áàã éêẽè íì öü UÜ ç ñ Ñ ";
  
  // inicialização e afins aqui

  protected void paintComponent(Graphics g){
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g.create();

    g2.drawString(texto, 100, 100);

    g2.dispose();
  }
}

Resultado:

frame

Abraço.

Opa, boa tarde.
Pior que coloquei o texto com acentos diretamente de uma variável String.
Há uma coisa que ainda não fiz, que é testar em versões anteriores do Java.
Estou usando OpenJDK 17. Vou testar com o 11 pra ver.

//