LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 6379|回复: 20

关于wine很慢新的发现,不知道有人知道怎么解决吗?

[复制链接]
发表于 2006-2-17 21:27:04 | 显示全部楼层 |阅读模式
使用Wine事,我用utf8的locale,如果运行了SCIM的话,启动Wine,菜单,对话框等都慢得要死,而pkill scim后就正常了。如果一定要运行scim的话,使用LC_ALL=zh_CN.GBK又没有什么问题。

按照这里所说:
http://hzhr.blogeden.cn/post/30874/3943
是因为缺乏gbk字体,但是我运行 xlsfonts | grep gbk得到
-misc-simhei-medium-r-normal--0-0-0-0-c-0-gbk-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0
这表明我是有gbk字体的吧?可是问题依然如故。

一个意外的机会我运行:
xfontsel
发现cpu占用马上100%一段时间后才能弹出对话框,
而用 LC_ALL=zh_CN.GBK xfontsel
立刻就弹出对话框了。

所以我大胆猜测是不是xfontsel造成wine等使用了XFontSet的程序弹出对话框其慢无比呢?

如果是这样,有什么解决办法吗?
发表于 2006-2-17 22:43:13 | 显示全部楼层
可能是 x 核心字体引擎的问题吧。
回复 支持 反对

使用道具 举报

发表于 2006-2-18 00:36:16 | 显示全部楼层
Post by ifree
使用Wine事,我用utf8的locale,如果运行了SCIM的话,启动Wine,菜单,对话框等都慢得要死,而pkill scim后就正常了。如果一定要运行scim的话,使用LC_ALL=zh_CN.GBK又没有什么问题。

按照这里所说:
http://hzhr.blogeden.cn/post/30874/3943
是因为缺乏gbk字体,但是我运行 xlsfonts | grep gbk得到
-misc-simhei-medium-r-normal--0-0-0-0-c-0-gbk-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0
这表明我是有gbk字体的吧?可是问题依然如故。

一个意外的机会我运行:
xfontsel
发现cpu占用马上100%一段时间后才能弹出对话框,
而用 LC_ALL=zh_CN.GBK xfontsel
立刻就弹出对话框了。

所以我大胆猜测是不是xfontsel造成wine等使用了XFontSet的程序弹出对话框其慢无比呢?

如果是这样,有什么解决办法吗?

我再说明一下,-*-gbk-0 只是我举的一个例子,考虑到大部分人是 zh_CN.GBK 或 zh_CN.UTF-8 locale。并不是说有了 -*-gbk-0 字体,Wine 就没有这个问题了,可能原先我没有说清楚,造成了一些理解上的不对。
先说一下这个问题的原因,不是 locale 也不是输入法的问题,问题原因就是在于 Wine 的那一段代码:

  1.         fontSet = XCreateFontSet(display,
  2.                         "*", /*FIXME*/
  3.                         &missing_fonts, &count, NULL);
复制代码

如果了解 XFontSet,那就知道那段代码是干什么的,简单的说,就是根据匹配条件,创建出一个适合当前locale的XFontSet。怎么样的XFontSet才是“适合”的呢,如果安装了 gtk+ 1.0,可以查看 /etc/gtk/gtkrc.*,可以看到不同的 locale 对 XFontSet 的要求是不一样的,当然你也可以查看 /usr/X11R6/lib/X11/locale/*/XLC_LOCALE,里面详细的描叙了创建 XFontSet 的规则。例如,在我的机器上,Xorg 6.9.0,zh_CN.GBK下,创建成功的 XFontSet 包含有 ISO8859-1 和 GBK-0 字符集的字体。
我附带一个测试程序,可以查看在当前 locale 下,XServer缺了哪些字符集的字体。在不同locale下试试看,下面是在我机器上的输出:

  1. hzhr@debian:~/test$ LANG=zh_CN.GB2312 time ./xfontset
  2. ximFontSet = 0x80550e0, missing_fonts = (nil), count = 0
  3. 0.00user 0.00system 0:00.07elapsed 11%CPU (0avgtext+0avgdata 0maxresident)k
  4. 0inputs+0outputs (0major+342minor)pagefaults 0swaps

  5. hzhr@debian:~/test$ LANG=zh_CN.GBK time ./xfontset
  6. ximFontSet = 0x8054158, missing_fonts = (nil), count = 0
  7. 0.00user 0.00system 0:00.05elapsed 20%CPU (0avgtext+0avgdata 0maxresident)k
  8. 0inputs+0outputs (0major+346minor)pagefaults 0swaps

  9. hzhr@debian:~/test$ LANG=zh_CN.GB18030 time ./xfontset
  10. ximFontSet = 0x8055df0, missing_fonts = 0x80541f0, count = 1
  11. missing_fonts[0] = GB18030-0
  12. 0.00user 0.00system 0:07.42elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
  13. 0inputs+0outputs (0major+292minor)pagefaults 0swaps

  14. hzhr@debian:~/test$ LANG=zh_TW.BIG5 time ./xfontset
  15. ximFontSet = 0x8056230, missing_fonts = (nil), count = 0
  16. 0.01user 0.00system 0:00.05elapsed 37%CPU (0avgtext+0avgdata 0maxresident)k
  17. 0inputs+0outputs (0major+349minor)pagefaults 0swaps

  18. hzhr@debian:~/test$ LANG=zh_HK.big5hkscs time ./xfontset
  19. ximFontSet = 0x80541f0, missing_fonts = 0x80541e0, count = 1
  20. missing_fonts[0] = BIG5HKSCS-0
  21. 0.00user 0.00system 0:07.37elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
  22. 0inputs+0outputs (0major+301minor)pagefaults 0swaps
复制代码

如上,在 zh_CN.GB18030 和 zh_HK.big5hkscs 下,这个程序运行的时间明显偏久,因为我的系统缺了 GB18030-0 和 BIG5HKSCS-0 的字体。所以你可以查看一下,在 zh_CN.UTF-8 下,你的系统缺了哪些字体?
另外需要说明的是,XCreateFontSet使用"*"来创建字体,本来就是很慢的,所以即使你的当前locale下不缺字体,这个查找也可能是很费时间的,所以不要抱怨为什么字体不缺,还是这么慢。

要解决这个问题,没有什么好的办法,给 Wine 打补丁可以,但是补丁不好写,要用什么匹配条件来替换 "*" 呢,没有一个固定的完美的匹配条件能适合所有locale,所以 gtk+ 1.0 的做法是,读配置文件 /etc/gtk/gtkrc.*,XFontSet是过时的东西,Wine 不会接受这样的补丁;或者Wine可以去掉支持OverTheSpot的XIM输入风格,因为目前看只有OverTheSpot输入风格要求XFontSet。当然最简单的办法,缺啥补啥。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-18 13:59:05 | 显示全部楼层
谢谢大虾,
对于我的问题应该怎样解决呢?
回复 支持 反对

使用道具 举报

发表于 2006-2-18 14:21:55 | 显示全部楼层
把这个帖子合到原来的那个wine很慢的帖子比较好,重复开贴,分散力量。
回复 支持 反对

使用道具 举报

发表于 2006-2-18 20:49:36 | 显示全部楼层
Post by ifree
谢谢大虾,
对于我的问题应该怎样解决呢?

你这是什么情况?少了字体还是其他?
回复 支持 反对

使用道具 举报

发表于 2006-2-20 16:05:56 | 显示全部楼层
用nice吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-20 17:06:19 | 显示全部楼层
Post by hzhr
你这是什么情况?少了字体还是其他?

我运行 xlsfonts | grep gbk得到
-misc-simhei-medium-r-normal--0-0-0-0-c-0-gbk-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0
看上去不缺字体呀。

我用zh_CN.utf8的locale时启动慢;换成zh_CN.gbk的locale时启动就不慢,但是有部分乱码。
我也不知道属于什么情况。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-20 17:08:19 | 显示全部楼层
Post by lin_lin13
用nice吧

nice是个什么东西?和wine有关吗?
回复 支持 反对

使用道具 举报

发表于 2006-2-20 22:19:23 | 显示全部楼层
这个与wine无关,与scim有关,开始时我用的是scim,发现打开程序时都非常慢,我现在是用的fcitx
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表