分享
 
 
 

在红帽子6.0中使用TrueType字体

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

最近我在http://www.kegel.com/linux/tt.html读了篇文章,文章详细讲述了在Red Hat Linux 6.0中运行TrueType字体的方法。如果不先读参考文章的话,我压根儿没法写出这篇简单的HOWTO。请先读一读。

首先声明我不是这方面的专家;我压根儿不知道PostScript和TrueType字体之间的差异;现在我甚至不想知道。我希望的只是东西能运作。对那些细节,我要操心的还多的很。但当知道这些细节对一个过程或项目的成功很重要时,我的看法立刻变了。

开始着手…

在按照kegel.com的文档操作后,天,我竟看不出我的字体在Netscape(4.61)与StarOffice 5.1中有什么差别。“怎么了?”我想。在浪费了许多时间与不停的诅咒后,我最终决定转向RTFM。但没用。如果你已知道xfs如何工作,那么xfs手册页当然很好,但它竟连配置文件在哪儿都不告诉你(提示:/etc/X11/fs/config)。

我的第一个问题是,chkfontpath(8)确实将新字体路径添加到xfs配置文件了,但如果你的机器配置为使用到你的字体目录的直接路径,它并不修改任何东西。这就是我的遭遇。

修改你的FontPath以便它使用xfs——第一部分

我要做的第一件事是让X和我的字体服务器对话。虽然我的RedHat配置成xfs自动启动,但我的X看来并未和它对话。事实上,我用lsof(8)试着找出xfs在听哪个端口,它居然什么端口也没有听。这可能显示了我对xfs的无知,我的/etc/rc.d/init.d/xfs中xfs启动行是这样的:

daemon --check xfs su xfs -c \"xfs -port -1\" -s /bin/sh

xfs手册页描述端口选项为让xfs服务器听的端口。端口“-1”听来似乎不对头,或许它是我所不熟悉的什么的缩写(请纠正,别客气),于是,我将xfs的端口设置为标准端口7100:

daemon --check xfs su xfs -c \"xfs -port -1\" -s /bin/sh (译注:原文如此)

然后我以root重启xfs(/etc/rc.d/init.d/xfs重启)。好极了—xfs运行如我所愿,可是为什么我的字体在重启X并登录后并未更好看一些呢?

让X和xfs服务器对话

看来我的xfs虽然很乐意服务,可是我的X服务器不去听它。我有一个IBM Thinkpad 760e,知道配置X的痛苦。因此我保存了我的XF86Config文件的一个副本,而非每次试着去猜一个新配置(虽然Linux Mandrake这方面的能力给我很深映象)。我的旧XF86Config文件没有任何与xfs服务器对话引用,我不得不手工编辑。这对你可能有用,也可能没有,但对我来说还是有用的。

这是编辑前的旧节:

Section "Files"

RgbPath "/usr/X11R6/lib/X11/rgb"

FontPath "/usr/X11R6/lib/X11/fonts/misc/"

FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"

FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"

FontPath "/usr/X11R6/lib/X11/fonts/Type1/"

FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"

FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"

FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"

FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"

FontPath "/usr/local/lib/X11/fonts/Type1/"

EndSection

我只是简单地在这个文件里加了一个到字体服务器的引用,并且不在本地目录里找字体:

Section "Files"

RgbPath "/usr/X11R6/lib/X11/rgb"

FontPath "tcp/localhost:7100"

EndSection

简单多了,是吧?可是事实证明还有不止一个要修改的地方。

最后的稻草

我有许多字体,其实有许多看来是多余的,某天我会处理掉它们的。我的问题是X字体服务器会按xfs配置文件里列出的顺序过一遍列出的路径。如果我指定一种特定字模的字体(a particular font from a particular foundry),这当然很好,但我只是简单地说,我要“Helvetica”字体,它会给我一个最先找到的“Helvetica”字体——而我希望它先找到TrueType字体。

当我用chkfontpat添加Windows字体路径时,我简单地将新目录加到字体路径表的末尾。结果和我期望的相反。

# 寻找字体的地方

# 有一些被注释掉了,例如在/usr/share中的TrueType与Type1目录,因为它们不必强行随X一起安装。

#

catalogue = /usr/X11R6/lib/X11/fonts/misc,

/usr/X11R6/lib/X11/fonts/75dpi,

/usr/X11R6/lib/X11/fonts/100dpi,

/usr/X11R6/lib/X11/fonts/Type1,

/usr/X11R6/lib/X11/fonts/Speedo,

/usr/local/lib/X11/fonts/Type1,

/usr/X11R6/lib/X11/fonts/misc:unscaled,

/usr/X11R6/lib/X11/fonts/100dpi:unscaled,

/usr/X11R6/lib/X11/fonts/75dpi:unscaled,

/dos/windows/fonts

于是,为了得到我想要的结果,我简单地修改了字体的顺序:

# 寻找字体的地方

# 有一些被注释掉了,例如在/usr/share中的TrueType与Type1目录,因为它们不是随X强行安装的。

#

catalogue = /dos/windows/fonts,

/usr/X11R6/lib/X11/fonts/misc,

/usr/X11R6/lib/X11/fonts/75dpi,

/usr/X11R6/lib/X11/fonts/100dpi,

/usr/X11R6/lib/X11/fonts/Type1,

/usr/X11R6/lib/X11/fonts/Speedo,

/usr/local/lib/X11/fonts/Type1,

/usr/X11R6/lib/X11/fonts/misc:unscaled,

/usr/X11R6/lib/X11/fonts/100dpi:unscaled,

/usr/X11R6/lib/X11/fonts/75dpi:unscaled

终于成功了。

戏剧性的结果

对看到这一切的我们来说,结果好极了。

这是捕捉的一份StarOffice2文档的部分画面,有两行:第一行使用TrueType型"Times New Roman"字体,第二行用了非TrueType的"Times"字体。

1.注:有些人并不花钱买软件,但我的另一个分区确实有一份合法的Windows拷贝。我尽量为我所有的软件付帐,即使它来自微软。Fair is fair—我只希望物有所值。

2.本文全部用StarOffice 5.1打出来——老实说还不错。HTML里有太多无用的标记,但我想我得试试。我在Viper模式通常用Emacs。

参考文章:

让GNU/Linux下的StarOffice的字体好看起来

by Zubin D. Dittia (zubin@growthnetworks.com)

我最近从Sun的Web主页(http://www.sun.com/staroffice/)下载了StarOffice,成功地安装在我的红帽子6.0上。这套Office看起来真漂亮,它的演示工具甚至比Ms Office的Powerpoint还好,但是字体看起来脏而丑,让人很不舒服。

很明显,原因是XFree86现在还不支持TrueType字体。我知道,TrueType字体以曲线存储了字体的描述而非位图,因而可以很好地拉大缩小。X的未来版本即将支持TrueType字体,可是远水救不了近火。

我发现至少有一个web页在修正这个问题上非常有帮助:http://www.mindspring.net/~john_mcl/adding_fonts.html,作者是John Mclaughlin (johnmcl@mailexcite.com)。尽管我按描述的步骤来有点问题,不过在花了点力气后我终于能让字体正确工作了。本页描述了我的步骤,注意我仅在红帽子6.0下测试过,在其他GNU/Linux发行版本下可能要做点修改。

Dan Kegel后来引我到他的Web页(http://www.kegel.com/linux/tt.html),那里有一个更简单的法子让字体在红帽子6.0下正确工作。

我后来还听Aaron Bredon说至少红帽子发行版已经包括了对TrueType字体的支持,那么你可以一步取代下面的第3~13步:只需编辑文件/etc/X11/fs/config,加入TrueType字体目录,再运行/etc/rc.d/init.d/xfs restart。

这个法子我没试过,不过我希望大家试一试,实在不行再回到下面的冗长的步骤来。

你得想尽法子从许多地方得到几种不同的源代码发行版,为简单起见,我已将各种包的最新版本(99.9.4)打包在一起,你可下载:http://king.ccrc.wustl.edu/~zubin/fontstuff.tgz。下载会省你的事,但我没计划不断地更新它,如果你要各个包的最新最强版本,你得自己到下面提到的地址下载。

第一步

 $ cd /usr/X11R6/lib/X11/fonts

 $ mkdir tt_fonts

 $ cd tt_fonts

 $ cp /dos/windows/fonts/*.ttf .

(用你的Windows目录所在分区取代/dos,例如,/mnt/dos)

注:很不幸,不能免费得到一套好的TrueType字体。我只能假设你能弄到MS Windows使用的字体,我们后面要用它。你若没有Windows,你可从他们的web页得到一些免费的MS字体:http://www.microsoft.com/typography/fontpack/default.htm。你也可从web上的其他地方找到其他很好的TrueType字体,到这个URL看看一个免费字体的web地址列表:http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/fonts.html。

第二步

弄到ttfmkdir(http://www.darmstadt.gmd.de/~pommnitz/xfsft.html),在tt_fonts目录下运行它。红帽子Linux的/usr/sbin下已经安装了一个,所以我们无需去弄。

 $ /usr/sbin/ttmkfdir > fonts.dir

你可忽略任何错误消息,或者如果你愿意,你尽可删除所有引起错误的字体文件,重新运行ttfmkdir。

第三步

从http://quadrant.netspace.net.au/ttf2pt1/弄到ttf2pt1。我用的版本在文件ttf2pt1-311.tgz?

 $ cd /usr/local/src

 $ tar xvfz ttf2pt1-311.tgz

 $ cd ttf2pt1-311

在该目录下编辑Makefile,注释掉它声明要注释掉的两行。运行make:

 $make

生成三个二进制文件:t1asm,ttf2pfa和ttf2pt1

第四步

从http://www.moisty.org/linux/ttf.html下载ttfutils发行版,我用的版本在文件ttfutils-0.1.tar.gz。

 $ cd /usr/local/src

 $ tar xvfz ttfutils-0.1.tar.gz

第五步

执行下列命令:

 $ setenv PATH  ${PATH}:/usr/local/src/ttf2pt1-311

 $ setenv PATH  ${PATH}:/usr/local/src/ttfutils-0.1

 $ cd /usr/X11R6/lib/X11/fonts/tt_fonts

 $ ttf2type1 *.ttf

该命令会输出一大堆关于字型和编码的东西,还会花一点时间。你尽可忽略所有的输出。

第六步

按连接http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/所示得到xfsft。我是从ftp://ftp.dcs.ed.ac.uk/pub/jec/programs/xfsft/下载的预编译了的Linux版本,文件名xfsft-1.1.6.linux-i386-libc6.tar.gz。

将包安装到/usr/local/src:

 $ cd /usr/local/src

 $ tar xvfz xfsft-1.1.6.linux-i386-libc6.tar.gz

 $ rm xfsft-1.1.6.linux-i386-libc6.tar.gz

第七步

创建到二进制可执行文件的符号连接:

 $ cd /usr/local/bin

 $ ln -s ../src/xfsft-1.1.6/xfs xfsft

第八步

 $ mkdir /etc/X11/xfsft

创建一个配置文件/etc/X11/xfsft/xfsft.conf,文件内容应该为:

# sample font server configuration file

#

# allow a max of 10 clients to connect to this font server

client-limit = 10

# when a font server reaches its limit, start up a new one

clone-self = on

# where to look for fonts

# the first is a set of Speedo outlines, the second is a set of

# misc bitmaps and the last is a set of 100dpi bitmaps

#

catalogue = /usr/X11R6/lib/X11/fonts/tt_fonts

# in 12 points, decipoints

default-point-size = 120

# 100 x 100 and 75 x 75

default-resolutions = 100,100,75,75

use-syslog = off

第九步

创建文件/etc/rc.d/init.d/xfsft,文件内容应为:

#!/bin/sh

#

# xfsft: Starts the X Font Server for TrueType fonts

#

# Version: @(#) /etc/rc.d/init.d/xfsft 1.0

#

# chkconfig: 2345 90 10

# description: Starts and stops the X TrueType Font Server (xfsft) at boot time and shutdown.

#

# processname: xfsft

# config: /etc/X11/xfsft/xfsft.conf

# hide: true

# Source function library.

. /etc/rc.d/init.d/functions

# See how we were called.

case " $1" in

start)

echo -n "Starting X TrueType Font Server (xfsft): "

daemon --check xfsft /bin/sh -c \"/usr/local/bin/xfsft -config /etc/X11/xfsft/xfsft.conf -port 7100 2\>1 \> /dev/null \&\"

touch /var/lock/subsys/xfsft

echo

;;

stop)

echo -n "Shutting down X TrueType Font Server (xfsft): "

killproc xfsft

rm -f /var/lock/subsys/xfsft

echo

;;

status)

status xfsft

;;

restart)

echo -n "Restarting X TrueType Font Server (xfsft): "

if [ -f /var/lock/subsys/xfsft ]; then

killproc xfsft -USR1

else

daemon --check xfsft /bin/sh -c \"/usr/local/bin/xfsft -config /etc/X11/xfsft/xfsft.conf -port 7100 2\>1 \> /dev/null \&\"

touch /var/lock/subsys/xfsft

fi

echo

;;

*)

echo "*** Usage: xfsft {start|stop|status|restart}"

exit 1

esac

exit 0

第十步

试着启动xfsft字体服务器:

 $ cd /etc/rc.d/init.d

 $ chmod +x xfsft

 $ ./xfsft start

你应该看见一条类似的消息为:

Starting X TrueType Font Server (xfsft): [OK]

若你运行“ps -auxwww | grep xfsft”,应该可看到xfsft进程在运行。

若该进程未启动,或脚本挂起,或输出一个失败消息,不必进行下面的步骤,直到你找到并解决了问题。

第十一步

在rcN.d目录下创建一个符号连接到你刚创建的文件,xfsft就可在启动时自动启动了:

 $ cd /etc/rc.d/rc0.d

 $ ln -s ../init.d/xfsft K10xfsft

 $ cd ../rc1.d

 $ ln -s ../init.d/xfsft K10xfsft

 $ cd ../rc2.d

 $ ln -s ../init.d/xfsft S90xfsft

 $ cd ../rc3.d

 $ ln -s ../init.d/xfsft S90xfsft

 $ cd ../rc4.d

 $ ln -s ../init.d/xfsft S90xfsft

 $ cd ../rc5.d

 $ ln -s ../init.d/xfsft S90xfsft

 $ cd ../rc6.d

 $ ln -s ../init.d/xfsft K10xfsft

第十二步

编辑你的X配置文件(通常是/etc/X11/XF86Config),给出新字体的路径。找到一行看来像

FontPath "unix/:-1"

修改该行为

FontPath "tcp/localhost:7100,unix/:-1"

第十三步

重启机器,重启时应有一条OK信息类似于:

Starting X TrueType Font Server (xfsft): [OK]

第十四步

好了——试着启动StarOffice或其他使用很多字体的应用,你会立刻看到字体的改进,尤其是在较大字体尺寸时。

注:若X服务器在第十四步中不能启动,你可通过改回旧的FontPath关闭xfsft。你或许还想删除你在/etc/rc.d/rcN.d目录创建的连接。你可按Ctrl-Alt-F1进入登录提示符以进行修改——如果不行,重启Linux进入单用户模式(在LILO提示符下键入linux single)再改。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有