摘要:
1、 如何打印中文 postscript 文件?
2、我能打印中文 postscript 文件, 可是还是不能从 xxx 程序中打印中文!?
3、我是如何打印中文的
八、中文打印
在 linux 下打印是件麻烦事, 中文打印由甚. 为什么哪? 将屏幕上看到的文字印到纸上, 要经过两步:
1)应用程序生成postscript 文件;
2)将该文件送到打印机 (直接或通过 ghostscript). 让我们先从第二步看起.
1、 如何打印中文 postscript 文件?
最大的问题是一般打印机不支持或不带中文字体. 一般我们使用 ghostscript, 但ghostscript 对中文字体的支持也不是很完美. 大多数情况下需要打补丁. 目前有以下几种解决方案:
1)直接 patch ghostscript 使其支持 truetype 字体. 可参看该网站. 这是目前最为简单的方法. 缺点是需要 6.0 版的 ghostscript, 该版目前还没有以GPL施放, 任何 linux 都不会预装, 需要自己下载安装.
2)使用 CID 字体. CID 是 adobe 为亚洲文字设计的字体, 打破了 type1 字体只能容纳 256 个字符的限制. ghostscript ( V5.5?) 直接支持 CID 字体, 无需补丁. 可参看同一网站如何设置. 本来这应该是最好的方案, 因为不要打补丁.可惜 CID 字体太少了.
3)Patch ghostscript 使其支持 VFlib, 通过 VFlib 支持 truetype 字体. 优点是支持老的 ghostscript 版本 (中文有 for 5.5 的 patch, 日文甚至有 for 4.x的), 支持字体变形等. 缺点是需要额外安装 VFlib. Turbolinux 6.0 以上及CLE v0.9p1以上均使用了该方法. 可以到它们相应的软件包中找补丁.
4)陈向阳的 gbpfb 包, 将中文 truetype 字体转换成 type1 pfb 字体, 由于type1字体只能容纳 256 个字符的限制, 一个 truetype 字体将会生成 30-40个 pfb 字体, 再由一个前端文件控制. 当年这是我们中国人唯一知到的打印中文 postscript文件的方法. 我还记得用此法第一次从 netscape 打印出中文的惊喜. Turbolinux4.x 以下及蓝点等中文发布均使用了该方法. 但现在与前述的 1-3 法相比, 显得有些简陋, 存在一些难以克服的毛病, 已经越来越少的被使用了. 如果您想要可以在上面提到的几个中文 linux 中找到.
5)在 postscript 文件中内嵌中文点阵字体. 优点是连 ghostscript 都不需要了,直接送到任何支持 postscript 的打印机上就可打印. 缺点是生成的文件庞大,打印出的质量欠佳.
最后, 使用 1-4 法都需要通过 ghostscript 将文件发往打印机. 有两种用法:
直接使用, 如:
gs -q -dBATCH -sDEVICE=printer-type -sOutputFile=lpr -
或设置 filter 使 lpr 自动调用 ghostscript.
2、我能打印中文 postscript 文件, 可是还是不能从 xxx 程序中打印中文!?
这就需要我们看看打印过程的第一步, 即应用程序生成postscript 文件. 目前有多少 linux 下的程序能生成支持中文的 postscript 文件? 少只又少, 真正不需要任何补丁就能 work 的我知道的有三个: netscape/mozilla/abiword(=0.12).
主要问题是很少有程序能正确处理中文 font. 在 UNIX/LINUX 世界没有统一的打印API, 任何程序想打印, 必须自己写 code 生成 postscript 文件, 很难想像所有程序员都原意并有能力考虑中文 postscript 字体问题. 现在 gnome-print 和 QT printer class 都是试图产生一个公用 API 以便应用程序不必自己处理生成 postscript的问题. 可惜二者都处于起步阶段, 仅仅聚焦于 type1 字体, 还没顾的上考虑中文的问题. 也就是说目前所有 GNOME/KDE 应用程序, 只要使用这两个 API, 都不能生成正确的中文 postscript 文件, 不能印出中文字. 台湾有人(见CLE的QT包)写了 QT printer 的patch, 但还不是很完善; 没听说有 gnome-print 的中文 patch.
3、我是如何打印中文的
我用的是ghostscript-6.0-1.i386.rpm和gbpfb-1.1-2.i386.rpm来进行中文打印。想要该软件的人可再http://www.linuxaid.com.cn/engineer/hubertzou/获得。
需要提醒的是,要先安装ghostscript-6.0-1.i386.rpm,用qs -help测试一下后再安装gbpfb-1.1-2.i386.rpm.
再netscape或mozilla中的print command中把lpr改为ns2cps - | lpr
这样,就可以用netscape来打印中文html和中文txt文件了。
至于其它的方法,我没有试过,但为了提供尽量多的方法,所以也提供给大家。