QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1765|回复: 9

请教:Magic Linux的中文粗体是怎样实现的?

[复制链接]
发表于 2005-10-24 12:56:57 | 显示全部楼层 |阅读模式
我用Magic Linux编了一个LFS,并采用了Magic Linux中的中文字体。但发现中文无法显示粗体。想知道在Magic Linux中的中文粗体是怎样实现的,请各位指教。多谢。

图形环境为xorg-6.8.2,KDE-3.4.92(3.5beta2)。(与Magic Linux一样)
发表于 2005-10-24 13:47:47 | 显示全部楼层
qt pango好象没什么补丁吧,不清楚,fontconfig提供粗体支持的吧,你可以看看,firefly提供的补丁,也可以看看magic的fontconfig,我以前注意过,后来用了ml后就没有做过字体方面美化的工作,你自己看看
回复

使用道具 举报

发表于 2005-10-24 13:54:11 | 显示全部楼层
fontconfig,libxft(ml的是xorg里的),freetype
回复

使用道具 举报

发表于 2005-10-24 15:55:56 | 显示全部楼层
一、包功能说明
freetype: 主要是画字用的,从字体文件中提取字体图像
fontconfig: 是用于字体选择控制的,实现像windows一样的字体名称-大小的选
取方法,早期字体选取要这样:
          -misc-simsun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
libXft: 按照fontconfig中要求选择的字体,然后用freetype取字体的图像,然
后画到屏幕上

二、firefly补丁说明
firefly的补丁,主要是用作模拟粗体。
libXft补丁: 比如simsun没有粗体,于是firefly的libXft补丁,从freetype中
取出字体的图象,按线条加粗,画到屏幕上这就变成粗体了。
fontconfig补丁: fontconfig是按字体文件的信息,来列举字体给用户选择的,
又比如simsun字体因为没有粗体,所以即算libXft中模拟了粗体,fontconfig
也不知道,firefly的fontconfig补丁就作了这个判断。(当然fontconfig还作了
其他优化比如按CJK编码来现实字体的名称,咖非码控制等,这些都是firefly的
早期补丁中所作的事,那时候还没有在fontconfig中做fake粗体的功能,于是qt
和pango还必须打补丁由他们自己来判断是否模拟粗体,现在已经不要了。)
freetype补丁   对字形做了一些处理,主要也是为粗体实现服务的。

值得一题的是,firefly还在openoffice粗体方面有贡献,但因为他的补丁被广泛
的滥用,而他本人又似乎没有得到相应回报和尊重(主要得不到官方的认同,某
些人甚至对他嗤之以鼻),好像有逐渐淡出之感。



上面的字体补丁firefly已经没有对新版做维护了。

倒是openoffice2.0beta出了一个补丁:
http://firefly.idv.tw/setfont-xft/patches/openoffice/1.9.130/openoffice-1.9.m130-vcl-virtualstyles-20050919.patch
下面是firefly老兄在http://opendesktop.org.tw/的萤火虫论坛的申明:
Re: 关注openoffice2.firefly
既然各位有心推動,小弟也就提前公佈 OOo 2.0 的粗斜體修正,在以下這個位址,可以取得:
http://firefly.idv.tw/setfont-xft/patches/openoffice/1.9.130/openoffice-1.9.m130-vcl-virtualstyles-20050919.patch
只要這一個修正檔,就足以讓 OOo 2.0 可以顯示粗斜體了。

當然,小弟另外還有其他的修正檔,比這個修正還要重要多了,但基於一些其他考量,目前暫不釋出。
回复

使用道具 举报

发表于 2005-10-24 22:50:22 | 显示全部楼层
好像关键的在这,fonts.scale和fonts.dir里.
当然这只是表象,还是要内部的freetype补丁,libXft补丁支持才行.
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-c-0-gb2312.1980-0
ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-c-0-gb2312.1980-0
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0

但是,这个mkfontscale和ttfmkfdir都不能产生,只能自己加.
(这个很像改fc-cache的方法,但要高级一点,只要不重新mkfontscale,就不会破坏)
回复

使用道具 举报

发表于 2005-10-25 01:46:14 | 显示全部楼层
如果没有打firefly的fontconfig-2.2.3-fakestyle-20041117.patch补丁,
就要像上面这位仁兄说的这样,如果有这个补丁,会使所有的字体都有粗体、
斜体、粗斜体,这在fontconfig中控制死了,就不要像上面那样改fonts.dir
fonts.scale这些东东了(magiclinux就不要改)。
回复

使用道具 举报

发表于 2005-10-25 08:39:27 | 显示全部楼层
cvs 里的 fontconfig 已经可以显示本地化的字体名称了。
firefly 的 fontconfig-2.2.3-fakestyle-20041117.patch 和
fontconfig-2.2.3-multifamily-20041117.patch 确实很 dirty, 我已经 drop 掉了。
但这并不能磨灭 firefly  所作的贡献。
http://www.magiclinux.org/people/sunmoon1997/patches/fontconfig/fontconfig-2.3.91.patch
回复

使用道具 举报

 楼主| 发表于 2005-10-28 14:16:20 | 显示全部楼层
谢谢大家,是不是打了补丁就可以显示粗体了?
还有,要想输入法正常使用,是不是qt要打补丁?
回复

使用道具 举报

发表于 2005-10-28 18:02:21 | 显示全部楼层
输入法跟Qt没有必然的关系,Qt也可以挂接xim。但xim受到locale的限制,问题是显然的,比如你无法在zh_CN.GB2312中通过xim输入“堃”

如果要用qtimmodule的话,可以考虑一下20051018的版本,据说很好用,kicker也不会崩溃了。
回复

使用道具 举报

 楼主| 发表于 2005-10-31 13:45:11 | 显示全部楼层
谢谢mandrakechina。现在输入法还没搞定,可惜的是宿舍上不了网了,以后有问题只能自己琢磨了,论坛只能隔三差五的来了。羡慕兄弟们。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-25 20:49 , Processed in 0.063830 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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