QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25429|回复: 89

自己拼凑一个TTF 字体的全过程。大家看看效果

[复制链接]
发表于 2004-5-23 15:22:23 | 显示全部楼层 |阅读模式
今天自己拼凑了一个TTF字体给Fedora 2用。

在笔记本上装了Fedora  Core 2,很不错。感觉整合度不比SuSE 9.1差。用了很
多新东西,比如Xorg的X  Server,以及IIIMF的输入平台等等。而且速度也快
,可以尝试一下。
用了网上一个现成的美化包(就是哈密瓜的那个)后,显示效果不错。中文用的是
simsun,可以用到内嵌的点阵字体。英文字体用Tahoma,平滑后的效果在LCD上
比较别扭,老是有彩色。尝试着配置使用点阵的英文字体,效果就好多了。但是
如果网页指定了宋体的话,还是会用宋体的难看的英文部分显示。同时宋体内嵌
的点阵还是少,只有12、14、16三种。有些情况需要显示更小的字体时,显示的
仍然是算出来的,效果不好。
总之不完美,为了在Linux上用一个比较好的TTF,决定自己作一个。

当然不是从头画起,而是用现成的字体拼起来。
工具用了fontforge和xmbdfed、pcf2bdf,主力是fontforge。
要解决的问题是宋体的英文难看,同时希望能嵌入更小的点阵字体。
英文TTF部分准备用Tahoma的。更小的汉字全集的点阵字体据我所知只有mingliu.ttc
里有,就用它了。

首先把点阵字库准备好。
用fontforge打开simsun.ttc,取出simsun字体。过程中会提示是否提取点阵字体,
选择全部提取。之后Generate Font,点阵不要选In TTF,选择输出为BDF。然后
保存下来。
mingliu.ttc的解构不标准,fontforge打不开。只能用xmbdfed了。MingLiu里的点
阵大小分别是11、12、13、15、16、20。xmbdfed起动时可以用-ps 11这样打参
数指定缺省点阵大小。然后再Import TrueType Fonts,选mingliu.ttc后从里面选
择PMingLiu打开,这个是GBK编码的字体。Import结束后就可以看到11的点阵字
体了,存下来即可。用不同的点阵大小重复多次,就把PMingLiu的全部点阵字体
得到了。
所有的BDF字体都可以在fontforge中打开。我们会看到这些字体都是iso10646-1
编码的。开头都缺少Latin1部分的字,这样在网页指定使用宋体时,英文就会没有
点阵可用,导致使用TTF显示,小字的时候很难看。我们要作的就是补齐Latin1部
分。
X中自带了很多英文点阵字体,都是pcf格式。挑一种中意的字体,把各个大小的
pcf都用pcf2bdf转成bdf。我用的是helvetica。把对应大小的中英文bdf字体同时用
fontforge打开,然后把英文的字拷贝到中文点阵中即可。然后把中文字体再Generate
Font,得到包含Latin1部分的点阵字体。

然后处理TTF部分。
鉴于simsun的英文难看的很,准备用tahoma的代替。作法是用fontforge打开
simsun.ttf和tahoma.ttf,再把tahoma的latin1部分拷贝到simsun。但是再次之前,
需要先处理一下tahoma。选择两个字体的Elemnet->Font Info,看看General页。
Tahoma和simsun的Em Size差8倍。直接拷贝过去会什么也看不到的。先调整
Tahoma的Em Size和simsun一样。其他值也要按比例缩小。之后Generate一个新
的字体,比如tahoma_256.ttf。然后把tahoma_256.ttf的英文部分拷贝到simsun
中。这样simsun的英文就比较好看了。

之后把点阵嵌入TTF。
在fontforge的File菜单中有一项Import。用这个来引入点阵字体。引入后,在
Element->Bitmap Available中看一下当前可用的点阵,可以把不想要的删掉。之
后再Generate Font,输出的Outline font选TrueType,Bitmap选In TTF,之后生
成的就是内嵌点阵的TTF了。

过程简要来说就是这样了。

我经过多次实验,最后作了一个大杂烩字体。英文TTF是Tahoma的,中文TTF是
simsun的。英文点阵是Helvetica,中文点阵是simsun和pmingliu的。点阵大小计
有10、11、12、13、14、15、16、20。其中10、11、15、20是pmingliu的,
12、13、14、16是simsun的。13和10大小的是手工修改bdf得到的,因为14和11
的点阵其实大小只有13和10,改一下大小就行了。
呵呵,这个字体可是很大,有12M之多。不过对我来说,基本上只要着一个字体
就够了,还是比较省事的。所有字体选择处,直接用simsun就行了,不用再搭配
了。

缺陷:
可能是因为合并多种点阵的缘故,用传统的X字体方式使用这个ttf时,如果字体的
宽度类型是C,会变得很宽。调了很久也没有办法。
解决办法是不要把目录放在xfs里,而直接放在xorg.conf里。这样fonts.dir不会每
次被自动修改,只要固定地写成P,就好了。
在Gnome和KDE程序中都没有这个问题。
那位大牛知道如何改正这个问题,请不吝赐教。


看一下效果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2004-5-23 15:30:52 | 显示全部楼层

Re: 自己拼凑一个TTF 字体的全过程。大家看看效果

前一个发不下了。
继续:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2004-5-23 15:41:20 | 显示全部楼层
效果还不错,楼主提供下载吧
回复

使用道具 举报

 楼主| 发表于 2004-5-23 15:45:18 | 显示全部楼层
太大了,12M啊。
没法作附件吧?

我写了整个修改过程,大家自己动手吧。还可以加入自己喜欢的英文字体。
不一定每个人和我的看法一样,都用tahoma和helvetica的。
回复

使用道具 举报

发表于 2004-5-23 18:31:54 | 显示全部楼层
很好。不过,粗斜体你是怎么实现的?
回复

使用道具 举报

发表于 2004-5-23 19:24:19 | 显示全部楼层
做的很不错.你可以上载到我的FTP上给大家共享.
回复

使用道具 举报

发表于 2004-5-23 19:28:52 | 显示全部楼层
有些帅撒!
回复

使用道具 举报

发表于 2004-5-23 19:35:52 | 显示全部楼层
不错,强烈要求上传。

wxz8兄弟,你可是好久没上新东西了
回复

使用道具 举报

发表于 2004-5-23 22:05:15 | 显示全部楼层
wxz8、cnhnln、楼主,你们可以把做好的字体上传到ftp://linux.pku.edu.cn,你们提供的ftp我都连不上。

建个fonts目录,放进去就可以了,可以来个说明说是做得字体,呵呵。
回复

使用道具 举报

发表于 2004-5-23 22:09:10 | 显示全部楼层
UMBRO, 你那个在教育网吧,俺进不去。
回复

使用道具 举报

 楼主| 发表于 2004-5-23 22:51:24 | 显示全部楼层
[quote:0b87db2ec6="cnhnln"]很好。不过,粗斜体你是怎么实现的?[/quote]

粗体和斜体是通过美化包来作的,是用了FireFly修改的xft2吧。
我没有自己再生成粗体和斜体了。呵呵,因为我对粗体和斜体
不是很敏感的。
回复

使用道具 举报

发表于 2004-5-23 22:55:22 | 显示全部楼层
[quote:0044259f1a="quhw"]UMBRO, 你那个在教育网吧,俺进不去。[/quote]

那我也没办法呀,我在教育网内。
回复

使用道具 举报

 楼主| 发表于 2004-5-23 23:04:44 | 显示全部楼层
[quote:b35f26bf77="wxz8"]做的很不错.你可以上载到我的FTP上给大家共享.[/quote]

老兄的FTP地址是?
回复

使用道具 举报

发表于 2004-5-23 23:09:48 | 显示全部楼层
ftp://wxz:[email protected]:8847
回复

使用道具 举报

 楼主| 发表于 2004-5-23 23:13:28 | 显示全部楼层
[quote:7fe7f2e529="UMBRO"]wxz8、cnhnln、楼主,你们可以把做好的字体上传到ftp://linux.pku.edu.cn,你们提供的ftp我都连不上。

建个fonts目录,放进去就可以了,可以来个说明说是做得字体,呵呵。[/quote]

正在上传。

在/incoming/Chinese下建立了一个新目录,Big_TTF_by_kuuldor。

正在上传。

Over
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-15 06:03 , Processed in 0.093945 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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