为什么宋体-pua 无法显示数字

2023-03-16 20:56 52次浏览 攻略

ImageIO生成图片,中文显示异常

一开始我是怀疑字体编码可能有冲突,通过Sy(";)查看我本机的编码是GBK,而我服务器(Centos7)上的编码是UTF-8。因此,我在生成图片时修改了系统编码,但不管用,照常还是显示一个个方框。

后来在不断google中看有的网友提到“字体”,因为Centos中没有中文字体,所以才造成上图中的一个个方框(一想也对,乱码的话应该是一些不规则的符号,不能是一个个方框)。

先查看下服务器字体列表

[root@iZ2zez5rp1bmsZ share]# cd fc-list

bash: cd: fc-list: No such file or directory

悲哀,连字体库都没有!

找到方法就去干!


安装字体库

# 先安装fontconfig,用fontconfig来安装字体库

[root@iZ2zebjvdi1bmsZ share]# yum -y install fontconfig

Loaded plugins: fastestmirror

Installed:

0:2.10.95-10.el7

Dependency Installed:

0:1.44-8.el7

Complete!

fontconfig安装成功后在/usr/share目录中就会看到fonts和fontconfig两个目录(没装fontconfig之前是没有这两个目录的)

接下来就可以添加字体库了


添加字体

添加字体之前需要先下载相应的字体文件,博主用的是(宋体)字体库,可以通过下方链接下载字体包

下载

http://ofndwaoqp.bkt.clouddn.com/

当然也可以去windows系统下的C:/windows/fonts目录下寻找合适的字体

字体文件准备好后,下边就正式开发操作

首先在/usr/share/fonts/目录下创建目录(名称随意)

mkdir chinese

然后将上方提供的

zip包中的两个文件全部解压并放到新建的目录(chinese)中,

然后修改chinese目录的权限

chmod -R 755 /usr/share/fonts/chinese

小知识:755代表的意思:文件所有者享有读、写和执行的权限(所有权),同组用户和其他用户只享有读取和执行的权限,没有写入的权限(详情可自行百度哈)

接下来需要安装ttmkfdir,这个命令的作用是搜索目录中所有的字体信息,汇总生成文件。

[root@iZ2zebjvditp1bmsZ fonts]# yum -y install ttmkfdir

Loaded plugins: fastestmirror

Installed:

0:3.0.9-42.el7

Complete!

然后执行ttmkfdir命令:

[root@iZ2zsZ fonts]# ttmkfdir -e /usr/share/X11/fonts/encoding

最后修改字体配置文件

vi /etc/fon

如下添加配置

配置系统字体

<dir>/usr/share/fonts/chinese</dir>

最后保存文件并执行fc-cache进行刷新字体缓存

OK,到此字体就安装完成,在看一下字体列表:

[root@iZ2zebrp1bmsZ fonts]# fc-list

/usr/share/fonts/chinese: SimSun-PUA,宋体-PUA:style=Regular

/usr/share/fonts/chinese: NSimSun,新宋体:style=Regular

/usr/share/fonts/chinese/: SimSun,宋体:style=Regular

/usr/share/fonts/chinese: SimSun,宋体:style=Regular


重新测试生成文件


参考资料

ImageIO drawString 中文乱码问题

Java 的系统属性 和 的区别

Linux CentOS 7 安装字体库 & 中文字体

相关推荐