Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

Stuff appears to work, but it's obviously not well tested. I fully
expect several iterations before things are correct!! Make sure you
can back this out quickly.

This code supports UTF encoding. Directory dpost.utf is a version that
reads UTF encoded files. Directory dpost is DWB 3.3 source and should be
close to what you're currently using. Main source code changes were in
dpost.utf (files font.h, font.c, and dpost.c). Select either dpost or
dpost.utf in TARGETS in postscript.mk. Both build and install a program
called dpost!!

dpost.utf is more general and includes code that lets it read either
format. Only catch is troff must tell it (with x E UTF) that the file
is UTF and troff currently doesn't output encoding info, so you're
stuck with two post-processors!

Added common/rune.h and common/rune.c so code can be compiled elsewere.
Both files are only used by dpost. Remove RUNELIB in commmon/rune.h if
fullrune(), chartorune(), and runetochar() are available on your system.
You will also need to set READING in common/gen.h. It controls how dpost
(from dpost.utf) reads troff output. It should be UTFENCODING on Plan 9
and ONEBYTE elsewhere. If troff includes encoding hint (x E UTF) then
READING selects the default which sould be ONEBYTE.

Leave WRITING (in common/gen.h) set to ONEBYTE. It only controls dpost
output and dpost (right now) does not work 100% with UTF.enc. Fix should
be easy, but I don't have time now.

Other translators passed bytes through so only needed slightly modified
proglogues and a new encoding scheme (psencoding/UTF.enc). It works for
Latin1, but still needs a bit more attention. Prologue changes were easy
and only involved adding lines like,

        /show {show} bind def
        /stringwidth {stringwidth} bind def

Guarantees text procedures used in prologues aren't operators and can be
successfully redefined in UTF.enc. Unbinding means a small but probably
not noticeable speed penalty. You may not want to include those changes
on other system.

-------------
Major Changes
-------------

See the VERSION file.

-------------------
Tuning The Makefile
-------------------

Source files, man pages, and low level makefiles can all be updated
to reflect settings in postscript.mk in one simple step (described
later). In most cases you only need to edit file postscript.mk.

First save a copy of file postscript.mk. Then adjust the following
definitions in file postscript.mk:

  SYSTEM    best match for your version of Unix. Current choices for
            SYSTEM are:

                        SYSV    - System V
                        V9      - Ninth Edition
                        BSD4_2  - Berkeley (eg. Sun)

            Controls conditional compilation in a few places.

  GROUP     group assigned to all installed files

  OWNER     owner of everything that's installed

  BINDIR    dpost and picpack go here. All other programs go in POSTBIN.
            BINDIR must already exist - it will not be created during an
            install.

  HOSTDIR   hostresident font directory for PostScript printers. Only
            used in the font download program.

  FONTDIR   width table directory - for troff and most postprocessors

  MAN1DIR   command manpages. A command and its manpage are installed
            together - there's no easy way to avoid it. Setting MAN1DIR
            to an existing temporary directory (e.g. /tmp) means an
            install will work but manpages won't go anywhere permanent.
            MAN1DIR must already exist - it will not be created during
            an install.

  POSTBIN   where most PostScript support programs go. dpost and picpack
            the exceptions.

  POSTLIB   prologues and miscellaneous PostScript files. Primarily for
            the programs that live in POSTBIN.

  CFLGS     common compiler options - used to build CFLAGS in the low
            level makefiles. CLFGS and LDFLGS are best set on the make
            command line.

  LDFLGS    common link editor options - used to build LDFLAGS in the
            low level makefiles. LDFLGS and CFLGS are best set on the
            make command line.

  DKHOST    set it to TRUE to compile the DKHOST Datakit support code
            in postio. Temporarily resets SYSTEM to SYSV if DKHOST is
            TRUE and SYSTEM is BSD4_2. Ignored if SYSTEM is not SYSV
            or BSD4_2.

  DKSTREAMS enables streams based DKHOST support in postio when DKHOST
            is TRUE and SYSTEM is SYSV or BSD4_2. Choices are TRUE,
            FALSE, or a stream module name (e.g. dknetty or dkty). TRUE
            selects dknetty. Newer systems may expect dkty.

  ROUNDPAGE must only be set to TRUE or FALSE. TRUE means PostScript
            translators include code that maps clipping path dimensions
            into known paper sizes.

  TARGETS   the default list of what's built by make. Each target must
            be the name of a source directory. A target that names a
            non-existent source directory is ignored. Setting TARGETS
            on the make command line overrides the default list.

-------------------
Updating The Source
-------------------

Whenever file postscript.mk changes you should update source files,
man pages, and low level makefiles by typing,

        make -f postscript.mk changes

------------------------
More System Dependencies
------------------------

The package has been compiled and tested on System V and Ninth Edition
Unix Systems and on Sun workstations. Most differences are handled via
the SYSTEM definition in postscript.mk. Problems that remain are:

  SYSV - System V
    Use the native compiler if you're on an internal System V UTS
    machine.

  V9 - Ninth or Tenth Edition
    chown is in /etc and chgrp no longer exists - it's been folded into
    the chown command. You may be forced to build a simple chgrp shell
    script (put it in your bin) that calls chown. If you're not superuser
    set OWNER to your login name and GROUP to your group id.

  BSD4_2 - Sun Workstations
    Use the Bourne shell. chown is should be in /usr/etc. Add /usr/etc
    to your PATH and export PATH. If you're not superuser set OWNER to
    your login name and GROUP to your group id.

----------------------
Installing The Package
----------------------

To build (but not install) the default package (i.e. everything named by
TARGETS in postscript.mk) type,

        make -f postscript.mk all

To build and install the package type,

        make -f postscript.mk all install

After the package is installed use,

        make -f postscript.mk clobber

to delete binary files and compiled programs from the source directories.

To select part of the package define TARGETS on the command line. For
example,

        make -f postscript.mk TARGETS="dpost devpost" all install

builds and installs dpost and the PostScript font tables. Quotes hide
white space from the shell.