当我在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字体是比较有名的,是一个高质量的中文字库。因此我还是决定选择第二种方案。

下载回来之后: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的连字体文件都可能找不到的情况。这也证明了规范,统一在软件中的重要性。

linux ftp中文乱码方块,Ubuntu下NetBeans中文乱码及方框问题的解决方法相关推荐

  1. linux qt 导入gl库,Ubuntu下QtOpenGL无法正常使用GLU库的解决方法

    在Windows下写好且编译通过的QtOpenGL程序拿到Ubuntu下编译,如果使用从Ubuntu软件中心中提供的4.6版本的Qt进行编译则完全没有问题,而使用从诺基亚官网上下的4.7版本的QtSD ...

  2. Ubuntu 下 FireFox( 火狐 )无法使用HTML5播放器的解决方法

    Ubuntu 下 FireFox( 火狐 )无法使用HTML5播放器的解决方法: ubuntu自带的火狐没有视频播放器,可以不用下载flash(即将不支持),现在国内许多视频网站(B站等)都支持HTM ...

  3. Ubuntu下微信(wechat)经常无故卡死解决方法 百度输入法

    最近好长一段时间,在Ubuntu下使用deepin-wechat时,微信经常卡死.我尝试了重装wechat,升级deep-wine版本等,都无法解决问题,很苦恼,甚至都想用回windows系统了. 今 ...

  4. Ubuntu下安装Inode后双击InodeClient无反映解决方法

    由于比较喜好linux编程环境,所以准本一直使用linux.学校无线有时有有时没很不爽,所以准本安装Inode,但是安装完Inode后双击是一直没反映.最后求助万能的百度,谁知道百度的搜索不得不说太差 ...

  5. Ubuntu下搜狗拼音输入法打不出汉字的解决方法

    最近Ubuntu系统下的搜狗输入法莫名出问题了,问题如下: 问题 (1)Ubuntu下,搜狗拼音输入法能启动(系统托盘处有图标),但是打不出汉字,打字时选框不正常. (2)Deepin下,搜狗输入法无 ...

  6. linux 有线网络已断开,Ubuntu有线网络已断开的另一种解决方法

    前些天安装了Elementary OS 本以为有线网络已断开的问题会解决,但是安装好后问题依然存在.本人先前安装的是Ubuntu 12.04 后来升级到了13.04,在宿舍中上网插上网线一切正常,但是 ...

  7. ubuntu下使用HDMI时输出无声音的解决方法

    这个问题碰到几次了,第一次是刚给显示器接用HDMI线的时候,后来给Ubuntu更新内核后又碰到了,特此记录一下 使用HDMI会默认将视频和声音都由其输出,然后声音经由HDMI线从主机直接走到显示器后出 ...

  8. ubuntu下 mysql安装以后无法登陆的的解决方法((ERROR 1698 (28000): Access denied for user 'root'@'localhost'))...

    1. 删除mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo ap ...

  9. 解决Ubuntu下matplotlib中文乱码问题-以添加宋体:simsun为例

    解决Ubuntu下matplotlib中文乱码问题-以添加宋体:simsun为例 先从simsun官网上下载宋体字体库 : 查看matplotlib配置文件位置: import matplotlibp ...

最新文章

  1. (转)winform下TCP通信的简单应用
  2. 京东的热点key探测系统发布,单机 QPS 提升至 37 万
  3. 网络营销——网络营销专员如何将网站优化技能持久点亮
  4. NOI前总结:点分治
  5. ASP.NET2.0中用ICallbackEventHandler实现客户端与服务器端异步交互
  6. OpenGL之渲染大小球自转和公转的效果
  7. Dapr牵手.NET学习笔记:状态管理之docker-compose发布
  8. php语法高亮编辑器,最新PHPCMS V9编辑器代码高亮显示亲测可用(提前格式化)
  9. 采用Angular勾画SVG圆环形进度条
  10. paping使用来测试联通网站由于tcp协议导致的无法通信问题超时问题
  11. 董事长亲自“翻墙偷拍”后,身价暴涨3000万
  12. ediplus 复制编辑一列_Excel中如何使用公式查找一列中的重复值并且在另一列里面列出来...
  13. GitHub 上排名前 100 的 Objective-C 项目简介
  14. hover事件获取当前元素信息
  15. 7.0 站在生物学的角度看TypeScript类的继承
  16. KVM实验一 pepsi-wyl
  17. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
  18. C# 扫描并读取图片中的文字(.NET Core)
  19. ANSYS WORKBENCH基础学习之应力奇异及位移结果对比
  20. 中国阀门驱动装置行业运行状况与前景趋势研究报告2022-2028年

热门文章

  1. 向MFC应用程序添加控制台窗口
  2. C/C++函数调用的几种方式
  3. linux获取windows的主机名,获取网络许可主机名和主机 ID 的步骤
  4. 信息学奥赛一本通 1120:同行列对角线的格 | OpenJudge NOI 1.8 02:同行列对角线的格子
  5. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树
  6. 信息学奥赛一本通(1195:判断整除)
  7. 信息学奥赛一本通(1021:打印字符)
  8. 常用技巧 —— 打表规律
  9. 家谱树(信息学奥赛一本通-T1351)
  10. 分组背包(信息学奥赛一本通-T1272)