2011-05-05 75 views
7

Cách khắc phục sự cố với phông chữ tùy chỉnh trong Java?Phông chữ tùy chỉnh trong Java

Ví dụ: ứng dụng của tôi sử dụng phông chữ, không có trên tất cả các máy tính. Tôi có thể bằng cách nào đó bao gồm nó trong biên dịch thực thi và sau đó gọi nó từ đó, nếu nó không tồn tại trên máy tính của khách hàng?

Các lựa chọn thay thế khác là gì? Tôi có thể làm cho tất cả các phông chữ ký tự như hình ảnh (trước đây, trong một số ứng dụng đồ họa) và sau đó hiển thị hình ảnh cho mỗi char ... là nó ok?

Trả lời

18

Dưới đây là một phương pháp hữu ích Tôi đang sử dụng để tải một tập tin phông chữ từ một tập tin .ttf (có thể bundled):

private static final Font SERIF_FONT = new Font("serif", Font.PLAIN, 24); 

private static Font getFont(String name) { 
    Font font = null; 
    if (name == null) { 
     return SERIF_FONT; 
    } 

    try { 
     // load from a cache map, if exists 
     if (fonts != null && (font = fonts.get(name)) != null) { 
      return font; 
     } 
     String fName = Params.get().getFontPath() + name; 
     File fontFile = new File(fName); 
     font = Font.createFont(Font.TRUETYPE_FONT, fontFile); 
     GraphicsEnvironment ge = GraphicsEnvironment 
       .getLocalGraphicsEnvironment(); 

     ge.registerFont(font); 

     fonts.put(name, font); 
    } catch (Exception ex) { 
     log.info(name + " not loaded. Using serif font."); 
     font = SERIF_FONT; 
    } 
    return font; 
} 
+1

+1 cho 'ge.registerFont (font);' – Serhiy

6

Bạn có thể bao gồm các phông chữ với bạn ứng dụng và tạo ra nó "on-the-fly"

InputStream is = this.getResourceAsStream(font_file_name); 
Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
Các vấn đề liên quan