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 3.n</title>
5
<!-- $Id: History3.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ -->
6
<!-- Originally: history3.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 3.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="#Version3.70p1">Version 3.70 patch 1 (6/24/96)</a>
32
<ul>
33
<li><a href="#V3.70p1_Procedures">Procedures</a>,
34
    <a href="#V3.70p1_Drivers">Drivers</a>
35
</ul>
36
<li><a href="#Version3.70">Version 3.70 (limited) (6/23/96)</a>
37
<ul>
38
<li><a href="#V3.70_Documentation">Documentation</a>,
39
    <a href="#V3.70_Procedures">Procedures</a>,
40
    <a href="#V3.70_Drivers">Drivers</a>,
41
    <a href="#V3.70_Platforms">Platforms</a>,
42
    <a href="#V3.70_Fonts">Fonts</a>,
43
    <a href="#V3.70_Interpreter">Interpreter</a>,
44
    <a href="#V3.70_Interpreter_PDF">Interpreter (PDF)</a>,
45
    <a href="#V3.70_Streams">Streams</a>,
46
    <a href="#V3.70_Library">Library</a>
47
</ul>
48
<li><a href="#Version3.69">Version 3.69 (limited) (6/14/96)</a>
49
<ul>
50
<li><a href="#V3.69_Documentation">Documentation</a>,
51
    <a href="#V3.69_Procedures">Procedures</a>,
52
    <a href="#V3.69_Utilities">Utilities</a>,
53
    <a href="#V3.69_Drivers">Drivers</a>,
54
    <a href="#V3.69_Platforms">Platforms</a>,
55
    <a href="#V3.69_Fonts">Fonts</a>,
56
    <a href="#V3.69_Interpreter">Interpreter</a>,
57
    <a href="#V3.69_Library">Library</a>
58
</ul>
59
<li><a href="#Version3.68p4">Version 3.68 patch 4 (5/23/96)</a>
60
<ul>
61
<li><a href="#V3.68p4_Documentation">Documentation</a>,
62
    <a href="#V3.68p4_Procedures">Procedures</a>,
63
    <a href="#V3.68p4_Drivers">Drivers</a>,
64
    <a href="#V3.68p4_Platforms">Platforms</a>,
65
    <a href="#V3.68p4_Fonts">Fonts</a>,
66
    <a href="#V3.68p4_Interpreter">Interpreter</a>,
67
    <a href="#V3.68p4_Library">Library</a>
68
</ul>
69
<li><a href="#Version3.68p3">Version 3.68 patch 3 (5/17/96)</a>
70
<ul>
71
<li><a href="#V3.68p3_Procedures">Procedures</a>,
72
    <a href="#V3.68p3_Utilities">Utilities</a>,
73
    <a href="#V3.68p3_Drivers">Drivers</a>,
74
    <a href="#V3.68p3_Platforms">Platforms</a>,
75
    <a href="#V3.68p3_Interpreter">Interpreter</a>,
76
    <a href="#V3.68p3_Library">Library</a>
77
</ul>
78
<li><a href="#Version3.68p2">Version 3.68 patch 2 (5/13/96)</a>
79
<ul>
80
<li><a href="#V3.68p2_Documentation">Documentation</a>,
81
    <a href="#V3.68p2_Procedures">Procedures</a>,
82
    <a href="#V3.68p2_Drivers">Drivers</a>,
83
    <a href="#V3.68p2_Interpreter">Interpreter</a>,
84
    <a href="#V3.68p2_Streams">Streams</a>,
85
    <a href="#V3.68p2_Library">Library</a>
86
</ul>
87
<li><a href="#Version3.68p1">Version 3.68 patch 1 (5/10/96)</a>
88
<ul>
89
<li><a href="#V3.68p1_Procedures">Procedures</a>
90
</ul>
91
<li><a href="#Version3.68">Version 3.68 (limited) (5/9/96)</a>
92
<ul>
93
<li><a href="#V3.68_Documentation">Documentation</a>,
94
    <a href="#V3.68_Procedures">Procedures</a>,
95
    <a href="#V3.68_Utilities">Utilities</a>,
96
    <a href="#V3.68_Drivers">Drivers</a>,
97
    <a href="#V3.68_Platforms">Platforms</a>,
98
    <a href="#V3.68_Fonts">Fonts</a>,
99
    <a href="#V3.68_Interpreter">Interpreter</a>,
100
    <a href="#V3.68_Streams">Streams</a>,
101
    <a href="#V3.68_Library">Library</a>
102
</ul>
103
<li><a href="#Version3.67">Version 3.67 (limited) (4/12/96)</a>
104
<ul>
105
<li><a href="#V3.67_Documentation">Documentation</a>,
106
    <a href="#V3.67_Procedures">Procedures</a>,
107
    <a href="#V3.67_Platforms">Platforms</a>,
108
    <a href="#V3.67_Interpreter">Interpreter</a>,
109
    <a href="#V3.67_Interpreter_PDF">Interpreter (PDF)</a>,
110
    <a href="#V3.67_Library">Library</a>
111
</ul>
112
<li><a href="#Version3.66">Version 3.66 (limited) (4/8/96)</a>
113
<ul>
114
<li><a href="#V3.66_Documentation">Documentation</a>,
115
    <a href="#V3.66_Procedures">Procedures</a>,
116
    <a href="#V3.66_Utilities">Utilities</a>,
117
    <a href="#V3.66_Drivers">Drivers</a>,
118
    <a href="#V3.66_Platforms">Platforms</a>,
119
    <a href="#V3.66_Fonts">Fonts</a>,
120
    <a href="#V3.66_Interpreter">Interpreter</a>,
121
    <a href="#V3.66_Interpreter_PDF">Interpreter (PDF)</a>,
122
    <a href="#V3.66_Streams">Streams</a>,
123
    <a href="#V3.66_Library">Library</a>
124
</ul>
125
<li><a href="#Version3.65">Version 3.65 (limited) (3/9/96)</a>
126
<ul>
127
<li><a href="#V3.65_Documentation">Documentation</a>,
128
    <a href="#V3.65_Procedures">Procedures</a>,
129
    <a href="#V3.65_Utilities">Utilities</a>,
130
    <a href="#V3.65_Drivers">Drivers</a>,
131
    <a href="#V3.65_Platforms">Platforms</a>,
132
    <a href="#V3.65_Interpreter">Interpreter</a>,
133
    <a href="#V3.65_Interpreter_PDF">Interpreter (PDF)</a>,
134
    <a href="#V3.65_Streams">Streams</a>,
135
    <a href="#V3.65_Library">Library</a>
136
</ul>
137
<li><a href="#Version3.64">Version 3.64 (limited, incremental) (1/27/96)</a>
138
<ul>
139
<li><a href="#V3.64_Documentation">Documentation</a>,
140
    <a href="#V3.64_Procedures">Procedures</a>,
141
    <a href="#V3.64_Utilities">Utilities</a>,
142
    <a href="#V3.64_Drivers">Drivers</a>,
143
    <a href="#V3.64_Platforms">Platforms</a>,
144
    <a href="#V3.64_Interpreter">Interpreter</a>,
145
    <a href="#V3.64_Streams">Streams</a>,
146
    <a href="#V3.64_Library">Library</a>
147
</ul>
148
<li><a href="#Version3.63">Version 3.63 (limited, incremental) (1/14/96)</a>
149
<ul>
150
<li><a href="#V3.63_Documentation">Documentation</a>,
151
    <a href="#V3.63_Procedures">Procedures</a>,
152
    <a href="#V3.63_Utilities">Utilities</a>,
153
    <a href="#V3.63_Drivers">Drivers</a>,
154
    <a href="#V3.63_Platforms">Platforms</a>,
155
    <a href="#V3.63_Interpreter">Interpreter</a>,
156
    <a href="#V3.63_Interpreter_PDF">Interpreter (PDF)</a>,
157
    <a href="#V3.63_Streams">Streams</a>,
158
    <a href="#V3.63_Library">Library</a>
159
</ul>
160
<li><a href="#Version3.62">Version 3.62 (limited, incremental) (12/26/95)</a>
161
<ul>
162
<li><a href="#V3.62_Documentation">Documentation</a>,
163
    <a href="#V3.62_Procedures">Procedures</a>,
164
    <a href="#V3.62_Interpreter">Interpreter</a>,
165
    <a href="#V3.62_Interpreter_PDF">Interpreter (PDF)</a>,
166
    <a href="#V3.62_Library">Library</a>
167
</ul>
168
<li><a href="#Version3.61">Version 3.61 (limited) (12/10/95)</a>
169
<ul>
170
<li><a href="#V3.61_Documentation">Documentation</a>,
171
    <a href="#V3.61_Procedures">Procedures</a>,
172
    <a href="#V3.61_Utilities">Utilities</a>,
173
    <a href="#V3.61_Drivers">Drivers</a>,
174
    <a href="#V3.61_Platforms">Platforms</a>,
175
    <a href="#V3.61_Fonts">Fonts</a>,
176
    <a href="#V3.61_Interpreter">Interpreter</a>,
177
    <a href="#V3.61_Interpreter_PDF">Interpreter (PDF)</a>,
178
    <a href="#V3.61_Streams">Streams</a>,
179
    <a href="#V3.61_Library">Library</a>
180
</ul>
181
<li><a href="#Version3.60">Version 3.60 (limited) (11/20/95)</a>
182
<ul>
183
<li><a href="#V3.60_Documentation">Documentation</a>,
184
    <a href="#V3.60_Procedures">Procedures</a>,
185
    <a href="#V3.60_Utilities">Utilities</a>,
186
    <a href="#V3.60_Drivers">Drivers</a>,
187
    <a href="#V3.60_Platforms">Platforms</a>,
188
    <a href="#V3.60_Fonts">Fonts</a>,
189
    <a href="#V3.60_Interpreter">Interpreter</a>,
190
    <a href="#V3.60_Interpreter_PDF">Interpreter (PDF)</a>,
191
    <a href="#V3.60_Streams">Streams</a>,
192
    <a href="#V3.60_Library">Library</a>
193
</ul>
194
<li><a href="#Version3.53">Version 3.53 (1/10/96)</a>
195
<ul>
196
<li><a href="#V3.53_Documentation">Documentation</a>,
197
    <a href="#V3.53_Procedures">Procedures</a>,
198
    <a href="#V3.53_Utilities">Utilities</a>,
199
    <a href="#V3.53_Drivers">Drivers</a>,
200
    <a href="#V3.53_Platforms">Platforms</a>,
201
    <a href="#V3.53_Fonts">Fonts</a>,
202
    <a href="#V3.53_Interpreter">Interpreter</a>,
203
    <a href="#V3.53_Interpreter_PDF">Interpreter (PDF)</a>,
204
    <a href="#V3.53_Streams">Streams</a>,
205
    <a href="#V3.53_Library">Library</a>
206
</ul>
207
<li><a href="#Version3.52">Version 3.52 (limited) (10/6/95)</a>
208
<ul>
209
<li><a href="#V3.52_Procedures">Procedures</a>,
210
    <a href="#V3.52_Interpreter">Interpreter</a>,
211
    <a href="#V3.52_Library">Library</a>
212
</ul>
213
<li><a href="#Version3.51">Version 3.51 (9/27/95)</a>
214
<ul>
215
<li><a href="#V3.51_Documentation">Documentation</a>,
216
    <a href="#V3.51_Procedures">Procedures</a>,
217
    <a href="#V3.51_Utilities">Utilities</a>,
218
    <a href="#V3.51_Drivers">Drivers</a>,
219
    <a href="#V3.51_Platforms">Platforms</a>,
220
    <a href="#V3.51_Interpreter">Interpreter</a>,
221
    <a href="#V3.51_Interpreter_PDF">Interpreter (PDF)</a>,
222
    <a href="#V3.51_Library">Library</a>
223
</ul>
224
<li><a href="#Version3.50">Version 3.50 (limited) (9/24/95)</a>
225
<ul>
226
<li><a href="#V3.50_Procedures">Procedures</a>,
227
    <a href="#V3.50_Utilities">Utilities</a>,
228
    <a href="#V3.50_Drivers">Drivers</a>,
229
    <a href="#V3.50_Interpreter">Interpreter</a>,
230
    <a href="#V3.50_Interpreter_PDF">Interpreter (PDF)</a>,
231
    <a href="#V3.50_Library">Library</a>
232
</ul>
233
<li><a href="#Version3.49">Version 3.49 (limited) (9/20/95)</a>
234
<ul>
235
<li><a href="#V3.49_Documentation">Documentation</a>,
236
    <a href="#V3.49_Procedures">Procedures</a>,
237
    <a href="#V3.49_Drivers">Drivers</a>,
238
    <a href="#V3.49_Platforms">Platforms</a>,
239
    <a href="#V3.49_Interpreter">Interpreter</a>,
240
    <a href="#V3.49_Library">Library</a>
241
</ul>
242
<li><a href="#Version3.48">Version 3.48 (limited) (9/17/95)</a>
243
<ul>
244
<li><a href="#V3.48_Documentation">Documentation</a>,
245
    <a href="#V3.48_Procedures">Procedures</a>,
246
    <a href="#V3.48_Drivers">Drivers</a>,
247
    <a href="#V3.48_Platforms">Platforms</a>,
248
    <a href="#V3.48_Interpreter">Interpreter</a>,
249
    <a href="#V3.48_Interpreter_PDF">Interpreter (PDF)</a>,
250
    <a href="#V3.48_Library">Library</a>
251
</ul>
252
<li><a href="#Version3.47">Version 3.47 (limited) (9/14/95)</a>
253
<ul>
254
<li><a href="#V3.47_Documentation">Documentation</a>,
255
    <a href="#V3.47_Procedures">Procedures</a>,
256
    <a href="#V3.47_Utilities">Utilities</a>,
257
    <a href="#V3.47_Drivers">Drivers</a>,
258
    <a href="#V3.47_Platforms">Platforms</a>,
259
    <a href="#V3.47_Fonts">Fonts</a>,
260
    <a href="#V3.47_Interpreter">Interpreter</a>,
261
    <a href="#V3.47_Interpreter_PDF">Interpreter (PDF)</a>,
262
    <a href="#V3.47_Streams">Streams</a>,
263
    <a href="#V3.47_Library">Library</a>
264
</ul>
265
<li><a href="#Version3.46">Version 3.46 (limited) (9/4/95)</a>
266
<ul>
267
<li><a href="#V3.46_Documentation">Documentation</a>,
268
    <a href="#V3.46_Procedures">Procedures</a>,
269
    <a href="#V3.46_Utilities">Utilities</a>,
270
    <a href="#V3.46_Drivers">Drivers</a>,
271
    <a href="#V3.46_Platforms">Platforms</a>,
272
    <a href="#V3.46_Interpreter">Interpreter</a>,
273
    <a href="#V3.46_Interpreter_PDF">Interpreter (PDF)</a>,
274
    <a href="#V3.46_Library">Library</a>
275
</ul>
276
<li><a href="#Version3.45">Version 3.45 (limited) (8/27/95)</a>
277
<ul>
278
<li><a href="#V3.45_Documentation">Documentation</a>,
279
    <a href="#V3.45_Procedures">Procedures</a>,
280
    <a href="#V3.45_Utilities">Utilities</a>,
281
    <a href="#V3.45_Drivers">Drivers</a>,
282
    <a href="#V3.45_Platforms">Platforms</a>,
283
    <a href="#V3.45_Interpreter">Interpreter</a>,
284
    <a href="#V3.45_Interpreter_PDF">Interpreter (PDF)</a>,
285
    <a href="#V3.45_Streams">Streams</a>,
286
    <a href="#V3.45_Library">Library</a>
287
</ul>
288
<li><a href="#Version3.44">Version 3.44 (limited) (8/21/95)</a>
289
<ul>
290
<li><a href="#V3.44_Documentation">Documentation</a>,
291
    <a href="#V3.44_Procedures">Procedures</a>,
292
    <a href="#V3.44_Utilities">Utilities</a>,
293
    <a href="#V3.44_Drivers">Drivers</a>,
294
    <a href="#V3.44_Platforms">Platforms</a>,
295
    <a href="#V3.44_Interpreter">Interpreter</a>,
296
    <a href="#V3.44_Interpreter_PDF">Interpreter (PDF)</a>,
297
    <a href="#V3.44_Library">Library</a>
298
</ul>
299
<li><a href="#Version3.43">Version 3.43 (limited) (8/10/95)</a>
300
<ul>
301
<li><a href="#V3.43_Documentation">Documentation</a>,
302
    <a href="#V3.43_Procedures">Procedures</a>,
303
    <a href="#V3.43_Platforms">Platforms</a>,
304
    <a href="#V3.43_Fonts">Fonts</a>,
305
    <a href="#V3.43_Interpreter">Interpreter</a>,
306
    <a href="#V3.43_Streams">Streams</a>,
307
    <a href="#V3.43_Library">Library</a>
308
</ul>
309
<li><a href="#Version3.42">Version 3.42 (limited) (8/2/95)</a>
310
<ul>
311
<li><a href="#V3.42_Documentation">Documentation</a>,
312
    <a href="#V3.42_Procedures">Procedures</a>,
313
    <a href="#V3.42_Platforms">Platforms</a>,
314
    <a href="#V3.42_Interpreter">Interpreter</a>,
315
    <a href="#V3.42_Streams">Streams</a>,
316
    <a href="#V3.42_Library">Library</a>
317
</ul>
318
<li><a href="#Version3.41">Version 3.41 (limited) (7/27/95)</a>
319
<ul>
320
<li><a href="#V3.41_Documentation">Documentation</a>,
321
    <a href="#V3.41_Procedures">Procedures</a>,
322
    <a href="#V3.41_Utilities">Utilities</a>,
323
    <a href="#V3.41_Drivers">Drivers</a>,
324
    <a href="#V3.41_Platforms">Platforms</a>,
325
    <a href="#V3.41_Fonts">Fonts</a>,
326
    <a href="#V3.41_Interpreter">Interpreter</a>,
327
    <a href="#V3.41_Interpreter_PDF">Interpreter (PDF)</a>,
328
    <a href="#V3.41_Streams">Streams</a>,
329
    <a href="#V3.41_Library">Library</a>
330
</ul>
331
<li><a href="#Version3.40">Version 3.40 (limited) (6/28/95)</a>
332
<ul>
333
<li><a href="#V3.40_Documentation">Documentation</a>,
334
    <a href="#V3.40_Procedures">Procedures</a>,
335
    <a href="#V3.40_Utilities">Utilities</a>,
336
    <a href="#V3.40_Platforms">Platforms</a>,
337
    <a href="#V3.40_Interpreter">Interpreter</a>,
338
    <a href="#V3.40_Streams">Streams</a>,
339
    <a href="#V3.40_Library">Library</a>
340
</ul>
341
<li><a href="#Version3.39">Version 3.39 (limited) (6/24/95)</a>
342
<ul>
343
<li><a href="#V3.39_Documentation">Documentation</a>,
344
    <a href="#V3.39_Procedures">Procedures</a>,
345
    <a href="#V3.39_Utilities">Utilities</a>,
346
    <a href="#V3.39_Platforms">Platforms</a>,
347
    <a href="#V3.39_Fonts">Fonts</a>,
348
    <a href="#V3.39_Interpreter">Interpreter</a>,
349
    <a href="#V3.39_Streams">Streams</a>,
350
    <a href="#V3.39_Library">Library</a>
351
</ul>
352
<li><a href="#Version3.38">Version 3.38 (limited) (6/18/95)</a>
353
<ul>
354
<li><a href="#V3.38_Documentation">Documentation</a>,
355
    <a href="#V3.38_Procedures">Procedures</a>,
356
    <a href="#V3.38_Utilities">Utilities</a>,
357
    <a href="#V3.38_Drivers">Drivers</a>,
358
    <a href="#V3.38_Platforms">Platforms</a>,
359
    <a href="#V3.38_Fonts">Fonts</a>,
360
    <a href="#V3.38_Interpreter">Interpreter</a>,
361
    <a href="#V3.38_Interpreter_PDF">Interpreter (PDF)</a>,
362
    <a href="#V3.38_Streams">Streams</a>,
363
    <a href="#V3.38_Library">Library</a>
364
</ul>
365
<li><a href="#Version3.37">Version 3.37 (limited) (5/11/95)</a>
366
<ul>
367
<li><a href="#V3.37_Documentation">Documentation</a>,
368
    <a href="#V3.37_Procedures">Procedures</a>,
369
    <a href="#V3.37_Utilities">Utilities</a>,
370
    <a href="#V3.37_Drivers">Drivers</a>,
371
    <a href="#V3.37_Fonts">Fonts</a>,
372
    <a href="#V3.37_Interpreter_PostScript">Interpreter (PostScript)</a>,
373
    <a href="#V3.37_Interpreter_PDF">Interpreter (PDF)</a>
374
</ul>
375
<li><a href="#Version3.36">Version 3.36 (limited) (5/4/95)</a>
376
<ul>
377
<li><a href="#V3.36_Documentation">Documentation</a>,
378
    <a href="#V3.36_Procedures">Procedures</a>,
379
    <a href="#V3.36_Drivers">Drivers</a>,
380
    <a href="#V3.36_Interpreter">Interpreter</a>,
381
    <a href="#V3.36_Library">Library</a>
382
</ul>
383
<li><a href="#Version3.35">Version 3.35 (internal) (5/2/95)</a>
384
<ul>
385
<li><a href="#V3.35_Documentation">Documentation</a>,
386
    <a href="#V3.35_Procedures">Procedures</a>,
387
    <a href="#V3.35_Utilities">Utilities</a>,
388
    <a href="#V3.35_Drivers">Drivers</a>,
389
    <a href="#V3.35_Platforms">Platforms</a>,
390
    <a href="#V3.35_Fonts">Fonts</a>,
391
    <a href="#V3.35_Interpreter">Interpreter</a>,
392
    <a href="#V3.35_Library">Library</a>
393
</ul>
394
<li><a href="#Version3.34">Version 3.34 (internal) (4/18/95)</a>
395
<ul>
396
<li><a href="#V3.34_Documentation">Documentation</a>,
397
    <a href="#V3.34_Procedures">Procedures</a>,
398
    <a href="#V3.34_Interpreter">Interpreter</a>,
399
    <a href="#V3.34_Library">Library</a>
400
</ul>
401
<li><a href="#Version3.33">Version 3.33 (4/13/95)</a>
402
<ul>
403
<li><a href="#V3.33_Documentation">Documentation</a>,
404
    <a href="#V3.33_Procedures">Procedures</a>,
405
    <a href="#V3.33_Utilities">Utilities</a>,
406
    <a href="#V3.33_Drivers">Drivers</a>,
407
    <a href="#V3.33_Platforms">Platforms</a>,
408
    <a href="#V3.33_Fonts">Fonts</a>,
409
    <a href="#V3.33_Library">Library</a>
410
</ul>
411
<li><a href="#Version3.32">Version 3.32 (4/7/95)</a>
412
<ul>
413
<li><a href="#V3.32_Documentation">Documentation</a>,
414
    <a href="#V3.32_Procedures">Procedures</a>,
415
    <a href="#V3.32_Utilities">Utilities</a>,
416
    <a href="#V3.32_Drivers">Drivers</a>,
417
    <a href="#V3.32_Platforms">Platforms</a>,
418
    <a href="#V3.32_Interpreter">Interpreter</a>,
419
    <a href="#V3.32_Streams">Streams</a>,
420
    <a href="#V3.32_Library">Library</a>
421
</ul>
422
<li><a href="#Version3.31">Version 3.31 (4/2/95)</a>
423
<ul>
424
<li><a href="#V3.31_Documentation">Documentation</a>,
425
    <a href="#V3.31_Procedures">Procedures</a>,
426
    <a href="#V3.31_Utilities">Utilities</a>,
427
    <a href="#V3.31_Drivers">Drivers</a>,
428
    <a href="#V3.31_Platforms">Platforms</a>,
429
    <a href="#V3.31_Interpreter">Interpreter</a>,
430
    <a href="#V3.31_Streams">Streams</a>,
431
    <a href="#V3.31_Library">Library</a>
432
</ul>
433
<li><a href="#Version3.30">Version 3.30 (beta) (3/21/95)</a>
434
<ul>
435
<li><a href="#V3.30_Documentation">Documentation</a>,
436
    <a href="#V3.30_Utilities">Utilities</a>,
437
    <a href="#V3.30_Drivers">Drivers</a>,
438
    <a href="#V3.30_Interpreter_PostScript">Interpreter (PostScript)</a>,
439
    <a href="#V3.30_Interpreter_PDF">Interpreter (PDF)</a>,
440
    <a href="#V3.30_Library">Library</a>
441
</ul>
442
<li><a href="#Version3.29">Version 3.29 (internal) (3/8/95)</a>
443
<ul>
444
<li><a href="#V3.29_Documentation">Documentation</a>,
445
    <a href="#V3.29_Procedures">Procedures</a>,
446
    <a href="#V3.29_Utilities">Utilities</a>,
447
    <a href="#V3.29_Fonts">Fonts</a>,
448
    <a href="#V3.29_Drivers">Drivers</a>,
449
    <a href="#V3.29_Interpreter_PostScript">Interpreter (PostScript)</a>,
450
    <a href="#V3.29_Interpreter_PDF">Interpreter (PDF)</a>,
451
    <a href="#V3.29_Streams">Streams</a>,
452
    <a href="#V3.29_Library">Library</a>
453
</ul>
454
<li><a href="#Version3.28">Version 3.28 (beta) (2/13/95)</a>
455
<ul>
456
<li><a href="#V3.28_Documentation">Documentation</a>,
457
    <a href="#V3.28_Procedures">Procedures</a>,
458
    <a href="#V3.28_Utilities">Utilities</a>,
459
    <a href="#V3.28_Drivers">Drivers</a>,
460
    <a href="#V3.28_Interpreter">Interpreter</a>,
461
    <a href="#V3.28_Library">Library</a>
462
</ul>
463
<li><a href="#Version3.27">Version 3.27 (beta)(withdrawn) (2/8/95)</a>
464
<ul>
465
<li><a href="#V3.27_Documentation">Documentation</a>,
466
    <a href="#V3.27_Procedures">Procedures</a>,
467
    <a href="#V3.27_Utilities">Utilities</a>,
468
    <a href="#V3.27_Drivers">Drivers</a>,
469
    <a href="#V3.27_Platforms">Platforms</a>,
470
    <a href="#V3.27_Fonts">Fonts</a>,
471
    <a href="#V3.27_Interpreter">Interpreter</a>,
472
    <a href="#V3.27_Streams">Streams</a>,
473
    <a href="#V3.27_Library">Library</a>
474
</ul>
475
<li><a href="#Version3.26">Version 3.26 (beta) (2/1/95)</a>
476
<ul>
477
<li><a href="#V3.26_Documentation">Documentation</a>,
478
    <a href="#V3.26_Procedures">Procedures</a>,
479
    <a href="#V3.26_Utilities">Utilities</a>,
480
    <a href="#V3.26_Drivers">Drivers</a>,
481
    <a href="#V3.26_Platforms">Platforms</a>,
482
    <a href="#V3.26_Interpreter">Interpreter</a>,
483
    <a href="#V3.26_Streams">Streams</a>,
484
    <a href="#V3.26_Library">Library</a>
485
</ul>
486
<li><a href="#Version3.25">Version 3.25 (beta) (1/24/95)</a>
487
<ul>
488
<li><a href="#V3.25_Documentation">Documentation</a>,
489
    <a href="#V3.25_Procedures">Procedures</a>,
490
    <a href="#V3.25_Drivers">Drivers</a>,
491
    <a href="#V3.25_Platforms">Platforms</a>,
492
    <a href="#V3.25_Interpreter">Interpreter</a>,
493
    <a href="#V3.25_Library">Library</a>
494
</ul>
495
<li><a href="#Version3.24">Version 3.24 (beta) (1/17/95)</a>
496
<ul>
497
<li><a href="#V3.24_Documentation">Documentation</a>,
498
    <a href="#V3.24_Procedures">Procedures</a>,
499
    <a href="#V3.24_Drivers">Drivers</a>,
500
    <a href="#V3.24_Platforms">Platforms</a>,
501
    <a href="#V3.24_Fonts">Fonts</a>,
502
    <a href="#V3.24_Interpreter">Interpreter</a>,
503
    <a href="#V3.24_Interpreter_PostScript">Interpreter (PostScript)</a>,
504
    <a href="#V3.24_Interpreter_PDF">Interpreter (PDF)</a>,
505
    <a href="#V3.24_Streams">Streams</a>,
506
    <a href="#V3.24_Library">Library</a>
507
</ul>
508
<li><a href="#Version3.23">Version 3.23 (beta) (1/5/95)</a>
509
<ul>
510
<li><a href="#V3.23_Documentation">Documentation</a>,
511
    <a href="#V3.23_Procedures">Procedures</a>,
512
    <a href="#V3.23_Utilities">Utilities</a>,
513
    <a href="#V3.23_Drivers">Drivers</a>,
514
    <a href="#V3.23_Platforms">Platforms</a>,
515
    <a href="#V3.23_Fonts">Fonts</a>,
516
    <a href="#V3.23_Interpreter_PostScript">Interpreter (PostScript)</a>,
517
    <a href="#V3.23_Interpreter_PDF">Interpreter (PDF)</a>,
518
    <a href="#V3.23_Streams">Streams</a>,
519
    <a href="#V3.23_Library">Library</a>
520
</ul>
521
<li><a href="#Version3.22">Version 3.22 (beta) (11/30/94)</a>
522
<ul>
523
<li><a href="#V3.22_Procedures">Procedures</a>,
524
    <a href="#V3.22_Drivers">Drivers</a>,
525
    <a href="#V3.22_Platforms">Platforms</a>,
526
    <a href="#V3.22_Fonts">Fonts</a>,
527
    <a href="#V3.22_Interpreter">Interpreter</a>,
528
    <a href="#V3.22_Streams">Streams</a>,
529
    <a href="#V3.22_Library">Library</a>
530
</ul>
531
<li><a href="#Version3.21">Version 3.21 (beta) (11/17/94)</a>
532
<ul>
533
<li><a href="#V3.21_Documentation">Documentation</a>,
534
    <a href="#V3.21_Procedures">Procedures</a>,
535
    <a href="#V3.21_Utilities">Utilities</a>,
536
    <a href="#V3.21_Drivers">Drivers</a>,
537
    <a href="#V3.21_Platforms">Platforms</a>,
538
    <a href="#V3.21_Fonts">Fonts</a>,
539
    <a href="#V3.21_Interpreter">Interpreter</a>,
540
    <a href="#V3.21_Streams">Streams</a>,
541
    <a href="#V3.21_Library">Library</a>
542
</ul>
543
<li><a href="#Version3.20">Version 3.20 (beta) (10/31/94)</a>
544
<ul>
545
<li><a href="#V3.20_Documentation">Documentation</a>,
546
    <a href="#V3.20_Procedures">Procedures</a>,
547
    <a href="#V3.20_Utilities">Utilities</a>,
548
    <a href="#V3.20_Drivers">Drivers</a>,
549
    <a href="#V3.20_Platforms">Platforms</a>,
550
    <a href="#V3.20_Fonts">Fonts</a>,
551
    <a href="#V3.20_Interpreters">Interpreters</a>,
552
    <a href="#V3.20_Library">Library</a>
553
</ul>
554
<li><a href="#Version3.13">Version 3.13(private) (10/3/94)</a>
555
<ul>
556
<li><a href="#V3.13_Documentation">Documentation</a>,
557
    <a href="#V3.13_Procedures">Procedures</a>,
558
    <a href="#V3.13_Utilities">Utilities</a>,
559
    <a href="#V3.13_Drivers">Drivers</a>,
560
    <a href="#V3.13_Platforms">Platforms</a>,
561
    <a href="#V3.13_Fonts">Fonts</a>,
562
    <a href="#V3.13_Interpreter">Interpreter</a>,
563
    <a href="#V3.13_Streams">Streams</a>,
564
    <a href="#V3.13_Library">Library</a>
565
</ul>
566
<li><a href="#Version3.12">Version 3.12 (9/29/94)</a>
567
<ul>
568
<li><a href="#V3.12_Documentation">Documentation</a>,
569
    <a href="#V3.12_Procedures">Procedures</a>,
570
    <a href="#V3.12_Drivers">Drivers</a>,
571
    <a href="#V3.12_Platforms">Platforms</a>,
572
    <a href="#V3.12_Interpreter">Interpreter</a>,
573
    <a href="#V3.12_Streams">Streams</a>,
574
    <a href="#V3.12_Library">Library</a>
575
</ul>
576
<li><a href="#Version3.1.1">Version 3.1.1 (9/25/94)</a>
577
<ul>
578
<li><a href="#V3.1.1_Documentation">Documentation</a>,
579
    <a href="#V3.1.1_Procedures">Procedures</a>,
580
    <a href="#V3.1.1_Drivers">Drivers</a>,
581
    <a href="#V3.1.1_Platforms">Platforms</a>,
582
    <a href="#V3.1.1_Interpreter">Interpreter</a>
583
</ul>
584
<li><a href="#Version3.1">Version 3.1 (9/20/94)</a>
585
<ul>
586
<li><a href="#V3.1_Documentation">Documentation</a>,
587
    <a href="#V3.1_Procedures">Procedures</a>,
588
    <a href="#V3.1_Drivers">Drivers</a>,
589
    <a href="#V3.1_Interpreter">Interpreter</a>,
590
    <a href="#V3.1_Streams">Streams</a>,
591
    <a href="#V3.1_Library">Library</a>
592
</ul>
593
<li><a href="#Version3.0.3">Version 3.0.3 (9/16/94)</a>
594
<ul>
595
<li><a href="#V3.0.3_Documentation">Documentation</a>,
596
    <a href="#V3.0.3_Procedures">Procedures</a>,
597
    <a href="#V3.0.3_Utilities">Utilities</a>,
598
    <a href="#V3.0.3_Drivers">Drivers</a>,
599
    <a href="#V3.0.3_Platforms">Platforms</a>,
600
    <a href="#V3.0.3_Fonts">Fonts</a>,
601
    <a href="#V3.0.3_Streams">Streams</a>,
602
    <a href="#V3.0.3_Interpreter">Interpreter</a>,
603
    <a href="#V3.0.3_Library">Library</a>
604
</ul>
605
<li><a href="#Version3.02">Version 3.02 (8/30/94)</a>
606
<ul>
607
<li><a href="#V3.02_Documentation">Documentation</a>,
608
    <a href="#V3.02_Procedures">Procedures</a>,
609
    <a href="#V3.02_Utilities">Utilities</a>,
610
    <a href="#V3.02_Drivers">Drivers</a>,
611
    <a href="#V3.02_Platforms">Platforms</a>,
612
    <a href="#V3.02_Fonts">Fonts</a>,
613
    <a href="#V3.02_Interpreter">Interpreter</a>,
614
    <a href="#V3.02_Streams">Streams</a>,
615
    <a href="#V3.02_Library">Library</a>
616
</ul>
617
<li><a href="#Version3.01">Version 3.01 (8/14/94)</a>
618
<ul>
619
<li><a href="#V3.01_Documentation">Documentation</a>,
620
    <a href="#V3.01_Procedures">Procedures</a>,
621
    <a href="#V3.01_Utilities">Utilities</a>,
622
    <a href="#V3.01_Drivers">Drivers</a>,
623
    <a href="#V3.01_Platforms">Platforms</a>,
624
    <a href="#V3.01_Fonts">Fonts</a>,
625
    <a href="#V3.01_Interpreter">Interpreter</a>,
626
    <a href="#V3.01_Streams">Streams</a>,
627
    <a href="#V3.01_Library">Library</a>
628
</ul>
629
<li><a href="#Version3.0">Version 3.0 (8/1/94)</a>
630
<ul>
631
<li><a href="#V3.0_Documentation">Documentation</a>,
632
    <a href="#V3.0_Procedures">Procedures</a>,
633
    <a href="#V3.0_Utilities">Utilities</a>,
634
    <a href="#V3.0_Drivers">Drivers</a>,
635
    <a href="#V3.0_Platforms">Platforms</a>,
636
    <a href="#V3.0_Fonts">Fonts</a>,
637
    <a href="#V3.0_Interpreter">Interpreter</a>,
638
    <a href="#V3.0_Streams">Streams</a>,
639
    <a href="#V3.0_Library">Library</a>
640
</ul>
641
</ul></blockquote>
642
 
643
<!-- [1.2 end table of contents] =========================================== -->
644
 
645
<!-- [1.3 begin hint] ====================================================== -->
646
 
647
<p>
648
This document is a history of Ghostscript releases numbered 3.n.  For more
649
recent changes, see the the other history documents and, for the latest
650
versions, the news:
651
 
652
<blockquote>
653
<a href="News.htm">News</a><br>
654
<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
655
History of Ghostscript versions 3.n (this document)<br>
656
<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
657
<a href="History1.htm">History of Ghostscript versions 1.n</a>
658
</blockquote>
659
 
660
<p>For other information, see the <a href="Readme.htm">Ghostscript
661
overview</a>.
662
 
663
<!-- [1.3 end hint] ======================================================== -->
664
 
665
<hr>
666
 
667
<!-- [1.0 end visible header] ============================================== -->
668
 
669
<h2><a name="Version3.70p1"></a>Version 3.70 patch 1 (6/24/96)</h2>
670
 
671
<p>
672
This contains a few last-minute patches before the release.
673
 
674
<h3><a name="V3.70p1_Procedures"></a>Procedures</h3><pre>
675
Comments out the color inkjet drivers in the cc-based makefile, because a
676
bug in Sun's cc prevents them from compiling.  (cc-head.mak)
677
 
678
</pre><h3><a name="V3.70p1_Drivers"></a>Drivers</h3><pre>
679
Fixes bugs:
680
	- The os2prn driver smashed memory.  (gdevos2p.c)
681
	- Some initialized structures weren't declared 'static'.
682
(gdevpdf.c, gdevpdfm.c)
683
	- The PNG driver wouldn't compile with some older versions of the
684
PNG library.  (gdevpng.c)
685
 
686
</pre>
687
 
688
<h2><a name="Version3.70"></a>Version 3.70 (limited) (6/23/96)</h2>
689
 
690
<p>
691
This is the candidate fileset for 4.0.  Aside from one optimization
692
for the PDF writer, the only changes are bug fixes.
693
 
694
<h3><a name="V3.70_Documentation"></a>Documentation</h3><pre>
695
 
696
Renames all the documentation files from *.doc to *.txt, since the .doc
697
extension didn't give any information about the format of the file.
698
(readme, *.doc, *.txt)
699
 
700
Notes that IJG JPEG library v6[a] is now required.  (jpeg.mak)
701
 
702
Brings ps2pdf.1 up to date.  (ps2pdf.1)
703
 
704
Adds a new file describing Aladdin's C coding practices.  (c-style.txt)
705
 
706
Updates the man pages to refer to version 4.0.  (gs.1, pdf2ps.1, ps2ascii.1,
707
ps2pdf.1)
708
 
709
</pre><h3><a name="V3.70_Procedures"></a>Procedures</h3><pre>
710
 
711
Changes some file names to fit within the MS-DOS 8.3 limit.  (gs.mak)
712
 
713
Adds the PDF writer to the remaining 32-bit configurations (Watcom, OS/2,
714
MSC).  (watc.mak, watcwin.mak, os2.mak, msc.mak, msvcwint.mak)
715
 
716
Changes the -sFONTMAP= switch so it can take a list of font names, like a
717
search path.  (use.txt)
718
 
719
</pre><h3><a name="V3.70_Drivers"></a>Drivers</h3><pre>
720
 
721
Fixes bugs:
722
	- Signed and unsigned values were mixed inconsistently.  (gdevcdj.c)
723
	- PDF files could contain e-format floating point numbers, which the
724
PDF specification doesn't allow.  (gdevpdfx.h, gdevpdf*.c)
725
	- The PDF writer didn't handle glyphshow properly.  (gs_pdfwr.ps)
726
	- The PDF writer did the wrong thing with fonts whose FontMatrix had
727
a non-zero translation component.  (gs_pdfwr.ps, gdevpdft.c)
728
	- The stand-alone bounding box device could crash when setting
729
parameters.  (gdevbbox.c)
730
	- The mswinpr2 driver smashed memory.  (gdevwpr2.c)
731
 
732
Changes the PDF writer so that if it encounters a re-encoded character, it
733
tries to map it to an encoded character in the standard (ISO Latin-1)
734
encoding rather than converting the entire string containing it to a bitmap.
735
This dramatically improves output file size for files with a few divergently
736
encoded characters, but it may cause the text in the PDF file to differ from
737
the text in the PostScript input.  (gdevpdft.c)
738
 
739
Disallows BitsPerPixel=16 in the MS Windows and OS/2 drivers, since this bit
740
depth is not supported by Windows and would require special extra buffering.
741
(install.txt, dwtext.h, dwtext.cpp, gdevmswn.c, gdevpm.c, gdevwpr2.c)
742
 
743
</pre><h3><a name="V3.70_Platforms"></a>Platforms</h3><pre>
744
 
745
Fixes bugs:
746
	- On the PC platforms, file names weren't changed to reflect the
747
value of CONFIG.  (gs.mak, bc*.mak, ms*.mak, os2.mak, tc*.mak, watc*.mak,
748
wccommon.mak)
749
 
750
Modifies some makefiles for greater reusability.  (bclib.mak, watclib.mak)
751
 
752
</pre><h3><a name="V3.70_Fonts"></a>Fonts</h3><pre>
753
 
754
Changes the font searching rules in the following NON-BACKWARD-COMPATIBLE
755
way: (gs_fonts.ps, gs_res.ps)
756
	- -sFONTMAP=files specifies a list of files containing fontmaps;
757
previously, it specified only a single fontmap file.
758
	- If -sFONTMAP= is not used, the interpreter reads the Fontmaps from
759
*all* directories on the search path, and does so even if FONTPATH or
760
GS_FONTPATH is set; previously, it read only the first Fontmap, and only if
761
[GS_]FONTPATH was not set.
762
	- Fontmap(s) take precedence over [GS_]FONTPATH; previously,
763
[GS_]FONTPATH caused Fontmap to be ignored.  (You can still force Fontmap to
764
be ignored with -dNOFONTMAP.)
765
	- Earlier [GS_]FONTPATH entries take precedence over later;
766
previously, later entries took precedence over earlier.  Note that this is
767
different from Fontmap: earlier Fontmaps in the search path take precedence
768
over later, but within a single Fontmap, later entries take precedence over
769
earlier (for backward compatibility).
770
	- [GS_]FONTPATH is consulted only if there is no Fontmap entry for a
771
font, or no Fontmap entry leads to successful loading; previously,
772
[GS_]FONTPATH was always consulted at startup.
773
	- If loading a font fails, the interpreter tries the next Fontmap
774
entry; previously, it fell back to font substitution.
775
 
776
</pre><h3><a name="V3.70_Interpreter"></a>Interpreter</h3><pre>
777
 
778
Fixes bugs:
779
	- Filters didn't peek ahead for an EOD (see Streams below).
780
(zfileio.c, zpaint.c)
781
 
782
Splits up a file to allow internal access to user and system parameters even
783
in Level 1.  (zmisc2.c, zusparam.c)
784
 
785
Adds LIBPATH as a predefined name in systemdict.  Its value is an array of
786
strings comprising the library search path.  (imain.c)
787
 
788
</pre><h3><a name="V3.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
789
 
790
Fixes bugs:
791
	- A Dests dictionary entry with an array (rather than a dictionary)
792
value caused an error.  (pdf_main.ps)
793
	- Rotated pages could have incorrect translation and/or clipping.
794
(pdf_main.ps)
795
 
796
</pre><h3><a name="V3.70_Streams"></a>Streams</h3><pre>
797
 
798
Fixes bugs:
799
	- If a buffer boundary fell just before an EOD, and the client read
800
exactly as much data as was present before the EOD, filters didn't consume
801
the EOD.  (This is required as a tricky consequence of the Adobe
802
specification.)  (stream.h, strimpl.h, stream.c)
803
 
804
</pre><h3><a name="V3.70_Library"></a>Library</h3><pre>
805
 
806
Fixes bugs:
807
	- An extra column of bits could get turned on at the right edge of
808
masked or monochrome images.  (gximage2.c)
809
	- Rasterizing very long curves could cause arithmetic errors or
810
floating point overflows.  (gxpcopy.c)
811
	- Banding with large line widths could truncate curves or introduce
812
spurious lines.  (gxclpath.c)
813
 
814
</pre>
815
 
816
<hr>
817
 
818
<h2><a name="Version3.69"></a>Version 3.69 (limited) (6/14/96)</h2>
819
 
820
<p>
821
More bug fixes, plus one irresistible new feature: the ability to use
822
TrueType fonts as freely as Type 1 fonts.  Also, one new feature (outside
823
clipping) that was needed for Aladdin's PCL XL project.  We incremented the
824
version number because of the change in trapezoid and path filling (see
825
under Library below).
826
 
827
<h3><a name="V3.69_Documentation"></a>Documentation</h3><pre>
828
Brings documentation about fonts up to date.  (fonts.doc)
829
 
830
Updates current.doc to reflect changes since 3.53.  (current.doc)
831
 
832
Updates the DLL documentation to reflect recent changes.  (dll.doc)
833
 
834
Documents a workaround for the code generation bug in gcc 2.7.x.  (make.doc)
835
 
836
Changes the contact information for potential commercial customers in
837
Europe.  (new-user.doc)
838
 
839
Updates the OS/2 documentation to make it current.  (install.doc, make.doc)
840
 
841
Documents -dCOLORSCREEN=0.  (use.doc)
842
 
843
</pre><h3><a name="V3.69_Procedures"></a>Procedures</h3><pre>
844
 
845
Fixes bugs:
846
	- 'make clean' didn't work in the Watcom environment.
847
(wmakebat.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak, tccommon.mak,
848
unixhead.mak, wccommon.mak)
849
	- The X11 libraries were listed in an incorrect order.
850
(ansihead.mak, cc-head.mak, gcc-head.mak, ugcclib.mak, unix-end.mak)
851
	- The OS/2 makefile didn't ignore errors from `erase' commands.
852
(os2.mak)
853
 
854
Adds the PDF writer to the 32-bit MS Windows configuration.  (bcwin32.mak)
855
 
856
Adds the PNG drivers to the 32-bit MS Windows platform, since they now
857
compile properly.  (bcwin32.mak)
858
 
859
Changes the ttfont feature so that it refers to support for direct usage of
860
TrueType fonts; puts support for Type 42 fonts into a separate feature
861
(type42).  (gs.mak, int.mak)
862
 
863
Adds direct TrueType font support to the Windows platforms.  (bcwin.mak,
864
bcwin32.mak)
865
 
866
Rewrites vms.mak to be structured more like the other makefiles.  (vms.mak,
867
modules.lis)
868
 
869
Makes the device lists in vms-*.mak the same as those for the Unix
870
configurations.  (vms-cc.mak, vms-decc.mak, vms-gcc.mak)
871
 
872
Changes the default X library directory for gcc to /usr/X11/lib.
873
(gcc-head.mak)
874
 
875
Adds the list of devices to --help, since HylaFax depends on this.
876
(imainarg.c)
877
 
878
Adds -dCOLORSCREEN=0 to indicate use of 4 separate color screens with the
879
same frequency and angle.  (gs_init.ps)
880
 
881
</pre><h3><a name="V3.69_Utilities"></a>Utilities</h3><pre>
882
 
883
Fixes bugs:
884
	- When ps2epsi encountered a blank page, it called the
885
(undocumented) .quit operator with only one argument, causing a stack
886
underflow.  (ps2epsi.ps)
887
	- An extraneous file was included in the fileset.  (checkacc.ps)
888
	- A file was omitted from the fileset.  (bench.c)
889
	- Images in PostScript files produced by pdf2ps were processed about
890
50 times slower than they should have been.  (gs_pdf.ps)
891
 
892
</pre><h3><a name="V3.69_Drivers"></a>Drivers</h3><pre>
893
 
894
Fixes bugs:
895
	- An #include was omitted.  (gdevpdfi.c)
896
	- The BJC driver could get into an inconsistent state.  (gdevcdj.c)
897
	- Braces were omitted around the values for two initialized byte
898
arrays.  (gdevpcx.c)
899
	- A function used 'float' in its argument list, causing problems in
900
mixed ANSI/non-ANSI compilation.  (gdevcdj.c)
901
	- signed and unsigned char pointers were used inconsistently.
902
(gdevcdj.c, gdevcgml.c)
903
	- Some header files weren't protected against double inclusion.
904
(gdevprn.h, gdevtifs.h)
905
	- The 24-bit PNG driver included unnecessary copies of the color
906
mapping procedures.  (gdevpng.c)
907
 
908
Fixes bugs in the PDF writer:
909
	- The PDF writer sometimes produced a double // in front of a filter
910
name.  (gdevpdfi.c)
911
	- The PDF writer produced zero-width, zero-height images for
912
non-standard fonts.  (bug introduced since 3.68) (gdevpdfi.c)
913
	- The PDF writer got confused if the input file invoked
914
setpagedevice.  (gdevpdfp.c)
915
	- The PDF writer put annotations on the page after the one they were
916
supposed to be on.  (gdevpdf.c)
917
	- The PDF writer sometimes failed to set the font when needed.
918
(gdevpdf.c)
919
	- The PDF writer could produce in-line images that were too large.
920
(gdevpdfi.c)
921
	- The PDF writer didn't scale explicit character and word spacing
922
(ashow/widthshow/awidthshow) properly.  (gdevpdft.c)
923
	- The PDF writer didn't copy named destination or article title
924
strings, possibly leading to dangling pointers.  (gdevpdf.c, gdevpdfm.c)
925
	- The PDF writer produced incorrect output for re-encoded fonts.
926
(It now converts any string containing characters in non-standard positions
927
to bitmaps; this will be fixed in a later release.)  (gs_pdfwr.ps,
928
gdevpdfx.h, gdevpdfp.c, gdevpdft.c)
929
 
930
Updates a few drivers for the change in the handling of band device
931
procedures.  (gdevcp50.c, gdevdjet.c)
932
 
933
Updates the X Windows driver for strip halftones.  (gdevx.c)
934
 
935
Adds anti-aliasing capability to the os2pm device.  (gdevpm.c)
936
 
937
Increases the sizes of some tables in the PDF writer.  (gdevpdfx.h)
938
 
939
</pre><h3><a name="V3.69_Platforms"></a>Platforms</h3><pre>
940
 
941
Fixes bugs:
942
	- A patch for the MS Windows platform was accidentally omitted.
943
(gp_mswin.c)
944
	- A block of code was accidentally duplicated.  (dwmain.cpp)
945
	- An identifier exceeded VAX VMS C's limit of 31 characters.
946
(gscspace.h)
947
	- File name enumeration didn't work properly on Unix systems
948
(still/again).  (gp_unifs.c)
949
	- On MS Windows, If you closed Ghostscript with the system menu, you
950
only closed the text window; Ghostscript kept running and you had to use the
951
task manager to kill it.  (dwmain.cpp, dwmainc.cpp, dwtext.cpp)
952
	- Some DLL-related typedefs were not consistent.  (dwdll.h, gsdll.h,
953
dpmainc.c, dwdll.cpp)
954
	- Attempts to call the DLL before it was initialized were not
955
detected.  (gsdll.c)
956
	- Bitmap line lengths were rounded up even on 32-bit Windows, which
957
doesn't want this.  (gdevwdib.c)
958
 
959
Further improves the handling of attempts to use the DLL when it is already
960
in use.  (dwdll.cpp, gsdll.c)
961
 
962
Adds a DLL-compatible main program for OS/2.  (dpmainc.c, gp_os2.c, gsdll.c)
963
 
964
</pre><h3><a name="V3.69_Fonts"></a>Fonts</h3><pre>
965
 
966
Fixes bugs:
967
	- The WingDings TrueType font wasn't loaded properly.  (gs_ttf.ps)
968
 
969
Makes changes so that TrueType fonts can appear in the Fontmap and can be
970
loaded directly.  (gs_fonts.ps, gs_ttf.ps)
971
 
972
</pre><h3><a name="V3.69_Interpreter"></a>Interpreter</h3><pre>
973
 
974
Fixes bugs:
975
	- Executing a .quit with only 1 element on the operand stack caused
976
an invalid access.  (zcontrol.c)
977
	- The usage help message contained incorrect double %%s.
978
(imainarg.c)
979
	- If an initialization file tried to use any Encodings other than
980
the 4 registered ones, it couldn't find them.  (gs_init.ps, gs_res.ps)
981
	- Places that expected arrays of coordinates (rectangles,
982
x/y/xyshow) didn't accept packed arrays.  (ibnum.c, zdps1.c)
983
	- filterdict was still visible after initialization.  (gs_init.ps)
984
	- The usage error message wasn't terminated by a newline.
985
(imainarg.c)
986
	- setcacheparams (or setting the MaxFontCache user parameter) didn't
987
actually affect the size of the character cache.  (zfont.c, zmisc2.c)
988
	- The main interpreter loop declared iref as a ref *, even though it
989
may only be a ref_packed *.  (iref.h, interp.c)
990
 
991
Changes the character cache so it ignores absurd FontBBox values.  Nothing
992
in the Adobe spec suggests doing this, but it is necessary for handling
993
questionable output produced by PageMaker 5.0 (an Adobe product!).
994
(zchar1.c)
995
 
996
Changes some type declarations slightly to reduce the number of 'discarding
997
const' compiler warnings.  (igc.h, igc.c, igcref.c)
998
 
999
Adds .setclipoutside and .currentclipoutside operators for accessing the new
1000
outside clipping capability.  (zpath.c)
1001
 
1002
Adds the dictionary stack to the information printed in case of a fatal
1003
problem.  (imain.c)
1004
 
1005
Adds .set/currentrenderalgorithm operators for testing.  (zrop.c)
1006
 
1007
</pre><h3><a name="V3.69_Library"></a>Library</h3><pre>
1008
 
1009
Fixes bugs:
1010
	- The TrueType rasterizer didn't map quadratic to cubic splines
1011
well, and didn't handle off-curve points at the end of a contour properly.
1012
(gstype42.c)
1013
	- An #include was omitted.  (gsimage.c, gxclimag.c)
1014
	- Some compilers complained about statements with no effect, or
1015
comma operators with no effect on the left.  (gschar.c, gxcpath.c, gxfill.c)
1016
	- TrueType or Type 42 glyphs with a repeat count that crossed a
1017
contour boundary produced incorrect output.  (gstype42.c)
1018
	- TrueType / Type 42 composite glyphs involving rotation were placed
1019
incorrectly.  (gstype42.c)
1020
	- Type 42 fonts with an absent or incorrect FontBBox could fail to
1021
produce output.  (gstype42.c)
1022
	- Some header files weren't protected against double inclusion.
1023
(gsio.h, gdebug.h)
1024
	- Decoding filters didn't "look ahead" to detect EOD, so if the last
1025
read operation before closing the filter ended just before the EOD mark, the
1026
EOD mark might not be absorbed.  (stream.h, stream.c)
1027
	- Filling paths consisting of multiple subpaths that overlap in Y
1028
produced slightly inaccurate output.  We were unable to find a way to fix
1029
this without making a NON-BACKWARD-COMPATIBLE change in the interface for
1030
the recently introduced fill_trapezoid device procedure.  (gxdevice.h,
1031
gdevbbox.c, gdevddrw.c, gdevnfwd.c, gxfill.c)
1032
	- When banding, get_bits didn't detect calls with out-of-range Y
1033
values.  (gxclread.c)
1034
	- setcacheparams didn't actually affect the size of the character
1035
cache.  (gsfont.h, gxbcache.h, gxfcache.h, gschar.c, gsfont.c, gxbcache.c,
1036
gxccman.c, gxclbits.c)
1037
	- When banding, colored halftones could be mangled.  (gxclread.c)
1038
 
1039
Fixes bugs in the bounding box device:
1040
	- The bounding box device could give bizarre results if any objects
1041
crossed the lower edge of the page.  (gdevbbox.c)
1042
	- The bounding box device could get a memory access error when
1043
processing image data.  (gdebbox.c)
1044
	- The bounding box device ran the default drawing algorithms even if
1045
it had no target (performance bug only).  (gdevbbox.c)
1046
	- The bounding box device computed an incorrect (too small) box for
1047
partially clipped bitmap images.  (gdevbbox.c)
1048
	- The bounding box device got confused by files that filled the
1049
entire page with a background color.  (gdevbbox.c)
1050
	- The bounding box device produced infinite-height boxes for certain
1051
kinds of data.  (gdevbbox.c)
1052
 
1053
Changes some type declarations slightly to reduce the number of 'discarding
1054
const' compiler warnings.  (gsmemory.h, gsstruct.h)
1055
 
1056
Adds the capability of clipping to the outside rather than the inside of the
1057
clipping path.  This is required for emulating an obscure feature of the
1058
Microsoft Windows GDI.  (gspath.h, gxclpath.h, gxpath.h, gxcpath.h,
1059
gzcpath.h, gspath.c, gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c.)
1060
 
1061
Makes it possible for band devices to select the underlying memory device
1062
used to accumulate the actual bits.  This is required for (at least) PCL5
1063
emulation.  This requires adding a procedure to the gx_device_printer
1064
structure, which, for devices that initialize the structure without using
1065
the macros in gdevprn.h or access the printer-specific procedures directly,
1066
is a NON-BACKWARD-COMPATIBLE change.  (gdevprn.h, gxclist.h, gxdevice.h,
1067
gdevdflt.c, gdevprn.c, gxclread.c)
1068
 
1069
Speeds up handling of rotated or halftoned masked images.  (gximage2.c)
1070
 
1071
Adds an output_page procedure to the bounding box device, for testing.
1072
(gdevbbox.c)
1073
 
1074
Adds a sample device that keeps track of the "render algorithm", for PCL5c
1075
emulation.  (gdevrrgb.c)
1076
 
1077
</pre>
1078
 
1079
<h2><a name="Version3.68p4"></a>Version 3.68 patch 4 (5/23/96)</h2>
1080
 
1081
<p>
1082
More minor bug fixes, mostly related to the MS Windows implementation.
1083
 
1084
<h3><a name="V3.68p4_Documentation"></a>Documentation</h3><pre>
1085
Further updates various doc files to make them more useful to new users.
1086
(NEWS, README, current.doc, helpers.doc, new-user.doc)
1087
 
1088
Adds user-contributed documentation for ps2pdf.  (ps2pdf.doc, unix-end.mak)
1089
 
1090
Documents a bug in the Borland C++ 4.52 compiler, and where to find the
1091
patch for it.  (make.doc)
1092
 
1093
</pre><h3><a name="V3.68p4_Procedures"></a>Procedures</h3><pre>
1094
 
1095
Fixes bugs:
1096
	- A command line exceeded the MS-DOS 120 character limit.
1097
(devs.mak)
1098
 
1099
A file was accidentally omitted from the fileset.  (wmakebat.bat)
1100
 
1101
</pre><h3><a name="V3.68p4_Drivers"></a>Drivers</h3><pre>
1102
 
1103
Fixes bugs:
1104
	- Many of the 'show' operators didn't work properly if the PDF
1105
writer was included in the configuration.  (gs_pdfwr.ps)
1106
	- x_wrap_get_bits was ridiculously slow.  (It still is, but not
1107
quite as ridiculously.)  (gxcindex.h, gdevxalt.c)
1108
	- The PDF writer generated CR instead of CalRGB, which is legal per
1109
the Adobe spec but not compatible with some Adobe Acrobat products.
1110
(gdevpdfi.c)
1111
	- Some signed/unsigned discrepancies caused compilation warnings.
1112
(gdevpdfm.c, gdevpdfp.c, gdevpdft.c)
1113
 
1114
Fixes bugs in the Windows driver:
1115
	- An accidentally opened tiny window didn't get closed.
1116
(gdevwdib.c)
1117
	- The name DllInit was misleading, and this procedure wasn't being
1118
called whtn the DLL was loaded, so the DLL couldn't know the instance
1119
handle.  (gp_mswin.c)
1120
	- The code didn't recognize Win32s (vs. Windows 95) correctly.
1121
(dwmain.cpp, gdevwdib.c, gp_mswin.h, gp_mswin.c, gsdll16.rc)
1122
	- Some compiler warnings needed fixing.  (gdevwdib.c)
1123
	- gsdll16.def and gsdll32.def were different.  (gsdll32.def)
1124
	- A GPF leaving the 16-bit DLL loaded could make the DLL permanently
1125
unusable.  (dwmain.cpp)
1126
	- Two obsolete files were still included in the fileset.
1127
(gswin.def, gswin32.def)
1128
 
1129
Adds a compile-time option to the 'bit' drivers to expand 4-bit pixels to
1130
32-bit.  This was required for tracking down customer problems, because the
1131
only tools we have available for displaying CMYK images require 32 bits per
1132
pixel.  (gdevbit.c)
1133
 
1134
</pre><h3><a name="V3.68p4_Platforms"></a>Platforms</h3><pre>
1135
 
1136
Fixes bugs:
1137
	- In DEC C, &lt;time.h&gt; does define the timeval struct.  (time_.h)
1138
 
1139
Changes gsdll_init() to take an additional argument, a window handle.  This
1140
is a NON-BACKWARD-COMPATIBLE change.  (dll.doc, dwdll.h, gsdll.h, dwdll.cpp,
1141
dwmain.cpp, dwmainc.cpp, gsdll.c)
1142
 
1143
</pre><h3><a name="V3.68p4_Fonts"></a>Fonts</h3><pre>
1144
 
1145
Updates more Fontmaps to include the new URW++ fonts.  (Fontmap.OS2,
1146
Fontmap.ATM)
1147
 
1148
</pre><h3><a name="V3.68p4_Interpreter"></a>Interpreter</h3><pre>
1149
 
1150
Fixes bugs:
1151
	- The default operator array table wasn't big enough.  (iinit.c)
1152
	- Some signed/unsigned discrepancies caused compilation warnings.
1153
(imain.c, imainarg.c, zfile.c)
1154
 
1155
Adds encoding vectors for Windows 3.1 Latin 1, Latin 2, and Latin 5
1156
encodings.  None of these are loaded in the standard configuration.
1157
(gs_wl{1,2,5}_e.ps)
1158
 
1159
</pre><h3><a name="V3.68p4_Library"></a>Library</h3><pre>
1160
 
1161
Fixes bugs:
1162
	- Some tracing output was incorrect or missing.  (gxdither.c)
1163
	- Resized objects in the C heap had incorrect bookkeeping
1164
information (bug introduced in 3.68).  (gsmemory.c)
1165
	- Image pixels that fell exactly on device half-pixel boundaries
1166
could get discarded.  (gximage0.c)
1167
	- The bounding box device didn't set a variable properly and didn't
1168
implement end_image, leading to invalid memory accesses.  (gdevbbox.c)
1169
	- Fonts with BuildChar routines written in C didn't work properly
1170
with kshow or xyshow.  (gschar.c)
1171
 
1172
Adds some additional tracing output for Patterns.  (gxpcmap.c)
1173
 
1174
Adds tracing output for freeing malloc'ed blocks at the end of execution.
1175
(gsmemory.c)
1176
 
1177
Adds a gs_dashpath procedure that expands dashes in the same way that
1178
gs_flattenpath expands curves.  (gspath.h, gspath1.c)
1179
 
1180
</pre>
1181
 
1182
<h2><a name="Version3.68p3"></a>Version 3.68 patch 3 (5/17/96)</h2>
1183
 
1184
<p>
1185
More bug fixes during the beta test period.  AccurateScreens now works
1186
properly.
1187
 
1188
<h3><a name="V3.68p3_Procedures"></a>Procedures</h3><pre>
1189
Fixes bugs:
1190
	- The help message was too long to fit on a PC screen or standard
1191
terminal.  (imainarg.c)
1192
	- Failure to run tar_cat wasn't detected.  (unix-end.mak,
1193
unixtail.mak)
1194
 
1195
</pre><h3><a name="V3.68p3_Utilities"></a>Utilities</h3><pre>
1196
Fixes bugs:
1197
	- In the PostScript files produced by pdf2ps, images using ASCII85
1198
encoding would cause a typecheck error.  (gs_pdf.ps)
1199
	- pdf2ps wrote out strings longer than 200 characters incorrectly.
1200
(pdf_2ps.ps)
1201
 
1202
</pre><h3><a name="V3.68p3_Drivers"></a>Drivers</h3><pre>
1203
 
1204
Fixes bugs in gdevcdj.c (according to the author, we have no way to test
1205
this):
1206
	- The driver used to use Colors as well as ProcessColorModel to
1207
define the process color model.  (devices.doc, gdevbjc.h, gdevcdj.c)
1208
	- Incorrect or inconsistent settings of BitsPerPixel and
1209
ProcessColorModel, or setting one but not the other, could leave the driver
1210
in an inconsistent state.  (gdevcdj.c)
1211
 
1212
Fixes bugs in the MS Windows driver:
1213
	- Insufficient memory for the backing bitmap could cause a GPF.
1214
(gdevmswn.c, gdevwdib.c)
1215
	- Invalid parameters could cause a crash within the DLL code.
1216
(gdevwdib.c)
1217
 
1218
Adds a user-contributed driver for the CalComp Raster Format.  (devs.mak,
1219
gdevccr.c)
1220
 
1221
Adds an anti-aliasing option for MS Windows.  (gdevmswn.c, gdevwdib.c)
1222
 
1223
</pre><h3><a name="V3.68p3_Platforms"></a>Platforms</h3><pre>
1224
 
1225
Fixes bugs in the Windows platform:
1226
	- One had to type "quit" twice to exit.  (dwdll.h, dwdll.cpp)
1227
 
1228
</pre><h3><a name="V3.68p3_Interpreter"></a>Interpreter</h3><pre>
1229
 
1230
Fixes bugs:
1231
	- Platform fonts didn't work properly if the document's primary
1232
encoding was the standard MS Windows encoding.  (ifont.h, gs_wan_e.ps)
1233
	- stringwidth with a Type 1 font could give a spurious typecheck
1234
error (bug introduced in 3.65).  (zcharout.c)
1235
	- If a DOS editor added a ^Z to the end of the Fontmap file, an
1236
error occurred during initialization.  (gs_fonts.ps)
1237
	- Halftones that didn't specify a value for AccurateScreens
1238
sometimes ignored the setting of the AccurateScreens user parameter.
1239
(zht2.c)
1240
 
1241
</pre><h3><a name="V3.68p3_Library"></a>Library</h3><pre>
1242
 
1243
Fixes bugs:
1244
	- gs_join_none was defined, but not implemented.  (gxstroke.c)
1245
	- A bookkeeping list for fonts could get confused, causing invalid
1246
memory accesses.  (gsfont.c)
1247
	- An I/O error or internal error would cause the band list
1248
rasterizer to go into an infinite loop.  (gxclread.c)
1249
	- The algorithm for choosing screen angles and frequencies produced
1250
poor results.  (gshtscr.c)
1251
	- Color screens were broken (bug introduced in 3.68).  (gxdht.h,
1252
gzht.h, gsht.c, gshtscr.c)
1253
 
1254
</pre>
1255
 
1256
<h2><a name="Version3.68p2"></a>Version 3.68 patch 2 (5/13/96)</h2>
1257
 
1258
<p>
1259
This is another set of patches for the next general release.
1260
 
1261
<h3><a name="V3.68p2_Documentation"></a>Documentation</h3><pre>
1262
Fixes bugs:
1263
	- Windows NT and Windows 95 implementations were identified as
1264
"under development" rather than available.  (README)
1265
	- There were several other minor errors in the README file.
1266
(README)
1267
	- The claimed current IJG JPEG version was incorrect.  (jpeg.mak)
1268
 
1269
Splits off information for new users into a separate file.  (README,
1270
new-user.doc)
1271
 
1272
</pre><h3><a name="V3.68p2_Procedures"></a>Procedures</h3><pre>
1273
 
1274
Fixes bugs:
1275
	- gettimeofday takes 2 arguments on SVR4 systems more recent than
1276
SVR4.0.  (make.doc, ansihead.mak, cc-head.mak, gcc-head.mak, time_.h)
1277
 
1278
Changes the default Unix data installation directory from /usr/local/lib to
1279
/usr/local/share, which seems to be favored by more recent Unix systems
1280
(except for some Linux versions, which still use /usr/local/lib, and BSD/OS,
1281
which puts Ghostscript in /usr/contrib/lib.)  (ansihead.mak, cc-head.mak,
1282
gcc-head.mak, ugcclib.mak)
1283
 
1284
Changes the unset commands in the Unix script to assignments, because a few
1285
older Unix shells don't provide unset.  (unixtail.mak)
1286
 
1287
</pre><h3><a name="V3.68p2_Drivers"></a>Drivers</h3><pre>
1288
 
1289
Fixes bugs:
1290
	- An #include incorrectly referred directly to a system header.
1291
(gdevpdft.c)
1292
	- CMYK devices took an excessive amount of time clearing the page to
1293
white.  (gdevm32.c)
1294
 
1295
Adds a compile-time option to the 'bit' drivers to remove top and bottom
1296
whitespace.  This change was required in order to track down a customer bug.
1297
(gdevbit.c)
1298
 
1299
</pre><h3><a name="V3.68p2_Interpreter"></a>Interpreter</h3><pre>
1300
 
1301
Updates the interpreter for the split in the gstate API.  (igstate.h)
1302
 
1303
</pre><h3><a name="V3.68p2_Streams"></a>Streams</h3><pre>
1304
 
1305
Fixes bugs:
1306
	- Some compilers don't define NULL widely enough.  (spngp.c)
1307
 
1308
</pre><h3><a name="V3.68p2_Library"></a>Library</h3><pre>
1309
 
1310
Fixes bugs:
1311
	- There was a minor typo (&amp; for &amp;&amp;) that didn't affect execution.
1312
(gxccman.c)
1313
	- There was a trailing comma in an enumeration.  (gsiparam.h)
1314
	- Internal and public interfaces weren't separated properly.  THIS
1315
IS A NON-BACKWARD-COMPATIBLE CHANGE for clients using certain undocumented
1316
interfaces to the graphics state.  (gsstate.h, gxstate.h, gzstate.h,
1317
gsstate.c)
1318
	- A 'private' declaration was missing (yet again).  (gxclimag.c)
1319
 
1320
</pre>
1321
 
1322
<h2><a name="Version3.68p1"></a>Version 3.68 patch 1 (5/10/96)</h2>
1323
 
1324
<p>
1325
This is the first bug fix (patch) incremental release for the next
1326
general release.
1327
 
1328
<h3><a name="V3.68p1_Procedures"></a>Procedures</h3><pre>
1329
Fixes bugs:
1330
	- Many Windows-specific files were omitted from the previous
1331
fileset: dw*.rc, dw*.cpp.
1332
 
1333
</pre>
1334
 
1335
<h2><a name="Version3.68"></a>Version 3.68 (limited) (5/9/96)</h2>
1336
 
1337
<p>
1338
This release cleans up the new Windows files, mostly implements the
1339
high-level driver API for bitmap images, and adds practical strip
1340
(AccurateScreens) halftoning.  This is the first "serious beta" fileset for
1341
the next general release.  It still has more problems than I would have
1342
liked.
1343
 
1344
<h3><a name="V3.68_Documentation"></a>Documentation</h3><pre>
1345
Fixes bugs:
1346
	- The names of the executable files for MS Windows were out of date.
1347
(make.doc)
1348
	- gxcindex.h still referred to "drawing color".  (gxcindex.h)
1349
	- The name of the default font directory for Unix systems was
1350
incorrect.  (make.doc)
1351
 
1352
Moves the list of files required for installation, and some other
1353
installation instructions, from make.doc to install.doc.  (install.doc,
1354
make.doc)
1355
 
1356
Adds a description of the PNGPredictor filters.  (language.doc)
1357
 
1358
Updates the documentation of the higher-level driver procedures to match the
1359
specification changes.  (drivers.doc)
1360
 
1361
Documents the change in the Watcom build procedure.  (make.doc)
1362
 
1363
Improves the documentation of bitmap IDs.  (gxbitmap.h)
1364
 
1365
Adds documentation for the new strip_tile_rectangle and strip_copy_rop
1366
driver procedures.  (drivers.doc)
1367
 
1368
Changes the few remaining direct FTP addresses in README to URLs.  (README)
1369
 
1370
Notes that zlib does not compile correctly on IRIX 6.n with optimization.
1371
(make.doc)
1372
 
1373
Adds references to PDF and TrueType fonts to language.doc.  (language.doc)
1374
 
1375
Updates fonts.doc to remove references to fonts.mak.  (fonts.doc)
1376
 
1377
Describes how to substitute an LZW compressor for the LZW-compatible
1378
compressor provided in the standard release.  (make.doc)
1379
 
1380
</pre><h3><a name="V3.68_Procedures"></a>Procedures</h3><pre>
1381
 
1382
Fixes bugs:
1383
	- Some lines had exceeded the 120-character limit of the
1384
MS-DOS shell.  (int.mak)
1385
	- The configuration files weren't generated correctly when CONFIG
1386
wasn't an empty string.  (unixhead.mak)
1387
 
1388
Factors out shared DLL makefile rules into a new file.  (bcwin.mak,
1389
bcwin32.mak, dwcommon.mak)
1390
 
1391
Makes the cp and rm commands into makefile parameters, allowing automatic
1392
generation of build scripts even in the MS-DOS and MS Windows environments
1393
where the shell requires the CALL command for sub-scripts.  (*.mak,
1394
genconf.c)
1395
 
1396
Adds the PDF writer to the default Unix configurations.  (ansihead.mak,
1397
cc-head.mak, gcc-head.mak)
1398
 
1399
Adds TrueType support to all Level 2 configurations.  (int.mak)
1400
 
1401
Removes fonts.mak, which is no longer relevant.  (fonts.mak)
1402
 
1403
Brings the font compilation procedures up to date.  (cfonts.mak, int.mak)
1404
 
1405
</pre><h3><a name="V3.68_Utilities"></a>Utilities</h3><pre>
1406
 
1407
Fixes bugs:
1408
	- There was an extra 'show' in one file.  (align.ps)
1409
 
1410
</pre><h3><a name="V3.68_Drivers"></a>Drivers</h3><pre>
1411
 
1412
Fixes bugs:
1413
	- The bit devices were missing the map_color_rgb procedure.
1414
(gdevbit.c)
1415
	- The MS Windows driver sent a redundant message. (gdevmswn.c)
1416
 
1417
Adds a device that keeps track of the page bounding box.  This device is not
1418
included in any standard configuration.  (drivers.doc, gdevbbox.h,
1419
gsmatrix.h, gsstruct.h, gxdevice.h, gdevbbox.c, gdevnfwd.c, gsmatrix.c)
1420
 
1421
Updates the PDF writer to track the changes in the high-level driver API,
1422
and to write out images in a reasonable way.  NOTE: the current
1423
implementation doesn't write out CIE color space parameters, so CIE-color
1424
images won't be colored accurately.  (gdevpdf.c, gdevpdfi.c)
1425
 
1426
Adds a forwarding procedure for tile_rectangle.  (gxdevice.h, gdevnfwd.c)
1427
 
1428
Changes the copyright notices on the PDF writer to be the same as on the
1429
rest of Ghostscript.  (gdevpdf*.[ch])
1430
 
1431
Updates Gunther Hess's Epson Stylus Color driver from 1.21 to 1.90.  (Aladdin
1432
Enterprises takes no responsibility for this driver: if you have questions,
1433
contact the author.)  (devices.doc, devs.mak, gdevstc*.c, gdevstc.h)
1434
 
1435
</pre><h3><a name="V3.68_Platforms"></a>Platforms</h3><pre>
1436
 
1437
Removes some obsolete MS Windows files and #defines.  (gp_mswtx.h,
1438
gp_mswtx.c, gp_mswin.h)
1439
 
1440
Works around a memory limitation in the Watcom make utility.  (wmakebat.bat)
1441
 
1442
</pre><h3><a name="V3.68_Fonts"></a>Fonts</h3><pre>
1443
 
1444
Changes the standard Fontmap from using the low-quality fonts converted from
1445
bitmaps to using high-quality fonts recently contributed by URW++.
1446
(Fontmap, Fontmap.GS)
1447
 
1448
</pre><h3><a name="V3.68_Interpreter"></a>Interpreter</h3><pre>
1449
 
1450
Fixes bugs:
1451
	- A macro containing an if-else, and a macro generating a compound
1452
statement, could cause incorrect grouping of 'if' statements.  (files.h,
1453
ostack.h)
1454
	- .setrasterop didn't pop its operand.  (zrop.c)
1455
	- A rounding inaccuracy could cause bounding box rangecheck errors.
1456
(gsdps1.c)
1457
	- CIE-based images in PDF files didn't work.  (gs_pdf.ps)
1458
	- The page parameter .MediaSize didn't get updated when PageSize was
1459
set.  (This is just the most recent manifestation of the setpagedevice
1460
morass.)  (gs_setpd.ps)
1461
	- %lineedit and %statementedit were limited to 160 characters.
1462
(zfileio.c, ziodev.c)
1463
	- Compiled initialization files didn't work properly.  (geninit.c,
1464
gs_l2img.ps)
1465
	- Attempting to parse a command line with argc = 0 caused a crash.
1466
(imainarg.c)
1467
 
1468
Renames some files to allow separating the non-DLL 'main' procedure into a
1469
separate file, and to make the file naming more consistent:
1470
	gs.c (except for 'main') =&gt; imainarg.c
1471
	gsmain.c =&gt; imain.c
1472
gs.c now consists only of 'main'.  The name gs.c is still inconsistent (it
1473
should be i- something), but at least it's consistent with the name of the
1474
executable.  (*.mak, imain.h, iminst.h, imainarg.h, gs.c, gsmain.c, imain.c,
1475
imainarg.c)
1476
 
1477
Adds PNGPredictorEncode/Decode filters, and increases the size of filterdict
1478
slightly to make room for them.  (iinit.c, zfpngp.c)
1479
 
1480
Makes zwrite external, per a customer request.  (opextern.h, zfileio.c)
1481
 
1482
Updates clients to work with the new API-based bitmap imaging calls.
1483
(iimage.h, zcolor1.c, zimage2.c, zpaint.c)
1484
 
1485
Updates clients for the split in gscspace.h.  (zcie.c, zcolor1.c, zcolor2.c,
1486
zcsindex.c, zcssepr.c, zimage2.c, zpaint.c, zpcolor.c)
1487
 
1488
Updates clients for strip-based halftones.  (zpcolor.c)
1489
 
1490
Updates the initialization code to pass the correct (system) allocator to
1491
the library initialization.  (imain.c)
1492
 
1493
</pre><h3><a name="V3.68_Streams"></a>Streams</h3><pre>
1494
 
1495
Fixes bugs:
1496
	- If a filter reached EOD exactly at the end of reading data for
1497
certain operations, it didn't get closed automatically.  (stream.c)
1498
	- The LZW-compatible encoding filter reset procedure had an
1499
incorrect return type.  (slzwce.c)
1500
 
1501
Changes the ASCIIHexEncode filter to insert \ns in fewer places, to be
1502
somewhat more compatible with the Adobe implementation.  (sstring.c)
1503
 
1504
Adds PNGPredictorEncode/Decode filters that implement the pixel prediction
1505
algorithms in the PNG specification.  (We'd like to use the code in the PNG
1506
library, but it's too deeply embedded in the rest of the PNG machinery, and
1507
it also doesn't provide for suspendable I/O.)  (spngpx.h, spngp.c)
1508
 
1509
</pre><h3><a name="V3.68_Library"></a>Library</h3><pre>
1510
 
1511
Fixes bugs:
1512
	- A test for pure color was backwards, causing garbage output or
1513
possible address or floating point exceptions.  (gxclpath.c)
1514
	- A macro containing an if-else could cause incorrect grouping of
1515
'if' statements.  (gsrefct.h)
1516
	- The default implementation of RasterOp didn't handle the device
1517
depth correctly.  (gdevmrop.c)
1518
	- The memory device implementation of RasterOp truncated 24-bit
1519
constant source or texture values to 8 bits.  (gdevmrop.c)
1520
	- A typo caused the garbage collector to miss an internal buffer
1521
used when rendering images.  (gximage.h)
1522
	- gs_debug_out was only defined if DEBUG was set.  (gdebug.h)
1523
	- The raster of horizontally replicated tiles was incorrect.
1524
(gxht.c)
1525
	- A data type might not be declared, causing a compilation error.
1526
(gscoord.h)
1527
	- Empty TrueType glyphs weren't handled properly.  (gstype42.c)
1528
	- Fonts with a build procedure written in C could cause an invalid
1529
memory access.  (gschar.c)
1530
	- The initial point of a band list path sometimes didn't get
1531
written, causing excess or missing filled regions.  (gxclpath.c)
1532
	- Characters between 49 and 56 bits wide were rendered incorrectly
1533
when banding.  (gxclbits.c)
1534
 
1535
Renames gsimage*.c as gximage*.c, to reflect more accurately the position of
1536
these files in the architecture.  (gsimage*.c, gximage*.c)
1537
 
1538
Fully implements the high-level bitmap image calls in the driver API.  This
1539
includes some driver API changes; however, this part of the API was clearly
1540
documented as not stable enough to rely on.  (gxdevice.h, gximage.h,
1541
gdevbbox.c, gdevddrw.c, gdevnfwd.c, gsimage.c, gximage*.c)
1542
 
1543
Splits the color space header into client and implementation, as with many
1544
others.  (gscspace.h, gxcspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
1545
gscolor2.c, gscsepr.c, gsimage.c, gspcolor.c, gsstate.c, gxcmap.c,
1546
gxpcmap.c)
1547
 
1548
Extends band lists to handle high-level images.  NOTE: This facility is
1549
patched out because there is not yet a way to pass the necessary color
1550
rendering information through the band list.  (gxcldev.h, gxclist.h,
1551
gxclpath.h, gxclimag.c, gxclist.c, gxclpath.c, gxclread.c)
1552
 
1553
Implements fixed2float and float2fixed more efficiently on machines with
1554
slow floating point.  (gxfixed.h, gscoord.c, gsmisc.c)
1555
 
1556
Makes one further NON-BACKWARD-COMPATIBLE change in the existing
1557
higher-level driver procedures (fill_path, stroke_path, fill_mask): we make
1558
the imager state pointer an explicit argument, rather than a member of the
1559
gx_fill/stroke_params structure.  We now consider the specification of these
1560
procedures stable, and have removed the "subject to change" notice from the
1561
documentation.  (gxdevice.h, gxpaint.h, gdevbbox.c, gdevnfwd.c, gxacpath.c,
1562
gxclpath.c, gxclread.c, gxfill.c, gxpaint.c, gxstroke.c)
1563
 
1564
Extends halftone bitmaps to include "strip" and "shift" information,
1565
allowing halftone cells with arbitrary angles to be stored in space
1566
proportional to the number of bits in the cell rather than the square of the
1567
number of bits.  This requires adding new (optional) strip_tile_rectangle
1568
and strip_copy_rop driver procedures that are like tile_rectangle and
1569
copy_rop respectively but accept a strip bitmap rather than an ordinary
1570
tile; these procedures supersede tile_rectangle and copy_rop (although these
1571
also remain, defined in terms of the new ones).  This also requires making
1572
small but NON-BACKWARD-COMPATIBLE changes in several internal interfaces.
1573
(gdevmem.h, gdevprn.h, gsdcolor.h, gxbcache.h, gxbitmap.h, gxcldev.h,
1574
gxclip2.h, gxclist.h, gxdevice.h, gxdevrop.h, gxdht.h, gxfcache.h,
1575
gxhttile.h, gxpcolor.h, gzht.h; gdevabuf.c, gdevbbox.c, gdevdflt.c,
1576
gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c, gsht.c, gsht1.c, gshtscr.c,
1577
gspcolor.c, gsstate.c, gxcht.c, gxclbits.c, gxclip2.c, gxclist.c,
1578
gxclpath.c, gxclread.c, gxcpath.c, gxdcolor.c, gxdither.c, gxht.c,
1579
gximage2.c, gxpcmap.c, ...)
1580
 
1581
Adds "no join" as a line join type.  NOTE: this is not actually implemented
1582
yet.  (gslparam.h)
1583
 
1584
Changes the initialization code so that it passes the system allocator as an
1585
argument to module initialization procedures.  While this is theoretically a
1586
NON-BACKWARD-COMPATIBLE change, module initialization procedures are not
1587
documented and presumably are not used by any code outside the
1588
implementation.  (gscdefs.h, gconf.c, gdevmrop.c, gsinit.c, gxclimag.c,
1589
gxclpath.c)
1590
 
1591
Splits up gs_lib_init into two procedures, allowing specification of a
1592
different default allocator for the library.  (gslib.h, gsinit.c)
1593
 
1594
Adds a resize_object operation to the allocator API.  (gsmemory.h,
1595
gsalloc.c, gsmemory.c)
1596
 
1597
</pre>
1598
 
1599
<h2><a name="Version3.67"></a>Version 3.67 (limited) (4/12/96)</h2>
1600
 
1601
<p>
1602
This release restructures the MS Windows and OS/2 code to be primarily DLL-
1603
rather than EXE-based.  See under Platforms below for more news.  This
1604
release was put out in a hurry in order to get the new DLL code into
1605
testers' hands; it has more rough edges than usual.
1606
 
1607
<h3><a name="V3.67_Documentation"></a>Documentation</h3><pre>
1608
Fixes bugs:
1609
	- A definition &amp; use comment was incorrect.  (scanchar.h)
1610
	- William Bader's e-mail address was wrong.  (README)
1611
 
1612
Adds documentation for the new begin_image, image_data, and end_image
1613
procedures.  THIS INTERFACE IS STILL SUBJECT TO CHANGE.  (drivers.doc)
1614
 
1615
</pre><h3><a name="V3.67_Procedures"></a>Procedures</h3><pre>
1616
 
1617
Renames all the *core.dev modules as *lib.dev.  (int.mak, *lib.mak, vms.mak,
1618
gdevmrop.c)
1619
 
1620
Updates all the remaining makefiles to IJG JPEG version 6a.  (*.mak)
1621
 
1622
Moves the configuration parameter definitions from gconf.c to a new file
1623
gscdefs.c.  (bcwin*.mak, *lib.mak, gs.mak, int.mak, lib.mak, unixtail.mak,
1624
vms.mak, gconf.c, gscdefs.c)
1625
 
1626
</pre><h3><a name="V3.67_Platforms"></a>Platforms</h3><pre>
1627
 
1628
Restructures the MS Windows and OS/2 code to be primarily DLL- rather than
1629
EXE-based.  This involves two minor NON-BACKWARD-COMPATIBLE changes to the DLL
1630
interface, documented near the end of dll.doc:
1631
 
1632
	- Adding argv and argc as arguments to gsdll_init.
1633
 
1634
	- Adding a new message type, GSDLL_POLL, to the callback procedure.
1635
 
1636
(bcwin*.mak, devs.mak, os2.mak, dll.doc, install.doc, dw*.*, gsdll*.*,
1637
gdevms*.*, gdevpm.c, gdevw*.c, gp_mswin.c, gp_os2.c, gsos2.def, gswin.rc)
1638
 
1639
Adds the BMP drivers to the Watcom platform.  (watc.mak)
1640
 
1641
</pre><h3><a name="V3.67_Interpreter"></a>Interpreter</h3><pre>
1642
 
1643
Fixes bugs:
1644
	- gs.c assumed the presence of stdio.  (gs.c)
1645
 
1646
Defines a new API entry point that is the equivalent of command line
1647
invocation.  (imain.h, imainarg.h, gs.c)
1648
 
1649
Changes clients to conform to the changes in gsimage.h.  (zimage2.c,
1650
zpaint.c)
1651
 
1652
Speeds up the search operator slightly.  (zstring.c)
1653
 
1654
</pre><h3><a name="V3.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1655
 
1656
Fixes bugs:
1657
	- If the PDF interpreter was present, running a PostScript file
1658
didn't close the file properly if it caused an error.  (pdf_main.ps)
1659
 
1660
Speeds up embedded font loading by making an internal buffer bigger.
1661
(pdf_font.ps)
1662
 
1663
</pre><h3><a name="V3.67_Library"></a>Library</h3><pre>
1664
 
1665
Fixes bugs:
1666
	- There could be some non-zero garbage between the width and the
1667
next multiple of bitmap_align_mod for copy_alpha.  (The driver API
1668
specification explicitly allows this, but it upset one customer.)
1669
(gxccman.c)
1670
	- Nibble-swapped alpha values could be displaced in memory by one
1671
pixel, damaging the output.  (gdevabuf.c)
1672
 
1673
Makes further changes towards adding high-level bitmap image calls to the
1674
driver API.  This includes the following minor NON-BACKWARD-COMPATIBLE
1675
changes to the interface defined in gsimage.h:
1676
 
1677
	- changing MultipleDataSources from a member of the gs_image_t
1678
	structure to an argument of gs_image_init;
1679
 
1680
	- changing the default image parameter values from constant
1681
	structures to procedures that initialize the structure.
1682
 
1683
As far as we know, this doesn't affect any existing client code.
1684
(gsimage.h, gsiparam.h, gxdevice.h, gdevddrw.c, gdevnfwd.c, gsimage.c,
1685
gspcolor.c, gxccache.c)
1686
 
1687
Removes an unnecessary level of call for path filling.  (gxpaint.h,
1688
gxfill.c, gxpaint.c)
1689
 
1690
</pre>
1691
 
1692
<h2><a name="Version3.66"></a>Version 3.66 (limited) (4/8/96)</h2>
1693
 
1694
<p>
1695
This release adds support for TrueType fonts and Type 42 (encapsulated
1696
TrueType) PostScript fonts.  The MS Windows driver now interacts properly
1697
with the garbage collector.  This release also includes a new, high-quality
1698
set of free fonts.
1699
 
1700
<h3><a name="V3.66_Documentation"></a>Documentation</h3><pre>
1701
Fixes bugs:
1702
	- The list of generic makefiles had gotten out of date.  (make.doc)
1703
 
1704
Adds a mention of the bmv program, created by a user and available under the
1705
GPL.  (README)
1706
 
1707
Notes that a bug in gcc 2.7.x prevents these versions from compiling
1708
Ghostscript.  (make.doc)
1709
 
1710
Clarifies the meaning of "inverted" masks.  (gsimage.h)
1711
 
1712
Improves the documentation of the stack sizing parameters.  (interp.c)
1713
 
1714
Improves the documentation of the copy_rop driver procedure.
1715
(drivers.doc)
1716
 
1717
Notes that all subclasses of gx_device must explicitly include the
1718
device_finalize finalization procedure.  (gxdevice.h)
1719
 
1720
Updates the documentation of the high-level driver API to reflect the change
1721
in gx_drawing_color, and the addition of the new polygon and image drawing
1722
procedures.  (drivers.doc)
1723
 
1724
Updates the documentation for building zlib and libpng.  (make.doc)
1725
 
1726
</pre><h3><a name="V3.66_Procedures"></a>Procedures</h3><pre>
1727
 
1728
Fixes bugs:
1729
	- The environment space overflowed on some inferior Unix systems.
1730
(unixtail.mak)
1731
 
1732
Adds a ttfont.dev "feature" for including the TrueType interpreter and the
1733
ability to handle Type 42 fonts.  A new procedure, .loadttfont, allows
1734
loading a TrueType font directly (by converting it to a Type 42 on the fly).
1735
(gs.mak, int.mak, lib.mak)
1736
 
1737
Updates the makefiles and procedures to libpng 0.88 and zlib 1.0.
1738
(libpng.mak, zlib.mak)
1739
 
1740
</pre><h3><a name="V3.66_Utilities"></a>Utilities</h3><pre>
1741
 
1742
Fixes bugs:
1743
	- pdf2ps could produce lines longer than 255 characters.
1744
(pdf_2ps.ps)
1745
 
1746
Removes some unnecessary and error-inviting code from pdf2dsc.  (pdf2dsc.ps)
1747
 
1748
Updates lines.ps to test the new stroke code more fully.  (lines.ps)
1749
 
1750
Allows omitting the second argument of ps2pdf, as for ps2epsi.  (ps2pdf)
1751
 
1752
</pre><h3><a name="V3.66_Drivers"></a>Drivers</h3><pre>
1753
 
1754
Fixes bugs:
1755
	- A routine was incorrectly declared "private".  (I wish gcc caught
1756
this!)  (gdevpdf.c)
1757
	- A 'const' was omitted in a parameter list.  (gdevpdfp.c)
1758
	- Some imported procedures didn't have prototypes declared.
1759
(gdevpdft.c)
1760
	- The ProcSet list for PDF files didn't include Text when it was
1761
needed.  (gdevpdfx.h, gdevpdf.c, gdevpdft.c)
1762
	- Text in PDF output ignored the color setting.  (gs_pdfwr.ps,
1763
gdevpdft.c)
1764
	- Text in PDF output could be positioned incorrectly.  (gdevpdft.c)
1765
	- pdfmarks could produce an error when producing PDF output.
1766
(gs_pdfwr.ps)
1767
 
1768
Slightly improves the text output of the PDF writer.  (gs_pdfwr.ps,
1769
gdevpdft.c)
1770
 
1771
Defines driver procedures for filling trapezoids (with the parallel edges
1772
parallel to a coordinate axis), parallelograms (with arbitrary orientation),
1773
triangles (ditto), and minimum-width lines (ditto).  (Note that the last of
1774
these obsoletes the former draw_line procedure.)  (gdevmem.h, gdevprn.h,
1775
gxdevice.h, gxdraw.h (deleted), gdevddrw.c, gdevdflt.c, gdevht.c,
1776
gdevnfwd.c, gsimage[12345].c, gxacpath.c, gxclist.c, gxclip2.c, gxcpath.c,
1777
gxdraw.c (deleted), gxfill.c, gxpcmap.c, gxstroke.c)
1778
 
1779
Adds "sketched" driver procedures for high-level bitmap / pixmap image
1780
drawing.  In this release, the argument lists are incomplete, and the
1781
procedures are stubs: don't try to use them!  [see previous entry]
1782
 
1783
Changes the screen update strategy for the X Windows driver from a
1784
compile-time option to a settable run-time variable.  (gdevx.c)
1785
 
1786
Patches around a problem with libpng 0.88 that can't be fixed without
1787
editing a configuration file.  (gdevpng.c)
1788
 
1789
</pre><h3><a name="V3.66_Platforms"></a>Platforms</h3><pre>
1790
 
1791
Fixes bugs:
1792
	- %g formats with sscanf don't work on NeXT systems.  (gdevpdft.c,
1793
iutil.c, zdouble.c)
1794
	- getenv could be declared inconsistently.  (gp_unix.c)
1795
 
1796
</pre><h3><a name="V3.66_Fonts"></a>Fonts</h3><pre>
1797
 
1798
Fixes bugs:
1799
	- The Type 1 font interpreter sometimes set the flatness too large.
1800
(gstype1.c)
1801
	- Fonts defined by definefont could never be garbage collected.
1802
(gsstruct.h, gxfcache.h, gxfont.h, gxfont0.h, gxfont1.h, gsfont.c,
1803
gsfont0.c)
1804
	- Type 0 fonts weren't garbage collected properly.  (gsfont0.c)
1805
	- Compiled fonts caused a compilation error (bug introduced in
1806
3.65).  (ifont.h)
1807
	- If a Type 1 font used hint replacement, hints could be applied
1808
more than once, distorting the character shape.  (gxtype1.h, gxhint3.c)
1809
	- Oversampling wasn't applied to large enough characters.
1810
(gschar.c)
1811
 
1812
</pre><h3><a name="V3.66_Interpreter"></a>Interpreter</h3><pre>
1813
 
1814
Fixes bugs:
1815
	- The scanner accepted /[, /], /&lt;&lt;, and /&gt;&gt; as literal names (and
1816
similarly for //).  It isn't obvious from the Red Book, but the Adobe
1817
implementations don't accept these.  What a nuisance!  (gs_btokn.ps,
1818
gs_init.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps, iscan.c)
1819
	- A spurious stackoverflow could occur under unusual conditions.
1820
(istack.c)
1821
	- The values of OrigFont and ScaleMatrix in scaled fonts reflected
1822
only the most recent scaling operation, not the original font and the
1823
combined scaling operation.  (zfont.c)
1824
	- The default size of systemdict had become slightly too small.
1825
(iinit.c)
1826
	- Type 1 characters defined by PostScript procedures were called
1827
incorrectly.  (zcharout.c)
1828
 
1829
Removes the papersize operator from statusdict, since it is not documented
1830
anywhere in the Adobe literature and didn't interact properly with the
1831
various ways of setting the page size.  (gs_statd.ps)
1832
 
1833
Changes the one client of sskip to match the changed API.  (zpaint.c)
1834
 
1835
Changes clients to reflect the creation of sstring.h.  (iscan.h, zfilter.c)
1836
 
1837
Adds PSStringEncode as an accessible filter.  (zfilter.c)
1838
 
1839
Adds support for TrueType and Type 42 fonts.  (gs_fonts.ps, gs_ttf.ps,
1840
gs_typ42.ps, bfont.h, icharout.h, ifont.h, zchar1.c, zchar42.c, zcharout.c,
1841
zfont1.c, zfont2.c, zfont42.c)
1842
 
1843
Adds a few ANSI sheet sizes (commented out, for documentation only).
1844
(gs_statd.ps)
1845
 
1846
</pre><h3><a name="V3.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1847
 
1848
Fixes bugs:
1849
	- Clients who called pdfopen/close rather than runpdf could get an
1850
error (PSLevel1 undefined).  (pdf_main.ps)
1851
	- Some masked images were displayed with black and white inverted.
1852
(gs_pdf.ps)
1853
	- In Level 1 output produced by pdf2ps, images caused a syntaxerror.
1854
(gs_pdf.ps)
1855
	- If a PDF file had multiple xref sections and later sections added
1856
new objects, an error occurred.  (pdf_main.ps)
1857
	- Some very old Level 1 interpreters couldn't deal with a file
1858
object embedded in a procedure.  (gs_pdf.ps)
1859
 
1860
</pre><h3><a name="V3.66_Streams"></a>Streams</h3><pre>
1861
 
1862
Fixes bugs:
1863
	- The PSStringEncode filter didn't always produce printable 7-bit
1864
output.  (sstring.c)
1865
	- The CCITTFaxDecode filter didn't implement DamagedRowsBeforeError.
1866
(scfx.h, scfd.c)
1867
	- Interpolated images displayed nothing if the data stream ended
1868
before the image height was reached.  (siscale.h, gsimage5.c, siscale.c)
1869
 
1870
Changes the sskip stream procedure so that it takes an additional argument
1871
where it returns the actual number of bytes skipped.  THIS IS A
1872
NON-BACKWARD-COMPATIBLE CHANGE in the API.  However, as far as we know,
1873
there are no external clients of this procedure.  (stream.h, stream.c)
1874
 
1875
Splits up sfilter.h so that the headers correspond more directly with the
1876
implementations.  (sfilter.h, sstring.h, sstring.c)
1877
 
1878
</pre><h3><a name="V3.66_Library"></a>Library</h3><pre>
1879
 
1880
Fixes bugs:
1881
	- The default device in the library configuration was device 1, not
1882
device 0.  (bclib.mak, ugcclib.mak, watclib.mak, gslib.c)
1883
	- Patterns could be rendered with small gaps between them.
1884
(gspcolor.c)
1885
	- Large characters could render inaccurately because of a numerical
1886
boundary condition.  (gxpcopy.c)
1887
	- The show_gstate pointer in the graphics state was not managed
1888
properly, possibly leading to dangling pointers or GC errors.  (gsstate.c)
1889
	- Bitmaps could get shifted to the left if ALPHA_LSB_FIRST was
1890
selected (bug introduced in 3.53).  (gsbitops.c)
1891
	- The garbage collector could move devices in memory, causing
1892
problems with command list devices.  (gxdevice.h, gsdevice.c)
1893
 
1894
Continues restructuring the image handling code in preparation for adding a
1895
high-level driver operation.  (gsimage[12345].c)
1896
 
1897
Starts to implement passing color mapping information (transfer function,
1898
black generation, undercolor removal, CRD, halftoning) in the band list.
1899
(gxfmap.h, gscolor.c, gscolor1.c, gsht1.c, gsstate.c)
1900
 
1901
Speeds up the path filling code a little more.  (gxdraw.c)
1902
 
1903
Removes the workaround for the gcc 2.7.0/1/2 optimizer bug, since this
1904
turned out to cause more trouble than it was worth.  (stdpre.h)
1905
 
1906
Speeds up stroking dramatically for the case of butt or square caps, bevel
1907
or beveled miter joins, and no fill adjustment, by filling parallelograms
1908
and triangles directly rather than constructing and filling paths.  This is
1909
an important common case for CAD drawings.  (gxdraw.h, gxdraw.c, gxstroke.c)
1910
 
1911
Adds support for TrueType and Type 42 fonts.  (gxfont.h, gxfont42.h,
1912
gstype42.c)
1913
 
1914
Extends the memory manager to allow allocating objects that the garbage
1915
collector won't move.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for
1916
implementors of memory managers, but clients aren't supposed to have any of
1917
these.  (gsmemory.h, gsmemory.c, gsalloc.c)
1918
 
1919
Makes dynamically created instances of registered devices immovable.
1920
(gsdevice.c)
1921
 
1922
Unifies gx_drawing_color with (makes it equivalent to) gx_device_color.
1923
THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
1924
higher-level driver procedures (fill_path, stroke_path, fill_mask).  We
1925
regret that this was necessary, but the documentation in drivers.doc does
1926
warn the reader: "DO NOT ASSUME THESE OPERATIONS WILL REMAIN UNCHANGED IN
1927
FUTURE RELEASES."  These three procedures, at least, should now be stable.
1928
(gsdcolor.h, gxcindex.h, gxdcolor.h, gxdevice.h, gximage.h, gxpaint.h,
1929
gxpcolor.h, gdevdflt.c, gdevpdf.c, gdevpdfi.c, gdevxalt.c, gsimage.c,
1930
gsimage2.c, gspcolor.c, gxacpath.c, gxccache.c, gxcht.c, gxclpath.c,
1931
gxclread.c, gxdcconv.c, gxdither.c, gxfill.c, gxdraw.c, gxht.c, gxpaint.c,
1932
gxpcmap.c, gxstroke.c)
1933
 
1934
</pre>
1935
 
1936
<h2><a name="Version3.65"></a>Version 3.65 (limited) (3/9/96)</h2>
1937
 
1938
<p>
1939
This release adds garbage collection for device instances.  ****** NOTE:
1940
Because of changes in memory management, if you are using the MS Windows
1941
driver (mswin), you must run with -dNOGC.  This is a temporary problem which
1942
will be fixed before the next beta release.
1943
 
1944
<h3><a name="V3.65_Documentation"></a>Documentation</h3><pre>
1945
Documents the C API equivalent of a -d switch for setting a flag like
1946
NOPAUSE.  (imain.h)
1947
 
1948
Splits off the NEWS entries for versions 3.0 through 3.33 into a new
1949
file.  (history3.doc)
1950
 
1951
Adds a man page for ps2pdf.  (ps2pdf.1)
1952
 
1953
Documents the new memory management aspects of device drivers, and corrects
1954
many other aspects of driver documentation that had become inaccurate.
1955
(drivers.doc)
1956
 
1957
Updates the documentation for the gs_*.ps files.  (psfiles.doc)
1958
 
1959
Replaces .type1addpath with .type1execchar.  (language.doc)
1960
 
1961
Adds some more documentation on how band lists do read/write switching.
1962
(gxclist.h)
1963
 
1964
Adds a reference to the new Genscript program, a free Ghostscript-based
1965
replacement for enscript.  (README)
1966
 
1967
Notes that no further changes will be accepted for the gdevcdj.c file, which
1968
has gotten completely out of hand.  (gdevcdj.c).
1969
 
1970
Documents the TextAlphaBits and GraphicsAlphaBits device parameters.
1971
(language.doc)
1972
 
1973
</pre><h3><a name="V3.65_Procedures"></a>Procedures</h3><pre>
1974
Fixes bugs:
1975
	- gs_pdfwr.ps and pdf2ps.1 weren't installed on Unix systems.
1976
(unix-end.mak)
1977
	- The pdf2ps shell script didn't accept any options.  (pdf2ps)
1978
	- The rule for srle.$(OBJ) incorrectly specified a dependency on
1979
srld.c.  (lib.mak)
1980
	- The rule for command lists didn't include stream.$(OBJ).
1981
(lib.mak)
1982
	- The stack size for one configuration was set too small.
1983
(watclib.mak)
1984
 
1985
Speeds up genconf by eliminating redundant file reading and processing.
1986
(genconf.c)
1987
 
1988
Moves the pixel-difference filters from int.mak to lib.mak.  (int.mak,
1989
lib.mak)
1990
 
1991
Moves the library parts of the HSB color and Level 1 path (arcs, pathbbox,
1992
path enumeration) options from int.mak to lib.mak, and adds them to the
1993
library makefiles.  (int.mak, lib.mak; bclib.mak. ugcclib.mak, watclib.mak)
1994
 
1995
</pre><h3><a name="V3.65_Utilities"></a>Utilities</h3><pre>
1996
 
1997
Fixes bugs:
1998
	- pdf2ps would fail if it encountered a font with a standard
1999
encoding.  (pdf_2ps.ps)
2000
 
2001
Adds new switches to pdf2ps:
2002
	-dPSBinaryOK allows writing binary image data in the output.
2003
(pdf_2ps.ps)
2004
	-dPSLevel1 forces Level 1 compatible output.  (int.mak,
2005
unix-end.mak, gs_l2img.ps, gs_pdf.ps, pdf_2ps.ps, pdf_main.ps)
2006
	-dPSNoProcSet causes the ProcSet to be loaded at run time, not at
2007
conversion time -- primarily useful for debugging.  (pdf_2ps.ps)
2008
 
2009
Adds a utility for viewing PCX files, so we can preview high-resolution
2010
output in a reasonable compressed format.  (unix-end.mak, viewpcx.ps)
2011
 
2012
</pre><h3><a name="V3.65_Drivers"></a>Drivers</h3><pre>
2013
 
2014
Fixes bugs:
2015
	- Some compilers require an extra #include to define structures even
2016
if they are only referenced by pointers.  (int.mak, gdevpdf.c, gdevpdfp.c)
2017
	- A procedure name was duplicated.  (gdevpdfi.c)
2018
	- A pdfmark between a gsave and a grestore could cause a
2019
rangecheck error.  (gdevpdfp.c)
2020
	- A pdfmark between a gsave and a grestore could cause the
2021
grestore to do an inappropriate initgraphics.  (gs_pdfwr.ps)
2022
	- The pdfwrite driver could reinitialize the output file
2023
unpredictably.  (gdevpdfp.c)
2024
	- The PCX drivers didn't clear padding bytes at the ends of scan
2025
lines.  (gdevpcx.c)
2026
	- The PCX drivers didn't set the "version" field correctly (this was
2027
OK in 2.6.1, bug introduced sometime since then).  (gdevpcx.c)
2028
	- Whoever last touched the color inkjet drivers completely broke the
2029
handling of the BitsPerPixel parameter, again.  We were able to half-fix it,
2030
but the code is impossible to understand, let alone modify safely.
2031
(gdevcdj.c)
2032
	- Anti-aliased characters didn't work with banding.  (gxclpath.c)
2033
	- The PGM/PPM drivers didn't recognize black-and-white pages for
2034
optimization to PBM, only gray or colored.  (gdevpbm.c)
2035
	- The color inkjet drivers initialized the params_size field of the
2036
static instance incorrectly, resulting in garbage in the last few structure
2037
members when instances were copied.  (gdevcdj.c)
2038
	- The 24-bit PCX driver didn't pad each scan line to an even number
2039
of bytes.  (gdevpcx.c)
2040
	- The svga16 driver initialized its procedures incorrectly.
2041
(gdevpcfb.c)
2042
 
2043
Adds text writing capability to the PDF writer.  In its present form, this
2044
is a very bad hack: it only works for the 14 built-in fonts with their
2045
standard encodings.  (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
2046
 
2047
Adds garbage collection and finalization for device instances (gscdefs.h,
2048
gsdevice.h, gxdevice.h, gconf.c, gdevmrop.c, gsdevice.c, gslib.c, gsmain.c).
2049
(See the "Driver instance allocation" section of drivers.doc for more
2050
details about what is required to make this work.)
2051
 
2052
	- When an open device is freed (explicitly, by garbage collection,
2053
or by 'restore'), if the device was allocated dynamically by Ghostscript's
2054
standard allocator, the device's close procedure will be called.  THIS IS A
2055
NON-BACKWARD-COMPATIBLE CHANGE for dynamically created devices, which
2056
formerly were not closed automatically, even when Ghostscript exited.
2057
 
2058
	- Device instances allocated in GC-able space will be traced
2059
like other objects, assuming they have proper structure descriptors.
2060
 
2061
Provides a (very slow but correct) default implementation of copy_alpha.
2062
(gxcindex.h, gdevdflt.c, gsimage4.c)
2063
 
2064
Removes the implementation of copy_alpha in gdevpbm.c, since this is now
2065
implemented (more efficiently) in gdevm24.c.  (gdevpbm.c)
2066
 
2067
Adds TextAlphaBits and GraphicsAlphaBits as readable parameters for all
2068
devices.  (gsdparam.c, gdevpbm.c, gdevsvga.c)
2069
 
2070
</pre><h3><a name="V3.65_Platforms"></a>Platforms</h3><pre>
2071
 
2072
Fixes bugs:
2073
	- There were some attempts to coerce long to short pointers
2074
on segmented platforms.  (gsdparam.c, gstype1.c)
2075
	- The stack could overflow on the 16-bit MS Windows platform.
2076
(gxfill.c, gxclread.c)
2077
	- The DLL callback parameter for window resize events was computed
2078
incorrectly on 16-bit systems.  (gdevwdib.c)
2079
	- A file included gxdevice.h unnecessarily.  (bcwin.mak,
2080
bcwin32.mak, msvcwint.mak, gp_mswin.c)
2081
 
2082
</pre><h3><a name="V3.65_Interpreter"></a>Interpreter</h3><pre>
2083
 
2084
Fixes bugs:
2085
	- Storing into a read-only dictionary with def or store was
2086
allowed.  (dstack.h)
2087
	- If the interpreter allocated extra space for a dictionary
2088
to round its storage size up to a power of 2, it was possible for
2089
length to exceed maxlength.  (idict.c, iinit.c)
2090
	- The if and ifelse operators didn't check that their
2091
'procedure' arguments were actually procedures.  (interp.c, zcontrol.c)
2092
	- The undef operator was defined even in Level 1
2093
configurations.  (We need this capability for all configurations, so
2094
we always define .undef.)  (zdict.c, gs_*.ps, pdf_*.ps)
2095
	- In Level 1 configurations, copying a dictionary should copy the
2096
access attributes, but it didn't.  We have to work around this
2097
compatibility quirk in a lot of places.  (gs_cidfn.ps, gs_cmap.ps,
2098
gs_dps1.ps, gs_fonts.ps, gs_init.ps, gs_l2img.ps, gs_lev2.ps, gs_pdf.ps,
2099
gs_pfile.ps, gs_res.ps, gs_setpd.ps, gs_type1.ps, zdict.c)
2100
	- DSC comments that crossed a buffer boundary didn't call the
2101
scan_dsc_proc.  (iscan.c)
2102
	- "statusdict /setpage get exec" caused an error.  (gs_statd.ps)
2103
	- The default size of systemdict had become slightly too small.
2104
(iinit.c)
2105
	- Doing a showpage or copypage would cause the equivalent of a
2106
setpagedevice at the next restore or grestore.  We aren't entirely sure that
2107
the fix we made doesn't have bad side-effects.  (gs_setpd.ps)
2108
	- Not all filters accepted (and ignored) an optional dictionary
2109
parameter on the stack.  (ifilter.h, zfbcp.c, zfdecode.c, zfilter.c,
2110
zfilterx.c, zfzlib.c, zmisc1.c)
2111
	- The PixelDifference filters required a Columns parameter, rather
2112
than defaulting it to 1.  (spdiffx.h, zfdecode.c)
2113
	- Contrary to the NEWS entry for release 3.60, the LZW filters did
2114
not implement pixel differencing.  (zfdecode.c, zfilter2.c)
2115
	- readstring with a 0-length string didn't signal a rangecheck.
2116
This doesn't make a lot of sense to me, but it's what the Adobe
2117
documentation specifies.  Unfortunately, we have to work around this in a
2118
number of places that assumed the sensible definition (return () true
2119
without reading anything).  (gs_l2img.ps, pdf_font.ps, zfileio.c)
2120
	- Encoded number strings didn't work (bug introduced in 3.64).
2121
(ibnum.c)
2122
	- The allocator could produce spurious "free large 0x...... chunk
2123
not found" messages.  (These didn't cause any harm, but they were
2124
disturbing.)  (gsalloc.c)
2125
 
2126
Changes the default transfer function for high-resolution devices so
2127
that it is the identity function if the device is continuous-tone.
2128
(gs_init.ps)
2129
 
2130
Undoes the "subversion" of zgetdevice noted in release 3.61, since it
2131
is now possible to copy devices safely.  (zdevice.c)
2132
 
2133
Changes the implementation of the garbage collector and restore so that
2134
object finalization code may safely free objects.  (igc.c, isave.c)
2135
 
2136
Reimplements essentially all of Type 1 BuildChar in C.  (gs_init.ps,
2137
gs_type0.ps (deleted), gs_type1.ps, ifont.h, zchar.c, zchar1.c, zfont.c)
2138
 
2139
Reimplements DISKFONTS as a separate feature (diskfont.dev), and changes it
2140
to use Type 4 fonts rather than special machinery.  Currently this feature
2141
is included only in the makefiles for 16-bit architectures.  (bc.mak,
2142
bcwin.mak, int.mak, tc.mak, gs_diskf.ps, gs_fonts.ps, gs_type1.ps)
2143
 
2144
Converts the library search path from a list of strings to a (PostScript)
2145
array of strings, one string per directory.  (iminst.h, main.h, gs.c,
2146
gsmain.c, zfile.c)
2147
 
2148
Adds a hook procedure scan_comment_proc for processing all comments,
2149
similar to scan_dsc_proc.  If both are set, scan_comment_proc is used only
2150
for non-DSC comments.  (iscan.h, iscan.c)
2151
 
2152
</pre><h3><a name="V3.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2153
 
2154
Fixes bugs:
2155
	- Encrypted PDF files produced a random error (usually ioerror in
2156
--token--) rather than a meaningful message.  (pdf_main.ps)
2157
	- Color space setting didn't work.  (gs_pdf.ps)
2158
	- The algorithm for skipping a possible blank line following the
2159
'stream' keyword wasn't robust enough.  (We aren't sure the new algorithm is
2160
exactly right, either.)  (pdf_base.ps)
2161
 
2162
Gets rid of the special handling of the LZW decoding filter, since the
2163
filter itself now handles the Predictor facility.  (pdf_base.ps)
2164
 
2165
</pre><h3><a name="V3.65_Streams"></a>Streams</h3><pre>
2166
 
2167
Fixes bugs:
2168
	- Configurations with LZW encoding but not decoding had an
2169
undefined reference.  (lib.mak, slzwc.c, slzwd.c)
2170
	- The LZW-compatible encoder didn't provide a 'reset' procedure.
2171
(slzwce.c)
2172
	- The PixelDifference filters didn't work for most parameter
2173
combinations in which each pixel took up more than 1 byte.  (spdiff.c)
2174
	- Temporary write streams could cause an infinite loop.  (We only
2175
need such streams for the Predictor = 2 case of LZWEncode: this is why the
2176
bug never showed up before.)  (stream.c)
2177
 
2178
Adds an optional reinitialization procedure to the stream template.  Note
2179
that this is not the same as the PostScript 'reset' operation or the stream
2180
resetting operation invoked by sreset: the reinit procedure in the template
2181
reinitializes any internal state of the encoder or decoder without affecting
2182
buffered data.  (scommon.h, strimpl.h, sbcp.c, sbhc.c, slzwce.c, slzwd.c,
2183
slzwe.c, smtf.c, spdiff.c, srle.c) ****** NOT DONE YET: sbwbs.c, szlibd.c,
2184
szlibe.c
2185
 
2186
Adds a decoding stream for the run-length compression used in PCX.
2187
(spcxx.h, spcxd.c)
2188
 
2189
</pre><h3><a name="V3.65_Library"></a>Library</h3><pre>
2190
 
2191
Fixes bugs:
2192
	- A recent edit introduced an extraneous right parenthesis.
2193
(gpcheck.h)
2194
	- A minor nit in a macro could cause incorrect grouping of 'if'
2195
statements under implausible conditions.  (gsmdebug.h)
2196
	- The first data plane buffer of an image enumerator didn't get
2197
marked during garbage collection.  (gsimage.c)
2198
	- The Watcom C compiler required splitting up a declaration.
2199
(gxcmap.h)
2200
	- The extern declarations for the tables in gconf.c weren't gathered
2201
together in one place.  (gscdefs.h, gxiodev.h, gconf.c, gsdevice.c, gslib.c,
2202
gsinit.c, gsiodev.c)
2203
	- charpath and show produced different output.  We fixed this by
2204
undoing a "bug fix", introduced in version 2.9, which suppressed hinting and
2205
coordinate rounding for charpath; we aren't sure this won't cause some
2206
obscure problems to reappear.  (gstype1.c)
2207
	- Clipping with a rectangle usually created a 3-rectangle clipping
2208
list, slowing down all drawing operations (performance bug only).
2209
(gxacpath.c)
2210
	- stroking in a rotated coordinate system sometimes thought lines
2211
were always thin when they actually weren't.  (gxstroke.c)
2212
	- An unsigned quantity wasn't properly converted to signed, possibly
2213
causing band path coordinates to get mangled.  (gxclread.c)
2214
	- A bug in the Borland compiler caused an unsigned quantity to be
2215
interpreted as signed, causing band path coordinates to get mangled.
2216
(gxclread.c)
2217
 
2218
Changes structure type pointers on 16-bit segmented systems to full
2219
32-bit pointers.  This will increase time and space requirements very
2220
slightly on these systems.  (gsmemory.h, gxobj.h)
2221
 
2222
Changes the memory manager so that object finalization code may safely free
2223
objects.  (gsmemory.h, gsstruct.h, gsalloc.c, gsmemory.c)
2224
 
2225
Refactors the Type 1 CharString interpreter so it can be included in
2226
the imager library.  (gstype1.h, gxtype1.h, gstype1.c)
2227
 
2228
Starts to refactor the implementation of band lists in memory so that it can
2229
use any encoding/decoding filter.  Currently this choice is made at compile
2230
time, but it could easily be made dynamic.  (gxclmem.h, gxclmem.c)
2231
 
2232
Starts to refactor image rendering so that, like path filling and stroking,
2233
it only uses imager state and can be done after banding.  (gxcmap.h,
2234
gxdraw.h, gximage.h, gsimage*.c, gxcmap.c)
2235
 
2236
Speeds up copy_mono for 2-bit-per-pixel devices a little.  (gdevm2.c)
2237
 
2238
Implements an optimized copy_alpha for 24-bit memory devices.  (gdevmem.h,
2239
gdevm24.c)
2240
 
2241
Speeds up filling rectangles significantly.  (gsbitops.c)
2242
 
2243
Changes the band list rasterizer to use the memory space of the device
2244
rather than the C heap: our allocator is considerably faster than malloc.
2245
(gxclread.c)
2246
 
2247
Speeds up stroking a little, especially in 90 degree rotated coordinate
2248
systems.  (gxstroke.c)
2249
 
2250
</pre>
2251
 
2252
<h2><a name="Version3.64"></a>Version 3.64 (limited, incremental) (1/27/96)</h2>
2253
 
2254
<p>
2255
This release fixes a few more bugs, including some serious bugs in band
2256
lists, and adds pdfmark processing to the PDF writer.  The PDF writer is
2257
still not fit for real use, since it converts all text characters into 720
2258
dpi bitmaps and turns images into zillions of tiny rectangles (!), but it
2259
should be producing legal output.
2260
 
2261
<h3><a name="V3.64_Documentation"></a>Documentation</h3><pre>
2262
Fixes bugs:
2263
	- Frans van Hoesel's e-mail address was incorrect.  (gdevdjet.c)
2264
	- The man page for ansi2knr was out of date.  (ansi2knr.1)
2265
	- The description of a procedure was out of date.  (gxdcolor.h)
2266
 
2267
Notes that several "optional" features are required in order to obtain the
2268
full PostScript Level 1 functionality at the library level.  (lib.doc)
2269
 
2270
Documents the top-level interpreter API.  (imain.h)
2271
 
2272
Adds details on differences between the imager API and the PostScript
2273
graphics operators.  (lib.doc)
2274
 
2275
Notes (here, in NEWS) that the change for device prototypes in 3.61 made the
2276
protection attributes of a device significant for the first time.  Only the
2277
writable attribute is significant so far.  (news)
2278
 
2279
</pre><h3><a name="V3.64_Procedures"></a>Procedures</h3><pre>
2280
 
2281
Fixes bugs:
2282
	- The .dev rules in the library makefiles didn't list echogs as a
2283
dependency.  (jpeg.mak, libpng.mak, zlib.mak)
2284
	- The install rule tried to install gs.1.1 etc. rather than gs.1
2285
etc.  (unix-end.mak)
2286
	- The install rule tried to install some nonexistent *.1 files.
2287
(unix-end.mak)
2288
 
2289
Adds 'help' and '?' procedures to assist users who don't read the
2290
documentation.  (gs_init.ps)
2291
 
2292
Adds -A-, -E-, and -Z-... to turn off debugging flags.  (gs.c)
2293
 
2294
Adds a -dDELAYBIND switch to delay binding operators, to allow special
2295
packages like pstotext to redefine them.  (gs_init.ps)
2296
 
2297
</pre><h3><a name="V3.64_Utilities"></a>Utilities</h3><pre>
2298
 
2299
Fixes bugs:
2300
	- Fonts produced by rollconv.ps left a couple of items on the
2301
operand stack, and left array packing set to true.  (rollconv.ps)
2302
 
2303
Makes ansi2knr require that the first token after a function header be a
2304
left brace on the next line, so it can cope with some macros in IJG release
2305
6a.  Also updates it to work better without the GNU configure machinery, and
2306
on some old compilers.  (ansi2knr.c)
2307
 
2308
Changes align.ps so it can be used directly to determine the margin
2309
parameters.  (align.ps, psfiles.doc)
2310
 
2311
</pre><h3><a name="V3.64_Drivers"></a>Drivers</h3><pre>
2312
 
2313
Fixes bugs:
2314
	- The TIFF/F (G3 and G4) drivers were broken (bug introduced in
2315
3.60).  (gdevtfax.c)
2316
	- The PDF writer produced invalid output for 0-width, 0-height
2317
images.  (gdevpdfi.c)
2318
	- The PDF writer wasn't a page device.  (gdevpdf.c)
2319
	- The PDF writer assigned the Contents node rather than the Pages
2320
node as the Parent of each page.  (gdevpdfx.h, gdevpdf.c)
2321
 
2322
Corrects the margin information for the DeskJet printers to be the actual
2323
values observed on a printer; all of the values in the file were wrong.
2324
(gdevdjet.c)
2325
 
2326
Adds pdfmark recognition and conversion to the PDF writer.  All documented
2327
pdfmarks (ANN, ARTICLE, DEST, DOCINFO, DOCVIEW, LNK, OUT, PAGE, PAGES, PS)
2328
are recognized and converted, but some of them are not converted correctly.
2329
(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfm.c)
2330
 
2331
Adds recognition of all Distiller parameters, except *ImageDict, to the PDF
2332
writer.  Currently only ASCII85EncodePages actually has any effect.
2333
(gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
2334
 
2335
Ensures that PDF output files include at least a default Info dictionary.
2336
(gdevpdf.c)
2337
 
2338
Changes the handling of coordinates in PDF output files so that the scale is
2339
always 72 dpi, and so that each graphics operator is on a line by itself,
2340
for compatibility with Adobe Illustrator.  (gdevpdfx.h, gdevpdf*.c)
2341
 
2342
Adds a driver for ImageMagick's MIFF format.  The driver currently only
2343
produces 24-bit, direct color, RLE compressed output.  (gdevmiff.c)
2344
 
2345
</pre><h3><a name="V3.64_Platforms"></a>Platforms</h3><pre>
2346
 
2347
Changes the gp_check_interrupts platform procedure so that instead of just
2348
returning a Boolean, it can now also return a negative error code.  THIS IS
2349
(THEORETICALLY) A NON-BACKWARD-COMPATIBLE CHANGE.  However, since all
2350
implementations of this procedure should only have been returning 0 or 1 up
2351
to now, no existing code should need to be changed.  (gpcheck.h, gsmisc.c)
2352
 
2353
</pre><h3><a name="V3.64_Interpreter"></a>Interpreter</h3><pre>
2354
 
2355
Fixes bugs:
2356
	- devicenames was accidentally deleted.  (gs_init.ps)
2357
	- -dFAKEFONTS could cause the memory manager to waste a lot of time.
2358
(gs_dps1.ps)
2359
	- Using -r or -dFIXEDMEDIA with a non-page device caused an error.
2360
(gs_init.ps)
2361
	- A VMS compiler reserves the word "readonly", which was used as a
2362
parameter name.  (imain.h, gsmain.c)
2363
	- A garbage collection during the execution of x/y/xyshow with an
2364
array providing the values could get confused.  (ibnum.h, ichar.h, stream.h,
2365
ibnum.c, iscanbin.c, zchar.c, zchar2.c, zdps1.c, zupath.c)
2366
	- Errors in encoded number strings produced a typecheck rather than
2367
a rangecheck error.  (ibnum.c, zupath.c)
2368
 
2369
Updates the DCT filters for IJG release 6a.  (zfdctc.c)
2370
 
2371
Provides an API call for getting the real stdio files.  (imain.h,
2372
gs.c, gsmain.c)
2373
 
2374
</pre><h3><a name="V3.64_Streams"></a>Streams</h3><pre>
2375
 
2376
Fixes bugs:
2377
	- If the CCITTFaxEncode stream encountered an output buffer boundary
2378
while processing the last scan line of input, it could fail to process some
2379
the scan line.  (scfe.c)
2380
	- A couple of pointers weren't always initialized, possibly
2381
confusing the garbage collector.  (stream.c)
2382
	- The weighting coefficient structures used for image scaling
2383
weren't declared properly for the garbage collector.  (siscale.h, siscale.c)
2384
 
2385
</pre><h3><a name="V3.64_Library"></a>Library</h3><pre>
2386
 
2387
Fixes bugs:
2388
	- Unrotated patterns always used the bounding box size as the step,
2389
rather than XStep/YStep.  (gspcolor.c)
2390
	- Alpha computations for graphics could be seriously incorrect (bug
2391
introduced in 3.6x).  (gdevabuf.c)
2392
	- The length of the next_data_x command for the fill_mask operation
2393
was incorrect, causing the band list to become confused (bug introduced in
2394
3.63).  (gxclpath.c)
2395
	- An extern was omitted, causing linker warnings.  (gxdevice.h)
2396
	- RasterOps could cause an invalid access because the palette
2397
for a memory device wasn't set.  (gdevmrop.c)
2398
	- gximage.h was included unnecessarily.  (gspaint.c)
2399
	- Color screens caused a segmentation fault (bug introduced in
2400
3.6x).  (gxcht.c)
2401
	- cshow returned the width in an incorrect coordinate system.
2402
(gscoord.h, gschar.c)
2403
	- Filling or stroking a path that lay entirely off the page in the
2404
+X or +Y direction could corrupt memory (bug introduced in 3.6x).
2405
(gxclpath.c)
2406
	- When banding, painting characters with halftones produced random
2407
results (bug introduced in 3.6x).  (gxclpath.c)
2408
	- When banding, characters could get clipped when they shouldn't be
2409
(bug introduced in 3.6x).  (gxclpath.c)
2410
	- The default implementation of fill_mask could discard clipped
2411
bitmaps (bug introduced in 3.6x).  (gdevdflt.c)
2412
	- Non-halftoned 24-bit colors could get garbled when banding (bug
2413
introduced in 3.6x).  (gxclist.c)
2414
	- When banding, if a stroked path had subpaths that fell entirely
2415
outside the current band, the rest of the path was drawn in the wrong place
2416
(bug introduced in 3.6x).  (gxclpath.c)
2417
 
2418
Speeds up image interpolation on machines with slow floating point.
2419
(siscale.h, siscale.c)
2420
 
2421
Speeds up interpolated images when using device color spaces.  (gxcvalue.h,
2422
gxfrac.h, gdevht.c, gxcmap.c, gsimage.c, gsimage3.c)
2423
 
2424
Speeds up color mapping a little by removing tests and calls in favor of
2425
code copying.  (gxcmap.c)
2426
 
2427
Implements RasterOp for 24-bit RGB devices.  (gdevm8.c, gdevm24.c,
2428
gdevmrop.c)
2429
 
2430
</pre>
2431
 
2432
<h2><a name="Version3.63"></a>Version 3.63 (limited, incremental) (1/14/96)</h2>
2433
 
2434
<p>
2435
This release has the usual collection of bug fixes, and two significant
2436
additions: AccurateScreens, and the first draft of a PostScript-&gt;PDF
2437
converter ("distiller").
2438
 
2439
<h3><a name="V3.63_Documentation"></a>Documentation</h3><pre>
2440
Fixes bugs:
2441
	- Some documentation for pstoppm.ps was out of date.  (psfiles.doc)
2442
	- Documentation for acctest.ps, view*.ps, and zeroline.ps was
2443
missing.  (psfiles.doc)
2444
	- The documentation for rollconv.ps omitted the .CSR file.
2445
(rollconv.ps)
2446
 
2447
Removes an inappropriate RCS Id line.  (gs.1)
2448
 
2449
Adds a list of paper sizes to the man page.  (gs.1)
2450
 
2451
Suggests that driver authors use parameterization rather than copying when
2452
possible.  (drivers.doc)
2453
 
2454
Adds an announcement of Ghostscript support on CompuServe.  (README)
2455
 
2456
Documents the new -dCOLORSCREEN switch and the existing -dDITHERPPI=lpi
2457
switch.  (use.doc)
2458
 
2459
Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather than
2460
0.9a.  (install.doc)
2461
 
2462
Adds some new man pages.  (pdf2ps.1, ps2ascii.1)
2463
 
2464
Greatly expands lib.doc.  (lib.doc)
2465
 
2466
</pre><h3><a name="V3.63_Procedures"></a>Procedures</h3><pre>
2467
 
2468
Fixes bugs:
2469
	- The pg target for Unix platforms didn't include some necessary
2470
additional X11 libraries.  (unix-end.mak)
2471
	- The Unix library makefile didn't define CCAUX or CCLEAF.
2472
(ugcclib.mak)
2473
	- Unix systems didn't `install' some .ps files.  (unix-end.mak)
2474
 
2475
Extends genconf so that features at the library level can have
2476
initialization procedures.  (gconf.c, genconf.c, gsinit.c)
2477
 
2478
Adds a -dCOLORSCREEN[=false] switch to force enabling or disabling of
2479
4-color screens.  (gs_init.ps, gs_setpd.ps)
2480
 
2481
</pre><h3><a name="V3.63_Utilities"></a>Utilities</h3><pre>
2482
 
2483
Fixes bugs:
2484
	- The prfont utility didn't leave enough of a margin on the left.
2485
(prfont.ps)
2486
	- The ps2ascii utility still created files _temp_.out and _temp_.err
2487
even though they are no longer used.  (ps2ascii.ps)
2488
	- The acctest.ps file was empty, rather than including a test
2489
program.  (acctest.ps)
2490
 
2491
Adds ps2pdf[.bat] scripts for invoking the new pdfwrite driver.  (ps2pdf,
2492
ps2pdf.bat, unix-end.mak)
2493
 
2494
</pre><h3><a name="V3.63_Drivers"></a>Drivers</h3><pre>
2495
 
2496
Fixes bugs:
2497
	- The x11alpha driver had a patch that suppressed output in many
2498
cases.  (gdevxalt.c)
2499
	- The X driver set up a parameter incorrectly in copy_color.
2500
(gdevx.c)
2501
	- An explicit cast was needed to handle a 'const' problem.
2502
(gdevpng.c)
2503
 
2504
Adds a pdfwrite driver that creates syntactically correct PDF output.  The
2505
output is only reasonable for fill/stroke graphics, not for text or images.
2506
(iscan.h, sa85x.h, sfilter.h, gdevpdf.c, sfilter2.c, zfdecode.c)
2507
 
2508
</pre><h3><a name="V3.63_Platforms"></a>Platforms</h3><pre>
2509
 
2510
Fixes bugs:
2511
	- The test for WinExec failure on Win32 was incorrect.  (gp_mswin.c)
2512
	- getenv was declared redundantly on OS/2.  (gp_os2.c)
2513
	- gs16spl.c was missing &lt;string.h&gt;.  (gs16spl.c)
2514
 
2515
</pre><h3><a name="V3.63_Interpreter"></a>Interpreter</h3><pre>
2516
 
2517
Fixes bugs:
2518
	- Images read data in smaller and smaller increments (performance
2519
bug only).  (zpaint.c)
2520
	- Images with MultipleDataSources=true and two or more DataSources
2521
referencing the same stream could get confused.  (zpaint.c)
2522
	- Invoking setpagedevice with an undefined key, even with Policy =
2523
1, caused an error.  (gs_setpd.ps)
2524
	- IEEE floats in binary tokens or encoded number strings were read
2525
incorrectly on CPUs that use non-IEEE floating point.  (ibnum.c)
2526
 
2527
Adds a 'const' to the second parameter of zimage_setup.  (zimage2.c,
2528
zpaint.c)
2529
 
2530
Encapsulates the filling of free memory blocks in a macro.  (igc.c,
2531
igcstr.c)
2532
 
2533
</pre><h3><a name="V3.63_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2534
 
2535
Fixes bugs:
2536
	- If the first line of a file began with % but the line was longer
2537
than 255 characters, an error occurred.  (pdf_main.ps)
2538
	- Masked images didn't set the color before drawing.  (gs_pdf.ps)
2539
	- Extraneous blank lines in the trailer or cross-reference region
2540
caused an error.  (pdf_base.ps, pdf_main.ps)
2541
 
2542
</pre><h3><a name="V3.63_Streams"></a>Streams</h3><pre>
2543
 
2544
Speeds up image interpolation a little.  Much more could be still be done.
2545
(siscale.c)
2546
 
2547
</pre><h3><a name="V3.63_Library"></a>Library</h3><pre>
2548
 
2549
Fixes bugs:
2550
	- An error in handling a boundary condition could cause a horizontal
2551
streak of pixels to be turned on or off when it shouldn't be.  (gxfill.c)
2552
	- The new scan-line-based filling loop could write pixels twice.
2553
(The old trapezoid-based loop still does write pixels twice.)  (gxfill.c)
2554
	- For multi-plane images, gs_image_next only sets *pused for the
2555
last plane; this wasn't documented.  (gsimage.h)
2556
	- Images with MultipleDataSources=true and two or more DataSources
2557
referencing the same stream could get confused.  (gsimage.h, gsimage0.c)
2558
	- 12-bit gray images caused an invalid memory access.  (gsimage.c)
2559
	- Nearly-zero-thickness lines didn't get filled, because the hack
2560
that compensates for this peculiarity of the MS Windows PostScript driver
2561
accidentally got disabled.  (gxfill.c)
2562
	- Some casts to remove 'const' were omitted.  (gxclread.c)
2563
	- 1-line-high bitmaps could get written in the band list with an
2564
inconsistent number of bytes, causing errors when reading.  (gxcldev.h,
2565
gxclbits.c, gxclist.c, gxclpath.c, gxclread.c)
2566
	- Isolated dots produced by round caps usually disappeared.  (They
2567
still disappear sometimes.)  (gxstroke.c)
2568
	- On 16-bit platforms, the computation of t2 and t3 in
2569
gx_curve_x_at_y could overflow, leading to incorrect output.  (gxpcopy.c)
2570
	- Stroking horizontal or vertical lines could produce variations of
2571
1 pixel in the line width.  (gxstroke.c)
2572
	- The default clipping region for band rendering was too large,
2573
leading to wasted work.  (gxclread.c)
2574
	- Guarantees no double pixel writing when necessary, i.e., when a
2575
non-idempotent RasterOp is selected.  (gsropt.h, gxfill.c)
2576
	- For unrotated black-and-white images, one column of pixels at the
2577
right edge of the image might be incorrect.  (gsimage1.c)
2578
	- A const pointer was passed inappropriately.  (gxistate.h,
2579
gscoord.c)
2580
	- CIE color conversion could address 1 element beyond the end of an
2581
array, with unpredictable results.  (gscie.c)
2582
 
2583
Separates out the higher-level band list facilities, so they can be an
2584
optional feature.  (lib.mak, gxcldev.h, gxclpath.h, gxclbits.c, gxclist.c,
2585
gxclpath.c, gxclread.c)
2586
 
2587
Implements bitmap (fill_mask) clipping in the band list.  (gxcldev.h,
2588
gxclpath.h, gxclist.c, gxclpath.c, gxclread.c)
2589
 
2590
Starts to separate out the RasterOp facility as an optional feature.
2591
(lib.mak, gxdevice.h, gxdevrop.h, gdevdflt.c, gdevmrop.c)
2592
 
2593
Encapsulates the filling of free memory blocks in a macro, at the request of
2594
a licensee.  (gdebug.h, gsmdebug.h, gsmemory.h, gs.c, gsalloc.c, gsmemory.c,
2595
gxbcache.c)
2596
 
2597
Speeds up fill_rectangle for 32-bit devices.  (gdevm32.c)
2598
 
2599
Speeds up path writing in band lists a little.  (gxclpath.c)
2600
 
2601
Implements AccurateScreens along the lines described in the Adobe
2602
documentation.  The current implementation can produce very large
2603
super-cells, so it will not always be able to actually increase the screen
2604
accuracy.  (gxdht.h, gsht.c, gshtscr.c)
2605
 
2606
</pre>
2607
 
2608
<h2><a name="Version3.62"></a>Version 3.62 (limited, incremental) (12/26/95)</h2>
2609
 
2610
<p>
2611
This release makes some licensee-requested improvements in the garbage
2612
collector and fixes a couple of minor bugs.  It also constitutes a
2613
checkpoint for the forthcoming forked 3.53 release.
2614
 
2615
<h3><a name="V3.62_Documentation"></a>Documentation</h3><pre>
2616
Notes that for Win32s, gs16spl.exe must be in the same directory as
2617
gswin32.exe.  (install.doc)
2618
 
2619
Changes `3.N' to a real version number in the man page.  (gs.1)
2620
 
2621
Adds a reference to dos-psv, another "dumb terminal" user interface for
2622
Ghostscript intended for MS-DOS users.  (README)
2623
 
2624
</pre><h3><a name="V3.62_Procedures"></a>Procedures</h3><pre>
2625
 
2626
Fixes bugs:
2627
	- The stack size for some of the PC platforms was set too small.
2628
(watc.mak, watcwin.mak)
2629
 
2630
Changes the default value of ORIENT1 from false to true, i.e., assumes that
2631
a value of 1 for the orientation parameter of setpageparams indicates
2632
portrait orientation.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  It only
2633
affects files created for roll-media imagesetters.  (gs_init.ps, use.doc)
2634
 
2635
</pre><h3><a name="V3.62_Interpreter"></a>Interpreter</h3><pre>
2636
 
2637
Fixes bugs:
2638
	- The definition of the op_index_op_array_table macro had an
2639
incorrect trailing semicolon.  (opdef.h)
2640
	- Setting the PageSize policy to 1 and then trying to set the page
2641
size caused an error if FIXEDMEDIA was selected.  (gs_setpd.ps)
2642
 
2643
Changes the garbage collector marking phase so that instead of just using a
2644
single block (allocated, free, or default) for the mark stack, it can chain
2645
all three types of block together.  (igc.h, igc.c, igcstr.c, ilocate.c)
2646
 
2647
Refactors the garbage collector slightly to reduce inter-module
2648
dependencies.  (int.mak, igc.h, igcstr.h, igcstr.c)
2649
 
2650
Changes the garbage collector to keep track of ranges within each chunk that
2651
must be scanned if the mark stack overflows.  (gxalloc.h, igc.c)
2652
 
2653
Adds [write]===[only] procedures, which act like == but also print the
2654
contents of dictionaries, and ppstack, which acts like pstack but uses ===.
2655
Changes ESTACKPRINT and OSTACKPRINT to use === rather than ==.  (gs_init.ps,
2656
gs_setpd.ps)
2657
 
2658
</pre><h3><a name="V3.62_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2659
 
2660
Fixes bugs:
2661
	- If a PDF file substituted a calibrated color space for the
2662
DeviceGray or DeviceRGB color space using a ColorSpace resource, the
2663
PostScript file that pdf2ps produced from that PDF file caused an error.
2664
(gs_pdf.ps)
2665
 
2666
</pre><h3><a name="V3.62_Library"></a>Library</h3><pre>
2667
 
2668
Fixes bugs:
2669
	- The debugging code for checking the sorting of line lists didn't
2670
check for an empty list.  (gxfill.c)
2671
 
2672
</pre>
2673
 
2674
<h2><a name="Version3.61"></a>Version 3.61 (limited) (12/10/95)</h2>
2675
 
2676
<p>
2677
This limited release fixes a few bugs (including a couple that significantly
2678
affected character quality) and also includes some substantial performance
2679
improvements.
2680
 
2681
<h3><a name="V3.61_Documentation"></a>Documentation</h3><pre>
2682
Fixes bugs:
2683
	- The directory name for the PNG library was incorrect.
2684
(libpng.mak)
2685
	- The analysis of curve monotonocity in gxpcopy.c had an error.
2686
(gxpcopy.c)
2687
 
2688
Changes the subdirectory names for zlib and libpng to be consistent.
2689
(make.doc)
2690
 
2691
Documents a possible problem with object file format incompatibilities in
2692
certain versions of Linux.  (make.doc)
2693
 
2694
Documents the new distinction between devices and device prototypes.
2695
(language.doc)
2696
 
2697
Adds a pointer to DEC's free pstotext utility.  (README)
2698
 
2699
</pre><h3><a name="V3.61_Procedures"></a>Procedures</h3><pre>
2700
 
2701
Fixes bugs:
2702
	- zlib.mak omitted some files in the encoding module dependencies.
2703
(zlib.mak)
2704
	- os2.mak referred to png.mak rather than libpng.mak.  (os2.mak)
2705
	- The png devices didn't include gdevpccm.$(OBJ) as a required file.
2706
(devs.mak)
2707
	- Some modules in lib.mak referred to stream.h, which was defined in
2708
int.mak.  (int.mak, lib.mak)
2709
	- Quite a few dependencies on header files were missing from the
2710
makefiles.  (int.mak, lib.mak, *.mak)
2711
 
2712
Adds a 'pg' target to the Unix makefiles, for building profiling
2713
configurations.  (unix-end.mak)
2714
 
2715
</pre><h3><a name="V3.61_Utilities"></a>Utilities</h3><pre>
2716
 
2717
Fixes bugs:
2718
	- Type 1 fonts in which some characters are defined by PostScript
2719
procedures couldn't be compiled.  (ccfont.h, iccfont.c, font2c.ps)
2720
	- pdf2ps didn't write Widths or Encoding in the converted file,
2721
producing incorrect spacing and incorrect characters.  (pdf_2ps.ps)
2722
	- markhint.ps didn't handle the Type 1 'div' operator, causing
2723
typecheck errors.  (markhint.ps)
2724
	- markhint.ps ignored the hstem3 and vstem3 hints.  (markhint.ps)
2725
 
2726
Changes the rollconv.ps utility to produce files whose names conform to the
2727
8.3 length restriction, and to reduce the fixed RAM overhead for Kanji
2728
fonts.  (rollconv.ps)
2729
 
2730
Adds a utility for detecting compiler problems that affect Ghostscript.
2731
(bughunt.sh)
2732
 
2733
</pre><h3><a name="V3.61_Drivers"></a>Drivers</h3><pre>
2734
 
2735
Adds anti-aliasing capability (-dTextAlphaBits and -dGraphicsAlphaBits) to
2736
the PGM and PPM drivers.  (gdevpbm.c)
2737
 
2738
Declares the static_procs member of the device structure as const *.  This
2739
should have been done a long time ago!  (drivers.doc, gxdevice.h)
2740
 
2741
</pre><h3><a name="V3.61_Platforms"></a>Platforms</h3><pre>
2742
 
2743
Fixes bugs:
2744
	- Printing didn't work in 32-bit MS Windows environments.
2745
(bcwin32.mak, gdevmswn.c, gp_mswin.c)
2746
	- There were some compatibility problems with IBM C.  (os2.mak,
2747
gsdll.h, gdevpm.c, gp_os2.c)
2748
 
2749
Adds the PNG drivers to the 32-bit MS Windows and OS/2 makefiles.
2750
(bcwin32.mak, os2.mak)
2751
 
2752
Adds a conditional to work around a bug in gcc 2.7.x (it didn't recognize
2753
that the target of a const T * might still be mutable through aliasing).
2754
(stdpre.h)
2755
 
2756
</pre><h3><a name="V3.61_Fonts"></a>Fonts</h3><pre>
2757
 
2758
Fixes bugs:
2759
	- Rasterizing a character in a Type 1 font with an invalid FontBBox
2760
left some garbage on the operand stack (bug introduced in 3.52 or 3.60).
2761
(gs_type1.ps)
2762
	- The font substitution algorithm could fail or loop.  (gs_fonts.ps)
2763
 
2764
Adds a little more support for CID fonts and CMaps.  (gs_cidfn.ps,
2765
gs_cmap.ps)
2766
 
2767
</pre><h3><a name="V3.61_Interpreter"></a>Interpreter</h3><pre>
2768
 
2769
Fixes bugs:
2770
	- An #include &lt;memory_.h&gt; was missing.  (ziodev.h)
2771
	- Scanner-detected errors (primarily syntaxerror) didn't report the
2772
file position.  (gs_init.ps)
2773
	- Rotated characters were rendered incorrectly (bug introduced in
2774
3.52).  (gstype1.c)
2775
	- Some compilers got upset about the use of 'dict' as a variable
2776
name.  (zdict.c)
2777
	- Operand stack overflows sometimes didn't set the "requested" field
2778
correctly.  (interp.c)
2779
	- Using -dBufferSpace= with a non-printer device caused an error.
2780
(gs_init.ps)
2781
 
2782
Adds zlibEncode/Decode filters.  (int.mak, zfzlib.c)
2783
 
2784
Separates devices from device prototypes.  Prototypes, which lack the
2785
writable attribute, cannot be installed as the current device or have their
2786
parameters changed.  This change allows Ghostscript to be exited and
2787
restarted without being reloaded, which solves some problems with DLL
2788
usage.  ****** WE HAD TO SUBVERT THIS CHANGE BECAUSE OF MEMORY MANAGER
2789
PROBLEMS, by making zgetdevice return a writable reference to the
2790
prototype.  (We finally fixed this in release 3.65.)  (gs_init.ps, iref.h,
2791
opcheck.h, zdevice.c, ztype.c, zwppm.c)
2792
 
2793
Extends the client API to allow for pushing values onto the operand stack.
2794
(imain.h, gs.c, gsmain.c)
2795
 
2796
Defines a .setdefaultscreen procedure that sets the default halftone screen,
2797
transfer function, and stroke adjustment for the current device.  Changes
2798
selectdevice and setpagedevice so that they call .setdefaultscreen;
2799
setpagedevice calls .setdefaultscreen before calling the Install procedure,
2800
so that Install can set different parameters if it wishes.  Note that
2801
setdevice does not do this.  (gs_init.ps, gs_setpd.ps)
2802
 
2803
</pre><h3><a name="V3.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2804
 
2805
Fixes bugs:
2806
	- Tf set the current text font twice, and interacted with pdf2ps in
2807
an awkward way.  (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
2808
	- If a font had variant Widths, it could get confused in the cache
2809
with the underlying font.  (pdf_font.ps)
2810
	- If a character appeared twice in an encoding and the font
2811
specified different Widths values for the two occurrences, the last Width
2812
would be used.  We patched this to ignore zero Widths, which is not the
2813
correct solution but which almost always produces correct output.
2814
(pdf_font.ps)
2815
	- Arrays containing nulls didn't print out correctly (bug introduced
2816
in 3.60).  (gs_init.ps)
2817
	- Some PDF files contain very large dictionaries, which caused a
2818
stackoverflow.  (pdf_base.ps)
2819
 
2820
Speeds up the initial processing of PDF files by caching the map from page
2821
numbers to page objects, and by not scanning the outlines if we aren't
2822
producing PostScript output.  (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
2823
 
2824
</pre><h3><a name="V3.61_Streams"></a>Streams</h3><pre>
2825
 
2826
Adds zlibEncode/Decode filters.  (lib.mak, szlibx.h, szlibc.c, szlibd.c,
2827
szlibe.c)
2828
 
2829
</pre><h3><a name="V3.61_Library"></a>Library</h3><pre>
2830
 
2831
Fixes bugs:
2832
	- glyphshow displayed a character with code 0 rather than the
2833
requested character (bug introduced in 3.60.)  (gschar.c)
2834
	- If trimming white space around a character reduced its raster, the
2835
character was garbled in the cache (bug introduced in 3.60.)  (gxccman.c)
2836
	- colorimage would incorrectly convert white pixels to black if the
2837
image color space was CMYK, the current color space was not CMYK, and the
2838
number of bits per pixel was 4 or 8.  (gsimage2.c)
2839
	- One of the clipping tests for images was backwards (bug introduced
2840
in 3.60).  (gsimage.c)
2841
	- Type 1 fonts that used the Flex feature applied hints to the path
2842
multiple times, causing dropouts, uneven stems, and other problems (bug
2843
probably introduced in 3.21).  (gstype1.c)
2844
	- If a Type 1 font used the Flex feature within the accent of an
2845
accented character defined with seac, the shape of the accent could be
2846
distorted.  (gxtype1.h, gstype1.c)
2847
	- If a Type 1 font changed hints using the hint replacement facility
2848
when the last operation was a closepath, the old hints would be applied a
2849
second time, distorting the shape.  (gxhint3.c)
2850
	- Band lists could read garbage beyond the end of data for a band,
2851
causing unpredictable errors (bug introduced in 3.60).  (gxclread.c)
2852
	- If the bounding box of the path for fill_path or stroke_path went
2853
outside the device page boundary when banding, out-of-bounds memory
2854
references occurred (bug introduced in 3.60).  (gxdevice.h, gxclpath.c)
2855
 
2856
Adds an alternative implementation of the core path filling algorithm that
2857
is much faster on objects with curves but doesn't handle Y fattening.  This
2858
is the implementation that will normally be used for rasterizing characters.
2859
This implementation rasterizes curves directly, without flattening them.
2860
(gxfixed.h, gxpath.h, gzpath.h, gsdps1.c, gxfill.c, gxpcopy.c, gxpdash.c)
2861
 
2862
Speeds up the flattening of curves substantially by omitting more redundant
2863
points.  (gxpcopy.c)
2864
 
2865
Speeds up character bitmap compression a little more.  (gsbitops.h,
2866
gdevabuf.c, gsbitops.c, gxccman.c)
2867
 
2868
Speeds up anti-aliased graphics a bit by computing a bounding box before
2869
converting from oversampling to alpha values, and by speeding up the
2870
bounding box computation itself.  (gsbitops.h, gdevabuf.c, gsbitops.c,
2871
gxccman.c)
2872
 
2873
</pre>
2874
 
2875
<h2><a name="Version3.60"></a>Version 3.60 (limited) (11/20/95)</h2>
2876
 
2877
<p>
2878
(Note: release numbers 3.54 through 3.59 were deliberately skipped.)  This
2879
internal release includes a major redesign of band lists in order to reduce
2880
their size for embedded implementations, to move towards supporting "vector"
2881
output formats, and to further separate the imager library from the language
2882
interpreters.
2883
 
2884
<h3><a name="V3.60_Documentation"></a>Documentation</h3><pre>
2885
Fixes bugs:
2886
	- A comment was incorrect.  (viewpbm.ps)
2887
	- The PixelDifference filters were not documented.  (language.doc)
2888
	- The change from currenttime to .currenttime wasn't documented.
2889
(language.doc)
2890
	- gs.1 incorrectly stated that the default font directory name
2891
included the version number.  (gs.1)
2892
	- The -g and -r switches didn't specify that the units for their
2893
arguments are pixels and pixels per inch respectively.  (use.doc)
2894
	- The PageOffset page device parameter wasn't listed.
2895
(language.doc)
2896
 
2897
Changes copy_mono and copy_color to optional procedures.  (drivers.doc)
2898
 
2899
Adds a reference to ps_view.ps, a "dumb terminal" user interface for
2900
Ghostscript intended for MS-DOS users.  (README)
2901
 
2902
Splits off the documentation on installing Ghostscript into a separate file.
2903
(readme, install.doc, use.doc)
2904
 
2905
Adds documentation on the data format produced by the standard LZWEncode
2906
filter.  (readme, lzwce.doc)
2907
 
2908
Clarifies XLIBDIR vs. XLIBDIRS.  (make.doc)
2909
 
2910
Adds user-contributed documentation on building Ghostscript under QNX.
2911
(make.doc)
2912
 
2913
</pre><h3><a name="V3.60_Procedures"></a>Procedures</h3><pre>
2914
 
2915
Fixes bugs:
2916
	- The rule for building dfaxhigh.dev had a typo.  (devs.mak)
2917
	- The dependencies for gdevpipe.h were missing errno__h and
2918
string__h.  (unixtail.mak)
2919
	- The geninit program (the implementation of COMPILE_INITS=1) didn't
2920
parse the command line properly, and didn't check for PostScript files
2921
properly.  (geninit.c)
2922
	- ccfontab.c was omitted from the fileset.  The easiest way to fix
2923
this was to rename it to icfontab.c.  (gs.mak, int.mak, ccfontab.c)
2924
	- The Unix makefiles installed caption.ls (a typo) rather than
2925
caption.ps.  (unix-end.mak)
2926
	- XLIBDIR, for dynamic library access, wasn't defined.  (*head.mak,
2927
*tail.mak, ugcclib.mak)
2928
 
2929
Adds the PNG and ZLIB makefiles to the fileset.  (*.mak, png.mak, zlib.mak,
2930
tar_cat)
2931
 
2932
Puts the PixelDifference filters in the standard Level 2 set, since the LZW
2933
filters may invoke them (a post-Red Book addition to the PostScript language
2934
definition).  (int.mak)
2935
 
2936
Adds -Wcast-qual to the gcc compiler flags.  (gcc-head.mak)
2937
 
2938
Adds the PNG drivers to the standard Unix configurations.
2939
(ansi/cc-/gcc-head.mak)
2940
 
2941
Adds a -dNOFONTPATH switch to suppress any consultation of the FONTPATH
2942
variable or the GS_FONTPATH environment variable.  (gs_fonts.ps, gs_init.ps)
2943
 
2944
</pre><h3><a name="V3.60_Utilities"></a>Utilities</h3><pre>
2945
 
2946
Fixes bugs:
2947
	- The default scaling for viewing PBM files was computed
2948
incorrectly.  (viewpbm.ps)
2949
	- ps2ascii left a value on the stack for each unrecognized character
2950
it processed, eventually causing a stackoverflow.  (ps2ascii.ps)
2951
 
2952
Changes viewpbm.ps so that it simply defines P1 through P6, allowing PBM
2953
files to be executed with 'run'.  (viewpbm.ps)
2954
 
2955
Adds a small benchmark to crudely measure hardware/system performance.  The
2956
same file can either be compiled as a C program or executed as a PostScript
2957
program.  (bench.c)
2958
 
2959
Adds a few PPD files to the distribution.  There will probably be more as
2960
time goes on.  (tar_gs, unix-end.mak)
2961
 
2962
Updates the Unix lpr scripts to handle a wider variety of device options.
2963
(unix-lpr.doc, lprsetup.sh, unix-lpr.sh)
2964
 
2965
Adds a utility for converting files produced by Macromedia's Rollup program
2966
to a Type 0 form directly usable by Ghostscript.  (rollconv.ps)
2967
 
2968
</pre><h3><a name="V3.60_Drivers"></a>Drivers</h3><pre>
2969
 
2970
Fixes bugs:
2971
	- Forwarding devices passed an incorrect first argument when
2972
forwarding a copy_rop operation.  (gsdevice.c)
2973
	- Because of a typo, the LaserJet drivers had incorrect margins.
2974
This was probably a new bug in 3.5x.  (gdevdjet.c)
2975
	- A private name was duplicated.  (gdevtfax.c)
2976
	- The x11alpha driver passed invalid colors to the X library.
2977
(gdevxalt.c)
2978
	- The x11alpha driver set the blue component of colors incorrectly.
2979
(gdevxalt.c)
2980
	- Some `const' declarations were missing.  (gdevtifs.c, gdevtfnx.c,
2981
gdevxxf.c)
2982
	- The size of A4 paper was slightly inconsistent across drivers.
2983
(gdevdjet.c, gdevl256.c)
2984
 
2985
Provides default implementations of copy_mono and copy_color in terms of
2986
fill_rectangle.  (gxdevice.h, gsdevice.c)
2987
 
2988
Adds forwarders for sync_output and output_page.  (gxdevice.h, gsdevice.c)
2989
 
2990
Adds new optional procedures to the driver interface:
2991
	- fill_path for filling a path with a color;
2992
	- stroke_path for stroking a path;
2993
	- fill_mask for painting a color through a mask.
2994
The default implementations use the existing rasterizer algorithms.  This
2995
involves a NON-BACKWARD-COMPATIBLE change to the parameters of a few
2996
internal routines:
2997
	gs_currentlineparams
2998
	gx_fill_path, gx_fill_path_only, gx_path_expand_dashes, gx_path_flatten
2999
and two externally visible routines not part of standard PostScript:
3000
	gs_setfilladjust, gs_currentfilladjust
3001
(gdevmem.h, gdevprn.h, gspath.h, gspenum.h, gxcpath.h, gxdevice.h, gxdraw.h,
3002
gxpaint.h, gxpath.h, gscoord.c, gsdevice.c, gspaint.c, gsstate.c,
3003
gxacpath.c, gxclist.c, gxclread.c, gxcpath.c, gxdraw.c, gxfill.c, gxpaint.c,
3004
gxpcmap.c, gxpcopy.c, gxstroke.c)
3005
 
3006
Makes major changes to the dithering algorithm for the color DeskJet and
3007
BubbleJet drivers, contributed by a user.  (gdevcdj.c)
3008
 
3009
Adds a contributed 12-bit RGB TIFF driver.  (gdevtfnx.c)
3010
 
3011
</pre><h3><a name="V3.60_Platforms"></a>Platforms</h3><pre>
3012
 
3013
Fixes bugs:
3014
	- The printjob created by Ghostscript was called "Ghostscirpt"
3015
instead of "Ghostscript".  (gp_os2.c)
3016
	- An "export" declaration was omitted from DllInit.  (gp_mswin.c)
3017
 
3018
Removes gp_get_clock (its interface was changed from calendar
3019
days/milliseconds to epoch seconds/nanoseconds in an undocumented,
3020
NON-BACKWARD-COMPATIBLE change in 3.51), and adds a new gp_get_realtime
3021
procedure that returns epoch seconds/nanoseconds.  This too is a
3022
NON-BACKWARD-COMPATIBLE change; it is required because we overlooked the
3023
prior change in a batch of user-contributed code.  (gp.h, gp_*.c)
3024
 
3025
</pre><h3><a name="V3.60_Fonts"></a>Fonts</h3><pre>
3026
 
3027
Adds Heavy as a synonym for Bold when doing intelligent font substitution.
3028
(gs_fonts.ps)
3029
 
3030
</pre><h3><a name="V3.60_Interpreter"></a>Interpreter</h3><pre>
3031
 
3032
Fixes bugs:
3033
	- The setup for the CCITTFax filters set the 'raster' element
3034
redundantly.  (zfdecode.c)
3035
	- currentscreen and currentcolorscreen could give an error if the
3036
current screen was set with sethalftone (or, for currentscreen,
3037
setcolorscreen).  (gs_dps1.ps)
3038
	- The font operators didn't work properly if a PostScript file
3039
redefined certain operator names.  (gs_res.ps)
3040
	- The CCITTFax filters imposed a limit of 9999 Rows or Columns.  The
3041
new limit is 32000.  (zfdecode.c)
3042
	- Streams could get removed from a bookkeeping list prematurely, and
3043
wind up dangling.  (zfile.c)
3044
	- The garbage collector didn't ask for large enough a mark stack,
3045
and only used half of what it got.  (This was only a performance problem.)
3046
(igc.c)
3047
	- Two private names duplicated names in a vendor library.  (zbseq.c)
3048
	- Type 1 fonts didn't enforce the maximum value of BlueScale, which
3049
caused some faulty fonts produced by Fontographer to produce incorrect
3050
output.  (zfont1.c)
3051
	- cvs / cvrs / = didn't produce Adobe-compatible output.
3052
(gs_init.ps, iutil.h, iutil.c, zfileio.c)
3053
	- Multiple -I switches set the search path incorrectly.  (gsmain.c)
3054
	- Many `const' declarations were missing.  (icie.h, idparam.h,
3055
iref.h, iutil.h, idparam.c, iinit.c, ilocate.c, iname.c, interp.c, iparam.c,
3056
iutil.c, zcie.c, zfile.c, zgstate.c, ziodev.c, ztype.c)
3057
	- Fonts could wind up with a pointer to the wrong VM space, causing
3058
potential GC or save/restore confusion.  (zfont2.c)
3059
	- upath could leave garbage on the stack if it failed.  (gs_dps1.ps)
3060
 
3061
Speeds up rasterizing characters into the cache a little.  (gs_type0.ps)
3062
 
3063
Changes the default limit on the size of cached characters from the maximum
3064
of (18 points or 5 times the "average" character size) to (18 points or 1%
3065
of the total cache size).  (gs_init.ps)
3066
 
3067
Adds the DecodedByteAlign parameter to the CCITTFax filters.  (zfdecode.c)
3068
 
3069
Updates some code for compatibility with the new fill_path driver procedure.
3070
(zupath.c)
3071
 
3072
Replaces .set/currentfilladjust with .set/currentfilladjust2, and defines
3073
the former in terms of the latter.  (gs_init.ps, zgstate.c)
3074
 
3075
Extends the make[word]imagedevice operators to accept palette values of 16,
3076
24, and 32, for creating true-color image devices.  (zdevice.c)
3077
 
3078
Changes realtime to match the definition of gp_get_realtime.  (zmisc.c)
3079
 
3080
Removes the [.]currenttime operator.  realtime provides interval timing in
3081
milliseconds; the %Calendar% IODevice provides calendar times.  (zmisc.c)
3082
 
3083
Extends the LZW filters to handle the PDF Predictor (pixel-differencing)
3084
option.  (zfdecode.c, zfilter2.c, zfpdiff.c (deleted))
3085
 
3086
</pre><h3><a name="V3.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3087
 
3088
Fixes bugs:
3089
	- The length of an image's data was sometimes calculated
3090
incorrectly, causing an error when converting PDF to PostScript.
3091
(pdf_draw.ps)
3092
	- If word spacing and/or text spacing was non-zero, an error could
3093
occur.  (gs_pdf.ps)
3094
	- Text that was both filled and stroked caused an error.
3095
(gs_pdf.ps)
3096
 
3097
</pre><h3><a name="V3.60_Streams"></a>Streams</h3><pre>
3098
 
3099
Fixes bugs:
3100
	- When closing an encoding filter stream whose target was also a
3101
filter, the latter could get called incorrectly with last = 1, possibly more
3102
than once, leading to premature EOD markers.  (stream.c)
3103
	- The LZW-compatible encoder put out an incorrect end-of-data code.
3104
(slzwce.c)
3105
	- The LZW-compatible encoder didn't put out a reset code soon
3106
enough.  (slzwce.c)
3107
	- Some `const' declarations were missing.  (siscale.c)
3108
	- Doing a sgets on a closed stream could call sreadbuf, possibly
3109
causing an error.  (stream.c)
3110
 
3111
Adds a new (optional) set_defaults procedure to the stream template, which
3112
sets the stream parameters to default values.  We only implement it for a
3113
few stream types.  (scfx.h, scommon.h, slzwx.h, spdiffx.h, srlx.h,
3114
strimpl.h, scfd.c, scfe.c, slzwce.c, slzwd.c, slzwe.c, spdiff.c, srld.c,
3115
srle.c)
3116
 
3117
Adds a new parameter to the CCITTFax filters, DecodedByteAlign.  This is an
3118
integer N, which must be a power of 2 between 1 (2^0) and 16 (2^4), that
3119
specifies that decoded data scan lines are always a multiple of N bytes.
3120
The encoding filter skips data in each scan line from Columns to the next
3121
multiple of N bytes; the decoding filter pads each scan line to a multiple
3122
of N bytes.  Default value: 1.  (scfx.h, scfd.c, scfe.c)
3123
 
3124
Increases the maximum width of a scan line for the CCITTFaxEncode filter to
3125
32000 pixels.  (scf.h)
3126
 
3127
</pre><h3><a name="V3.60_Library"></a>Library</h3><pre>
3128
 
3129
Fixes bugs:
3130
	- Cached characters sometimes had extra blank space on the left,
3131
leading to some unnecessary bit-shuffling when imaging them.  (gxccman.c)
3132
	- In rare cases, gray halftones called gx_color_load unnecessarily.
3133
(gxdither.c)
3134
	- The list of all-bands commands wasn't initialized/reset properly.
3135
(gxclist.c, gxclread.c)
3136
	- Rendering an anti-aliased character to a non-anti-aliased device
3137
didn't free the temporary bitmap, causing memory to be lost.  (gxccache.c)
3138
	- Dash patterns where the offset exactly reached a run of length 0
3139
skipped over the 0-length run.  (gsline.c)
3140
	- Rectangles closed with both lineto and closepath weren't
3141
recognized as rectangles.  This is only a performance bug.  (gxpath2.c)
3142
	- Because of a typo in a macro formal parameter list, a private name
3143
was duplicated.  (gsstruct.h)
3144
	- Text display operations didn't update the current character in the
3145
enumerator structure during the fastest path through the code.  This only
3146
matters to one very unusual commercial client.  (gschar.c)
3147
	- Some `const' declarations were missing.  (gsparam.h, gxistate.h,
3148
stdpre.h; gdevm1.c, gsalloc.c, gsfont.c, gsimage3.c, gsmemory.c, gsmisc.c,
3149
gspcolor.c, gstype1.c, gxfill.c, gxpcopy.c)
3150
 
3151
Changes the header files to assume that gcc on Solaris defines
3152
__svr4__ and that, in this case, &lt;string.h&gt; has the right stuff in it.
3153
(memory_.h)
3154
 
3155
Refactors the character cache to share structures with a similar cache
3156
used by band lists.  Eventually the band list may be able to reference
3157
the character cache directly, saving a lot of copying.  (gxbcache.h,
3158
gxfcache.h, gsfont.c, gxbcache.c, gxccache.c, gxccman.c)
3159
 
3160
Speeds up getting the side bearing and width of a Type 1 charstring a
3161
little.  (gxtype1.h, gstype1.c)
3162
 
3163
Redesigns band lists so that they can cache character bitmaps as well as
3164
halftone bitmaps.  Characters may be written for all bands, not just the
3165
band(s) they appear in, depending on the setting of the CHAR_ALL_BANDS_COUNT
3166
parameter in gxclbits.c.  (gxcldev.h, gxclist.h, gxclbits.c, gxclist.c,
3167
gxclread.c)
3168
 
3169
Adds G4 fax compression for band list bitmaps.  (gxcldev.h, gxclist.c,
3170
gxclread.c)
3171
 
3172
Incorporates the new set_defaults procedure into the memory-based band list
3173
implementation.  (gxclmem.c)
3174
 
3175
Implements a halftoning device that can be used in a device pipeline.
3176
(gdevht.h, gzht.h, gdevht.c, gxcht.c)
3177
 
3178
Factors out imager state from the full graphics state.  This division is
3179
preliminary and subject to change.  (gxistate.h, gxop1.h, gzstate.h,
3180
gsline.c, gsstate.c, gstype1.c, gxhint*.c)
3181
 
3182
Implements passing fill operations in the band list, except for pattern
3183
color or colored halftones.  (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
3184
 
3185
Implements passing stroke operations in the band list, except for pattern
3186
color or colored halftones.  (gsline.h, gslparam.h, gxline.h, gzline.h,
3187
gsline.c; gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
3188
 
3189
Implements the ability to represent halftoned characters in the band list.
3190
(gxccache.c)
3191
 
3192
Starts to implement the ability to do halftoning during the rendering phase
3193
rather than before writing the band list (currently for black-and-white
3194
devices only).  Doing this required NON-BACKWARD-COMPATIBLE changes to the
3195
interfaces of a few internal procedures:
3196
	gx_check_tile_size, gx_render_device_{color,gray}
3197
(gxdcolor.h, gxdht.h, gzht.h, gsht.c, gsimage1.c, gsmisc.c, gspcolor.c,
3198
gsstate.c, gxcht.c, gxclbits.c, gxdither.c, gxht.c)
3199
 
3200
Implements passing clipping information in the band list.  (gzcpath.h,
3201
gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c)
3202
 
3203
Removes the gs_state * parameter from the device color fill_rectangle
3204
procedures and many of their callers, since it is no longer needed.  This is
3205
a non-backward-compatible change to an internal API.  (gdevmrop.h,
3206
gxdcolor.h, gxdraw.h, gxpaint.h, gdevmrop.c, gsimage.c, gspcolor.c, gxcht.c,
3207
gxclread.c, gxdraw.c, gxfill.c, gxht.c, gxpaint.c, gxstroke.c)
3208
 
3209
Removes gxdevice.h from gzstate.h, since not all modules requiring access to
3210
the graphics state need to know the implementation of devices.  This entails
3211
adding gxdevice.h to the include lists for some modules.  (gxchar.h,
3212
gxcpath.h, gxcvalue.h, gxdevice.h, gxtype1.h, gzstate.h; gschar.c,
3213
gscoord.c, gsdevice.c, gsimage1.c, gsimage2.c, gsimage3.c, gspaint.c,
3214
gspath.c, gsstate.c, gstype1.c, gxccache.c, gxccman.c, gxhint1.c, gxhint2.c,
3215
gxhint3.c, gxpaint.c)
3216
 
3217
Adds a compile-time option, ALPHA_LSB_FIRST, which causes alpha-sampled
3218
characters to be nibble-reversed in the cache.  This was created for a
3219
specialized application and does not interact well with the rest of the
3220
code.  (gsbitops.c)
3221
 
3222
Substantially reduces the space required to represent 24- or 32-bit colors
3223
in the band list, by using more aggressive color differencing.  (gxcldev.h,
3224
gxclist.c, gxclread.c)
3225
 
3226
Changes the allocation of unique IDs for halftone tiles to use the gray
3227
level rather than the number of 1-bits as the increment to a base ID; this
3228
allows more efficient (delta) representation of halftone indices in the band
3229
list.  (gxcldev.h, gxclist.c, gxclread.c, gxht.c)
3230
 
3231
Substantially speeds up entering anti-aliased characters in the cache, by
3232
removing white space before compressing rather than vice versa.
3233
(gsbitops.c, gxccman.c)
3234
 
3235
</pre>
3236
 
3237
<hr>
3238
 
3239
<h2><a name="Version3.53"></a>Version 3.53 (1/10/96)</h2>
3240
 
3241
<p>
3242
This is an anomalous, out-of-sequence release requested by a commercial
3243
licensee.  It consists of 3.52 plus the following retrofits from 3.60
3244
through 3.63:
3245
	- PDF interpreter and pdf2ps;
3246
	- Type 1 rasterizer fixes;
3247
	- Type 1 rasterizer and polygon fill performance improvements;
3248
	- MS Windows and OS/2 fixes;
3249
	- A few other important fixes.
3250
It does NOT fix all problems reported since 3.52.
3251
 
3252
<p>
3253
The list of changes below indicates which subsequent release was the source
3254
of each change.  In several cases, minor editing of the change was required
3255
to make it compatible with 3.52.
3256
 
3257
<h3><a name="V3.53_Documentation"></a>Documentation</h3><pre>
3258
Fixes bugs:
3259
	[3.61] The analysis of curve monotonocity in gxpcopy.c had an error.
3260
(gxpcopy.c)
3261
 
3262
[3.63] Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather
3263
than 0.9a.  (use.doc)
3264
 
3265
[3.62] Notes that for Win32s, gs16spl.exe must be in the same directory as
3266
gswin32.exe.  (use.doc)
3267
 
3268
[3.62] Adds a reference to dos-psv, another "dumb terminal" user interface
3269
for Ghostscript intended for MS-DOS users.  (README)
3270
 
3271
[3.61] Adds a pointer to DEC's free pstotext utility.  (README)
3272
 
3273
[3.60] Adds a reference to ps_view.ps, a "dumb terminal" user interface for
3274
Ghostscript intended for MS-DOS users.  (README)
3275
 
3276
</pre><h3><a name="V3.53_Procedures"></a>Procedures</h3><pre>
3277
 
3278
Fixes bugs:
3279
	[3.60] The geninit program (the implementation of COMPILE_INITS=1)
3280
didn't parse the command line properly, and didn't check for PostScript
3281
files properly.  (geninit.c)
3282
	[3.60] ccfontab.c was omitted from the fileset.  The easiest way to
3283
fix this was to rename it to icfontab.c.  (gs.mak, int.mak, ccfontab.c)
3284
	[3.60] The definition of pdfread.dev did an ADDMOD, not a SETMOD.
3285
(int.mak)
3286
 
3287
[3.60] Adds a -dNOFONTPATH switch to suppress any consultation of the
3288
FONTPATH variable or the GS_FONTPATH environment variable.  (gs_fonts.ps,
3289
gs_init.ps)
3290
 
3291
</pre><h3><a name="V3.53_Utilities"></a>Utilities</h3><pre>
3292
 
3293
Fixes bugs:
3294
	[3.61] pdf2ps didn't write Widths or Encoding in the converted file,
3295
producing incorrect spacing and incorrect characters.  (pdf_2ps.ps)
3296
	[3.60] ps2ascii left a value on the stack for each unrecognized
3297
character it processed, eventually causing a stackoverflow.  (ps2ascii.ps)
3298
 
3299
[3.61] Changes the rollconv.ps utility to produce files whose names conform
3300
to the 8.3 length restriction, and to reduce the fixed RAM overhead for
3301
Kanji fonts.  (rollconv.ps)
3302
 
3303
[3.60] Adds a utility for converting files produced by Macromedia's Rollup
3304
program to a Type 0 form directly usable by Ghostscript.  (rollconv.ps)
3305
 
3306
</pre><h3><a name="V3.53_Drivers"></a>Drivers</h3><pre>
3307
 
3308
Fixes bugs:
3309
	[3.60] Because of a typo, the LaserJet drivers had incorrect
3310
margins.  This was probably a new bug in 3.5x.  (gdevdjet.c)
3311
	[3.60] A private name was duplicated.  (gdevtfax.c)
3312
	[3.60] The x11alpha driver passed invalid colors to the X library.
3313
(gdevxalt.c)
3314
	[3.60] The x11alpha driver set the blue component of colors
3315
incorrectly.  (gdevxalt.c)
3316
 
3317
</pre><h3><a name="V3.53_Platforms"></a>Platforms</h3><pre>
3318
 
3319
Fixes bugs:
3320
	[3.63] The test for WinExec failure on Win32 was incorrect.
3321
(gp_mswin.c)
3322
	[3.63] getenv was declared redundantly on OS/2.  (gp_os2.c)
3323
	[3.63] gs16spl.c was missing &lt;string.h&gt;.  (gs16spl.c)
3324
	[3.61] Printing didn't work in 32-bit MS Windows environments.
3325
(bcwin32.mak, gdevmswn.c, gp_mswin.c)
3326
	[3.61] There were some compatibility problems with IBM C.  (os2.mak,
3327
gsdll.h, gdevpm.c, gp_os2.c)
3328
	[3.60] The printjob created by Ghostscript was called "Ghostscirpt"
3329
instead of "Ghostscript".  (gp_os2.c)
3330
	[3.60] An "export" declaration was omitted from DllInit.
3331
(gp_mswin.c)
3332
 
3333
[3.61] Adds a conditional to work around a bug in gcc 2.7.x (it didn't
3334
recognize that the target of a const T * might still be mutable through
3335
aliasing).  (stdpre.h)
3336
 
3337
</pre><h3><a name="V3.53_Fonts"></a>Fonts</h3><pre>
3338
 
3339
Fixes bugs:
3340
	[3.61] Rasterizing a character in a Type 1 font with an invalid
3341
FontBBox left some garbage on the operand stack (bug introduced in 3.52 or
3342
3.60).  (gs_type1.ps)
3343
	[3.61] The font substitution algorithm could fail or loop.
3344
(gs_fonts.ps)
3345
 
3346
[3.60] Adds Heavy as a synonym for Bold when doing intelligent font
3347
substitution.  (gs_fonts.ps)
3348
 
3349
</pre><h3><a name="V3.53_Interpreter"></a>Interpreter</h3><pre>
3350
 
3351
Fixes bugs:
3352
	[3.63] Invoking setpagedevice with an undefined key, even with
3353
Policy = 1, caused an error.  (gs_setpd.ps)
3354
	[3.62] Setting the PageSize policy to 1 and then trying to set the
3355
page size caused an error if FIXEDMEDIA was selected.  (gs_setpd.ps)
3356
	[3.61] Rotated characters were rendered incorrectly (bug introduced
3357
in 3.52).  (gstype1.c)
3358
	[3.60] currentscreen and currentcolorscreen could give an error if
3359
the current screen was set with sethalftone (or, for currentscreen,
3360
setcolorscreen).  (gs_dps1.ps)
3361
	[3.60] Streams could get removed from a bookkeeping list
3362
prematurely, and wind up dangling.  (zfile.c)
3363
	[3.60] Multiple -I switches set the search path incorrectly.
3364
(gsmain.c)
3365
	[3.60] Fonts could wind up with a pointer to the wrong VM space,
3366
causing potential GC or save/restore confusion.  (zfont2.c)
3367
	[3.60] upath could leave garbage on the stack if it failed.
3368
(gs_dps1.ps)
3369
 
3370
[3.61] Extends the client API to allow for pushing values onto the operand
3371
stack.  (imain.h, gs.c, gsmain.c)
3372
 
3373
[3.61] Defines a .setdefaultscreen procedure that sets the default halftone
3374
screen, transfer function, and stroke adjustment for the current device.
3375
Changes selectdevice and setpagedevice so that they call .setdefaultscreen;
3376
setpagedevice calls .setdefaultscreen before calling the Install procedure,
3377
so that Install can set different parameters if it wishes.  Note that
3378
setdevice does not do this.  (gs_init.ps, gs_setpd.ps)
3379
 
3380
[3.60] Speeds up rasterizing characters into the cache a little.
3381
(gs_type0.ps)
3382
 
3383
[3.60] Changes the default limit on the size of cached characters from the
3384
maximum of (18 points or 5 times the "average" character size) to (18 points
3385
or 1% of the total cache size).  (gs_init.ps)
3386
 
3387
[3.60] Implements parts of the Type 1 BuildChar callout in C.  (gs_type1.ps,
3388
zchar.c)
3389
 
3390
</pre><h3><a name="V3.53_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3391
 
3392
Fixes bugs:
3393
	[3.62] If a PDF file substituted a calibrated color space for the
3394
DeviceGray or DeviceRGB color space using a ColorSpace resource, the
3395
PostScript file that pdf2ps produced from that PDF file caused an error.
3396
(gs_pdf.ps)
3397
	[3.61] Tf set the current text font twice, and interacted with
3398
pdf2ps in an awkward way.  (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
3399
	[3.61] If a font had variant Widths, it could get confused in the
3400
cache with the underlying font.  (pdf_font.ps)
3401
	[3.61] If a character appeared twice in an encoding and the font
3402
specified different Widths values for the two occurrences, the last Width
3403
would be used.  We patched this to ignore zero Widths, which is not the
3404
correct solution but which almost always produces correct output.
3405
(pdf_font.ps)
3406
	[3.61] Arrays containing nulls didn't print out correctly (bug
3407
introduced in 3.60).  (gs_init.ps)
3408
	[3.61] Some PDF files contain very large dictionaries, which caused
3409
a stackoverflow.  (pdf_base.ps)
3410
	[3.60] The length of an image's data was sometimes calculated
3411
incorrectly, causing an error when converting PDF to PostScript.
3412
(pdf_draw.ps)
3413
	[3.60] If word spacing and/or text spacing was non-zero, an error
3414
could occur.  (gs_pdf.ps)
3415
	[3.60] Text that was both filled and stroked caused an error.
3416
(gs_pdf.ps)
3417
 
3418
[3.61] Speeds up the initial processing of PDF files by caching the map from
3419
page numbers to page objects, and by not scanning the outlines if we aren't
3420
producing PostScript output.  (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
3421
 
3422
</pre><h3><a name="V3.53_Streams"></a>Streams</h3><pre>
3423
 
3424
Fixes bugs:
3425
	[3.60] When closing an encoding filter stream whose target was also
3426
a filter, the latter could get called incorrectly with last = 1, possibly
3427
more than once, leading to premature EOD markers.  (stream.c)
3428
	[3.60] The LZW-compatible encoder put out an incorrect end-of-data
3429
code.  (slzwce.c)
3430
	[3.60] The LZW-compatible encoder didn't put out a reset code soon
3431
enough.  (slzwce.c)
3432
	[3.60] Doing a sgets on a closed stream could call sreadbuf,
3433
possibly causing an error.  (stream.c)
3434
 
3435
</pre><h3><a name="V3.53_Library"></a>Library</h3><pre>
3436
 
3437
Fixes bugs:
3438
	[3.63] On 16-bit platforms, the computation of t2 and t3 in
3439
gx_curve_x_at_y could overflow, leading to incorrect output.  (gxpcopy.c)
3440
	[3.61] glyphshow displayed a character with code 0 rather than the
3441
requested character (bug introduced in 3.60.)  (gschar.c)
3442
	[3.61] If trimming white space around a character reduced its
3443
raster, the character was garbled in the cache (bug introduced in 3.60.)
3444
(gxccman.c)
3445
	[3.61] colorimage would incorrectly convert white pixels to black if
3446
the image color space was CMYK, the current color space was not CMYK, and
3447
the number of bits per pixel was 4 or 8.  (gsimage2.c)
3448
	[3.61] Type 1 fonts that used the Flex feature applied hints to the
3449
path multiple times, causing dropouts, uneven stems, and other problems (bug
3450
probably introduced in 3.21).  (gstype1.c)
3451
	[3.61] If a Type 1 font used the Flex feature within the accent of
3452
an accented character defined with seac, the shape of the accent could be
3453
distorted.  (gxtype1.h, gstype1.c)
3454
	[3.61] If a Type 1 font changed hints using the hint replacement
3455
facility when the last operation was a closepath, the old hints would be
3456
applied a second time, distorting the shape.  (gxhint2.c, gxhint3.c)
3457
	[3.60] Cached characters sometimes had extra blank space on the
3458
left, leading to some unnecessary bit-shuffling when imaging them.
3459
(gxccman.c)
3460
	[3.60] The list of all-bands commands wasn't initialized/reset
3461
properly.  (gxclist.c)
3462
	[3.60] Because of a typo in a macro formal parameter list, a private
3463
name was duplicated.  (gsstruct.h)
3464
	[3.60] Text display operations didn't update the current character
3465
in the enumerator structure during the fastest path through the code.  This
3466
only matters to one very unusual commercial client.  (gschar.c)
3467
 
3468
[3.61] Adds an alternative implementation of the core path filling algorithm
3469
that is much faster on objects with curves but doesn't handle Y fattening.
3470
This is the implementation that will normally be used for rasterizing
3471
characters.  This implementation rasterizes curves directly, without
3472
flattening them.  (gxfixed.h, gxpath.h, gzpath.h, gxdraw.c, gxfill.c,
3473
gxpcopy.c)
3474
 
3475
[3.61] Speeds up the flattening of curves substantially by omitting more
3476
redundant points.  (gxpcopy.c)
3477
 
3478
[3.61] Speeds up character bitmap compression a little more.  (gsbitops.h,
3479
gdevabuf.c, gsbitops.c, gxccman.c)
3480
 
3481
[3.61] Speeds up anti-aliased graphics a bit by computing a bounding box
3482
before converting from oversampling to alpha values, and by speeding up the
3483
bounding box computation itself.  (gsbitops.h, gdevabuf.c, gsbitops.c,
3484
gxccman.c)
3485
 
3486
[3.60] Speeds up getting the side bearing and width of a Type 1 charstring a
3487
little.  (gxtype1.h, gstype1.c)
3488
 
3489
[3.60] Adds a compile-time option, ALPHA_LSB_FIRST, which causes
3490
alpha-sampled characters to be nibble-reversed in the cache.  This was
3491
created for a specialized application and does not interact well with the
3492
rest of the code.  (gsbitops.c)
3493
 
3494
[3.60] Substantially speeds up entering anti-aliased characters in the
3495
cache, by removing white space before compressing rather than vice versa.
3496
(gsbitops.c, gxccman.c)
3497
 
3498
</pre>
3499
 
3500
<h2><a name="Version3.52"></a>Version 3.52 (limited) (10/6/95)</h2>
3501
 
3502
<p>
3503
This is an incremental release to fix a few problems in 3.51.  Since it is
3504
being made in an environment with no network connectivity, it will probably
3505
not be released to the general public.  ****** THE CHANGES MARKED WITH ***
3506
BELOW WERE LOST IN THE PROCESS OF SHUFFLING FILESETS BETWEEN ENVIRONMENTS.
3507
THEY ARE INCORPORATED IN 3.60 BUT NOT IN 3.52. ******
3508
 
3509
<h3><a name="V3.52_Procedures"></a>Procedures</h3><pre>
3510
Fixes bugs:
3511
	- The fileset included a meaningless empty file.  (acctest.ps)
3512
	*** The definition of pdfread.dev did an ADDMOD, not a SETMOD.
3513
(int.mak)
3514
 
3515
</pre><h3><a name="V3.52_Interpreter"></a>Interpreter</h3><pre>
3516
 
3517
Fixes bugs:
3518
	- The RunLengthEncode filter used with a dictionary argument could
3519
give a spurious error.  (zfilter.c)
3520
	- The fast form of the 'dup' operator failed to check for stack
3521
overflow, which could lead to memory smashing.  (interp.c)
3522
	*** Level 1 configurations gave errors during initialization.
3523
(ialloc.c, iinit.c, ireclaim.c)
3524
	*** Attempting to look up or insert a noaccess string as a
3525
dictionary key converted the string to a name rather than giving an error.
3526
(idict.h, idict.c)
3527
 
3528
Adds a C implementation of the .dicttomark (&gt;&gt;) procedure.  (gs_init.ps,
3529
zdict.c)
3530
 
3531
*** Implements parts of the Type 1 BuildChar callout in C.  (gs_type1.ps,
3532
ifont.h, zchar.c, zfont1.c, zfont2.c)
3533
 
3534
</pre><h3><a name="V3.52_Library"></a>Library</h3><pre>
3535
 
3536
Fixes bugs:
3537
	- Braces were missing in an initializer.  (gxdcolor.h)
3538
	- Composite fonts with a non-zero translation in the FontMatrix
3539
positioned characters incorrectly.  (gschar.c)
3540
	*** gsparam.c wouldn't compile with some versions of the Borland
3541
compiler.  (gsparam.c)
3542
 
3543
Speeds up the handling of curve segments in Type 1 fonts a little.
3544
(gstype1.c)
3545
 
3546
Speeds up displaying very short strings a little.  (gschar.c)
3547
 
3548
*** Implements parts of the Type 1 BuildChar callout in C.  (gxfont.h)
3549
 
3550
</pre>
3551
 
3552
<h2><a name="Version3.51"></a>Version 3.51 (9/27/95)</h2>
3553
 
3554
<p>
3555
This is the first public release since 3.33.  Its main features are a
3556
working setpagedevice, a working PDF interpreter, and a working PDF to PS
3557
converter.
3558
 
3559
<h3><a name="V3.51_Documentation"></a>Documentation</h3><pre>
3560
 
3561
Fixes bugs:
3562
	- The -dSHORTERRORS switch wasn't documented in enough places.
3563
(current.doc, use.doc)
3564
	- The DLL documentation was internally inconsistent.  (dll.doc)
3565
	- The %pipe% file name syntax wasn't documented.  (language.doc)
3566
 
3567
</pre><h3><a name="V3.51_Procedures"></a>Procedures</h3><pre>
3568
 
3569
Fixes bugs:
3570
	- caption.ps wasn't installed properly.  (unix-end.mak)
3571
	- geninit depended on $(gconfig_h) in an improper way.  (geninit.c,
3572
int.mak, *.mak)
3573
	- One script lacked the #!/bin/sh header.  (gsdj500)
3574
 
3575
Adds the 24-bit color TIFF driver to all configurations that support
3576
black-and-white TIFF.  (*.mak)
3577
 
3578
</pre><h3><a name="V3.51_Utilities"></a>Utilities</h3><pre>
3579
 
3580
Fixes bugs:
3581
	- align.ps was omitted from the fileset.  (psfiles.doc, align.ps,
3582
unix-end.mak)
3583
 
3584
</pre><h3><a name="V3.51_Drivers"></a>Drivers</h3><pre>
3585
 
3586
Fixes bugs:
3587
	- A driver had some \s in formal parameter lists.  (gdevcdj.c)
3588
	- A driver had some improper &amp;s.  (gdevtifs.c)
3589
	- The default MS Windows printer driver was very slow.  (gdevwpr2.c)
3590
	- The (newly restructured) TIFF drivers could produce a memory
3591
access error.  (gdevtifs.c)
3592
	- The CGM drivers referred to an obsolete structure member.
3593
(gdevcgm.c)
3594
	- The black-and-white H-P drivers didn't set the margins properly
3595
(again).  (gdevdjet.c)
3596
	- Several of the most common printer drivers omitted some scan lines
3597
at the bottom of the page.  (gdevprn.h, gdevprn.c)
3598
 
3599
At the request of the main OS/2 developer, adds a printer device for OS/2.
3600
(gdevos2p.c, os2.mak)
3601
 
3602
Makes many changes to the stcolor driver, submitted by the developer just
3603
before the release.  (devices.doc, unix-end.mak, gdevstc.h, gdevstc*.c,
3604
stcinfo.ps, stcolor.ps, stcinfo.ps)
3605
 
3606
</pre><h3><a name="V3.51_Platforms"></a>Platforms</h3><pre>
3607
 
3608
Fixes bugs:
3609
	- usertime (and realtime) were broken on VMS.  (gp_vms.c)
3610
	- The 32-bit MS Windows DLL control file had a typo.  (gsdll32.def)
3611
 
3612
Removes the color inkjet drivers from the 16-bit Windows executable, because
3613
they overflow the 64K default data segment; adds PCX, TIFF, and BMP output
3614
formats.  (bcwin.mak)
3615
 
3616
</pre><h3><a name="V3.51_Interpreter"></a>Interpreter</h3><pre>
3617
 
3618
Fixes bugs:
3619
	- A routine was declared 'private' inconsistently.  (zcie.c)
3620
	- -dSHORTERRORS didn't remove enough non-Adobe error output.
3621
(gs_init.ps)
3622
 
3623
</pre><h3><a name="V3.51_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3624
 
3625
Fixes bugs:
3626
	- The ProcSet relied on the presence of NullFont.  (gs_pdf.ps)
3627
 
3628
</pre><h3><a name="V3.51_Library"></a>Library</h3><pre>
3629
 
3630
Fixes bugs:
3631
	- There was an extraneous \ outside a macro.  (gsline.c)
3632
	- Scaling up a black-and-white image could caused many scan lines to
3633
be inverted.  (gsimage1.c)
3634
	- The initial clipping path did not take Margins into account
3635
properly.  (gxdevice.h, gdevxalt.c, gscoord.c, gsdevice.c, gsdevmem.c,
3636
gsdparam.c, gspath.c)
3637
	- If banding was required, characters could come out as solid black
3638
rectangles.  (gxclist.c, gxclread.c)
3639
 
3640
</pre>
3641
 
3642
<h2><a name="Version3.50"></a>Version 3.50 (limited) (9/24/95)</h2>
3643
 
3644
<p>
3645
This is the last limited bug-fix release during beta test.  The color
3646
DeskJet drivers are broken (they sometimes produce black rectangles instead
3647
of characters); we will fix this in the next release.
3648
<p>
3649
The following issues have been postponed to an unspecified future release:
3650
<ul>
3651
<li>	- Filling areas often writes pixels twice, causing incorrect
3652
output
3653
with certain unusual RasterOp values.  [1.814]
3654
<li>	- The tar.gz archives should include a subdirectory like
3655
gs-3.46/ in
3656
the file names.
3657
<li>	- The CCITTFaxDecode filter should skip initial junk if
3658
EndOfLine =
3659
true.  [1844 8/24/95, NRE]
3660
</ul>
3661
 
3662
<h3><a name="V3.50_Procedures"></a>Procedures</h3><pre>
3663
Fixes bugs:
3664
	- The name of the new 24-bit TIFF driver was incorrect in one place.
3665
(vms.mak)
3666
 
3667
</pre><h3><a name="V3.50_Utilities"></a>Utilities</h3><pre>
3668
 
3669
Adds a new utility to put a caption in a box at the bottom of each page.
3670
(caption.ps)
3671
 
3672
</pre><h3><a name="V3.50_Drivers"></a>Drivers</h3><pre>
3673
 
3674
Fixes bugs:
3675
	- The PC display devices weren't page devices.  Probably all the
3676
other display and window system devices should be made page devices too, but
3677
we aren't going to bother tracking them down.  (gdevpcfb.c)
3678
	- There was a lot of duplicated code in the TIFF drivers.
3679
(gdevtifs.h, gdevtfax.c, gdevtfnx.c, gdevtifs.c)
3680
 
3681
Updates the bjc600 / bjc800 drivers with changes from the author.
3682
(devices.doc, gdevbjc.h, gdevcdj.c)
3683
 
3684
</pre><h3><a name="V3.50_Interpreter"></a>Interpreter</h3><pre>
3685
 
3686
Fixes bugs:
3687
	- Building with COMPILE_INITS=1 produced a stackunderflow error.
3688
(gs_pdf_e.ps)
3689
	- An internal operator didn't have a name.  (ztoken.c)
3690
	- Some error and information messages weren't in the Adobe format.
3691
(gs_fonts.ps, gs_init.ps)
3692
	- Some common Adobe compatibility operators weren't implemented:
3693
pagemargin, pageparams, setpagemargin.  (gs_statd.ps, gs_lev2.ps)
3694
	- setpageparams set Margins rather than PageOffset.  (gs_lev2.ps)
3695
	- setpage and setpageparams didn't set Orientation.  (gs_lev2.ps)
3696
	- If the end of an input buffer fell just after the / of a literal
3697
name, a memory access error could occur.  (iscan.c)
3698
	- When the interpreter returned from gs_[main_]run_string_continue,
3699
there could be an extra value on the operand stack.  (iscan.h, istream.h,
3700
interp.c, iscan.c, zfileio.c, zfproc.c, zpaint.c, ztoken.c)
3701
	- If the character cache was disabled, or if a character was too
3702
large to be cached, returning from a font BuildChar procedure could do an
3703
erasepage.  (zchar.c)
3704
 
3705
A minor change was required for compatibility with the library change for
3706
image devices.  (zdevice.c)
3707
 
3708
Adds a -dSHORTERRORS switch that changes some of the common error and
3709
warning messages for greater Adobe compatibility.  (gs_init.ps, gs_fonts.ps)
3710
 
3711
</pre><h3><a name="V3.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3712
 
3713
Fixes bugs:
3714
	- If a CharProc for a Type 3 font did a BT/ET, the graphics state
3715
could get confused.  (gs_pdf.ps)
3716
	- If a Tf occurred inside a BT/ET, it didn't take effect on
3717
subsequent BT/ETs.  (gs_pdf.ps)
3718
 
3719
</pre><h3><a name="V3.50_Library"></a>Library</h3><pre>
3720
 
3721
Fixes bugs:
3722
	- There was no way to control whether an image device was a page
3723
device.  Fixing this required a NON-BACKWARD-COMPATIBLE CHANGE to
3724
gs_makewordimagedevice and gs_initialize_wordimagedevice to take a Boolean
3725
page_device argument.  Fortunately, this change affects only a few obscure
3726
library clients.  (gsdevice.h, gsdevmem.c)
3727
 
3728
Adds translation capability to clipping devices.  This isn't used anywhere
3729
yet.  (gxcpath.h, gxcpath.c)
3730
 
3731
Adds procedures for doing unaligned copy_xxx operations.  These were added
3732
for a customer.  (gxdevice.h, gsdevice.c)
3733
 
3734
Changes the (undocumented) return value of gs_setcachedevice[2]: they used
3735
to return 1 if the current show operation was a non-displaying one
3736
(stringwidth or cshow), and now return 1 if the cache device was just
3737
installed.  This change was required to fix the BuildChar page clearing bug
3738
in the interpreter.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but as far as
3739
I know, there aren't any external clients of these routines.  (gschar.h,
3740
gschar.c)
3741
 
3742
</pre>
3743
 
3744
<hr>
3745
 
3746
<h2><a name="Version3.49"></a>Version 3.49 (limited) (9/20/95)</h2>
3747
 
3748
<p>
3749
This is another bug-fix release during beta test.  There are other bugs
3750
outstanding, but the ones I know about right now are all platform-specific.
3751
 
3752
<h3><a name="V3.49_Documentation"></a>Documentation</h3><pre>
3753
Fixes bugs:
3754
	- make.doc didn't mention that the .def files are needed to build a
3755
MS Windows executable.  (make.doc)
3756
 
3757
</pre><h3><a name="V3.49_Procedures"></a>Procedures</h3><pre>
3758
 
3759
Fixes bugs:
3760
	- There were some forward references to macro definitions in the
3761
makefiles.  (int.mak, lib.mak)
3762
	- The default device for library configurations was the null page
3763
device, not the first device in DEVICE_DEVS.  (ugcclib.mak)
3764
 
3765
</pre><h3><a name="V3.49_Drivers"></a>Drivers</h3><pre>
3766
 
3767
Fixes bugs:
3768
	- The BJC600 / BJC800 drivers were missing a header file.
3769
(gdevbjc.h, gdevcdj.c)
3770
	- A procedure name was used in two different files.  (gdevcdj.c)
3771
	- The PCX driver didn't return an error code in case of failure.
3772
(gdevpcx.c)
3773
	- The X Windows driver produced some confusing warning messages.
3774
(gdevxini.c)
3775
	- Some names were duplicated between drivers.  (gdevepsc.c)
3776
	- The X driver maintained its own, peculiar initial matrix even if
3777
Ghostview wasn't involved.  (gdevx.c)
3778
 
3779
With the permission of the author, changes the 24-bit TIFF license from GNU
3780
to Aladdin.  (gdevtfnx.c)
3781
 
3782
</pre><h3><a name="V3.49_Platforms"></a>Platforms</h3><pre>
3783
 
3784
Fixes bugs:
3785
	- The VMS build scripts were out of sync with the makefiles (again).
3786
(modules.lis, vms.mak)
3787
 
3788
</pre><h3><a name="V3.49_Interpreter"></a>Interpreter</h3><pre>
3789
 
3790
Fixes bugs:
3791
	- When the requested media size matched an available size exactly
3792
with a 90 degree rotation, Orientation was ignored.  (zmedia2.c)
3793
 
3794
Makes zcurrentdevice extern.  (opextern.h, zdevice.c)
3795
 
3796
</pre><h3><a name="V3.49_Library"></a>Library</h3><pre>
3797
 
3798
Fixes bugs:
3799
	- A couple of places used memcpy instead of memmove.  (gxclread.c)
3800
	- If a bitmap image was compressed with RLE compression in a band
3801
list, it would cause an error on decompression.  (gxclread.c)
3802
	- The representation of colors in the band list was needlessly
3803
inefficient.  (gxcldev.h, gxclist.c, gxclread.c)
3804
	- When using colored halftones, snowflak.ps crashed with an invalid
3805
memory access.  More generally, any use of halftones could cause the garbage
3806
collector to make an invalid access.  (gsstate.c)
3807
 
3808
Adds some more code for paths in band lists, but again doesn't activate it.
3809
(gxcldev.h, gxpath.h, gzline.h, gsline.c, gspath1.c, gxclist.c, gxclread.c,
3810
gxpath.c)
3811
 
3812
</pre>
3813
 
3814
<h2><a name="Version3.48"></a>Version 3.48 (limited) (9/17/95)</h2>
3815
 
3816
<p>
3817
This is the second bug-fix release during beta test.  Among other things, it
3818
fixes a bug introduced in 3.47 that caused all PDF files to give an error.
3819
 
3820
<p>
3821
******NOTE: the BJC600 and BCJ800 drivers do not work in this release,
3822
because we didn't get a file from the author in time.  They will compile,
3823
but not run.  This will be fixed in the next round.
3824
 
3825
<h3><a name="V3.48_Documentation"></a>Documentation</h3><pre>
3826
Fixes bugs:
3827
	- Alan Barclay's contact information was wrong.  (README)
3828
 
3829
</pre><h3><a name="V3.48_Procedures"></a>Procedures</h3><pre>
3830
 
3831
Fixes bugs:
3832
	- The linker path for Watcom C++ 10.5 was wrong.  (wccommon.mak)
3833
	- There was a syntax error in a batch file.  (pdf2ps.bat)
3834
	- The VMS build script didn't have entries for some printers.
3835
(vms.mak)
3836
 
3837
Adds the bjc600 and bjc800 devices on all platforms that already include the
3838
color DeskJet devices.  (*.mak)
3839
 
3840
</pre><h3><a name="V3.48_Drivers"></a>Drivers</h3><pre>
3841
 
3842
Fixes bugs:
3843
	- The H-P drivers didn't reposition the cursor properly at the
3844
beginning of pages after the first page, causing the image to be shifted
3845
down slightly and cut off at the bottom.  (gdevdjet.c)
3846
	- The x11alpha driver was extremely slow.  (gdevxalt.c)
3847
	- The -g switch by itself didn't work for the X Windows driver.
3848
(gdevxini.c)
3849
	- .installpagedevice can get a rangecheck on MS Windows because the
3850
HWColorMap can change spontaneously.  (gs_setpd.ps)
3851
 
3852
Updates the bjc600 and bjc800 drivers with new versions from Yves Arrouye.
3853
(gdevcdj.c)
3854
 
3855
Adds a user-contributed driver that writes uncompressed 24-bit RGB TIFF
3856
images in a format that is standard on NeXT platforms.  This driver is
3857
governed by the GNU license and is therefore separated from the rest of the
3858
Aladdin distribution.  (gdevtfnx.c)
3859
 
3860
</pre><h3><a name="V3.48_Platforms"></a>Platforms</h3><pre>
3861
 
3862
Fixes bugs:
3863
	- There was an undefined reference to clock_gettime on some Unix
3864
systems.  (gp_unix.c)
3865
	- The new gp_fopen routine had several errors.  (gp_vms.c)
3866
 
3867
</pre><h3><a name="V3.48_Interpreter"></a>Interpreter</h3><pre>
3868
 
3869
Fixes bugs:
3870
	- Some routines that should be main-instance-specific weren't.
3871
(imain.h, main.h, gsmain.c)
3872
	- sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
3873
devices.  (zht2.c)
3874
	- Setting A4 paper as the default in gs_init.ps, or specifying
3875
-dPAPERSIZE, conflicted with -g.  (gs_init.ps)
3876
	- The maximum value of a single-precision float wasn't correct on
3877
VAX systems.  (math_.h, iscannum.c)
3878
	- Some integer expressions were passed as floating point arguments.
3879
(gs.c, zmedia2.c)
3880
	- Media selection in setpagedevice was broken (again), as of 3.46.
3881
(gs_setpd.ps, zmedia2.c)
3882
 
3883
</pre><h3><a name="V3.48_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3884
 
3885
Fixes bugs:
3886
	- Substituted color spaces caused an error.  (gs_pdf.ps,
3887
pdf_draw.ps)
3888
 
3889
</pre><h3><a name="V3.48_Library"></a>Library</h3><pre>
3890
 
3891
Fixes bugs:
3892
	- If a halftone had no non-default components that matched the
3893
device's primary colors, the result would be a solid color rather than a
3894
halftone using the default screen.  (gsht.c)
3895
	- sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
3896
devices.  (gxht.h, gsht.c, gsht1.c)
3897
	- The new gp_fopen routine wasn't being used.  (gsiodev.c)
3898
	- A mixing of float and fixed values caused a clipping region to be
3899
possibly incorrect by up to 1 pixel.  (gspaint.c)
3900
	- A function definition was inconsistent with the prototype.
3901
(gspath1.c)
3902
 
3903
Adds preliminary code for including paths in band lists, but doesn't
3904
activate any of it.  (lib.mak, gxcldev.h, gxclist.c, gxclread.c)
3905
 
3906
</pre>
3907
 
3908
<h2><a name="Version3.47"></a>Version 3.47 (limited) (9/14/95)</h2>
3909
 
3910
<p>
3911
This is a bug-fix release during beta test.  It is meant to have no new
3912
functionality, although in the case of setpagedevice that's stretching
3913
things a little.
3914
 
3915
<h3><a name="V3.47_Documentation"></a>Documentation</h3><pre>
3916
Fixes bugs:
3917
	- The Mac documentation still referred to IJG JPEG v5a rather than
3918
v6.  (make.doc)
3919
	- The RasterOp texture device was identified incorrectly.
3920
(gdevmrop.c)
3921
	- use.doc and psfiles.doc didn't mention the PDF-related files.
3922
(psfiles.doc, use.doc)
3923
	- psview is no longer available.  (README)
3924
	- current.doc didn't document the recognized setpagedevice keys.
3925
(current.doc)
3926
 
3927
</pre><h3><a name="V3.47_Procedures"></a>Procedures</h3><pre>
3928
 
3929
Fixes bugs:
3930
	- Many utility programs weren't included in the Unix 'install' list.
3931
(unix-end.mak)
3932
	- It wasn't at all convenient to make configurations without the BCP
3933
or other non-standard filters.  (*.mak, int.mak, modules.lis, zfilter2.c,
3934
zfilterx.c)
3935
	- The gconfig.c and iconfig.c files weren't deleted after
3936
compilation.  (int.mak, lib.mak)
3937
	- unix-end.mak referred to the nonexistent macros INT{1,2}_MAK.
3938
(unix-end.mak)
3939
	- The rules for building the dfax drivers were incorrect.  (devs.mak)
3940
	- Omitting filter.dev produced an undefined reference.  (int.mak)
3941
 
3942
Adds a customer-contributed makefile for Microsoft Visual C++ 2.n under
3943
Windows NT.  (msvcwint.mak)
3944
 
3945
</pre><h3><a name="V3.47_Utilities"></a>Utilities</h3><pre>
3946
 
3947
Fixes bugs:
3948
	- The JPEG utility didn't support the new progressive JPEG modes,
3949
and didn't invert Adobe Photoshop output as needed.  (viewjpeg.ps)
3950
	- The printafm utility had a single font name wired in.  (printafm,
3951
printafm.ps)
3952
	- The CIE lookup simulation had several bugs.  (docie.ps)
3953
	- pdf2ps[.bat] were missing from the fileset.
3954
	- Files produced by pdf_2ps didn't include the GS_PDF ProcSet.
3955
(gs_pdf.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
3956
 
3957
</pre><h3><a name="V3.47_Drivers"></a>Drivers</h3><pre>
3958
 
3959
Fixes bugs:
3960
	- Bits read back from an EGA or VGA device were incorrect.
3961
(gdevpcfb.c)
3962
	- The 24-bit PCX run length compressor used a slow algorithm.
3963
(gdevpcx.c)
3964
	- gdevstc.c wouldn't compile with the Borland compiler.  (gdevstc.c)
3965
	- There was a typo in the OS/2 PM driver.  (gdevpm.c)
3966
	- .installpagedevice gets a rangecheck on X Windows because the
3967
HWColorMap can change spontaneously.  (gs_setpd.ps)
3968
	- The left margin for the DeskJet 500 was wrong.  (gdevdjet.c)
3969
	- The two notions of "margin" (offset of 0,0 from physical page
3970
corner vs. unprintable area around edges of physical page) were still
3971
confused.  We've now fixed this for the H-P monochrome printers, but it's
3972
probably still confused for all other printers.  (gdevprn.h, gdevdjet.c)
3973
 
3974
</pre><h3><a name="V3.47_Platforms"></a>Platforms</h3><pre>
3975
 
3976
Fixes bugs:
3977
	- The Windows print spooler header file wasn't included when it
3978
needed to be, and some other Win32-specific changes were missing.
3979
(gsdll32.def, gp_mswin.c)
3980
	- Windows DLLs didn't parse "s in the command "arguments" correctly.
3981
(gsdll.c)
3982
 
3983
</pre><h3><a name="V3.47_Fonts"></a>Fonts</h3><pre>
3984
 
3985
Fixes bugs:
3986
	- FAKEFONTS could get the font directories into inconsistent states.
3987
(gs_dps1.ps, gs_fonts.ps)
3988
	- The substitutions for Adobe's Myriad and Minion fonts weren't
3989
appropriate.  (gs_fonts.ps)
3990
 
3991
</pre><h3><a name="V3.47_Interpreter"></a>Interpreter</h3><pre>
3992
 
3993
Fixes bugs:
3994
	- If pathforall got an error computing the user-space points on a
3995
path, it could cause an invalid access.  (zpath1.c)
3996
	- A 'private' declaration were omitted.  (Why doesn't gcc catch
3997
this??)  (zcie.c)
3998
	- Setting GS_FONTPATH produced a stackunderflow error.
3999
(gs_fonts.ps)
4000
	- currentscreen caused a typecheck if the screen had been set by
4001
setcolorscreen.  (gs_dps1.ps)
4002
	- setcolorrendering tried to cache values computed from the color
4003
space even if the current color space wasn't a CIE space.  (zcrd.c)
4004
	- Out-of-range numbers like 10E38 caused a floating point exception.
4005
(iscannum.c)
4006
	- Giving a closed readable file as input for a filter caused an
4007
invalidaccess.  (files.h, interp.c, zfilter.c)
4008
	- setpagedevice opened the default device even with -dNODISPLAY.
4009
(gs_init.ps, gs_setpd.ps)
4010
	- realtime returned the same value as usertime.  (gs_lev2.ps,
4011
zmisc.c)
4012
	- Storing a local value into systemdict caused some redundant code
4013
to be executed.  (zdict.c)
4014
	- Files with a very long first line could cause a rangecheck error.
4015
(gs_init.ps)
4016
	- The PageOffset page device parameter was ignored.  (gs_setpd.ps)
4017
	- The Orientation page device parameter wasn't handled properly.
4018
(gs_setpd.ps, idparam.h, idparam.c, zmedia2.c)
4019
	- setpagedevice could set device parameters twice, with an
4020
incomplete update the first time.  (gs_setpd.ps)
4021
 
4022
</pre><h3><a name="V3.47_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4023
 
4024
Fixes bugs:
4025
	- Readers confused the internal pdfrun procedure with the public
4026
runpdf procedure.  (pdf_*.ps)
4027
 
4028
</pre><h3><a name="V3.47_Streams"></a>Streams</h3><pre>
4029
 
4030
Fixes bugs:
4031
	- Closed streams had a NULL state pointer, causing problems for some
4032
clients.  (stream.c)
4033
	- Group 4 decoding could get an ioerror if an end-of-buffer occurred
4034
in a horizontal code sequence between a makeup code and the termination
4035
code.  (scfd.c)
4036
 
4037
</pre><h3><a name="V3.47_Library"></a>Library</h3><pre>
4038
 
4039
Fixes bugs:
4040
	- Some 'private' declarations were omitted.  (Why doesn't gcc catch
4041
these??)  (gdevmrop.c, gxht.c)
4042
	- Patterns could produce bad output in the band list.  (gxclist.c)
4043
	- RasterOp wasn't implemented at all for 2- or 4-bit devices.  (In
4044
this release, we implement only a subset, and without handling transparency
4045
properly.)  (gdevm2.c, gdevm4.c, gdevmrop.c)
4046
	- Drawing operations and text sometimes didn't apply the RasterOp
4047
when they should, and vice versa.  (gxdcolor.h, gxdraw.c)
4048
	- setcolorrendering tried to cache values computed from the color
4049
space even if the current color space wasn't a CIE space.  (gscie.h,
4050
gscie.c)
4051
	- Some CIE color spaces produced very distorted colors.  (gscie.c)
4052
	- setpagedevice opened a window even with -dNODISPLAY.  (gsdevice.c,
4053
gsdparam.c)
4054
	- realtime returned the same value as usertime.  (gp.h, time_.h,
4055
gp_*.c)
4056
	- The library level attempted to handle the Orientation page device
4057
parameter.  (gxdevice.h, gdevbit.c, gsdevice.c, gsdparam.c, gspath.c)
4058
	- Severely non-linear CIE encoding/decoding functions produced
4059
seriously skewed colors near the ends of the color value range.  This
4060
problem can now be alleviated, at a significant cost in performance, by
4061
changing configuration parameters at the beginning of gscie.h.  (gscie.h,
4062
gscie.c)
4063
	- Files FTP'ed in binary mode weren't being opened properly on VMS.
4064
(gp.h, gp_*.c, gsiodev.c)
4065
	- A header file had an inconsistent declaration.  (math_.h)
4066
 
4067
Adds a new gp_get_usertime procedure to gp.h.  THIS IS A
4068
NON-BACKWARD-COMPATIBLE CHANGE, affecting only platform implementors.  It
4069
was necessary to fix the realtime/usertime bug.  (gp.h, time_.h, gp_*.c)
4070
 
4071
Adds a new gp_fopen procedure to gp.h.  THIS IS A NON-BACKWARD-COMPATIBLE
4072
CHANGE, affecting only platform implementors.  It was necessary to fix the
4073
binary file problem on VMS.  (gp.h, gp_*.c)
4074
 
4075
</pre>
4076
 
4077
<h2><a name="Version3.46"></a>Version 3.46 (limited) (9/4/95)</h2>
4078
 
4079
<p>
4080
This is the "serious beta test" release for the next public release.  It
4081
finishes implementing RasterOp in the graphics state, and the remaining
4082
commonly used parts of setpagedevice.
4083
 
4084
<h3><a name="V3.46_Documentation"></a>Documentation</h3><pre>
4085
Documents some possible problems when building with DJGPP v2.0-beta.
4086
(make.doc)
4087
 
4088
Adds documentation on using Ghostscript as a PDF interpreter.  (use.doc)
4089
 
4090
Notes linking problems with the Watcom 10.0 environment.  (make.doc)
4091
 
4092
</pre><h3><a name="V3.46_Procedures"></a>Procedures</h3><pre>
4093
 
4094
Fixes bugs:
4095
	- The rule for $(ccfonts).dev was wrong.  (gs.mak)
4096
 
4097
Makes some additional filters into 'features'.  (devs.mak, gs.mak)
4098
 
4099
Splits off 2 new makefiles from gs.mak, which had gotten very large: lib.mak
4100
(graphics library) and int.mak (interpreters).  (tar_cat, tar_cat.bat,
4101
*.mak)
4102
 
4103
Adds a new 'config-clean' target that may be helpful in changing
4104
configuration definitions.  (gs.mak)
4105
 
4106
Notes in the relevant makefiles that on Unix and DVX systems, one should not
4107
edit 'makefile' or the concatenated makefile, but should edit the individual
4108
subfile and run tar_cat.  (ansihead.mak, cc-head.mak, dgc-head.mak,
4109
gcc-head.mak, devs.mak)
4110
 
4111
Updates the Watcom makefiles to handle Watcom release 10.5, in which many
4112
executables moved to different directories.  (watc.mak, watcwin.mak,
4113
wccommon.mak)
4114
 
4115
Adds a pdf2ps shell script.  (pdf2ps, pdf2ps.bat)
4116
 
4117
Adds a -sFONTMAP= switch to specify the name of the Fontmap file.
4118
(gs_fonts.ps)
4119
 
4120
Adds a -u&lt;name&gt; switch to undefine a name from systemdict.  (interp.h, gs.c,
4121
iinit.c)
4122
 
4123
Adds a -dFIXEDRESOLUTION switch to parallel -dFIXEDMEDIA.  Makes -g set
4124
FIXEDMEDIA and -r set FIXEDRESOLUTION.  (gs_init.ps, gs_setpd.ps, gs.c)
4125
 
4126
Changes some build procedures to avoid problems with read-only source files.
4127
(gs.mak, int.mak, lib.mak)
4128
 
4129
</pre><h3><a name="V3.46_Utilities"></a>Utilities</h3><pre>
4130
 
4131
Adds a utility for emulating the CIE color mapping algorithms.  (docie.ps)
4132
 
4133
</pre><h3><a name="V3.46_Drivers"></a>Drivers</h3><pre>
4134
 
4135
Changes the x11alpha device so that it uses 32-bit pixels with 8 bits of
4136
alpha.  (gdevxalt.c)
4137
 
4138
Updates the Epson Stylus Color driver to Gunther Hess's release 1.17.
4139
(devs.mak, unix-end.mak, devices.doc, stcolor.ps, gdevstc.h, gdevstc*.c)
4140
 
4141
Updates the alternate X drivers for the change from PageSize to MediaSize.
4142
(gdevxalt.c)
4143
 
4144
Makes Duplex an optional parameter of printer devices rather than of all
4145
devices.  (gdevprn.h, gxdevice.h, gsdparam.c, gdevdjet.c, gdevprn.c)
4146
 
4147
</pre><h3><a name="V3.46_Platforms"></a>Platforms</h3><pre>
4148
 
4149
Makes pipes (%pipe% file syntax) a selectable option on Unix platforms,
4150
rather than always being included.  (ansihead.mak, cc-head.mak,
4151
gcc-head.mak, ugcclib.mak, unixtail.mak)
4152
 
4153
</pre><h3><a name="V3.46_Interpreter"></a>Interpreter</h3><pre>
4154
 
4155
Fixes bugs:
4156
	- colorimage, and the dictionary form of image with
4157
MultipleDataSources = true, didn't check that all the data sources were of
4158
the same type.  (zpaint.c)
4159
	- colorimage, and dictionary-type images with MultipleDataSources =
4160
true, usually didn't work properly with files.  (zpaint.c)
4161
	- grestoreall left a dangling pointer to the transfer function
4162
cache.  (gsstate.c)
4163
	- Changes made by setpagedevice could get 'lost' and not installed
4164
in the current page device dictionary.  (gs_setpd.ps)
4165
	- The Install procedure was called before the new page device
4166
dictionary had gotten installed.  (gs_setpd.ps)
4167
	- If a grestore/grestoreall/restore/setgstate operation switched
4168
page devices, the new page device didn't get installed properly.
4169
(gs_setpd.ps, opextern.h, zdevice2.c, zdps1.c)
4170
	- If the current screen was a Type 1 halftone, currentscreen and
4171
currentcolorscreen returned frequency = 60, angle = 0 rather than the
4172
Frequency and Angle from the halftone (see Adobe TN 5085).  (gs_dps1.ps,
4173
gs_init.ps)
4174
	- setscreen with a Type 1 halftone dictionary didn't insert the
4175
frequency and angle into the dictionary (see Adobe TN 5085).  (gs_dps1.ps)
4176
	- upath didn't include a trailing moveto in the bounding box.
4177
(gs_dps1.ps, zpath1.c)
4178
	- setpagedevice didn't automatically rotate or scale the image when
4179
necessary.  (gs_setpd.ps, zmedia2.c)
4180
 
4181
Moves the RasterOp operators to a separate file.  (iutil.h, iutil.c,
4182
zgstate.c, zrop.c)
4183
 
4184
Eliminates the unnecessary "wrapper" around .setdevice.  (zdevice2.c)
4185
 
4186
Establishes the convention that all interpreter callbacks into PostScript
4187
code use procedure names that begin with %; documents this in gs_init.ps.
4188
Changes Type1BuildChar and Type1BuildGlyph to %Type1BuildChar and
4189
%Type1BuildGlyph.  (gs_init.ps, gs_type1.ps, zfont0.c, zfont1.c)
4190
 
4191
Changes image / imagemask / colorimage for the new library API.  (zimage2.c,
4192
zpaint.c)
4193
 
4194
Reorganizes font loading to make compiled fonts and Fontmap interact better
4195
with each other.  (gs_ccfnt.ps, gs_fonts.ps, gs_init.ps, gs_res.ps)
4196
 
4197
Implements parameter collection for the new CIEBasedDEF[G] color spaces, but
4198
doesn't actually implement the color spaces themselves.  (icie.h, zcie.c,
4199
zcrd.c)
4200
 
4201
Renames iconfig.c as iconf.c to avoid problems with read-only source files.
4202
(iconf.c)
4203
 
4204
</pre><h3><a name="V3.46_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4205
 
4206
Fixes bugs:
4207
	- PDF to PostScript conversion didn't work.  (pdf_main.ps)
4208
 
4209
Shifts most of the work in the PDF interpreter from the reader to the
4210
ProcSet.  This simplifies the code considerably and also makes it easier to
4211
modify.  (gs_pdf.ps, pdf_draw.ps, pdf_font.ps, pdf_main.ps)
4212
 
4213
</pre><h3><a name="V3.46_Library"></a>Library</h3><pre>
4214
 
4215
Fixes bugs:
4216
	- 'static' was omitted in a place that some compilers require it.
4217
(gxccman.c)
4218
	- Some compilers don't allow a variable with the same name as a
4219
preprocessor macro with arguments.  (gscie.c)
4220
	- Some places did a "return -1" rather than a proper error return.
4221
(gsdevice.c, gxclist.c)
4222
	- An external declaration had a typo.  (gsrop.h)
4223
	- An extra semicolon upset some compilers.  (gzpath.h)
4224
	- Printer devices that didn't use the standard macros for generating
4225
their procedure vector wound up being considered as non-page devices.
4226
(gdevprn.c)
4227
	- Some compilers truncated identifiers longer than 31 characters.
4228
(gscspace.h, zcie.c, gscie.c)
4229
	- upath didn't include a trailing moveto in the bounding box.
4230
(gspath.h, gspath1.c)
4231
	- RasterOp value 126 returned an incorrect result.  (gsroptab.c)
4232
 
4233
Finishes implementing RasterOp in the graphics state.  (gdevmrop.h, gsrop.h,
4234
gsropt.h, gsstate.h, gxbitmap.h, gxcindex.h, gxdcolor.h, gxdevice.h,
4235
gzstate.h, gdevmrop.c, gscolor.c, gsdevice.c, gsimage.c, gsimage1.c,
4236
gsimage2.c, gsimage3.c, gspcolor.c, gsrop.c, gsstate.c, gxacpath.c,
4237
gxccache.c, gxcht.c, gxcmap.c, gxdither.c, gxdraw.c, gxht.c)
4238
 
4239
Changes forwarding devices so they forward get_bits by default.  This
4240
probably doesn't affect any existing code.  (gxdevice.h, gsdevice.c)
4241
 
4242
Changes the API for gs_image[mask]_init to pass a structure rather than a
4243
very large number of scalars.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE,
4244
motivated by the addition of further image parameters to support RasterOp.
4245
Since there are no external clients of the library yet, it shouldn't matter.
4246
(gsimage.h, gsimage.c, gslib.c, gxccache.c)
4247
 
4248
Redefines the device "page size" as being the size of the actual media,
4249
changing the name of the gx_device PageSize member to MediaSize, the name of
4250
the PageSize device parameter to .MediaSize (but keeping PageSize as
4251
equivalent, for backward compatibility), and the name of the
4252
gx_device_set_page_size procedure to gx_device_set_media_size (keeping the
4253
old name as a macro).  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  It is
4254
necessary to make setpagedevice work, and to avoid confusion about what
4255
"page size" means.  It potentially affects any device driver, but almost
4256
none of the device drivers distributed with Ghostscript are affected, and
4257
those have been updated.  (gsparam.h, gxdevice.h, gsdevice.c, gsdparam.c,
4258
gspath.c)
4259
 
4260
Renames gconfig.c as gconf.c to avoid problems with read-only source files.
4261
(gconf.c)
4262
 
4263
Adds an API procedure for setting a bitmap pattern.  (gscolor2.h,
4264
gspcolor.c)
4265
 
4266
</pre>
4267
 
4268
<h2><a name="Version3.45"></a>Version 3.45 (limited) (8/27/95)</h2>
4269
 
4270
<p>
4271
The purpose of this release is to fix some minor bugs reported by commercial
4272
licensees, and to add two enhancements: optional RenderTable interpolation
4273
for CIE color, and reducing the temporary space used during character
4274
caching (also for a licensee).
4275
 
4276
<h3><a name="V3.45_Documentation"></a>Documentation</h3><pre>
4277
 
4278
Notes that the only valid return values from get_alpha_bits are 1, 2, and 4.
4279
(drivers.doc)
4280
 
4281
Notes that the get_bits driver procedure will return a pointer to aligned
4282
data, but does not require the caller's data area to be aligned.
4283
(drivers.doc)
4284
 
4285
</pre><h3><a name="V3.45_Procedures"></a>Procedures</h3><pre>
4286
 
4287
Fixes bugs:
4288
	- Many of the printer and file output drivers in devs.mak still
4289
included gdevprn.$(OBJ) in their dependencies.  (devs.mak)
4290
	- PDEVH was used before it was defined.  (devs.mak)
4291
	- GENCONF_XE was used before it was defined.  (unixhead.mak,
4292
unix-end.mak)
4293
 
4294
Makes it possible to switch sfile implementations without editing gs.mak.
4295
(gs.mak)
4296
 
4297
Makes it possible to specify alternate compiled font tables without editing
4298
gs.mak.  (gs.mak)
4299
 
4300
Allows quoted arguments in @-files, e.g.,
4301
	-sOutputFile="a file name with spaces"
4302
(gs.c)
4303
 
4304
</pre><h3><a name="V3.45_Utilities"></a>Utilities</h3><pre>
4305
 
4306
Fixes bugs:
4307
	- The ps2ascii script could fail to delete temporary files in case
4308
of an abnormal exit.  (ps2ascii)
4309
 
4310
</pre><h3><a name="V3.45_Drivers"></a>Drivers</h3><pre>
4311
 
4312
Fixes bugs:
4313
	- The MS Windows printer capability test was wrong.  (gdevwpr2.c)
4314
	- The MS Windows and OS/2/PM displays weren't page devices.
4315
(gdevwdib.c, gdevpm.c)
4316
 
4317
Gets rid of all direct references to dev-&gt;PageSize in drivers.  (gdevl256.c,
4318
gdevvglb.c)
4319
 
4320
</pre><h3><a name="V3.45_Platforms"></a>Platforms</h3><pre>
4321
 
4322
Fixes bugs:
4323
	- The 32-bit MS Windows configuration file for the Borland C++
4324
compiler was missing from the fileset.  (bcc32.cfg, tar_gs)
4325
 
4326
Makes the printer devices in the OS/2 implementation capable of outputting
4327
directly to the print spooler.  (use.doc, gp_os2.c)
4328
 
4329
Makes printing on Windows NT and Windows 95 use the printer queue.
4330
(gp_mswin.c, gswin32.rc)
4331
 
4332
</pre><h3><a name="V3.45_Interpreter"></a>Interpreter</h3><pre>
4333
 
4334
Fixes bugs:
4335
	- Copying a null device produced an uninitialized pointer.
4336
(gsdevice.c)
4337
	- The dictionary returned by deviceinfo wasn't read-only.
4338
(gs_lev2.ps)
4339
	- If a filter's init code failed, an entry on the operand stack
4340
(usually the top) could be smashed.  (files.h, zfile.c, zfilter.c)
4341
 
4342
Adds const in a few places that needed it.  (zwppm.c)
4343
 
4344
Adds interpolation to the CIE RenderTable lookup.  (icie.h, zcie.c, zcrd.c)
4345
 
4346
</pre><h3><a name="V3.45_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4347
 
4348
Allows PDF files with control-character garbage at the end, and up to 250
4349
characters of garbage at the beginning.  The latter is only supported by
4350
runpdf, not by run.  (pdf_base.ps, pdf_main.ps)
4351
 
4352
</pre><h3><a name="V3.45_Streams"></a>Streams</h3><pre>
4353
 
4354
Fixes bugs:
4355
	- A 1-D CCITTFaxDecode stream could give an error if an input buffer
4356
boundary fell just before a 0-length termination code.  (scfx.h, scfd.c)
4357
 
4358
</pre><h3><a name="V3.45_Library"></a>Library</h3><pre>
4359
 
4360
Fixes bugs:
4361
	- A variable was used before being set, which could cause band
4362
devices to become confused when processing colored halftones.  (gxclist.c)
4363
	- Some of the color and tile bookkeeping for band lists was wrong
4364
(as of 3.44), causing tiled areas to be filled with garbage.  (gxclist.c,
4365
gxclread.c)
4366
	- Colored Patterns showed up blank on devices whose native
4367
representation of `black' was a non-zero value.  The fix removes the
4368
'cached' member of the gx_device structure, and requires monobit memory
4369
devices to have a palette; this is a NON-BACKWARD-COMPATIBLE CHANGE for
4370
anyone who was foolish enough to statically initialize a gx_device structure
4371
without using the macros in gxdevice.h or gdevprn.h.  (gdevmem.h,
4372
gxdevice.h, gxdevmem.h, gdevm1.c, gdevmrop.c, gsdevice.c, gxcpath.c,
4373
gxdither.c)
4374
 
4375
Provides the framework for band devices to implement alpha (anti-aliasing).
4376
(gxcldev.h, gdevprn.c, gsdevice.c, gxclist.c, gxclread.c)
4377
 
4378
Implements an efficient API for enumerating paths using device coordinates.
4379
(gspath.h, gxpath.h, gzpath.h, gspath1.c, gxpath2.c)
4380
 
4381
Changes the character cache logic so that when rasterizing large
4382
anti-aliased characters, it converts the oversampled bits to alpha values on
4383
the fly rather than waiting until it has rasterized the entire character.
4384
This saves a lot of temporary space, at the expense of some extra time and
4385
lower quality results for Type 3 characters that don't use a single fill or
4386
imagemask operation to draw the character.  This enhancement requires adding
4387
a member to the gx_device structure (max_fill_band), which is a
4388
NON-BACKWARD-COMPATIBLE CHANGE for badly written drivers (see above).
4389
(gxchar.h, gxdevice.h, gxpaint.h, gdevabuf.c, gschar.c, gspaint.c,
4390
gxccache.c, gxccman.c, gxfill.c)
4391
 
4392
Changes the palette member of memory devices from gs_string to
4393
gs_const_string.  (gdevmem.h, gxdevmem.h, gdevmem.c, gdevm1.c)
4394
 
4395
Starts to decouple halftoning from the graphics state machinery, so
4396
it can be applied after banding rather than before.  (gxdcolor.h,
4397
gxdht.h, gxdither.h, gzht.h, gxcmap.c, gxdither.c, gxdraw.c)
4398
 
4399
Starts to decouple path filling from the graphics state machinery, so
4400
that we can pass paths through band lists.  (gxpaint.h, gxfill.c)
4401
 
4402
Adds interpolation to the CIE RenderTable lookup.  This is optional, enabled
4403
by #define CIE_RENDER_TABLE_INTERPOLATE in gscie.h.  (gscie.h, gxctable.h,
4404
gscie.c, gxctable.c)
4405
 
4406
</pre>
4407
 
4408
<h2><a name="Version3.44"></a>Version 3.44 (limited) (8/21/95)</h2>
4409
 
4410
<p>
4411
This includes a few bug fixes, but its main purpose is to add two new
4412
features: monobit and 8-bit gray-scale RasterOp (at the driver level, not at
4413
the gstate level yet), and (compressed) band lists in RAM.  Of course, these
4414
new features may have introduced new bugs!
4415
 
4416
<h3><a name="V3.44_Documentation"></a>Documentation</h3><pre>
4417
Adds contact information for a user working on NeXT machines.  (README)
4418
 
4419
Notes that Ghostscript runs on FreeBSD.  (README)
4420
 
4421
Adds copy_rop (the RasterOp operation) to the driver interface.
4422
(drivers.doc)
4423
 
4424
Adds FONTPATH information for more operating systems.  (use.doc)
4425
 
4426
</pre><h3><a name="V3.44_Procedures"></a>Procedures</h3><pre>
4427
 
4428
Fixes bugs:
4429
	- The tar_cat script needed a #!/bin/sh to execute correctly on all
4430
platforms.  (tar_cat)
4431
	- There were a number of minor errors in the makefiles.  (gs.mak,
4432
unixhead.mak)
4433
	- Level 2 configurations without command lists had two undefined
4434
references.  (gs.mak)
4435
	- Some shells required an extra ';' to terminate an 'if' command.
4436
(ugcclib.mak, unix-end.mak, unixtail.mak)
4437
 
4438
Updates the JPEG code to the officially released version 6 of the IJG
4439
library.  See jpeg.mak for information on where to find this library.
4440
(jpeg/*, jpeg.mak, *.mak, modules.lis)
4441
 
4442
Adds a definition of XEAUX to the makefiles to parallel CCAUX, primarily for
4443
cross-compilation environments.  All references to &lt;some-program&gt;$(XE) must
4444
be replaced by $(&lt;SOME-PROGRAM&gt;_XE), where some-program={$(GS), ansi2knr,
4445
echogs, genarch, genconf, geninit}.  This is a NON-BACKWARD-COMPATIBLE
4446
CHANGE, required in order for the makefiles to work in cross-compiled
4447
environments.  (For non-cross-compiled environments, it currently doesn't
4448
matter.)  (gs.mak, *.mak)
4449
 
4450
</pre><h3><a name="V3.44_Utilities"></a>Utilities</h3><pre>
4451
 
4452
Updates ps2ai.ps to version 2.13.  (ps2ai.ps)
4453
 
4454
Changes all the utility shell scripts to include #!/bin/sh, to use exec, and
4455
to pass the original arguments using "$@".  (bdftops, font2c, gsbj, gsdj,
4456
gslj, gslp, gsnd, wftopfa)
4457
 
4458
</pre><h3><a name="V3.44_Drivers"></a>Drivers</h3><pre>
4459
 
4460
Adds the requirement that all page-oriented devices (i.e., those that use
4461
gdevprn.h and implement the print_page procedure) include page.dev in their
4462
dependencies and use $(SETPDEV) rather than $(SETDEV) in their makefile rule
4463
bodies.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  Without this change, the
4464
command list logic (over 25K of unnecessary object code) would have to be
4465
included in every configuration.  (gs.mak, devs.mak, echogs.c)
4466
 
4467
Adds a user-contributed driver for the Okidata Microline (IBM compatible)
4468
dot matrix printers.  (gdevokii.c)
4469
 
4470
Adds copy_rop (the RasterOp operation) to the driver interface.  Currently,
4471
only monobit and 8-bit gray-scale devices implement it.  (gxdevice.h,
4472
gsdevice.c)
4473
 
4474
Adds the ability to read back bits from the display to the x11 devices.
4475
(x_.h, gdevx.c, gdevxalt.c)
4476
 
4477
</pre><h3><a name="V3.44_Platforms"></a>Platforms</h3><pre>
4478
 
4479
Makes some minor changes to support QNX.  (stat_.h)
4480
 
4481
Removes the mswinprn driver from the 16-bit Windows configuration, because
4482
the 64K default data segment overflowed.  (bcwin.mak)
4483
 
4484
</pre><h3><a name="V3.44_Interpreter"></a>Interpreter</h3><pre>
4485
 
4486
Fixes bugs:
4487
	- Type 1 fonts didn't accept packed arrays for Subrs or OtherSubrs.
4488
(zchar1.c, zfont1.c)
4489
	- TBCP-encoded files (yes, I know there isn't supposed to be any
4490
such thing) didn't automatically activate TBCP decoding.  (gs_init.ps)
4491
	- Fonts with invalid FID entries weren't detected.  (zfont.c)
4492
 
4493
Speeds up dictionary operations slightly by removing redundant checks for
4494
nulls.  (zdict.c)
4495
 
4496
Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
4497
(gs_l2img.ps, gs_lev2.ps, igstate.h, zcrd.c)
4498
 
4499
Adds access operators for RasterOp and transparency in the graphics state.
4500
(They don't actually do anything yet.)  (zgstate.c)
4501
 
4502
</pre><h3><a name="V3.44_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4503
 
4504
Fixes bugs:
4505
	- PDFDocEncoding was missing characters 24-31.  (gs_pdf_e.ps)
4506
 
4507
Moves the definition of pdfmark from systemdict to userdict so that Adobe
4508
PostScript files won't think the interpreter is a distiller.  (gs_pdf.ps)
4509
 
4510
</pre><h3><a name="V3.44_Library"></a>Library</h3><pre>
4511
 
4512
Fixes bugs:
4513
	- Some JPEG images had bands of garbage alternating with bands of
4514
valid data.  IJG v6 fixed this -- see above.
4515
	- With FPU_TYPE = -1, the cosine routine returned incorrect values
4516
for angles above 270 degrees.  (gsmisc.c)
4517
	- CIE color conversion didn't work on 16-bit systems.  (gscie.h,
4518
gscie.c)
4519
 
4520
Partially implements reducing the intermediate space for rasterizing
4521
anti-aliased characters by compressing the oversampled representation to an
4522
alpha array incrementally.  (gdevmem.h, gxchar.h, gxdevmem.h, gdevabuf.c,
4523
gschar.c, gspaint.c, gxccman.c)
4524
 
4525
Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
4526
(gscie.h, gscspace.h, gscie.c)
4527
 
4528
Completes the implementation of band lists in RAM.  To select this feature,
4529
change the definition of cl_impl in gs.mak from clfile to clmem.  (Someday
4530
we'll make this easier.)  (gxclmem.h, gxclmem.c)
4531
 
4532
Finishes implementing RasterOp and transparency at the driver level for
4533
monobit and 8-bit gray-scale devices, and implements some of the framework
4534
for general multiple-bit-per-pixel devices.  See drivers.doc for
4535
documentation.  (gsropt.h, gxcldev.h, gxclist.h, gdevm1.c, gdevm8.c,
4536
gdevmem.c, gdevmrop.c, gschar.c, gxclist.c, gxclread.c)
4537
 
4538
Implements the ability to include commands applicable to all bands, rather
4539
than an individual band, in the band list.  Eventually this will be used for
4540
passing halftones through the band list.  (gxcldev.h, gxclist.h, gxclist.c)
4541
 
4542
Adds support for 2-bit-deep 'word' memory devices.  (gdevmem.h, gxdevmem.c,
4543
gdevm2.c)
4544
 
4545
Changes the initialization for memory devices so that they determine their
4546
polarity from the device for which they are buffering the image (if any).
4547
This is a subtle change.  (gdevmem.h, gdevmem.c, gdevm1.c, gsdevmem.c)
4548
 
4549
</pre>
4550
 
4551
<h2><a name="Version3.43"></a>Version 3.43 (limited) (8/10/95)</h2>
4552
 
4553
<p>
4554
Fixes a few more minor bugs, and changes FEATURE selection back to
4555
essentially the way it was before 3.41.
4556
 
4557
<h3><a name="V3.43_Documentation"></a>Documentation</h3><pre>
4558
Fixes bugs:
4559
	- A ~ was missing in a URL.  (README)
4560
 
4561
Adds information about an Amiga port of Ghostscript.  (README)
4562
 
4563
Removes a file called gs.1.c, which appears to be an obsolete version of
4564
gs.1.
4565
 
4566
Adds DCX documentation to the PCX driver.  (We don't support DCX yet, but we
4567
might in the future.)  (gdevpcx.c)
4568
 
4569
Adds information about getting Type 1 fonts from H-P if you have an H-P
4570
PostScript printer.  (use.doc)
4571
 
4572
</pre><h3><a name="V3.43_Procedures"></a>Procedures</h3><pre>
4573
 
4574
Fixes bugs:
4575
	- The auxiliary programs wouldn't compile with ANSI compilers that
4576
don't accept K&amp;R syntax.  (ccgs, gs.mak, ugcclib.mak, *head.mak,
4577
unixtail.mak, echogs.c, genarch.c, genconf.c, geninit.c)
4578
 
4579
Reinstates FEATURE_DEVS in the makefiles, getting rid of FEATURE1..10.  THIS
4580
IS A NON-BACKWARD-COMPATIBLE CHANGE, but it puts things back the way they
4581
were before 3.41, with one exception: compiling the PostScript
4582
initialization code into the executable is now a separate macro
4583
COMPILE_INITS with a definition of 0 or 1, instead of the ccinit 'feature'.
4584
(gs.mak, *.mak, fonts.doc, make.doc)
4585
 
4586
Adds a CCLEAF macro to the makefiles, for optimizing the compilation of
4587
modules containing only leaf procedures.  (gs.mak, *.mak)
4588
 
4589
Adds a CONFIG makefile variable that helps in maintaining multiple variants
4590
in a single directory.  (gs.mak, *.mak)
4591
 
4592
</pre><h3><a name="V3.43_Platforms"></a>Platforms</h3><pre>
4593
 
4594
Fixes bugs:
4595
	- An extern for exit() (in &lt;stdlib.h&gt;) was omitted.  (gp_vms.c)
4596
 
4597
</pre><h3><a name="V3.43_Fonts"></a>Fonts</h3><pre>
4598
 
4599
Reorganizes the compiled font facility so that fonts can be compiled and
4600
turned into a library by third parties.  (gs.mak, font2c.ps, gs_ccfnt.ps,
4601
ccfont.h, iccfont.c, ccfontab.c)
4602
 
4603
</pre><h3><a name="V3.43_Interpreter"></a>Interpreter</h3><pre>
4604
 
4605
Fixes bugs:
4606
	- internaldict was implemented as a dictionary in systemdict and an
4607
operator in userdict, rather than as an operator in systemdict.  This caused
4608
a noaccess error when loading certain Type 1 fonts.  (gs_init.ps,
4609
gs_type1.ps)
4610
	- xfonts couldn't handle modified encodings.  (zfont2.c)
4611
 
4612
Changes the build date printout in the help message to YYYY-MM-DD.  (gs.c)
4613
 
4614
Adds native support for Multiple Master fonts (WeightVector).  (zfont1.c)
4615
 
4616
Implements sin and cos more efficiently (by table lookup with linear
4617
interpolation) on machines with slow (or no) floating point.  (zmath.c)
4618
 
4619
Separates out the code for 'reading' the .ps initialization files, for the
4620
new COMPILE_INITS arrangement.  (imain.h, gconfig.c, gsmain.c, iconfig.c,
4621
iccinit0.c, iinit.c)
4622
 
4623
</pre><h3><a name="V3.43_Streams"></a>Streams</h3><pre>
4624
 
4625
Fixes bugs:
4626
	- The CCITTFaxDecode filter could read up to 3 bytes beyond EOD.
4627
This fix doesn't quite cover all cases, but at least it makes things better.
4628
(ghc.h, sbhc.c, scfd.c)
4629
 
4630
</pre><h3><a name="V3.43_Library"></a>Library</h3><pre>
4631
 
4632
Fixes bugs:
4633
	- After a nocurrentpoint error from a show operation with a
4634
composite font, the bookkeeping was confused and could cause an access
4635
error.  (gschar.c)
4636
	- xfonts couldn't handle modified encodings.  (gsccode.h, gxchar.h,
4637
gxfont.h, gxxfont.h, gschar.c, gxccache.c)
4638
 
4639
Makes .charboxpath able to use cached character information.  (gxchar.h,
4640
gschar.c)
4641
 
4642
Adds native support for Multiple Master fonts (OtherSubrs 14-18).
4643
(gxfont1.h, gstype1.c)
4644
 
4645
Improves the hashing functions for the character cache.  (gxfcache.h,
4646
gxccman.c)
4647
 
4648
Adjusts the character oversampling algorithm to reduce thickening for
4649
devices with alpha capability.  (gsbitops.c)
4650
 
4651
Improves the encoding of the band list for certain kinds of small
4652
rectangles.  (gxcldev.h, gxclist.c, gxclread.c)
4653
 
4654
Implements sin and cos efficiently on machines with slow (or no) floating
4655
point.  (gxfarith.h, gsmatrix.c, gsmisc.c, gspath1.c)
4656
 
4657
</pre>
4658
 
4659
<h2><a name="Version3.42"></a>Version 3.42 (limited) (8/2/95)</h2>
4660
 
4661
<p>
4662
Fixes a few significant problems in 3.41, and brings the DLL code up to
4663
date.
4664
 
4665
<h3><a name="V3.42_Documentation"></a>Documentation</h3><pre>
4666
Fixes bugs:
4667
	- language.doc still referred to rectappend rather than .rectappend.
4668
(language.doc)
4669
 
4670
Adds documentation on the Macintosh port.  (readme, make.doc)
4671
 
4672
Updates the DLL documentation.  (dll.doc)
4673
 
4674
Documents the BCP and TBCP filters as non-experimental.  (language.doc)
4675
 
4676
</pre><h3><a name="V3.42_Procedures"></a>Procedures</h3><pre>
4677
 
4678
Changes the build date printout to YYYY-MM-DD.  (gs_init.ps)
4679
 
4680
</pre><h3><a name="V3.42_Platforms"></a>Platforms</h3><pre>
4681
 
4682
Fixes bugs:
4683
	- The VMS build script had gotten out of sync with the makefiles
4684
(again).  (vms.mak, modules.lis)
4685
 
4686
Brings the MS Windows and OS/2 platforms up to date with the rest of the
4687
code, including DLL support for OS/2.  (os2.mak, gsdll*.def, gdevswn.c,
4688
gdevpm.c, gdevwdib.c, gp_mswin.c, gp_os2.c, gsdll.c, gsmain.c)
4689
 
4690
Adds a new platform-specific routine gp_do_exit, as an alias for the C
4691
library `exit' call.  (gp.h, gsdll.c, gsmain.c, gp_*.c)
4692
 
4693
</pre><h3><a name="V3.42_Interpreter"></a>Interpreter</h3><pre>
4694
 
4695
Fixes bugs:
4696
	- .forgetsave at the outermost level didn't clear the l_new bit,
4697
causing changes to be undone improperly.  (isave.c)
4698
	- A 'void' formal parameter list upset some compilers (as it should
4699
have).  (gsmain.c)
4700
 
4701
Adds a .charboxpath operator that appends to the current path the bounding
4702
boxes of the characters of a string.  (zchar.c, zchar1.c)
4703
 
4704
</pre><h3><a name="V3.42_Streams"></a>Streams</h3><pre>
4705
 
4706
Fixes bugs:
4707
	- A procedure was declared private inconsistently.  (siscale.c)
4708
 
4709
</pre><h3><a name="V3.42_Library"></a>Library</h3><pre>
4710
 
4711
Fixes bugs:
4712
	- The library test program didn't do a necessary initial gsave.
4713
(gslib.c)
4714
	- The fix for landscape monobit images in 3.41 could smash memory.
4715
(gsimage1.c)
4716
	- 1-pixel-wide lines drawn with image or imagemask still disappeared
4717
sometimes.  (gsimage.c)
4718
 
4719
Does some more preparatory work for the implementation of command lists in
4720
RAM.  (gdevprn.h, gxclio.h, gxclist.h, gxclfile.c, gxclist.c, gxclread.c)
4721
 
4722
Adds a gs_charboxpath procedure that appends to the current path the
4723
bounding boxes of the characters of a string.  (gschar.h, gscpm.h,
4724
gstype1.h, gxchar.h, gxpath.h, gxtype1.h, gzstate.h, gschar.c, gspaint.c,
4725
gstype1.c, gxpath.c)
4726
 
4727
</pre>
4728
 
4729
<h2><a name="Version3.41"></a>Version 3.41 (limited) (7/27/95)</h2>
4730
<p>
4731
Another incremental release with bug fixes and customer-requested
4732
enhancements.  This release was intended to include the full setpagedevice
4733
media matching and adjustment algorithm, but we discovered some
4734
architectural problems during development, and have postponed it.
4735
 
4736
<h3><a name="V3.41_Documentation"></a>Documentation</h3><pre>
4737
 
4738
Replaces the build instructions for NeXTSTEP with more up-to-date and
4739
accurate ones.  (make.doc)
4740
 
4741
Notes that some extra manual steps are required when cross-compiling.
4742
(make.doc)
4743
 
4744
Documents how to define new 'features' in the makefile.  (gs.mak)
4745
 
4746
</pre><h3><a name="V3.41_Procedures"></a>Procedures</h3><pre>
4747
 
4748
Fixes bugs:
4749
	- The build rule for ccinit.dev was circular.  Fixing this required
4750
a small but NON-BACKWARD-COMPATIBLE change in the way that features are
4751
selected in the makefiles (FEATURE_DEVS replaced by FEATURE1..10).  (*.mak,
4752
fonts.doc, make.doc)
4753
 
4754
Changes the build rule for gconfig.h to be less likely to overrun MS-DOS's
4755
command line length limit.  (gs.mak)
4756
 
4757
Adds a -dFIXEDMEDIA switch to indicate that the media size should be
4758
considered fixed after initialization.  (gs_init.ps)
4759
 
4760
</pre><h3><a name="V3.41_Utilities"></a>Utilities</h3><pre>
4761
 
4762
Fixes bugs:
4763
	- traceimg.ps incorrectly referred to .stdout.  (traceimg.ps)
4764
	- prfont.ps didn't display unencoded characters correctly.
4765
(prfont.ps)
4766
	- ps2epsi didn't give correct bounding box information.  (ps2epsi,
4767
ps2epsi.ps)
4768
	- ps2epsi produced DSC comments that didn't fully conform to the
4769
Adobe standard.  (ps2epsi, ps2epsi.ps)
4770
 
4771
Allows viewpbm.ps to take multiple files on the command line.  (viewpbm.ps)
4772
 
4773
</pre><h3><a name="V3.41_Drivers"></a>Drivers</h3><pre>
4774
 
4775
Adds a preliminary, contributed PNG driver.  THIS IS NOT USABLE YET -- DON'T
4776
TRY TO USE IT.  (png.mak, gdevpng.c)
4777
 
4778
Increases the maximum allowable scan line width for the TIFF drivers from
4779
5183 pixels to 12863 pixels.  (scf.h)
4780
 
4781
</pre><h3><a name="V3.41_Platforms"></a>Platforms</h3><pre>
4782
 
4783
Updates the MS Windows DLL code to export the new, suspendable run_string
4784
interface.  (gsdll.h, gsdll.c, dll.doc)
4785
 
4786
</pre><h3><a name="V3.41_Fonts"></a>Fonts</h3><pre>
4787
 
4788
Fixes bugs:
4789
	- There were several errors in cfonts.mak.  (cfonts.mak)
4790
	- The compiled fonts option didn't offer both free and standard
4791
configurations.  (gs.mak)
4792
	- A bug in the handling of Encoding resources prevented compiled
4793
fonts from working.  (gs_res.ps)
4794
 
4795
Adds a little more support for CID-keyed fonts.  They still aren't anywhere
4796
near usable.  (gs_cidfn.ps, gs_type1.ps)
4797
 
4798
Adds a new Fontmap for Solaris 2.3.  (Fontmap.Solaris)
4799
 
4800
Adds support for Type 4 fonts (Type 1 fonts with their own BuildChar
4801
procedures), including the CCRun procedure in internaldict.  (gs_fonts.ps,
4802
gs_res.ps, gs_type1.ps)
4803
 
4804
</pre><h3><a name="V3.41_Interpreter"></a>Interpreter</h3><pre>
4805
 
4806
Fixes bugs:
4807
	- showpage and copypage didn't honor NumCopies in a page device.
4808
(gs_setpd.ps, zdevice2.c)
4809
	- currentpagedevice returned incorrect information if the current
4810
device wasn't a page device.  (gs_setpd.ps)
4811
	- currentpagedevice didn't guarantee the presence of InputAttributes
4812
and OutputAttributes.  (gs_setpd.ps)
4813
	- The l_new bit wasn't set properly when a dictionary changed from
4814
packed to unpacked keys, leading to unnecessary saves.  (idict.c)
4815
	- Streams requiring intermediate buffering could read ahead too far,
4816
causing input data to be skipped.  (zfilter.c)
4817
	- cshow didn't reset the font to the base font when calling the
4818
procedure.  (zchar2.c)
4819
	- The Install procedure in a page device didn't set the default CTM.
4820
(gs_setpd.ps, zmatrix.c)
4821
	- findlibfile didn't handle special files like %stdin correctly.
4822
(zfile.c)
4823
	- setpagedevice didn't implement media matching.  (gs_setpd.ps,
4824
zdevice2.c, zmedia2.c, zmatrix.c)
4825
	- Some floating point numbers didn't print out with enough digits to
4826
read back in with the identical value.  (iutil.c)
4827
	- Integers that overflowed 31 bits (but not 32 bits) were converted
4828
to negative integers rather than correct positive reals.  (iscannum.c)
4829
 
4830
Removes an experimental operator that called the image scaling/interpolation
4831
code.  (zimage2.c)
4832
 
4833
Adds a -sSUBSTFONT=&lt;fontname&gt; switch that substitutes the given font for all
4834
unknown fonts, bypassing the normal intelligent substitution algorithm.
4835
(gs_fonts.ps)
4836
 
4837
Adds the Revision system parameter.  (zmisc2.c)
4838
 
4839
Adds a .knownundef operator that does an undef and returns true iff the key
4840
was formerly present.  (zdict.c)
4841
 
4842
Makes the maximum length of names be 256 if EXTEND_NAMES is being used, 16K
4843
otherwise.  (inamedef.h, iname.c)
4844
 
4845
Adds internaldict.  (gs_init.ps, iinit.c)
4846
 
4847
Adds support for Type 4 fonts.  (bfont.h, zchar.c, zchar1.c, zfont1.c,
4848
zfont2.c)
4849
 
4850
Changes .encodingdict to EncodingDirectory, for compatibility with Adobe
4851
interpreters.  (gs_init.ps, gs_kanji.ps, gs_res.ps)
4852
 
4853
Adds superexec, an undocumented operator that is equivalent to exec but
4854
suppresses all invalidaccess checks.  NOT COMPLETED YET; currently superexec
4855
is equivalent to exec.  (zcontrol.c)
4856
 
4857
</pre><h3><a name="V3.41_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4858
 
4859
Fixes bugs:
4860
	- .stderr was used but is no longer defined.  (pdf_base.ps)
4861
 
4862
</pre><h3><a name="V3.41_Streams"></a>Streams</h3><pre>
4863
 
4864
Fixes bugs:
4865
	- Not all streams initialized their state pointer.  (stream.c,
4866
sfile.c, sfileno.c)
4867
 
4868
Adds a filter for the smoothed image scaling algorithm.  Eventually this
4869
filter will require very little intermediate storage; right now it still
4870
needs to buffer the entire intermediate image.  (siscale.h, siscale.c)
4871
 
4872
Increases the maximum allowable scan line width for the CCITTFaxEncode
4873
filter from 5183 pixels to 12863 pixels.  (scf.h)
4874
 
4875
</pre><h3><a name="V3.41_Library"></a>Library</h3><pre>
4876
 
4877
Fixes bugs:
4878
	- setpagedevice didn't update NumCopies correctly.  (gdevprn.c,
4879
gsdparam.c)
4880
	- The newly optimized code for monobit bitmaps could cause an
4881
out-of-bounds memory access and/or make unaligned references.  (gsimage1.c)
4882
	- setpagedevice with unknown keys could cause an /undefined error.
4883
(gsdparam.c)
4884
	- cshow didn't reset the font to the base font when calling the
4885
procedure.  (gschar.h, gschar.c)
4886
	- The Install procedure in a page device didn't set the default CTM.
4887
(gzstate.h, gschar.c, gscoord.c, gsdevice.c)
4888
	- Very non-linear EncodeABC procedures in a color rendering
4889
dictionary could produce very inaccurate results.  (gscie.h, gscie.c)
4890
	- The line_ptrs pointer in memory devices didn't get relocated if
4891
the bitmap was moved during garbage collection, leading to memory smashing.
4892
(gdevmem.c)
4893
	- setpagedevice didn't implement media matching.  (gsdparam.c,
4894
gscoord.c)
4895
	- 'word' memory devices weren't recognized as memory devices.
4896
(gdevmem.c)
4897
	- makeimagedevice allocated, and then didn't free, an unnecessary
4898
palette for monobit devices.  (gsdevmem.c)
4899
	- The hack for 1-bit-wide images didn't work consistently,
4900
particularly in landscape orientation.  (gsimage.c, gsimage0.c)
4901
 
4902
Adds an .IgnoreNumCopies page device parameter that causes #copies and
4903
NumCopies to be ignored.  (gxdevice.h, gsdevice.c, gsdparam.c)
4904
 
4905
Removes the .IsPageDevice device parameter.  (gsdparam.c)
4906
 
4907
Converts the image scaling/interpolation code to a filter.  (gximage.h,
4908
gsimage.c, gsimage0.c, gsimage3.c)
4909
 
4910
Adds support for Type 4 fonts.  (gxfont.h)
4911
 
4912
Adds a default implementation of parameter lists, designed to be usable
4913
easily from C code.  (gsparam.h, gsparam.c)
4914
 
4915
</pre>
4916
 
4917
<h2><a name="Version3.40"></a>Version 3.40 (limited) (6/28/95)</h2>
4918
 
4919
<p>
4920
This is another incremental limited release for delivery of a couple of
4921
important bug fixes (pixel 'holes' in rotated images, setpagedevice errors
4922
on some platforms) and an enhancement (architectural support for band lists
4923
in RAM).
4924
 
4925
<h3><a name="V3.40_Documentation"></a>Documentation</h3><pre>
4926
Fixes bugs:
4927
	- The FTP location of the EMX DLLs was incorrect.  (use.doc)
4928
 
4929
</pre><h3><a name="V3.40_Procedures"></a>Procedures</h3><pre>
4930
 
4931
Fixes bugs:
4932
	- A couple of build rules for IJG v6 were omitted.  (jpeg.mak)
4933
 
4934
</pre><h3><a name="V3.40_Utilities"></a>Utilities</h3><pre>
4935
 
4936
Fixes bugs:
4937
	- prfont.ps wouldn't print more than 128 unencoded characters.
4938
(prfont.ps)
4939
 
4940
</pre><h3><a name="V3.40_Platforms"></a>Platforms</h3><pre>
4941
 
4942
Fixes bugs:
4943
	- setpagedevice often caused /undefined errors on MS Windows and
4944
OS/2 platforms.  (gdevmswn.c, gdevpm.c)
4945
	- The VMS module list had gotten out of sync with the makefiles
4946
(again).  (modules.lis)
4947
 
4948
</pre><h3><a name="V3.40_Interpreter"></a>Interpreter</h3><pre>
4949
 
4950
Fixes bugs:
4951
	- A couple of casts betwen char * and byte * were omitted.
4952
(gsmain.c)
4953
	- gs_[main_]run_file_open wasn't exported properly.  (imain.h,
4954
main.h, gsmain.c)
4955
 
4956
</pre><h3><a name="V3.40_Streams"></a>Streams</h3><pre>
4957
 
4958
Changes the DCTEncode filter to return an error if it wasn't supplied enough
4959
data before being closed.  (sdcte.c)
4960
 
4961
</pre><h3><a name="V3.40_Library"></a>Library</h3><pre>
4962
 
4963
Fixes bugs:
4964
	- The coordinate computations for all filling operations were
4965
slightly inaccurate, leading to pixel 'holes' in rotated images.  (gxdda.h,
4966
gximage.h, gsimage*.c, gxdraw.c, gxfill.c)
4967
 
4968
Undoes an "optimization" (inlining the normal, fast case of a procedure)
4969
that actually hurt performance.  (gxclist.c)
4970
 
4971
Refactors the command list code so that it in the future it will be able to
4972
store command lists either in RAM or in the file system.  (gdevprn.h,
4973
gxcldev.h, gxclio.h, gxclist.h, gdevprn.c, gxclfile.c, gxclist.c,
4974
gxclread.c)
4975
 
4976
Changes the interface to the path filling code to take separate X and Y
4977
adjustment values.  (gxpaint.h, gspaint.c, gxfill.c)
4978
 
4979
Makes the command list allocate a small tile cache if the device doesn't
4980
need halftones.  (gxclist.c)
4981
 
4982
</pre>
4983
 
4984
<hr>
4985
 
4986
<h2><a name="Version3.39"></a>Version 3.39 (limited) (6/24/95)</h2>
4987
 
4988
<p>
4989
This is again an incremental release primarily for delivery of enhancements
4990
(suspendable string input in particular) to commercial customers, and with a
4991
few bug fixes.
4992
 
4993
<h3><a name="V3.39_Documentation"></a>Documentation</h3><pre>
4994
Notes that PDF files and repositioning PostScript files do not work if
4995
Ghostscript was compiled with VAX C.  (use.doc)
4996
 
4997
Notes the requirement for EOD lookahead in decoding filters.  (strimpl.h)
4998
 
4999
</pre><h3><a name="V3.39_Procedures"></a>Procedures</h3><pre>
5000
 
5001
Fixes bugs:
5002
	- There were a number of undefined or used-before-defined variables
5003
in the makefiles.  (devs.mak, dvx-head.mak, unixhead.mak, gs.mak)
5004
	- Some commands in the makefile exceeded the MS-DOS limit of 120
5005
characters.  (gs.mak)
5006
 
5007
Adds a -P and -P- switch to control whether the search path automatically
5008
includes `.' as its first element.  Moves the default value of this choice
5009
(SEARCH_HERE_FIRST) from gsmain.c to iminst.h.  (iminst.h, gs.c, gsmain.c,
5010
use.doc)
5011
 
5012
Makes some makefile changes in anticipation of the IJG v6 release.  (*.mak)
5013
 
5014
</pre><h3><a name="V3.39_Utilities"></a>Utilities</h3><pre>
5015
 
5016
Fixes bugs:
5017
	- font2c generated invalid C procedure names from font names that
5018
contained non-alphanumerics other then '-'.  (font2c.ps)
5019
	- font2c generated a single element of incorrect type for numeric
5020
arrays of zero length.  (font2c.ps)
5021
 
5022
</pre><h3><a name="V3.39_Platforms"></a>Platforms</h3><pre>
5023
 
5024
Fixes bugs:
5025
	- The VMS build scripts had gotten out of sync (again).  (vms*.mak,
5026
modules.lis)
5027
 
5028
</pre><h3><a name="V3.39_Fonts"></a>Fonts</h3><pre>
5029
 
5030
Makes the FONTPATH directory scanner accept fonts that begin with
5031
%!PS-AdobeFont or %!FontType1 with no following `-'.  (gs_fonts.ps)
5032
 
5033
</pre><h3><a name="V3.39_Interpreter"></a>Interpreter</h3><pre>
5034
 
5035
Fixes bugs:
5036
	- eq and ne on arrays or dictionaries required read access.
5037
(zrelbit.c)
5038
	- An include was missing.  (zcsindex.c)
5039
	- .forgetsave at the outermost level didn't reset the l_new flag in
5040
changed slots, leading to an anomalous (although perhaps not harmful) state.
5041
(isave.c)
5042
	- Dictionary growing or unpacking would both save and free the old
5043
keys array, leading to a dangling reference.  (idict.c)
5044
 
5045
Changes gs_interpret so that for .quit with a negative operand &lt;= -100,
5046
gs_interpret returns e_Fatal rather than the operand.  THIS IS A
5047
NON-BACKWARD-COMPATIBLE CHANGE, but as far as we know, it doesn't affect
5048
anyone.  (interp.c)
5049
 
5050
Adds an API to allow feeding string input to the interpreter in pieces.
5051
(errors.h, imain.h, main.h, gs.c, gsmain.c, interp.c, zcontrol.c, zfilter.c)
5052
 
5053
Adds new predicates .identeq and .identne that test "pointer equality", even
5054
for numbers and strings.  (iutil.h, iutil.c, zrelbit.c)
5055
 
5056
Changes a few uses of return_error to return in places that don't lead
5057
directly to a PostScript error.  (idict.c)
5058
 
5059
</pre><h3><a name="V3.39_Streams"></a>Streams</h3><pre>
5060
 
5061
Fixes bugs:
5062
	- The logic for skipping up to a 0xff byte when decoding JPEG data
5063
could skip too much.  (sdctd.c, sjpegd.c)
5064
	- If a buffer boundary fell in the middle of, or just before, an
5065
EOD, some decoding filters could stop reading too soon.  (sbcp.c, smtf.c,
5066
sstring.c)
5067
 
5068
Makes some minor changes in anticipation of the IJG v6 release.
5069
(gsjmorec.h)
5070
 
5071
</pre><h3><a name="V3.39_Library"></a>Library</h3><pre>
5072
 
5073
Fixes bugs:
5074
	- A declaration should have been removed.  (gsdll.c)
5075
	- The library initialization/termination API wasn't declared.
5076
(gslib.h, gsinit.c, gsmain.c)
5077
	- A variable and a preprocessor macro with the same name confused
5078
VAX C.  (gxclist.c)
5079
	- Image devices with depth 2-8 and only gray shades in the palette
5080
didn't set color_info correctly.  (gsdevice.c)
5081
 
5082
Speeds up unrotated black-and-white images further by making them render
5083
directly into a memory device when possible.  (gxdevmem.h, gsimage1.c)
5084
 
5085
</pre>
5086
 
5087
<h2><a name="Version3.38"></a>Version 3.38 (limited) (6/18/95)</h2>
5088
 
5089
<p>
5090
This release incorporates several customer-requested enhancements (cleaner
5091
separation of the graphics library from the interpreter, option for &gt;64K
5092
names, true garbage collection of names, better handling of halftones on
5093
band devices).  It is intended primarily for those customers, but is
5094
intended as a dry run for the next public release.
5095
 
5096
<h3><a name="V3.38_Documentation"></a>Documentation</h3><pre>
5097
Fixes bugs:
5098
	- gx_bitmap had not been updated to gx_tile_bitmap.
5099
(drivers.doc)
5100
 
5101
</pre><h3><a name="V3.38_Procedures"></a>Procedures</h3><pre>
5102
 
5103
Fixes bugs:
5104
	- The man page extension in the Unix makefiles was still $(manext),
5105
not $(man1ext).  (unix-end.mak)
5106
	- 'make clean' didn't remove gs_init.c.  (gs.mak)
5107
 
5108
Restructures the makefiles to better separate the language interpreters from
5109
the graphics core.  (gs.mak)
5110
 
5111
Adds a -dNOPROMPT switch to suppress the end-of-page prompts (but still wait
5112
for the user to type a newline).  This is different from -dNOPAUSE, which
5113
suppresses both the prompts and the wait.  (gs_init.ps)
5114
 
5115
</pre><h3><a name="V3.38_Utilities"></a>Utilities</h3><pre>
5116
 
5117
Replaces the mergeini.ps program with an equivalent (actually slightly
5118
better) version written in C.  (gs.mak, *.mak, psfiles.doc, use.doc,
5119
geninit.c)
5120
 
5121
</pre><h3><a name="V3.38_Drivers"></a>Drivers</h3><pre>
5122
 
5123
Fixes bugs:
5124
	- The color DeskJet drivers wouldn't compile with a K&amp;R compiler,
5125
because some of the procedure definitions weren't in the restricted syntax
5126
that ansi2knr requires.  (gdevcdj.c)
5127
	- The color DeskJet drivers wouldn't compile because of a bug in
5128
Sun's cc.  (gdevcdj.c)
5129
 
5130
Changes the BJ-10e(x) margins to be identical to those of the BJ-200.
5131
(gdevbj10.c)
5132
 
5133
Changes the LaserJet margins in response to a user's request.  (gdevdjet.c)
5134
 
5135
Changes the psmono driver to produce slightly larger files that execute
5136
faster on typical Level 1 printers.  (gdevpsim.c)
5137
 
5138
Changes the psmono driver so that it does not scale the image to fit the
5139
page size, but instead scales it to be the same physical size on the page.
5140
THIS IS A NON BACKWARD COMPATIBLE CHANGE.  However, for full-page images, it
5141
will not have any visible effect.  (gdevpsim.c)
5142
 
5143
</pre><h3><a name="V3.38_Platforms"></a>Platforms</h3><pre>
5144
 
5145
Fixes bugs:
5146
	- There were some problems associated with printing in 32-bit
5147
Windows environments.  (gp_mswin.c)
5148
	- The IBM RS/6000 needs both &lt;time.h&gt; and &lt;sys/time.h&gt;.  (time_.h)
5149
 
5150
Adds the PDF interpreter to the standard MS Windows configuration.
5151
(bcwin.mak)
5152
 
5153
</pre><h3><a name="V3.38_Fonts"></a>Fonts</h3><pre>
5154
 
5155
Fixes bugs:
5156
	- The entry for Courier-BoldItalic in cfonts.mak incorrectly named
5157
it as Courier-Italic.  (cfonts.mak)
5158
	- The files for Courier-Italic in cfonts.mak were inconsistently
5159
named ncrri instead of ncri.  (cfonts.mak)
5160
	- The rules in cfonts.mak covered only the fonts distributed with
5161
the free versions of Ghostscript, omitting some of the standard set of 35.
5162
(cfonts.mak)
5163
	- The maximum number of stem hints per character in Type 1 fonts
5164
wasn't large enough for complex Asian characters. (gxtype1.h)
5165
 
5166
Adds a -dNOFONTMAP switch to suppress loading the Fontmap file.
5167
(gs_init.ps, gs_fonts.ps)
5168
 
5169
</pre><h3><a name="V3.38_Interpreter"></a>Interpreter</h3><pre>
5170
 
5171
Fixes bugs:
5172
	- One of the GC marking routines for halftones had a typo,
5173
possibly leading to an invalid access.  (zht2.c)
5174
	- The GC could store beyond the end of the mark stack,
5175
possibly smashing some characters of a string or name.  (igc.c)
5176
	- If the allocator allocated a new ref object from a
5177
freelist, the bookkeeping for the current ref object could get
5178
confused.  (ialloc.c)
5179
	- The GC didn't remove names properly from the hash table.
5180
(iname.c)
5181
	- If a DOS editor added a ^Z to the end of an initialization file,
5182
an error occurred during initialization.  (gs_init.ps)
5183
	- If an initialization file had any lines longer than 128
5184
characters, .skipeof would get an error.  (gs_init.ps)
5185
	- makepattern could create structures in global VM pointing to
5186
structures in local VM.  (zpcolor.c)
5187
	- The default color rendering dictionary didn't specify large enough
5188
ranges for some intermediate values.  (gs_lev2.ps)
5189
	- Files being freed by a restore weren't unlinked properly, leading
5190
to dangling pointers.  (zfile.c)
5191
	- The interpreter used strlen without a prototype.  (interp.c)
5192
	- Indexed or Separation colors with a CIE base or alternate space
5193
didn't work.  (zcie.c)
5194
	- The Watcom C 10.0 compiler produced incorrect code for an
5195
overlapping structure assignment.  (zcsindex.c)
5196
 
5197
Removes limit of 64K names, if EXTEND_NAMES is defined at compile
5198
time.  (*.mak, idebug.h, iminst.h, iname.h, gs.c, gsmain.c, idebug.c,
5199
iname.c)
5200
 
5201
Makes the garbage collector really collect names.  (iname.h, inamedef.h,
5202
isstate.h, igc.c, iname.c, isave.c)
5203
 
5204
Restructures some files to better separate the language interpreters
5205
from their support code.  (gconfig.c, iconfig.c, iinit.c)
5206
 
5207
Restructures some files to better separate the language interpreters
5208
from the graphics core.  (iastate.h, iastruct.h, ialloc.c)
5209
 
5210
Allows the operands of cshow to be in either order on the stack.  Adobe
5211
interpreters apparently allow this, even though it's not documented.
5212
(zchar2.c)
5213
 
5214
Adds a hack in cvs to truncate non-standard operator names, rather than
5215
giving a rangecheck, to work around the "max err string" problem in some
5216
common error handlers.  (ztype.c)
5217
 
5218
Changes the print string for unregistered operators from operator_0x... to
5219
@0x....  (iutil.c)
5220
 
5221
Changes the garbage collector so it tries to allocate a large mark stack, to
5222
avoid going into its 'slow' mode if the mark stack overflows.  (igc.c)
5223
 
5224
</pre><h3><a name="V3.38_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5225
 
5226
Fixes bugs:
5227
	- Stroked text used the text matrix, rather than just the
5228
CTM, for scaling the line width, which could lead to inappropriately
5229
wide lines.  (gs_pdf.ps)
5230
	- Fonts based on other than a 1000-unit scale (i.e., with a
5231
FontMatrix other than [0.001 0 0 0.001 0 0]) didn't scale Widths to
5232
match the font scaling.  (pdf_font.ps)
5233
 
5234
Implements the PDF 1.1 color space extensions, except for Lab space.
5235
(gs_pdf.ps, pdf_draw.ps)
5236
 
5237
Implements the Rotate key for pages.  (pdf_main.ps)
5238
 
5239
</pre><h3><a name="V3.38_Streams"></a>Streams</h3><pre>
5240
 
5241
Fixes bugs:
5242
	- When the garbage collector closed a file stream, the stream
5243
incorrectly attempted to free the buffer.  (stream.c)
5244
 
5245
Separates out some stream implementations to better distinguish the
5246
graphics core from the language interpreters.  (smtf.h, sfilter1.c,
5247
smtf.c, srld.c, srle.c)
5248
 
5249
</pre><h3><a name="V3.38_Library"></a>Library</h3><pre>
5250
 
5251
Fixes bugs:
5252
	- Compressing characters being entered in the cache could cause an
5253
invalid memory access.  (gsbitops.c)
5254
	- The setbbox bounding box check was slightly inaccurate.
5255
(gsdps1.c)
5256
	- makepattern could create structures in global VM pointing to
5257
structures in local VM.  (gscolor2.h, gspcolor.c)
5258
	- Out-of-range values during CIE color conversion led to random
5259
results.  (gscie.c)
5260
	- On output devices with non-inverted Y axes (such as MS Windows),
5261
Interpolated images would smash memory.  (gsimage.c)
5262
	- 90 degree rotated zero-width images caused an invalid memory
5263
access.  (gsimage1.c)
5264
	- If #copies was zero, showpage could create bogus empty output
5265
files.  (gdevprn.c)
5266
	- PageCount didn't take #copies into account.  (gsdevice.c)
5267
	- Indexed or Separation colors with a CIE base or alternate space
5268
didn't work.  (gscie.h, gscie.c)
5269
 
5270
Implements triangular line caps and joins, in anticipation of adding
5271
a PCL5 interpreter.  (gsline.h, gxstroke.c)
5272
 
5273
Moves some procedures around for better separation of library from
5274
interpreter.  (gsinit.c, gslib.c, gsmain.c, gsmisc.c)
5275
 
5276
Moves the standard allocator from the interpreter to the library.
5277
(gsalloc.h, gxalloc.h, gxobj.h, gsalloc.c)
5278
 
5279
Starts to change the representation of paths slightly to make it possible to
5280
identify arcs.  This change is backward-compatible for all code except
5281
callers of gx_path_add_arc.  (gxpath.h, gspath1.c, gxpath.c, gxstroke.c)
5282
 
5283
Adds some framework for keeping track of RasterOp and "transparency" in the
5284
graphics state, although these don't actually have any effect yet.
5285
(gsrop.h, gsropt.h, gsstate.h, gxcldev.h, gzstate.h, gsrop.c, gsstate.c,
5286
gxclist.c, gxclread.c)
5287
 
5288
Adds a compile-time option for using the Adobe RGB&lt;-&gt;CMYK conversion rules.
5289
(gxdcconv.c)
5290
 
5291
Adds a driver procedure for identifying band devices.  This change is
5292
backward-compatible for all existing devices.  (gdevmem.h, gxdevice.h,
5293
gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
5294
 
5295
Speeds up gray-scale images on devices requiring banding, and enables
5296
further optimizations, by reintroducing the distinction between banded and
5297
non-banded devices.  (gxdevice.h, gdevprn.c, gsimage1.c)
5298
 
5299
Reduces the size of the band list for halftoned images by encoding tile
5300
indices more compactly.  (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
5301
 
5302
Extends the band list so it can cache more than 256 halftone tiles, and to
5303
make better decisions about tile caching.  (gxcldev.h, gxclist.h, gxclist.c,
5304
gxclread.c)
5305
 
5306
</pre>
5307
 
5308
<h2><a name="Version3.37"></a>Version 3.37 (limited) (5/11/95)</h2>
5309
 
5310
<p>
5311
Another bug fix release distributed only to customers.
5312
 
5313
<h3><a name="V3.37_Documentation"></a>Documentation</h3><pre>
5314
Fixes bugs:
5315
	- Some documentation about parameter lists was incorrect.
5316
(gsparam.h)
5317
	- The documentation did not note that one cannot "pipe" PDF files
5318
into the interpreter.  (use.doc)
5319
 
5320
Adds documentation for the BJC-600 to devices.doc.  (devices.doc)
5321
 
5322
</pre><h3><a name="V3.37_Procedures"></a>Procedures</h3><pre>
5323
 
5324
Changes the debugging switch for OS calls from -Z0 to -Ze, and adds -Z0 for
5325
high-level GC tracing.  (use.doc, gp_unifs.c, ialloc.c, igc.c)
5326
 
5327
</pre><h3><a name="V3.37_Utilities"></a>Utilities</h3><pre>
5328
 
5329
Fixes bugs:
5330
	- The ps2ascii shell script included an erroneous @d.  (ps2ascii)
5331
 
5332
Enhances ps2ascii to output color and rectangle fill/stroke information if
5333
COMPLEX is defined.  (ps2ascii.ps)
5334
 
5335
</pre><h3><a name="V3.37_Drivers"></a>Drivers</h3><pre>
5336
 
5337
Fixes bugs:
5338
	- the BJC-600 driver didn't handle BitsPerPixel correctly.
5339
(gdevcdj.c)
5340
 
5341
</pre><h3><a name="V3.37_Fonts"></a>Fonts</h3><pre>
5342
 
5343
Fixes bugs:
5344
	- Some buggy Type 1 fonts confused the Type 1 font reader.
5345
(gs_fonts.ps, gs_type1.ps, pdf_font.ps)
5346
 
5347
</pre><h3><a name="V3.37_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
5348
 
5349
Fixes bugs:
5350
	- .registerencoding didn't accept mixedarrays, which could cause an
5351
error if an encoding was loaded long after initialization.  (zfont2.c)
5352
	- If a program did a lot of saves and restores, the garbage
5353
collector could get invoked much too often.  (iastate.h, ialloc.c, igc.c,
5354
isave.c)
5355
 
5356
Changes the name of the rectappend operator to .rectappend, since it isn't a
5357
standard PostScript operator.  (zdps1.c)
5358
 
5359
</pre><h3><a name="V3.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5360
 
5361
Fixes bugs:
5362
	- PDF files didn't interact properly with ps2ascii.  (gs_pdf.ps)
5363
	- setdash wouldn't accept a packed array.  (zgstate.c)
5364
	- PDF files with incorrect generation numbers in object references
5365
produced an error rather than a warning.  (pdf_base.ps)
5366
 
5367
</pre>
5368
 
5369
<h2><a name="Version3.36"></a>Version 3.36 (limited) (5/4/95)</h2>
5370
 
5371
<p>
5372
This is a limited-distribution release for distributing bug fixes to a few
5373
customers.
5374
 
5375
<h3><a name="V3.36_Documentation"></a>Documentation</h3><pre>
5376
Adds some environment variables to the man page.  (gs.1)
5377
 
5378
</pre><h3><a name="V3.36_Procedures"></a>Procedures</h3><pre>
5379
 
5380
Adds the psmono device to all 32-bit configurations.  (*.mak)
5381
 
5382
Moves the psmono and 'bit' devices to DEVICE_DEVS12 to avoid exceeding the
5383
120-character maximum length of the DOS command line.  (*.mak)
5384
 
5385
</pre><h3><a name="V3.36_Drivers"></a>Drivers</h3><pre>
5386
 
5387
Changes the pgm[raw] and ppm[raw] drivers so they do *not* automatically
5388
switch to pbm or pgm/ppm respectively if this is possible for the particular
5389
page being rendered; adds pgnm[raw] and pnm[raw] drivers that *do* do this.
5390
THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  However, existing programs will
5391
still work; they just won't produce the smallest and simplest possible
5392
output.  (devs.mak, gdevpbm.c)
5393
 
5394
</pre><h3><a name="V3.36_Interpreter"></a>Interpreter</h3><pre>
5395
 
5396
Fixes bugs:
5397
	- A multi-level restore didn't free gstates allocated by
5398
intermediate saves, causing some global VM to be lost until a garbage
5399
collection.  (isave.h, isave.c, zvmem.c)
5400
 
5401
Speeds up restore by skipping the scan of the character cache if no new
5402
names have been allocated since the save.  (zfont.c)
5403
 
5404
Extends the client API to allow for popping return values off the operand
5405
stack.  (imain.h, gs.c, gsmain.c)
5406
 
5407
</pre><h3><a name="V3.36_Library"></a>Library</h3><pre>
5408
 
5409
Modifies the character oversampling algorithms to help prevent dropouts.
5410
(gsbitops.c, gschar.c)
5411
 
5412
</pre>
5413
 
5414
<h2><a name="Version3.35"></a>Version 3.35 (internal) (5/2/95)</h2>
5415
 
5416
<p>
5417
This is another internal "snapshot" version.
5418
 
5419
<h3><a name="V3.35_Documentation"></a>Documentation</h3><pre>
5420
Fixes bugs:
5421
	- Some of the file names in the `man' page had gotten out of date.
5422
(gs.1)
5423
	- Two references to .PageCount hadn't been changed to PageCount.
5424
(language.doc, devarch.doc)
5425
 
5426
</pre><h3><a name="V3.35_Procedures"></a>Procedures</h3><pre>
5427
 
5428
Puts writeppmfile back in the standard Unix and DV/X configurations, since
5429
gsftopk uses it.  Also puts the PDF reader in all 32-bit configurations.
5430
(*.mak)
5431
 
5432
Moves the BMP devices to DEVICE_DEVS11 to avoid exceeding the 120-character
5433
maximum length of the DOS command line.  (bcwin.mak, bcwin32.mak, os2.mak)
5434
 
5435
</pre><h3><a name="V3.35_Utilities"></a>Utilities</h3><pre>
5436
 
5437
Fixes bugs:
5438
	- unix-lpr.sh didn't handle 32-bit devices.  (unix-lpr.sh)
5439
	- unix-lpr.sh still used the name .PageCount rather than PageCount.
5440
(unix-lpr.sh)
5441
	- font2c gave an error when trying to write general procedures in
5442
font dictionaries.  (font2c.ps)
5443
 
5444
Adds a pdf2dsc.ps utility for writing out fake DSC-compliant PostScript code
5445
to invoke the PDF reader, for the benefit of viewer programs that aren't
5446
PDF-aware.  (unix-end.mak, pdf2dsc.ps)
5447
 
5448
</pre><h3><a name="V3.35_Drivers"></a>Drivers</h3><pre>
5449
 
5450
Fixes bugs:
5451
	- The TIFF drivers put out incorrect PageNumber values.
5452
(gdevtfax.c)
5453
	- Printer (and file output) devices got closed and reopened
5454
unnecessarily when changing parameters.  (gdevprn.c)
5455
	- Printer (and file output) devices didn't check for invalid formats
5456
following a % in OutputFile.  (devs.mak, gdevprn.c)
5457
	- 1-bit memory devices were not considered page devices, unlike all
5458
other memory devices.  (gsdevice.c)
5459
	- The black-and-white H-P printers didn't close the printer
5460
properly, causing printing not to happen under MS Windows.  (gdevprn.c)
5461
	- Some compilers didn't like initializing a const char * to NULL.
5462
(gdevlbp8.c)
5463
 
5464
Changes the X Windows driver so that if Ghostview specifies a bounding box,
5465
this also sets ImagingBBox.  (gdevxini.c)
5466
 
5467
At the request of a customer, adds 1-, 4-, 8-, 24-, and 32-bit-deep memory
5468
devices that store bits in 32-bit units rather than byte units.  (gdevmem.h,
5469
gxdevmem.h, gdevmem.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c,
5470
gdevm24.c, gdevm32.c)
5471
 
5472
Adds a new MS Windows printer driver, mswinpr2, that uses a DIB rather than
5473
a DDB.  (gdevwpr2.c)
5474
 
5475
</pre><h3><a name="V3.35_Platforms"></a>Platforms</h3><pre>
5476
 
5477
Fixes bugs:
5478
	- A routine wouldn't compile because of a bug in the SGI C compiler.
5479
(zcsindex.c)
5480
	- Some declarations were inconsistent when compiling for segmented
5481
environments.  (gscie.c)
5482
	- A routine wouldn't compile because of a bug in the VAX C compiler.
5483
(gscie.c)
5484
 
5485
Turns on compiler optimization for OS/2; adds PDF support and more devices
5486
for Win32 and OS/2.  (bcwin.mak, bcwin32.mak, os2.mak)
5487
 
5488
</pre><h3><a name="V3.35_Fonts"></a>Fonts</h3><pre>
5489
 
5490
Fixes bugs:
5491
	- Font loading used 'setglobal' without binding it, which caused
5492
some EPS files to signal errors.  (gs_fonts.ps)
5493
	- A zero-length string with offset = 0 in a binary object sequence
5494
caused an error.  (iscanbin.c)
5495
 
5496
Adds a LOCALFONTS switch that causes Ghostscript to load Type 1 fonts into
5497
the current VM, rather than global VM.  According to Adobe, this is what
5498
Adobe printers (but not other interpreters, such as DPS and CPSI) do.
5499
(gs_init.ps, gs_fonts.ps)
5500
 
5501
</pre><h3><a name="V3.35_Interpreter"></a>Interpreter</h3><pre>
5502
 
5503
Fixes bugs:
5504
	- The 'note' page size command caused pages to be clipped
5505
improperly.  (gs_statd.ps)
5506
 
5507
Adds "word" image devices.  (gs_init.ps, zdevice.c)
5508
 
5509
Starts converting the interpreter to use an explicit instance pointer.  This
5510
is very fragmentary so far and not really supported.  (main.h, gs.c,
5511
gsmain.c, iccinit.c)
5512
 
5513
</pre><h3><a name="V3.35_Library"></a>Library</h3><pre>
5514
 
5515
Adds "word" image devices.  (gsdevice.h, gsdevice.c)
5516
 
5517
Removes the requirement that ImagingBBox[0] and [1] be non-negative.  (The
5518
Adobe specification requires this, but Ghostscript supports more general
5519
initial CTMs than the Adobe spec.)  (gsdparam.c)
5520
 
5521
</pre>
5522
 
5523
<h2><a name="Version3.34"></a>Version 3.34 (internal) (4/18/95)</h2>
5524
 
5525
<p>
5526
This is a "snapshot" version made for internal purposes.  It was never
5527
released to anyone.
5528
 
5529
<h3><a name="V3.34_Documentation"></a>Documentation</h3><pre>
5530
Updates commprod.doc to be fully consistent with the AGFPL.  (commprod.doc)
5531
 
5532
</pre><h3><a name="V3.34_Procedures"></a>Procedures</h3><pre>
5533
 
5534
Fixes bugs:
5535
	- tar_x was out of date.  (tar_x)
5536
	- tar_gs assumed that if any PC executables were present, gs.exe
5537
would exist.  (tar_gs)
5538
	- jpeg.mak said the current IJG version was 5b, but the makefiles
5539
actually referred to version 5a.  (jpeg.mak)
5540
	- The build rule for the LIPS III driver was incorrect.  (devs.mak)
5541
	- Some definitions in the makefiles occurred out of order.
5542
(ansihead.mak, cc-head.mak, gcc-head.mak, unixhead.mak, unixtail.mak)
5543
	- The build rule for dvx-gcc.mak was incorrect.  (unix-end.mak)
5544
 
5545
</pre><h3><a name="V3.34_Interpreter"></a>Interpreter</h3><pre>
5546
 
5547
Restructures the CIE caches to move much more of the computation from color
5548
mapping time to cache loading time.  (zcie.c)
5549
 
5550
</pre><h3><a name="V3.34_Library"></a>Library</h3><pre>
5551
 
5552
Fixes bugs:
5553
	- Color conversion of 12-bit images was very slightly inaccurate.
5554
(gxfrac.h)
5555
 
5556
Changes the transfer function, black generation, and undercolor removal
5557
caches so that they sample at 1024 points and don't interpolate, rather than
5558
sampling at 256 points and interpolating.  This significantly improves the
5559
speed of colored image rendering.  ****** LIMITED TO 256 POINTS BECAUSE OF
5560
O-STACK SIZE LIMIT. ****** (gxfmap.h, gxcmap.c)
5561
 
5562
Restructures the CIE caches to move much more of the computation from color
5563
mapping time to cache loading time.  (gscie.h, gscie.c)
5564
 
5565
</pre>
5566
 
5567
<h2><a name="Version3.33"></a>Version 3.33 (4/13/95)</h2>
5568
 
5569
<p>
5570
A few more last-minute bug fixes.  This is, finally, the first public
5571
release since 3.12.
5572
 
5573
<h3><a name="V3.33_Documentation"></a>Documentation</h3><pre>
5574
 
5575
Fixes bugs:
5576
	- There was a reference to "VAX with OSF/1", which doesn't exist,
5577
and an incorrect reference to VAX with Ultrix.  (make.doc)
5578
	- The Unix makefiles incorrectly stated that gsdatadir was only
5579
relevant to `make install'.  (ansihead.mak, cc-head.mak, dgc-head.mak,
5580
gcc-head.mak)
5581
	- Notes that DV/X users should use the zip version of the JPEG
5582
library.  (jpeg.mak)
5583
 
5584
</pre><h3><a name="V3.33_Procedures"></a>Procedures</h3><pre>
5585
 
5586
Fixes bugs:
5587
	- A command line had gotten too long for the MS-DOS shell.
5588
(gs.mak)
5589
	- The VMS DEC C script didn't explicitly select DEC C.
5590
(vms-decc.mak)
5591
	- The VMS MODULES.LIS omitted SPDIFF and ZFPDIFF.  (modules.lis)
5592
	- The VMS script had an incorrect entry.  (vms.mak)
5593
	- The `if' fix in 3.31 broke some Unix systems with different
5594
implementations of sh.  (unix-end.mak)
5595
	- The makefile definition of gscspace_h was out of order.  (gs.mak)
5596
	- An extra ; got written in gconfig_.h on DV/X platforms.
5597
(dvx-tail.mak)
5598
	- '.' was incorrectly prepended to the library search list on DV/X
5599
platforms.  (dgc-head.mak)
5600
	- The build rules for unix*.mak didn't work on DV/X.  (unix-end.mak)
5601
 
5602
Adds a description of the -c quit switch to the help message.  (gs.c)
5603
 
5604
For the DV/X platform, changes /usr/include to /djgpp/include as the place
5605
to look for header files.  I'm not sure this is always correct.
5606
(dvx-tail.mak)
5607
 
5608
</pre><h3><a name="V3.33_Utilities"></a>Utilities</h3><pre>
5609
 
5610
Fixes bugs:
5611
	- ps2ascii would cause an error if given a font that didn't have an
5612
'X' character.  (ps2ascii.ps)
5613
	- ps2ascii didn't intercept the Level 2 string display operators.
5614
(ps2ascii.ps)
5615
 
5616
</pre><h3><a name="V3.33_Drivers"></a>Drivers</h3><pre>
5617
 
5618
Fixes bugs:
5619
	- The Stylus Color driver had an incorrect type name.  (gdevstc.c)
5620
 
5621
</pre><h3><a name="V3.33_Platforms"></a>Platforms</h3><pre>
5622
 
5623
Fixes bugs:
5624
	- -dBitsPerPixel= didn't work properly for MS Windows or OS/2 PM.
5625
(gdevmswn.c, gdevpm.c)
5626
	- The Win32 platform didn't compile properly.  (memory_.h)
5627
 
5628
</pre><h3><a name="V3.33_Fonts"></a>Fonts</h3><pre>
5629
 
5630
Improves the font substitution algorithm to take the face name into account
5631
in more cases.  (gs_fonts.ps)
5632
 
5633
</pre><h3><a name="V3.33_Library"></a>Library</h3><pre>
5634
 
5635
Fixes bugs:
5636
	- Unrotated black-and-white bitmaps with an inverted device X axis
5637
were displaced in X.  (gsimage1.c)
5638
 
5639
</pre>
5640
 
5641
<h2><a name="Version3.32"></a>Version 3.32 (4/7/95)</h2>
5642
 
5643
<p>
5644
More bug fixes.  This is still not a public release.
5645
 
5646
<h3><a name="V3.32_Documentation"></a>Documentation</h3><pre>
5647
Further clarifies the "two-phase commit" algorithm for device put_params
5648
procedures.  (drivers.doc, gsparam.h)
5649
 
5650
Adds a note about a compiler bug under Ultrix 4.4.  (make.doc)
5651
 
5652
</pre><h3><a name="V3.32_Procedures"></a>Procedures</h3><pre>
5653
 
5654
Fixes bugs:
5655
	- Some installation scripts could fail because some implementations
5656
of sh take the status of an `if' condition as the status of the `if'
5657
command.  (unix-end.mak)
5658
 
5659
Adds "maintainer-clean" as a synonym for "real-clean".  (gs.mak)
5660
 
5661
Adds a -dORIENT1 switch that defines orientation = 1 as portrait for
5662
setpage[params].  (use.doc, gs_init.ps, gs_lev2.ps, gs_statd.ps)
5663
 
5664
</pre><h3><a name="V3.32_Utilities"></a>Utilities</h3><pre>
5665
 
5666
Fixes bugs:
5667
	- ps2ascii didn't redirect %stdout completely.  (ps2ascii.ps)
5668
	- ps2ascii didn't preserve the local/global VM mode.  (ps2ascii.ps)
5669
	- ps2ascii didn't handle fonts with an all-zero or missing bounding
5670
box correctly.  (ps2ascii.ps)
5671
	- viewpbm didn't scale the image properly.  (viewpbm.ps)
5672
 
5673
</pre><h3><a name="V3.32_Drivers"></a>Drivers</h3><pre>
5674
 
5675
Fixes bugs:
5676
	- The CGM driver wrote out an incorrect color precision value.
5677
(gdevcgm.c)
5678
	- The SGI bitmap driver was named "sgi" rather than "sgirgb".
5679
(gdevsgi.c)
5680
	- The PCX driver didn't round up an odd line length for gray-scale
5681
output.  (gdevpcx.c)
5682
	- The PCX driver produced incorrect output for gray-scale or 4- or
5683
8-bit color.  (gdevpcx.c)
5684
 
5685
</pre><h3><a name="V3.32_Platforms"></a>Platforms</h3><pre>
5686
 
5687
Fixes bugs:
5688
	- The VMS MODULES.LIS file had gotten out of sync with the Unix
5689
makefiles (again).  (modules.lis)
5690
 
5691
</pre><h3><a name="V3.32_Interpreter"></a>Interpreter</h3><pre>
5692
 
5693
Fixes bugs:
5694
	- Some compilers won't accept '\l', even in the false arm of a
5695
preprocessor conditional.  (scanchar.h)
5696
	- A procedure was declared with an incorrect argument type.
5697
(zcsindex.c)
5698
	- The scaled font cache didn't copy XUIDs properly.  (bfont.h,
5699
zfont.c, zfont2.c)
5700
	- status could return true even if the file was closed.  (zfile.c)
5701
 
5702
</pre><h3><a name="V3.32_Streams"></a>Streams</h3><pre>
5703
 
5704
Fixes bugs:
5705
	- The LZW filters were factored improperly.  (modules.lis, gs.mak,
5706
vms.mak, slzwx.h, slzwc.c, slzwd.c)
5707
 
5708
Changes the DCTDecode filter for compatibility with Adobe implementations:
5709
	- Ignore bytes preceding the 0xff that marks the beginning of the
5710
JPEG data.  (sdctd.c)
5711
	- Set MAX_BLOCKS_IN_MCU to 64.  (jpeg.mak, gsjpglib.h)
5712
 
5713
</pre><h3><a name="V3.32_Library"></a>Library</h3><pre>
5714
 
5715
Fixes bugs:
5716
	- The "two-phase commit" for device parameters wasn't fully
5717
implemented.  (gsiodev.c)
5718
	- Asking for a device color map before the device was opened could
5719
cause a crash.  (gsdparam.c)
5720
	- The scaled font cache didn't copy XUIDs properly.  (gxfont.h,
5721
gsfont.c)
5722
	- 90 or 270 degree rotated black-and-white bitmaps (including
5723
bitmapped fonts such as downloaded TrueType fonts) with an inverted device Y
5724
axis were displaced in Y.  (gsimage1.c)
5725
	- On high-resolution devices, parts of regions filled with halftones
5726
could fail to be painted.  (gxclist.c)
5727
 
5728
</pre>
5729
 
5730
<h2><a name="Version3.31"></a>Version 3.31 (4/2/95)</h2>
5731
 
5732
<p>
5733
A few final bug fixes for the release.  Includes significant speed
5734
improvements for CIE color, and a first draft of a low-level CGM driver.
5735
 
5736
<h3><a name="V3.31_Documentation"></a>Documentation</h3><pre>
5737
Notes that the BJC600 driver also works for the BJC4000.  (devs.mak)
5738
 
5739
</pre><h3><a name="V3.31_Procedures"></a>Procedures</h3><pre>
5740
 
5741
At the suggestion of a user, changes the default protections for installed
5742
files on Unix and DV/X systems from 775/664 to 755/644.  (*head.mak)
5743
 
5744
At the suggestion of a user, adds a -dNOCIE switch to substitute DeviceGray
5745
and DeviceRGB color spaces for CIEBasedA and CIEBasedABC spaces
5746
respectively.  (gs_init.ps, gs_lev2.ps)
5747
 
5748
</pre><h3><a name="V3.31_Utilities"></a>Utilities</h3><pre>
5749
 
5750
Changes gslp and its relatives to use ISOLatin1Encoding for output, and to
5751
send almost all printout to stderr rather than stdout (for use as a filter
5752
under Unix).  (gslp.ps)
5753
 
5754
</pre><h3><a name="V3.31_Drivers"></a>Drivers</h3><pre>
5755
 
5756
Fixes bugs:
5757
	- The fax/TIFF driver no longer exported gdev_fax_print_page, which
5758
the DigiFax driver needs.  (gdevtfax.c)
5759
	- The color DeskJet drivers gave an error for BitsPerPixel=3.
5760
(gdevcdj.c)
5761
	- The "Windows printer" driver was setting its margins in points
5762
rather than inches.  (gdevwprn.c)
5763
	- The BJ10 and BJ200 drivers calculated vertical skip distances
5764
wrong.  (gdevbj10.c)
5765
	- The BJ10 and BJ200 drivers output two garbage bytes following the
5766
initialization string.  (gdevbj10.c)
5767
 
5768
Adds a preliminary driver that produces low-level CGM output.  (gdevcgml.h,
5769
gdevcgmx.h, gdevcgm.c, gdevcgml.c)
5770
 
5771
</pre><h3><a name="V3.31_Platforms"></a>Platforms</h3><pre>
5772
 
5773
Fixes bugs:
5774
	- The VMS files had gotten out of sync with the other makefiles
5775
(again).  (modules.lis, vms.mak)
5776
	- The MS Windows and OS/2-PM drivers hadn't been updated to handle
5777
BitsPerPixel as a standard parameter.  (gdevmswn.c, gdevpm.c)
5778
 
5779
Removes the TIFF drivers from the Windows platform, and restores the BMP
5780
drivers.  (bcwin.mak)
5781
 
5782
</pre><h3><a name="V3.31_Interpreter"></a>Interpreter</h3><pre>
5783
 
5784
Fixes bugs:
5785
	- The CIE color mapping cache could produce anomalous results
5786
for the default (all zero values) color if some of the mapping
5787
functions were non-linear.  (zcie.c)
5788
	- MultiMaster font substitution got confused if substituted
5789
fonts had their FontName changed.  (gs_fonts.ps)
5790
	- A procedure was declared as private inconsistently.  (zdevcal.c)
5791
	- Some pointer relocation procedures didn't work correctly on
5792
systems with sizeof(T *) &gt; sizeof(int).  (istack.c)
5793
	- The freelist vector wasn't large enough to handle graphics state
5794
objects on 64-bit systems, leading to severe memory sandbars.  (iastate.h)
5795
	- The debugging messages from the allocator had gotten inconsistent
5796
and hard to use.  (ialloc.c)
5797
	- Mixing save/restore with allocation could cause the GC never to
5798
get run.  (isave.c)
5799
 
5800
Speeds up the mapping of CIE colors.  (zcie.c)
5801
 
5802
Adds a .namestring operator for getting the string of a name without having
5803
to copy it.  (zstring.c)
5804
 
5805
</pre><h3><a name="V3.31_Streams"></a>Streams</h3><pre>
5806
 
5807
Fixes bugs:
5808
	- The IJG code needed a couple more flags set for IJG v6.
5809
(gsjmorec.h)
5810
	- Some pointer relocation procedures didn't work correctly on
5811
systems with sizeof(T *) &gt; sizeof(int).  (stream.c)
5812
 
5813
</pre><h3><a name="V3.31_Library"></a>Library</h3><pre>
5814
 
5815
Fixes bugs:
5816
	- The end-test for the fast case of monobit images was wrong,
5817
leading to out-of-range memory accesses.  (gsimage1.c)
5818
	- Monobit images rotated by 270 degrees displayed incorrectly.
5819
(gsimage1.c)
5820
	- If a Type 1 font used hint replacement, some parts of the outline
5821
before the hint replacement ignored the old hints.  (gstype1.c)
5822
	- Some compilers didn't accept a variable name that was the same as
5823
a macro with parameters.  (gxht.c)
5824
	- A procedure was declared as private inconsistently.  (gdevm1.c)
5825
	- Some pointer relocation procedures didn't work correctly on
5826
systems with sizeof(T *) &gt; sizeof(int).  (gdevmem.c, gsstate.c)
5827
	- The test on FORCE_HINTS_TO_BIG_PIXELS was backwards.  This bug was
5828
supposed to have been fixed in 3.30, but somehow the fix got lost.
5829
(gstype1.c)
5830
	- 90 degree rotated monobit images could drop some scan lines.
5831
(gsimage*.c)
5832
 
5833
Speeds up the mapping of CIE colors.  (gscie.h, gxcmap.h, gscie.c, gxcmap.c)
5834
 
5835
Speeds up color images (non-interpolated, 1-8 bits per component) by adding
5836
a cache for mapped color values.  (gximage.h, gsimage.c, gsimage1.c,
5837
gsimage2.c)
5838
 
5839
Shrinks the band list file slightly by using only as many bytes as necessary
5840
for writing out colors, rather than always using 4 bytes.  (gxclist.c,
5841
gxclread.c)
5842
 
5843
</pre>
5844
 
5845
<h2><a name="Version3.30"></a>Version 3.30 (beta) (3/21/95)</h2>
5846
 
5847
<p>
5848
More bug fixes.  The garbage collector and PDF interpreter finally appear to
5849
work reliably.
5850
 
5851
<h3><a name="V3.30_Documentation"></a>Documentation</h3><pre>
5852
Fixes bugs:
5853
	- language.doc had gotten out of date.  (language.doc)
5854
 
5855
</pre><h3><a name="V3.30_Utilities"></a>Utilities</h3><pre>
5856
 
5857
Fixes bugs:
5858
	- Changes in the handling of %stdout had broken ps2ascii.
5859
(gs_dps1.ps, ps2ascii.ps)
5860
 
5861
Improves ps2ascii to skip empty strings and not output redundant font
5862
changes.  (ps2ascii.ps)
5863
 
5864
</pre><h3><a name="V3.30_Drivers"></a>Drivers</h3><pre>
5865
 
5866
Fixes bugs:
5867
	- The fax and TIFF drivers didn't free all their working storage.
5868
(This bug was fixed in 3.27, and the fix somehow got lost.)  (gdevtfax.c)
5869
 
5870
Adds new drivers:
5871
	- sgirgb, to produce SGI RGB raster files.  (gdevsgi.c)
5872
	- tiffcrle, to produce output in TIFF "CCITT 1-dimensional Huffman
5873
RLE" format (Group 3 fax with no EOLs). (gdevtfax.c)
5874
	- tifflzw, to produce output in TIFF LZW format (using the existing
5875
CCITTFaxEncode filter code). (gdevtfax.c)
5876
	- tiffpack, to produce output in TIFF PackBits format. (gdevtfax.c)
5877
 
5878
</pre><h3><a name="V3.30_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
5879
 
5880
Fixes bugs:
5881
	- If the current screen was set with a halftone, setcolorscreen
5882
wouldn't accept what currentcolorscreen returned.  (gs_dps1.ps)
5883
	- debug_print_full_ref didn't print t_oparray objects correctly.
5884
(idebug.c)
5885
	- The internal data for a font could be allocated in a different VM
5886
space from the font dictionary, causing dangling pointers.  (zfont2.c)
5887
	- definefont became confused if a program failed to delete the FID
5888
from a re-encoded font.  (This is questionable PostScript, but dvips does
5889
it.)  (zfont2.c)
5890
	- If a BuildChar procedure did a save before the setcachedevice and
5891
a restore afterwards, the memory manager would attempt to free the cache
5892
device after it had already been freed by the restore, leading to damaged
5893
freelists.  (gschar.c)
5894
	- setresolution (in statusdict) was ignored.  (gs_lev2.ps,
5895
gs_statd.ps)
5896
	- If a string containing a string containing a \ was passed to the
5897
token operator, the \ was not recognized properly in a Level 2 environment.
5898
(iscan.c)
5899
	- A couple of default dictionary sizes had become too small.
5900
(iinit.c)
5901
 
5902
Makes DOS EOF (control-Z, 0x1a) a self-delimiting token, like left bracket.
5903
THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
5904
effects.  (gs_init.ps, iscan.c, iscantab.c)
5905
 
5906
Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
5907
-Z. switch to force small-memory table sizes regardless of actual memory
5908
size.  (dstack.h, idict.c, zpcolor.c, zvmem2.c)
5909
 
5910
</pre><h3><a name="V3.30_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5911
 
5912
Fixes bugs:
5913
	- A page with no Contents caused an error.  (pdf_main.ps)
5914
	- Executing a Form resource caused an error.  (pdf_draw.ps)
5915
	- Outlines with open entries caused an error.  (pdf_main.ps)
5916
	- Embedded Type 3 fonts caused an error.  (pdf_draw.ps, pdf_font.ps)
5917
	- The Widths array of fonts was ignored.  (pdf_font.ps)
5918
 
5919
</pre><h3><a name="V3.30_Library"></a>Library</h3><pre>
5920
 
5921
Fixes bugs:
5922
	- Freeing an entry in the pattern cache didn't clear the pointers to
5923
the raster data, producing a dangling reference that confused the garbage
5924
collector.  (gxpcmap.c)
5925
	- The test on FORCE_HINTS_TO_BIG_PIXELS was backwards.  (gstype1.c)
5926
	- The pattern cache bookkeeping was incorrect.  (gxpcmap.c)
5927
	- Depending on the order in which pointers were relocated, the
5928
garbage collector could incorrectly relocate pointers from the character
5929
cache.  (gxfcache.h, gsfont.c, gxccache.c, gxccman.c)
5930
 
5931
Changes the fast case of black-and-white images so it aligns scaled images
5932
with the device coordinate system, to improve performance.  (gsimage1.c)
5933
 
5934
Extends the coordinate transformation routines to handle absurdly large
5935
translation values in the CTM as long as the final device device coordinates
5936
are within fixed-point range.  (gxmatrix.h, gxpath.h, gschar.c, gscoord.c,
5937
gsmatrix.c, gxhint2.c, gxpath2.c)
5938
 
5939
Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
5940
-Z. switch to force small-memory table sizes regardless of actual memory
5941
size.  (gdevprn.h, gxpcolor.h, gzht.h, std.h, gsfont.c, gsht1.c, gspaint.c,
5942
gsstate.c, gxcht.c, gxht.c, gxpcmap.c)
5943
 
5944
</pre>
5945
 
5946
<hr>
5947
 
5948
<h2><a name="Version3.29"></a>Version 3.29 (internal) (3/8/95)</h2>
5949
 
5950
<p>
5951
Another bug-fix release.  This release processes all but 7 of the 500+ files
5952
on the Adobe Acrobat Sampler CD-ROM without giving an error.  The garbage
5953
collector finally appears to be stable.  This version was created for a
5954
customer; it was not released to the general public or even to the beta test
5955
list.
5956
 
5957
<h3><a name="V3.29_Documentation"></a>Documentation</h3><pre>
5958
Documents the possible need to set LD_RUN_PATH on SVR4 platforms.
5959
(make.doc)
5960
 
5961
Expands the description of the device life cycle, and of the constraints on
5962
put_params procedures.  (drivers.doc)
5963
 
5964
Adds an explicit copyright notice to the Aladdin Ghostscript Free Public
5965
License.  (PUBLIC)
5966
 
5967
Clarifies that the Win32s documentation also applies to Windows NT.
5968
(make.doc)
5969
 
5970
</pre><h3><a name="V3.29_Procedures"></a>Procedures</h3><pre>
5971
 
5972
Removes the obsolete writeppmfile operator from the standard configurations.
5973
(gs.mak)
5974
 
5975
Changes the Watcom makefiles to work properly with Watcom C/C++ 10.0.
5976
(make.doc, msc.mak, watc.mak, watcwin.mak, wccommon.mak)
5977
 
5978
</pre><h3><a name="V3.29_Utilities"></a>Utilities</h3><pre>
5979
 
5980
Adds a wftopfa utility for converting the Wadalab fonts to usable Type 0 and
5981
Type 1 form.  (wftopfa)
5982
 
5983
</pre><h3><a name="V3.29_Fonts"></a>Fonts</h3><pre>
5984
 
5985
Fixes bugs:
5986
	- Entries added automatically by definefont (FontInfo, ExactSize)
5987
could cause a font dictionary to become full.  (gs_fonts.ps, gs_type1.ps)
5988
	- wrfont.ps couldn't deal with very long CharStrings.  (wrfont.ps)
5989
 
5990
Makes the name of the Fontmap file an easily editable parameter.
5991
(gs_fonts.ps)
5992
 
5993
Adds a utility for converting the Wadalab font to usable Type 0 and Type 1
5994
form.  (wrfont.ps, wftopfa.ps)
5995
 
5996
</pre><h3><a name="V3.29_Drivers"></a>Drivers</h3><pre>
5997
 
5998
Fixes bugs:
5999
	- The top margin for printer (and fax) devices was computed
6000
incorrectly, using the X resolution rather than the Y resolution.
6001
(gdevprn.h)
6002
	- Changing the page size or resolution of a printer device closed
6003
and reopened the device unnecessarily.  (gdevprn.c)
6004
	- Changing the page size of the X11 device didn't change the initial
6005
matrix, so (0,0) didn't wind up in the lower left corner.  (gdevx.c)
6006
	- The bit devices didn't allow changing the number of bits per
6007
pixel.  (gdevbit.c)
6008
 
6009
Adds a settable .IsPageDevice boolean device parameter to the X Windows
6010
driver.  The default value is true.  (gdevx.h, gdevx.c)
6011
 
6012
Changes the PPM driver so that it chooses between PBM/PGM/PPM on a
6013
page-by-page basis, rather retaining the most general format ever required
6014
by any page.  (gdevpbm.c)
6015
 
6016
</pre><h3><a name="V3.29_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
6017
 
6018
Fixes bugs:
6019
	- The current page device could be null, rather than an empty
6020
dictionary.  (igstate.h, zchar.c, zdevice.c, zdevice2.c, zgstate.c)
6021
	- The scanner didn't signal an error for names or strings that were
6022
too long.  (iscan.c)
6023
	- A missing header file upset the VAX compilers.  (ztype.c)
6024
	- Some places expecting dictionary operands didn't check the type,
6025
because they incorrectly assumed that the dict_check_read/write macro did
6026
this.  (idict.h, zdevice2.c, zht2.c, zmisc2.c)
6027
	- The definition of quit in systemdict wasn't disabled within
6028
encapsulated jobs.  (gs_lev2.ps)
6029
	- resetfile gave an error if the file was closed, rather than doing
6030
nothing.  (zfileio.c)
6031
	- The scanner attempted to free an uninitialized pointer if it
6032
reached EOF after a / or //.  (iscan.c)
6033
	- A restore in a different file than the corresponding save caused
6034
an invalidrestore error.  (gs_init.ps)
6035
	- The default value of EndOfData in RunLengthDecode streams was set
6036
to false.  (zfilter.c)
6037
	- .registerencoding didn't invoke the save machinery correctly,
6038
leading to GC problems.  (zfont2.c)
6039
	- The facility for overriding .printerror didn't work correctly.
6040
(gs_init.ps)
6041
	- gs_run_file_open wasn't public.  (gsmain.c)
6042
	- The interpreter returned e_undefined for undefined error names,
6043
rather than the error code.  (interp.c)
6044
	- Allocation in system memory (specifically, adding a block to a
6045
stack) couldn't trigger automatic garbage collection.  (interp.c, igc.c,
6046
zvmem2.c)
6047
	- A restore in a different invocation of gs_run_string than the
6048
corresponding save would stop reading the string.  (files.h, gsmain.c,
6049
iccinit.c, zfile.c)
6050
	- The Type 1 rasterizer state included a pointer into the middle of
6051
an object, confusing the garbage collector.  (zchar1.c, zfont1.c)
6052
	- When the garbage collector deleted a name, it didn't zero out the
6053
string pointer.  (iname.c)
6054
	- On platforms where obj_align_mod &gt; 4, the memory manager could
6055
access 1 beyond the end of its freelists.  (iastate.h)
6056
	- makefont and scalefont didn't check the type of their font operand
6057
soon enough.  (zfont.c)
6058
	- restore didn't finalize the objects it freed.  (isave.c)
6059
	- restore didn't free system VM.  (isave.c)
6060
	- Freeing a ref array that occupied an entire chunk didn't free the
6061
chunk.  (ialloc.c)
6062
 
6063
Adds a .runexec operator which implements the 'close if error' function of
6064
run.  (zfile.c, zfileio.c)
6065
 
6066
Moves the obsolete writeppmfile operator into a separate file.  (zfileio.c,
6067
zwppm.c)
6068
 
6069
Makes the statistics returned by the memory manager more accurate.
6070
(ialloc.c, zvmem.c)
6071
 
6072
Adds a (read-only) %Calendar% IODevice.  (zdevcal.c)
6073
 
6074
Adds a "hook" in the character operators to allow external code to
6075
intervene; this is needed for a customer.  (ichar.h, zchar.c, zchar2.c)
6076
 
6077
Makes control-D (0x04) a self-delimiting token, like left bracket.  THIS IS
6078
A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
6079
effects.  (scanchar.h, iscan.c, iscantab.c)
6080
 
6081
Changes the error stack printout so that it puts line breaks between items
6082
iff the items are being printed with ==.  (gs_init.ps)
6083
 
6084
Uses finalization to close streams being freed.  (igc.c, zfile.c, ziodev.c)
6085
 
6086
</pre><h3><a name="V3.29_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6087
 
6088
Fixes bugs:
6089
	- Embedded Type 1 fonts that invoked save and restore while being
6090
read caused an error.  (pdf_font.ps)
6091
	- Large files that referenced a non-alphabetic font for the first
6092
time late in the file could cause an error.  (pdf_main.ps)
6093
 
6094
</pre><h3><a name="V3.29_Streams"></a>Streams</h3><pre>
6095
 
6096
Fixes bugs:
6097
	- SubFileDecode streams didn't copy partial matches of the EOD
6098
string into their output.  (sfilter1.c)
6099
 
6100
Makes switching between read and write modes a stream procedure.  (stream.h,
6101
sfile.c, sfileno.c, stream.c, zfileio.c)
6102
 
6103
Makes file streams close themselves when finalized.  (We can't do this for
6104
other streams, because finalization procedures aren't allowed to free
6105
storage explicitly.)  (stream.h, sfile.c, sfileno.c, stream.c)
6106
 
6107
</pre><h3><a name="V3.29_Library"></a>Library</h3><pre>
6108
 
6109
Fixes bugs:
6110
	- The obsolete files gcdefs.h and gsfile.c were still included in
6111
the fileset.
6112
	- A number of places didn't deal with null patterns properly (p_tile
6113
== 0).  (gxdcolor.h, gspcolor.c, gxpcmap.c)
6114
	- The pattern tiling algorithm was numerically unstable, especially
6115
if the X/YStep vectors were close to the axes.  (gxcolor2.h, gspcolor.c,
6116
gxpcmap.c)
6117
	- setdeviceparams checked the values of read-only byte array
6118
parameters incorrectly.  (gsdparam.c)
6119
	- The statistics macros in gxfill.c didn't use DO_NOTHING when
6120
disabled.  (gxfill.c)
6121
	- Changing the orientation of a device closed and reopened the
6122
device unnecessarily.  (gsdparam.c)
6123
	- ioerrors occurring when writing command lists weren't reported
6124
properly.  (gxclist.h, gxclist.c)
6125
	- Errors from device procedures weren't always propagated up to
6126
clients.  (gsimage1.c, gsimage3.c, gxclip2.c, gxclist.c)
6127
	- Overflowing the fixed-point translation values in the CTM caused a
6128
floating point exception rather than a limitcheck.  (gxmatrix.h, gscoord.c)
6129
	- charpath set the current point correctly, but didn't append a
6130
moveto element to the path.  (This mostly affected Mathematica output.)
6131
(gzpath.h)
6132
	- Image devices mapped colors incorrectly.  (gdevmem.c, gdevm16.c)
6133
	- On devices with color capability but fewer than 4 bits per pixel,
6134
color halftones didn't work (and could cause an arithmetic exception).
6135
(gxdither.c)
6136
	- Black-on-white memory devices didn't map colors properly.
6137
(gdevprn.h, gxdevice.h, gxdevmem.h, gdevmem.c, gdevm1.c, gsdevice.c)
6138
	- Memory devices with a non-zero origin in their initial matrix
6139
clipped the image improperly.  (gsdevice.c)
6140
	- The Type 1 rasterizer state included a pointer into the middle of
6141
an object, confusing the garbage collector.  (gstype1.h, gxfont1.h,
6142
gxtype1.h, gstype1.c, gxhint2.c)
6143
	- The band rasterizer could produce garbled output for images
6144
(including characters) on 64-bit architectures.  (gxclread.c)
6145
	- Bounding boxes (for pathbbox and setbbox) could be slightly
6146
inaccurate.  (gsmatrix.c)
6147
	- On 64-bit architectures, halftone tiles less than 16 bits wide
6148
were handled incorrectly.  (gxclist.c)
6149
 
6150
Adds an .IsPageDevice boolean device parameter (normally read-only).
6151
(gsdparam.c)
6152
 
6153
Removes the library code for implementing the obsolete writeppmfile
6154
operator.  (gswppm.c)
6155
 
6156
Makes the default matrix (for initmatrix and defaultmatrix) a settable
6157
parameter in the graphics state.  (gscoord.h, gzstate.h, gscoord.c,
6158
gsdevice.c, gsdparam.c)
6159
 
6160
Makes the statistics returned by the memory manager more accurate.
6161
(gsmemory.h)
6162
 
6163
Adds a compile-time flag to choose whether or not to force Type 1 hints to
6164
"big pixel" boundaries when oversampling.  (gstype1.c)
6165
 
6166
Changes the .PageCount device parameter back to PageCount, because the
6167
change broke some scripts.  (gsdparam.c)
6168
 
6169
Adds optimization for 90 degree rotated images with pure colors.
6170
(gximage.h, gsimage.c, gsimage1.c)
6171
 
6172
Changes the band rasterizer so that replicated halftone tiles are written on
6173
the band list in unreplicated form.  (gsbitops.h, gxcldev.h, gsbitops.c,
6174
gxclist.c, gxclread.c, gxht.c)
6175
 
6176
Changes the .HWBitsPerPixel device parameter to BitsPerPixel.  (drivers.doc,
6177
language.doc, gdevcdj.c, gdevstc.c, gsdparam.c)
6178
 
6179
</pre>
6180
 
6181
<h2><a name="Version3.28"></a>Version 3.28 (beta) (2/13/95)</h2>
6182
 
6183
<p>
6184
Another bug-fix beta release.  The number of bugs being fixed in each of
6185
these sub-releases does exceed the number of new bugs introduced, but the
6186
latter number is discouragingly high.
6187
 
6188
<h3><a name="V3.28_Documentation"></a>Documentation</h3><pre>
6189
Adds some information about handling VMS file attributes for files
6190
transferred by FTP.  (use.doc)
6191
 
6192
</pre><h3><a name="V3.28_Procedures"></a>Procedures</h3><pre>
6193
 
6194
Fixes bugs:
6195
	- unix-gcc.mak said the static linkage switch for SunOS was -Bstatic
6196
rather than -static.  (unix-gcc.mak)
6197
	- Some dependency lists in gs.mak were out of date.  (gs.mak)
6198
 
6199
</pre><h3><a name="V3.28_Utilities"></a>Utilities</h3><pre>
6200
 
6201
Fixes bugs:
6202
	- markhint.ps didn't check for protected fonts.  (markhint.ps)
6203
 
6204
</pre><h3><a name="V3.28_Drivers"></a>Drivers</h3><pre>
6205
 
6206
Fixes bugs:
6207
	- The cdj driver had a byte/char agreement problem.  (gdevcdj.c)
6208
	- The cdj driver attempted to initialize a dynamic array.
6209
(gdevcdj.c)
6210
 
6211
Removes the setting of InputAttributes and OutputAttributes from the H-P
6212
drivers, since this causes more problems than it solves.  (gdevdjet.c)
6213
 
6214
</pre><h3><a name="V3.28_Interpreter"></a>Interpreter</h3><pre>
6215
 
6216
Fixes bugs:
6217
	- makeoperator assigned incorrect attributes to operators. (bug
6218
introduced in 3.27) (opdef.h, iinit.c, iutil.c, zmisc.c)
6219
 
6220
</pre><h3><a name="V3.28_Library"></a>Library</h3><pre>
6221
 
6222
Fixes bugs:
6223
	- gs_makeimagedevice didn't set the caller's pointer to the newly
6224
created device.  (bug introduced in 3.27) (gsdevice.c)
6225
	- There were still some mismatches between char * and byte * values.
6226
(gsdparam.c)
6227
	- The halftone replication algorithm could produce inappropriately
6228
large replicated masks.  (gxht.c)
6229
	- stroke usually did the wrong thing for degenerate (single-point)
6230
subpaths.  (gxstroke.c)
6231
 
6232
</pre>
6233
 
6234
<h2><a name="Version3.27"></a>Version 3.27 (beta)(withdrawn) (2/8/95)</h2>
6235
 
6236
<p>
6237
Yet another bug-fix beta release.  This release had so many serious problems
6238
(the most serious being at least one changed file that the release tool
6239
failed to include in the fileset) that it was withdrawn less than a day
6240
after it was issued.
6241
 
6242
<h3><a name="V3.27_Documentation"></a>Documentation</h3><pre>
6243
Fixes bugs:
6244
	- The NEWS for 3.26 didn't mention the fact that the stdxxx stream
6245
interface used by MS Windows, OS/2, and Macintosh implementations had
6246
changed.  (NEWS)
6247
	- The file public.doc wasn't distributed with the previous fileset.
6248
 
6249
Brings the NeXTSTEP documentation up to date for NeXTSTEP releases 3.2 and
6250
subsequent.  (make.doc)
6251
 
6252
</pre><h3><a name="V3.27_Procedures"></a>Procedures</h3><pre>
6253
 
6254
Fixes bugs:
6255
	- Some dependency lists in gs.mak were out of date.  (gs.mak)
6256
	- A 'fi;' was missing in the Unix install script.  (unix-end.mak)
6257
	- There was no VMS build script for the PDF options.  (vms.mak)
6258
	- The VMS script used CC_QUALI instead of CC_QUAL in several places.
6259
(vms.mak)
6260
 
6261
</pre><h3><a name="V3.27_Utilities"></a>Utilities</h3><pre>
6262
 
6263
Fixes bugs:
6264
	- ps2epsi's usage prompt referred to "pstoepsi".  (ps2epsi)
6265
	- ps2epsi set PATH and LOCALPATH unilaterally.  (ps2epsi)
6266
 
6267
Comments out the sample usage line at the end of viewjpeg.ps.  (viewjpeg.ps)
6268
 
6269
</pre><h3><a name="V3.27_Drivers"></a>Drivers</h3><pre>
6270
 
6271
Fixes bugs:
6272
	- The fax and tiff drivers didn't free all of their working storage.
6273
(gdevtfax.c)
6274
 
6275
Adds user-contributed drivers for the BJC 600 and ESC/P printers.
6276
(devs.mak, gdevcdj.c)
6277
 
6278
</pre><h3><a name="V3.27_Platforms"></a>Platforms</h3><pre>
6279
 
6280
Fixes bugs:
6281
	- Some necessary casts of string parameters to (const byte *) were
6282
omitted.  (gp_mswin.c, gp_os2.c)
6283
 
6284
Adds the psmono and bit* drivers, and removes the p*m drivers, in the OS/2,
6285
32-bit MS-DOS, and 32-bit Windows configurations.  (bcwin32.mak, os2.mak,
6286
watc.mak)
6287
 
6288
</pre><h3><a name="V3.27_Fonts"></a>Fonts</h3><pre>
6289
 
6290
Fixes bugs:
6291
	- The Fontmap for Ultrix had somehow become slightly incorrect.
6292
(Fontmap.Ult)
6293
 
6294
Removes the font file names from the dependency lists in cfonts.mak.  This
6295
makes cfonts.mak readily usable with any set of fonts, but it also means
6296
that it will always run font2c, rather than being able to avoid this if the
6297
.c file is up to date.  (cfonts.mak)
6298
 
6299
</pre><h3><a name="V3.27_Interpreter"></a>Interpreter</h3><pre>
6300
 
6301
Fixes bugs:
6302
	- Some operators could fail if the stdxxx streams weren't currently
6303
open.  (files.h, zfileio.c, ziodev.c)
6304
	- setpagedevice didn't handle unrecognized keys properly.
6305
(gs_setpd.ps)
6306
	- The value returned for the HWColorMap device parameter was
6307
allocated incorrectly, confusing the garbage collector.  (iparam.c)
6308
	- Typing ahead at the &gt;&gt;showpage&lt;&lt; prompt no longer caused all
6309
further pages to be processed without stopping.  (gs_init.ps)
6310
	- Setting DEVICEWIDTHPOINTS or DEVICEHEIGHTPOINTS on the command
6311
line caused a typecheck.  (gs_init.ps)
6312
	- The garbage collector didn't handle halftone threshold arrays
6313
properly.  (zht2.c)
6314
	- setdefaulttimeouts caused an error on Level 2 systems.
6315
(gs_lev2.ps)
6316
	- cvi and cvr weren't equivalent to token followed by a type check.
6317
(iscan.h, iscannum.h, iscan.c, iscannum.c, ztoken.c, ztype.c)
6318
	- In Level 2 systems, image and colorimage didn't allow 12 bits per
6319
sample.  (zpaint.c)
6320
	- If debugging was enabled, the garbage collector printed spurious
6321
error messages about the allocator objects not being in a chunk.  (ialloc.c)
6322
	- restore didn't reset the count of operator procedures, so the
6323
operator procedure table could fill up.  Fixing this required splitting the
6324
op_array_table into a global table and a local table.  (opdef.h, iinit.c,
6325
iutil.c, zmisc.c)
6326
	- .forgetsave could leave a dangling pointer in the memory manager,
6327
causing an access error.  (ialloc.c, isave.c)
6328
	- Freed objects weren't always marked as freed, which could confuse
6329
the memory validator.  (ialloc.c)
6330
	- .forgetsave didn't mark inner chunk headers as free, leading to
6331
access errors.  (isave.c)
6332
 
6333
Changes the representation of operator procedures so that they point
6334
directly to their definition in the op_array_table.  (iref.h, opdef.h,
6335
idebug.c, igc.c, igcref.c, interp.c, zmisc.c)
6336
 
6337
Removes .makeglobaloperator.  (zmisc.c)
6338
 
6339
Adds patches to discard some common garbage produced by H-P-oriented
6340
applications and drivers.  (gs_init.ps)
6341
 
6342
Changes the &gt;&gt;showpage&lt;&lt; prompt so that if the input reaches EOF, the
6343
interpreter still stops after the next &gt;&gt;showpage&lt;&lt;, rather than processing
6344
all subsequent pages.  This is a consequence of the bug fix that
6345
automatically reopens the stdxxx files.
6346
 
6347
Adds an optional dictionary parameter for the RunLengthEncode/Decode
6348
filters, to allow specifying EndOfData.  The default is true.  (zfilter.c)
6349
 
6350
Adds ByteTranslateEncode/Decode filters.  (zfilter2.c)
6351
 
6352
</pre><h3><a name="V3.27_Streams"></a>Streams</h3><pre>
6353
 
6354
Fixes bugs:
6355
	- The K &gt; 0 option of the CCITTFaxDecode filter switched back to 2-D
6356
encoding if an output buffer boundary fell in the middle of a 1-D line, and
6357
signalled an error if an input buffer boundary fell in the middle of an EOL.
6358
(scfd.c)
6359
 
6360
Adds an EndOfData flag to the RunLengthEncode/Decode filters.  If true, RLE
6361
generates 128 as EOD, and RLD recognizes it; if false, RLE does not mark
6362
EOD, and RLD ignores 128.  (srlx.h, gxclist.c, gxclread.c, sfilter1.c)
6363
 
6364
Adds ByteTranslateEncode/Decode streams.  (sbtx.h, sfilter2.c)
6365
 
6366
</pre><h3><a name="V3.27_Library"></a>Library</h3><pre>
6367
 
6368
Fixes bugs:
6369
	- There were some mismatches between char * and byte * values.
6370
(gsdparam.c)
6371
	- Failure to round a scaling coordinate caused one-for-one
6372
black-and-white images to render slower than they should.  (gsimage.c)
6373
	- Setting PageSize without setting HWResolution could cause an
6374
invalid memory access.  (gsdparam.c)
6375
	- The garbage collector didn't handle halftone threshold arrays
6376
properly.  (gxht.h, gsht.c, gsht1.c)
6377
 
6378
</pre>
6379
 
6380
<h2><a name="Version3.26"></a>Version 3.26 (beta) (2/1/95)</h2>
6381
 
6382
<p>
6383
Yet another bug-fix beta release, still not ready for public release.
6384
 
6385
<h3><a name="V3.26_Documentation"></a>Documentation</h3><pre>
6386
Fixes bugs:
6387
	- The description of device properties had gotten out of sync with
6388
the code.  (language.doc)
6389
 
6390
Splits off documentation specific to the Aladdin (non-GNU) release into a
6391
separate file.  (readme, public.doc, unix-end.mak)
6392
 
6393
Adds a pointer to a collection of other free fonts (including some Cyrillic
6394
ones) available on the net.  (public.doc)
6395
 
6396
</pre><h3><a name="V3.26_Procedures"></a>Procedures</h3><pre>
6397
 
6398
Fixes bugs:
6399
	- On VMS systems with both VAX C and DEC C installed, the build script
6400
used VAX C rather than DEC C.  (vms.mak)
6401
	- zfdecode.c didn't have a build rule.  (gs.mak)
6402
	- Several macros in the makefile were used before they were defined.
6403
(gs.mak)
6404
	- Several macros in the makefile were used without being defined.
6405
(gs.mak)
6406
 
6407
Replaces the gssetdev, gssetmod, and gsaddmod scripts with more variants of
6408
echogs.  (echogs.c, gs.mak)
6409
 
6410
</pre><h3><a name="V3.26_Utilities"></a>Utilities</h3><pre>
6411
 
6412
Fixes bugs:
6413
	- The ps2ascii shell script passed a -f flag to the shell, which not
6414
all shells recognize.  (ps2ascii)
6415
 
6416
</pre><h3><a name="V3.26_Drivers"></a>Drivers</h3><pre>
6417
 
6418
Fixes bugs:
6419
	- Due to a typo in an initialization string, the H-P printers didn't
6420
reset the top margin to zero.  (gdevdjet.c)
6421
 
6422
Adds InputAttributes and OutputAttributes entries to the H-P drivers.  (This
6423
should probably be generic to all printers.)  (gdevdjet.c)
6424
 
6425
Replaces the contributed Epson Stylus Color driver with a newer version.
6426
(devices.doc, gdevstc.c)
6427
 
6428
</pre><h3><a name="V3.26_Platforms"></a>Platforms</h3><pre>
6429
 
6430
Fixes bugs:
6431
	- DEC C complained about 'abs' and 'exit' not being declared.  (x_.h)
6432
	- gp_mswin.c and gp_os2.c wouldn't compile.  (gp_mswin.c, gp_os2.c,
6433
ziodev.c)
6434
 
6435
</pre><h3><a name="V3.26_Interpreter"></a>Interpreter</h3><pre>
6436
 
6437
Fixes bugs:
6438
	- The default CIE rendering dictionary gave everything a magenta tint.
6439
(gs_lev2.ps)
6440
	- Changing HWResolution and PageSize in the same call of
6441
setpagedevice produced an incorrect HWSize.  (gsdparam.c)
6442
	- .putdeviceparams didn't accept all the keys that .getdeviceparams
6443
returned.  (gsdparam.c)
6444
	- The default handler for interrupt and timeout errors didn't push a
6445
current object (command) on the stack.  (gs_init.ps)
6446
	- The garbage collector didn't handle strings larger than 64K
6447
properly.  (iastate.h, ialloc.c, igcstr.c)
6448
 
6449
Adds media matching and Policy consultation to the implementation of
6450
setpagedevice.  (gs_setpd.ps)
6451
 
6452
Adds a MaxGlobalVM system parameter.  (zmisc2.c)
6453
 
6454
</pre><h3><a name="V3.26_Streams"></a>Streams</h3><pre>
6455
 
6456
Fixes bugs:
6457
	- The CCITTFaxEncode filter could access a byte beyond the end of
6458
the allocated area.  (scfe.c)
6459
	- The CCITTFaxDecode filter could get an ioerror if a buffer
6460
boundary fell in exactly the wrong place.  (scfd.c)
6461
 
6462
</pre><h3><a name="V3.26_Library"></a>Library</h3><pre>
6463
 
6464
Fixes bugs:
6465
	- The garbage collector didn't trace colored halftones properly.
6466
(gzht.h)
6467
	- The garbage collector didn't relocate the bitmap pointers in
6468
halftone caches properly.  (gzht.h, gxht.c)
6469
 
6470
Adds the ability to transmit dictionaries through the param_list mechanism
6471
(specifically, as device parameters).  This change is
6472
non-backward-compatible only for implementors of parameter lists, which only
6473
exist within the Ghostscript core.  (gsparam.h, iparam.h, iparam.c)
6474
 
6475
Removes the InitialMatrix device property.  (gsdparam.c)
6476
 
6477
</pre>
6478
 
6479
<h2><a name="Version3.25"></a>Version 3.25 (beta) (1/24/95)</h2>
6480
 
6481
<p>
6482
Yet another bug-fix beta release.  There are still at least half a dozen
6483
significant known bugs to be fixed before a public release.
6484
 
6485
<h3><a name="V3.25_Documentation"></a>Documentation</h3><pre>
6486
Notes that on Unix systems, one should not edit 'makefile', but should edit
6487
the individual subfile and run tar_cat.  THIS IS A NON-BACKWARD-COMPATIBLE
6488
CHANGE.  (make.doc)
6489
 
6490
Adds information on the Macintosh implementation.  (readme)
6491
 
6492
</pre><h3><a name="V3.25_Procedures"></a>Procedures</h3><pre>
6493
Fixes bugs:
6494
	- make clean failed on Unix systems where rm -f requires at least one
6495
file name.  (gs.mak)
6496
	- math_.h was omitted from many dependency lists.  (gs.mak)
6497
 
6498
</pre><h3><a name="V3.25_Drivers"></a>Drivers</h3><pre>
6499
 
6500
Fixes bugs:
6501
	- The X Windows and MS Windows draw-line routines couldn't possibly
6502
produce sufficiently correct output (since the interface only provides integer
6503
coordinates).  (gdevx.c, gdevwddb.c)
6504
 
6505
In response to patent-related actions by Unisys and CompuServe, removes the
6506
GIF driver.  (*.mak)
6507
 
6508
Changes dci_std_color (and std_device_std_color_* and prn_device_std_*) so
6509
that if the number of bits per pixel is 32, the device is defined as CMYK
6510
rather than RGB.  (gxdevice.h)
6511
 
6512
Removes the tseng8 device, which is no longer useful.  (devs.mak, gdevsvga.c)
6513
 
6514
Adds pseudo-alpha support to the SVGA drivers, via the TextAlphaBits and
6515
GraphicsAlphaBits device parameters.  (gdevsvga.h, gdevsvga.c)
6516
 
6517
Adds a user-contributed driver for the Epson Stylus Color printer.  (devs.mak,
6518
gdevstc.c, devices.doc)
6519
 
6520
</pre><h3><a name="V3.25_Platforms"></a>Platforms</h3><pre>
6521
 
6522
Fixes bugs:
6523
	- The VMS build scripts had gotten out of sync (again).  (vms*.mak)
6524
 
6525
</pre><h3><a name="V3.25_Interpreter"></a>Interpreter</h3><pre>
6526
 
6527
Fixes bugs:
6528
	- The emulator name array was incorrectly declared const in one place.
6529
(gs.c)
6530
	- A closed file could incorrectly appear to be 'eq' to another file
6531
(open or closed).  (iutil.c)
6532
	- If %stdin/%stdout/%stderr was ever closed, it couldn't be
6533
reopened.  (gs_btokn.ps, gs_init.ps, files.h, zfile.c, zfileio.c, zfilter.c,
6534
zfproc.c, ziodev.c)
6535
 
6536
Changes (almost) all the operator routines to 'static'.  (z*.c)
6537
 
6538
</pre><h3><a name="V3.25_Library"></a>Library</h3><pre>
6539
 
6540
Fixes bugs:
6541
	- The raster value for replicated tiles in the halftone cache was
6542
incorrect, causing unaligned memory accesses.  (gxht.c)
6543
	- stroke and strokepath could produce slightly inaccurate output
6544
(leading to slight visible anomalies) as a result of stroke adjustment.
6545
(gxstroke.c)
6546
	- Attempting to draw an arc with zero radius could cause a numeric
6547
exception.  (gspath1.c)
6548
	- Setting the Orientation of a device to null resulted in actually
6549
setting it to a random value.  (gsdparam.c)
6550
	- charpath, stringwidth, and cshow attempted to remap the current
6551
color unnecessarily.  (gschar.c)
6552
 
6553
Adds the ability to trace calls on the sqrt function (and possibly other math
6554
functions in the future.)  (math_.h, gsmisc.c)
6555
 
6556
Adds additional interrupt checks in the banding code.  (gxclist.c, gxclread.c)
6557
 
6558
</pre>
6559
 
6560
<h2><a name="Version3.24"></a>Version 3.24 (beta) (1/17/95)</h2>
6561
 
6562
<p>
6563
This was supposed to be a public release, but too many bugs showed up in 3.23,
6564
so this is another bug-fix beta release.  This is the first release with a
6565
working PDF reader.
6566
 
6567
<h3><a name="V3.24_Documentation"></a>Documentation</h3><pre>
6568
Notes that Solaris requires using installbsd instead of install.  (make.doc)
6569
 
6570
</pre><h3><a name="V3.24_Procedures"></a>Procedures</h3><pre>
6571
 
6572
Changes 'make mostlyclean' so that it doesn't delete the Ghostscript
6573
executable (but deletes everything else that 'make clean' does).  (gs.mak)
6574
 
6575
Changes the link list generator so it eliminates duplicate library requests.
6576
(genconf.c)
6577
 
6578
Factors the interpreter further so as to include less unnecessary PostScript
6579
support in the PDF interpreter.  (gs.mak, zpath.c, zpath1.c)
6580
 
6581
Adds a printout of the available language interpreters to the -h message.
6582
(genconf.c, gs.c, iinit.c, gs.mak)
6583
 
6584
</pre><h3><a name="V3.24_Drivers"></a>Drivers</h3><pre>
6585
 
6586
Fixes bugs:
6587
	- The alternate X drivers used a cast in an initializer, causing a
6588
compilation error on some platforms.  (gdevxalt.c)
6589
 
6590
Adds a driver for the LaserJet IIID, including duplex printing if specified by
6591
the Duplex page device parameter.  (gdevdjet.c)
6592
 
6593
Adds Orientation to the bit device.  (gdevbit.c)
6594
 
6595
</pre><h3><a name="V3.24_Platforms"></a>Platforms</h3><pre>
6596
 
6597
Fixes bugs:
6598
	- There was an extraneous pfen-&gt; in the NT file system module, causing
6599
a compilation error.  (gp_ntfs.c)
6600
	- The DLL code referred to an obsolete symbol a_foreign.  (gsdll.c)
6601
	- The VMS build scripts omitted the LaserJet 4 driver.  (vms-*.mak)
6602
	- The VMS build scripts had several other minor errors.  (vms.mak)
6603
 
6604
</pre><h3><a name="V3.24_Fonts"></a>Fonts</h3><pre>
6605
 
6606
Fixes bugs:
6607
	- Defining a font alias in global VM with a name that was a string in
6608
local VM caused an error.  (gs_fonts.ps)
6609
	- The font compiler referred to an obsolete symbol a_foreign.
6610
(font2c.ps)
6611
 
6612
</pre><h3><a name="V3.24_Interpreter"></a>Interpreter</h3><pre>
6613
 
6614
Fixes bugs:
6615
	- There was an extraneous '#' before an extern declaration.
6616
(gsmain.c)
6617
	- The interpreter could (incorrectly) attempt to expand the e-stack.
6618
(istack.h, interp.c, istack.c)
6619
	- zfproc.c called memcpy but didn't include memory_.h.  (zfproc.c)
6620
	- A garbage collection occurring within a 'save' would often smash
6621
memory.  (igc.c)
6622
	- If the last character returned by the procedure of a procedure-based
6623
filter was \r, readline could get an endless loop.  (zfileio.c)
6624
	- Saving a change to a ref member of a structure confused the garbage
6625
collector.  (isave.h, isave.c, zdict.c)
6626
	- The -Zu debugging printout could cause an access error under rare
6627
circumstances.  (isave.c)
6628
	- Save objects could get allocated in global VM, causing dangling
6629
references.  (zvmem.c)
6630
	- The vmsave object created by the interpreter for a save didn't get
6631
freed properly if the memory manager created an invisible save level, which
6632
could cause the next garbage collection to crash.  (zvmem.c)
6633
	- 'run' always printed an error message, rather than letting the
6634
top-level control loop do it.  (gs.c, gs_init.ps)
6635
 
6636
Adds support for duplex devices.  (gxdevice.h, gsdparam.c, gs_statd.ps,
6637
gs_setpd.ps)
6638
 
6639
Adds the beginnings of support for CID-keyed fonts.  (gs_cidfn.ps)
6640
 
6641
Changes the format of the stack dump printed for errors, to make it easier to
6642
read.  (gs_init.ps)
6643
 
6644
</pre><h3><a name="V3.24_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
6645
 
6646
Fixes bugs:
6647
	- The .local/global allocation operators always allocated in system
6648
VM.  (zsysvm.c)
6649
	- setpage[params] caused an error.  (gs_lev2.ps)
6650
	- If an error occurred during a cshow or (x|y|xy)show, the interpreter
6651
freed the enumerator twice.  (zchar.c, zchar2.c)
6652
 
6653
Changes setpageparams so that orientation = 0 means portrait.  This is not
6654
compatible with AGFA's convention for roll-feed devices, but it is compatible
6655
with the more common cut-sheet printers.  (gs_statd.ps)
6656
 
6657
Adds meaningful values for the Emulator resource.  (gsmain.c, gs_res.ps)
6658
 
6659
Makes -Z? validate the state of memory before and after save and restore.
6660
(ialloc.h, igc.h, ialloc.c, igc.c, ilocate.c, zvmem.c)
6661
 
6662
</pre><h3><a name="V3.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6663
 
6664
Fixes bugs:
6665
	- The Unix install script didn't install the PDF files if they were
6666
present.  (unix-end.mak)
6667
	- PDF to PostScript conversion didn't work at all.  (It still doesn't
6668
work very well.)  (pdf_2ps.ps, pdf_main.ps)
6669
	- Images with an Indexed color space and no Decode entry caused an
6670
error.  (pdf_draw.ps)
6671
	- The 'Page &lt;n&gt;' messages were printed even if QUIET was set.
6672
(pdf_main.ps)
6673
 
6674
Changes the interpreter so that when it encounters an unknown operator, it
6675
prints an error message and continues, rather than signalling an error.
6676
(pdf_base.ps)
6677
 
6678
Makes F a synonym for f if there is nothing on the operand stack, to
6679
compensate for a bug in some Adobe software.  (pdf_base.ps)
6680
 
6681
Changes pdfgetpage so it uses 1-origin rather than 0-origin indexing.  THIS IS
6682
A NON-BACKWARD-COMPATIBLE CHANGE.  (pdf_main.ps)
6683
 
6684
</pre><h3><a name="V3.24_Streams"></a>Streams</h3><pre>
6685
 
6686
Fixes bugs:
6687
	- The Group 3 2-D and Group 4 encoders produced incorrect output if a
6688
scan line beginning with a black pixel was followed by a scan line beginning
6689
with a white pixel.  (scfe.c)
6690
	- A SubFileDecode filter with a count of 1 and a non-empty EOD string
6691
would smash memory.  (sfilter1.c)
6692
 
6693
Updates the DCT filters so they will work with the latest version (5a) of the
6694
IJG library.  (*.mak, jpeg.mak, sjpegerr.c)
6695
 
6696
</pre><h3><a name="V3.24_Library"></a>Library</h3><pre>
6697
 
6698
Fixes bugs:
6699
	- A call with integer parameters to a procedure with floating point
6700
arguments didn't work on non-ANSI compilers.  (gsimage.c)
6701
	- Arcs could get turned into polygons if the scaling values in the CTM
6702
were very large and the radius was (in user space coordinates) very small.
6703
(gspath.c)
6704
	- The current point was defined when a BuildChar procedure was called.
6705
(This bug was documented as fixed in version 2.2!)  (gschar.c)
6706
 
6707
Adds support for Orientation and Duplex page device parameters, for those
6708
devices that support these.  (gdevprn.h, gxdevice.h, gsdevice.c, gsdparam.c)
6709
 
6710
</pre>
6711
 
6712
<h2><a name="Version3.23"></a>Version 3.23 (beta) (1/5/95)</h2>
6713
 
6714
<p>
6715
This is almost entirely a bug fix release.  It also includes a largely working
6716
PDF reader.  This is intended as the beta test release for the next public
6717
release.
6718
 
6719
<h3><a name="V3.23_Documentation"></a>Documentation</h3><pre>
6720
Fixes bugs:
6721
	- COPYLEFT, COPYING, NEWS, PUBLIC, README, and the standard Fontmap
6722
were omitted from the 3.22 fileset.
6723
 
6724
Documents the use of the -oldc switch to work around a compiler crash on
6725
the DECstation.
6726
 
6727
Expands and clarifies the documentation for building the DesqView/X version
6728
with djgcc.  (make.doc)
6729
 
6730
Adds documentation on the "600x300" H-P inkjet printers, explaining why
6731
this alleged higher resolution is not available.  (devices.doc)
6732
 
6733
Adds to the PUBLIC license a warning that it is not a GNU License, and a
6734
requirement to include a copy of or a pointer to the License in any written
6735
material.  (PUBLIC)
6736
 
6737
Documents the fact that Ghostscript *does* attempt to look up files in the
6738
current directory first.  (use.doc)
6739
 
6740
</pre><h3><a name="V3.23_Procedures"></a>Procedures</h3><pre>
6741
 
6742
Fixes bugs:
6743
	- In VMS.MAK, .JPEG should have been changed to .JPEG-5 in a few
6744
places.  (vms.mak)
6745
 
6746
Adds the pjxl300 driver to all configurations that include the other color
6747
DeskJet drivers.  Replaces pjet and pjetxl with pj and pjxl.  (*.mak)
6748
 
6749
Makes 'run' recognize PDF files if the PDF reader is included.
6750
(pdf_main.ps)
6751
 
6752
</pre><h3><a name="V3.23_Utilities"></a>Utilities</h3><pre>
6753
 
6754
Fixes bugs:
6755
	- viewjpeg.ps needed the test for languagelevel = 2 at the
6756
beginning of the file.  (viewjpeg.ps)
6757
	- prfont.ps used 'min', which isn't a standard PostScript operator.
6758
(prfont.ps)
6759
	- prfont.ps created Encoding vectors that weren't 256 elements
6760
long.  (prfont.ps)
6761
 
6762
Adds the gsdj500 script to the installation list.  (unix-end.mak)
6763
 
6764
Changes the Unix "line printer" shell scripts to add the date to the page
6765
header.  (gsbj, gsdj, gsdj500, gslj)
6766
 
6767
Changes ansi2knr so that it will work properly on systems where the ctype
6768
macros don't handle 8-bit characters correctly.  (ansi2knr.c)
6769
 
6770
</pre><h3><a name="V3.23_Drivers"></a>Drivers</h3><pre>
6771
 
6772
Fixes bugs:
6773
	- Some compilers don't allow casts in initialization expressions.
6774
(gdevx.c, gdevxalt.c)
6775
	- The cdj drivers didn't initialize the color_info structure
6776
properly.  (gdevcdj.c)
6777
 
6778
Adds another alternate X Windows driver, x11mono, that is a black-and-white
6779
device.  (devs.mak, gdevxalt.c)
6780
 
6781
Adds a user-contributed driver for the Apple Imagewriter LQ.  (devs.mak,
6782
gdevadmp.c)
6783
 
6784
</pre><h3><a name="V3.23_Platforms"></a>Platforms</h3><pre>
6785
 
6786
Fixes bugs:
6787
	- The VMS MODULES.LIS file had gotten out of sync with the makefile
6788
(again); GDEVABUF and GSBITOPS were missing.  (modules.lis)
6789
	- The VMS script file had gotten out of sync with the makefile
6790
(again).  (vms.mak)
6791
	- The MS Windows platform code didn't recognize Windows 95 (Windows
6792
4.0) as equivalent to Windows NT.  (gp_mswin.c)
6793
	- File name enumeration didn't work on OS/2 or win32.  (gp_ntfs.c,
6794
gp_os2.c)
6795
	- -sOutputFile= didn't work under MS Windows.  (gp_mswin.c)
6796
 
6797
Changes the SCO Unix direct frame buffer driver so it generates in-line
6798
instructions to access the frame buffer, for a dramatic speed improvement.
6799
(gdevpcfb.h, gdevsco.c)
6800
 
6801
</pre><h3><a name="V3.23_Fonts"></a>Fonts</h3><pre>
6802
 
6803
Fixes bugs:
6804
	- If a font couldn't be found in the Fontmap, a recursion loop
6805
sometimes occurred.  (gs_fonts.ps)
6806
	- Aliases for global fonts weren't automatically created as global,
6807
possibly leading to a recursion loop.  (gs_dps1.ps, gs_fonts.ps)
6808
	- If a font was loaded into global VM within an inner save, the restore
6809
deleted it from FontDirectory but not from SharedFontDirectory, causing a
6810
possible recursion loop.  (gs_dps1.ps, gs_fonts.ps, idict.h, idict.c, zdict.c)
6811
 
6812
Further improves the algorithm for substituting for unknown fonts.
6813
(gs_fonts.ps)
6814
 
6815
</pre><h3><a name="V3.23_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
6816
 
6817
Fixes bugs:
6818
	- zcontrol.c had an assignment of const char * to const byte *,
6819
which some compilers don't like.  (zcontrol.c)
6820
	- Setting an Indexed color space based on a CIE space caused an
6821
attempt to free a random block of memory.  (zcsindex.c)
6822
	- Some compilers don't like mixing conditionals and casts in
6823
initialization expressions.  (iref.h)
6824
	- Some calculations of table sizes for string garbage collection
6825
didn't work if sizeof(long) != 4, leading to smashed strings.  (iastate.h,
6826
ialloc.c, igcstr.c)
6827
	- Strings longer than about 7000 bytes smashed their chunk header
6828
and confused the garbage collector.  (ialloc.c)
6829
	- Some compilers needed iccfont.c to include strimpl.h.
6830
(iccfont.c)
6831
	- The obsolete file zcspace2.c was still included in the fileset.
6832
	- If the command line included any @-files that required searching
6833
the library path, a limitcheck would occur.  (zfile.c)
6834
	- The insideness testing operators caused a memory access error,
6835
because the procedure vector hadn't been updated to provide a default
6836
get_alpha_bits procedure.  (zupath.c)
6837
	- gcheck didn't check for stack underflow.  (zvmem2.c)
6838
	- cleardictstack could fail to clear the dictionary stack if the
6839
stack had overflowed into additional blocks.  (zdict.c)
6840
	- If the '-' switch was selected, resources weren't released
6841
properly on exit.  (gs.c)
6842
	- Setting a Pattern color space based on a CIE space caused an
6843
invalid memory access.  (zcsindex.c)
6844
	- The garbage collector didn't treat refs properly on machines with
6845
short ints.  (igcref.c)
6846
	- Operators with more than 16 arguments could break the
6847
interpreter.  (interp.h, iinit.c, interp.c)
6848
	- save/restore didn't restore the setting of the current allocator
6849
VM (local/global).  (isstate.h, isave.c)
6850
	- stdpre.h declared exit as an extern, instead of letting gsmain.c
6851
declare it.  (stdpre.h, gsmain.c)
6852
	- gs.c used fputs to print help messages rather than fprintf.
6853
(gs.c)
6854
	- Interrupts failed to re-execute the operation that was
6855
interrupted.  (interp.c)
6856
	- Low-resolution CMYK devices didn't use separate screens for each
6857
color plane as the default.  (gs_init.ps)
6858
	- filterdict wasn't getting undef'ed at the end of initialization.
6859
(gs_init.ps)
6860
	- gstate operations were broken (bug introduced in 3.02).
6861
(zdevice2.c)
6862
	- resourceforall didn't remove the resource dictionary from the
6863
dictionary stack when calling the client-supplied procedure.  (gs_res.ps)
6864
	- currentcolor with an Indexed color space returned a real rather
6865
than an integer.  (zcolor2.c)
6866
	- setshared / setglobal left the stack in an unobvious state if
6867
they were given a non-Boolean argument.  (gs_dps1.ps)
6868
	- sethalftone followed by currenthalftone returned an invalid value.
6869
(zht2.c)
6870
	- Empty strings produced spurious garbage collector error messages.
6871
(gsstruct.h, scommon.h, igc.c, igcstr.c, iname.c)
6872
	- The garbage collector didn't trace Separation color spaces properly.
6873
(gscsepr.c)
6874
 
6875
Changes defineresource so that it does not, by default, make instances
6876
read-only.  (gs_res.ps)
6877
 
6878
Adds .{local,global}{array,dict,packedarray,string} operators for creating
6879
objects in a specific VM space.  (zsysvm.c, gs_dps1.ps)
6880
 
6881
Adds definitions of setpage and setpageparams to statusdict.  (gs_setpd.ps,
6882
gs_statd.ps)
6883
 
6884
Alleviates some performance problems in the garbage collector.  (igc.c)
6885
 
6886
</pre><h3><a name="V3.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6887
 
6888
Fixes bugs:
6889
	- PDF files that used filters with parameters caused a typecheck
6890
error because the arguments to 'filter' were reversed.  (pdf_base.ps)
6891
	- The (undocumented) PDF 1.1 ability to specify link and annotation
6892
destinations indirectly was not supported.  (pdf_main.ps)
6893
	- The (undocumented) PDF ability to specify a null page in a link
6894
destination was not supported.  (pdf_main.ps)
6895
	- The PDF encodings weren't loaded properly in a system with both
6896
PS Level 2 and PDF features.  (gs_res.ps, gs_init.ps)
6897
	- If the next line after a stream keyword was blank, the line
6898
wasn't skipped, which matters for binary data.  (pdf_base.ps)
6899
	- A Q operator with no matching q operator caused an error.
6900
(pdf_draw.ps)
6901
	- The text position wasn't preserved across a fill or stroke
6902
operator.  (gs_pdf.ps, pdf_draw.ps)
6903
	- Embedded Type 3 fonts didn't work.  (pdf_base.ps, pdf_draw.ps,
6904
pdf_main.ps)
6905
	- Masked images with no Decode value had their polarity inverted.
6906
(pdf_draw.ps)
6907
	- Embedded Type 1 fonts referenced from within a stream didn't
6908
work.  (pdf_font.ps)
6909
 
6910
Changes the PDF code so that it automatically recognizes PDF files as such.
6911
(pdf_main.ps)
6912
 
6913
Splits out the PixelDifference filters as a separate "feature".  (gs.mak)
6914
 
6915
</pre><h3><a name="V3.23_Streams"></a>Streams</h3><pre>
6916
 
6917
Fixes bugs:
6918
	- Closing the primary input stream caused an invalid memory access.
6919
(stream.c)
6920
	- Increasing the size of a buffer within a save resulted in a
6921
dangling reference after the restore.  (files.h, sfilter.h, zfile.c,
6922
zfilter.c)
6923
	- The garbage collector didn't properly trace streams that referenced
6924
strings directly.  (stream.h, stream.c, ziodev.c)
6925
 
6926
</pre><h3><a name="V3.23_Library"></a>Library</h3><pre>
6927
 
6928
Fixes bugs:
6929
	- An extraneous \ upset some compilers.  (gdevabuf.c)
6930
	- Uncolored Patterns that completely filled their bounding box
6931
caused an invalid memory access.  (gspcolor.c)
6932
	- If a color image required clipping, black or white pixels might
6933
be rendered with incorrect (random) colors.  (gxcpath.c)
6934
	- Reference counts for color spaces were sometimes set too high, so
6935
they would only be freed by restore or garbage collection.  (gscolor.c)
6936
	- The character cache could get confused if the Encoding for the
6937
character wasn't a name.  (gschar.c)
6938
	- Character outlines were always rendered with flatness = 0,
6939
causing very bad performance for large characters.  (gzstate.h, gschar.c,
6940
gsimage.c, gxfill.c, gxstroke.c)
6941
	- If a device (presumably uninitialized) had a
6942
color_info.num_components of zero, an invalid memory access could occur.
6943
(gsdparam.c)
6944
	- Intersecting clipping paths that are not both rectangular didn't
6945
properly set the outer box of new clipping path, leading to unnecessary
6946
computation.  (gxcpath.h, gxacpath.c, gxcpath.c)
6947
	- A call passed false instead of NULL.  (gschar.c)
6948
	- On machines where sizeof returns a long, genarch.c failed.
6949
(genarch.c)
6950
	- xfonts were consulted, incorrectly, even for stroked characters.
6951
(gxccman.c)
6952
	- gstate/currentgstate/setgstate didn't work properly.  (gsline.c,
6953
gsstate.c)
6954
	- On CMYK devices needing halftoning, colors with C = M = Y were
6955
always converted to gray shades.  (gxcmap.c)
6956
	- Isolated horizontal lines, or the horizontal edges of rectangles,
6957
could get drawn with one or both end pixels missing.  (gxfill.c)
6958
 
6959
Changes the character cache back so it oversamples characters at small
6960
sizes.  (gschar.c)
6961
 
6962
Changes all occurrences of (void)x to discard(x), and defines discard in
6963
stdpre.h as a cast to void, to make it possible to pacify compilers that
6964
don't accept this construct for some kinds of x.  (gpcheck.h, stdpre.h,
6965
store.h, gdevmswn.c, gp_mswin.c, gscoord.c, gxclread.c, igc.c, sfile.c,
6966
sfileno.c, zcie.c, zht2.c, ziodev.c, zmisc1.c)
6967
 
6968
Increases the size of the halftone cache on large-memory machines from 35K
6969
to 100K.  This substantially improves halftoning performance at higher
6970
resolutions.  (gxht.c)
6971
 
6972
</pre>
6973
 
6974
<h2><a name="Version3.22"></a>Version 3.22 (beta) (11/30/94)</h2>
6975
 
6976
<p>
6977
This is primarily a bug fix release.  It also includes limited anti-aliased
6978
graphics capability.  This release was not distributed to the public.
6979
 
6980
<h3><a name="V3.22_Procedures"></a>Procedures</h3><pre>
6981
 
6982
Fixes bugs:
6983
	- The definition of ghost_h was misplaced, so changes in it or its
6984
antecedents didn't force recompilation of its dependents.  (gs.mak)
6985
 
6986
Actually implements the -Z+ switch, for forcing small stack blocks.
6987
(interp.c)
6988
 
6989
Makes the -dSAFER switch disable the %pipe syntax for file names, even for
6990
reading.  (gs_init.ps)
6991
 
6992
</pre><h3><a name="V3.22_Drivers"></a>Drivers</h3><pre>
6993
 
6994
Fixes bugs:
6995
	- The dfax drivers incorrectly set EncodedByteAlign to false.
6996
(gdevdfax.c)
6997
	- softwareValue and dateTimeValue were declared as byte rather than
6998
char.  (gdevtfax.c)
6999
 
7000
</pre><h3><a name="V3.22_Platforms"></a>Platforms</h3><pre>
7001
 
7002
Fixes bugs:
7003
	- The VMS DEC C compilers declare delete in unixio.h, and doesn't
7004
declare unlink anywhere.  (stdio_.h)
7005
	- The VMS compilers declare malloc and free in stdlib.h, which
7006
wasn't being included in malloc_.h.  (malloc_.h)
7007
	- The SCO Unix C compiler needs both &lt;sys/time.h&gt; and &lt;time.h&gt;.
7008
(time_.h)
7009
	- The VMS compilers declare abs in stdlib.h, which wasn't being
7010
included anywhere.  (gshtscr.c)
7011
	- The definition for A4 paper in VMS-AXP.MAK was incorrect.
7012
(vms-axp.mak)
7013
 
7014
Renames VMS-AXP.MAK as VMS-DECC.MAK, with some changes that make it
7015
appropriate for DEC C on both VAX and AXP platforms.  (vms-axp.mak =&gt;
7016
vms.decc.mak)
7017
 
7018
</pre><h3><a name="V3.22_Fonts"></a>Fonts</h3><pre>
7019
 
7020
Fixes bugs:
7021
	- gs_kanji.ps got an invalidaccess error.  (gs_kanji.ps)
7022
 
7023
</pre><h3><a name="V3.22_Interpreter"></a>Interpreter</h3><pre>
7024
 
7025
Fixes bugs:
7026
	- An off-by-1 test in the roll operator caused it to smash the
7027
stack if the operand stack had overflowed into additional blocks.
7028
(zstack.c)
7029
	- The default CIE color rendering dictionary didn't assume a
7030
reasonable intermediate (XYZ) space.  (gs_lev2.ps)
7031
	- CIE color mapping tables weren't traced properly by the garbage
7032
collector.  (gscie.h, gscie.c, zcie.c)
7033
	- If the very last character of a file was a ^M, the scanner
7034
(incorrectly) signaled a syntaxerror.  (iscan.c)
7035
	- If an operator could return both a typecheck and a
7036
stackunderflow, it always returned a stackunderflow, which doesn't match
7037
the behavior of Adobe interpreters.  (opcheck.h, idparam.c, interp.c,
7038
iutil.c, z*.c)
7039
	- astore, dictstack, and execstack could return a spurious
7040
invalidaccess error (or fail to detect an invalid access) if the operand
7041
stack had overflowed into additional blocks.  (istack.c)
7042
	- The garbage collector didn't relocate pointers to names!  (Bug
7043
introduced in 3.20.)  (iname.h)
7044
	- If the dictionary stack overflowed into additional blocks, the
7045
cached value pointer for a name could get set incorrectly, and also not get
7046
relocated by the garbage collector.  (idict.c)
7047
	- If the dictionary stack overflowed into additional blocks, the
7048
post-GC fixup of cached value pointers in names could cause an addressing
7049
error.  (igc.c)
7050
	- With the -Z? switch set, the garbage collector could incorrectly
7051
report that objects or strings weren't in any chunk.  (igc.c)
7052
	- &lt;&lt; /a 1 /a 2 &gt;&gt; /a get gave the value 2 rather than 1.
7053
(gs_init.ps)
7054
	- Numbers in binary object sequences and encoded number arrays
7055
didn't work properly on machines where sizeof(short) != 2 or sizeof(long)
7056
!= 4.  (ibnum.c)
7057
	- The put operator for dictionaries allowed null as a key.
7058
(idict.h, idict.c)
7059
	- &gt;&gt; didn't give an error if there were an odd number of values on
7060
the stack above the next mark.  (gs_init.ps)
7061
	- Operations that explicitly freed ref objects (setting a CIE
7062
colorspace, resizing a dictionary, popping a block off a stack) could
7063
corrupt storage.  (ialloc.c)
7064
	- The -Z@ switch, which fills freed blocks with a recognizable bit
7065
pattern, could incorrectly overwrite freed blocks in previous save levels,
7066
causing invalid memory accesses.  (ialloc.c)
7067
	- Since streams freed by a restore weren't marked as free, they
7068
could confuse the garbage collector and lead to invalid memory accesses.
7069
(zfile.c)
7070
	- If one of the built-in dictionaries overflowed during
7071
initialization, no error was reported -- entries were simply discarded.
7072
(iinit.c)
7073
	- If the level2.dev feature was combined with certain other
7074
features, the current languagelevel was 2 when some gs_*.ps files were
7075
loaded, causing them to load incorrectly.  (gs_btokn.ps, gs_setpd.ps)
7076
	- If readline read a line that ended with only a CR (no LF)
7077
followed by an end-of-file, it incorrectly closed the stream.  (zfileio.c)
7078
 
7079
Adds a .cond operator, similar to the Lisp multi-arm conditional.
7080
(zcontrol.c)
7081
 
7082
Adds a .makeglobaloperator operator, allowing the definition of operator
7083
procedures in local VM that turn into global operators, provided the save
7084
level is zero.  (iref.h, opdef.h, iinit.c, interp.c, zmisc.c)
7085
 
7086
Note: the fix for returning typecheck vs. stackunderflow requires that all
7087
operators (or other code) that uses return_error(e_typecheck) to indicate
7088
an incorrect object type on the operand stack must change this to
7089
return_op_typecheck(op), where op points to the operand.  THIS IS A
7090
NON-BACKWARD-COMPATIBLE CHANGE.
7091
 
7092
Implements string array and name array parameters for parameter lists.
7093
(gsparam.h, iparam.c)
7094
 
7095
Brings filterdict inside the INITIAL_DICTIONARIES conditional.  (iinit.c)
7096
 
7097
Adds a .currentscreenlevels operator that returns the number of
7098
distinguishable halftone levels.  (zht.c)
7099
 
7100
</pre><h3><a name="V3.22_Streams"></a>Streams</h3><pre>
7101
 
7102
Fixes bugs:
7103
	- The 2-D case of CCITTFaxDecode could get confused by an input
7104
data buffer boundary that fell immediately after a horizontal code.
7105
(scfd.c)
7106
	- The LZW decoder didn't detect invalid data unless DEBUG was
7107
selected at build time.  (slzwd.c)
7108
 
7109
</pre><h3><a name="V3.22_Library"></a>Library</h3><pre>
7110
 
7111
Fixes bugs:
7112
	- The clipping region accumulator could refer to a clipping
7113
rectangle even after it had been freed.  (No effect on execution unless the
7114
-Z@ switch was selected.)  (gxacpath.c)
7115
	- setbbox expanded the bounding box, but didn't place a limit on
7116
further path elements, if the current path wasn't empty.  (gsdps1.c)
7117
	- setbbox didn't make sufficient allowance for rounding.
7118
(gsdps1.c)
7119
 
7120
Implements the ProcessColorModel parameter (read-only) for all devices.
7121
(gsdparam.c)
7122
 
7123
Adds a gs_currentscreenlevels procedure that returns the number of
7124
distinguishable halftone levels.  (gsht.c)
7125
 
7126
</pre>
7127
 
7128
<h2><a name="Version3.21"></a>Version 3.21 (beta) (11/17/94)</h2>
7129
 
7130
<p>
7131
This is primarily a bug fix release.  It also includes a substantial
7132
improvement in the Type 1 font hinting algorithms.  This release was not
7133
distributed to the public.
7134
 
7135
<h3><a name="V3.21_Documentation"></a>Documentation</h3><pre>
7136
Fixes bugs:
7137
	- The `man' page referred to gnu.ghostscript.bug rather than
7138
comp.lang.postscript.  (gs.1)
7139
 
7140
Documents the special entries in operator definition tables that allow
7141
switching dictionaries.  (opdef.h)
7142
 
7143
</pre><h3><a name="V3.21_Procedures"></a>Procedures</h3><pre>
7144
 
7145
Moves the definition of JSRCDIR to the individual platform makefiles, to
7146
make it easier to change on platforms that don't have file links.  (*.mak)
7147
 
7148
</pre><h3><a name="V3.21_Utilities"></a>Utilities</h3><pre>
7149
 
7150
Fixes bugs:
7151
	- ansi2knr didn't recognize that a line ending with } couldn't be a
7152
function definition.  (ansi2knr.c)
7153
	- ps2epsi always returned an empty bounding box.  (ps2epsi,
7154
ps2epsi.bat)
7155
 
7156
</pre><h3><a name="V3.21_Drivers"></a>Drivers</h3><pre>
7157
 
7158
Fixes bugs:
7159
	- The bitrgb device had an invalid depth of 3.  (gdevbit.c)
7160
 
7161
Replaces the color mapping code in the X driver with a much faster
7162
algorithm, courtesy of Tim Theisen.  (gdevx.h, gdevx.c, gdevxini.c)
7163
 
7164
</pre><h3><a name="V3.21_Platforms"></a>Platforms</h3><pre>
7165
 
7166
Fixes bugs:
7167
	- Two variable names were misspelled.  (gdevpm.c, gp_mswin.c)
7168
	- It wasn't possible to compile a non-DLL configuration under OS/2.
7169
(os2.mak)
7170
	- Compilation under Microsoft C/C++ 8.0 gave errors.  (gp_mswin.h,
7171
gp_mswin.c, gshtscr.c)
7172
 
7173
Adds some more devices to the OS/2 makefile.  (os2.mak)
7174
 
7175
</pre><h3><a name="V3.21_Fonts"></a>Fonts</h3><pre>
7176
 
7177
Fixes bugs:
7178
	- wrfont.ps, and hence bdftops, didn't write out the FontType or
7179
PaintType.  (Bug introduced since 2.6.1)  (wrfont.ps)
7180
	- wrfont.ps omitted a 'begin' and 'end', causing -! or -| to be
7181
undefined when the font was loaded.  (Bug introduced since 2.6.1)
7182
(wrfont.ps)
7183
 
7184
</pre><h3><a name="V3.21_Interpreter"></a>Interpreter</h3><pre>
7185
 
7186
Fixes bugs:
7187
	- make_tasv_old called make_tasv_new with extra arguments.
7188
(store.h)
7189
	- currentcacheparams only returned 2 values instead of 3.
7190
(zfont.c)
7191
	- ustroke popped one element too many off the stack if a matrix was
7192
supplied.  (zupath.c)
7193
	- inu[eo]fill popped one element too many off the stack.
7194
(zupath.c)
7195
	- The color rendering dictionary was initialized to null rather
7196
than a valid dictionary.  (gs_lev2.ps)
7197
	- An invalid IODevice resource named "9" got created.  (gs_res.ps)
7198
	- bytesavailable often caused an error rather than returning -1.
7199
(zfileio.c, stream.c)
7200
	- The insideness testing operators always returned true if the
7201
aperture was defined by a user path rather than a point.  (zupath.c)
7202
	- If INITIAL_DICTIONARIES was defined in the makefile, the
7203
definition of the initial_dictionaries array was missing a comma.
7204
(iinit.c)
7205
	- Even if userdict appeared in INITIAL_DICTIONARIES, gs_init.ps set
7206
its maxlength to 200.  (gs_init.ps)
7207
	- Setting a CIE color space left a garbage value on the stack.
7208
(zcie.c)
7209
	- If a file or filter was opened and then closed, opening a file
7210
subsequently within a 'save' could lead to a memory access error in the
7211
garbage collector.  (zfile.c)
7212
	- Setting an Indexed or Separation color space could cause a crash
7213
either in the garbage collector or when printing out the e-stack.
7214
(icsmap.h, zcsindex.c, zcssepr.c)
7215
	- Invoking a filter with an invalid data source or sink could cause
7216
a memory access error (bug introduced in 3.20).  (zfilter.c)
7217
	- Invoking stringwidth on a font whose BuildChar procedure did a
7218
save could cause a memory manager error or infinite loop, because
7219
stringwidth attempted to use an inapplicable shortcut.  (gschar.c)
7220
	- The bounding box for rendering stroked Type 1 characters didn't
7221
take square caps and miter joins into account.  (gs_type1.ps)
7222
	- Invoking filter with DCTDecode or DCTEncode could cause an
7223
addressing error if no dictionary argument was supplied.  (zfdctd.c,
7224
zfdcte.c)
7225
	- The Generic resource, the Font resource, and half a dozen
7226
resources with no predefined instances all shared the same Instances
7227
dictionary.  (gs_res.ps)
7228
	- The temporary null device allocated for stringwidth was never
7229
freed.  (gschar.h, gschar.c, zchar.c)
7230
	- Internal operators, and structures that might be freed on stack
7231
unwinding, could "escape" from the e-stack.  (zcontrol.c, ztype.c)
7232
	- makefont and scalefont didn't properly handle a font whose
7233
Encoding had been changed.  (bfont.h, zfont.c, zfont2.c)
7234
	- Type 1 fonts with PaintType = 2 incorrectly checked for an xfont.
7235
(gxfont.h, gschar.c, gsfont.c, zchar1.c, zfont1.c, zfont2.c)
7236
	- Specifying a string argument with -d...=(...) or -d...=&lt;...&gt;
7237
would cause an invalidaccess error.  (gs.c)
7238
	- The environment for encapsulated jobs didn't rebind quit to stop
7239
in userdict.  (gs_lev2.ps)
7240
	- restore didn't deal properly with open files on the e-stack.
7241
(zvmem.c)
7242
	- Even with the '-' switch, Ghostscript would try to read ahead in
7243
the input stream rather than processing input character-by-character.
7244
(ziodev.c)
7245
	- If an error occurred with a unreadable dictionary on any stack,
7246
the standard error printer would get into an error loop and exit the
7247
interpreter.  (gs_init.ps)
7248
	- The for_roots macro in igc.c used ap rather than mem as its
7249
second formal parameter.  (This typo had no effect on the executable
7250
program.)  (igc.c)
7251
	- If saving the stacks for an error caused a GC request, a value
7252
could get stored into an improper variable on the C stack, causing havoc.
7253
(interp.c)
7254
	- setdash checked to make sure that the distance array had read
7255
access; Adobe interpreters don't check this.  (zgstate.c)
7256
	- The roots for gs_run_string and gs_interpret weren't registered
7257
properly, which could cause a dangling reference in the case of a restore
7258
whose save had been done earlier.  (gsmain.c, interp.c)
7259
 
7260
Adds an OpenOutputFile Boolean device parameter for printer devices; if
7261
true, the device opens the OutputFile at the time the device is opened,
7262
instead of waiting for the first showpage.  This helps with synchronization
7263
when the OutputFile is a pipe.  (gdevprn.h, gdevprn.c)
7264
 
7265
Changes the BEGIN/END_OP_DEFS macros to require an explicit { and } at each
7266
use.  (gsmain.c, interp.c, z*.c)
7267
 
7268
Arranges things so that the operators that the interpreter handles
7269
specially are assigned the first N operator indices [internal change only].
7270
(interp.h, iinit.c, interp.c)
7271
 
7272
Changes the operators max and min to .max and .min, to avoid conflicts with
7273
PostScript programs that use these names for variables and also use 'bind'.
7274
THIS IS A NON-BACKWARD-COMPATIBLE CHANGE from programs that depend on
7275
'bind' binding in these operators; however, we have also defined procedures
7276
max and min that just call the operators, which should take care of any
7277
ordinary code.  (*.ps, zrelbit.c)
7278
 
7279
</pre><h3><a name="V3.21_Streams"></a>Streams</h3><pre>
7280
 
7281
Fixes bugs:
7282
	- The pfb_state pointer in the eexecDecode filter state wasn't
7283
marked as traceable for the garbage collector.  (sfilter.h)
7284
	- The eexec decoding filter could access invalid memory or return
7285
garbage under some conditions.  (Bug introduced in 3.12.)  (zmisc1.c)
7286
	- The eexec decoding filter would incorrectly ask for more input if
7287
the output buffer was full.  (seexec.c)
7288
 
7289
</pre><h3><a name="V3.21_Library"></a>Library</h3><pre>
7290
 
7291
Fixes bugs:
7292
	- Some compilers reserve the word 'try'.  (gshtscr.c)
7293
	- Some compilers don't like line continuations (\) within a
7294
preprocessor macro formal parameter list.  (gdevprn.h, gxdevice.h)
7295
	- Memory devices created with an inverted palette (0=white,
7296
1=black) interchanged white and black in fill operations.  (gdevmem1.c)
7297
	- The 'bits' variable in mem_mono_copy_mono was unused on
7298
little-endian machines.  (gdevmem1.c)
7299
	- Some garbage collector procedures were declared 'private'
7300
inconsistently.  (gscie.c)
7301
	- The new anti-aliased text capability accidentally caused all
7302
characters to be oversampled.  (gschar.c)
7303
	- Type 1 fonts with PaintType = 2 and StrokeWidth = 0 came out with
7304
many pixels missing because of oversampling.  (gschar.c)
7305
	- Type 1 font stem hints were not being processed correctly.
7306
(gstype1.h, gxtype1.h, gstype1.c, gxhint2.c, gxhint3.c, gxpath.c)
7307
	- The tracing message for 9/7 composite fonts incorrectly
7308
identified them as 1/7 fonts.  (gschar0.c)
7309
	- If a 1/7 or 9/7 composite font was a child of a non-modal font,
7310
the font number of the child font was computed incorrectly.  (gschar0.c)
7311
 
7312
Splits up the various memory devices into one file per depth [internal
7313
change only].  (gdevm*.c)
7314
 
7315
</pre>
7316
 
7317
<h2><a name="Version3.20"></a>Version 3.20 (beta) (10/31/94)</h2>
7318
 
7319
<p>
7320
This version contains some support for a PDF interpreter; however, the PDF
7321
code itself is not ready for release yet.  It also includes anti-aliased text
7322
capability.  This release was not distributed to the public.
7323
 
7324
<h3><a name="V3.20_Documentation"></a>Documentation</h3><pre>
7325
Notes that the FAQ has moved to smallo.ruhr.de:pub/ghost/gs.faq.  (readme)
7326
 
7327
Documents various implementation limits.  (language.doc)
7328
 
7329
</pre><h3><a name="V3.20_Procedures"></a>Procedures</h3><pre>
7330
 
7331
Fixes bugs:
7332
	- bcp.dev wasn't included in the list of dependencies for
7333
level1.dev.  (gs.mak)
7334
 
7335
Changes the printout of version numbers so that it is always A.BC,
7336
rather than A.B if C is zero.  (gs.c, gs_init.ps)
7337
 
7338
</pre><h3><a name="V3.20_Utilities"></a>Utilities</h3><pre>
7339
 
7340
Fixes bugs:
7341
	- font2c didn't correctly handle Metrics or Metrics2 dictionaries
7342
whose entries were arrays rather than scalars.  (font2c.ps, ccfont.h,
7343
iccfont.c)
7344
	- font2c didn't handle CDevProc.  (font2c.ps, ccfont.h, iccfont.c)
7345
	- genconf could get a stack overflow on small machines.
7346
(genconf.c)
7347
 
7348
Changes mergeini.ps so it can take arguments on the command line specifying
7349
the input and output files.  (mergeini.ps)
7350
 
7351
Adds a gsdj500 shell script to parallel gsdj500.bat.  (gsdj500)
7352
 
7353
</pre><h3><a name="V3.20_Drivers"></a>Drivers</h3><pre>
7354
 
7355
Fixes bugs:
7356
	- The X driver didn't mask dynamically assigned colors properly, so
7357
it could request the same color over and over again.  (gdevx.c)
7358
 
7359
Adds two alternate X Windows drivers, for helping debug drivers with other
7360
color models:
7361
	- x11alpha, an RGB device with 4-bit alpha capability (for
7362
	  copy_alpha only);
7363
	- x11cmyk, a 1-bit-per-component CMYK device.
7364
(devs.mak, gdevxalt.c)
7365
 
7366
Changes the left margin of the lj4dith driver to 0.26".  (gdevcdj.c)
7367
 
7368
</pre><h3><a name="V3.20_Platforms"></a>Platforms</h3><pre>
7369
 
7370
Fixes bugs:
7371
	- If &lt;sys/time.h&gt; didn't exist, time_.h didn't always include
7372
&lt;time.h&gt;.  (time_.h)
7373
	- The OS/2 platform wouldn't compile.  (gdevpm.c)
7374
	- The auxiliary VMS command files sometimes got blank lines
7375
inserted when going through EOL conversion.  (vms.mak; delete gs_.com)
7376
	- The VMS makefiles didn't include the Level 1 operators in
7377
level1.dev.  (vms.mak)
7378
	- The VMS gcc makefile didn't handle undefined DEVICE_DEVSn
7379
variables properly.  (vms*.mak)
7380
	- The VMS makefiles didn't recognize DEVICE_DEVS{1,2,5,7}.
7381
(vms.mak)
7382
 
7383
At the request of a Unix expert, changes all the Unix shell scripts to use
7384
exec gs ... "$@" rather than gs ... $*.  (gsnd, gsbj, gsdj, gslj, gslp)
7385
 
7386
Modifies the JPEG library so that it uses 4K less of the automatic data
7387
segment in 16-bit environments.  (bcwin.mak, jpeg.mak, sjpeg.c, sjpegerr.c)
7388
 
7389
Adds the bmp drivers back into the 16-bit MS Windows executable, since they
7390
will fit now.  (bcwin.mak)
7391
 
7392
</pre><h3><a name="V3.20_Fonts"></a>Fonts</h3><pre>
7393
 
7394
Makes the font substitution algorithm recognize the word Roman as calling
7395
for a serif font.  (gs_fonts.ps)
7396
 
7397
</pre><h3><a name="V3.20_Interpreters"></a>Interpreters</h3><pre>
7398
 
7399
Fixes bugs:
7400
	- The fix in 3.13 for the inexact function values at 0 didn't work.
7401
(zcontrol.c)
7402
	- Level 1 configurations referenced an undefined procedure
7403
gs_currenthalftone.  (gsht.c, gsht1.c)
7404
	- Specifying any device properties (including -r and -g) on the
7405
command line caused an error.  (gs_init.ps)
7406
	- The forward declaration of cfont_name_array_create was
7407
incorrect.  (iccfont.c)
7408
	- save and restore could get called before the graphics state stack
7409
had been initialized properly.  (gs_mex_e.ps)
7410
	- Some encodings weren't loaded properly.  (gs.mak, gs_mex_e.ps,
7411
gs_mro_e.ps, gs_pdf_e.ps, gs_wan_e.ps)
7412
	- Zero-height images were allowed, but zero-width images
7413
weren't.  (zpaint.c)
7414
	- Neither zero-width nor zero-height images popped their
7415
arguments from the operand stack.  (zpaint.c)
7416
	- lib_file_fopen overwrote its file name argument, causing havoc
7417
with @-files.  (gxiodev.h, gdevpipe.c, gsiodev.c, zfile.c)
7418
	- The garbage collector got confused if there were any arrays or
7419
dictionaries with 8K or more elements.  (igcref.c)
7420
	- &gt;&gt; could leave the stacks in a questionable state if it failed.
7421
(gs_init.ps)
7422
	- The Category resource category didn't implement undefineresource.
7423
(gs_res.ps)
7424
	- When the token operator read the last token from a string, it
7425
left an unchanged string on the stack instead of an empty string.
7426
(stream.c)
7427
	- noaccess didn't give an invalidaccess error when applied to the
7428
permanent dictionaries.  (dstack.h, idict.c, ztype.c)
7429
	- Overflowing the exec stack wasn't handled properly.  (istack.h,
7430
istack.c)
7431
	- The garbage collector cleared the cached value pointers in names,
7432
causing interpretation to slow down substantially.  (idict.c, igc.c,
7433
iname.c)
7434
	- 0 dict created a dictionary with a maxlength of 1.  (idict.c)
7435
 
7436
Changes the default size of the execution stack from 150 to 250, to match
7437
the Adobe "typical" value.  (interp.c)
7438
 
7439
Moves the operator definitions out of the automatic data segment.
7440
(opdef.h, iinit.c, z*.c)
7441
 
7442
Adds operators that allow creation of objects in system space:
7443
.systemvmstring, .systemvmarray, .systemvmpackedarray, .systemvmdict,
7444
.systemvmcheck.  (zsysvm.c)
7445
 
7446
Renames gcdefs.h as gscdefs.h.
7447
 
7448
Allocates names in system space rather than global space.  (gsmain.c)
7449
 
7450
Changes the memory manager so that it allows programs to create objects in
7451
system space.  (iref.h, iutil.h, ivmspace.h, ...)
7452
 
7453
Changes the implementation of filters so they appear in their own
7454
dictionary named filterdict.  (gs_init.ps, z*.c)
7455
 
7456
Changes the implementation of color spaces so each one has its own
7457
setcolorspace procedure, defined in a new dictionary named
7458
colorspacedict.  (gs_lev2.ps, z*.c)
7459
 
7460
Adds a new debugging switch, $, that always initializes all fields in a
7461
ref, in order to keep Purify happy.  (store.h)
7462
 
7463
</pre><h3><a name="V3.20_Library"></a>Library</h3><pre>
7464
 
7465
Fixes bugs:
7466
	- The page size for image devices was always set to (0, 0).
7467
(gsdevice.c)
7468
	- The PageSize computation in gx_default_put_params could overflow
7469
on 16-bit machines.  (gsdparam.c)
7470
	- An omitted 'static' on an initialized array caused a compiler
7471
error.  (gxccman.c)
7472
	- If interpolated image rendering was requested but not
7473
actually carried out, gs_image_cleanup could attempt to free a random
7474
pointer.  (gsimage.c)
7475
	- Some compilers only retain 23 characters of procedure names, but
7476
some procedure names weren't unique in the first 23 characters.  (gscie.c,
7477
gscolor.c, gscolor1.c, gxcmap.c)
7478
	- The garbage collector didn't trace device colors properly.
7479
(gxdcolor.h, gzht.h, gsimage1.c, gspcolor.c, gxcht.c, gxcmap.c, gxdraw.c,
7480
gxht.c)
7481
	- For CMYK devices, the transfer functions were being applied to
7482
the CMYK values rather than the complemented RGBW values.  (gxcmap.c)
7483
	- Memory devices used their own color mapping procedures rather
7484
than those of the target; this could cause incorrect colors for patterns on
7485
devices with more than 1 bit per pixel.  (gxdevmem.h, gdevmem1.c, gdevpm.c,
7486
gdevprn.c, gdevwdib.c, gschar.c, gsdevice.c, gxccache.c, gxccman.c,
7487
gxclip2.c, gxclread.c, gxpcmap.c)
7488
	- The garbage collector didn't trace image enumerators properly in
7489
the image_render_simple case.  (gsimage.c)
7490
	- stroke produced different-looking output for thin (zero-width)
7491
lines depending on whether or not clipping was invoked.  (gxstroke.c)
7492
	- If a clipping list changed from multiple rectangles to a single
7493
rectangle, it could fail to clip properly thereafter.  (gxacpath.c)
7494
 
7495
Adds two new device procedures: alpha_bits and copy_alpha.  This change is
7496
backward-compatible for all existing devices.  (gdevmem.h, gxdevice.h,
7497
gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
7498
 
7499
Changes the implementation of color halftones so that, when appropriate, it
7500
generates a single cell and uses the device tile_rectangle procedure.
7501
(gzht.h, gsht.c, gxcht.c, gxclist.c, gxclread.c)
7502
 
7503
Adds partial support for the Orientation page device parameter.
7504
(gsdevice.c)
7505
 
7506
Adds support for anti-aliased characters using 2 or 4 bits of alpha.
7507
(gxfcache.h, gschar.c, gxccache.c)
7508
 
7509
</pre>
7510
 
7511
<hr>
7512
 
7513
<h2><a name="Version3.13"></a>Version 3.13(private) (10/3/94)</h2>
7514
 
7515
<p>
7516
This release was created for a customer; it was not distributed to the
7517
public.
7518
 
7519
<h3><a name="V3.13_Documentation"></a>Documentation</h3><pre>
7520
Notes in make.doc that the file names in the IJG archive distributed with
7521
Ghostscript do not include the gsA.BC/ prefix.  (make.doc)
7522
 
7523
Adds a cross-reference to make.doc to the Watcom makefiles.  (watc.mak,
7524
watcwin.mak, wccommon.mak)
7525
 
7526
</pre><h3><a name="V3.13_Procedures"></a>Procedures</h3><pre>
7527
 
7528
Fixes bugs:
7529
	- The makefile rule for gconfig.h et al had a couple of blank lines
7530
in the middle of it.  (gs.mak)
7531
 
7532
</pre><h3><a name="V3.13_Utilities"></a>Utilities</h3><pre>
7533
 
7534
Fixes bugs:
7535
	- wrfont.ps didn't add a lenIV entry to the Private dictionary if
7536
it was needed.  (wrfont.ps)
7537
 
7538
Adds a packfile.ps utility that allows compressing multiple files into a
7539
single file for environments with very little permanent storage.
7540
(gs_pfile.ps, packfile.ps, wrfont.ps)
7541
 
7542
</pre><h3><a name="V3.13_Drivers"></a>Drivers</h3><pre>
7543
 
7544
Fixes bugs:
7545
	- The {tiff,fax}{g32d,g4} devices could produce incorrect output.
7546
See under Streams below.
7547
	- The dfax drivers referred to the obsolete structure member
7548
EncodedEOLAlign.  (gdevdfax.c)
7549
 
7550
Changes the default bit order for TIFF/F output to little-endian, which is
7551
apparently what the majority of TIFF decoders like best.  The bit order for
7552
the fax drivers is still big-endian.  (gdevdfax.c, gdevtfax.c)
7553
 
7554
</pre><h3><a name="V3.13_Platforms"></a>Platforms</h3><pre>
7555
 
7556
Fixes bugs:
7557
	- The VMS build script used -a rather than -w for creating
7558
gconfig_.h.  (vms.mak)
7559
	- The VMS build script didn't create gconfigv.h.  (vms.mak)
7560
	- The VMS Fontmap had incorrect entries for the Bitstream Charter
7561
fonts.  (fontmap.vms)
7562
	- The VMS MODULES.LIS file assumed the JPEG library files were in
7563
directory JPEG rather than JPEG-5.  (modules.lis)
7564
 
7565
</pre><h3><a name="V3.13_Fonts"></a>Fonts</h3><pre>
7566
 
7567
Fixes bugs:
7568
	- Using DISKFONTS resulted in an invalidaccess error.
7569
(gs_fonts.ps)
7570
 
7571
</pre><h3><a name="V3.13_Interpreter"></a>Interpreter</h3><pre>
7572
 
7573
Fixes bugs:
7574
	- The standard transfer function considered gray values above
7575
roughly 0.994 equivalent to white; 0.999 is a better value.  (gs_init.ps)
7576
	- The transfer, black generation, and undercolor removal functions
7577
gave slightly inexact results for an input value of 0.  (zcolor.c,
7578
zcontrol.c)
7579
	- setpagedevice gave an /undefined error if it did not recognize a
7580
key, rather than ignoring the key.  (zdevice.c, gs_init.ps, gs_lev2.ps,
7581
gs_setpd.ps)
7582
 
7583
Changes .putdeviceparams to take an additional argument, a Boolean that
7584
says whether or not unrecognized keys should be reported as /undefined
7585
errors.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no user-written
7586
code should be calling .putdeviceparams.  (zdevice.c)
7587
 
7588
</pre><h3><a name="V3.13_Streams"></a>Streams</h3><pre>
7589
 
7590
Fixes bugs:
7591
	- The Group 3 2-D and Group 4 fax encoders could emit incorrect
7592
output.  (scfe.c)
7593
	- The algorithm for constructing optimal Huffman codes could
7594
produce invalid codes in some rare cases.  (shcgen.c)
7595
 
7596
</pre><h3><a name="V3.13_Library"></a>Library</h3><pre>
7597
 
7598
Fixes bugs:
7599
	- Rectangles closed with lineto rather than closepath weren't
7600
recognized as rectangles.  (This only affected performance, not
7601
functionality.)  (gxpath2.c)
7602
	- The xfont lookup_font procedure could get called with a matrix
7603
whose translation components had never been initialized.  (gxccman.c)
7604
	- Some compilers don't allow \ in the formal argument list of a
7605
preprocessor macro.  (gdevprn.h, gxdevice.h)
7606
 
7607
</pre>
7608
 
7609
<h2><a name="Version3.12"></a>Version 3.12 (9/29/94)</h2>
7610
 
7611
<p>
7612
This is another bug fix release, the first Level 2 release that we believe
7613
is reasonably reliable.
7614
 
7615
<h3><a name="V3.12_Documentation"></a>Documentation</h3><pre>
7616
 
7617
Adds some text warning about making copies of the makefile.  (make.doc)
7618
 
7619
</pre><h3><a name="V3.12_Procedures"></a>Procedures</h3><pre>
7620
 
7621
Fixes bugs:
7622
	- There were a number of unnecessary dependencies on $(MAKEFILE) in
7623
gs.mak, left over from before the existence of gconfigv.h.  (gs.mak)
7624
	- JPEGSRC was defined in gs.mak rather than in jpeg.mak.  (gs.mak,
7625
jpeg.mak)
7626
 
7627
Changes the version numbering scheme back to A.BC, since people seem to be
7628
adapting to the change, and this allows using the version number directly
7629
as a MS-DOS directory name.  (gconfig.c, gdevtfax.c, gs.c, gs_init.ps)
7630
 
7631
Updates the JPEG library to version 5 (official release) of the IJG code.
7632
(jpeg/*, jpeg.mak)
7633
 
7634
</pre><h3><a name="V3.12_Drivers"></a>Drivers</h3><pre>
7635
 
7636
Fixes bugs:
7637
	- The TIFF/F driver put out invalid PageNumber and Software
7638
entries.  (gdevtifs.h, gdevtfax.c)
7639
	- The TIFF/F and fax Group 3 2-D drivers used K=3 and K=5 instead
7640
of K=2 and K=4.  (gdevtfax.c)
7641
	- The TIFF/F and fax Group 3 2-D drivers emitted improperly aligned
7642
output.  (See under Streams below.)
7643
	- The MS Windows driver didn't resize the window properly in
7644
response to changing the device parameters.  (gdevmswn.c)
7645
 
7646
Because of complementary bugs in various C compilers, changes all the
7647
non-printer devices to use a different set of macros.  (gdevmem.h,
7648
gdevpcfb.h, gdevprn.h, gdevsvga.h, gxdevice.h, gdev{3b1, bgi, herc, l256,
7649
pe, pm, sun, vglb, wddb, wdib, wprn, x}.c, gsdevice.c, gxacpath.c,
7650
gxclip2.c, gxcpath.c, gxpcmap.c, zupath.c)
7651
 
7652
Changes the X11 driver to ignore the "margins" specified by Ghostview.
7653
This is apparently necessary for Ghostview to handle landscape display
7654
properly.  (gdevxini.c)
7655
 
7656
Adds a WindowID parameter to the X11 device, to allow setting the window
7657
for the output.  (gdevx.h, gdevx.c, gdevxini.c)
7658
 
7659
</pre><h3><a name="V3.12_Platforms"></a>Platforms</h3><pre>
7660
 
7661
Fixes bugs:
7662
	- The definition of BEGINFILES in os2.mak occurred too late in the
7663
file to have the desired effect.  (os2.mak)
7664
 
7665
</pre><h3><a name="V3.12_Interpreter"></a>Interpreter</h3><pre>
7666
 
7667
Fixes bugs:
7668
	- Updating the list of allocated file objects at a restore didn't
7669
clear the prev pointer of the new head, which could cause the garbage
7670
collector to encounter an invalid pointer.  (Bug introduced by .forgetsave
7671
in 3.0.3.)  (zfile.c)
7672
 
7673
</pre><h3><a name="V3.12_Streams"></a>Streams</h3><pre>
7674
 
7675
Fixes bugs:
7676
	- The CCITTFaxEncode filter with K &gt; 0 and EncodedByteAlign = true
7677
incorrectly aligned the 1-D/2-D bit as the last bit of a byte, rather than
7678
the first bit.  (scfx.h, scfe.c)
7679
	- eexec could loop indefinitely under certain conditions.
7680
(seexec.c)
7681
	- eexec's algorithm for recognizing text vs. binary encoding didn't
7682
work properly in some cases that don't conform to the Adobe Type 1 Font
7683
Format documentation.  (seexec.c)
7684
	- Closing a stream didn't clear out the strm and state pointers,
7685
which could cause invalid accesses by the garbage collector.  (stream.c)
7686
 
7687
</pre><h3><a name="V3.12_Library"></a>Library</h3><pre>
7688
 
7689
Fixes bugs:
7690
	- fill_loop could loop indefinitely under certain conditions.
7691
(Introduced by a bug fix in 3.1.)  (gxfill.c)
7692
	- fill/eofill sometimes failed to paint parts of a region.
7693
(Introduced by a bug fix in 3.1.1.)  (gxfill.c)
7694
	- Non-convex clipping paths sometimes omitted thin horizontal
7695
slivers of the region.  (Probably introduced by the "thin graphics" fix in
7696
3.1.)  (gxacpath.c)
7697
 
7698
</pre>
7699
 
7700
<h2><a name="Version3.1.1"></a>Version 3.1.1 (9/25/94)</h2>
7701
 
7702
<p>
7703
This is primarily a bug fix release.  It was originally intended for some
7704
commercial licensees, but beta testers found too many problems with it.
7705
 
7706
<h3><a name="V3.1.1_Documentation"></a>Documentation</h3><pre>
7707
 
7708
Fixes bugs:
7709
	- NEWS didn't indicate that there was a non-backward-compatible
7710
change in the gx_device structure -- specifically, that l_margin,
7711
b_margin, r_margin, and t_margin were replaced by macros named
7712
dev_l_margin(dev), etc.  (news)
7713
 
7714
Describes the two-phase commit requirement for device put_params
7715
procedures.  (drivers.doc, gsparam.h)
7716
 
7717
</pre><h3><a name="V3.1.1_Procedures"></a>Procedures</h3><pre>
7718
 
7719
Fixes bugs:
7720
	- The new S macro in genarch.c didn't work on compilers that do
7721
macro substitution within string constants (which is forbidden by the ANSI
7722
standard).  (genarch.c)
7723
 
7724
</pre><h3><a name="V3.1.1_Drivers"></a>Drivers</h3><pre>
7725
 
7726
Fixes bugs:
7727
	- Driver put_params implementations didn't observe a "two-phase
7728
commit" discipline; this could lead to the current device in the graphics
7729
state being closed, and other inconsistencies.  (gsparam.h, gxdevice.h,
7730
iparam.h, gdevbit.c, gdevcdj.c, gdevmswn.c, gdevpcfb.c, gdevpm.c,
7731
gdevprn.c, gdevx.c, gsdevice.c, gsdparam.c, zdevice.c, ziodev2.c, zmisc2.c)
7732
THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, it only affects
7733
put_params implementations, of which there are few.
7734
 
7735
NOTE THE NON-BACKWARD-COMPATIBLE CHANGE IN THE gx_device STRUCTURE UNDER
7736
'Documentation' ABOVE.  (gdevescp.c, gdevsj48.c, gdevsppr.c, gdevxini.c)
7737
 
7738
</pre><h3><a name="V3.1.1_Platforms"></a>Platforms</h3><pre>
7739
 
7740
Ensures that the Unix makefiles all include all the variants of TIFF/F and
7741
fax drivers.  (ansihead.mak, cc-head.mak, gcc-head.mak)
7742
 
7743
</pre><h3><a name="V3.1.1_Interpreter"></a>Interpreter</h3><pre>
7744
 
7745
Fixes bugs:
7746
	- Most of the contents of statusdict were missing when
7747
running a Level 2 system in Level 1 mode.  (zmisc2.c)
7748
 
7749
</pre>
7750
 
7751
<h2><a name="Version3.1"></a>Version 3.1 (9/20/94)</h2>
7752
 
7753
<p>
7754
This release finally includes a usable subset implementation of
7755
setpagedevice, including all the machinery needed to address the
7756
long-standing "margins" problems.
7757
 
7758
<h3><a name="V3.1_Documentation"></a>Documentation</h3><pre>
7759
 
7760
Fixes bugs:
7761
	- t_oparray objects weren't identified as behaving differently
7762
depending on whether they were marked executable.  (iref.h)
7763
	- drivers.doc had gx_color_value instead of gx_color_index in
7764
the description of color mapping.  (drivers.doc)
7765
 
7766
Updates drivers.doc to reflect the change from static_procs to
7767
std_procs in the gx_device structure.  (drivers.doc)
7768
 
7769
</pre><h3><a name="V3.1_Procedures"></a>Procedures</h3><pre>
7770
 
7771
Fixes bugs:
7772
	- The commands for building the JPEG library used rm instead
7773
of rm -f.  (jpeg.mak)
7774
 
7775
</pre><h3><a name="V3.1_Drivers"></a>Drivers</h3><pre>
7776
 
7777
Fixes bugs:
7778
	- The X Windows driver hadn't been updated to reflect some
7779
name changes in members of the gx_color_info structure.  (gdevx.h,
7780
gdevx.c, gdevxini.c)
7781
 
7782
Changes all non-printer drivers so that they use the new std_device_body
7783
macros.  (gdev*.c)
7784
 
7785
Adds a print_page_copies procedure for printer drivers, allowing the
7786
driver to receive num_copies.  (gdevprn.h, gdevprn.c)
7787
 
7788
</pre><h3><a name="V3.1_Interpreter"></a>Interpreter</h3><pre>
7789
 
7790
Fixes bugs:
7791
	- ref_memory_enum/reloc_ptrs were declared inconsistently.
7792
(ialloc.c)
7793
	- If the operand of restore was invalid, the restore did
7794
nothing, instead of giving a typecheck.  (zvmem.c)
7795
	- In Level 2, the margins and setmargins compatibility
7796
operators were defined incorrectly in terms of current/setpagedevice.
7797
(gs_lev2.ps)
7798
 
7799
Enables .makeoperator to make local operators as well as global ones.
7800
(opdef.h, iinit.c, zmisc.c, zpacked.c)
7801
 
7802
Finishes implementing the TransferFunction entry in halftone
7803
dictionaries.  (zht1.c, zht2.c)
7804
 
7805
Adds .set/currentfilladjust operators for access to the fill
7806
adjustment parameter in the graphics state.  (zgstate.h)
7807
 
7808
Removes the deviceinitialmatrix operator.  (zdevice.c)
7809
 
7810
Changes defaultmatrix from a procedure to an operator.  (zmatrix.c)
7811
 
7812
Sets the fill adjustment to 0.5 for high-resolution devices, effectively
7813
implementing Adobe's any-part-of-pixel filling rule.  (gs_init.ps)
7814
 
7815
Implements a small but useful subset of setpagedevice.  (gs_lev2.ps)
7816
 
7817
</pre><h3><a name="V3.1_Streams"></a>Streams</h3><pre>
7818
 
7819
Fixes bugs:
7820
	- The eexec decoder incorrectly concluded that its data was
7821
in hex form if the first data character was whitespace.  (seexec.c)
7822
 
7823
</pre><h3><a name="V3.1_Library"></a>Library</h3><pre>
7824
 
7825
Fixes bugs:
7826
	- Thin graphics (e.g., lines or rectangles) with small angles
7827
relative to the X axis rendered with many points missing.  (gxdraw.c,
7828
gxfill.c)
7829
	- The character cache rejected oversampled characters if the
7830
scaled-up size was too large, even if the scaled-down size wasn't.
7831
(gxchar.h, gschar.c, gxccache.c, gxccman.c)
7832
	- A call on sqrt with an integer argument didn't promote it
7833
explicitly to double, which is required for non-ANSI compilers.
7834
(gshtscr.c)
7835
 
7836
Finishes implementing the TransferFunction entry in halftone
7837
dictionaries.  (gsht1.c)
7838
 
7839
Modifies the character oversampler so it can produce gray scale
7840
output instead of a 1-bit mask.  We don't actually make use of this
7841
ability yet.  (gxccman.c)
7842
 
7843
Adds gs_set/currentfilladjust for access to the fill adjustment
7844
parameter in the graphics state.  (gsstate.h, gsstate.c)
7845
 
7846
Changes the names of the last few routines beginning with gz_ to
7847
begin with gx_ instead.  (gzdraw.h =&gt; gxdraw.h, gsimage*.c, gxdraw.c,
7848
gxfill.c, gxstroke.c)
7849
 
7850
Properly implements the PageSize, Margins, .HWMargins, and ImagingBBox
7851
device parameters for all devices.  (gscoord.c, gsdparam.c, gspath2.c)
7852
Implements the NumCopies device parameter for printer devices.
7853
(gdevprn.c)
7854
 
7855
Implements std_device_body macros to help insulate statically initialized
7856
non-printer devices from future changes in the gx_device structure.
7857
(gxdevice.h, ... many .c files ...)
7858
 
7859
</pre>
7860
 
7861
<hr>
7862
 
7863
<h2><a name="Version3.0.3"></a>Version 3.0.3 (9/16/94)</h2>
7864
 
7865
<p>
7866
This is primarily a bug fix release; it also implements most of the
7867
remaining Level 2 loose ends (except for setpagedevice).
7868
 
7869
<h3><a name="V3.0.3_Documentation"></a>Documentation</h3><pre>
7870
 
7871
Changes code that refers to "Ghostscript" to use the correct product
7872
name from gs_product.  (gs.mak, gdevpbm.c, gdevsun.c, gswppm.c)
7873
 
7874
Documents the new .forgetsave operator.  (language.doc)
7875
 
7876
Clarifies the distinction between commercial licensing and single-copy
7877
end-user sales.  (readme)
7878
 
7879
</pre><h3><a name="V3.0.3_Procedures"></a>Procedures</h3><pre>
7880
 
7881
Fixes bugs:
7882
	- The compilation rule for gdevadmp.c was missing from the
7883
makefile.  (devs.mak)
7884
 
7885
Changes the version numbering scheme back to A.B.C, since too many
7886
people got confused by the change to A.BC.  (gconfig.c, gs.c,
7887
gs_init.ps)
7888
 
7889
Adds a -dNOGC switch to prevent the garbage collector from being
7890
enabled.  (gs_init.ps)
7891
 
7892
</pre><h3><a name="V3.0.3_Utilities"></a>Utilities</h3><pre>
7893
 
7894
Removes the ps2image utility, since the new psmono driver replaces it.
7895
 
7896
</pre><h3><a name="V3.0.3_Drivers"></a>Drivers</h3><pre>
7897
 
7898
Fixes bugs:
7899
	- The TIFF drivers incorrectly assumed that short and ulong
7900
were the same size as TIFF_short and TIFF_ulong, causing problems on
7901
64-bit systems.  (gdevtfax.c)
7902
	- The EGA/VGA driver didn't do gray halftones properly if it
7903
was configured as a monochrome or 8-color device.  (gdevpcfb.h)
7904
	- The comment in gdevevga.c incorrectly identified the file
7905
as gdevpcfb.c.  (gdevevga.c)
7906
 
7907
Changes the PC display drivers to save and restore more of the BIOS
7908
state.  (gdevpcfb.h, gdevevga.c, gdevpcfb.c, gdevsco.c)
7909
 
7910
Adds a new psmono driver that does the same thing as ps2image, faster
7911
and more conveniently.  (gdevpsim.c)
7912
 
7913
Replaces the X11 driver with the one from 3.01, since the color
7914
handling rewrite in 3.02 introduced serious bugs.  (gdevx.h, gdevx.c,
7915
gdevxini.c)
7916
 
7917
</pre><h3><a name="V3.0.3_Platforms"></a>Platforms</h3><pre>
7918
 
7919
Changes the definition of gx_no_color_index to work around one of the
7920
bugs in the SGI Irix compiler.  (gxdcolor.h)
7921
 
7922
Rewrites the installation commands in unix-end.mak so they don't have
7923
very long lines.  (unix-end.mak)
7924
 
7925
</pre><h3><a name="V3.0.3_Fonts"></a>Fonts</h3><pre>
7926
 
7927
Fixes bugs:
7928
	- Fonts that used 2- or 4-element arrays in the Metrics dictionary
7929
interpreted the width and side bearing interchanged with each other.
7930
(gs_type1.ps)
7931
	- Setting FONTPATH on the command line didn't work.  (gs_fonts.ps)
7932
 
7933
</pre><h3><a name="V3.0.3_Streams"></a>Streams</h3><pre>
7934
 
7935
Fixes bugs:
7936
	- The stream position wasn't updated properly if sgets
7937
crossed a buffer boundary.  (stream.c)
7938
 
7939
Extends the BoundedHuffman filters so they can encode and decode runs of
7940
zeros specially, and so they mark and detect EOD.  (sbhc.h, shc.h, sbhc.c,
7941
zfilter2.c)
7942
 
7943
Provides an alternate implementation of file streams which doesn't use
7944
stdio buffering and which works around the System V "interrupted system
7945
call" problem.  (stream.c, sfile.c, sfileno.c)
7946
 
7947
Increases the maximum LZW output code from 3000 to 4095.  (slzwe.c)
7948
 
7949
</pre><h3><a name="V3.0.3_Interpreter"></a>Interpreter</h3><pre>
7950
 
7951
Fixes bugs:
7952
	- Opening a filter on a file of the wrong access type (read
7953
vs. write) didn't cause an error.  (stream.h, sbasic.c, zfile.c, zfileio.c)
7954
	- save performed an extra, unnecessary gsave.  (zvmem.c)
7955
	- sethalftone always gave a /undefined error.  (zht2.c)
7956
	- eexec decryption read too much data from the input -- in
7957
Level 2, it isn't allowed to read 512 characters ahead.  (sfilter.h,
7958
strimpl.h, seexec.c, sstring.c, zfileio.c, zmisc1.c)
7959
	- The scanner was too aggressive about allocating additional
7960
space for strings on small machines.  (iscan.c)
7961
	- The AccurateScreens flag in Type 1 and Type 2 halftone
7962
dictionaries was being ignored.  (zht2.c)
7963
	- The Level 2 definition of margins in statusdict didn't
7964
allow for Margins being undefined in the current page device.
7965
(gs_lev2.ps)
7966
	- The Interpolate flag was being ignored in image
7967
dictionaries.  [implemented in library]
7968
	- The TransferFunction option was being ignored in halftone
7969
dictionaries.  (zht2.c)
7970
	- Type 5 halftones usually didn't work, because they called
7971
the wrong (or an invalid) spot function.  (zht2.c)
7972
 
7973
Implements a .forgetsave operator that effectively causes a given save (and
7974
all more recent saves) to disappear.  (isave.h, stream.h, isave.c, zfile.c,
7975
zvmem.c)
7976
 
7977
</pre><h3><a name="V3.0.3_Library"></a>Library</h3><pre>
7978
 
7979
Fixes bugs:
7980
	- In the 1-operand form of the image operator, a Decode value of [1
7981
0] with 8-bit sample values and a single data source was treated the same
7982
as [0 1].  (gsimage1.c)
7983
	- Some Monotype fonts put a callsubr between an OtherSubr call and
7984
the following 'pop' opcodes (which the Adobe documentation forbids); The
7985
Type 1 font interpreter gave an invalidfont error rather than allowing
7986
this.  (gxtype1.h, gstype1.c)
7987
	- Patterns didn't implement XStep and YStep properly.
7988
(gxpcolor.h, gspcolor.c, gxclip2.c)
7989
	- Clipping regions were sometimes 1 pixel too small at the edges;
7990
this could cause vertical and horizontal lines produced by certain Windows
7991
drivers to disappear.  (gzpath.h, gxacpath.c, gxcpath.c, gxfill.c)
7992
	- Oversampling cached rotated characters produced very bad
7993
results (many dropouts).  (gschar.c)
7994
	- Rendering a DeviceGray color on a DeviceCMYK device applied
7995
the transfer function to all 4 components, not just to the K
7996
component.  (gxcmap.c)
7997
	- A screen specified with setcolorscreen didn't take effect
7998
properly on CMYK devices.  (gsht.c)
7999
 
8000
Implements the Interpolate option for images.  Currently this is only
8001
implemented for portrait-orientation images (no rotation, skewing, or
8002
X-reflection).  (gscspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
8003
gscolor2.c, gspcolor.c, gxcmap.c, gsimage.c, gsimage2.c, gsimage3.c)
8004
 
8005
Implements AccurateScreens, but only in the form of a larger limit on
8006
the size of a halftone super-cell.  (gxht.h, gsht.c, gsht1.c)
8007
 
8008
Starts to implement the TransferFunction option for halftones.
8009
(gzht.h, gzstate.h, gsht.c, ...too many others to list...)
8010
 
8011
</pre>
8012
 
8013
<h2><a name="Version3.02"></a>Version 3.02 (8/30/94)</h2>
8014
 
8015
<p>
8016
This is another bug fix release.  It was distributed only to a few people,
8017
since the new X Windows color mapping code is not reliable yet.
8018
 
8019
<h3><a name="V3.02_Documentation"></a>Documentation</h3><pre>
8020
 
8021
Fixes bugs:
8022
	- make.doc, but not unixtail.mak, called for setting PLATFORM=unix_
8023
on SVR4 platforms.  (unixtail.mak)
8024
	- drivers.doc contained some wording that suggested that
8025
Ghostscript always used RGB colors internally.  (drivers.doc)
8026
	- The definition of gx_device in drivers.doc had gotten out of sync
8027
with gxdevice.h.  (drivers.doc)
8028
	- README claimed that Ghostscript is not compatible with the
8029
VAX/VMS DEC C compiler, which is no longer true.  (readme)
8030
 
8031
Adds a new section on printer drivers to drivers.doc.  (drivers.doc)
8032
 
8033
Adds a large number of new display boards to the 800x600 SVGA section of
8034
use.doc.  (use.doc)
8035
 
8036
Adds a bug report form to the README file.  (readme)
8037
 
8038
Notes that OSF/1 AXP systems require changing the definition of INSTALL
8039
from install to installbsd.  (make.doc)
8040
 
8041
</pre><h3><a name="V3.02_Procedures"></a>Procedures</h3><pre>
8042
 
8043
Removes -Wno-uninitialized from the gcc flags, and fixes all the places (in
8044
Aladdin's code only) that need to be fixed to pacify gcc after doing this.
8045
(gcc-head.mak, gdevgif.c, gdevmem2.c, gdevpcl.c, gs.c, gsht1.c, gsimpath.c,
8046
gsutil.c, gxclread.c, gxpcopy.c, gxstroke.c, idict.c, iscannum.c, stream.c,
8047
zdevice2.c) (NOT FINISHED YET)
8048
 
8049
Adds a FAKEFONTS switch that makes fake entries in FontDirectory for
8050
unloaded fonts, for the benefit of programs that think they can find all
8051
the available fonts by scanning FontDirectory.  (gs_fonts.ps, gs_init.ps)
8052
 
8053
</pre><h3><a name="V3.02_Utilities"></a>Utilities</h3><pre>
8054
 
8055
Fixes bugs:
8056
	- ps2epsi didn't work, because setdevice now erases the page.
8057
(ps2epsi.ps)
8058
	- ps2epsi didn't work, because -dNODISPLAY installs a null device
8059
with 0 width and height.  The fix -- to remove the -dNODISPLAY -- is not
8060
satisfactory, because it opens an unnecessary window.  (ps2epsi)
8061
 
8062
</pre><h3><a name="V3.02_Drivers"></a>Drivers</h3><pre>
8063
 
8064
Fixes bugs:
8065
	- gdev_fax_open was incorrectly declared static in gdevtfax.c,
8066
causing the extern reference in the dfax drivers not to be resolved.
8067
(gdevtfax.c)
8068
	- devs.mak included a duplicate definition of gdevmswn_h.
8069
(devs.mak)
8070
	- The fax drivers didn't link properly in Level 1 systems, because
8071
shc.c was omitted from their dependency list.  (gs.mak, devs.mak)
8072
	- The TIFF/F drivers didn't set RowsPerStrip properly.
8073
(gdevtfax.c)
8074
	- The TIFF/F drivers didn't byte-align the EOL properly.  (scfx.h,
8075
gdevdfax.c, gdevtfax.c, scfe.c, zfilter2.c)
8076
	- The rule for compiling gdevpccm.c incorrectly specified
8077
dependency on gs.h rather than gx.h.  (devs.mak)
8078
	- The rule for compiling gdevtfax.c didn't include time_.h as a
8079
dependency.  (devs.mak)
8080
	- The mode 2 compression routine for the DeskJet/LaserJet printers
8081
was broken.  (gdevpcl.c)
8082
 
8083
Removes the -O0 from the compilation rule for gdevsco.c, since it was
8084
misplaced to begin with.  (devs.mak)
8085
 
8086
Adds a maxDynamicColors X resource to control dynamic allocation in the
8087
color map.  Replaces the X color lookup algorithms with completely new
8088
ones, for a substantial performance gain.  (gdevx.h, gdevx.c, gdevxini.c)
8089
 
8090
Adds PageNumber, Software, and DateTime entries to the TIFF/F drivers.
8091
(gdevtifs.h, gdevtfax.c)
8092
 
8093
Changes the margins for the LaserJet 4 to 0.  (gdevdjet.c)
8094
 
8095
Adds a user-contributed LaserJet 4 driver that does Floyd-Steinberg
8096
dithering.  (gdevcdj.c)
8097
 
8098
</pre><h3><a name="V3.02_Platforms"></a>Platforms</h3><pre>
8099
 
8100
Fixes bugs:
8101
	- The exit codes for Ghostscript should be different on VMS.
8102
(iastate.h, gs.c, gsmain.c, igc.c, igcref.c)
8103
	- The VMS DEC C compiler declares malloc and free in stdlib.h, and
8104
delete and unlink in stdlib.h.  (malloc_.h, stdio_.h)
8105
	- st_prn_device wasn't defined, which upset the VMS linker even
8106
though there were no references.  (gdevprn.h)
8107
	- stdpre.h didn't bring in the right headers when running gcc on
8108
SCO Unix, causing compilation warnings/errors.  (stdpre.h)
8109
	- The definition of rename in gp_sysv didn't include const for the
8110
arguments.  (gp_sysv.c)
8111
	- The definition of gettimeofday in gp_sysv didn't return any
8112
value.  (gp_sysv.c)
8113
	- time_.h didn't work on MS-DOS systems.  (time_.h)
8114
	- math_.h didn't include &lt;math.h&gt; when compiling with gcc on VMS
8115
systems.  (math_.h)
8116
	- DesqView/X doesn't have a 'cat' command, which caused problems in
8117
the linking step.  (dvx-tail.mak)
8118
 
8119
Changes the definitions of popen in gdevpipe.c and gp_unix.c so they don't
8120
specify the argument list.  This is an attempt to get around the fact that
8121
there is no easy way to detect whether the available header files declare
8122
popen correctly (with const arguments), incorrectly (with non-const
8123
arguments), or not at all.  (gdevpipe.c, gp_unix.c)
8124
 
8125
Replaces VMS.MAK, VMS-CC.MAK, and VMS-AXP.MAK with new versions provided by
8126
a user.  (vms.mak, vms-cc.mak, vms-axp.mak)
8127
 
8128
Changes the 16-bit Borland makefiles so their standard configuration is
8129
Level 1 plus color.dev (CMYK color and colorimage).  (bc.mak, bcwin.mak)
8130
 
8131
</pre><h3><a name="V3.02_Fonts"></a>Fonts</h3><pre>
8132
 
8133
Fixes bugs:
8134
	- cfonts.mak still referred to some .gsf files that have been
8135
replaced by .pfa files.  (cfonts.mak)
8136
	- Compiled fonts got entered into FontDirectory, but didn't get
8137
registered as resources.  (gs_ccfnt.ps)
8138
	- The Cyrillic, Kana, Hershey .gsf, and URW fonts didn't include a
8139
necessary systemdict begin/end, which caused them to fail in badly designed
8140
environments.  (fonts/f*.gsf, fonts/h*.gsf, fonts/?0*.gsf)
8141
 
8142
Changes the default target directory in cfonts.mak from fonts/c to .;
8143
changes the names of the Zapf Chancery compiled font procedures from c* to
8144
zc*.  (cfonts.mak)
8145
 
8146
Adds more fonts from the Adobe Type Manager package for MS Windows to
8147
Fontmap.ATM.  (fontmap.atm)
8148
 
8149
Adds the entire set of 35 standard fonts to the ccfonts feature in gs.mak;
8150
removes all the compilation rules for compiled fonts, since these rules are
8151
in cfonts.mak already.  (gs.mak)
8152
 
8153
</pre><h3><a name="V3.02_Interpreter"></a>Interpreter</h3><pre>
8154
 
8155
Fixes bugs:
8156
	- kshow executed a null, rather than the correct procedure, between
8157
the characters of the string, and got a typecheck error at the end.
8158
(zchar.c)
8159
	- MultiMaster fonts computed their side bearing and width
8160
incorrectly, producing incorrect output.  (zchar1.c)
8161
	- There was no structure definition for gs_type1_state, so a GC
8162
during the execution of an OtherSubrs procedure could scramble pointers in
8163
the saved state.  (zchar1.c, zfont1.c; also affects library, see below)
8164
	- kshow didn't work properly if the kerning procedure changed the
8165
depth of the operand or dictionary stack.  (zchar.c)
8166
	- If the element count for roll was too large by only 1 or 2, the
8167
result was a crash rather than a rangecheck.  (zstack.c)
8168
	- restore didn't undo currentgstate.  (igstate.h, store.h,
8169
gsstate.c, zdevice2.c, zdps1.c, ztype.c)
8170
	- The scanner didn't set the local bit properly in a suspended
8171
state.  (iscan.c)
8172
	- copypage disregarded #copies.  (gs_init.ps)
8173
	- An incorrectly declared pointer led to addressing faults on
8174
16-bit systems.  (zchar1.c)
8175
	- The cache for Separation colors was allocated with one element
8176
too few.  (zcsindex.c)
8177
 
8178
Changes `executive' so that if an error other than EOF occurs in the
8179
reading of the statement, the interpreter prints the error message, but
8180
control remains in the executive loop.  (This isn't a very good fix; a
8181
better one will require refactoring executive / execute / run.)
8182
(gs_init.ps)
8183
 
8184
Changes dictionary undo saving to use the new ref_must_save macro [internal
8185
change only].  (idict.c)
8186
 
8187
Moves configuration definitions from iinit.c to gconfig.c.  (gcdefs.h,
8188
interp.h, gconfig.c, gs.c, iinit.c, zmisc2.c, gs.mak)
8189
 
8190
Moves =string from systemdict to userdict for Adobe compatibility.
8191
(gs_init.ps)
8192
 
8193
Starts to implement the Interpolate flag in image dictionaries.  See under
8194
Library below for restrictions.  (zpaint.c, zimage2.c)
8195
 
8196
</pre><h3><a name="V3.02_Streams"></a>Streams</h3><pre>
8197
 
8198
Fixes bugs:
8199
	- stream_compact attempted to compact a read-only string being used
8200
as the data source of a filter.  (sbasic.c, stream.c)
8201
 
8202
Adds an EncodedEOLAlign flag to the CCITTFaxEncode stream, to allow direct
8203
generation of TIFF/F output.  (scfx.h, scfe.c, zfilter2.c)
8204
 
8205
</pre><h3><a name="V3.02_Library"></a>Library</h3><pre>
8206
 
8207
Fixes bugs:
8208
	- There was no structure definition for gs_type1_state, so a GC
8209
during the execution of an OtherSubrs procedure could scramble pointers in
8210
the saved state.  (gxfont1.h, gxtype1.h, gstype1.c, gxhint2.c)
8211
	- A couple of calls had to discard const, but didn't include the
8212
necessary cast.  (gxpcmap.c)
8213
	- makeimagedevice refused to accept an empty image.  (gsdevice.c)
8214
	- The extra parentheses around arguments in memory_.h caused some
8215
compilers to fail.  (memory_.h)
8216
	- Floating point overflows during coordinate conversion terminated
8217
Ghostscript.  (gxfarith.h, gxfixed.h, gsmatrix.c, gsmisc.c)
8218
	- Accents still weren't getting placed properly on characters
8219
created with seac.  (gstype1.c, gxhint2.c)
8220
	- The SGI C compiler couldn't handle the (perfectly legal)
8221
definitions of dev_init_[open_]misc.  (gxdevice.h)
8222
	- string_.h caused some problems with gcc on some versions of
8223
Solaris.  (string_.h)
8224
	- The halftone levels for color screens were computed incorrectly.
8225
(gzht.h, gxdither.c)
8226
	- Color screens sometimes had vertical stripes of solid color
8227
interspersed.  (gxcht.c)
8228
	- Colors could get mapped incorrectly if a compiler aggressively
8229
(and incorrectly) reordered the computation of procedure arguments
8230
involving the unit_frac macro.  (gxcmap.c)
8231
	- setcachedevice[2] insisted that the corners of the bounding box
8232
be given in the correct order, i.e., llx &lt; urx and lly &lt; ury.  (gschar.c)
8233
	- The image operator gave a limitcheck on unrotated 1-bit-per-pixel
8234
images whose width in device coordinates exceeded 65529.  (gsimage.c)
8235
	- The garbage collector didn't trace the input data of an
8236
in-progress image operator correctly.  (gsimage.c)
8237
 
8238
Changes the max_rgb and dither_rgb members of gx_device_color_info to
8239
max_color and dither_colors, since Ghostscript now uses these for CMYK
8240
devices as well.  Also changes dither_gray to dither_grays.  (gdevmem.h,
8241
gdevprn.h, gxdevice.h, gdevbit.c, gdevcdj.c, gdevprn.c, gdevxini.c,
8242
gsdparam.c, gxcht.c, gxcmap.c)
8243
 
8244
Starts to implement the Interpolate option for images.  Currently this is
8245
only implemented for image, not imagemask, and only for rotations that are
8246
multiples of 90 degrees (possibly with reflection).  (gsimage.h,
8247
gsiscale.h, gximage.h, gsimage.c, gsimage1.c, gsiscale.c)
8248
 
8249
Starts to implement XStep and YStep in pattern dictionaries.  (gxdcolor.h,
8250
gxpcolor.h, gspcolor.c, gxpcmap.c)
8251
 
8252
</pre>
8253
 
8254
<h2><a name="Version3.01"></a>Version 3.01 (8/14/94)</h2>
8255
 
8256
<p>
8257
This is a patch release to fix early problems in release 3.0, and to clean
8258
up a few known loose ends.
8259
 
8260
<h3><a name="V3.01_Documentation"></a>Documentation</h3><pre>
8261
 
8262
Fixes bugs:
8263
	- language.doc still documented the devicename procedure, which has
8264
been withdrawn.  (language.doc)
8265
	- drivers.doc didn't specify under what circumstances each
8266
procedure could be called.  (drivers.doc)
8267
	- current.doc said that setcachedevice and makeimagedevice wouldn't
8268
accept packed arrays, but neither of these operators takes any array
8269
arguments.  (current.doc)
8270
	- current.doc said that definefont didn't interact properly with
8271
the resource machinery, which apparently is no longer true.  (current.doc)
8272
	- make.doc incorrectly gave the name of the DVX makefile as
8273
dvx-djg.mak rather than dvx-gcc.mak.  (make.doc)
8274
	- In one place, devices.doc incorrectly used -sBitsPerPixel= rather
8275
than -dBitsPerPixel=.  (devices.doc)
8276
 
8277
Notes that a kernel bug in SCO Unix makes Ghostscript not work correctly in
8278
some circumstances.  (use.doc)
8279
 
8280
</pre><h3><a name="V3.01_Procedures"></a>Procedures</h3><pre>
8281
 
8282
Fixes bugs:
8283
	- devs.mak incorrectly referred to gdevjetp.c instead of
8284
gdev3852.c.  (devs.mak)
8285
	- The obsolete file gsprops.c was accidentally included in the
8286
fileset.
8287
 
8288
Changes the version numbering scheme from A.BCC to A.B[C].  E.g., this
8289
release will be 3.01, not 3.001.  (gs_init.ps, gs.c, iinit.c)
8290
 
8291
Adds the LaserJet 4 driver to all makefiles that already include the
8292
LaserJet 3 driver.  (*.mak)
8293
 
8294
Adds the BJ-200 driver to all makefiles that already included the BJ-10e
8295
driver.  (*.mak)
8296
 
8297
Splits the Unix 'install' target into install-exec and install-data.  Moves
8298
the executable scripts from gsdatadir to a new directory scriptdir, which
8299
defaults to bindir.  (ansihead.mak, cc-head.mak, gcc-head.mak,
8300
unix-end.mak)
8301
 
8302
</pre><h3><a name="V3.01_Utilities"></a>Utilities</h3><pre>
8303
 
8304
Fixes bugs:
8305
	- genconf had fixed buffer sizes built into it, which it could
8306
overrun its working storage without checking.  (genconf.c)
8307
 
8308
Removes RCS or SCCS headers from two utility files.  (pj-gs.sh,
8309
printafm.ps)
8310
 
8311
</pre><h3><a name="V3.01_Drivers"></a>Drivers</h3><pre>
8312
 
8313
Fixes bugs:
8314
	- The new dfaxhigh and dfaxlow drivers didn't set
8315
state.EncodedByteAlign to false.  (gdevdfax.c)
8316
	- The sunview driver assumed that the device would be open before
8317
map_rgb_color was called.  (gdevsun.c)
8318
	- The CP50 driver incremented page_count itself, rather than
8319
letting the core library do it.  (gdevcp50.c)
8320
	- The GIF driver(s) could loop indefinitely under certain
8321
circumstances.  (gdevgif.c)
8322
	- The Group 4 fax drivers incorrectly included end-of-line codes in
8323
the output.  (gdevtfax.c, gdevdfax.c)
8324
	- The Group 4 fax drivers could put out an EOB in the middle of the
8325
data.  (scfe.c)
8326
	- The DesignJet 650C driver didn't use the correct compression
8327
mode.  (gdevcdj.c)
8328
	- The Hercules and EGA/VGA/SVGA drivers computed the page height
8329
incorrectly according to the A4 switch.  (gdevherc.c, gdevpcfb.h)
8330
 
8331
Changes the page_count and showpage_count members of the device structure
8332
from int to long.  (gxdevice.h, gdevprn.c, gsdparam.c)
8333
 
8334
Changes the faxg3, faxg32d, and faxg4 drivers so that, like the TIFF and
8335
dfax drivers, they adjust the page size to one of the three CCITT standard
8336
sizes if this is reasonable.  (gdevtfax.c)
8337
 
8338
Splits the bit driver into bit, bitrgb, and bitcmyk.  Adds bitrgb and
8339
bitcmyk to all makefiles that included bit.  (*.mak, devs.mak, gdevbit.c)
8340
 
8341
Replaces the atiw16, tseng16, and tvga16 SuperVGA drivers with a single
8342
svga16 driver that allows specifying the display mode number.  (devs.mak,
8343
gdevpcfb.c)
8344
 
8345
</pre><h3><a name="V3.01_Platforms"></a>Platforms</h3><pre>
8346
 
8347
Fixes bugs:
8348
	- The MS Windows and OS/2 drivers allocated their terminal input
8349
buffers in a way that could cause the GC to crash.  (gp_mswin.c, gp_os2.c)
8350
	- The handling of gettimeofday on SVR4 platforms was incorrect.
8351
(time_.h, gp_sysv.c, gp_unix.c)
8352
	- On some platforms, function prototypes were not enabled even if
8353
__STDC__ was defined.  (stdpre.h)
8354
	- The VMS build script referred to an obsolete feature lev2only.
8355
(vms.mak)
8356
 
8357
Changes the DVX platform so that stdprn is buffered.  This should improve
8358
printing performance dramatically.  (gp_dvx.c)
8359
 
8360
</pre><h3><a name="V3.01_Fonts"></a>Fonts</h3><pre>
8361
 
8362
Fixes bugs:
8363
	- Setting DISKFONTS resulted in a reference to FontFileDirectory
8364
before it was defined.  (gs_type1.ps, gs_fonts.ps)
8365
	- /Font findresource gave an error rather than doing font
8366
substitution.  (gs_res.ps)
8367
	- FontDirectory wasn't rebound to GlobalFontDirectory when global
8368
VM was current.  (gs_res.ps, zdict.c)
8369
	- Type 1 fonts weren't loaded into global VM.  (gs_fonts.ps)
8370
	- In the standard Fontmap, the Utopia fonts had extension .gsf
8371
rather than .pfa.  (fontmap.gs)
8372
	- Fonts whose FontBBox was [0 0 0 0] were not displayed, or were
8373
displayed as tiny dots.  (gs_type1.ps)
8374
 
8375
</pre><h3><a name="V3.01_Interpreter"></a>Interpreter</h3><pre>
8376
 
8377
Fixes bugs:
8378
	- dict_put could read from the variable pvslot before it was used.
8379
(This was harmless, since the value was never actually used; it just upset
8380
Purify.)  (idict.c)
8381
	- Binary object sequences could cause addressing faults.
8382
(iscanbin.c)
8383
	- The attributes on names were set incorrectly in binary object
8384
sequences.  (iscanbin.c)
8385
	- gs.c duplicated (in some cases incorrectly) some definitions in
8386
interp.h.  (gs.c)
8387
	- gs_lib_paths was declared const in one place and non-const in
8388
another.  (zfile.c)
8389
	- file_restore and font_restore had inconsistent const declarations
8390
for their argument.  (isave.c)
8391
	- iodev_os_open_file was missing its last formal parameter.
8392
(ziodev.c)
8393
	- gs.c declared gs_devicename with an incorrect extern.  (gs.c)
8394
	- undefinefont didn't interact properly with the resource
8395
machinery.  (gs_lev2.ps)
8396
	- The declaration for swap_entry used a typedef name as a formal
8397
parameter, which upset some compilers.  (zmisc2.c)
8398
	- Including the ccinit feature could cause the garbage collector to
8399
make an invalid access.  (stream.c)
8400
	- The check for t_[a]struct types in ztype.c was incorrect.
8401
(ztype.c)
8402
	- After the collection of halftone samples, temporary data
8403
structures were freed incorrectly.  (gzht.h, gsht1.c, zht.c)
8404
	- Images with source width between 489 and 492 crashed the
8405
memory manager.  (iastate.h)
8406
 
8407
Makes it possible to define SEARCH_HERE_FIRST (gsmain.c) in the makefile.
8408
(gsmain.c)
8409
 
8410
Splits the Level 2 resource machinery into a separate file.  (gs_lev2.ps,
8411
gs_res.ps, gs.mak, unix-end.mak, vms.mak).
8412
 
8413
Changes the names of the DiffEncode/Decode filters to
8414
PixelDifferenceEncode/Decode, and splits them off into a separate
8415
"feature".  (gs.mak, zfilter2.c, zfpdiff.c, spdiff.c, spdiffx.h)
8416
 
8417
Adds experimental code for filtered image scaling.  DON'T USE THIS CODE.
8418
(zimage2.c)
8419
 
8420
</pre><h3><a name="V3.01_Streams"></a>Streams</h3><pre>
8421
 
8422
Fixes bugs:
8423
	- The CCITTFaxEncode filter could put out an EOB in the middle of
8424
the data.  (scfe.c)
8425
 
8426
Splits off the PixelDifferenceEncode/Decode filters into a separate
8427
"feature".  (gs.mak)
8428
 
8429
</pre><h3><a name="V3.01_Library"></a>Library</h3><pre>
8430
 
8431
Fixes bugs:
8432
	- gs_setcachedevice could return a garbage error code.  (gschar.c)
8433
	- joins on stroked lines were incorrect if the device coordinate
8434
system mapped +Y to +Y.  (gxstroke.c)
8435
	- If gsmisc.c supplied versions of missing library routines, they
8436
could clash with the names of the real ones if those were present
8437
unexpectedly.  (memory_.h, gsmisc.c)
8438
	- The initialization expression for is_open in the
8439
dev_init_misc_open macro included a cast, which some compilers don't allow.
8440
(gxdevice.h, gsdevice.c, gxclip2.c, gxpcmap.c)
8441
	- In Type 1 fonts, character that specified their side bearing and
8442
width with sbw rather than hsbw gave an invalidfont error.  (gstype1.c)
8443
	- Some procedures were declared inconsistently with regard to const
8444
arguments.  (gscie.c, gxpcmap.c, gxacpath.c, gxcmap.c)
8445
	- A few places still assumed that pointers occupied 4 bytes.
8446
(gxclist.c)
8447
	- Rendering a gray halftone on a CMYK device called the device's
8448
map_rgb_color procedure instead of map_cmyk_color.  (gxdither.c)
8449
 
8450
Renames gsfile.c as gswppm.c.  (gsfile.c, gswppm.c)
8451
 
8452
Implements the ability to cache arbitrarily transformed characters.  This
8453
is currently enabled by a compile-time flag in gschar.c.  (gschar.c)
8454
 
8455
</pre>
8456
 
8457
<h2><a name="Version3.0"></a>Version 3.0 (8/1/94)</h2>
8458
 
8459
<p>
8460
This is the first full Level 2 version released to the public.
8461
Unfortunately, we were not able to include setpagedevice in this release.
8462
 
8463
<h3><a name="V3.0_Documentation"></a>Documentation</h3><pre>
8464
 
8465
Fixes bugs:
8466
	- README didn't mention Aladdin's European distributor.
8467
	- psfiles.doc didn't describe some of the newer gs_*.ps files.
8468
 
8469
Notes that gcc -O2 (version 2.5.8 of gcc) generates incorrect code for some
8470
modules on the H-P RISC architecture.
8471
 
8472
Notes that on AXP platforms running VMS, DEC C V4.0 is required.
8473
 
8474
</pre><h3><a name="V3.0_Procedures"></a>Procedures</h3><pre>
8475
 
8476
Fixes bugs:
8477
	- 'make clean' didn't delete devs.tr or t.tr.
8478
	- devs.mak was missing the entry for faxg32d.
8479
	- unixansi.mak omitted some drivers that were included in
8480
unix-cc.mak and unix-gcc.mak.
8481
 
8482
Updates jpeg.mak to reference version 5beta1 of the IJG JPEG code.
8483
 
8484
Changes the version numbering scheme from A.B.C to A.B[CC].  I.e., the
8485
first sub-release after 3.0 will be 3.01 or 3.001, not 3.0.1.
8486
 
8487
</pre><h3><a name="V3.0_Utilities"></a>Utilities</h3><pre>
8488
 
8489
Fixes bugs:
8490
	- ps2ascii didn't do a setglobal.
8491
 
8492
Adds an option to ansi2knr to convert ... to va_alist/va_dcl.
8493
 
8494
</pre><h3><a name="V3.0_Drivers"></a>Drivers</h3><pre>
8495
 
8496
Fixes bugs:
8497
	- The newly added faxg32d driver didn't have an entry in devs.mak.
8498
	- The BMP, GIF, and PCX drivers wrote out an incorrect color
8499
palette (the blue values were too small).
8500
	- The vgalib driver had some compilation problems.
8501
	- The TIFF drivers didn't produce correct multi-page output.
8502
 
8503
Adds faxg32d and tiffg32d drivers.
8504
 
8505
Reinstates the DigiFax drivers, which were withdrawn when the new fax
8506
drivers were added.
8507
 
8508
</pre><h3><a name="V3.0_Platforms"></a>Platforms</h3><pre>
8509
 
8510
Fixes bugs:
8511
	- gs_btokn.ps and gs_ccfnt.ps weren't installed on Unix platforms.
8512
	- The VMS module list omitted SBHC, included a non-existent GXDASH,
8513
and had incorrect names for some of the IJG JPEG files.
8514
	- The VMS build scripts (vms*.mak) had incorrect "boilerplate".
8515
	- The VMS script file gssetmod.com had \r characters in it, as well
8516
as \n characters.
8517
	- The echogs and genarch utilities didn't return the correct exit
8518
codes under VMS.
8519
	- The VMS Fontmap had incorrect entries for the Courier and Charter
8520
fonts.
8521
	- When running under Ghostview, Ghostscript didn't drain the input
8522
pipe.  (We fixed this with a temporary patch in gs.c; this isn't a good
8523
solution for the longer term.)
8524
 
8525
</pre><h3><a name="V3.0_Fonts"></a>Fonts</h3><pre>
8526
 
8527
Fixes bugs:
8528
	- The free AvantGarde, Bookman, and Palatino font families had
8529
incorrect FontBBox values.
8530
	- The 'f' and 'j' in the free AvantGarde-DemiOblique,
8531
Bookman-DemiItalic, Bookman-LightItalic, and Palatino-Italic fonts were
8532
chopped off on the right.  (The bitmaps were chopped off in the original
8533
BDF fonts from which these fonts were made.)  ****** THIS PROBLEM WAS NOT
8534
ACTUALLY FIXED. ******
8535
 
8536
</pre><h3><a name="V3.0_Interpreter"></a>Interpreter</h3><pre>
8537
 
8538
Fixes bugs:
8539
	- gs -h and gs -v didn't print the tertiary version number correctly.
8540
	- Binary object sequences with no strings or names didn't read in
8541
correctly.
8542
	- Binary object sequences that crossed an input buffer boundary
8543
didn't read in correctly.
8544
	- Binary object sequences read in as {[e1 .. en] e1 ... en} instead
8545
of {[e1 ... en]}.  (New bug in 2.9.x.)
8546
	- setpattern didn't set the current color space correctly if the
8547
current color space wasn't a Pattern space.
8548
	- If the current color space was an uncolored Pattern space but the
8549
current color was a colored Pattern, currentcolor returned extra values on
8550
the operands stack.
8551
	- .buildfont1 in gs_type1.ps didn't force binding of the old
8552
definition, causing ps2ascii to loop endlessly.
8553
 
8554
Adds a facility for writing and reading dictionaries in binary object
8555
sequences.  This is experimental and subject to change in the future.
8556
 
8557
</pre><h3><a name="V3.0_Streams"></a>Streams</h3><pre>
8558
 
8559
Fixes bugs:
8560
	- gs_run_string and ccinit didn't have any way to mark the string
8561
as "foreign", which confused the GC.
8562
 
8563
</pre><h3><a name="V3.0_Library"></a>Library</h3><pre>
8564
 
8565
Fixes bugs:
8566
	- gxchar.h had an extra comma after the last element of the
8567
show_width_status enum, which upset some compilers.
8568
	- stroke and strokepath didn't correctly skip zero-length segments
8569
if the line width was less than one pixel, or if there was a closed subpath
8570
consisting entirely of zero-length segments.
8571
	- strokepath sometimes incorrectly added a moveto at the end of the
8572
path.
8573
</pre>
8574
 
8575
<!-- [3.0 begin visible trailer] =========================================== -->
8576
<hr>
8577
 
8578
<p>
8579
<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
8580
All rights reserved.</small>
8581
 
8582
<p>
8583
This software is provided AS-IS with no warranty, either express or
8584
implied.
8585
 
8586
This software is distributed under license and may not be copied,
8587
modified or distributed except as expressly authorized under the terms
8588
of the license contained in the file LICENSE in this distribution.
8589
 
8590
For more information about licensing, please refer to
8591
http://www.ghostscript.com/licensing/. For information on
8592
commercial licensing, go to http://www.artifex.com/licensing/ or
8593
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
8594
San Rafael, CA  94903, U.S.A., +1(415)492-9861.
8595
 
8596
<p>
8597
<small>Ghostscript version 8.53, 20 October 2005
8598
 
8599
 
8600
<!-- [3.0 end visible trailer] ============================================= -->
8601
 
8602
</body>
8603
</html>