Comment trouver, avec Java, si une certaine police est installée correctement sur une machine


J'ai un ordinateur portable fonctionnant sous Win Vista, quand je l'ai acheté pour la première fois, certaines polices chinoises n'apparaîtront pas, je ne pouvais voir que des rectangles, mais j'ai joué avec le paramètre de contrôle pendant un moment, changé certaines propriétés, et maintenant il montre correctement les polices chinoises, mais je ne me souviens pas de ce

Maintenant, certains de mes programmes affichent à la fois l'anglais et le chinois, quelque chose comme ceci: "Enter / 输入" (Le chinois ici signifie également enter), mais si un utilisateur n'a pas de polices chinoises installées correctement sur son machine, il verra quelque chose comme ceci : "Enter | [][]", ma question est : en Java comment détecter si ces caractères apparaîtront correctement sur une certaine machine, sinon, affichez simplement "Enter", si c'est le cas, affichez "Enter | 输入".

Franc

Author: Frank, 2010-02-16

2 answers

java.awt.GraphicsEnvironment.getAvailableFontFamilyNames() peut vous donner une liste des polices installées sur le système actuel. Vous pouvez également utiliser java.awt.GraphicsEnvironment.getAllFonts() pour obtenir java.awt.Font objets.

Ensuite, vous pouvez utiliser java.awt.Font.canDisplay(int) pour vérifier si un caractère Unicode peut être affiché dans cette police (où le int est la représentation entière du caractère multioctet).

 8
Author: amphetamachine, 2010-02-16 03:10:57

Version paresseuse:

Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()).contains(FONT_NAME)
 1
Author: Daniel Centore, 2018-01-16 23:17:34