home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / ghostscript-2.6.2-bin.lha / lib / ghostscript / doc / NEWS < prev    next >
Text File  |  1996-10-12  |  81KB  |  2,174 lines

  1.    Copyright (C) 1989, 1992, 1993 Aladdin Enterprises.  All rights reserved.
  2.  
  3. This file is part of Ghostscript.
  4.  
  5. Ghostscript is distributed in the hope that it will be useful, but
  6. WITHOUT ANY WARRANTY.  No author or distributor accepts responsibility
  7. to anyone for the consequences of using it or for whether it serves any
  8. particular purpose or works at all, unless he says so in writing.  Refer
  9. to the Ghostscript General Public License for full details.
  10.  
  11. Everyone is granted permission to copy, modify and redistribute
  12. Ghostscript, but only under the conditions described in the Ghostscript
  13. General Public License.  A copy of this license is supposed to have been
  14. given to you along with Ghostscript so you can know your rights and
  15. responsibilities.  It should be in a file named COPYING.  Among other
  16. things, the copyright notice and this notice must be preserved on all
  17. copies.
  18.  
  19. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  20.  
  21. This file, NEWS, describes the changes in the most recent releases of
  22. Ghostscript.  Changes in older releases are described in history.doc.
  23.  
  24. For an overview of Ghostscript and a list of the documentation files, see
  25. README.
  26.  
  27. Version 2.6.2 (4/19/95)
  28. =============
  29.  
  30. Version 2.6.2 adds a LaserJet 4 driver and several important bug fixes
  31. to version 2.6.1.  These fixes where previously distributed separately.
  32.  
  33. Procedures
  34. ----------
  35.  
  36. Fixes bugs:
  37.     - The Unix install script used gs rather than $(GS) as the name of
  38. the executable.  (unixtail.mak)
  39.     - The Unix install script didn't copy gs_dbt_e.ps to $(gsdatadir).
  40. (unixtail.mak)
  41.     - The Unix install script attempts to install the nonexistent file
  42. type1enc.ps. (unixtail.mak)
  43.     - The X libraries were listed in a wrong order, causing link errors
  44. on some systems.  (devs.mak)
  45.  
  46. Utilities
  47. ---------
  48.  
  49. Fixes bugs:
  50.     - The ps2ascii script still referenced ps2ascii.ps under its old
  51. name gs_2asc.ps. (ps2ascii)
  52.     - ps2image.ps had a 'pop' missing in the written-out definition of
  53. 'max' in the boilerplate code it put at the beginning of compressed
  54. files. (ps2image.ps)
  55.     - ps2image.ps got a typecheck if a scan line had no repeated
  56. data in it anywhere. (ps2image.ps)
  57.  
  58. Drivers
  59. -------
  60.  
  61. Fixes bugs:
  62.     - Faulty X servers could generate bogus errors on XFreeColors, which
  63. weren't being ignored. (x_.h, gdevxini.c)
  64.     - The X driver gave up on color allocation too easily. (gdevx.c)
  65.     - The X driver dynamic color table size could become
  66. negative. (gdevx.c)
  67.     - x_lookup_font could return platform fonts of very small sizes,
  68. which have very inaccurate metrics. (gdevxxf.c)
  69.     - The X driver didn't free dynamic colors at the start of each
  70. page. (gdevx.h, gdevx.c)
  71.     - The X driver didn't bind foreground/background defaults tightly,
  72. didn't check for GHOSTVIEW_COLORS properly, freed too many colors if an
  73. allocation request failed, and didn't check return value of gs_malloc for
  74. being NULL. (gdevxini.c)
  75.     - The DeskJet and LaserJet drivers used \033&l0H (page eject)
  76. instead of \f (end of page), which prevented duplex printing. (gdevdjet.c)
  77.     - The DeskJet and LaserJet drivers reset the printer at the start of
  78. each page, which prevented manually initiated duplex printing. (gdevdjet.c)
  79.     - The PCX driver put an old version number in the header, and didn't
  80. pad scan lines to an even number of bytes. (gdevpcx.c)
  81.     - The TIFF driver didn't handle A4 or B4 size paper
  82. correctly. (gdevtiff.c)
  83.     - The ESCP/2 driver was incorrectly named gdevescp2 in
  84. devs.mak. (devs.mak)
  85.     - The X11 driver incorrectly demanded the Xmu library, which was not
  86. needed and which caused link errors on some versions of SunOS. (devs.mak)
  87.     - The X11 font matching scheme was too loose, causing overlaps and
  88. other problems. (gdevx.h, gdevx*.c)
  89.     - X11 Font Extensions (rotated and mirrored fonts) did not work
  90. properly on NCD terminals, and could not be disabled. (gdevx.h, gdevx*.c)
  91.     - When the X11 driver freed the rgb cube/gray ramp, the parameters
  92. to gs_free() did not exactly match the parameters to gs_malloc(). (gdevx.c)
  93.     - The X11 driver failed to warn the user when it could not
  94. allocatethe original color cube/gray ramp and dropped back to a smaller
  95. cube/ramp, or from color to mono. (gdevxini.c)
  96.     - x_release could cause Ghostscript to fail if a font was freed
  97. after the device was closed. (gdevx.c)
  98.     - In the X11 driver, the lookup of dynamic colors would be extremely
  99. slow when the colormap filled.  (gdevx.h, gdevx.c, gdevxini.c)
  100.     - The X driver didn't properly reserve the foreground and background
  101. colors; as a result, they changed to random colors on rare
  102. occasions. (gdevxini.c)
  103.     - The Utopia font was missing from the default X resources.
  104. (gdevxini.c)
  105.     - Faulty X servers would cause Ghostscript to fail when it freed an
  106. allocated color, because the X driver didn't always catch "Bad Access"
  107. errors from XFreeColors calls. (gdevx.c, gdevxini.c)
  108.  
  109. Adds a gray-scale PCX driver.  (devs.mak, gdevpcx.c)
  110.  
  111. Adds a LaserJet 4 driver that can use the 600 dpi mode.  (devs.mak,
  112. gdevdjet.c)
  113.  
  114. In response to patent-related actions by Unisys and CompuServe, removes the
  115. GIF driver.  (*.mak)
  116.  
  117. Platforms
  118. ---------
  119.  
  120. Fixes bugs:
  121.     - The VMS script files referenced IBSCAN instead of ISCAN2, and
  122. omitted GDEVXXF. (vms-cc.mak, vms-gcc.mak)
  123.     - The UUENCODEd icons for the MS Windows platform were omitted from
  124. the fileset. (gsgraph.uue, gstext.uue)
  125.     - On MS-DOS systems, filenameforall didn't interpret * alone as a
  126. pattern matching all files. (gp_msdos.c)
  127.  
  128. Fonts
  129. -----
  130.  
  131. Fixes bugs:
  132.     - The FontName in the font file had be the same as the name in
  133. Fontmap.  (This requirement led to the need for aliases, and was extremely
  134. confusing to users.) (gs_fonts.ps)
  135.  
  136. Adds a GS_FONTPATH environment variable containing a list of directories
  137. that should be scanned automatically for fonts at startup time.  This
  138. greatly reduces the need to edit Fontmap when installing new fonts.
  139. (gs_fonts.ps, fonts.doc, use.doc)
  140.  
  141. Interpreter
  142. -----------
  143.  
  144. Fixes bugs:
  145.     - zht2.c didn't include alloc.h. (zht2.c)
  146.     - exitserver didn't check the password, and always
  147. succeeded. (gs_statd.ps)
  148.     - Ghostscript only knew about a limited set of paper sizes;
  149. specifically, it lacked most of ISO a0-a10 and b0-b10, and CAD sizes
  150. archA-archE. (gs_statd.ps)
  151.  
  152. Library
  153. -------
  154.  
  155. Fixes bugs:
  156.     - rectfill drew rectangles with vertices specified in clockwise
  157. order as 0-width lines. (gsdps1.c)
  158.     - The string matching function reported that 'abcdefg' matched the
  159. pattern 'abcde'. (gsutil.c)
  160.     - The bounding box of non-rectangular clipping paths was not being
  161. marked as valid, so cached characters would simply get discarded as being
  162. outside the bounding box. (gxcpath.c)
  163.     - Colors with equal R/G/B or C/M/Y components were converted to gray
  164. before being mapped through the transfer function. (gxcmap.c)
  165.     - rc_unshare could indirect through 0 to obtain the size of a new
  166. block, causing the CIE rendering caches to be allocated with a random
  167. size. (gxrefct.h)
  168.     - kshow returned an incorrect (random, 32-bit) character code for
  169. the second character. (gschar.c)
  170.     - Color halftones "flipped over" at the 50% point, inverting
  171. foreground and background. (gxdither.c)
  172.     - setbbox didn't round the coordinates properly, which could cause
  173. erroneous rangecheck errors with coordinates on the edge of the
  174. box. (gsdps1.c)
  175.  
  176. Version 2.6.1 (5/28/93)
  177. =============
  178.  
  179. This is primarily a bug-fix release for 2.6, with a couple of minor
  180. additions.
  181.  
  182. Documentation
  183. -------------
  184.  
  185. Adds proper `man' pages ansi2knr.1 and gs.1.
  186.  
  187. Procedures
  188. ----------
  189.  
  190. Fixes bugs:
  191.     - The Unix makefile produced an incorrect linker command if
  192. EXTRALIBS was not empty.
  193.     - The Unix install commands didn't copy devices.doc,
  194. ps2epsi.doc, and xfonts.doc to the documentation directory.
  195.     - echogs.c didn't include <sys/types.h>, which is needed for
  196. time_t on some systems.
  197.     - malloc_.h used <malloc.h> rather than <stdlib.h> on
  198. NeXTStep systems.
  199.  
  200. Changes the configuration procedure to use a C program rather than
  201. complex shell scripts.
  202.  
  203. Utilities
  204. ---------
  205.  
  206. Fixes bugs:
  207.     - The boilerplate produced by ps2image used the 'max'
  208. operator, which is not a standard PostScript operator.
  209.     - The winmaps.ps utility had 'floring' instead of 'florin' in
  210. the OEMEncoding table.
  211.     - quit.ps was omitted from the PC distribution.
  212.  
  213. Changes the name of the dicttomark procedure to .dicttomark.
  214.  
  215. Renames gs_2asc.ps as ps2ascii.ps, so it matches the names of the
  216. script files.
  217.  
  218. Drivers
  219. -------
  220.  
  221. Fixes bugs:
  222.     - The pbmraw driver was writing out RGG instead of RGB values.
  223.     - The X11 driver used NULL in a place where it should have
  224. used None.
  225.     - For multi-file output, the GIF driver didn't write a header
  226. at the beginning of each file.
  227.     - The Epson driver didn't honor the -A4 compilation switch,
  228. didn't put (0,0) at the physical corner of the page, and was too
  229. liberal about using tabs instead of spaces.
  230.  
  231. Replaces the color handling algorithms in the X Windows driver with
  232. new, much better ones.
  233.  
  234. Makes the PC display drivers recognize the -A4 compilation switch,
  235. like the printer drivers.
  236.  
  237. Adds new user-contributed drivers:
  238.     - A driver for Epson printers that use the ESC/P 2 control
  239. language, such as the Stylus 800.
  240.     - A driver for the Apple Dot Matrix Printer and Imagewriter.
  241.  
  242. Adds a new get_xfont_device driver procedure.  This is a
  243. backward-compatible change, since there is a sensible default.
  244.  
  245. Platforms
  246. ---------
  247.  
  248. Fixes bugs:
  249.     - On VMS, gconfig.h didn't have #include "gsconfig.h" as its
  250. first line.
  251.     - gconfig.c compiled incorrectly on the RS/6000 because the
  252. compiler evaluated a constant of the form (x<<y)+z incorrectly.
  253.     - Quite a few files that used the mem... functions didn't
  254. include memory_.h, which caused trouble on some bsd4.2 systems.
  255.     - The definition of zfont_char_xglyph confused one of the AIX
  256. compilers.
  257.     - On VMS, DEC C allows extra arguments for fopen, but gcc doesn't.
  258.     - On the MS Windows platform, 2.6 used gdevwddb rather than
  259. gdevwdib; the latter is almost always faster.
  260.     - The PC .zip files didn't include the Windows .ICO and .RES
  261. files in either GSEXE.ZIP or GSFILES.ZIP.
  262.  
  263. On PC platforms, adds an option (FPU_TYPE=-1) to optimize for
  264. machines lacking a floating point processor.
  265.  
  266. Fonts
  267. -----
  268.  
  269. Adds 4 new fonts contributed by URW.  These have a URW copyright and
  270. are governed by the GNU License.
  271.  
  272. Documents the fact that font names in Fontmap can be strings, not
  273. only names.
  274.  
  275. Adds DingbatsEncoding as a predefined encoding (in addition to
  276. Standard, ISOLatin1, and Symbol).
  277.  
  278. Interpreter
  279. -----------
  280.  
  281. Fixes bugs:
  282.     - memchr (used in zfile.c) isn't available on all platforms.
  283.     - languagelevel was defined as an operator rather than an
  284. integer.
  285.     - iccfont.c referred to name_StandardEncoding instead of
  286. #include'ing font.h and referring just to StandardEncoding.
  287.     - The CCITTFaxDecode filter didn't work on 32- (or 64-) bit
  288. machines, because of a bug in more_bits().
  289.     - The structures recording an allocation within the scope of
  290. a save could get allocated unnecessarily, because they weren't
  291. properly marked as free when an array was freed.
  292.  
  293. Renames the following Ghostscript-specific operators by adding a '.'
  294. at the front: makeoperator, setdebug, setmaxlength, stringmatch,
  295. type1decrypt, type1encrypt.
  296.  
  297. Adds a real implementation of glyphshow.
  298.  
  299. Library
  300. -------
  301.  
  302. Fixes bugs:
  303.     - Discarding fractional character coordinates in the Type 1
  304. rasterizer led to some rendering anomalies (e.g., characters 1 pixel
  305. too high).
  306.     - If a font had a non-standard encoding (i.e., not
  307. StandardEncoding, ISOLatin1Encoding, or SymbolEncoding), Ghostscript
  308. would never invoke the platform font code.
  309.     - The RGB to HSB color conversion algorithms produced
  310. nonsensical values.
  311.     - struct cached_char_s was defined redundantly in gxcdir.h,
  312. causing compilation problems on some systems.
  313.     - 32-bit color devices didn't work properly on little-endian
  314. machines (arrange_bytes in gdevmem2 was wrong).
  315.     - The scaled font cache could confuse two fonts with the same
  316. UniqueID and different Encodings.
  317.     - Under many common circumstances (first use of a character
  318. was with stringwidth, the font was renamed, the font encoding was
  319. changed), xfonts would not be used.
  320.  
  321. Adds gs_glyphshow.
  322.  
  323. Version 2.6 (5/9/93)
  324. ===========
  325.  
  326. The main new feature in this release is the ability to use platform
  327. fonts.  It also adds many more Level 2 PostScript facilities.
  328.  
  329. Documentation
  330. -------------
  331.  
  332. Corrects some errors in the documentation of the makeimagedevice operator.
  333.  
  334. Adds operand and result types to the comments at the beginning of all the
  335. operators.
  336.  
  337. Adds new sections on installation in use.doc.
  338.  
  339. Reinstates history.doc as a repository for old and no longer interesting
  340. history information.
  341.  
  342. Adds a new file, devices.doc, with documentation for specific devices.
  343.  
  344. Points out that font2c must be run with a Fontmap that includes the fonts
  345. being converted, and that its arguments must be quoted with "" on VMS
  346. systems.
  347.  
  348. Notes that the font name in the Fontmap must be the same as the FontName
  349. in the font.
  350.  
  351. Adds a list of the Level 2 facilities not provided by Ghostscript.
  352.  
  353. Identifies bug-ghostscript@prep.ai.mit.edu as an alias for the
  354. gnu.ghostscript.bug newsgroup.
  355.  
  356. Points out explicitly that -sOutputFile=- sends output to stdout, and
  357. requires using the -q switch.
  358.  
  359. Documents the use of tar_cat to construct the Unix makefiles.
  360.  
  361. Adds a new file, xfonts.doc, that describes the external font interface.
  362.  
  363. Documents the fact that drivers must use gs_malloc and gs_free rather than
  364. malloc and free.
  365.  
  366. Documents the *.sh (shell script) files.
  367.  
  368. Adds brief documentation on some additional development tool .ps files.
  369.  
  370. Documents the TEMP and GS_OPTIONS environment variable.
  371.  
  372. Points out the need to run Windows in 386 Enhanced mode on machines
  373. that have less than 6 Mb of RAM.
  374.  
  375. Consolidates documentation on compiler switches in make.doc (some of
  376. it had been in the unix*.mak files).
  377.  
  378. Procedures
  379. ----------
  380.  
  381. Fixes bugs:
  382.     - \'s in arguments following -- were doubled.
  383.  
  384. Includes the full set of filters automatically if the level2 feature
  385. is selected.
  386.  
  387. Extends DEVICE_DEVS... up to DEVS9.  Adds DEVICE_DEVS1 as well.
  388.  
  389. Renames turboc.mak and tbcplus.mak as tc.mak and bc.mak.
  390.  
  391. Makes @-files use the library path (GS_LIB, -I).
  392.  
  393. Changed the Unix install script to use install <file> <destfile>
  394. rather than install <file> <directory>.
  395.  
  396. Adds a GS_OPTIONS environment variable that acts like an implicit @-file
  397. at the beginning of the command line (i.e., may contain switches and
  398. initialization files).
  399.  
  400. Renames sym__enc.ps as gs_sym_e.ps.
  401.  
  402. Adds a user-contributed shell script for using Ghostscript with an
  403. H-P printer spooler.
  404.  
  405. Adds level1.ps to the set of installed utility files.
  406.  
  407. Extends the TEMP environment variable (the directory for scratch
  408. files) to work on Unix as well as MS-DOS.
  409.  
  410. Changes the MS Windows makefile to generate gswin.exe rather than
  411. gs.exe, and the Watcom makefile to generate gs386.exe.
  412.  
  413. Moves the "product" string from gs_init.ps to iinit.c.
  414.  
  415. Adds a GS macro to the makefiles, to allow choosing the name of the
  416. executable.
  417.  
  418. Utilities
  419. ---------
  420.  
  421. Fixes bugs:
  422. *    - font2c did the wrong thing (still) for fonts that didn't
  423. use StandardEncoding, ISOLatin1Encoding, or SymbolEncoding.
  424. *    - impath.ps had a fatal bug (wrong operand order for
  425. charstack_write) that caused bdftops to fail.
  426.     - gslp didn't wrap or truncate lines.
  427.     - gslp didn't handle tabs in a second or subsequent column
  428. properly.
  429.     - The definition of ashow in gs_2asc.ps incorrectly undid the
  430. increment following the last character.
  431.     - The definition of awidthshow in gs_2asc.ps failed to pop
  432. two entries from the stack, and also tested the character against the
  433. wrong value.
  434.  
  435. Adds a shell script (sysvlp.sh) that interfaces Ghostscript with the
  436. System V 3.2 lp interface.
  437.  
  438. Adds ps2ascii and ps2epsi script/batch files.
  439.  
  440. Adds a new utility, mergeini.ps, for concatenating all the
  441. Ghostscript initialization files into a single file, optionally
  442. removing comments and blank lines.
  443.  
  444. Adds new switches to gslp:
  445.     -q: suppress all printed output.
  446.     --detect: check whether the file begins with %!, and if so,
  447.         interpret it directly as a PostScript file.
  448.     --first-page <page#>: replaces the former -P switch.
  449.     --last-page <page#>: replaces the former -Q switch.
  450.     --(heading|footing)-(left|center|right) <string>: define
  451.         headers/footers.  # inserts the page number.
  452.     --margin-(top|bottom|left|right) <inches>: define margins.
  453.     --spacing <n>: for double, triple, etc. spacing.
  454. Also makes gslp ignore all the enscript flags it doesn't implement.
  455.  
  456. Adds an option to wrfont.ps to do encryption at read-in time.  (This
  457. allows much better compression of the standard Ghostscript fonts.)
  458. Changes bdftops to use this option.
  459.  
  460. Changes gslp to accept wild cards in file names.
  461.  
  462. Replaces landscap.ps with a new one contributed by a user.
  463.  
  464. Changes the compression scheme used in ps2image to a much more
  465. effective one.  Writing images is much slower than with the previous
  466. scheme, but reading is not.
  467.  
  468. Platforms
  469. ---------
  470.  
  471. Fixes bugs:
  472.     - SCFDTAB and SCFTAB were omitted from the VMS module lists.
  473.     - Function prototypes were not being used with the Watcom
  474. compiler.
  475.     - On MS-DOS platforms, if the value of the TEMP variable had
  476. a trailing : or \, Ghostscript appended a \ anyway.
  477.     - Under Windows, changing the size or resolution of the image
  478. closed and reopened the window.
  479.     - Ghostscript would not build correctly with the Watcom compiler
  480. if DOS4G=quiet was not set, because the DOS4GW copyright message was sent
  481. to stdout.
  482. *    - Finally gets Ghostscript to run properly on the RS/6000, by
  483. adding a compiler bug workaround to arc_add and arc_either.
  484. *    - Finally gets Ghostscript to compile properly on Sun SPARC
  485. systems, by adding a compiler bug workaround in scan_number.
  486.  
  487. Changes the default MS-DOS configuration from 8086/8088 to 80286.
  488.  
  489. Adds all the SuperVGA drivers to the BC++ and Watcom executables
  490. (except for the VESA driver in the Watcom executable).
  491.  
  492. Adds a makefile (msc.mak) for the Microsoft C/C++ 7.0 platform.  This
  493. is currently a MS-DOS, not a MS Windows, platform.
  494.  
  495. Changes gp_enumerate_files_init so it takes a gs_memory_procs *, not
  496. separate proc_alloc_t and proc_free_t arguments; also, it must
  497. enumerate precisely the requested set of files, not a superset.  THIS
  498. IS A NON-BACKWARD-COMPATIBLE-CHANGE.  It affects all gp_*.c files.
  499.  
  500. Adds the P*M drivers and bit.dev to the standard configuration on
  501. Unix platforms.
  502.  
  503. Changes the Watcom makefile so it uses the WATCOM environment variable (by
  504. default) as the base directory for the Watcom executables.
  505.  
  506. Adds the MS Windows COMMDLG.DLL and SHELL.DLL files to the set of
  507. files incorporated in GSEXE.ZIP, since the new MS Windows code uses
  508. them, and they aren't provided with Windows 3.0.
  509.  
  510. Makes major revisions to the MS Windows platform and driver code, to
  511. support the gsview front end, and also to remove the dependence on the
  512. Borland EasyWin library.  NOTE: Compiling the MS Windows code now requires
  513. Borland C++ 3.1 (not 3.0).
  514.  
  515. Changes time_.h so that Ghostscript will compile and run on A/UX.
  516.  
  517. Changes the MS-DOS implementation of file enumeration so it always
  518. treats \s in the file name as literal characters, not escapes, unless
  519. there are two \\s in a row.  This does the most sensible thing given
  520. the DOS file naming conventions.
  521.  
  522. Adds a %pipe% file device under Unix.
  523.  
  524. Adds a makefile for Watcom C under MS Windows.  This is very preliminary;
  525. in particular, NO display output is supported.
  526.  
  527. Fonts
  528. -----
  529.  
  530. Fixes bugs:
  531.     - fonts.mak referred to ncri and puti rather than ncrri and
  532. putri.
  533.     - cyr and cyri had the wrong protection.
  534.     - The Hershey fonts left the font on the stack when they were
  535. loaded.
  536. *    - The FontName of an aliased font was the original FontName
  537. from the file, not the alias.
  538. *    - Fontmap.BTS had incorrect entries for AvantGarde-Demi and
  539. AvantGarde-DemiOblique.
  540.     - Ghostscript pushed userdict, rather than an empty writable
  541. dictionary, onto the stack when loading a font, leading to name clashes.
  542.  
  543. Adds a new cfonts.mak with a full set of rules for compiling all the
  544. standard Ghostscript fonts (except the Hershey fonts) into C.
  545.  
  546. Adds UniqueIDs to the Hershey fonts, and removes the UniqueIDs from
  547. the Hershey entries in the Fontmap.
  548.  
  549. Adds a new Fontmap for VAX/VMS with DECWindows/Motif.
  550.  
  551. Changes MakeHersheyFont so it takes the encoding as an additional
  552. parameter, and changes the Hershey-Symbol font to use SymbolEncoding.
  553.  
  554. Drivers
  555. -------
  556.  
  557. Fixes bugs:
  558.     - The !@*&^%#@$ PCL drivers *still* didn't do the right thing
  559. about vertical spacing: the <ESC>*p+<n>Y command works on all PCL 3,
  560. 4, and 5 printers *except* the LaserJet IIp.
  561.     - The cdj driver used recursive macros (height, t_margin,
  562. b_margin) that not all compilers handled correctly.
  563.     - The djtc driver used some assignments including =*, which
  564. some compilers dislike.
  565.     - The S3 driver wouldn't compile correctly with the Watcom
  566. compiler.
  567.     - The makefile entry for the S3 driver was wrong.
  568.     - The SuperVGA drivers returned an error, rather than using
  569. the highest available resolution, if a too-high resolution was
  570. requested.
  571.     - The GIF driver produced an incorrect header for images
  572. wider or taller than 32K pixels.
  573.     - The GIF driver wasn't able to handle multi-page documents
  574. correctly.
  575.     - The margins on the DeskJet were still not correct.
  576.     - Some ANSI C compilers rejected a complex expression in
  577. gdevpccm.c.
  578.     - Printer drivers didn't recover cleanly from problems in
  579. opening the scratch files.
  580.     - The BJ-10e driver used the same name `out' for a label and
  581. a variable.
  582.     - The SCO ODT compiler couldn't handle sizeof(ppdev->fname).
  583.     - The Epson driver used the wrong value for ESC in the
  584. initialization string.
  585.  
  586. Adds new drivers:
  587.     - Drivers to produce MS Windows .BMP format output.
  588.     - A new ATI Wonder display driver (800x600, 16 colors) and a
  589. 1024x768 mode for the existing driver.
  590.  
  591. Adds new user-contributed drivers:
  592.     - A driver for the Tektronix 4693d color printer.  This carries a
  593. university copyright.
  594.     - A driver for the SPARCprinter.
  595.     - A driver for the Canon BJ200 printer.
  596.     - A driver for the IBM ProPrinter.
  597.     - A driver for the DEC LJ250 printer, which has a
  598. PaintJet-compatible mode.
  599.     - A replacement driver for the Sony NWP533.
  600.     - A driver that writes TIFF/F (Group 3 fax) files.  This carries
  601. an external copyright.
  602.     - A driver for the C.Itoh M8510 printer.
  603.     - A driver for the Okidata MicroLine 182 9-pin dot-matrix printer.
  604.     - A Hercules Graphics driver.
  605.     - A driver for printers under MS Windows.
  606.     - A driver for direct frame buffer addressing under SCO Unix
  607. and Xenix and AT&T SVR4.
  608.  
  609. Changes the get_bits driver procedure so it always reads a single
  610. scan line, and optionally does not copy the data.  THIS IS A
  611. NON-BACKWARD-COMPATIBLE CHANGE.  However, this change does not affect
  612. any existing printer driver, since these all go through intermediate
  613. routines in gdevprn.c.
  614.  
  615. Changes gdevprn.h, and the relevant printer drivers, so that -DA4
  616. will change the default paper size for any printer driver.
  617.  
  618. Allows the use of NULL or 0 for default procedures in the driver
  619. procedure vector.
  620.  
  621. Adds an optional map_cmyk_color procedure to the driver procedure
  622. vector.
  623.  
  624. Changes the Epson driver so that the minimum amount of white space
  625. required to use a tab is an easily changed parameter.
  626.  
  627. Changes the BGI driver to use separate segments for the Borland
  628. device drivers, to reduce the risk of overflowing a segment.
  629.  
  630. Adds an optimization option (normally enabled) to the PGM and PPM drivers
  631. such that they revert to PBM or (for PPM) PGM if the page can be
  632. represented that way.
  633.  
  634. Adds a new (optional) driver procedure to get the procedure vector
  635. for external fonts.
  636.  
  637. Adds an argument to gp_open_printer to indicate whether the file should be
  638. opened in binary or text mode.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
  639. However, this change does not affect any existing printer driver, since
  640. these all go through intermediate routines in gdevprn.c.
  641.  
  642. Changes the LN03/LA50/LA75 driver so it uses a text record mode to open
  643. the output file under VMS (by adding an argument to gp_open_printer to
  644. indicate this.)
  645.  
  646. Allows (indeed, encourages) drivers to use far_data to declare the device
  647. structure, primarily to avoid overflowing the 64K data segment under MS
  648. Windows.  Changes the file output drivers and many of the printer drivers
  649. to declare their device structures as far_data.
  650.  
  651. Replaces the AT&T 3B1 driver with an updated version (from the same
  652. contributor).
  653.  
  654. Changes the Epson BJ driver and the SPARCprinter driver so they align
  655. the (0,0) point of the page with the physical corner of the paper
  656. rather than with the origin of the printable area.
  657.  
  658. Removes the EIZO MDB-10 driver, since it caused complications for the
  659. EGA and VGA drivers and is not a widely used device.
  660.  
  661. Interpreter
  662. -----------
  663.  
  664. Fixes bugs:
  665.     - The entry for the copydevice operator in the operator table
  666. was initialized incorrectly.
  667.     - printobject and writeobject didn't handle nested arrays.
  668.     - restore didn't properly close the current file (if
  669. appropriate), causing an invalidaccess error.
  670.     - buildfont required the presence of a valid, 4-element
  671. FontBBox.  (The Red Books say it's required, but Adobe interpreters
  672. don't require it; some DEC software generates a 3-element FontBBox.)
  673.     - resourceforall had several bugs; it didn't do even
  674. approximately the right thing.  There were quite a few other problems
  675. with the implementation of resources.
  676.     - setfont, makefont, and scalefont would accept a font with
  677. no FID entry.
  678. *    - Loading a .PFB font left the file open (until the next
  679. restore or quit).
  680.     - The default (null) font didn't include a PaintType entry,
  681. which some PostScript files expected.
  682. *    - The ASCIIHexDecode filter sometimes thought the underlying
  683. stream was at EOF even when there was (at most one buffer's worth of)
  684. data left.
  685.     - iscan.c included <ctype.h> before std.h, causing type name
  686. clashes on some systems.
  687. *    - save and restore didn't handle the pointers in the graphics
  688. state correctly; for example, the current font wasn't restored
  689. properly.
  690.     - Binary object sequences at the top interpreter level didn't
  691. get executed immediately.
  692.     - On high-resolution devices, the default transfer function
  693. converted almost-white grays to very light grays rather than white.
  694.     - The `string' operator was checking the string length
  695. against max_uint rather than max_ushort, which could cause invalid
  696. lengths to be accepted.
  697. *    - deviceinfo caused a stackunderflow error.
  698. *    - idiv could give incorrect results for quotients or
  699. remainders that didn't fit in 24 bits.
  700. *    - The ASCII85Encode filter padded trailing bytes with 1's
  701. rather than 0's.
  702. *    - The ASCII85Decode filter had a typo that produced incorrect
  703. results if there were exactly 2 trailing bytes.
  704.     - findlibfile didn't push a copy of the file name if it was
  705. the name of a special (%) file.
  706.     - setduplexmode was not defined in statusdict, causing
  707. /undefined errors from some poorly designed input files.
  708. *    - The CCITTFaxDecode filter had several bugs in 2-D decoding.
  709. *    - The ASCII85Decode filter didn't read ahead to detect EOD if
  710. it fell precisely on a buffer boundary.
  711.     - If a file mentioned on the command line redefined `start',
  712. Ghostscript would run the new definition rather than the built-in one
  713. after processing all the files on the command line.
  714.     - The SCO ODT compiler couldn't handle the conditionals in the
  715. ngetc (iscan.c) and sgetc* (stream.h) macros.
  716.     - makefont and scalefont didn't cache the PostScript dictionaries
  717. for scaled fonts.
  718.     - Changing the elements of the Encoding of a font dynamically
  719. didn't take effect if the character was already cached.
  720.     - makefont and scalefont didn't add the (undocumented) OrigFont
  721. and ScaleMatrix entries to the new font.
  722. *    - findfont insisted that the font name be a string or a name.
  723.     - filenameforall could cause an incorrect transfer of control
  724. if no files matched the pattern.
  725. *    - ISOLatin1Encoding had hyphen instead of minus at code 45.
  726.     - restore didn't reset saved_cbot and saved_ctop correctly;
  727. as a result, some freed blocks could get abandoned rather than put on
  728. the free list.
  729.     - Some numerical constants in zarith.c assumed that longs
  730. occupied 32 bits.
  731.  
  732. Implements additional Level 2 features:
  733.     - %device%file names (only the "os" device is provided).
  734.     - <~ ~> for ASCII-85 strings.
  735.     - Binary error messages.
  736.     - BuildGlyph.
  737.     - CCITTFaxDecode filter entries EndOfBlock, Rows, and
  738.     (undocumented) FirstBitLowOrder.
  739.     - {set/current}{color/colorspace/overprint/colorrendering/
  740.     blackgeneration/undercolorremoval}.  (See below under library
  741.     for limitations.)
  742.     - Decode for the dictionary form of image.
  743.     - File access modes a, r/w/a+.
  744.     - Font entries CDevProc, Metrics2, and WMode.
  745.     - Font operators cshow, findencoding, rootfont, and
  746.     setcachedevice2.
  747.     - glyphshow (emulated with PostScript code).
  748.     - languagelevel.
  749.     - realtime.
  750.     - setbbox.
  751.     - (Subset of) system and user parameters.
  752.     - xshow, yshow, and xyshow.
  753.     - XUIDs for fonts.
  754.  
  755. Moves the installation of systemdict and the initial allocation of
  756. globaldict (if relevant) and userdict from gs_init.ps to iinit.c.
  757.  
  758. Makes Level 2 features dynamically selectable through the
  759. .setlanguagelevel operator; disables all Level 2 features
  760. (specifically including automatic dictionary expansion) unless the
  761. level2 feature is included and active.
  762.  
  763. Adds the .knownget operator for speeding up system procedures.
  764.  
  765. Renames the type1addpath operator as .type1addpath; adds an optional
  766. left side bearing argument; changes it so it does not do the
  767. setcachedevice, fill, or stroke, but does do a moveto for the
  768. character width.  Changes Type1BuildChar appropriately.  (All this is
  769. needed to make WMode work.)
  770.  
  771. Removes the .setmetrics operator, which is no longer needed.
  772.  
  773. * Changes the meaning of the user_errors argument to gs_run_file and
  774. gs_run_string so that -1 means always return on an error, 0 means
  775. only return on an error not within a `stopped'.
  776.  
  777. Adds all the necessary checks and operators for local/global VM, but
  778. doesn't actually implement local/global mode.
  779.  
  780. Changes setcachedevice back so that it requires 4 numbers on the
  781. stack rather than a 4-element array.  (It was changed to be the other
  782. way in release 2.0, but that was because I didn't realize that fonts
  783. had to have an executable FontBBox, and some of the Ghostscript fonts
  784. didn't.)
  785.  
  786. Changes all the filter operators from .filterxxx to .filter_xxx, and
  787. removes the need to enumerate them in gs_init.ps.
  788.  
  789. Adds .oserrno and .oserrorstring operators for getting the last OS
  790. error (in the current context).
  791.  
  792. Changes gs_finit similarly to gp_exit.  Adds gs_exit_with_code that
  793. takes both an exit status and a Ghostscript error code.
  794.  
  795. Changes the name of name.h to iname.h.
  796.  
  797. Adds support for the `interrupt' error (but doesn't provide any standard
  798. way of generating one, other than through the gp_check_interrupts polling
  799. function).
  800.  
  801. Adds copyright to systemdict.
  802.  
  803. Changes the spot halftone screen to an elliptical screen supplied by
  804. Berthold K. P. Horn.
  805.  
  806. Adds a check that the first token in gs_init.ps is an integer.  In
  807. conjunction with other code in gs_init.ps, this should catch all attempts
  808. to run Ghostscript with a gs_init.ps that doesn't match the executable.
  809.  
  810. Changes all relevant occurrences of sizeof to size_of in order to
  811. work with the buggy SVR4.2 C compiler.
  812.  
  813. Changes gp_exit so it is passed both the Ghostscript error code and
  814. the exit status code as arguments.  This is backward-compatible for
  815. all but the pickiest compilers.
  816.  
  817. Adds a call on gp_check_interrupts() after fwrite calls in the stream
  818. machinery.  This prevents lengthy console output from locking out
  819. other programs.
  820.  
  821. Changes a couple of occurrences of op_def_ptr in iinit.c to work around a
  822. `const' bug in Sun's SC1.0 compiler.
  823.  
  824. Adds a special hack in the 'where' operator to work around a bug in Aldus
  825. Freehand 2.x.
  826.  
  827. Changes all empty argument lists from () to (void), which is the ANSI
  828. C syntax.
  829.  
  830. Adds a hack to ignore ^[ and ^D^[ tokens, to work around the prologue
  831. and epilogue emitted by the MS Windows LaserJet IV driver.
  832.  
  833. Defines the processcolors operator, which should not be needed, but
  834. is required because of bugs in Lotus 1-2-3 and Adobe PhotoShop.
  835.  
  836. Changes the allocator (ialloc) to fill all allocated and/or freed
  837. blocks with a marker if gs_alloc_debug is set, as gs_malloc and
  838. gs_free already do.
  839.  
  840. Library
  841. -------
  842.  
  843. Fixes bugs:
  844.     - 16-bit memory devices stored the bytes of each pixel in the
  845. wrong order.
  846.     - copy_mono did the wrong thing when copying 1 source chunk
  847. to 2 destination chunks with polarity inverted.  (This probably
  848. didn't affect any actual uses of Ghostscript.)
  849. *    - The compile-time check for ints being 2 or 4 bytes used the
  850. #error directive, which most compilers don't recognize.
  851.     - arc and arcn didn't do the right thing for degenerate
  852. (single-point) arcs, or for arcs drawn in the "wrong" direction that
  853. were multiples of 360 degrees.
  854.     - charpath did the wrong thing with Type 3 fonts.
  855.     - copyscanlines gave an error if the buffer was too large.
  856.     - The copy_mono procedure (used for text and halftones) for
  857. 2- and 4-bit-per-pixel memory and printer devices incorrectly
  858. incremented the destination pointer after every pixel, instead of
  859. only after every byte.
  860.     - The fill_rectangle procedure (used for graphics) for 2- and
  861. 4-bit-per-pixel memory and printer devices, if given any color other
  862. than all 0's or all 1's, multiplied the X coordinate and width by 2
  863. or 4, thereby filling the wrong area.
  864.     - The use of 'data' in both gs_type1_data and gs_font upset
  865. the VMS compiler.
  866.     - The `Flex' feature wasn't implemented for Type 1 fonts,
  867. which caused serious errors in rendering some fonts that use it.
  868. (Unfortunately, some Adobe fonts violate the specification, so we had
  869. to implement Flex to always use a curve.)
  870. *    - Stem width adjustment was too eager, producing very strange
  871. effects on small characters with tight curves (a curve point could
  872. get snapped to the other side of the open area).
  873.     - The allocator didn't align structures adequately on
  874. machines where sizeof(long) or sizeof(char *) was 8 bytes.
  875.     - The test for IEEE floating point gave an incorrect
  876. (negative) result on machines where sizeof(long) was 8 bytes.
  877.     - genarch.c assumed that the result of subtracting two
  878. pointers was an int, leading to a garbage arch.h file on systems
  879. where this was false.
  880. *    - The Type 1 font interpreter incorrectly reset the adjusted
  881. path position to be the same as the unadjusted path position whenever
  882. it returned control to the client (in particular, for callothersubr),
  883. leading to discontinuities and distortions in the character shapes.
  884. *    - Accented characters in Type 1 fonts often misplaced the
  885. accent to the left.
  886.     - gsmisc.c wouldn't compile on machines with 64-bit pointers,
  887. because _pad was 0, and ANSI compilers don't accept 0-length arrays.
  888.     - pathforall got confused if the client procedures modified
  889. the path.
  890.     - The command list file representation limited X and Y
  891. coordinates to 15 bits.
  892. *    - stroke could produce spikes or other garbage for mitered
  893. joins as a result of stroke adjustment.
  894.     - The params_size field of the null device was wrong, so
  895. scaling the null device produced unpredictable results.
  896.  
  897. Changes monobit memory devices to always store data big-endian.  This
  898. eliminates byte-swapping, at the cost of slightly slower rendering.
  899.  
  900. Removes the memswab* routines, since they are no longer needed.
  901.  
  902. Implements gs_cshow_[n_]init, which provides support for cshow, and
  903. gs_xyshow_[n_]init, which provides support for {x,y,xy}show.
  904.  
  905. Adds an optional left side bearing argument to gs_type1_interpret.
  906.  
  907. Changes gs_type1_interpret so it does not do a setcachedevice, fill,
  908. or stroke, but only appends the character outline to the path
  909. (including a moveto for the character width.)
  910.  
  911. Removes gs_setmetrics, which is no longer needed.
  912.  
  913. Implements gs_setcachedevice2, which provides support for
  914. setcachedevice2.
  915.  
  916. Speeds up gsave/grestore by allocating, deallocating, and copying as
  917. much as possible of the graphics state in a single operation.
  918.  
  919. Implements gs_{set/current}{color/colorspace/overprint/colorrendering/
  920. blackgeneration/undercolorremoval}.  Device, indexed (with table, not
  921. with procedure), CIE, and (substituted) separation colors are
  922. supported; some of the setup code for patterns is also present.
  923.  
  924. Increases the size of temporary file names in gdevprn.h from 30
  925. characters to 60.
  926.  
  927. Changes the character cache to be allocated dynamically in chunks.
  928.  
  929. Splits gxcache.c into gxccache.c (fast "hit" code) and gxccman.c (all
  930. other code).
  931.  
  932. Changes all occurrences of sizeof to size_of in order to work with the
  933. buggy SVR4.2 C compiler.
  934.  
  935. Adds a new concept of "external fonts", which allow a driver to
  936. substitute its own fonts for the ones obtained through the normal
  937. font machinery.
  938.  
  939. Changes all empty argument lists from () to (void), which is the ANSI
  940. C syntax.
  941.  
  942. Version 2.5.2 (9/20/92)
  943. =============
  944.  
  945. This is yet another bug fix release to (finally!) get the PCL drivers
  946. working again.
  947.  
  948. Procedures
  949. ----------
  950.  
  951. Fixes bugs:
  952.     - The comment in devs.mak for cdjcolor said it used 8 bits
  953. per pixel, rather than the correct 24.
  954.  
  955. Adds gsbj/dj/lj/lp and gslp.ps to the installed files on Unix
  956. systems.
  957.  
  958. Removes dps.dev and level2.dev from the standard configurations on
  959. all platforms, since the presence of the setcolor operator was
  960. causing the output of some common applications to fail.
  961.  
  962. Utilities
  963. ---------
  964.  
  965. Fixes bugs:
  966.     - font2c produced invalid output for any font that didn't use
  967. StandardEncoding or ISOLatin1Encoding.
  968.  
  969. Platforms
  970. ---------
  971.  
  972. Fixes bugs:
  973.     - gp_sysv.c required an extern long timezone.
  974.  
  975. Drivers
  976. -------
  977.  
  978. Fixes bugs:
  979.     - The PCL drivers were *still* doing the wrong thing about
  980. zeroing the seed row for Mode 3 compression.
  981.     - Setting the resolution with -r didn't work under Windows.
  982.     - The Windows driver got a stack overflow if it was ever
  983. asked to display a bit image wider than 32 pixels.
  984.     - The Tseng driver didn't sense the model (ET3000 vs. ET4000)
  985. correctly.
  986.  
  987. Adds the eps9high device to the standard MS-DOS makefiles.
  988.  
  989. Interpreter
  990. -----------
  991.  
  992. Fixes bugs:
  993.     - gs_run_string used gs_user_errors (a global) rather than
  994. user_errors (its argument) to control error handling.  (This does not
  995. affect normal operation of Ghostscript, only use as a server.)
  996.     - eexec popped the top element of the dictionary stack
  997. afterwards even if the encrypted code had pushed something onto it.
  998. This caused problems for some badly written PostScript code.
  999.     - The printed form of real numbers didn't always include a
  1000. decimal point, causing compatibility problems.
  1001.  
  1002. Makes -s and -d work for device properties.
  1003.  
  1004. Increases the cache limit on large-memory systems.
  1005.  
  1006. Adds a check to ensure that the revision of gs_init.ps matches that
  1007. of the interpreter.
  1008.  
  1009. Adds the .knownget operator.
  1010.  
  1011. Library
  1012. -------
  1013.  
  1014. Fixes bugs:
  1015.     - The raster computation in clist_render_init, and the
  1016. computation of state_size in clist_open, didn't widen an operand to
  1017. long, leading to possibly incorrect operation for 24-bit-per-pixel
  1018. printers on MS-DOS systems.
  1019.     - The flatness was set too large for Type 1 characters,
  1020. leading to visible straight edges instead of curves at large sizes.
  1021.     - Type 1 fonts that contained out-of-range coordinates would
  1022. produce garbled output.  (This was not a problem with the standard
  1023. Ghostscript fonts, or with Adobe Type Manager fonts.)
  1024.     - gschar0.c wouldn't compile, because it referred to a
  1025. non-existing structure member penum->chr.  (This had no effect on
  1026. Ghostscript's operation.)
  1027.     - The curve flattener required line segments to be no more
  1028. than 8 x the flatness in length, leading to an enormous number of
  1029. segments.
  1030.     - pathforall would cause an addressing fault if the path
  1031. consisted of only a moveto.
  1032.  
  1033. Refactors some header files so that std.h is always included before
  1034. any system header file that might include sys/types.h.
  1035.  
  1036. Adds logic for removing top and bottom blank rows in cached
  1037. characters.  (This is the beginning of compression for the cache.)
  1038.  
  1039. Changes the arguments of memswab2/4 from char * to byte *, for more
  1040. accurate type conformance.
  1041.  
  1042. Version 2.5.1 (9/11/92)
  1043. =============
  1044.  
  1045. This is the usual bug fix re-release.
  1046.  
  1047. Procedures
  1048. ----------
  1049.  
  1050. Fixes bugs:
  1051.     - The makefile rules for compiled fonts had a circular
  1052. dependency.
  1053.     - `make begin' didn't work properly on all platforms.
  1054.  
  1055. Ensures that all batch files end with a newline.  (The absence of the
  1056. newline was confusing the GNU diff program.)
  1057.  
  1058. Documents the fact that the -dASCIIOUT switch no longer exists.
  1059.  
  1060. Utilities
  1061. ---------
  1062.  
  1063. Fixes bugs:
  1064.     - pstoppm didn't `bind' its internal procedures.
  1065.     - grestoreall would undo the output device selected by
  1066. pstoppm.
  1067.  
  1068. Changes the utilities for reading and writing Type 1 character
  1069. outlines so they can work with stack representations as well as
  1070. arrays.
  1071.  
  1072. Removes the pfbtogs.ps, phonbook.ps, and showpbm.ps utilities from
  1073. the distribution.
  1074.  
  1075. Adds a gslj utility to parallel gslp and gsdj.
  1076.  
  1077. Platforms
  1078. ---------
  1079.  
  1080. Adds the DeskJet 500C drivers (cdeskjet/cdj*) to the MS-DOS / Borland
  1081. C++, MS-DOS / Watcom C/386, and MS-Windows configurations.
  1082.  
  1083. Removes the PCX file driver from the MS Windows executable, because
  1084. the static data segment exceeded 64K.
  1085.  
  1086. Makes some changes in the Unix System V platform file (gp_sysv.c) and
  1087. in time_.h and unixtail.mak to accommodate the 3B1.
  1088.  
  1089. Fonts
  1090. -----
  1091.  
  1092. Fixes bugs:
  1093.     - The Charter-Italic font was named bchi.pfa rather than
  1094. bchri.pfa.
  1095.     - The Cyrillic fonts (cyr.gsf, cyri.gsf) were omitted from
  1096. the fileset.
  1097.     - Ghostscript incorrectly assumed that all Type 1 fonts had a
  1098. FontInfo dictionary.
  1099.     - .loadfont used false PFBDecode, so a few .PFB fonts would
  1100. get errors because the first eexec byte would be whitespace.
  1101.  
  1102. Changes font2c and its supporting code so that compiled fonts are
  1103. location-independent.
  1104.  
  1105. Drivers
  1106. -------
  1107.  
  1108. Fixes bugs:
  1109.     - The margins for the H-P printers were still wrong.
  1110.     - The H-P drivers accidentally cleared the compression seed
  1111. row when switching compression modes.
  1112.     - Some of the H-P drivers used the wrong control codes for
  1113. skipping blank lines.
  1114.  
  1115. Adds user-supported drivers for the AT&T 3B1 console device, and for
  1116. the NEC P6+ printer.
  1117.  
  1118. Updates the SunView driver with a new version supplied by a(nother)
  1119. user.
  1120.  
  1121. Changes the X Windows driver so the Ghostscript window doesn't get
  1122. input focus.
  1123.  
  1124. Changes the common code for the printer drivers so that if it can
  1125. allocate a full bitmap but there isn't at least a minimum amount of
  1126. memory left afterwards, it switches to banding.
  1127.  
  1128. Changes the Windows driver so it handles devices with more than 8
  1129. bits per pixel.  (We haven't been able to test this.)
  1130.  
  1131. Adds a read-only PageCount device property (for printer devices
  1132. only).
  1133.  
  1134. Changes all Aladdin-supported drivers to clip drawing requests to the
  1135. ((0,0), (width,height)) rectangle of device space.
  1136.  
  1137. Interpreter
  1138. -----------
  1139.  
  1140. Fixes bugs:
  1141.     - Closing a NullEncode filter always gave an ioerror.
  1142.     - If a single-character name occurred 1 character before the
  1143. end of an input buffer, the character would be doubled.
  1144.     - The procedures in gs_statd.ps didn't use "bind".
  1145.     - Setting the page size didn't work properly with devices
  1146. with rotated coordinate systems.
  1147.     - If an error occurred, and the error object wasn't the last
  1148. element of its procedure, the interpreter would re-execute the error
  1149. object after running the error handler.
  1150.     - Memory devices didn't get resized if HWSize was changed,
  1151. leading to out-of-bounds memory accesses.
  1152.  
  1153. Moves revision and revisiondate from gs_init.ps to iinit.c.  Adds a
  1154. -v switch that just prints these out.
  1155.  
  1156. Arranges things so that if Ghostscript is reading from a pipe (`-'
  1157. switch on the command line) and encounters an error, it exits with
  1158. status 1 rather than 0.
  1159.  
  1160. Changes the interpreter interface so the caller explicitly passes a
  1161. pointer for storing an error object.
  1162.  
  1163. Library
  1164. -------
  1165.  
  1166. Fixes bugs:
  1167.     - The automatic adjustment of the scaling for variant paper
  1168. sizes caused the image to get expanded when it should have been
  1169. contracted, and vice versa.
  1170.     - The curve flattener insisted that each line segment be no
  1171. more than 2 x the flatness in length, leading to an enormous number
  1172. of segments even when not necessary for accuracy.
  1173.     - flattenpath and strokepath discarded a trailing moveto.
  1174.     - strokepath treated "0-width" lines as really having a width
  1175. of zero, rather than one pixel.
  1176.     - Buffered devices weren't closed and reopened if the amount
  1177. of buffer space was changed.
  1178.     - stroke used the line cap at the beginning of each subpath
  1179. even if the subpath was closed.
  1180.  
  1181. Removes the requirement that the clipping rectangle fall in the
  1182. non-negative quadrant of device space.  (This was causing problems
  1183. for Ghostview, but removing it required adding the extra clipping
  1184. step to the drawing routines in the drivers.)
  1185.  
  1186. Version 2.5 (8/18/92)
  1187. ===========
  1188.  
  1189. This version adds Type 1 hinting, CCITTFax encoding and decoding, and
  1190. Microsoft Windows support, as well as the usual minor improvements
  1191. and bug fixes.
  1192.  
  1193. Procedures
  1194. ----------
  1195.  
  1196. Fixes bugs:
  1197.     - GSIMPATH, SLZWD, and SLZWE were omitted from the VMS
  1198. makefiles, and GSIM2OUT was not removed.
  1199.     - landscap.ps messed up the current path.
  1200.  
  1201. Adds new switches:
  1202.     -dSAFER disables file writing and directory modification.
  1203.     -dESTACKPRINT causes errors to print the execution stack with
  1204. == instead of =.
  1205.     -sOutputFile=<string> replaces -sOUTPUTFILE (which is still
  1206. recognized) for setting the output file or pipe for the default
  1207. (printer) device.
  1208.     -sPAPERSIZE=<sizename> initializes the paper size.
  1209.     -dBufferSpace=<number> sets the buffer size for the default
  1210. (printer) device.
  1211.  
  1212. For Unix systems, changes the directories in GS_LIB_DEFAULT from
  1213. `pwd` to $(gsdatadir), i.e., normally $(datadir)/ghostscript, where
  1214. datadir is normally /ade/lib.
  1215.  
  1216. Adds a note in the header file to the effect that the X Windows
  1217. driver expects to find header files in $(XINCLUDE)/X11, not in
  1218. $(XINCLUDE).
  1219.  
  1220. Changes -q so it defines QUIET as true instead of null (so it can be
  1221. used in the middle of the command line as well as at the beginning).
  1222.  
  1223. Renames the history.doc file as NEWS.
  1224.  
  1225. Utilities
  1226. ---------
  1227.  
  1228. Platforms
  1229. ---------
  1230.  
  1231. Fixes bugs:
  1232.     - The stack size was not getting increased on the Watcom
  1233. platform.
  1234.  
  1235. Removes "b" from the scratch file opening modes in gp_unix.c and
  1236. (conditionally) in gdevprn.c, to pacify the DECstation Ultrix system.
  1237.  
  1238. Adds a makefile (bcwin.mak) and a platform file (gp_mswin.c) for
  1239. Microsoft Windows.
  1240.  
  1241. On MS-DOS platforms (including Windows), uses the TEMP environment
  1242. variable to designate the directory for scratch files.
  1243.  
  1244. Changes std.h so that the VMS C compiler uses function prototypes and
  1245. 'const'.
  1246.  
  1247. Changes the VMS cc makefile so it doesn't use ansi2knr.
  1248.  
  1249. Fonts
  1250. -----
  1251.  
  1252. Fixes bugs:
  1253.     - findfont left an extra entry on the stack if it couldn't
  1254. find the default font.
  1255.  
  1256. Renames bchi, ncri, and puti as bchri, ncrri, and putri, to conform
  1257. with the naming scheme for other fonts.
  1258.  
  1259. Adds $(CCFLAGS) to the command line used for compiling fonts.
  1260.  
  1261. Converts the .pfa fonts (CharterBT, IBM Courier, and Utopia) to .gsf,
  1262. by removing eexec encryption and also removing some mysterious
  1263. unmapped characters from Courier.  This makes these fonts work with
  1264. DISKFONTS.
  1265.  
  1266. Changes the implementation of compiled fonts so they are read-only
  1267. and sharable (no external references).  (They are, however, not
  1268. position-independent.)
  1269.  
  1270. Provides a way to use compiled fonts on platforms that limit the
  1271. number of characters in an identifier.
  1272.  
  1273. Adds public-domain Cyrillic and Cyrillic-Italic fonts.
  1274.  
  1275. Adds a 'userdict begin' to .loadfont, because Type 3 fonts produced
  1276. by Fontographer expect a writable dictionary on the top of the stack.
  1277.  
  1278. Changes definefont for Type 1 fonts to insert UnderlinePosition and
  1279. UnderlineThickness entries in FontInfo if they are absent, because
  1280. many word processors incorrectly assume these entries are present.
  1281.  
  1282. Drivers
  1283. -------
  1284.  
  1285. Fixes bugs:
  1286.     - The documentation in use.doc said that the densities for
  1287. 9-pin Epson printers were 60x60 to 240x60, rather than 60x72 to
  1288. 240x72.
  1289.     - gdevprn.c smashed one byte beyond the end of the string
  1290. given as the OutputFile device property.
  1291.     - The X11 driver used XVisualIDFromVisual, which is not
  1292. defined in X11R3.
  1293.     - The SunView driver modified the input data, which was
  1294. declared as const.
  1295.     - The LaserJet IIP and III drivers shifted the page 185
  1296. pixels to the left and 0.25" down, because the initialization string
  1297. was incorrect.
  1298.     - The PCX driver wrote 16-bit values using the byte ordering
  1299. of the platform, rather than always LSB first.
  1300.     - For vertical spacing, the LaserJet and DeskJet drivers used
  1301. a command that spaces N/300", rather than N scan lines, but gave it a
  1302. parameter in scan lines.
  1303.     - The VESA driver didn't allocate a full 256-byte buffer for
  1304. reading the mode information from the BIOS, causing the stack to get
  1305. smashed by newer VESA implementations.
  1306.     - The VESA driver didn't use the scan line length returned by
  1307. the BIOS, causing garbage output for some cards and some resolutions.
  1308.     - The generic printer driver didn't free the bitmap when
  1309. closing the device, if it fit entirely in memory.
  1310.     - The PaintJet driver allocated its data areas on the stack
  1311. instead of with gs_malloc.
  1312.     - The generic printer driver didn't attempt to increase the
  1313. buffer size if it was too small.
  1314.     - The band list driver didn't split large bitmaps properly,
  1315. leading to garbled characters at high resolutions.
  1316.     - The GIF and PCX drivers used a color map that often turned
  1317. gray colors into non-grays.
  1318.  
  1319. Changes the default put_props procedure so that if the device is
  1320. open, setting HWSize and/or HWResolution closes the device and
  1321. reopens it.
  1322.  
  1323. Adds a driver for Microsoft Windows 3.n.
  1324.  
  1325. Updates the 'cdj' and 'dj500c' DeskJet 500C drivers with new versions.
  1326. (This are user-contributed drivers.)
  1327.  
  1328. Changes gdev_prn_put_props so OutputFile can be changed dynamically.
  1329.  
  1330. Updates the DEC LN03 driver to also handle the LA50 and LA75.  (This
  1331. is a user-contributed driver with a FSF copyright.)
  1332.  
  1333. Changes the LaserJet/DeskJet driver so that -DA4 in the makefile
  1334. makes A4 paper the default.  The driver now also sends an appropriate
  1335. page size selection command to the printer if the printer supports it.
  1336.  
  1337. Changes all the Aladdin-supported drivers to return appropriate error
  1338. codes rather than -1.
  1339.  
  1340. Adds a driver for the S3 86C911, a PC graphics accelerator used in
  1341. the popular Diamond Stealth board.  This is the first driver that
  1342. uploads character bitmaps to a device; others will probably follow.
  1343.  
  1344. Adds user-supplied code to the Epson driver so it will do triple
  1345. passes on 9-pin printers for higher resolution.
  1346.  
  1347. Adds user-supplied code for the PaintJet XL to the PaintJet driver.
  1348.  
  1349. Interpreter
  1350. -----------
  1351.  
  1352. Fixes bugs:
  1353.     - zdps1.c didn't include alloc.h.
  1354.     - On 32-bit systems, if maxlength of a dictionary was less
  1355. than the actual allocated space, length could become larger than
  1356. maxlength.
  1357.     - flushfile didn't actually flush data when reading.
  1358.     - The ASCII85Decode filter signalled EOF prematurely.
  1359.     - The scanner interpreted .3D.glorp as the number 0.3, rather
  1360. than as a name.
  1361.     - Closing a file freed the stream structure, creating
  1362. dangling references if there were other file objects pointing to the
  1363. same stream.
  1364.     - eexec called handleerror if an error occurred, instead of
  1365. letting the error propagate to an enclosing stopped.
  1366.     - gs.h made perror illegal, instead of defining it in terms
  1367. of strerror.
  1368.     - One-character names weren't being allocated at
  1369. initialization, so they could be left dangling after a restore.
  1370.     - Internal gsaves (i.e., the ones in show and setcachedevice)
  1371. didn't also save istate, so setfont inside a BuildChar procedure
  1372. might cause the font outside to get changed.
  1373.     - The allocator incorrectly freed objects in the current
  1374. chunk that were older than the current save.
  1375.     - mark was just an object, rather than an operator, so 'bind'
  1376. didn't bind it.  (This is theoretically a problem for null, true, and
  1377. false also, but even more unlikely to be a problem in practice.)
  1378.     - packed_get didn't cast packed integers to int, so negative
  1379. integer elements of packed arrays came out wrong.
  1380.     - quit just did a gs_exit, instead of returning to the driver
  1381. in an orderly way.
  1382.     - Because check_type_access checked for errors in the wrong
  1383. order, sometimes type errors were reported as access errors.
  1384.     - eq didn't check for stack underflow.
  1385.     - Some of the stream_procs structures weren't properly
  1386. declared const, leading to link errors on VMS.
  1387.  
  1388. Implements currentcolor, currentcolorspace, setcolor, and
  1389. setcolorspace (for DeviceGray, DeviceRGB, and DeviceCMYK only).
  1390.  
  1391. Implements the dictionary form of image and imagemask.  All the pairs
  1392. in the Decode array must be the same; Interpolate is ignored.  The
  1393. only supported color spaces are DeviceGray, DeviceRGB, and
  1394. DeviceCMYK.
  1395.  
  1396. Implements files as allowable sources for the image operators.
  1397.  
  1398. Removes the index field from the name structure, moving it to the
  1399. 'size' field of name refs.
  1400.  
  1401. Changes the unread/sungetc operation to require that the character be
  1402. the same as the last one read from the file.
  1403.  
  1404. Adds fflush calls to some debugging printout routines, because Unix
  1405. sometimes buffers terminal output.
  1406.  
  1407. Implements the CCITTFaxEncode and CCITTFaxDecode filters.  Implements
  1408. the general case of the SubFileDecode filter.
  1409.  
  1410. Changes definefont to treat a UniqueID of 0 as equivalent to no
  1411. UniqueID, because Fontographer output apparently often violates the
  1412. specification in this way.
  1413.  
  1414. Changes the default printer screen from 32.5 to 46 cells/inch.  (The
  1415. old value was appropriate for a hand-rotated cell with two spots in
  1416. it.)
  1417.  
  1418. Changes the utility routines to allow an integral real wherever an
  1419. integer parameter is expected in a dictionary, because Fontographer
  1420. produces fonts that violate the Adobe specification in this way.
  1421.  
  1422. Adds a `dosio' feature that provides direct access to memory and to
  1423. I/O ports under MS-DOS.  (This feature is not included in the
  1424. standard executables, of course.)
  1425.  
  1426. Changes the default character cache limit to a 1/4" x 1/4" character
  1427. at the default resolution, rather than basing it on the preallocated
  1428. cache size.
  1429.  
  1430. Removes support for t_color objects, which haven't actually been used
  1431. for several releases.
  1432.  
  1433. Implements setcmykcolor and currentcmykcolor as operators, so they
  1434. will interact properly with setcolorspace and currentcolorspace.
  1435.  
  1436. Changes the name of the file.h header file to files.h, to work around
  1437. a bug in the VMS header library.
  1438.  
  1439. Adds command line switches @file (to treat file as more command line,
  1440. to get around the DOS 128-character command line limit) and -ffile
  1441. (so one can specify file names that begin with - or @).
  1442.  
  1443. Changes the PFBDecode filter so it takes an additional boolean that
  1444. says whether or not to convert binary packets to hex.  (Conversion to
  1445. hex and back to binary accounted for a substantial amount of the time
  1446. required to load .PFB fonts.)
  1447.  
  1448. Splits off `copydevice' as a separate operator again.
  1449.  
  1450. Library
  1451. -------
  1452.  
  1453. Fixes bugs:
  1454.     - In the VMS environment, string_.h used its own prototypes
  1455. for the str... and mem... functions instead of <string.h>
  1456.     - gx_alloc_char_bits declared cdsize as long, but didn't
  1457. shorten it when passing it to shorten_cached_char.
  1458.     - Stroking didn't suppress fattening of the lines.
  1459.     - kshow didn't update the cached CTM information in the show
  1460. enumerator when returning from the callout, so further characters
  1461. could get drawn in the wrong place.
  1462.     - When a memory device returned its initial matrix, it
  1463. smashed the padding fields, which contained the interpreter's type
  1464. information.
  1465.     - setcachedevice didn't set the initial matrix in the cache
  1466. memory device.
  1467.     - image_set_rgb (in the image operators) didn't do a
  1468. gx_color_from_rgb, so in principle one could sometimes get incorrect
  1469. colors in an image.
  1470.     - The decision about whether or not to cache a character
  1471. bitmap incorrectly compared the character size against cmax rather
  1472. than cdata_size.
  1473.     - show didn't reset the in_cachedevice flag in the graphics
  1474. state, so characters rendered by a recursive show were never cached.
  1475.     - clip and eoclip didn't release the intermediate flattened
  1476. clip path, causing memory to be lost.
  1477.     - The tile_diff routine didn't handle the case of two
  1478. identical tiles properly; this produced garbage in the band list
  1479. file.
  1480.     - stringwidth didn't round the character origin to an
  1481. integral pixel; this interacted badly with hinting, causing
  1482. improperly hinted characters to wind up in the cache.
  1483.     - Bitmaps (including characters) were displaced, as well as
  1484. being clipped, if they intersected the top of a clipping region.
  1485.     - In gxclist and gdevmem1, the raster computation (although
  1486. not the result) could overflow an int on 16-bit machines.
  1487.  
  1488. Implements decoding (sample mapping) for image and imagemask.
  1489.  
  1490. Implements hinting for Type 1 fonts, based on (but not copying) the
  1491. algorithms from the X11R5 tape.
  1492.  
  1493. Changes curve rasterizing to use sampling, rather than recursive
  1494. subdivision, for characters.  This produces noticeably better output.
  1495. Speed penalty for non-cached characters is less than 10% at display
  1496. resolutions, up to 50% for 300 dpi printers.
  1497.  
  1498. Implements gs_setcmykcolor and gs_currentcmykcolor.  These are
  1499. semi-fake, since they simply convert the color to and from RGB, but
  1500. the former does set the current color space properly.
  1501.  
  1502. Changes clipping regions so they use the any-part-of-pixel rule
  1503. rather than the center-of-pixel rule.  This helps avoid dropouts when
  1504. using very small regions.
  1505.  
  1506. Implements stroke adjustment.
  1507.  
  1508. Version 2.4.2 (5/8/92)
  1509. =============
  1510.  
  1511. This is another quick release.  It finally fixes rotated halftone
  1512. screens, and cleans up a few minor problems from 2.4.1.
  1513.  
  1514. This release is being distributed only to beta testers and commercial
  1515. licensees, since I don't want to be distracted from working on 2.5.
  1516.  
  1517. Procedures
  1518. ----------
  1519.  
  1520. Fixes bugs:
  1521.     - UTRACE still appeared in the VMS makefiles.
  1522.     - The support files (*.bat, *.doc, *.gsf, *.ps, Fontmap,
  1523. COPYING, README) weren't included in the MS-DOS tar file.
  1524.     - The Unix install script didn't install landscap.ps.
  1525.  
  1526. Replaces the type1imagepath operator with PostScript code (impath.ps,
  1527. type1ops.ps) based on the new .imagepath operator.
  1528.  
  1529. Renames LICENSE as COPYING.
  1530.  
  1531. Utilities
  1532. ---------
  1533.  
  1534. Fixes bugs:
  1535.     - pcharstr.ps had an occurrence of Subrs rather than /Subrs,
  1536. causing it to not print the Subrs, or to get an error if there were
  1537. none.
  1538.     - font2c.ps didn't get the const declarations for string
  1539. dictionaries quite right.
  1540.     - The missing newline at the end of gsbj.bat confused GNU
  1541. diff.
  1542.     - ansi2knr would go into an infinite loop if a statement
  1543. exceeded its internal buffer size.
  1544.     - Compiled fonts would get processed by ansi2knr, which
  1545. messed them up.
  1546.  
  1547. Platforms
  1548. ---------
  1549.  
  1550. Fixes bugs:
  1551.     - Ghostscript didn't supply equivalents for rename and
  1552. gettimeofday, which some System V platforms lack.
  1553.     - The missing newline at the end of gp_dosfb.c confused GNU
  1554. diff.
  1555.  
  1556. Changes the Borland makefiles so that stack checking is only enabled
  1557. if DEBUG or TDEBUG is set.
  1558.  
  1559. Fonts
  1560. -----
  1561.  
  1562. Changes the names of the Utopia fonts from utrg/utb/utbi/uti to
  1563. putr/putb/putbi/puti, for consistency with the rest of the font names.
  1564. Changes cour/courb/courbi/couri to ncrr/ncrb/ncrbi/ncri likewise.
  1565.  
  1566. Replaces the Charter fonts with the CharterBT fonts donated by
  1567. Bitstream to the X11R5 distribution.
  1568.  
  1569. Adds font aliasing capability to Fontmap.  Replaces
  1570. Courier-[Bold]Oblique and ZapfChancery-MediumItalic by aliases.
  1571.  
  1572. Changes the FontBBox of the Hershey fonts to be an executable, rather
  1573. than a literal, array.
  1574.  
  1575. Drivers
  1576. -------
  1577.  
  1578. Fixes bugs:
  1579.     - The GIF driver omitted a `private' on the definition of
  1580. gif_print_page.
  1581.     - The GIF driver wrote 16-bit values using the byte ordering
  1582. of the platform, rather than always LSB first.
  1583.     - George Cameron's DeskJet 500C driver had an incorrect
  1584. control sequence for skipping blank lines.
  1585.  
  1586. Adds 'const' in many places, including the tile and bitmap arguments
  1587. of the tile_rectangle, copy_mono, and copy_color driver routines.
  1588. THIS IS A DRIVER INTERFACE CHANGE.  (Printer drivers are not
  1589. affected, since they don't implement these routines.)
  1590.  
  1591. Adds a driver for the Trident TVGA.
  1592.  
  1593. Interpreter
  1594. -----------
  1595.  
  1596. Fixes bugs:
  1597.     - alloc_free sometimes incorrectly chose to put an unaligned
  1598. block in an old segment on a freelist.
  1599.     - The default undercolor removal function returned its
  1600. argument rather than returning 0.
  1601.  
  1602. Adds NullEncode and SubFileDecode to the standard filters, since
  1603. bdftops uses the latter.
  1604.  
  1605. Adds RunLengthEncode and RunLengthDecode to the optional filters.
  1606.  
  1607. Removes the type1imagepath operator.  (It is still available as
  1608. PostScript code, impath.ps.)  Replaces it with a simpler outline
  1609. tracing operator .imagepath.
  1610.  
  1611. Adds 'const' in many places.
  1612.  
  1613. Makes fileposition (but not setfileposition) legal for NullEncode
  1614. filters.
  1615.  
  1616. Changes the default transfer function for high-resolution devices
  1617. from the identity function to the square root function.
  1618.  
  1619. Moves array_get from zgeneric.c to iutil.c.
  1620.  
  1621. Changes uses of fopen to add a "b" to the access mode, rather than
  1622. relying on the _fmode global variable on MS-DOS platforms.
  1623.  
  1624. Allows use of the -Z switch even when gsmain.c wasn't compiled with
  1625. -DDEBUG, since other modules might have been.
  1626.  
  1627. Reorganizes gs.c and gsmain.c so that the latter can be used in
  1628. server environments.
  1629.  
  1630. Replaces all uses of stdin/out/err with gs_stdin/out/err.
  1631.  
  1632. Makes the number of permanent entries on the dictionary stack a
  1633. parameter, to allow inserting globaldict in the future.
  1634.  
  1635. Changes BlueShift in the Type 1 font Private dictionary to allow real
  1636. numbers.  (This differs from the Adobe specification, but at least
  1637. one commercial font has a real number for BlueShift.)
  1638.  
  1639. Library
  1640. -------
  1641.  
  1642. Fixes bugs:
  1643.     - The doubling check in init_ht (gxht.c) still sometimes
  1644. thought there was enough room to double the tile when there actually
  1645. wasn't.
  1646.     - Rotated halftone screens didn't work.
  1647.     - gxarith.h used #ifdef vax, rather than #if
  1648. !arch_floats_are_IEEE, to test whether IEEE floats were being used.
  1649.     - pathforall didn't report a trailing moveto.
  1650.  
  1651. Replaces gs_type1imagepath with gs_imagepath.
  1652.  
  1653. Allows sOUTPUTFILE=-, meaning output to stdout.
  1654.  
  1655. Adds 'const' in many places.
  1656.  
  1657. Replaces all uses of stdin/out/err with gs_stdin/out/err.
  1658.  
  1659. Version 2.4.1 (4/21/92)
  1660. =============
  1661.  
  1662. This is a quick release to fix minor problems discovered in 2.4, and
  1663. to add a few improvements that didn't quite make it into 2.4.  It
  1664. also adds GIF and PCX file support.
  1665.  
  1666. Procedures
  1667. ----------
  1668.  
  1669. Fixes bugs:
  1670.     - Some makefile dependencies, and the ccgs script, caused trouble
  1671. for parallel versions of `make'.
  1672.     - Compiling genarch with -O with gcc on the RS/6000 produced a
  1673. buggy executable.
  1674.  
  1675. Fixes some minor problems in make.doc.
  1676.  
  1677. Adds DEVICE_DEVS2..5 to handle long device lists.
  1678.  
  1679. Removes the need to set GS_RUN_EXE when using the Watcom compiler on
  1680. MS-DOS systems.
  1681.  
  1682. Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps.
  1683.  
  1684. Gets rid of gconfig.ps; this information is now compiled in gconfig.c.
  1685.  
  1686. Utilities
  1687. ---------
  1688.  
  1689. Fixes bugs:
  1690.     - The palette for pstoppm in 8-bit mode didn't contain all 8
  1691. primary colors.
  1692.     - font2c used just values_ to mean &values_[0]; some compilers
  1693. couldn't handle this.
  1694.  
  1695. Makes font2c insert `const' in many appropriate places.
  1696.  
  1697. Drivers
  1698. -------
  1699.  
  1700. Fixes bugs:
  1701.     - The SunView driver had not been updated properly for 2.4 and was
  1702. pretty thoroughly broken.
  1703.     - None of the printer drivers worked properly with the Watcom
  1704. compiler, because stdprn was doing \n -> \r\n substitution.
  1705.     - If the generic printer driver couldn't allocate the requested
  1706. size command list buffer, it gave up rather than trying to allocate a
  1707. smaller buffer.
  1708.     - The SuperVGA drivers (except for the VESA driver) didn't
  1709. work with the Watcom compiler, because a couple of places in the
  1710. drivers weren't truncating the offset of "segmented" pointers
  1711. properly.
  1712.     - Some of the H-P used <esc>*b#Y rather than <esc>*p+#Y for
  1713. vertical positioning; this apparently is wrong, at least for the
  1714. LJIIp.
  1715.  
  1716. Removes the dependence of the X Windows driver on Xt, Xext, and Xmu.  As a
  1717. result, Ghostscript will not install a standard colormap itself, but it
  1718. will use one if one is already installed.
  1719.  
  1720. Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file
  1721. formats.
  1722.  
  1723. Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX
  1724. file formats.
  1725.  
  1726. Adds drivers for monochrome and 256-color GIF file formats.
  1727.  
  1728. Fonts
  1729. -----
  1730.  
  1731. Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
  1732.  
  1733. Interpreter
  1734. -----------
  1735.  
  1736. Fixes bugs:
  1737.     - A value with l_new set could 'escape' to save level 0 on a
  1738. stack; if stored, it prevented the slot from being saved and restored
  1739. properly.
  1740.     - 16#7fffffff + 1 gave the floating point equivalent of -2^31, not
  1741. 2^31.
  1742.     - The PFBDecode filter computed the packet length incorrectly if
  1743. the 0x8000-bit of the length was set.
  1744.     - 5-byte numbers in Type 1 CharStrings complained of a rangecheck
  1745. if they exceeded 16 bits, rather than if they exceeded the integer part of
  1746. a fixed.
  1747.     - (, ), and \ appearing in file name arguments in the command
  1748. line did not work properly.
  1749.  
  1750. Adds 'const' in many places.
  1751.  
  1752. Changes the random number generator to be the same as the one used in
  1753. Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript).
  1754.  
  1755. Exits with code 1 rather than code 0 on an unrecoverable error detected at
  1756. the PostScript level.
  1757.  
  1758. Makes dictionaries expand automatically when they fill up.
  1759.  
  1760. Adds gp_exit to complement gp_init.
  1761.  
  1762. Changes dictionaries to always allocate a power of 2 entries on
  1763. 32-bit machines.  Changes the name table to allocate indices
  1764. scattered, so dictionary lookup doesn't have to do a multiply to
  1765. scramble the index.
  1766.  
  1767. Changes the handling of currentfile to do "shallow binding" so stack
  1768. searching is almost never required.
  1769.  
  1770. Library
  1771. -------
  1772.  
  1773. Fixes bugs:
  1774.     - arc and arcn got a numeric exception if the radius was zero.
  1775.     - The undocumented 15 opcode in Type 1 fonts wasn't ignored.
  1776.     - PaintType 3 wasn't allowed.  (It isn't clear what it should
  1777. mean; we treat it as equivalent to 0.)
  1778.     - The VAX/VMS C compiler was generating incorrect code for the
  1779. chi_bits and cmask macros in gdevmem, producing incorrect output.
  1780.     - If the result of the slow algorithm for intersecting clipping
  1781. paths was a rectangle, the wrong thing happened (cbox didn't get set).
  1782.     - gx_path_is_rectangle didn't recognize open rectangles.
  1783.     - clist_change_tile didn't check properly whether the tile
  1784. size had changed, so changing the screen could produce invalid band
  1785. files.
  1786.     - The image operators did the wrong thing in the 1-for-1
  1787. case, interleaving N bytes of data with 7*N bytes of garbage.
  1788.     - stroke sometimes handled bevel and miter joins wrong in
  1789. reflected coordinate systems.
  1790.     - init_ht checked incorrectly whether there was enough room
  1791. to Y-replicate tiles, so sometimes it did it when it shouldn't have.
  1792.     - stroke sometimes thought lines were thin when they weren't.
  1793.  
  1794. Adds 'const' in many places.
  1795.  
  1796. Adds support for 2- and 4-bit-per-pixel memory devices.
  1797.  
  1798. Version 2.4 (3/25/92)
  1799. ===========
  1800.  
  1801. This is a major release that adds SuperVGA support, support for Metrics,
  1802. settable device properties, and incremental font loading.  It also
  1803. includes important performance improvements, based on rewrites of some key
  1804. algorithms, and quite a few new Level 2 / Display PostScript facilities.
  1805.  
  1806. Procedures
  1807. ----------
  1808.  
  1809. Fixes bugs:
  1810.     - The rule for compiling gconfig.c didn't include the -I switches.
  1811.     - .bat files were being distributed with a \n line terminator
  1812. rather than \r\n.
  1813.     - A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS
  1814. command files.
  1815.     - Unix systems couldn't handle multiple drivers with overlapping
  1816. sets of files.
  1817.     - -s<name> defined <name> as a null, rather than as an empty string.
  1818.  
  1819. Adds gconfig.ps to the list of needed configuration files.
  1820.  
  1821. Changes the way that the makefile handles nested .h files, so that it
  1822. doesn't have to `touch' them.
  1823.  
  1824. Adds the loadallfonts procedure to gs_fonts.ps.
  1825.  
  1826. Changes the standard DOS configuration to include VGA, EGA, VESA, Epson,
  1827. BubbleJet, and H-P printer drivers.
  1828.  
  1829. Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak.
  1830.  
  1831. Adds a USE_ASM flag so that one can build a DOS version of Ghostscript
  1832. without having an assembler.
  1833.  
  1834. Splits off common code from the two MS-DOS makefiles into tccommon.mak.
  1835.  
  1836. Replaces the COPYING and LICENSE files with a new LICENSE file containing
  1837. version 2 of the GNU General Public License.
  1838.  
  1839. Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no
  1840. longer needed.
  1841.  
  1842. Adds a GS_DEVICE environment variable to supply a default device name if
  1843. desired.
  1844.  
  1845. Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and
  1846. unix-[g]cc.mak, for other ANSI C compilers.
  1847.  
  1848. Changes the way that optional features are defined in the makefiles, so
  1849. that they actually work.
  1850.  
  1851. Adds support for the Watcom C/386 compiler.
  1852.  
  1853. Allows # in the command line as equivalent to =, to compensate for
  1854. brain-damaged MS-DOS shell.
  1855.  
  1856. Adds -sOUTPUTFILE= to set the output file or pipe.
  1857.  
  1858. Adds -dWRITESYSTEMDICT to leave systemdict writable.
  1859.  
  1860. Utilities
  1861. ---------
  1862.  
  1863. Fixes bugs:
  1864.     - pcharstr.ps insisted on having Subrs be present in the font.
  1865.     - pcharstr.ps decoded negative numbers between -108 and -1131
  1866. incorrectly.
  1867.     - pfbtogs.ps didn't handle packets longer than 64K correctly.
  1868.  
  1869. Changes the bdftops utility so that it makes entries for UnderlinePosition
  1870. and UnderlineThickness in FontInfo, and so that it always records a
  1871. FullName (the FontName if no other is provided).
  1872.  
  1873. Changes the name of the pfbtops utility to pfbtogs, because groff already
  1874. includes a program called pfbtops.
  1875.  
  1876. Adds the gslp utility for doing "line printing" of text files, similar to
  1877. enscript + lpr.
  1878.  
  1879. Adds a new variable DITHERPPI that enables a different dither pattern,
  1880. claimed to be better for printers.
  1881.  
  1882. Adds the font2c utility for compiling Type 1 fonts into C, so they can be
  1883. linked into an executable rather than loaded dynamically.
  1884.  
  1885. Drivers
  1886. -------
  1887.  
  1888. Fixes bugs:
  1889.     - gdev_prn_copy_scan_lines was erroneously masking the last byte
  1890. of data even on color printers, as was paintjet_print_page.
  1891.     - The TruFax driver had a couple of compilation errors, since it
  1892. hadn't been compiled in a while.
  1893.     - The BGI driver sometimes didn't consult BGIPATH when looking for
  1894. .BGI files.
  1895.     - initclip did the wrong thing with memory devices.
  1896.     - The BGI driver didn't look in BGIDIR for .BGI files.
  1897.     - The Epson driver didn't set the right margin properly with
  1898. ESC+Q.
  1899.     - The BJ-10e driver was badly broken.
  1900.     - gdev_prn_open/close_printer didn't reset the command list file,
  1901. so it was taking quadratic time to print multi-page documents.
  1902.  
  1903. Adds color to the SunView driver.
  1904.  
  1905. Adds selectable resolution (75, 100, 150, or 300 DPI) to the
  1906. DeskJet/LaserJet driver.
  1907.  
  1908. Changes gssetdev so that drivers can specify special libraries to be
  1909. loaded, as well as object files.
  1910.  
  1911. Adds a driver for VESA-compliant SuperVGA displays.  This driver handles
  1912. all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode.  The
  1913. default is VGA resolution (640 x 480).
  1914.  
  1915. Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards
  1916. using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and
  1917. the Orchid ProDesigner II (256-color modes only).
  1918.  
  1919. Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600,
  1920. 16-color modes (for cards with only 256K of memory).
  1921.  
  1922. Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II,
  1923. and H-P DeskJet 500C printers.
  1924.  
  1925. Adds Tim Theisen's Ghostview changes to the X11 driver.
  1926.  
  1927. MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as
  1928. follows:
  1929.  
  1930.     - Changes map_rgb_color and map_color_rgb to always work in a
  1931.         16-bit color value space, rather than a space defined by the
  1932.         maximum number of distinct colors provided by the device.
  1933.  
  1934.     - Adds an argument to the output_page procedure to indicate
  1935.         whether the procedure is being called for copypage or
  1936.         showpage, and a num_copies argument.
  1937.  
  1938.     - Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that
  1939.         drivers can cache bitmaps in the server or device if they want
  1940.         to.
  1941.  
  1942.     - Removes fill_trapezoid and tile_trapezoid.
  1943.  
  1944.     - Adds a new get_bits procedure for reading the bits back from the
  1945.         driver buffer (when possible), replacing copy_scan_lines.
  1946.         This procedure takes a new argument describing padding and
  1947.         byte swapping, and returns a different value from
  1948.         copy_scan_lines.
  1949.  
  1950.     - Adds get_props and put_props procedures for accessing arbitrary
  1951.         additional properties of devices.  The interface is quite
  1952.         complex, but provides a great deal of flexibility.
  1953.  
  1954. See drivers.doc for details.
  1955.  
  1956. Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line.
  1957.  
  1958. Adds a user-contributed driver for DigiBoard, Inc.'s fax software.
  1959.  
  1960. Fonts
  1961. -----
  1962.  
  1963. Changes Type1BuildChar so it uses the information from the Metrics
  1964. dictionary in the font, if Metrics is present.
  1965.  
  1966. Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them
  1967. directly.  Also changes .loadfont to disable packing temporarily, because
  1968. some fonts rely on procedures being writable (!).
  1969.  
  1970. Interpreter
  1971. -----------
  1972.  
  1973. Fixes bugs:
  1974.     - The hypot function is not available on some Unix systems.
  1975.     - Ghostscript didn't flush and close files when exiting.
  1976.     - In statusdict, the /margins procedure used .leftmargin, but
  1977. /setmargins used .lmargin.
  1978.     - An out-of-range putinterval would simply do nothing, rather than
  1979. reporting an error.
  1980.     - If an attempt to allocate a block larger than the allocator's
  1981. chunk size (20K) failed, the allocator would erroneously think it had
  1982. succeeded.
  1983.     - The bind operator made the top-level procedure read-only, as
  1984. well as interior procedures.
  1985.     - gs.c copied 1 extra character for the value of strings defined
  1986. on the command line with -s...=, which could smash the first byte of the
  1987. next object in memory.
  1988.     - copying a dictionary erroneously required the maxlength of the
  1989. destination to be greater than or equal to the maxlength of the source,
  1990. rather than the length of the source.
  1991.     - undef didn't correctly decide when to mark a deleted entry as
  1992. deleted vs. free; as a result, some keys couldn't be looked up properly
  1993. after an undef.
  1994.     - type1encrypt and type1decrypt didn't set the size of the result
  1995. properly.
  1996.     - cvi and cvr didn't allow leading or trailing whitespace in
  1997. strings.
  1998.     - cvs didn't cause an error if the destination string was too
  1999. short.
  2000.     - Many operators didn't check correctly for stack underflow (off
  2001. by 1).
  2002.     - `for' used reals, rather than integers, if the limit was a real,
  2003. even if the initial value and increment were integers.
  2004.     - `restore' didn't properly invalidate copies of the save object
  2005. being restored from; `save dup restore restore' would crash.
  2006.     - `restore' sometimes didn't undo stores into matrices that were
  2007. stored into by operators.  (The identity matrix always had l_new set.)
  2008.     - readline gave a rangecheck if the input line exactly filled the
  2009. string.
  2010.     - `--' as the last switch on the command line caused a crash
  2011. rather than an error message.
  2012.     - On MS-DOS systems, filenameforall didn't handle patterns with a
  2013. drive or directory specifier properly.
  2014.     - stroke sometimes called gz_draw_line_fixed even if the line went
  2015. outside the clipping box by 1 pixel.
  2016.  
  2017. Changes the loop that binds procedure "operators" to entirely disable the
  2018. handling of the typecheck error, rather than to use stopped.  This cuts
  2019. initialization time significantly, and also eliminates about 35K of wasted
  2020. space (for saving the stacks).
  2021.  
  2022. Changes the version "operator" so it returns 47.0.  Adds "revision" to
  2023. define the Ghostscript version # x 100.
  2024.  
  2025. Adds gscurrentresolution and gssetresolution procedures for getting and
  2026. setting the device resolution.
  2027.  
  2028. Adds -r<res> and -r<xres>x<yres> as command line options for setting
  2029. device resolution.
  2030.  
  2031. Adds a facility for incrementally loading the individual CharStrings of a
  2032. Ghostscript font from the disk.  This can save a lot of memory, at the
  2033. expense of slower rendering.  (It is intended primarily for MS-DOS
  2034. systems.)
  2035.  
  2036. Changes findlibfile to return the name of the file that was actually
  2037. opened, as well as the file itself, when the operation succeeds.
  2038.  
  2039. Changes the name of the main entry to the interpreter from interpret to
  2040. gs_interpret, because of a conflict with a Data General library procedure.
  2041.  
  2042. Adds the .setmetrics operator to set the metrics for the current
  2043. character for Type 1 fonts.
  2044.  
  2045. Adds more LaserWriter-specific entries to statusdict.
  2046.  
  2047. Gives names to all the internal `operators', so they will print out
  2048. reasonably when an error occurs.
  2049.  
  2050. Extends the status operator to accept a string and return file
  2051. information, as defined for Level 2 PostScript.
  2052.  
  2053. Adds the filter operator and some specific filters: ASCII85Encode,
  2054. ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode,
  2055. PFBDecode, and the null case of SubFileDecode.
  2056.  
  2057. Extends the scanner to recognize the Level 2 << and >> tokens.
  2058.  
  2059. Adds a facility for extracting the text strings from a PostScript file and
  2060. writing them out in a simple format (selected by -dASCIIOUT, implemented
  2061. by gs_2asc.ps).
  2062.  
  2063. Implements all of the remaining Display PostScript facilities that are
  2064. also in Level 2 (i.e., everything in section A.1.3 of the PostScript
  2065. Language Reference Manual, Second Edition, that is not also in section
  2066. A.1.2).  The virtual memory operations are all stubs; the new halftone
  2067. options are not fully implemented.
  2068.  
  2069. Changes makeimagedevice to use a string of gray or RGB values, rather than
  2070. an array of color objects, to specify the palette.  Removes
  2071. currentgscolor and setgscolor from the interpreter, but leaves t_color
  2072. objects in, since they may be useful later.
  2073.  
  2074. Adds getdeviceprops and putdeviceprops for manipulating device properties.
  2075. Currently defined properties for all devices: InitialMatrix, HWResolution,
  2076. HWSize, Name.  Currently defined properties for printers: BufferSpace,
  2077. MaxBitmap, OutputFile.  OutputFile allows |command for piping on Unix
  2078. systems.
  2079.  
  2080. Removes deviceparams and makedevice.  Adds devicedefaultmatrix.
  2081.  
  2082. Implements reversepath.
  2083.  
  2084. Makes copy work on devices.
  2085.  
  2086. MS-DOS specific
  2087. - - - - - - - -
  2088.  
  2089. Fixes bugs:
  2090.     - iutilasm.asm wouldn't assemble with newer versions of MASM if
  2091. CPU_TYPE was set to 286 or above.
  2092.     - CPU_TYPE=386 didn't properly substitute the faster
  2093. multiply/divide routines under Turbo C++ or Borland C++, only under the
  2094. original Turbo C.
  2095.  
  2096. Library
  2097. -------
  2098.  
  2099. Fixes bugs:
  2100.     - A curve whose first and last points were the same wouldn't get
  2101. drawn at all.
  2102.     - A bug in the Turbo C++ compiler generated bad code when shifting
  2103. a long right by 1 bit.
  2104.     - If stroking a dashed line ever encountered a segment that was
  2105. completely blank, Ghostscript would indirect through a null pointer.
  2106.     - arc and arcn gave an error if the radius was negative.
  2107.     - stroke always used the general algorithm, even if the line was
  2108. guaranteed to be thin.
  2109.     - arc and arcn erroneously reduced the angles mod 360.
  2110.     - Very large or negative 32-bit numbers in Type 1 fonts didn't
  2111. work properly on MS-DOS systems (the ff0000 bits got set to zero). 
  2112.     - Color printer devices rendering entirely in memory only
  2113. allocated a monochrome-sized bitmap.
  2114.     - clip and eoclip didn't intersect the paths properly in the
  2115. general case.
  2116.     - charpath erroneously rounded the current point to an integral
  2117. value, causing characters to be spaced improperly.
  2118.     - The definition of max_color_param got some compilers confused.
  2119.     - charpath always used quadratic time and space, and dropped all
  2120. but the last character when used with a Type 3 font.
  2121.     - Stroking a path with a 180 degree angle would incorrectly miter
  2122. instead of beveling.
  2123.     - Type 1 fonts used the current flatness for curves, which could
  2124. produce bad (and inconsistent) results.
  2125.     - Stroking a degenerate line segment produced incorrect results.
  2126.  
  2127. Changes the character cache to use the UniqueID as the key, when
  2128. available, instead of the font pointer.  This dramatically improves
  2129. performance when fonts are getting removed and reloaded because of page
  2130. isolation with save/restore.
  2131.  
  2132. Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c.
  2133.  
  2134. Changes the Type 1 interpreter so that it rounds line and curve endpoints
  2135. to the center of the nearest half-pixel, and omits null line segments.
  2136. This both speeds up rendering at small sizes and improves output quality.
  2137.  
  2138. Changes gs_deviceparams to return resolution as well as extent; changes
  2139. gs_makedevice to accept resolution as well as extent.
  2140.  
  2141. Replaces the algorithm for approximating circular arcs with curves with a
  2142. more accurate one.
  2143.  
  2144. Changes gs_point and gs_rect to use doubles rather than floats.
  2145.  
  2146. Adds gs_setmetrics, for overriding Type 1 font metrics for the current
  2147. character.
  2148.  
  2149. Changes clipping to use lists of rectangles rather than path intersection.
  2150.  This makes a big difference when clipping bitmaps (including characters).
  2151.  
  2152. Changes the character cache to discard entries incrementally, rather than
  2153. clearing the entire cache when it fills up.
  2154.  
  2155. Changes the implementation of transfer functions to use a cached map,
  2156. built when the transfer function is set.  This makes transfer functions
  2157. work properly in all situations, including images.
  2158.  
  2159. Defines a .quit operator that takes an exit code, and redefines quit in
  2160. terms of it.
  2161.  
  2162. Adds support for 16-bit-per-pixel devices in gdevmem.
  2163.  
  2164. Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and
  2165. gs_makedevice.
  2166.  
  2167. Changes setscreen to ensure that the cell is always at least 4x4 pixels in
  2168. size.
  2169.  
  2170. Versions before 2.4
  2171. ===================
  2172.  
  2173. See the file history.doc.
  2174.