2007年7月30日星期一

[转]Ubuntu明明白白安装中文字体

[Ubuntu]明明白白安装中文字体

授权方式:署名,非商业用途,保持一致,转载时请务必以超链接()的形式标明文章原始出处和作者信息及本声明。

Ubuntu 6.06 dapper对中文的支持应该说是一向不错的,包括现在默认安装就包含了scim输入法。然而,一般安装的ubuntu虽然能够显示、输入中文了,但总觉 得所显示的中文像歪瓜裂枣,很是别扭。这是很无奈的,也不是linux的错,这是因为现在几乎没有免费的中文字体库来给我们用,大家平时使用习惯了的 winxp里面的宋体、还有方正排版系统里面的仿宋体、公文中的方正小标宋等等,这些字体都是商业公司开发出来用在自己的产品中的,是有版权的,所以 linux不能拿过来就用。如果你还没有听说过字体有版权的话,上网搜索一下"胡万进" 吧,这位老兄就是当年在微软从事字体制作的一位员工,他所制作的字体的版权就是归微软公司所有。我们国家虽然对IT产业非常关注,但是更关注 windows,对开源社区和自由软件的支持几乎没有,直到今天也没有投资开发出一套免费的字体供大家使用。不过幸好有怀着共产主义信念的好同志,为我们 提供了免费的替代方案,现在我们可以使用圆体美化,还有开源的文泉驿域名2)可以用。

本文则是参考如何使用xp带的字体来进行中文美化?一文,实践中文字体的安装,并对ubuntu的字体体系更加深入的了解一下,这样以后再安装任何字体就都不怕了。

一、准备字体文件

我一直认为,如果我拥有了一套windows xp的使用权(通过oem方式),那么我就同时拥有了对这份windows产品的只用于我个人的任意使用权,这里面包括了对其中的字体的使用权。所以,本 文中将winxp的字体拷贝到linux下使用的做法,应该是没有侵权的。

windows的字体一般存放在c:\windows\fonts目录下,我拷贝到linux下的字体有:

simfang.ttf 仿宋体
simhei.ttf 黑体
simkai.ttf 楷体
simsun.ttf 宋体和新宋体,原文件名simsun.ttc
tahoma.ttf tahoma字体
tahomabd.ttf tahoma字体的粗体形式
verdana.ttf verdana字体
verdanab.ttf verdana字体的粗体形式
verdanai.ttf verdana字体的斜体形式
verdanaz.ttf verdana字体的粗体+斜体形式

拷贝过来的字体文件放在了/home/fwolf/tools/fonts目录下。

二、将字体加入到linux的可使用字体中

首先把字体文件链接到存放字体的目录中

cd /usr/share/fonts
ln -s /home/fwolf/tools/fonts xpfonts
cd xpfonts
mkfontscale
mkfontdir

这样作和把字体拷贝到/usr/share/fonts的一个目录下的效果是一样的。后面的两个mkfont命令是生成xpfonts目录下所包含的字体的索引信息。然后运行fc-cache命令更新字体缓存:

fc-cache

现在,应该说linux就可以使用这些新装上的中文字体了,看一下openoffic里的截图吧:

linux中OpenOffice下的几种winxp字体

其中仿宋体的字体名是FangSong_GB2312,黑体是SimHei,楷体是KaiTi_GB2312,宋体是SimSun,字体名暂时都不是中文的。

三、修改/etc/fonts/fonts.conf的字体渲染顺序

让我们一边修改,一边分析fonts.conf这个文件的内容吧,注意部分注释(<–和–>之间的内容)和无关紧要或者重复的内容我将跳过不再解释。

<?xml version="1.0″?> 声明这个文件是一个xml文档
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> xml文档的格式声明(dtd = document type define)
<!– /etc/fonts/fonts.conf file to configure system font access –>
<fontconfig> xml文件需要的根节点
<!–
DO NOT EDIT THIS FILE.
IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
LOCAL CHANGES BELONG IN 'local.conf'.

文档中提示不要手工修改fonts.conf,个人的设定可以写入local.conf文件,并且会自动被fonts.conf读入,不过我现在还不知道怎么创建这个文件,等知道了再公布出来吧,现在先拿fonts.conf开刀,反正预先已经作了备份。

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

所有字体文件存放的位置,其中第一个就是我们刚才放字体文件的目录/usr/share/fonts。

<!–
Accept deprecated 'mono' alias, replacing it with 'monospace'
–>
<match target="pattern">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="family" mode="assign">
<string>monospace</string>
</edit>
</match>

将本文件中的别名mono替换成全称monospace,这是xml的一个自动替换声明,使用别名的目的应该是为了简化书写或者维持对旧版本的兼容。后面还有几个替换就不再一一介绍了。

<!–
Serif faces
–> <alias>
<family>Bitstream Vera Serif</family>
<family>Vera Sans YuanTi</family> <!– added by lifesinger–>
<family>Times</family>
<family>Times New Roman</family>

Serif字型将要使用的字体顺序。当要显示Serif字型的内容时,就从下面这个列表中选择字体,匹配顺序是自上而下。可以看到已经安装的圆体美 化再这里作了修改。如果我们想把宋体作为首选,就在Bitstream Vera Serif字体前面比葫芦画瓢加上一行就可以了。

至于什么是Serif字型,以及Sans-serif字型,可以看一下细说字体 Sans Serif 与 Serifserif vs sans serif 这两篇文章,说明的很详细。我觉得把他们叫做字型或者字族,相对于字体来说,更贴切一些。

下面的Sans-serif faces、Monospace faces段中处理方式相同。

<!–
If the font still has no generic name, add sans-serif
–>
<match target="pattern">

又是三个替换,大概意思是如果上面的字体匹配还不成功,就尝试使用sans-serif、serif、monospace的默认字体来替换,最后如果还替换不成功,强制使用sans-serif字体。(不知道这么理解是否正确)

<!–
Some Asian fonts misadvertise themselves as monospaced when
in fact they are dual-spaced (half and full). This makes
FreeType very confused as it forces all widths to match.
Undo this magic by disabling the width forcing code –>
<match target="font">
<test name="family"><string>GulimChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>

一些亚洲字体实际使用了等宽字体,但是却没有明确的声明,这段就是为了兼容这个进行的处理,保持不变即可。

<!–
The Bitstream Vera fonts have GASP entries suggesting that hinting be
disabled below 8 ppem, but FreeType ignores those, preferring to use
the data found in the instructed hints. The initial Vera release
didn't include the right instructions in the 'prep' table. Fix this
by disabling hinting manually at smaller sizes (< 8ppem)
–>

修正Bitstream Vera字体在小于8点的时候的显示问题,保持不变即可。

<!–
Load local system customization file

<include ignore_missing="yes">local.conf</include>
–>

加载配置文件local.conf,下面的~/.fonts.conf也是一样。

<!–
Provide required aliases for standard names
–>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>

又是三个系列字型的字体别名,不知道这个和前面的类似设置是怎么个关系,大概前面设置的是备选字体,这里是推荐字体?不过照例把我们的SimSun加进去。

<!–
Artificial oblique for fonts without an italic or oblique version
–>

对没有斜体字的字体的处理方法,保持不变即可。

<!–
Synthetic emboldening for fonts that do not have bold face available
–>

没有黑体字的字体的处理方法,保持不变即可。

<!–
These are the default Unicode chars that are expected to be blank
in fonts. All other blank chars are assumed to be broken and
won't appear in the resulting charsets
–>

Unicode编码中在所有字体中都应该显示为空的编码表,保持不变即可。

<!– Rescan configuration every 30 seconds when FcFontSetList is called
–>

每隔30秒钟就重新检查一下本设置文件(看设置改变了没有),保持不变即可。

至此,标准的配置文件就结束了,我们需要作的主要修改也都完成了。重启X应该就能看到宋体中文的界面了。不过在fonts.conf还可以作一些其他的字体处理设置,这个在圆体美化所带的那个fonts.conf中有例子,比如:


<!– Win XP 效果 –>
<match target="font">
<test name="family"><string>Vera Sans YuanTi</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>

这就是指明在对Vera Sans YuanTi字体的处理中,globaladvance参数设置为false,其他的设置也多是这种语法,具体的含义和效果我就不知道了:)。

四、中文字体显示优化

按照上面的方法配置好以后,宋体能够显示了,但是字体有些发虚,那么一种简单的方法就是在 系统->首选项->字体(system->preference->font) 中选择单色(Monochrome),但是这样所有的字体包括英文字体都会有一点点的小锯齿,那么替代的方法就是通过修改fonts.conf,去掉宋体 的反锯齿,并且用黑体替代宋体的粗体。在fonts.conf中添加:

<!– 用黑体替代宋体的粗体 –>
<match target="pattern">
<test name="family"><string>SimSun</string></test>
<test name="weight" compare="more_eq"><const>bold</const></test>
<edit name="family" mode="assign"><string>SimHei</string></edit>
</match>
<!– 关闭宋体的AA –>
<match target="font">
<test qual="any" name="family"><string>SimSun</string></test>
<edit name="antialias" mode="assign"><bool>false</bool></edit>
</match>
<!– 解决不能识别中文字体名称的问题 –>
<match target="pattern">
<test name="family"><string>宋体</string></test>
<edit name="family" mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
<test name="family"><string>新宋体</string></test>
<edit name="family" mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
<test name="family"><string>仿宋_GB2312</string></test>
<edit name="family" mode="assign"><string>FangSong_GB2312</string></edit>
</match>
<match target="pattern">
<test name="family"><string>楷体_GB2312</string></test>
<edit name="family" mode="assign"><string>KaiTi_GB2312</string></edit>
</match>
<match target="pattern">
<test name="family"><string>黑体</string></test>
<edit name="family" mode="assign"><string>SimHei</string></edit>
</match>

为什么要用黑体替代宋体的粗体呢,因为宋体字体其实是不含粗体的,windows下也是,只是windows采用了更高级一些的方法来间接实现了宋体的粗体而已。

小结

以上就是简单的中文字体设置方法,和我对fonts.conf的简单理解,希望能对大家有用,也希望过路大侠指正错误和不足之处。另外还可以参考一下一个详细的汉化美化方案(freetype/fontconfig/xft),分析得比我深入多了。

参阅:

6 Responses to "[Ubuntu]明明白白安装中文字体"

  1. Henry Says:

    我按照所示方法,怎么还是加不了字体啊,很是郁闷!

    我装的双系统, 先有 Win XP后装了Ubuntu 6.06 LTS, 现在通过GRUB引导系统, 我从XP的系统文件将字体文件.ttf(主要是仿宋、宋体、黑体、楷体…)copy到/usr/share/fonts/myfonts 目录下,接着
    cd /usr/share/fonts
    ln -s /home/henry/myfonts (我COPY到home目录下的XP字体文件
    .tff,跟直接COPY到/usr/share/fonts 目录下效果一样,直接COPY和符号链接这两种方法我都试了)
    cd myfonts
    mkfontscale
    mkfontdir

    然后执行# fc-cache,更新字体缓存,提示" too many many fonts caches…."( 大体意思:太多字体缓存要更新),字体文件是复制到usr/share/fonts的一个目录下了,但是无法显示,在标识右上角有个x,在 openoffice里也找不到新装的字体

    难道是因为没有更新源?我那暂时连不了网,无法更新源。

  2. GiL Says:

    不错,支持一下!

  3. Fwolf Says:

    Henry的问题好像是没有修改font.conf ??

  4. Colin » links for 2006-12-21 Says:

    […] Fwolf's Blog » Blog Archive » [Ubuntu]明明白白安装中文字体 (tags: Linux ubuntu 美化 字体) […]

  5. Ric Wang » [Ubuntu]明明白白安装中文字体 Says:

    […] 授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/170)的形式标明文章 原始出处和作者信息及本声明。Ubuntu 6.06 dapper对中文的支持应该说是一向不错的,包括现在默认安装就包含了scim输入法。然而,一般安装的ubuntu虽然能够显示、输入中文了,但总觉 得所显示的中文像歪瓜裂枣,很是别扭。这是很无奈的,也不是linux的错,这是因为现在几乎没有免费的中文字体库来给我们用,大家平时使用习惯了的 winxp里面的宋体、还有方正排版系统里面的仿宋体、公文中的方正小标宋等等,这些字体都是商业公司开发出来用在自己的产品中的,是有版权的,所以 linux不能拿过来就用。如果你还没有听说过字体有版权的话,上网搜索一下"胡万进" 吧,这位老兄就是当年在微软从事字体制作的一位员工,他所制作的字体的版权就是归微软公司所有。我们国家虽然对IT产业非常关注,但是更关注 windows,对开源社区和自由软件的支持几乎没有,直到今天也没有投资开发出一套免费的字体供大家使用。不过幸好有怀着共产主义信念的好同志,为我们 提供了免费的替代方案,现在我们可以使用圆体美化,还有开源的文泉驿(域名2)可以用。 […]



--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

7 条评论:

匿名 说...

Instead, put grass clippings to use as mulch for your garden.
Mulch will reduce weed growth and prevent new weeds from growing in the garden.
In this same respect, mulch aids in the prevention of soil splashing onto plants.



Here is my web page ... mulching

匿名 说...

Choose the best Indian restaurant nearer to your home or office, enjoy breakfast, lunch and dinner with Indian flavor.
Offering complimentary shuttle service and Park-and-Drive
programs, which allow guests to park their cars for 10 days, Best Western Newark makes
it easy to get back and forth to the airport. It is actually one of the several Cities within the Netherlands with a big reputation and a large number
of sightseers visiting Venlo annually or even just every weekend.


Take a look at my site: restaurant vouchers

匿名 说...

If one innocently applies an insufficient amount of
sealer on a very porous concrete material, the said material may not be effective at all.
Make sure that you don't end up with a look of patches by checking to see that the glitter falls all the way around the edges of a newly-painted area. Say we are laying out a simple home 30' x 45'; if the last dimension was forty feet instead of forty-five then the cross corner measurement would be fifty feet.

匿名 说...

After application the hair is simply dried, either naturally or using
a drier. Right away register your GHD curly hair straightener concerning the
GHD webpage so that you just can enact the 2-year ensure as
well as to look at to make certainyours is genuine.
Generally, these products are more expensive than their watered-down counterparts, but you can find a few affordable pure silicone hair products (see below).

匿名 说...

In this case, it might be better to start an organic vegetable garden in a raised bed.
Native plants or at least plants adapted to similar
conditions as your region will have a better chance of growing and thriving.
This will give them time to acclimate to their new environment, avoiding stress and shock often associated with transplanting, ensuring
a healthy start.

Stop by my web page cedilla

匿名 说...

Here author is giving information on DRDO Tenders and ICFRE Tenders for more details
visit free tenders site. This is a growing and profitable market with
the increase in ability for all types of business- large or small -
to do business in an international platform and other is National Newspaper Networks combine newspapers from several States within the USA.

As a whole the paper has some major drawbacks,
there are no pictures, essentially no world news and the front page
contained a spelling error. He proudly displays a disdain for homosexuals, especially those that are HIV-positive, by stating that
they should be sequestered away from the rest of Frances moral society.
But I felt I had something interesting, if not unique, to
say about the Mafia because as a boy I had listened not only to
Mafiosi in my stepfather's kitchen but to first and second generation Sicilians who understood how and why the Mafia had gotten a foothold in this country.

my website; click here

匿名 说...

hi!,I love your writing very a lot! percentage we be in contact extra approximately your
article on AOL? I need a specialist in this area to solve my problem.
Maybe that is you! Taking a look forward to see you.

Here is my page ... order acai ultra lean