自己拼凑一个TTF 字体的全过程。大家看看效果
今天自己拼凑了一个TTF字体给Fedora 2用。在笔记本上装了FedoraCore 2,很不错。感觉整合度不比SuSE 9.1差。用了很
多新东西,比如Xorg的XServer,以及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程序中都没有这个问题。
那位大牛知道如何改正这个问题,请不吝赐教。
看一下效果:
Re: 自己拼凑一个TTF 字体的全过程。大家看看效果
前一个发不下了。继续: 效果还不错,楼主提供下载吧 太大了,12M啊。
没法作附件吧?
我写了整个修改过程,大家自己动手吧。还可以加入自己喜欢的英文字体。
不一定每个人和我的看法一样,都用tahoma和helvetica的。 很好。不过,粗斜体你是怎么实现的? 做的很不错.你可以上载到我的FTP上给大家共享. 有些帅撒! :mrgreen: 不错,强烈要求上传。
wxz8兄弟,你可是好久没上新东西了 :-D wxz8、cnhnln、楼主,你们可以把做好的字体上传到ftp://linux.pku.edu.cn,你们提供的ftp我都连不上。
建个fonts目录,放进去就可以了,可以来个说明说是做得字体,呵呵。 UMBRO, 你那个在教育网吧,俺进不去。 很好。不过,粗斜体你是怎么实现的?
粗体和斜体是通过美化包来作的,是用了FireFly修改的xft2吧。
我没有自己再生成粗体和斜体了。呵呵,因为我对粗体和斜体
不是很敏感的。 UMBRO, 你那个在教育网吧,俺进不去。
那我也没办法呀,我在教育网内。 做的很不错.你可以上载到我的FTP上给大家共享.
老兄的FTP地址是? ftp://wxz:[email protected]:8847 wxz8、cnhnln、楼主,你们可以把做好的字体上传到ftp://linux.pku.edu.cn,你们提供的ftp我都连不上。
建个fonts目录,放进去就可以了,可以来个说明说是做得字体,呵呵。
正在上传。
在/incoming/Chinese下建立了一个新目录,Big_TTF_by_kuuldor。
正在上传。
Over