                            P S F  (v3)

   PSF is a postscript print filter system designed to give reasonable
   control over text output to a postscript printer. If desired, psf can
   be installed as a filter for the lp/lpsched or lpr/lpd spooling systems.

   Printed output may be configured for:

		o  1-up, 2-up or 4-up on a page, landscape/portrait
		o  fonts/point size
		o  double sided printing
		o  pages scaled by row and column count
		o  lp banner page printing
		o  reverse order printing
		o  languages other than English
		o  optional ISO Latin1 character encoding
		o  left, right, top, bottom margin sizes
		o  line clipping or left/right justified line wrap
		o  page usage accounting
		o  printing to a pipe for multiple filtering in a spooler
		   or for printing to an Apple network printer (via papif?)

   If the printer normally stacks output paper "face up", psf
   automatically reverses the order of the printed pages to ensure
   manual reordering is not needed.

   Additional routines are provided to print nroff'ed documents, man
   pages, and mail boxes.  (troff is NOT supported: use psroff or thack)

   Printer definitions for a number of printers are user-selectable
   during installation. Unknown printers can be manually configured or
   the "simple installation" process described below can be used. By
   using "accurate" printer descriptions, psf can do quite a good job of
   page scaling, rotation and double sided printing.

   If lp/lpsched is the print spooler, various formatting options may
   be selected with the -o"<opt>" feature of lp.  
   
   If lpr/lpd is the print spooler, then multiple 'logical printers' can
   be created such that each printer has an associated set of print
   options (See Install.lpd for details).  A number of (hopefully)
   useful printer configurations are created during "make install".

   As part of the spooler system, psf filters will not re-process
   files already in postscript format (unless the -z option is used).

   The installation process is defined in the various "Install.*" files.
   General installation information for SysV r3 using lp/lpsched
   and BSD-type systems using lpr/lpd are described in Install.unix.
   Installation for SysV r4 may different: you will have to adapt
   the installation process for such systems.
  
	Install.unix	installation guide
	Install.lpd	additional information for use with lpr/lpd
	Install.def	how to create a printer definition for a
			printer not know to psf.
	Install.dos	installation notes for MSDOS

   Installed binaries and scripts should give usage help information
   if they are executed without argument or with a "-":
   
   	psfnroff -
	Usage:  psfnroff [nroff options] doc.nroff doc.nroff ...
	  e.g.  psfnroff -ms document.ms

   This version of psf currently was developed to run under Interactive
   Unix with lp/lpsched or lpr/lpd as the spooling system. It also runs
   on various other versions of Unix as well as MSDOS.

SIMPLE INSTALLATION
^^^^^^^^^^^^^^^^^^^
   If it is too much trouble to read the Makefile and various
   Install.* files, a quick way to play with psf is to assume
   all standard defaults and:

		make psf

   Psf will generate help with:
   
		psf -
   
   Psf can be (probably) immediately used in a simple fashion.
   This assumes that the default printer is an NEC LC890 - which is
   a reasonable approximation to many other printers.  Psf can then 
   be used with:

		psf this.file  | lp

   If the left or right ends of lines, the top of the first line, or the
   bottom of the last line on a page are clipped, then try:

   		psf -M1,1,1,1,c this.file | lp

CTL/D PROCESSING
^^^^^^^^^^^^^^^^
   By default, the psf system does not generate a ctl/d at the end
   of a print job if psf is used from the command line or within
   a shell script.  A ctl/d is generated by psffilter (for lpsched)
   or by psflpd (for lpd) spooler usage.
   
   If psf should generate a ctl/d in all cases, this may be set up
   in the Makefile.

EUROPEAN LANGUAGES and PAPER SIZES
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ISO Latin1 font encoding is be invoked automatically by
   use of the -I option.  Alternatively, the ISO Latin1 encoding
   may be set as a compile-time option in the Makefile.  This
   feature may not be honoured by all (possibly old) postscript
   printers.

   If ISO Latin1 encoding is insufficient, complete control over
   character encoding is provided in an external file. An example
   Scandinavian font setup is provided in file "language.PSF". This is
   NOT a working example: it must be modified for real use. Any feedback
   and/or suggestions for modifications regarding the use of non-English
   languages would be appreciated.

   Documentation for this feature is minimal: some postscript knowledge
   is assumed! Refer to the Blue Book, Postscript Language Tutorial and
   Cookbook, page 111 (Program 18, Making small changes to encoding
   vectors). If Interactive Unix is used (and probably AT&T SysV 3.2),
   refer to loadfont(1) and ttymap(1) as possible guides for character
   translations.

   To use this feature, edit file "language.PSF" to reflect any font
   encoding and character translations needed for the target language.
   These lines are identified by "%%font", "%%translate" and "% ENCODE".

   Append this edited file to the end of "psfprint.def":

	   cat psfprint.def language.PSF > psfprint.new

   Test the printer.new file with some text that requires the use
   of the modified fonts:
   
           psf -u psfprint.new text.fil | lpr

   The "psfprint.new" now become the psfprint.def file for use with
   the new language description. Copy it to the destination location as
   set up in the Makefile.

   If multiple character set translations are necessary, such as
   IBM-8bit or DEC-8bit, then multiple versions of the psfprint.def
   file may be created with the appropriate translations.  The
   correct version may be selected with the "-u" option.
   E.G.  "-u ibm",  "-u dec".
   
   Only psf honours the font extensions correctly. If proper support is
   needed for banner printing, the source for psfbanner.c must be modified.
   Other sources are not concerned with language translation.

   The various scripts (psfnroff, psfman, psfmbox) have not been used with
   European paper sizes. If there are problems with page layout, you may
   have to adjust the "-p nn" point size, "-l nn" line-count option,
   or the "-r nn" remove-lines option passed to psfbs.

   If the "psfbanner" routine is used to print pretty printer banner
   pages, it (hopefully) should automatically adjust to the European
   sizes if it is run as part of the printer scripts.


DOUBLE SIDED PRINTING
^^^^^^^^^^^^^^^^^^^^^
   DOUBLE SIDED PRINTING IS NOT RECOMMEDED UNLESS THE PRINTER
   IS SPECIFICALLY DESIGNED FOR TO ALLOW DOUBLE SIDE PRINTING.

   Double sided printing is more convenient on printers with two paper
   trays. If two paper trays are available, then psf could be compiled
   with "-DHOPPER" (see the Makefile).  Double sided printing may be
   done as part of the lp spooler system by passing the "-d" option. Psf
   internally calls psfdoub to print double sided. This assumes that the
   printer has at least two paper hoppers.

   E.g.:

	lp -o"-d" document.file

   If psf was not compiled with "-DHOPPER", then double sided printing
   is done as described in psfdoub.1.  
   
   This feature should not be used unless the paper tray is essentially
   reserved for double sided printing.

CREDITS
^^^^^^^
   The spooler code to read printer-generated responses and echoes from
   the printer was developed  by  Paul Eggert's (eggert@winsun.com).

   The ISO Latin1 Encoding postscript code was developed by Magnus Hammerin 
   and modified for usage with psf by Leif Hedstrom (leif@ifm.liu.se)

FTP
^^^
   The current version of psf may be obtained by ftp from the
   University of Calgary:
   
	host:      ftp.cpsc.ucalgary.ca, cpsc.ucalgary.ca or 136.159.2.1
	login:     anonymous
	password:  is your mail address, by convention
	files:     pub/projects/psf/psf3.6.tar.Z

 ------------------------------------------
   Tony Field: tony@ajfcal.cuc.ab.ca

