home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-08-02 | 120.4 KB | 3,246 lines |
- Copyright (C) 1992, 1993, 1994 Aladdin Enterprises. All rights reserved.
-
- This file is part of Aladdin Ghostscript.
-
- Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author
- or distributor accepts any responsibility for the consequences of using it,
- or for whether it serves any particular purpose or works at all, unless he
- or she says so in writing. Refer to the Aladdin Ghostscript Free Public
- License (the "License") for full details.
-
- Every copy of Aladdin Ghostscript must include a copy of the License,
- normally in a plain ASCII text file named PUBLIC. The License grants you
- the right to copy, modify and redistribute Aladdin Ghostscript, but only
- under certain conditions described in the License. Among other things, the
- License requires that the copyright notice and this notice be preserved on
- all copies.
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- This file, history.doc, describes the changes in older 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.6.1 (5/28/93)
- =============
-
- This is primarily a bug-fix release for 2.6, with a couple of minor
- additions.
-
- Documentation
- -------------
-
- Adds proper `man' pages ansi2knr.1 and gs.1.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The Unix makefile produced an incorrect linker command if
- EXTRALIBS was not empty.
- - The Unix install commands didn't copy devices.doc,
- ps2epsi.doc, and xfonts.doc to the documentation directory.
- - echogs.c didn't include <sys/types.h>, which is needed for
- time_t on some systems.
- - malloc_.h used <malloc.h> rather than <stdlib.h> on
- NeXTStep systems.
-
- Changes the configuration procedure to use a C program rather than
- complex shell scripts.
-
- Utilities
- ---------
-
- Fixes bugs:
- - The boilerplate produced by ps2image used the 'max'
- operator, which is not a standard PostScript operator.
- - The winmaps.ps utility had 'floring' instead of 'florin' in
- the OEMEncoding table.
- - quit.ps was omitted from the PC distribution.
-
- Changes the name of the dicttomark procedure to .dicttomark.
-
- Renames gs_2asc.ps as ps2ascii.ps, so it matches the names of the
- script files.
-
- Drivers
- -------
-
- Fixes bugs:
- - The pbmraw driver was writing out RGG instead of RGB values.
- - The X11 driver used NULL in a place where it should have
- used None.
- - For multi-file output, the GIF driver didn't write a header
- at the beginning of each file.
- - The Epson driver didn't honor the -A4 compilation switch,
- didn't put (0,0) at the physical corner of the page, and was too
- liberal about using tabs instead of spaces.
-
- Replaces the color handling algorithms in the X Windows driver with
- new, much better ones.
-
- Makes the PC display drivers recognize the -A4 compilation switch,
- like the printer drivers.
-
- Adds new user-contributed drivers:
- - A driver for Epson printers that use the ESC/P 2 control
- language, such as the Stylus 800.
- - A driver for the Apple Dot Matrix Printer and Imagewriter.
-
- Adds a new get_xfont_device driver procedure. This is a
- backward-compatible change, since there is a sensible default.
-
- Platforms
- ---------
-
- Fixes bugs:
- - On VMS, gconfig.h didn't have #include "gsconfig.h" as its
- first line.
- - gconfig.c compiled incorrectly on the RS/6000 because the
- compiler evaluated a constant of the form (x<<y)+z incorrectly.
- - Quite a few files that used the mem... functions didn't
- include memory_.h, which caused trouble on some bsd4.2 systems.
- - The definition of zfont_char_xglyph confused one of the AIX
- compilers.
- - On VMS, DEC C allows extra arguments for fopen, but gcc doesn't.
- - On the MS Windows platform, 2.6 used gdevwddb rather than
- gdevwdib; the latter is almost always faster.
- - The PC .zip files didn't include the Windows .ICO and .RES
- files in either GSEXE.ZIP or GSFILES.ZIP.
-
- On PC platforms, adds an option (FPU_TYPE=-1) to optimize for
- machines lacking a floating point processor.
-
- Fonts
- -----
-
- Adds 4 new fonts contributed by URW. These have a URW copyright and
- are governed by the GNU License.
-
- Documents the fact that font names in Fontmap can be strings, not
- only names.
-
- Adds DingbatsEncoding as a predefined encoding (in addition to
- Standard, ISOLatin1, and Symbol).
-
- Interpreter
- -----------
-
- Fixes bugs:
- - memchr (used in zfile.c) isn't available on all platforms.
- - languagelevel was defined as an operator rather than an
- integer.
- - iccfont.c referred to name_StandardEncoding instead of
- #include'ing font.h and referring just to StandardEncoding.
- - The CCITTFaxDecode filter didn't work on 32- (or 64-) bit
- machines, because of a bug in more_bits().
- - The structures recording an allocation within the scope of
- a save could get allocated unnecessarily, because they weren't
- properly marked as free when an array was freed.
-
- Renames the following Ghostscript-specific operators by adding a '.'
- at the front: makeoperator, setdebug, setmaxlength, stringmatch,
- type1decrypt, type1encrypt.
-
- Adds a real implementation of glyphshow.
-
- Library
- -------
-
- Fixes bugs:
- - Discarding fractional character coordinates in the Type 1
- rasterizer led to some rendering anomalies (e.g., characters 1 pixel
- too high).
- - If a font had a non-standard encoding (i.e., not
- StandardEncoding, ISOLatin1Encoding, or SymbolEncoding), Ghostscript
- would never invoke the platform font code.
- - The RGB to HSB color conversion algorithms produced
- nonsensical values.
- - struct cached_char_s was defined redundantly in gxcdir.h,
- causing compilation problems on some systems.
- - 32-bit color devices didn't work properly on little-endian
- machines (arrange_bytes in gdevmem2 was wrong).
- - The scaled font cache could confuse two fonts with the same
- UniqueID and different Encodings.
- - Under many common circumstances (first use of a character
- was with stringwidth, the font was renamed, the font encoding was
- changed), xfonts would not be used.
-
- Adds gs_glyphshow.
-
- Version 2.6 (5/9/93)
- ===========
-
- The main new feature in this release is the ability to use platform
- fonts. It also adds many more Level 2 PostScript facilities.
-
- Documentation
- -------------
-
- Corrects some errors in the documentation of the makeimagedevice operator.
-
- Adds operand and result types to the comments at the beginning of all the
- operators.
-
- Adds new sections on installation in use.doc.
-
- Reinstates history.doc as a repository for old and no longer interesting
- history information.
-
- Adds a new file, devices.doc, with documentation for specific devices.
-
- Points out that font2c must be run with a Fontmap that includes the fonts
- being converted, and that its arguments must be quoted with "" on VMS
- systems.
-
- Notes that the font name in the Fontmap must be the same as the FontName
- in the font.
-
- Adds a list of the Level 2 facilities not provided by Ghostscript.
-
- Identifies bug-ghostscript@prep.ai.mit.edu as an alias for the
- gnu.ghostscript.bug newsgroup.
-
- Points out explicitly that -sOutputFile=- sends output to stdout, and
- requires using the -q switch.
-
- Documents the use of tar_cat to construct the Unix makefiles.
-
- Adds a new file, xfonts.doc, that describes the external font interface.
-
- Documents the fact that drivers must use gs_malloc and gs_free rather than
- malloc and free.
-
- Documents the *.sh (shell script) files.
-
- Adds brief documentation on some additional development tool .ps files.
-
- Documents the TEMP and GS_OPTIONS environment variable.
-
- Points out the need to run Windows in 386 Enhanced mode on machines
- that have less than 6 Mb of RAM.
-
- Consolidates documentation on compiler switches in make.doc (some of
- it had been in the unix*.mak files).
-
- Procedures
- ----------
-
- Fixes bugs:
- - \'s in arguments following -- were doubled.
-
- Includes the full set of filters automatically if the level2 feature
- is selected.
-
- Extends DEVICE_DEVS... up to DEVS9. Adds DEVICE_DEVS1 as well.
-
- Renames turboc.mak and tbcplus.mak as tc.mak and bc.mak.
-
- Makes @-files use the library path (GS_LIB, -I).
-
- Changed the Unix install script to use install <file> <destfile>
- rather than install <file> <directory>.
-
- Adds a GS_OPTIONS environment variable that acts like an implicit @-file
- at the beginning of the command line (i.e., may contain switches and
- initialization files).
-
- Renames sym__enc.ps as gs_sym_e.ps.
-
- Adds a user-contributed shell script for using Ghostscript with an
- H-P printer spooler.
-
- Adds level1.ps to the set of installed utility files.
-
- Extends the TEMP environment variable (the directory for scratch
- files) to work on Unix as well as MS-DOS.
-
- Changes the MS Windows makefile to generate gswin.exe rather than
- gs.exe, and the Watcom makefile to generate gs386.exe.
-
- Moves the "product" string from gs_init.ps to iinit.c.
-
- Adds a GS macro to the makefiles, to allow choosing the name of the
- executable.
-
- Utilities
- ---------
-
- Fixes bugs:
- * - font2c did the wrong thing (still) for fonts that didn't
- use StandardEncoding, ISOLatin1Encoding, or SymbolEncoding.
- * - impath.ps had a fatal bug (wrong operand order for
- charstack_write) that caused bdftops to fail.
- - gslp didn't wrap or truncate lines.
- - gslp didn't handle tabs in a second or subsequent column
- properly.
- - The definition of ashow in gs_2asc.ps incorrectly undid the
- increment following the last character.
- - The definition of awidthshow in gs_2asc.ps failed to pop
- two entries from the stack, and also tested the character against the
- wrong value.
-
- Adds a shell script (sysvlp.sh) that interfaces Ghostscript with the
- System V 3.2 lp interface.
-
- Adds ps2ascii and ps2epsi script/batch files.
-
- Adds a new utility, mergeini.ps, for concatenating all the
- Ghostscript initialization files into a single file, optionally
- removing comments and blank lines.
-
- Adds new switches to gslp:
- -q: suppress all printed output.
- --detect: check whether the file begins with %!, and if so,
- interpret it directly as a PostScript file.
- --first-page <page#>: replaces the former -P switch.
- --last-page <page#>: replaces the former -Q switch.
- --(heading|footing)-(left|center|right) <string>: define
- headers/footers. # inserts the page number.
- --margin-(top|bottom|left|right) <inches>: define margins.
- --spacing <n>: for double, triple, etc. spacing.
- Also makes gslp ignore all the enscript flags it doesn't implement.
-
- Adds an option to wrfont.ps to do encryption at read-in time. (This
- allows much better compression of the standard Ghostscript fonts.)
- Changes bdftops to use this option.
-
- Changes gslp to accept wild cards in file names.
-
- Replaces landscap.ps with a new one contributed by a user.
-
- Changes the compression scheme used in ps2image to a much more
- effective one. Writing images is much slower than with the previous
- scheme, but reading is not.
-
- Platforms
- ---------
-
- Fixes bugs:
- - SCFDTAB and SCFTAB were omitted from the VMS module lists.
- - Function prototypes were not being used with the Watcom
- compiler.
- - On MS-DOS platforms, if the value of the TEMP variable had
- a trailing : or \, Ghostscript appended a \ anyway.
- - Under Windows, changing the size or resolution of the image
- closed and reopened the window.
- - Ghostscript would not build correctly with the Watcom compiler
- if DOS4G=quiet was not set, because the DOS4GW copyright message was sent
- to stdout.
- * - Finally gets Ghostscript to run properly on the RS/6000, by
- adding a compiler bug workaround to arc_add and arc_either.
- * - Finally gets Ghostscript to compile properly on Sun SPARC
- systems, by adding a compiler bug workaround in scan_number.
-
- Changes the default MS-DOS configuration from 8086/8088 to 80286.
-
- Adds all the SuperVGA drivers to the BC++ and Watcom executables
- (except for the VESA driver in the Watcom executable).
-
- Adds a makefile (msc.mak) for the Microsoft C/C++ 7.0 platform. This
- is currently a MS-DOS, not a MS Windows, platform.
-
- Changes gp_enumerate_files_init so it takes a gs_memory_procs *, not
- separate proc_alloc_t and proc_free_t arguments; also, it must
- enumerate precisely the requested set of files, not a superset. THIS
- IS A NON-BACKWARD-COMPATIBLE CHANGE. It affects all gp_*.c files.
-
- Adds the P*M drivers and bit.dev to the standard configuration on
- Unix platforms.
-
- Changes the Watcom makefile so it uses the WATCOM environment variable (by
- default) as the base directory for the Watcom executables.
-
- Adds the MS Windows COMMDLG.DLL and SHELL.DLL files to the set of
- files incorporated in GSEXE.ZIP, since the new MS Windows code uses
- them, and they aren't provided with Windows 3.0.
-
- Makes major revisions to the MS Windows platform and driver code, to
- support the gsview front end, and also to remove the dependence on the
- Borland EasyWin library. NOTE: Compiling the MS Windows code now requires
- Borland C++ 3.1 (not 3.0).
-
- Changes time_.h so that Ghostscript will compile and run on A/UX.
-
- Changes the MS-DOS implementation of file enumeration so it always
- treats \s in the file name as literal characters, not escapes, unless
- there are two \\s in a row. This does the most sensible thing given
- the DOS file naming conventions.
-
- Adds a %pipe% file device under Unix.
-
- Adds a makefile for Watcom C under MS Windows. This is very preliminary;
- in particular, NO display output is supported.
-
- Fonts
- -----
-
- Fixes bugs:
- - fonts.mak referred to ncri and puti rather than ncrri and
- putri.
- - cyr and cyri had the wrong protection.
- - The Hershey fonts left the font on the stack when they were
- loaded.
- * - The FontName of an aliased font was the original FontName
- from the file, not the alias.
- * - Fontmap.BTS had incorrect entries for AvantGarde-Demi and
- AvantGarde-DemiOblique.
- - Ghostscript pushed userdict, rather than an empty writable
- dictionary, onto the stack when loading a font, leading to name clashes.
-
- Adds a new cfonts.mak with a full set of rules for compiling all the
- standard Ghostscript fonts (except the Hershey fonts) into C.
-
- Adds UniqueIDs to the Hershey fonts, and removes the UniqueIDs from
- the Hershey entries in the Fontmap.
-
- Adds a new Fontmap for VAX/VMS with DECWindows/Motif.
-
- Changes MakeHersheyFont so it takes the encoding as an additional
- parameter, and changes the Hershey-Symbol font to use SymbolEncoding.
-
- Drivers
- -------
-
- Fixes bugs:
- - The !@*&^%#@$ PCL drivers *still* didn't do the right thing
- about vertical spacing: the <ESC>*p+<n>Y command works on all PCL 3,
- 4, and 5 printers *except* the LaserJet IIp.
- - The cdj driver used recursive macros (height, t_margin,
- b_margin) that not all compilers handled correctly.
- - The djtc driver used some assignments including =*, which
- some compilers dislike.
- - The S3 driver wouldn't compile correctly with the Watcom
- compiler.
- - The makefile entry for the S3 driver was wrong.
- - The SuperVGA drivers returned an error, rather than using
- the highest available resolution, if a too-high resolution was
- requested.
- - The GIF driver produced an incorrect header for images
- wider or taller than 32K pixels.
- - The GIF driver wasn't able to handle multi-page documents
- correctly.
- - The margins on the DeskJet were still not correct.
- - Some ANSI C compilers rejected a complex expression in
- gdevpccm.c.
- - Printer drivers didn't recover cleanly from problems in
- opening the scratch files.
- - The BJ-10e driver used the same name `out' for a label and
- a variable.
- - The SCO ODT compiler couldn't handle sizeof(ppdev->fname).
- - The Epson driver used the wrong value for ESC in the
- initialization string.
-
- Adds new drivers:
- - Drivers to produce MS Windows .BMP format output.
- - A new ATI Wonder display driver (800x600, 16 colors) and a
- 1024x768 mode for the existing driver.
-
- Adds new user-contributed drivers:
- - A driver for the Tektronix 4693d color printer. This carries a
- university copyright.
- - A driver for the SPARCprinter.
- - A driver for the Canon BJ200 printer.
- - A driver for the IBM ProPrinter.
- - A driver for the DEC LJ250 printer, which has a
- PaintJet-compatible mode.
- - A replacement driver for the Sony NWP533.
- - A driver that writes TIFF/F (Group 3 fax) files. This carries
- an external copyright.
- - A driver for the C.Itoh M8510 printer.
- - A driver for the Okidata MicroLine 182 9-pin dot-matrix printer.
- - A Hercules Graphics driver.
- - A driver for printers under MS Windows.
- - A driver for direct frame buffer addressing under SCO Unix
- and Xenix and AT&T SVR4.
-
- Changes the get_bits driver procedure so it always reads a single
- scan line, and optionally does not copy the data. THIS IS A
- NON-BACKWARD-COMPATIBLE CHANGE. However, this change does not affect
- any existing printer driver, since these all go through intermediate
- routines in gdevprn.c.
-
- Changes gdevprn.h, and the relevant printer drivers, so that -DA4
- will change the default paper size for any printer driver.
-
- Allows the use of NULL or 0 for default procedures in the driver
- procedure vector.
-
- Adds an optional map_cmyk_color procedure to the driver procedure
- vector.
-
- Changes the Epson driver so that the minimum amount of white space
- required to use a tab is an easily changed parameter.
-
- Changes the BGI driver to use separate segments for the Borland
- device drivers, to reduce the risk of overflowing a segment.
-
- Adds an optimization option (normally enabled) to the PGM and PPM drivers
- such that they revert to PBM or (for PPM) PGM if the page can be
- represented that way.
-
- Adds a new (optional) driver procedure to get the procedure vector
- for external fonts.
-
- Adds an argument to gp_open_printer to indicate whether the file should be
- opened in binary or text mode. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
- However, this change does not affect any existing printer driver, since
- these all go through intermediate routines in gdevprn.c.
-
- Changes the LN03/LA50/LA75 driver so it uses a text record mode to open
- the output file under VMS (by adding an argument to gp_open_printer to
- indicate this.)
-
- Allows (indeed, encourages) drivers to use far_data to declare the device
- structure, primarily to avoid overflowing the 64K data segment under MS
- Windows. Changes the file output drivers and many of the printer drivers
- to declare their device structures as far_data.
-
- Replaces the AT&T 3B1 driver with an updated version (from the same
- contributor).
-
- Changes the Epson BJ driver and the SPARCprinter driver so they align
- the (0,0) point of the page with the physical corner of the paper
- rather than with the origin of the printable area.
-
- Removes the EIZO MDB-10 driver, since it caused complications for the
- EGA and VGA drivers and is not a widely used device.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The entry for the copydevice operator in the operator table
- was initialized incorrectly.
- - printobject and writeobject didn't handle nested arrays.
- - restore didn't properly close the current file (if
- appropriate), causing an invalidaccess error.
- - buildfont required the presence of a valid, 4-element
- FontBBox. (The Red Books say it's required, but Adobe interpreters
- don't require it; some DEC software generates a 3-element FontBBox.)
- - resourceforall had several bugs; it didn't do even
- approximately the right thing. There were quite a few other problems
- with the implementation of resources.
- - setfont, makefont, and scalefont would accept a font with
- no FID entry.
- * - Loading a .PFB font left the file open (until the next
- restore or quit).
- - The default (null) font didn't include a PaintType entry,
- which some PostScript files expected.
- * - The ASCIIHexDecode filter sometimes thought the underlying
- stream was at EOF even when there was (at most one buffer's worth of)
- data left.
- - iscan.c included <ctype.h> before std.h, causing type name
- clashes on some systems.
- * - save and restore didn't handle the pointers in the graphics
- state correctly; for example, the current font wasn't restored
- properly.
- - Binary object sequences at the top interpreter level didn't
- get executed immediately.
- - On high-resolution devices, the default transfer function
- converted almost-white grays to very light grays rather than white.
- - The `string' operator was checking the string length
- against max_uint rather than max_ushort, which could cause invalid
- lengths to be accepted.
- * - deviceinfo caused a stackunderflow error.
- * - idiv could give incorrect results for quotients or
- remainders that didn't fit in 24 bits.
- * - The ASCII85Encode filter padded trailing bytes with 1's
- rather than 0's.
- * - The ASCII85Decode filter had a typo that produced incorrect
- results if there were exactly 2 trailing bytes.
- - findlibfile didn't push a copy of the file name if it was
- the name of a special (%) file.
- - setduplexmode was not defined in statusdict, causing
- /undefined errors from some poorly designed input files.
- * - The CCITTFaxDecode filter had several bugs in 2-D decoding.
- * - The ASCII85Decode filter didn't read ahead to detect EOD if
- it fell precisely on a buffer boundary.
- - If a file mentioned on the command line redefined `start',
- Ghostscript would run the new definition rather than the built-in one
- after processing all the files on the command line.
- - The SCO ODT compiler couldn't handle the conditionals in the
- ngetc (iscan.c) and sgetc* (stream.h) macros.
- - makefont and scalefont didn't cache the PostScript dictionaries
- for scaled fonts.
- - Changing the elements of the Encoding of a font dynamically
- didn't take effect if the character was already cached.
- - makefont and scalefont didn't add the (undocumented) OrigFont
- and ScaleMatrix entries to the new font.
- * - findfont insisted that the font name be a string or a name.
- - filenameforall could cause an incorrect transfer of control
- if no files matched the pattern.
- * - ISOLatin1Encoding had hyphen instead of minus at code 45.
- - restore didn't reset saved_cbot and saved_ctop correctly;
- as a result, some freed blocks could get abandoned rather than put on
- the free list.
- - Some numerical constants in zarith.c assumed that longs
- occupied 32 bits.
-
- Implements additional Level 2 features:
- - %device%file names (only the "os" device is provided).
- - <~ ~> for ASCII-85 strings.
- - Binary error messages.
- - BuildGlyph.
- - CCITTFaxDecode filter entries EndOfBlock, Rows, and
- (undocumented) FirstBitLowOrder.
- - {set/current}{color/colorspace/overprint/colorrendering/
- blackgeneration/undercolorremoval}. (See below under library
- for limitations.)
- - Decode for the dictionary form of image.
- - File access modes a, r/w/a+.
- - Font entries CDevProc, Metrics2, and WMode.
- - Font operators cshow, findencoding, rootfont, and
- setcachedevice2.
- - glyphshow (emulated with PostScript code).
- - languagelevel.
- - realtime.
- - setbbox.
- - (Subset of) system and user parameters.
- - xshow, yshow, and xyshow.
- - XUIDs for fonts.
-
- Moves the installation of systemdict and the initial allocation of
- globaldict (if relevant) and userdict from gs_init.ps to iinit.c.
-
- Makes Level 2 features dynamically selectable through the
- .setlanguagelevel operator; disables all Level 2 features
- (specifically including automatic dictionary expansion) unless the
- level2 feature is included and active.
-
- Adds the .knownget operator for speeding up system procedures.
-
- Renames the type1addpath operator as .type1addpath; adds an optional
- left side bearing argument; changes it so it does not do the
- setcachedevice, fill, or stroke, but does do a moveto for the
- character width. Changes Type1BuildChar appropriately. (All this is
- needed to make WMode work.)
-
- Removes the .setmetrics operator, which is no longer needed.
-
- * Changes the meaning of the user_errors argument to gs_run_file and
- gs_run_string so that -1 means always return on an error, 0 means
- only return on an error not within a `stopped'.
-
- Adds all the necessary checks and operators for local/global VM, but
- doesn't actually implement local/global mode.
-
- Changes setcachedevice back so that it requires 4 numbers on the
- stack rather than a 4-element array. (It was changed to be the other
- way in release 2.0, but that was because I didn't realize that fonts
- had to have an executable FontBBox, and some of the Ghostscript fonts
- didn't.)
-
- Changes all the filter operators from .filterxxx to .filter_xxx, and
- removes the need to enumerate them in gs_init.ps.
-
- Adds .oserrno and .oserrorstring operators for getting the last OS
- error (in the current context).
-
- Changes gs_finit similarly to gp_exit. Adds gs_exit_with_code that
- takes both an exit status and a Ghostscript error code.
-
- Changes the name of name.h to iname.h.
-
- Adds support for the `interrupt' error (but doesn't provide any standard
- way of generating one, other than through the gp_check_interrupts polling
- function).
-
- Adds copyright to systemdict.
-
- Changes the spot halftone screen to an elliptical screen supplied by
- Berthold K. P. Horn.
-
- Adds a check that the first token in gs_init.ps is an integer. In
- conjunction with other code in gs_init.ps, this should catch all attempts
- to run Ghostscript with a gs_init.ps that doesn't match the executable.
-
- Changes all relevant occurrences of sizeof to size_of in order to
- work with the buggy SVR4.2 C compiler.
-
- Changes gp_exit so it is passed both the Ghostscript error code and
- the exit status code as arguments. This is backward-compatible for
- all but the pickiest compilers.
-
- Adds a call on gp_check_interrupts() after fwrite calls in the stream
- machinery. This prevents lengthy console output from locking out
- other programs.
-
- Changes a couple of occurrences of op_def_ptr in iinit.c to work around a
- `const' bug in Sun's SC1.0 compiler.
-
- Adds a special hack in the 'where' operator to work around a bug in Aldus
- Freehand 2.x.
-
- Changes all empty argument lists from () to (void), which is the ANSI
- C syntax.
-
- Adds a hack to ignore ^[ and ^D^[ tokens, to work around the prologue
- and epilogue emitted by the MS Windows LaserJet IV driver.
-
- Defines the processcolors operator, which should not be needed, but
- is required because of bugs in Lotus 1-2-3 and Adobe PhotoShop.
-
- Changes the allocator (ialloc) to fill all allocated and/or freed
- blocks with a marker if gs_alloc_debug is set, as gs_malloc and
- gs_free already do.
-
- Library
- -------
-
- Fixes bugs:
- - 16-bit memory devices stored the bytes of each pixel in the
- wrong order.
- - copy_mono did the wrong thing when copying 1 source chunk
- to 2 destination chunks with polarity inverted. (This probably
- didn't affect any actual uses of Ghostscript.)
- * - The compile-time check for ints being 2 or 4 bytes used the
- #error directive, which most compilers don't recognize.
- - arc and arcn didn't do the right thing for degenerate
- (single-point) arcs, or for arcs drawn in the "wrong" direction that
- were multiples of 360 degrees.
- - charpath did the wrong thing with Type 3 fonts.
- - copyscanlines gave an error if the buffer was too large.
- - The copy_mono procedure (used for text and halftones) for
- 2- and 4-bit-per-pixel memory and printer devices incorrectly
- incremented the destination pointer after every pixel, instead of
- only after every byte.
- - The fill_rectangle procedure (used for graphics) for 2- and
- 4-bit-per-pixel memory and printer devices, if given any color other
- than all 0's or all 1's, multiplied the X coordinate and width by 2
- or 4, thereby filling the wrong area.
- - The use of 'data' in both gs_type1_data and gs_font upset
- the VMS compiler.
- - The `Flex' feature wasn't implemented for Type 1 fonts,
- which caused serious errors in rendering some fonts that use it.
- (Unfortunately, some Adobe fonts violate the specification, so we had
- to implement Flex to always use a curve.)
- * - Stem width adjustment was too eager, producing very strange
- effects on small characters with tight curves (a curve point could
- get snapped to the other side of the open area).
- - The allocator didn't align structures adequately on
- machines where sizeof(long) or sizeof(char *) was 8 bytes.
- - The test for IEEE floating point gave an incorrect
- (negative) result on machines where sizeof(long) was 8 bytes.
- - genarch.c assumed that the result of subtracting two
- pointers was an int, leading to a garbage arch.h file on systems
- where this was false.
- * - The Type 1 font interpreter incorrectly reset the adjusted
- path position to be the same as the unadjusted path position whenever
- it returned control to the client (in particular, for callothersubr),
- leading to discontinuities and distortions in the character shapes.
- * - Accented characters in Type 1 fonts often misplaced the
- accent to the left.
- - gsmisc.c wouldn't compile on machines with 64-bit pointers,
- because _pad was 0, and ANSI compilers don't accept 0-length arrays.
- - pathforall got confused if the client procedures modified
- the path.
- - The command list file representation limited X and Y
- coordinates to 15 bits.
- * - stroke could produce spikes or other garbage for mitered
- joins as a result of stroke adjustment.
- - The params_size field of the null device was wrong, so
- scaling the null device produced unpredictable results.
-
- Changes monobit memory devices to always store data big-endian. This
- eliminates byte-swapping, at the cost of slightly slower rendering.
-
- Removes the memswab* routines, since they are no longer needed.
-
- Implements gs_cshow_[n_]init, which provides support for cshow, and
- gs_xyshow_[n_]init, which provides support for {x,y,xy}show.
-
- Adds an optional left side bearing argument to gs_type1_interpret.
-
- Changes gs_type1_interpret so it does not do a setcachedevice, fill,
- or stroke, but only appends the character outline to the path
- (including a moveto for the character width.)
-
- Removes gs_setmetrics, which is no longer needed.
-
- Implements gs_setcachedevice2, which provides support for
- setcachedevice2.
-
- Speeds up gsave/grestore by allocating, deallocating, and copying as
- much as possible of the graphics state in a single operation.
-
- Implements gs_{set/current}{color/colorspace/overprint/colorrendering/
- blackgeneration/undercolorremoval}. Device, indexed (with table, not
- with procedure), CIE, and (substituted) separation colors are
- supported; some of the setup code for patterns is also present.
-
- Increases the size of temporary file names in gdevprn.h from 30
- characters to 60.
-
- Changes the character cache to be allocated dynamically in chunks.
-
- Splits gxcache.c into gxccache.c (fast "hit" code) and gxccman.c (all
- other code).
-
- Changes all occurrences of sizeof to size_of in order to work with the
- buggy SVR4.2 C compiler.
-
- Adds a new concept of "external fonts", which allow a driver to
- substitute its own fonts for the ones obtained through the normal
- font machinery.
-
- Changes all empty argument lists from () to (void), which is the ANSI
- C syntax.
-
- Version 2.5.2 (9/20/92)
- =============
-
- This is yet another bug fix release to (finally!) get the PCL drivers
- working again.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The comment in devs.mak for cdjcolor said it used 8 bits
- per pixel, rather than the correct 24.
-
- Adds gsbj/dj/lj/lp and gslp.ps to the installed files on Unix
- systems.
-
- Removes dps.dev and level2.dev from the standard configurations on
- all platforms, since the presence of the setcolor operator was
- causing the output of some common applications to fail.
-
- Utilities
- ---------
-
- Fixes bugs:
- - font2c produced invalid output for any font that didn't use
- StandardEncoding or ISOLatin1Encoding.
-
- Platforms
- ---------
-
- Fixes bugs:
- - gp_sysv.c required an extern long timezone.
-
- Drivers
- -------
-
- Fixes bugs:
- - The PCL drivers were *still* doing the wrong thing about
- zeroing the seed row for Mode 3 compression.
- - Setting the resolution with -r didn't work under Windows.
- - The Windows driver got a stack overflow if it was ever
- asked to display a bit image wider than 32 pixels.
- - The Tseng driver didn't sense the model (ET3000 vs. ET4000)
- correctly.
-
- Adds the eps9high device to the standard MS-DOS makefiles.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - gs_run_string used gs_user_errors (a global) rather than
- user_errors (its argument) to control error handling. (This does not
- affect normal operation of Ghostscript, only use as a server.)
- - eexec popped the top element of the dictionary stack
- afterwards even if the encrypted code had pushed something onto it.
- This caused problems for some badly written PostScript code.
- - The printed form of real numbers didn't always include a
- decimal point, causing compatibility problems.
-
- Makes -s and -d work for device properties.
-
- Increases the cache limit on large-memory systems.
-
- Adds a check to ensure that the revision of gs_init.ps matches that
- of the interpreter.
-
- Adds the .knownget operator.
-
- Library
- -------
-
- Fixes bugs:
- - The raster computation in clist_render_init, and the
- computation of state_size in clist_open, didn't widen an operand to
- long, leading to possibly incorrect operation for 24-bit-per-pixel
- printers on MS-DOS systems.
- - The flatness was set too large for Type 1 characters,
- leading to visible straight edges instead of curves at large sizes.
- - Type 1 fonts that contained out-of-range coordinates would
- produce garbled output. (This was not a problem with the standard
- Ghostscript fonts, or with Adobe Type Manager fonts.)
- - gschar0.c wouldn't compile, because it referred to a
- non-existing structure member penum->chr. (This had no effect on
- Ghostscript's operation.)
- - The curve flattener required line segments to be no more
- than 8 x the flatness in length, leading to an enormous number of
- segments.
- - pathforall would cause an addressing fault if the path
- consisted of only a moveto.
-
- Refactors some header files so that std.h is always included before
- any system header file that might include sys/types.h.
-
- Adds logic for removing top and bottom blank rows in cached
- characters. (This is the beginning of compression for the cache.)
-
- Changes the arguments of memswab2/4 from char * to byte *, for more
- accurate type conformance.
-
- Version 2.5.1 (9/11/92)
- =============
-
- This is the usual bug fix re-release.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The makefile rules for compiled fonts had a circular
- dependency.
- - `make begin' didn't work properly on all platforms.
-
- Ensures that all batch files end with a newline. (The absence of the
- newline was confusing the GNU diff program.)
-
- Documents the fact that the -dASCIIOUT switch no longer exists.
-
- Utilities
- ---------
-
- Fixes bugs:
- - pstoppm didn't `bind' its internal procedures.
- - grestoreall would undo the output device selected by
- pstoppm.
-
- Changes the utilities for reading and writing Type 1 character
- outlines so they can work with stack representations as well as
- arrays.
-
- Removes the pfbtogs.ps, phonbook.ps, and showpbm.ps utilities from
- the distribution.
-
- Adds a gslj utility to parallel gslp and gsdj.
-
- Platforms
- ---------
-
- Adds the DeskJet 500C drivers (cdeskjet/cdj*) to the MS-DOS / Borland
- C++, MS-DOS / Watcom C/386, and MS-Windows configurations.
-
- Removes the PCX file driver from the MS Windows executable, because
- the static data segment exceeded 64K.
-
- Makes some changes in the Unix System V platform file (gp_sysv.c) and
- in time_.h and unixtail.mak to accommodate the 3B1.
-
- Fonts
- -----
-
- Fixes bugs:
- - The Charter-Italic font was named bchi.pfa rather than
- bchri.pfa.
- - The Cyrillic fonts (cyr.gsf, cyri.gsf) were omitted from
- the fileset.
- - Ghostscript incorrectly assumed that all Type 1 fonts had a
- FontInfo dictionary.
- - .loadfont used false PFBDecode, so a few .PFB fonts would
- get errors because the first eexec byte would be whitespace.
-
- Changes font2c and its supporting code so that compiled fonts are
- location-independent.
-
- Drivers
- -------
-
- Fixes bugs:
- - The margins for the H-P printers were still wrong.
- - The H-P drivers accidentally cleared the compression seed
- row when switching compression modes.
- - Some of the H-P drivers used the wrong control codes for
- skipping blank lines.
-
- Adds user-supported drivers for the AT&T 3B1 console device, and for
- the NEC P6+ printer.
-
- Updates the SunView driver with a new version supplied by a(nother)
- user.
-
- Changes the X Windows driver so the Ghostscript window doesn't get
- input focus.
-
- Changes the common code for the printer drivers so that if it can
- allocate a full bitmap but there isn't at least a minimum amount of
- memory left afterwards, it switches to banding.
-
- Changes the Windows driver so it handles devices with more than 8
- bits per pixel. (We haven't been able to test this.)
-
- Adds a read-only PageCount device property (for printer devices
- only).
-
- Changes all Aladdin-supported drivers to clip drawing requests to the
- ((0,0), (width,height)) rectangle of device space.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - Closing a NullEncode filter always gave an ioerror.
- - If a single-character name occurred 1 character before the
- end of an input buffer, the character would be doubled.
- - The procedures in gs_statd.ps didn't use "bind".
- - Setting the page size didn't work properly with devices
- with rotated coordinate systems.
- - If an error occurred, and the error object wasn't the last
- element of its procedure, the interpreter would re-execute the error
- object after running the error handler.
- - Memory devices didn't get resized if HWSize was changed,
- leading to out-of-bounds memory accesses.
-
- Moves revision and revisiondate from gs_init.ps to iinit.c. Adds a
- -v switch that just prints these out.
-
- Arranges things so that if Ghostscript is reading from a pipe (`-'
- switch on the command line) and encounters an error, it exits with
- status 1 rather than 0.
-
- Changes the interpreter interface so the caller explicitly passes a
- pointer for storing an error object.
-
- Library
- -------
-
- Fixes bugs:
- - The automatic adjustment of the scaling for variant paper
- sizes caused the image to get expanded when it should have been
- contracted, and vice versa.
- - The curve flattener insisted that each line segment be no
- more than 2 x the flatness in length, leading to an enormous number
- of segments even when not necessary for accuracy.
- - flattenpath and strokepath discarded a trailing moveto.
- - strokepath treated "0-width" lines as really having a width
- of zero, rather than one pixel.
- - Buffered devices weren't closed and reopened if the amount
- of buffer space was changed.
- - stroke used the line cap at the beginning of each subpath
- even if the subpath was closed.
-
- Removes the requirement that the clipping rectangle fall in the
- non-negative quadrant of device space. (This was causing problems
- for Ghostview, but removing it required adding the extra clipping
- step to the drawing routines in the drivers.)
-
- Version 2.5 (8/18/92)
- ===========
-
- This version adds Type 1 hinting, CCITTFax encoding and decoding, and
- Microsoft Windows support, as well as the usual minor improvements
- and bug fixes.
-
- Procedures
- ----------
-
- Fixes bugs:
- - GSIMPATH, SLZWD, and SLZWE were omitted from the VMS
- makefiles, and GSIM2OUT was not removed.
- - landscap.ps messed up the current path.
-
- Adds new switches:
- -dSAFER disables file writing and directory modification.
- -dESTACKPRINT causes errors to print the execution stack with
- == instead of =.
- -sOutputFile=<string> replaces -sOUTPUTFILE (which is still
- recognized) for setting the output file or pipe for the default
- (printer) device.
- -sPAPERSIZE=<sizename> initializes the paper size.
- -dBufferSpace=<number> sets the buffer size for the default
- (printer) device.
-
- For Unix systems, changes the directories in GS_LIB_DEFAULT from
- `pwd` to $(gsdatadir), i.e., normally $(datadir)/ghostscript, where
- datadir is normally /usr/local/lib.
-
- Adds a note in the header file to the effect that the X Windows
- driver expects to find header files in $(XINCLUDE)/X11, not in
- $(XINCLUDE).
-
- Changes -q so it defines QUIET as true instead of null (so it can be
- used in the middle of the command line as well as at the beginning).
-
- Renames the history.doc file as NEWS.
-
- Utilities
- ---------
-
- Platforms
- ---------
-
- Fixes bugs:
- - The stack size was not getting increased on the Watcom
- platform.
-
- Removes "b" from the scratch file opening modes in gp_unix.c and
- (conditionally) in gdevprn.c, to pacify the DECstation Ultrix system.
-
- Adds a makefile (bcwin.mak) and a platform file (gp_mswin.c) for
- Microsoft Windows.
-
- On MS-DOS platforms (including Windows), uses the TEMP environment
- variable to designate the directory for scratch files.
-
- Changes std.h so that the VMS C compiler uses function prototypes and
- 'const'.
-
- Changes the VMS cc makefile so it doesn't use ansi2knr.
-
- Fonts
- -----
-
- Fixes bugs:
- - findfont left an extra entry on the stack if it couldn't
- find the default font.
-
- Renames bchi, ncri, and puti as bchri, ncrri, and putri, to conform
- with the naming scheme for other fonts.
-
- Adds $(CCFLAGS) to the command line used for compiling fonts.
-
- Converts the .pfa fonts (CharterBT, IBM Courier, and Utopia) to .gsf,
- by removing eexec encryption and also removing some mysterious
- unmapped characters from Courier. This makes these fonts work with
- DISKFONTS.
-
- Changes the implementation of compiled fonts so they are read-only
- and sharable (no external references). (They are, however, not
- position-independent.)
-
- Provides a way to use compiled fonts on platforms that limit the
- number of characters in an identifier.
-
- Adds public-domain Cyrillic and Cyrillic-Italic fonts.
-
- Adds a 'userdict begin' to .loadfont, because Type 3 fonts produced
- by Fontographer expect a writable dictionary on the top of the stack.
-
- Changes definefont for Type 1 fonts to insert UnderlinePosition and
- UnderlineThickness entries in FontInfo if they are absent, because
- many word processors incorrectly assume these entries are present.
-
- Drivers
- -------
-
- Fixes bugs:
- - The documentation in use.doc said that the densities for
- 9-pin Epson printers were 60x60 to 240x60, rather than 60x72 to
- 240x72.
- - gdevprn.c smashed one byte beyond the end of the string
- given as the OutputFile device property.
- - The X11 driver used XVisualIDFromVisual, which is not
- defined in X11R3.
- - The SunView driver modified the input data, which was
- declared as const.
- - The LaserJet IIP and III drivers shifted the page 185
- pixels to the left and 0.25" down, because the initialization string
- was incorrect.
- - The PCX driver wrote 16-bit values using the byte ordering
- of the platform, rather than always LSB first.
- - For vertical spacing, the LaserJet and DeskJet drivers used
- a command that spaces N/300", rather than N scan lines, but gave it a
- parameter in scan lines.
- - The VESA driver didn't allocate a full 256-byte buffer for
- reading the mode information from the BIOS, causing the stack to get
- smashed by newer VESA implementations.
- - The VESA driver didn't use the scan line length returned by
- the BIOS, causing garbage output for some cards and some resolutions.
- - The generic printer driver didn't free the bitmap when
- closing the device, if it fit entirely in memory.
- - The PaintJet driver allocated its data areas on the stack
- instead of with gs_malloc.
- - The generic printer driver didn't attempt to increase the
- buffer size if it was too small.
- - The band list driver didn't split large bitmaps properly,
- leading to garbled characters at high resolutions.
- - The GIF and PCX drivers used a color map that often turned
- gray colors into non-grays.
-
- Changes the default put_props procedure so that if the device is
- open, setting HWSize and/or HWResolution closes the device and
- reopens it.
-
- Adds a driver for Microsoft Windows 3.n.
-
- Updates the 'cdj' and 'dj500c' DeskJet 500C drivers with new versions.
- (This are user-contributed drivers.)
-
- Changes gdev_prn_put_props so OutputFile can be changed dynamically.
-
- Updates the DEC LN03 driver to also handle the LA50 and LA75. (This
- is a user-contributed driver with a FSF copyright.)
-
- Changes the LaserJet/DeskJet driver so that -DA4 in the makefile
- makes A4 paper the default. The driver now also sends an appropriate
- page size selection command to the printer if the printer supports it.
-
- Changes all the Aladdin-supported drivers to return appropriate error
- codes rather than -1.
-
- Adds a driver for the S3 86C911, a PC graphics accelerator used in
- the popular Diamond Stealth board. This is the first driver that
- uploads character bitmaps to a device; others will probably follow.
-
- Adds user-supplied code to the Epson driver so it will do triple
- passes on 9-pin printers for higher resolution.
-
- Adds user-supplied code for the PaintJet XL to the PaintJet driver.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - zdps1.c didn't include alloc.h.
- - On 32-bit systems, if maxlength of a dictionary was less
- than the actual allocated space, length could become larger than
- maxlength.
- - flushfile didn't actually flush data when reading.
- - The ASCII85Decode filter signalled EOF prematurely.
- - The scanner interpreted .3D.glorp as the number 0.3, rather
- than as a name.
- - Closing a file freed the stream structure, creating
- dangling references if there were other file objects pointing to the
- same stream.
- - eexec called handleerror if an error occurred, instead of
- letting the error propagate to an enclosing stopped.
- - gs.h made perror illegal, instead of defining it in terms
- of strerror.
- - One-character names weren't being allocated at
- initialization, so they could be left dangling after a restore.
- - Internal gsaves (i.e., the ones in show and setcachedevice)
- didn't also save istate, so setfont inside a BuildChar procedure
- might cause the font outside to get changed.
- - The allocator incorrectly freed objects in the current
- chunk that were older than the current save.
- - mark was just an object, rather than an operator, so 'bind'
- didn't bind it. (This is theoretically a problem for null, true, and
- false also, but even more unlikely to be a problem in practice.)
- - packed_get didn't cast packed integers to int, so negative
- integer elements of packed arrays came out wrong.
- - quit just did a gs_exit, instead of returning to the driver
- in an orderly way.
- - Because check_type_access checked for errors in the wrong
- order, sometimes type errors were reported as access errors.
- - eq didn't check for stack underflow.
- - Some of the stream_procs structures weren't properly
- declared const, leading to link errors on VMS.
-
- Implements currentcolor, currentcolorspace, setcolor, and
- setcolorspace (for DeviceGray, DeviceRGB, and DeviceCMYK only).
-
- Implements the dictionary form of image and imagemask. All the pairs
- in the Decode array must be the same; Interpolate is ignored. The
- only supported color spaces are DeviceGray, DeviceRGB, and
- DeviceCMYK.
-
- Implements files as allowable sources for the image operators.
-
- Removes the index field from the name structure, moving it to the
- 'size' field of name refs.
-
- Changes the unread/sungetc operation to require that the character be
- the same as the last one read from the file.
-
- Adds fflush calls to some debugging printout routines, because Unix
- sometimes buffers terminal output.
-
- Implements the CCITTFaxEncode and CCITTFaxDecode filters. Implements
- the general case of the SubFileDecode filter.
-
- Changes definefont to treat a UniqueID of 0 as equivalent to no
- UniqueID, because Fontographer output apparently often violates the
- specification in this way.
-
- Changes the default printer screen from 32.5 to 46 cells/inch. (The
- old value was appropriate for a hand-rotated cell with two spots in
- it.)
-
- Changes the utility routines to allow an integral real wherever an
- integer parameter is expected in a dictionary, because Fontographer
- produces fonts that violate the Adobe specification in this way.
-
- Adds a `dosio' feature that provides direct access to memory and to
- I/O ports under MS-DOS. (This feature is not included in the
- standard executables, of course.)
-
- Changes the default character cache limit to a 1/4" x 1/4" character
- at the default resolution, rather than basing it on the preallocated
- cache size.
-
- Removes support for t_color objects, which haven't actually been used
- for several releases.
-
- Implements setcmykcolor and currentcmykcolor as operators, so they
- will interact properly with setcolorspace and currentcolorspace.
-
- Changes the name of the file.h header file to files.h, to work around
- a bug in the VMS header library.
-
- Adds command line switches @file (to treat file as more command line,
- to get around the DOS 128-character command line limit) and -ffile
- (so one can specify file names that begin with - or @).
-
- Changes the PFBDecode filter so it takes an additional boolean that
- says whether or not to convert binary packets to hex. (Conversion to
- hex and back to binary accounted for a substantial amount of the time
- required to load .PFB fonts.)
-
- Splits off `copydevice' as a separate operator again.
-
- Library
- -------
-
- Fixes bugs:
- - In the VMS environment, string_.h used its own prototypes
- for the str... and mem... functions instead of <string.h>
- - gx_alloc_char_bits declared cdsize as long, but didn't
- shorten it when passing it to shorten_cached_char.
- - Stroking didn't suppress fattening of the lines.
- - kshow didn't update the cached CTM information in the show
- enumerator when returning from the callout, so further characters
- could get drawn in the wrong place.
- - When a memory device returned its initial matrix, it
- smashed the padding fields, which contained the interpreter's type
- information.
- - setcachedevice didn't set the initial matrix in the cache
- memory device.
- - image_set_rgb (in the image operators) didn't do a
- gx_color_from_rgb, so in principle one could sometimes get incorrect
- colors in an image.
- - The decision about whether or not to cache a character
- bitmap incorrectly compared the character size against cmax rather
- than cdata_size.
- - show didn't reset the in_cachedevice flag in the graphics
- state, so characters rendered by a recursive show were never cached.
- - clip and eoclip didn't release the intermediate flattened
- clip path, causing memory to be lost.
- - The tile_diff routine didn't handle the case of two
- identical tiles properly; this produced garbage in the band list
- file.
- - stringwidth didn't round the character origin to an
- integral pixel; this interacted badly with hinting, causing
- improperly hinted characters to wind up in the cache.
- - Bitmaps (including characters) were displaced, as well as
- being clipped, if they intersected the top of a clipping region.
- - In gxclist and gdevmem1, the raster computation (although
- not the result) could overflow an int on 16-bit machines.
-
- Implements decoding (sample mapping) for image and imagemask.
-
- Implements hinting for Type 1 fonts, based on (but not copying) the
- algorithms from the X11R5 tape.
-
- Changes curve rasterizing to use sampling, rather than recursive
- subdivision, for characters. This produces noticeably better output.
- Speed penalty for non-cached characters is less than 10% at display
- resolutions, up to 50% for 300 dpi printers.
-
- Implements gs_setcmykcolor and gs_currentcmykcolor. These are
- semi-fake, since they simply convert the color to and from RGB, but
- the former does set the current color space properly.
-
- Changes clipping regions so they use the any-part-of-pixel rule
- rather than the center-of-pixel rule. This helps avoid dropouts when
- using very small regions.
-
- Implements stroke adjustment.
-
- Version 2.4.2 (5/8/92)
- =============
-
- This is another quick release. It finally fixes rotated halftone
- screens, and cleans up a few minor problems from 2.4.1.
-
- This release is being distributed only to beta testers and commercial
- licensees, since I don't want to be distracted from working on 2.5.
-
- Procedures
- ----------
-
- Fixes bugs:
- - UTRACE still appeared in the VMS makefiles.
- - The support files (*.bat, *.doc, *.gsf, *.ps, Fontmap,
- COPYING, README) weren't included in the MS-DOS tar file.
- - The Unix install script didn't install landscap.ps.
-
- Replaces the type1imagepath operator with PostScript code (impath.ps,
- type1ops.ps) based on the new .imagepath operator.
-
- Renames LICENSE as COPYING.
-
- Utilities
- ---------
-
- Fixes bugs:
- - pcharstr.ps had an occurrence of Subrs rather than /Subrs,
- causing it to not print the Subrs, or to get an error if there were
- none.
- - font2c.ps didn't get the const declarations for string
- dictionaries quite right.
- - The missing newline at the end of gsbj.bat confused GNU
- diff.
- - ansi2knr would go into an infinite loop if a statement
- exceeded its internal buffer size.
- - Compiled fonts would get processed by ansi2knr, which
- messed them up.
-
- Platforms
- ---------
-
- Fixes bugs:
- - Ghostscript didn't supply equivalents for rename and
- gettimeofday, which some System V platforms lack.
- - The missing newline at the end of gp_dosfb.c confused GNU
- diff.
-
- Changes the Borland makefiles so that stack checking is only enabled
- if DEBUG or TDEBUG is set.
-
- Fonts
- -----
-
- Changes the names of the Utopia fonts from utrg/utb/utbi/uti to
- putr/putb/putbi/puti, for consistency with the rest of the font names.
- Changes cour/courb/courbi/couri to ncrr/ncrb/ncrbi/ncri likewise.
-
- Replaces the Charter fonts with the CharterBT fonts donated by
- Bitstream to the X11R5 distribution.
-
- Adds font aliasing capability to Fontmap. Replaces
- Courier-[Bold]Oblique and ZapfChancery-MediumItalic by aliases.
-
- Changes the FontBBox of the Hershey fonts to be an executable, rather
- than a literal, array.
-
- Drivers
- -------
-
- Fixes bugs:
- - The GIF driver omitted a `private' on the definition of
- gif_print_page.
- - The GIF driver wrote 16-bit values using the byte ordering
- of the platform, rather than always LSB first.
- - George Cameron's DeskJet 500C driver had an incorrect
- control sequence for skipping blank lines.
-
- Adds 'const' in many places, including the tile and bitmap arguments
- of the tile_rectangle, copy_mono, and copy_color driver routines.
- THIS IS A DRIVER INTERFACE CHANGE. (Printer drivers are not
- affected, since they don't implement these routines.)
-
- Adds a driver for the Trident TVGA.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - alloc_free sometimes incorrectly chose to put an unaligned
- block in an old segment on a freelist.
- - The default undercolor removal function returned its
- argument rather than returning 0.
-
- Adds NullEncode and SubFileDecode to the standard filters, since
- bdftops uses the latter.
-
- Adds RunLengthEncode and RunLengthDecode to the optional filters.
-
- Removes the type1imagepath operator. (It is still available as
- PostScript code, impath.ps.) Replaces it with a simpler outline
- tracing operator .imagepath.
-
- Adds 'const' in many places.
-
- Makes fileposition (but not setfileposition) legal for NullEncode
- filters.
-
- Changes the default transfer function for high-resolution devices
- from the identity function to the square root function.
-
- Moves array_get from zgeneric.c to iutil.c.
-
- Changes uses of fopen to add a "b" to the access mode, rather than
- relying on the _fmode global variable on MS-DOS platforms.
-
- Allows use of the -Z switch even when gsmain.c wasn't compiled with
- -DDEBUG, since other modules might have been.
-
- Reorganizes gs.c and gsmain.c so that the latter can be used in
- server environments.
-
- Replaces all uses of stdin/out/err with gs_stdin/out/err.
-
- Makes the number of permanent entries on the dictionary stack a
- parameter, to allow inserting globaldict in the future.
-
- Changes BlueShift in the Type 1 font Private dictionary to allow real
- numbers. (This differs from the Adobe specification, but at least
- one commercial font has a real number for BlueShift.)
-
- Library
- -------
-
- Fixes bugs:
- - The doubling check in init_ht (gxht.c) still sometimes
- thought there was enough room to double the tile when there actually
- wasn't.
- - Rotated halftone screens didn't work.
- - gxarith.h used #ifdef vax, rather than #if
- !arch_floats_are_IEEE, to test whether IEEE floats were being used.
- - pathforall didn't report a trailing moveto.
-
- Replaces gs_type1imagepath with gs_imagepath.
-
- Allows sOUTPUTFILE=-, meaning output to stdout.
-
- Adds 'const' in many places.
-
- Replaces all uses of stdin/out/err with gs_stdin/out/err.
-
- Version 2.4.1 (4/21/92)
- =============
-
- This is a quick release to fix minor problems discovered in 2.4, and
- to add a few improvements that didn't quite make it into 2.4. It
- also adds GIF and PCX file support.
-
- Procedures
- ----------
-
- Fixes bugs:
- - Some makefile dependencies, and the ccgs script, caused trouble
- for parallel versions of `make'.
- - Compiling genarch with -O with gcc on the RS/6000 produced a
- buggy executable.
-
- Fixes some minor problems in make.doc.
-
- Adds DEVICE_DEVS2..5 to handle long device lists.
-
- Removes the need to set GS_RUN_EXE when using the Watcom compiler on
- MS-DOS systems.
-
- Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps.
-
- Gets rid of gconfig.ps; this information is now compiled in gconfig.c.
-
- Utilities
- ---------
-
- Fixes bugs:
- - The palette for pstoppm in 8-bit mode didn't contain all 8
- primary colors.
- - font2c used just values_ to mean &values_[0]; some compilers
- couldn't handle this.
-
- Makes font2c insert `const' in many appropriate places.
-
- Drivers
- -------
-
- Fixes bugs:
- - The SunView driver had not been updated properly for 2.4 and was
- pretty thoroughly broken.
- - None of the printer drivers worked properly with the Watcom
- compiler, because stdprn was doing \n -> \r\n substitution.
- - If the generic printer driver couldn't allocate the requested
- size command list buffer, it gave up rather than trying to allocate a
- smaller buffer.
- - The SuperVGA drivers (except for the VESA driver) didn't
- work with the Watcom compiler, because a couple of places in the
- drivers weren't truncating the offset of "segmented" pointers
- properly.
- - Some of the H-P used <esc>*b#Y rather than <esc>*p+#Y for
- vertical positioning; this apparently is wrong, at least for the
- LJIIp.
-
- Removes the dependence of the X Windows driver on Xt, Xext, and Xmu. As a
- result, Ghostscript will not install a standard colormap itself, but it
- will use one if one is already installed.
-
- Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file
- formats.
-
- Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX
- file formats.
-
- Adds drivers for monochrome and 256-color GIF file formats.
-
- Fonts
- -----
-
- Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
-
- Interpreter
- -----------
-
- Fixes bugs:
- - A value with l_new set could 'escape' to save level 0 on a
- stack; if stored, it prevented the slot from being saved and restored
- properly.
- - 16#7fffffff + 1 gave the floating point equivalent of -2^31, not
- 2^31.
- - The PFBDecode filter computed the packet length incorrectly if
- the 0x8000-bit of the length was set.
- - 5-byte numbers in Type 1 CharStrings complained of a rangecheck
- if they exceeded 16 bits, rather than if they exceeded the integer part of
- a fixed.
- - (, ), and \ appearing in file name arguments in the command
- line did not work properly.
-
- Adds 'const' in many places.
-
- Changes the random number generator to be the same as the one used in
- Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript).
-
- Exits with code 1 rather than code 0 on an unrecoverable error detected at
- the PostScript level.
-
- Makes dictionaries expand automatically when they fill up.
-
- Adds gp_exit to complement gp_init.
-
- Changes dictionaries to always allocate a power of 2 entries on
- 32-bit machines. Changes the name table to allocate indices
- scattered, so dictionary lookup doesn't have to do a multiply to
- scramble the index.
-
- Changes the handling of currentfile to do "shallow binding" so stack
- searching is almost never required.
-
- Library
- -------
-
- Fixes bugs:
- - arc and arcn got a numeric exception if the radius was zero.
- - The undocumented 15 opcode in Type 1 fonts wasn't ignored.
- - PaintType 3 wasn't allowed. (It isn't clear what it should
- mean; we treat it as equivalent to 0.)
- - The VAX/VMS C compiler was generating incorrect code for the
- chi_bits and cmask macros in gdevmem, producing incorrect output.
- - If the result of the slow algorithm for intersecting clipping
- paths was a rectangle, the wrong thing happened (cbox didn't get set).
- - gx_path_is_rectangle didn't recognize open rectangles.
- - clist_change_tile didn't check properly whether the tile
- size had changed, so changing the screen could produce invalid band
- files.
- - The image operators did the wrong thing in the 1-for-1
- case, interleaving N bytes of data with 7*N bytes of garbage.
- - stroke sometimes handled bevel and miter joins wrong in
- reflected coordinate systems.
- - init_ht checked incorrectly whether there was enough room
- to Y-replicate tiles, so sometimes it did it when it shouldn't have.
- - stroke sometimes thought lines were thin when they weren't.
-
- Adds 'const' in many places.
-
- Adds support for 2- and 4-bit-per-pixel memory devices.
-
- Version 2.4 (3/25/92)
- ===========
-
- This is a major release that adds SuperVGA support, support for Metrics,
- settable device properties, and incremental font loading. It also
- includes important performance improvements, based on rewrites of some key
- algorithms, and quite a few new Level 2 / Display PostScript facilities.
-
- Procedures
- ----------
-
- Fixes bugs:
- - The rule for compiling gconfig.c didn't include the -I switches.
- - .bat files were being distributed with a \n line terminator
- rather than \r\n.
- - A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS
- command files.
- - Unix systems couldn't handle multiple drivers with overlapping
- sets of files.
- - -s<name> defined <name> as a null, rather than as an empty string.
-
- Adds gconfig.ps to the list of needed configuration files.
-
- Changes the way that the makefile handles nested .h files, so that it
- doesn't have to `touch' them.
-
- Adds the loadallfonts procedure to gs_fonts.ps.
-
- Changes the standard DOS configuration to include VGA, EGA, VESA, Epson,
- BubbleJet, and H-P printer drivers.
-
- Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak.
-
- Adds a USE_ASM flag so that one can build a DOS version of Ghostscript
- without having an assembler.
-
- Splits off common code from the two MS-DOS makefiles into tccommon.mak.
-
- Replaces the COPYING and LICENSE files with a new LICENSE file containing
- version 2 of the GNU General Public License.
-
- Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no
- longer needed.
-
- Adds a GS_DEVICE environment variable to supply a default device name if
- desired.
-
- Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and
- unix-[g]cc.mak, for other ANSI C compilers.
-
- Changes the way that optional features are defined in the makefiles, so
- that they actually work.
-
- Adds support for the Watcom C/386 compiler.
-
- Allows # in the command line as equivalent to =, to compensate for
- brain-damaged MS-DOS shell.
-
- Adds -sOUTPUTFILE= to set the output file or pipe.
-
- Adds -dWRITESYSTEMDICT to leave systemdict writable.
-
- Utilities
- ---------
-
- Fixes bugs:
- - pcharstr.ps insisted on having Subrs be present in the font.
- - pcharstr.ps decoded negative numbers between -108 and -1131
- incorrectly.
- - pfbtogs.ps didn't handle packets longer than 64K correctly.
-
- Changes the bdftops utility so that it makes entries for UnderlinePosition
- and UnderlineThickness in FontInfo, and so that it always records a
- FullName (the FontName if no other is provided).
-
- Changes the name of the pfbtops utility to pfbtogs, because groff already
- includes a program called pfbtops.
-
- Adds the gslp utility for doing "line printing" of text files, similar to
- enscript + lpr.
-
- Adds a new variable DITHERPPI that enables a different dither pattern,
- claimed to be better for printers.
-
- Adds the font2c utility for compiling Type 1 fonts into C, so they can be
- linked into an executable rather than loaded dynamically.
-
- Drivers
- -------
-
- Fixes bugs:
- - gdev_prn_copy_scan_lines was erroneously masking the last byte
- of data even on color printers, as was paintjet_print_page.
- - The TruFax driver had a couple of compilation errors, since it
- hadn't been compiled in a while.
- - The BGI driver sometimes didn't consult BGIPATH when looking for
- .BGI files.
- - initclip did the wrong thing with memory devices.
- - The BGI driver didn't look in BGIDIR for .BGI files.
- - The Epson driver didn't set the right margin properly with
- ESC+Q.
- - The BJ-10e driver was badly broken.
- - gdev_prn_open/close_printer didn't reset the command list file,
- so it was taking quadratic time to print multi-page documents.
-
- Adds color to the SunView driver.
-
- Adds selectable resolution (75, 100, 150, or 300 DPI) to the
- DeskJet/LaserJet driver.
-
- Changes gssetdev so that drivers can specify special libraries to be
- loaded, as well as object files.
-
- Adds a driver for VESA-compliant SuperVGA displays. This driver handles
- all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode. The
- default is VGA resolution (640 x 480).
-
- Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards
- using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and
- the Orchid ProDesigner II (256-color modes only).
-
- Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600,
- 16-color modes (for cards with only 256K of memory).
-
- Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II,
- and H-P DeskJet 500C printers.
-
- Adds Tim Theisen's Ghostview changes to the X11 driver.
-
- MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as
- follows:
-
- - Changes map_rgb_color and map_color_rgb to always work in a
- 16-bit color value space, rather than a space defined by the
- maximum number of distinct colors provided by the device.
-
- - Adds an argument to the output_page procedure to indicate
- whether the procedure is being called for copypage or
- showpage, and a num_copies argument.
-
- - Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that
- drivers can cache bitmaps in the server or device if they want
- to.
-
- - Removes fill_trapezoid and tile_trapezoid.
-
- - Adds a new get_bits procedure for reading the bits back from the
- driver buffer (when possible), replacing copy_scan_lines.
- This procedure takes a new argument describing padding and
- byte swapping, and returns a different value from
- copy_scan_lines.
-
- - Adds get_props and put_props procedures for accessing arbitrary
- additional properties of devices. The interface is quite
- complex, but provides a great deal of flexibility.
-
- See drivers.doc for details.
-
- Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line.
-
- Adds a user-contributed driver for DigiBoard, Inc.'s fax software.
-
- Fonts
- -----
-
- Changes Type1BuildChar so it uses the information from the Metrics
- dictionary in the font, if Metrics is present.
-
- Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them
- directly. Also changes .loadfont to disable packing temporarily, because
- some fonts rely on procedures being writable (!).
-
- Interpreter
- -----------
-
- Fixes bugs:
- - The hypot function is not available on some Unix systems.
- - Ghostscript didn't flush and close files when exiting.
- - In statusdict, the /margins procedure used .leftmargin, but
- /setmargins used .lmargin.
- - An out-of-range putinterval would simply do nothing, rather than
- reporting an error.
- - If an attempt to allocate a block larger than the allocator's
- chunk size (20K) failed, the allocator would erroneously think it had
- succeeded.
- - The bind operator made the top-level procedure read-only, as
- well as interior procedures.
- - gs.c copied 1 extra character for the value of strings defined
- on the command line with -s...=, which could smash the first byte of the
- next object in memory.
- - copying a dictionary erroneously required the maxlength of the
- destination to be greater than or equal to the maxlength of the source,
- rather than the length of the source.
- - undef didn't correctly decide when to mark a deleted entry as
- deleted vs. free; as a result, some keys couldn't be looked up properly
- after an undef.
- - type1encrypt and type1decrypt didn't set the size of the result
- properly.
- - cvi and cvr didn't allow leading or trailing whitespace in
- strings.
- - cvs didn't cause an error if the destination string was too
- short.
- - Many operators didn't check correctly for stack underflow (off
- by 1).
- - `for' used reals, rather than integers, if the limit was a real,
- even if the initial value and increment were integers.
- - `restore' didn't properly invalidate copies of the save object
- being restored from; `save dup restore restore' would crash.
- - `restore' sometimes didn't undo stores into matrices that were
- stored into by operators. (The identity matrix always had l_new set.)
- - readline gave a rangecheck if the input line exactly filled the
- string.
- - `--' as the last switch on the command line caused a crash
- rather than an error message.
- - On MS-DOS systems, filenameforall didn't handle patterns with a
- drive or directory specifier properly.
- - stroke sometimes called gz_draw_line_fixed even if the line went
- outside the clipping box by 1 pixel.
-
- Changes the loop that binds procedure "operators" to entirely disable the
- handling of the typecheck error, rather than to use stopped. This cuts
- initialization time significantly, and also eliminates about 35K of wasted
- space (for saving the stacks).
-
- Changes the version "operator" so it returns 47.0. Adds "revision" to
- define the Ghostscript version # x 100.
-
- Adds gscurrentresolution and gssetresolution procedures for getting and
- setting the device resolution.
-
- Adds -r<res> and -r<xres>x<yres> as command line options for setting
- device resolution.
-
- Adds a facility for incrementally loading the individual CharStrings of a
- Ghostscript font from the disk. This can save a lot of memory, at the
- expense of slower rendering. (It is intended primarily for MS-DOS
- systems.)
-
- Changes findlibfile to return the name of the file that was actually
- opened, as well as the file itself, when the operation succeeds.
-
- Changes the name of the main entry to the interpreter from interpret to
- gs_interpret, because of a conflict with a Data General library procedure.
-
- Adds the .setmetrics operator to set the metrics for the current
- character for Type 1 fonts.
-
- Adds more LaserWriter-specific entries to statusdict.
-
- Gives names to all the internal `operators', so they will print out
- reasonably when an error occurs.
-
- Extends the status operator to accept a string and return file
- information, as defined for Level 2 PostScript.
-
- Adds the filter operator and some specific filters: ASCII85Encode,
- ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode,
- PFBDecode, and the null case of SubFileDecode.
-
- Extends the scanner to recognize the Level 2 << and >> tokens.
-
- Adds a facility for extracting the text strings from a PostScript file and
- writing them out in a simple format (selected by -dASCIIOUT, implemented
- by gs_2asc.ps).
-
- Implements all of the remaining Display PostScript facilities that are
- also in Level 2 (i.e., everything in section A.1.3 of the PostScript
- Language Reference Manual, Second Edition, that is not also in section
- A.1.2). The virtual memory operations are all stubs; the new halftone
- options are not fully implemented.
-
- Changes makeimagedevice to use a string of gray or RGB values, rather than
- an array of color objects, to specify the palette. Removes
- currentgscolor and setgscolor from the interpreter, but leaves t_color
- objects in, since they may be useful later.
-
- Adds getdeviceprops and putdeviceprops for manipulating device properties.
- Currently defined properties for all devices: InitialMatrix, HWResolution,
- HWSize, Name. Currently defined properties for printers: BufferSpace,
- MaxBitmap, OutputFile. OutputFile allows |command for piping on Unix
- systems.
-
- Removes deviceparams and makedevice. Adds devicedefaultmatrix.
-
- Implements reversepath.
-
- Makes copy work on devices.
-
- MS-DOS specific
- - - - - - - - -
-
- Fixes bugs:
- - iutilasm.asm wouldn't assemble with newer versions of MASM if
- CPU_TYPE was set to 286 or above.
- - CPU_TYPE=386 didn't properly substitute the faster
- multiply/divide routines under Turbo C++ or Borland C++, only under the
- original Turbo C.
-
- Library
- -------
-
- Fixes bugs:
- - A curve whose first and last points were the same wouldn't get
- drawn at all.
- - A bug in the Turbo C++ compiler generated bad code when shifting
- a long right by 1 bit.
- - If stroking a dashed line ever encountered a segment that was
- completely blank, Ghostscript would indirect through a null pointer.
- - arc and arcn gave an error if the radius was negative.
- - stroke always used the general algorithm, even if the line was
- guaranteed to be thin.
- - arc and arcn erroneously reduced the angles mod 360.
- - Very large or negative 32-bit numbers in Type 1 fonts didn't
- work properly on MS-DOS systems (the ff0000 bits got set to zero).
- - Color printer devices rendering entirely in memory only
- allocated a monochrome-sized bitmap.
- - clip and eoclip didn't intersect the paths properly in the
- general case.
- - charpath erroneously rounded the current point to an integral
- value, causing characters to be spaced improperly.
- - The definition of max_color_param got some compilers confused.
- - charpath always used quadratic time and space, and dropped all
- but the last character when used with a Type 3 font.
- - Stroking a path with a 180 degree angle would incorrectly miter
- instead of beveling.
- - Type 1 fonts used the current flatness for curves, which could
- produce bad (and inconsistent) results.
- - Stroking a degenerate line segment produced incorrect results.
-
- Changes the character cache to use the UniqueID as the key, when
- available, instead of the font pointer. This dramatically improves
- performance when fonts are getting removed and reloaded because of page
- isolation with save/restore.
-
- Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c.
-
- Changes the Type 1 interpreter so that it rounds line and curve endpoints
- to the center of the nearest half-pixel, and omits null line segments.
- This both speeds up rendering at small sizes and improves output quality.
-
- Changes gs_deviceparams to return resolution as well as extent; changes
- gs_makedevice to accept resolution as well as extent.
-
- Replaces the algorithm for approximating circular arcs with curves with a
- more accurate one.
-
- Changes gs_point and gs_rect to use doubles rather than floats.
-
- Adds gs_setmetrics, for overriding Type 1 font metrics for the current
- character.
-
- Changes clipping to use lists of rectangles rather than path intersection.
- This makes a big difference when clipping bitmaps (including characters).
-
- Changes the character cache to discard entries incrementally, rather than
- clearing the entire cache when it fills up.
-
- Changes the implementation of transfer functions to use a cached map,
- built when the transfer function is set. This makes transfer functions
- work properly in all situations, including images.
-
- Defines a .quit operator that takes an exit code, and redefines quit in
- terms of it.
-
- Adds support for 16-bit-per-pixel devices in gdevmem.
-
- Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and
- gs_makedevice.
-
- Changes setscreen to ensure that the cell is always at least 4x4 pixels in
- size.
-
- 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.
-