java引入自定义字体的方法

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;
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值