Java引用外部字型即自定義字型檔案
阿新 • • 發佈:2019-01-04
有時候我們在程式中,會使用到Java字型,但不是所有的字體系統中都會有,我們就可能會使用外部自定義字型,這樣在程式遷移部署中就會少些工作,最近在一個專案中使用到了自定義字型檔案,理順了,記之。
package cy.util; import java.awt.Font; import java.awt.FontFormatException; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class CyFont { private Font definedFont = null; public Font getDefinedFont(int ft,float fs) { String fontUrl=""; switch (ft) { case 1: fontUrl="/opt/hwxk.ttf";//華文行楷 break; case 2: fontUrl="/opt/hwkt.ttf";//華文楷體 break; default: String fonturllocal="/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc"; if(!new File(fonturllocal).exists()){ fontUrl="/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc"; }else{ fontUrl=fonturllocal; } break; } if (definedFont == null) { InputStream is = null; BufferedInputStream bis = null; try { is =new FileInputStream(new File(fontUrl)); bis = new BufferedInputStream(is); definedFont = Font.createFont(Font.TRUETYPE_FONT, is); //設定字型大小,float型 definedFont = definedFont.deriveFont(fs); } catch (FontFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (null != bis) { bis.close(); } if (null != is) { is.close(); } } catch (IOException e) { e.printStackTrace(); } } } return definedFont; } public static void main(String[] args) { // TODO Auto-generated method stub CyFont cf=new CyFont(); cf.getDefinedFont(1, 50.0); } }