解决Java应用在Linux下无法正常水印生僻字

转载 2015年07月09日 14:09:11

昨天接到一个投诉,说是他的水印是一个方框。刚开始还以为是程序出了问题,乱码了呢,接过来一看,发现水印不了的字比较生僻。于是查了一番程序,做了UT,当然是在Windows下做的。后来在Linux下又运行了一下水印的程序,发现水印的效果与投诉一模一样。这样就断定了Linux下缺少了这个生僻字的字体。想起以前玩Linux美化时,总是要搞字体。这次也不例外,找了一些文档。

 

 

最简单的解决方案是:

1)在$JAVA_HOME/jre/lib/fonts下新建一个fallback目录,让Java程序渲染生僻字时在fallback里面找。

2)把windows/fonts/simsun.ttc拷贝到fallback去


 首先来说说产生这个问题的原因。java程序启动的时候会去在$JAVA_HOME/jre/lib/fonts目录下寻找相应的字体来显示。由于 JDK默认没有中文字体,所以我们需要手工的来设置一下,让java应用程序能够找到相应的中文字体。这样就能够解决问题了。 


现在思路已经很清晰了,那我们就来着手解决问题吧。 


基本步骤如下: 


1)cd $JAVA_HOME/jre/lib/fonts 

2)mkdir fallback 

3)cp xxx.ttf fallback #xxx.ttf代表你想要的中文字体文件 

4)cd fallback 

5)mkfontscale 

6)mkfontdir 


其实,我们可以一条命令解决这个问题。将Linux系统的字体目录作为JDK下面的一个字体目录连接。 


ln -s $FONTS_PATH/FONT_DIR $JAVA_HOME/jre/lib/fonts/fallback 


你在打开你的java应用程序就会看到久违的中文了。

 

 

 

参考:

生僻字编码问题

1、GBK编码:用2个字节表示一个中文字符。但是遇到生僻字每个字符的右半边都是\,也可以通过搜索\搜到字符        比如:碶,GBK编码中右边的半边字符为5C(ue可以看),也就是“\”,我们通...
  • wang123459
  • wang123459
  • 2017年12月14日 09:36
  • 112

生僻字及编码问题

来一段历史简约来讲的话…电脑最开始 只有ASC 码,当时创造的电脑的人们没有想到电脑现在会如此国际化,他们只考虑到自己的语言——英语, ASC 在电脑中处理英语 绰绰有余。 后来随着电脑的发展...
  • xude1985
  • xude1985
  • 2016年04月10日 23:16
  • 2566

AIX系统生僻字的解决方案

最近做优化人力资源系统碰到一个问题,就是有个人的姓名包含:(yan)这个生僻字,系统无法显示,导致该员工工资无法发出...          生产环境是:AIX6.1,Weblogic 10g,Or...
  • huangchao064
  • huangchao064
  • 2014年11月28日 10:50
  • 2052

Pinyin4j使用手册

一般用法 pinyin4j的使用很方便,一般转换只需要使用PinyinHelper类的静态工具方法即可: String[] pinyin = PinyinHelper.toHanyuPinyi...
  • SoumnsJ
  • SoumnsJ
  • 2017年12月15日 10:20
  • 22

java校验中文姓名合法性(需要支持生僻字与分隔符·)

java校验中文姓名合法性(需要支持生僻字与分隔符·) 汉字以GB18030中包含的汉字为全量...
  • snowstar123
  • snowstar123
  • 2016年07月27日 10:39
  • 2692

字符编码杂谈

字符编码杂谈基础知识准备字符编码笔记:ASCII,Unicode和UTF-8准备工具notepad++添加16进制插件Unicode与UTF-8的异同 Unicode只是一个符号集,它只规定了符号的二...
  • jvortex
  • jvortex
  • 2017年07月20日 10:40
  • 314

weblogic集群原理

CLUSTER概要 一、 Cluster的概念及优势 Weblogic支持集群技术,即让一组Server指向同一域名一起工作从而提供一个更强大、更可靠的应用平台。对于客户端而言,无论C...
  • huangrunqing
  • huangrunqing
  • 2013年11月22日 16:02
  • 8634

WebLogic服务器配置优化总结

2、堆空间的设置 针对JVM堆的设置一般,可以通过-Xms -Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,我们通常把最大、最小设置为相同的值。 年轻代和年老...
  • pkuyjxu
  • pkuyjxu
  • 2013年02月25日 12:44
  • 6107

java学习:eclipse + Weblogic 集成开发环境搭建

网上有很多文章都说eclipse要安装额外的插件才能支持weblogic,可能以前需要这样,但自从bea的weblogic被oracle收购后,现在已经很简单了 一、先下载 Free Oracle ...
  • monai134
  • monai134
  • 2016年06月27日 16:09
  • 3974

字符编码之间的转换

字符编码介绍 在严格的ASCII中,每个字元用7位元表示,一共规定了128个字符的编码; Unicode拓展自ASCII字元集,使用全16位字元集,可以表示全世界上所有的书写语言中可能用于电脑通讯...
  • daoming1112
  • daoming1112
  • 2016年12月27日 23:31
  • 178
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Java应用在Linux下无法正常水印生僻字
举报原因:
原因补充:

(最多只允许输入30个字)