CentOS系统Java使用Graphics2D绘制中文时乱码(方框,框框)

18 篇文章 0 订阅

问题描述

需求,在一张图片的上面绘制中文昵称。代码如下

//绘制昵称
Font font =  new Font("宋体", Font.BOLD, 34);
graphics.setColor(Color.BLACK);
graphics.setFont(font);
graphics.drawString(userName,300 , 200);

最后绘制出来是几个框框

解决方法

一般不是编码问题,有网友说用unicode编码,试过后绘制出来也不是中文。
我这边的问题就是,Linux CentOS上没有这个中文字体,导致无法绘制。
所以下面是介绍字体的安装过程,CentOS为例

  1. 获取字体
    simsun.ttf–宋体为例, 这里可以在Windows或者mac上获取,没有直接网上下载,格式ttc直接改为ttf。【宋体 - 字体下载】
  2. 上传到CentOS上的字体库
    新建一个目录/usr/share/fonts/chinese,把刚才的simsun.ttf上传到这个目录下。
  3. 创建字体索引(无需重启操作系统)
   mkfontdir /usr/share/fonts/chinese   
   mkfontscale /usr/share/fonts/chinese 

如果上面命令出错,先安装字体工具

yum install mkfontscale/mkfontdir
  1. 在代码中这样使用,引用字体就用‘宋体’引用即可
Font font =  new Font("宋体", Font.BOLD, 34);
graphics.setColor(Color.BLACK);
graphics.setFont(font);
graphics.drawString(userName,300 , 200);

另外附上如何检查本地安装了哪些字体的代码

System.out.println("支持的字体-------------");
	Font[] fonts = GraphicsEnvironment
                .getLocalGraphicsEnvironment().getAllFonts();
        for (Font f : fonts) {
            System.out.println("Name:" + f.getFontName());
        }
System.out.println("支持的字体-------------");

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值