java引入自定义字体的方法

java引入自定义字体的方法

  • java项目中,有时我们需要引入一些外部的自定义的字体
    • 先说下背景:最近接手别人项目的时候遇到了一个坑(>.<)
    • 下面有两种方式:
    • 第一种:可以避免产生.tmp临时文件,避免大批量引入的时候吃掉硬盘的空间(个人推荐)
    • 第二种方式:原先实现方法--需要注意会产生.tmp临时文件,但是好像挺多人用这种方式(个人不推荐)

java项目中,有时我们需要引入一些外部的自定义的字体

先说下背景:最近接手别人项目的时候遇到了一个坑(>.<)

接手一个迭代过多次的项目(未正式提供给客户使用,只给客户试用了几次)。在实现了新需求,眼瞅着可以再发一个迭代时,却没想到却遇到了一个坑。自测进行批量生成pdf任务的时候,发现了一个bug。执行多个批量生成任务之后,竟然发现本机硬盘存储空间所剩无几了,之前可是还是100多个G的。

赶紧使用360进行磁盘清理,发现空间竟然被临时文件占掉了80多个G,打断点仔细排查之后,终于定位到了问题:接手前的代码中有对图片进行操作,中间引入了自定义的字体,在引入字体的时候每次都会产生一个20M左右的.tmp临时文件,然后就抓紧进行了处理。

下面有两种方式:

第一种:可以避免产生.tmp临时文件,避免大批量引入的时候吃掉硬盘的空间(个人推荐)

直接上代码:

	//filepath字体文件的路径
	private static java.awt.Font getSelfDefinedFont(String filepath){
        java.awt.Font font = null;
        File file = new File(filepath);
        try{
            font = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, file);
            font = font.deriveFont(java.awt.Font.PLAIN, 40);
        }catch (FontFormatException e){
            return null;
        }catch (FileNotFoundException e){
            return null;
        }catch (IOException e){
            return null;
        }
        return font;
    }

第二种方式:原先实现方法–需要注意会产生.tmp临时文件,但是好像挺多人用这种方式(个人不推荐)

	private static java.awt.Font getSelfDefinedFont(String filepath){
        java.awt.Font font = null;
        File file = new File(filepath);
        try{
            FileInputStream fi = new FileInputStream(file);
            BufferedInputStream fb = new BufferedInputStream(fi);
            font = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, fb);
            font = font.deriveFont(java.awt.Font.PLAIN, 40);
        }catch (FontFormatException e){
            return null;
        }catch (FileNotFoundException e){
            return null;
        }catch (IOException e){
            return null;
        }
        return font;
    }

你可能感兴趣的:(java,引入自定义字体)