di recente ho scoperto come registrare un font TTF con la GraphicsEnvironment locali, st, per il mio caso d'uso (SVG-to-PNG transcodifica), Apache Batik può riconoscere il tipo di carattere:Annulla la registrazione dei caratteri con 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);
}
Tuttavia, ero chiedendo se potessi annullare la registrazione di tutti i font preesistenti per garantire che solo i caratteri che registro vengano utilizzati nella transcodifica.
Non c'è GraphicsEnvironment # unregisterFont (...), come è possibile ottenere questo risultato?
PS: Non voglio creare una sottoclasse di GraphicsEnvironment, dato che non posso assumere la presenza di sottoclassi specifiche, come sun.awt.Win32GraphicsEnvironment.
EDIT: Alcune Ulteriori informazioni:
- Come sun.font.FontManager cambia con Java7 (dalla classe di interfacciarsi, e quant'altro), preferisco non usare qualsiasi soluzione affidamento su di esso.
- My JVM è Oracle JVM.
I cambiamenti API FontManager con Java7, quindi, sì, preferisco non toccare questo utilizzando la riflessione. Dove hai trovato il codice sorgente? È questo OpenJDK? La mia JVM è quella di Oracle. – RobertG
@RobertG Fare clic sul collegamento nella parte superiore del post. È su grepcode – durron597
+1 ignorato il link cliccabile, grazie per questo! – RobertG