7
我最近發現瞭如何註冊本地GraphicsEnvironment中的某種TTF字體,ST,爲我的使用案例(SVG至PNG轉碼),阿帕奇蠟染可以識別的字體:使用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);
}
不過,我是想知道是否可以註銷任何預先存在的字體,以保證只有我註冊的字體纔會用於轉碼。
沒有GraphicsEnvironment中#unregisterFont(...),我怎麼能做到這一點呢?
PS:我不想繼承GraphicsEnvironment中,因爲我不能假定存在任何特定的子類,像sun.awt.Win32GraphicsEnvironment。
編輯:一些更多的相關信息:
- 作爲sun.font.FontManager與Java7的變化(從類接口,和諸如此類的東西),我寧可不使用任何解決方法依賴於它。
- 我的JVM是Oracle JVM。
與Java7的FontManager API的變化,所以,是的,我寧願不碰這個使用反射。 你在哪裏找到源代碼?這是OpenJDK嗎?我的JVM是Oracle的。 – RobertG
@RobertG點擊帖子頂部的鏈接。這是對grepcode – durron597
+1忽視的可點擊的鏈接,謝謝大家了! – RobertG