Linux 版 (精华区)
发信人: clx (楚留香), 信区: Unix
标 题: 如何列印中文
发信站: 紫 丁 香 (Sat Jun 27 10:55:19 1998), 转信
标题: 如何列印中文
作者: 伍永康, yorkwu@ms4.hinet.net
版本: 0.9(86-03-29)
本文介绍在Linux如何列印中文. 本文可以在网路上免费流传, 收录於BBS之精华区.
(可不通知作者, 但须保持著作资讯) 亦可商业转载, 但必须(1)保存著作资讯(2)事先
通知作者. 此外, 若有人想於自己的文件中引用, 也请先通知作者.
0. 前言:
在日常生活中,列印也是件重要的事. 然而, Linux的各distribution并不提供
中文列印功能,这对我们这些用中文的用户来说是不方便的.这就是本人写这篇
文件的动机.
PostScript是Adobe的商标
Windows 3.1, Windows 95是Microsoft Corporation的商标
1. 事前的准备:
在要准备装中文列印功能以前,请先确定您有列印的能力. 您要有印表机及印表
机连接埠. 另外, 中文印表软体也多是以PostScript或EPS格式输出, 所以您也
要有PostScript列印能力. 如果您比较有钱, 用的是PostScript印表机, 那恭
喜, 您可以跳过这一段, 直接跳到下一节. 不过大多数人都没有这样好的设备,
这时就要用别的东西帮助了. 有关基本的印表设定, 请看Printing HOWTO及
Printing Usage HOWTO.
在这里我简单讲一下如何让一般印表机具PostScript列印能力. 有两个东西是必
要的: ghostscript(gs)及aps-filter. 後者不是绝对必要, 但能大幅简化您的
工作. 如果您是用Slackware distribution, gs已在AP系列磁片中了, 您只要选
择装它就行了. 如果您的硬碟空间够大, 可以多装几个字型备用.
至於aps-filter,请自行搜寻aps-491.tgz这个档, 把它download下来. 然後解到
一个地方(如/usr/local/lib/aps), 照著它的指示去装就行了. 不过要注意的是
aps-filter依赖gs, 所以碰到gs不支援的印表机(如Windows GDI印表机), 它也是
爱莫能助了. 请确定一下自己的印表机不是GDI印表机.
装好aps後, 您可以试著印aps的一些范例档. 不过我们只对*.ps的档案有兴趣.
如果您能正确印出*.ps档案, 那就完成了基本准备工作, 喝杯茶, 准备下一步吧!
2. 正式开始:
我们用cnprint来列印. 这个cnprint已经发展一段时间了, 它的工作原里是读入
原始档及中文字型档後, 转换成PostScript格式印出. 虽然, 它还不支援TTF字型,
所以您还看不到如同Win31或Win95能印出那麽漂亮的东西, 但和倚天相比, 则毫
不逊色. 在2.6.0以後的版本, 还支援多国语言列印, 是个相当不错的程式.
首先先抓cnprint260.tar.gz,把它解开. 您会得到:
-rw-r--r-- 8382/6650 28213 Jan 26 12:55 1995 cnprint/cnprint.1
-rw-r--r-- 8382/6650 103902 Jan 26 12:39 1995 cnprint/cnprint.c
-rw-r--r-- 8382/6650 11649 Jan 26 12:40 1995 cnprint/cnprint.cmd
-rw-r--r-- 8382/6650 42609 Jan 26 12:39 1995 cnprint/cnprint.help
请先阅读cnprint.help, 是份英文的文件. 这份文件在您碰到问题时很有帮助.
即使您已经装过旧版的cnprint, 仍然需要看, 这版有不算太小的改变.
然後修改cnprint.cmd, 兹将本人的cnprint.cmd列於此, 供参考:
--------------------------------cnprint.cmd-----------------------------------
# File "cnprint.cmd" should be kept in the same directory where the fonts
# are kept. Put your system PS printing command (DOS: port name) and/or
# your default Big5/JIS/KSC/unicode HBF file name below. Leave one space
# after the ":". If you mainly deal with BIG5, Japanese, Korean or unicode
# files, change the default encoding. You can also change other default
# settings, such as paper size, paper margins, etc.
#
# ******************************************************************
# * CNPRINT.CMD For CNPRINT Versions 2.60/2.61 (DOS, VMS and UNIX) *
# ******************************************************************
# Copyright YIDAO CAI (~{2LR@5@~}), 1992-1995
# All Rights Reserved.
# Free for non-commercial and personal use only.
#
# Lines headed by # are comments
# Please leave ONE SPACE after the ":", e.g.
#
# 请注意, 在':'及设定值间留个空白...
#PS_PRINT_COMMAND: laser <-- YES, correct
#PS_PRINT_COMMAND:laser <-- NO, incorrect
#
# put PostScript print command (or port name in DOS, like LPT2:) bellow
# 这里是列印PostScript档时下的命令. 如果装了aps-filter,只要写lpr就好.
PS_PRINT_COMMAND: lpr
#
# 底下几个是不同内码时的中文字型档设定:
#
# put default GB font (HBF) name below (such as cnj24.hbf)
# GB(国标)码,大陆用的内码
DEFAULT_GB_FONT: cnf24.hbf
#
# put default BIG5 font (HBF) name below (such as cn5b24.hbf)
# BIG5(大五)码,台湾及香港用的内码
DEFAULT_BIG5FONT: cn5b24.hbf
#
# put default JIS (Japanese) font (HBF) name below (such as cnjb24.hbf)
# JIS码,日文内码
DEFAULT_JIS_FONT: cnjb24.hbf
#
# put default KSC font (HBF) name below (such as cnkb24.hbf)
# KSC码,韩文内码
DEFAULT_KSC_FONT: cnkb24.hbf
#
# put default UNICODE font (HBF) name below (such as cnub24.hbf)
DEFAULT_UTF_FONT: cnub24.hbf
#
# if you mainly print BIG5/Japanese/KSC/unicode files, put the default
# encoding below (GB, BIG5, JIS, KSC or UNICODE in upper case). The
# default "unicode" type is "utf8"
# 设定预定的内码. 由於我们最常用BIG-5中文码, 所以写BIG5. 您也可以设别的
# 然後在命令列再指定.
DEFAULT_ENCODING: BIG5
#
# if paper size used by your printer is not A (8.5x11), change the
# paper size below (width, length in inch)
# 基本上cnprint是给点阵印表机用的, 所以预设用letter size的纸. 如果您
# 要用喷墨或雷射, 请改成A4大小.
DEFAULT_PAPERSIZE: 8.5 11.
#
# put paper margins (Left/Right/Top/Bottom in mm, minimum 3mm) below,
# first for Portrait mode, then for Landscape mode
PAPER_MARGINS: 26.1 21.9 25.2 25.8 15.3 15.2 20. 22.
#
# put char sizes for Portrait mode and Landscape mode (in points, 1 inch
# = 72 points) and char space, line space (1=standard) below
SIZE_SPACE: 13.5 11.6 1. 1.
#
# put character width/height or height/width below. Change ONE value
# only, leave the other as 1.
WIDTH-HEIGHT: 1. 1.
#
# ******** You are advised NOT to make any change below ********
# ******** if you don't know what you are doing ********
#
# [Advanced users] you may specify/add/change the path of the temperal
# file generated by CNPRINT
TEMPFILE: CNPRINT.TMP
#
# [Advanced users] you may specify the device resolution (in dpi,
# default 300) it may (or may not) improve the print quality
DEVICERES: 300
#
# ******** ABSOLUTLY NO CHANGES BELOW ********
#
# The data base arrange the width of English character for each font
# from 32 to 160, with that of Courier as 10000.
Helvetica
DATA 4633 4633 5916 9266 9266 14816 11116 3700 5549 5549
DATA: 6483 9733 4633 9733 4633 4633 9266 9266 9266 9266
DATA: 9266 9266 9266 9266 9266 9266 4633 4633 9733 9733
DATA: 9733 9266 16916 11116 11116 12033 12033 11116 10183 12966
DATA: 12033 4633 8333 11116 9266 13883 12033 12966 11116 12966
DATA: 12033 11116 10183 12033 11116 15733 11116 11116 10183 4633
DATA: 4633 4633 7816 9266 3699 9266 9266 8333 9266 9266
DATA: 4633 9266 9266 3699 3699 8333 3700 13883 9266 9266
DATA: 9266 9266 5549 8333 4633 9266 8333 12033 8333 8333
DATA: 8333 5566 4333 5566 9733 4633 12033 9266 9266 9266
DATA: 9266 9266 9266 8333 9266 9266 9266 4633 4633 4633
DATA: 11116 11116 11116 14816 16666 9266 9266 9266 9266 9266
DATA: 8333 12966 12033 9266 9266 9266 10183 4633 9266
Helvetica-Bold
DATA: 4633 5549 7899 9266 9266 14816 12033 4633 5549 5549
DATA: 6483 9733 4633 9733 4633 4633 9266 9266 9266 9266
DATA: 9266 9266 9266 9266 9266 9266 5549 5549 9733 9733
DATA: 9733 10183 16249 12033 12033 12033 12033 11116 10183 12966
DATA: 12033 4633 9266 12033 10183 13883 12033 12966 11116 12966
DATA: 12033 11116 10183 12033 11116 15733 11116 11116 10183 5549
DATA: 4633 5549 9733 9266 4633 9266 10183 9266 10183 9266
DATA: 5549 10183 10183 4633 4633 9266 4633 14816 10183 10183
DATA: 10183 10183 6483 9266 5549 10183 9266 12966 9266 9266
DATA: 8333 6483 4666 6483 9733 4633 12033 10183 9266 9266
DATA: 9266 9266 9266 9266 9266 9266 9266 4633 4633 4633
DATA: 12033 12033 11116 14816 16666 10183 10183 10183 10183 10183
DATA: 9266 12966 12033 9266 9266 9266 10183 4633 9266
Times-Italic
DATA: 4166 5549 6999 8333 8333 13883 12966 5549 5549 5549
DATA: 8333 11249 4166 11250 4166 4633 8333 8333 8333 8333
DATA: 8333 8333 8333 8333 8333 8333 5549 5549 11249 11249
DATA: 11249 8333 15333 10183 10183 11116 12033 10183 10183 12033
DATA: 12033 5549 7399 11116 9266 13883 11116 12033 10183 12033
DATA: 10183 8333 9266 12033 10183 13883 10183 9266 9266 6483
DATA: 4633 6483 7033 8333 5549 8333 8333 7399 8333 7399
DATA: 4633 8333 8333 4633 4633 7399 4633 12033 8333 8333
DATA: 8333 8333 6483 6483 4633 8333 7399 11116 7399 7399
DATA: 6483 6666 4583 6666 9016 4166 11116 8333 7399 8333
DATA: 8333 8333 8333 7399 7399 7399 7399 4633 4633 4633
DATA: 10183 10183 10183 11116 14816 8333 8333 8333 8333 8333
DATA: 7399 12033 12033 8333 8333 8333 8333 4166 8333
Times-Roman
DATA: 4166 5549 6799 8333 8333 13883 12966 5549 5549 5549
DATA: 8333 9399 4166 9399 4166 4633 8333 8333 8333 8333
DATA: 8333 8333 8333 8333 8333 8333 4633 4633 9399 9399
DATA: 9399 7399 15349 12033 11116 11116 12033 10183 9266 12033
DATA: 12033 5549 6483 12033 10183 14816 12033 12033 9266 12033
DATA: 11116 9266 10183 12033 12033 15733 12033 12033 10183 5549
DATA: 4633 5549 7816 8333 5549 7399 8333 7399 8333 7399
DATA: 5549 8333 8333 4633 4633 8333 4633 12966 8333 8333
DATA: 8333 8333 5549 6483 4633 8333 8333 12033 8333 8333
DATA: 7399 8000 3333 8000 9016 4166 11116 8333 7399 7399
DATA: 7399 7399 7399 7399 7399 7399 7399 4633 4633 4633
DATA: 12033 12033 10183 11116 14816 8333 8333 8333 8333 8333
DATA: 8333 12033 12033 8333 8333 8333 8333 4166 7399
Times-Bold
DATA: 4166 5549 9250 8333 8333 16666 13883 5549 5549 5549
DATA: 8333 9499 4166 9500 4166 4633 8333 8333 8333 8333
DATA: 8333 8333 8333 8333 8333 8333 5549 5549 9499 9499
DATA: 9499 8333 15500 12033 11116 12033 12033 11116 10183 12966
DATA: 12966 6483 8333 12966 11116 15733 12033 12966 10183 12966
DATA: 12033 9266 11116 12033 12033 16666 12033 12033 11116 5549
DATA: 4633 5549 9683 8333 5549 8333 9266 7399 9266 7399
DATA: 5549 8333 9266 4633 5549 9266 4633 13883 9266 8333
DATA: 9266 9266 7399 6483 5549 9266 8333 12033 8333 8333
DATA: 7399 6566 3666 6566 8666 4166 12033 9266 7399 8333
DATA: 8333 8333 8333 7399 7399 7399 7399 4633 4633 4633
DATA: 12033 12033 11116 12033 16666 8333 8333 8333 9266 9266
DATA: 8333 12966 12033 8333 8333 8333 9266 4166 8333
Palatino-Italic
DATA: 4166 5549 8333 8333 8333 14816 12966 4633 5549 5549
DATA: 6483 10099 4166 10100 4166 4933 8333 8333 8333 8333
DATA: 8333 8333 8333 8333 8333 8333 4166 4166 10099 10099
DATA: 10099 8333 12449 12033 10183 11116 12966 10183 9266 12033
DATA: 12966 5549 5549 11116 9266 15733 12966 12966 10183 12966
DATA: 11116 9266 10183 12966 12033 15733 12033 11116 11116 5549
DATA: 10099 5549 10099 8333 4633 7399 7716 6783 8333 6483
DATA: 4633 8333 8333 4633 4633 7399 4633 12966 9266 7399
DATA: 8333 7716 6483 6483 5549 9266 8333 12033 8333 8333
DATA: 7399 5549 10099 5550 10099 4166 11116 9266 6483 7399
DATA: 7399 7399 7399 6783 6483 6483 6483 4633 4633 4633
DATA: 12@033 12033 10183 10633 15683 7399 7399 7399 9266 9266
DATA: 8333 12966 12966 8333 8333 8333 8333 4166 7399
Palatino-Bold
DATA: 4166 4633 6699 8333 8333 14816 13883 4633 5549 5549
DATA: 7399 10099 4166 10100 4166 4933 8333 8333 8333 8333
DATA: 8333 8333 8333 8333 8333 8333 4166 4166 10099 10099
DATA: 10099 7399 12449 12966 11116 12033 13883 10183 9266 13883
DATA: 13883 6483 6483 12966 10183 16666 13883 13883 10183 13883
DATA: 12033 10183 11116 12966 12966 16666 11116 11116 11116 5549
DATA: 10099 5549 10099 8333 4633 8333 10183 7399 10183 8333
DATA: 6483 9266 10183 5550 5549 10183 5549 14816 10183 9266
DATA: 10183 10183 6483 7399 5549 10183 9266 13883 8333 9266
DATA: 8333 5166 10099 5166 10099 4166 12033 10183 8333 8333
DATA: 8333 8333 8333 7399 8333 8333 8333 5549 5549 5549
DATA: 12966 12966 10183 12966 16666 9266 9266 9266 10183 10183
DATA: 9266 13883 12966 8333 8333 8333 10183 4166 8333
AvantGarde-Book
DATA: 4616 4916 5150 9233 9233 12916 12616 5850 6149 6149
DATA: 7083 10099 4616 10100 4616 7283 9233 9233 9233 9233
DATA: 9233 9233 9233 9233 9233 9233 4616 4616 10099 10099
DATA: 10099 9849 14449 12333 9566 13549 12399 8933 8083 14533
DATA: 11383 3766 8033 9849 7700 15316 12333 14483 9866 14516
DATA: 10116 8300 7099 10916 11699 16000 10149 9866 8000 5850
DATA: 10083 5849 10099 8333 5850 11383 11366 10783 11416 10833
DATA: 5233 11216 10166 3333 3383 8366 3333 15633 10166 10916
DATA: 11366 11366 5016 6466 5649 10133 9233 13850 8000 8933
DATA: 7083 5849 11199 5849 10099 4616 13549 10133 10833 11383
DATA: 11383 11383 11383 10783 10833 10833 10833 3333 3333 3333
DATA: 12333 12333 8933 19283 16533 10916 10916 10916 10133 10133
DATA: 8933 14483 10916 9233 9233 9233 9233 4616 11383
AvantGarde-BookOblique
DATA: 4616 4916 5150 9233 9233 12916 12616 5850 6149 6149
DATA: 7083 10099 4616 10100 4616 7283 9233 9233 9233 9233
DATA: 9233 9233 9233 9233 9233 9233 4616 4616 10099 10099
DATA: 10099 9849 14449 12333 9566 13549 12399 8933 8083 14533
DATA: 11383 3766 8033 9849 7700 15316 12333 14483 9866 14516
DATA: 10116 8300 7099 10916 11699 16000 10149 9866 8000 5850
DATA: 10083 5849 10099 8333 5850 11383 11366 10783 11416 10833
DATA: 5233 11216 10166 3333 3383 8366 3333 15633 10166 10916
DATA: 11366 11366 5016 6466 5649 10133 9233 13850 8000 8933
DATA: 7083 5849 11199 5849 10099 4616 13549 10133 10833 11383
DATA: 11383 11383 11383 10783 10833 10833 10833 3333 3333 3333
DATA: 1@333 12333 8933 19283 16533 10916 10916 10916 10133 10133
DATA: 8933 14483 10916 9233 9233 9233 9233 4616 11383
AvantGarde-Demi
DATA: 4666 4666 6000 9333 9333 14333 11333 4666 6333 6333
DATA: 7333 10000 4666 10000 4666 7666 9333 9333 9333 9333
DATA: 9333 9333 9333 9333 9333 9333 4666 4666 9999 9999
DATA: 10000 9333 12333 12333 9666 12999 11666 8666 8000 13999
DATA: 11333 4666 8000 10333 7333 15000 12333 13999 9333 13999
DATA: 9666 8666 6999 10666 11666 15000 11333 10333 8333 5333
DATA: 10666 5333 10000 8333 4666 11000 11000 10666 11000 10666
DATA: 4666 10999 10000 4000 4333 9666 4000 15666 9999 10666
DATA: 10999 10999 5333 7333 4999 9999 9333 13333 9333 9666
DATA: 7666 5666 10000 5666 9999 4666 12999 9999 10666 11000
DATA: 10999 10999 10999 10666 10666 10666 10666 4000 4000 4000
DATA: 12333 12333 8666 18000 15000 10666 10666 10666 9999 9999
DATA: 9666 13999 10666 9333 9333 9333 9999 4666 11000
AvantGarde-DemiOblique
DATA: 4666 4666 6000 9333 9333 14333 11333 4666 6333 6333
DATA: 7333 10000 4666 10000 4666 7666 9333 9333 9333 9333
DATA: 9333 9333 9333 9333 9333 9333 4666 4666 9999 9999
DATA: 10000 9333 12333 12333 9666 12999 11666 8666 8000 13999
DATA: 11333 4666 8000 10333 7333 15000 12333 13999 9333 13999
DATA: 9666 8666 6999 10666 11666 15000 11333 10333 8333 5333
DATA: 10666 5333 10000 8333 4666 11000 11000 10666 11000 10666
DATA: 4666 10999 10000 4000 4333 9666 4000 15666 9999 10666
DATA: 10999 10999 5333 7333 4999 9999 9333 13333 9333 9666
DATA: 7666 5666 10000 5666 9999 4666 12999 9999 10666 11000
DATA: 10999 10999 10999 10666 10666 10666 10666 4000 4000 4000
DATA: 12333 12333 8666 18000 15000 10666 10666 10666 9999 9999
DATA: 9666 13999 10666 9333 9333 9333 9999 4666 11000
--------------------------end of cnprint.cmd--------------------------------
接下来编译cnprint.c. 不晓得为什麽, 我用-O2会不太正常, 所以我没有作最
佳化. 您要不要用就看您了.
gcc -o cnprint cnprint.c
这在我的486DX上花了两三分钟. 请耐心等.
编译完成了, 可以开始印了吧! 且慢! 别忘了中文字型还没装哩! 现在在此先解释
一下中文hbf字形的观念:
hbf(Hanzi Bitmap Font,汉字点阵字型)其实只是个字型的描述档, 它本身并没有
任何字型资料, 所以还需要字型资料档. 如果您装过yact想必对这有体认吧!
您可以去
ftp://ftp.edu.tw/Chinese/ifcss/software/fonts/big5/hbf
去抓. 在那里有.hbf的档就是HBF档, 其它的有些是字型资料档. 也可以看size
判断, HBF档一般不会超过几K, 而资料档则至少几百K. 至於对应关系, 可以看
看HBF档的内容就晓得了.
本文以用倚天为范例,当然将来可能会改变...
spcfont.24, stdfont.24, spcfsupp.24: 倚天中文的字型档, 如果您有原版倚天
就能copy. 其它人请抓taipei或国乔字.
etm24.hbf: 做一个link到cn5b24.hbf
将这些字型档copy到一个目录(本人是/usr/local/lib/hbf),还有cnprint.cmd也
拷到那, 接著export HBFPATH=/usr/local/lib/hbf, 就可以试试了.
cnprint chitest1.txt
它会列出一个menu, 现在先不管它, 按Enter, 等印表机出纸. 怎麽样? 成功了吧!
这样就算大功告成了.
现在可以结束了. 当然, 如果您像笔者一样, 还想再多玩, 还可以试试其他语言.
本人现装了以下字型:
-rw-r--r-- 1 root root 487296 Mar 25 13:42 cclib.f24
-rw-r--r-- 2 root root 2586 Mar 25 13:39 ccs24f.hbf
-rw-r--r-- 1 root root 60912 Mar 25 14:08 ccsym.24
-rw-r--r-- 3 root root 1811 Dec 15 13:32 cn5b24.hbf
-rw-r--r-- 2 root root 2007 Sep 21 1994 cn5k48.hbf
-rw-r--r-- 2 root root 2586 Mar 25 13:39 cnf24.hbf
-rw-r--r-- 2 root root 1750 Sep 27 1994 cnjb24.hbf
-rw-r--r-- 2 root root 1531 Sep 27 1994 cnkb24.hbf
-rw-r--r-- 2 root root 7155 Aug 2 1996 cnub24.hbf
-rw-r--r-- 1 root root 592128 Jul 4 1994 hanglm24.bin
-rw-r--r-- 2 root root 1531 Sep 27 1994 hanglm24.hbf
-rw-r--r-- 1 root root 495144 Jul 4 1994 jiskan24.bin
-rw-r--r-- 2 root root 1750 Sep 27 1994 jiskan24.hbf
-rw-r--r-- 1 root root 3876768 Jul 28 1994 ntu_kai48.bin
-rw-r--r-- 2 root root 2007 Sep 21 1994 ntu_kai48.hbf
lrwxrwxrwx 1 root root 18 Mar 25 10:22 spcfont.24
lrwxrwxrwx 1 root root 19 Mar 25 10:22 spcfsupp.24
lrwxrwxrwx 1 root root 18 Mar 25 10:22 stdfont.24
-rw-r--r-- 1 root root 1795608 Aug 2 1996 uni24.bin
-rw-r--r-- 2 root root 7155 Aug 2 1996 uni24.hbf
HBF 对应字型档 说明
------------------- ----------------------- --------------------
cnf24.hbf, cclib.f24,ccsym.24 国标码繁体字型, 本人比较
ccs24f.hbf 看不习惯简体.
cn5b24.hbf, spcfont.24,spcfsupp.24, BIG-5码, 倚天字
et24m.hbf stdfont.24
ntu_kai48.hbf, ntu_kai48.bin BIG-5码, 台大字型, 我觉得
cn5k24.hbf 其实装它就好了.
cnjb24.hbf, jiskan24.bin 日文jis字型. 可用於JIS,
jiskan24.hbf Shift-JIS(DOS)及EUC(UNIX)码
cnkb24.hbf, hanglm24.bin 韩文ksc字型
hanglm24.hbf
cnuk24.hbf, uni24.bin UniCode字型
uni24.hbf
至少我试过BIG-5, SJIS及EUC码都很成功.
cnprint的man page说其作者的下一版可能支援TTF, 我们期待吧!
3. 参考资料
1) Linux 中文应用手册第一版, 王佑中著, 第三波发行
--
o=|====> yorkwu@ms4.hinet.net
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.244.16]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:212.934毫秒