home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / GRAPHICS / PSCRIPT / GS241PS.ZIP / HISTORY.DOC < prev    next >
Encoding:
Text File  |  1992-04-21  |  65.8 KB  |  1,765 lines

  1.    Copyright (C) 1989, 1992 Aladdin Enterprises.  All rights reserved.
  2.    Distributed by Free Software Foundation, Inc.
  3.  
  4. This file is part of Ghostscript.
  5.  
  6. Ghostscript is distributed in the hope that it will be useful, but
  7. WITHOUT ANY WARRANTY.  No author or distributor accepts responsibility
  8. to anyone for the consequences of using it or for whether it serves any
  9. particular purpose or works at all, unless he says so in writing.  Refer
  10. to the Ghostscript General Public License for full details.
  11.  
  12. Everyone is granted permission to copy, modify and redistribute
  13. Ghostscript, but only under the conditions described in the Ghostscript
  14. General Public License.  A copy of this license is supposed to have been
  15. given to you along with Ghostscript so you can know your rights and
  16. responsibilities.  It should be in a file named COPYING.  Among other
  17. things, the copyright notice and this notice must be preserved on all
  18. copies.
  19.  
  20. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  21.  
  22. This file, history.doc, describes the changes in the various releases of
  23. Ghostscript.
  24.  
  25. For an overview of Ghostscript and a list of the documentation files, see
  26. README.
  27.  
  28. Version 2.4.1 (4/21/92)
  29. =============
  30.  
  31. This is a quick release to fix minor problems discovered in 2.4, and
  32. to add a few improvements that didn't quite make it into 2.4.  It
  33. also adds GIF and PCX file support.
  34.  
  35. Procedures
  36. ----------
  37.  
  38. Fixes bugs:
  39.     - Some makefile dependencies, and the ccgs script, caused trouble
  40. for parallel versions of `make'.
  41.     - Compiling genarch with -O with gcc on the RS/6000 produced a
  42. buggy executable.
  43.  
  44. Fixes some minor problems in make.doc.
  45.  
  46. Adds DEVICE_DEVS2..5 to handle long device lists.
  47.  
  48. Removes the need to set GS_RUN_EXE when using the Watcom compiler on
  49. MS-DOS systems.
  50.  
  51. Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps.
  52.  
  53. Gets rid of gconfig.ps; this information is now compiled in gconfig.c.
  54.  
  55. Utilities
  56. ---------
  57.  
  58. Fixes bugs:
  59.     - The palette for pstoppm in 8-bit mode didn't contain all 8
  60. primary colors.
  61.     - font2c used just values_ to mean &values_[0]; some compilers
  62. couldn't handle this.
  63.  
  64. Makes font2c insert `const' in many appropriate places.
  65.  
  66. Drivers
  67. -------
  68.  
  69. Fixes bugs:
  70.     - The SunView driver had not been updated properly for 2.4 and was
  71. pretty thoroughly broken.
  72.     - None of the printer drivers worked properly with the Watcom
  73. compiler, because stdprn was doing \n -> \r\n substitution.
  74.     - If the generic printer driver couldn't allocate the requested
  75. size command list buffer, it gave up rather than trying to allocate a
  76. smaller buffer.
  77.     - The SuperVGA drivers (except for the VESA driver) didn't
  78. work with the Watcom compiler, because a couple of places in the
  79. drivers weren't truncating the offset of "segmented" pointers
  80. properly.
  81.     - Some of the H-P used <esc>*b#Y rather than <esc>*p+#Y for
  82. vertical positioning; this apparently is wrong, at least for the
  83. LJIIp.
  84.  
  85. Removes the dependence of the X Windows driver on Xt, Xext, and Xmu.  As a
  86. result, Ghostscript will not install a standard colormap itself, but it
  87. will use one if one is already installed.
  88.  
  89. Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file
  90. formats.
  91.  
  92. Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX
  93. file formats.
  94.  
  95. Adds drivers for monochrome and 256-color GIF file formats.
  96.  
  97. Fonts
  98. -----
  99.  
  100. Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
  101.  
  102. Interpreter
  103. -----------
  104.  
  105. Fixes bugs:
  106.     - A value with l_new set could 'escape' to save level 0 on a
  107. stack; if stored, it prevented the slot from being saved and restored
  108. properly.
  109.     - 16#7fffffff + 1 gave the floating point equivalent of -2^31, not
  110. 2^31.
  111.     - The PFBDecode filter computed the packet length incorrectly if
  112. the 0x8000-bit of the length was set.
  113.     - 5-byte numbers in Type 1 CharStrings complained of a rangecheck
  114. if they exceeded 16 bits, rather than if they exceeded the integer part of
  115. a fixed.
  116.     - (, ), and \ appearing in file name arguments in the command
  117. line did not work properly.
  118.  
  119. Adds 'const' in many places.
  120.  
  121. Changes the random number generator to be the same as the one used in
  122. Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript).
  123.  
  124. Exits with code 1 rather than code 0 on an unrecoverable error detected at
  125. the PostScript level.
  126.  
  127. Makes dictionaries expand automatically when they fill up.
  128.  
  129. Adds gp_exit to complement gp_init.
  130.  
  131. Changes dictionaries to always allocate a power of 2 entries on
  132. 32-bit machines.  Changes the name table to allocate indices
  133. scattered, so dictionary lookup doesn't have to do a multiply to
  134. scramble the index.
  135.  
  136. Changes the handling of currentfile to do "shallow binding" so stack
  137. searching is almost never required.
  138.  
  139. Library
  140. -------
  141.  
  142. Fixes bugs:
  143.     - arc and arcn got a numeric exception if the radius was zero.
  144.     - The undocumented 15 opcode in Type 1 fonts wasn't ignored.
  145.     - PaintType 3 wasn't allowed.  (It isn't clear what it should
  146. mean; we treat it as equivalent to 0.)
  147.     - The VAX/VMS C compiler was generating incorrect code for the
  148. chi_bits and cmask macros in gdevmem, producing incorrect output.
  149.     - If the result of the slow algorithm for intersecting clipping
  150. paths was a rectangle, the wrong thing happened (cbox didn't get set).
  151.     - gx_path_is_rectangle didn't recognize open rectangles.
  152.     - clist_change_tile didn't check properly whether the tile
  153. size had changed, so changing the screen could produce invalid band
  154. files.
  155.     - The image operators did the wrong thing in the 1-for-1
  156. case, interleaving N bytes of data with 7*N bytes of garbage.
  157.     - stroke sometimes handled bevel and miter joins wrong in
  158. reflected coordinate systems.
  159.     - init_ht checked incorrectly whether there was enough room
  160. to Y-replicate tiles, so sometimes it did it when it shouldn't have.
  161.     - stroke sometimes thought lines were thin when they weren't.
  162.  
  163. Adds 'const' in many places.
  164.  
  165. Adds support for 2- and 4-bit-per-pixel memory devices.
  166.  
  167. Version 2.4 (3/25/92)
  168. ===========
  169.  
  170. This is a major release that adds SuperVGA support, support for Metrics,
  171. settable device properties, and incremental font loading.  It also
  172. includes important performance improvements, based on rewrites of some key
  173. algorithms, and quite a few new Level 2 / Display PostScript facilities.
  174.  
  175. Procedures
  176. ----------
  177.  
  178. Fixes bugs:
  179.     - The rule for compiling gconfig.c didn't include the -I switches.
  180.     - .bat files were being distributed with a \n line terminator
  181. rather than \r\n.
  182.     - A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS
  183. command files.
  184.     - Unix systems couldn't handle multiple drivers with overlapping
  185. sets of files.
  186.     - -s<name> defined <name> as a null, rather than as an empty string.
  187.  
  188. Adds gconfig.ps to the list of needed configuration files.
  189.  
  190. Changes the way that the makefile handles nested .h files, so that it
  191. doesn't have to `touch' them.
  192.  
  193. Adds the loadallfonts procedure to gs_fonts.ps.
  194.  
  195. Changes the standard DOS configuration to include VGA, EGA, VESA, Epson,
  196. BubbleJet, and H-P printer drivers.
  197.  
  198. Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak.
  199.  
  200. Adds a USE_ASM flag so that one can build a DOS version of Ghostscript
  201. without having an assembler.
  202.  
  203. Splits off common code from the two MS-DOS makefiles into tccommon.mak.
  204.  
  205. Replaces the COPYING and LICENSE files with a new LICENSE file containing
  206. version 2 of the GNU General Public License.
  207.  
  208. Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no
  209. longer needed.
  210.  
  211. Adds a GS_DEVICE environment variable to supply a default device name if
  212. desired.
  213.  
  214. Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and
  215. unix-[g]cc.mak, for other ANSI C compilers.
  216.  
  217. Changes the way that optional features are defined in the makefiles, so
  218. that they actually work.
  219.  
  220. Adds support for the Watcom C/386 compiler.
  221.  
  222. Allows # in the command line as equivalent to =, to compensate for
  223. brain-damaged MS-DOS shell.
  224.  
  225. Adds -sOUTPUTFILE= to set the output file or pipe.
  226.  
  227. Adds -dWRITESYSTEMDICT to leave systemdict writable.
  228.  
  229. Utilities
  230. ---------
  231.  
  232. Fixes bugs:
  233.     - pcharstr.ps insisted on having Subrs be present in the font.
  234.     - pcharstr.ps decoded negative numbers between -108 and -1131
  235. incorrectly.
  236.     - pfbtogs.ps didn't handle packets longer than 64K correctly.
  237.  
  238. Changes the bdftops utility so that it makes entries for UnderlinePosition
  239. and UnderlineThickness in FontInfo, and so that it always records a
  240. FullName (the FontName if no other is provided).
  241.  
  242. Changes the name of the pfbtops utility to pfbtogs, because groff already
  243. includes a program called pfbtops.
  244.  
  245. Adds the gslp utility for doing "line printing" of text files, similar to
  246. enscript + lpr.
  247.  
  248. Adds a new variable DITHERPPI that enables a different dither pattern,
  249. claimed to be better for printers.
  250.  
  251. Adds the font2c utility for compiling Type 1 fonts into C, so they can be
  252. linked into an executable rather than loaded dynamically.
  253.  
  254. Drivers
  255. -------
  256.  
  257. Fixes bugs:
  258.     - gdev_prn_copy_scan_lines was erroneously masking the last byte
  259. of data even on color printers, as was paintjet_print_page.
  260.     - The TruFax driver had a couple of compilation errors, since it
  261. hadn't been compiled in a while.
  262.     - The BGI driver sometimes didn't consult BGIPATH when looking for
  263. .BGI files.
  264.     - initclip did the wrong thing with memory devices.
  265.     - The BGI driver didn't look in BGIDIR for .BGI files.
  266.     - The Epson driver didn't set the right margin properly with
  267. ESC+Q.
  268.     - The BJ-10e driver was badly broken.
  269.     - gdev_prn_open/close_printer didn't reset the command list file,
  270. so it was taking quadratic time to print multi-page documents.
  271.  
  272. Adds color to the SunView driver.
  273.  
  274. Adds selectable resolution (75, 100, 150, or 300 DPI) to the
  275. DeskJet/LaserJet driver.
  276.  
  277. Changes gssetdev so that drivers can specify special libraries to be
  278. loaded, as well as object files.
  279.  
  280. Adds a driver for VESA-compliant SuperVGA displays.  This driver handles
  281. all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode.  The
  282. default is VGA resolution (640 x 480).
  283.  
  284. Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards
  285. using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and
  286. the Orchid ProDesigner II (256-color modes only).
  287.  
  288. Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600,
  289. 16-color modes (for cards with only 256K of memory).
  290.  
  291. Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II,
  292. and H-P DeskJet 500C printers.
  293.  
  294. Adds Tim Theisen's Ghostview changes to the X11 driver.
  295.  
  296. MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as
  297. follows:
  298.  
  299.     - Changes map_rgb_color and map_color_rgb to always work in a
  300.         16-bit color value space, rather than a space defined by the
  301.         maximum number of distinct colors provided by the device.
  302.  
  303.     - Adds an argument to the output_page procedure to indicate
  304.         whether the procedure is being called for copypage or
  305.         showpage, and a num_copies argument.
  306.  
  307.     - Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that
  308.         drivers can cache bitmaps in the server or device if they want
  309.         to.
  310.  
  311.     - Removes fill_trapezoid and tile_trapezoid.
  312.  
  313.     - Adds a new get_bits procedure for reading the bits back from the
  314.         driver buffer (when possible), replacing copy_scan_lines.
  315.         This procedure takes a new argument describing padding and
  316.         byte swapping, and returns a different value from
  317.         copy_scan_lines.
  318.  
  319.     - Adds get_props and put_props procedures for accessing arbitrary
  320.         additional properties of devices.  The interface is quite
  321.         complex, but provides a great deal of flexibility.
  322.  
  323. See drivers.doc for details.
  324.  
  325. Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line.
  326.  
  327. Adds a user-contributed driver for DigiBoard, Inc.'s fax software.
  328.  
  329. Fonts
  330. -----
  331.  
  332. Changes Type1BuildChar so it uses the information from the Metrics
  333. dictionary in the font, if Metrics is present.
  334.  
  335. Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them
  336. directly.  Also changes .loadfont to disable packing temporarily, because
  337. some fonts rely on procedures being writable (!).
  338.  
  339. Interpreter
  340. -----------
  341.  
  342. Fixes bugs:
  343.     - The hypot function is not available on some Unix systems.
  344.     - Ghostscript didn't flush and close files when exiting.
  345.     - In statusdict, the /margins procedure used .leftmargin, but
  346. /setmargins used .lmargin.
  347.     - An out-of-range putinterval would simply do nothing, rather than
  348. reporting an error.
  349.     - If an attempt to allocate a block larger than the allocator's
  350. chunk size (20K) failed, the allocator would erroneously think it had
  351. succeeded.
  352.     - The bind operator made the top-level procedure read-only, as
  353. well as interior procedures.
  354.     - gs.c copied 1 extra character for the value of strings defined
  355. on the command line with -s...=, which could smash the first byte of the
  356. next object in memory.
  357.     - copying a dictionary erroneously required the maxlength of the
  358. destination to be greater than or equal to the maxlength of the source,
  359. rather than the length of the source.
  360.     - undef didn't correctly decide when to mark a deleted entry as
  361. deleted vs. free; as a result, some keys couldn't be looked up properly
  362. after an undef.
  363.     - type1encrypt and type1decrypt didn't set the size of the result
  364. properly.
  365.     - cvi and cvr didn't allow leading or trailing whitespace in
  366. strings.
  367.     - cvs didn't cause an error if the destination string was too
  368. short.
  369.     - Many operators didn't check correctly for stack underflow (off
  370. by 1).
  371.     - `for' used reals, rather than integers, if the limit was a real,
  372. even if the initial value and increment were integers.
  373.     - `restore' didn't properly invalidate copies of the save object
  374. being restored from; `save dup restore restore' would crash.
  375.     - `restore' sometimes didn't undo stores into matrices that were
  376. stored into by operators.  (The identity matrix always had l_new set.)
  377.     - readline gave a rangecheck if the input line exactly filled the
  378. string.
  379.     - `--' as the last switch on the command line caused a crash
  380. rather than an error message.
  381.     - On MS-DOS systems, filenameforall didn't handle patterns with a
  382. drive or directory specifier properly.
  383.     - stroke sometimes called gz_draw_line_fixed even if the line went
  384. outside the clipping box by 1 pixel.
  385.  
  386. Changes the loop that binds procedure "operators" to entirely disable the
  387. handling of the typecheck error, rather than to use stopped.  This cuts
  388. initialization time significantly, and also eliminates about 35K of wasted
  389. space (for saving the stacks).
  390.  
  391. Changes the version "operator" so it returns 47.0.  Adds "revision" to
  392. define the Ghostscript version # x 100.
  393.  
  394. Adds gscurrentresolution and gssetresolution procedures for getting and
  395. setting the device resolution.
  396.  
  397. Adds -r<res> and -r<xres>x<yres> as command line options for setting
  398. device resolution.
  399.  
  400. Adds a facility for incrementally loading the individual CharStrings of a
  401. Ghostscript font from the disk.  This can save a lot of memory, at the
  402. expense of slower rendering.  (It is intended primarily for MS-DOS
  403. systems.)
  404.  
  405. Changes findlibfile to return the name of the file that was actually
  406. opened, as well as the file itself, when the operation succeeds.
  407.  
  408. Changes the name of the main entry to the interpreter from interpret to
  409. gs_interpret, because of a conflict with a Data General library procedure.
  410.  
  411. Adds the .setmetrics operator to set the metrics for the current
  412. character for Type 1 fonts.
  413.  
  414. Adds more LaserWriter-specific entries to statusdict.
  415.  
  416. Gives names to all the internal `operators', so they will print out
  417. reasonably when an error occurs.
  418.  
  419. Extends the status operator to accept a string and return file
  420. information, as defined for Level 2 PostScript.
  421.  
  422. Adds the filter operator and some specific filters: ASCII85Encode,
  423. ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode,
  424. PFBDecode, and the null case of SubFileDecode.
  425.  
  426. Extends the scanner to recognize the Level 2 << and >> tokens.
  427.  
  428. Adds a facility for extracting the text strings from a PostScript file and
  429. writing them out in a simple format (selected by -dASCIIOUT, implemented
  430. by gs_2asc.ps).
  431.  
  432. Implements all of the remaining Display PostScript facilities that are
  433. also in Level 2 (i.e., everything in section A.1.3 of the PostScript
  434. Language Reference Manual, Second Edition, that is not also in section
  435. A.1.2).  The virtual memory operations are all stubs; the new halftone
  436. options are not fully implemented.
  437.  
  438. Changes makeimagedevice to use a string of gray or RGB values, rather than
  439. an array of color objects, to specify the palette.  Removes
  440. currentgscolor and setgscolor from the interpreter, but leaves t_color
  441. objects in, since they may be useful later.
  442.  
  443. Adds getdeviceprops and putdeviceprops for manipulating device properties.
  444. Currently defined properties for all devices: InitialMatrix, HWResolution,
  445. HWSize, Name.  Currently defined properties for printers: BufferSpace,
  446. MaxBitmap, OutputFile.  OutputFile allows |command for piping on Unix
  447. systems.
  448.  
  449. Removes deviceparams and makedevice.  Adds devicedefaultmatrix.
  450.  
  451. Implements reversepath.
  452.  
  453. Makes copy work on devices.
  454.  
  455. MS-DOS specific
  456. - - - - - - - -
  457.  
  458. Fixes bugs:
  459.     - iutilasm.asm wouldn't assemble with newer versions of MASM if
  460. CPU_TYPE was set to 286 or above.
  461.     - CPU_TYPE=386 didn't properly substitute the faster
  462. multiply/divide routines under Turbo C++ or Borland C++, only under the
  463. original Turbo C.
  464.  
  465. Library
  466. -------
  467.  
  468. Fixes bugs:
  469.     - A curve whose first and last points were the same wouldn't get
  470. drawn at all.
  471.     - A bug in the Turbo C++ compiler generated bad code when shifting
  472. a long right by 1 bit.
  473.     - If stroking a dashed line ever encountered a segment that was
  474. completely blank, Ghostscript would indirect through a null pointer.
  475.     - arc and arcn gave an error if the radius was negative.
  476.     - stroke always used the general algorithm, even if the line was
  477. guaranteed to be thin.
  478.     - arc and arcn erroneously reduced the angles mod 360.
  479.     - Very large or negative 32-bit numbers in Type 1 fonts didn't
  480. work properly on MS-DOS systems (the ff0000 bits got set to zero). 
  481.     - Color printer devices rendering entirely in memory only
  482. allocated a monochrome-sized bitmap.
  483.     - clip and eoclip didn't intersect the paths properly in the
  484. general case.
  485.     - charpath erroneously rounded the current point to an integral
  486. value, causing characters to be spaced improperly.
  487.     - The definition of max_color_param got some compilers confused.
  488.     - charpath always used quadratic time and space, and dropped all
  489. but the last character when used with a Type 3 font.
  490.     - Stroking a path with a 180 degree angle would incorrectly miter
  491. instead of beveling.
  492.     - Type 1 fonts used the current flatness for curves, which could
  493. produce bad (and inconsistent) results.
  494.     - Stroking a degenerate line segment produced incorrect results.
  495.  
  496. Changes the character cache to use the UniqueID as the key, when
  497. available, instead of the font pointer.  This dramatically improves
  498. performance when fonts are getting removed and reloaded because of page
  499. isolation with save/restore.
  500.  
  501. Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c.
  502.  
  503. Changes the Type 1 interpreter so that it rounds line and curve endpoints
  504. to the center of the nearest half-pixel, and omits null line segments.
  505. This both speeds up rendering at small sizes and improves output quality.
  506.  
  507. Changes gs_deviceparams to return resolution as well as extent; changes
  508. gs_makedevice to accept resolution as well as extent.
  509.  
  510. Replaces the algorithm for approximating circular arcs with curves with a
  511. more accurate one.
  512.  
  513. Changes gs_point and gs_rect to use doubles rather than floats.
  514.  
  515. Adds gs_setmetrics, for overriding Type 1 font metrics for the current
  516. character.
  517.  
  518. Changes clipping to use lists of rectangles rather than path intersection.
  519.  This makes a big difference when clipping bitmaps (including characters).
  520.  
  521. Changes the character cache to discard entries incrementally, rather than
  522. clearing the entire cache when it fills up.
  523.  
  524. Changes the implementation of transfer functions to use a cached map,
  525. built when the transfer function is set.  This makes transfer functions
  526. work properly in all situations, including images.
  527.  
  528. Defines a .quit operator that takes an exit code, and redefines quit in
  529. terms of it.
  530.  
  531. Adds support for 16-bit-per-pixel devices in gdevmem.
  532.  
  533. Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and
  534. gs_makedevice.
  535.  
  536. Changes setscreen to ensure that the cell is always at least 4x4 pixels in
  537. size.
  538.  
  539. Version 2.3 (8/28/91)
  540. ===========
  541.  
  542. This is a minor release to fix two bugs and add the PaintJet driver, which
  543. didn't make it into 2.2.
  544.  
  545. Utilities
  546. ---------
  547.  
  548. Changes the pstoppm utility so it counts pages correctly even in the
  549. presence of arbitrary saves and restores.
  550.  
  551. Drivers
  552. -------
  553.  
  554. Adds a new, "supported" PaintJet driver.
  555.  
  556. Changes the Epson driver to use ESC+D rather than ESC+\ for horizontal
  557. positioning, since many printers don't support the latter.
  558.  
  559. Adds horizontal double-density (two-pass) printing to the Epson driver, so
  560. it can do 240 x 60 and 360 x 180 densities.  (Vertical double density is
  561. not supported yet.)
  562.  
  563. Version 2.2 (6/1/91)
  564. ===========
  565.  
  566. The purpose of this release is to add save/restore, and a few
  567. miscellaneous Level 2 P*stScr*pt features such as undef.  It also includes
  568. major improvements in graphics quality and in handling of high-resolution
  569. printers.
  570.  
  571. Procedures
  572. ----------
  573.  
  574. Changes the version numbering to M.mpp rather than M.m.p, so that
  575. `version' can be a real number for those programs that insist on it.
  576.  
  577. Renames ghost.ps as gs_init.ps, gfonts.ps as gs_fonts.ps, and statusd.ps
  578. as gs_statd.ps.  The initialization files now all are named gs_*.ps.
  579.  
  580. Renames gdevs.{c,h,tl} as gconfig.{c,h,tl}.
  581.  
  582. Changes the relevant makefiles and command files so that a single build
  583. can contain several drivers that share code, e.g., the Epson driver and
  584. the DeskJet driver.
  585.  
  586. Changes gs_init.ps so it relies on an external gconfig.ps file rather than
  587. making a specific test for the presence of Level 2 features.
  588.  
  589. Adds an entry for uglyr.gsf to the makefile.
  590.  
  591. Removes the distinction between CCA and CCNA, since most of the files now
  592. contain constructs that require non-ANSI compilation on MS-DOS platforms.
  593.  
  594. Adds a `man' page for the ansi2knr utility.
  595.  
  596. Changes the documentation (use.doc) to show how to use -sDEVICE=<device>,
  597. or the selectdevice procedure, to select devices by name.
  598.  
  599. Adds DEVICE_DEVS to the makefiles (analogous to DEVICES and DEVICE_OBJS).
  600. This finally makes the make procedure fully automatic.
  601.  
  602. Adds the name of the initialization file (gs_init.ps) as a
  603. platform-specific makefile parameter, GS_INIT.
  604.  
  605. Removes the test program gt.{c,tr} from the fileset, since it is not
  606. useful to users.
  607.  
  608. Moves the Symbol encoding vector to a separate file (symbol_e.ps), from
  609. which it is loaded when first used.
  610.  
  611. Changes the error handler so it can handle errors that occur while reading
  612. the initialization files.
  613.  
  614. Extends ansi2knr so it can handle `void' and `...' in parameter lists.
  615.  
  616. Adds quit.ps to the set of installed files.
  617.  
  618. MS-DOS-specific changes
  619. - - - - - - - - - - - -
  620.  
  621. Adds the VGA and BGI drivers to the standard MS-DOS configuration, and
  622. makes VGA the default.
  623.  
  624. Adds a `+' and a newline at the end of gs.tr, to avoid problems with file
  625. transfer programs or editors that add a newline at the end of files.
  626.  
  627. Changes the name of msdos.mak to turboc.mak, and creates a new tbcplus.mak
  628. makefile for use with Turbo C++ and Borland C++.
  629.  
  630. Changes the extension of the loader response files from .tl to .tr.
  631.  
  632. Changes the default search path from c:/ghost and c:/ghost/fonts to c:/gs
  633. and c:/gs/fonts.
  634.  
  635. Changes the directory separator from `|' back to ';', since it appears
  636. that DOS can handle a ; in a command line if it is prefixed with \.
  637.  
  638. Unix-specific changes
  639. - - - - - - - - - - -
  640.  
  641. Changes the uses of install in unixtail.mak so they only install a single
  642. file at a time, which is all that the standard Unix install allows.
  643.  
  644. Removes the duplicate files (README/readme, LICENSE/license,
  645. COPYING/copying, Fontmap/fontmap).
  646.  
  647. Changes the ld flags from LDPLAT to LDFLAGS.
  648.  
  649. Adds XCFLAGS and XLDFLAGS.  These are concatenated with CFLAGS and LDFLAGS
  650. respectively.  The intention is that they be set from the `make' command
  651. line if desired.
  652.  
  653. VMS-specific changes
  654. - - - - - - - - - -
  655.  
  656. Repairs the omission of ZPACKED from the VMS build lists.
  657.  
  658. Drivers
  659. -------
  660.  
  661. Fixes bugs:
  662.     - The SunView driver produced semi-garbage on little-endian
  663. platforms (Sun-386i) because it didn't swap the bit order.
  664.     - The X driver would dump core if it couldn't open the display and
  665. the DISPLAY environment variable wasn't set.
  666.     - The X driver relied on white = 0, black = ones in a couple of
  667. places;
  668.     - The X driver would return an error, instead of clipping, if
  669. asked to display outside the window.
  670.     - The X driver would create inappropriately sized windows, because
  671. it believed the server's report of the screen resolution.
  672.  
  673. Adds Fran Taylor's Private Eye driver to gdevs.mak and the fileset (not
  674. supported by Aladdin Enterprises).
  675.  
  676. Adds Neil Ostroff's TruFax driver to gdevs.mak and the fileset (not
  677. supported by Aladdin Enterprises).
  678.  
  679. Makes the scratch file template for the printer drivers a per-platform
  680. quantity (gp_scratch_file_name_template).  Puts the default scratch files
  681. for Unix in /usr/tmp rather than /tmp.
  682.  
  683. Changes the SunView driver to prevent the Ghostscript window from being
  684. destroyed (which badly confuses the interpreter).
  685.  
  686. Extends the Epson driver to handle a variety of print densities in both X
  687. and Y, to handle 24-pin as well as 8-pin graphics, and to allow optional
  688. specification of default density in the makefile (gdevs.mak).
  689.  
  690. Refactors the printer drivers so that a single driver handles both DeskJet
  691. and LaserJet.  Adds LaserJet drivers that use the new compression modes on
  692. the LJ IId/IIp and LJ III.
  693.  
  694. Changes all the printer drivers to use band lists rather than bitmap
  695. paging as the buffering method.  (The individual drivers need only a
  696. one-line change to replace mem_copy_scan_lines with
  697. gdev_prn_copy_scan_lines with a different argument.)
  698.  
  699. Adds the halftone phase as additional arguments to tile_rectangle and
  700. tile_trapezoid.
  701.  
  702. Adds an entirely new and much simpler PaintJet driver, using the new band
  703. list interface.
  704.  
  705. Adds margin information to the device structure.  This is currently only
  706. relevant for printer devices.
  707.  
  708. Adds BGIPATH and BGIUSER environment variables, allowing additional
  709. control of the BGI driver.
  710.  
  711. Changes the x/y_pixels_per_inch member of the device structure from int to
  712. float.
  713.  
  714. Fonts
  715. -----
  716.  
  717. Patches gs_fonts.ps so definefont will add an isFixedPitch entry to
  718. FontInfo if there isn't one there.
  719.  
  720. Removes the old "type 7 path" encoding code from gs_fonts.ps.
  721.  
  722. Changes bdftops so it puts isFixedWidth and ItalicAngle entries in the
  723. FontInfo dictionary of the fonts it creates, since some P*stScr*pt
  724. programs rely on this.
  725.  
  726. Changes bdftops so it synthesizes as many missing characters as possible
  727. out of the ones that are there (in particular: synthesizes accents out of
  728. punctuation marks, and accented characters using seac.)  The results
  729. aren't all that good, but they're a lot better than having characters
  730. missing out of the font.
  731.  
  732. Utilities
  733. ---------
  734.  
  735. Adds a pfbtops utility for converting .PFB fonts to standard Ghostscript
  736. fonts.
  737.  
  738. Fixes bugs:
  739.     - ps2image didn't reset things properly between pages for
  740. multi-page documents.
  741.  
  742. Interpreter
  743. -----------
  744.  
  745. Makes Ghostscript recognize `-' alone as meaning that it should read from
  746. standard input as though it were a file.  This allows Ghostscript to
  747. accept a pipe as input.
  748.  
  749. Fixes bugs:
  750.     - seac in type1addpath used the current font's encoding, not
  751. StandardEncoding.
  752.     - type1decryptfile (eexec) didn't recognize binary (as opposed to
  753. hex) representation.
  754.     - Mentioning a name whose value was a no-access object caused an
  755. invalidaccess error.
  756.     - There was a bogus definition of `run' in zfile.c.
  757.     - The interpreter didn't handle end-of-file on stdin properly.
  758.     - Real numbers with an 'e' or 'E' but no decimal point were not
  759. recognized.
  760.     - On MS-DOS systems, inside strings, \ followed by a newline was
  761. not discarded properly.
  762.     - On MS-DOS systems, the long unsigned divide routine sometimes
  763. gave incorrect answers.  Among other things, this caused alternate-radix
  764. numbers sometimes to crash the interpreter.
  765.     - cvrs didn't do the right thing about reals or negative integers.
  766.     - .echo.mode was being reset with def instead of store, and was
  767. defined in systemdict rather than userdict.
  768.     - setgray and settransfer didn't interact properly.
  769.     - 16#80000000 was being interpreted as a signed integer (and
  770. converted to a real) rather than an unsigned one.
  771.     - atan returned 0 sometimes when it should have returned 180.
  772.     - currentcmykcolor was defined wrong.
  773.  
  774. Removes the filename operator, since no standard Ghostscript code used it,
  775. and it caused problems with some P*stScr*pt files.
  776.  
  777. Implements new operators: filenameforall, selectfont (as a procedure),
  778. stringmatch, undef.
  779.  
  780. Adds new standard procedures: selectdevice.
  781.  
  782. For MS-DOS, requires that the operand and execution stacks be located in
  783. the data segment, and uses short pointers to address them.  This produces
  784. significantly smaller and faster code.  (These changes are not visible to
  785. users or library clients.)
  786.  
  787. Changes the assignment of attribute bits, and adds new bits for
  788. save/restore and the garbage collector.  Changes many of the macros in
  789. store.h to support save/restore.  (These changes are not visible to users
  790. or library clients.)  Implements save and restore.
  791.  
  792. Moves type names from gs_init.ps to ghost.h and ztype.c.
  793.  
  794. Moves error names from gs_init.ps to errors.h and iinit.c.
  795.  
  796. Introduces gp.h as a documented interface to the platform-specific files.
  797.  
  798. Adds the -- switch, which allows Ghostscript programs to take arguments
  799. from the command line.
  800.  
  801. Changes many uses of the name `name' to something else, to avoid upsetting
  802. the Microsoft C compiler.
  803.  
  804. Really implements packed arrays -- they took the same amount of space as
  805. ordinary arrays in previous versions.
  806.  
  807. Changes exitserver in serverdict so that it just clears the stacks.  (This
  808. isn't the correct fix, but it will do as a workaround.)
  809.  
  810. Makes many miscellaneous small changes to pacify various compilers.
  811.  
  812. Changes gs_fonts.ps so that when "quiet" mode is selected (-q switch),
  813. Ghostscript doesn't print anything when loading fonts or when substituting
  814. for undefined characters.
  815.  
  816. Defines the name consisting of just a control-D as a no-op, because some
  817. P*stScr*pt-generating applications put control-Ds in their output.
  818.  
  819. Implements halftone phase (sethalftonephase and currenthalftonephase
  820. operators).
  821.  
  822. Removes the -E switch, since it is no longer useful.
  823.  
  824. Changes the -w and -h switches to a single -g (geometry) switch, with
  825. usage -g<width>x<height>.  Makes the -h switch, and a new -? switch, print
  826. usage help.
  827.  
  828. Implements correct handling of stack overflow errors (makes an array out
  829. of the contents of the overflowing stack, and resets the stack, before
  830. invoking the error handler).
  831.  
  832. Adds t_oparray (`operators' defined as procedures) and the makeoperator
  833. operator.  This is so that programs like the Distillery that rely on all
  834. operators being bound by `bind' will work properly.
  835.  
  836. Adds a new NOPAUSE flag to suppress the prompt and pause at copypage and
  837. showpage.
  838.  
  839. Library
  840. -------
  841.  
  842. Fixes bugs:
  843.     - gs_type1_interpret didn't store the encryption state or the skip
  844. count before returning to let the client handle a seac or an endchar in
  845. the middle of a seac.
  846.     - The definition of the Type 1 operator ce_testadd was based on
  847. wrong information; the operator takes only 2 operands and does something
  848. unknown.
  849.     - mem_true24_copy_mono wasn't incrementing the destination pointer
  850. if the color was transparent, leading to garbled characters.
  851.     - gx_lookup_fm_pair would sometimes look at one entry beyond the
  852. end of the cached font/matrix pair area.  (This probably had no practical
  853. effect.)
  854.     - gs_type1_interpret didn't save the current point when returning
  855. to the client for a callothersubr, causing some characters to be rendered
  856. displaced (such as some of the chess pieces in chess.ps).
  857.     - gs_setgray, gs_sethsbcolor, gs_setrgbcolor, gs_setflat, and
  858. gs_setlinewidth gave errors for out-of-range operands rather than forcing
  859. them into range.
  860.     - Transfer functions were not actually supported.
  861.     - The area fill algorithm failed on certain complex paths.
  862.     - The current point was sometimes defined when a BuildChar
  863. procedure was called.
  864.     - Stroking a degenerate line didn't display anything for round
  865. caps or joins.
  866.     - If the ends of a curve had exactly the same X coordinate, the
  867. curve sometimes wouldn't be displayed.
  868.     - Very thin lines that went outside the clipping region would
  869. sometimes be displayed as dashed, or not at all.
  870.     - The translation in a FontMatrix was ignored.
  871.     - Very wide, shallow lines would color extraneous pixels when
  872. using bevel or miter joins.
  873.     - Dashed lines didn't join properly at the beginning of a closed
  874. path.
  875.     - 0-degree arcs didn't add the appropriate line (possibly
  876. degenerate) to the path.
  877.     - gs_type1_interpret didn't reset the callsubr stack when starting
  878. the base character of a seac, which caused confusion if the accent's
  879. endchar fell inside a Subr.
  880.     - Non-monochrome memory memory devices weren't checking the
  881. arguments of the drawing procedures properly.
  882.     - The initial clipping rectangle for memory devices was being
  883. computed wrong.
  884.     - Null devices had a semi-infinite clipping rectangle instead of
  885. an empty one.
  886.     - gs_setlinewidth was treating negative arguments as zero, instead
  887. of taking the absolute value.
  888.     - imagemask with a dithered color used a solid color rather than
  889. the dithered one.
  890.  
  891. Tweaks the area fill and image rendering algorithms to be a little more
  892. liberal with paint when being used to render characters.
  893.  
  894. Changes the name of the 8-bit mapped color memory device from
  895. mem_mapped_color_device to mem_mapped8_color_device.
  896.  
  897. Changes the memory devices so that on little-endian platforms, they can
  898. store the bytes within a word in either order.  (Little-endian order
  899. allows efficient 32-bit updating, big-endian is required when displaying
  900. or writing to a printer or a file.)
  901.  
  902. Implements halftone phase.
  903.  
  904. Replaces the trapezoid fill algorithm with a much more accurate one
  905. inspired by a contribution from Paul Haeberli.  This also changes the
  906. graphics convention back to filling only pixels whose center falls within
  907. the region to be filled.
  908.  
  909. Changes the character cache to allocate headers and bits contiguously out
  910. of a single ring buffer.
  911.  
  912. Changes gs_imagemask and gs_imagemask_init to take a thickness adjustment
  913. parameter.
  914.  
  915. Changes gs_setcachedevice and gs_setcharwidth to take the graphics state
  916. as a parameter.
  917.  
  918. Renames gx_device_memory_bitmap_size as gdev_mem_bitmap_size,
  919. mem_copy_scan_lines as gdev_mem_copy_scan_lines, and
  920. mem_bytes_per_scan_line as gdev_mem_bytes_per_scan_line.
  921.  
  922. Version 2.1.1 (1/15/91)
  923. =============
  924.  
  925. This is a sub-release distributed to fix a few early bugs in 2.1, just in
  926. time for the new GNU master tape.
  927.  
  928. Build procedures
  929. ----------------
  930.  
  931. Removes all of the (undebugged) Level 2 code from the fileset, as well as
  932. the (unused) file gdevvga.c.
  933.  
  934. Changes the tar file so that the files are stored in the directory
  935. gs<version> rather than simply gs, e.g., gs211.
  936.  
  937. Interpreter
  938. -----------
  939.  
  940. Changes the scanner so that \ is recognized within strings regardless of
  941. whether the scanner is reading from a string or from a file.  This is
  942. compatible with newer P*stScr*pt interpreters, and with the newer
  943. P*stSc*pt language specification, but not with the older specification in
  944. the original PostScript Language Reference Manual.
  945.  
  946. Drivers
  947. -------
  948.  
  949. Fixes the max_value macro in gdevmem.c so that compilers won't complain
  950. about a left shift by 32.
  951.  
  952. Adds 'byte' to the list of types that gdevx.c must sidestep because header
  953. files use them.
  954.  
  955. Library
  956. -------
  957.  
  958. Changes the computation of penum->unpack in gsimage.c so as not to upset
  959. compilers that don't treat procedures and pointers to procedures as
  960. compatible types for conditional expressions.
  961.  
  962. Version 2.1 (12/31/90)
  963. ===========
  964.  
  965. This is primarily a bug fix release to clean up problems in 2.0.  It also
  966. implements a first cut at the new color operators.
  967.  
  968. Build procedures
  969. ----------------
  970.  
  971. Changes the separator for multiple directories in MS-DOS from ';' to '|',
  972. since there is no way to include a ';' in a command line.
  973.  
  974. Adds <dir>/fonts to the default search path, where <dir> is c:/ghost for
  975. MS-DOS systems and `pwd` for Unix systems.
  976.  
  977. Adds new documentation describing how to direct output to the printer.
  978.  
  979. Changes the PROCTYPE and USE8087 options in MSDOS.MAK to CPU_TYPE and
  980. FPU_TYPE.  The latter now indicates the type of FPU to generate code for,
  981. if any.
  982.  
  983. Drivers
  984. -------
  985.  
  986. Adds a driver for the Canon BubbleJet BJ10e.
  987.  
  988. Modifies the EGA driver to handle (non-standard) frame buffers larger than
  989. 64K.  Adds drivers for the VGA and for the EIZO MDB-10 (a 1024 x 768 frame
  990. buffer).
  991.  
  992. Changes the X driver so that it clips to the window dimensions, rather
  993. than reporting an error.
  994.  
  995. Notes that the H-P LaserJet driver, like the DeskJet driver, works under
  996. Unix as well as MS-DOS.
  997.  
  998. Adds support for 120 X DPI mode, and for the LQ-1500, to the Epson driver.
  999.  
  1000. Fonts
  1001. -----
  1002.  
  1003. Fixes bugs in bdftops:
  1004.     - It was using /UniqueId instead of /UniqueID as the key for the
  1005. font unique ID.  This effectively disabled the font cache.
  1006.     - The definition for .notdef was bogus -- an invalid CharString.
  1007.  
  1008. Changes ghost.ps and gfonts.ps so that NullFont is the initial font,
  1009. rather than Ugly.
  1010.  
  1011. Arranges things so that when attempting a font substitution, if the
  1012. default font is not found, NullFont is used instead.
  1013.  
  1014. Extends bdftops so that if certain easily synthesized characters are
  1015. missing from a font, it will attempt to synthesize them using available
  1016. characters.
  1017.  
  1018. Interpreter
  1019. -----------
  1020.  
  1021. Extends the -T switch to allow specifying a printf template for the
  1022. arguments of the procedure being traced.
  1023.  
  1024. Fixes bugs:
  1025.     - /0 was interpreted as equivalent to 0 (a number) rather than a
  1026. literal name.
  1027.     - packedarray was defined as being like array, instead of like
  1028. array followed by astore.
  1029.     - Many minor and harmless type mismatches (and a couple of very
  1030. minor genuine bugs) were upsetting the Apollo C compiler.
  1031.     - exp was incorrectly failing in certain cases with a negative
  1032. first argument.
  1033.     - copyscanlines incorrectly required at least 4 elements on the
  1034. operand stack, although it correctly only used the top 3.
  1035.     - readhexstring incorrectly read 1 byte even if the string length
  1036. was zero.
  1037.     - Not every place that expected an array would accept a packed
  1038. array.
  1039.     - Very complex paths (and infrequently other things) could produce
  1040. a 'memory leak'.
  1041.     - / alone would skip following whitespace and gather following
  1042. characters, rather than creating an empty name.
  1043.     - ghost.ps left newerror defined as true in $error, which resulted
  1044. in an erroneous error report if a program executed a 'stop'.
  1045.     - The definition of exitserver in serverdict didn't clear the
  1046. stack.
  1047.     - currentfile returned an executable file, rather than a literal
  1048. one.
  1049.     - setfont for Type 1 fonts didn't check the UniqueID in the font
  1050. dictionary against the one in the font's Private dictionary.
  1051.     - A value stored in a dictionary under the key /xxx couldn't be
  1052. retrieved using the key (xxx), and vice versa.
  1053.     - charpath with a Type 1 font on a string containing a 'space'
  1054. would produce garbage (it released the parent path inappropriately).
  1055.     - bytesavailable did not work properly for terminal input.
  1056.  
  1057. Changes the interface to the memory allocator so that it always takes an
  1058. element size and an element count, like calloc instead of malloc (but note
  1059. that alloc does *not* clear just-allocated blocks).  Gets rid of the
  1060. special 'dynamic' allocation procedures.
  1061.  
  1062. Changes the random number operators to use a better implementation.
  1063.  
  1064. Changes the idiv operator so it will accept any numbers, not just
  1065. integers, as arguments.  (The PostScript manual doesn't allow this, but
  1066. implementations apparently do.)
  1067.  
  1068. Provides semi-fake but usable definitions for all of the color PostScript
  1069. extensions, including a real implementation of colorimage.
  1070.  
  1071. No longer uses the name 'null', which is apparently reserved by Microsoft
  1072. C.  Makes a number of other minor changes required to pacify the Microsoft
  1073. C compiler.
  1074.  
  1075. Implements %statementedit and %lineedit.  (%statementedit is equivalent to
  1076. %lineedit, which is wrong.)  Changes the interactive interpreter to use
  1077. %statementedit.
  1078.  
  1079. Changes the scanner to accept null, ctrl-K (vertical tab), and ctrl-L
  1080. (form feed) as whitespace.  Ctrl-L terminates a comment, null and ctrl-K
  1081. do not.
  1082.  
  1083. Allows a literal string as the 'proc' argument(s) for image, imagemask,
  1084. and colorimage.
  1085.  
  1086. Adds the following operators/procedures: arct, cleardictstack, deletefile,
  1087. renamefile.
  1088.  
  1089. Defines =print as a synonym for =, for the benefit of LaserPrep.
  1090.  
  1091. Implements non-zero PaintType for the show operators (but not for
  1092. charpath) for Type 1 fonts.
  1093.  
  1094. Adds the ISOLatin1Encoding encoding vector.
  1095.  
  1096. Renames currentcolor and setcolor as currentgscolor and setgscolor, to
  1097. avoid conflict with the Level 2 PostScript names.  Removes colorhsb,
  1098. colorrgb, hsbcolor, and rgbcolor.
  1099.  
  1100. Library
  1101. -------
  1102.  
  1103. Fixes bugs:
  1104.     - In a couple of places, a 0 was being passed as a pointer
  1105. argument without casting, which confused the Microsoft C compiler.
  1106.     - Image devices were not recognized properly in debugging
  1107. configurations.
  1108.     - Inverted-color monochrome image devices were not recognized
  1109. properly.
  1110.     - Images that exactly fill the drawing area rendered very slowly,
  1111. because they erroneously used the general clipping algorithm.
  1112.     - Images that are 1-for-1 with the device were incorrectly scaled
  1113. by a factor of 8 in X.
  1114.     - Rounding artifacts sometimes caused characters to be unevenly
  1115. offset vertically by 1 pixel.
  1116.     - Type 1 fonts that used the Flex feature resulted in garbled
  1117. images.
  1118.     - The show operator routines would incorrectly fill or stroke a
  1119. path that existed at the time the show was started.
  1120.     - setscreen truncated the cell size instead of rounding, which
  1121. could produce off-by-1 anomalies.
  1122.     - stroke would sometimes produce garbage (or nothing at all) for
  1123. very narrow lines.
  1124.     - path filling would only color the pixels whose centers fell
  1125. inside the path: the Adobe specification requires coloring a pixel if any
  1126. part of it falls inside the path.
  1127.  
  1128. Changes the Epson printer driver so that it drives the printer directly
  1129. rather than writing to a file.
  1130.  
  1131. Changes pathbbox so that if the path is empty but there is a current
  1132. point, it returns a null rectangle at the current point.
  1133.  
  1134. Changes gs_image_init to take an additional parameter (after bps) giving
  1135. the number of samples per pixel (1, 3, or 4), and an indication of whether
  1136. the samples for each pixel are together or separated (-3 or -4).
  1137.  
  1138. Renames the gs_image_data and gs_imagemask_data procedures as gs_image and
  1139. gs_imagemask, and removes the old versions of the latter.
  1140.  
  1141. Adds gs_colorimage.
  1142.  
  1143. Replaces Snoopy's color dithering algorithm with one contributed by Paul
  1144. Haeberli.
  1145.  
  1146. Changes gs_setgray, gs_[set]hsbcolor, and gs_[set]rgbcolor so that they
  1147. coerce arguments outside the range [0..1] back into the range, instead of
  1148. signalling an error.
  1149.  
  1150. Makes a number of minor changes required to pacify the Microsoft C
  1151. compiler.
  1152.  
  1153. Changes gs_arcto so that if the last argument is a null pointer, the
  1154. tangent points are not returned.
  1155.  
  1156. Removes gs_type1addpath, which is not useful.  (Clients must call
  1157. gs_type1_init and gs_type1_interpret directly.)
  1158.  
  1159. Implements the 'seac' opcode for Type 1 fonts, allowing fonts with accented
  1160. characters to display properly.
  1161.  
  1162. Implements the undocumented 'testadd' opcode for Type 1 fonts, which is
  1163. used by some Adobe fonts.
  1164.  
  1165. Renames gs_currentcolor and gs_setcolor as gs_currentgscolor and
  1166. gs_setgscolor.  Removes gs_colorhsb, gs_colorrgb, gs_hsbcolor, and
  1167. gs_rgbcolor.
  1168.  
  1169. Version 2.0 (9/12/90)
  1170. ===========
  1171.  
  1172. The main purpose of this release is to add fonts, support for multiple
  1173. devices, and imaging into memory.  It also fixes a number of miscellaneous
  1174. bugs.  (Unfortunately, accurate records of the bugs fixed are not
  1175. available.)  The changes were so extensive that we chose to increment the
  1176. major version number.
  1177.  
  1178. Miscellaneous
  1179. -------------
  1180.  
  1181. Doesn't attempt to open the .MAP file on Unix systems.
  1182.  
  1183. Adds mention of statusd.ps to interp.doc.
  1184.  
  1185. Notes that Turbo C 2.0, not 1.5, is required for building the MS-DOS
  1186. version.
  1187.  
  1188. Adds a DEVICES= line to the makefile, and allows multiple devices.
  1189.  
  1190. Documents, in interp.doc, the X Windows resources that Ghostscript
  1191. recognizes.
  1192.  
  1193. Adds three PostScript masters to the fileset: chess.ps (+ cheq.ps),
  1194. golfer.ps, and escher.ps.
  1195.  
  1196. Drivers
  1197. -------
  1198.  
  1199. Changes the names of all the device drivers.  See gdevs.mak for the
  1200. updated list.
  1201.  
  1202. Adds a (working) driver for SunView.
  1203.  
  1204. Adds drivers for the Sony NeWS frame buffer, and the Sony Microsystems
  1205. NWP533 printers.  These drivers were contributed by users, so we aren't
  1206. prepared to answer questions about them.
  1207.  
  1208. Adds a driver for the Borland Graphics Interface (BGI) for MS-DOS systems.
  1209. Note that to use this driver with a non-EGA/VGA display, you need a .BGI
  1210. file appropriate for your hardware.  (The Ghostscript executable includes
  1211. the EGA/VGA driver.)
  1212.  
  1213. Adds a driver for Epson printers.  The driver has only been tested on an
  1214. LX-800, and on an H-P DeskJet in FX-80 emulation mode, but may work on
  1215. other models.  The driver could be adapted to work on Unix systems, but as
  1216. distributed, it only works on MS-DOS systems.
  1217.  
  1218. Adds a driver for the Hewlett-Packard DeskJet printer.  The driver could
  1219. be adapted to work on Unix systems, but as distributed, it only works on
  1220. MS-DOS systems.
  1221.  
  1222. The X Windows driver no longer waits for the user to type a character
  1223. before bringing up the initial display.
  1224.  
  1225. Adds information to drivers.doc describing how to change the definition of
  1226. the device structure and procedure table.
  1227.  
  1228. Extends the tile_rectangle and tile_trapezoid driver procedures to
  1229. interpret color0 = color1 = gx_no_color_index as meaning that the tile is
  1230. actually colored, not a mask.
  1231.  
  1232. Build procedures
  1233. ----------------
  1234.  
  1235. Changes the tar file so it puts everything in a directory called gs.
  1236.  
  1237. Removes the -ansi switch for gcc (this was causing problems with <math.h>
  1238. on some systems).
  1239.  
  1240. Changes LDPLAT to the string -X, which is appropriate for most Unix
  1241. systems (but not for SunOS 4.n).
  1242.  
  1243. Adds EXTRALIBS to the makefile, for specifying additional libraries to be
  1244. linked in.
  1245.  
  1246. Adds a 'clean' target for 'make', to get rid of all temporary files, the
  1247. binaries, and the executable.
  1248.  
  1249. Changes names of system-specific files from gp-xxx.c to gp_xxx.c.
  1250.  
  1251. Adds support for VMS (gp_vms.c and ghost.dcl).
  1252.  
  1253. Creates a new file gdevs.mak, and reorganizes the other makefiles, so that
  1254. the choice of which device driver(s) to include is isolated in a single
  1255. line in the platform-specific makefile.
  1256.  
  1257. Changes the standard MS-DOS makefile so it builds for 8088/86 (not 80386),
  1258. with neither -DNOPRIVATE nor -DDEBUG.
  1259.  
  1260. Changes the name of the MS-DOS makefile from dos-ega.mak to msdos.mak, and
  1261. the Unix makefiles from ux-[g]cc-x.mak to unix-[g]cc.mak.
  1262.  
  1263. Updates drivers.doc to describe how to add new drivers in gdevs.mak.
  1264.  
  1265. Removes gdevs.ps: the drivers are now responsible for specifying the size
  1266. of the imaging region.
  1267.  
  1268. Interpreter
  1269. -----------
  1270.  
  1271. Adds a makefile macro GS_LIB_DEFAULT and an environment variable GS_LIB to
  1272. define a search path for the library (initialization and font) files, and
  1273. implements the -I switch for the same purpose (replacing -sLIB=, which was
  1274. never actually implemented).  See interp.doc for details.
  1275.  
  1276. No longer clears the operand stack between interactive inputs.  No longer
  1277. prints the contents of the operand stack after every input in debug mode.
  1278.  
  1279. Doesn't "eat" the character that the user types to proceed after a
  1280. showpage, unless it's an isolated <return>.
  1281.  
  1282. Changes the prompt so that it says
  1283.     GS>
  1284. if the operand stack is empty, or
  1285.     GS<n>
  1286. if there are n > 0 elements on the operand stack.
  1287.  
  1288. Adds -w and -h switches to the command line, equivalent to -dWIDTH= and
  1289. -dHEIGHT= except that they require numeric arguments.
  1290.  
  1291. Adds -q (quiet startup) switch to the command line, which suppresses some
  1292. initial messages and also has an effect equivalent to -dQUIET.
  1293.  
  1294. Fixes bugs:
  1295.     - = and == caused an error on some kinds of objects if the object
  1296. didn't have read access.
  1297.     - cvs didn't print operator names.
  1298.     - The definition of dynamic_begin in iscan.c caused the DEC VMS C
  1299. compiler to produce incorrect code.
  1300.     - mul didn't return a correct (real) result when multiplying a
  1301. very large integer by an integer that wasn't very large.
  1302.     - eq and ne didn't work on files, fonts, save objects, and some
  1303. operators.
  1304.     - The scanner would sometimes blow up on floating point numbers
  1305. beginning with a '.'.
  1306.     - flushfile didn't pop its argument from the stack.
  1307.     - put and putinterval would store into a packed array.
  1308.     - a few operators didn't check properly for stack underflow.
  1309.     - cvrs produced wrong output for radix values greater than 10.
  1310.     - The scanner would convert upper-case letters in alternate-radix
  1311. numbers wrong on Unix systems.
  1312.     - String comparisons other than equality often produced the wrong
  1313. result if the strings were of different lengths.
  1314.     - An ifelse as the last thing inside a forall would confuse the
  1315. execution stack.
  1316.     - There were some omitted casts and 'private' declarations that
  1317. made the GNU compiler unhappy.
  1318.     - There was a memory leak in the image[mask] operators that caused
  1319. 516 bytes to be permanently lost each time one of them was used.
  1320.     - Quoted strings of length greater than 50 and less than 100 would
  1321. get mangled when being read in.
  1322.     - The scanner didn't consume the whitespace character following a
  1323. token, so programs that read data out of the program file could get
  1324. confused.
  1325.     - Under rare circumstances, an object of size between 249 and 255
  1326. bytes could get allocated on top of another object.
  1327.  
  1328. Allows bind to bind packed arrays, even though they aren't normally
  1329. writable.
  1330.  
  1331. Changes the length operator to allow a name as the argument.  (The
  1332. PostScript manual doesn't allow this, but implementations apparently do.)
  1333.  
  1334. Changes the setcachedevice operator to allow the bounding box to be
  1335. specified as a 4-element array instead of 4 scalars.  (The PostScript
  1336. manual doesn't allow this, but implementations apparently do.)
  1337.  
  1338. Removes a line from ghost.ps that accidentally disabled the font cache.
  1339.  
  1340. Implements memory devices (makeimagedevice, copyscanlines, and makedevice
  1341. for image devices).  makeimagedevice is implemented only for 1, 8, 24, and
  1342. 32 bits per pixel.
  1343.  
  1344. Changes the deviceparams operator so it pushes a mark on the stack below
  1345. the parameters.  This is to allow for devices that have more than the
  1346. standard set of parameters.
  1347.  
  1348. Replaces defaultdevicename with two new operators, getdevice and
  1349. devicename.
  1350.  
  1351. Adds a flushpage operator that flushes any outstanding buffered output to
  1352. the screen.  This is not the same as copypage: on printers, copypage
  1353. actually prints a page, whereas flushpage may do nothing; on displays,
  1354. flushpage and copypage may both flush output to a server.
  1355.  
  1356. Adds an unread operator for pushing back a character into a file.
  1357.  
  1358. Adds a description of proposed grayimage and colorimage operators to
  1359. ghost.doc, even though they aren't implemented yet.
  1360.  
  1361. Changes the name of the currentfileposition operator to fileposition.
  1362.  
  1363. Removes the framedevice operator, since the new device operators supersede
  1364. it.
  1365.  
  1366. Adds a writeppmfile operator, for writing the contents of a memory device
  1367. to a ppm file.
  1368.  
  1369. Makes Ghostscript work even when the >> operator doesn't sign-extend
  1370. negative numbers.  (This has not been tested.)
  1371.  
  1372. Adds the Symbol encoding to ghost.ps.
  1373.  
  1374. Adds two new file-related operators, filename and findlibfile.  See
  1375. ghost.doc and interp.doc for details.
  1376.  
  1377. Adds type1encrypt and type1decrypt operators for manipulating Adobe Type 1
  1378. encoded fonts.
  1379.  
  1380. Changes the imagecharpath and addcharpath operators to type1imagepath and
  1381. type1addpath.  These operators now work with the Adobe Type 1 font
  1382. encoding.
  1383.  
  1384. Adds the type1decryptfile operator for reading Adobe Type 1 encrypted
  1385. fonts.
  1386.  
  1387. Library
  1388. -------
  1389.  
  1390. Fixes bugs:
  1391.     - curveto and lineto didn't check for the current point being
  1392. defined.
  1393.     - stringwidth would fail if there was no current point.
  1394.     - There were omitted casts that made the GNU compiler unhappy.
  1395.     - Line caps and joins didn't always work.
  1396.     - Dashed lines didn't work at all.
  1397.     - If you read out the current matrix while inside a BuildChar
  1398. procedure, the result was garbage.
  1399.     - image[mask] would crash if you gave it a single string with more
  1400. than 64K-1 pixels (MS-DOS only).
  1401.     - Filling with a gray pattern sometimes wrote into pixels beyond
  1402. the right edge of the region (MS-DOS only).
  1403.     - The font cache would mistake fonts for each other if both fonts
  1404. had a default (unsupplied) "unique ID".
  1405.     - When a character was entered into the font cache for the first
  1406. time, sometimes it would display as garbage and/or displaced vertically
  1407. from its proper position.
  1408.  
  1409. Implements gs_makeimagedevice, gs_copyscanlines, gs_getdevice,
  1410. gs_devicename, gs_flushpage, gs_writeppmfile, gs_type1encrypt,
  1411. gs_type1decrypt, gs_type1imagepath, and gs_type1addpath procedures
  1412. corresponding to the new operators in the interpreter (see preceding
  1413. section).
  1414.  
  1415. Changes [gs_]setdevice so that it does an erasepage when it first opens
  1416. the device.
  1417.  
  1418. Changes definition of gx_device structure as follows.  NOTE: THIS AFFECTS
  1419. ALL DRIVERS.
  1420.  
  1421.     - Removes bits_from_MSB (which wasn't actually used, in any case).
  1422.         Ghostscript now assumes officially, as it always did in
  1423.         practice, that device bitmaps are stored MSB first, i.e., X=0
  1424.         corresponds to the 0x80 bit in the first byte.
  1425.  
  1426.     - Removes the initial_matrix member, which wasn't actually being
  1427.         set up.
  1428.  
  1429.     - Adds a new member 'name', a string giving the device name.
  1430.  
  1431.     - Adds new members 'x_pixels_per_inch' and 'y_pixels_per_inch'.
  1432.         These are only used by the default initial_matrix procedure
  1433.         (see below).
  1434.  
  1435.     - Adds a new procedure 'output_page'.  The default implementation
  1436.         (gx_default_output_page) just calls the sync_output procedure.
  1437.  
  1438.     - Adds a new procedure 'get_initial_matrix'.  The default
  1439.         procedure uses the width, height, and x/y_pixels_per_inch
  1440.         members to compute the matrix, assuming that X values run from
  1441.         right to left, and Y values run from top to bottom.
  1442.  
  1443. Changes the names of the allocation procedure types gs_proc_alloc and
  1444. gs_proc_free to proc_alloc_t and proc_free_t, and moves them from gs.h to
  1445. std.h.
  1446.  
  1447. Makes Ghostscript work even when the >> operator doesn't sign-extend
  1448. negative numbers.  (This has not been tested.)
  1449.  
  1450. Version 1.3 (6/20/89)
  1451. ===========
  1452.  
  1453. This release should have had a lot more things in it, but time pressure
  1454. and the already long delay in getting it out made it necessary to push it
  1455. out the door in an incomplete state (e.g., no testing on X systems
  1456. whatsoever).
  1457.  
  1458. Interpreter
  1459. -----------
  1460.  
  1461. Makes -d and -D equivalent on the command line.  Adds a new switch -s / -S
  1462. that defines a name as a string rather than a token.
  1463.  
  1464. Arranges things so that if -sLIB=_a_prefix_ is defined on the command
  1465. line, (filename) run will look for _a_prefix_filename before giving up if
  1466. filename isn't the name of an accessible file.
  1467.  
  1468. Changes showpage from an operator to a procedure.  The definition of
  1469. showpage in ghost.ps does a copypage, beeps the console, waits for the
  1470. user to type a character (normally a <return>, since line buffering is
  1471. always enabled), and then does an erasepage and an initgraphics.
  1472.  
  1473. Adds a new initialization file, gdevs.ps, containing device-dependent
  1474. parameters.  The default window size for X Windows is properly set to 612
  1475. x 792, i.e., 8.5" x 11".
  1476.  
  1477. Adds a new optional initialization file, statusd.ps, that provides dummy
  1478. definitions for the names found in statusdict on LaserWriters.
  1479.  
  1480. Adds a new operator, getenv, to get information from the shell
  1481. environment.
  1482.  
  1483. Adds a new predefined operator, defaultdevicename, that returns either (X)
  1484. or (EGA) according to how the interpreter was built.
  1485.  
  1486. Adds a new type, devicetype, and new operators deviceparams, getscanlines,
  1487. makedevice, makeimagedevice, and setdevice.  Changes currentdevice to
  1488. return a device object rather than a set of parameters.
  1489.  
  1490. Makes the scanner recognize reals with 'e' exponent notation, and handle
  1491. reals with more than 9 digits.
  1492.  
  1493. Fixes a bug that made names starting with digits read incorrectly.
  1494.  
  1495. Fixes a bug in the exp operator that made it not pop its first argument
  1496. from the stack.
  1497.  
  1498. Fixes a bug in the rand operator that made it return negative values about
  1499. half the time.
  1500.  
  1501. Fixes a bug in equality comparison (eq, ne, and several other operators)
  1502. that made unequal operator objects occasionally appear to be equal on DOS
  1503. systems.
  1504.  
  1505. Fixes a bug in the bind operator that made it not work on packed arrays.
  1506.  
  1507. Changes the internal representation of dictionaries so they can be
  1508. expanded or contracted dynamically.  Adds a new operator, setmaxlength, to
  1509. change the allocated size of a dictionary.
  1510.  
  1511. Changes sstorei.h so that non-DOS compilers don't encounter the #pragma
  1512. directive used by Turbo C.
  1513.  
  1514. Restores the display mode (on MS-DOS systems) when exiting.
  1515.  
  1516. Fonts
  1517. -----
  1518.  
  1519. Makes undefined characters in the standard font display as tilde rather
  1520. than blank (or causing an error).  Unmapped character codes (those mapped
  1521. to .notdef in the encoding) still display as nothing, per the PostScript
  1522. manual.
  1523.  
  1524. Library
  1525. -------
  1526.  
  1527. Adds a new header file, gxbitmap.h, with some new documentation describing
  1528. the internal storage format for bitmaps.
  1529.  
  1530. Makes numerous internal changes in the character / font cache, affecting
  1531. many of the routines in gxcache.c.
  1532.  
  1533. Fixes a bug in gz_draw_line / gz_fill_trapezoid that made nearly
  1534. horizontal lines display wrong.
  1535.  
  1536. Fixes a bug in gs_scale that made scaling not work if the coordinate
  1537. system was rotated or skewed.
  1538.  
  1539. Extends the font cache so it will handle characters rotated by multiples
  1540. of 90 degrees.
  1541.  
  1542. Changes the second argument of gx_path_bbox and gx_path_is_rectangle to be
  1543. a gs_fixed_rect * rather than a fixed [4].
  1544.  
  1545. Changes gs_matrix_rotate so it handles multiples of 90 degrees as a
  1546. special case.
  1547.  
  1548. Changes the definition of the gx_device structure to accommodate the new
  1549. device operators, and adds corresponding library calls.
  1550.  
  1551. Changes the type for a device color index from int to gx_color_index
  1552. (equivalent to unsigned long).  ***NOTE***: this affects existing clients
  1553. and drivers in a non-trivial way on MS-DOS systems.
  1554.  
  1555. Changes gs_malloc and gs_free to take a client name string as an argument.
  1556.  
  1557. Usage procedures
  1558. ----------------
  1559.  
  1560. Changes the compilation rules for Unix systems to not use the -o and -c
  1561. compiler flags together, to be compatible with more versions of cc.
  1562.  
  1563. Changes the gcc makefile to use $(GCC) rather than gcc as the compiler
  1564. name.
  1565.  
  1566. Moves the -1 flag for the MS-DOS compiler from the cc*.bat files to the
  1567. makefile.
  1568.  
  1569. Changes CCDEBUG to CCFLAGS, and adds ASMFLAGS, in DOS makefile.
  1570.  
  1571. Adds -DFOR80386 and /DFOR80386 to enable use of 80386 instructions in
  1572. assembly code on DOS systems.
  1573.  
  1574. Merges the DEBUG and gs_DEBUG switches.  There is now only a single DEBUG
  1575. switch that affects both the interpreter and the library.
  1576.  
  1577. Adds a new compilation switch, -DNOPRIVATE, that makes private (static)
  1578. variables and procedures public for debugging and profiling (only needed
  1579. on DOS systems).
  1580.  
  1581. Adds the DOS executable (gs.exe and gs.map) to the distribution fileset.
  1582.  
  1583. Adds new platform-specific code files, gp-*.c, for a few things like
  1584. reading the clock.
  1585.  
  1586. Adds a new documentation file, drivers.doc, that describes the interface
  1587. between Ghostscript and device drivers.
  1588.  
  1589. Version 1.2 (2/22/89)
  1590. ===========
  1591.  
  1592. Interpreter
  1593. -----------
  1594.  
  1595. Adds the new facilities in version 25 of PostScript: //name for immediate
  1596. lookup, packed arrays (setpacking, currentpacking, packedarray operators),
  1597. and new font cache parameters (setcacheparams, currentcacheparams
  1598. operators).
  1599.  
  1600. Adds new operators (setfileposition, currentfileposition) for random
  1601. access to files.
  1602.  
  1603. Extends readhexstring to take either a string or a file, just like token.
  1604.  
  1605. Fixes a bug that caused the 'for' operator (and a couple of others) to
  1606. randomly smash memory locations on PC platforms.
  1607.  
  1608. Library
  1609. -------
  1610.  
  1611. Renames the init_device driver procedure as open_device, and adds a
  1612. corresponding close_device.
  1613.  
  1614. Adds new procedures to read and set the cache limit values (implementing
  1615. the currentcacheparams and setcacheparams operators).
  1616.  
  1617. Usage procedures
  1618. ----------------
  1619.  
  1620. Changes the name of the Unix makefile to ux-cc-x.mak, and adds a new Unix
  1621. makefile, ux-gcc-x.mak, for using gcc instead of cc.  (The latter doesn't
  1622. actually work yet.)
  1623.  
  1624. Changes the name of the single built-in font from uglyfont.cp to
  1625. ugly10.cp.
  1626.  
  1627. Version 1.1 (2/12/89)
  1628. ===========
  1629.  
  1630. Interpreter
  1631. -----------
  1632.  
  1633. Makes the scanner treat ^Z (ASCII code 26) as whitespace: it erroneously
  1634. treated ^R (ASCII code 22, or octal 26) as whitespace.
  1635.  
  1636. Makes the token and readline operators, and the syntax for comments,
  1637. recognize \r (code 13), \n (code 10), and \r\n as equivalent end-of-line
  1638. indicators.  The token and readline operators will skip over any of these
  1639. sequences at the end of a token or line respectively, and a comment will
  1640. read through any of these sequences.  The other file operators (read,
  1641. write, readstring, writestring) do nothing special with these characters.
  1642.  
  1643. Changes the debug switch name from -D to -Z.  Adds a -D switch for
  1644. defining names in systemdict from the command line.  Defines -DDEBUG for
  1645. printing out debugging information during initialization, and -DNODISPLAY
  1646. for suppressing display output.
  1647.  
  1648. Corrects a bug that prevented the error machinery from working -- in
  1649. version 1.0, errors always dumped the stacks and aborted interpretation.
  1650.  
  1651. Corrects a bug that made eq and ne not work for strings.
  1652.  
  1653. Makes the atan (arctangent) operator normalize its results according to
  1654. the PostScript convention.
  1655.  
  1656. Makes the div operator check for zero divisor.
  1657.  
  1658. Makes unimplemented operators (resetfile, echo, save, restore, strokepath,
  1659. reversepath) truly undefined.
  1660.  
  1661. Makes the interactive loop exit gracefully on end-of-file: in version 1.0
  1662. this caused an infinite loop.
  1663.  
  1664. Implements the status operator.
  1665.  
  1666. Corrects a bug that made the 'for' operator deliver garbage values if one
  1667. or more of the operands (start, increment, end) was a real.
  1668.  
  1669. Corrects a bug that made the arc and arcn operators not pop their operands
  1670. from the stack.
  1671.  
  1672. Corrects a bug that made the kshow operator crash the interpreter.
  1673.  
  1674. Corrects a bug that made the print operator fail on machines that don't
  1675. pass structure arguments by simply pushing the contents of the structure.
  1676.  
  1677. Adds a new operator, imagecharpath, to convert images to
  1678. addcharpath-compatible outlines.
  1679.  
  1680. Changes alloc and alloc_free to use char * rather than byte *, and
  1681. alloc_free to return void rather than int, making them compatible with the
  1682. library's expectations and with malloc/free.
  1683.  
  1684. Explicitly casts all expressions of the form (ptr1 - ptr2) used as
  1685. procedure arguments to unsigned, to handle an incompatibility between
  1686. Turbo C versions 1.5 and 2.0.
  1687.  
  1688. Changes some of the internal conventions for operators: operators that
  1689. push on the operand stack must check for overflow explicitly, and
  1690. operators that modify the execution stack must return a special code.
  1691. (See oper.h for details.)
  1692.  
  1693. Initialization (ghost.ps, gfonts.ps)
  1694. --------------
  1695.  
  1696. Modifies ghost.ps and gfonts.ps so they print debugging information only
  1697. if the name DEBUG is defined.  (Presumably the user will set this from the
  1698. command line with -DDEBUG.)
  1699.  
  1700. Changes ghost.ps so it initializes the nominal screen size to 640 x 350 on
  1701. MS-DOS systems as before, but to 612 x 792 on Unix systems, which is an
  1702. 8.5" x 11" page at 72 pixels per inch.
  1703.  
  1704. Library
  1705. -------
  1706.  
  1707. Corrects a bug that made the fill and eofill operators (gs_fill and
  1708. gs_eofill) not perform a newpath afterward.
  1709.  
  1710. Corrects the bug that made thin, nearly horizontal lines display wrong (as
  1711. a series of disconnected dots) in the MS-DOS implementation.
  1712.  
  1713. Fixes a bug in the EGA driver that often made it fill rectangular regions
  1714. with black around information being displayed in white.
  1715.  
  1716. Completely changes the internal representation of outline fonts, and
  1717. changes btoi.ps (a Ghostscript language program for converting bitmaps to
  1718. outlines) to use a new library call, gs_imagecharpath.
  1719.  
  1720. Changes the extension for outline font files from .gf to .cp.
  1721.  
  1722. Adds a new debugging switch, q, that traces all rectangle fill operations.
  1723.  
  1724. Adds a new debugging switch, v, that traces all device-level output calls.
  1725.  
  1726. Explicitly casts pointer differences passed as procedure arguments, as in
  1727. the interpreter.
  1728.  
  1729. Makes stringwidth work if there is no current point.  In version 1.0, this
  1730. gave a nocurrentpoint error.
  1731.  
  1732. Usage procedures
  1733. ----------------
  1734.  
  1735. Changes the name of the 'read me' file from READ.ME to README.
  1736.  
  1737. Removes a bogus line (invoking the 'mcopy' utility) from the makefile.
  1738.  
  1739. Splits up the makefile into a generic part (ghost.mak) and
  1740. platform-specific parts (dos-ega.mak, unix-x11.mak).  The latter are what
  1741. is actually executed.
  1742.  
  1743. Puts the definitions of the DEBUG and gs_DEBUG compilation flags into the
  1744. makefile instead of in ghost.h and gx.h respectively.
  1745.  
  1746. Changes the names of the documentation files to be a little less cryptic.
  1747. Changes all the file names to lower-case in the documentation.  Adds
  1748. installation information to make.doc.
  1749.  
  1750. Changes all function definitions (but not prototype declarations) to ANSI
  1751. syntax, and adds a preprocessing step (ansi2knr) to convert them to K&R
  1752. syntax on Unix systems.
  1753.  
  1754. Changes the normal MS-DOS link configuration to not assume the presence of
  1755. an 80x87 coprocessor, and describes how to increase performance if a
  1756. coprocessor is present.
  1757.  
  1758. Changes the names of all the interpreter .c files, except stream.c, to
  1759. begin with 'i'.
  1760.  
  1761. Version 1.0 (8/11/88)
  1762. ===========
  1763.  
  1764. First version released to the public.
  1765.