Ubuntu下NetBeans中文乱码及方框问题的解决方法
当我在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
下载回来之后:sudo dpkg -i ttf-arphic-uming_0.2.20080216.1-3_all.deb
安装顺利完成,这个时候再跑到/usr/share/fonts/truetype目录去一看,这下有arphic这个目录了,然后打开目录一看,uming.ttc就在那里!
马上打开netbeans,漫长的等待,终于看到了窗口,一切都有了,字体看着确实很美,不愧是arphic 产品啊。
自此问题完美的解决了,不管版本如何变化,都可以按照这个方式去解决问题。
网上一些文章说的cp字体到jre/lib/fonts/fallback,很多人不懂原理。fallback的目录是jre字体后备目录,意思就是按照正常配置找不到字体信息,就会在这个目录下按照配置文件设定的顺序到字体文件中去寻找。用这个方式有两个问题,一个是效率低下。二是字体不统一,会出现例如:文件这个词,文是楷体,件是黑体的“壮观”景象!为什么?因为文字在楷体字库找到了,但是这个字库找不到件字,于是就在fallback中到黑体字库去找,并且找到。这种现象就神奇的出现了!
所以这个方式其实是属于歪打正着的方法,很多人糊里糊涂显示正常了,也没有搞懂原理。而另外一些人就会出现字体不统一到情况。
当然,上面所说的一切,在windows上均不会发生。因为windows比较统一,所以配置文件的配置一定可以正常工作,不会出现类似linux的连字体文件都可能找不到的情况。这也证明了规范,统一在软件中的重要性。
相关文章

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核
Canonical公司近日发布了Ubuntu 25.04 Beta版,这一版本被赋予了一个活泼的代号——“Plucky Puffin”(勇敢的海雀),据悉,正式的稳定版预计将在2025年4月17日与广大用户2025-03-29
如何让 Ubuntu 居中显示窗口? 3种方法实现Ubuntu窗口居中显示
个人习惯不管打开终端窗口还是文件管理器窗口,都希望居中显示,不太喜欢Linux下自动随意的摆放位置,下面我们就来看看详细设置方法2025-03-11
Ubuntu 24.04.2 LTS 正式发布: 带来全新硬件支持启用堆栈HWE
buntu 24.04 LTS 的第 2 个小版本Ubuntu 24.04.2 LTS 正式发布,出了修复漏洞以外,它还带来了全新的硬件支持启用堆栈(HWE),让系统性能和硬件兼容性更上一层楼2025-02-25
怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧
Ubuntu Linux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看下文介绍2025-01-20
高效管理你的Linux系统: Debian操作系统常用命令指南
在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使用和管理Debian系统2025-01-20
debian更新系统的命令怎么用? 轻松配置Debian自动更新的技巧
Debian不手动更新怎么体验新系统?Debian提供了一个既简单又高效的解决办法——自动更新,该怎么用呢?详细请看下文介绍2025-01-20
如何配置Ubuntu无人值守升级? 手动操作实现Ubuntu自动升级技巧
无人值守升级是一个用于自动更新 Debian 和 Ubuntu 系统的开源项目,该项目的主要目的是确保系统能够定期自动安装安全更新,从而保持系统的安全性和稳定性2025-01-20
Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法
Warp是一款使用Rust开发的现代化AI 终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程2025-01-20
Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法
Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debian系统中,有几种不同的方法可以查看版本信息2025-01-17
解决VMware中Ubuntu虚拟机鼠标闪烁或指针位置不正确的方案
刚下载虚拟机后,电脑在虚拟机内出现了鼠标闪烁或者鼠标指针位置不对的问题,该怎么解决呢?下面我们就来看看详细教程2025-01-09







最新评论