找回密码
 注册
查看: 7100|回复: 28

Gentoo xft 汉化手册

[复制链接]
发表于 2003-9-19 14:34:57 | 显示全部楼层 |阅读模式
Gentoo xft 汉化手册

测试平台:
Gentoo 1.4 release
Kernel 2.4.20-gentoo-r7 and 2.6.0-test5-mm2
XFree 4.3-r3
FreeType 2.1.4

准备工作:
点击以下链接下载 firefly 的补丁,假设下载到 /tmp 目录下
xft:
http://firefly.idv.tw/setfont-xft/patches/Xft2/xft-2.1.2-CJK-fixwidth-embededbitmaps-artificial_bold-20031127.patch

fontconfig:
http://firefly.idv.tw/setfont-xft/patches/fontconfig/fontconfig-2.2.1-fclang-miss_1_percent-20030617.patch
http://firefly.idv.tw/setfont-xft/patches/fontconfig/fontconfig-2.2.1-include_CJK_charmaps-20030626.patch.gz
http://firefly.idv.tw/setfont-xft/patches/fontconfig/fontconfig-2.2.1-multifamily-20031110.patch
http://firefly.idv.tw/setfont-xft/fonts.conf <- 字体配置文件

freetype:
http://firefly.idv.tw/setfont-xft/patches/freetype/freetype-2.1.7-autohint-cjkfonts-20031121.patch
http://firefly.idv.tw/setfont-xft/patches/freetype/freetype-2.1.6-enable_bytecode.patch
http://firefly.idv.tw/setfont-xft/patches/freetype/freetype-2.1.4-smooth-usegamma-20030519.patch

开始修改 ebuild 文件:
freetype:
[code:1]# vi /usr/portage/media-libs/freetype/freetype-2.1.4-r1.ebuild[/code:1]
修改 src_upack() 节如以下:
[code:1]src_unpack() {
    unpack ${A}

    cd ${S}
    # Slight Hint patch from Redhat
    epatch ${FILESDIR}/${SPV}/${PN}-2.1.3-slighthint.patch

    # freetype patches from firefly
    epatch /tmp/freetype-2.1.4-autohint-cjkfonts-20030511.patch
    epatch /tmp/freetype-2.1.4-misscmap-enablebytecode-20030410.patch
    epatch /tmp/freetype-2.1.4-smooth-usegamma-20030519.patch
}[/code:1]

fontconfig:
[code:1]vi /usr/portage/media-libs/fontconfig/fontconfig-2.2.1.ebuild[/code:1]
修改 src_upack() 节,因为 fontconfig-2.2-local_fontdir-r1.patch
似乎有问题,打好 firefly 补丁后会出错,所以要注释掉它,打好补丁后如以下内容:
[code:1]src_unpack() {
    unpack ${A}
    cd ${S}

    local PPREFIX="${FILESDIR}/patch/${PN}"

    # Some patches from Redhat
    epatch ${PPREFIX}-2.1-slighthint.patch
    # Add our local fontpaths (duh dont forget!)
    # epatch ${PPREFIX}-2.2-local_fontdir-r1.patch
    # Blacklist some fonts that break fontconfig
    epatch ${PPREFIX}-2.2-blacklist.patch
    # Remove the subpixel test from local.conf (#12757)
    epatch ${PPREFIX}-2.2-remove_subpixel_test.patch
   
    # fontconfig patches from firefly
    epatch /tmp/fontconfig-2.2.1-fclang-miss_1_percent-20030617.patch
    epatch /tmp/fontconfig-2.2.1-include_CJK_charmaps-20030626.patch.gz
    epatch /tmp/fontconfig-2.2.1-multifamily-20030618.patch

    # The date can be troublesome
    sed -i "s:\`date\`::"
    configure
}[/code:1]
                                                    
xft:
Gentoo 中的 xft 自从 xfree 4.3 后被整合进 xfree 4.3 的 package 中了,整合的 xft 版本较老(2.1.0),可 firefly 补丁是针对新版本的 xft,如果直接打补丁会出现 reject 出错。
本来我们应该手动安装的,好在 Kingo 兄为我们制作了一个不错的 ebuild 在这里
我们先把 firefly 的 xft 补丁放在 /usr/portage/x11-libs/xft/files 目录下,然后把 kingo 的 ebuild 保存在 /usr/portage/x11-libs/xft/files  目录下。

开始安装:
emerge 不用多说了吧 ;)
[code:1]# emerge freetype fontconfig xfree xft[/code:1]

等着编译吧,我的 P3 600MHz 要花一个上午才能编译好
XFree,羡慕各位已经“奔四”的朋友。 ^^

安装字体:
因为 xft 只能在 GTK2 和 QT 程序里使用,所以我们还需要给 Gentoo 装上点阵字体给GTK1 和其它不能使用 xft 的程序使用,所以本章分两部分:

ttf:
[code:1]mkdir /usr/share/fonts/zh_CN/ttf[/code:1]
拷贝 Windows 字体到那个目录里:
[code:1]cp /mnt/windows/windows/fonts/simsun.ttf /usr/share/fonts/zh_CN/ttf[/code:1]
mkfontdir 生成的 fonts.dir 几乎根本不能用,所以我们最好自己写好 fonts.dir:
56
simsun.ttf -misc-fixed-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-fixed-medium-r-normal--0-0-0-0-c-0-gbk-0
sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-iso8859-1
ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-iso8859-1
ai=0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-iso8859-1
ai=0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-iso8859-1
ai=0.2:ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-iso8859-1
ai=0.4:ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-iso8859-1
ai=-0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-iso8859-1
ai=-0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-iso8859-1
ai=-0.2:ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-c-0-iso8859-1
ai=-0.4:ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-iso8859-1
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-iso10646-1
ai=0.2:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-iso10646-1
ai=0.4:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-iso10646-1
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-iso10646-1
ai=0.2:ab=y:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-iso10646-1
ai=0.4:ab=y:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-iso10646-1
ai=-0.4:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-iso10646-1
ai=-0.4:ab=y:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-iso10646-1
ai=-0.2:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-iso10646-1
ai=-0.2:ab=y:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.2:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.4:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-gb2312.1980-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.2:ab=y:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.4:ab=y:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.4:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.4:ab=y:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.2:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.2:ab=y:simsun.ttf -misc-simsun-bold-ro-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
ai=0.2:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-gbk-0
ai=0.4:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-gbk-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-gbk-0
ai=0.2:ab=y:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-gbk-0
ai=0.4:ab=y:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-gbk-0
ai=-0.4:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-gbk-0
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-big5-0
ai=0.2:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-big5-0
ai=0.4:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-big5-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-big5-0
ai=0.2:ab=y:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-big5-0
ai=0.4:ab=y:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-big5-0
ai=-1.4:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-big5-0
ai=-1.4:ab=y:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-big5-0
ai=-1.2:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-big5-0
ai=-1.2:ab=y:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-c-0-big5-0
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-ascii-0
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-fcd8859-15
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-iso8859-15
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-koi8-r

拷贝一份到 fonts.scale:
[code:1]cp fonts.dir fonts.scale[/code:1]
用 Firefly 的 fonts.conf 替换掉自带的 fonts.conf:
[code:1]cp fonts.conf /etc/fonts[/code:1]
然后修改 /etc/fonts/fonts.conf 加入:
[code:1]<dir>/usr/share/fonts/zh_CN/ttf</dir>[/code:1]
修改 /etc/X11/XF86Config-4 加入:
[code:1]FontPath      "/usr/share/fonts/zh_CN/ttf"[/code:1]

如果你使用 xfs 字体服务为 XFree 提供字体则修改 /etc/X11/fs/config:
[code:1]catalogue =
...
     /usr/share/fonts/zh_CN/ttf,
...[/code:1]
同时修改 /etc/init.d/xfs 的第 270 行,把
[code:1]if [ "${SETUP_FONTDIRS}" = "yes" ][/code:1]
改成
[code:1]if [ "${SETUP_FONTDIRS}" = "no" ][/code:1]
否则在 xfs 服务启动时会重新建立 fonts.dir,把我们自己的、可以缩放的 fonts.dir“冲掉”。

点阵字体:
推荐使用公社提供的GBK编码的simsun点阵字体Redoffice里提供的点阵字体效果也很不错。
我是使用支持 GBK 内码的那个点阵字体。

新建目录:
[code:1]# mkdir /usr/share/fonts/zh_CN/pcf[/code:1]
安装字体:
[code:1]# cd /usr/share/fonts/zh_CN/pcf
# tar xvjpf /tmp/simsun_gbk.tar.bz2
# mv simsun_gbk/* .
# rm -fr simsun_gbk
# mkfontdir[/code:1]

好了,然后把 /usr/share/fonts/zh_CN/pcf 路径加入 /etc/X11/XF86Config-4 或者/etc/X11/fs/config 里,方法和安装 ttf 字体方法一样,就不多说了。

设置中文环境:
编辑 /etc/env.d/100i18n 如以下内容:
[code:1]LANG=zh_CN.gbk
LC_CTYPE=zh_CN.gbk
LC_NUMERIC=en_US
LC_TIME=en_US
LC_COLLATE=en_US
LC_MONETARY=en_US
LC_MESSAGES=en_US
LC_PAPER=en_US
LC_NAME=en_US
LC_ADDRESS=en_US
LC_TELEPHONE=en_US
LC_MEASUREMENT=en_US
LC_IDENTIFICATION=en_US[/code:1]
我是只喜欢英文界面+中文输入支持,如果你要完全中文化只需要:
[code:1]LANG=zh_CN.gbk
LC_ALL=zh_CN.gbk[/code:1]
两行就可以了。

[code:1]# env-update
# source /etc/profile[/code:1]

好了,基本上算完了,安装好 GNOME,KDE,看看 xft 能不能用吧~! ^^

还有个问题,就是我们的 GTK1 程序不能用 xft,那么怎么使 GTK1 程序使用中文呢?那就要启用我们的点阵字体了。

GTK1:
编辑一下 /etc/X11/gtk/gtkrc.zh_CN 如以下内容:
[code:1]style "gtk-default" {
fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
           -*-simsun-medium-r-normal--12-*-*-*-*-*-*-*,*-r-*"
}
class "GtkWidget" style "gtk-default"[/code:1]

然后在 ~/.gtkrc 里加入一行:
[code:1]include "/etc/X11/gtk/gtkrc.zh_CN"[/code:1]

打开 xmms,能显示中文吗? *^^*

安装中文输入法:
Gentoo 已经把 fcitx 1.8.5 加入 Portage 了,我们直接 emerge 就好。
[code:1]# env USE='truetype' emerge fcitx[/code:1]

然后编辑 /etc/env.d/110XIM 如以下内容:
[code:1]XMODIFIERS="@im=fcitx"[/code:1]
[code:1]# env-update
# source /etc/profile[/code:1]
修改 ~/.xinitrc,使 fcitx 在启动 X 时同时启动:
[code:1]...
fcitx &
...[/code:1]

后记:
至于 qt 和 gtk2(pango) 的 xft 安装方法不在本不在本文讨论之内(当然还有 mozilla 和 OpenOffice),如果要让 qt 和 gtk2 程序通过 xft 正常显示中文,请自行打好补丁并安装,方法不变。

好了,一切就绪,enjoy xft in gentoo。

如果依然有什么问题或者对本文有任何意见请在后面跟帖!
但是有什么新问题还是另发一个帖子单独发问比较好。 ^^
发表于 2003-9-19 18:11:26 | 显示全部楼层
I wish there is sth called emerge chinese in the Gentoo portage system.
回复

使用道具 举报

发表于 2003-9-19 18:38:36 | 显示全部楼层
Thanks !
Kuye. You are so efficent.!

I should go now, i download your files and try at home then.
回复

使用道具 举报

 楼主| 发表于 2003-9-19 19:17:36 | 显示全部楼层
[quote:9d0de346bf="skyfolly"]I wish there is sth called emerge chinese in the Gentoo portage system.[/quote]
Good Idea !

我等一下试着写一个 ebuild 如何?!  

不过 sed 和 awk 我还不太会用。。。
我先学学那两个先,大家静候佳音好了。

[quote:9d0de346bf="jeffky"]Thanks !
Kuye. You are so efficent.!

I should go now, i download your files and try at home then.[/quote]
加油喔!

不过说真的,其实我的 xft 虽然能用,但是粗斜体出不来。。。
可能是给 xft 打补丁时出了问题。

我这里实在全部都是 GTK1 程序,连 GTK2 和 QT 我都没装,所以又换回 xtt 了。。。
回复

使用道具 举报

发表于 2003-9-19 23:24:35 | 显示全部楼层
一个上午?我靠!想死!

我的是2800+,要多久?
回复

使用道具 举报

 楼主| 发表于 2003-9-20 00:05:57 | 显示全部楼层
[quote:a1fe56a009="skyfolly"]一个上午?我靠!想死!

我的是2800+,要多久?[/quote]
谁让你死了?!
编译的时候可以听听歌,出去溜达溜达,溜溜狗狗什么的,实在不行就睡觉,睡醒了也就编译好了!  

2800+?!AMD 的?!
2800/600 大约就我的五倍快了!
我花五个小时编译的东西你只需要1个小时就可以完成了。

嗯。。。这就是贫富差距啊~~~
回复

使用道具 举报

发表于 2003-9-20 00:10:02 | 显示全部楼层
其实是2500+,超上了2800+,其实可以超到3200+的,但是WINDOWS XP不稳定,奇妙反而在LINUX就没事。

为什么我的MOZILLA 1。4不能正常显示中文?烦!
回复

使用道具 举报

发表于 2003-9-22 15:37:21 | 显示全部楼层
斑竹,你好:
我如果使用 xfs 字体服务为 XFree 提供字体,
那改 /etc/X11/XF86Config-4应是什么样,请斑竹贴图!
回复

使用道具 举报

 楼主| 发表于 2003-9-22 17:26:12 | 显示全部楼层
[quote:eda9aaf566="guidawei"]斑竹,你好:
我如果使用 xfs 字体服务为 XFree 提供字体,
那改 /etc/X11/XF86Config-4应是什么样,请斑竹贴图![/quote]
[code:1]....
Section "Files"
     FontPath       "unix/:-1"
EndSection
..[/code:1]

我用 xtt 的,因为我没装 QT 和 GTK2
回复

使用道具 举报

发表于 2003-9-22 17:26:14 | 显示全部楼层
xft自己编译,
用./configure --prefix=/usr/X11R6
这样就可以覆盖掉xfree里面的那个
打patch更不会出现被rejected的情况

另外qt也要patch,不然看不到中文字体名以及差粗斜体
pango也要patch,不然某些gnome程序选字体的时候无法选粗斜体
回复

使用道具 举报

 楼主| 发表于 2003-9-22 17:28:12 | 显示全部楼层
xft 出现 rejected 是因为还有其它 xft patch 修改了 xft 的代码。

要不我稍微修改一下 firefly xft 的补丁待会放出来
================
的确,lucida 说得很对,qt 和 pango, mozilla 也要打补丁
回复

使用道具 举报

发表于 2003-9-22 17:29:53 | 显示全部楼层
xft出现rejected是因为xfree里面带的那个版本太低了
firefly的是针对新版本的。。
回复

使用道具 举报

 楼主| 发表于 2003-9-22 17:33:02 | 显示全部楼层
[quote:9ef4a51428="lucida"]xft出现rejected是因为xfree里面带的那个版本太低了
firefly的是针对新版本的。。[/quote]
哦,原来这样。。。

我待会修订一下文章。

谢谢你的提示~!
回复

使用道具 举报

发表于 2003-9-22 19:29:03 | 显示全部楼层
我使用:
xfree-4.3.0-r3
xft-2.1.2 + firefly patches
{./configure --prefix=/usr/X11R6
  make && make install
}
freetype-2.1.4-rx(forgotten the r version)
pango-(The version I have forgotten; I have used the patches of firefly, which could display bold and italic fonts selection)
fontconfig-2.2.1 (Copy the gentoo orginal ebuild file and modify it to 2.2.1,use firefly's patches)

xfree和freetype,qt我都是用gentoo本身的ebuild安装的,没有作任何修改,再加上其他我上面列出的各个用了firefly补丁的包。我关闭了中文字体名显示,现在在所有程序中,中文字体的显示都很漂亮很清晰。

至于gtk1的中文字体,用的还是老方法。kuye你的gtk1不能出粗、斜体,应该是fonts.dir那里的问题吧。
回复

使用道具 举报

发表于 2003-9-22 20:16:25 | 显示全部楼层
freetype的补丁是用来提高显示效果的,我觉得那个smooth-usegamma的很糟糕
另外两个还是不错的

qt...我用3.2.x快三个月了,目前需要patch,
刚刚看了一下3.1.2-r4的ebuild,gentoo用了akito的patch
  07 Aug 2003; Caleb Tennis <[email protected]> qt-3.1.2-r4.ebuid:
  Add some complextext patches for cjk users (bug #2798

所以这个倒是不用自己动手了
回复

使用道具 举报

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

本版积分规则

GMT+8, 2025-2-12 11:49 , Processed in 0.029154 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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