Ubuntu下NetBeans中文乱码及方框问题的解决方法

2020-02-03 12:46:28丽君

当我在ubuntu 11.04中安装netbeans 7.0的时候,出现一个奇怪的现象,启动netbeans中,发现很多中文字无法显示,直接显示一个方框。很显然是没有找到某些字的显示数据,但是奇怪的是有些汉字可以显示,真神奇,难道netbeans所用到的字库居然不全吗?

而 ubuntu可以正常显示汉字,说明ubuntu本身的字库应该是没问题到。那么问题出在什么地方呢?

答案是:JRE

netbean是用java写的,它的运行是必须要依靠JRE的,这个大家都知道。而JRE使用的字体是依靠JRE本身的配置文件来决定在系统中和什么字体文件对应的。

因此判定是这种对应出了问题。

根据Java的官方文档(http://download.oracle.com/javase/1.5.0/docs/guide/intl/fontconfig.html#loading),字体对应配置文件是位于jre/lib下面,有两种形式,一种是src文件,一种是bfc文件。bfc文件是二进制的,系统预定义的,所以我们需要修改的是src文件,到这个目录,一看,如下图:

看到这些文件名,基本也明白了个大概。看看fontconfig.OS.version.properties.src这种格式就应该明白,这是不同操作系统平台的配置文件,jre会根据操作系统的不同而自动选择对应的配置文件,因此,我打开了ubuntu 的对应文件,看第一行:

复制代码
allfonts.chinese-cn-iso10646=-arphic-ar pl uming cn-light-r-normal--*-%d-*-*-c-*-iso10646-1

这里指定了jre用到逻辑字体和物理字体的对应关系,等号左边就是jre用的逻辑字体,而等号右边就是需要使用的物理字体了。

只是这个物理字体看起来跟火星文差不多,但是这个火星文可是正宗的X logical font description (XLFD)描述方式,这里不多说了,想了解的读者可以自己去google一下即可。

然后再看配置文件# Font File Names部分,其中有一行:

复制代码
filename.-arphic-ar_pl_uming_cn-light-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/truetype/arphic/uming.ttc

这是上面描述的物理字体和系统字体文件的对应描述。

左边不就是上面我们看着像火星文的物理字体名称吗?正好不知道哪儿去找这个字体,这下不就有答案了。连目录都告诉你了。

立刻跑到/usr/share/fonts/truetype目录去一看,不要说uming.ttc,连arphic这个目录都没有!

这下就面临两个选择:

1.修改配置文件,让他指向系统有的字体文件。

也就是修改:/usr/share/fonts/truetype/arphic/uming.ttc这部分,修改成存在的字体文件名称即可。

2.安装一个uming.tcc字体文件。

由于uming.tcc字体是比较有名的,是一个高质量的中文字库。因此我还是决定选择第二种方案。

到网上一goole,立刻找到了下载地址:http://ftp.br.debian.org/debian/pool/main/t/ttf-arphic-uming/ttf-arphic-uming_0.2.20080216.1-3_all.deb