xref: /plan9/sys/src/cmd/gs/doc/History2.htm (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<title>History of Ghostscript versions 1.n</title>
5<!-- $Id: History2.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ -->
6<!-- Originally: history2.txt -->
7<!--
8	WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
9	re-create the table of contents here, because it will replace the
10	hand-edited TOC subheads with a separate subhead for each H2 in
11	the body of the file.  Or if you do, first look at the original
12	TOC to see how to edit it for visual conciseness.
13-->
14<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
15</head>
16
17<body>
18<!-- [1.0 begin visible header] ============================================ -->
19
20<!-- [1.1 begin headline] ================================================== -->
21
22<h1>History of Ghostscript versions 2.n</h1>
23
24<!-- [1.1 end headline] ==================================================== -->
25
26<!-- [1.2 begin table of contents] ========================================= -->
27
28<h2>Table of contents</h2>
29
30<blockquote><ul>
31<li><a href="#Version2.9.10b">Version 2.9.10-beta (7/28/94)</a>
32<ul>
33<li><a href="#V2.9.10b_Documentation">Documentation</a>,
34    <a href="#V2.9.10b_Procedures">Procedures</a>,
35    <a href="#V2.9.10b_Utilities">Utilities</a>,
36    <a href="#V2.9.10b_Drivers">Drivers</a>,
37    <a href="#V2.9.10b_Platforms">Platforms</a>,
38    <a href="#V2.9.10b_Fonts">Fonts</a>,
39    <a href="#V2.9.10b_Interpreter">Interpreter</a>,
40    <a href="#V2.9.10b_Streams">Streams</a>,
41    <a href="#V2.9.10b_Library">Library</a>
42</ul>
43<li><a href="#Version2.9.9b">Version 2.9.9-beta (6/23/94)</a>
44<ul>
45<li><a href="#V2.9.9b_Documentation">Documentation</a>,
46    <a href="#V2.9.9b_Platforms">Platforms</a>,
47    <a href="#V2.9.9b_Fonts">Fonts</a>,
48    <a href="#V2.9.9b_Interpreter">Interpreter</a>,
49    <a href="#V2.9.9b_Library">Library</a>
50</ul>
51<li><a href="#Version2.9.8">Version 2.9.8 (6/20/94)</a>
52<ul>
53<li><a href="#V2.9.8_Documentation">Documentation</a>,
54    <a href="#V2.9.8_Procedures">Procedures</a>,
55    <a href="#V2.9.8_Utilities">Utilities</a>,
56    <a href="#V2.9.8_Drivers">Drivers</a>,
57    <a href="#V2.9.8_Platforms">Platforms</a>,
58    <a href="#V2.9.8_Fonts">Fonts</a>,
59    <a href="#V2.9.8_Interpreter">Interpreter</a>,
60    <a href="#V2.9.8_Library">Library</a>
61</ul>
62<li><a href="#Version2.9.7b">Version 2.9.7-beta (6/5/94)</a>
63<ul>
64<li><a href="#V2.9.7b_Documentation">Documentation</a>,
65    <a href="#V2.9.7b_Procedures">Procedures</a>,
66    <a href="#V2.9.7b_Utilities">Utilities</a>,
67    <a href="#V2.9.7b_Drivers">Drivers</a>,
68    <a href="#V2.9.7b_Platforms">Platforms</a>,
69    <a href="#V2.9.7b_Fonts">Fonts</a>,
70    <a href="#V2.9.7b_Interpreter">Interpreter</a>,
71    <a href="#V2.9.7b_Library">Library</a>
72</ul>
73<li><a href="#Version2.9.6b">Version 2.9.6-beta (5/23/94, not distributed to the public)</a>
74<ul>
75<li><a href="#V2.9.6b_Documentation">Documentation</a>,
76    <a href="#V2.9.6b_Procedures">Procedures</a>,
77    <a href="#V2.9.6b_Utilities">Utilities</a>,
78    <a href="#V2.9.6b_Drivers">Drivers</a>,
79    <a href="#V2.9.6b_Platforms">Platforms</a>,
80    <a href="#V2.9.6b_Fonts">Fonts</a>,
81    <a href="#V2.9.6b_Interpreter">Interpreter</a>,
82    <a href="#V2.9.6b_Library">Library</a>
83</ul>
84<li><a href="#Version2.9.5b">Version 2.9.5-beta (4/11/94)</a>
85<ul>
86<li><a href="#V2.9.5b_Documentation">Documentation</a>,
87    <a href="#V2.9.5b_Procedures">Procedures</a>,
88    <a href="#V2.9.5b_Utilities">Utilities</a>,
89    <a href="#V2.9.5b_Drivers">Drivers</a>,
90    <a href="#V2.9.5b_Platforms">Platforms</a>,
91    <a href="#V2.9.5b_Interpreter">Interpreter</a>,
92    <a href="#V2.9.5b_Library">Library</a>
93</ul>
94<li><a href="#Version2.9.4b">Version 2.9.4-beta (2/19/94)</a>
95<ul>
96<li><a href="#V2.9.4b_Procedures">Procedures</a>,
97    <a href="#V2.9.4b_Utilities">Utilities</a>,
98    <a href="#V2.9.4b_Drivers">Drivers</a>,
99    <a href="#V2.9.4b_Platforms">Platforms</a>,
100    <a href="#V2.9.4b_Interpreter">Interpreter</a>,
101    <a href="#V2.9.4b_Library">Library</a>
102</ul>
103<li><a href="#Version2.9.3b">Version 2.9.3-beta (1/19/94)</a>
104<ul>
105<li><a href="#V2.9.3b_Documentation">Documentation</a>,
106    <a href="#V2.9.3b_Procedures">Procedures</a>,
107    <a href="#V2.9.3b_Drivers">Drivers</a>,
108    <a href="#V2.9.3b_Platforms">Platforms</a>,
109    <a href="#V2.9.3b_Interpreter">Interpreter</a>,
110    <a href="#V2.9.3b_Library">Library</a>
111</ul>
112<li><a href="#Version2.9.2b">Version 2.9.2-beta (1/2/94)</a>
113<ul>
114<li><a href="#V2.9.2b_Documentation">Documentation</a>,
115    <a href="#V2.9.2b_Utilities">Utilities</a>,
116    <a href="#V2.9.2b_Drivers">Drivers</a>,
117    <a href="#V2.9.2b_Platforms">Platforms</a>,
118    <a href="#V2.9.2b_Fonts">Fonts</a>,
119    <a href="#V2.9.2b_Interpreter">Interpreter</a>,
120    <a href="#V2.9.2b_Library">Library</a>
121</ul>
122<li><a href="#Version2.9.1b">Version 2.9.1-beta (12/7/93)</a>
123<ul>
124<li><a href="#V2.9.1b_Utilities">Utilities</a>,
125    <a href="#V2.9.1b_Interpreter">Interpreter</a>,
126    <a href="#V2.9.1b_Library">Library</a>
127</ul>
128<li><a href="#Version2.9b">Version 2.9-beta (12/6/93)</a>
129<ul>
130<li><a href="#V2.9b_Documentation">Documentation</a>,
131    <a href="#V2.9b_Procedures">Procedures</a>,
132    <a href="#V2.9b_Utilities">Utilities</a>,
133    <a href="#V2.9b_Drivers">Drivers</a>,
134    <a href="#V2.9b_Platforms">Platforms</a>,
135    <a href="#V2.9b_Interpreter">Interpreter</a>,
136    <a href="#V2.9b_Library">Library</a>
137</ul>
138<li><a href="#Version2.8b">Version 2.8-beta (11/10/93)</a>
139<ul>
140<li><a href="#V2.8b_Documentation">Documentation</a>,
141    <a href="#V2.8b_Procedures">Procedures</a>,
142    <a href="#V2.8b_Utilities">Utilities</a>,
143    <a href="#V2.8b_Drivers">Drivers</a>,
144    <a href="#V2.8b_Platforms">Platforms</a>,
145    <a href="#V2.8b_Fonts">Fonts</a>,
146    <a href="#V2.8b_Interpreter">Interpreter</a>,
147    <a href="#V2.8b_Library">Library</a>
148</ul>
149<li><a href="#Version2.7.2b">Version 2.7.2-beta (10/11/93)</a>
150<ul>
151<li><a href="#V2.7.2b_Utilities">Utilities</a>,
152    <a href="#V2.7.2b_Interpreter">Interpreter</a>,
153    <a href="#V2.7.2b_Library">Library</a>
154</ul>
155<li><a href="#Version2.7.1b">Version 2.7.1-beta (10/4/93, not distributed to the public)</a>
156<ul>
157<li><a href="#V2.7.1b_Documentation">Documentation</a>,
158    <a href="#V2.7.1b_Utilities">Utilities</a>,
159    <a href="#V2.7.1b_Drivers">Drivers</a>,
160    <a href="#V2.7.1b_Platforms">Platforms</a>,
161    <a href="#V2.7.1b_Fonts">Fonts</a>,
162    <a href="#V2.7.1b_Interpreter">Interpreter</a>,
163    <a href="#V2.7.1b_Library">Library</a>
164</ul>
165<li><a href="#Version2.7b">Version 2.7-beta (9/20/93, not distributed to the public)</a>
166<ul>
167<li><a href="#V2.7b_Documentation">Documentation</a>,
168    <a href="#V2.7b_Procedures">Procedures</a>,
169    <a href="#V2.7b_Utilities">Utilities</a>,
170    <a href="#V2.7b_Drivers">Drivers</a>,
171    <a href="#V2.7b_Platforms">Platforms</a>,
172    <a href="#V2.7b_Fonts">Fonts</a>,
173    <a href="#V2.7b_Interpreter">Interpreter</a>,
174    <a href="#V2.7b_Library">Library</a>
175</ul>
176<li><a href="#Version2.6.1">Version 2.6.1 (5/28/93)</a>
177<ul>
178<li><a href="#V2.6.1_Documentation">Documentation</a>,
179    <a href="#V2.6.1_Procedures">Procedures</a>,
180    <a href="#V2.6.1_Utilities">Utilities</a>,
181    <a href="#V2.6.1_Drivers">Drivers</a>,
182    <a href="#V2.6.1_Platforms">Platforms</a>,
183    <a href="#V2.6.1_Fonts">Fonts</a>,
184    <a href="#V2.6.1_Interpreter">Interpreter</a>,
185    <a href="#V2.6.1_Library">Library</a>
186</ul>
187<li><a href="#Version2.6">Version 2.6 (5/9/93)</a>
188<ul>
189<li><a href="#V2.6_Documentation">Documentation</a>,
190    <a href="#V2.6_Procedures">Procedures</a>,
191    <a href="#V2.6_Utilities">Utilities</a>,
192    <a href="#V2.6_Platforms">Platforms</a>,
193    <a href="#V2.6_Fonts">Fonts</a>,
194    <a href="#V2.6_Drivers">Drivers</a>,
195    <a href="#V2.6_Interpreter">Interpreter</a>,
196    <a href="#V2.6_Library">Library</a>
197</ul>
198<li><a href="#Version2.5.2">Version 2.5.2 (9/20/92)</a>
199<ul>
200<li><a href="#V2.5.2_Procedures">Procedures</a>,
201    <a href="#V2.5.2_Utilities">Utilities</a>,
202    <a href="#V2.5.2_Platforms">Platforms</a>,
203    <a href="#V2.5.2_Drivers">Drivers</a>,
204    <a href="#V2.5.2_Interpreter">Interpreter</a>,
205    <a href="#V2.5.2_Library">Library</a>
206</ul>
207<li><a href="#Version2.5.1">Version 2.5.1 (9/11/92)</a>
208<ul>
209<li><a href="#V2.5.1_Procedures">Procedures</a>,
210    <a href="#V2.5.1_Utilities">Utilities</a>,
211    <a href="#V2.5.1_Platforms">Platforms</a>,
212    <a href="#V2.5.1_Fonts">Fonts</a>,
213    <a href="#V2.5.1_Drivers">Drivers</a>,
214    <a href="#V2.5.1_Interpreter">Interpreter</a>,
215    <a href="#V2.5.1_Library">Library</a>
216</ul>
217<li><a href="#Version2.5">Version 2.5 (8/18/92)</a>
218<ul>
219<li><a href="#V2.5_Procedures">Procedures</a>,
220    <a href="#V2.5_Utilities">Utilities</a>,
221    <a href="#V2.5_Platforms">Platforms</a>,
222    <a href="#V2.5_Fonts">Fonts</a>,
223    <a href="#V2.5_Drivers">Drivers</a>,
224    <a href="#V2.5_Interpreter">Interpreter</a>,
225    <a href="#V2.5_Library">Library</a>
226</ul>
227<li><a href="#Version2.4.2">Version 2.4.2 (5/8/92)</a>
228<ul>
229<li><a href="#V2.4.2_Procedures">Procedures</a>,
230    <a href="#V2.4.2_Utilities">Utilities</a>,
231    <a href="#V2.4.2_Platforms">Platforms</a>,
232    <a href="#V2.4.2_Fonts">Fonts</a>,
233    <a href="#V2.4.2_Drivers">Drivers</a>,
234    <a href="#V2.4.2_Interpreter">Interpreter</a>,
235    <a href="#V2.4.2_Library">Library</a>
236</ul>
237<li><a href="#Version2.4.1">Version 2.4.1 (4/21/92)</a>
238<ul>
239<li><a href="#V2.4.1_Procedures">Procedures</a>,
240    <a href="#V2.4.1_Utilities">Utilities</a>,
241    <a href="#V2.4.1_Drivers">Drivers</a>,
242    <a href="#V2.4.1_Fonts">Fonts</a>,
243    <a href="#V2.4.1_Interpreter">Interpreter</a>,
244    <a href="#V2.4.1_Library">Library</a>
245</ul>
246<li><a href="#Version2.4">Version 2.4 (3/25/92)</a>
247<ul>
248<li><a href="#V2.4_Procedures">Procedures</a>,
249    <a href="#V2.4_Utilities">Utilities</a>,
250    <a href="#V2.4_Drivers">Drivers</a>,
251    <a href="#V2.4_Fonts">Fonts</a>,
252    <a href="#V2.4_Interpreter">Interpreter</a>,
253    <a href="#V2.4_Library">Library</a>
254</ul>
255<li><a href="#Version2.3">Version 2.3 (8/28/91)</a>
256<ul>
257<li><a href="#V2.3_Utilities">Utilities</a>,
258    <a href="#V2.3_Drivers">Drivers</a>
259</ul>
260<li><a href="#Version2.2">Version 2.2 (6/1/91)</a>
261<ul>
262<li><a href="#V2.2_Procedures">Procedures</a>,
263    <a href="#V2.2_Drivers">Drivers</a>,
264    <a href="#V2.2_Fonts">Fonts</a>,
265    <a href="#V2.2_Utilities">Utilities</a>,
266    <a href="#V2.2_Interpreter">Interpreter</a>,
267    <a href="#V2.2_Library">Library</a>
268</ul>
269<li><a href="#Version2.1.1">Version 2.1.1 (1/15/91)</a>
270<ul>
271<li><a href="#V2.1.1_Build_procedures">Build procedures</a>,
272    <a href="#V2.1.1_Interpreter">Interpreter</a>,
273    <a href="#V2.1.1_Drivers">Drivers</a>,
274    <a href="#V2.1.1_Library">Library</a>
275</ul>
276<li><a href="#Version2.1">Version 2.1 (12/31/90)</a>
277<ul>
278<li><a href="#V2.1_Build_procedures">Build procedures</a>,
279    <a href="#V2.1_Drivers">Drivers</a>,
280    <a href="#V2.1_Fonts">Fonts</a>,
281    <a href="#V2.1_Interpreter">Interpreter</a>,
282    <a href="#V2.1_Library">Library</a>
283</ul>
284<li><a href="#Version2.0">Version 2.0 (9/12/90)</a>
285<ul>
286<li><a href="#V2.0_Miscellaneous">Miscellaneous</a>,
287    <a href="#V2.0_Drivers">Drivers</a>,
288    <a href="#V2.0_Build_procedures">Build procedures</a>,
289    <a href="#V2.0_Interpreter">Interpreter</a>,
290    <a href="#V2.0_Library">Library</a>
291</ul>
292</ul></blockquote>
293
294<!-- [1.2 end table of contents] =========================================== -->
295
296<!-- [1.3 begin hint] ====================================================== -->
297
298<p>
299This document is a history of Ghostscript releases numbered 2.n.  For more
300recent changes, see the the other history documents and, for the latest
301versions, the new:
302
303<blockquote>
304<a href="News.htm">News</a><br>
305<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
306<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
307History of Ghostscript versions 2.n (this document)<br>
308<a href="History1.htm">History of Ghostscript versions 1.n</a>
309</blockquote>
310
311<p>For other information, see the <a href="Readme.htm">Ghostscript
312overview</a>.
313
314<!-- [1.3 end hint] ======================================================== -->
315
316<hr>
317
318<!-- [1.0 end visible header] ============================================== -->
319
320<h2><a name="Version2.9.10b"></a>Version 2.9.10-beta (7/28/94)</h2>
321
322<p>
323This is the last 2.9 beta, since 3.0 will be released on July 31.
324
325<h3><a name="V2.9.10b_Documentation"></a>Documentation</h3><pre>
326Fixes bugs:
327	- A | in gs.1 had a \ in front of it instead of \\.
328
329Adds a paragraph in gs.1 that tells how to select paper size.
330
331Notes in devs.mak that the cdj550 driver is the best one for the H-P
332DeskJet 520, and the pjxl300 driver is the right one for the H-P DeskJet
3331200C.
334
335Notes in make.doc that Watcom C++ 10.0 may require a change in a makefile.
336
337</pre><h3><a name="V2.9.10b_Procedures"></a>Procedures</h3><pre>
338Removes ICCINIT from MODULES.LIS for VMS systems.
339
340Updates VMS.MAK to support Motif V1.2.
341
342Updates jpeg.mak to work with version 5alpha4 of the IJG JPEG code.
343
344</pre><h3><a name="V2.9.10b_Utilities"></a>Utilities</h3><pre>
345Fixes bugs:
346	- font2c didn't leave extra room in Type 0 font dictionaries for
347entries added by definefont.
348	- font2c left extra information on the stack.
349	- ansi2knr would remove newline characters within formal argument
350lists.
351	- font2c got an Error: /undefined in makefontprocname.
352
353Updates ansi2knr to work better with the GNU configure program.
354
355Updates ansi2knr to handle procedure formal arguments automatically.
356
357</pre><h3><a name="V2.9.10b_Drivers"></a>Drivers</h3><pre>
358Fixes bugs:
359	- If a file contained color or gray-scale information followed by a
360masked image, the X driver would sometimes invert the polarity of the
361image.
362
363</pre><h3><a name="V2.9.10b_Platforms"></a>Platforms</h3><pre>
364Fixes bugs:
365	- Unix systems with a 2-argument gettimeofday returned garbage
366values for the current time.
367	- The VMS build script for compiled fonts omitted the requirement
368to load gs_ccfnt.ps.
369	- memory_.h didn't note that System V Unix platforms need memmove.
370
371On Unix systems, changes the subdirectory of $datadir/ghostscript to just
372be the version number (e.g., 2.9.10 rather than gs-2.9.9).
373
374</pre><h3><a name="V2.9.10b_Fonts"></a>Fonts</h3><pre>
375Adds support code for the Wadalab (University of Tokyo) free Kanji font.
376
377Notes in the documentation in Fontmap that .pfa and .pfb fonts are
378compatible with ATM, but .gsf fonts are not.
379
380Changes the names of Thomas Wolff's expanded Hershey fonts, replacing .gsf
381with .pfa.
382
383</pre><h3><a name="V2.9.10b_Interpreter"></a>Interpreter</h3><pre>
384Fixes bugs:
385	- The scanner became confused if the literal names /&lt;&lt; or /&gt;&gt;
386straddled an input buffer boundary.
387	- .setlanguagelevel gave an invalidaccess error when
388switching from level 2 to level 1.
389	- currentgstate, setgstate, and copy for gstates didn't do
390the necessary access checks.
391	- The Category resource category didn't define .ResourceFile, so
392/Category resourcestatus gave an error.
393	- The garbage collector didn't trace the structures used by
394filenameforall properly on most platforms.
395	- Automatically expanding systemdict didn't work, but didn't give
396an error.
397	- Automatically expanding a dictionary usually expanded it by too
398much.
399	- systemdict was created too small.
400	- The garbage collector didn't trace the structures referenced only
401from allocator objects, leading to attempts to access freed storage.
402	- If a chunk was empty, the GC tried to free it even if it had
403inner chunks.
404*	- The outer loop in dict_find_name_by_index() could cause an
405addressing fault on segmented machines when looking up Level 2 operators,
406because the offset could get decremented past 0.
407	- The heap_available procedure in gsmemory.c didn't convert
408properly to non-ANSI syntax.  (New bug in 2.9.9.)
409	- The ledgertray procedure wasn't implemented.
410	- The xxxtray procedures didn't set the page size.
411	- The settumble operator wasn't implemented, even as a dummy.
412	- glyphshow didn't work with Type 3 fonts.
413	- Supplying a RenderTable for a CIE color space caused an error.
414	- The DCT filter code had the jpeg/ subdirectory name "wired in" to
415the source files.
416
417Adds experimental filters for Burrows/Wheeler block sorting compression
418(BWBlockSortEncode/Decode), described in DEC SRC Research Report #124,
419move-to-front coding (MoveToFrontEncode/Decode), and a simple form of
420Huffman coding (BoundedHuffmanEncode/Decode).  These are experimental -- do
421not rely on them remaining the same (or existing at all) in future
422releases!
423
424Adds all function prototypes needed to pacify strict compilers.
425
426Removes all explicit references to userdict from the C code.
427
428Changes the SAFER switch so that it disallows not only explicit writing,
429deleting, or renaming of files, but also disallows specifying an explicit
430OutputFile for any device (except for the initial device, by means of
431-sOutputFile= on the command line).
432
433</pre><h3><a name="V2.9.10b_Streams"></a>Streams</h3><pre>
434Fixes bugs:
435	- Hex decoding (ASCIIHexDecode stream and &lt;&gt; literals) didn't treat
436the data source as read-only (although it restored it to its original
437contents).
438
439Implements move-to-front coding, a simple form of Huffman coding, and
440Burrows/Wheeler block sorting compression.
441
442</pre><h3><a name="V2.9.10b_Library"></a>Library</h3><pre>
443Fixes bugs:
444*	- (The following bug fix was actually implemented somewhere around
445version 2.7.)  restore didn't purge character cache entries whose keys were
446names created more recently than the save.
447	- gstype1.h declared gs_type1_state_sizeof as an extern, but this
448wasn't defined anywhere.
449	- gs_makeimagedevice didn't set the size of the palette correctly,
450which confused the GC.
451	- gs_makeimagedevice didn't set num_components to 1 for
452mapped-color devices with only gray values.
453*	- The two-color halftoning algorithms truncated when computing the
454halftone level, rather than rounding it.
455*	- If a path being filled had line segments that fell entirely to
456the right of the clipping region, part of the path might not be filled.
457	- The optimized code for 24-bit color didn't ensure properly that
45832-bit accesses would be aligned appropriately.
459	- The miter join check had gotten reversed somewhere along the way.
460*	- Because x and y were interchanged in the miter check computation,
461in some situations the check was inverted.  (This is a very old bug!)
462	- It was believed that strokepath didn't work with dashed lines;
463the problem appears to have been an incorrect testing program.
464
465Adds all function prototypes needed to pacify strict compilers.
466
467Changes fixed2float so it doesn't cast the result to float, and removes
468fixed2double.  This produces slightly more accurate results in many places,
469and may even be faster (for FPUs that normally generate double rather than
470single precision results).
471
472</pre>
473
474<h2><a name="Version2.9.9b"></a>Version 2.9.9-beta (6/23/94)</h2>
475
476<h3><a name="V2.9.9b_Documentation"></a>Documentation</h3><pre>
477Puts a pointer to devs.mak in the section of use.doc that talks about
478MS-DOS displays.
479
480</pre><h3><a name="V2.9.9b_Platforms"></a>Platforms</h3><pre>
481Fixes bugs:
482	- The %pipe% IODevice was omitted on System V platforms.
483	- The AXP VMS build script needed /NESTED_INCLUDE=PRIMARY in
484CC_QUAL to work around a bug in the DEC C compiler.
485
486</pre><h3><a name="V2.9.9b_Fonts"></a>Fonts</h3><pre>
487Fixes bugs:
488	- gs_lev2.ps redefined .loadFontmap incorrectly.
489
490</pre><h3><a name="V2.9.9b_Interpreter"></a>Interpreter</h3><pre>
491Fixes bugs:
492	- stream_compact used memcpy even though the source and destination
493might overlap.
494	- filter applied to a closed file could cause a crash.
495
496</pre><h3><a name="V2.9.9b_Library"></a>Library</h3><pre>
497Fixes bugs:
498	- putdeviceparams to a printer didn't close and reopen the device
499if only the page size or resolution was changed.
500
501</pre>
502
503<h2><a name="Version2.9.8"></a>Version 2.9.8 (6/20/94)</h2>
504
505<p>
506This is the first version that claims to be a full Level 2
507implementation.
508It was distributed to satisfy a contractual requirement.
509</p>
510
511<h3><a name="V2.9.8_Documentation"></a>Documentation</h3><pre>
512In make.doc:
513	- Adds a reference to the generic System V section at the end of
514the SCO section.
515	- Notes that DEC OSF/1 systems may require changing the name of the
516install program to installbsd.
517
518Updates drivers.doc to reflect the change from "properties" to
519"parameters".
520
521Updates the Aladdin Enterprises Free Public License to version 1.
522
523In language.doc, notes that certain device parameters will be phased out.
524
525</pre><h3><a name="V2.9.8_Procedures"></a>Procedures</h3><pre>
526Fixes bugs:
527	- The file aa.ps was included in the distribution by mistake.
528
529Notes in the Unix makefiles that X11R6 probably needs SM and ICE added to
530XLIBS.
531
532</pre><h3><a name="V2.9.8_Utilities"></a>Utilities</h3><pre>
533Fixes bugs:
534	- viewjpeg.ps used a non-existent file as its example.
535	- A temporary string in wrfont.ps was allocated too small.
536
537Upgrades font2c.ps so it will handle (simple) Type 0 fonts as well as Type
5381.
539
540</pre><h3><a name="V2.9.8_Drivers"></a>Drivers</h3><pre>
541Fixes bugs:
542	- The TIFF drivers didn't byte-align each scan line.
543	- gdevtfax.c applied &amp; to an array member of a structure.
544
545Changes the param_list interface slightly: Implementations of the
546put_params driver procedure should now use param_signal_error to report
547errors, and should not give up at the first error.  (Even though this is a
548non-backward-compatible change, old implementations will continue to work;
549they just won't deliver complete results to the setpagedevice Policies
550machinery.)
551
552</pre><h3><a name="V2.9.8_Platforms"></a>Platforms</h3><pre>
553Fixes bugs:
554	- Removes the time zone adjustment from gp_get_clock in gp_unix.c,
555since the value returned by all Unix systems is bogus.
556	- The DV/X makefile still included the dfaxhigh and dfaxlow drivers.
557	- gssetmod.com (VMS command file) didn't work properly if the
558argument list was empty.
559	- vms.mak, vms-axp.mak, and modules.lis hadn't been updated to
560reflect changes in 2.9.7.
561	- The MS Windows version wouldn't link (overflowed the 64K primary
562data segment).
563
564</pre><h3><a name="V2.9.8_Fonts"></a>Fonts</h3><pre>
565Makes the font substitution algorithm somewhat more intelligent.
566
567</pre><h3><a name="V2.9.8_Interpreter"></a>Interpreter</h3><pre>
568Fixes bugs:
569	- Enumerating the pointers of a zero-length array of structures
570caused a divide by zero.
571	- iref.h didn't protect itself against multiple inclusion.
572	- The CCITTFaxEncode filter didn't byte-align the final
573end-of-block code if EndOfBlock and EncodedByteAlign were both true.
574	- make_initial_dict in iinit.c used `name' as a formal parameter
575name, which some compilers believe conflicts with a typedef.
576	- Not all internal operators had registered names.
577	- The GC used memcpy, rather than bytes_copy, when compacting
578objects, even though the source and destination might overlap.
579	- When debugging was enabled, gc_string_mark could give a spurious
580error indication.
581	- vmstatus returned too small a value for the maximum VM.
582	- The scanner could get into a loop when reading a radix-85 string.
583	- The GC could get into a state where it was called after every
584allocation (because of the patch setting global = true in ireclaim).
585	- The general path filling algorithm didn't skip regions that were
586completely outside the clipping box.
587	- The gs_screen_enum structure contained a pointer (porder) that
588pointed into the middle of a structure, confusing the GC.
589
590Implements the BitmapWidths flag in fonts.  The default of false means that
591we use scalable widths even with xfonts.
592
593Changes the Generic resource category so that ResourceFileName is optional.
594
595Changes the .getdeviceparams operator so that it takes an optional
596dictionary giving the set of keys whose values are wanted.  Changes the
597.putdeviceparams operator so that it takes an optional policy dictionary
598specifying the action to be taken on errors, and returns a list of keys and
599errors if it fails, rather than causing an error.  These are
600non-backward-compatible changes, but ordinary programs do not use these
601operators.
602
603Changes the names of some internal operators and procedures by adding
604a . to the beginning:
605	currenttime
606	devicename
607
608Implements currentpagedevice, and a small subset of setpagedevice.  Only
609the following keys in the page device dictionary are known to the current
610implementation, and the ones marked with * are not actually processed:
611	PageSize
612	InputAttributes
613	MediaColor, MediaWeight, MediaType, InsertSheet
614	  (for InputAttributes matching only)
615	*ImagingBBox
616	OutputAttributes
617	OutputType
618	  (for OutputAttributes matching only)
619	NumCopies
620	HWResolution
621	*Margins
622	*Orientation (for all devices, not just roll devices)
623	Policies
624	Install
625	BeginPage
626	EndPage
627Does not implement:
628	- Updating InputAttributes or OutputAttributes by sensing the state
629	  of the device;
630	- Retrying media matching after an initial failure;
631	- Automatic handling of portrait vs. landscape page size;
632	- Recording the CTM after Install as the one to be used for
633	  defaultmatrix, initmatrix, and initgraphics.
634Also, media matching is normally disabled (with InputAttributes = null)
635for all devices.  ****** We had to disable setpagedevice just before
636shipping this release, because of interactions with the older device
637handling machinery that we could not fix in the time available.
638
639</pre><h3><a name="V2.9.8_Library"></a>Library</h3><pre>
640Fixes bugs:
641	- 24-bit color (mem_true24_fill_rectangle and _copy_mono) had
642algorithm bugs.
643	- A complex conditional expression in gx_render_gray wouldn't
644compile properly with the DECStation 3100 Ultrix 4.3 compiler.
645	- The GC routines for gx_device_clip didn't handle the case where
646the 'current' pointer pointed to list.single.
647	- gx_add_char_bits used memcpy, rather than bytes_copy, for
648compressing character bitmaps, even though the source and destination might
649overlap.
650	- Some compilers require the definition of st_gstate_contents to
651precede the definitions of the GC procedures.
652	- Filling a large rectangle (more than 1K of bitmap) with a colored
653halftone overwrote random areas of the stack.
654
655Changes gs_setcachedevice[2] to take a pointer to an array of floats,
656rather than 6 or 10 individual floats.  THIS IS A NON-BACKWARD-COMPATIBLE
657CHANGE.
658
659Implements the BitmapWidths flag in fonts.
660
661</pre>
662
663<h2><a name="Version2.9.7b"></a>Version 2.9.7-beta (6/5/94)</h2>
664
665<p>
666Yet another pre-3.0 beta.  The main features are a fairly reliable
667garbage
668collector, and function prototypes almost everywhere they are needed.
669
670<h3><a name="V2.9.7b_Documentation"></a>Documentation</h3><pre>
671Fixes bugs:
672	- The comment at the beginning of the zfindlibfile procedure was
673incorrect.
674
675Replaces the GNU License (the COPYING file) with version 0 of the new
676Aladdin Enterprises Free Public License (the PUBLIC file).
677
678</pre><h3><a name="V2.9.7b_Procedures"></a>Procedures</h3><pre>
679Fixes bugs:
680	- The definition of cmykread.dev in gs.mak was incorrect (it
681modified color.dev).
682
683Adds the ability to specify a value for FONTPATH on the command line
684(-sFONTPATH=), overriding GS_FONTPATH.
685
686Replaces the -oper2 configuration resource type with the ability to specify
687in the op_def list the dictionary in which operators will be defined.  (See
688opdef.h for more details.)  This is an internal change only.
689
690</pre><h3><a name="V2.9.7b_Utilities"></a>Utilities</h3><pre>
691Fixes bugs:
692	- viewgif.ps got an error on interlaced GIF files whose height
693wasn't a multiple of 8.
694
695Changes traceop.ps so it stores the traced operator in the same dictionary
696where the operator is currently defined, if possible.
697
698</pre><h3><a name="V2.9.7b_Drivers"></a>Drivers</h3><pre>
699Fixes bugs:
700	- The new G3 fax drivers crashed on page widths greater than 2623
701(40 * 64 + 63) pixels.  (We fixed this by disallowing page widths greater
702than approximately twice this.)
703	- The 24-bit PCX driver had some debugging code accidentally left
704in it that produced large volumes of useless console output.
705
706Removes the previous (Leffler) TIFF/F driver and the TruFax driver.
707
708</pre><h3><a name="V2.9.7b_Platforms"></a>Platforms</h3><pre>
709Fixes bugs:
710	- time_.h, gp_unix.c, and gp_sysv.c didn't do the right thing on
711SVR4 platforms, where gettimeofday only takes 1 argument.
712	- The final linking command on Turbo C platforms didn't specify the
713COMPDIR directory for the linker.
714
715</pre><h3><a name="V2.9.7b_Fonts"></a>Fonts</h3><pre>
716
717Changes the standard Fontmap to use the URW contributed fonts as
718work-alikes for Helvetica and Times Roman.
719
720</pre><h3><a name="V2.9.7b_Interpreter"></a>Interpreter</h3><pre>
721Fixes bugs:
722	- The garbage collector wasn't in a consistent state.
723	- In Level 2 mode, statusdict was allocated in global VM rather
724than local VM.
725	- resourceforall gave an error on the built-in categories such as
726Filter.
727	- The file searching algorithm didn't check the current directory
728first.
729	- When opening a file failed, it didn't return a different error
730depending on the problem.
731	- The CCITTFaxEncode filter crashed on widths larger than 2623 (64
732* 40 + 63) pixels.  (We fixed this by disallowing page widths greater than
733approximately twice this.)
734	- The .type1getsbw operator gave an invalidfont error if a
735CharString started with anything other than a [h]sbw.  (Adobe's published
736specs say this is invalid, but some Adobe MultiMaster fonts start with a
737callsubr and/or a callothersubr.)
738	- When printing out the stack with == after an error, the error
739handler got a repeated (and ultimately fatal) typecheck error if it
740encountered an object of non-standard type.
741	- The token operator could incorrectly attempt to free a structure
742on the stack if it encountered an input buffer boundary.
743	- string_to_ref didn't correctly set the a_local flag in the string
744object it created.
745	- If the -c switch was the last switch on the command line,
746Ghostscript always exited without going into interactive mode.
747	- copy didn't check for errors when copying a dictionary.
748
749Makes many minor changes (mostly adding prototypes) to reduce error and
750warning messages from gcc and other strict compilers.
751
752Adds files containing the 4 predefined PDF encodings (MacRoman, MacExpert,
753WinAnsi, and PDFDoc).
754
755</pre><h3><a name="V2.9.7b_Library"></a>Library</h3><pre>
756Fixes bugs:
757	- image_bbox in gxccman.c could produce a division by 0 if a
7580-width character was being entered into the cache.
759	- gx_image_cached_char incorrectly specified a scale of 2x2 rather
760than 1x1 if it had to read bits from an xfont.
761	- Stale pointers in the halftone cache weren't cleared properly by
762a restore.  (We fixed this by making grestoreall clear the halftone cache.)
763	- setdash used gs_malloc, rather than the current allocator, for
764allocating the dash pattern.
765	- If one attempted to fill a very wide region with a colored
766halftone, gx_dc_ht_colored_fill_rectangle would loop indefinitely.
767	- The container_offset in clipping devices was set incorrectly,
768causing the garbage collector to mangle pointers.
769
770Changes the fopen routine in IODevices so that it can return an arbitrary
771error code, rather than simply succeeding or failing.  THIS IS A
772NON-BACKWARD-COMPATIBLE CHANGE.  It only affects IODevice implementations,
773of which there are very few.  (It doesn't affect ordinary device drivers.)
774
775Changes the char_metrics xfont procedure so it returns the width as
776floating point numbers rather than integers.  THIS IS A
777NON-BACKWARD-COMPATIBLE CHANGE.  It only affects xfont implementations, of
778which there are very few.
779
780Makes many minor changes (mostly adding prototypes) to reduce error and
781warning messages from gcc and other strict compilers.
782
783</pre>
784
785<h2><a name="Version2.9.6b"></a>Version 2.9.6-beta (5/23/94, not
786distributed to the public)</h2>
787
788<p>
789This, too, was supposed to be the last beta release for public
790release 3.0.
791It was created primarily for a user who desperately needed a Level 1 system
792that would run properly on a 64-bit hardware architecture.  The garbage
793collector is badly broken (it's in the middle of an architectural change);
794setpagedevice is still not implemented.
795
796<h3><a name="V2.9.6b_Documentation"></a>Documentation</h3>
797
798<pre>
799Documents the standard location of Type 1 fonts on AIX.
800
801Changes the last few mentions of Ghostview for Microsoft Windows to GSview
802for Windows.
803
804Notes that Solaris 2.n provides the X11 header files in a different place.
805
806Changes README to reflect the differentiation between Aladdin Ghostscript
807and GNU Ghostscript.
808
809</pre>
810<h3><a name="V2.9.6b_Procedures"></a>Procedures</h3>
811
812<pre>
813Fixes bugs:
814	- The compilation rules for the modules that call the IJG library
815used -Ijpeg rather than -I$(JPEGSRC).
816	- The rule for gslib.dev omitted echogs$(XE) as a prerequisite.
817
818Makes it possible to define the values of buildtime, copyright, revision,
819revisiondate, and serialnumber in the makefile.
820
821</pre><h3><a name="V2.9.6b_Utilities"></a>Utilities</h3><pre>
822Fixes bugs:
823	- The viewgif.ps utility didn't handle local color tables.
824
825Updates ps2ai.ps to version 1.81.
826
827</pre><h3><a name="V2.9.6b_Drivers"></a>Drivers</h3><pre>
828Fixes bugs:
829	- The TIFF and fax devices used some identical names, causing
830linker complaints.
831	- The bj10e/bj200 driver inadvertently disabled the sheet feeder.
832(The change may not actually fix this bug, since we don't have either of
833these printers with a sheet feeder to test it on.)
834	- The 'bit' device didn't map colors to pixel values correctly.
835	- The monochrome PCL driver didn't work around the fact that the
836Canon LBP4i printer didn't clear its seed row correctly.
837
838Adds new drivers:
839	- A user-contributed driver for the H-P DesignJet 650C.
840	- A user-contributed driver for the Canon LIPS III printer.
841	- A completely new tiffg3 driver with one based on the new, fast
842faxg3 code.  This driver does not include any external code, and carries an
843Aladdin copyright.
844	- A tiffg4 driver, also based on the fast CCITT filter code.
845
846Removes the tiffg3x driver that appeared briefly in 2.9.5, and renames the
847previous (Leffler) tiffg3 driver as tiffg3x.
848
849Adds support for A0, A1, and A2 paper sizes to PCL drivers.
850
851Changes all the names involving "props" to "params", for consistency with
852the header files, some other internal interfaces, and Adobe's terminology.
853THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  However, it only affects devices
854that implement their own get_props and put_props procedures, of which there
855aren't very many.
856
857</pre><h3><a name="V2.9.6b_Platforms"></a>Platforms</h3><pre>
858Fixes bugs:
859	- The DV/X makefile used X11 rather than X for the X11 library name.
860	- The DV/X makefile incorrectly included the PC display drivers.
861	- The DV/X makefile omitted gp_dosfs.$(OBJ) from the list of
862platform-specific files.
863	- The DV/X makefile used : rather than ; for separating directory
864names in GS_LIB_DEFAULT.
865	- x_.h omitted a needed alias for XtAppSetFallbackResources.
866	- The makefile entry for System V Unix systems didn't include
867gp_unifn.$(OBJ).
868	- The comment before LDFLAGS in the gcc makefiles incorrectly
869suggested using the -x switch on Ultrix platforms.
870	- The forward declaration of quant_params in zfdct.c upset the Sun
871compiler because it declared a parameter as float rather than floatp.
872*	- The Microsoft C compiler, like the Borland C compilers, only
873compares the offset part of segmented pointers.
874
875</pre><h3><a name="V2.9.6b_Fonts"></a>Fonts</h3><pre>
876
877Adds a fontmap suitable for use with Adobe Type Basics.
878
879</pre><h3><a name="V2.9.6b_Interpreter"></a>Interpreter</h3><pre>
880Fixes bugs:
881	- The STACK_LOOP_BEGIN macro in istack.h didn't work correctly on
882segmented systems.
883	- The end_phase procedure in igc.c didn't work correctly on
884segmented systems.
885	- Indexed color spaces didn't mark their base space properly when
886garbage collecting.
887	- The garbage collector didn't work on segmented systems, because
888it smashed the lsize field of large objects with mark/reloc information.
889	- Some structures didn't have correct associated GC procedures:
890gs_indexed_map, gs_client_pattern, gs_pattern_instance.
891	- restore could free names or stack segments that were still
892referenced.
893*	- If a packed object caused an error, the error object could be set
894to garbage rather than the correct object.
895*	- Badly designed error handlers which use $error for temporary
896storage could cause a dictfull error.
897	- Some compilers objected to the use of "dict" as a variable name
898in a scope where it was defined as a type.
899	- IODevices were declared const and non-const inconsistently.
900	- setpagedevice popped one object too many off the stack if the
901request included any subdictionaries that needed to be merged.
902	- More garbage collector bugs were fixed.
903	- If the current stack block was empty, Level 2 restore would give
904a spurious typecheck error.
905	- The CCITTFaxEncode filter could get confused if it emptied the
906input and filled the output at the same time.
907	- The CCITTFaxEncode filter could insert an extra EOL if it had to
908suspend at certain times.
909	- The new parser for literal strings (as of 2.9.5) could mis-count
910internal parentheses if a parenthesis caused the internal buffer collecting
911the string to overflow.
912	- If the current stack block had fewer than 3 elements,
913.type1addpath could report a spurious typecheck error.
914	- Text rendering operations (show, stringwidth, etc.) caused a
915crash if the current color was a Pattern that hadn't already been
916rasterized.
917	- If a program did a grestore when the graphics state stack was
918empty, the graphics state was initialized to unexpected (and, in some
919cases, invalid) values.
920	- pathforall could cause a bogus stackoverflow if it overflowed the
921current stack block.
922	- Closing an encoding filter with a procedure as target left the
923filter on the stack.
924*	- The outer loop in dict_lookup() could cause an addressing fault
925on segmented machines when looking up Level 2 operators, because the offset
926could get decremented past 0.
927	- There was an = instead of an == in a test in scanner_reloc_ptrs.
928	- The call on gs_reloc_refs in sproc_reloc_ptrs in zfproc.c omitted
929the last (gcst) argument.
930
931(Re-)implements the 2-D case of CCITTFaxEncode, and fixes a couple of bugs
932in it.
933
934Adds DiffEncode and DiffDecode filters that implement color prediction for
935the PDF variant of the LZWDecode filter.
936
937Changes the specification of .oserrorstring to be similar to getenv,
938where, etc.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no
939user-written code should be using .oserrorstring.
940
941Adds oversampling for better character rasterizing.
942
943</pre><h3><a name="V2.9.6b_Library"></a>Library</h3><pre>
944Fixes bugs:
945	- gx_dc_ht_colored_fill_rectangle gave a compiler warning because
946of a problem with const pointers.
947	- dfmul2fixed_vars (in gxfixed.h) omitted the &amp; before vda on
948big-endian platforms, causing compilation errors.
949	- IODevices were declared const and non-const inconsistently.
950	- The Type 1 rasterizer never enabled overshoot suppression.
951	- stroke didn't fatten the line properly if stroke adjustment was
952enabled, or if the line was horizontal or vertical.
953*	- The clipping test for characters was too strict by almost 1
954pixel, leading to unnecessary clipping of text at the edge of the clipping
955box.
956*	- The initial clipping box was computed incorrectly for devices
957whose initial transformation matrix included a rotation.
958
959Changed the implementation of clipping lists and show enumerators to use
960separate objects rather than embedded objects, to pacify the GC.  (This is
961an internal change, not visible at the PostScript or API level.)
962
963Makes the character cache trim off left and right blank areas, as well as
964top and bottom.  (Internal change.)
965
966Adds oversampling for better character rasterizing.
967
968</pre>
969
970<h2><a name="Version2.9.5b"></a>Version 2.9.5-beta (4/11/94)</h2>
971
972<p>
973This was supposed to be the last beta release before 3.0, but it
974won't be.
975The only known major defects are the unreliable garbage collector, and the
976dummy implementation of setpagedevice/currentpagedevice.
977
978<h3><a name="V2.9.5b_Documentation"></a>Documentation</h3>
979
980<pre>
981Fixes bugs:
982	- The file commnew.doc didn't belong in the fileset.
983
984Notes in the makefiles that SVR4 systems may need to set EXTRALIBS=-lnsl.
985
986Adds a user-contributed `man' page for the ps2epsi utility.
987
988</pre><h3><a name="V2.9.5b_Procedures"></a>Procedures</h3><pre>
989Fixes bugs:
990	- The IJG files didn't compile properly by themselves, because they
991didn't have $(AK) in their dependency list.
992
993Changes back the handling of files named on the command line, so that they
994are first sought in the current directory, and if that fails, use the
995search path.  (2.9.4-beta changed things so that files on the command line
996did not use the search path, because as of that version, the search path
997doesn't necessarily include the current directory.  I consider the "check
998the current directory and then use the search path" rule, which is the
999MS-DOS standard and was used in Ghostscript prior to 2.9.4, a serious
1000mistake, since it is one of the best-known security holes in Unix and can
1001also produce confusing and unexpected results depending on the current
1002directory; I would much rather have a clear distinction between
1003user-specified files, which should not use any path searching, and system
1004files, that only use the defined search path.  However, as of this moment,
1005users seem to want the convenience at the expense of insecurity and
1006confusion.)
1007
1008Adds '.' to the beginning of the search path for MS-DOS platforms, to
1009conform to the usual MS-DOS file searching convention.
1010
1011Adds a -c ("code") switch, which interprets following arguments (until the
1012next switch) as PostScript tokens.
1013
1014Changes the handling of FEATURE_DEVS so that either level1.dev or
1015level2.dev must normally be selected.  THIS IS A NON-BACKWARD-COMPATIBLE
1016CHANGE for Level 1 systems, which formerly set FEATURE_DEVS to an empty
1017definition.
1018
1019</pre><h3><a name="V2.9.5b_Utilities"></a>Utilities</h3><pre>
1020Fixes bugs:
1021	- bench.ps didn't switch back to local VM properly before running
1022the program being benchmarked.
1023
1024Adds a ppmsetpagesize command to the pstoppm utility.
1025
1026</pre><h3><a name="V2.9.5b_Drivers"></a>Drivers</h3><pre>
1027Fixes bugs:
1028	- The PCX and GIF drivers used an incorrect algorithm for computing
1029the blue component of the color palette, which could cause colors to come
1030out with not quite enough blue.
1031	- The SPARCprinter driver wouldn't compile with non-ANSI compilers.
1032
1033Adds new drivers:
1034	- A user-contributed driver for DEC sixel displays like the VT240
1035(sxlcrt, in gdevln03.c, which has a FSF copyright.)
1036	- A much larger and supposedly faster version of the TIFF/F driver
1037(tiffg3x, in gdevtifx.c), contributed by a user.  This has the same
1038copyright as the TIFF/F driver (gdevtiff.c).
1039	- A driver (faxg3, in gdevfax.c) that produces plain Group 3 fax
1040output with no header, using the CCITTFaxEncode filter to do the work.
1041(This is around 2.5-3 times as fast as the other fax drivers distributed
1042with Ghostscript.)
1043	- A user-contributed driver for the Mitsubishi CP50 color printer.
1044
1045Changes the `bit' driver so one can set the Colors and *Values properties.
1046
1047Makes the color mapping for PC displays, PCX files, and GIF files identical
1048(they differed slightly before).
1049
1050</pre><h3><a name="V2.9.5b_Platforms"></a>Platforms</h3><pre>
1051Fixes bugs:
1052	- VMS used DISPLAY rather than DECW$DISPLAY to get the display name
1053if opening the display failed.
1054	- Many minor bugs relating to OS/2 and Win32 were fixed.
1055	- On Unix and DV/X platforms, the install script didn't mkdir
1056$(gsdir), and didn't mkdir the intermediate directory for the man page.
1057	- On BSD and UTek platforms, the declaration of memset in
1058memory_.h, and the definition in gsmisc.c, conflicted with the ANSI
1059declaration.
1060	- One of the SPARC compilers compiled the intersection computation
1061in arc_either (gspath.c) incorrectly.
1062	- The temporary file names created under OS/2 could exceed the 8.3
1063length limit.
1064
1065</pre><h3><a name="V2.9.5b_Interpreter"></a>Interpreter</h3><pre>
1066Fixes bugs:
1067	- The test files for the IJG library had been damaged by EOL
1068conversion.
1069	- The garbage collector didn't mark some of the most recently
1070created names.
1071	- The interpreter would sometimes report a typecheck instead of a
1072stackunderflow.
1073	- If aload didn't have enough room on the stack, it would report a
1074rangecheck rather than a stackoverflow.
1075	- zcontext wouldn't compile, because it hadn't been updated to the
1076new GC interfaces.
1077	- The definition of private_st_stream_proc_state in ifilter.h ended
1078with a semicolon, which upset some compilers.
1079	- load didn't check to make sure that the dictionaries it examined
1080had read access.
1081	- cvrs didn't handle negative numbers in radix 2 or 3 properly.
1082	- The allocator could become confused if it was asked to allocate a
1083large array.
1084	- readline gave an ioerror rather than a rangecheck if it
1085overflowed the string.
1086	- The allocator didn't free packed arrays properly.
1087	- The allocator's check for LIFO freeing of arrays was off by 1, so
1088it never succeeded.
1089	- The undercolor removal and black generation procedures weren't
1090initialized properly.
1091	- If the interpreter couldn't find gs_init.ps, it returned a random
1092exit code.
1093	- If an operator expected a procedure and didn't get one, it
1094sometimes gave an invalidaccess rather than a typecheck.
1095	- Unix file enumeration often did the wrong thing if there were
1096directories in the pattern.
1097	- The ASCIIHexDecode filter read an extra character after the
1098terminating &gt;.
1099	- scalefont didn't fill in ScaleMatrix properly.
1100	- The CCITTFaxEncode filter crashed if the width of the page wasn't
1101a multiple of 8 bits.
1102	- The error printing code used .languagelevel, which wasn't defined
1103in Level 1 configurations.
1104	- setpagedevice didn't pop its argument.
1105	- Definitions in statusdict didn't change according to the current
1106language level.
1107	- Separation color spaces didn't allow strings as color space names.
1108	- Due to a bug in chunk_locate_ptr, the garbage collector sometimes
1109decided incorrectly that a pointer was pointing outside collectable space.
1110	- (Many other garbage collector bugs were fixed.)
1111
1112Implements additional Level 2 features:
1113	- Garbage collection for strings.
1114	- Expandable operand and dictionary stacks, and the ability to set
1115	the maximum size of these stacks.
1116	- Additional user and system parameters.  The following are dummies:
1117	AccurateScreens, JobName, JobTimeout, WaitTimeout.
1118	- Procedure-based filters usable with cvx/exec and token.
1119	- Separation color spaces (always using the alternate space).
1120	(These were theoretically implemented in version 2.6, but they were
1121	never tested and were actually missing most of the implementation.)
1122	- VMThreshold and VMReclaim for invoking GC automatically.
1123
1124Adds a hook in iscan.c for parsing DSC comments.
1125
1126Adds encoding and decoding filters for the BCP and TBCP protocols.  These
1127are not fully implemented yet:
1128	- The interrupt and status request characters are ignored on input,
1129	and never generated on output;
1130	- The TBCP encoder doesn't emit the start-of-protocol string;
1131	- The TBCP decoder doesn't recognize the end-of-protocol string.
1132
1133Factors out Type 1 font capability as a separate feature.
1134
1135Changes the names of some files:
1136	packed.h to ipacked.h;
1137	bnum.h to ibnum.h.
1138
1139Changes the name of the value.index member of a ref to value.boolval.
1140(Internal change only.)
1141
1142</pre><h3><a name="V2.9.5b_Library"></a>Library</h3><pre>
1143Fixes bugs:
1144	- The definition of RELOC_PTRS_BEGIN in gsstruct.h wouldn't compile
1145properly with non-ANSI compilers.
1146	- The JPEG library wouldn't compile properly with non-ANSI compilers.
1147*	- The platform font machinery gave up too easily in some cases.
1148	- CMYK devices needing halftoning converted the CMYK color to RGB.
1149	- The debugging code in arc_add (gspath.c) didn't print the output
1150values correctly.
1151
1152Factors out Type 1 font capability as a separate feature.
1153
1154</pre>
1155
1156<h2><a name="Version2.9.4b"></a>Version 2.9.4-beta (2/19/94)</h2>
1157
1158<h3><a name="V2.9.4b_Procedures"></a>Procedures</h3>
1159
1160<pre>
1161Changes Ghostscript's path searching algorithm so that it does not
1162automatically look in the current directory first.  (The former algorithm
1163was more MS-DOS-like; the new one is more Unix-like.)  If you want to
1164include the current directory, you must include '.' in the search path.
1165THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
1166
1167Adds two new resource types for genconf.c:
1168	- -header filexxx.h adds #include "filexxx.h" to gconfig.h.
1169	- -libpath dir adds dir to the list of library search paths.
1170
1171</pre><h3><a name="V2.9.4b_Utilities"></a>Utilities</h3><pre>
1172Fixes bugs:
1173	- impath.ps (used by bdftops) computed the starting X coordinate
1174incorrectly, typically causing characters to be displaced slightly to the
1175right.
1176	- pstoppm.ps didn't handle local and global VM properly.
1177
1178Adds a ps2ai.ps utility, contributed by a user, for converting arbitrary
1179PostScript files into a form compatible with Adobe Illustrator.
1180
1181</pre><h3><a name="V2.9.4b_Drivers"></a>Drivers</h3><pre>
1182
1183Adds new drivers:
1184	- A user-contributed driver for Imagen Impress laser printers.
1185	- A user-contributed driver for the DEC LA75plus printer.
1186
1187</pre><h3><a name="V2.9.4b_Platforms"></a>Platforms</h3><pre>
1188
1189Under OS/2, adds the ability to keep Ghostscript in memory for a
1190specified number of minutes.
1191
1192Adds support for Win32 and Win32s.
1193
1194Changes the MS Windows platform font interface so that it does not attempt
1195to render fonts at sizes smaller than 6 pixels.  Changes the X Windows
1196interface, which already did this for 4-point and smaller fonts, to also
1197use a lower limit of 6 pixels.  Also changes the X Windows platform font
1198machinery so it does not render fonts at sizes larger than 36 pixels: at
1199large sizes, Ghostscript does a perfectly good job, and some X font servers
1200rasterize the entire font and lock up the entire window system while doing
1201so.
1202
1203</pre><h3><a name="V2.9.4b_Interpreter"></a>Interpreter</h3><pre>
1204Fixes bugs:
1205	- currentdash always returned a new array of reals, rather than the
1206actual argument of setdash.
1207	- Strings in binary object sequences read in as integers.
1208	- Because of a bug in chunk_locate_ptr, some large objects didn't
1209get freed properly.
1210	- If an error occurred while processing an image, Ghostscript would
1211attempt to free random blocks of storage.
1212	- Input filters discarded trailing data, rather than filling it out
1213with zeros.  (This is now fixed for ASCIIHexDecode and ASCII85Decode; it's
1214not clear what other filters it should affect.)
1215	- The ASCII85Encode filter produced garbage output for the final
12161-4 bytes before EOD.
1217*	- The TIFF output driver produced incorrect output for the second
1218and subsequent pages if the output was being produced on multiple files.
1219*	- The default handleerror did a 'stop', which was not correct.
1220	- gpcheck.h converted all positive return codes to 0 if interrupt
1221checking was enabled.
1222	- Images with multiple data sources didn't work.
1223	- Images with 12-bit sample values didn't work.
1224	- Images with a file as the data source read additional data beyond
1225what was required.
1226	- 2 vmreclaim worked (pretty much), but 1 vmreclaim didn't.
1227	- If %lineedit was opened multiple times, characters from later
1228openings overwrote characters from earlier ones.
1229	- token returned garbage for the "remaining string" result when
1230reading from a string, if it actually read all of the string.  (New bug in
12312.9.2, probably.)
1232
1233Implements additional Level 2 features:
1234	- DCTEncode and DCTDecode filters.
1235	- Filters with procedures as the data source or target.
1236	(Except for token and cvx/exec.)
1237	- Garbage collection for names.
1238
1239Changes the error printout so that strings are always truncated at 200
1240characters.
1241
1242For Level 2 systems, changes the initial setting of the object format
1243parameter from 0 to an appropriate non-zero value.
1244
1245* Changes the .quit operator so that it takes two operands, an error object
1246and an error code; if the latter is negative, the interpreter returns this
1247as the error code, rather than e_Quit.
1248
1249Makes StandardEncoding and ISOLatin1Encoding arrays, rather than packed
1250arrays, on large-memory systems, for compatibility with certain test
1251suites.  Changes .registerencoding to accept arrays as well as packed
1252arrays.
1253
1254</pre><h3><a name="V2.9.4b_Library"></a>Library</h3><pre>
1255Fixes bugs:
1256	- Due to an error in cie_mult3, CIE-based colors were badly
1257mis-mapped.
1258*	- Very narrow (but not empty) rectangles would disappear.
1259*	- Small halftone cells could smash the next higher entry in the
1260halftone cache.
1261	- The orientation algorithm in gxstroke.c still interchanged
1262clockwise and counter-clockwise coordinate systems (after having been
1263"fixed" at least 3 times).
1264	- Stroking 1-pixel-wide lines shortened them, instead of
1265lengthening them, if non-butt caps were requested.
1266
1267Refactors mem_mapped8_copy_mono because of limitations in the bcc32
1268compiler.
1269
1270</pre>
1271
1272<h2><a name="Version2.9.3b"></a>Version 2.9.3-beta (1/19/94)</h2>
1273
1274<p>This version was created for evaluation purposes for a few users who
1275needed Level 2 capability; it was never released to anyone else, even
1276beta testers.
1277
1278<h3><a name="V2.9.3b_Documentation"></a>Documentation</h3><pre>
1279Fixes bugs:
1280	- The description of psview and xpsview was incorrect.
1281
1282</pre><h3><a name="V2.9.3b_Procedures"></a>Procedures</h3><pre>
1283Changes the installation directories for Unix and similar systems to put
1284Ghostscript data in $(datadir)/ghostscript/gs-NN.NN.NN rather than directly
1285in $(datadir)/ghostscript.  (Fonts still go in $(datadir)/ghostscript/fonts.)
1286
1287</pre><h3><a name="V2.9.3b_Drivers"></a>Drivers</h3><pre>
1288Fixes bugs:
1289	- Some spaces were incorrectly replaced with tabs in the help
1290message in the 3B1 display driver.
1291	- The BMP driver wrote a spurious scan line at the beginning
1292of its output.
1293	- The monochrome PCX driver had the two palette elements
1294interchanged.
1295
1296Adds new drivers:
1297	- A user-contributed driver for the Xerox XES printer format.  This
1298has a FSF copyright.
1299	- A user-contributed driver for the Epson AP3250 printer.  (This is
1300the same as the Stylus 800, with slightly different margins.)
1301	- A user-contributed driver for the DEC LA70 printer with some
1302algorithms for improving text at low resolutions.  This has a FSF
1303copyright.
1304	- A user-contributed driver for an intermediate-resolution mode
1305for 9-pin "Epson-compatible" printers.
1306
1307Changes the name of the Stylus 800 driver from escp2 to st800.
1308
1309Adds a compile-time flag to the Epson driver to cope with Panasonic 9-pin
1310printers, which sometimes have trouble mixing graphics and tabs.
1311
1312</pre><h3><a name="V2.9.3b_Platforms"></a>Platforms</h3><pre>
1313Fixes bugs:
1314	- The MS Windows driver (gp_mswin.c) referred to iodev.h rather
1315than gxiodev.h.
1316	- On Unix System V platforms, gp_unifs.c and gdevpipe.c were
1317incorrectly omitted from the link list.
1318	- (Some?) System V platforms don't have the S_ISDIR macro,
1319requiring a change in stat_.h.
1320	- The Unix `install' target didn't install gs_std_e.ps and
1321gs_iso_e.ps.
1322	- No MODULES.LIS file was provided for VMS.
1323
1324Adds Desqview/X makefiles that actually work.
1325
1326Documents the set of H-P-supplied patches needed to make H-P's
1327compilers process Ghostscript.
1328
1329Changes the MS Windows driver so that if the user presses the Enter key
1330while the image window has the focus, the text window will be brought to
1331the top and made the active window.  This is useful when viewing a
1332multi-page document with Ghostscript.
1333
1334</pre>
1335<h3><a name="V2.9.3b_Interpreter"></a>Interpreter</h3><pre>
1336Fixes bugs:
1337	- The definition of public_st_client_color() in gxccolor.h
1338included an extraneous semicolon.
1339	- The definition of private_st_AXD_state() in sfilter.h included an
1340extraneous semicolon.
1341	- saxx.c didn't include sfilter.h, which it needed for the
1342definition of private_st_AXD_state().
1343	- ialloc_struct failed to create a separate chunk if the structure
1344was very large.
1345	- setcolorspace didn't allocate the colorspace object in the same
1346VM space as the graphics state, causing problems when the colorspace was
1347freed.
1348	- In rare circumstances, currentfile could return an empty array
1349rather than a file.
1350	- Dictionary keys were always allocated in global VM.
1351	- If NOPLATFONTS was true, definefont didn't check whether the
1352dictionary was read-only before trying to insert an ExactSize key.
1353	- startjob could get an invalidaccess error, because serverdict was
1354allocated in global VM.
1355	- Using definefont with an already registered font created a
1356circular list structure.
1357	- If a PostScript procedure appeared as a CharString in a Type 1
1358font, it was always called with the character name, never the character
1359code.
1360	- The SubFileDecode filter didn't work with a non-empty EOD string
1361(went into an endless loop).  (Probably a new bug in 2.8.)
1362	- save/restore didn't properly restore the maxlength of a
1363dictionary, causing data to get smashed at random.  (New bug in 2.9.)
1364	- save didn't mark objects as old, so a nested restore had no
1365effect.  (New bug in 2.9.2.)
1366	- After returning from an OtherSubrs callback, op_type1_free
1367freed the saved interpreter state incorrectly.  (New bug in 2.7.)
1368	- Level 1 configurations didn't work because .makeoperator gave an
1369invalidaccess error.  (New bug in 2.9.2.)
1370	- ASCII85 string literals didn't work.  (Probably a new bug in 2.8.)
1371	- If the current global/local allocation mode was different at the
1372end of a file than at the beginning, an addressing fault could occur
1373(gs_unregister_root in gs_run_string).  (New bug in 2.9.2.)
1374	- After a setfileposition on a file open for reading,
1375fileposition would return an incorrect value, even though the stream
1376was actually repositioned properly.
1377
1378Brings the dictionary unpacking code for the DCT filters into line with
1379Adobe Technical Note 5116, which describes the Picky parameter for
1380DCTDecode and the NoMarker, Resync, Blend, Picky, and Relax parameters for
1381DCTEncode.
1382
1383Changes the .quit operator so that if given a negative argument, the
1384interpreter returns this as the error code, rather than e_Quit.
1385
1386Changes the Ghostscript integer version number from 100P+10S+T to
138710000P+100S+T.
1388
1389Changes the default halftone screen for high-resolution devices, both
1390black-and-white and color.
1391
1392</pre><h3><a name="V2.9.3b_Library"></a>Library</h3><pre>
1393Fixes bugs:
1394	- The software floating multiply code used with USE_FPU=-1 only
1395worked on little-endian platforms.
1396	- Specifying a left side bearing to .type1addpath produced an
1397inappropriate offset.
1398
1399</pre>
1400
1401<h2><a name="Version2.9.2b"></a>Version 2.9.2-beta (1/2/94)</h2>
1402
1403<p>This version was distributed only to beta testers.  It adds a garbage
1404collector and full local and global VM support.  It is the first version
1405that sets languagelevel = 2, i.e., claims to be a Level 2 implementation.
1406
1407<h3><a name="V2.9.2b_Documentation"></a>Documentation</h3><pre>
1408Fixes bugs:
1409	- make.doc still referred to use_* variables in gdevx.c, and
1410use.doc didn't explain the use* X resources.
1411
1412Notes that -Olimit=1000 is needed to compile Ghostscript on AXP systems
1413under OSF/1 1.3.
1414
1415</pre>
1416
1417<h3><a name="V2.9.2b_Utilities"></a>Utilities</h3><pre>
1418Fixes bugs:
1419	- viewgif.ps did not work with interlaced images.
1420	- font2c.ps omitted gsmemory.h from the #include list in compiled
1421fonts.
1422
1423</pre><h3><a name="V2.9.2b_Drivers"></a>Drivers</h3><pre>
1424Fixes bugs:
1425	- The MS Windows driver hadn't been updated to work with the
1426new additions to the gx_device structure.
1427	- The BMP file driver wrote one scan line too many.
1428	- The cdj driver omitted an important cast to int in the error
1429diffusion code (FSdither macro).
1430
1431Changes the SuperVGA drivers to recognize erasepage and reset the
1432color table, like the X driver.
1433
1434Adds some fragmentary code to begin implementing the PostScript fax
1435extensions.
1436
1437</pre><h3><a name="V2.9.2b_Platforms"></a>Platforms</h3><pre>
1438Fixes bugs:
1439	- The procedure initializers for the MS Windows console I/O
1440were missing the new reset element.
1441	- The makefile entry in bcwin.mak used -fdev rather than -iodev.
1442	- The Borland C++ makefiles exceeded MS-DOS's line length limit if
1443the compiler files were in the standard Borland directory (BORLANDC).
1444	- Some procedures weren't declared with prototypes in gp_vms.c.
1445	- Some declarations had to be reordered to pacify the VAX compiler.
1446	- Under MS Windows, Ghostscript didn't automatically de-iconify the
1447text window to display messages on an error exit.
1448	- The Unix makefile rule for gconfig_.h used echogs rather than
1449./echogs.
1450	- The Microsoft C makefile referred to an obsolete file gs.tr.
1451	- gp_unifs.c used strpbrk and strrchr, which some systems lack.
1452
1453Updates the OS/2 code and documentation for compatibility with the current
1454Ghostscript version.
1455
1456</pre><h3><a name="V2.9.2b_Fonts"></a>Fonts</h3><pre>
1457Fixes bugs:
1458	- The X11 .pfa fonts replaced their .gsf requirements in the
1459fontmap, but not distributed with the previous (beta) release.
1460
1461Adds fontmaps appropriate for use with DEC Ultrix and OSF/1 systems.
1462
1463</pre><h3><a name="V2.9.2b_Interpreter"></a>Interpreter</h3><pre>
1464Fixes bugs:
1465	- 4-value entries in the Metrics dictionary were interpreted with
1466the width and side bearing interchanged.
1467	- Objects large enough to require their own chunk were not freed
1468properly.
1469	- The GS_FONTPATH scanner didn't deal with the possibility that
1470opening a file might fail.
1471	- The interrupt and timeout errors incorrectly pushed an error
1472object on the operand stack.
1473	- imagemask gave an error if it was invoked with a dictionary
1474argument with a current color space with more than 1 parameter.
1475	- definefont insisted that a new font not have a FID entry.
1476	- Some places didn't cast char to byte when needed.
1477	- An extra element was left on the stack when substituting the
1478default font for a font whose file couldn't be found.
1479	- The CCITTFaxDecode filter didn't allow the dictionary to be
1480omitted.  (The Adobe documentation doesn't allow this, but Adobe
1481implementations do.)
1482	- When the input came from a pipe (`-') switch, opening a filter on
1483currentfile that required more than 1 input byte to make progress would
1484cause Ghostscript to hang (in sreadbuf).
1485	- The interpreter didn't call gs_set_lib_paths before executing a
1486compiled-in initialization file.
1487	- A stream could be closed more than once.  (New bug in 2.8.)
1488	- The LZW decoder produced incorrect output if a code string was
1489too long to fit into a single output buffer.  (New bug as of 2.8.)
1490
1491Implements a special check in def to allow construction of systemdict,
1492which is stored in global VM but references dictionaries in local VM.
1493
1494Implements additional Level 2 features:
1495	- %null% and %ram% IODevices.
1496	- startjob, exitserver.
1497	- Local and global VM (finish).
1498	- Garbage collection (for everything except names and strings).
1499
1500Moves the procedures for selecting paper size from systemdict to userdict.
1501
1502Sets languagelevel to 2 in Level 2 mode, since essentially all of
1503Level 2 is now implemented.
1504
1505Factors out the Level 1 extended color facilities (CMYK color and
1506colorimage) as a separate configuration feature.
1507
1508Adds some preliminary code to begin implementing the Adobe BCP and TBCP
1509communication protocols.
1510
1511Changes the implementation of save and restore so that the bookkeeping
1512structures are allocated in the new area, not the old.  (This is an
1513internal change not visible at the PostScript level.)
1514
1515</pre><h3><a name="V2.9.2b_Library"></a>Library</h3><pre>
1516Fixes bugs:
1517	- gdevprn used some preprocessor macros in formal argument
1518lists that ansi2knr couldn't handle.
1519	- pick_cell_size called gs_distance_transform with a 0 argument
1520that non-ANSI compilers didn't automatically promote to floating point.
1521	- gs_screen_init called hypot with integer arguments that
1522non-ANSI compilers didn't automatically promote to floating point.
1523	- Some places didn't cast char to byte when needed.
1524	- The vx/vy origin adjustment for WMode=1 wasn't implemented.
1525	- The pattern cache wasn't initialized properly.
1526	- Composite fonts didn't properly decode strings that started with
1527an escape sequence, which have a special (undocumented) decoding rule, and
1528also didn't properly decode strings with multiple consecutive escape
1529sequences.
1530
1531Factors out the Level 1 extended color facilities (CMYK color and
1532colorimage) as a separate configuration feature.
1533
1534</pre>
1535
1536<h2><a name="Version2.9.1b"></a>Version 2.9.1-beta (12/7/93)</h2>
1537
1538<p>This version was distributed only to beta testers.
1539
1540<h3><a name="V2.9.1b_Utilities"></a>Utilities</h3><pre>
1541Adds a viewgif.ps utility to view GIF files.  The current version does not
1542work with interlaced data, local color tables, or files containing more
1543than one image.
1544
1545</pre><h3><a name="V2.9.1b_Interpreter"></a>Interpreter</h3><pre>
1546Fixes bugs:
1547	- putinterval and copy didn't do the right thing if the source and
1548destination were aliases for overlapping sections of the same array or
1549string.
1550	- The DCT filter stub didn't allow the dictionary to be omitted.
1551(The Adobe documentation doesn't allow this, but Adobe implementations
1552do.)
1553
1554Adds an optional dictionary argument to the LZWDecode filter, containing
1555InitialCodeLength, FirstBitLowOrder, BlockData, and EarlyChange entries.
1556Setting these parameters appropriately allows reading (non-interlaced) GIF
1557data directly.
1558
1559</pre><h3><a name="V2.9.1b_Library"></a>Library</h3><pre>
1560Fixes bugs:
1561	- setdash produced inverted output if the pattern had an odd
1562number of elements and the offset O had the property that L &lt;= O mod
15632*L, where L was the sum of the pattern elements.
1564
1565</pre>
1566
1567<h2><a name="Version2.9b"></a>Version 2.9-beta (12/6/93)</h2>
1568
1569<p>Like 2.7, this version was created to satisfy a contractual
1570requirement,
1571and will never be distributed to anyone other than the other party to the
1572contract.
1573
1574<h3><a name="V2.9b_Documentation"></a>Documentation</h3><pre>
1575Notes that Ghostscript runs on IBM PCs and compatibles under DR DOS
15766.0.
1577
1578Notes that Ghostscript will run on IBM PCs and compatibles with
1579Hercules display cards if you redirect text output to a file.
1580
1581Notes that the alternate DeskJet 500C driver (djet500c) does not work
1582on the 550C.
1583
1584Gives a list of system-specific directories where Type 1 fonts are
1585likely to be installed, as a suggested setting for GS_FONTPATH.
1586
1587</pre><h3><a name="V2.9b_Procedures"></a>Procedures</h3><pre>
1588Changes the distribution script so that it stores all text files in the
1589main source archive with Unix end-of-line conventions, but with DOS
1590end-of-line conventions in the MS-DOS-specific archive.
1591
1592Changes the MS-DOS, MS Windows, and OS/2 makefiles so that 486SX and 486DX
1593processors are different CPU_TYPEs.  (The former, designated by
1594CPU_TYPE=485, does not include an on-chip FPU.)
1595
1596Adds a line to gs_init.ps which can be uncommented to select A4 as
1597the default paper size.
1598
1599Adds a definable CFLAGS macro to the makefiles, allowing -DA4 to
1600select A4 as the default paper size.
1601
1602Adds the H-P printer drivers to the standard Unix configurations.
1603
1604</pre><h3><a name="V2.9b_Utilities"></a>Utilities</h3><pre>
1605Fixes bugs:
1606	- If there were no unencoded characters, prfont.ps would get
1607an error.
1608
1609Changes ansi2knr to accept a wider range of function declaration syntax,
1610and to not depend on any Ghostscript header files.
1611
1612</pre><h3><a name="V2.9b_Drivers"></a>Drivers</h3><pre>
1613Fixes bugs:
1614	- Several drivers (DigiFax, Epson LQ-2550, NEC P6) didn't handle
1615A4 paper width.
1616	- The IBM ProPrinter wasn't being initialized properly.
1617	- The Epson driver didn't work properly with compilers that
1618insisted on 'char' being a signed type.
1619	- The Epson driver ignored its end_string argument, producing
1620incorrect end-of-page behavior on some printers.
1621
1622Adds new drivers:
1623	- User-contributed drivers for Bellcore MGR (a window manager most
1624commonly used with OS-9) devices.
1625	- A user-contributed driver for the CIF file format.
1626	- A user-contributed driver for the HP 2563B line printer.
1627
1628Changes the LaserJet 2p, 3, and 4 drivers so they set the initial position
1629to (0,0) rather than (0,0.25").  (I don't remember why it was the other
1630way.)
1631
1632Implements the PageCount property in all drivers, not just printer
1633drivers.
1634
1635Introduces a new gx_tile_bitmap type, and changes the tile_rectangle
1636device procedure to take it in place of gx_bitmap.  THIS IS A
1637NON-BACKWARD-COMPATIBLE CHANGE.  However, it only affects devices that
1638implement their own tile_rectangle procedures, of which there aren't very
1639many.
1640
1641</pre><h3><a name="V2.9b_Platforms"></a>Platforms</h3><pre>
1642Fixes bugs:
1643	- The VMS module lists referred to SDCTD and SDCTE instead of
1644SDCT.
1645	- The Unix install script tried to install the non-existent file
1646readme.doc.
1647	- Microsoft C does something bizarre with empty macro parameters,
1648which caused a problem with the gs_struct_type_... macros.
1649	- The Unix platforms didn't automatically handle the presence
1650or absence of &lt;dirent.h&gt;.
1651	- The DEC Alpha OSF/1 1.3 library lacks `const' in the prototype
1652for popen, which requires a workaround.
1653	- The DEC Alpha OSF/1 1.3 X Windows library uses `private' as a
1654member name.
1655
1656Splits off gp_unifs.c, containing code common to "Unix-like" file systems.
1657
1658Adds a user-contributed OS-9 platform.
1659
1660</pre><h3><a name="V2.9b_Interpreter"></a>Interpreter</h3><pre>
1661Fixes bugs:
1662	- The currentfile cache wasn't updated properly if an executable
1663file appeared in the middle of a procedure.  In particular, eexec-encoded
1664.PFB fonts often didn't work.
1665	- There was an extraneous `goto top' in scfd.c.
1666	- An integer constant overflowed in iname.c.
1667	- -2147483648 (i.e., -1 &lt;&lt; 31) was converted to a float.
1668	- eexec didn't skip the first 4 characters correctly if they were
1669split across a buffer boundary.
1670	- The font/matrix pair cache didn't properly free entries with only
1671an XUID that was being deallocated.
1672
1673Implements additional Level 2 features:
1674	- Patterns, makepattern, setpattern.
1675	- IODevice resource, setdevparams, currentdevparams.
1676	- OutputDevice resource, setpagedevice, currentpagedevice.
1677	(Partially implemented.)
1678
1679Adds a new type t_struct to handle miscellaneous types that are allocated
1680as objects and that the interpreter doesn't handle specially, and changes
1681condition, fontID, gstate, lock, and save types to use t_struct.  (This is
1682an internal change, not visible at the language level.)
1683
1684Moves the maxlength of a dictionary to its own ref, eliminating the "size
1685of integer" hack.  (This is an internal change, not visible at the
1686language level.)
1687
1688Adds the last OS error number to the error printout.
1689
1690Removes the obsolete framedevice operator.
1691
1692Implements resetfile (the only Level 1 operator not yet implemented!).
1693
1694Changes the name of the getdevice operator to .getdevice.
1695
1696</pre><h3><a name="V2.9b_Library"></a>Library</h3><pre>
1697Fixes bugs:
1698	- A couple of necessary casts from char * to byte * were omitted.
1699	- A Sun compiler required an extra cast to (void *) in the e1
1700macro in clip_rect_enum_ptrs in gxcpath.c.
1701	- The gx_dc_ procedures defined in gxdraw.c weren't marked as
1702'private'.
1703	- The number of "on" pixels in a halftone cell sometimes varied by
17041 from cell to cell.
1705	- Mapping a gray level to CMYK didn't subtract it from 1 (to
1706produce the K component).
1707*	- charpath took hints into account.
1708
1709Shuffles the order of some declarations to pacify the VMS C compiler.
1710
1711</pre>
1712
1713<hr>
1714
1715<h2><a name="Version2.8b"></a>Version 2.8-beta (11/10/93)</h2>
1716
1717<p>This version was distributed only to beta testers.  It adds Type 0
1718font
1719support.  It also includes extensive redesign of streams (to eventually
1720support procedure streams) and device properties (to eventually support
1721get/setpagedevice and get/setdevparams).
1722
1723<h3><a name="V2.8b_Documentation"></a>Documentation</h3>
1724
1725<pre>
1726Notes the change in X11 foreground/background handling.
1727
1728Changes README so it no longer claims that Ghostscript works with X11R3.
1729
1730Notes (in devs.mak) that the cdjmono driver is the best one to use for the
1731DeskJet 510.
1732
1733</pre><h3><a name="V2.8b_Procedures"></a>Procedures</h3><pre>
1734Fixes bugs:
1735	- echogs wasn't always invoked with ./ on Unix systems.
1736
1737Changes the file name unix-ansi.mak to unixansi.mak, so it can be created
1738on a MS-DOS system.
1739
1740Adds a new "feature", ccinit.dev, which compiles and links the
1741initialization files (gs_*.ps) into the executable, just as ccfonts.dev
1742compiles and links fonts.  If ccinit and ccfonts are both selected, the
1743only external file needed at run time is Fontmap.  Note that you must have
1744a working version of Ghostscript already in order to create a version that
1745uses the ccinit feature, just as for ccfonts.
1746
1747</pre><h3><a name="V2.8b_Utilities"></a>Utilities</h3><pre>
1748Fixes bugs:
1749	- the ps2image utility didn't put a %! on the first line of the
1750output.
1751
1752</pre><h3><a name="V2.8b_Drivers"></a>Drivers</h3><pre>
1753Fixes bugs:
1754	- The Hercules display driver didn't include definitions for
1755outport2 and PAGE_HEIGHT_INCHES, which it uses.
1756	- The BGI driver didn't call setactivepage or setvisualpage,
1757which it needs to do in general.
1758	- The Apple DMP driver declared dmp_print_page rather than
1759appledmp_print_page, causing a compilation error.
1760
1761Changes the X11 driver so that it doesn't use the default foreground and
1762background colors: you must set foreground and background explicitly for
1763Ghostscript if you want them to be other than black and white
1764respectively.
1765
1766Adds new user-contributed drivers for:
1767	- The StarJet 48 inkjet printer;
1768	- The Linux VGALIB display interface.
1769	- OS/2 Presentation Manager.
1770
1771Changes the margins of the Epson driver to 0.2, 0.0, 0.0, 0.0, which
1772more accurately reflect the printer's capabilities.
1773
1774Changes the get_props and put_props device procedures to take property
1775list "objects" with a procedural interface, rather than a data structure
1776interface.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  It affects all
1777get_props and put_props procedures.  Fortunately, there were only a few
1778devices that implemented their own get_props and put_props procedures (the
1779H-P color printers, and the three window systems -- X Windows, MS Windows,
1780and OS/2 PM).
1781
1782</pre><h3><a name="V2.8b_Platforms"></a>Platforms</h3><pre>
1783Fixes bugs:
1784	- The meaning of the -p switch for the Watcom compile-and-link
1785program was changed between Watcom C/386 versions 8.5 and 9.5, causing the
1786make process to malfunction.
1787	- The SCFTAB and SCFDTAB modules were omitted from the VMS link
1788list.
1789
1790Adds user-contributed code for OS/2.
1791
1792Removes the assumption that an 80486 CPU implies the presence of hardware
1793floating point, since the 486SX and Cyrix 486SLC don't have it.
1794
1795</pre><h3><a name="V2.8b_Fonts"></a>Fonts</h3><pre>
1796Fixes bugs:
1797*	- The GS_FONTPATH scanner didn't recognize .PFB fonts beginning
1798with %!PS-AdobeFont.
1799*	- The GS_FONTPATH scanner often didn't recognize .PFB fonts at all.
1800	- Type 1 fonts always set the line join, line cap, and miter limit
1801to known values, rather than using the current values.  (Using the current
1802values doesn't make much sense, but it's apparently what the Adobe
1803implementations do.)
1804	- DISKFONTS didn't work, because of the change in the Ghostscript
1805fonts to do a systemdict begin/end (in version 2.7.1).
1806
1807</pre><h3><a name="V2.8b_Interpreter"></a>Interpreter</h3><pre>
1808Fixes bugs:
1809	- == didn't produce exactly the same output as the Adobe
1810interpreters.  (Some automated debugging and testing programs care.)
1811	- The CCITTFaxEncode filter could get caught in an infinite loop,
1812because it failed to mask a byte datum when scanning for runs of black
1813pixels.
1814	- The write operator gave an error for values outside the range 0
1815to 255, rather than just using the low-order 8 bits.
1816	- Some applications call a statusdict procedure named
1817setresolution without checking first whether it is present; Ghostscript
1818didn't provide one.
1819	- Reading from a closed stream caused an error instead of
1820returning EOF.
1821	- Input streams didn't close automatically at EOF.
1822	- findfont was defined as an operator, not a procedure.
1823	- closefile on a closed file gave an error.  (It isn't obvious
1824that the Adobe documentation specifies that it shouldn't, but that's what
1825Adobe says they do.)
1826	- The LZWDecode filter didn't handle codes representing strings
1827longer than the buffer size correctly.
1828	- The LZWDecode filter only allowed 4095 codes to be used, rather
1829than 4096.
1830	- The rand operator produced an infinite string of zeros if
1831given 0 or 0x7fffffff as the seed.
1832	- When a CDevProc procedure was called, there was an extra
1833copy of the character name on the operand stack below the operands of
1834CDevProc.
1835
1836Replaces all stream implementations with new ones designed to allow
1837interruption at arbitrary times.  ****** The 2-D case of CCITTFaxEncode
1838hasn't been converted (but it probably didn't work before, either).
1839
1840Implements additional Level 2 features:
1841	- Type 0 (composite) fonts.
1842
1843Adds an eexecEncode filter.
1844
1845Implements setcolorscreen, which was accidentally omitted from 2.7.
1846
1847</pre><h3><a name="V2.8b_Library"></a>Library</h3><pre>
1848Fixes bugs:
1849*	- In colorimage, if the color space of the image was different
1850from the current color space, and the first data values on a scan line
1851were zeros, the wrong color could result.
1852	- The new flatness testing algorithm could overflow, producing
1853straight lines or obvious polygons instead of curves.
1854	- Images could fail to display pixels after the first non-blank
1855pixel on a line if halftoned color was required.  (This bug was probably
1856introduced in 2.7.)
1857	- Interpolation between transfer map entries didn't work, because
1858of a rounding/truncation bug in frac2bits (bug introduced in 2.7.1.)
1859	- cshow did an extra grestore at the end.
1860
1861* Implements a hack to slightly displace 1-bit-wide or -high images.  This
1862is necessary to work around a bug in TeX (or dvips?), which uses such
1863images to draw horizontal and vertical lines without positioning them to
1864ensure that they cover device pixel centers.
1865
1866Adds support for composite fonts (no new client procedures).
1867
1868</pre>
1869
1870<hr>
1871
1872<h2><a name="Version2.7.2b"></a>Version 2.7.2-beta (10/11/93)</h2>
1873
1874<p>This version was distributed only to alpha testers.
1875
1876<h3><a name="V2.7.2b_Utilities"></a>Utilities</h3><pre>
1877Fixes bugs:
1878	- prfont.ps didn't print unencoded characters.
1879
1880Improves mergeini.ps to remove embedded comments.
1881
1882</pre><h3><a name="V2.7.2b_Interpreter"></a>Interpreter</h3><pre>
1883Fixes bugs:
1884	- An error occurring within the scope of an internal .stopped
1885didn't pop the command and error name off the stack.
1886*	- The = and == procedures weren't re-entrant.
1887
1888* Adds a .writecvs operator that does a cvs to an internal string followed
1889by a writestring.
1890
1891</pre><h3><a name="V2.7.2b_Library"></a>Library</h3><pre>
1892Fixes bugs:
1893	- grestore freed the path and the clip path in an order that
1894was likely to lead to memory sandbars.
1895	- moveto + closepath didn't actually close the path.
1896	- moveto + reversepath produced an empty path (no moveto).
1897	- moveto + closepath + reversepath produced an extra lineto.
1898	- reversepath didn't set the current point to the end (i.e., the
1899former beginning) of the last subpath.
1900
1901Adds a "planar" memory device.
1902
1903</pre>
1904
1905<h2><a name="Version2.7.1b"></a>Version 2.7.1-beta (10/4/93, not distributed to the public)</h2>
1906
1907<p>Like 2.7, this version was created to satisfy a contractual
1908requirement,
1909and will never be distributed to anyone other than the other party to the
1910contract.
1911
1912<h3><a name="V2.7.1b_Documentation"></a>Documentation</h3><pre>
1913Documents the GS_OPTIONS environment variable.
1914
1915Adds a summary of all environment variables to the documentation
1916(use.doc).
1917
1918Documents the existence of a third free viewer built on Ghostscript.
1919
1920</pre><h3><a name="V2.7.1b_Utilities"></a>Utilities</h3><pre>
1921Fixes bugs:
1922	- wrfont didn't wrap a systemdict begin / end around the body of
1923the font.
1924	- wrfont wrote out the Symbol and ZapfDingbats encodings in a way
1925that only worked if the encoding was known by name.
1926
1927Changes bdftops to include an XUID if desired.
1928
1929Changes bdftops so that it uses 'show' for unknown ligatures, rather than
1930executing the characters as subroutines; this makes such ligatures work
1931properly with xfonts.
1932
1933</pre><h3><a name="V2.7.1b_Drivers"></a>Drivers</h3><pre>
1934Fixes bugs:
1935	- The PCL drivers sent a printer reset (&lt;ESC&gt;E) at the beginning
1936of every page, instead of only before the first page.
1937	- The PCX driver didn't round up the scan line width in the
1938header, even though it produced scan lines with the correct (rounded)
1939number of bytes.
1940
1941Adds a new map_rgb_alpha_color procedure.  This is a backward-compatible
1942change; this procedure defaults to calling map_rgb_color.
1943
1944</pre><h3><a name="V2.7.1b_Platforms"></a>Platforms</h3><pre>
1945Fixes bugs:
1946	- On Unix platforms, the value of the TEMP environment variable
1947had to end with a '/'.
1948	- On MS-DOS systems, printer output to devices other than PRN
1949(specifically, LPTn) didn't put the device into binary mode.
1950
1951Adds FPU_TYPE to the Unix makefiles, with a default value of 1.
1952
1953Removes the mention of Xmu linking problems on the SunOS platform,
1954since the problem no longer exists.
1955
1956Changes the order of X Windows libraries from Xt X11 Xext to Xt Xext X11.
1957This makes the OSF/1 linker happier.
1958
1959</pre><h3><a name="V2.7.1b_Fonts"></a>Fonts</h3><pre>
1960Fixes bugs:
1961	- All the fonts originated by Aladdin, and the shareware fonts,
1962had UniqueIDs in the 4xxxxxx range, which is only supposed to be used for
1963limited-distribution fonts.
1964*	- When Ghostscript loaded a font, it pushed a scratch dictionary
1965on the dictionary stack, rather than userdict.  (Note that this fix also
1966requires fixing the fonts to include a protective systemdict begin /
1967end; see below.)
1968*	- When loading a font failed, Ghostscript didn't check the font
1969name against the default font name properly.
1970	- Ghostscript's own fonts didn't include a systemdict begin /
1971end to guard against redefinition of names used in the reading
1972procedures (e.g., index).
1973*	- When Ghostscript scanned a .PFB font to get the FontName, it
1974didn't skip over the 6-byte header, which could cause confusion or a
1975syntaxerror.
1976	- Loading a .PFB font that left extra information on the
1977operand stack didn't work.
1978
1979Changes the ZapfDingbats font to use DingbatsEncoding rather than include
1980a copy of the encoding in itself, if DingbatsEncoding is known.  Changes
1981the Symbol font similarly.
1982
1983Removes eexec encryption from the 4 URW fonts, so they will work with
1984DISKFONTS.
1985
1986Adds shareware Hiragana and Katakana fonts (Calligraphic-Hiragana and
1987Calligraphic-Katakana, by Kevin Hartig).
1988
1989Adds GS on the end of the family names of all of Aladdin's own converted
1990fonts.
1991
1992Replaces many of the Hershey fonts with new ones (mostly Type 1) created
1993by Thomas Wolff, who added accents, accented characters, and other
1994non-alphabetics.  These too now have proper UniqueIDs.
1995
1996</pre><h3><a name="V2.7.1b_Interpreter"></a>Interpreter</h3><pre>
1997Fixes bugs:
1998*	- imagemask interpreted the Decode array incorrectly (inverted).
1999	- Running out of memory when constructing a path incorrectly
2000signalled a limitcheck rather than a VMerror.
2001	- restore didn't purge uncached scaled fonts properly.
2002
2003Adds alpha (opacity) to the graphics state, and setalpha and
2004currentalpha operators.
2005
2006Redefines erasepage in terms of a new .fillpage operator that fills
2007the current page with the current color and then does a sync_output.
2008
2009Redefines setdevice and putdeviceprops in terms of new .setdevice and
2010.putdeviceprops operators that return a boolean indicating whether the
2011page needs to be erased.  With this change, operators that erase the page
2012always call erasepage at the interpreter level rather than calling
2013gs_erasepage directly.
2014
2015</pre><h3><a name="V2.7.1b_Library"></a>Library</h3><pre>
2016Fixes bugs:
2017	- The null device allowed its size to be reset.
2018	- clippath didn't establish a current point if the clipping
2019path was empty.
2020*	- The Type 1 font interpreter (gs_type1_interpret) flattened
2021curves even if it was being invoked for charpath.
2022	- Colored halftones usually didn't come out with the correct
2023phase, and had several other problems.
2024	- A show or charpath within a BuildChar procedure didn't work.
2025	- Accented characters composed with seac used the base
2026character width instead of the composed character width.  (The Adobe
2027documentation says these must be the same, but some commercial fonts
2028don't obey this.)
2029	- setcurrentpoint in the accent of a character composed with
2030seac didn't take the accent's displacement into account.
2031
2032Adds an alpha (coverage) value to the graphics state, and
2033gs_setalpha/currentalpha procedures.  Currently Ghostscript just passes
2034the alpha value to the driver; it doesn't attempt to emulate alpha
2035handling if the driver doesn't support it.
2036
2037Redefines gs_erasepage to call gs_fillpage.
2038
2039Bypasses the fill code if the clipping box is empty.  This makes a big
2040difference for stringwidth, and doesn't hurt anything else.
2041
2042Changes frac_1 from 0x7fff to 0x7ff8.  This allows exact representation of
2043practically all useful fractions, since this number (32760) is
20442*2*2*3*3*5*7*13.
2045
2046Changes float to double in several matrix routines for better accuracy.
2047
2048Adds new device properties to implement the deviceinfo operator:
2049Colors, GrayValues, RedValues, GreenValues, BlueValues, ColorValues.
2050Also adds HWBitsPerPixel and HWColorMap.
2051
2052Changes the sorting algorithm for halftones to use qsort instead of
2053special code.
2054
2055Changes the Type 1 interpreter so that it uses the current point, rather
2056than (0,0), as the character origin.
2057
2058</pre>
2059
2060<h2><a name="Version2.7b"></a>Version 2.7-beta (9/20/93, not distributed to the public)</h2>
2061
2062<p>This is the first of a series of beta-only versions planned for
2063release
2064between 2.6.n and 3.0.  This version, in particular, was created to
2065satisfy a contractual requirement, and will never be distributed to anyone
2066other than the other party to the contract.
2067
2068<h3><a name="V2.7b_Documentation"></a>Documentation</h3><pre>
2069Fixes bugs:
2070	- The "HP XLFD extensions" to X11R5 are not specific to H-P
2071platforms.
2072	- The configuration generation script used rm rather than rm -f.
2073	- gs.1 was installed in $(docdir) rather than $(mandir);
2074$(mandir) wasn't defined.
2075	- ansi2knr.1 was installed in $(docdir), which was
2076inappropriate because ansi2knr itself wasn't installed anywhere.
2077
2078Moves documentation for versions 2.4.x and 2.5.x to history.doc.
2079
2080Moves the documentation on how to add devices to the configuration
2081from devs.mak to make.doc.
2082
2083Changes the name of readme.doc to current.doc, since the presence of
2084two "readme" files was confusing to users.
2085
2086Documents how to use the Microsoft Windows PostScript printer driver
2087to convert TrueType fonts to Type 1 fonts embedded in the document.
2088
2089Corrects several errors in the documentation of the get_bits driver
2090procedure.
2091
2092Documents the fact that X11R3 is no longer supported.
2093
2094Removes the last references to "Ghostscript" from the comments in the
2095gs_*.ps files.  The only remaining reference, other than the boilerplate
2096comments at the beginning of each file, is in the message at the end of
2097gs_init.ps.
2098
2099Documents the use of WMAKEL rather than WMAKE with the Watcom compiler.
2100
2101</pre><h3><a name="V2.7b_Procedures"></a>Procedures</h3><pre>
2102Fixes bugs:
2103*	- The Unix install script used gs rather than $(GS) as the name of
2104the executable.
2105*	- The Unix install script didn't copy gs_dbt_e.ps to $(gsdatadir).
2106	- genconf.c used ps2 as a variable name; ps2 is a predefined
2107preprocessor symbol in the VSC compiler used by IBM.
2108	- @-expansion didn't interact properly with -- and -+.
2109	- The Unix install script didn't copy COPYING to $(docdir),
2110and copied README to $(gsdatadir) rather than $(docdir).
2111	- ps2ascii used /bin/sh -f, which is an incorrect flag.
2112
2113Removes all uses and mentions of USG (a now-obsolete GNU convention)
2114as a synonym for SYSV.
2115
2116Removes filter.dev and dps.dev from FEATURE_DEVS if level2.dev is
2117included, since they don't add anything beyond level2.dev.
2118
2119Changes the ccgs script to explictly remove the old .o file before
2120doing the mv, for the benefit of people who have changed mv to prompt
2121before overwriting.  Changes the configuration script to use rm -f
2122for the same reason.
2123
2124Changes the -Z switch so an empty list of options does nothing, rather
2125than turning on all options.
2126
2127Adds a -@ switch which is like -- and -+ except that it does
2128@-expansion of arguments.
2129
2130Changes genconf so it takes patterns from the command line that describe
2131how to write the linker control files, rather than having the patterns
2132built in.
2133
2134Changes -d and -D so that if no value is supplied, the default is
2135true rather than null.
2136
2137</pre><h3><a name="V2.7b_Utilities"></a>Utilities</h3><pre>
2138Fixes bugs:
2139*	- The ps2ascii script still referenced ps2ascii.ps under its
2140old name gs_2asc.ps.
2141*	- ps2image.ps had a 'pop' missing in the written-out
2142definition of 'max' in the boilerplate code it put at the beginning
2143of compressed files.
2144*	- ps2image.ps got a typecheck if a scan line had no repeated
2145data in it anywhere.
2146	- wrfont.ps didn't handle CharStrings or Subrs that weren't
2147strings.
2148	- mergeini.ps produced an init file that incorrectly
2149attempted to load the Symbol and Dingbats encodings dynamically.
2150
2151Removes the gsview.bat file, since it was confusingly named and not
2152generally useful.
2153
2154Changes bdftops back to using encrypted CharStrings, for compatibility
2155with Adobe interpreters, but also changes lenIV to 0, to save a little
2156more space.
2157
2158Changes the traceop utility so it makes traced operators appear to be
2159operators, and so it will replace a definition in systemdict if explicitly
2160requested to do so and systemdict is writable.
2161
2162Adds a printafm utility for printing the metrics of fonts in AFM format.
2163
2164</pre><h3><a name="V2.7b_Drivers"></a>Drivers</h3><pre>
2165Fixes bugs:
2166	- The cdj driver was missing a few type casts that were needed to
2167satisfy pedantic compilers.
2168	- For banded devices, many of the non-displaying target routines
2169were getting called with the original device as the first argument, not
2170the target device.  (This didn't make any difference in practice, because
2171gdev_prn_open explicitly copied the non-rendering procedures back into the
2172procedure vector.)
2173*	- The X driver didn't catch and discard bogus errors on
2174XFreeColors, which faulty servers generate.
2175*	- The X driver gave up on color allocation too easily.
2176*	- The X driver dynamic color table size could become negative.
2177*	- x_lookup_font could return platform fonts of very small sizes,
2178which have very inaccurate metrics.
2179*	- The ESCP/2 driver was incorrectly named gdevescp2 in devs.mak.
2180	- The Apple DMP driver used #if 0 / #endif instead of comment
2181brackets, and was incorrectly named "dmp" instead of "appledmp" in
2182the source code.
2183*	- The X driver didn't free dynamic colors at the start of each page.
2184*	- The X driver didn't bind foreground/background defaults tightly.
2185*	- The X driver didn't check for GHOSTVIEW_COLORS properly.
2186*	- The X driver freed too many colors if an allocation request failed.
2187*	- The X driver didn't check return value of gs_malloc for being NULL.
2188*	- The DeskJet/LaserJet driver used an incorrect command for
2189end-of-page.
2190*	- The DeskJet/LaserJet driver incorrectly reset the printer at the
2191beginning of every page.
2192*	- The PCX driver put an old version number in the header, and
2193didn't pad scan lines to an even number of bytes.
2194	- The BMP driver used a variable named `quad', which is a
2195reserved word on some platforms.
2196*	- The TIFF driver didn't handle A4 or B4 size paper correctly.
2197*	- The X11 driver incorrectly demanded the Xmu library, which was
2198not needed and which caused link errors on some versions of SunOS.
2199*	- X11 font matching scheme was too loose, causing overlaps and
2200other problems.
2201*	- X11 Font Extensions (rotated and mirrored fonts) did not work
2202properly on NCD terminals.
2203*	- When freeing the rgb cube/gray ramp, the parameters to gs_free()
2204did not exactly match the parameters to gs_malloc().
2205*	- Ghostscript failed to warn the user when it could not allocate
2206the original color cube/gray ramp and dropped back to a smaller
2207cube/ramp, or from color to mono.
2208*	- x_release could cause Ghostscript to fail if a font was freed
2209after the device was closed.
2210	- The X driver continued to ask the server for colors even after a
2211request failed, causing colored images to display very slowly.
2212
2213* Adds a pcxgray driver to provide 8-bit gray scale output in PCX format.
2214
2215Adds a pcx24b driver to provide 24-bit RGB color PCX output.
2216
2217* Adds a LaserJet 4 driver.
2218
2219Adds a user-contributed driver for the DEC LA70 (very similar to the LA75).
2220
2221Substantially improves the performance of the PxM drivers by eliminating
2222an unnecessary copying step and by writing each scan line with a single
2223fwrite when possible.
2224
2225Moves the gray-scale and 24-bit RGB device color mapping routines to
2226gxcmap.c from gdevpcx.c and (nowhere).
2227
2228Allows window granularities smaller than 64K in the VESA driver.
2229
2230Changes the LaserJet margins again.
2231
2232</pre><h3><a name="V2.7b_Platforms"></a>Platforms</h3><pre>
2233Fixes bugs:
2234	- Platforms where stat doesn't return a st_blocks value
2235computed the block count wrong.
2236	- In gp_vms.c, the call on SYS$FILESCAN needed two uint *s
2237rather than a long * and a struct *.
2238*	- The VMS script files referenced IBSCAN instead of ISCAN2,
2239and omitted GDEVXXF.
2240*	- The UUENCODEd icons for the MS Windows platform were omitted
2241from the fileset.
2242*	- On MS-DOS systems, filenameforall didn't interpret * alone
2243as a pattern matching all files.
2244
2245Adds wildcard matching capability to filenameforall under Unix.
2246
2247Removes gp_file_status from the platform interface, since all
2248platforms provide identical stat calls in the C library.
2249
2250Adds DesqView/X (using djgcc and go32) as a platform.
2251
2252Removes the S3 driver from the standard PC configurations.
2253
2254Adds documentation for compiling Ghostscript on the Intergraph Clipper.
2255
2256Updates the documentation to add a better list of X Windows font
2257names for the Sun platform.
2258
2259</pre><h3><a name="V2.7b_Fonts"></a>Fonts</h3><pre>
2260
2261Creates an external file (gs_dbt_e.ps) with the ZapfDingbats encoding
2262(actually in 2.6.1, but not documented there).
2263
2264Changes the names of the Cyrillic fonts to Shareware-Cyrillic-Regular
2265and Shareware-Cyrillic-Italic, keeping Cyrillic, Cyrillic-Regular,
2266and Cyrillic-Italic as aliases.
2267
2268* Removes the requirement that the FontName in the font file be the same
2269as the name in Fontmap.  (This requirement led to the need for aliases,
2270and was extremely confusing to users.)
2271
2272* Adds a GS_FONTPATH environment variable containing a list of directories
2273that should be scanned automatically for fonts.
2274
2275* Gets rid of the Ugly font, and changes the default to the IBM Courier
2276font, which is freely distributable.
2277
2278</pre><h3><a name="V2.7b_Interpreter"></a>Interpreter</h3><pre>
2279Fixes bugs:
2280	- cvs didn't check for stack underflow.
2281*	- zht2.c didn't include alloc.h.
2282*	- execstackoverflow cleared the e-stack instead of just
2283cutting it back.
2284	- if and ifelse incorrectly reported typecheck instead of
2285stackunderflow.
2286	- Copying a dictionary could alter some items even if a later
2287item causes an invalidaccess error because of an attempted store of a
2288local object into global VM.
2289	- bitshift and cvrs assumed that longs occupied 32 bits.
2290*	- exitserver didn't check the password, and always succeeded.
2291	- Font loading didn't suppress all output messages if QUIET
2292was set.
2293*	- The interpreter incorrectly pushed its exit procedure on
2294the e-stack if it was called again after an interrupt.
2295*	- The interpreter didn't treat timeout like interrupt in
2296terms of re-executing the current operation.
2297*	- `show' operators popped their operands before they were
2298sure they wouldn't be interrupted.
2299*	- rotate with a matrix operand didn't check for multiples of
230090 degrees.
2301	- In the system name table, ge was misspelled eg, and
2302pathforall was misspelled pathfoall.
2303*	- file_close_file attempted to free the buffer even if it was an
2304externally supplied string (specifically, the argument of gs_run_string).
2305	- setprintername (in gs_statd.ps) set printername rather than
2306.printername.
2307
2308Implements additional Level 2 features:
2309	- Indexed color space with lookup procedure.
2310	- sethalftone, except for the transfer function override,
2311	and currenthalftone.
2312
2313Implements OtherSubrs for indices greater than 3 (required for
2314MultiMaster fonts).
2315
2316Implements black generation and undercolor removal.
2317
2318Changes `store' from a C procedure to a PostScript procedure.
2319
2320Changes idiv back so it requires integer operands, per the Adobe
2321documentation but not per some old Adobe interpreters.
2322
2323* Adds many new paper sizes to gs_statd.ps.  It now includes ISO a0-a10
2324and b0-b10, and CAD sizes archA-archE.
2325
2326Implements `status' for non-%os% files.  (This is currently a no-op,
2327but the framework is there.)
2328
2329Changes the error handler so it normally uses = rather than == to print
2330the operand stack, to avoid recursive errors.
2331
2332* Adds time slicing capability to the interpreter.
2333
2334Implements setcolorscreen/currentcolorscreen.
2335
2336</pre><h3><a name="V2.7b_Library"></a>Library</h3><pre>
2337Fixes bugs:
2338*	- Rectangles with vertices specified in clockwise order were
2339drawn as 0-width lines.
2340*	- The string matching function reported that 'abcdefg'
2341matched the pattern 'abcde'.
2342*	- The bounding box of non-rectangular clipping paths was not
2343being marked as valid, so cached characters would simply get
2344discarded as being outside the bounding box.
2345	- erasepage filled the page with the device's white color,
2346not with gray level 1 passed through the transfer function.
2347*	- Colors with equal R/G/B or C/M/Y components were rendered
2348incorrectly if the 3 or 4 transfer functions were not all the same.
2349*	- Because of a bug in rc_unshare, using CIE color would give
2350random errors (such as /invalidaccess in --for--).
2351*	- setbbox didn't round the coordinates properly, which could
2352cause erroneous rangecheck errors with coordinates on the edge of the
2353box.
2354*	- Color halftones "flipped over" at the 50% point, inverting
2355foreground and background.
2356	- Quite a few places assumed that longs occupied 32 bits.
2357*	- kshow passed an incorrect c1 value to the procedure.
2358	- The debugging code in update_x_list in gxfill.c didn't take
2359into account the possibility that the active line at x_first might be
2360deleted.
2361	- gx_image_cached_char called the xfont render_char procedure an
2362extra time if it failed with required=0 and succeeded with required=1.
2363(This was just a small inefficiency, not a logic bug.)
2364	- Non-rectangular clipping regions weren't computed correctly,
2365because accum_add_rect didn't handle overlapping rectangles.
2366	- Drivers didn't report file system errors (such as file system
2367full) as an ioerror.
2368*	- setdevice didn't reset the charpath and setcachedevice flags.
2369	- The Zortech compiler produced wrong code for the uid_equal
2370macro; uid_equal is now a procedure.
2371
2372Passes OtherSubrs arguments back to the caller correctly for indices
2373greater than 3.
2374
2375Implements black generation and undercolor removal.
2376
2377Removes gdev_mem_ensure_byte_order, which was no longer used or useful.
2378
2379Removes gstdev.c (device tracing), since it hasn't been used in a
2380long time and is of little value given a reasonable debugger.
2381
2382Changes the interface to the xfont char_metrics and render_char
2383procedures to allow them to return 1.
2384
2385Changes 32-bit memory devices so they use CMYK color mapping rather
2386than RGB mapping with an unused byte.
2387
2388Implements gs_setcolorscreen/currentcolorscreen.
2389
2390Implements Level 2 halftones, except for the transfer function override.
2391
2392Implements a hack to make zero-width rectangles display as one pixel wide,
2393to work around a bug in the Microsoft Windows PostScript driver.
2394Currently the hack only works for vertical lines, not horizontal ones.
2395
2396</pre>
2397
2398<hr>
2399
2400<h2><a name="Version2.6.1"></a>Version 2.6.1 (5/28/93)</h2>
2401
2402<p>This is primarily a bug-fix release for 2.6, with a couple of minor
2403additions.
2404
2405<h3><a name="V2.6.1_Documentation"></a>Documentation</h3><pre>
2406
2407Adds proper `man' pages ansi2knr.1 and gs.1.
2408
2409</pre><h3><a name="V2.6.1_Procedures"></a>Procedures</h3><pre>
2410Fixes bugs:
2411	- The Unix makefile produced an incorrect linker command if
2412EXTRALIBS was not empty.
2413	- The Unix install commands didn't copy devices.doc,
2414ps2epsi.doc, and xfonts.doc to the documentation directory.
2415	- echogs.c didn't include &lt;sys/types.h&gt;, which is needed for
2416time_t on some systems.
2417	- malloc_.h used &lt;malloc.h&gt; rather than &lt;stdlib.h&gt; on
2418NeXTStep systems.
2419
2420Changes the configuration procedure to use a C program rather than
2421complex shell scripts.
2422
2423</pre><h3><a name="V2.6.1_Utilities"></a>Utilities</h3><pre>
2424Fixes bugs:
2425	- The boilerplate produced by ps2image used the 'max'
2426operator, which is not a standard PostScript operator.
2427	- The winmaps.ps utility had 'floring' instead of 'florin' in
2428the OEMEncoding table.
2429	- quit.ps was omitted from the PC distribution.
2430
2431Changes the name of the dicttomark procedure to .dicttomark.
2432
2433Renames gs_2asc.ps as ps2ascii.ps, so it matches the names of the
2434script files.
2435
2436</pre><h3><a name="V2.6.1_Drivers"></a>Drivers</h3><pre>
2437Fixes bugs:
2438	- The pbmraw driver was writing out RGG instead of RGB values.
2439	- The X11 driver used NULL in a place where it should have
2440used None.
2441	- For multi-file output, the GIF driver didn't write a header
2442at the beginning of each file.
2443	- The Epson driver didn't honor the -A4 compilation switch,
2444didn't put (0,0) at the physical corner of the page, and was too
2445liberal about using tabs instead of spaces.
2446
2447Replaces the color handling algorithms in the X Windows driver with
2448new, much better ones.
2449
2450Makes the PC display drivers recognize the -A4 compilation switch,
2451like the printer drivers.
2452
2453Adds new user-contributed drivers:
2454	- A driver for Epson printers that use the ESC/P 2 control
2455language, such as the Stylus 800.
2456	- A driver for the Apple Dot Matrix Printer and Imagewriter.
2457
2458Adds a new get_xfont_device driver procedure.  This is a
2459backward-compatible change, since there is a sensible default.
2460
2461</pre><h3><a name="V2.6.1_Platforms"></a>Platforms</h3><pre>
2462Fixes bugs:
2463	- On VMS, gconfig.h didn't have #include "gsconfig.h" as its
2464first line.
2465	- gconfig.c compiled incorrectly on the RS/6000 because the
2466compiler evaluated a constant of the form (x&lt;&lt;y)+z incorrectly.
2467	- Quite a few files that used the mem... functions didn't
2468include memory_.h, which caused trouble on some bsd4.2 systems.
2469	- The definition of zfont_char_xglyph confused one of the AIX
2470compilers.
2471	- On VMS, DEC C allows extra arguments for fopen, but gcc doesn't.
2472	- On the MS Windows platform, 2.6 used gdevwddb rather than
2473gdevwdib; the latter is almost always faster.
2474	- The PC .zip files didn't include the Windows .ICO and .RES
2475files in either GSEXE.ZIP or GSFILES.ZIP.
2476
2477On PC platforms, adds an option (FPU_TYPE=-1) to optimize for
2478machines lacking a floating point processor.
2479
2480</pre><h3><a name="V2.6.1_Fonts"></a>Fonts</h3><pre>
2481
2482Adds 4 new fonts contributed by URW.  These have a URW copyright and
2483are governed by the GNU License.
2484
2485Documents the fact that font names in Fontmap can be strings, not
2486only names.
2487
2488Adds DingbatsEncoding as a predefined encoding (in addition to
2489Standard, ISOLatin1, and Symbol).
2490
2491</pre><h3><a name="V2.6.1_Interpreter"></a>Interpreter</h3><pre>
2492Fixes bugs:
2493	- memchr (used in zfile.c) isn't available on all platforms.
2494	- languagelevel was defined as an operator rather than an
2495integer.
2496	- iccfont.c referred to name_StandardEncoding instead of
2497#include'ing font.h and referring just to StandardEncoding.
2498	- The CCITTFaxDecode filter didn't work on 32- (or 64-) bit
2499machines, because of a bug in more_bits().
2500	- The structures recording an allocation within the scope of
2501a save could get allocated unnecessarily, because they weren't
2502properly marked as free when an array was freed.
2503
2504Renames the following Ghostscript-specific operators by adding a '.'
2505at the front: makeoperator, setdebug, setmaxlength, stringmatch,
2506type1decrypt, type1encrypt.
2507
2508Adds a real implementation of glyphshow.
2509
2510</pre><h3><a name="V2.6.1_Library"></a>Library</h3><pre>
2511Fixes bugs:
2512	- Discarding fractional character coordinates in the Type 1
2513rasterizer led to some rendering anomalies (e.g., characters 1 pixel
2514too high).
2515	- If a font had a non-standard encoding (i.e., not
2516StandardEncoding, ISOLatin1Encoding, or SymbolEncoding), Ghostscript
2517would never invoke the platform font code.
2518	- The RGB to HSB color conversion algorithms produced
2519nonsensical values.
2520	- struct cached_char_s was defined redundantly in gxcdir.h,
2521causing compilation problems on some systems.
2522	- 32-bit color devices didn't work properly on little-endian
2523machines (arrange_bytes in gdevmem2 was wrong).
2524	- The scaled font cache could confuse two fonts with the same
2525UniqueID and different Encodings.
2526	- Under many common circumstances (first use of a character
2527was with stringwidth, the font was renamed, the font encoding was
2528changed), xfonts would not be used.
2529
2530Adds gs_glyphshow.
2531
2532</pre>
2533
2534<h2><a name="Version2.6"></a>Version 2.6 (5/9/93)</h2>
2535
2536<p>The main new feature in this release is the ability to use platform
2537fonts.  It also adds many more Level 2 PostScript facilities.
2538
2539<h3><a name="V2.6_Documentation"></a>Documentation</h3><pre>
2540
2541Corrects some errors in the documentation of the makeimagedevice operator.
2542
2543Adds operand and result types to the comments at the beginning of all the
2544operators.
2545
2546Adds new sections on installation in use.doc.
2547
2548Reinstates history.doc as a repository for old and no longer interesting
2549history information.
2550
2551Adds a new file, devices.doc, with documentation for specific devices.
2552
2553Points out that font2c must be run with a Fontmap that includes the fonts
2554being converted, and that its arguments must be quoted with "" on VMS
2555systems.
2556
2557Notes that the font name in the Fontmap must be the same as the FontName
2558in the font.
2559
2560Adds a list of the Level 2 facilities not provided by Ghostscript.
2561
2562Identifies bug-ghostscript@prep.ai.mit.edu as an alias for the
2563gnu.ghostscript.bug newsgroup.
2564
2565Points out explicitly that -sOutputFile=- sends output to stdout, and
2566requires using the -q switch.
2567
2568Documents the use of tar_cat to construct the Unix makefiles.
2569
2570Adds a new file, xfonts.doc, that describes the external font interface.
2571
2572Documents the fact that drivers must use gs_malloc and gs_free rather than
2573malloc and free.
2574
2575Documents the *.sh (shell script) files.
2576
2577Adds brief documentation on some additional development tool .ps files.
2578
2579Documents the TEMP and GS_OPTIONS environment variable.
2580
2581Points out the need to run Windows in 386 Enhanced mode on machines
2582that have less than 6 Mb of RAM.
2583
2584Consolidates documentation on compiler switches in make.doc (some of
2585it had been in the unix*.mak files).
2586
2587</pre><h3><a name="V2.6_Procedures"></a>Procedures</h3><pre>
2588Fixes bugs:
2589	- \'s in arguments following -- were doubled.
2590
2591Includes the full set of filters automatically if the level2 feature
2592is selected.
2593
2594Extends DEVICE_DEVS... up to DEVS9.  Adds DEVICE_DEVS1 as well.
2595
2596Renames turboc.mak and tbcplus.mak as tc.mak and bc.mak.
2597
2598Makes @-files use the library path (GS_LIB, -I).
2599
2600Changed the Unix install script to use install &lt;file&gt; &lt;destfile&gt;
2601rather than install &lt;file&gt; &lt;directory&gt;.
2602
2603Adds a GS_OPTIONS environment variable that acts like an implicit @-file
2604at the beginning of the command line (i.e., may contain switches and
2605initialization files).
2606
2607Renames sym__enc.ps as gs_sym_e.ps.
2608
2609Adds a user-contributed shell script for using Ghostscript with an
2610H-P printer spooler.
2611
2612Adds level1.ps to the set of installed utility files.
2613
2614Extends the TEMP environment variable (the directory for scratch
2615files) to work on Unix as well as MS-DOS.
2616
2617Changes the MS Windows makefile to generate gswin.exe rather than
2618gs.exe, and the Watcom makefile to generate gs386.exe.
2619
2620Moves the "product" string from gs_init.ps to iinit.c.
2621
2622Adds a GS macro to the makefiles, to allow choosing the name of the
2623executable.
2624
2625</pre><h3><a name="V2.6_Utilities"></a>Utilities</h3><pre>
2626Fixes bugs:
2627*	- font2c did the wrong thing (still) for fonts that didn't
2628use StandardEncoding, ISOLatin1Encoding, or SymbolEncoding.
2629*	- impath.ps had a fatal bug (wrong operand order for
2630charstack_write) that caused bdftops to fail.
2631	- gslp didn't wrap or truncate lines.
2632	- gslp didn't handle tabs in a second or subsequent column
2633properly.
2634	- The definition of ashow in gs_2asc.ps incorrectly undid the
2635increment following the last character.
2636	- The definition of awidthshow in gs_2asc.ps failed to pop
2637two entries from the stack, and also tested the character against the
2638wrong value.
2639
2640Adds a shell script (sysvlp.sh) that interfaces Ghostscript with the
2641System V 3.2 lp interface.
2642
2643Adds ps2ascii and ps2epsi script/batch files.
2644
2645Adds a new utility, mergeini.ps, for concatenating all the
2646Ghostscript initialization files into a single file, optionally
2647removing comments and blank lines.
2648
2649Adds new switches to gslp:
2650	-q: suppress all printed output.
2651	--detect: check whether the file begins with %!, and if so,
2652	    interpret it directly as a PostScript file.
2653	--first-page &lt;page#&gt;: replaces the former -P switch.
2654	--last-page &lt;page#&gt;: replaces the former -Q switch.
2655	--(heading|footing)-(left|center|right) &lt;string&gt;: define
2656	    headers/footers.  # inserts the page number.
2657	--margin-(top|bottom|left|right) &lt;inches&gt;: define margins.
2658	--spacing &lt;n&gt;: for double, triple, etc. spacing.
2659Also makes gslp ignore all the enscript flags it doesn't implement.
2660
2661Adds an option to wrfont.ps to do encryption at read-in time.  (This
2662allows much better compression of the standard Ghostscript fonts.)
2663Changes bdftops to use this option.
2664
2665Changes gslp to accept wild cards in file names.
2666
2667Replaces landscap.ps with a new one contributed by a user.
2668
2669Changes the compression scheme used in ps2image to a much more
2670effective one.  Writing images is much slower than with the previous
2671scheme, but reading is not.
2672
2673</pre><h3><a name="V2.6_Platforms"></a>Platforms</h3><pre>
2674Fixes bugs:
2675	- SCFDTAB and SCFTAB were omitted from the VMS module lists.
2676	- Function prototypes were not being used with the Watcom
2677compiler.
2678	- On MS-DOS platforms, if the value of the TEMP variable had
2679a trailing : or \, Ghostscript appended a \ anyway.
2680	- Under Windows, changing the size or resolution of the image
2681closed and reopened the window.
2682	- Ghostscript would not build correctly with the Watcom compiler
2683if DOS4G=quiet was not set, because the DOS4GW copyright message was sent
2684to stdout.
2685*	- Finally gets Ghostscript to run properly on the RS/6000, by
2686adding a compiler bug workaround to arc_add and arc_either.
2687*	- Finally gets Ghostscript to compile properly on Sun SPARC
2688systems, by adding a compiler bug workaround in scan_number.
2689
2690Changes the default MS-DOS configuration from 8086/8088 to 80286.
2691
2692Adds all the SuperVGA drivers to the BC++ and Watcom executables
2693(except for the VESA driver in the Watcom executable).
2694
2695Adds a makefile (msc.mak) for the Microsoft C/C++ 7.0 platform.  This
2696is currently a MS-DOS, not a MS Windows, platform.
2697
2698Changes gp_enumerate_files_init so it takes a gs_memory_procs *, not
2699separate proc_alloc_t and proc_free_t arguments; also, it must
2700enumerate precisely the requested set of files, not a superset.  THIS
2701IS A NON-BACKWARD-COMPATIBLE CHANGE.  It affects all gp_*.c files.
2702
2703Adds the P*M drivers and bit.dev to the standard configuration on
2704Unix platforms.
2705
2706Changes the Watcom makefile so it uses the WATCOM environment variable (by
2707default) as the base directory for the Watcom executables.
2708
2709Adds the MS Windows COMMDLG.DLL and SHELL.DLL files to the set of
2710files incorporated in GSEXE.ZIP, since the new MS Windows code uses
2711them, and they aren't provided with Windows 3.0.
2712
2713Makes major revisions to the MS Windows platform and driver code, to
2714support the gsview front end, and also to remove the dependence on the
2715Borland EasyWin library.  NOTE: Compiling the MS Windows code now requires
2716Borland C++ 3.1 (not 3.0).
2717
2718Changes time_.h so that Ghostscript will compile and run on A/UX.
2719
2720Changes the MS-DOS implementation of file enumeration so it always
2721treats \s in the file name as literal characters, not escapes, unless
2722there are two \\s in a row.  This does the most sensible thing given
2723the DOS file naming conventions.
2724
2725Adds a %pipe% file device under Unix.
2726
2727Adds a makefile for Watcom C under MS Windows.  This is very preliminary;
2728in particular, NO display output is supported.
2729
2730</pre><h3><a name="V2.6_Fonts"></a>Fonts</h3><pre>
2731Fixes bugs:
2732	- fonts.mak referred to ncri and puti rather than ncrri and
2733putri.
2734	- cyr and cyri had the wrong protection.
2735	- The Hershey fonts left the font on the stack when they were
2736loaded.
2737*	- The FontName of an aliased font was the original FontName
2738from the file, not the alias.
2739*	- Fontmap.BTS had incorrect entries for AvantGarde-Demi and
2740AvantGarde-DemiOblique.
2741	- Ghostscript pushed userdict, rather than an empty writable
2742dictionary, onto the stack when loading a font, leading to name clashes.
2743
2744Adds a new cfonts.mak with a full set of rules for compiling all the
2745standard Ghostscript fonts (except the Hershey fonts) into C.
2746
2747Adds UniqueIDs to the Hershey fonts, and removes the UniqueIDs from
2748the Hershey entries in the Fontmap.
2749
2750Adds a new Fontmap for VAX/VMS with DECWindows/Motif.
2751
2752Changes MakeHersheyFont so it takes the encoding as an additional
2753parameter, and changes the Hershey-Symbol font to use SymbolEncoding.
2754
2755</pre><h3><a name="V2.6_Drivers"></a>Drivers</h3><pre>
2756Fixes bugs:
2757	- The !@*&amp;^%#@$ PCL drivers *still* didn't do the right thing
2758about vertical spacing: the &lt;ESC&gt;*p+&lt;n&gt;Y command works on all PCL 3,
27594, and 5 printers *except* the LaserJet IIp.
2760	- The cdj driver used recursive macros (height, t_margin,
2761b_margin) that not all compilers handled correctly.
2762	- The djtc driver used some assignments including =*, which
2763some compilers dislike.
2764	- The S3 driver wouldn't compile correctly with the Watcom
2765compiler.
2766	- The makefile entry for the S3 driver was wrong.
2767	- The SuperVGA drivers returned an error, rather than using
2768the highest available resolution, if a too-high resolution was
2769requested.
2770	- The GIF driver produced an incorrect header for images
2771wider or taller than 32K pixels.
2772	- The GIF driver wasn't able to handle multi-page documents
2773correctly.
2774	- The margins on the DeskJet were still not correct.
2775	- Some ANSI C compilers rejected a complex expression in
2776gdevpccm.c.
2777	- Printer drivers didn't recover cleanly from problems in
2778opening the scratch files.
2779	- The BJ-10e driver used the same name `out' for a label and
2780a variable.
2781	- The SCO ODT compiler couldn't handle sizeof(ppdev-&gt;fname).
2782	- The Epson driver used the wrong value for ESC in the
2783initialization string.
2784
2785Adds new drivers:
2786	- Drivers to produce MS Windows .BMP format output.
2787	- A new ATI Wonder display driver (800x600, 16 colors) and a
27881024x768 mode for the existing driver.
2789
2790Adds new user-contributed drivers:
2791	- A driver for the Tektronix 4693d color printer.  This carries a
2792university copyright.
2793	- A driver for the SPARCprinter.
2794	- A driver for the Canon BJ200 printer.
2795	- A driver for the IBM ProPrinter.
2796	- A driver for the DEC LJ250 printer, which has a
2797PaintJet-compatible mode.
2798	- A replacement driver for the Sony NWP533.
2799	- A driver that writes TIFF/F (Group 3 fax) files.  This carries
2800an external copyright.
2801	- A driver for the C.Itoh M8510 printer.
2802	- A driver for the Okidata MicroLine 182 9-pin dot-matrix printer.
2803	- A Hercules Graphics driver.
2804	- A driver for printers under MS Windows.
2805	- A driver for direct frame buffer addressing under SCO Unix
2806and Xenix and AT&amp;T SVR4.
2807
2808Changes the get_bits driver procedure so it always reads a single
2809scan line, and optionally does not copy the data.  THIS IS A
2810NON-BACKWARD-COMPATIBLE CHANGE.  However, this change does not affect
2811any existing printer driver, since these all go through intermediate
2812routines in gdevprn.c.
2813
2814Changes gdevprn.h, and the relevant printer drivers, so that -DA4
2815will change the default paper size for any printer driver.
2816
2817Allows the use of NULL or 0 for default procedures in the driver
2818procedure vector.
2819
2820Adds an optional map_cmyk_color procedure to the driver procedure
2821vector.
2822
2823Changes the Epson driver so that the minimum amount of white space
2824required to use a tab is an easily changed parameter.
2825
2826Changes the BGI driver to use separate segments for the Borland
2827device drivers, to reduce the risk of overflowing a segment.
2828
2829Adds an optimization option (normally enabled) to the PGM and PPM drivers
2830such that they revert to PBM or (for PPM) PGM if the page can be
2831represented that way.
2832
2833Adds a new (optional) driver procedure to get the procedure vector
2834for external fonts.
2835
2836Adds an argument to gp_open_printer to indicate whether the file should be
2837opened in binary or text mode.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
2838However, this change does not affect any existing printer driver, since
2839these all go through intermediate routines in gdevprn.c.
2840
2841Changes the LN03/LA50/LA75 driver so it uses a text record mode to open
2842the output file under VMS (by adding an argument to gp_open_printer to
2843indicate this.)
2844
2845Allows (indeed, encourages) drivers to use far_data to declare the device
2846structure, primarily to avoid overflowing the 64K data segment under MS
2847Windows.  Changes the file output drivers and many of the printer drivers
2848to declare their device structures as far_data.
2849
2850Replaces the AT&amp;T 3B1 driver with an updated version (from the same
2851contributor).
2852
2853Changes the Epson BJ driver and the SPARCprinter driver so they align
2854the (0,0) point of the page with the physical corner of the paper
2855rather than with the origin of the printable area.
2856
2857Removes the EIZO MDB-10 driver, since it caused complications for the
2858EGA and VGA drivers and is not a widely used device.
2859
2860</pre><h3><a name="V2.6_Interpreter"></a>Interpreter</h3><pre>
2861Fixes bugs:
2862	- The entry for the copydevice operator in the operator table
2863was initialized incorrectly.
2864	- printobject and writeobject didn't handle nested arrays.
2865	- restore didn't properly close the current file (if
2866appropriate), causing an invalidaccess error.
2867	- buildfont required the presence of a valid, 4-element
2868FontBBox.  (The Red Books say it's required, but Adobe interpreters
2869don't require it; some DEC software generates a 3-element FontBBox.)
2870	- resourceforall had several bugs; it didn't do even
2871approximately the right thing.  There were quite a few other problems
2872with the implementation of resources.
2873	- setfont, makefont, and scalefont would accept a font with
2874no FID entry.
2875*	- Loading a .PFB font left the file open (until the next
2876restore or quit).
2877	- The default (null) font didn't include a PaintType entry,
2878which some PostScript files expected.
2879*	- The ASCIIHexDecode filter sometimes thought the underlying
2880stream was at EOF even when there was (at most one buffer's worth of)
2881data left.
2882	- iscan.c included &lt;ctype.h&gt; before std.h, causing type name
2883clashes on some systems.
2884*	- save and restore didn't handle the pointers in the graphics
2885state correctly; for example, the current font wasn't restored
2886properly.
2887	- Binary object sequences at the top interpreter level didn't
2888get executed immediately.
2889	- On high-resolution devices, the default transfer function
2890converted almost-white grays to very light grays rather than white.
2891	- The `string' operator was checking the string length
2892against max_uint rather than max_ushort, which could cause invalid
2893lengths to be accepted.
2894*	- deviceinfo caused a stackunderflow error.
2895*	- idiv could give incorrect results for quotients or
2896remainders that didn't fit in 24 bits.
2897*	- The ASCII85Encode filter padded trailing bytes with 1's
2898rather than 0's.
2899*	- The ASCII85Decode filter had a typo that produced incorrect
2900results if there were exactly 2 trailing bytes.
2901	- findlibfile didn't push a copy of the file name if it was
2902the name of a special (%) file.
2903	- setduplexmode was not defined in statusdict, causing
2904/undefined errors from some poorly designed input files.
2905*	- The CCITTFaxDecode filter had several bugs in 2-D decoding.
2906*	- The ASCII85Decode filter didn't read ahead to detect EOD if
2907it fell precisely on a buffer boundary.
2908	- If a file mentioned on the command line redefined `start',
2909Ghostscript would run the new definition rather than the built-in one
2910after processing all the files on the command line.
2911	- The SCO ODT compiler couldn't handle the conditionals in the
2912ngetc (iscan.c) and sgetc* (stream.h) macros.
2913	- makefont and scalefont didn't cache the PostScript dictionaries
2914for scaled fonts.
2915	- Changing the elements of the Encoding of a font dynamically
2916didn't take effect if the character was already cached.
2917	- makefont and scalefont didn't add the (undocumented) OrigFont
2918and ScaleMatrix entries to the new font.
2919*	- findfont insisted that the font name be a string or a name.
2920	- filenameforall could cause an incorrect transfer of control
2921if no files matched the pattern.
2922*	- ISOLatin1Encoding had hyphen instead of minus at code 45.
2923	- restore didn't reset saved_cbot and saved_ctop correctly;
2924as a result, some freed blocks could get abandoned rather than put on
2925the free list.
2926	- Some numerical constants in zarith.c assumed that longs
2927occupied 32 bits.
2928
2929Implements additional Level 2 features:
2930	- %device%file names (only the "os" device is provided).
2931	- &lt;~ ~&gt; for ASCII-85 strings.
2932	- Binary error messages.
2933	- BuildGlyph.
2934	- CCITTFaxDecode filter entries EndOfBlock, Rows, and
2935	(undocumented) FirstBitLowOrder.
2936	- {set/current}{color/colorspace/overprint/colorrendering/
2937	blackgeneration/undercolorremoval}.  (See below under library
2938	for limitations.)
2939	- Decode for the dictionary form of image.
2940	- File access modes a, r/w/a+.
2941	- Font entries CDevProc, Metrics2, and WMode.
2942	- Font operators cshow, findencoding, rootfont, and
2943	setcachedevice2.
2944	- glyphshow (emulated with PostScript code).
2945	- languagelevel.
2946	- realtime.
2947	- setbbox.
2948	- (Subset of) system and user parameters.
2949	- xshow, yshow, and xyshow.
2950	- XUIDs for fonts.
2951
2952Moves the installation of systemdict and the initial allocation of
2953globaldict (if relevant) and userdict from gs_init.ps to iinit.c.
2954
2955Makes Level 2 features dynamically selectable through the
2956.setlanguagelevel operator; disables all Level 2 features
2957(specifically including automatic dictionary expansion) unless the
2958level2 feature is included and active.
2959
2960Adds the .knownget operator for speeding up system procedures.
2961
2962Renames the type1addpath operator as .type1addpath; adds an optional
2963left side bearing argument; changes it so it does not do the
2964setcachedevice, fill, or stroke, but does do a moveto for the
2965character width.  Changes Type1BuildChar appropriately.  (All this is
2966needed to make WMode work.)
2967
2968Removes the .setmetrics operator, which is no longer needed.
2969
2970* Changes the meaning of the user_errors argument to gs_run_file and
2971gs_run_string so that -1 means always return on an error, 0 means
2972only return on an error not within a `stopped'.
2973
2974Adds all the necessary checks and operators for local/global VM, but
2975doesn't actually implement local/global mode.
2976
2977Changes setcachedevice back so that it requires 4 numbers on the
2978stack rather than a 4-element array.  (It was changed to be the other
2979way in release 2.0, but that was because I didn't realize that fonts
2980had to have an executable FontBBox, and some of the Ghostscript fonts
2981didn't.)
2982
2983Changes all the filter operators from .filterxxx to .filter_xxx, and
2984removes the need to enumerate them in gs_init.ps.
2985
2986Adds .oserrno and .oserrorstring operators for getting the last OS
2987error (in the current context).
2988
2989Changes gs_finit similarly to gp_exit.  Adds gs_exit_with_code that
2990takes both an exit status and a Ghostscript error code.
2991
2992Changes the name of name.h to iname.h.
2993
2994Adds support for the `interrupt' error (but doesn't provide any standard
2995way of generating one, other than through the gp_check_interrupts polling
2996function).
2997
2998Adds copyright to systemdict.
2999
3000Changes the spot halftone screen to an elliptical screen supplied by
3001Berthold K. P. Horn.
3002
3003Adds a check that the first token in gs_init.ps is an integer.  In
3004conjunction with other code in gs_init.ps, this should catch all attempts
3005to run Ghostscript with a gs_init.ps that doesn't match the executable.
3006
3007Changes all relevant occurrences of sizeof to size_of in order to
3008work with the buggy SVR4.2 C compiler.
3009
3010Changes gp_exit so it is passed both the Ghostscript error code and
3011the exit status code as arguments.  This is backward-compatible for
3012all but the pickiest compilers.
3013
3014Adds a call on gp_check_interrupts() after fwrite calls in the stream
3015machinery.  This prevents lengthy console output from locking out
3016other programs.
3017
3018Changes a couple of occurrences of op_def_ptr in iinit.c to work around a
3019`const' bug in Sun's SC1.0 compiler.
3020
3021Adds a special hack in the 'where' operator to work around a bug in Aldus
3022Freehand 2.x.
3023
3024Changes all empty argument lists from () to (void), which is the ANSI
3025C syntax.
3026
3027Adds a hack to ignore ^[ and ^D^[ tokens, to work around the prologue
3028and epilogue emitted by the MS Windows LaserJet IV driver.
3029
3030Defines the processcolors operator, which should not be needed, but
3031is required because of bugs in Lotus 1-2-3 and Adobe PhotoShop.
3032
3033Changes the allocator (ialloc) to fill all allocated and/or freed
3034blocks with a marker if gs_alloc_debug is set, as gs_malloc and
3035gs_free already do.
3036
3037</pre><h3><a name="V2.6_Library"></a>Library</h3><pre>
3038Fixes bugs:
3039	- 16-bit memory devices stored the bytes of each pixel in the
3040wrong order.
3041	- copy_mono did the wrong thing when copying 1 source chunk
3042to 2 destination chunks with polarity inverted.  (This probably
3043didn't affect any actual uses of Ghostscript.)
3044*	- The compile-time check for ints being 2 or 4 bytes used the
3045#error directive, which most compilers don't recognize.
3046	- arc and arcn didn't do the right thing for degenerate
3047(single-point) arcs, or for arcs drawn in the "wrong" direction that
3048were multiples of 360 degrees.
3049	- charpath did the wrong thing with Type 3 fonts.
3050	- copyscanlines gave an error if the buffer was too large.
3051	- The copy_mono procedure (used for text and halftones) for
30522- and 4-bit-per-pixel memory and printer devices incorrectly
3053incremented the destination pointer after every pixel, instead of
3054only after every byte.
3055	- The fill_rectangle procedure (used for graphics) for 2- and
30564-bit-per-pixel memory and printer devices, if given any color other
3057than all 0's or all 1's, multiplied the X coordinate and width by 2
3058or 4, thereby filling the wrong area.
3059	- The use of 'data' in both gs_type1_data and gs_font upset
3060the VMS compiler.
3061	- The `Flex' feature wasn't implemented for Type 1 fonts,
3062which caused serious errors in rendering some fonts that use it.
3063(Unfortunately, some Adobe fonts violate the specification, so we had
3064to implement Flex to always use a curve.)
3065*	- Stem width adjustment was too eager, producing very strange
3066effects on small characters with tight curves (a curve point could
3067get snapped to the other side of the open area).
3068	- The allocator didn't align structures adequately on
3069machines where sizeof(long) or sizeof(char *) was 8 bytes.
3070	- The test for IEEE floating point gave an incorrect
3071(negative) result on machines where sizeof(long) was 8 bytes.
3072	- genarch.c assumed that the result of subtracting two
3073pointers was an int, leading to a garbage arch.h file on systems
3074where this was false.
3075*	- The Type 1 font interpreter incorrectly reset the adjusted
3076path position to be the same as the unadjusted path position whenever
3077it returned control to the client (in particular, for callothersubr),
3078leading to discontinuities and distortions in the character shapes.
3079*	- Accented characters in Type 1 fonts often misplaced the
3080accent to the left.
3081	- gsmisc.c wouldn't compile on machines with 64-bit pointers,
3082because _pad was 0, and ANSI compilers don't accept 0-length arrays.
3083	- pathforall got confused if the client procedures modified
3084the path.
3085	- The command list file representation limited X and Y
3086coordinates to 15 bits.
3087*	- stroke could produce spikes or other garbage for mitered
3088joins as a result of stroke adjustment.
3089	- The params_size field of the null device was wrong, so
3090scaling the null device produced unpredictable results.
3091
3092Changes monobit memory devices to always store data big-endian.  This
3093eliminates byte-swapping, at the cost of slightly slower rendering.
3094
3095Removes the memswab* routines, since they are no longer needed.
3096
3097Implements gs_cshow_[n_]init, which provides support for cshow, and
3098gs_xyshow_[n_]init, which provides support for {x,y,xy}show.
3099
3100Adds an optional left side bearing argument to gs_type1_interpret.
3101
3102Changes gs_type1_interpret so it does not do a setcachedevice, fill,
3103or stroke, but only appends the character outline to the path
3104(including a moveto for the character width.)
3105
3106Removes gs_setmetrics, which is no longer needed.
3107
3108Implements gs_setcachedevice2, which provides support for
3109setcachedevice2.
3110
3111Speeds up gsave/grestore by allocating, deallocating, and copying as
3112much as possible of the graphics state in a single operation.
3113
3114Implements gs_{set/current}{color/colorspace/overprint/colorrendering/
3115blackgeneration/undercolorremoval}.  Device, indexed (with table, not
3116with procedure), CIE, and (substituted) separation colors are
3117supported; some of the setup code for patterns is also present.
3118
3119Increases the size of temporary file names in gdevprn.h from 30
3120characters to 60.
3121
3122Changes the character cache to be allocated dynamically in chunks.
3123
3124Splits gxcache.c into gxccache.c (fast "hit" code) and gxccman.c (all
3125other code).
3126
3127Changes all occurrences of sizeof to size_of in order to work with the
3128buggy SVR4.2 C compiler.
3129
3130Adds a new concept of "external fonts", which allow a driver to
3131substitute its own fonts for the ones obtained through the normal
3132font machinery.
3133
3134Changes all empty argument lists from () to (void), which is the ANSI
3135C syntax.
3136
3137</pre>
3138
3139<hr>
3140
3141<h2><a name="Version2.5.2"></a>Version 2.5.2 (9/20/92)</h2>
3142
3143<p>This is yet another bug fix release to (finally!) get the PCL drivers
3144working again.
3145
3146<h3><a name="V2.5.2_Procedures"></a>Procedures</h3><pre>
3147Fixes bugs:
3148	- The comment in devs.mak for cdjcolor said it used 8 bits
3149per pixel, rather than the correct 24.
3150
3151Adds gsbj/dj/lj/lp and gslp.ps to the installed files on Unix
3152systems.
3153
3154Removes dps.dev and level2.dev from the standard configurations on
3155all platforms, since the presence of the setcolor operator was
3156causing the output of some common applications to fail.
3157
3158</pre>
3159
3160<h3><a name="V2.5.2_Utilities"></a>Utilities</h3><pre>
3161Fixes bugs:
3162	- font2c produced invalid output for any font that didn't use
3163StandardEncoding or ISOLatin1Encoding.
3164
3165</pre>
3166
3167<h3><a name="V2.5.2_Platforms"></a>Platforms</h3><pre>
3168Fixes bugs:
3169	- gp_sysv.c required an extern long timezone.
3170
3171</pre>
3172
3173<h3><a name="V2.5.2_Drivers"></a>Drivers</h3><pre>
3174Fixes bugs:
3175	- The PCL drivers were *still* doing the wrong thing about
3176zeroing the seed row for Mode 3 compression.
3177	- Setting the resolution with -r didn't work under Windows.
3178	- The Windows driver got a stack overflow if it was ever
3179asked to display a bit image wider than 32 pixels.
3180	- The Tseng driver didn't sense the model (ET3000 vs. ET4000)
3181correctly.
3182
3183Adds the eps9high device to the standard MS-DOS makefiles.
3184
3185</pre>
3186
3187<h3><a name="V2.5.2_Interpreter"></a>Interpreter</h3><pre>
3188Fixes bugs:
3189	- gs_run_string used gs_user_errors (a global) rather than
3190user_errors (its argument) to control error handling.  (This does not
3191affect normal operation of Ghostscript, only use as a server.)
3192	- eexec popped the top element of the dictionary stack
3193afterwards even if the encrypted code had pushed something onto it.
3194This caused problems for some badly written PostScript code.
3195	- The printed form of real numbers didn't always include a
3196decimal point, causing compatibility problems.
3197
3198Makes -s and -d work for device properties.
3199
3200Increases the cache limit on large-memory systems.
3201
3202Adds a check to ensure that the revision of gs_init.ps matches that
3203of the interpreter.
3204
3205Adds the .knownget operator.
3206
3207</pre><h3><a name="V2.5.2_Library"></a>Library</h3><pre>
3208Fixes bugs:
3209	- The raster computation in clist_render_init, and the
3210computation of state_size in clist_open, didn't widen an operand to
3211long, leading to possibly incorrect operation for 24-bit-per-pixel
3212printers on MS-DOS systems.
3213	- The flatness was set too large for Type 1 characters,
3214leading to visible straight edges instead of curves at large sizes.
3215	- Type 1 fonts that contained out-of-range coordinates would
3216produce garbled output.  (This was not a problem with the standard
3217Ghostscript fonts, or with Adobe Type Manager fonts.)
3218	- gschar0.c wouldn't compile, because it referred to a
3219non-existing structure member penum-&gt;chr.  (This had no effect on
3220Ghostscript's operation.)
3221	- The curve flattener required line segments to be no more
3222than 8 x the flatness in length, leading to an enormous number of
3223segments.
3224	- pathforall would cause an addressing fault if the path
3225consisted of only a moveto.
3226
3227Refactors some header files so that std.h is always included before
3228any system header file that might include sys/types.h.
3229
3230Adds logic for removing top and bottom blank rows in cached
3231characters.  (This is the beginning of compression for the cache.)
3232
3233Changes the arguments of memswab2/4 from char * to byte *, for more
3234accurate type conformance.
3235
3236</pre>
3237
3238<h2><a name="Version2.5.1"></a>Version 2.5.1 (9/11/92)</h2>
3239
3240<p>This is the usual bug fix re-release.
3241
3242<h3><a name="V2.5.1_Procedures"></a>Procedures</h3><pre>
3243Fixes bugs:
3244	- The makefile rules for compiled fonts had a circular
3245dependency.
3246	- `make begin' didn't work properly on all platforms.
3247
3248Ensures that all batch files end with a newline.  (The absence of the
3249newline was confusing the GNU diff program.)
3250
3251Documents the fact that the -dASCIIOUT switch no longer exists.
3252
3253</pre><h3><a name="V2.5.1_Utilities"></a>Utilities</h3><pre>
3254Fixes bugs:
3255	- pstoppm didn't `bind' its internal procedures.
3256	- grestoreall would undo the output device selected by
3257pstoppm.
3258
3259Changes the utilities for reading and writing Type 1 character
3260outlines so they can work with stack representations as well as
3261arrays.
3262
3263Removes the pfbtogs.ps, phonbook.ps, and showpbm.ps utilities from
3264the distribution.
3265
3266Adds a gslj utility to parallel gslp and gsdj.
3267
3268</pre><h3><a name="V2.5.1_Platforms"></a>Platforms</h3>
3269
3270<pre>
3271Adds the DeskJet 500C drivers (cdeskjet/cdj*) to the MS-DOS / Borland
3272C++, MS-DOS / Watcom C/386, and MS-Windows configurations.
3273
3274Removes the PCX file driver from the MS Windows executable, because
3275the static data segment exceeded 64K.
3276
3277Makes some changes in the Unix System V platform file (gp_sysv.c) and
3278in time_.h and unixtail.mak to accommodate the 3B1.
3279
3280</pre><h3><a name="V2.5.1_Fonts"></a>Fonts</h3><pre>
3281Fixes bugs:
3282	- The Charter-Italic font was named bchi.pfa rather than
3283bchri.pfa.
3284	- The Cyrillic fonts (cyr.gsf, cyri.gsf) were omitted from
3285the fileset.
3286	- Ghostscript incorrectly assumed that all Type 1 fonts had a
3287FontInfo dictionary.
3288	- .loadfont used false PFBDecode, so a few .PFB fonts would
3289get errors because the first eexec byte would be whitespace.
3290
3291Changes font2c and its supporting code so that compiled fonts are
3292location-independent.
3293
3294</pre><h3><a name="V2.5.1_Drivers"></a>Drivers</h3><pre>
3295Fixes bugs:
3296	- The margins for the H-P printers were still wrong.
3297	- The H-P drivers accidentally cleared the compression seed
3298row when switching compression modes.
3299	- Some of the H-P drivers used the wrong control codes for
3300skipping blank lines.
3301
3302Adds user-supported drivers for the AT&amp;T 3B1 console device, and for
3303the NEC P6+ printer.
3304
3305Updates the SunView driver with a new version supplied by a(nother)
3306user.
3307
3308Changes the X Windows driver so the Ghostscript window doesn't get
3309input focus.
3310
3311Changes the common code for the printer drivers so that if it can
3312allocate a full bitmap but there isn't at least a minimum amount of
3313memory left afterwards, it switches to banding.
3314
3315Changes the Windows driver so it handles devices with more than 8
3316bits per pixel.  (We haven't been able to test this.)
3317
3318Adds a read-only PageCount device property (for printer devices
3319only).
3320
3321Changes all Aladdin-supported drivers to clip drawing requests to the
3322((0,0), (width,height)) rectangle of device space.
3323
3324</pre><h3><a name="V2.5.1_Interpreter"></a>Interpreter</h3><pre>
3325Fixes bugs:
3326	- Closing a NullEncode filter always gave an ioerror.
3327	- If a single-character name occurred 1 character before the
3328end of an input buffer, the character would be doubled.
3329	- The procedures in gs_statd.ps didn't use "bind".
3330	- Setting the page size didn't work properly with devices
3331with rotated coordinate systems.
3332	- If an error occurred, and the error object wasn't the last
3333element of its procedure, the interpreter would re-execute the error
3334object after running the error handler.
3335	- Memory devices didn't get resized if HWSize was changed,
3336leading to out-of-bounds memory accesses.
3337
3338Moves revision and revisiondate from gs_init.ps to iinit.c.  Adds a
3339-v switch that just prints these out.
3340
3341Arranges things so that if Ghostscript is reading from a pipe (`-'
3342switch on the command line) and encounters an error, it exits with
3343status 1 rather than 0.
3344
3345Changes the interpreter interface so the caller explicitly passes a
3346pointer for storing an error object.
3347
3348</pre><h3><a name="V2.5.1_Library"></a>Library</h3><pre>
3349Fixes bugs:
3350	- The automatic adjustment of the scaling for variant paper
3351sizes caused the image to get expanded when it should have been
3352contracted, and vice versa.
3353	- The curve flattener insisted that each line segment be no
3354more than 2 x the flatness in length, leading to an enormous number
3355of segments even when not necessary for accuracy.
3356	- flattenpath and strokepath discarded a trailing moveto.
3357	- strokepath treated "0-width" lines as really having a width
3358of zero, rather than one pixel.
3359	- Buffered devices weren't closed and reopened if the amount
3360of buffer space was changed.
3361	- stroke used the line cap at the beginning of each subpath
3362even if the subpath was closed.
3363
3364Removes the requirement that the clipping rectangle fall in the
3365non-negative quadrant of device space.  (This was causing problems
3366for Ghostview, but removing it required adding the extra clipping
3367step to the drawing routines in the drivers.)
3368
3369</pre>
3370
3371<h2><a name="Version2.5"></a>Version 2.5 (8/18/92)</h2>
3372
3373<p>This version adds Type 1 hinting, CCITTFax encoding and decoding, and
3374Microsoft Windows support, as well as the usual minor improvements
3375and bug fixes.
3376
3377<h3><a name="V2.5_Procedures"></a>Procedures</h3><pre>
3378Fixes bugs:
3379	- GSIMPATH, SLZWD, and SLZWE were omitted from the VMS
3380makefiles, and GSIM2OUT was not removed.
3381	- landscap.ps messed up the current path.
3382
3383Adds new switches:
3384	-dSAFER disables file writing and directory modification.
3385	-dESTACKPRINT causes errors to print the execution stack with
3386== instead of =.
3387	-sOutputFile=&lt;string&gt; replaces -sOUTPUTFILE (which is still
3388recognized) for setting the output file or pipe for the default
3389(printer) device.
3390	-sPAPERSIZE=&lt;sizename&gt; initializes the paper size.
3391	-dBufferSpace=&lt;number&gt; sets the buffer size for the default
3392(printer) device.
3393
3394For Unix systems, changes the directories in GS_LIB_DEFAULT from
3395`pwd` to $(gsdatadir), i.e., normally $(datadir)/ghostscript, where
3396datadir is normally /usr/local/lib.
3397
3398Adds a note in the header file to the effect that the X Windows
3399driver expects to find header files in $(XINCLUDE)/X11, not in
3400$(XINCLUDE).
3401
3402Changes -q so it defines QUIET as true instead of null (so it can be
3403used in the middle of the command line as well as at the beginning).
3404
3405Renames the history.doc file as NEWS.
3406
3407</pre>
3408
3409<h3><a name="V2.5_Utilities"></a>Utilities</h3>
3410
3411<h3><a name="V2.5_Platforms"></a>Platforms</h3><pre>
3412Fixes bugs:
3413	- The stack size was not getting increased on the Watcom
3414platform.
3415
3416Removes "b" from the scratch file opening modes in gp_unix.c and
3417(conditionally) in gdevprn.c, to pacify the DECstation Ultrix system.
3418
3419Adds a makefile (bcwin.mak) and a platform file (gp_mswin.c) for
3420Microsoft Windows.
3421
3422On MS-DOS platforms (including Windows), uses the TEMP environment
3423variable to designate the directory for scratch files.
3424
3425Changes std.h so that the VMS C compiler uses function prototypes and
3426'const'.
3427
3428Changes the VMS cc makefile so it doesn't use ansi2knr.
3429
3430</pre><h3><a name="V2.5_Fonts"></a>Fonts</h3><pre>
3431Fixes bugs:
3432	- findfont left an extra entry on the stack if it couldn't
3433find the default font.
3434
3435Renames bchi, ncri, and puti as bchri, ncrri, and putri, to conform
3436with the naming scheme for other fonts.
3437
3438Adds $(CCFLAGS) to the command line used for compiling fonts.
3439
3440Converts the .pfa fonts (CharterBT, IBM Courier, and Utopia) to .gsf,
3441by removing eexec encryption and also removing some mysterious
3442unmapped characters from Courier.  This makes these fonts work with
3443DISKFONTS.
3444
3445Changes the implementation of compiled fonts so they are read-only
3446and sharable (no external references).  (They are, however, not
3447position-independent.)
3448
3449Provides a way to use compiled fonts on platforms that limit the
3450number of characters in an identifier.
3451
3452Adds public-domain Cyrillic and Cyrillic-Italic fonts.
3453
3454Adds a 'userdict begin' to .loadfont, because Type 3 fonts produced
3455by Fontographer expect a writable dictionary on the top of the stack.
3456
3457Changes definefont for Type 1 fonts to insert UnderlinePosition and
3458UnderlineThickness entries in FontInfo if they are absent, because
3459many word processors incorrectly assume these entries are present.
3460
3461</pre><h3><a name="V2.5_Drivers"></a>Drivers</h3><pre>
3462Fixes bugs:
3463	- The documentation in use.doc said that the densities for
34649-pin Epson printers were 60x60 to 240x60, rather than 60x72 to
3465240x72.
3466	- gdevprn.c smashed one byte beyond the end of the string
3467given as the OutputFile device property.
3468	- The X11 driver used XVisualIDFromVisual, which is not
3469defined in X11R3.
3470	- The SunView driver modified the input data, which was
3471declared as const.
3472	- The LaserJet IIP and III drivers shifted the page 185
3473pixels to the left and 0.25" down, because the initialization string
3474was incorrect.
3475	- The PCX driver wrote 16-bit values using the byte ordering
3476of the platform, rather than always LSB first.
3477	- For vertical spacing, the LaserJet and DeskJet drivers used
3478a command that spaces N/300", rather than N scan lines, but gave it a
3479parameter in scan lines.
3480	- The VESA driver didn't allocate a full 256-byte buffer for
3481reading the mode information from the BIOS, causing the stack to get
3482smashed by newer VESA implementations.
3483	- The VESA driver didn't use the scan line length returned by
3484the BIOS, causing garbage output for some cards and some resolutions.
3485	- The generic printer driver didn't free the bitmap when
3486closing the device, if it fit entirely in memory.
3487	- The PaintJet driver allocated its data areas on the stack
3488instead of with gs_malloc.
3489	- The generic printer driver didn't attempt to increase the
3490buffer size if it was too small.
3491	- The band list driver didn't split large bitmaps properly,
3492leading to garbled characters at high resolutions.
3493	- The GIF and PCX drivers used a color map that often turned
3494gray colors into non-grays.
3495
3496Changes the default put_props procedure so that if the device is
3497open, setting HWSize and/or HWResolution closes the device and
3498reopens it.
3499
3500Adds a driver for Microsoft Windows 3.n.
3501
3502Updates the 'cdj' and 'dj500c' DeskJet 500C drivers with new versions.
3503(This are user-contributed drivers.)
3504
3505Changes gdev_prn_put_props so OutputFile can be changed dynamically.
3506
3507Updates the DEC LN03 driver to also handle the LA50 and LA75.  (This
3508is a user-contributed driver with a FSF copyright.)
3509
3510Changes the LaserJet/DeskJet driver so that -DA4 in the makefile
3511makes A4 paper the default.  The driver now also sends an appropriate
3512page size selection command to the printer if the printer supports it.
3513
3514Changes all the Aladdin-supported drivers to return appropriate error
3515codes rather than -1.
3516
3517Adds a driver for the S3 86C911, a PC graphics accelerator used in
3518the popular Diamond Stealth board.  This is the first driver that
3519uploads character bitmaps to a device; others will probably follow.
3520
3521Adds user-supplied code to the Epson driver so it will do triple
3522passes on 9-pin printers for higher resolution.
3523
3524Adds user-supplied code for the PaintJet XL to the PaintJet driver.
3525
3526</pre><h3><a name="V2.5_Interpreter"></a>Interpreter</h3><pre>
3527Fixes bugs:
3528	- zdps1.c didn't include alloc.h.
3529	- On 32-bit systems, if maxlength of a dictionary was less
3530than the actual allocated space, length could become larger than
3531maxlength.
3532	- flushfile didn't actually flush data when reading.
3533	- The ASCII85Decode filter signalled EOF prematurely.
3534	- The scanner interpreted .3D.glorp as the number 0.3, rather
3535than as a name.
3536	- Closing a file freed the stream structure, creating
3537dangling references if there were other file objects pointing to the
3538same stream.
3539	- eexec called handleerror if an error occurred, instead of
3540letting the error propagate to an enclosing stopped.
3541	- gs.h made perror illegal, instead of defining it in terms
3542of strerror.
3543	- One-character names weren't being allocated at
3544initialization, so they could be left dangling after a restore.
3545	- Internal gsaves (i.e., the ones in show and setcachedevice)
3546didn't also save istate, so setfont inside a BuildChar procedure
3547might cause the font outside to get changed.
3548	- The allocator incorrectly freed objects in the current
3549chunk that were older than the current save.
3550	- mark was just an object, rather than an operator, so 'bind'
3551didn't bind it.  (This is theoretically a problem for null, true, and
3552false also, but even more unlikely to be a problem in practice.)
3553	- packed_get didn't cast packed integers to int, so negative
3554integer elements of packed arrays came out wrong.
3555	- quit just did a gs_exit, instead of returning to the driver
3556in an orderly way.
3557	- Because check_type_access checked for errors in the wrong
3558order, sometimes type errors were reported as access errors.
3559	- eq didn't check for stack underflow.
3560	- Some of the stream_procs structures weren't properly
3561declared const, leading to link errors on VMS.
3562
3563Implements currentcolor, currentcolorspace, setcolor, and
3564setcolorspace (for DeviceGray, DeviceRGB, and DeviceCMYK only).
3565
3566Implements the dictionary form of image and imagemask.  All the pairs
3567in the Decode array must be the same; Interpolate is ignored.  The
3568only supported color spaces are DeviceGray, DeviceRGB, and
3569DeviceCMYK.
3570
3571Implements files as allowable sources for the image operators.
3572
3573Removes the index field from the name structure, moving it to the
3574'size' field of name refs.
3575
3576Changes the unread/sungetc operation to require that the character be
3577the same as the last one read from the file.
3578
3579Adds fflush calls to some debugging printout routines, because Unix
3580sometimes buffers terminal output.
3581
3582Implements the CCITTFaxEncode and CCITTFaxDecode filters.  Implements
3583the general case of the SubFileDecode filter.
3584
3585Changes definefont to treat a UniqueID of 0 as equivalent to no
3586UniqueID, because Fontographer output apparently often violates the
3587specification in this way.
3588
3589Changes the default printer screen from 32.5 to 46 cells/inch.  (The
3590old value was appropriate for a hand-rotated cell with two spots in
3591it.)
3592
3593Changes the utility routines to allow an integral real wherever an
3594integer parameter is expected in a dictionary, because Fontographer
3595produces fonts that violate the Adobe specification in this way.
3596
3597Adds a `dosio' feature that provides direct access to memory and to
3598I/O ports under MS-DOS.  (This feature is not included in the
3599standard executables, of course.)
3600
3601Changes the default character cache limit to a 1/4" x 1/4" character
3602at the default resolution, rather than basing it on the preallocated
3603cache size.
3604
3605Removes support for t_color objects, which haven't actually been used
3606for several releases.
3607
3608Implements setcmykcolor and currentcmykcolor as operators, so they
3609will interact properly with setcolorspace and currentcolorspace.
3610
3611Changes the name of the file.h header file to files.h, to work around
3612a bug in the VMS header library.
3613
3614Adds command line switches @file (to treat file as more command line,
3615to get around the DOS 128-character command line limit) and -ffile
3616(so one can specify file names that begin with - or @).
3617
3618Changes the PFBDecode filter so it takes an additional boolean that
3619says whether or not to convert binary packets to hex.  (Conversion to
3620hex and back to binary accounted for a substantial amount of the time
3621required to load .PFB fonts.)
3622
3623Splits off `copydevice' as a separate operator again.
3624
3625</pre><h3><a name="V2.5_Library"></a>Library</h3><pre>
3626Fixes bugs:
3627	- In the VMS environment, string_.h used its own prototypes
3628for the str... and mem... functions instead of &lt;string.h&gt;
3629	- gx_alloc_char_bits declared cdsize as long, but didn't
3630shorten it when passing it to shorten_cached_char.
3631	- Stroking didn't suppress fattening of the lines.
3632	- kshow didn't update the cached CTM information in the show
3633enumerator when returning from the callout, so further characters
3634could get drawn in the wrong place.
3635	- When a memory device returned its initial matrix, it
3636smashed the padding fields, which contained the interpreter's type
3637information.
3638	- setcachedevice didn't set the initial matrix in the cache
3639memory device.
3640	- image_set_rgb (in the image operators) didn't do a
3641gx_color_from_rgb, so in principle one could sometimes get incorrect
3642colors in an image.
3643	- The decision about whether or not to cache a character
3644bitmap incorrectly compared the character size against cmax rather
3645than cdata_size.
3646	- show didn't reset the in_cachedevice flag in the graphics
3647state, so characters rendered by a recursive show were never cached.
3648	- clip and eoclip didn't release the intermediate flattened
3649clip path, causing memory to be lost.
3650	- The tile_diff routine didn't handle the case of two
3651identical tiles properly; this produced garbage in the band list
3652file.
3653	- stringwidth didn't round the character origin to an
3654integral pixel; this interacted badly with hinting, causing
3655improperly hinted characters to wind up in the cache.
3656	- Bitmaps (including characters) were displaced, as well as
3657being clipped, if they intersected the top of a clipping region.
3658	- In gxclist and gdevmem1, the raster computation (although
3659not the result) could overflow an int on 16-bit machines.
3660
3661Implements decoding (sample mapping) for image and imagemask.
3662
3663Implements hinting for Type 1 fonts, based on (but not copying) the
3664algorithms from the X11R5 tape.
3665
3666Changes curve rasterizing to use sampling, rather than recursive
3667subdivision, for characters.  This produces noticeably better output.
3668Speed penalty for non-cached characters is less than 10% at display
3669resolutions, up to 50% for 300 dpi printers.
3670
3671Implements gs_setcmykcolor and gs_currentcmykcolor.  These are
3672semi-fake, since they simply convert the color to and from RGB, but
3673the former does set the current color space properly.
3674
3675Changes clipping regions so they use the any-part-of-pixel rule
3676rather than the center-of-pixel rule.  This helps avoid dropouts when
3677using very small regions.
3678
3679Implements stroke adjustment.
3680
3681</pre>
3682
3683<hr>
3684
3685<h2><a name="Version2.4.2"></a>Version 2.4.2 (5/8/92)</h2>
3686
3687<p>
3688This is another quick release.  It finally fixes rotated halftone
3689screens, and cleans up a few minor problems from 2.4.1.
3690
3691<p>
3692This release is being distributed only to beta testers and commercial
3693licensees, since I don't want to be distracted from working on 2.5.
3694
3695<h3><a name="V2.4.2_Procedures"></a>Procedures</h3><pre>
3696Fixes bugs:
3697	- UTRACE still appeared in the VMS makefiles.
3698	- The support files (*.bat, *.doc, *.gsf, *.ps, Fontmap,
3699COPYING, README) weren't included in the MS-DOS tar file.
3700	- The Unix install script didn't install landscap.ps.
3701
3702Replaces the type1imagepath operator with PostScript code (impath.ps,
3703type1ops.ps) based on the new .imagepath operator.
3704
3705Renames LICENSE as COPYING.
3706
3707</pre><h3><a name="V2.4.2_Utilities"></a>Utilities</h3><pre>
3708Fixes bugs:
3709	- pcharstr.ps had an occurrence of Subrs rather than /Subrs,
3710causing it to not print the Subrs, or to get an error if there were
3711none.
3712	- font2c.ps didn't get the const declarations for string
3713dictionaries quite right.
3714	- The missing newline at the end of gsbj.bat confused GNU
3715diff.
3716	- ansi2knr would go into an infinite loop if a statement
3717exceeded its internal buffer size.
3718	- Compiled fonts would get processed by ansi2knr, which
3719messed them up.
3720
3721</pre><h3><a name="V2.4.2_Platforms"></a>Platforms</h3><pre>
3722Fixes bugs:
3723	- Ghostscript didn't supply equivalents for rename and
3724gettimeofday, which some System V platforms lack.
3725	- The missing newline at the end of gp_dosfb.c confused GNU
3726diff.
3727
3728Changes the Borland makefiles so that stack checking is only enabled
3729if DEBUG or TDEBUG is set.
3730
3731</pre><h3><a name="V2.4.2_Fonts"></a>Fonts</h3>
3732
3733<pre>
3734Changes the names of the Utopia fonts from utrg/utb/utbi/uti to
3735putr/putb/putbi/puti, for consistency with the rest of the font names.
3736Changes cour/courb/courbi/couri to ncrr/ncrb/ncrbi/ncri likewise.
3737
3738Replaces the Charter fonts with the CharterBT fonts donated by
3739Bitstream to the X11R5 distribution.
3740
3741Adds font aliasing capability to Fontmap.  Replaces
3742Courier-[Bold]Oblique and ZapfChancery-MediumItalic by aliases.
3743
3744Changes the FontBBox of the Hershey fonts to be an executable, rather
3745than a literal, array.
3746
3747</pre><h3><a name="V2.4.2_Drivers"></a>Drivers</h3><pre>
3748Fixes bugs:
3749	- The GIF driver omitted a `private' on the definition of
3750gif_print_page.
3751	- The GIF driver wrote 16-bit values using the byte ordering
3752of the platform, rather than always LSB first.
3753	- George Cameron's DeskJet 500C driver had an incorrect
3754control sequence for skipping blank lines.
3755
3756Adds 'const' in many places, including the tile and bitmap arguments
3757of the tile_rectangle, copy_mono, and copy_color driver routines.
3758THIS IS A DRIVER INTERFACE CHANGE.  (Printer drivers are not
3759affected, since they don't implement these routines.)
3760
3761Adds a driver for the Trident TVGA.
3762
3763</pre><h3><a name="V2.4.2_Interpreter"></a>Interpreter</h3><pre>
3764Fixes bugs:
3765	- alloc_free sometimes incorrectly chose to put an unaligned
3766block in an old segment on a freelist.
3767	- The default undercolor removal function returned its
3768argument rather than returning 0.
3769
3770Adds NullEncode and SubFileDecode to the standard filters, since
3771bdftops uses the latter.
3772
3773Adds RunLengthEncode and RunLengthDecode to the optional filters.
3774
3775Removes the type1imagepath operator.  (It is still available as
3776PostScript code, impath.ps.)  Replaces it with a simpler outline
3777tracing operator .imagepath.
3778
3779Adds 'const' in many places.
3780
3781Makes fileposition (but not setfileposition) legal for NullEncode
3782filters.
3783
3784Changes the default transfer function for high-resolution devices
3785from the identity function to the square root function.
3786
3787Moves array_get from zgeneric.c to iutil.c.
3788
3789Changes uses of fopen to add a "b" to the access mode, rather than
3790relying on the _fmode global variable on MS-DOS platforms.
3791
3792Allows use of the -Z switch even when gsmain.c wasn't compiled with
3793-DDEBUG, since other modules might have been.
3794
3795Reorganizes gs.c and gsmain.c so that the latter can be used in
3796server environments.
3797
3798Replaces all uses of stdin/out/err with gs_stdin/out/err.
3799
3800Makes the number of permanent entries on the dictionary stack a
3801parameter, to allow inserting globaldict in the future.
3802
3803Changes BlueShift in the Type 1 font Private dictionary to allow real
3804numbers.  (This differs from the Adobe specification, but at least
3805one commercial font has a real number for BlueShift.)
3806
3807</pre><h3><a name="V2.4.2_Library"></a>Library</h3><pre>
3808Fixes bugs:
3809	- The doubling check in init_ht (gxht.c) still sometimes
3810thought there was enough room to double the tile when there actually
3811wasn't.
3812	- Rotated halftone screens didn't work.
3813	- gxarith.h used #ifdef vax, rather than #if
3814!arch_floats_are_IEEE, to test whether IEEE floats were being used.
3815	- pathforall didn't report a trailing moveto.
3816
3817Replaces gs_type1imagepath with gs_imagepath.
3818
3819Allows sOUTPUTFILE=-, meaning output to stdout.
3820
3821Adds 'const' in many places.
3822
3823Replaces all uses of stdin/out/err with gs_stdin/out/err.
3824
3825</pre>
3826
3827<h2><a name="Version2.4.1"></a>Version 2.4.1 (4/21/92)</h2>
3828
3829<p>This is a quick release to fix minor problems discovered in 2.4, and
3830to add a few improvements that didn't quite make it into 2.4.  It
3831also adds GIF and PCX file support.
3832
3833<h3><a name="V2.4.1_Procedures"></a>Procedures</h3><pre>
3834Fixes bugs:
3835	- Some makefile dependencies, and the ccgs script, caused trouble
3836for parallel versions of `make'.
3837	- Compiling genarch with -O with gcc on the RS/6000 produced a
3838buggy executable.
3839
3840Fixes some minor problems in make.doc.
3841
3842Adds DEVICE_DEVS2..5 to handle long device lists.
3843
3844Removes the need to set GS_RUN_EXE when using the Watcom compiler on
3845MS-DOS systems.
3846
3847Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps.
3848
3849Gets rid of gconfig.ps; this information is now compiled in gconfig.c.
3850
3851</pre><h3><a name="V2.4.1_Utilities"></a>Utilities</h3><pre>
3852Fixes bugs:
3853	- The palette for pstoppm in 8-bit mode didn't contain all 8
3854primary colors.
3855	- font2c used just values_ to mean &amp;values_[0]; some compilers
3856couldn't handle this.
3857
3858Makes font2c insert `const' in many appropriate places.
3859
3860</pre><h3><a name="V2.4.1_Drivers"></a>Drivers</h3><pre>
3861Fixes bugs:
3862	- The SunView driver had not been updated properly for 2.4 and was
3863pretty thoroughly broken.
3864	- None of the printer drivers worked properly with the Watcom
3865compiler, because stdprn was doing \n -&gt; \r\n substitution.
3866	- If the generic printer driver couldn't allocate the requested
3867size command list buffer, it gave up rather than trying to allocate a
3868smaller buffer.
3869	- The SuperVGA drivers (except for the VESA driver) didn't
3870work with the Watcom compiler, because a couple of places in the
3871drivers weren't truncating the offset of "segmented" pointers
3872properly.
3873	- Some of the H-P used &lt;esc&gt;*b#Y rather than &lt;esc&gt;*p+#Y for
3874vertical positioning; this apparently is wrong, at least for the
3875LJIIp.
3876
3877Removes the dependence of the X Windows driver on Xt, Xext, and Xmu.  As a
3878result, Ghostscript will not install a standard colormap itself, but it
3879will use one if one is already installed.
3880
3881Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file
3882formats.
3883
3884Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX
3885file formats.
3886
3887Adds drivers for monochrome and 256-color GIF file formats.
3888
3889</pre><h3><a name="V2.4.1_Fonts"></a>Fonts</h3><pre>
3890Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
3891
3892</pre><h3><a name="V2.4.1_Interpreter"></a>Interpreter</h3><pre>
3893Fixes bugs:
3894	- A value with l_new set could 'escape' to save level 0 on a
3895stack; if stored, it prevented the slot from being saved and restored
3896properly.
3897	- 16#7fffffff + 1 gave the floating point equivalent of -2^31, not
38982^31.
3899	- The PFBDecode filter computed the packet length incorrectly if
3900the 0x8000-bit of the length was set.
3901	- 5-byte numbers in Type 1 CharStrings complained of a rangecheck
3902if they exceeded 16 bits, rather than if they exceeded the integer part of
3903a fixed.
3904	- (, ), and \ appearing in file name arguments in the command
3905line did not work properly.
3906
3907Adds 'const' in many places.
3908
3909Changes the random number generator to be the same as the one used in
3910Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript).
3911
3912Exits with code 1 rather than code 0 on an unrecoverable error detected at
3913the PostScript level.
3914
3915Makes dictionaries expand automatically when they fill up.
3916
3917Adds gp_exit to complement gp_init.
3918
3919Changes dictionaries to always allocate a power of 2 entries on
392032-bit machines.  Changes the name table to allocate indices
3921scattered, so dictionary lookup doesn't have to do a multiply to
3922scramble the index.
3923
3924Changes the handling of currentfile to do "shallow binding" so stack
3925searching is almost never required.
3926
3927</pre><h3><a name="V2.4.1_Library"></a>Library</h3><pre>
3928Fixes bugs:
3929	- arc and arcn got a numeric exception if the radius was zero.
3930	- The undocumented 15 opcode in Type 1 fonts wasn't ignored.
3931	- PaintType 3 wasn't allowed.  (It isn't clear what it should
3932mean; we treat it as equivalent to 0.)
3933	- The VAX/VMS C compiler was generating incorrect code for the
3934chi_bits and cmask macros in gdevmem, producing incorrect output.
3935	- If the result of the slow algorithm for intersecting clipping
3936paths was a rectangle, the wrong thing happened (cbox didn't get set).
3937	- gx_path_is_rectangle didn't recognize open rectangles.
3938	- clist_change_tile didn't check properly whether the tile
3939size had changed, so changing the screen could produce invalid band
3940files.
3941	- The image operators did the wrong thing in the 1-for-1
3942case, interleaving N bytes of data with 7*N bytes of garbage.
3943	- stroke sometimes handled bevel and miter joins wrong in
3944reflected coordinate systems.
3945	- init_ht checked incorrectly whether there was enough room
3946to Y-replicate tiles, so sometimes it did it when it shouldn't have.
3947	- stroke sometimes thought lines were thin when they weren't.
3948
3949Adds 'const' in many places.
3950
3951Adds support for 2- and 4-bit-per-pixel memory devices.
3952
3953</pre>
3954
3955<h2><a name="Version2.4"></a>Version 2.4 (3/25/92)</h2>
3956
3957<p>This is a major release that adds SuperVGA support, support for
3958Metrics,
3959settable device properties, and incremental font loading.  It also
3960includes important performance improvements, based on rewrites of some key
3961algorithms, and quite a few new Level 2 / Display PostScript facilities.
3962
3963<h3><a name="V2.4_Procedures"></a>Procedures</h3><pre>
3964Fixes bugs:
3965	- The rule for compiling gconfig.c didn't include the -I switches.
3966	- .bat files were being distributed with a \n line terminator
3967rather than \r\n.
3968	- A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS
3969command files.
3970	- Unix systems couldn't handle multiple drivers with overlapping
3971sets of files.
3972	- -s&lt;name&gt; defined &lt;name&gt; as a null, rather than as an empty string.
3973
3974Adds gconfig.ps to the list of needed configuration files.
3975
3976Changes the way that the makefile handles nested .h files, so that it
3977doesn't have to `touch' them.
3978
3979Adds the loadallfonts procedure to gs_fonts.ps.
3980
3981Changes the standard DOS configuration to include VGA, EGA, VESA, Epson,
3982BubbleJet, and H-P printer drivers.
3983
3984Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak.
3985
3986Adds a USE_ASM flag so that one can build a DOS version of Ghostscript
3987without having an assembler.
3988
3989Splits off common code from the two MS-DOS makefiles into tccommon.mak.
3990
3991Replaces the COPYING and LICENSE files with a new LICENSE file containing
3992version 2 of the GNU General Public License.
3993
3994Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no
3995longer needed.
3996
3997Adds a GS_DEVICE environment variable to supply a default device name if
3998desired.
3999
4000Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and
4001unix-[g]cc.mak, for other ANSI C compilers.
4002
4003Changes the way that optional features are defined in the makefiles, so
4004that they actually work.
4005
4006Adds support for the Watcom C/386 compiler.
4007
4008Allows # in the command line as equivalent to =, to compensate for
4009brain-damaged MS-DOS shell.
4010
4011Adds -sOUTPUTFILE= to set the output file or pipe.
4012
4013Adds -dWRITESYSTEMDICT to leave systemdict writable.
4014
4015</pre><h3><a name="V2.4_Utilities"></a>Utilities</h3><pre>
4016Fixes bugs:
4017	- pcharstr.ps insisted on having Subrs be present in the font.
4018	- pcharstr.ps decoded negative numbers between -108 and -1131
4019incorrectly.
4020	- pfbtogs.ps didn't handle packets longer than 64K correctly.
4021
4022Changes the bdftops utility so that it makes entries for UnderlinePosition
4023and UnderlineThickness in FontInfo, and so that it always records a
4024FullName (the FontName if no other is provided).
4025
4026Changes the name of the pfbtops utility to pfbtogs, because groff already
4027includes a program called pfbtops.
4028
4029Adds the gslp utility for doing "line printing" of text files, similar to
4030enscript + lpr.
4031
4032Adds a new variable DITHERPPI that enables a different dither pattern,
4033claimed to be better for printers.
4034
4035Adds the font2c utility for compiling Type 1 fonts into C, so they can be
4036linked into an executable rather than loaded dynamically.
4037
4038</pre><h3><a name="V2.4_Drivers"></a>Drivers</h3><pre>
4039Fixes bugs:
4040	- gdev_prn_copy_scan_lines was erroneously masking the last byte
4041of data even on color printers, as was paintjet_print_page.
4042	- The TruFax driver had a couple of compilation errors, since it
4043hadn't been compiled in a while.
4044	- The BGI driver sometimes didn't consult BGIPATH when looking for
4045.BGI files.
4046	- initclip did the wrong thing with memory devices.
4047	- The BGI driver didn't look in BGIDIR for .BGI files.
4048	- The Epson driver didn't set the right margin properly with
4049ESC+Q.
4050	- The BJ-10e driver was badly broken.
4051	- gdev_prn_open/close_printer didn't reset the command list file,
4052so it was taking quadratic time to print multi-page documents.
4053
4054Adds color to the SunView driver.
4055
4056Adds selectable resolution (75, 100, 150, or 300 DPI) to the
4057DeskJet/LaserJet driver.
4058
4059Changes gssetdev so that drivers can specify special libraries to be
4060loaded, as well as object files.
4061
4062Adds a driver for VESA-compliant SuperVGA displays.  This driver handles
4063all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode.  The
4064default is VGA resolution (640 x 480).
4065
4066Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards
4067using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and
4068the Orchid ProDesigner II (256-color modes only).
4069
4070Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600,
407116-color modes (for cards with only 256K of memory).
4072
4073Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II,
4074and H-P DeskJet 500C printers.
4075
4076Adds Tim Theisen's Ghostview changes to the X11 driver.
4077
4078MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as
4079follows:
4080
4081	- Changes map_rgb_color and map_color_rgb to always work in a
4082	    16-bit color value space, rather than a space defined by the
4083	    maximum number of distinct colors provided by the device.
4084
4085	- Adds an argument to the output_page procedure to indicate
4086	    whether the procedure is being called for copypage or
4087	    showpage, and a num_copies argument.
4088
4089	- Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that
4090	    drivers can cache bitmaps in the server or device if they want
4091	    to.
4092
4093	- Removes fill_trapezoid and tile_trapezoid.
4094
4095	- Adds a new get_bits procedure for reading the bits back from the
4096	    driver buffer (when possible), replacing copy_scan_lines.
4097	    This procedure takes a new argument describing padding and
4098	    byte swapping, and returns a different value from
4099	    copy_scan_lines.
4100
4101	- Adds get_props and put_props procedures for accessing arbitrary
4102	    additional properties of devices.  The interface is quite
4103	    complex, but provides a great deal of flexibility.
4104
4105See drivers.doc for details.
4106
4107Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line.
4108
4109Adds a user-contributed driver for DigiBoard, Inc.'s fax software.
4110
4111</pre><h3><a name="V2.4_Fonts"></a>Fonts</h3>
4112
4113<pre>
4114Changes Type1BuildChar so it uses the information from the Metrics
4115dictionary in the font, if Metrics is present.
4116
4117Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them
4118directly.  Also changes .loadfont to disable packing temporarily, because
4119some fonts rely on procedures being writable (!).
4120
4121</pre><h3><a name="V2.4_Interpreter"></a>Interpreter</h3><pre>
4122Fixes bugs:
4123	- The hypot function is not available on some Unix systems.
4124	- Ghostscript didn't flush and close files when exiting.
4125	- In statusdict, the /margins procedure used .leftmargin, but
4126/setmargins used .lmargin.
4127	- An out-of-range putinterval would simply do nothing, rather than
4128reporting an error.
4129	- If an attempt to allocate a block larger than the allocator's
4130chunk size (20K) failed, the allocator would erroneously think it had
4131succeeded.
4132	- The bind operator made the top-level procedure read-only, as
4133well as interior procedures.
4134	- gs.c copied 1 extra character for the value of strings defined
4135on the command line with -s...=, which could smash the first byte of the
4136next object in memory.
4137	- copying a dictionary erroneously required the maxlength of the
4138destination to be greater than or equal to the maxlength of the source,
4139rather than the length of the source.
4140	- undef didn't correctly decide when to mark a deleted entry as
4141deleted vs. free; as a result, some keys couldn't be looked up properly
4142after an undef.
4143	- type1encrypt and type1decrypt didn't set the size of the result
4144properly.
4145	- cvi and cvr didn't allow leading or trailing whitespace in
4146strings.
4147	- cvs didn't cause an error if the destination string was too
4148short.
4149	- Many operators didn't check correctly for stack underflow (off
4150by 1).
4151	- `for' used reals, rather than integers, if the limit was a real,
4152even if the initial value and increment were integers.
4153	- `restore' didn't properly invalidate copies of the save object
4154being restored from; `save dup restore restore' would crash.
4155	- `restore' sometimes didn't undo stores into matrices that were
4156stored into by operators.  (The identity matrix always had l_new set.)
4157	- readline gave a rangecheck if the input line exactly filled the
4158string.
4159	- `--' as the last switch on the command line caused a crash
4160rather than an error message.
4161	- On MS-DOS systems, filenameforall didn't handle patterns with a
4162drive or directory specifier properly.
4163	- stroke sometimes called gz_draw_line_fixed even if the line went
4164outside the clipping box by 1 pixel.
4165
4166Changes the loop that binds procedure "operators" to entirely disable the
4167handling of the typecheck error, rather than to use stopped.  This cuts
4168initialization time significantly, and also eliminates about 35K of wasted
4169space (for saving the stacks).
4170
4171Changes the version "operator" so it returns 47.0.  Adds "revision" to
4172define the Ghostscript version # x 100.
4173
4174Adds gscurrentresolution and gssetresolution procedures for getting and
4175setting the device resolution.
4176
4177Adds -r&lt;res&gt; and -r&lt;xres&gt;x&lt;yres&gt; as command line options for setting
4178device resolution.
4179
4180Adds a facility for incrementally loading the individual CharStrings of a
4181Ghostscript font from the disk.  This can save a lot of memory, at the
4182expense of slower rendering.  (It is intended primarily for MS-DOS
4183systems.)
4184
4185Changes findlibfile to return the name of the file that was actually
4186opened, as well as the file itself, when the operation succeeds.
4187
4188Changes the name of the main entry to the interpreter from interpret to
4189gs_interpret, because of a conflict with a Data General library procedure.
4190
4191Adds the .setmetrics operator to set the metrics for the current
4192character for Type 1 fonts.
4193
4194Adds more LaserWriter-specific entries to statusdict.
4195
4196Gives names to all the internal `operators', so they will print out
4197reasonably when an error occurs.
4198
4199Extends the status operator to accept a string and return file
4200information, as defined for Level 2 PostScript.
4201
4202Adds the filter operator and some specific filters: ASCII85Encode,
4203ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode,
4204PFBDecode, and the null case of SubFileDecode.
4205
4206Extends the scanner to recognize the Level 2 &lt;&lt; and &gt;&gt; tokens.
4207
4208Adds a facility for extracting the text strings from a PostScript file and
4209writing them out in a simple format (selected by -dASCIIOUT, implemented
4210by gs_2asc.ps).
4211
4212Implements all of the remaining Display PostScript facilities that are
4213also in Level 2 (i.e., everything in section A.1.3 of the PostScript
4214Language Reference Manual, Second Edition, that is not also in section
4215A.1.2).  The virtual memory operations are all stubs; the new halftone
4216options are not fully implemented.
4217
4218Changes makeimagedevice to use a string of gray or RGB values, rather than
4219an array of color objects, to specify the palette.  Removes
4220currentgscolor and setgscolor from the interpreter, but leaves t_color
4221objects in, since they may be useful later.
4222
4223Adds getdeviceprops and putdeviceprops for manipulating device properties.
4224Currently defined properties for all devices: InitialMatrix, HWResolution,
4225HWSize, Name.  Currently defined properties for printers: BufferSpace,
4226MaxBitmap, OutputFile.  OutputFile allows |command for piping on Unix
4227systems.
4228
4229Removes deviceparams and makedevice.  Adds devicedefaultmatrix.
4230
4231Implements reversepath.
4232
4233Makes copy work on devices.
4234
4235MS-DOS specific
4236- - - - - - - -
4237
4238Fixes bugs:
4239	- iutilasm.asm wouldn't assemble with newer versions of MASM if
4240CPU_TYPE was set to 286 or above.
4241	- CPU_TYPE=386 didn't properly substitute the faster
4242multiply/divide routines under Turbo C++ or Borland C++, only under the
4243original Turbo C.
4244
4245</pre><h3><a name="V2.4_Library"></a>Library</h3><pre>
4246Fixes bugs:
4247	- A curve whose first and last points were the same wouldn't get
4248drawn at all.
4249	- A bug in the Turbo C++ compiler generated bad code when shifting
4250a long right by 1 bit.
4251	- If stroking a dashed line ever encountered a segment that was
4252completely blank, Ghostscript would indirect through a null pointer.
4253	- arc and arcn gave an error if the radius was negative.
4254	- stroke always used the general algorithm, even if the line was
4255guaranteed to be thin.
4256	- arc and arcn erroneously reduced the angles mod 360.
4257	- Very large or negative 32-bit numbers in Type 1 fonts didn't
4258work properly on MS-DOS systems (the ff0000 bits got set to zero).
4259	- Color printer devices rendering entirely in memory only
4260allocated a monochrome-sized bitmap.
4261	- clip and eoclip didn't intersect the paths properly in the
4262general case.
4263	- charpath erroneously rounded the current point to an integral
4264value, causing characters to be spaced improperly.
4265	- The definition of max_color_param got some compilers confused.
4266	- charpath always used quadratic time and space, and dropped all
4267but the last character when used with a Type 3 font.
4268	- Stroking a path with a 180 degree angle would incorrectly miter
4269instead of beveling.
4270	- Type 1 fonts used the current flatness for curves, which could
4271produce bad (and inconsistent) results.
4272	- Stroking a degenerate line segment produced incorrect results.
4273
4274Changes the character cache to use the UniqueID as the key, when
4275available, instead of the font pointer.  This dramatically improves
4276performance when fonts are getting removed and reloaded because of page
4277isolation with save/restore.
4278
4279Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c.
4280
4281Changes the Type 1 interpreter so that it rounds line and curve endpoints
4282to the center of the nearest half-pixel, and omits null line segments.
4283This both speeds up rendering at small sizes and improves output quality.
4284
4285Changes gs_deviceparams to return resolution as well as extent; changes
4286gs_makedevice to accept resolution as well as extent.
4287
4288Replaces the algorithm for approximating circular arcs with curves with a
4289more accurate one.
4290
4291Changes gs_point and gs_rect to use doubles rather than floats.
4292
4293Adds gs_setmetrics, for overriding Type 1 font metrics for the current
4294character.
4295
4296Changes clipping to use lists of rectangles rather than path intersection.
4297 This makes a big difference when clipping bitmaps (including characters).
4298
4299Changes the character cache to discard entries incrementally, rather than
4300clearing the entire cache when it fills up.
4301
4302Changes the implementation of transfer functions to use a cached map,
4303built when the transfer function is set.  This makes transfer functions
4304work properly in all situations, including images.
4305
4306Defines a .quit operator that takes an exit code, and redefines quit in
4307terms of it.
4308
4309Adds support for 16-bit-per-pixel devices in gdevmem.
4310
4311Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and
4312gs_makedevice.
4313
4314Changes setscreen to ensure that the cell is always at least 4x4 pixels in
4315size.
4316
4317</pre>
4318
4319<h2><a name="Version2.3"></a>Version 2.3 (8/28/91)</h2>
4320
4321<p>This is a minor release to fix two bugs and add the PaintJet driver,
4322which
4323didn't make it into 2.2.
4324
4325<h3><a name="V2.3_Utilities"></a>Utilities</h3><pre>
4326Changes the pstoppm utility so it counts pages correctly even in the
4327presence of arbitrary saves and restores.
4328
4329</pre><h3><a name="V2.3_Drivers"></a>Drivers</h3><pre>
4330Adds a new, "supported" PaintJet driver.
4331
4332Changes the Epson driver to use ESC+D rather than ESC+\ for horizontal
4333positioning, since many printers don't support the latter.
4334
4335Adds horizontal double-density (two-pass) printing to the Epson driver, so
4336it can do 240 x 60 and 360 x 180 densities.  (Vertical double density is
4337not supported yet.)
4338
4339</pre>
4340
4341<hr>
4342
4343<h2><a name="Version2.2"></a>Version 2.2 (6/1/91)</h2>
4344
4345<p>
4346The purpose of this release is to add save/restore, and a few
4347miscellaneous Level 2 P*stScr*pt features such as undef.  It also includes
4348major improvements in graphics quality and in handling of high-resolution
4349printers.
4350
4351<h3><a name="V2.2_Procedures"></a>Procedures</h3><pre>
4352Changes the version numbering to M.mpp rather than M.m.p, so that
4353`version' can be a real number for those programs that insist on it.
4354
4355Renames ghost.ps as gs_init.ps, gfonts.ps as gs_fonts.ps, and statusd.ps
4356as gs_statd.ps.  The initialization files now all are named gs_*.ps.
4357
4358Renames gdevs.{c,h,tl} as gconfig.{c,h,tl}.
4359
4360Changes the relevant makefiles and command files so that a single build
4361can contain several drivers that share code, e.g., the Epson driver and
4362the DeskJet driver.
4363
4364Changes gs_init.ps so it relies on an external gconfig.ps file rather than
4365making a specific test for the presence of Level 2 features.
4366
4367Adds an entry for uglyr.gsf to the makefile.
4368
4369Removes the distinction between CCA and CCNA, since most of the files now
4370contain constructs that require non-ANSI compilation on MS-DOS platforms.
4371
4372Adds a `man' page for the ansi2knr utility.
4373
4374Changes the documentation (use.doc) to show how to use -sDEVICE=&lt;device&gt;,
4375or the selectdevice procedure, to select devices by name.
4376
4377Adds DEVICE_DEVS to the makefiles (analogous to DEVICES and DEVICE_OBJS).
4378This finally makes the make procedure fully automatic.
4379
4380Adds the name of the initialization file (gs_init.ps) as a
4381platform-specific makefile parameter, GS_INIT.
4382
4383Removes the test program gt.{c,tr} from the fileset, since it is not
4384useful to users.
4385
4386Moves the Symbol encoding vector to a separate file (symbol_e.ps), from
4387which it is loaded when first used.
4388
4389Changes the error handler so it can handle errors that occur while reading
4390the initialization files.
4391
4392Extends ansi2knr so it can handle `void' and `...' in parameter lists.
4393
4394Adds quit.ps to the set of installed files.
4395
4396MS-DOS-specific changes
4397- - - - - - - - - - - -
4398
4399Adds the VGA and BGI drivers to the standard MS-DOS configuration, and
4400makes VGA the default.
4401
4402Adds a `+' and a newline at the end of gs.tr, to avoid problems with file
4403transfer programs or editors that add a newline at the end of files.
4404
4405Changes the name of msdos.mak to turboc.mak, and creates a new tbcplus.mak
4406makefile for use with Turbo C++ and Borland C++.
4407
4408Changes the extension of the loader response files from .tl to .tr.
4409
4410Changes the default search path from c:/ghost and c:/ghost/fonts to c:/gs
4411and c:/gs/fonts.
4412
4413Changes the directory separator from `|' back to ';', since it appears
4414that DOS can handle a ; in a command line if it is prefixed with \.
4415
4416Unix-specific changes
4417- - - - - - - - - - -
4418
4419Changes the uses of install in unixtail.mak so they only install a single
4420file at a time, which is all that the standard Unix install allows.
4421
4422Removes the duplicate files (README/readme, LICENSE/license,
4423COPYING/copying, Fontmap/fontmap).
4424
4425Changes the ld flags from LDPLAT to LDFLAGS.
4426
4427Adds XCFLAGS and XLDFLAGS.  These are concatenated with CFLAGS and LDFLAGS
4428respectively.  The intention is that they be set from the `make' command
4429line if desired.
4430
4431VMS-specific changes
4432- - - - - - - - - -
4433
4434Repairs the omission of ZPACKED from the VMS build lists.
4435
4436</pre>
4437
4438<h3><a name="V2.2_Drivers"></a>Drivers</h3><pre>
4439Fixes bugs:
4440	- The SunView driver produced semi-garbage on little-endian
4441platforms (Sun-386i) because it didn't swap the bit order.
4442	- The X driver would dump core if it couldn't open the display and
4443the DISPLAY environment variable wasn't set.
4444	- The X driver relied on white = 0, black = ones in a couple of
4445places;
4446	- The X driver would return an error, instead of clipping, if
4447asked to display outside the window.
4448	- The X driver would create inappropriately sized windows, because
4449it believed the server's report of the screen resolution.
4450
4451Adds Fran Taylor's Private Eye driver to gdevs.mak and the fileset (not
4452supported by Aladdin Enterprises).
4453
4454Adds Neil Ostroff's TruFax driver to gdevs.mak and the fileset (not
4455supported by Aladdin Enterprises).
4456
4457Makes the scratch file template for the printer drivers a per-platform
4458quantity (gp_scratch_file_name_template).  Puts the default scratch files
4459for Unix in /usr/tmp rather than /tmp.
4460
4461Changes the SunView driver to prevent the Ghostscript window from being
4462destroyed (which badly confuses the interpreter).
4463
4464Extends the Epson driver to handle a variety of print densities in both X
4465and Y, to handle 24-pin as well as 8-pin graphics, and to allow optional
4466specification of default density in the makefile (gdevs.mak).
4467
4468Refactors the printer drivers so that a single driver handles both DeskJet
4469and LaserJet.  Adds LaserJet drivers that use the new compression modes on
4470the LJ IId/IIp and LJ III.
4471
4472Changes all the printer drivers to use band lists rather than bitmap
4473paging as the buffering method.  (The individual drivers need only a
4474one-line change to replace mem_copy_scan_lines with
4475gdev_prn_copy_scan_lines with a different argument.)
4476
4477Adds the halftone phase as additional arguments to tile_rectangle and
4478tile_trapezoid.
4479
4480Adds an entirely new and much simpler PaintJet driver, using the new band
4481list interface.
4482
4483Adds margin information to the device structure.  This is currently only
4484relevant for printer devices.
4485
4486Adds BGIPATH and BGIUSER environment variables, allowing additional
4487control of the BGI driver.
4488
4489Changes the x/y_pixels_per_inch member of the device structure from int to
4490float.
4491
4492</pre>
4493
4494<h3><a name="V2.2_Fonts"></a>Fonts</h3>
4495
4496<pre>
4497Patches gs_fonts.ps so definefont will add an isFixedPitch entry to
4498FontInfo if there isn't one there.
4499
4500Removes the old "type 7 path" encoding code from gs_fonts.ps.
4501
4502Changes bdftops so it puts isFixedWidth and ItalicAngle entries in the
4503FontInfo dictionary of the fonts it creates, since some P*stScr*pt
4504programs rely on this.
4505
4506Changes bdftops so it synthesizes as many missing characters as possible
4507out of the ones that are there (in particular: synthesizes accents out of
4508punctuation marks, and accented characters using seac.)  The results
4509aren't all that good, but they're a lot better than having characters
4510missing out of the font.
4511
4512</pre><h3><a name="V2.2_Utilities"></a>Utilities</h3><pre>
4513Adds a pfbtops utility for converting .PFB fonts to standard Ghostscript
4514fonts.
4515
4516Fixes bugs:
4517	- ps2image didn't reset things properly between pages for
4518multi-page documents.
4519
4520</pre><h3><a name="V2.2_Interpreter"></a>Interpreter</h3><pre>
4521Makes Ghostscript recognize `-' alone as meaning that it should read from
4522standard input as though it were a file.  This allows Ghostscript to
4523accept a pipe as input.
4524
4525Fixes bugs:
4526	- seac in type1addpath used the current font's encoding, not
4527StandardEncoding.
4528	- type1decryptfile (eexec) didn't recognize binary (as opposed to
4529hex) representation.
4530	- Mentioning a name whose value was a no-access object caused an
4531invalidaccess error.
4532	- There was a bogus definition of `run' in zfile.c.
4533	- The interpreter didn't handle end-of-file on stdin properly.
4534	- Real numbers with an 'e' or 'E' but no decimal point were not
4535recognized.
4536	- On MS-DOS systems, inside strings, \ followed by a newline was
4537not discarded properly.
4538	- On MS-DOS systems, the long unsigned divide routine sometimes
4539gave incorrect answers.  Among other things, this caused alternate-radix
4540numbers sometimes to crash the interpreter.
4541	- cvrs didn't do the right thing about reals or negative integers.
4542	- .echo.mode was being reset with def instead of store, and was
4543defined in systemdict rather than userdict.
4544	- setgray and settransfer didn't interact properly.
4545	- 16#80000000 was being interpreted as a signed integer (and
4546converted to a real) rather than an unsigned one.
4547	- atan returned 0 sometimes when it should have returned 180.
4548	- currentcmykcolor was defined wrong.
4549
4550Removes the filename operator, since no standard Ghostscript code used it,
4551and it caused problems with some P*stScr*pt files.
4552
4553Implements new operators: filenameforall, selectfont (as a procedure),
4554stringmatch, undef.
4555
4556Adds new standard procedures: selectdevice.
4557
4558For MS-DOS, requires that the operand and execution stacks be located in
4559the data segment, and uses short pointers to address them.  This produces
4560significantly smaller and faster code.  (These changes are not visible to
4561users or library clients.)
4562
4563Changes the assignment of attribute bits, and adds new bits for
4564save/restore and the garbage collector.  Changes many of the macros in
4565store.h to support save/restore.  (These changes are not visible to users
4566or library clients.)  Implements save and restore.
4567
4568Moves type names from gs_init.ps to ghost.h and ztype.c.
4569
4570Moves error names from gs_init.ps to errors.h and iinit.c.
4571
4572Introduces gp.h as a documented interface to the platform-specific files.
4573
4574Adds the -- switch, which allows Ghostscript programs to take arguments
4575from the command line.
4576
4577Changes many uses of the name `name' to something else, to avoid upsetting
4578the Microsoft C compiler.
4579
4580Really implements packed arrays -- they took the same amount of space as
4581ordinary arrays in previous versions.
4582
4583Changes exitserver in serverdict so that it just clears the stacks.  (This
4584isn't the correct fix, but it will do as a workaround.)
4585
4586Makes many miscellaneous small changes to pacify various compilers.
4587
4588Changes gs_fonts.ps so that when "quiet" mode is selected (-q switch),
4589Ghostscript doesn't print anything when loading fonts or when substituting
4590for undefined characters.
4591
4592Defines the name consisting of just a control-D as a no-op, because some
4593P*stScr*pt-generating applications put control-Ds in their output.
4594
4595Implements halftone phase (sethalftonephase and currenthalftonephase
4596operators).
4597
4598Removes the -E switch, since it is no longer useful.
4599
4600Changes the -w and -h switches to a single -g (geometry) switch, with
4601usage -g&lt;width&gt;x&lt;height&gt;.  Makes the -h switch, and a new -? switch, print
4602usage help.
4603
4604Implements correct handling of stack overflow errors (makes an array out
4605of the contents of the overflowing stack, and resets the stack, before
4606invoking the error handler).
4607
4608Adds t_oparray (`operators' defined as procedures) and the makeoperator
4609operator.  This is so that programs like the Distillery that rely on all
4610operators being bound by `bind' will work properly.
4611
4612Adds a new NOPAUSE flag to suppress the prompt and pause at copypage and
4613showpage.
4614
4615</pre><h3><a name="V2.2_Library"></a>Library</h3><pre>
4616Fixes bugs:
4617	- gs_type1_interpret didn't store the encryption state or the skip
4618count before returning to let the client handle a seac or an endchar in
4619the middle of a seac.
4620	- The definition of the Type 1 operator ce_testadd was based on
4621wrong information; the operator takes only 2 operands and does something
4622unknown.
4623	- mem_true24_copy_mono wasn't incrementing the destination pointer
4624if the color was transparent, leading to garbled characters.
4625	- gx_lookup_fm_pair would sometimes look at one entry beyond the
4626end of the cached font/matrix pair area.  (This probably had no practical
4627effect.)
4628	- gs_type1_interpret didn't save the current point when returning
4629to the client for a callothersubr, causing some characters to be rendered
4630displaced (such as some of the chess pieces in chess.ps).
4631	- gs_setgray, gs_sethsbcolor, gs_setrgbcolor, gs_setflat, and
4632gs_setlinewidth gave errors for out-of-range operands rather than forcing
4633them into range.
4634	- Transfer functions were not actually supported.
4635	- The area fill algorithm failed on certain complex paths.
4636	- The current point was sometimes defined when a BuildChar
4637procedure was called.
4638	- Stroking a degenerate line didn't display anything for round
4639caps or joins.
4640	- If the ends of a curve had exactly the same X coordinate, the
4641curve sometimes wouldn't be displayed.
4642	- Very thin lines that went outside the clipping region would
4643sometimes be displayed as dashed, or not at all.
4644	- The translation in a FontMatrix was ignored.
4645	- Very wide, shallow lines would color extraneous pixels when
4646using bevel or miter joins.
4647	- Dashed lines didn't join properly at the beginning of a closed
4648path.
4649	- 0-degree arcs didn't add the appropriate line (possibly
4650degenerate) to the path.
4651	- gs_type1_interpret didn't reset the callsubr stack when starting
4652the base character of a seac, which caused confusion if the accent's
4653endchar fell inside a Subr.
4654	- Non-monochrome memory memory devices weren't checking the
4655arguments of the drawing procedures properly.
4656	- The initial clipping rectangle for memory devices was being
4657computed wrong.
4658	- Null devices had a semi-infinite clipping rectangle instead of
4659an empty one.
4660	- gs_setlinewidth was treating negative arguments as zero, instead
4661of taking the absolute value.
4662	- imagemask with a dithered color used a solid color rather than
4663the dithered one.
4664
4665Tweaks the area fill and image rendering algorithms to be a little more
4666liberal with paint when being used to render characters.
4667
4668Changes the name of the 8-bit mapped color memory device from
4669mem_mapped_color_device to mem_mapped8_color_device.
4670
4671Changes the memory devices so that on little-endian platforms, they can
4672store the bytes within a word in either order.  (Little-endian order
4673allows efficient 32-bit updating, big-endian is required when displaying
4674or writing to a printer or a file.)
4675
4676Implements halftone phase.
4677
4678Replaces the trapezoid fill algorithm with a much more accurate one
4679inspired by a contribution from Paul Haeberli.  This also changes the
4680graphics convention back to filling only pixels whose center falls within
4681the region to be filled.
4682
4683Changes the character cache to allocate headers and bits contiguously out
4684of a single ring buffer.
4685
4686Changes gs_imagemask and gs_imagemask_init to take a thickness adjustment
4687parameter.
4688
4689Changes gs_setcachedevice and gs_setcharwidth to take the graphics state
4690as a parameter.
4691
4692Renames gx_device_memory_bitmap_size as gdev_mem_bitmap_size,
4693mem_copy_scan_lines as gdev_mem_copy_scan_lines, and
4694mem_bytes_per_scan_line as gdev_mem_bytes_per_scan_line.
4695
4696</pre>
4697
4698<hr>
4699
4700<h2><a name="Version2.1.1"></a>Version 2.1.1 (1/15/91)</h2>
4701
4702<p>This is a sub-release distributed to fix a few early bugs in 2.1,
4703just in
4704time for the new GNU master tape.
4705
4706<h3><a name="V2.1.1_Build_procedures"></a>Build procedures</h3><pre>
4707Removes all of the (undebugged) Level 2 code from the fileset, as well as
4708the (unused) file gdevvga.c.
4709
4710Changes the tar file so that the files are stored in the directory
4711gs&lt;version&gt; rather than simply gs, e.g., gs211.
4712
4713</pre><h3><a name="V2.1.1_Interpreter"></a>Interpreter</h3><pre>
4714Changes the scanner so that \ is recognized within strings regardless of
4715whether the scanner is reading from a string or from a file.  This is
4716compatible with newer P*stScr*pt interpreters, and with the newer
4717P*stSc*pt language specification, but not with the older specification in
4718the original PostScript Language Reference Manual.
4719
4720</pre><h3><a name="V2.1.1_Drivers"></a>Drivers</h3><pre>
4721Fixes the max_value macro in gdevmem.c so that compilers won't complain
4722about a left shift by 32.
4723
4724Adds 'byte' to the list of types that gdevx.c must sidestep because header
4725files use them.
4726
4727</pre><h3><a name="V2.1.1_Library"></a>Library</h3><pre>
4728Changes the computation of penum-&gt;unpack in gsimage.c so as not to upset
4729compilers that don't treat procedures and pointers to procedures as
4730compatible types for conditional expressions.
4731
4732</pre>
4733<h2><a name="Version2.1"></a>Version 2.1 (12/31/90)</h2>
4734
4735<p>This is primarily a bug fix release to clean up problems in 2.0.  It
4736also implements a first cut at the new color operators.
4737
4738<h3><a name="V2.1_Build_procedures"></a>Build procedures</h3><pre>
4739Changes the separator for multiple directories in MS-DOS from ';' to '|',
4740since there is no way to include a ';' in a command line.
4741
4742Adds &lt;dir&gt;/fonts to the default search path, where &lt;dir&gt; is c:/ghost for
4743MS-DOS systems and `pwd` for Unix systems.
4744
4745Adds new documentation describing how to direct output to the printer.
4746
4747Changes the PROCTYPE and USE8087 options in MSDOS.MAK to CPU_TYPE and
4748FPU_TYPE.  The latter now indicates the type of FPU to generate code for,
4749if any.
4750
4751</pre>
4752
4753<h3><a name="V2.1_Drivers"></a>Drivers</h3>
4754
4755<pre>
4756Adds a driver for the Canon BubbleJet BJ10e.
4757
4758Modifies the EGA driver to handle (non-standard) frame buffers larger than
475964K.  Adds drivers for the VGA and for the EIZO MDB-10 (a 1024 x 768 frame
4760buffer).
4761
4762Changes the X driver so that it clips to the window dimensions, rather
4763than reporting an error.
4764
4765Notes that the H-P LaserJet driver, like the DeskJet driver, works under
4766Unix as well as MS-DOS.
4767
4768Adds support for 120 X DPI mode, and for the LQ-1500, to the Epson driver.
4769
4770</pre><h3><a name="V2.1_Fonts"></a>Fonts</h3><pre>
4771Fixes bugs in bdftops:
4772	- It was using /UniqueId instead of /UniqueID as the key for the
4773font unique ID.  This effectively disabled the font cache.
4774	- The definition for .notdef was bogus -- an invalid CharString.
4775
4776Changes ghost.ps and gfonts.ps so that NullFont is the initial font,
4777rather than Ugly.
4778
4779Arranges things so that when attempting a font substitution, if the
4780default font is not found, NullFont is used instead.
4781
4782Extends bdftops so that if certain easily synthesized characters are
4783missing from a font, it will attempt to synthesize them using available
4784characters.
4785
4786</pre><h3><a name="V2.1_Interpreter"></a>Interpreter</h3><pre>
4787Extends the -T switch to allow specifying a printf template for the
4788arguments of the procedure being traced.
4789
4790Fixes bugs:
4791	- /0 was interpreted as equivalent to 0 (a number) rather than a
4792literal name.
4793	- packedarray was defined as being like array, instead of like
4794array followed by astore.
4795	- Many minor and harmless type mismatches (and a couple of very
4796minor genuine bugs) were upsetting the Apollo C compiler.
4797	- exp was incorrectly failing in certain cases with a negative
4798first argument.
4799	- copyscanlines incorrectly required at least 4 elements on the
4800operand stack, although it correctly only used the top 3.
4801	- readhexstring incorrectly read 1 byte even if the string length
4802was zero.
4803	- Not every place that expected an array would accept a packed
4804array.
4805	- Very complex paths (and infrequently other things) could produce
4806a 'memory leak'.
4807	- / alone would skip following whitespace and gather following
4808characters, rather than creating an empty name.
4809	- ghost.ps left newerror defined as true in $error, which resulted
4810in an erroneous error report if a program executed a 'stop'.
4811	- The definition of exitserver in serverdict didn't clear the
4812stack.
4813	- currentfile returned an executable file, rather than a literal
4814one.
4815	- setfont for Type 1 fonts didn't check the UniqueID in the font
4816dictionary against the one in the font's Private dictionary.
4817	- A value stored in a dictionary under the key /xxx couldn't be
4818retrieved using the key (xxx), and vice versa.
4819	- charpath with a Type 1 font on a string containing a 'space'
4820would produce garbage (it released the parent path inappropriately).
4821	- bytesavailable did not work properly for terminal input.
4822
4823Changes the interface to the memory allocator so that it always takes an
4824element size and an element count, like calloc instead of malloc (but note
4825that alloc does *not* clear just-allocated blocks).  Gets rid of the
4826special 'dynamic' allocation procedures.
4827
4828Changes the random number operators to use a better implementation.
4829
4830Changes the idiv operator so it will accept any numbers, not just
4831integers, as arguments.  (The PostScript manual doesn't allow this, but
4832implementations apparently do.)
4833
4834Provides semi-fake but usable definitions for all of the color PostScript
4835extensions, including a real implementation of colorimage.
4836
4837No longer uses the name 'null', which is apparently reserved by Microsoft
4838C.  Makes a number of other minor changes required to pacify the Microsoft
4839C compiler.
4840
4841Implements %statementedit and %lineedit.  (%statementedit is equivalent to
4842%lineedit, which is wrong.)  Changes the interactive interpreter to use
4843%statementedit.
4844
4845Changes the scanner to accept null, ctrl-K (vertical tab), and ctrl-L
4846(form feed) as whitespace.  Ctrl-L terminates a comment, null and ctrl-K
4847do not.
4848
4849Allows a literal string as the 'proc' argument(s) for image, imagemask,
4850and colorimage.
4851
4852Adds the following operators/procedures: arct, cleardictstack, deletefile,
4853renamefile.
4854
4855Defines =print as a synonym for =, for the benefit of LaserPrep.
4856
4857Implements non-zero PaintType for the show operators (but not for
4858charpath) for Type 1 fonts.
4859
4860Adds the ISOLatin1Encoding encoding vector.
4861
4862Renames currentcolor and setcolor as currentgscolor and setgscolor, to
4863avoid conflict with the Level 2 PostScript names.  Removes colorhsb,
4864colorrgb, hsbcolor, and rgbcolor.
4865
4866</pre><h3><a name="V2.1_Library"></a>Library</h3><pre>
4867Fixes bugs:
4868	- In a couple of places, a 0 was being passed as a pointer
4869argument without casting, which confused the Microsoft C compiler.
4870	- Image devices were not recognized properly in debugging
4871configurations.
4872	- Inverted-color monochrome image devices were not recognized
4873properly.
4874	- Images that exactly fill the drawing area rendered very slowly,
4875because they erroneously used the general clipping algorithm.
4876	- Images that are 1-for-1 with the device were incorrectly scaled
4877by a factor of 8 in X.
4878	- Rounding artifacts sometimes caused characters to be unevenly
4879offset vertically by 1 pixel.
4880	- Type 1 fonts that used the Flex feature resulted in garbled
4881images.
4882	- The show operator routines would incorrectly fill or stroke a
4883path that existed at the time the show was started.
4884	- setscreen truncated the cell size instead of rounding, which
4885could produce off-by-1 anomalies.
4886	- stroke would sometimes produce garbage (or nothing at all) for
4887very narrow lines.
4888	- path filling would only color the pixels whose centers fell
4889inside the path: the Adobe specification requires coloring a pixel if any
4890part of it falls inside the path.
4891
4892Changes the Epson printer driver so that it drives the printer directly
4893rather than writing to a file.
4894
4895Changes pathbbox so that if the path is empty but there is a current
4896point, it returns a null rectangle at the current point.
4897
4898Changes gs_image_init to take an additional parameter (after bps) giving
4899the number of samples per pixel (1, 3, or 4), and an indication of whether
4900the samples for each pixel are together or separated (-3 or -4).
4901
4902Renames the gs_image_data and gs_imagemask_data procedures as gs_image and
4903gs_imagemask, and removes the old versions of the latter.
4904
4905Adds gs_colorimage.
4906
4907Replaces Snoopy's color dithering algorithm with one contributed by Paul
4908Haeberli.
4909
4910Changes gs_setgray, gs_[set]hsbcolor, and gs_[set]rgbcolor so that they
4911coerce arguments outside the range [0..1] back into the range, instead of
4912signalling an error.
4913
4914Makes a number of minor changes required to pacify the Microsoft C
4915compiler.
4916
4917Changes gs_arcto so that if the last argument is a null pointer, the
4918tangent points are not returned.
4919
4920Removes gs_type1addpath, which is not useful.  (Clients must call
4921gs_type1_init and gs_type1_interpret directly.)
4922
4923Implements the 'seac' opcode for Type 1 fonts, allowing fonts with accented
4924characters to display properly.
4925
4926Implements the undocumented 'testadd' opcode for Type 1 fonts, which is
4927used by some Adobe fonts.
4928
4929Renames gs_currentcolor and gs_setcolor as gs_currentgscolor and
4930gs_setgscolor.  Removes gs_colorhsb, gs_colorrgb, gs_hsbcolor, and
4931gs_rgbcolor.
4932
4933</pre>
4934
4935<hr>
4936
4937<h2><a name="Version2.0"></a>Version 2.0 (9/12/90)</h2>
4938
4939<p>The main purpose of this release is to add fonts, support for
4940multiple
4941devices, and imaging into memory.  It also fixes a number of miscellaneous
4942bugs.  (Unfortunately, accurate records of the bugs fixed are not
4943available.)  The changes were so extensive that we chose to increment the
4944major version number.
4945
4946<h3><a name="V2.0_Miscellaneous"></a>Miscellaneous</h3><pre>
4947Doesn't attempt to open the .MAP file on Unix systems.
4948
4949Adds mention of statusd.ps to interp.doc.
4950
4951Notes that Turbo C 2.0, not 1.5, is required for building the MS-DOS
4952version.
4953
4954Adds a DEVICES= line to the makefile, and allows multiple devices.
4955
4956Documents, in interp.doc, the X Windows resources that Ghostscript
4957recognizes.
4958
4959Adds three PostScript masters to the fileset: chess.ps (+ cheq.ps),
4960golfer.ps, and escher.ps.
4961
4962</pre><h3><a name="V2.0_Drivers"></a>Drivers</h3><pre>
4963Changes the names of all the device drivers.  See gdevs.mak for the
4964updated list.
4965
4966Adds a (working) driver for SunView.
4967
4968Adds drivers for the Sony NeWS frame buffer, and the Sony Microsystems
4969NWP533 printers.  These drivers were contributed by users, so we aren't
4970prepared to answer questions about them.
4971
4972Adds a driver for the Borland Graphics Interface (BGI) for MS-DOS systems.
4973Note that to use this driver with a non-EGA/VGA display, you need a .BGI
4974file appropriate for your hardware.  (The Ghostscript executable includes
4975the EGA/VGA driver.)
4976
4977Adds a driver for Epson printers.  The driver has only been tested on an
4978LX-800, and on an H-P DeskJet in FX-80 emulation mode, but may work on
4979other models.  The driver could be adapted to work on Unix systems, but as
4980distributed, it only works on MS-DOS systems.
4981
4982Adds a driver for the Hewlett-Packard DeskJet printer.  The driver could
4983be adapted to work on Unix systems, but as distributed, it only works on
4984MS-DOS systems.
4985
4986The X Windows driver no longer waits for the user to type a character
4987before bringing up the initial display.
4988
4989Adds information to drivers.doc describing how to change the definition of
4990the device structure and procedure table.
4991
4992Extends the tile_rectangle and tile_trapezoid driver procedures to
4993interpret color0 = color1 = gx_no_color_index as meaning that the tile is
4994actually colored, not a mask.
4995
4996</pre><h3><a name="V2.0_Build_procedures"></a>Build procedures</h3><pre>
4997Changes the tar file so it puts everything in a directory called gs.
4998
4999Removes the -ansi switch for gcc (this was causing problems with &lt;math.h&gt;
5000on some systems).
5001
5002Changes LDPLAT to the string -X, which is appropriate for most Unix
5003systems (but not for SunOS 4.n).
5004
5005Adds EXTRALIBS to the makefile, for specifying additional libraries to be
5006linked in.
5007
5008Adds a 'clean' target for 'make', to get rid of all temporary files, the
5009binaries, and the executable.
5010
5011Changes names of system-specific files from gp-xxx.c to gp_xxx.c.
5012
5013Adds support for VMS (gp_vms.c and ghost.dcl).
5014
5015Creates a new file gdevs.mak, and reorganizes the other makefiles, so that
5016the choice of which device driver(s) to include is isolated in a single
5017line in the platform-specific makefile.
5018
5019Changes the standard MS-DOS makefile so it builds for 8088/86 (not 80386),
5020with neither -DNOPRIVATE nor -DDEBUG.
5021
5022Changes the name of the MS-DOS makefile from dos-ega.mak to msdos.mak, and
5023the Unix makefiles from ux-[g]cc-x.mak to unix-[g]cc.mak.
5024
5025Updates drivers.doc to describe how to add new drivers in gdevs.mak.
5026
5027Removes gdevs.ps: the drivers are now responsible for specifying the size
5028of the imaging region.
5029
5030</pre><h3><a name="V2.0_Interpreter"></a>Interpreter</h3><pre>
5031Adds a makefile macro GS_LIB_DEFAULT and an environment variable GS_LIB to
5032define a search path for the library (initialization and font) files, and
5033implements the -I switch for the same purpose (replacing -sLIB=, which was
5034never actually implemented).  See interp.doc for details.
5035
5036No longer clears the operand stack between interactive inputs.  No longer
5037prints the contents of the operand stack after every input in debug mode.
5038
5039Doesn't "eat" the character that the user types to proceed after a
5040showpage, unless it's an isolated &lt;return&gt;.
5041
5042Changes the prompt so that it says
5043	GS&gt;
5044if the operand stack is empty, or
5045	GS&lt;n&gt;
5046if there are n &gt; 0 elements on the operand stack.
5047
5048Adds -w and -h switches to the command line, equivalent to -dWIDTH= and
5049-dHEIGHT= except that they require numeric arguments.
5050
5051Adds -q (quiet startup) switch to the command line, which suppresses some
5052initial messages and also has an effect equivalent to -dQUIET.
5053
5054Fixes bugs:
5055	- = and == caused an error on some kinds of objects if the object
5056didn't have read access.
5057	- cvs didn't print operator names.
5058	- The definition of dynamic_begin in iscan.c caused the DEC VMS C
5059compiler to produce incorrect code.
5060	- mul didn't return a correct (real) result when multiplying a
5061very large integer by an integer that wasn't very large.
5062	- eq and ne didn't work on files, fonts, save objects, and some
5063operators.
5064	- The scanner would sometimes blow up on floating point numbers
5065beginning with a '.'.
5066	- flushfile didn't pop its argument from the stack.
5067	- put and putinterval would store into a packed array.
5068	- a few operators didn't check properly for stack underflow.
5069	- cvrs produced wrong output for radix values greater than 10.
5070	- The scanner would convert upper-case letters in alternate-radix
5071numbers wrong on Unix systems.
5072	- String comparisons other than equality often produced the wrong
5073result if the strings were of different lengths.
5074	- An ifelse as the last thing inside a forall would confuse the
5075execution stack.
5076	- There were some omitted casts and 'private' declarations that
5077made the GNU compiler unhappy.
5078	- There was a memory leak in the image[mask] operators that caused
5079516 bytes to be permanently lost each time one of them was used.
5080	- Quoted strings of length greater than 50 and less than 100 would
5081get mangled when being read in.
5082	- The scanner didn't consume the whitespace character following a
5083token, so programs that read data out of the program file could get
5084confused.
5085	- Under rare circumstances, an object of size between 249 and 255
5086bytes could get allocated on top of another object.
5087
5088Allows bind to bind packed arrays, even though they aren't normally
5089writable.
5090
5091Changes the length operator to allow a name as the argument.  (The
5092PostScript manual doesn't allow this, but implementations apparently do.)
5093
5094Changes the setcachedevice operator to allow the bounding box to be
5095specified as a 4-element array instead of 4 scalars.  (The PostScript
5096manual doesn't allow this, but implementations apparently do.)
5097
5098Removes a line from ghost.ps that accidentally disabled the font cache.
5099
5100Implements memory devices (makeimagedevice, copyscanlines, and makedevice
5101for image devices).  makeimagedevice is implemented only for 1, 8, 24, and
510232 bits per pixel.
5103
5104Changes the deviceparams operator so it pushes a mark on the stack below
5105the parameters.  This is to allow for devices that have more than the
5106standard set of parameters.
5107
5108Replaces defaultdevicename with two new operators, getdevice and
5109devicename.
5110
5111Adds a flushpage operator that flushes any outstanding buffered output to
5112the screen.  This is not the same as copypage: on printers, copypage
5113actually prints a page, whereas flushpage may do nothing; on displays,
5114flushpage and copypage may both flush output to a server.
5115
5116Adds an unread operator for pushing back a character into a file.
5117
5118Adds a description of proposed grayimage and colorimage operators to
5119ghost.doc, even though they aren't implemented yet.
5120
5121Changes the name of the currentfileposition operator to fileposition.
5122
5123Removes the framedevice operator, since the new device operators supersede
5124it.
5125
5126Adds a writeppmfile operator, for writing the contents of a memory device
5127to a ppm file.
5128
5129Makes Ghostscript work even when the &gt;&gt; operator doesn't sign-extend
5130negative numbers.  (This has not been tested.)
5131
5132Adds the Symbol encoding to ghost.ps.
5133
5134Adds two new file-related operators, filename and findlibfile.  See
5135ghost.doc and interp.doc for details.
5136
5137Adds type1encrypt and type1decrypt operators for manipulating Adobe Type 1
5138encoded fonts.
5139
5140Changes the imagecharpath and addcharpath operators to type1imagepath and
5141type1addpath.  These operators now work with the Adobe Type 1 font
5142encoding.
5143
5144Adds the type1decryptfile operator for reading Adobe Type 1 encrypted
5145fonts.
5146
5147</pre><h3><a name="V2.0_Library"></a>Library</h3><pre>
5148Fixes bugs:
5149	- curveto and lineto didn't check for the current point being
5150defined.
5151	- stringwidth would fail if there was no current point.
5152	- There were omitted casts that made the GNU compiler unhappy.
5153	- Line caps and joins didn't always work.
5154	- Dashed lines didn't work at all.
5155	- If you read out the current matrix while inside a BuildChar
5156procedure, the result was garbage.
5157	- image[mask] would crash if you gave it a single string with more
5158than 64K-1 pixels (MS-DOS only).
5159	- Filling with a gray pattern sometimes wrote into pixels beyond
5160the right edge of the region (MS-DOS only).
5161	- The font cache would mistake fonts for each other if both fonts
5162had a default (unsupplied) "unique ID".
5163	- When a character was entered into the font cache for the first
5164time, sometimes it would display as garbage and/or displaced vertically
5165from its proper position.
5166
5167Implements gs_makeimagedevice, gs_copyscanlines, gs_getdevice,
5168gs_devicename, gs_flushpage, gs_writeppmfile, gs_type1encrypt,
5169gs_type1decrypt, gs_type1imagepath, and gs_type1addpath procedures
5170corresponding to the new operators in the interpreter (see preceding
5171section).
5172
5173Changes [gs_]setdevice so that it does an erasepage when it first opens
5174the device.
5175
5176Changes definition of gx_device structure as follows.  NOTE: THIS AFFECTS
5177ALL DRIVERS.
5178
5179	- Removes bits_from_MSB (which wasn't actually used, in any case).
5180	    Ghostscript now assumes officially, as it always did in
5181	    practice, that device bitmaps are stored MSB first, i.e., X=0
5182	    corresponds to the 0x80 bit in the first byte.
5183
5184	- Removes the initial_matrix member, which wasn't actually being
5185	    set up.
5186
5187	- Adds a new member 'name', a string giving the device name.
5188
5189	- Adds new members 'x_pixels_per_inch' and 'y_pixels_per_inch'.
5190	    These are only used by the default initial_matrix procedure
5191	    (see below).
5192
5193	- Adds a new procedure 'output_page'.  The default implementation
5194	    (gx_default_output_page) just calls the sync_output procedure.
5195
5196	- Adds a new procedure 'get_initial_matrix'.  The default
5197	    procedure uses the width, height, and x/y_pixels_per_inch
5198	    members to compute the matrix, assuming that X values run from
5199	    right to left, and Y values run from top to bottom.
5200
5201Changes the names of the allocation procedure types gs_proc_alloc and
5202gs_proc_free to proc_alloc_t and proc_free_t, and moves them from gs.h to
5203std.h.
5204
5205Makes Ghostscript work even when the &gt;&gt; operator doesn't sign-extend
5206negative numbers.  (This has not been tested.)
5207
5208</pre>
5209
5210<!-- [3.0 begin visible trailer] =========================================== -->
5211<hr>
5212
5213<p>
5214<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
5215All rights reserved.</small>
5216
5217<p>
5218This software is provided AS-IS with no warranty, either express or
5219implied.
5220
5221This software is distributed under license and may not be copied,
5222modified or distributed except as expressly authorized under the terms
5223of the license contained in the file LICENSE in this distribution.
5224
5225For more information about licensing, please refer to
5226http://www.ghostscript.com/licensing/. For information on
5227commercial licensing, go to http://www.artifex.com/licensing/ or
5228contact Artifex Software, Inc., 101 Lucas Valley Road #110,
5229San Rafael, CA  94903, U.S.A., +1(415)492-9861.
5230
5231<p>
5232<small>Ghostscript version 8.53, 20 October 2005
5233
5234<!-- [3.0 end visible trailer] ============================================= -->
5235
5236</body>
5237</html>
5238