2012-12-03 30 views
6

Sử dụng Oracle (Sun) JDK6 và cố gắng để chuyển sang Oracle JDK7JDK7: sun.font.fontManager thay thế/làm thế nào để lấy thông tin tên file từ fontname

Tôi đang sử dụng sun.awt.GraphicsEnvironment để tìm tất cả các phông chữ hệ thống để sử dụng chúng để thay đổi phông chữ pdf được sử dụng trong tệp pdf của tôi. Đây là mã chính xác tôi đang sử dụng:

GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment(); 

// get all system fonts 
final Font[] fonts = gEnv.getAllFonts(); 

Sau đó tôi sẽ cần phải nhận được đường dẫn tập tin phông chữ chính xác trên hệ thống, vì vậy tôi sử dụng:

FontManager.getFontPath(true) + "/" + 
       FontManager.getFileNameForFontName(font_name); 

Vấn đề bây giờ là sun.font.FontManager là không còn là một lớp và đã được chuyển đổi thành một giao diện. Tôi đã tìm kiếm trực tuyến và đưa ra một số giải pháp mà tôi không hài lòng và tôi đang tìm kiếm các ý tưởng khác để giúp giải quyết vấn đề của mình.

Các giải pháp mà tôi tìm thấy:

  1. Triển khai dự án của tôi trên Java 6 thay vì Java 7 (Không khuyến cáo khi tôi sử dụng một số tính năng mới trong Java 7).
  2. Tôi đã tìm thấy mã của lớp FontManager trực tuyến, nhưng việc sử dụng nó sẽ yêu cầu bao gồm nhiều lớp/giao diện khác và quá trình này có vẻ giả và tốn thời gian. Ngoài ra tôi không phải là nếu tôi được phép sử dụng mã đó vì nó là độc quyền của công ty Sun.

Những gì tôi cần là: * Một cách để tìm ra đường dẫn tập tin phông chữ chính xác trên hệ thống *. Tất cả các ý tưởng đều được hoan nghênh.

+0

Dude, bạn có tìm thấy giải pháp nào không? –

+0

Câu trả lời của Marcel Stör về việc sử dụng Win32FontManager đã giúp giải quyết vấn đề chỉ trong Windows. Tôi nghi ngờ nó sẽ không hoạt động trên Linux hoặc Mac OS. –

Trả lời

3

Bạn không nói bạn đang sử dụng JDK nào (Oracle, OpenJDK, ..). Có thể bạn có

FontManagerFactory.getInstance() 

có sẵn. Hoặc triển khai inteface Win32FontManager (nếu bạn đang sử dụng Windows)?

+0

Câu hỏi thực sự là 'cách để có được cách tìm đường dẫn tệp phông chữ chính xác trên hệ thống' – Jayan

+0

@Jayan, vâng tôi biết điều đó. Đã được yêu cầu cho Java> 10 năm trước: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4752644 –

+0

@Jayan, tôi nhận được tiền thưởng, cảm ơn. Giải pháp trong trường hợp cụ thể của bạn là gì? –

Các vấn đề liên quan