Текст JLABEL HTML игнорирует SetFont

Я только что начал портировать свое приложение для качания из ОС X к Windows, и все больно больно JLabel S.

Я заметил, что шрифт, указанный на SetFont , игнорируется, если текст метки является HTML (это не происходит на Mac). Форматирование HTML является чрезвычайно Полезно для читабельности на сложных дисплее.

При нормальных обстоятельствах я указываю шрифт в теге HTML, но шрифт, который я использую, загружен во время выполнения, используя font.createfont с TTF из Бар. Я пытался использовать имя загруженного шрифта в теге шрифта, но это не сработало.

Есть ли способ, которым я могу использовать нагруженные AWT.FONT с HTML-Ifeed JLabel в Windows?

Вот пример. Я не могу поделиться шрифтом своего приложения, но я просто провел его с этим (чистый TTF), и то же самое происходит:

http: // www.dafont.com/sophom. ree-readbook.font

import java.awt.Font;
import java.io.File;
import javax.swing.*;

public class LabelTestFrame extends JFrame {

        public LabelTestFrame() throws Exception {
                boolean useHtml = true;
                String fontPath = "C:\\test\\test_font.ttf";
                JLabel testLabel = new JLabel();
                Font testFont = Font.createFont(Font.TRUETYPE_FONT, new File(fontPath)).deriveFont(18f);
                testLabel.setFont(testFont);
                if (useHtml) testLabel.setText("Some HTML'd text");
                else testLabel.setText("Some plaintext");
                getContentPane().add(testLabel);
                setSize(300,300);
        }

        public static void main(String[] args) {
                SwingUtilities.invokeLater(new Runnable() {
                        @Override
                        public void run() {
                                try {new LabelTestFrame().setVisible(true);}
                                catch (Exception e) {e.printStackTrace();}
                        }
                });
        }

}

Редактирование: достаточно интересно, если я использую один из TTF из папки Lib / fonts (в этом случае один из шрифтов Lucida здесь переименован в test_java.ttf) Этот фрагмент создает идентичные результаты с логическое включение и выключение.

public LabelTestFrame() throws Exception {
    boolean useHtml = false;
    String fontPath = "C:\\test\\test_java.ttf";
    JLabel testLabel = new JLabel();
    Font testFont = Font.createFont(Font.TRUETYPE_FONT, new File(fontPath)).deriveFont(18f);
    testLabel.setFont(testFont);
    if (useHtml) testLabel.setText("Some HTML'd text");
    else testLabel.setText("Some plaintext");
    getContentPane().add(testLabel);
    setSize(300,300);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {new LabelTestFrame().setVisible(true);}
            catch (Exception e) {e.printStackTrace();}
        }
    });
}

Отредактируйте 2: Способ, описанный здесь для настройки шрифта JLABEL по умолчанию имеет ровно одинаковую проблему (открытый текст показывает, что текст HTML'D не): Изменение шрифта JLABEL по умолчанию

. Изменить 3: i ' Не заметили, что даже случайные шрифты из Dafont будут работать, если они установлены в системе (даже с этим точным кодом, где я загружаю копию [Установленного теперь] TTF из файла).

10
задан Community 23 May 2017 в 11:45
поделиться