Множество уникод шрифтове в GUI компонентите на Java Applet

Имам аплет с JLabel, JTextField и други Java Swing компоненти. От друга страна, имам уникод шрифтове „AR“, „AR-ExtB“ (разширена B зона) и „AR-Plus“ (допълнителна зона за лична употреба-A), които са .ttf файлове. Искам аплетът да използва трите .ttf файла за всеки GUI компонент, в зависимост от кодовите точки, които потребителите въвеждат.

1) Знам, че няма опция тези компоненти да работят с множество шрифтове. Така че изричният начин за задаване на шрифтовете на компонентите не е опция.

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

3) „Резервни шрифтове“, използвани когато няма друг шрифт, който може да показва глифовете на екрана. Това също не е решение, защото ще покаже само знаците, които не са обхванати от шрифта по подразбиране на JAVA.

Въпросът е:

Някой има ли идея как да използва тези .ttf файлове като шрифт във всеки компонент на GUI 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 файл като шрифт, трябва да го заредите и да създадете обект Font, който да зададете по този начин.

    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