Как найти с помощью Java, если определенный шрифт установлен правильно на машине

У меня есть ноутбук для ПК под управлением Win Vista, когда я его впервые купил, некоторые китайские шрифты не появятся, я могу видеть только прямоугольники, но некоторое время я играл с настройкой управления, менял некоторые свойства, и теперь он правильно показывает китайские шрифты, но я не помню, что я сделал.

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

Франк

Ответ 1

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

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

Ответ 2

Lazy version:

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