Como encontrar, com Java, se uma determinada fonte for instalada corretamente em uma máquina
Pergunta
Eu tenho um notebook para PC Running Win Vista, quando o comprei pela primeira vez, certas fontes chinesas não aparecem, eu só podia ver retângulos, mas brinquei com a configuração de controle por um tempo, mudei algumas propriedades e agora mostra chinês Fontes corretamente, mas não me lembro do que fiz.
Agora, alguns dos meus programas exibem inglês e chinês, algo assim: "Entre | 输入" (os chineses aqui também significam entrar), mas se um usuário não tiver fontes chinesas instaladas corretamente em sua máquina, ele verá algo como algo como isto: "enter | [] [], minha pergunta é: em java como detectar se esses personagens aparecerão corretamente em uma determinada máquina, se não, basta exibir "Enter", se for, mostre "Enter | 输入".
Frank
Solução
java.awt.GraphicsEnvironment.getAvailableFontFamilyNames()
Pode fornecer uma lista das fontes disponíveis instaladas no sistema atual. Você também pode usar java.awt.GraphicsEnvironment.getAllFonts()
para obter java.awt.Font
objetos.
Então, você pode usar java.awt.Font.canDisplay(int)
Para verificar se um caractere unicode pode ser exibido nessa fonte (onde o int
é a representação inteira do caractere multibyte).
Outras dicas
Versão preguiçosa:
Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()).contains(FONT_NAME)