LinuxSir.cn,穿越时空的Linuxsir!

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

KDE 3 下非中文 Locale 下中文显示成小黑点问题尝试解决

[复制链接]
发表于 2008-7-4 20:39:06 | 显示全部楼层 |阅读模式
问题解决。如果你是使用稳定分支,请下载 stableBranch.tar.bz2(x11-libs/qt-3.3.8-r4);如果使用测试分支,请下载 testBranch.tar.gz(x11-libs/qt-3.3.8b)。

历史记录:
这里是 Ubuntu 的相关问题的解决。

Ubuntu 方面给 QT 的 qfontdatabase.cpp 打了补丁。补丁内容如下:
  1. diff -pruN 3:3.3.8b-4/debian/patches/61_eastern_asian_languagues.diff 3:3.3.8b-5/debian/patches/61_eastern_asian_languagues.diff
  2. --- 3:3.3.8b-4/debian/patches/61_eastern_asian_languagues.diff        1970-01-01 01:00:00.000000000 +0100
  3. +++ 3:3.3.8b-5/debian/patches/61_eastern_asian_languagues.diff        2008-03-11 09:14:36.000000000 +0000
  4. @@ -0,0 +1,39 @@
  5. +--- qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp        2008-01-15 21:09:13.000000000 +0200
  6. ++++ qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp        2008-03-10 11:34:22.000000000 +0200
  7. +@@ -966,20 +966,22 @@
  8. +
  9. + #ifdef Q_WS_X11
  10. +     if (script == QFont::Han) {
  11. +-        // modify script according to locale
  12. +-        static QFont::Script defaultHan = QFont::UnknownScript;
  13. +-        if (defaultHan == QFont::UnknownScript) {
  14. +-            QCString locale = setlocale(LC_ALL, NULL);
  15. +-            if (locale.contains("ko"))
  16. +-                defaultHan = QFont::Han_Korean;
  17. +-            else if (locale.contains("zh_TW") || locale.contains("zh_HK"))
  18. +-                defaultHan = QFont::Han_TraditionalChinese;
  19. +-            else if (locale.contains("zh"))
  20. +-                defaultHan = QFont::Han_SimplifiedChinese;
  21. +-            else
  22. +-                defaultHan = QFont::Han_Japanese;
  23. +-        }
  24. +-        script = defaultHan;
  25. ++        // modify script according to locale
  26. ++        static QFont::Script defaultHan;
  27. ++        QCString locale = setlocale(LC_ALL, NULL);
  28. ++
  29. ++        if (locale.contains("ko"))
  30. ++            defaultHan = QFont::Han_Korean;
  31. ++        else if (locale.contains("zh_TW") || locale.contains("zh_HK"))
  32. ++            defaultHan = QFont::Han_TraditionalChinese;
  33. ++        else if (locale.contains("zh"))
  34. ++            defaultHan = QFont::Han_SimplifiedChinese;
  35. ++        else if (locale.contains("ja"))
  36. ++            defaultHan = QFont::Han_Japanese;
  37. ++        else
  38. ++            defaultHan = QFont::Han; // don't change
  39. ++
  40. ++        script = defaultHan;
  41. +     }
  42. + #endif
  43. +
复制代码

这个补丁可以在 http://patches.ubuntu.com/by-rel ... ee_3:3.3.8b-5.patch 上可以找到。我现在尝试使用它。如果有同志愿意,可以尝试,把结果发在这里。

我现在有个问题就是打了这个补丁之后要不要重新 emerge 和 kde 有关的东西。

本帖子中包含更多资源

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

x
 楼主| 发表于 2008-7-5 09:45:03 | 显示全部楼层
貌似我试过后,没有效果……
我很不解,我这里是LC_ALL="",LANG="en_US.UTF-8"。老实说,我不知道这是为什么。script 应该就是 defaultHan 才对。

Here is a snapshot on Kubuntu 8.04. You see, they solved it.

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2008-7-6 18:52:17 | 显示全部楼层
字体好像很难看。。。

用中文locale字体就很漂亮
回复 支持 反对

使用道具 举报

发表于 2008-7-6 19:20:44 | 显示全部楼层
那为什么不干脆用全中文的locale呢?
回复 支持 反对

使用道具 举报

发表于 2008-7-6 20:29:19 | 显示全部楼层

这是我的 locale:
  1. LANG=en_US.utf8
  2. LC_CTYPE=en_US.utf8
  3. LC_NUMERIC=en_US.utf8
  4. LC_TIME=en_US.utf8
  5. LC_COLLATE=en_US.utf8
  6. LC_MONETARY=en_US.utf8
  7. LC_MESSAGES=en_US.utf8
  8. LC_PAPER=en_US.utf8
  9. LC_NAME=en_US.utf8
  10. LC_ADDRESS=en_US.utf8
  11. LC_TELEPHONE=en_US.utf8
  12. LC_MEASUREMENT=en_US.utf8
  13. LC_IDENTIFICATION=en_US.utf8
  14. LC_ALL=
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-7-6 22:28:21 | 显示全部楼层
回到 kde3.5 下测试了一下
发现可以通过设置字体解决了有:
basket, eva, amarok, kate, dolphin
设置过字体仍然有小黑点的有:
konqueror, konsole

貌似不是qt3的问题,而是一些老程序的bug...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-7 11:10:31 | 显示全部楼层
1. Kubuntu 使用的是 WQY 的点阵宋体,换成 locale=zh_CN 效果一样,这个我已经试过了。
2. 之所以不去设置 locale 目的是出于多种语言混杂的考虑。这个情况肯定会出现,虽然大多数人不一定。比如我之前拿到同学给的古代音系的文章,里面夹杂太多的语言,非常头疼。因为设置成中文,日文中中文没有的“国字”就显示不正常。
3. 对的,直接设置中文字体可以解决一半。但是其他语言文字会有问题。另外就是如你所说有的程序还是不可以。
4. @xijiao:你的是什么程序,没有用过?
回复 支持 反对

使用道具 举报

发表于 2008-7-7 15:36:22 | 显示全部楼层
建议你和qt upstream去解释这些
如果他们认为这是问题
不用你提交补丁,他们自己也会修正的
这就是解决问题的终极**的应用:把自己的问题变成别人的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-7 18:02:26 | 显示全部楼层
老实说,鄙人在找资料时,官方可能已经知道这个问题了。鄙人刚才在云帆论坛找这个问题的解决时,上面说 QT-3.3.9 可以解决这个问题。但是鄙人在 Ubuntu 和 Gentoo 的软件库中并没有看到所谓的 3.3.9 的版本,在奇趣官方网站上也没有看到。鄙人现在也在确定是否有这个版本,如果没有,鄙人会尽快联系他们。

而且好像奇趣宣布不打算为 3 版本发布后续补丁版本了。
回复 支持 反对

使用道具 举报

发表于 2008-7-8 12:15:14 | 显示全部楼层
那个程序叫 basket

你可以试试用 qtconfig 设置字体替换
回复 支持 反对

使用道具 举报

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

本版积分规则

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