Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

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