Японские шрифты в графическом интерфейсе Java - PullRequest
6 голосов
/ 21 апреля 2010

Можно ли написать графический интерфейс на Java, который бы правильно отображал японские шрифты независимо от языковых настроек ОС, на которой он запущен?

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

Ответы [ 5 ]

7 голосов
/ 21 апреля 2010

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

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

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

6 голосов
/ 21 апреля 2010

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

Шаги:

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

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

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 для компиляции, вы можете изменить настройки на следующем экране (щелкните проект правой кнопкой мыши и выберите свойства, чтобы открыть это окно): снимок экрана

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

3 голосов
/ 21 апреля 2010

Вы можете упаковать шрифт 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.

0 голосов
/ 13 июля 2016

Вы можете скопировать свои истинные японские шрифты в $ JAVA_HOME \ jre \ lib \ fonts \ fallback. Вам придется создать эту папку. В Linux символическая ссылка сделает свое дело.

Источник: http://www.asahi -net.or.jp / ~ ik2r-myr / кандзи / немецкий / linos_g.htm

0 голосов
/ 21 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...