Несколько шрифтов Unicode в компонентах графического интерфейса Java Applet

У меня есть апплет с JLabel, JTextField и другими компонентами Java Swing. С другой стороны, у меня есть шрифты Unicode «AR», «AR-ExtB» (расширенная область B) и «AR-Plus» (дополнительная область частного использования-A), которые представляют собой файлы .ttf. Я хочу, чтобы апплет использовал три файла .ttf для каждого компонента графического интерфейса, в зависимости от кодовых точек, которые вводят пользователи.

1) Я знаю, что эти компоненты не могут работать с несколькими шрифтами. Таким образом, явный способ установки шрифтов для компонентов невозможен.

2) Есть способ сделать это, изменив файл fontconfig.properties в каталоге $JAVA_HOME/lib, где, например, шрифт «Dialog» (логический) сопоставил три файла .ttf как один логический шрифт, но проблема в том, что все другие java-приложения также будут иметь эти шрифты, а это нежелательный сценарий.

3) «Резервные шрифты», используемые, когда нет другого шрифта, который может отображать глифы на экране. Это также не решение, потому что будут отображаться только символы, которые не покрыты шрифтом JAVA по умолчанию.

Вопрос в том:

Кто-нибудь знает, как использовать эти файлы .ttf в качестве шрифта в каждом компоненте Swing с графическим интерфейсом, но только внутри апплета, а не глобально для всех приложений, работающих на JVM?


person Daltonito    schedule 27.05.2013    source источник
comment
Что касается пункта 2 - есть ли у вас ссылки на поддержку того, как работают логические шрифты Java? Насколько я понимаю, концепция логического шрифта в Java просто означает, что JDK гарантирует, что если вы используете логическое имя шрифта, такое как Dialog, вы были уверены, что какой-то физический шрифт обязательно будет загружен (таким образом, вы избегаете проблемы, связанной с необходимостью беспокоиться о том, что шрифты загружаются на любой данной платформе).   -  person Shorn    schedule 28.05.2013
comment
Упс, неважно - теперь я вижу в документе конфигурации шрифта, как это должно работать (я думал, что материал fontconfig.properties предназначен для HtmlView).   -  person Shorn    schedule 28.05.2013


Ответы (1)


Чтобы использовать файл TTF в качестве шрифта, вам необходимо загрузить его и создать объект шрифта, который устанавливается следующим образом.

    try {
     GraphicsEnvironment ge = 
         GraphicsEnvironment.getLocalGraphicsEnvironment();
     ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
} catch (IOException|FontFormatException e) {
     //Handle exception
}

После этого можно использовать объект шрифта.

Чтобы использовать логический шрифт, проверьте документацию Oracle.

-- Суман

person Suman Mummaneni    schedule 21.07.2016