Come trovare, con Java, se un certo tipo di carattere è installato correttamente su una macchina
Domanda
Ho un notebook PC con Win Vista, quando l'ho comprato, alcuni tipi di carattere cinesi non farsi vedere, ho potuto vedere solo rettangoli, ma ho giocato con l'impostazione del controllo per un po ', cambiato alcune proprietà, e ora mostra i caratteri cinesi correttamente, ma non mi ricordo quello che ho fatto.
Ora alcuni dei miei programmi visualizza sia in inglese e cinese, qualcosa di simile: "Enter | 输入" (I cinesi qui significa anche entrare), ma se un utente non ha i caratteri cinesi installati correttamente sulla sua macchina, lo farà vedere qualcosa del genere: "Enter | [] []", la mia domanda è: in Java come rilevare se questi personaggi verranno visualizzati correttamente su una determinata macchina, se non, semplicemente visualizzare "Enter", se lo è, spettacolo " Inserisci |. 输入"
Frank
Soluzione
java.awt.GraphicsEnvironment.getAvailableFontFamilyNames()
può dare un elenco dei caratteri disponibili installati sul sistema attuale. Si potrebbe anche usare java.awt.GraphicsEnvironment.getAllFonts()
per ottenere oggetti java.awt.Font
.
Quindi, è possibile utilizzare java.awt.Font.canDisplay(int)
per verificare se un carattere Unicode può essere visualizzato in quel font (dove la int
è la rappresentazione intera del carattere multibyte).
Altri suggerimenti
Versione pigro:
Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()).contains(FONT_NAME)