home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-02-22 | 45.4 KB | 1,253 lines |
- Copyright (C) 1992 Aladdin Enterprises. All rights reserved.
-
- This file is part of Ghostscript.
-
- Ghostscript is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
- to anyone for the consequences of using it or for whether it serves any
- particular purpose or works at all, unless he says so in writing. Refer
- to the Ghostscript General Public License for full details.
-
- Everyone is granted permission to copy, modify and redistribute
- Ghostscript, but only under the conditions described in the Ghostscript
- General Public License. A copy of this license is supposed to have been
- given to you along with Ghostscript so you can know your rights and
- responsibilities. It should be in a file named COPYING. Among other
- things, the copyright notice and this notice must be preserved on all
- copies.
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- This file, history.doc, describes the changes in very old releases of
- Ghostscript. For more recent changes, see the NEWS file.
-
- For an overview of Ghostscript and a list of the documentation files, see
- README.
-
- Version 2.3 (8/28/91)
- ===========
-
- This is a minor release to fix two bugs and add the PaintJet driver, which
- didn't make it into 2.2.
-
- Utilities
- ---------
-
- Changes the pstoppm utility so it counts pages correctly even in the
- presence of arbitrary saves and restores.
-
- Drivers
- -------
-
- Adds a new, "supported" PaintJet driver.
-
- Changes the Epson driver to use ESC+D rather than ESC+\ for horizontal
- positioning, since many printers don't support the latter.
-
- Adds horizontal double-density (two-pass) printing to the Epson driver, so
- it can do 240 x 60 and 360 x 180 densities. (Vertical double density is
- not supported yet.)
-
- Version 2.2 (6/1/91)
- ===========
-
- The purpose of this release is to add save/restore, and a few
- miscellaneous Level 2 P*stScr*pt features such as undef. It also includes
- major improvements in graphics quality and in handling of high-resolution
- printers.
-
- Procedures
- ----------
-
- Changes the version numbering to M.mpp rather than M.m.p, so that
- `version' can be a real number for those programs that insist on it.
-
- Renames ghost.ps as gs_init.ps, gfonts.ps as gs_fonts.ps, and statusd.ps
- as gs_statd.ps. The initialization files now all are named gs_*.ps.
-
- Renames gdevs.{c,h,tl} as gconfig.{c,h,tl}.
-
- Changes the relevant makefiles and command files so that a single build
- can contain several drivers that share code, e.g., the Epson driver and
- the DeskJet driver.
-
- Changes gs_init.ps so it relies on an external gconfig.ps file rather than
- making a specific test for the presence of Level 2 features.
-
- Adds an entry for uglyr.gsf to the makefile.
-
- Removes the distinction between CCA and CCNA, since most of the files now
- contain constructs that require non-ANSI compilation on MS-DOS platforms.
-
- Adds a `man' page for the ansi2knr utility.
-
- Changes the documentation (use.doc) to show how to use -sDEVICE=<device>,
- or the selectdevice procedure, to select devices by name.
-
- Adds DEVICE_DEVS to the makefiles (analogous to DEVICES and DEVICE_OBJS).
- This finally makes the make procedure fully automatic.
-
- Adds the name of the initialization file (gs_init.ps) as a
- platform-specific makefile parameter, GS_INIT.
-
- Removes the test program gt.{c,tr} from the fileset, since it is not
- useful to users.
-
- Moves the Symbol encoding vector to a separate file (symbol_e.ps), from
- which it is loaded when first used.
-
- Changes the error handler so it can handle errors that occur while reading
- the initialization files.
-
- Extends ansi2knr so it can handle `void' and `...' in parameter lists.
-
- Adds quit.ps to the set of installed files.
-
- MS-DOS-specific changes
- - - - - - - - - - - - -
-
- Adds the VGA and BGI drivers to the standard MS-DOS configuration, and
- makes VGA the default.
-
- Adds a `+' and a newline at the end of gs.tr, to avoid problems with file
- transfer programs or editors that add a newline at the end of files.
-
- Changes the name of msdos.mak to turboc.mak, and creates a new tbcplus.mak
- makefile for use with Turbo C++ and Borland C++.
-
- Changes the extension of the loader response files from .tl to .tr.
-
- Changes the default search path from c:/ghost and c:/ghost/fonts to c:/gs
- and c:/gs/fonts.
-
- Changes the directory separator from `|' back to ';', since it appears
- that DOS can handle a ; in a command line if it is prefixed with \.
-
- Unix-specific changes
- - - - - - - - - - - -
-
- Changes the uses of install in unixtail.mak so they only install a single
- file at a time, which is all that the standard Unix install allows.
-
- Removes the duplicate files (README/readme, LICENSE/license,
- COPYING/copying, Fontmap/fontmap).
-
- Changes the ld flags from LDPLAT to LDFLAGS.
-
- Adds XCFLAGS and XLDFLAGS. These are concatenated with CFLAGS and LDFLAGS
- respectively. The intention is that they be set from the `make' command
- line if desired.
-
- VMS-specific changes
- - - - - - - - - - -
-
- Repairs the omission of ZPACKED from the VMS build lists.
-
- Drivers
- -------
-
- Fixes bugs:
- - The SunView driver produced semi-garbage on little-endian
- platforms (Sun-386i) because it didn't swap the bit order.
- - The X driver would dump core if it couldn't open the display and
- the DISPLAY environment variable wasn't set.
- - The X driver relied on white = 0, black = ones in a couple of
- places;
- - The X driver would return an error, instead of clipping, if
- asked to display outside the window.
- - The X driver would create inappropriately sized windows, because
- it believed the server's report of the screen resolution.
-
- Adds Fran Taylor's Private Eye driver to gdevs.mak and the fileset (not
- supported by Aladdin Enterprises).
-
- Adds Neil Ostroff's TruFax driver to gdevs.mak and the fileset (not
- supported by Aladdin Enterprises).
-
- Makes the scratch file template for the printer drivers a per-platform
- quantity (gp_scratch_file_name_template). Puts the default scratch files
- for Unix in /usr/tmp rather than /tmp.
-
- Changes the SunView driver to prevent the Ghostscript window from being
- destroyed (which badly confuses the interpreter).
-
- Extends the Epson driver to handle a variety of print densities in both X
- and Y, to handle 24-pin as well as 8-pin graphics, and to allow optional
- specification of default density in the makefile (gdevs.mak).
-
- Refactors the printer drivers so that a single driver handles both DeskJet
- and LaserJet. Adds LaserJet drivers that use the new compression modes on
- the LJ IId/IIp and LJ III.
-
- Changes all the printer drivers to use band lists rather than bitmap
- paging as the buffering method. (The individual drivers need only a
- one-line change to replace mem_copy_scan_lines with
- gdev_prn_copy_scan_lines with a different argument.)
-
- Adds the halftone phase as additional arguments to tile_rectangle and
- tile_trapezoid.
-
- Adds an entirely new and much simpler PaintJet driver, using the new band
- list interface.
-
- Adds margin information to the device structure. This is currently only
- relevant for printer devices.
-
- Adds BGIPATH and BGIUSER environment variables, allowing additional
- control of the BGI driver.
-
- Changes the x/y_pixels_per_inch member of the device structure from int to
- float.
-
- Fonts
- -----
-
- Patches gs_fonts.ps so definefont will add an isFixedPitch entry to
- FontInfo if there isn't one there.
-
- Removes the old "type 7 path" encoding code from gs_fonts.ps.
-
- Changes bdftops so it puts isFixedWidth and ItalicAngle entries in the
- FontInfo dictionary of the fonts it creates, since some P*stScr*pt
- programs rely on this.
-
- Changes bdftops so it synthesizes as many missing characters as possible
- out of the ones that are there (in particular: synthesizes accents out of
- punctuation marks, and accented characters using seac.) The results
- aren't all that good, but they're a lot better than having characters
- missing out of the font.
-
- Utilities
- ---------
-
- Adds a pfbtops utility for converting .PFB fonts to standard Ghostscript
- fonts.
-
- Fixes bugs:
- - ps2image didn't reset things properly between pages for
- multi-page documents.
-
- Interpreter
- -----------
-
- Makes Ghostscript recognize `-' alone as meaning that it should read from
- standard input as though it were a file. This allows Ghostscript to
- accept a pipe as input.
-
- Fixes bugs:
- - seac in type1addpath used the current font's encoding, not
- StandardEncoding.
- - type1decryptfile (eexec) didn't recognize binary (as opposed to
- hex) representation.
- - Mentioning a name whose value was a no-access object caused an
- invalidaccess error.
- - There was a bogus definition of `run' in zfile.c.
- - The interpreter didn't handle end-of-file on stdin properly.
- - Real numbers with an 'e' or 'E' but no decimal point were not
- recognized.
- - On MS-DOS systems, inside strings, \ followed by a newline was
- not discarded properly.
- - On MS-DOS systems, the long unsigned divide routine sometimes
- gave incorrect answers. Among other things, this caused alternate-radix
- numbers sometimes to crash the interpreter.
- - cvrs didn't do the right thing about reals or negative integers.
- - .echo.mode was being reset with def instead of store, and was
- defined in systemdict rather than userdict.
- - setgray and settransfer didn't interact properly.
- - 16#80000000 was being interpreted as a signed integer (and
- converted to a real) rather than an unsigned one.
- - atan returned 0 sometimes when it should have returned 180.
- - currentcmykcolor was defined wrong.
-
- Removes the filename operator, since no standard Ghostscript code used it,
- and it caused problems with some P*stScr*pt files.
-
- Implements new operators: filenameforall, selectfont (as a procedure),
- stringmatch, undef.
-
- Adds new standard procedures: selectdevice.
-
- For MS-DOS, requires that the operand and execution stacks be located in
- the data segment, and uses short pointers to address them. This produces
- significantly smaller and faster code. (These changes are not visible to
- users or library clients.)
-
- Changes the assignment of attribute bits, and adds new bits for
- save/restore and the garbage collector. Changes many of the macros in
- store.h to support save/restore. (These changes are not visible to users
- or library clients.) Implements save and restore.
-
- Moves type names from gs_init.ps to ghost.h and ztype.c.
-
- Moves error names from gs_init.ps to errors.h and iinit.c.
-
- Introduces gp.h as a documented interface to the platform-specific files.
-
- Adds the -- switch, which allows Ghostscript programs to take arguments
- from the command line.
-
- Changes many uses of the name `name' to something else, to avoid upsetting
- the Microsoft C compiler.
-
- Really implements packed arrays -- they took the same amount of space as
- ordinary arrays in previous versions.
-
- Changes exitserver in serverdict so that it just clears the stacks. (This
- isn't the correct fix, but it will do as a workaround.)
-
- Makes many miscellaneous small changes to pacify various compilers.
-
- Changes gs_fonts.ps so that when "quiet" mode is selected (-q switch),
- Ghostscript doesn't print anything when loading fonts or when substituting
- for undefined characters.
-
- Defines the name consisting of just a control-D as a no-op, because some
- P*stScr*pt-generating applications put control-Ds in their output.
-
- Implements halftone phase (sethalftonephase and currenthalftonephase
- operators).
-
- Removes the -E switch, since it is no longer useful.
-
- Changes the -w and -h switches to a single -g (geometry) switch, with
- usage -g<width>x<height>. Makes the -h switch, and a new -? switch, print
- usage help.
-
- Implements correct handling of stack overflow errors (makes an array out
- of the contents of the overflowing stack, and resets the stack, before
- invoking the error handler).
-
- Adds t_oparray (`operators' defined as procedures) and the makeoperator
- operator. This is so that programs like the Distillery that rely on all
- operators being bound by `bind' will work properly.
-
- Adds a new NOPAUSE flag to suppress the prompt and pause at copypage and
- showpage.
-
- Library
- -------
-
- Fixes bugs:
- - gs_type1_interpret didn't store the encryption state or the skip
- count before returning to let the client handle a seac or an endchar in
- the middle of a seac.
- - The definition of the Type 1 operator ce_testadd was based on
- wrong information; the operator takes only 2 operands and does something
- unknown.
- - mem_true24_copy_mono wasn't incrementing the destination pointer
- if the color was transparent, leading to garbled characters.
- - gx_lookup_fm_pair would sometimes look at one entry beyond the
- end of the cached font/matrix pair area. (This probably had no practical
- effect.)
- - gs_type1_interpret didn't save the current point when returning
- to the client for a callothersubr, causing some characters to be rendered
- displaced (such as some of the chess pieces in chess.ps).
- - gs_setgray, gs_sethsbcolor, gs_setrgbcolor, gs_setflat, and
- gs_setlinewidth gave errors for out-of-range operands rather than forcing
- them into range.
- - Transfer functions were not actually supported.
- - The area fill algorithm failed on certain complex paths.
- - The current point was sometimes defined when a BuildChar
- procedure was called.
- - Stroking a degenerate line didn't display anything for round
- caps or joins.
- - If the ends of a curve had exactly the same X coordinate, the
- curve sometimes wouldn't be displayed.
- - Very thin lines that went outside the clipping region would
- sometimes be displayed as dashed, or not at all.
- - The translation in a FontMatrix was ignored.
- - Very wide, shallow lines would color extraneous pixels when
- using bevel or miter joins.
- - Dashed lines didn't join properly at the beginning of a closed
- path.
- - 0-degree arcs didn't add the appropriate line (possibly
- degenerate) to the path.
- - gs_type1_interpret didn't reset the callsubr stack when starting
- the base character of a seac, which caused confusion if the accent's
- endchar fell inside a Subr.
- - Non-monochrome memory memory devices weren't checking the
- arguments of the drawing procedures properly.
- - The initial clipping rectangle for memory devices was being
- computed wrong.
- - Null devices had a semi-infinite clipping rectangle instead of
- an empty one.
- - gs_setlinewidth was treating negative arguments as zero, instead
- of taking the absolute value.
- - imagemask with a dithered color used a solid color rather than
- the dithered one.
-
- Tweaks the area fill and image rendering algorithms to be a little more
- liberal with paint when being used to render characters.
-
- Changes the name of the 8-bit mapped color memory device from
- mem_mapped_color_device to mem_mapped8_color_device.
-
- Changes the memory devices so that on little-endian platforms, they can
- store the bytes within a word in either order. (Little-endian order
- allows efficient 32-bit updating, big-endian is required when displaying
- or writing to a printer or a file.)
-
- Implements halftone phase.
-
- Replaces the trapezoid fill algorithm with a much more accurate one
- inspired by a contribution from Paul Haeberli. This also changes the
- graphics convention back to filling only pixels whose center falls within
- the region to be filled.
-
- Changes the character cache to allocate headers and bits contiguously out
- of a single ring buffer.
-
- Changes gs_imagemask and gs_imagemask_init to take a thickness adjustment
- parameter.
-
- Changes gs_setcachedevice and gs_setcharwidth to take the graphics state
- as a parameter.
-
- Renames gx_device_memory_bitmap_size as gdev_mem_bitmap_size,
- mem_copy_scan_lines as gdev_mem_copy_scan_lines, and
- mem_bytes_per_scan_line as gdev_mem_bytes_per_scan_line.
-
- Version 2.1.1 (1/15/91)
- =============
-
- This is a sub-release distributed to fix a few early bugs in 2.1, just in
- time for the new GNU master tape.
-
- Build procedures
- ----------------
-
- Removes all of the (undebugged) Level 2 code from the fileset, as well as
- the (unused) file gdevvga.c.
-
- Changes the tar file so that the files are stored in the directory
- gs<version> rather than simply gs, e.g., gs211.
-
- Interpreter
- -----------
-
- Changes the scanner so that \ is recognized within strings regardless of
- whether the scanner is reading from a string or from a file. This is
- compatible with newer P*stScr*pt interpreters, and with the newer
- P*stSc*pt language specification, but not with the older specification in
- the original PostScript Language Reference Manual.
-
- Drivers
- -------
-
- Fixes the max_value macro in gdevmem.c so that compilers won't complain
- about a left shift by 32.
-
- Adds 'byte' to the list of types that gdevx.c must sidestep because header
- files use them.
-
- Library
- -------
-
- Changes the computation of penum->unpack in gsimage.c so as not to upset
- compilers that don't treat procedures and pointers to procedures as
- compatible types for conditional expressions.
-
- Version 2.1 (12/31/90)
- ===========
-
- This is primarily a bug fix release to clean up problems in 2.0. It also
- implements a first cut at the new color operators.
-
- Build procedures
- ----------------
-
- Changes the separator for multiple directories in MS-DOS from ';' to '|',
- since there is no way to include a ';' in a command line.
-
- Adds <dir>/fonts to the default search path, where <dir> is c:/ghost for
- MS-DOS systems and `pwd` for Unix systems.
-
- Adds new documentation describing how to direct output to the printer.
-
- Changes the PROCTYPE and USE8087 options in MSDOS.MAK to CPU_TYPE and
- FPU_TYPE. The latter now indicates the type of FPU to generate code for,
- if any.
-
- Drivers
- -------
-
- Adds a driver for the Canon BubbleJet BJ10e.
-
- Modifies the EGA driver to handle (non-standard) frame buffers larger than
- 64K. Adds drivers for the VGA and for the EIZO MDB-10 (a 1024 x 768 frame
- buffer).
-
- Changes the X driver so that it clips to the window dimensions, rather
- than reporting an error.
-
- Notes that the H-P LaserJet driver, like the DeskJet driver, works under
- Unix as well as MS-DOS.
-
- Adds support for 120 X DPI mode, and for the LQ-1500, to the Epson driver.
-
- Fonts
- -----
-
- Fixes bugs in bdftops:
- - It was using /UniqueId instead of /UniqueID as the key for the
- font unique ID. This effectively disabled the font cache.
- - The definition for .notdef was bogus -- an invalid CharString.
-
- Changes ghost.ps and gfonts.ps so that NullFont is the initial font,
- rather than Ugly.
-
- Arranges things so that when attempting a font substitution, if the
- default font is not found, NullFont is used instead.
-
- Extends bdftops so that if certain easily synthesized characters are
- missing from a font, it will attempt to synthesize them using available
- characters.
-
- Interpreter
- -----------
-
- Extends the -T switch to allow specifying a printf template for the
- arguments of the procedure being traced.
-
- Fixes bugs:
- - /0 was interpreted as equivalent to 0 (a number) rather than a
- literal name.
- - packedarray was defined as being like array, instead of like
- array followed by astore.
- - Many minor and harmless type mismatches (and a couple of very
- minor genuine bugs) were upsetting the Apollo C compiler.
- - exp was incorrectly failing in certain cases with a negative
- first argument.
- - copyscanlines incorrectly required at least 4 elements on the
- operand stack, although it correctly only used the top 3.
- - readhexstring incorrectly read 1 byte even if the string length
- was zero.
- - Not every place that expected an array would accept a packed
- array.
- - Very complex paths (and infrequently other things) could produce
- a 'memory leak'.
- - / alone would skip following whitespace and gather following
- characters, rather than creating an empty name.
- - ghost.ps left newerror defined as true in $error, which resulted
- in an erroneous error report if a program executed a 'stop'.
- - The definition of exitserver in serverdict didn't clear the
- stack.
- - currentfile returned an executable file, rather than a literal
- one.
- - setfont for Type 1 fonts didn't check the UniqueID in the font
- dictionary against the one in the font's Private dictionary.
- - A value stored in a dictionary under the key /xxx couldn't be
- retrieved using the key (xxx), and vice versa.
- - charpath with a Type 1 font on a string containing a 'space'
- would produce garbage (it released the parent path inappropriately).
- - bytesavailable did not work properly for terminal input.
-
- Changes the interface to the memory allocator so that it always takes an
- element size and an element count, like calloc instead of malloc (but note
- that alloc does *not* clear just-allocated blocks). Gets rid of the
- special 'dynamic' allocation procedures.
-
- Changes the random number operators to use a better implementation.
-
- Changes the idiv operator so it will accept any numbers, not just
- integers, as arguments. (The PostScript manual doesn't allow this, but
- implementations apparently do.)
-
- Provides semi-fake but usable definitions for all of the color PostScript
- extensions, including a real implementation of colorimage.
-
- No longer uses the name 'null', which is apparently reserved by Microsoft
- C. Makes a number of other minor changes required to pacify the Microsoft
- C compiler.
-
- Implements %statementedit and %lineedit. (%statementedit is equivalent to
- %lineedit, which is wrong.) Changes the interactive interpreter to use
- %statementedit.
-
- Changes the scanner to accept null, ctrl-K (vertical tab), and ctrl-L
- (form feed) as whitespace. Ctrl-L terminates a comment, null and ctrl-K
- do not.
-
- Allows a literal string as the 'proc' argument(s) for image, imagemask,
- and colorimage.
-
- Adds the following operators/procedures: arct, cleardictstack, deletefile,
- renamefile.
-
- Defines =print as a synonym for =, for the benefit of LaserPrep.
-
- Implements non-zero PaintType for the show operators (but not for
- charpath) for Type 1 fonts.
-
- Adds the ISOLatin1Encoding encoding vector.
-
- Renames currentcolor and setcolor as currentgscolor and setgscolor, to
- avoid conflict with the Level 2 PostScript names. Removes colorhsb,
- colorrgb, hsbcolor, and rgbcolor.
-
- Library
- -------
-
- Fixes bugs:
- - In a couple of places, a 0 was being passed as a pointer
- argument without casting, which confused the Microsoft C compiler.
- - Image devices were not recognized properly in debugging
- configurations.
- - Inverted-color monochrome image devices were not recognized
- properly.
- - Images that exactly fill the drawing area rendered very slowly,
- because they erroneously used the general clipping algorithm.
- - Images that are 1-for-1 with the device were incorrectly scaled
- by a factor of 8 in X.
- - Rounding artifacts sometimes caused characters to be unevenly
- offset vertically by 1 pixel.
- - Type 1 fonts that used the Flex feature resulted in garbled
- images.
- - The show operator routines would incorrectly fill or stroke a
- path that existed at the time the show was started.
- - setscreen truncated the cell size instead of rounding, which
- could produce off-by-1 anomalies.
- - stroke would sometimes produce garbage (or nothing at all) for
- very narrow lines.
- - path filling would only color the pixels whose centers fell
- inside the path: the Adobe specification requires coloring a pixel if any
- part of it falls inside the path.
-
- Changes the Epson printer driver so that it drives the printer directly
- rather than writing to a file.
-
- Changes pathbbox so that if the path is empty but there is a current
- point, it returns a null rectangle at the current point.
-
- Changes gs_image_init to take an additional parameter (after bps) giving
- the number of samples per pixel (1, 3, or 4), and an indication of whether
- the samples for each pixel are together or separated (-3 or -4).
-
- Renames the gs_image_data and gs_imagemask_data procedures as gs_image and
- gs_imagemask, and removes the old versions of the latter.
-
- Adds gs_colorimage.
-
- Replaces Snoopy's color dithering algorithm with one contributed by Paul
- Haeberli.
-
- Changes gs_setgray, gs_[set]hsbcolor, and gs_[set]rgbcolor so that they
- coerce arguments outside the range [0..1] back into the range, instead of
- signalling an error.
-
- Makes a number of minor changes required to pacify the Microsoft C
- compiler.
-
- Changes gs_arcto so that if the last argument is a null pointer, the
- tangent points are not returned.
-
- Removes gs_type1addpath, which is not useful. (Clients must call
- gs_type1_init and gs_type1_interpret directly.)
-
- Implements the 'seac' opcode for Type 1 fonts, allowing fonts with accented
- characters to display properly.
-
- Implements the undocumented 'testadd' opcode for Type 1 fonts, which is
- used by some Adobe fonts.
-
- Renames gs_currentcolor and gs_setcolor as gs_currentgscolor and
- gs_setgscolor. Removes gs_colorhsb, gs_colorrgb, gs_hsbcolor, and
- gs_rgbcolor.
-
- Version 2.0 (9/12/90)
- ===========
-
- The main purpose of this release is to add fonts, support for multiple
- devices, and imaging into memory. It also fixes a number of miscellaneous
- bugs. (Unfortunately, accurate records of the bugs fixed are not
- available.) The changes were so extensive that we chose to increment the
- major version number.
-
- Miscellaneous
- -------------
-
- Doesn't attempt to open the .MAP file on Unix systems.
-
- Adds mention of statusd.ps to interp.doc.
-
- Notes that Turbo C 2.0, not 1.5, is required for building the MS-DOS
- version.
-
- Adds a DEVICES= line to the makefile, and allows multiple devices.
-
- Documents, in interp.doc, the X Windows resources that Ghostscript
- recognizes.
-
- Adds three PostScript masters to the fileset: chess.ps (+ cheq.ps),
- golfer.ps, and escher.ps.
-
- Drivers
- -------
-
- Changes the names of all the device drivers. See gdevs.mak for the
- updated list.
-
- Adds a (working) driver for SunView.
-
- Adds drivers for the Sony NeWS frame buffer, and the Sony Microsystems
- NWP533 printers. These drivers were contributed by users, so we aren't
- prepared to answer questions about them.
-
- Adds a driver for the Borland Graphics Interface (BGI) for MS-DOS systems.
- Note that to use this driver with a non-EGA/VGA display, you need a .BGI
- file appropriate for your hardware. (The Ghostscript executable includes
- the EGA/VGA driver.)
-
- Adds a driver for Epson printers. The driver has only been tested on an
- LX-800, and on an H-P DeskJet in FX-80 emulation mode, but may work on
- other models. The driver could be adapted to work on Unix systems, but as
- distributed, it only works on MS-DOS systems.
-
- Adds a driver for the Hewlett-Packard DeskJet printer. The driver could
- be adapted to work on Unix systems, but as distributed, it only works on
- MS-DOS systems.
-
- The X Windows driver no longer waits for the user to type a character
- before bringing up the initial display.
-
- Adds information to drivers.doc describing how to change the definition of
- the device structure and procedure table.
-
- Extends the tile_rectangle and tile_trapezoid driver procedures to
- interpret color0 = color1 = gx_no_color_index as meaning that the tile is
- actually colored, not a mask.
-
- Build procedures
- ----------------
-
- Changes the tar file so it puts everything in a directory called gs.
-
- Removes the -ansi switch for gcc (this was causing problems with <math.h>
- on some systems).
-
- Changes LDPLAT to the string -X, which is appropriate for most Unix
- systems (but not for SunOS 4.n).
-
- Adds EXTRALIBS to the makefile, for specifying additional libraries to be
- linked in.
-
- Adds a 'clean' target for 'make', to get rid of all temporary files, the
- binaries, and the executable.
-
- Changes names of system-specific files from gp-xxx.c to gp_xxx.c.
-
- Adds support for VMS (gp_vms.c and ghost.dcl).
-
- Creates a new file gdevs.mak, and reorganizes the other makefiles, so that
- the choice of which device driver(s) to include is isolated in a single
- line in the platform-specific makefile.
-
- Changes the standard MS-DOS makefile so it builds for 8088/86 (not 80386),
- with neither -DNOPRIVATE nor -DDEBUG.
-
- Changes the name of the MS-DOS makefile from dos-ega.mak to msdos.mak, and
- the Unix makefiles from ux-[g]cc-x.mak to unix-[g]cc.mak.
-
- Updates drivers.doc to describe how to add new drivers in gdevs.mak.
-
- Removes gdevs.ps: the drivers are now responsible for specifying the size
- of the imaging region.
-
- Interpreter
- -----------
-
- Adds a makefile macro GS_LIB_DEFAULT and an environment variable GS_LIB to
- define a search path for the library (initialization and font) files, and
- implements the -I switch for the same purpose (replacing -sLIB=, which was
- never actually implemented). See interp.doc for details.
-
- No longer clears the operand stack between interactive inputs. No longer
- prints the contents of the operand stack after every input in debug mode.
-
- Doesn't "eat" the character that the user types to proceed after a
- showpage, unless it's an isolated <return>.
-
- Changes the prompt so that it says
- GS>
- if the operand stack is empty, or
- GS<n>
- if there are n > 0 elements on the operand stack.
-
- Adds -w and -h switches to the command line, equivalent to -dWIDTH= and
- -dHEIGHT= except that they require numeric arguments.
-
- Adds -q (quiet startup) switch to the command line, which suppresses some
- initial messages and also has an effect equivalent to -dQUIET.
-
- Fixes bugs:
- - = and == caused an error on some kinds of objects if the object
- didn't have read access.
- - cvs didn't print operator names.
- - The definition of dynamic_begin in iscan.c caused the DEC VMS C
- compiler to produce incorrect code.
- - mul didn't return a correct (real) result when multiplying a
- very large integer by an integer that wasn't very large.
- - eq and ne didn't work on files, fonts, save objects, and some
- operators.
- - The scanner would sometimes blow up on floating point numbers
- beginning with a '.'.
- - flushfile didn't pop its argument from the stack.
- - put and putinterval would store into a packed array.
- - a few operators didn't check properly for stack underflow.
- - cvrs produced wrong output for radix values greater than 10.
- - The scanner would convert upper-case letters in alternate-radix
- numbers wrong on Unix systems.
- - String comparisons other than equality often produced the wrong
- result if the strings were of different lengths.
- - An ifelse as the last thing inside a forall would confuse the
- execution stack.
- - There were some omitted casts and 'private' declarations that
- made the GNU compiler unhappy.
- - There was a memory leak in the image[mask] operators that caused
- 516 bytes to be permanently lost each time one of them was used.
- - Quoted strings of length greater than 50 and less than 100 would
- get mangled when being read in.
- - The scanner didn't consume the whitespace character following a
- token, so programs that read data out of the program file could get
- confused.
- - Under rare circumstances, an object of size between 249 and 255
- bytes could get allocated on top of another object.
-
- Allows bind to bind packed arrays, even though they aren't normally
- writable.
-
- Changes the length operator to allow a name as the argument. (The
- PostScript manual doesn't allow this, but implementations apparently do.)
-
- Changes the setcachedevice operator to allow the bounding box to be
- specified as a 4-element array instead of 4 scalars. (The PostScript
- manual doesn't allow this, but implementations apparently do.)
-
- Removes a line from ghost.ps that accidentally disabled the font cache.
-
- Implements memory devices (makeimagedevice, copyscanlines, and makedevice
- for image devices). makeimagedevice is implemented only for 1, 8, 24, and
- 32 bits per pixel.
-
- Changes the deviceparams operator so it pushes a mark on the stack below
- the parameters. This is to allow for devices that have more than the
- standard set of parameters.
-
- Replaces defaultdevicename with two new operators, getdevice and
- devicename.
-
- Adds a flushpage operator that flushes any outstanding buffered output to
- the screen. This is not the same as copypage: on printers, copypage
- actually prints a page, whereas flushpage may do nothing; on displays,
- flushpage and copypage may both flush output to a server.
-
- Adds an unread operator for pushing back a character into a file.
-
- Adds a description of proposed grayimage and colorimage operators to
- ghost.doc, even though they aren't implemented yet.
-
- Changes the name of the currentfileposition operator to fileposition.
-
- Removes the framedevice operator, since the new device operators supersede
- it.
-
- Adds a writeppmfile operator, for writing the contents of a memory device
- to a ppm file.
-
- Makes Ghostscript work even when the >> operator doesn't sign-extend
- negative numbers. (This has not been tested.)
-
- Adds the Symbol encoding to ghost.ps.
-
- Adds two new file-related operators, filename and findlibfile. See
- ghost.doc and interp.doc for details.
-
- Adds type1encrypt and type1decrypt operators for manipulating Adobe Type 1
- encoded fonts.
-
- Changes the imagecharpath and addcharpath operators to type1imagepath and
- type1addpath. These operators now work with the Adobe Type 1 font
- encoding.
-
- Adds the type1decryptfile operator for reading Adobe Type 1 encrypted
- fonts.
-
- Library
- -------
-
- Fixes bugs:
- - curveto and lineto didn't check for the current point being
- defined.
- - stringwidth would fail if there was no current point.
- - There were omitted casts that made the GNU compiler unhappy.
- - Line caps and joins didn't always work.
- - Dashed lines didn't work at all.
- - If you read out the current matrix while inside a BuildChar
- procedure, the result was garbage.
- - image[mask] would crash if you gave it a single string with more
- than 64K-1 pixels (MS-DOS only).
- - Filling with a gray pattern sometimes wrote into pixels beyond
- the right edge of the region (MS-DOS only).
- - The font cache would mistake fonts for each other if both fonts
- had a default (unsupplied) "unique ID".
- - When a character was entered into the font cache for the first
- time, sometimes it would display as garbage and/or displaced vertically
- from its proper position.
-
- Implements gs_makeimagedevice, gs_copyscanlines, gs_getdevice,
- gs_devicename, gs_flushpage, gs_writeppmfile, gs_type1encrypt,
- gs_type1decrypt, gs_type1imagepath, and gs_type1addpath procedures
- corresponding to the new operators in the interpreter (see preceding
- section).
-
- Changes [gs_]setdevice so that it does an erasepage when it first opens
- the device.
-
- Changes definition of gx_device structure as follows. NOTE: THIS AFFECTS
- ALL DRIVERS.
-
- - Removes bits_from_MSB (which wasn't actually used, in any case).
- Ghostscript now assumes officially, as it always did in
- practice, that device bitmaps are stored MSB first, i.e., X=0
- corresponds to the 0x80 bit in the first byte.
-
- - Removes the initial_matrix member, which wasn't actually being
- set up.
-
- - Adds a new member 'name', a string giving the device name.
-
- - Adds new members 'x_pixels_per_inch' and 'y_pixels_per_inch'.
- These are only used by the default initial_matrix procedure
- (see below).
-
- - Adds a new procedure 'output_page'. The default implementation
- (gx_default_output_page) just calls the sync_output procedure.
-
- - Adds a new procedure 'get_initial_matrix'. The default
- procedure uses the width, height, and x/y_pixels_per_inch
- members to compute the matrix, assuming that X values run from
- right to left, and Y values run from top to bottom.
-
- Changes the names of the allocation procedure types gs_proc_alloc and
- gs_proc_free to proc_alloc_t and proc_free_t, and moves them from gs.h to
- std.h.
-
- Makes Ghostscript work even when the >> operator doesn't sign-extend
- negative numbers. (This has not been tested.)
-
- Version 1.3 (6/20/89)
- ===========
-
- This release should have had a lot more things in it, but time pressure
- and the already long delay in getting it out made it necessary to push it
- out the door in an incomplete state (e.g., no testing on X systems
- whatsoever).
-
- Interpreter
- -----------
-
- Makes -d and -D equivalent on the command line. Adds a new switch -s / -S
- that defines a name as a string rather than a token.
-
- Arranges things so that if -sLIB=_a_prefix_ is defined on the command
- line, (filename) run will look for _a_prefix_filename before giving up if
- filename isn't the name of an accessible file.
-
- Changes showpage from an operator to a procedure. The definition of
- showpage in ghost.ps does a copypage, beeps the console, waits for the
- user to type a character (normally a <return>, since line buffering is
- always enabled), and then does an erasepage and an initgraphics.
-
- Adds a new initialization file, gdevs.ps, containing device-dependent
- parameters. The default window size for X Windows is properly set to 612
- x 792, i.e., 8.5" x 11".
-
- Adds a new optional initialization file, statusd.ps, that provides dummy
- definitions for the names found in statusdict on LaserWriters.
-
- Adds a new operator, getenv, to get information from the shell
- environment.
-
- Adds a new predefined operator, defaultdevicename, that returns either (X)
- or (EGA) according to how the interpreter was built.
-
- Adds a new type, devicetype, and new operators deviceparams, getscanlines,
- makedevice, makeimagedevice, and setdevice. Changes currentdevice to
- return a device object rather than a set of parameters.
-
- Makes the scanner recognize reals with 'e' exponent notation, and handle
- reals with more than 9 digits.
-
- Fixes a bug that made names starting with digits read incorrectly.
-
- Fixes a bug in the exp operator that made it not pop its first argument
- from the stack.
-
- Fixes a bug in the rand operator that made it return negative values about
- half the time.
-
- Fixes a bug in equality comparison (eq, ne, and several other operators)
- that made unequal operator objects occasionally appear to be equal on DOS
- systems.
-
- Fixes a bug in the bind operator that made it not work on packed arrays.
-
- Changes the internal representation of dictionaries so they can be
- expanded or contracted dynamically. Adds a new operator, setmaxlength, to
- change the allocated size of a dictionary.
-
- Changes sstorei.h so that non-DOS compilers don't encounter the #pragma
- directive used by Turbo C.
-
- Restores the display mode (on MS-DOS systems) when exiting.
-
- Fonts
- -----
-
- Makes undefined characters in the standard font display as tilde rather
- than blank (or causing an error). Unmapped character codes (those mapped
- to .notdef in the encoding) still display as nothing, per the PostScript
- manual.
-
- Library
- -------
-
- Adds a new header file, gxbitmap.h, with some new documentation describing
- the internal storage format for bitmaps.
-
- Makes numerous internal changes in the character / font cache, affecting
- many of the routines in gxcache.c.
-
- Fixes a bug in gz_draw_line / gz_fill_trapezoid that made nearly
- horizontal lines display wrong.
-
- Fixes a bug in gs_scale that made scaling not work if the coordinate
- system was rotated or skewed.
-
- Extends the font cache so it will handle characters rotated by multiples
- of 90 degrees.
-
- Changes the second argument of gx_path_bbox and gx_path_is_rectangle to be
- a gs_fixed_rect * rather than a fixed [4].
-
- Changes gs_matrix_rotate so it handles multiples of 90 degrees as a
- special case.
-
- Changes the definition of the gx_device structure to accommodate the new
- device operators, and adds corresponding library calls.
-
- Changes the type for a device color index from int to gx_color_index
- (equivalent to unsigned long). ***NOTE***: this affects existing clients
- and drivers in a non-trivial way on MS-DOS systems.
-
- Changes gs_malloc and gs_free to take a client name string as an argument.
-
- Usage procedures
- ----------------
-
- Changes the compilation rules for Unix systems to not use the -o and -c
- compiler flags together, to be compatible with more versions of cc.
-
- Changes the gcc makefile to use $(GCC) rather than gcc as the compiler
- name.
-
- Moves the -1 flag for the MS-DOS compiler from the cc*.bat files to the
- makefile.
-
- Changes CCDEBUG to CCFLAGS, and adds ASMFLAGS, in DOS makefile.
-
- Adds -DFOR80386 and /DFOR80386 to enable use of 80386 instructions in
- assembly code on DOS systems.
-
- Merges the DEBUG and gs_DEBUG switches. There is now only a single DEBUG
- switch that affects both the interpreter and the library.
-
- Adds a new compilation switch, -DNOPRIVATE, that makes private (static)
- variables and procedures public for debugging and profiling (only needed
- on DOS systems).
-
- Adds the DOS executable (gs.exe and gs.map) to the distribution fileset.
-
- Adds new platform-specific code files, gp-*.c, for a few things like
- reading the clock.
-
- Adds a new documentation file, drivers.doc, that describes the interface
- between Ghostscript and device drivers.
-
- Version 1.2 (2/22/89)
- ===========
-
- Interpreter
- -----------
-
- Adds the new facilities in version 25 of PostScript: //name for immediate
- lookup, packed arrays (setpacking, currentpacking, packedarray operators),
- and new font cache parameters (setcacheparams, currentcacheparams
- operators).
-
- Adds new operators (setfileposition, currentfileposition) for random
- access to files.
-
- Extends readhexstring to take either a string or a file, just like token.
-
- Fixes a bug that caused the 'for' operator (and a couple of others) to
- randomly smash memory locations on PC platforms.
-
- Library
- -------
-
- Renames the init_device driver procedure as open_device, and adds a
- corresponding close_device.
-
- Adds new procedures to read and set the cache limit values (implementing
- the currentcacheparams and setcacheparams operators).
-
- Usage procedures
- ----------------
-
- Changes the name of the Unix makefile to ux-cc-x.mak, and adds a new Unix
- makefile, ux-gcc-x.mak, for using gcc instead of cc. (The latter doesn't
- actually work yet.)
-
- Changes the name of the single built-in font from uglyfont.cp to
- ugly10.cp.
-
- Version 1.1 (2/12/89)
- ===========
-
- Interpreter
- -----------
-
- Makes the scanner treat ^Z (ASCII code 26) as whitespace: it erroneously
- treated ^R (ASCII code 22, or octal 26) as whitespace.
-
- Makes the token and readline operators, and the syntax for comments,
- recognize \r (code 13), \n (code 10), and \r\n as equivalent end-of-line
- indicators. The token and readline operators will skip over any of these
- sequences at the end of a token or line respectively, and a comment will
- read through any of these sequences. The other file operators (read,
- write, readstring, writestring) do nothing special with these characters.
-
- Changes the debug switch name from -D to -Z. Adds a -D switch for
- defining names in systemdict from the command line. Defines -DDEBUG for
- printing out debugging information during initialization, and -DNODISPLAY
- for suppressing display output.
-
- Corrects a bug that prevented the error machinery from working -- in
- version 1.0, errors always dumped the stacks and aborted interpretation.
-
- Corrects a bug that made eq and ne not work for strings.
-
- Makes the atan (arctangent) operator normalize its results according to
- the PostScript convention.
-
- Makes the div operator check for zero divisor.
-
- Makes unimplemented operators (resetfile, echo, save, restore, strokepath,
- reversepath) truly undefined.
-
- Makes the interactive loop exit gracefully on end-of-file: in version 1.0
- this caused an infinite loop.
-
- Implements the status operator.
-
- Corrects a bug that made the 'for' operator deliver garbage values if one
- or more of the operands (start, increment, end) was a real.
-
- Corrects a bug that made the arc and arcn operators not pop their operands
- from the stack.
-
- Corrects a bug that made the kshow operator crash the interpreter.
-
- Corrects a bug that made the print operator fail on machines that don't
- pass structure arguments by simply pushing the contents of the structure.
-
- Adds a new operator, imagecharpath, to convert images to
- addcharpath-compatible outlines.
-
- Changes alloc and alloc_free to use char * rather than byte *, and
- alloc_free to return void rather than int, making them compatible with the
- library's expectations and with malloc/free.
-
- Explicitly casts all expressions of the form (ptr1 - ptr2) used as
- procedure arguments to unsigned, to handle an incompatibility between
- Turbo C versions 1.5 and 2.0.
-
- Changes some of the internal conventions for operators: operators that
- push on the operand stack must check for overflow explicitly, and
- operators that modify the execution stack must return a special code.
- (See oper.h for details.)
-
- Initialization (ghost.ps, gfonts.ps)
- --------------
-
- Modifies ghost.ps and gfonts.ps so they print debugging information only
- if the name DEBUG is defined. (Presumably the user will set this from the
- command line with -DDEBUG.)
-
- Changes ghost.ps so it initializes the nominal screen size to 640 x 350 on
- MS-DOS systems as before, but to 612 x 792 on Unix systems, which is an
- 8.5" x 11" page at 72 pixels per inch.
-
- Library
- -------
-
- Corrects a bug that made the fill and eofill operators (gs_fill and
- gs_eofill) not perform a newpath afterward.
-
- Corrects the bug that made thin, nearly horizontal lines display wrong (as
- a series of disconnected dots) in the MS-DOS implementation.
-
- Fixes a bug in the EGA driver that often made it fill rectangular regions
- with black around information being displayed in white.
-
- Completely changes the internal representation of outline fonts, and
- changes btoi.ps (a Ghostscript language program for converting bitmaps to
- outlines) to use a new library call, gs_imagecharpath.
-
- Changes the extension for outline font files from .gf to .cp.
-
- Adds a new debugging switch, q, that traces all rectangle fill operations.
-
- Adds a new debugging switch, v, that traces all device-level output calls.
-
- Explicitly casts pointer differences passed as procedure arguments, as in
- the interpreter.
-
- Makes stringwidth work if there is no current point. In version 1.0, this
- gave a nocurrentpoint error.
-
- Usage procedures
- ----------------
-
- Changes the name of the 'read me' file from READ.ME to README.
-
- Removes a bogus line (invoking the 'mcopy' utility) from the makefile.
-
- Splits up the makefile into a generic part (ghost.mak) and
- platform-specific parts (dos-ega.mak, unix-x11.mak). The latter are what
- is actually executed.
-
- Puts the definitions of the DEBUG and gs_DEBUG compilation flags into the
- makefile instead of in ghost.h and gx.h respectively.
-
- Changes the names of the documentation files to be a little less cryptic.
- Changes all the file names to lower-case in the documentation. Adds
- installation information to make.doc.
-
- Changes all function definitions (but not prototype declarations) to ANSI
- syntax, and adds a preprocessing step (ansi2knr) to convert them to K&R
- syntax on Unix systems.
-
- Changes the normal MS-DOS link configuration to not assume the presence of
- an 80x87 coprocessor, and describes how to increase performance if a
- coprocessor is present.
-
- Changes the names of all the interpreter .c files, except stream.c, to
- begin with 'i'.
-
- Version 1.0 (8/11/88)
- ===========
-
- First version released to the public.
-