haulm 发表于 2007-2-26 12:57:01

我使用你上次打包的fontconf也是这个效果,但后面upgrade并重制ISO后的效果就不正常了,she兄检查一下吧。

haulm 发表于 2007-2-27 16:30:00

发现一个麻烦(其他朋友也许早知道了),文泉驿不能用于打印,虽然按照文泉驿官方的方法设置,但只有GTK程序如firefox知道如何在打印时正确应用文泉驿,而KDE程序在默认的MGC2.1的所有字体当中找不到有效的字体进行打印,以致于所有的中文字在KDE程序当中打印空白。解决办法只能又去设置字体。。。

使用国产Linux本以为自己就不用去理会字体美化,结果最后还是卷入其中啊。

heyuqi 发表于 2007-2-27 19:30:29

发现一个麻烦(其他朋友也许早知道了),文泉驿不能用于打印,虽然按照文泉驿官方的方法设置,但只有GTK程序如firefox知道如何在打印时正确应用文泉驿,而KDE程序在默认的MGC2.1的所有字体当中找不到有效的字体进行打印,以致于所有的中文字在KDE程序当中打印空白。解决办法只能又去设置字体。。。

使用国产Linux本以为自己就不用去理会字体美化,结果最后还是卷入其中啊。

这很正常,毕竟还是 RC,问题不是一下子就能解决的。

jiangtao9999 发表于 2007-2-27 21:02:58

我使用你上次打包的fontconf也是这个效果,但后面upgrade并重制ISO后的效果就不正常了,she兄检查一下吧。
重新制作的 ISO 看样子里面可能有覆盖配置文件的情况。

jiangtao9999 发表于 2007-2-27 21:08:22

发现一个麻烦(其他朋友也许早知道了),文泉驿不能用于打印,虽然按照文泉驿官方的方法设置,但只有GTK程序如firefox知道如何在打印时正确应用文泉驿,而KDE程序在默认的MGC2.1的所有字体当中找不到有效的字体进行打印,以致于所有的中文字在KDE程序当中打印空白。解决办法只能又去设置字体。。。

使用国产Linux本以为自己就不用去理会字体美化,结果最后还是卷入其中啊。
文泉驿是点阵字体,这个字体对于打印机来说根本没用,因为打印机精细度很高,会寻找矢量字体。这个时候估计 GTK 的字体管理会自动替换成矢量字体。KDE 却不会去替换。
GTK 的字体管理好像不管什么时候,只要当前字体不能用,就会替换。KDE 的字体管理程序似乎用不了就什么都不用。

haulm 发表于 2007-3-1 08:04:24

有时我的确很困惑,而且的的确确感受到没有一款开源好用的字体对于一个开源社区的Linux发行版是何等的折磨。对于字体显示,我现在才明白为什么she兄总说他的效果是正常的,那是因为she兄一直用konqueror来测试网页浏览,在我使用firefox进行浏览时,英文字体无论大小都要比中文字体粗一些,而且的确这是MGC目前字体配置存在的问题,也是MGC该选用什么字体的问题。

使用konqueror浏览Web的确不存在firefox同样的浏览问题,但是我们在使用konqueror时放大字体(大于9号字,Dejavu scan字体就不能很好地显示)、打印或打印预览时会发现MGC字体配置本身存在的问题。我所推荐的文泉驿字体的方案在MGC可能不是一个好方法,因为文泉驿不能用于打印。对于开源的Linux的确要求不可以过份,但真的能否得到一个更好的结果呢?

尝试安装国内的商业Linux,这些系统的特点是无论konqueror还是firefox的浏览都十分友好,但是也同样存在只有 GTK2 程序对打印字体掌握更到位,也只有firefox能够如同你所浏览地那样把内容打印下来。

也许MGC应该拥有一个Gnome为主的系统。。。

matri 发表于 2007-3-1 23:49:31

不知道你们用wqy的字体有什么感觉,在我这里,它会拖慢系统速度,gnome里面很明显能感觉到,firefox更是被严重拖慢,所以firefox里我都在用bitstream字体,不过现在的wqy是0.7x版本的,希望0.8版本能有改观。

haulm 发表于 2007-3-2 07:17:12

不知道你们用wqy的字体有什么感觉,在我这里,它会拖慢系统速度,gnome里面很明显能感觉到,firefox更是被严重拖慢,所以firefox里我都在用bitstream字体,不过现在的wqy是0.7x版本的,希望0.8版本能有改观。

暂时没有感觉,使用文泉驿是目前字体显示的一个较好的办法,我也在尝试,MGC目前的字体显示有些混乱,删掉所有的TTF英文字体后firefox显示的粗体和非粗体才算正常,但又存在英文字体有点小的显示问题。

she兄坚持把文泉驿字体设为9号字是我难以接受的,我有尝试过EVL,它用东文宋体,也是9号字,在800×600分辨率时很理想,但是当1024×768时显示就太小了,长时间浏览很吃力。东文宋体有一个最大的毛病,那就是东文宋体没有10号字体,也就是说就算红旗Linux也存在字体显示的问题,文泉驿英文字体不够大方。

MGC的字体显示最大的问题是没有可用的大号字体,9号到12号字体的中英文可以用文泉驿,而高于这个字号中英文就存在中英文粗细不一致的问题。

我想解决英文字体显示应该比起解决中文字体显示要容易的多的多,或许大家都应该在空闲的时候多关注文泉驿。

jiangtao9999 发表于 2007-3-2 20:19:30

ML 曾经有个版本好像 9 和 10 号字体,都是 10 号字体的大小,这个导致了英文字体比中文小。不知道这个版本大小如何了?估计是延续过来了…………

懒得重新启动进 ML 核实了,在 ML 里的帮忙检查一下吧。

haulm 发表于 2007-3-8 13:09:58

我曾听CJACKER在论坛上说MGC的字体显示是一流的,要比EVL还要好,可我想过去他所说的可能是很久以前MGC使用simsun为默认字体的日子了,虽然不熟悉字体美化也被MGC2.1逼得去搜索些教程,然后再去看MGC的字体配置时方发现就算是MGC2.0f都没有最好地配置字体。

对于英文字体过粗的毛病我从网上找到的一篇文章对大家应该会有所帮助,如果只想解决英文字体过粗的毛病请直接看最后那一段修改/etc/fonts/conf.avail/52-mgc-default.conf,如果想掌握字体设置请从头看到尾。

http://www.yuanma.org/data/2007/0123/article_2167.htm

原文如下:

写在前面:
每一个刚刚把Linux装上的朋友面对的第一个问题就是汉化,美化。linux默认的字体实在是不怎么漂亮,特别是对
中文更是如此。我开始用了两三个月美化一直不是很好,正在心灰意懒,准备滚回Windowz的时候,偶然看到一篇美化的文章,照着做了
而且竟然成功了(至少是我想要的效果),从那以后就慢慢的爱上了linux直到把Windowz彻底仍进厕所。
网上关于美化的文章其实已经很多了,但大多是告诉你第一步如何如何,第二步如何如何,至于其中的简单道理很少有涉及。结果
造成知其然不知其所以然,一旦照着文章做下来没有成功,那就等于白做了。以后遇到问题,还是束手无策。
我写这个的目的就是希望结合我自己实际中遇到的种种情况,结合我自己的经验,写一篇文章帮助那些既想美化成功,而又想大概
知道"为什么要这么做"的朋友。当然我只是能讲一些我自己所理解的很浅显的道理,更高深的道理我是不懂的,呵呵。有说错的地方还
请大家多多指教。本文所介绍的是基于freetype/Fontconfig/Xft的,xtt我没用,使用的字体都是TrueType。
下面我们开始。

强烈建议你把下面这段仔细看一下,这样对接下来的具体操作有很大帮助!!

linux下常见的GUI程序有三种,GTK1、GTK2和QT,基于这三种图形库的程序在美化上是有不同要求的。XFree86下常用的字体绘制
方案有xtt,freetype/Fontconfig/Xft。下面分别来看看

1.GTK1 的程序是不支持Fontconfig的。所以有点麻烦。拿到一个字体,你首先要让X找到它对吧?这一步就是在 /etc/X11/XF86config的Section "files"段里面的Fontpath属性里说明的详细后面会讲。好了,X现在知道字体在哪里了。那gtk1的程序还不能直接使用它们,因为我们还没有给它们"注册",这就需要在前面设定的Fontpath里生成两个文件fonts.dir fonts.scale这两个文件里有Fontpath下所有字体的列表信息,就是一个"索引"。有了这个"索引",gtk1的程序就可以找到相应的字体了。生成这两个文件的工具有mkfontdir,mkfontscale,ttmkfdir等等。好了,上面两步如果正确完成了,你的gtk1程序现在就可以正常显示汉字了。
常见的gtk1程序有xmms,gimp.....

2.GTK2和QT程序可以使用Fontconfig。Fontconfig是一个把字体选择出来,并且决定怎么显示这些字体的东东。类似于前面提到的
XF86config里的Fontpath属性以及fonts.dir和fonts.scale的功能,就是让程序找到这些字体。所以,对于GTK2和QT程序XF86config和
fonts.dir就没有用了。所以对于这类程序来说,主要的配置文件是/etc/fonts/fonts.conf。
Fontconfig的高级功能有很多,详细的说明可以参考这里:http://www.linuxfans.org/nuke/modul...pic&t=48331
GTK2和QT的程序就很多了,KDE,GNOME,Firebird............

上面的两段提到的只是让程序找到字体,并不负责具体的显示工作。它们只能保证你的程序能找到字体不会出现乱码现象,也就是所谓的"汉化"
至于freetype/Xft或者xtt是什么?我的理解它们是负责具体把字体显示到屏幕上的东西,决定了你看到的字体是个什么效果。著名的"firefly美化包"就做了很多改善中文显示效果的工作。也就是所谓的"美化"

到此你应该对汉化,美化有了一个大概的概念。接下来就是具体的操作

具体在Slackware 9.1上实现freetype/fontconfig/xft汉化美化工作

我用的是Slackware 9.1,但是对其它发行版,美化汉化的原理都是大同小异的。看了文章再通过实践加以理解,应该能够灵活应用其它发行版上的。
以下命令以#开头表示是以root身份操作,$开头则是以普通用户身份操作。

Step1.
准备TrueType字体,常用的如simsun.ttf tahoma.ttf verdana.ttf等等。然后决定你要把字体放在哪个目录里。这个目录随你喜欢,我把它们放在/usr/X11R6/lib/X11/fonts/TTF/里。
比如你下载来的的ttf字体都在/home/username/myfonts/下面,就做如下操作

#cp /home/username/myfonts/*.ttf /usr/X11R6/lib/X11/fonts/TTF/

Step2.
让GTK1程序找到你刚才放进去的字体。上面说的方法你还没有忘吧?让我们先修改XF86config

#vi /etc/X11/XF86config

找到
Section "Files"
.................
这一段,在里面加上一个Fontpath属性

FontPath "/usr/X11R6/lib/X11/fonts/TTF/"

当然,如果里面已经有了你放字体的路径就不用加了,如果你的路径和我不一样,那就写你的路径,你也可以随时添加自己的字体路径,道理都一样。
如果你在XF86config里发现了 Load "xtt"这行,把它注释掉。我是不用xtt的

接下来当然是准备fonts.dir 和fonts.scale了。生成这两个的文件工具前面说了。Slackware自带的是mkfontdir和mkfontscale,我个人强烈不推荐这两个工具,它们生成的fonts.dir很不爽,simsun.ttf里找不出gbk的encoding。你可以去下载一个叫ttmkfdir的工具: ftp://216.254.0.38/linux/rawhide/1.....0.9-7.i386.rpm
假设你已经装上了这个工具,就做如下操作

#ttmkfdir /usr/X11R6/lib/X11/fonts/TTF/ -o /usr/X11R6/lib/X11/fonts/TTF/fonts.scale

现在检查一下这个文件

#vi /usr/X11R6/lib/X11/fonts/TTF/fonts.scale

如果里面有 :1:simsun.ttfxxxxxxxxxxxxxxxxxxxx 这样以 :1:开头的行,把它们都删掉,freetype不需要这个东西,而且可能会导致一些问题。特别再注意一下是不是生成了 simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0 simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gbk-0 这两行,因为encoding是很重要的,mkfontdir生成的fonts.dir很可能没有-gbk-0的编码,这样也会导致一些问题。所以我用 ttmkfdir
确保无误后

#cp /usr/X11R6/lib/X11/fonts/TTF/fonts.scale /usr/X11R6/lib/X11/fonts/TTF/fonts.dir (这两个文件其实是一样的)

你的gtk1程序已经可以使用字体了,但是在gtk1程序里当然还要指定你究竟要使用什么字体。对gtk1程序使用什么字体有一个全局配置文件/etc/gtk/gtkrc.zh_CN
把我的配置文件贴一下



# This file defines the fontsets for Chinese language (zh) using
# the simplified chinese standard GuoBiao as in mainland China (CN)
#
# 1999, Pablo Saratxaga <[email protected]>
#

style "gtk-default-zh-cn" {
fontset = "-*-bitstream vera sans-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252,\
-*-simsun-medium-r-normal-*-12-*-*-*-*-*-gbk-0"
}
class "GtkWidget" style "gtk-default-zh-cn"


这个文件告诉程序,对于英文字体优先使用bitstream vera sans字体,对于中文由于bitstream vera sans没有中文字体,就使用后面的simsun字体。

至此,gtk1程序的汉化全部完成。
现在可以startx
运行一个xmms看看,界面如何?至于xmms列表显示中文可以搜索其它文章。也很简单

补充几点技巧和说明:
1. -*-bitstream vera sans-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252 这种字体表示方法是不是很复杂?有个小技巧帮你选择自己想要的字体,/usr/X11R6/bin/下有一个程序xfontsel ,运行它。自己摆弄一下你就明白了。在这里你可以看到gtk1程序所能找到的ttf字体,有一些就是从你刚才生成的fonts.dir里读出来的。通过它你还可以得到你需要的字体的正确表达格式。
2.Slackware 9.1有了bitstream vera sans 等一系列优秀的ttf字体。它们默认也的都在/usr/X11R6/lib/X11/fonts/TTF/目录下,那些Veraxx.ttf的字体都是。可是那个目录下的fonts.dir没有把它们列进去。如果你前面都是按照我的方法做了,刚才那步ttmkfdir已经把它们收录进去了。如果你刚才操作的是别的目录,那就在这个/usr/X11R6/lib/X11/fonts/TTF下ttmkfdir 一次了,方法和前面的一样。
3.ttmkfdir生成的fonts.dir 和fonts.scale可能会有一些多余的编码,比如那些以ascii-0和adobe standard-0结束的行,在我这里引起了一些问题,如果你觉得有什么异常,先把这样的行都删掉。


Step3
搞定gtk2和QT程序。
基于fontconfig选择字体的程序就容易配置多,fontconfig也提供了一些更高级的功能。
类似gtk1,现让这些程序找到这些字体。前面已经说过XF86config里的Fontpath和fonts.dir文件已经没有必要了。fontconfig的核心配置文件是/etc/fonts/fonts.conf用vi打开这个文件
开始就有这么一段


<!-- Font directory list configured on Wed Apr 23 11:40:17 CST 2003 -->

<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>


这段是告诉fontconfig去这些目录包括它们的子目录里面去找字体。是不是比Fontpath和fonts.dir省事多了?
你要做的就是把你放字体的路径加上,我刚才放自己的路径已经被包括在里面了。所以不用修改它。

运行
#fc-cache
更新字体信息。
好了,现在gtk2和qt的程序就可以使用你添加的字体了,太简单了吧?而且对fonts.conf的修改马上就可以生效。不像gtk1程序修改gtkrc后还要重新运行,修改XF86config甚至还要restart X等等。

类似gtk1程序,gtk2和qt程序都有一个全局字体配置。
gtk2程序的全局配置文件是/etc/gtk-2.0/gtkrc
也把我的内容贴上来


style "user-font" {
font_name="Bitstream Vera Sans 9" }
class "*" style "user-font"


是告诉程序使用Bitstream Vera Sans ,字体大小是 9

qt程序的默认字体配置

$/usr/lib/qt-3.2.1/bin/qtconfig

出来一个图形界面,在里面就可以方便选择你要的字体了

补充几点技巧和说明:
1. 刚才提到的xfontsel可以帮你查看gtk1可用的字体,那么fontconfig究竟找到了哪些字体呢?也有一个程序叫fc-list,默认在 /usr/X11R6/bin/下面,运行它,会显示一个列表。里面的字体名称就是可以使用的字体。比如我刚才的gtk2配置文件的字体名字就在里面。
2./etc/fonts/fonts.conf的强大的功能有很多,其实也很复杂。详细的设置可参考本文开头给出的文章连接。
3. 你应该会发现。比如在kde控制中心里选择字体的时候,你可以选择所有字体都是Tahoma,Vera sans什么的,我的gtkrc里写的也是一个英文字体,这样英文字体看起来很pp,而中文字体又是如何决定的呢?为什么我选择了英文字体而中文字体还能正常显示呢?这就是fontconfig的功劳,在我的fonts.config里有这么两段:


<!--
Sans-serif faces
-->
<alias>
<family>Bitstream Vera Sans</family>
<family>Tahoma</family>
<family>Verdana</family>
<family>Arial</family>
<family>Helvetica</family>
<family>Nimbus Sans L</family>
<family>Luxi Sans</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>AR PL KaitiM Big5</family>
<family>Baekmuk Dotum</family>
<family>SimSun</family>
<default><family>sans-serif</family></default>
</alias>


<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>Tahoma</family>
<family>Verdana</family>
<family>Arial</family>
<family>Helvetica</family>
<family>Nimbus Sans L</family>
<family>Luxi Sans</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>AR PL KaitiM Big5</family>
<family>Baekmuk Dotum</family>
<family>SimSun</family>
</prefer>
</alias>


这段告诉程序,遇到要显示sans-serif的字体,优先使用列表里在前面的字体,这里就是Bitstream Vera Sans,如果该字体不能显示需要的字符就继续在下面找,对于中文,就找到最后的SimSun(宋体)了。你如果想用其它默认的中文,就可以把你需要的中文字体摞在<family>SimSun</family>上面。就优先使用你要的字体了。


到此为止,其实汉化已经结束了,如果你觉得这个效果还不错,那就此打住吧。如果你觉得还有些不完美,如中文细节显示的还不是很好,那就可以求助于firefly的美化包

安装这些包就很简单了,我简要说一下这些包的功能。
fontconfig-2.2.1-i486-1.Firefly.tgz 会替换你现在的/etc/fonts/fonts.conf,加上了一些firefly修改的属性。

freetype-2.1.5-i486-1.Firefly.tgz xft-2.1.2-i486-1.Firefly.tgz 这两个是字体绘制的核心部分,装上他们可以使中文显示的更完美,具体的原理我就不懂了,呵呵,也没功夫去研究。

xfree86-4.3.0-i486-5.Firefly.tgz也能改善字体显示效果,我这里不装它,任务栏和标题栏的中文粗体显示不出来。如果你网络不是很好,这个包也挺大,你可以不装它,没什么大碍。

qt-3.2.1-i486-1.Firefly.tgz 这个包装不装无所谓,还挺大的.我觉得除了让你的qt程序选择字体的时候可以显示一个中文字体名(SimSun显示为"宋体")以外没什么更有价值的功能,可以不装。


以上几步都做完了,如果不出以外的话,你gtk2和qt程序显示的英文是又粗又黑的,看起来就像用了粗体一样。如果你觉得这样挺好那就罢了。如果你和我一样,觉得脏兮兮的很难看,可以在你的/etc/fonts/fons.conf上加上这么一段


<!--
This expression is added by Akito Hirai<[email protected]> for convenience.
It can be used to make artificial bold versions in client libraries/applications.
-->
<match target="font">
<test name="weight">
<const>medium</const>
</test>
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="weight" mode="assign">
<if>
<more>
<name>spacing</name>
<const>proportional</const>
</more>
<const>demibold</const>
<const>bold</const>
</if>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less_eq">
<double>16</double>
</test>
<test name="pixelsize" compare="more_eq">
<double>8</double>
</test>
<edit name="antialias" mode="assign">
<bool>f</bool>
</edit>
</match>

这样一来,Tahoma,Verdana,等Windowz下几个主要的ttf字体效果就和Windows下没什么区别了。不过对于Bitstream Vera Sans来说似乎有点"少肉",但总体来说效果是不错的,请选择使用

sejishikong 发表于 2007-3-8 15:21:40

嗯,这个antialias效果在LCD上还可以,可能在crt上不好吧。那我也加上这段到fontconfig吧。

haulm 发表于 2007-3-8 17:23:25

嗯,这个antialias效果在LCD上还可以,可能在crt上不好吧。那我也加上这段到fontconfig吧。

我用的是三星17寸纯平,9号的文泉驿不符合我的视力,还请she兄在下个测试版本纠正,这段在CRT上效果至少比原来的效果好,你看上面的截图便知。

sejishikong 发表于 2007-3-8 17:33:32

嗯,这个antialias效果在LCD上还可以,可能在crt上不好吧。那我也加上这段到fontconfig吧。

我用的是三星17寸纯平,9号的文泉驿不符合我的视力,还请she兄在下个测试版本纠正,这段在CRT上效果至少比原来的效果好,你看上面的截图便知。

呵呵,的确大多数情况下应该用9号字的,这不是我个人的看法。关于这点,还需要再考虑。我已经更新了fontconfig,你可以测试一下。

gerrylinjunhui 发表于 2007-3-8 18:05:56

9号字很好啊!我觉得WQY在ML2.1上的显示效果已经是接近一流了。

haulm 发表于 2007-3-9 11:31:04

嗯,这个antialias效果在LCD上还可以,可能在crt上不好吧。那我也加上这段到fontconfig吧。

将最后一段添加到52-mgc-default.conf即可,不过请教一下she兄,这前面的数字代表的是加载的顺序么?
页: 1 2 [3] 4
查看完整版本: MGC2.1使用文泉驿字体官方的配置的效果