У меня была такая же проблема при написании программы на Clojure, т.е. используя шрифты, загруженные из TTF в JEditorPane, отображающий текст HTML. Решение здесь работало хорошо - я скопировал интересную часть здесь для дальнейшего использования:
(def font1 (with-open [s (FileInputStream. "SomeFont.ttf")]
(.deriveFont (Font/createFont Font/TRUETYPE_FONT s) (float 14))))
(def font2 (Font. "SansSerif") Font/PLAIN 14)
(let [editor (JEditorPane. "text/html" "")]
(.setDocument editor
(proxy [HTMLDocument] []
(getFont [attr]
(if (= (.getAttribute attr StyleConstants/FontFamily)
"MyFont")
font1
font2)))))
Это предполагает, что документ HTML относится к семейству шрифтов "MyFont", например, с фрагментом CSS вроде
p { font-family: "MyFont" }
Обратите внимание, что при этом вы должны обрабатывать все запросы шрифтов. Это связано с тем, что proxy не может вызывать функции-члены суперкласса. Кроме того, если вы хотите обрабатывать шрифты разного размера, вы должны сделать это «вручную», проверив атрибут StyleConstants / FontSize и соответственно создав шрифт с помощью retrieveFont.
Надеюсь, это кому-нибудь поможет:)