|
原作:windrose兄
订正:keanu兄
本文主要讨论了为ghostscript添加中文字体,从而实现.ps文件对简体中文的支持。如果软件的打印选项支持生成.ps文件,则可以间接使得它支持简体中文的打印。
虽然设置方法基于Slackware 9.0,但相信对其他发行版也有参考意义。
软硬件配置:
- 操作系统:Slackware 9.0
- 打印机:HP LaserJet 6L
- 打印服务程序:CUPS 1.1.18
- ghostscript 7.05
- Mozilla 1.4 中文版
说明:下面的操作几乎都需要root权限。
一、安装打印服务程序
Slackware 9.0 默认的打印服务程序是lpd,而现在更流行的是CUPS,设置也非常简单。可以到slackware下载的镜像站,在发行版本的 extra目录中下载,目前的版本是cups-1.1.18。用installpkg安装。
安装完毕后,会在/etc/rc.d/目录生成rc.cups文件,用root身份,运行 /etc/rc.d/rc.cups start ,即可启动cups打印服务。用浏览器访问 http://localhost:631/ 即可对cups和打印机进行设置,详情请看cups的文档。
添加打印机并成功打印出测试页之后,gedit和starsuite就直接能在我的HP LJ6L打印出中文。
二、设置ghostscript的中文支持
许多程序能够通过ghostscript生成postscript文件(.ps),如果能使ghostscript支持中文,就能够间接支持这些程序的中文打印。Slackware9.0自带的ghostscript是7.05版。
1. 下载CMap字体文件
ftp://ftp.gyve.org/pub/gs-cjk/adobe-cmaps-200211.tar.gz<br /> ftp://ftp.gyve.org/pub/gs-cjk/acro5-cmaps-2001.tar.gz<br />
把上面两个文件解压缩到/usr/share/ghostscript/Resource目录(如果没有这个目录,请自己mkdir)
cp adobe-cmaps-200211.tar.gz /usr/share/ghostscript/Resource
cp acro5-cmaps-2001.tar.gz /usr/share/ghostscript/Resource
tar zxvf adobe-cmaps-200211.tar.gz
tar zxvf acro5-cmaps-2001.tar.gz
rm *.gz
再建两个字体目录:
mkdir /usr/share/ghostscript/Resource/CIDFont /usr/share/ghostscript/Resource/Font
2.下载freetype-1.3.1(后面的ttfm需要)
http://sourceforge.net/project/show...p?group_id=3157<br />
下载源码,自行编译安装,完成后运行 ldconfig 更新库文件索引
3. 下载ttfm
http://www.linuxeden.com/download/s....php?softid=650<br />
下载 ttfm-1.0-6.i386.rpm 和 gscjk.ttfm
安装:
rpm -ivh ttfm-1.0-6.i386.rpm --nodeps
cp gscjk.ttfm /usr/share/fonts/install/
4.安装中文字体
我用的是ms windows提供的simsun.ttf, simhei.ttf, simkai.ttf 和simfang.ttf
把这四个字体放到 /usr/share/fonts/ttf目录中,也可以仅在这个目录里建立指向字体所在路径的符号链接。
然后:
cd /usr/share/fonts/install
ttfm.sh --initm gscjk.ttfm
这样就会在 /usr/share/ghostscript/Resource/CIDFont 和 /usr/share/ghostscript/Resource/Font 目录中生成对上面四种中文字体的描述文件。
5.让ghostscript启动时自动加载我们安装的中文字体
首先,修改 /usr/share/ghostscript/7.05/lib/gs_res.ps 文件,在其中找到这样两行:
/FontResourceDir (/usr/share/ghostscript/fonts/) readonly .forcedef
/GenericResourceDir (/usr/share/ghostcript/) readonly .forcedef
改为:
/FontResourceDir (/usr/share/ghostscript/Resource/Font/) readonly .forcedef
/GenericResourceDir (/usr/share/ghostscript/Resource/) readonly .forcedef
然后,建立CIDFnmap文件:
touch /usr/share/ghostscript/7.05/lib/CIDFnmap.zh
编辑这个文件,输入下面的内容:
/SimSun (/usr/share/fonts/ttf/simsun.ttf) 1 ;
/SimHei (/usr/share/fonts/ttf/simhei.ttf) 1 ;
/FangSong_GB2312 (/usr/share/fonts/ttf/simfang.ttf) 1 ;
/KaiTi_GB2312 (/usr/share/fonts/ttf/simkai.ttf) 1 ;
/Adobe-GB1 /SimSun ;
/STSong-Light /SimSun ;
/STFangsong-Light /FangSong_GB2312 ;
/STHeiti-Regular /SimHei ;
/STKaiti-Regular /KaiTi_GB2312 ;
这个文件指明了TrueType字体的路径,并建立了字体的别名。如果需要繁体中文,可以根据上面的原理自己添加Mingliu等字体。
最后,编辑/usr/share/ghostscript/7.05/lib/CIDFnmap,在文件末尾加入一行:
(CIDFnmap.zh) .runlibfile
6.测试
cd /usr/share/ghostscript/7.05/examples/cjk
gv gscjk_ag.ps
如果能看到四种字体的汉字,说明ghostscript简体中文字体设置成功。
三、设置mozilla支持中文打印
编辑 mozilla安装目录里面的/defauts/pref 目录下的 unix.js 文件,找到相应的行改成如下内容,如果没有这些行,自己增加。
pref("print.postscript.nativecode.zh-TW", "gbk");
pref("print.postscript.nativefont.zh-TW", "SimSun-GBK_EUC-H");
pref("print.postscript.nativecode.zh-CN", "gbk");
pref("print.postscript.nativefont.zh-CN", "SimSun-GBK-EUC-H");
完成后,存盘,重新启动mozilla。
如果直接让mozilla输出到打印机,中文不能正常打印而是以方框显示。因此需要采用间接的方法,打印时,选择打印到文件 mozilla.ps,然后:
ps2ps mozilla.ps out.ps
lpr out.ps
这样就实现了mozilla的中文打印。
四、其他程序的中文打印
试验过gedit和starsuite6.0,均在安装cups并设置好打印机后,直接支持中文打印。
abiword的中文打印支持需另行设置,我没有测试,请参考最后附的参考文档。
其他的程序,如果直接打印不支持中文,可看看其是否有生成.ps文件的打印选项,然后尝试类似mozilla的方式进行打印。
基于qt的程序按上面的方法设置后似乎还不能支持中文打印,我测试过kedit,中文打印出来是乱码。
=================================
comsomer 寫到:
一、安装打印服务程序
Slackware 9.0 默认的打印服务程序是lpd,而现在更流行的是CUPS,设置也非常简单。可以到slackware下载的镜像站,在发行版本的 extra目录中下载,目前的版本是cups-1.1.18。用installpkg安装。
安装完毕后,会在/etc/rc.d/目录生成rc.cups文件,用root身份,运行 /etc/rc.d/rc.cups start ,即可启动cups打印服务。用浏览器访问 http://localhost:631/ 即可对cups和打印机进行设置,详情请看cups的文档。
添加打印机并成功打印出测试页之后,gedit和starsuite就直接能在我的HP LJ6L打印出中文。
做一些補充說明,一般 Slackware 預設是用 apsfilter ?碓O定印表機的,除非 apsfilter 無法驅動,或是有問題,不然 apsfilter 通常都可以運作良好。
而如果是使用 Slackware 9.1 的話,預設是採用 LPRng 系統,如果要換成 CUPS 的話,記得一定要先 remove 掉原?淼 LPRng 套件,再安裝 CUPS 套件,這樣才能順利使用 queue。
另外設置印表機與能否進行中文列印似乎?K無太大的相關性...
引言回覆:
2.下载freetype-1.3.1(后面的ttfm需要)
http://sourceforge.net/project/show...p?group_id=3157<br />
下载源码,自行编译安装,完成后运行 ldconfig 更新库文件索引
在 Slackware 9.0 以後都採用 freetype2 的版本,似乎沒必要再去安裝 freetype1.x 的版本,另外跟 ttfm 似乎也沒什麼關係吧??
引言回覆:
3. 下载ttfm
http://www.linuxeden.com/download/s....php?softid=650<br />
下载 ttfm-1.0-6.i386.rpm 和 gscjk.ttfm
安装:
rpm -ivh ttfm-1.0-6.i386.rpm --nodeps
cp gscjk.ttfm /usr/share/fonts/install/
因為 Slackware 9.0 用的是 freetype2,因此?K不需要再安裝 ttfm
但這樣就沒辦法自行製做出 CID fonts,我有將這些字型打包好,可在
ftp://cle.linux.org.tw/pub/CLE/d ... y_gscjk_ttfm.tar.gz 取得。
引言回覆:
完成后,存盘,重新启动mozilla。
如果直接让mozilla输出到打印机,中文不能正常打印而是以方框显示。因此需要采用间接的方法,打印时,选择打印到文件 mozilla.ps,然后:
ps2ps mozilla.ps out.ps
lpr out.ps
这样就实现了mozilla的中文打印。
@_@
這是錯誤,ps2ps 無法列印文件,現在是用 wprint ?磉M行文件的列印。
for 9.0: ftp://cle.linux.org.tw/pub/CLE/d ... int-2.04-i386-2.tgz
for 9.1: ftp://cle.linux.org.tw/pub/CLE/d ... int-2.04-i386-1.tgz
引言回覆:
四、其他程序的中文打印
试验过gedit和starsuite6.0,均在安装cups并设置好打印机后,直接支持中文打印。
abiword的中文打印支持需另行设置,我没有测试,请参考最后附的参考文档。
Slackware 9.0 的 Abiword 可參考 Jerry 兄的說明:http://www.linuxfab.com/indexForumData.php?FID=24&AGE=2&DETAILTHREAD=1148
Slackware 9.1 的 Abiword 中文列印問題,目前還找不到辦法...
引言回覆:
参考文档:《Slackware 8.1上的中文列印》
http://zope.slat.org/Members/Kea ... ack_cprint.stx/view
还有keanu兄的文章呢
在 zope.slat.org 的這篇被我弄?G了,有人要的話我再拿出?砗昧耍吘挂阉闶沁^時的文件... |
|