Ik zit met het volgende probleem in Swing;
Bij een aantal componenten gebruik ik de HTML parser om word wrapping toe te passen (JLabels en JButtons met meerdere regels), en dat doe ik door een text te zetten met html-tags eromheen.
Nu gebruik ik TT-fonts die ik inlaad met de createFont() methode.
Het probleem is nu dat, zodra ik mijn eerste component heb aangemaakt met html tags (op dat moment wordt er een HTMLDocument met parsers geconstrueerd), alle fonts die ik daarna laadt, blijkbaar niet te bereiken zijn voor de HTML parser.
Ik heb niet helemaal door hoe de HTML parser te werk gaat, maar ik vermoed dat het een native library is, die geladen wordt zodra er een component met HTML aangemaakt wordt. Zodra deze library geladen wordt, leest deze de beschikbare fonts uit van de JVM, en kan deze in de runtime gebruiken (allemaal speculatie).
Dus, de volgende code gaat goed;
en de volgende fout;
Binnen de gehele runtime kan ik dus geen nieuw geladen fonts in een html-enabled component gebruiken (ook niet in andere windows of wat dan ook).
En, de voor de handliggende optie, het inladen van alle fonts die ik ga gebruiken voordat ik de componenten ga maken is voor mij geen optie.
Ik zoek naar een manier waarop ik de HTML parser duidelijk kan maken dat deze nieuwe fonts in moet lezen.
Weet iemand of dit een bug is, of verborgen functionaliteit (of wellicht een andere oplossing).
-- related link; http://forum.java.sun.com/thread.jspa?threadID=717106
Bij een aantal componenten gebruik ik de HTML parser om word wrapping toe te passen (JLabels en JButtons met meerdere regels), en dat doe ik door een text te zetten met html-tags eromheen.
Nu gebruik ik TT-fonts die ik inlaad met de createFont() methode.
Het probleem is nu dat, zodra ik mijn eerste component heb aangemaakt met html tags (op dat moment wordt er een HTMLDocument met parsers geconstrueerd), alle fonts die ik daarna laadt, blijkbaar niet te bereiken zijn voor de HTML parser.
Ik heb niet helemaal door hoe de HTML parser te werk gaat, maar ik vermoed dat het een native library is, die geladen wordt zodra er een component met HTML aangemaakt wordt. Zodra deze library geladen wordt, leest deze de beschikbare fonts uit van de JVM, en kan deze in de runtime gebruiken (allemaal speculatie).
Dus, de volgende code gaat goed;
code:
1
2
3
4
5
| InputStream fontStream = getClass().getResourceAsStream("SystemVIO.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, fontStream);
JLabel label = new JLabel("<html>a text</html>");
label.setFont(font.deriveFont((float)12)); |
en de volgende fout;
code:
1
2
3
4
5
6
| JLabel label = new JLabel("<html>a text</html>");
InputStream fontStream = getClass().getResourceAsStream("SystemVIO.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, fontStream);
label.setFont(font.deriveFont((float)12)); |
Binnen de gehele runtime kan ik dus geen nieuw geladen fonts in een html-enabled component gebruiken (ook niet in andere windows of wat dan ook).
En, de voor de handliggende optie, het inladen van alle fonts die ik ga gebruiken voordat ik de componenten ga maken is voor mij geen optie.
Ik zoek naar een manier waarop ik de HTML parser duidelijk kan maken dat deze nieuwe fonts in moet lezen.
Weet iemand of dit een bug is, of verborgen functionaliteit (of wellicht een andere oplossing).
-- related link; http://forum.java.sun.com/thread.jspa?threadID=717106
[ Voor 5% gewijzigd door 2nosedt op 14-03-2006 11:13 ]
musica | fotografica | amalia