在打印时您可能会遇到各种情况
一些较新的打印机直接支持 ISO-8859-2 代码布局。其中包括
\033(@N\033(s0p12h0s0b4099T
其中 \033
是 Escape
字符的八进制代码。在下一节中描述了一种使用 /etc/printcap
文件调整打印机以按此布局打印的方法。
如果打印机支持其他带有我们字母的代码布局,如果以适当的方式调整 /etc/printcap
文件,我们仍然可以使用它打印 ISO-8859-2 布局的文本。
我们将以爱普生品牌打印机为例解释该过程,该打印机在瑞典字母表的位置上具有 YUSCII 布局的字符。
lp|ascii|epson|Epson LQ-850:\
:lp=/dev/lp1:\
:sd=/usr/spool/lpd/epson:\
:lf=/usr/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
jus|Epson LQ-850 sa znakovima JUS I.B1.002:\
:lp=/dev/null:\
:sd=/usr/spool/lpd/jus:\
:if=/usr/spool/lpd/jus_filter:\
:lf=/usr/spool/lpd/ERRORLOG:\
:mx#0:\
:sh
latin2|text|Epson LQ-850 sa znakovima po ISO Latin 2:\
:lp=/dev/null:\
:sd=/usr/spool/lpd/latin2:\
:if=/usr/spool/lpd/latin2_filter:\
:lf=/usr/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
有三个打印队列。第一个是美国(ASCII)字符选择。第二个使用 /var/spool/lpd/jus_epson
#!/bin/sh
/usr/spool/lpd/jus_epson | lpr -Pascii
需要通过过滤器 /var/spool/lpd/jus_epson
过滤文件,并将其放置在第一个打印队列中。过滤器 jus_epson
除了选择瑞典代码布局、将文件从输入复制到输出并在最后再次选择美国布局之外,什么也不做。这是程序中唯一依赖于打印机类型的部分。
#!/bin/sh
# Stampanje dokumenta kodiranih po JUS I.B1.002 na stampac Epson LQ
#
# Biramo srpski (svedski) raspored
/bin/echo "\033R\005\c"
# Ispisujemo dokument
cat
# Biramo ASCII raspored
/bin/echo "\033R\000\c"
第三个队列(queue)是第二个队列的修改版。首先,文档从 Latin 2 转换为 JUS 代码布局,然后使用先前描述的过滤器在开头和结尾添加打印机所需的代码,最后将文件发送到第一个打印队列。
#!/bin/sh
/usr/local/bin/recode --force latin2:yu | \
/usr/spool/lpd/jus_epson | lpr -Pascii
在这里,我们假设我们在 /usr/local/bin
目录中拥有 recode
程序。为此,您必须在 /usr/spool/lpd
(或 /var/spool/lpd
)目录中创建子目录 /usr/spool/lpd/epson, /usr/spool/lpd/jus
和 /usr/spool/lpd/latin2
。
打印应该很容易
-Pepson
或 -Pascii
,文件将作为 ASCII 打印lpr <文件>
-Pjus
,文件将作为 JUS I.B1.002 布局的文档打印lpr -Pjus <文件>
-Platin2
或 -Ptext
,文件将以 ISO-8859-2 布局打印lpr -Platin2 <文件>
如果您使用支持 ISO-8859-2 布局的 PostScript 打印机过滤器之一,则可以轻松打印文件。例如,此类程序有 a2ps
和 GNU enscript
。后者支持 ISO-8859-2 布局,而对前者的支持正在开发中。
Red Hat 发行版的 Enscript 可以在 http://rufus.w3.org/linux/RPM “仓库” RPM 包中找到。
如果您没有安装 GNU enscript,您可以按照程序随附的说明进行安装。除此之外,您还需要一些 Type 1
格式的字体,其中包含我们的字母。一个不错的选择是 IBM Courier,它与 X Windows 系统或 ghostscript
程序一起分发。如果字体存在,但您不知道它的确切位置,您可以使用以下命令找到它
find / -name cour.pf[ab]
在个人 (~/.enscriptrc
) 或系统配置文件 (/usr/local/etc/enscript.cfg
或 /usr/loca/etc/enscriptsite.cfg
) 中,添加字体文件的路径。此外,GNU enscript 要求每个字体目录中都有一个 font.map
文件,其中包含字体和字体所在文件之间的映射 - 类似于 fonts.dir
。您可以使用命令 mkafmmap
创建 font.map
文件。enscriptsite.cfg
配置文件的示例
...
# Gde su PostScript fontovi?
AFMPath: /usr/lib/X11/fonts/Type1:/usr/local/lib/ghostscript/fonts
...
# Podrazumevani nacin kodiranja:
DefaultEncoding: latin2
...
# Podrazumevani format papira:
DefaultMedia: A4
...
# lpd bira red za stampanje prekidacem -P...
QueueParam: -P
...
# Za stampanje koristimo naredbu lpr, a ne lp
Spooler: lp
设置完所有内容后,只需使用命令将文件发送到打印机enscript <文件>