zh_CN.GBK或zh_CN.UTF-8的locale下无-*-gbk-0的字体影响linux性能(

转自:http://hzhr.blogeden.cn/post/30874/3943

找到了 Wine 运行慢的原因

hzhr | 15 二月, 2006 22:03

前几天花了九牛二虎之力在(pure) Debian下把 Xgl 编了(有时间整理一下过程),然后发现wine跑程序特别慢,一直以为是Xgl的问题。后来在论坛上看见有人老说wine很慢,http://www.linuxsir.org/bbs/showthread.php?t=240185 ,觉得很奇怪,他们说的问题我可一直没碰到过啊,难道换成Xgl就有问题?可他们好像不是用的Xgl啊,更怪的是在zh_CN.GB2312下没问题,在zh_CN.GBK和zh_CN.UTF-8下就有。

我就喜欢怪问题,于是把wine的代码找来看了一下,发现是wine支持OverTheSpot风格的XIM输入法时引入的一个BUG,OverTheSpot要求X-client传回fontSet给XIM Server,结果wine中就这样写:

    // dlls/x11drv/xim.c, X11DRV_CreateIC

    fontSet = XCreateFontSet(display,

                      "*", /*FIXME*/

                      &list, &count, NULL);

这个函数会根据当前的locale和匹配条件去找XFontSet,本来也没什么不对。但是仔细想想,在zh_CN.GBK和zh_CN.UTF-8下, XFontSet中需要-*-gbk-0的字体,如果系统中没有-*-gbk-0的字体,那会是个什么样的情况,上面的查找将会遍历整个X core font,速度当然一下子就慢了。

解决办法当然很简单,加上gbk字体,马上就OK了:)

zh_CN.GB2312多古老啊,还是赶快回到21世纪吧,那就是 zh_CN.UTF-8:)

BTW: Xgl不读配置文件,那只好在命令行上指定字体路径了。

 #

Linux • 评论 (0) •