Как с помощью Java узнать, правильно ли установлен на компьютере определенный шрифт
Вопрос
У меня есть ноутбук под управлением Win Vista, когда я впервые купил его, некоторые китайские шрифты не отображались, я мог видеть только прямоугольники, но я немного поигрался с настройками управления, изменил некоторые свойства, и теперь он показывает китайский шрифты правильные, но я не помню, что я делал.
Теперь некоторые из моих программ отображают как английский, так и китайский язык, примерно так:«Enter | 输入» (китайский язык здесь также означает ввод), но если на компьютере пользователя не установлены должным образом китайские шрифты, он увидит что-то вроде этого:«Введите | [][]», мой вопрос:в Java, как определить, будут ли эти символы отображаться правильно на определенном компьютере, если нет, просто отобразите «Enter», если это так, покажите «Enter | 输入».
Откровенный
Решение
java.awt.GraphicsEnvironment.getAvailableFontFamilyNames()
может предоставить вам список доступных шрифтов, установленных в текущей системе.Вы также можете использовать java.awt.GraphicsEnvironment.getAllFonts()
получить java.awt.Font
объекты.
Затем вы можете использовать java.awt.Font.canDisplay(int)
чтобы проверить, может ли символ Юникода отображаться этим шрифтом (где int
— целочисленное представление многобайтового символа).
Другие советы
Ленивая версия:
Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()).contains(FONT_NAME)