Японские шрифты в Java GUI

Действительно ли возможно записать GUI в Java, который отобразил бы японские шрифты правильно независимо от настроек языка ОС, на этом работают?

Я хотел бы записать программу, которая может сделать это, но я не уверен, как начать идти об этом. Любой совет был бы огромной справкой!

8
задан Makoto 29 April 2012 в 18:34
поделиться

4 ответа

Вы можете упаковать шрифт TrueType в свою программу, загрузить и использовать его в компонентах Swing следующим образом:

// Create a label in Japanese.
String message = "かつ、尊厳と権利とについて平等である。";
JLabel label = new JLabel(message);

// Load the TrueType font with Japanese characters and apply it.
File file = new File("msmincho.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, file);
font = font.deriveFont(Font.PLAIN, 14f);
label.setFont(font);

Будьте осторожны, используйте правильную кодировку. Если вы компилируете японские символы в коде, вы должны скомпилировать его с javac -encoding utf-8 Foo.java . Также обязательно используйте кодировку явно при использовании Readers.

3
ответ дан 5 December 2019 в 10:01
поделиться

Языковые настройки здесь не проблема. Шрифты есть.

Java определенно может обрабатывать японский текст, независимо от настроек системы, если разработчик не попадется в ловушку зависимости от кодировки платформы по умолчанию, используя такие вещи, как FileReader или ] новая строка (байт []) .

Но для отображения японского текста нужен шрифт с японскими символами, а шрифты не являются частью Java. В зависимости от ОС шрифты с поддержкой японского языка могут быть частью установки по умолчанию, или пользователю может быть предложено установить их по мере необходимости, или их, возможно, придется установить вручную.

8
ответ дан 5 December 2019 в 10:01
поделиться

Добавьте -Dfile.encoding = utf-8 в сценарий командной строки, запускающий приложение.

0
ответ дан 5 December 2019 в 10:01
поделиться

Java может легко отображать японский язык независимо от того, установлены ли в ОС шрифты или нет, но это только для приложений Swing. Все, что использует окно консоли, требует установленных в ОС шрифтов.

Шаги:

1) Загрузите один из шрифтов TrueType отсюда: http://www.wazu.jp/gallery/Fonts_Japanese2.html

2) Используйте следующий код, чтобы разрешить свинг клиенты для использования ваших шрифтов:

InputStream fontStream = getClass().getResourceAsStream("/locationoffontonclasspath/myfontname.ttf");
Font japaneseEnabledFont = null;
boolean japaneseDisplayEnabled = false;
try {
    japaneseEnabledFont = Font.createFont(Font.TRUETYPE_FONT, fontStream);
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(japaneseEnabledFont);
    japaneseDisplayEnabled = true;
} catch (Exception e) {
    // handle exceptions here
} finally {
    if (fontStream != null) {
        try {fontStream.close();} catch (Exception e1) {}
    }
}

if (japaneseDisplayEnabled) {
   .....
}

Кроме того, если вы хотите использовать японские литералы в исходном коде, вы должны скомпилировать с -Dfile.encoding = utf-8. Если для компиляции используется IDE, вы можете изменить настройки на следующем экране (щелкните правой кнопкой мыши проект и выберите свойства, чтобы открыть это окно): скриншот

Дополнительная информация доступна на этой странице

6
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: