创建font_Java中使用Font创建字体前先检查是否存在

74722d60403a10f89567c7ecba690bee.png

问题

今天在部署项目的时候发现后端提供给前端验证码图片的Base64字符串编解码异常。按照正常情况来说应该是几个字母的验证码变成了△/>等符号。

思考

起初以为是字符集的问题,但经过检查发现项目中已经统一设置了UTF-8的字符编码,并且这个服务在线上本身并没有什么问题。考虑了差异性,发现出问题项目部署在了一个新申请的服务器。所以马上把项目打包部署在一个老的服务器上运行,Bingo正常。锁定为服务器差异导致的编解码问题。

由于代码不是我写的,所以在代码上追本溯源发现了这样一行代码

new Font("Arial",Font.PLAIN,30);

本能的想到服务器上有Arial这个字体吗?登录上服务器后可以根据/etc/fonts/fonts.conf配置文件查看Font directory list(字体路径),默认存放在/usr/share/fonts目录下。

对比了老服务器和新服务器/usr/share/fonts目录下的内容,前者为空后者存在一个lyx字体。怀疑有可能是lyx顶掉了默认值。解决方式①删掉lyx文件夹;②增加自定义字体。

解决

因为没有没有删除权限,方法一没有尝试。

方法二:从windows中C:WINDOWSFonts目录下拷贝一个代码中指定的字体("Arial")。在/usr/share/fonts目录下创建"Arial”同名文件夹,并粘贴进拷贝的字体。使用fc-cache命令刷新字体缓存,使用fc-list命令查看是否刷新成功。

再次执行代码,验证码显示正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值