Как с помощью Java определить, правильно ли установлен определенный шрифт на компьютере - PullRequest
10 голосов
/ 16 февраля 2010

У меня есть ноутбук с ОС Windows Vista, когда я впервые его купил, некоторые китайские шрифты не отображаются, я мог видеть только прямоугольники, но какое-то время я играл с настройкой элемента управления, изменил некоторые свойства и теперьон показывает китайские шрифты правильно, но я не помню, что я сделал.

Теперь некоторые из моих программ отображают как английский, так и китайский, что-то вроде этого: «Enter | 输入» (китайский здесь также означает ввод), но если у пользователя неправильно установлены китайские шрифты на его компьютере, он увидит что-то вроде этого: «Enter | [] []», мой вопрос: в Java, как определить, правильно ли отображаются эти символы нана определенном компьютере, если нет, просто отобразите «Enter», если это так, укажите «Enter | 输入».

Frank

Ответы [ 2 ]

8 голосов
/ 16 февраля 2010

java.awt.GraphicsEnvironment.getAvailableFontFamilyNames() может предоставить вам список доступных шрифтов, установленных в текущей системе. Вы также можете использовать java.awt.GraphicsEnvironment.getAllFonts() для получения java.awt.Font объектов.

Затем вы можете использовать java.awt.Font.canDisplay(int), чтобы проверить, может ли символ Unicode отображаться в этом шрифте (где int - целочисленное представление многобайтового символа).

1 голос
/ 17 января 2018

Ленивая версия:

Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()).contains(FONT_NAME)
...