当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 29 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : [问题]安装完Feisty后QT程序的字体替换无效了?
帖子发表于 : 2007-03-16 7:57 
头像

注册: 2005-03-25 23:46
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
Locale是en_US.UTF-8,以前一直用qtconfig-qt3和qtconfig-qt4通过替换字体来控制中文字体,安装完Feisty后,虽然配置了,但中文字体很难看,有的是个“点”,删除了两个日文字体后,中文又全都变成方框了。

GTK程序一切正常

不知道Feisty中的Qt做了什么变动


页首
 用户资料  
 
2 楼 
 文章标题 : Re: [问题]安装完Feisty后QT程序的字体替换无效了?
帖子发表于 : 2007-03-16 21:05 

注册: 2006-09-27 20:49
帖子: 133
送出感谢: 0 次
接收感谢: 4
试一下:
代码:
export LC_CTYPE=zh_CN.UTF-8


dngpng 写道:
Locale是en_US.UTF-8,以前一直用qtconfig-qt3和qtconfig-qt4通过替换字体来控制中文字体,安装完Feisty后,虽然配置了,但中文字体很难看,有的是个“点”,删除了两个日文字体后,中文又全都变成方框了。

GTK程序一切正常

不知道Feisty中的Qt做了什么变动


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-03-16 22:38 
头像

注册: 2005-03-25 23:46
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
多谢回复,但……貌似没用


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-03-16 22:56 

注册: 2006-09-27 20:49
帖子: 133
送出感谢: 0 次
接收感谢: 4
你是不是用“Sans Serif”做缺省字体?换成一个具体的英文字体试试?


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-03-17 3:06 
头像

注册: 2005-03-25 23:46
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
不,我用的是Luxi Sans


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-03-17 5:13 

注册: 2006-09-27 20:49
帖子: 133
送出感谢: 0 次
接收感谢: 4
你看在你的~/.fonts.conf里加上下面的试试:
代码:
<match target="pattern">
                <test name="family" >
                        <string>WenQuanYi Bitmap Song</string> <!--这里用你系统的汉字替代-->
                </test>
                <edit name="family" mode="prepend" binding="strong">
                        <string>Luxi Sans</string>
                </edit>
        </match>



另外你看一下这个有没有参考价值:
http://forum.ubuntu.org.cn/viewtopic.ph ... highlight=

主要就是这句:“FcDefaultSubstitute(pattern);”


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-03-17 6:06 

注册: 2006-07-29 2:44
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
问题是假设这样定义sans-serif
<alias>

<family>sans-serif</family>

<prefer>
<family>Segoe UI</family>

<family>Bitstream Vera Sans</family>

<family>DejaVu Sans</family>

<family>Microsoft YaHei</family>

<family>Meiryo</family>

<family>WenQuanYi Bitmap Song</family>

</prefer>

</alias>
指定qt程序用sans serif以后,挑英文字体没问题,会用到Segoe UI
但是qt会无视Segoe UI以下的内容,遇到Segoe UI没法表示的字体qt无视指定的bitstream,yahei等等,而自己8知道从哪里选个字体来用
前两个星期某次upgrade之后才出现的问题,之前好好的


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-03-17 17:33 

注册: 2006-09-27 20:49
帖子: 133
送出感谢: 0 次
接收感谢: 4
是有这个情况。我看Qt的changelog,所有与字体相关的更改,唯一有影响的就是那句:“FcDefaultSubstitute(pattern);” 我把这个去掉后重新编译libqt3-mt-3.3.8 字体效果就和以前的Qt一样了。
经过几次比较发现,在“纯”英文locale下(如LANG=en_US.UTF-8),Qt无法将英文字体与中文字体配合使用,即使在fontconfig里设置了alias,并且qtconfig里也设置了字体替换,Qt都将无视。

wweeii 写道:
问题是假设这样定义sans-serif
<alias>

<family>sans-serif</family>

<prefer>
<family>Segoe UI</family>

<family>Bitstream Vera Sans</family>

<family>DejaVu Sans</family>

<family>Microsoft YaHei</family>

<family>Meiryo</family>

<family>WenQuanYi Bitmap Song</family>

</prefer>

</alias>
指定qt程序用sans serif以后,挑英文字体没问题,会用到Segoe UI
但是qt会无视Segoe UI以下的内容,遇到Segoe UI没法表示的字体qt无视指定的bitstream,yahei等等,而自己8知道从哪里选个字体来用
前两个星期某次upgrade之后才出现的问题,之前好好的


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-03-17 20:03 
头像

注册: 2005-03-25 23:46
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
f0rrest 写道:
你看在你的~/.fonts.conf里加上下面的试试:
代码:
<match target="pattern">
                <test name="family" >
                        <string>WenQuanYi Bitmap Song</string> <!--这里用你系统的汉字替代-->
                </test>
                <edit name="family" mode="prepend" binding="strong">
                        <string>Luxi Sans</string>
                </edit>
        </match>



这个我试过了,没用

另处,我犯了个错误,就是上次改成zh_CN.UTF-8的locale时其实系统没安中文的locale所以不起作用。但我不知道现在还有没有不安那一堆中文语言包而给系统装上中文locale的办法,记得以前只要dpkg-reconfigure locales就行,可是现在不行了。



装上中文包,把LC_CTYPE改成zh_CN.UTF-8后和LC_CTYPE是en_US.UTF-8的时候对比了一下qt程序, 发现这么几个结论:

LC_CTYPE="en_US.UTF-8"
  • QT程序不会选择任何中文字体,即使中文字体排在fontconifg的alias的第一个(比Luxi Sans还靠前),除非在kcontrol里指定一款中文字体为系统字体,这时所有的英文字体也必然是那个中文字体里的英文字形
  • 中文字体名称全部是英文的

LC_CTYPE="zh_CN.UTF-8"
  • 如果定义字体为sans serif,会选择alias里第一个中文字体为系统字体,忽略其它所有英文字体(即使它们在中文字体之前)
  • 部分中文字体名称会变成中文(如“微软雅黑”)
  • 如果指定一款英文字体作系统字体,QT会优先搜索qtconfig里的字体替换规则,找到第一款有效的中文字体,如果qtconfig的规则为空(没有设置),它会在fontconfig里搜索第一个有效的中文字体。
  • 在进行以上两类搜索时,如果该字体名称已变为中文,那么以前设置过的英文名字是无效的。
  • 从qtconfig找出的字体和在fontconfig里配置到的字样渲染效果是有差别的。


不知道为什么QT要做这样的改动,但我觉得完全没有理由根据Locale决定是不是选择中文字体,况且我也不喜欢为了一个字体,而且更改LC_CTYPE,这样的话默认的Monospace会很难看。

郁闷中……

P.S. 不知道你们用不用fcitx,我发现升级到Fesity后,XIM模块会使无论是GTK程序还是QT程序在有输入行为时出现CPU瞬间占用超大的情况,直接的感觉就是“卡”。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-03-19 1:10 

注册: 2006-09-27 20:49
帖子: 133
送出感谢: 0 次
接收感谢: 4
这一切的“罪魁祸首”就是qt 3.3.7以后增加的那个patch,就是那个“FcDefaultSubstitute(pattern);”

dngpng 写道:
[*]如果定义字体为sans serif,会选择alias里第一个中文字体为系统字体,忽略其它所有英文字体(即使它们在中文字体之前)


应该不是fontconfig里alias的第一个中文字体,而是所有中文字体中,名称按字母排序最靠前的那个。 我暂时没找到解决方法,我现在把Sans Serif 都换成Bitstream Vera Sans 了

dngpng 写道:
[*]如果指定一款英文字体作系统字体,QT会优先搜索qtconfig里的字体替换规则,找到第一款有效的中文字体,如果qtconfig的规则为空(没有设置),它会在fontconfig里搜索第一个有效的中文字体。


这个也同上,按字母排序

dngpng 写道:
[*]从qtconfig找出的字体和在fontconfig里配置到的字样渲染效果是有差别的。


qt也读所有fontconfig的配置,因为如果fontconfig配置有问题的话,qt还会报错。但他却有自己的选择字体的方法,尤其是对fontconfig配置里定义的assign操作,qt基本不承认。比如我自己定义的,中文斜体用楷体字,中文粗体用黑体字,这在gtk+程序中都正常表现,但qt就不认。


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-03-19 8:04 
头像

注册: 2005-03-25 23:46
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
有XFT、Fontconfig这么好的标准化的东西,QT干嘛还老自己瞎鼓捣?这种底层的应用就不用各搞一套了吧?

不知道这算不算个Bug,用不用Report一下。否则只能在这儿这么抱怨了……


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-03-19 13:30 
头像

注册: 2006-03-14 10:25
帖子: 643
送出感谢: 1
接收感谢: 4
还是报一下吧,等我用时差不多该有解决办法了:)


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2007-03-20 4:42 
头像

注册: 2005-03-25 23:46
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
这种Bug,是应该报到QT、KDE还是Ubuntu?


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2007-03-20 6:15 

注册: 2006-09-27 20:49
帖子: 133
送出感谢: 0 次
接收感谢: 4
我上面没说清楚,这个patch (FcDefaultSubstitute(pattern);) 是debian/ubuntu引入的,如果用原版qt,至少没有在中文locale下,无法正确选择Sans Serif 字体的问题。 :?


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2007-03-20 17:18 

注册: 2005-11-06 16:54
帖子: 108
送出感谢: 0 次
接收感谢: 2
f0rrest 写道:
我上面没说清楚,这个patch (FcDefaultSubstitute(pattern);) 是debian/ubuntu引入的,如果用原版qt,至少没有在中文locale下,无法正确选择Sans Serif 字体的问题。 :?

archlinux里也是这样。马的,烦死了。qt3.3.7就没有问题。qt老是搞些莫名其妙的东西。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 29 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Google [Bot] 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译