thời gian gần đây tôi phát hiện ra làm thế nào để đăng ký một phông chữ TTF với GraphicsEnvironment địa phương, st, đối với trường hợp sử dụng của tôi (SVG-to-PNG chuyển mã), Apache Batik có thể nhận ra font:Hủy đăng ký phông chữ bằng 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);
}
Tuy nhiên, tôi đã tự hỏi liệu tôi có thể hủy đăng ký bất kỳ phông chữ nào có sẵn để đảm bảo rằng chỉ các phông chữ tôi đăng ký mới được sử dụng trong chuyển mã hay không.
Không có GraphicsEnvironment # unregisterFont (...), làm cách nào tôi có thể đạt được điều này?
PS: Tôi không muốn phân lớp GraphicsEnvironment, vì tôi không thể giả định sự hiện diện của bất kỳ lớp con cụ thể nào, như sun.awt.Win32GraphicsEnvironment.
EDIT: Một số infos thêm:
- Như sun.font.FontManager thay đổi với Java7 (từ lớp giao diện, và không có điều gì), tôi không muốn sử dụng bất kỳ cách giải quyết dựa vào nó.
- JVM của tôi là JVM của Oracle.
Các FontManager thay đổi API với Java7, vì vậy, yeah, tôi không muốn chạm này phản ánh sử dụng. Bạn đã tìm thấy mã nguồn ở đâu? Đây có phải là OpenJDK không? JVM của tôi là Oracle. – RobertG
@RobertG Nhấp vào liên kết ở đầu bài đăng. Trên grepcode – durron597
+1 đã bỏ qua liên kết có thể nhấp, cảm ơn bạn vì điều đó! – RobertG