LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
 
主题工具
旧 08-07-04, 20:39 第 1 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

标题: [解决]KDE 3 下非中文 Locale 下中文显示成小黑点问题


问题解决。如果你是使用稳定分支,请下载 stableBranch.tar.bz2(x11-libs/qt-3.3.8-r4);如果使用测试分支,请下载 testBranch.tar.gz(x11-libs/qt-3.3.8b)。

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

Ubuntu 方面给 QT 的 qfontdatabase.cpp 打了补丁。补丁内容如下:
代码:
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 --- 3:3.3.8b-4/debian/patches/61_eastern_asian_languagues.diff 1970-01-01 01:00:00.000000000 +0100 +++ 3:3.3.8b-5/debian/patches/61_eastern_asian_languagues.diff 2008-03-11 09:14:36.000000000 +0000 @@ -0,0 +1,39 @@ +--- qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp 2008-01-15 21:09:13.000000000 +0200 ++++ qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp 2008-03-10 11:34:22.000000000 +0200 +@@ -966,20 +966,22 @@ + + #ifdef Q_WS_X11 + if (script == QFont::Han) { +- // modify script according to locale +- static QFont::Script defaultHan = QFont::UnknownScript; +- if (defaultHan == QFont::UnknownScript) { +- QCString locale = setlocale(LC_ALL, NULL); +- if (locale.contains("ko")) +- defaultHan = QFont::Han_Korean; +- else if (locale.contains("zh_TW") || locale.contains("zh_HK")) +- defaultHan = QFont::Han_TraditionalChinese; +- else if (locale.contains("zh")) +- defaultHan = QFont::Han_SimplifiedChinese; +- else +- defaultHan = QFont::Han_Japanese; +- } +- script = defaultHan; ++ // modify script according to locale ++ static QFont::Script defaultHan; ++ QCString locale = setlocale(LC_ALL, NULL); ++ ++ if (locale.contains("ko")) ++ defaultHan = QFont::Han_Korean; ++ else if (locale.contains("zh_TW") || locale.contains("zh_HK")) ++ defaultHan = QFont::Han_TraditionalChinese; ++ else if (locale.contains("zh")) ++ defaultHan = QFont::Han_SimplifiedChinese; ++ else if (locale.contains("ja")) ++ defaultHan = QFont::Han_Japanese; ++ else ++ defaultHan = QFont::Han; // don't change ++ ++ script = defaultHan; + } + #endif +
这个补丁可以在 http://patches.ubuntu.com/by-release...3.3.8b-5.patch 上可以找到。我现在尝试使用它。如果有同志愿意,可以尝试,把结果发在这里。

我现在有个问题就是打了这个补丁之后要不要重新 emerge 和 kde 有关的东西。
上传的附件
文件类型: bz2 stableBranch.tar.bz2 (20.0 KB, 1 次查看)
文件类型: gz testBranch.tar.gz (16.6 KB, 2 次查看)







__________________
藥用高分子也考試……

此帖于 08-08-09 12:59 被 亞利艾爾 编辑.
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-05, 09:45 第 2 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

貌似我试过后,没有效果……
我很不解,我这里是LC_ALL="",LANG="en_US.UTF-8"。老实说,我不知道这是为什么。script 应该就是 defaultHan 才对。

Here is a snapshot on Kubuntu 8.04. You see, they solved it.
上传的图像
文件类型: png snapshot1.png (194.7 KB, 56 次查看)

此帖于 08-07-05 17:17 被 亞利艾爾 编辑.
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-06, 18:52 第 3 帖
kimux
 
kimux 的头像
 
 
注册会员  
  注册日期: Jan 2005
  帖子: 626
  精华: 0
 

字体好像很难看。。。

用中文locale字体就很漂亮







__________________
Gentoo | no-multilib | ~amd64

openbox | tint2
  kimux 当前离线   回复时引用此帖
旧 08-07-06, 19:20 第 4 帖
druggo 帅哥
 
druggo 的头像
 
 
注册会员  
  注册日期: Mar 2003
  我的住址: 杭州
  帖子: 1,601
  精华: 0
 

那为什么不干脆用全中文的locale呢?







__________________
HighWayToHell (blog)
http://blog.druggo.org

Gentoo(~x86)/5200+/4G/M2N68/9500GT/500Gx2(RAID1)
  druggo 当前离线   回复时引用此帖
旧 08-07-06, 20:29 第 5 帖
夕角
 
夕角 的头像
 
 
注册会员  
  注册日期: May 2006
  帖子: 747
  精华: 7
 


这是我的 locale:
代码:
LANG=en_US.utf8 LC_CTYPE=en_US.utf8 LC_NUMERIC=en_US.utf8 LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8 LC_MONETARY=en_US.utf8 LC_MESSAGES=en_US.utf8 LC_PAPER=en_US.utf8 LC_NAME=en_US.utf8 LC_ADDRESS=en_US.utf8 LC_TELEPHONE=en_US.utf8 LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=en_US.utf8 LC_ALL=







__________________
Linux群:19163127
我的blog: xijiao.wordpress.com.cn
-------------------------------------------------------------------------------------------------------------------------
个人观点: 要装gentoo前一定要对整个系统有一定的了解,比如:自己配置和编译过内核;可以不看文档写出完整的mount命令;熟悉grub.conf的写法等等。
  夕角 当前离线   回复时引用此帖
旧 08-07-06, 22:28 第 6 帖
夕角
 
夕角 的头像
 
 
注册会员  
  注册日期: May 2006
  帖子: 747
  精华: 7
 

回到 kde3.5 下测试了一下
发现可以通过设置字体解决了有:
basket, eva, amarok, kate, dolphin
设置过字体仍然有小黑点的有:
konqueror, konsole

貌似不是qt3的问题,而是一些老程序的bug...
  夕角 当前离线   回复时引用此帖
旧 08-07-07, 11:10 第 7 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

1. Kubuntu 使用的是 WQY 的点阵宋体,换成 locale=zh_CN 效果一样,这个我已经试过了。
2. 之所以不去设置 locale 目的是出于多种语言混杂的考虑。这个情况肯定会出现,虽然大多数人不一定。比如我之前拿到同学给的古代音系的文章,里面夹杂太多的语言,非常头疼。因为设置成中文,日文中中文没有的“国字”就显示不正常。
3. 对的,直接设置中文字体可以解决一半。但是其他语言文字会有问题。另外就是如你所说有的程序还是不可以。
4. @xijiao:你的是什么程序,没有用过?
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-07, 15:36 第 8 帖
zhllg
 
zhllg 的头像
 
 
版主  
  注册日期: Nov 2002
  帖子: 8,505
  精华: 22
 

建议你和qt upstream去解释这些
如果他们认为这是问题
不用你提交补丁,他们自己也会修正的
这就是解决问题的终极**的应用:把自己的问题变成别人的问题







__________________
Zhang Le (r0bertz)
http://zhangle.is-a-geek.org
  zhllg 当前离线   回复时引用此帖
旧 08-07-07, 18:02 第 9 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

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

而且好像奇趣宣布不打算为 3 版本发布后续补丁版本了。

此帖于 08-07-07 19:09 被 亞利艾爾 编辑.
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-08, 12:15 第 10 帖
夕角
 
夕角 的头像
 
 
注册会员  
  注册日期: May 2006
  帖子: 747
  精华: 7
 

那个程序叫 basket

你可以试试用 qtconfig 设置字体替换
  夕角 当前离线   回复时引用此帖
旧 08-07-10, 12:07 第 11 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

@xijiao: Interesting. I found that your Latin letters seems as if not to be displayed in Microsoft YaHei. I'd like to see what's in your font configuration. I mean K Menu > Settings > Appearance & Themes > Fonts.

Ubuntu's patches have some effects, but it still do not work correctly. I am trying qtconfig.

KDE's group is trying to solve this problem for about 3 years! And they only try to release a patch to make it work correctly in all environments, and do not want to give out a workaround only... (Poor English... Chinese best...)
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-10, 16:49 第 12 帖
夕角
 
夕角 的头像
 
 
注册会员  
  注册日期: May 2006
  帖子: 747
  精华: 7
 

为何不反过来考虑如何在 中文 locale 完美显示其它国家的字体?

qtconfig 应该做得到
  夕角 当前离线   回复时引用此帖
旧 08-07-10, 17:30 第 13 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

是好想法。不过感觉也是在这个地方出的问题,如果你说的实现了,我说的全 Locale 中文显示也就实现了。

qtconfig 设置过了,发现没有作用,我很无奈。

KDE 吵了三年也没有解决,相传是从 KDE 2 上来的问题。可是我看人家 Kubuntu 早就解决了,而且提问的同志是说升级了 QT 3.3.7 > 3.3.8 后出的问题,我觉得还是这个地方出问题。KDE 吵的那个可能不是的 -_-""""

你的字体设置窗口有时间能截一个图我看一下吗?不会全都直接设置为 Microsoft Yahei 了吧!

此帖于 08-07-10 17:34 被 亞利艾爾 编辑. 原因: 我晕,什么叫“问题提出人”,“提问的同志”不就可以了吗……
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-23, 15:05 第 14 帖
亞利艾爾
 
 
 
注册会员  
  注册日期: Feb 2008
  帖子: 1,858
  精华: 1
 

(已经废除附件,请于主题下载。)
问题解决,之前出错的原因是我加入补丁是不小心按错键了。之后显示中文不用设置locale了。希望对 KDE 3 的用户能有所帮助。

此帖于 08-08-09 12:57 被 亞利艾爾 编辑.
  亞利艾爾 当前离线   回复时引用此帖
旧 08-07-24, 09:24 第 15 帖
YZard
 
 
 
注册会员  
  注册日期: Jul 2004
  帖子: 3
  精华: 0
 

不错,我用了14楼提供的ebuild,解决得很完美,en下的locale也显示很完美,PS:我是用的xfce+一点qt程序(例如eva),不过发现一个问题就是。。我在eva下打不开输入法了。。。我的输入法是scim-pytho
  YZard 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 21:21


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org