Niedawno okazało się, jak zarejestrować czcionkę TTF z lokalną GraphicsEnvironment, st, dla mojego przypadku użycia (SVG do PNG transkodowania), Apache Batik może rozpoznać czcionki:Wyrejestruj czcionkę za pomocą GraphicsEnvironment?
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.GraphicsEnvironment;
// [...]
GraphicsEnvironment lge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
Font font = Font.createFont(Font.TRUETYPE_FONT, fontFile);
lge.registerFont(font);
} catch (FontFormatException e) {
logger.warn(e.getMessage(), e);
} catch (IOException e) {
logger.warn(e.getMessage(), e);
}
Jednak byłem Zastanawiam się, czy mogę wyrejestrować istniejące wcześniej czcionki, aby zagwarantować, że w transkodowaniu będą używane tylko czcionki, które rejestruję.
Brak elementu GraphicsEnvironment # unregisterFont (...), w jaki sposób mogę to osiągnąć?
PS: Nie chcę podklasy GraphicsEnvironment, ponieważ nie mogę założyć, że istnieje jakakolwiek specyficzna podklasa, np. Sun.awt.Win32GraphicsEnvironment.
EDIT: Niektóre dalsze informacje:
- Jak zmienia sun.font.FontManager z Java7 (od klasy interfejs i etażerka), wolałbym nie używać żadnego obejścia powołując się na niego.
- Moje JVM to Oracle JVM.
W FontManager zmiany API z Java7, tak, tak, ja raczej nie dotykać tego przy użyciu odbicia. Gdzie znalazłeś kod źródłowy? Czy to OpenJDK? Moja JVM to wersja Oracle. – RobertG
@RobertG Kliknij link u góry wpisu. To na grepcode – durron597
+1 przeoczyłem klikalny link, dziękuję za to! – RobertG