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 5.n</title>
5
<!-- $Id: History5.htm,v 1.41 2005/10/20 19:46:23 ray Exp $ -->
6
<!--
7
	WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
8
	re-create the table of contents here, because it will replace the
9
	hand-edited TOC subheads with a separate subhead for each H2 in
10
	the body of the file.  Or if you do, first look at the original
11
	TOC to see how to edit it for visual conciseness.
12
-->
13
<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
14
</head>
15
 
16
<body>
17
<!-- [1.0 begin visible header] ============================================ -->
18
 
19
<!-- [1.1 begin headline] ================================================== -->
20
 
21
<h1>History of Ghostscript versions 5.n</h1>
22
 
23
<!-- [1.1 end headline] ==================================================== -->
24
 
25
<!-- [1.2 begin table of contents] ========================================= -->
26
 
27
<h2>Table of contents</h2>
28
 
29
<blockquote><ul>
30
<li><a href="#Version5.99">Version 5.99 (beta) (1999-12-18)</a>
31
<ul>
32
<li><a href="#5.99_Incompatible_changes">Incompatible changes</a>,
33
    <a href="#5.99_Documentation">Documentation</a>,
34
    <a href="#5.99_Procedures">Procedures</a>,
35
    <a href="#5.99_Utilities">Utilities</a>,
36
    <a href="#5.99_Drivers">Drivers</a>,
37
    <a href="#5.99_Platforms">Platforms</a>,
38
    <a href="#5.99_Fonts">Fonts</a>,
39
    <a href="#5.99_PDF_writer">PDF writer</a>,
40
    <a href="#5.99_Interpreter_PDF">Interpreter (PDF)</a>,
41
    <a href="#5.99_Interpreter">Interpreter</a>,
42
    <a href="#5.99_Streams">Streams</a>,
43
    <a href="#5.99_Library">Library</a>
44
</ul>
45
<li><a href="#Version5.98">Version 5.98 (beta) (1999-12-01)</a>
46
<ul>
47
<li><a href="#5.98_Incompatible_changes">Incompatible changes</a>,
48
    <a href="#5.98_Documentation">Documentation</a>,
49
    <a href="#5.98_Procedures">Procedures</a>,
50
    <a href="#5.98_Utilities">Utilities</a>,
51
    <a href="#5.98_Drivers">Drivers</a>,
52
    <a href="#5.98_Fonts">Fonts</a>,
53
    <a href="#5.98_PDF_writer">PDF writer</a>,
54
    <a href="#5.98_Interpreter_PDF">Interpreter (PDF)</a>,
55
    <a href="#5.98_Interpreter">Interpreter</a>,
56
    <a href="#5.98_Streams">Streams</a>,
57
    <a href="#5.98_Library">Library</a>
58
</ul>
59
<li><a href="#Version5.97">Version 5.97 (beta) (11/22/99)</a>
60
<ul>
61
<li><a href="#5.97_Incompatible_changes">Incompatible changes</a>,
62
    <a href="#5.97_Documentation">Documentation</a>,
63
    <a href="#5.97_Procedures">Procedures</a>,
64
    <a href="#5.97_Utilities">Utilities</a>,
65
    <a href="#5.97_Drivers">Drivers</a>,
66
    <a href="#5.97_Platforms">Platforms</a>,
67
    <a href="#5.97_PDF_writer">PDF writer</a>,
68
    <a href="#5.97_Interpreter">Interpreter</a>,
69
    <a href="#5.97_Library">Library</a>
70
</ul>
71
<li><a href="#Version5.96">Version 5.96 (beta) (11/12/99)</a>
72
<ul>
73
<li><a href="#5.96_Incompatible_changes">Incompatible changes</a>,
74
    <a href="#5.96_Documentation">Documentation</a>,
75
    <a href="#5.96_Procedures">Procedures</a>,
76
    <a href="#5.96_Utilities">Utilities</a>,
77
    <a href="#5.96_Drivers">Drivers</a>,
78
    <a href="#5.96_Platforms">Platforms</a>,
79
    <a href="#5.96_PDF_writer">PDF writer</a>,
80
    <a href="#5.96_Interpreter_PDF">Interpreter (PDF)</a>,
81
    <a href="#5.96_Interpreter">Interpreter</a>,
82
    <a href="#5.96_Streams">Streams</a>,
83
    <a href="#5.96_Library">Library</a>
84
</ul>
85
<li><a href="#Version5.95">Version 5.95 (beta) (11/1/99)</a>
86
<ul>
87
<li><a href="#5.95_Incompatible_changes">Incompatible changes</a>,
88
    <a href="#5.95_Documentation">Documentation</a>,
89
    <a href="#5.95_Procedures">Procedures</a>,
90
    <a href="#5.95_Utilities">Utilities</a>,
91
    <a href="#5.95_Drivers">Drivers</a>,
92
    <a href="#5.95_Platforms">Platforms</a>,
93
    <a href="#5.95_Fonts">Fonts</a>,
94
    <a href="#5.95_PDF_writer">PDF writer</a>,
95
    <a href="#5.95_Interpreter_PDF">Interpreter (PDF)</a>,
96
    <a href="#5.95_Interpreter">Interpreter</a>,
97
    <a href="#5.95_Library">Library</a>
98
</ul>
99
<li><a href="#Version5.94">Version 5.94 (beta) (9/30/99)</a>
100
<ul>
101
<li><a href="#5.94_Incompatible_changes">Incompatible changes</a>,
102
    <a href="#5.94_Documentation">Documentation</a>,
103
    <a href="#5.94_Procedures">Procedures</a>,
104
    <a href="#5.94_Utilities">Utilities</a>,
105
    <a href="#5.94_Drivers">Drivers</a>,
106
    <a href="#5.94_Platforms">Platforms</a>,
107
    <a href="#5.94_Fonts">Fonts</a>,
108
    <a href="#5.94_PDF_writer">PDF writer</a>,
109
    <a href="#5.94_Interpreter_PDF">Interpreter (PDF)</a>,
110
    <a href="#5.94_Interpreter">Interpreter</a>,
111
    <a href="#5.94_Streams">Streams</a>,
112
    <a href="#5.94_Library">Library</a>
113
</ul>
114
<li><a href="#Version5.93">Version 5.93 (beta) (9/11/99)</a>
115
<ul>
116
<li><a href="#5.93_Incompatible_changes">Incompatible changes</a>,
117
    <a href="#5.93_Documentation">Documentation</a>,
118
    <a href="#5.93_Procedures">Procedures</a>,
119
    <a href="#5.93_Utilities">Utilities</a>,
120
    <a href="#5.93_Drivers">Drivers</a>,
121
    <a href="#5.93_Platforms">Platforms</a>,
122
    <a href="#5.93_PDF_writer">PDF writer</a>,
123
    <a href="#5.93_Interpreter_PDF">Interpreter (PDF)</a>,
124
    <a href="#5.93_Interpreter">Interpreter</a>,
125
    <a href="#5.93_Streams">Streams</a>,
126
    <a href="#5.93_Library">Library</a>
127
</ul>
128
<li><a href="#Version5.92">Version 5.92 (beta) (9/2/99)</a>
129
<ul>
130
<li><a href="#5.92_Documentation">Documentation</a>,
131
    <a href="#5.92_Procedures">Procedures</a>,
132
    <a href="#5.92_Utilities">Utilities</a>,
133
    <a href="#5.92_Drivers">Drivers</a>,
134
    <a href="#5.92_PDF_writer">PDF writer</a>,
135
    <a href="#5.92_Interpreter">Interpreter</a>,
136
    <a href="#5.92_Streams">Streams</a>
137
</ul>
138
<li><a href="#Version5.91">Version 5.91 (beta) (8/30/99)</a>
139
<ul>
140
<li><a href="#5.91_Documentation">Documentation</a>,
141
    <a href="#5.91_Utilities">Utilities</a>,
142
    <a href="#5.91_Drivers">Drivers</a>,
143
    <a href="#5.91_Platforms">Platforms</a>,
144
    <a href="#5.91_Fonts">Fonts</a>,
145
    <a href="#5.91_PDF_writer">PDF writer</a>,
146
    <a href="#5.91_Library">Library</a>
147
</ul>
148
<li><a href="#Version5.90">Version 5.90 (beta) (8/20/99)</a>
149
<ul>
150
<li><a href="#5.90_Incompatible_changes">Incompatible changes</a>,
151
    <a href="#5.90_Documentation">Documentation</a>,
152
    <a href="#5.90_Procedures">Procedures</a>,
153
    <a href="#5.90_Utilities">Utilities</a>,
154
    <a href="#5.90_Drivers">Drivers</a>,
155
    <a href="#5.90_Platforms">Platforms</a>,
156
    <a href="#5.90_Fonts">Fonts</a>,
157
    <a href="#5.90_PDF_writer">PDF writer</a>,
158
    <a href="#5.90_Interpreter_PDF">Interpreter (PDF)</a>,
159
    <a href="#5.90_Interpreter">Interpreter</a>,
160
    <a href="#5.90_Streams">Streams</a>,
161
    <a href="#5.90_Library">Library</a>
162
</ul>
163
<li>(Version 5.89 deliberately omitted.)
164
<li><a href="#Version5.88">Version 5.88 (tester) (8/3/99)</a>
165
<ul>
166
<li><a href="#5.88_Incompatible_changes">Incompatible changes</a>,
167
    <a href="#5.88_Documentation">Documentation</a>,
168
    <a href="#5.88_Procedures">Procedures</a>,
169
    <a href="#5.88_Drivers">Drivers</a>,
170
    <a href="#5.88_Platforms">Platforms</a>,
171
    <a href="#5.88_Fonts">Fonts</a>,
172
    <a href="#5.88_Interpreter_PDF">Interpreter (PDF)</a>,
173
    <a href="#5.88_Interpreter">Interpreter</a>,
174
    <a href="#5.88_Streams">Streams</a>,
175
    <a href="#5.88_Library">Library</a>
176
</ul>
177
<li><a href="#Version5.87">Version 5.87 (tester) (6/29/99)</a>
178
<ul>
179
<li><a href="#5.87_Incompatible_changes">Incompatible changes</a>,
180
    <a href="#5.87_Documentation">Documentation</a>,
181
    <a href="#5.87_Procedures">Procedures</a>,
182
    <a href="#5.87_Drivers">Drivers</a>,
183
    <a href="#5.87_Interpreter_PDF">Interpreter (PDF)</a>,
184
    <a href="#5.87_Interpreter">Interpreter</a>,
185
    <a href="#5.87_Library">Library</a>
186
</ul>
187
<li><a href="#Version5.86">Version 5.86 (tester) (6/14/99)</a>
188
<ul>
189
<li><a href="#5.86_Incompatible_changes">Incompatible changes</a>,
190
    <a href="#5.86_Documentation">Documentation</a>,
191
    <a href="#5.86_Procedures">Procedures</a>,
192
    <a href="#5.86_Utilities">Utilities</a>,
193
    <a href="#5.86_Drivers">Drivers</a>,
194
    <a href="#5.86_Platforms">Platforms</a>,
195
    <a href="#5.86_Fonts">Fonts</a>,
196
    <a href="#5.86_Interpreter_PDF">Interpreter (PDF)</a>,
197
    <a href="#5.86_Interpreter">Interpreter</a>,
198
    <a href="#5.86_Streams">Streams</a>,
199
    <a href="#5.86_Library">Library</a>
200
</ul>
201
<li><a href="#Version5.85">Version 5.85 (tester) (5/29/99)</a>
202
<ul>
203
<li><a href="#5.85_Incompatible_changes">Incompatible changes</a>,
204
    <a href="#5.85_Documentation">Documentation</a>,
205
    <a href="#5.85_Procedures">Procedures</a>,
206
    <a href="#5.85_Utilities">Utilities</a>,
207
    <a href="#5.85_Drivers">Drivers</a>,
208
    <a href="#5.85_Interpreter_PDF">Interpreter (PDF)</a>,
209
    <a href="#5.85_Interpreter">Interpreter</a>,
210
    <a href="#5.85_Library">Library</a>
211
</ul>
212
<li><a href="#Version5.84">Version 5.84 (tester) (5/19/99)</a>
213
<ul>
214
<li><a href="#5.84_Incompatible_changes">Incompatible changes</a>,
215
    <a href="#5.84_Procedures">Procedures</a>,
216
    <a href="#5.84_Utilities">Utilities</a>,
217
    <a href="#5.84_Drivers">Drivers</a>,
218
    <a href="#5.84_Platforms">Platforms</a>,
219
    <a href="#5.84_Interpreter">Interpreter</a>,
220
    <a href="#5.84_Streams">Streams</a>,
221
    <a href="#5.84_Library">Library</a>
222
</ul>
223
<li><a href="#Version5.83">Version 5.83 (tester) (5/13/99)</a>
224
<ul>
225
<li><a href="#5.83_Incompatible_changes">Incompatible changes</a>,
226
    <a href="#5.83_Documentation">Documentation</a>,
227
    <a href="#5.83_Procedures">Procedures</a>,
228
    <a href="#5.83_Utilities">Utilities</a>,
229
    <a href="#5.83_Interpreter">Interpreter</a>,
230
    <a href="#5.83_Library">Library</a>
231
</ul>
232
<li><a href="#Version5.82">Version 5.82 (tester) (4/24/99)</a>
233
<ul>
234
<li><a href="#5.82_Incompatible_changes">Incompatible changes</a>,
235
    <a href="#5.82_Documentation">Documentation</a>,
236
    <a href="#5.82_Procedures">Procedures</a>,
237
    <a href="#5.82_Utilities">Utilities</a>,
238
    <a href="#5.82_Drivers">Drivers</a>,
239
    <a href="#5.82_Platforms">Platforms</a>,
240
    <a href="#5.82_Interpreter_PDF">Interpreter (PDF)</a>,
241
    <a href="#5.82_Interpreter">Interpreter</a>,
242
    <a href="#5.82_Library">Library</a>
243
</ul>
244
<li><a href="#Version5.81">Version 5.81 (tester) (4/14/99)</a>
245
<ul>
246
<li><a href="#5.81_Incompatible_changes">Incompatible changes</a>,
247
    <a href="#5.81_Procedures">Procedures</a>,
248
    <a href="#5.81_Utilities">Utilities</a>,
249
    <a href="#5.81_Drivers">Drivers</a>,
250
    <a href="#5.81_Fonts">Fonts</a>,
251
    <a href="#5.81_Platforms">Platforms</a>,
252
    <a href="#5.81_Interpreter_PDF">Interpreter (PDF)</a>,
253
    <a href="#5.81_Interpreter">Interpreter</a>,
254
    <a href="#5.81_Library">Library</a>
255
</ul>
256
<li><a href="#Version5.80">Version 5.80 (tester) (4/6/99)</a>
257
<ul>
258
<li><a href="#5.80_Incompatible_changes">Incompatible changes</a>,
259
    <a href="#5.80_Procedures">Procedures</a>,
260
    <a href="#5.80_Utilities">Utilities</a>,
261
    <a href="#5.80_Drivers">Drivers</a>,
262
    <a href="#5.80_Fonts">Fonts</a>,
263
    <a href="#5.80_Platforms">Platforms</a>,
264
    <a href="#5.80_Interpreter">Interpreter</a>,
265
    <a href="#5.80_Interpreter_PDF">Interpreter (PDF)</a>,
266
    <a href="#5.80_Streams">Streams</a>,
267
    <a href="#5.80_Library">Library</a>
268
</ul>
269
<li>(Versions 5.74 - 5.79 deliberately omitted.)
270
<li><a href="#Version5.73">Version 5.73 (tester) (3/19/99)</a>
271
<ul>
272
<li><a href="#5.73_Incompatible_changes">Incompatible changes</a>,
273
    <a href="#5.73_Documentation">Documentation</a>,
274
    <a href="#5.73_Procedures">Procedures</a>,
275
    <a href="#5.73_Drivers">Drivers</a>,
276
    <a href="#5.73_Interpreter">Interpreter</a>,
277
    <a href="#5.73_Library">Library</a>
278
</ul>
279
<li><a href="#Version5.72">Version 5.72 (tester) (3/17/99)</a>
280
<ul>
281
<li><a href="#5.72_Incompatible_changes">Incompatible changes</a>,
282
    <a href="#5.72_Documentation">Documentation</a>,
283
    <a href="#5.72_Procedures">Procedures</a>,
284
    <a href="#5.72_Utilities">Utilities</a>,
285
    <a href="#5.72_Drivers">Drivers</a>,
286
    <a href="#5.72_Fonts">Fonts</a>,
287
    <a href="#5.72_Interpreter">Interpreter</a>,
288
    <a href="#5.72_Interpreter_PDF">Interpreter (PDF)</a>,
289
    <a href="#5.72_Streams">Streams</a>,
290
    <a href="#5.72_Library">Library</a>
291
</ul>
292
<li><a href="#Version5.71">Version 5.71 (tester) (3/3/99)</a>
293
<ul>
294
<li><a href="#5.71_Incompatible_changes">Incompatible changes</a>,
295
    <a href="#5.71_Documentation">Documentation</a>,
296
    <a href="#5.71_Procedures">Procedures</a>,
297
    <a href="#5.71_Utilities">Utilities</a>,
298
    <a href="#5.71_Drivers">Drivers</a>,
299
    <a href="#5.71_Fonts">Fonts</a>,
300
    <a href="#5.71_Interpreter">Interpreter</a>,
301
    <a href="#5.71_Interpreter_PDF">Interpreter (PDF)</a>,
302
    <a href="#5.71_Streams">Streams</a>,
303
    <a href="#5.71_Library">Library</a>
304
</ul>
305
<li><a href="#Version5.70">Version 5.70 (internal) (2/20/99)</a>
306
<ul>
307
<li><a href="#5.70_Incompatible_changes">Incompatible changes</a>,
308
    <a href="#5.70_Documentation">Documentation</a>,
309
    <a href="#5.70_Procedures">Procedures</a>,
310
    <a href="#5.70_Utilities">Utilities</a>,
311
    <a href="#5.70_Drivers">Drivers</a>,
312
    <a href="#5.70_Fonts">Fonts</a>,
313
    <a href="#5.70_Interpreter">Interpreter</a>,
314
    <a href="#5.70_Interpreter_PDF">Interpreter (PDF)</a>,
315
    <a href="#5.70_Streams">Streams</a>,
316
    <a href="#5.70_Library">Library</a>
317
</ul>
318
<li><a href="#Version5.69">Version 5.69 (internal) (2/4/99)</a>
319
<ul>
320
<li><a href="#5.69_Procedures">Procedures</a>,
321
    <a href="#5.69_Utilities">Utilities</a>,
322
    <a href="#5.69_Drivers">Drivers</a>,
323
    <a href="#5.69_Interpreter">Interpreter</a>,
324
    <a href="#5.69_Streams">Streams</a>,
325
    <a href="#5.69_Library">Library</a>
326
</ul>
327
<li><a href="#Version5.68">Version 5.68 (internal) (1/29/99)</a>
328
<ul>
329
<li><a href="#5.68_Incompatible_changes">Incompatible changes</a>,
330
    <a href="#5.68_Documentation">Documentation</a>,
331
    <a href="#5.68_Procedures">Procedures</a>,
332
    <a href="#5.68_Utilities">Utilities</a>,
333
    <a href="#5.68_Drivers">Drivers</a>,
334
    <a href="#5.68_Fonts">Fonts</a>,
335
    <a href="#5.68_Platforms">Platforms</a>,
336
    <a href="#5.68_Interpreter">Interpreter</a>,
337
    <a href="#5.68_Streams">Streams</a>,
338
    <a href="#5.68_Library">Library</a>
339
</ul>
340
<li><a href="#Version5.67">Version 5.67 (internal) (1/8/99)</a>
341
<ul>
342
<li><a href="#5.67_Incompatible_changes">Incompatible changes</a>,
343
    <a href="#5.67_Documentation">Documentation</a>,
344
    <a href="#5.67_Procedures">Procedures</a>,
345
    <a href="#5.67_Utilities">Utilities</a>,
346
    <a href="#5.67_Drivers">Drivers</a>,
347
    <a href="#5.67_Fonts">Fonts</a>,
348
    <a href="#5.67_Interpreter">Interpreter</a>,
349
    <a href="#5.67_Interpreter_PDF">Interpreter (PDF)</a>,
350
    <a href="#5.67_Streams">Streams</a>,
351
    <a href="#5.67_Library">Library</a>
352
</ul>
353
<li><a href="#Version5.66">Version 5.66 (internal) (11/25/98)</a>
354
<ul>
355
<li><a href="#5.66_Incompatible_changes">Incompatible changes</a>,
356
    <a href="#5.66_Documentation">Documentation</a>,
357
    <a href="#5.66_Procedures">Procedures</a>,
358
    <a href="#5.66_Utilities">Utilities</a>,
359
    <a href="#5.66_Drivers">Drivers</a>,
360
    <a href="#5.66_Platforms">Platforms</a>,
361
    <a href="#5.66_Interpreter">Interpreter</a>,
362
    <a href="#5.66_Interpreter_PDF">Interpreter (PDF)</a>,
363
    <a href="#5.66_Streams">Streams</a>,
364
    <a href="#5.66_Library">Library</a>
365
</ul>
366
<li><a href="#Version5.65">Version 5.65 (internal) (11/13/98)</a>
367
<ul>
368
<li><a href="#5.65_Incompatible_changes">Incompatible changes</a>,
369
    <a href="#5.65_Documentation">Documentation</a>,
370
    <a href="#5.65_Procedures">Procedures</a>,
371
    <a href="#5.65_Utilities">Utilities</a>,
372
    <a href="#5.65_Drivers">Drivers</a>,
373
    <a href="#5.65_Platforms">Platforms</a>,
374
    <a href="#5.65_Interpreter">Interpreter</a>,
375
    <a href="#5.65_Interpreter_PDF">Interpreter (PDF)</a>,
376
    <a href="#5.65_Library">Library</a>
377
</ul>
378
<li><a href="#Version5.64">Version 5.64 (internal) (11/5/98)</a>
379
<ul>
380
<li><a href="#5.64_Incompatible_changes">Incompatible changes</a>,
381
    <a href="#5.64_Documentation">Documentation</a>,
382
    <a href="#5.64_Procedures">Procedures</a>,
383
    <a href="#5.64_Drivers">Drivers</a>,
384
    <a href="#5.64_Library">Library</a>
385
</ul>
386
<li><a href="#Version5.63">Version 5.63 (internal) (11/4/98)</a>
387
<ul>
388
<li><a href="#5.63_Incompatible_changes">Incompatible changes</a>,
389
    <a href="#5.63_Documentation">Documentation</a>,
390
    <a href="#5.63_Procedures">Procedures</a>,
391
    <a href="#5.63_Drivers">Drivers</a>,
392
    <a href="#5.63_Interpreter">Interpreter</a>,
393
    <a href="#5.63_Library">Library</a>
394
</ul>
395
<li><a href="#Version5.62">Version 5.62 (internal) (10/31/98)</a>
396
<ul>
397
<li><a href="#5.62_Incompatible_changes">Incompatible changes</a>,
398
    <a href="#5.62_Documentation">Documentation</a>,
399
    <a href="#5.62_Drivers">Drivers</a>,
400
    <a href="#5.62_Interpreter">Interpreter</a>,
401
    <a href="#5.62_Library">Library</a>
402
</ul>
403
<li><a href="#Version5.61">Version 5.61 (internal) (10/28/98)</a>
404
<ul>
405
<li><a href="#5.61_Documentation">Documentation</a>,
406
    <a href="#5.61_Procedures">Procedures</a>,
407
    <a href="#5.61_Utilities">Utilities</a>,
408
    <a href="#5.61_Drivers">Drivers</a>,
409
    <a href="#5.61_Interpreter_PDF">Interpreter (PDF)</a>,
410
    <a href="#5.61_Streams">Streams</a>,
411
    <a href="#5.61_Library">Library</a>
412
</ul>
413
<li><a href="#Version5.60">Version 5.60 (internal) (10/18/98)</a>
414
<ul>
415
<li><a href="#5.60_Incompatible_changes">Incompatible changes</a>,
416
    <a href="#5.60_Documentation">Documentation</a>,
417
    <a href="#5.60_Procedures">Procedures</a>,
418
    <a href="#5.60_Utilities">Utilities</a>,
419
    <a href="#5.60_Drivers">Drivers</a>,
420
    <a href="#5.60_Platforms">Platforms</a>,
421
    <a href="#5.60_Interpreter">Interpreter</a>,
422
    <a href="#5.60_Interpreter_PDF">Interpreter (PDF)</a>,
423
    <a href="#5.60_Streams">Streams</a>,
424
    <a href="#5.60_Library">Library</a>
425
</ul>
426
<li>(Versions 5.51 - 5.59 deliberately omitted.)
427
<li><a href="#Version5.50">Version 5.50 (9/16/98)</a>
428
<ul>
429
<li><a href="#5.50_Documentation">Documentation</a>,
430
    <a href="#5.50_Procedures">Procedures</a>,
431
    <a href="#5.50_Utilities">Utilities</a>,
432
    <a href="#5.50_Drivers">Drivers</a>,
433
    <a href="#5.50_Platforms">Platforms</a>,
434
    <a href="#5.50_Interpreter">Interpreter</a>,
435
    <a href="#5.50_Interpreter_PDF">Interpreter (PDF)</a>,
436
    <a href="#5.50_Library">Library</a>
437
</ul>
438
<li><a href="#Version5.40">Version 5.40 (beta) (9/10/98)</a>
439
<ul>
440
<li><a href="#5.40_Documentation">Documentation</a>,
441
    <a href="#5.40_Procedures">Procedures</a>,
442
    <a href="#5.40_Utilities">Utilities</a>,
443
    <a href="#5.40_Drivers">Drivers</a>,
444
    <a href="#5.40_Platforms">Platforms</a>,
445
    <a href="#5.40_Library">Library</a>
446
</ul>
447
<li><a href="#Version5.39">Version 5.39 (beta) (9/8/98)</a>
448
<ul>
449
<li><a href="#5.39_Drivers">Drivers</a>,
450
    <a href="#5.39_Library">Library</a>
451
</ul>
452
<li><a href="#Version5.38">Version 5.38 (beta) (9/3/98)</a>
453
<ul>
454
<li><a href="#5.38_Documentation">Documentation</a>,
455
    <a href="#5.38_Drivers">Drivers</a>,
456
    <a href="#5.38_Interpreter">Interpreter</a>,
457
    <a href="#5.38_Library">Library</a>
458
</ul>
459
<li><a href="#Version5.37">Version 5.37 (beta) (8/31/98)</a>
460
<ul>
461
<li><a href="#5.37_Documentation">Documentation</a>,
462
    <a href="#5.37_Procedures">Procedures</a>,
463
    <a href="#5.37_Utilities">Utilities</a>,
464
    <a href="#5.37_Drivers">Drivers</a>,
465
    <a href="#5.37_Fonts">Fonts</a>,
466
    <a href="#5.37_Interpreter">Interpreter</a>,
467
    <a href="#5.37_Interpreter_PDF">Interpreter (PDF)</a>,
468
    <a href="#5.37_Streams">Streams</a>,
469
    <a href="#5.37_Library">Library</a>
470
</ul>
471
<li><a href="#Version5.36">Version 5.36 (beta) (8/25/98)</a>
472
<ul>
473
<li><a href="#5.36_Documentation">Documentation</a>,
474
    <a href="#5.36_Utilities">Utilities</a>,
475
    <a href="#5.36_Drivers">Drivers</a>,
476
    <a href="#5.36_Platforms">Platforms</a>,
477
    <a href="#5.36_Fonts">Fonts</a>,
478
    <a href="#5.36_Interpreter">Interpreter</a>,
479
    <a href="#5.36_Interpreter_PDF">Interpreter (PDF)</a>,
480
    <a href="#5.36_Streams">Streams</a>,
481
    <a href="#5.36_Library">Library</a>
482
</ul>
483
<li><a href="#Version5.35">Version 5.35 (beta) (8/18/98)</a>
484
<ul>
485
<li><a href="#5.35_Documentation">Documentation</a>,
486
    <a href="#5.35_Drivers">Drivers</a>,
487
    <a href="#5.35_Fonts">Fonts</a>,
488
    <a href="#5.35_Interpreter">Interpreter</a>,
489
    <a href="#5.35_Interpreter_PDF">Interpreter (PDF)</a>,
490
    <a href="#5.35_Library">Library</a>
491
</ul>
492
<li><a href="#Version5.34">Version 5.34 (beta) (8/16/98)</a>
493
<ul>
494
<li><a href="#V5.34_Documentation">Documentation</a>,
495
    <a href="#V5.34_Procedures">Procedures</a>,
496
    <a href="#V5.34_Drivers">Drivers</a>,
497
    <a href="#V5.34_Interpreter">Interpreter</a>,
498
    <a href="#V5.34_Library">Library</a>
499
</ul>
500
<li><a href="#Version5.33">Version 5.33 (beta) (8/14/98)</a>
501
<ul>
502
<li><a href="#V5.33_Platforms">Platforms</a>,
503
    <a href="#V5.33_Fonts">Fonts</a>,
504
    <a href="#V5.33_Interpreter_PDF">Interpreter (PDF)</a>,
505
    <a href="#V5.33_Library">Library</a>
506
</ul>
507
<li><a href="#Version5.32">Version 5.32 (beta) (8/13/98)</a>
508
<ul>
509
<li><a href="#V5.32_Procedures">Procedures</a>,
510
    <a href="#V5.32_Interpreter">Interpreter</a>,
511
    <a href="#V5.32_Interpreter_PDF">Interpreter (PDF)</a>,
512
    <a href="#V5.32_Library">Library</a>
513
</ul>
514
<li><a href="#Version5.31">Version 5.31 (limited) (8/11/98)</a>
515
<ul>
516
<li><a href="#V5.31_Drivers">Drivers</a>,
517
    <a href="#V5.31_Interpreter">Interpreter</a>,
518
    <a href="#V5.31_Library">Library</a>
519
</ul>
520
<li><a href="#Version5.30">Version 5.30 (limited) (8/10/98)</a>
521
<ul>
522
<li><a href="#V5.30_Documentation">Documentation</a>,
523
    <a href="#V5.30_Procedures">Procedures</a>,
524
    <a href="#V5.30_Drivers">Drivers</a>,
525
    <a href="#V5.30_Platforms">Platforms</a>,
526
    <a href="#V5.30_Fonts">Fonts</a>,
527
    <a href="#V5.30_Interpreter">Interpreter</a>,
528
    <a href="#V5.30_Streams">Streams</a>,
529
    <a href="#V5.30_Library">Library</a>
530
</ul>
531
<li><a href="#Version5.28">Version 5.28 (limited) (8/3/98)</a>
532
<ul>
533
<li><a href="#V5.28_Documentation">Documentation</a>,
534
    <a href="#V5.28_Procedures">Procedures</a>,
535
    <a href="#V5.28_Utilities">Utilities</a>,
536
    <a href="#V5.28_Drivers">Drivers</a>,
537
    <a href="#V5.28_Platforms">Platforms</a>,
538
    <a href="#V5.28_Interpreter">Interpreter</a>,
539
    <a href="#V5.28_Interpreter_PDF">Interpreter (PDF)</a>,
540
    <a href="#V5.28_Streams">Streams</a>,
541
    <a href="#V5.28_Library">Library</a>
542
</ul>
543
<li><a href="#Version5.27">Version 5.27 (limited) (7/18/98)</a>
544
<ul>
545
<li><a href="#V5.27_Documentation">Documentation</a>,
546
    <a href="#V5.27_Procedures">Procedures</a>,
547
    <a href="#V5.27_Drivers">Drivers</a>,
548
    <a href="#V5.27_Platforms">Platforms</a>,
549
    <a href="#V5.27_Interpreter">Interpreter</a>,
550
    <a href="#V5.27_Interpreter_PDF">Interpreter (PDF)</a>,
551
    <a href="#V5.27_Library">Library</a>
552
</ul>
553
<li><a href="#Version5.26">Version 5.26 (limited) (7/7/98)</a>
554
<ul>
555
<li><a href="#V5.26_Procedures">Procedures</a>,
556
    <a href="#V5.26_Drivers">Drivers</a>,
557
    <a href="#V5.26_Fonts">Fonts</a>,
558
    <a href="#V5.26_Interpreter">Interpreter</a>,
559
    <a href="#V5.26_Library">Library</a>
560
</ul>
561
<li><a href="#Version5.25">Version 5.25 (limited) (7/1/98)</a>
562
<ul>
563
<li><a href="#V5.25_Documentation">Documentation</a>,
564
    <a href="#V5.25_Procedures">Procedures</a>,
565
    <a href="#V5.25_Platforms">Platforms</a>,
566
    <a href="#V5.25_Fonts">Fonts</a>,
567
    <a href="#V5.25_Interpreter">Interpreter</a>,
568
    <a href="#V5.25_Interpreter_PDF">Interpreter (PDF)</a>,
569
    <a href="#V5.25_Drivers">Drivers</a>,
570
    <a href="#V5.25_Library">Library</a>
571
</ul>
572
<li><a href="#Version5.24">Version 5.24 (limited) (6/17/98)</a>
573
<ul>
574
<li><a href="#V5.24_Documentation">Documentation</a>,
575
    <a href="#V5.24_Procedures">Procedures</a>,
576
    <a href="#V5.24_Utilities">Utilities</a>,
577
    <a href="#V5.24_Drivers">Drivers</a>,
578
    <a href="#V5.24_Platforms">Platforms</a>,
579
    <a href="#V5.24_Fonts">Fonts</a>,
580
    <a href="#V5.24_Interpreter">Interpreter</a>,
581
    <a href="#V5.24_Interpreter_PDF">Interpreter (PDF)</a>,
582
    <a href="#V5.24_Streams">Streams</a>,
583
    <a href="#V5.24_Library">Library</a>
584
</ul>
585
<li><a href="#Version5.23">Version 5.23 (limited) (5/14/98)</a>
586
<ul>
587
<li><a href="#V5.23_Documentation">Documentation</a>,
588
    <a href="#V5.23_Procedures">Procedures</a>,
589
    <a href="#V5.23_Utilities">Utilities</a>,
590
    <a href="#V5.23_Drivers">Drivers</a>,
591
    <a href="#V5.23_Platforms">Platforms</a>,
592
    <a href="#V5.23_Fonts">Fonts</a>,
593
    <a href="#V5.23_Interpreter">Interpreter</a>,
594
    <a href="#V5.23_Interpreter_PDF">Interpreter (PDF)</a>,
595
    <a href="#V5.23_Streams">Streams</a>,
596
    <a href="#V5.23_Library">Library</a>
597
</ul>
598
<li><a href="#Version5.22">Version 5.22 (limited) (2/19/98)</a>
599
<ul>
600
<li><a href="#V5.22_Documentation">Documentation</a>,
601
    <a href="#V5.22_Procedures">Procedures</a>,
602
    <a href="#V5.22_Utilities">Utilities</a>,
603
    <a href="#V5.22_Drivers">Drivers</a>,
604
    <a href="#V5.22_Interpreter">Interpreter</a>,
605
    <a href="#V5.22_Interpreter_PDF">Interpreter (PDF)</a>,
606
    <a href="#V5.22_Streams">Streams</a>,
607
    <a href="#V5.22_Library">Library</a>
608
</ul>
609
<li><a href="#Version5.21">Version 5.21 (limited) (1/19/98)</a>
610
<ul>
611
<li><a href="#V5.21_Documentation">Documentation</a>,
612
    <a href="#V5.21_Procedures">Procedures</a>,
613
    <a href="#V5.21_Drivers">Drivers</a>,
614
    <a href="#V5.21_Fonts">Fonts</a>,
615
    <a href="#V5.21_Interpreter">Interpreter</a>,
616
    <a href="#V5.21_Interpreter_PDF">Interpreter (PDF)</a>,
617
    <a href="#V5.21_Library">Library</a>
618
</ul>
619
<li><a href="#Version5.20">Version 5.20 (limited) (1/8/98)</a>
620
<ul>
621
<li><a href="#V5.20_Documentation">Documentation</a>,
622
    <a href="#V5.20_Procedures">Procedures</a>,
623
    <a href="#V5.20_Utilities">Utilities</a>,
624
    <a href="#V5.20_Drivers">Drivers</a>,
625
    <a href="#V5.20_Platforms">Platforms</a>,
626
    <a href="#V5.20_Fonts">Fonts</a>,
627
    <a href="#V5.20_Interpreter">Interpreter</a>,
628
    <a href="#V5.20_Interpreter_PDF">Interpreter (PDF)</a>,
629
    <a href="#V5.20_Streams">Streams</a>,
630
    <a href="#V5.20_Library">Library</a>
631
</ul>
632
<li><a href="#Version5.10">Version 5.10 (11/23/97)</a>
633
<ul>
634
<li><a href="#V5.10_Documentation">Documentation</a>,
635
    <a href="#V5.10_Procedures">Procedures</a>,
636
    <a href="#V5.10_Utilities">Utilities</a>,
637
    <a href="#V5.10_Drivers">Drivers</a>,
638
    <a href="#V5.10_Interpreter">Interpreter</a>,
639
    <a href="#V5.10_Library">Library</a>
640
</ul>
641
<li><a href="#Version5.07">Version 5.07 (limited) (10/31/97)</a>
642
<ul>
643
<li><a href="#V5.07_Documentation">Documentation</a>,
644
    <a href="#V5.07_Drivers">Drivers</a>,
645
    <a href="#V5.07_Library">Library</a>
646
</ul>
647
<li><a href="#Version5.06">Version 5.06 (limited) (10/7/97)</a>
648
<ul>
649
<li><a href="#V5.06_Documentation">Documentation</a>,
650
    <a href="#V5.06_Procedures">Procedures</a>,
651
    <a href="#V5.06_Utilities">Utilities</a>,
652
    <a href="#V5.06_Drivers">Drivers</a>,
653
    <a href="#V5.06_Interpreter">Interpreter</a>,
654
    <a href="#V5.06_Interpreter_PDF">Interpreter (PDF)</a>,
655
    <a href="#V5.06_Library">Library</a>
656
</ul>
657
<li><a href="#Version5.05">Version 5.05 (limited) (9/24/97)</a>
658
<ul>
659
<li><a href="#V5.05_Platforms">Platforms</a>,
660
    <a href="#V5.05_Drivers">Drivers</a>,
661
    <a href="#V5.05_Interpreter">Interpreter</a>,
662
    <a href="#V5.05_Interpreter_PDF">Interpreter (PDF)</a>
663
</ul>
664
<li><a href="#Version5.04">Version 5.04 (limited) (9/21/97)</a>
665
<ul>
666
<li><a href="#V5.04_Documentation">Documentation</a>,
667
    <a href="#V5.04_Procedures">Procedures</a>,
668
    <a href="#V5.04_Utilities">Utilities</a>,
669
    <a href="#V5.04_Drivers">Drivers</a>,
670
    <a href="#V5.04_Interpreter">Interpreter</a>,
671
    <a href="#V5.04_Interpreter_PDF">Interpreter (PDF)</a>,
672
    <a href="#V5.04_Library">Library</a>
673
</ul>
674
<li><a href="#Version5.03">Version 5.03 (8/8/97)</a>
675
<ul>
676
<li><a href="#V5.03_Documentation">Documentation</a>,
677
    <a href="#V5.03_Procedures">Procedures</a>,
678
    <a href="#V5.03_Drivers">Drivers</a>,
679
    <a href="#V5.03_Platforms">Platforms</a>,
680
    <a href="#V5.03_Fonts">Fonts</a>,
681
    <a href="#V5.03_Interpreter">Interpreter</a>,
682
    <a href="#V5.03_Interpreter_PDF">Interpreter (PDF)</a>,
683
    <a href="#V5.03_Library">Library</a>
684
</ul>
685
<li><a href="#Version5.02">Version 5.02 (7/28/97)</a>
686
<ul>
687
<li><a href="#V5.02_Documentation">Documentation</a>,
688
    <a href="#V5.02_Procedures">Procedures</a>,
689
    <a href="#V5.02_Utilities">Utilities</a>,
690
    <a href="#V5.02_Drivers">Drivers</a>,
691
    <a href="#V5.02_Platforms">Platforms</a>,
692
    <a href="#V5.02_Fonts">Fonts</a>,
693
    <a href="#V5.02_Interpreter">Interpreter</a>,
694
    <a href="#V5.02_Interpreter_PDF">Interpreter (PDF)</a>,
695
    <a href="#V5.02_Library">Library</a>
696
</ul>
697
<li><a href="#Version5.01">Version 5.01 (6/22/97)</a>
698
<ul>
699
<li><a href="#V5.01_Documentation">Documentation</a>,
700
    <a href="#V5.01_Procedures">Procedures</a>,
701
    <a href="#V5.01_Utilities">Utilities</a>,
702
    <a href="#V5.01_Drivers">Drivers</a>,
703
    <a href="#V5.01_Platforms">Platforms</a>,
704
    <a href="#V5.01_Interpreter">Interpreter</a>,
705
    <a href="#V5.01_Interpreter_PDF">Interpreter (PDF)</a>,
706
    <a href="#V5.01_Library">Library</a>
707
</ul>
708
<li><a href="#Version5.0">Version 5.0 (6/6/97)</a>
709
<ul>
710
<li><a href="#V5.0_Documentation">Documentation</a>,
711
    <a href="#V5.0_Procedures">Procedures</a>,
712
    <a href="#V5.0_Interpreter">Interpreter</a>,
713
    <a href="#V5.0_Library">Library</a>
714
</ul>
715
</ul></blockquote>
716
 
717
<!-- [1.2 end table of contents] =========================================== -->
718
 
719
<!-- [1.3 begin hint] ====================================================== -->
720
 
721
<p>
722
This document is a record of changes in Ghostscript releases numbered 5.n.
723
For earlier versions, see the the history documents:
724
 
725
<blockquote>
726
<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
727
<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
728
<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
729
<a href="History1.htm">History of Ghostscript versions 1.n</a>
730
</blockquote>
731
 
732
<p>For other information, see the <a href="Readme.htm">Ghostscript
733
overview</a>.
734
 
735
<!-- [1.3 end hint] ======================================================== -->
736
 
737
<hr>
738
 
739
<!-- [1.0 end visible header] ============================================== -->
740
 
741
<!-- [2.0 begin contents] ================================================== -->
742
 
743
<p>
744
Within each release, news appears in the following order: Incompatible
745
changes, Documentation, Procedures, Utilities, Drivers, Platforms, Fonts,
746
Interpreter, Streams (included under Interpreter through release 2.9.9),
747
Library.  Changes marked with a * were made available as patches to a
748
previous release.
749
 
750
<hr>
751
 
752
<h2><a name="Version5.99"></a>Version 5.99 (beta) (1999-12-18)</h2>
753
 
754
<h3><a name="5.99_Incompatible_changes"></a>Incompatible changes</h3><pre>
755
 
756
(Procedures)
757
	- All platform-specific makefiles must now define the Q macro.
758
	- Ghostscript now exits with an error status if an error occurs in a
759
file named on the command line, a -c command, or piped input.
760
(Utilities)
761
	- ps2epsi now disables setpagedevice: the bounding box of the EPSI
762
output file is recorded only in the %%BoundingBox comment.
763
(Drivers)
764
	- The return type of gdev_vector_close_file is changed from void
765
to int.
766
(Interpreter)
767
	- The name of the predefined stochastic halftone is changed to
768
StochasticDefault.  (This change was actually made in 5.98.)
769
	- The compht feature is replaced by stocht.
770
	- Font searching now looks in FontResourceDir.
771
	- The ASCIIHexEncode filter now produces upper-case output.
772
(Library)
773
	- The type returned by compiled halftone resource access procedures
774
is changed.
775
 
776
</pre><h3><a name="5.99_Documentation"></a>Documentation</h3><pre>
777
 
778
Fixes problems:
779
	- A stray character had gotten added to the beginning of a file.
780
(doc/Use.htm)
781
	- Many minor HTML errors had crept in.  (doc/*.htm, doc/gsdoc.el)
782
 
783
Updates the docmentation on the mswinpr2 driver.  (doc/Devices.htm)
784
 
785
Notes that GNU make currently does not work on OpenVMS.  (doc/Make.htm)
786
 
787
Documents the fact that x/y_pixels_per_inch are deprecated.  (gxdevcli.h)
788
 
789
Documents certain bugs in ps2pdf.  (doc/Ps2pdf.htm)
790
 
791
Documents the addition of FontResourceDir to the font search process.
792
(doc/Use.htm)
793
 
794
Documents the new arrangement for B paper sizes.  (doc/Psfiles.htm,
795
doc/Use.htm, doc/gs-vms.hlp, man/gs.1)
796
 
797
Removes the "under development" warning from the text API and
798
get_bits_rectangle documentation, and adds a little more detail.
799
(doc/Drivers.htm)
800
 
801
Adds new user-contributed documentation for installing and using Ghostscript
802
fonts with X Windows.  (doc/Fonts.htm, doc/Readme.htm, doc/Use.htm)
803
 
804
Adds building with the Watcom compiler to the release process.
805
(doc/Release.htm)
806
 
807
Adds an "Improving performance" section to the user documentation.
808
(doc/Use.htm)
809
 
810
Adds a note to the C style guide about order of evaluation.
811
(doc/C-style.htm)
812
 
813
Documents the new stocht.ps file.  (doc/Psfiles.htm)
814
 
815
</pre><h3><a name="5.99_Procedures"></a>Procedures</h3><pre>
816
 
817
Fixes problems:
818
	- A missing dependency caused builds on certain platforms to fail.
819
(int.mak)
820
	- $(EXP) was missing before various utility invocations.  (int.mak)
821
	- VMS converts all unquoted arguments to lower case.  In order to
822
work around this, we have added a platform-specific makefile macro Q, which
823
is defined as a quote mark on VMS and as an empty string on all other
824
platforms, and used it to quote the few mixed-case values in the makefiles.
825
We removed the obsolete QQ macro from os2.mak as well.  (cfonts.mak,
826
dvx-head.mak, int.mak, openvms.mak, openvms.mmk, os2.mak, unixhead.mak,
827
wccommon.mak, winlib.mak)
828
	- PSRCDIR was incorrectly referenced as PNGSRCDIR in one place.
829
(all-arch.mak)
830
	- winint.mak had a conditional that Watcom's make program didn't
831
accept.  (winint.mak)
832
 
833
Adds a makefile entry to allow compilation with libpng 1.0.5.  (libpng.mak)
834
 
835
Updates the Borland C++ makefile to work with C++Builder 4.  (bcwin32.mak)
836
 
837
Updates the Unix installation makefile to install stocht.ps.  (unixinst.mak)
838
 
839
</pre><h3><a name="5.99_Utilities"></a>Utilities</h3><pre>
840
 
841
Fixes problems:
842
	- ps2epsi didn't disable setpagedevice.  (lib/ps2epsi)
843
	- geninit needed &lt;stdlib.h&gt; for 'exit'.  (geninit.c)
844
	- Some invocations of utilities didn't deal with VMS's habit of
845
converting arguments to lower case.  (geninit.c, cfonts.mak)
846
	- The ps2pdf*.bat files didn't produce a usage message if no
847
arguments were provided.  (lib/ps2pdf.bat, lib/ps2pdf12.bat,
848
lib/ps2pdf13.bat)
849
	- Removes some warnings from the Windows uninstaller.
850
(dwuninst.cpp)
851
 
852
Upgrades the halftone compiler to handle Type 5 halftones.  (genht.c)
853
 
854
Makes the initialization string compiler recognize sections of the code
855
where binary tokens are allowed, and convert literal hex strings within such
856
sections to binary-token strings, which take less space and load faster.
857
(geninit.c)
858
 
859
Adds a utility file to define b0 ... b6 as selecting JIS B paper sizes.
860
(unixinst.mak, lib/jispaper.ps)
861
 
862
Modifies the font printing utility to sort unencoded characters.
863
(lib/prfont.ps)
864
 
865
Adds a small utility to help use the StochasticDefault halftone.
866
(lib/stocht.ps)
867
 
868
</pre><h3><a name="5.99_Drivers"></a>Drivers</h3><pre>
869
 
870
Fixes problems:
871
	- The output of the epswrite driver couldn't be embedded in another
872
file, because it assumed it was invoked with an empty operand stack.
873
(gdevps.c)
874
	- "Vector" drivers didn't detect I/O errors such as filling up the
875
disk.  (gdevvec.h, gdevpdf.c, gdevps.c, gdevpx.c, gdevvec.c)
876
	- The bookkeeping for image color spaces when banding was incorrect,
877
possibly causing memory access errors.  (gxclist.h, gxclimag.c, gxclist.c)
878
	- The cljet5 driver didn't place the image on the page correctly.
879
(gdevclj.c)
880
	- 16-bit X11 devices with R/G/B widths other than 5/6/5 sometimes
881
failed to map colors correctly.  (gdevxcmp.h, gdevxcmp.c)
882
	- The cljet5c driver omitted a needed cast.  (gdevcljc.c)
883
 
884
Adds new x11rg16x and x11rg32x devices to test X Windows with unusual pixel
885
layout.  (devs.mak, gdevxalt.c)
886
 
887
Works around a bug in Acrobat Distiller 4 (and perhaps some other PostScript
888
interpreters) that causes an error if CCITTFaxDecode with /EndOfBlock = true
889
is given data with no EOB (terminated by the end of the data stream
890
instead).  (gdevps.c)
891
 
892
</pre><h3><a name="5.99_Platforms"></a>Platforms</h3><pre>
893
 
894
Fixes problems:
895
	- The absence of mktemp on the Watcom platform caused a linking
896
error under Windows.  (watc.mak, watcw32.mak, gp_iwatc.c, gp_mktmp.c)
897
 
898
</pre><h3><a name="5.99_Fonts"></a>Fonts</h3><pre>
899
 
900
Fixes problems:
901
	- findfont, /Font resourcestatus, and /Font resourceforall weren't
902
consistent.  (lib/gs_fonts.ps, lib/gs_res.ps)
903
	- Very large TrueType fonts caused a stackoverflow.  (lib/gs_ttf.ps)
904
 
905
</pre><h3><a name="5.99_PDF_writer"></a>PDF writer</h3><pre>
906
 
907
Fixes problems:
908
	- Errors in pdfmark and setdistillerparams were ignored (!).
909
(lib/gs_pdfwr.ps)
910
	- The PUT pdfmark didn't allow adding dictionaries to stream-type
911
objects.  (The pdfmark documentation says this isn't allowed, but we think
912
this is an oversight, since it is reasonable and unambiguous and Acrobat
913
Distiller allows it.)  (gdevpdfm.c)
914
	- The token scanner used to substitute object names in pdfmark
915
parameters sometimes added an extra character on the end.  (gdevpdfr.c)
916
	- ashow and [a]widthshow produced incorrect text spacing.  (bug
917
introduced by an optimization in 5.97) (gdevpdft.c)
918
	- setdistillerparams left its argument on the stack.
919
(lib/gs_pdfwr.ps)
920
	- 0-height images caused errors either at conversion or at rendering
921
time.  (gdevpdfi.c)
922
	- If the FontMatrix included a translation component, text was
923
positioned incorrectly.  NOTE: this fix may not handle x/y/xyshow.
924
(gdevpdft.c)
925
	- Out-of-range user-space coordinates could get generated for
926
rectangles.  NOTE: they can still get generated for general paths.
927
(gdevpdfd.c)
928
	- Widths weren't written for renamed built-in fonts.  We fixed this
929
partly by improving the algorithm for recognizing built-in fonts.
930
(gdevpdff.h, gdevpdff.c, gdevpdft.c)
931
 
932
Works around the Acrobat limitation that user-space coordinates must not
933
exceed 32K.  (fix from Artifex) (gdevpdfp.c)
934
 
935
Works around an Acrobat Reader 3 bug with printing files including Type 3
936
fonts: with the "Download Fonts Once" option, AR3 only emits the font subset
937
referenced on the first page where the font appears.  (gdevpdfx.h,
938
gdevpdf.c, gdevpdft.c)
939
 
940
</pre><h3><a name="5.99_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
941
 
942
Fixes problems:
943
	- Type 3 fonts weren't handled properly as a marking context, so if
944
a CharProc referenced a resource in the font, an error would occur.
945
(lib/pdf_fonts.ps)
946
	- 0-height images caused an error.  (lib/pdf_draw.ps)
947
 
948
</pre><h3><a name="5.99_Interpreter"></a>Interpreter</h3><pre>
949
 
950
Fixes problems:
951
	- Errors weren't propagated properly.  (bug introduced in 5.98 by
952
enhanced error recovery code) (imainarg.h, gs.c, imainarg.c)
953
	- Errors in -c commands or in files named on the command line
954
sometimes allowed execution to continue, and did not terminate with an
955
abnormal status.  (lib/gs_init.ps)
956
 
957
Changes the binary token scanner so that if the stream buffer is in foreign
958
space, binary-token strings will not be copied, but will be referenced
959
directly in the buffer.  This parallels what is done for name strings.
960
(iscanbin.c)
961
 
962
Changes the stochastic halftone from multiple Type 3s to a Type 5.
963
(lib/ht_ccsto.ps, int.mak)
964
 
965
Replaces the compht feature with a new feature called stocht.  If this
966
feature is selected, the StochasticDefault halftone resource will be
967
pre-loaded into Ghostscript.  If COMPILE_INITS=1, all the halftone data
968
(threshold array, order and bits arrays) will be efficiently compiled into
969
the executable.  (int.mak)
970
 
971
Replaces (...\n) print with (...) = everywhere.  (lib/gs_cmdl.ps,
972
lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_setpd.ps, lib/pdf_base.ps,
973
lib/pdf_font.ps, lib/pdf_main.ps, lib/pdf_sec.ps)
974
 
975
Adds support for JIS B paper sizes: statusdict will now include isob0..6 and
976
jisb0..6 operators, with b0..6 normally aliased to the former.
977
(lib/gs_statd.ps, lib/jispaper.ps)
978
 
979
Adds a b5tray procedure; limits the valid arguments for setpagetype to the
980
Adobe-defined values 0 and 1.  (lib/gs_statd.ps)
981
 
982
Updates clients for the change in the gs_image_* API.  (zimage.c)
983
 
984
Makes the default halftone lookup procedure more reasonable.
985
(lib/gs_init.ps, lib/gs_ll3.ps)
986
 
987
</pre><h3><a name="5.99_Streams"></a>Streams</h3><pre>
988
 
989
Fixes problems:
990
	- An error condition when closing a file stream wasn't reported
991
properly.  (sfxfd.c, sfxstdio.c)
992
 
993
For greater Adobe compatibility, changes the ASCIIHexEncode filter to
994
produce upper-case output.  (sstring.c)
995
 
996
</pre><h3><a name="5.99_Library"></a>Library</h3><pre>
997
 
998
Fixes problems:
999
	- The gs_image_* API didn't work for ImageType 3 images.  Fixing
1000
this required a small (but backward-compatible) API change.  (fix mostly
1001
provided by Artifex)  (gsimage.h, gsimage.c)
1002
	- The change in the bbox device in 5.95 broke it for the case where
1003
it was being used in a pipeline.  (gdevbbox.c)
1004
	- A possible overflow wasn't detected when stroking lines with very
1005
large coordinates.  (gxstroke.c)
1006
	- A mask was sized incorrectly.  (gsdcolor.h)
1007
 
1008
Updates the runtime support for compiled halftones.  (gxdhtres.h, gscdefs.h,
1009
gconf.c, gxclrast.c, gxhtbit.c)
1010
 
1011
Replaces all references to the now-deprecated x/y_pixels_per_inch with
1012
HWResolution[0/1].  (gsdevice.c, gxclist.c, gxpcmap.c)
1013
 
1014
</pre>
1015
 
1016
<hr>
1017
 
1018
<h2><a name="Version5.98"></a>Version 5.98 (beta) (1999-12-01)</h2>
1019
 
1020
<h3><a name="5.98_Incompatible_changes"></a>Incompatible changes</h3><pre>
1021
 
1022
(Library)
1023
	- The return type of init_proc is changed from void to int.
1024
	- The return types of gs_lib_init* are changed from void to int.
1025
(Interpreter)
1026
	- The return types of gs_[main_]init*, gs_[main_]add_lib_path,
1027
gs_[main_]set_lib_paths, and a number of internal initialization-related
1028
procedures are changed from void to int.
1029
 
1030
</pre><h3><a name="5.98_Documentation"></a>Documentation</h3><pre>
1031
 
1032
Improves the documentation of the clist_render_rectangle procedure.
1033
(gxclist.h)
1034
 
1035
Makes it clear that pre-public-release filesets should not be redistributed.
1036
(doc/Tester.htm)
1037
 
1038
Clarifies that the parameters for the X driver are command line switches,
1039
not X resources.  (doc/Use.htm)
1040
 
1041
Improves the documentation of ps2pdf in response to some user comments.
1042
(doc/Ps2pdf.htm)
1043
 
1044
Documents the initial settings of the distiller parameters.
1045
(doc/Ps2pdf.htm)
1046
 
1047
Documents the UniqueIDs assigned to Aladdin.  (lib/gs_fonts.ps)
1048
 
1049
Updates the documentation for the stochastic halftone mask.  (doc/Make.htm)
1050
 
1051
Removes some obsolete material.  (doc/Release.htm)
1052
 
1053
</pre><h3><a name="5.98_Procedures"></a>Procedures</h3><pre>
1054
 
1055
Fixes problems:
1056
	- The new ps2pdf* scripts weren't included in the Unix install list.
1057
(unixinst.mak)
1058
	- The directory names were missing in BEGINFILES.  (openvms.mak)
1059
	- The .pl and .sh scripts weren't included in the Unix install list.
1060
(unixinst.mak)
1061
 
1062
Updates all-arch.mak with a newer version from its contributor.
1063
(all-arch.mak)
1064
 
1065
Updates the makefiles for a change in eexec modularization.  (devs.mak,
1066
int.mak, lib.mak)
1067
 
1068
</pre><h3><a name="5.98_Utilities"></a>Utilities</h3><pre>
1069
 
1070
Fixes problems:
1071
	- The dvipdf usage message was incorrect.  (lib/dvipdf)
1072
 
1073
Adds a utility for mechanically adding the Adobe extended Latin characters
1074
(primarily Central European accented letters) to a font.  Eventually we
1075
would like to integrate this into the font loader and/or make extended
1076
versions of the standard 35 fonts.  (lib/addxchar.ps)
1077
 
1078
</pre><h3><a name="5.98_Drivers"></a>Drivers</h3><pre>
1079
 
1080
Fixes problems:
1081
	- psdf_sorted_glyphs_include didn't handle empty lists correctly.
1082
(gdevpsdf.c)
1083
	- A reference to a #defined constant hadn't been converted to upper
1084
case.  (gdevpsdf.h)
1085
	- Acrobat Reader couldn't handle &lt;&gt; as the definition of
1086
Notice in an embedded font's FontInfo dictionary: it requires a () 
1087
string. (gdevpsd1.c)
1088
	- The [e]pswrite driver didn't take stroked paths into account when
1089
computing the bounding box.  (gdevps.c)
1090
 
1091
Updates gdevwpr2.c with a new version from its most recent author.
1092
(gdevwpr2.c)
1093
 
1094
</pre><h3><a name="5.98_Fonts"></a>Fonts</h3><pre>
1095
 
1096
Fixes problems:
1097
	- The FONTPATH file scanner wasn't protected against errors.
1098
(lib/gs_fonts.ps)
1099
	- Some badly designed Chinese TrueType fonts, whose 'post' table
1100
gives the name .null to all glyphs, didn't work properly.  (lib/gs_ttf.ps)
1101
	- The shareware Katakana font had an incorrect UniqueID.
1102
(fonts/fkarw.gsf)
1103
 
1104
Adds all of the PostScript 3 fonts to the intelligent substitution tables.
1105
(lib/gs_fonts.ps)
1106
 
1107
Changes the FONTPATH scanner to allow a %%BeginFont: line as the first line
1108
of a font.  Nothing in Adobe's documentation suggests that this is
1109
acceptable, but some fonts have it.  (lib/gs_fonts.ps)
1110
 
1111
Releases an updated set of the URW fonts, fixing the braceleftbt problem in
1112
the Symbol font and a couple of missing characters in the ZapfDingbats
1113
fonts, and adding the Euro glyph to the alphabetic fonts.  The new archive
1114
also includes fonts.scale and fonts.dir files for use with X Windows
1115
(mkfontdir and xfs).
1116
 
1117
Centralizes the definition of Aladdin's XUIDs.  (lib/gs_fonts.ps,
1118
lib/gs_ttf.ps)
1119
 
1120
</pre><h3><a name="5.98_PDF_writer"></a>PDF writer</h3><pre>
1121
 
1122
Fixes problems:
1123
	- The algorithm for making font names unique didn't take subset
1124
prefixes into account.  (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
1125
	- Computing character bounding boxes was taking an inordinate amount
1126
of time.  (performance problem only) (gdevpdff.c)
1127
	- The pdf_image_writer and pdf_image_enum structures didn't have GC
1128
descriptors, possibly causing memory corruption.  (gdevpdfi.c)
1129
	- PostScript files containing images with premature end-of-data were
1130
converted to PDF files with premature end-of-data, which Acrobat doesn't
1131
accept. (gdevpdfo.h, gdevpdfx.h, gdevpdfi.c, gdevpdfo.c, gdevpdfu.c)
1132
	- Pattern resources whose image was written in-line omitted a needed
1133
gsave (q).  (bug introduced in 5.94) (gdevpdfi.c)
1134
	- The similarity between a font and a base font wasn't computed
1135
correctly, leading to some unnecessary writing of Widths for standard fonts.
1136
(gdevpdft.c)
1137
	- Embedding a stream in the psdf_binary_writer caused garbage
1138
collector problems, because there could be pointers to that stream from
1139
elsewhere.  (gdevpsdf.h, gdevpsdf.c)
1140
	- The algorithms for deciding whether a font was script or serif
1141
were very inaccurate.  (The revised ones are only somewhat better.)
1142
(gdevpdff.c)
1143
	- Re-encoded characters in subset fonts weren't handled correctly.
1144
We work around this by writing the entire font if the character doesn't
1145
appear in the font's encoding.  This is inefficient but will always produce
1146
correct output.  (gdevpdff.h, gdevpdff.c, gdevpdft.c, gdevpdfw.c)
1147
	- The meaning of bit 6 in the Flags was supposed to have changed in
1148
PDF 1.2, but didn't.  (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
1149
	- The Widths array didn't get written out for embedded subsets of
1150
the built-in fonts.  (gdevpdfw.c)
1151
	- Planar images weren't handled correctly, and could cause memory
1152
corruption.  (gdevpdfi.c)
1153
	- Patterns still weren't scaled correctly; in fact, the "fix" in
1154
5.94 can't possibly have worked, and we don't understand why it seemed to.
1155
(gdevpdfi.c)
1156
 
1157
Recants the belief that the default encoding for embedded fonts is
1158
StandardEncoding (see 5.95): the appearance of this was a symptom of having
1159
multiple fonts with the same name.  (gdevpdft.c)
1160
 
1161
Removes FONT_EMBED_UNKNOWN, which is meaningless (a decision is always made
1162
about whether to embed a font).  (gdevpdff.h, gdevpdff.c, gdevpdft.c)
1163
 
1164
Changes the algorithm for picking the base font so that it produces more
1165
efficient output for certain cases of re-encoded fonts.  (gdevpdft.c)
1166
 
1167
</pre><h3><a name="5.98_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1168
 
1169
Fixes problems:
1170
	- Fonts were getting renamed unnecessarily.  (performance and PDF
1171
output size problem only) (lib/pdf_font.ps)
1172
	- Fonts with Widths but no FontDescriptor caused an error.
1173
(lib/pdf_font.ps)
1174
	- TrueType fonts processed the Encoding key in the font the same way
1175
as other font types, which is not correct.  (lib/pdf_font.ps)
1176
	- For embedded Type 3 fonts, the Widths entry in a font didn't
1177
override the width in the CharProc.  (lib/pdf_font.ps, lib/pdf_ops.ps)
1178
	- If a page had multiple Contents streams, and one of the streams
1179
ended with values on the operand stack, an error might occur.
1180
(lib/pdf_main.ps)
1181
	- Ts and Tz within a text object didn't take effect immediately.
1182
(lib/pdf_ops.ps)
1183
	- sc[n] and SC[N] could cause an error because Do left an extra item
1184
on the stack temporarily.  (lib/pdf_draw.ps)
1185
 
1186
</pre><h3><a name="5.98_Interpreter"></a>Interpreter</h3><pre>
1187
 
1188
Fixes problems:
1189
	- Getting the unscaled outline for a Type 1 font didn't disable
1190
hinting.  (mostly a performance problem) (zchar1.c)
1191
	- Error conditions during initialization weren't recognized.  Fixing
1192
this required changing various return types from void to int.  (ialloc.h,
1193
iinit.h, imain.h, interp.h, ialloc.c, iinit.c, imain.c)
1194
	- HalftoneMode didn't affect setscreen or setcolorscreen.
1195
(lib/gs_init.ps, lib/gs_ll3.ps)
1196
 
1197
Makes the interpreter quit with a message, rather than a stack dump, if it
1198
can't open the initial device and DEBUG is not set.  (lib/gs_init.ps)
1199
 
1200
Adds .setlimitclamp and .currentlimitclamp operators to access the limit
1201
clamp flag in the graphics state.  (zgstate.c)
1202
 
1203
Changes the names of the stochastic halftone mask to be more descriptive.
1204
(lib/ht_ccsto.ps, int.mak, unixinst.mak)
1205
 
1206
</pre><h3><a name="5.98_Streams"></a>Streams</h3><pre>
1207
 
1208
Adds the ability to forbid using hex encoding when writing strings.
1209
(spsdf.h, spsdf.c)
1210
 
1211
</pre><h3><a name="5.98_Library"></a>Library</h3><pre>
1212
 
1213
Fixes problems:
1214
	- Computing the width of a glyph unnecessarily constructed the
1215
entire outline.  (performance problem only) (gxtype1.c)
1216
	- Getting the unscaled width of a glyph in a Type 1 font didn't
1217
disable hinting.  (mostly a performance problem) (gxtype1.c.)
1218
	- The "unknown device" GC descriptor is no longer used.  (gsdevice.c)
1219
	- Some compilers *still* complained about end-of-loop code not being
1220
reached.  (gxpath2.c)
1221
	- Mixing float and double values sometimes caused spurious lines to
1222
be drawn when stroking very short lines with large widths.  (fix from
1223
Artifex) (gxpdash.c)
1224
	- The code for handling crossing lines in the path filling algorithm
1225
sometimes computed line crossings incorrectly, causing excessive
1226
computation.  (gxfill.c)
1227
	- When oversampling for anti-aliasing, the flatness parameter was
1228
not scaled, leading to unnecessarily accurate curve rendering.  (gspaint.c)
1229
	- An extra grestore in a Pattern PaintProc could cause a crash.
1230
(gxpcmap.c)
1231
	- Error conditions during initialization weren't recognized.  Fixing
1232
this required changing the return type of init_proc, and various other
1233
internal procedures, from void to int.  (std.h, gslib.h, gscdefs.h,
1234
gshtscr.c, gsiodev.c, gslib.c, gsutil.c)
1235
 
1236
Splits off the Type 1 encryption/decryption code into a separate file for
1237
sharing with the eexec streams.  (gscrypt1.c, gxtype1.c)
1238
 
1239
</pre>
1240
 
1241
<hr>
1242
 
1243
<h2><a name="Version5.97"></a>Version 5.97 (beta) (11/22/99)</h2>
1244
 
1245
<p>
1246
This is the next beta for 6.0.  We believe the pdfwrite driver (ps2pdf) now
1247
finally produces Acrobat-acceptable output, with reasonable handling of
1248
fonts, and have also fixed the problem with high-level image banding.  We
1249
are cautiously hopeful that this is a "real" beta candidate.
1250
 
1251
<h3><a name="5.97_Incompatible_changes"></a>Incompatible changes</h3><pre>
1252
 
1253
(Drivers)
1254
	- The default CompatibilityLevel in the pdfwrite driver is now back
1255
to 1.3.
1256
(Library)
1257
	- The seac_data procedure of a Type 1 font must now be able to
1258
return the glyph and/or the actual outline data.
1259
 
1260
</pre><h3><a name="5.97_Documentation"></a>Documentation</h3><pre>
1261
 
1262
Fixes problems:
1263
	- A &lt;br&gt; was missing.  (doc/Release.htm)
1264
	- The final step of copying releases to www.aladdin.com was missing.
1265
(doc.Release.htm)
1266
 
1267
Documents the new situation with the ps2pdf* scripts.  (doc/Ps2pdf.htm)
1268
 
1269
Documents the simplification of the pthreads code.  (doc/Helpers.htm,
1270
doc/Make.htm)
1271
 
1272
Adds a requirement to the license that modifications include the name and
1273
e-mail address of the author, and the date and purpose of the modification.
1274
(doc/Public.htm)
1275
 
1276
Adds a link to the documentation for setdistillerparams.  (doc/Ps2pdf.htm)
1277
 
1278
</pre><h3><a name="5.97_Procedures"></a>Procedures</h3><pre>
1279
 
1280
Fixes problems:
1281
	- On OpenVMS, the test for whether the bin and obj subdirectories
1282
already existed was incorrect.  (openvms.mak, openvms.mmk)
1283
	- The recently updated Borland/Inprise makefile deleted some temp
1284
files prematurely.  (bcwin32.mak)
1285
	- The dependencies for the Unix install-scripts and install-data
1286
targets were incorrect.  (unixinst.mak)
1287
 
1288
Updates the RPM spec files.  (gs.rps, gs-fonts.rps, rpm-conf.dif)
1289
 
1290
Adds support for compilation with Borland/Inprise C++Builder 3.
1291
(bcwin32.mak, winint.mak)
1292
 
1293
Adds a note on font installation under Red Hat Linux 6.  (doc/Install.htm)
1294
 
1295
</pre><h3><a name="5.97_Utilities"></a>Utilities</h3><pre>
1296
 
1297
Adds ps2pdf12 and ps2pdf13 scripts to select the PDF output level
1298
explicitly; makes ps2pdf a wrapper for ps2pdf12.  (lib/ps2pdf,
1299
lib/ps2pdf.bat, lib/ps2pdf12, lib/ps2pdf12.bat, lib/ps2pdf13,
1300
lib/ps2pdf13.bat, lib/ps2pdfwr, lib/ps2pdfwr.bat)
1301
 
1302
Updates the Windows install/setup program to display the Aladdin start menu
1303
folder on a successful install, so that the user gets some feedback that all
1304
went well.  (dwinst.cpp, dwsetup.cpp)
1305
 
1306
</pre><h3><a name="5.97_Drivers"></a>Drivers</h3><pre>
1307
 
1308
Fixes problems:
1309
	- The lj5{mono,gray} drivers didn't send the page size to the
1310
printer.  (gdevpxut.h, gdevlj56.c, gdevpx.c, gdevpxut.c)
1311
	- The pxl drivers didn't handle out-of-range points properly.
1312
(gdevvec.c, gdevpx.c)
1313
	- The bmpa drivers didn't produce multi-page output files correctly
1314
-- all pages but the first were blank.  (The bmp format is supposed to be
1315
single-page, but at least some readers handle multi-page files correctly.)
1316
(gdevbmpa.c)
1317
	- The code for writing embedded TrueType fonts was broken.  (bug
1318
probably introduced in 5.9x) (gdevpsdt.c)
1319
 
1320
Removes an unused variable.  (gdevbmpa.c)
1321
 
1322
</pre><h3><a name="5.97_Platforms"></a>Platforms</h3><pre>
1323
 
1324
Replaces the 4 pthreads files, which included a dependence on the non-POSIX
1325
&lt;semaphore.h&gt;, with a single file that uses only pthreads procedures.
1326
(gp_psync.c, gp_posem.c [deleted], gp_pthr.c [deleted], gp_ptsem.c
1327
[deleted], gp_semon.c [deleted])
1328
 
1329
</pre><h3><a name="5.97_PDF_writer"></a>PDF writer</h3><pre>
1330
 
1331
Fixes problems:
1332
	- Whether or not to write the Widths array was implicit in the data
1333
structures rather than explicit, so it was sometimes written unnecessarily.
1334
(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
1335
	- Fonts based on the 14 built-in fonts didn't set BaseFont to the
1336
name of the built-in font.  (gdevpdff.c)
1337
	- The determination of whether a glyph was available was incorrect
1338
for embedded fonts, leading some glyphs to be turned into bitmaps
1339
unnecessarily.  (gdevpdft.c)
1340
	- Apparently Acrobat Reader gets confused if different subsets of
1341
the same font have different FirstChar and LastChar values, so we have to
1342
write the full Widths array each time.  (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
1343
	- A structure member wasn't initialized when processing pdfmark
1344
annotations, possibly causing a memory access error.  (gdevpdfm.c)
1345
	- The typedef for gx_device_pdf had a typo.  (gdevpdfx.h)
1346
	- Each embedded font subset had its own FontDescriptor and its own
1347
font data, confusing Acrobat Reader.  Fixing this required sharing
1348
FontDescriptors among multiple fonts and making FontDescriptors
1349
pseudo-resources.  (gdevpdff.h, gdevpdfx.h, gdevpdf.c, gdevpdff.c,
1350
gdevpdft.c, gdevpdfw.c)
1351
	- Incrementally defined embedded Type 1 fonts didn't write out
1352
correct Widths.  (gdevpdff.c)
1353
	- PDF resources didn't consistently record the gs_id of the
1354
structure they represented, possibly causing resources to be duplicated
1355
unnecessarily.  (gdevpdff.c, gdevpdfu.c)
1356
 
1357
Reinstates PDF text output.  (gdevpdf.c)
1358
 
1359
Changes the default CompatibilityLevel in the pdfwrite device back to 1.3,
1360
since the ps2pdf scripts now make it easy to choose the PDF level.
1361
(gdevpdf.c)
1362
 
1363
When possible, uses the widths obtained from the font, rather than the
1364
default implementation of text_process, to complete the text_process
1365
operation.  This greatly speeds up the conversion process.  (gdevpdft.c)
1366
 
1367
Allows character remapping (but not reencoding) of TrueType fonts.
1368
(gdevpdft.c)
1369
 
1370
Factors the definitions for cos objects and font-related objects into header
1371
files more thoroughly.  (gdevpdff.h, gdevpdfo.h, gdevpdfx.h, gdevpdf.c,
1372
gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
1373
 
1374
Makes the names of some structure elements correspond more directly to keys
1375
in PDF directories.  (gdevpdff.h, gdevpdff.c, gdevpdft.c)
1376
 
1377
Splits off the font-writing code, since a source file was getting too big.
1378
(gdevpdff.h, gdevpdff.c, gdevpdfw.c)
1379
 
1380
Adds CharSet information to embedded Type 1 font descriptors.  (gdevpdfw.c)
1381
 
1382
Makes all font names in the output unique, selected by static bool
1383
MAKE_FONT_NAMES_UNIQUE.  (gdevpdff.h, gdevpdff.c, gdevpdft.c)
1384
 
1385
Reinstates support for one special case of composite fonts (8/8 mapping with
1386
the high order byte always zero) that is used by the AdobePS4 Windows
1387
driver.  (gdevpdft.c)
1388
 
1389
Changes the assumption about the default encoding for embedded TrueType
1390
fonts from StandardEncoding to no known encoding.  (gdevpdft.c)
1391
 
1392
Changes FONT_EMBED_BASE14 to FONT_EMBED_STANDARD for greater
1393
descriptiveness.  (gdevpdff.h, gdevpdff.c, gdevpdft.c)
1394
 
1395
</pre><h3><a name="5.97_Interpreter"></a>Interpreter</h3><pre>
1396
 
1397
Fixes problems:
1398
	- The same-font test for Type 1 fonts didn't correctly identify
1399
re-encoded fonts with unchanged metrics.  (zfont1.c)
1400
	- If a save level was split into multiple internal save objects,
1401
some changes could get undone before objects were finalized.  (isave.c)
1402
	- When releasing all of memory, stable allocators weren't finalized.
1403
(isave.c)
1404
	- Some compilers gave annoying and needless warnings about integer
1405
overflow.  (store.h)
1406
	- There was a signed/unsigned char * mismatch.  (iccfont.c)
1407
 
1408
Adds a debugging procedure.  (idebug.h, idebug.c)
1409
 
1410
Changes the Type 1 font seac_data procedure to match the new API.
1411
(zchar1.c)
1412
 
1413
</pre><h3><a name="5.97_Library"></a>Library</h3><pre>
1414
 
1415
Fixes problems:
1416
	- The GC didn't know about the pointers to the tables for Indexed
1417
color spaces when banding, occasionally causing the tables to be written as
1418
garbage.  This is the real fix for the problem discovered in 5.96.
1419
(gsiparam.h, gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxclpath.c)
1420
	- With 'async' drivers, multi-page files didn't render properly
1421
(they got a rangecheck error on every page after the first one).
1422
(gdevprna.c)
1423
	- Some compilers still complained about end-of-loop code not being
1424
reached.  (gxpath2.c)
1425
	- The scaled font cache required that a font have a UID in order to
1426
be a candidate for caching.  (gsfont.c)
1427
	- An obsolete check caused slight discrepancies between banded and
1428
non-banded output.  (gxstroke.c)
1429
	- The glyph_outline procedure for TrueType fonts transformed the
1430
width by the scaling matrix twice.  (gstype42.c)
1431
 
1432
Removes some now-unnecessary extern_st declarations.  (gdevbbox.c,
1433
gdevplnx.c, gximage3.c)
1434
 
1435
Removes some initializations that read uninitialized locations and are
1436
logically unnecessary.  (gsalloc.c, gscolor.c)
1437
 
1438
Adds makefile rules for compiling the MD5 implementation.  (lib.mak)
1439
 
1440
Makes the seac_data of a Type 1 font return the glyph and/or the actual
1441
outline data.  This is necessary because some Type 1 fonts don't have the
1442
accents in the same positions as StandardEncoding, but use seac anyway.
1443
(gxfont1.h)
1444
 
1445
Changes the Type 1 font interpreter to match the new seac_data API.
1446
(gxtype1.c)
1447
 
1448
</pre>
1449
 
1450
<hr>
1451
 
1452
<h2><a name="Version5.96"></a>Version 5.96 (beta) (11/12/99)</h2>
1453
 
1454
<p>
1455
This is the next beta for 6.0.  To meet a need of our commercial licensing
1456
partner for a PostScript LL3 release, we are releasing this fileset with all
1457
font handling in the PDF writer disabled, as well as high-level image
1458
banding.  This is a temporary measure: we will reinstate PDF text in 5.97,
1459
and high-level image banding as soon as we can straighten out its memory
1460
management problems.
1461
 
1462
<h3><a name="5.96_Incompatible_changes"></a>Incompatible changes</h3><pre>
1463
 
1464
(Procedures)
1465
	- All Unix 'make' programs must now predefine MAKE as the name of
1466
the program.
1467
(Interpreter)
1468
	- zcolor_remap_one now returns o_push_estack rather than 0 in the
1469
case where it doesn't actually have to sample the procedure.
1470
(Library)
1471
	- Multi-plane halftones (when needed) are now used for all CMYK
1472
devices, not only if setcolorscreen was executed.
1473
	- Font implementors must now provide a same_font procedure.
1474
 
1475
</pre><h3><a name="5.96_Documentation"></a>Documentation</h3><pre>
1476
 
1477
Makes it clear that gsnup.ps is very simple and naive.  (doc/Psfiles.htm,
1478
lib/gsnup.ps)
1479
 
1480
Documents the new -Z_ switch.  (doc/Use.htm)
1481
 
1482
Documents that SYNC=nosync allows building on systems that don't support
1483
multi-threading.  (doc/Make.htm)
1484
 
1485
Adds documentation for building on Macintosh Rhapsody systems.
1486
(doc/Make.htm)
1487
 
1488
Adds a reference to the new all-arch.mak file.  (doc/Helpers.htm,
1489
doc/Make.htm)
1490
 
1491
Notes that ps2pdf does preserve the color space for images.
1492
(doc/Ps2pdf.htm)
1493
 
1494
Documents the new self-extracting archive for MS Windows.  (doc/Install.htm,
1495
doc/Release.htm)
1496
 
1497
Further improves the documentation of the PDF text machinery.  (gdevpdfx.h)
1498
 
1499
Reorganizes the build information for Unix.  (doc/Make.htm)
1500
 
1501
Adds information on building Ghostscript under BSDI.  (doc/Make.htm)
1502
 
1503
Notes that versions of zlib before 1.1.3 may cause an error on rare
1504
occasions.  (zlib.mak)
1505
 
1506
Fixes a few other minor problems.  (doc/Current.htm, doc/Devices.htm,
1507
doc/DLL.htm, doc/Install.htm, doc/Language.htm, doc/Make.htm,
1508
doc/New-user.htm, doc/Ps2pdf.htm, doc/Source.htm, doc/Use.htm)
1509
 
1510
</pre><h3><a name="5.96_Procedures"></a>Procedures</h3><pre>
1511
 
1512
Fixes problems:
1513
	- dctd.dev and dcte.dev were defined in $(PSD), but referenced in
1514
$(GLD).  (devs.mak, int.mak, lib.mak)
1515
	- pipe.dev was defined in $(GLD), but referenced in $(PSD).
1516
(bcwin32.mak, dvx-gcc.mak, msvc32.mak, unix-gcc.mak, unixansi.mak,
1517
unixtrad.mak)
1518
	- XLIBDIRS was included in the linker command even if none of the
1519
X drivers were used.  (devs.mak, dvx-tail.mak, ugcclib.mak, unixlink.mak)
1520
	- The OpenVMS makefile didn't create the obj and bin directories
1521
properly.  (openvms.mak)
1522
	- 'make debug' and 'make pg' didn't work on Unix systems where the
1523
make program was named something other than make.  (unix-end.mak)
1524
 
1525
Introduces a new top-level makefile macro, STDLIBS, that is -lm for all
1526
reasonable platforms but null for Rhapsody.  (dvx-gcc.mak, dvx-tail.mak,
1527
ugcclib.mak, unix-gcc.mak, unixansi.mak, unixlink.mak, unixtrad.mak)
1528
 
1529
Adds Nelson Beebe's contributed multi-architecture Unix makefile.
1530
(all-arch.mak)
1531
 
1532
Makes it theoretically possible in theory to build the new Windows
1533
install/uninstall program with the Borland compiler.  However, since this
1534
requires Borland C++ 4.52 and we only have 4.5, this is disabled in
1535
bcwin32.mak.  (bcwin32.mak, winint.mak)
1536
 
1537
</pre><h3><a name="5.96_Utilities"></a>Utilities</h3><pre>
1538
 
1539
Fixes problems:
1540
	- The default for gsnup.ps was 3x2 landscape, rather than 2x2
1541
portrait.  (lib/gsnup.ps)
1542
	- gslp.ps was broken (by the changes made to support gsnup.ps).
1543
(lib/gslp.ps)
1544
 
1545
Adds a -link switch to genconf, to allow verbatim copying of commands into
1546
the linker command line.  (genconf.c)
1547
 
1548
Edits files to add missing $Id lines and module summary comments, and to
1549
delimit module summary comments from further material.  (dwinst.h,
1550
dwsetup.h, dwuninst.h, bench.c, dwuninst.cpp)
1551
 
1552
Makes it possible to build the new Windows install/uninstall program with
1553
the Borland compiler.  (dwinst.cpp, dwsetup.cpp, dwsetup.def, dwsetup.rc,
1554
dwuninst.cpp, dwuninst.def)
1555
 
1556
</pre><h3><a name="5.96_Drivers"></a>Drivers</h3><pre>
1557
 
1558
Fixes problems:
1559
	- Embedded Type 1 fonts lacked some 'def' commands.  (gdevpsd1.c)
1560
	- Multiple Master Font instances weren't written out correctly.
1561
(gdevpsd1.c)
1562
 
1563
Edits files to add missing $Id lines and module summary comments, and to
1564
delimit module summary comments from further material.  (gdev8bcm.h,
1565
gdevht.h, gdevpccm.h, gdevpcl.h, gdevsvga.h, gdevx.h, gdev3852.c,
1566
gdev8510.c, gdevadmp.c, gdevcd8.c, gdevcif.c, gdevclj.c, gdevhl7x.c,
1567
gdevifno.c, gdevimgn.c, gdevl31s.c, gdevmeds.c, gdevmswn.c, gdevos2p.c,
1568
gdevpe.c, gdevpm.c, gdevsj48.c, gdevtknk.c, gdevupd.c, gdevwddb.c,
1569
gdevwpr2.c, gdevwprn.c)
1570
 
1571
</pre><h3><a name="5.96_Platforms"></a>Platforms</h3><pre>
1572
 
1573
Fixes problems:
1574
	- The pthreads wrapper had a procedure type mismatch.  We fixed this
1575
by making it allocate and free a wrapper object, as the Windows wrapper
1576
does.  (gp_pthr.c)
1577
 
1578
Edits files to add missing $Id lines and module summary comments, and to
1579
delimit module summary comments from further material.  (dwimg.h, dwmain.h,
1580
gsdll.h, gp_msio.c, gp_mswin.c)
1581
 
1582
Removes an unnecessary #include &lt;semaphore.h&gt;.  (gp_semon.c)
1583
 
1584
Adds a module that implements semaphores using the pthreads mutex
1585
facilities, as an alternative to gp_posem.c.  Unfortunately, using this
1586
module causes immediate crashes on both Linux and BSDI, and we don't know
1587
why.  (Let us know if you figure it out.)  (gp_ptsem.c)
1588
 
1589
</pre><h3><a name="5.96_PDF_writer"></a>PDF writer</h3><pre>
1590
 
1591
Fixes problems:
1592
	- The character and word spacing weren't recognized as being reset
1593
by a PDF grestore.  (gdevpdfx.h, gdevpdfu.c)
1594
	- Fonts that couldn't be embedded were always converted to bitmaps,
1595
rather than becoming candidates for non-embedded representation (if
1596
EmbedAllFonts is false and the font doesn't appear on the AlwaysEmbed list).
1597
(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
1598
	- Stream-type Cos objects were written with no (0-length) data.
1599
(gdevpdfm.c)
1600
	- Reencoded base 14 fonts were not recognized as such, leading to
1601
excessive font embedding.  (gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdft.c)
1602
	- Fonts were embedded by default even if EmbedAllFonts was false.
1603
(gdevpdft.c)
1604
 
1605
Changes MaxSubsetPct to 35 to match Acrobat Distiller.  (gdevpsdf.h)
1606
 
1607
Adds some tracing output (-Z_).  (gdevpdff.c, gdevpdft.c)
1608
 
1609
Temporarily disables font handling in the PDF writer, to meet a need of our
1610
commercial licensing partner.  All text will be converted to code-scrambled
1611
Type 3 bitmap fonts.  (gdevpdf.c)
1612
 
1613
</pre><h3><a name="5.96_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1614
 
1615
Fixes problems:
1616
	- The sh operator caused an invalidaccess error for shadings that
1617
required a DataSource.  (lib/pdf_draw.ps)
1618
	- The test for whether a Widget appearance was a Form or a
1619
collection of sub-appearances was incorrect, causing an /undefined error in
1620
the latter case.  (lib/pdf_draw.ps)
1621
	- If the FontName in a Font descriptor differed from the BaseFont
1622
name in the Font object, the interpreter used the two inconsistently,
1623
sometimes causing the wrong font to be used.  (lib/pdf_font.ps)
1624
	- ICCBased color spaces caused an error.  (lib/pdf_draw.ps)
1625
 
1626
Works around the fact that Acrobat Distiller produces files in which a
1627
Widget's Form appearance lacks Type and Subtype keys.  (lib/pdf_draw.ps)
1628
 
1629
</pre><h3><a name="5.96_Interpreter"></a>Interpreter</h3><pre>
1630
 
1631
Fixes problems:
1632
	- Failure in allocating the name table would cause a crash.
1633
(iname.c)
1634
	- Shadings with procedure-based filters didn't work.
1635
(lib/gs_ll3.ps, ifilter.h, zfileio.c, zfproc.c)
1636
	- Some compilers complained about arithmetic on an enum.  (iparam.c)
1637
	- Setting a transfer or similar function to the identity function
1638
didn't set the cached values, so the setting didn't consistently take
1639
effect.  (icolor.h, zcolor.c)
1640
	- If the C library's implementation of sprintf with a %g format ever
1641
produced a number with an exponent but no decimal point, a crash would
1642
occur.  (iutil.c)
1643
	- The PageDeviceName page device parameter wasn't supported.
1644
(lib/gs_lev2.ps, lib/gs_setpd.ps)
1645
	- A public procedure wasn't declared extern if DEBUG wasn't set.
1646
(igc.h)
1647
	- Because of a typo, loading resources automatically from a file
1648
always failed.  (bug introduced in 5.94) (lib/gs_res.ps)
1649
 
1650
Edits files to add missing $Id lines and module summary comments, and to
1651
delimit module summary comments from further material.  (files.h, iastate.h,
1652
ibnum.h, ichar.h, ifilter.h, iimage.h, iimage2.h, iparam.h, isave.h,
1653
iscan.h, isstate.h, istream.h, iutil.h, opcheck.h, scanchar.h)
1654
 
1655
Adds a font similarity testing procedure for Type 1/2/4 fonts.  (zfont1.c)
1656
 
1657
</pre><h3><a name="5.96_Streams"></a>Streams</h3><pre>
1658
 
1659
Edits files to add missing $Id lines and module summary comments, and to
1660
delimit module summary comments from further material.  (sbhc.h, sbtx.h,
1661
sbwbs.h, sdct.h, scfdgen.c, scfdtab.c, shcgen.h, siscale.h, sjpeg.h,
1662
slzwx.h, smtf.h, spdiffx.h, spngpx.h, srlx.h)
1663
 
1664
</pre><h3><a name="5.96_Library"></a>Library</h3><pre>
1665
 
1666
Fixes problems:
1667
	- Making a transformed font inappropriately copied the font's
1668
notification list.  (gsfont.c)
1669
	- Some compilers complained about end-of-loop code not being
1670
reached.  (gxpath2.c)
1671
	- The first two arguments of scale_delta was swapped, causing
1672
anomalous output for certain Type 1 fonts with curves where the starting and
1673
ending points had the same X or Y coordinate.  (gxhint3.c)
1674
	- Large smoothness values produced blocky output.  (gxshade.c)
1675
	- When banding, in a region where a CMYK halftone had no K at all,
1676
the output was likely to be black rather than the correct color.  (gxcht.c)
1677
	- Interpolated images with mirrored X scaling weren't mirrored.
1678
(gxiscale.c)
1679
	- Interpolated images were truncated.  (gxiscale.c)
1680
	- Halftone caches could have a dangling pointer to a transfer map in
1681
the halftone order.  (gxht.c)
1682
	- The next-character code returned for kshow was the same as the
1683
current character.  (bug probably introduced in 5.86) (gstext.c)
1684
	- The GC didn't know about the pointers to the tables for Indexed
1685
color spaces when banding, occasionally causing the tables to be written as
1686
garbage.  In the process of investigating this, we discovered that the GC
1687
didn't know about *any* of the pointers in the structures used to track
1688
banded images.  ****** NOT FIXED, TOO MUCH RISK OF INTRODUCING FURTHER
1689
BUGS. ****** Instead, we disabled high-level image banding in this fileset.
1690
(gxclimag.c)
1691
 
1692
Changes the name of a variable from ppc to ppcr, because an Apple compiler
1693
inappropriately defines the name ppc when compiling on a PowerPC.
1694
(gxshade6.c)
1695
 
1696
Edits files to add missing $Id lines and module summary comments, and to
1697
delimit module summary comments from further material.  (gdevbbox.h,
1698
gscoord.h, gscpixel.h, gsfname.h, gsfont.h, gsimage.h, gslib.h, gsmdebug.h,
1699
gspaint.h, gspath.h, gspath2.h, gxalloc.h, gxclipm.h, gxclpage.h,
1700
gxclpath.h, gxcmap.h, gxcoord.h, gxcpath.h, gxdda.h, gxdevmem.h, gxfcache.h,
1701
gxfont.h, gximage.h, gxiodev.h, gxpaint.h, gxpath.h, gxpcolor.h, gzacpath.h,
1702
gzcpath.h, gzht.h, gzpath.h, md5.h, gxdither.c, md5.c)
1703
 
1704
Adds a prototype for debug_find_pointers.  (gxalloc.h)
1705
 
1706
Adds a font procedure for testing whether two fonts are the same in various
1707
ways.  This is needed so that the PDF writer can do a reasonable job of
1708
identifying reencoded and renamed versions of the base 14 fonts.  (gxfont.h,
1709
gsfont.c)
1710
 
1711
Changes a macro to a procedure and improves some commenting.  (gxhint3.c)
1712
 
1713
Changes the halftoning code so that multi-plane halftones are always used on
1714
CMYK devices, even if only a single halftone is set (setscreen or
1715
HalftoneType 1).  (gxcht.c, gxdither.c)
1716
 
1717
</pre>
1718
 
1719
<hr>
1720
 
1721
<h2><a name="Version5.95"></a>Version 5.95 (beta) (11/1/99)</h2>
1722
 
1723
<p>
1724
There were several new problems in 5.94, some of them severe.  We hope this
1725
beta candidate fixes them without introducing any new ones.  It also fixes
1726
some minor problems not reported in 5.93.
1727
 
1728
<p>
1729
We think we have finally found the right workarounds for Acrobat and
1730
specification problems so that pdfwrite output (with CompatibilityLevel
1731
either 1.2 or 1.3) both conforms as closely as possible to the published PDF
1732
specification and works with Acrobat Reader (3 or 4 respectively) for both
1733
displaying and printing.
1734
 
1735
<p>
1736
NOTE: The default level of output from the pdfwrite device (ps2pdf) has been
1737
changed back to PDF 1.2 (Acrobat 3 compatible), because this is what the
1738
majority of users want.  For PDF 1.3 output, use -dCompatibilityLevel=1.3.
1739
 
1740
<p>
1741
Note: some post-6.0 code is included under an #ifdef POST60.
1742
 
1743
<h3><a name="5.95_Incompatible_changes"></a>Incompatible changes</h3><pre>
1744
 
1745
(Drivers)
1746
	- The default CompatibilityLevel in the pdfwrite device (ps2pdf) is
1747
now 1.2 rather than 1.3.
1748
	- pdfwrite now discards information after the last showpage rather
1749
than producing an additional page.
1750
(Library)
1751
	- The is_monotonic procedure of a function now returns a result that
1752
indicates the direction of monotonicity of each value separately.
1753
	- The coordinate system used internally by the bbox device is now
1754
upright (lower left corner = (0,0) rather than upper left corner).  (This
1755
should not make any difference to clients, who should always have been using
1756
default user space coordinate.)
1757
 
1758
</pre><h3><a name="5.95_Documentation"></a>Documentation</h3><pre>
1759
 
1760
Fixes problems:
1761
	- A couple of URLs were incorrect or out of date.  (doc/Readme.htm,
1762
doc/Use.htm)
1763
	- There was a typo in a comment.  (gxfont.h)
1764
	- An old bug had been fixed, but the documentation had not been
1765
updated to reflect this.  (doc/Current.htm)
1766
 
1767
Documents the requirement to change SYNC from posync to fbsdsync on FreeBSD.
1768
(doc/Make.htm)
1769
 
1770
Adds references to Adobe's on-line documentation.  (doc/Readme.htm)
1771
 
1772
Updates the release procedure to mention adding .ps files.
1773
(doc/Release.htm)
1774
 
1775
Adds documentation for the bbox device.  (doc/Use.htm)
1776
 
1777
Documents the new gsnup.ps utility.  (doc/Psfiles.htm)
1778
 
1779
Modifies the gslp utility for greater page independence and smaller output
1780
files.  (lib/gslp.ps)
1781
 
1782
Documents the fact that the default output from pdfwrite is PDF 1.2.
1783
(doc/Ps2pdf.htm)
1784
 
1785
Adds Inprise (as the new name of the Borland tools) in a few places.
1786
(doc/Make.htm)
1787
 
1788
Updates the release documentation slightly.  (doc/Release.htm)
1789
 
1790
</pre><h3><a name="5.95_Procedures"></a>Procedures</h3><pre>
1791
 
1792
Fixes problems:
1793
	- FreeBSD uses a different name for the pthreads implementation.
1794
(lib.mak, unixansi.mak, unix-gcc.mak, unixtrad.mak)
1795
 
1796
Encapsulates gsnogc.$(OBJ) in a gsnogc.dev module, to make it more sharable.
1797
(lib.mak)
1798
 
1799
</pre><h3><a name="5.95_Utilities"></a>Utilities</h3><pre>
1800
 
1801
Fixes problems:
1802
	- guilsinglleft and guilsinglright were misspelled.
1803
(lib/ps2ascii.ps)
1804
	- The ps2pdf script didn't handle the -I switch correctly.  We fixed
1805
this by including the options twice, both before and after the automatically
1806
supplied options.  (lib/ps2pdf, lib/ps2pdf.bat)
1807
 
1808
Adds an install/uninstall program for Windows 9x, including optional
1809
generation of a self-extracting executable, written by Ghostgum Software Pty
1810
Ltd.  This program is not actually used yet.  (msvc32.mak, winint.mak,
1811
dwinst.*, dwsetup.*, dwuninst.*)
1812
 
1813
Adds a new environment parameter to arch.h, ARCH_DIV_NEG_POS_TRUNCATES.
1814
(genarch.c)
1815
 
1816
Adds a utility for N-up printing.  (unixinst.mak, lib/gsnup.ps)
1817
 
1818
Changes ps2pdf so that if showpage has ever been executed, any partial page
1819
after the last showpage is discarded rather than made into an additional
1820
page.  This is consistent with printers, and correctly handles BeginPage
1821
procedures that draw backgrounds.  (gdevpdf.c)
1822
 
1823
</pre><h3><a name="5.95_Drivers"></a>Drivers</h3><pre>
1824
 
1825
Fixes problems:
1826
	- The TIFF drivers could produce incorrectly sorted tag tables.
1827
(gdevtifs.c)
1828
	- The OS/2 PM driver had an incorrect #include.  (gdevpm.c)
1829
	- Embedded Type 1 fonts that used seac didn't automatically include
1830
the constituent glyphs.  (gdevpsd1.c)
1831
	- Embedded Type 1 fonts wrote the wrong font name in the first
1832
(comment) line.  (gdevpsd1.c)
1833
	- Deleting elements from the AlwaysEmbed or NeverEmbed list could
1834
cause a memory access error.  (gdevpsdp.c)
1835
	- The string and string array members of psdf_distiller_params were
1836
omitted from the GC descriptor, causing memory corruption.  (gdevpsdf.h,
1837
gdevpsdf.c, gdevpsdp.c)
1838
	- When using "async" printing, the buffer device was destroyed too
1839
soon.  (fix from Artifex) (gdevbmpa.c)
1840
 
1841
Adds (partial) parsing for the new Acrobat Distiller 4.0 parameters, under
1842
#ifdef POST60.  The put_params code isn't finished.  (gdevpsdf.h,
1843
gdevpsdp.c)
1844
 
1845
</pre><h3><a name="5.95_Platforms"></a>Platforms</h3><pre>
1846
 
1847
Changes product to productfamily as the Windows registry key.  (gp_wgetv.c)
1848
 
1849
</pre><h3><a name="5.95_Fonts"></a>Fonts</h3><pre>
1850
 
1851
Fixes problems:
1852
	- guilsinglleft and guilsinglright were misspelled in
1853
MacRomanEncoding and MacGlyphEncoding.  (lib/gs_mro_e.ps)
1854
	- plusminus was misspelled in MacGlyphEncoding.  (lib/gs_mgl_e.ps)
1855
	- braceleftbt was misspelled as bracelefttbt in the Symbol font.
1856
(fonts/s050000l.pfb)  ****** NOT DISTRIBUTED YET ******
1857
	- euro was incorrectly included at position 240 in the Symbol
1858
encoding.  (lib/gs_sym_e.ps)
1859
	- Zcaron and zcaron weren't included in WinAnsiEncoding (this is new
1860
for PDF 1.3).  (lib/gs_wan_e.ps)
1861
	- Euro replaced currency in MacRomanEncoding.  We had to change this
1862
back, even though the Mac does use code 219 for Euro, for compatibility with
1863
Adobe documentation.  (lib/gs_mro_e.ps)
1864
	- TrueType fonts with more glyphencoding entries than glyphs could
1865
cause errors.  (lib/gs_ttf.ps)
1866
 
1867
Adds the Adobe Central European encoding.  (lib/gs_ce_e.ps, unixinst.mak)
1868
 
1869
Adds more tracing to the TrueType font loader.  (lib/gs_ttf.ps)
1870
 
1871
Adds the remaining PDF Encodings to the predefined set.  (lib/gs_lgo_e.ps,
1872
lib/gs_lgx_e.ps, lib/gs_mex_e.ps, lib/gs_mgl_e.ps, lib/gs_mro_e.ps)
1873
 
1874
</pre><h3><a name="5.95_PDF_writer"></a>PDF writer</h3><pre>
1875
 
1876
Fixes problems:
1877
	- When printing an error message, a pointer/length string was
1878
incorrectly treated as a C string.  (gdevpdfm.c)
1879
	- The treatment of text was completely broken by "improvements" made
1880
in 5.94.  We think we've put things back to a state that at least isn't any
1881
worse than 5.93.  (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
1882
	- The test for whether a glyph was present in a glyph set was wrong,
1883
possibly causing an infinite loop.  (This never happened, because the code
1884
was masked by other bugs.)  (gdevpdft.c)
1885
	- Testing the PDF compatibility level didn't work correctly, because
1886
of float/double mismatches.  (gdevpdfx.h, gdevpdfp.c)
1887
	- Embedded TrueType fonts were still written in binary even if
1888
ASCII85EncodePages was true.  (gdevpdff.c)
1889
	- Embedded TrueType subsets didn't use Flags to indicate that they
1890
had a non-standard cmap.  (gdevpdff.c)
1891
	- Contrary to the obvious reading of the PDF specification, it
1892
appears that the default encoding for embedded fonts, if no BaseEncoding is
1893
specified, is StandardEncoding, *not* the built-in encoding of the font
1894
itself; and that any differences from StandardEncoding must be listed
1895
explicitly.  (gdevpdft.c)
1896
 
1897
Adds parsing for the new Acrobat Distiller 4.0 parameters, under #ifdef
1898
POST60.  (lib/gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
1899
 
1900
Ensures that the Mac encodings are loaded when writing PDF.  (devs.mak)
1901
 
1902
Works around an Acrobat 3 bug: The only cmap table that works in TrueType
1903
fonts is format 0, which can only reference glyphs up to 255.  Consequently,
1904
a TrueType font whose Encoding references glyphs above 255 cannot be
1905
embedded (as a font).  (gdevpdft.c)
1906
 
1907
Changes the default CompatibilityLevel from 1.3 to 1.2.  The majority of
1908
users are running Acrobat 3.  (gdevpdf.c)
1909
 
1910
</pre><h3><a name="5.95_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1911
 
1912
Fixes problems:
1913
	- The T* operator was changed incorrectly to use the negative of the
1914
leading value.  (lib/pdf_ops.ps)
1915
	- The Tz value scaled the X offset for Td and TD (which it
1916
shouldn't), occasionally causing strings to be displaced horizontally.
1917
(lib/pdf_ops.ps)
1918
	- sc[n]/SC[N] didn't work with 1-value color spaces, because the
1919
code incorrectly assumed the operand stack contained only the values on the
1920
PDF operand stack.  (bug introduced by Annotation rendering in 5.94)
1921
(lib/pdf_base.ps, lib/pdf_draw.ps, lib/pdf_main.ps, lib/pdf_ops.ps)
1922
	- The HTP key in the graphics state caused an error if the
1923
interpreter didn't implement sethalftonephase.  (lib/pdf_draw.ps)
1924
	- If there was no Names tree, invalid links (string Dest values)
1925
caused an error instead of being ignored.  (lib/pdf_main.ps)
1926
	- An annotation with a Thread action caused an error.
1927
(lib/pdf_main.ps)
1928
 
1929
Adds table entries, but not implementation, for the op and OPM keys in
1930
ExtGState dictionaries.  (lib/pdf_draw.ps)
1931
 
1932
Works around a bug in Adobe Acrobat Distiller 4.0 for Windows: it uses the
1933
value /Default with the BG, UCR, and TR keys in an ExtGState.
1934
(lib/pdf_draw.ps, lib/pdf_main.ps)
1935
 
1936
Adds additional tracing for Functions.  (lib/pdf_draw.ps)
1937
 
1938
Implements the BG2, UCR2, and TR2 keys in ExtGStates.  (lib/pdf_draw.ps)
1939
 
1940
</pre><h3><a name="5.95_Interpreter"></a>Interpreter</h3><pre>
1941
 
1942
Fixes problems:
1943
	- There was a (harmless) signed/unsigned mismatch.  (imainarg.c)
1944
	- If build_gs_simple_font had to add any elements to the font
1945
dictionary, a temporary pointer to the CharStrings could become invalid,
1946
causing crashes or confusion.  (zbfont.c)
1947
	- The check for known Encodings included some pseudo-Encodings.
1948
(zbfont.c)
1949
	- The error object wasn't reset to null before each call of the
1950
interpreter, possibly causing the garbage collector to mark it even if it no
1951
longer existed.  (interp.c)
1952
 
1953
Adds productfamily as a new predefined name, for the benefit of the Windows
1954
registry.  (iinit.c)
1955
 
1956
Changes the default color smoothness to 0.02 to match Adobe RIPs.
1957
(lib/gs_ll3.ps)
1958
 
1959
Adds using the glyph_info procedure for Type 1 fonts, needed to fix the
1960
problem with seac and Type 1 embedded fonts.  (zfont1.c)
1961
 
1962
</pre><h3><a name="5.95_Library"></a>Library</h3><pre>
1963
 
1964
Fixes problems:
1965
	- Memory devices that may execute RasterOp must be initialized with
1966
an allocator (for temporary bitmaps), but sometimes they weren't.
1967
(gdevdrop.c)
1968
	- The computation of colors_used for images could cause arithmetic
1969
exceptions and/or produce incorrect results.  (fix from Artifex)
1970
(gxclimag.c)
1971
	- A dead variable was getting incremented in a loop.  (Small
1972
performance bug only.)  (gsfunc0.c)
1973
	- The cached is_monotonic value in a function head was incorrectly
1974
declared bool rather than int.  (gsfunc.h)
1975
	- The clip operators didn't always recognize empty clipping regions:
1976
sometimes they retained a 1-pixel-wide region.  (gxcpath.c)
1977
	- The bbox device could get into a recursion loop if it had a
1978
non-null target with a non-standard fill_path procedure.  (gdevbbox.c)
1979
	- The procedure u32 was defined in two places.  (gsutil.h,
1980
gdevpsdt.c, gsutil.c, gstype42.c)
1981
	- The DataSource member of a sampled function wasn't reported to the
1982
garbage collector.  (gsfunc0.h, gsfunc0.c)  ****** MUST DO THE SAME FOR
1983
SHADINGS ******
1984
	- All name-type parameters (device and other) were converted as
1985
strings rather than names.  (gsparam.c)
1986
	- Using a mask Pattern with an anti-aliased device could make
1987
invalid memory accesses and cause a crash.  (gxpcmap.c)
1988
	- math_.h was included unnecessarily.  (gxfill.c, gxhint3.c)
1989
	- In a few places, (fixed-point) coordinates were truncated towards
1990
zero rather than taking the floor.  (It's likely that this had no effect.)
1991
(gxfill.c, gxpcopy.c)
1992
	- The join and cap values weren't taken into account when dividing a
1993
stroked path into bands, possibly causing some caps or joins to be dropped
1994
if they fell exactly at band boundaries.  (gxclpath.c)
1995
	- An arithmetic overflow in gx_adjust_if_empty could produce
1996
incorrect output.  (gxfill.c)
1997
	- Because the bbox device used a Y-inverted coordinate system, it
1998
could produce incorrect results for out-of-bounds coordinates.  (gdevbbox.c)
1999
	- The default font_info procedure didn't compute MISSING_WIDTH if
2000
IS_FIXED_WIDTH wasn't requested.  (gsfont.c)
2001
	- space_params wasn't managed properly, causing problems if the
2002
device altered the default values.  (fix from Artifex) (gdevprn.c)
2003
	- The Macintosh cmap table for embedded TrueType fonts was written
2004
incorrectly.  (gdevpsdt.c)
2005
	- The OS/2 table for embedded TrueType fonts could be inconsistent
2006
with the cmap table.  (gdevpsdt.c)
2007
	- In embedded subset TrueType fonts, loca entries beyond the last
2008
occupied glyph contained garbage.  (gdevpsdt.c)
2009
	- Embedded TrueType subsets didn't include the components of
2010
composite glyphs.  (gdevpsdf.h, gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
2011
 
2012
Changes the is_monotonic procedure of Functions so that it reports the
2013
direction of monotonicity of each value independently.  This allows a larger
2014
class of functions to be detected as monotonic.  (gsfunc.h, gsfunc0.c,
2015
gsfunc3.c)
2016
 
2017
Works around a bug in Fontographer that causes it to produce (or at least
2018
allow users to produce) Type 1 fonts using seac in which the side bearing of
2019
the accented character differs from the side bearing of the base glyph.  The
2020
published Type 1 specification and Adobe's engineers agree that such fonts
2021
are invalid, but the authors of Fontographer don't seem to care (this is the
2022
4th Fontographer bug that we have had to patch around so far).  (gxtype1.h,
2023
gstype1.c, gxtype1.c)
2024
 
2025
Adds gs_productfamily, for the benefit of the Windows registry.  (gscdefs.h,
2026
gscdef.c)
2027
 
2028
Adds a glyph_info procedure for Type 1 fonts, needed to fix the problem with
2029
seac and Type 1 embedded fonts.  (gxfont1.h, gxtype1.c)
2030
 
2031
Adds a gs_resize_struct_array procedure that either allocates or resizes an
2032
object.  We have wanted this for quite a while.  (gsmemory.h, gsmemory.c)
2033
 
2034
Adds the remaining PDF Encodings to the predefined set.  Also adds string
2035
names for the "real" encodings.  (gsccode.h)
2036
 
2037
Adjusts the format of embedded TrueType fonts to be closer to that produced
2038
by Acrobat Distiller, in the hope of making Acrobat Reader accept them.
2039
(gdevpsdf.h, gdevpsdt.c)
2040
 
2041
</pre>
2042
 
2043
<hr>
2044
 
2045
<h2><a name="Version5.94"></a>Version 5.94 (beta) (9/30/99)</h2>
2046
 
2047
<p>
2048
This is (intended to be) the last beta candidate for the 6.0 release.  Most
2049
changes other than added documentation are bug fixes.  In order to address a
2050
last-minute problem report, we implemented a subset of Annotation rendering
2051
for PDF files.
2052
 
2053
<p>
2054
At the request of the Free Software Foundation, we removed support for GNU
2055
readline from the Aladdin Ghostscript fileset.  See <a
2056
href="Make.htm#GNU_readline">here</a> for more information.
2057
 
2058
<p>
2059
We suspect that Acrobat's bugs and limitations still prevent embedded
2060
TrueType fonts in files created by the pdfwrite device from working
2061
properly, but we have neither the time nor the means to test this properly.
2062
 
2063
<h3><a name="5.94_Incompatible_changes"></a>Incompatible changes</h3><pre>
2064
 
2065
(Procedures)
2066
	- For OpenVMS with MMK or MMS, the third-party libraries are now
2067
located in [.&lt;lib&gt;] rather than [-.&lt;lib&gt;].
2068
	- The OpenVMS makefiles now select the same set of devices as the
2069
Unix makefiles.
2070
	- The MS Windows and MS-DOS default installation directory is now
2071
c:\Aladdin\gs#.# rather than c:\gs.
2072
	- All top-level makefiles now need a definition of BUILD_TIME_GS.
2073
(Drivers)
2074
	- The cljet5 driver is renamed cljet5pr; there is a new cljet5
2075
driver that doesn't attempt (and fail) to handle page rotation.
2076
(Interpreter)
2077
	- .getiodevice may return null.
2078
(Library)
2079
	- IODevices may now have a null name.
2080
 
2081
</pre><h3><a name="5.94_Documentation"></a>Documentation</h3><pre>
2082
 
2083
Fixes problems:
2084
	- The documentation of font searching was still wrong in both
2085
places.  (doc/Fonts.htm, doc/Use.htm)
2086
 
2087
Notes that certain CodeWarrior code generation options produce incorrect
2088
code.  (doc/Make.htm)
2089
 
2090
Removes an inaccurate and obsolete comment.  (lib/pdf_font.ps)
2091
 
2092
Notes that newer versions of the SGI compiler use a different switch for
2093
setting the optimization limit.  (doc/Make.htm)
2094
 
2095
Notes that there may be code generation bugs in MSVC5 and later.
2096
(doc/Make.htm)
2097
 
2098
Documents the new Fontmap.SGI file.  (doc/Use.htm)
2099
 
2100
Updates the documentation on installing Ghostscript on MS Windows.
2101
(doc/Install.htm)
2102
 
2103
Documents the removal of the GNU readline interface.  (doc/Current.htm,
2104
doc/Make.htm)
2105
 
2106
</pre><h3><a name="5.94_Procedures"></a>Procedures</h3><pre>
2107
 
2108
Fixes problems:
2109
	- The instcopy script, supposed to handle incompatibilities between
2110
Unix `install' commands, didn't work.  (instcopy, unixinst.mak)
2111
	- The Windows makefiles had an extra occurrence of `.' at the
2112
beginning of the default search path.  (bcwin32.mak, msvc32.mak,
2113
msvclib.mak, watc*.mak)
2114
	- The OpenVMS makefile didn't automatically create the bin and obj
2115
directories if needed.  (openvms.mak)
2116
 
2117
Changes the OpenVMS MMK/MMS makefile to expect the third-party libraries in
2118
a subdirectory of the current directory, rather than a subdirectory of the
2119
parent.  This makes it compatible with all the other makefiles.
2120
(openvms.mmk)
2121
 
2122
Changes the OpenVMS makefiles to select the same set of devices as the Unix
2123
makefiles.  (openvms.mak, openvms.mmk, unixansi.mak)
2124
 
2125
Changes the Windows and OS/2 default search paths to match the new
2126
convention of installation rooted at c:\Aladdin.  (bcwin32.mak, msvc32.mak,
2127
msvclib.mak, os2.mak, watc.mak, watclib.mak, watcw32.mak)
2128
 
2129
</pre><h3><a name="5.94_Utilities"></a>Utilities</h3><pre>
2130
 
2131
Fixes problems:
2132
	- The Type 1/2 CharString printer didn't handle undefined opcodes
2133
correctly.  (lib/type1ops.ps)
2134
	- There was no Unix script for pf2afm.  (lib/pf2afm)
2135
	- The Type 1/2 font printing utilities didn't default lenIV to -1
2136
for Type 2, and didn't handle lenIV = -1 correctly in some places.
2137
(lib/type1ops.ps)
2138
	- The font2c utility used the version of font2c.ps from whatever
2139
existing Ghostscript executable was in the search path.  Fixing this
2140
required adding a new parameter in all top-level makefiles, BUILD_TIME_GS.
2141
(cfonts.mak, bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak, openvms.mmk,
2142
os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watcw32.mak)
2143
	- The pfbtopfa usage message was incorrect.  (lib/pfbtopfa.ps)
2144
 
2145
</pre><h3><a name="5.94_Drivers"></a>Drivers</h3><pre>
2146
 
2147
Fixes problems:
2148
	- The pswrite driver didn't reset the clipping path when writing
2149
low-level images, possibly causing output to be clipped incorrectly.
2150
(gdevps.c)
2151
	- The PNG drivers implicitly declared png_init_io.  Fixing this is
2152
only possible in libpng versions 1.0.3 and later.  (gdevpng.c)
2153
	- The cljet5 driver (now cljet5pr) set rotated = true if the page
2154
was rotated, but didn't set it to false if the page wasn't rotated.
2155
(gdevclj.c)
2156
	- Embedded Type 1 fonts didn't include any FontInfo elements.
2157
(gdevpsd1.c)
2158
	- Specifying the DCTEncode filter for compressing images caused a
2159
crash.  This problem is hard to fix correctly because of the complicated
2160
initialization requirements of the JPEG encoder.  We patched around it by
2161
substituting FlateEncode (when available) for DCTEncode.  (gdevpsdi.c)
2162
 
2163
Renames the cljet5 driver, which has special (and incorrect) hacks to handle
2164
page rotation for the PCL interpreter, as cljet5pr; adds a new cljet5 driver
2165
without the hacks.  (gdevclj.c)
2166
 
2167
</pre><h3><a name="5.94_Platforms"></a>Platforms</h3><pre>
2168
 
2169
Fixes problems:
2170
	- On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
2171
up as an instance of the IODevice resource category, causing problems.
2172
(gp_msio.c, gp_os2.c)
2173
 
2174
Adds a set of XBM/XPM icons in 4 sizes, contributed by Gintautas Grigelionis
2175
(eragigr@ki.ericsson.se).  (lib/gs*.xbm, lib/gs*.xpm, unixinst.mak)
2176
 
2177
Brings the Windows and OS/2 code up to date, fixing some minor problems.
2178
(gdevpm.c, gp_os2.c, gsos2.rc, gspmdrv.rc, os2.mak, pcwin.mak)
2179
 
2180
</pre><h3><a name="5.94_Fonts"></a>Fonts</h3><pre>
2181
 
2182
Fixes problems:
2183
	- The font directory scanner (FONTPATH) didn't recognize TrueType
2184
fonts tagged as 'true' rather than 0x00010000.  (lib/gs_ttf.ps)
2185
 
2186
Changes the TrueType font loader to use ISOLatin1Encoding for constructing
2187
the CharStrings if there is a Microsoft Unicode cmap and no glyph names in
2188
the post table.  This seems like a hack, but we aren't sure what the right
2189
approach would be.  (lib/gs_ttf.ps)
2190
 
2191
Adds a Fontmap for SGI IRIX.  This just comments out those fonts that are
2192
provided by DPS.  (lib/Fontmap.SGI)
2193
 
2194
</pre><h3><a name="5.94_PDF_writer"></a>PDF writer</h3><pre>
2195
 
2196
Fixes problems:
2197
	- Writing Patterns could cause a memory access error.  (bug
2198
introduced recently) (gdevpdfi.c)
2199
	- Filling with a pattern didn't reset the clipping path, possibly
2200
causing output to be clipped incorrectly.  (gdevpdfi.c)
2201
	- Patterns weren't scaled correctly.  (gdevpdfi.c)
2202
	- The data for large Patterns could exceed Acrobat Reader's limit on
2203
the length of a string.  (gdevpdfi.c)
2204
	- copy_color did an extra gsave and concat.  (gdevpdfi.c)
2205
	- Repeated color images weren't detected (performance bug only).
2206
(gdevpdfi.c)
2207
	- Names including control characters or spaces produced invalid
2208
output.  (gdevpdfx.h, gdevpdfu.c)
2209
	- A matrix multiply was in the wrong order, causing fonts with
2210
non-zero translation in the FontMatrix to render at incorrect coordinates
2211
(sometimes off the page).
2212
	- If a font had one of the 14 standard names but had some characters
2213
defined by PostScript procedures, the output file would be invalid.
2214
(gdevpdft.c)
2215
	- The graphics state line parameters were kept in two different
2216
copies, causing bookkeeping errors.  (gdevpdfx.h, gdevpdf.c, gdevpdfd.c,
2217
gdevpdfu.c)
2218
	- If a page's BeginPage procedure did anything other than erase the
2219
page to white, the resulting PDF file was invalid.  (gdevpdf.c)
2220
	- Articles with the same title weren't merged properly.
2221
(gdevpdfm.c)
2222
	- The Threads element of the catalog wasn't an indirect object.
2223
(gdevpdf.c)
2224
	- Thread actions incorrectly converted the destination (thread
2225
title) to a name, rather than leaving it as a string.  (gdevpdfm.c)
2226
	- Fonts with the same name as the built-in ones, but not the
2227
standard definitions, produced possibly incorrect output.  (gdevpdff.c)
2228
	- The writer didn't recognize attempts to use Encodings with the
2229
standard fonts that mentioned characters not present in the font's glyph
2230
set.  (gdevpdft.c)
2231
 
2232
Ensures that the WinAnsiEncoding is loaded when writing PDF.  (devs.mak)
2233
 
2234
</pre><h3><a name="5.94_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2235
 
2236
Fixes problems:
2237
	- The default (identity) CMap didn't map CID 0 to glyph 0.
2238
(pdf_fonts.ps)
2239
	- TrueType fonts with an explicit Encoding didn't work properly.
2240
(lib/gs_ttf.ps)
2241
	- If an embedded Type 1 font executed definefont more than once,
2242
the wrong thing would happen.  (lib/pdf_font.ps)
2243
	- The T* operator used the negative of the leading value.
2244
(lib/pdf_ops.ps)
2245
 
2246
Implements a subset of Annotation rendering: only Widget annotations, only
2247
Normal appearance, only S and D borders, no rounded-corner borders.  We did
2248
this at the very last minute before the release, in order to respond to a
2249
bug report, and it probably has some bugs.  (lib/pdf_draw.ps,
2250
lib/pdf_main.ps)
2251
 
2252
</pre><h3><a name="5.94_Interpreter"></a>Interpreter</h3><pre>
2253
 
2254
Fixes problems:
2255
	- If an input buffer boundary fell at exactly the wrong place, an
2256
image whose input was coming from a stream could fail to read the stream EOD
2257
marker.  (This is quite an old bug.)  (zimage.c)
2258
	- On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
2259
up as an instance of the IODevice resource category, causing problems.
2260
(lib/gs_res.ps, ziodev.c)
2261
	- errorinfo in $error was undefined, rather than null, initially and
2262
after errors that didn't set it deliberately.  (lib/gs_init.ps)
2263
	- The InkParams resource category was defined even in systems that
2264
didn't support in-RIP trapping.  (lib/gs_ll3.ps, lib/gs_res.ps,
2265
lib/gs_trap.ps)
2266
	- CID fonts with 0-length data caused an error.  (lib/gs_cidfn.ps)
2267
	- Type 10 halftone dictionaries were broken -- perhaps they never
2268
had worked.  (lib/gs_ll3.ps)
2269
 
2270
Makes FontInfo entries available through the extended font API, needed to
2271
allow embedded Type 1 fonts to include those entries.  (zfont1.c)
2272
 
2273
Makes it possible to determine whether the current file is a resource file,
2274
needed to allow distinguishing between built-in and input-embedded fonts.
2275
(lib/gs_ccfnt.ps, lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_res.ps,
2276
lib/gs_type1.ps, zfont.c)
2277
 
2278
Moves support for GNU readline from the main Ghostscript fileset to the
2279
GNU-specific fileset.  (unix-gcc.mak, int.mak, gp_gnrdl.c =>
2280
src/gnu/gp_gnrdl.c, gnu/src/gnudevs.mak)
2281
 
2282
</pre><h3><a name="5.94_Streams"></a>Streams</h3><pre>
2283
 
2284
Fixes problems:
2285
	- The CCITTFaxDecode filter didn't correctly handle the case where
2286
the last code of a 1-D row was a black code and occurred less than 7 or 8
2287
bits before the end of the input stream.  (We thought we fixed this in 5.86,
2288
but we missed one case.)  (scfd.c)
2289
	- If an input buffer boundary fell at exactly the wrong place, an
2290
image whose input was coming from a stream could fail to read the stream EOD
2291
marker.  (This is quite an old bug.)  Fixing this involved a possibly risky
2292
change to the definition of sbuf_min_left and the already fragile logic in
2293
sreadbuf: the fix does solve this problem, but we aren't at all certain it
2294
didn't introduce new ones.  (stream.h, stream.c)
2295
 
2296
</pre><h3><a name="5.94_Library"></a>Library</h3><pre>
2297
 
2298
Fixes problems:
2299
	- The default implementation of copy_tile didn't pass the bitmap id
2300
for complete tiles, missing potential optimizations (performance bug only).
2301
(gdevdbit.c)
2302
	- The patch edges of ShadingType 7 shadings were ordered
2303
incorrectly, producing incorrect output in some cases where the surface
2304
folds over itself.  (gxshade6.c)
2305
	- Flushing internal buffers when rendering an image didn't clip the
2306
flushed data, producing incorrect output.  (gxidata.c)
2307
	- Non-zero data_x values for banded images produced incorrect band
2308
list data.  (It's astounding that this problem hasn't shown up before.)
2309
(gxclimag.c)
2310
	- Banded images rotated by 90 degrees could produce "seams" or
2311
garbage if they crossed band boundaries.  (This is at least the third time
2312
we have "fixed" this problem.)  (gxclimag.c, gxifast.c)
2313
	- Circles or ellipses defined by pairs of 180-degree arcs produced
2314
incorrect output when banding.  (gxclpath.c, gxclrast.c)
2315
	- setgray et al simply cleared the Pattern pointer in the client
2316
color rather than adjusting its reference count.  (gscolor.c, gscolor1.c)
2317
	- The saved graphics state for bitmap/pixmap patterns contained a
2318
reference to the Pattern color, causing Patterns to be retained when they
2319
shouldn't be and causing unwanted recursion when freeing them.  (gsptype1.c)
2320
	- Patterns containing halftoned CMYK colors rendered as all black.
2321
(bug probably introduced in 5.6x) (gxcht.c)
2322
	- Because of a typo, CMYK halftoning with only a single plane could
2323
put too much yellow into the output.  This appears to be quite an old bug.
2324
(gxdither.c)
2325
	- The error code from running out of band list memory wasn't
2326
propagated if the condition was detected in cmd_put_drawing_color, causing
2327
low-memory recovery not to be invoked.  (gxclpath.c)
2328
	- (Same error code problem) in clist_change_tile.  (gxclbits.c)
2329
 
2330
Adds more font attributes to the set available through a standard API.
2331
(gxfont.h)
2332
 
2333
Adds more statistics to the filling algorithm.  (gxfill.c)
2334
 
2335
Adds an is_resource flag to fonts, to indicate that they originated from a
2336
resource rather than being embedded in an input file.  (gxfont.h, gsfont.c)
2337
 
2338
</pre>
2339
 
2340
<hr>
2341
 
2342
<h2><a name="Version5.93"></a>Version 5.93 (beta) (9/11/99)</h2>
2343
 
2344
<p>
2345
This is the next candidate for the 6.0 release.  As with 5.92, all changes
2346
other than added documentation are bug fixes.
2347
 
2348
<h3><a name="5.93_Incompatible_changes"></a>Incompatible changes</h3><pre>
2349
 
2350
(Library)
2351
	- Every stream whose state includes any GC-traceable pointers must
2352
now have a set_defaults procedure that clears those pointers.
2353
 
2354
</pre><h3><a name="5.93_Documentation"></a>Documentation</h3><pre>
2355
 
2356
Fixes problems:
2357
	- There was an extra /ul tag.  (doc/Release.htm)
2358
	- Fontmap.GS wasn't mentioned as needing to be installed.
2359
(doc/Install.htm)
2360
	- Some documentation for the handling of seac was incorrect.
2361
(gxtype1.c)
2362
 
2363
Removes references to installbsd, which are no longer relevant.
2364
(doc/Install.htm)
2365
 
2366
Updates the information on building with NeXTSTEP.  (doc/Make.htm)
2367
 
2368
</pre><h3><a name="5.93_Procedures"></a>Procedures</h3><pre>
2369
 
2370
Fixes problems:
2371
	- The install command had unpredictably different syntax from one
2372
"standard" Unix system to another, causing `make install' to fail.  We
2373
replaced the install command with our own script.  (instcopy, dvx-gcc.mak,
2374
unix-gcc.mak, unixansi.mak, unixtrad.mak)
2375
 
2376
</pre><h3><a name="5.93_Utilities"></a>Utilities</h3><pre>
2377
 
2378
Fixes problems:
2379
	- pcharstr.ps loaded type1ops.ps with run rather than runlibfile,
2380
causing an error.  (lib/pcharstr.ps)
2381
 
2382
</pre><h3><a name="5.93_Drivers"></a>Drivers</h3><pre>
2383
 
2384
Fixes problems:
2385
	- Attempting to embed a font whose Encoding included characters not
2386
present in the font produced invalid output.  (gdevpsd1.c)
2387
	- Allocating a stream state didn't (automatically) clear all its
2388
internal pointers, possibly causing GC memory access errors.  (gdevpsds.c)
2389
	- An #include of string_.h should have been memory_.h.  (gdevpsdf.c)
2390
 
2391
Disables compression for very small images.  (gdevpsdi.c)
2392
 
2393
</pre><h3><a name="5.93_Platforms"></a>Platforms</h3><pre>
2394
 
2395
Fixes problems:
2396
	- Compiling gp_msio with MSVC's /MD switch caused a compile-time
2397
error.  (gp_msio.c)
2398
 
2399
</pre><h3><a name="5.93_PDF_writer"></a>PDF writer</h3><pre>
2400
 
2401
Fixes problems:
2402
	- A bookkeeping object was allocated with the wrong allocator,
2403
possibly causing access errors or garbage output.  (gdevpdfu.c)
2404
	- Certain Patterns weren't treated as such, leading to very large
2405
output files.  (gdevpdfi.c)
2406
	- If one of the base 14 fonts had a non-standard FontMatrix, the
2407
output disregarded this fact.  This could cause double obliquing.
2408
(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
2409
	- Articles never got an object ID assigned.  (bug introduced in
2410
5.91) (gdevpdfm.c)
2411
 
2412
</pre><h3><a name="5.93_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2413
 
2414
Changes the PDF interpreter to allow abbreviated filter names like /Fl for
2415
all streams, not just in-line images.  This directly contradicts the
2416
published PDF specification, but Acrobat Reader allows it.
2417
(lib/pdf_base.ps)
2418
 
2419
</pre><h3><a name="5.93_Interpreter"></a>Interpreter</h3><pre>
2420
 
2421
Fixes problems:
2422
	- Compiled fonts were broken by the introduction of i_ctx_p.
2423
(lib/font2c.ps, ccfont.h, iccfont.c)
2424
	- Allocating a stream state didn't (automatically) clear all its
2425
internal pointers, possibly causing GC memory access errors.  (zfproc.c)
2426
 
2427
</pre><h3><a name="5.93_Streams"></a>Streams</h3><pre>
2428
 
2429
Fixes problems:
2430
	- Allocating a stream state didn't (automatically) clear all its
2431
internal pointers, possibly causing GC memory access errors.  (scfx.h,
2432
slzwx.h, spngpx.h, strimpl.h, sbwbs.c, sdctc.c, seexec.c, sfilter1.c,
2433
siscale.c, szlibc.c)
2434
	- The PNG predictor streams could fail to process some data at the
2435
end of the input.  (spngp.c)
2436
 
2437
</pre><h3><a name="5.93_Library"></a>Library</h3><pre>
2438
 
2439
Fixes problems:
2440
	- Some obsolete definitions for Turbo C could produce references to
2441
an undefined procedure (setmem) at link time.  (memory_.h, string_.h)
2442
 
2443
</pre>
2444
 
2445
<hr>
2446
 
2447
<h2><a name="Version5.92"></a>Version 5.92 (beta) (9/2/99)</h2>
2448
 
2449
<p>
2450
This is the next candidate for the 6.0 release.  All changes other than
2451
added documentation are bug fixes.
2452
 
2453
<h3><a name="5.92_Documentation"></a>Documentation</h3><pre>
2454
 
2455
Fixes problems:
2456
	- The News for 5.91 didn't include a summary.  (doc/News.htm)
2457
	- The documentation for Microsoft platforms didn't mention that you
2458
must add the Ghostscript bin and lib directories to the PATH.  (doc/Use.htm)
2459
 
2460
Adds a file describing Aladdin's process for building, testing, and
2461
releasing Ghostscript.  (doc/Readme.htm, doc/Release.htm)
2462
 
2463
</pre><h3><a name="5.92_Procedures"></a>Procedures</h3><pre>
2464
 
2465
Fixes problems:
2466
	- Fontmap.GS is now required, but wasn't installed.  (unixinst.mak)
2467
	- A couple of documentation files weren't installed.  (unixinst.mak)
2468
 
2469
</pre><h3><a name="5.92_Utilities"></a>Utilities</h3><pre>
2470
 
2471
Fixes problems:
2472
	- The ps2pdf script for MS Windows used the wrong name for the
2473
executable.  (lib/ps2pdf.bat)
2474
 
2475
</pre><h3><a name="5.92_Drivers"></a>Drivers</h3><pre>
2476
 
2477
Fixes problems:
2478
	- An uninitialized variable annoyed some compilers.  (gdevpsdt.c)
2479
	- The PostScript-writing driver used the wrong allocator, causing
2480
possible memory access errors.  (gdevps.c)
2481
	- The PostScript-writing driver didn't clear a pointer, causing
2482
possible GC errors.  (gdevps.c)
2483
	- The PostScript-writing driver didn't have a correct GC descriptor,
2484
causing pointers to be corrupted.  (gdevpsdf.h, gdevps.c, gdevpsdf.c)
2485
	- Embedded Type 1 fonts unnecessarily filled individual Encoding
2486
slots with /.notdef.  (gdevpsd1.c)
2487
	- A large constant produced warnings on some compilers.  (gdevpsdt.c)
2488
 
2489
</pre><h3><a name="5.92_PDF_writer"></a>PDF writer</h3><pre>
2490
 
2491
Fixes problems:
2492
	- Once again, gcc didn't complain about an ANSI-illegal extra
2493
semicolon in a declaration list.  (gdevpdfo.h)
2494
	- Adds a cast to work around the fact that some compilers declare
2495
the return type of memchr as char * rather than void *.  (gdevpdfr.c)
2496
	- The bookkeeping for whether a font had been written and freed was
2497
inverted, causing some fonts to be written many times and other fonts not to
2498
be written at all.  (gdevpdf.c)
2499
 
2500
</pre><h3><a name="5.92_Interpreter"></a>Interpreter</h3><pre>
2501
 
2502
Fixes problems:
2503
	- More places needed workarounds for the alignment aliasing gcc bug.
2504
The bug only occurs if a pointer variable is dereferenced through a cast to
2505
a stricter alignment and then dereferenced later in its original form, so it
2506
doesn't affect very many places.  (igc.c, igcref.c, isave.c)
2507
 
2508
</pre><h3><a name="5.92_Streams"></a>Streams</h3><pre>
2509
 
2510
Makes the stream GC descriptor public for subclassing.  (stream.h, stream.c)
2511
 
2512
</pre>
2513
 
2514
<hr>
2515
 
2516
<h2><a name="Version5.91"></a>Version 5.91 (beta) (8/30/99)</h2>
2517
 
2518
<p>
2519
This is the next beta for 6.0.  It includes a major rewrite of the parts of
2520
the PDF writer that deal with resources and pdfmarks, as well as the usual
2521
bug fixes.  There are still problems with embedded fonts, both TrueType
2522
(which sometimes don't show up at all) and Type 1 (which sometimes confuse
2523
Acrobat Reader 3).
2524
 
2525
<h3><a name="5.91_Documentation"></a>Documentation</h3><pre>
2526
 
2527
Fixes problems:
2528
	- An HTML tag was misplaced in the News file.  (doc/News.htm)
2529
 
2530
Notes that the Solaris FONTPATH scanning problem may be fixed.
2531
(doc/Use.htm)
2532
 
2533
</pre><h3><a name="5.91_Utilities"></a>Utilities</h3><pre>
2534
 
2535
Fixes problems:
2536
	- Many of the margin and width computations in ps2epsi.ps (not
2537
written by Aladdin) were wrong -- off by 1.  It's only because the bugs
2538
masked each other or cancelled each other out that the code didn't produce
2539
errors more of the time.  (lib/ps2epsi.ps)
2540
 
2541
</pre><h3><a name="5.91_Drivers"></a>Drivers</h3><pre>
2542
 
2543
Fixes problems:
2544
	- Font subset glyphs weren't sorted early enough, causing Type 1
2545
embedded fonts to be written with inconsistent lengths.  (gdevpsd1.c)
2546
 
2547
Changes the BMP drivers so that they set the resolution in the BMP header
2548
rather than leaving it at 0.  This solves some problems reported by users,
2549
but may cause others.  (gdevbmpc.c)
2550
 
2551
</pre><h3><a name="5.91_Platforms"></a>Platforms</h3><pre>
2552
 
2553
Fixes problems:
2554
	- A change made in 5.90 was incorrect (we couldn't test it, because
2555
MS Windows and OS/2 systems can't be used over a network).  (gp_msio.c,
2556
gp_os2.c)
2557
 
2558
Adds some conditionalization to work around a bug in some recent versions of
2559
gcc/egcs.  (stdpre.h, interp.c)
2560
 
2561
</pre><h3><a name="5.91_Fonts"></a>Fonts</h3><pre>
2562
 
2563
Fixes problems:
2564
	- If the extension of a font file name on GS_FONTPATH included any
2565
upper-case characters, the font would not be found.  (lib/gs_fonts.ps)
2566
 
2567
Allows fontmaps to contain &lt;string&gt; run or .runlibfile, to get rid of the
2568
Fontmap -&gt; Fontmap.GS link that VMS can't handle.  (lib/gs_fonts.ps)
2569
 
2570
</pre><h3><a name="5.91_PDF_writer"></a>PDF writer</h3><pre>
2571
 
2572
Fixes problems:
2573
	- Very long arguments for pdfmark caused an ioerror, because the
2574
buffer used for converting them was fixed-length.  (lib/gs_pdfwr.ps)
2575
	- pdfmarks couldn't refer to objects that hadn't been defined yet.
2576
(gdevpdfx.h, gdevpdfo.c)
2577
	- When a DOCVIEW pdfmark added an OpenAction key to the Catalog,
2578
it omitted the / before the name.  (gdevpdfm.c)
2579
	- Font resources could be written in the middle of a page contents
2580
stream.  (bug introduced in 5.90) (gdevpdff.c, gdevpdfu.c)
2581
	- As usual, there were some signed/unsigned char * mismatches that
2582
gcc didn't detect.  (gdevpdff.c, gdevpdfm.c, gdevpdfo.c)
2583
	- Fonts used on a page but freed before the end of the page were
2584
omitted from the page's resource dictionary.  (gdevpdfx.h, gdevpdf.c,
2585
gdevpdff.c, gdevpdft.c)
2586
	- /D or /Dest keys in Action pdfmark dictionaries dropped the first
2587
character of their value.  (gdevpdfm.c)
2588
	- If a pdfmark added annotations to a page after the end of that
2589
page had been reached, those annotations would be lost.  (gdevpdf.c)
2590
	- ANN, LNK, DEST, and PS pdfmarks ignored the object name, if any.
2591
(Only OBJ and BP processed the name.) Unfortunately, fixing this required a
2592
complete overhaul of the way that resources and PDF objects were represented
2593
internally.  The result is both simpler and more general, but it involved a
2594
major upheaval in the PDF writer code.  (lib/gs_pdfwr.ps, gdevpdfo.h,
2595
gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c,
2596
gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
2597
	- EP pdfmarks didn't close any open text context.  (gdevpdfm.c)
2598
 
2599
Adds debugging code to check the consistency of the embedded Type 1 font
2600
writer.  (gdevpdff.c)
2601
 
2602
Makes /A and /F at the top level of an annotation or outline pdfmark
2603
equivalent to /Action and /File respectively.  See the code for more
2604
information.  (gdevpdfm.c)
2605
 
2606
</pre><h3><a name="5.91_Library"></a>Library</h3><pre>
2607
 
2608
Fixes problems:
2609
	- Degenerate Bezier curves could cause a division by zero.
2610
(gxpcopy.c)
2611
	- Some macros used in non-FPU configurations were missing some
2612
needed uses of const, and in one case an additional cast.  (gxfarith.h,
2613
gxfixed.h)
2614
 
2615
Changes the discard macro to upper-case.  (stdpre.h)
2616
 
2617
</pre>
2618
 
2619
<hr>
2620
 
2621
<h2><a name="Version5.90"></a>Version 5.90 (beta) (8/20/99)</h2>
2622
 
2623
<p>
2624
This is the first real candidate for the 6.0 release.  It does not fix all
2625
known bugs, but it includes all planned functionality.  New in this fileset:
2626
<ul>
2627
<li>	- FunctionType 4 for PDF files.
2628
<li>	- Alternate printer images for PDF files (-dUsePrinterImages
2629
	switch).
2630
<li>	- pdfwrite support for PDF "Cos objects" (without compression for
2631
	streams).
2632
<li>	- pdfwrite support for graphics objects named with BP/EP/SP
2633
	(without compression for the object definition).
2634
<li>	- pdfwrite font subsetting and embedded TrueType fonts.
2635
</ul>
2636
 
2637
<h3><a name="5.90_Incompatible_changes"></a>Incompatible changes</h3><pre>
2638
 
2639
(Interpreter)
2640
	- ref_stack_init now takes an additional argument.
2641
	- no_time_slice_proc is removed -- use 0 instead.
2642
(Library)
2643
	- Notification client procedures and the gs_notify_ procedures
2644
take different arguments.
2645
	- The common part of a gs_function_t structure has changed.
2646
	- gs_text_enum_init now returns a value that can indicate an error.
2647
	- The font font_info procedure now takes an additional argument.
2648
	- The IODevice open_device procedure is now defined as returning
2649
 
2650
	- gxp1fill.h is renamed gxp1impl.h.
2651
	- Allocators now have an additional procedure they must implement,
2652
and a state member they must initialize.
2653
	- Most of the gs..basic.. structure definition macros have been
2654
renamed.  The ptrs1_stringsN structure definition macros are removed.
2655
	- Implementations of the text API now must provide a resync
2656
procedure rather than a restart procedure.
2657
 
2658
</pre><h3><a name="5.90_Documentation"></a>Documentation</h3><pre>
2659
 
2660
Documents the new -dUsePrinterImages switch, and the expanded meaning of
2661
-Z~.  (doc/Use.htm)
2662
 
2663
Updates FSF's address in documentation.  (lib/Fontmap.GS, lib/Fontmap.Sol,
2664
gdevcd8.c)
2665
 
2666
Brings the PDF writer (ps2pdf) documentation up to date.  (doc/Ps2pdf.htm)
2667
 
2668
Updates the current-release documentation.  (doc/Current.htm,
2669
doc/Readme.htm)
2670
 
2671
Updates the problem-reporting procedure for contributed drivers, and some
2672
other new-user information.  (doc/New-user.htm)
2673
 
2674
</pre><h3><a name="5.90_Procedures"></a>Procedures</h3><pre>
2675
 
2676
Fixes bugs:
2677
	- Because of a typo, the file gs_mgl_e.ps wasn't installed (on Unix
2678
systems) by 'make install'.  (unixinst.mak)
2679
	- The .dev files for drivers didn't depend on devs.mak.  (devs.mak)
2680
	- The X driver didn't include a needed dependency on the bbox
2681
device.  (devs.mak)
2682
 
2683
Incorporates the pdfmin package into the pdf package, since pdfmin was only
2684
provided for very small-memory environments and is no longer useful.
2685
(int.mak)
2686
 
2687
Adds additional prototype-checking switches, which are important on 64-bit
2688
platforms and useful on all platforms, to the gcc compilation line.
2689
(unix-gcc.mak)
2690
 
2691
</pre><h3><a name="5.90_Utilities"></a>Utilities</h3><pre>
2692
 
2693
Fixes bugs:
2694
	- A backquote was misplaced in the Unix ps2pdf script.  (lib/ps2pdf)
2695
	- Some example files didn't have %! headers.  (examples/alphabet.ps,
2696
examples/waterfal.ps)
2697
	- ansi2knr didn't handle preprocessor directives within a function
2698
header.  (ansi2knr.c)
2699
 
2700
Cleans up some minor compiler complaints.  (genarch.c, genconf.c, echogs.c)
2701
 
2702
</pre><h3><a name="5.90_Drivers"></a>Drivers</h3><pre>
2703
 
2704
Fixes bugs:
2705
	- The PostScript writer sometimes failed to reset the clip path,
2706
causing parts of the output to be omitted or to appear incorrectly.
2707
(gdevvec.c)
2708
	- There was a type mismatch in a conditional.  (gdevxini.c)
2709
	- A constant array wasn't declared as static.  (gdevpsdt.c)
2710
	- Once again, there were some signed / unsigned char mismatches that
2711
gcc apparently can't be forced to detect.  (gdevpsdt.c)
2712
	- The alternative X drivers didn't have GC descriptors, which could
2713
lead to memory corruption.  (gdevxalt.c)
2714
	- The alternative X drivers didn't handle the closing of the
2715
underlying X driver correctly, leading to a dangling pointer.  (gdevxalt.c)
2716
	- Font subsetting didn't eliminate duplicate glyphs (glyphs
2717
referenced more than once from the Encoding vector.)  (gdevpsd1.c,
2718
gdevpsdt.c)
2719
	- Type 1 font subsetting didn't ensure the presence of .notdef.
2720
(gdevpsd1.c)
2721
	- The embedded TrueType font writer wrote all 16-bit values
2722
incorrectly.  This could explain a lot!  (gdevpsdt.c)
2723
 
2724
Cleans up public functions with no previous prototype.  (gdevtfax.h,
2725
gdevx.h, gdevdfax.c, gdevtfax.c, gdevx.c, gdevxini.c, gdevxxf.c)
2726
 
2727
Adds some procedures to support font subsetting.  (gdevpsdf.h, gdevpsdf.c)
2728
 
2729
Adds an alternate font name for writing TrueType fonts.  (gdevpsdt.c)
2730
 
2731
Makes the TrueType font writer generate an OS/2 table, a Macintosh cmap, and
2732
a name table (for the font name), as well as a Windows cmap and post, if
2733
necessary.  (gdevpsdf.h, gdevpsdt.c)
2734
 
2735
</pre><h3><a name="5.90_Platforms"></a>Platforms</h3><pre>
2736
 
2737
Updates a couple of clients for the change in the IODevice open_device
2738
procedure, eliminating some undesirable externs.  (gp_msio.c, gp_os2.c)
2739
 
2740
</pre><h3><a name="5.90_Fonts"></a>Fonts</h3><pre>
2741
 
2742
Adds OS/2 and maxp to the list of tables that must be preserved when loading
2743
TrueType fonts.  (lib/gs_ttf.ps)
2744
 
2745
Registers the complete lists of glyphs in the Adobe Latin fonts as
2746
pseudo-encodings.  (lib/gs_lgo_e.ps, lib/gs_lgx_e.ps, unixinst.mak)
2747
 
2748
</pre><h3><a name="5.90_PDF_writer"></a>PDF writer</h3><pre>
2749
 
2750
Fixes bugs:
2751
	- One built-in font was sometimes substituted for another.
2752
(gdevpdff.c)
2753
	- Use of composite fonts often produced a rangecheck error.
2754
(gdevpdft.c)
2755
	- The structures for named objects were freed twice.  (gdevpdfx.h,
2756
gdevpdf.c, gdevpdfo.c)
2757
	- The code to avoid writing a blank between a Td command and
2758
following text was fragile and still incorrect after being "fixed" twice.
2759
We removed this minor optimization, at a small cost in file size when not
2760
compressing.  (gdevpdft.c)
2761
	- No Names tree was generated for named destinations specified as
2762
strings.  Rather than do this, we now convert string destinations to names.
2763
This doesn't scale up well, but it is simple and also is compatible with all
2764
PDF versions from 1.1 on.  (gdevpdfm.c)
2765
	- Fonts that define characters incrementally, such as the TrueType
2766
fonts written by some versions of the AdobePS Windows driver, could omit
2767
characters if embedded.  Fixing this required delaying writing out fonts
2768
until the font was about to be freed or the writer was closed.  (gdevpdfx.h,
2769
gdevpdff.c, gdevpdft.c)
2770
 
2771
Cleans up public functions with no previous prototype.  (gdevpdfx.h,
2772
gdevpdf.c, gdevpdfm.c)
2773
 
2774
Updates client code for the change in gs_text_enum_init.  (gdevpdft.c)
2775
 
2776
Makes some changes towards handling show operations that must be split up
2777
internally into multiple operations using different fonts.  (gdevpdfx.h,
2778
gdevpdff.c, gdevpdft.c)
2779
 
2780
Implements the PUT pdfmark for the built-in objects (Catalog, DocInfo,
2781
Page<#>, ThisPage, PrevPage, NextPage).  This required deferring writing out
2782
page objects until the end of the document.  (lib/gs_pdfwr.ps, gdevpdfx.h,
2783
gdevpdf.c, gdevpdff.c, gdevpdfm.c, gdevpdfo.c, gdevpdfu.c)
2784
 
2785
Adds table entries, but not parsing, checking, or functionality, for the new
2786
Acrobat 4 pdfmarks related to document logical structure.  (gdevpdfm.c)
2787
 
2788
Implements stream-type Cos objects.  (lib/gs_pdfwr.ps, gdevpdfx.h,
2789
gdevpdf.c, gdevpdfm.c, gdevpdfo.c, gdevpdfp.c, gdevpdfu.c)
2790
 
2791
Implements BP/EP/SP pdfmarks.  (gdevpdfx.h, gdevpdf.c, gdevpdfi.c,
2792
gdevpdfm.c)
2793
 
2794
Changes enumeration and #defined names to upper case, and adds _t to type
2795
names.  (gdevpdfx.h, gdevpdf*.c)
2796
 
2797
Adds an OS/2 table for embedded fonts if missing.  (gdevpdff.c)
2798
 
2799
Makes the allocator for the PDF device's internal structures be the stable
2800
allocator of the device's allocator, not the C heap.  This required
2801
correcting a number of GC descriptors.  (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
2802
 
2803
Replaces the text restart procedure with the new resync procedure.
2804
(gdevpdft.c)
2805
 
2806
</pre><h3><a name="5.90_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2807
 
2808
Fixes problems:
2809
	- Failure to find a font in the Resources dictionary signalled an
2810
/undefinedfont error (which does not exist) rather than /invalidfont.
2811
(lib/pdf_font.ps)
2812
 
2813
Implements FunctionType 4 functions.  (lib/pdf_draw.ps, zfunc4.c)
2814
 
2815
Implements the -dUsePrinterImages switch to use "alternate" printer images
2816
when rendering.  (lib/pdf_draw.ps)
2817
 
2818
</pre><h3><a name="5.90_Interpreter"></a>Interpreter</h3><pre>
2819
 
2820
Fixes problems:
2821
	- Some pointers were declared as ref * that actually could be
2822
ref_packed *, potentially confusing compilers that follow the new, stricter
2823
ANSI C rules about alignment aliasing.  (idebug.h, idebug.c, igc.c,
2824
igcref.c, zmisc.c)
2825
	- cshow didn't restore the root font after executing the procedure,
2826
producing incorrect results if the procedure did a setfont.  (ichar.h,
2827
zcfont.c, zchar.c)
2828
	- A needed const-breaking cast was omitted.  (zmisc.c)
2829
	- The memory validator could cause an unaligned access.  (ilocate.c)
2830
	- restore could free parts of the stacks that were still in use.  We
2831
fixed this long-standing problem using the new concept of stable allocators.
2832
(interp.c)
2833
 
2834
Moves the implementation of the abs operator to C, required for FunctionType
2835
4 support.  (lib/gs_init.ps, zarith.c)
2836
 
2837
Makes more operator procedures public, required for FunctionType 4 support.
2838
(zarith.c, zmath.c, zrelbit.c, ztype.c)
2839
 
2840
Adds an additional parameter to ref_stack_init, to allow creating a
2841
temporary stack without having an allocator.  (istkparm.h, istack.h,
2842
interp.c, istack.c)
2843
 
2844
Cleans up public functions with no previous prototype.  (files.h, ichar.h,
2845
icstate.h, ifilter2.h, ifrpred.h, ifwpred.h, igcstr.h, iimage.h, iimage2.h,
2846
iinit.h, imain.h, interp.h, iscanbin.h, ivmem2.h, oparc.h, opextern.h,
2847
icontext.c, igc.c, iinit.c, imain.c, inobtokn.c, interp.c, iscan.c,
2848
iscanbin.c, zchar.c, zcharout.c, zcolor.c, zcolor1.c, zcontrol.c, zdevice.c,
2849
zdpnext.c, zdps.c, zfdecode.c, zfile.c, zfilter2.c, zfont0.c, zfunc0.c,
2850
zfunc3.c, zfzlib.c, zgeneric.c, zht1.c, zht2.c, zimage.c, zimage2.c,
2851
ziodev.c, zmath.c, zpath1.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
2852
 
2853
Updates client code for the tweak in the definition of the IODevice
2854
open_device procedure.  (ziodev.c)
2855
 
2856
Implements stable local and global VM allocators.  This required changing
2857
more places than we would have liked.  (ialloc.c, igc.c, ilocate.c, imain.c,
2858
interp.c, ireclaim.c, isave.c, zcontext.c)
2859
 
2860
Removes the global member of gs_ref_memory_t, since it isn't used.
2861
(gxalloc.h, ialloc.c, zcontext.c)
2862
 
2863
Adds more tracing to the relocation phase of the garbage collector.
2864
(igcref.c)
2865
 
2866
</pre><h3><a name="5.90_Streams"></a>Streams</h3><pre>
2867
 
2868
Fixes problems:
2869
	 - jpeg_open_backing_store no longer had the correct arguments.
2870
(This had no effect in practice, since the procedure was never called.)
2871
(sjpegc.c)
2872
 
2873
Cleans up public functions with no previous prototype.  (scfdgen.c,
2874
scfetab.c, sjpegc.c, slzwce.c, slzwd.c, stream.c)
2875
 
2876
Adds some tracing to the image scaling stream.  (siscale.c)
2877
 
2878
</pre><h3><a name="5.90_Library"></a>Library</h3><pre>
2879
 
2880
Fixes bugs:
2881
	- A null OutputFile name could cause an error.  (gxdevice.h,
2882
gsdevice.c, gsfname.c)
2883
	- Shading with non-monotonic Functions produced incorrect output.
2884
(gxshade1.c)
2885
	- An #undef didn't match the #define it was supposed to cancel.
2886
(gxchar.c)
2887
	- The default next_char_glyph procedure didn't handle FROM_CHARS or
2888
FROM_SINGLE_CHAR data sources.  (gstext.c)
2889
	- When finalizing a forwarding device, the target pointer in the
2890
device wasn't cleared, leading to an incorrect attempt to access it later.
2891
(gdevnfwd.c)
2892
	- Interpolated images were broken, probably since 5.81.
2893
(gxiscale.c)
2894
	- Some color space implementation procedures hadn't been updated to
2895
add 'const' to the color space argument.  (gscie.c)
2896
	- A constant had a signed/unsigned ambiguity on systems where
2897
sizeof(long) > 4.  (gsccode.h)
2898
	- The font font_info procedure didn't provide for scaling.
2899
(gxfont.h)
2900
 
2901
Simplifies the notification mechanism to remove the concept of client and
2902
generating object.  Registration now just takes a closure (procedure +
2903
opaque data); events pass the closure data and event data.  (gsnotify.h,
2904
gsfont.c, gsnotify.c)
2905
 
2906
Changes gs_notify_unregister so that it can unregister all registrations of
2907
a particular client rather than only one.  (gsnotify.h, gsnotify.c)
2908
 
2909
Adds support for "vanilla" Functions at the library level.  (gsfunc.h,
2910
gsfunc.c)
2911
 
2912
Adds some tracing for Functions.  (gsfunc3.c)
2913
 
2914
Redefines function monotonicity to indicate whether the function is
2915
increasing or decreasing, and implements monotonicity correctly for all
2916
FunctionTypes except 4.  (gsfunc.h, gxfunc.h, gsfunc0.c, gsfunc3.c)
2917
 
2918
Makes Type 0 fonts check that they are being used with a string, not a
2919
character or (a) glyph(s).  (gxtext.h, gschar.c, gschar0.c, gstext.c,
2920
gxchar.c)
2921
 
2922
Cleans up public functions with no previous prototype.  (gdevmem.h,
2923
gpcheck.h, gscie.h, gserror.h, gsmemory.h, gxcie.h, gxcldev.h, gxclpath.h,
2924
gxcmap.h, gxcspace.h, gxfixed.h, gxfont0.h, gxp1fill.h [deleted],
2925
gxp1impl.h, math_.h, std.h, gconf.c, gdevdrop.c, gdevm1.c, gdevm2.c,
2926
gdevm4.c, gdevm8.c, gdevm24.c, gdevmr1.c, gdevmr2n.c, gdevprn.c, gsbittab.c,
2927
gscdef.c, gscie.c, gsciemap.c, gscspace.c, gscscie.c, gsdevmem.c,
2928
gsdparam.c, gshtscr.c, gsimpath.c, gsiodev.c, gsmisc.c, gsnorop.c, gspath.c,
2929
gspcolor.c, gsptype1.c, gsropc.c, gsutil.c, gxacpath.c, gxclist.c,
2930
gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c, gxiscale.c,
2931
gxp1fill.c, gxpath2.c)
2932
 
2933
Gets rid of some remaining vestiges of 16-bit ints.  (gdevm1.c, gsbitops.c)
2934
 
2935
Adds procedures to register clients for notification when a font is freed.
2936
(gxfont.h, gsfont.c)
2937
 
2938
Defines the IODevice open_device procedure as returning 1 if it opened a new
2939
stream, 0 if it returned an existing stream.  This eliminates some awkward
2940
externs.
2941
 
2942
Adds the concept of a stable allocator -- an allocator that allocates from
2943
the same heap and in the same VM space as another allocator, but is not
2944
subject to save and restore.  (gsmemory.h, gsmemraw.h, gsalloc.c,
2945
gsmalloc.c, gsmemlok.c, gsmemret.c, gsnogc.c)
2946
 
2947
Adds some new macros to make defining new kinds of fixed-format structures
2948
simpler.  (gsstruct.h)
2949
 
2950
Replaces the text processing restart procedure with a more general resync
2951
procedure, which can be used to restart partway through a string.  We retain
2952
gs_text_restart for backward compatibility and general usefulness.
2953
(gstext.h, gxtext.h, gdevbbox.c, gstext.c, gxchar.c)
2954
 
2955
Adds the Adobe Latin glyph sets as pseudo-encodings.  (gsccode.h)
2956
 
2957
</pre>
2958
 
2959
<hr>
2960
 
2961
<h2><a name="Version5.88"></a>Version 5.88 (tester) (8/3/99)</h2>
2962
 
2963
<p>
2964
This fileset adds the ability to reference and embed TrueType fonts in PDF
2965
output.  Unfortunately, even though the resulting PDF files work fine with
2966
Ghostscript itself, Acrobat Reader apparently can't handle embedded TrueType
2967
fonts with non-standard Encodings.  We hope to fix this problem during the
2968
6.0 beta test period.
2969
 
2970
<p>
2971
This fileset also adds the ability to buffer X Windows output in a
2972
client-side bitmap.  This is typically more efficient than trying to push
2973
many small commands through the X client/server knothole, especially if
2974
bitmap images or RasterOp are involved.
2975
 
2976
<p>
2977
Some reported problems have been deliberately left unfixed: we will need
2978
every minute of the 13 days before the start of the 6.0 beta test period to
2979
implement the last few items of functionality scheduled for the 6.0 release,
2980
and we can fix problems (but not add functionality) during the beta test
2981
period.
2982
 
2983
<h3><a name="5.88_Incompatible_changes"></a>Incompatible changes</h3><pre>
2984
 
2985
(Library)
2986
	- The box_device member of the bbox device is replaced by the
2987
box_data member, with a different meaning.
2988
	- The x_rect structure is removed; all uses are changed to
2989
gs_int_rect.
2990
	- gdevpstr.h is renamed spprint.h.
2991
	- The parameter printing procedures are moved from gdevpsdf.[hc] to
2992
spsdf.[hc].
2993
	- Clients must now allocate gs_font* objects using gs_font_alloc or
2994
gs_font_base_alloc, not directly with gs_alloc_struct.
2995
	- The first (vptr) argument of enum_ptrs procedures is now const *.
2996
EV_CONST is no longer defined.
2997
	- The pep argument of enum_ptrs procedures is now enum_ptr_t *
2998
rather than const void **.
2999
	- The font glyph_pieces procedure is replaced with an option for
3000
glyph_info.
3001
	- The font encode_char procedure now takes an additional glyph_space
3002
argument.
3003
	- The o_large flag in object headers is renamed o_alone; o_lmark and
3004
o_lsize no longer exist.  The DO_LARGE and DO_SMALL macros for enumerating
3005
objects in a chunk are also removed.
3006
 
3007
</pre><h3><a name="5.88_Documentation"></a>Documentation</h3><pre>
3008
 
3009
Fixes problems:
3010
	- News entries since 5.72 had a missing &lt;li&gt; in the table of
3011
contents entry.  (doc/News.htm)
3012
	- gs_text_params_t still referred to REPLACE_X_WIDTHS and
3013
REPLACE_Y_WIDTHS rather than REPLACE_WIDTHS.  (gstext.h)
3014
 
3015
Clarifies that the font glyph_outline procedure must append a final moveto
3016
for the advance width.  (gxfont.h)
3017
 
3018
Clarifies that the font enumerate_glyph procedure enumerates glyphs in an
3019
unpredictable order.  (gxfont.h)
3020
 
3021
Documents that reference counted freeing procedures for structures with
3022
finalization must free the structure itself first rather than last.
3023
(gsrefct.h)
3024
 
3025
Updates documentation on building Ghostscript on MS-DOS and MS Windows.
3026
(doc/Make.htm)
3027
 
3028
Adds some documentation on how the makefiles are / should be structured.
3029
(doc/Source.htm)
3030
 
3031
Documents the new parameters for the X driver.  (doc/Use.htm)
3032
 
3033
Updates the language documentation to refer properly to PostScript
3034
LanguageLevel 3 and PDF 1.3. (doc/Language.htm)
3035
 
3036
</pre><h3><a name="5.88_Procedures"></a>Procedures</h3><pre>
3037
 
3038
Fixes problems:
3039
	- An omitted space in a makefile caused an incompatibility with the
3040
VMS build utilities.  (lib.mak)
3041
	- The gsindent script was omitted from the fileset.  (gsindent)
3042
	- The core library didn't include stream.c, which is now required.
3043
(lib.mak)
3044
	- The workaround for the peculiarities of the Watcom compiler's
3045
command line syntax didn't work.  (zlib.mak)
3046
	- A DOS command line overflowed in the makefile.  We patched this by
3047
deleting the bmpgray device from the Borland Windows platform.
3048
(bcwin32.mak)
3049
 
3050
Provides a .lnk file required by the revised linking procedures on MS
3051
Windows.  (gsdll32w.lnk)
3052
 
3053
Straightens out the Watcom makefiles so that it is possible to build a
3054
Windows executable and DLL using the Watcom compiler.  This required moving
3055
some parameters around in the other PC makefiles.  (bcwin32.mak,
3056
msvccmd.mak, watc.mak, watcw32.mak, wccommon.mak, winint.mak, winlib.mak)
3057
 
3058
</pre><h3><a name="5.88_Drivers"></a>Drivers</h3><pre>
3059
 
3060
Fixes problems:
3061
	- The X driver reported the wrong parameter name for errors in the
3062
value of the WindowID or .IsPageDevice parameter.  (gdevxini.c)
3063
	- The X driver calculated the Y window dimension incorrectly when
3064
resizing the window if X and Y resolutions were different.  (Never happens
3065
in practice.)  (gdevxini.c)
3066
	- The bmpasep8 device was defined as gx_device_printer rather than
3067
gx_device_async.  (gdevbmpa.c)
3068
	- Some casts between signed and unsigned char * were missing.
3069
(gdevpdff.c, gdevpdft.c)
3070
	- The PDF writer didn't handle reencoded characters properly in
3071
non-embedded fonts.  (gdevpdfx.h)
3072
	- The PDF writer allocated new structures while being closed,
3073
causing memory corruption if the close procedure was called for
3074
finalization.  (gdevpdff.c, gdevpsd1.c)
3075
	- The PDF writer tried to close the resource file twice.  (bug
3076
introduced since 5.50) (gdevpdf.c)
3077
	- The PDF writer failed to work around a bug in Acrobat 3 Reader's
3078
Print function related to re-encoded fonts.  (gdevpdft.c)
3079
	- The PDF writer incorrectly specified ASCII85Encode rather than
3080
ASCII85Decode for non-binary embedded fonts.  (gdevpdff.c)
3081
	- The PDF writer didn't handle embedded fonts with a non-standard
3082
FontMatrix correctly.  (gdevpdft.c)
3083
	- The PDF writer didn't handle reassigned characters correctly.
3084
(gdevpdft.c)
3085
	- When embedding a Type 1 font, the PDF writer didn't check that the
3086
font contains only CharStrings (no PostScript procedures), no non-standard
3087
OtherSubrs, and no CDevProc.  (gdevpsd1.c)
3088
	- There was an unused label in the mswinpr2 driver.  (gdevwpr2.c)
3089
	- The X driver didn't flush buffered output before reading back
3090
bits from the display.  (gdevx.c)
3091
	- The X driver still didn't set up the color mapping tables
3092
correctly -- in particular, it didn't initialize cman.color_to_rgb before
3093
setting up the dither ramp or cube.  This is at least the third time we have
3094
"fixed" this problem.  (gdevxcmp.c)
3095
 
3096
Removes the remaining uses of gs_malloc, gs_free, and gs_memory_default from
3097
Aladdin's non-display drivers.  (gdevbit.c, gdevbmp.c, gdevbmpa.c,
3098
gdevcgm.c, gdevclj.c, gdevcljc.c, gdevdjet.c, gdevlj56.c, gdevmiff.c,
3099
gdevpbm.c, gdevpcx.c, gdevpng.c, gdevpsim.c, gdevtfax.c, gdevtfnx.c,
3100
gdevxalt.c)
3101
 
3102
Adds a MaxBitmap parameter to the X driver: the driver will maintain a
3103
full-window pixmap in memory if it requires no more space than MaxBitmap.
3104
The default value of this parameter is 0, meaning never use a client-side
3105
bitmap.  (gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
3106
 
3107
Moves the X device closing and get/put parameters procedures from gdevx.c to
3108
gdevxini.c.  (gdevx.c, gdevxini.c)
3109
 
3110
Removes some remaining uses of gs_malloc and gs_free from the X driver.
3111
Note that this requires making the X device structure properly
3112
garbage-collectable.  (gdevx.h, gsstruct.h, gdevxini.c)
3113
 
3114
Removes the remaining uses of 'register' from the X driver.  (gdevx.c,
3115
gdevxini.c)
3116
 
3117
Removes the remaining uses of the obsolete far_data keyword from Aladdin's
3118
non-PC drivers.  (gdevbmp.c, gdevbmpa.c, gdevcgm.c, gdevlj56.c, gdevmiff.c,
3119
gdevp2up.c)
3120
 
3121
Improves the X driver's algorithm for deciding when to update the screen,
3122
and makes its parameters available for reading and setting.  (gdevx.h,
3123
gdevx.c, gdevxini.c)
3124
 
3125
In the X driver's color mapper, improves performance slightly by replacing
3126
multiplies and divides with shifts and table lookups in the normal case of
3127
standard color maps.  (gdevxcmp.h, gdevxcmp.c)
3128
 
3129
Moves some filter-related code from the driver level to the stream level.
3130
(gdevpsdf.c)
3131
 
3132
Moves some utilities for printing values in ASCII form from the driver level
3133
to the stream level.  (devs.mak, gdevpdfx.h, gdevpstr.h [deleted], gdevps.c,
3134
gdevpsde.c, gdevpsdf.c, gdevpsdp.c, gdevpstr.c [deleted])
3135
 
3136
Upgrades the PDF writer to handle TrueType fonts as well as Type 1.
3137
(gdevpdfx.h, gdevpsdf.h, gdevpdff.c, gdevpdft.c, gdevpsde.c => gdevpsd1.c,
3138
gdevpsdt.c)
3139
 
3140
Starts to implement font subsetting in the PDF writer. (gdevpdfx.h,
3141
gdevpsdf.h, gdevpdff.c, gdevpsd1.c, gdevpsdt.c)
3142
 
3143
Partially implements WMode when writing font descriptors.  (gdevpdff.c)
3144
 
3145
Changes psdf_binary_writer so that adding the ASCII85 filter in
3146
psdf_begin_binary doesn't require allocating any memory.  (gdevpsdf.h,
3147
gdevpsdf.c)
3148
 
3149
Makes the PDF writer guess the Ascent and StemV values for embedded fonts
3150
when it can't determine them by examining the font.  (gdevpdff.c)
3151
 
3152
Makes the PDF writer able to handle xshow and yshow (TEXT_REPLACE_WIDTHS).
3153
(gdevpdft.c)
3154
 
3155
Updates code to reflect the addition of glyph_space to the font encode_char
3156
and enumerate_glyph procedures.  (gdevpsdf.h, gdevpdff.c, gdevpdft.c,
3157
gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
3158
 
3159
Removes some unnecessary #includes.  (gdevxres.c)
3160
 
3161
Removes the sample driver-based CRD from the variant X drivers, since this
3162
created a pointless dependency.  (The `bit' drivers still provide this
3163
feature, for testing.)  (gdevxalt.c)
3164
 
3165
Changes the default compatibility level of PDF output from 1.2 (Acrobat 3)
3166
to 1.3 (Acrobat 4).  (gdevpdf.c)
3167
 
3168
</pre><h3><a name="5.88_Platforms"></a>Platforms</h3><pre>
3169
 
3170
Fixes problems:
3171
	- A comment included an extra /*.  (gp_mswin.c)
3172
	- The definitions for min and max in a couple of files disagreed
3173
with the ones typically provided in system header files.  (dwimg.cpp,
3174
dwtext.cpp)
3175
 
3176
Removes some unnecessary code related to generating temporary file names.
3177
(gp_iwatc.c)
3178
 
3179
</pre><h3><a name="5.88_Fonts"></a>Fonts</h3><pre>
3180
 
3181
Changes the loader for TrueType fonts to keep the 'instructions', which are
3182
required if the font is going to be written out in a PDF file.
3183
(lib/gs_ttf.ps)
3184
 
3185
Adds some more debugging output to the TrueType font loader.
3186
(lib/gs_ttf.ps)
3187
 
3188
Registers the MacGlyphEncoding so it can be made available to the PDF
3189
writer.  (lib/gs_mgl_e.ps, lib/gs_ttf.ps, unixinst.mak, gsccode.h, ifont.h)
3190
 
3191
</pre><h3><a name="5.88_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3192
 
3193
Fixes problems:
3194
	- The serif and small-caps flags in the FontDescriptor were ignored
3195
when doing font substitution.  (lib/gs_fonts.ps, lib/pdf_font.ps)
3196
	- The ri operator was undefined.  We added a dummy definition.
3197
(lib/pdf_ops.ps)
3198
	- The redefinitions of restore could cause a recursion loop.
3199
(lib/gs_fform.ps, lib/gs_lev2.ps)
3200
	- There was an extra gsave executed for each page, causing the
3201
graphics state stack to grow deeper and deeper, which caused problems when
3202
wrapping up at the end of execution.  (lib/pdf_main.ps)
3203
 
3204
Implements the sh operator.  (lib/pdf_draw.ps)
3205
 
3206
Works around a bug in some PDF files generated by Adobe's PDF library (?),
3207
which attempt to create a font Encoding array with more than 256 elements.
3208
(lib/pdf_font.ps)
3209
 
3210
</pre><h3><a name="5.88_Interpreter"></a>Interpreter</h3><pre>
3211
 
3212
Fixes problems:
3213
	- The GNU readline completion code (which Aladdin did not write) was
3214
completely wrong.  (gp_gnrdl.c)
3215
	- The top-level restore sometimes tried to restore global VM an
3216
extra time, leading to memory corruption.  (bug probably introduced in 5.85)
3217
(isave.c)
3218
	- The glyph_ref procedure was defined in two different places
3219
(inconsistently).  (ichar.h, zchar.c, zchar1.c)
3220
 
3221
Restructures the name table to improve cache coherence and to make it
3222
possible to store initial name strings in ROM.  (iname.h, inamedef.h,
3223
inames.h, inamestr.h, igc.c, iname.c, isave.c)
3224
 
3225
Changes the scanner so it doesn't copy name strings when scanning a compiled
3226
init string.  This reduces RAM requirements by about 20K when using compiled
3227
initialization.  (iscan.c)
3228
 
3229
Removes redundant FontBBox correction code, since this is now handled by the
3230
library.  (zfont42.c)
3231
 
3232
Updates the Type 1 and Type 42 font code to implement the new font
3233
procedures.  (icharout.h, zcharout.c, zchar1.c, zchar42.c, zfont1.c,
3234
zfont42.c)
3235
 
3236
Simplifies the code that checks whether a grestore needs to do a
3237
setpagedevice.  (zdevice2.c)
3238
 
3239
Updates code to reflect the change of the vptr argument of enum_ptrs
3240
procedures to const *.  (igcref.c)
3241
 
3242
Updates code to reflect the change in the pep argument of enum_ptrs
3243
procedures to enum_ptr_t *.  (igc.h, iscan.h, istruct.h, igc.c, igcref.c,
3244
ilocate.c, iscan.c)
3245
 
3246
Updates code to reflect the addition of glyph_space to the font encode_char
3247
and enumerate_glyph procedures.  (bfont.h, ifont.h, zbfont.c, zfont1.c,
3248
zfont32.c, zfont42.c)
3249
 
3250
Cleans up some code details.  (idebug.h, ifunc.h, iparray.h, istream.h,
3251
zfunc.c)
3252
 
3253
Removes some no longer needed test code.  (zfont1.c)
3254
 
3255
Updates memory manager code to reflect the change from o_large to o_alone.
3256
(igc.c, igcref.c, ilocate.c, isave.c)
3257
 
3258
Changes the printed font substitution message to be closer to what some
3259
Adobe products print if SHORTERRORS is defined.  (Thanks to Andrew Chilvers
3260
for the suggestion.)  (lib/gs_fonts.ps)
3261
 
3262
</pre><h3><a name="5.88_Streams"></a>Streams</h3><pre>
3263
 
3264
Fixes problems:
3265
	- The fix in 5.85 for ASCII85Encode EOLs was wrong and caused a word
3266
of data to be dropped occasionally.  (sfilter2.c)
3267
 
3268
Moves some filter-related code from the driver level to the stream level.
3269
(stream.h, stream.c)
3270
 
3271
Moves some utilities for printing values in ASCII form from the driver level
3272
to the stream level.  (lib.mak, spprint.h, spsdf.h, spprint.c, spsdf.c)
3273
 
3274
Adds some more tracing output for image scaling.  (siscale.c)
3275
 
3276
</pre><h3><a name="5.88_Library"></a>Library</h3><pre>
3277
 
3278
Fixes problems:
3279
	- The bbox device's check for whether a rectangle filled the entire
3280
page was wrong.  (gdevbbox.c)
3281
	- The bbox device didn't correctly handle parallelograms, triangles,
3282
or thin lines with points specified in other than ascending order.
3283
(gdevbbox.c)
3284
	- The bbox device smashed the reference count of the text enumerator
3285
it created, causing a memory leak.  (gdevbbox.c)
3286
	- The bbox device didn't copy back all the dynamic information from
3287
a subsidiary text enumerator, with unpredictable results.  (gxtext.h,
3288
gdevbbox.c, gstext.c)
3289
	- The default implementation of glyph_info for fonts incorrectly
3290
reported that it returned values for all members, not just the ones it knew
3291
about.  (gsfont.c)
3292
	- The profiling implementation of memset was incorrect, leading to
3293
memory smashing.  (gsmisc.c)
3294
	- The default implementation of glyph_info had a memory leak.
3295
(gsfont.c)
3296
	- The default implementation of character rendering didn't correctly
3297
handle the case where the character was in the cache and only the character
3298
width was requested.  (gxchar.c)
3299
	- Text processing didn't correctly handle REPLACE_WIDTHS if the X
3300
and Y width arrays were different.  (The PostScript interpreter never does
3301
this.)  (gstext.h, gstext.c, gxchar.c)
3302
	- Compositing devices weren't initialized properly, leading to
3303
invalid accesses.  This is the last (?) bit of the device reference counting
3304
bug tail.  (gsalphac.c, gsropc.c)
3305
 
3306
Changes the bbox device to make the procedures for managing the bounding box
3307
virtual, so the X device can be a subclass.  (gdevbbox.h, gdevbbox.c)
3308
 
3309
Changes the bbox device so it always adds the bounding box after doing the
3310
drawing operation rather than before, for the benefit of the buffering X
3311
device.  (gdevbbox.c)
3312
 
3313
Removes some remaining uses of gs_memory_default.  (gdevdrop.c)
3314
 
3315
Removes all uses of the obsolete far_data keyword from the library.
3316
(gconf.c, gdevbbox.c)
3317
 
3318
Changes the bbox device so it doesn't run drawing algorithms twice if it has
3319
a target that uses the default implementation.  (gdevbbox.c)
3320
 
3321
Speeds up the implementation of fill_rectangle for 16-bit memory devices.
3322
(gdevm16.c)
3323
 
3324
Makes TrueType fonts implement the new font procedures.  (gxfont42.h,
3325
gxmatrix.h, gsmatrix.c, gstype42.c)
3326
 
3327
Adds a gs_id to gs_font objects, so that fonts with the same name can be
3328
distinguished reliably without relying on the address.  (gxfont.h, gsfont.c)
3329
 
3330
Makes the vptr argument of enum_ptrs procedures be const *.  This is a
3331
long-overdue change.  (gsstype.h, gxxfont.h, gsalloc.c, gsfont.c,
3332
gsmemory.c) ****** REDO THE CONST-BREAKING CASTS IN gsfont.c ******
3333
 
3334
Changes the pep argument of enum_ptrs from const void ** to enum_ptr_t *, to
3335
get rid of some hacks in enum_ptrs implementations that had to construct
3336
temporary gs_strings.  (gsstruct.h, gsstype.h, gstext.h, gsalloc.c,
3337
gscolor2.c, gsfont.c, gsmemory.c, gstext.c)
3338
 
3339
Adds a general mechanism that provides for an arbitrary number of clients to
3340
be notified when an event occurs.  For the moment, we only use it to notify
3341
PDF writers when a font is about to be freed.  (gsnotify.h, gsnotify.c)
3342
 
3343
Makes fonts use the new notification mechanism to notify clients when the
3344
font is about to be freed.  (gxfont.h, gsfont.c)
3345
 
3346
Adds a gs_text_set_cache procedure to parallel restart and retry.
3347
(gstext.h, gxtext.h, gstext.c)
3348
 
3349
Adds a glyph_space argument to the font encode_char and enumerate_glyph
3350
procedures, so that clients can choose between glyph names and glyph indices
3351
in environments that use both.  (gsccode.h, gxchar.h, gxfont.h, gxfont42.h,
3352
gsfont.c, gstype42.c, gxchar.c)
3353
 
3354
Changes the bbox device so it optionally considers white to be opaque.
3355
(gdevbbox.h, gdevbbox.c)
3356
 
3357
Cleans up some code details.  (gshsb.h)
3358
 
3359
Adds a hack to suppress warning messages from the Watcom compiler about
3360
testing constant values.  (stdpre.h)
3361
 
3362
Replaces the glyph_pieces font procedure with a GLYPH_INFO_PIECES option for
3363
glyph_info.  (gxfont.h, gxfont42.h, gsfont.c, gstype42.c)
3364
 
3365
Adds a font_info font procedure, similar to glyph_info but giving
3366
information about the font as a whole.  (gxfont.h)
3367
 
3368
In order to fix a bug in resizing large objects, gets rid of the concept of
3369
large objects entirely, replacing it with the concept of an 'alone' object
3370
that is guaranteed to be the only object in its chunk.  (gxalloc.h, gxobj.h,
3371
gsalloc.c)
3372
 
3373
Adds some more tracing output for interpolated images.  (gxiscale.c)
3374
 
3375
Adds a _long parameter setting procedure to parallel _bool, _enum, and _int.
3376
(gsparamx.h, gsparamx.c)
3377
 
3378
</pre>
3379
 
3380
<hr>
3381
 
3382
<h2><a name="Version5.87"></a>Version 5.87 (tester) (6/29/99)</h2>
3383
 
3384
<p>
3385
In this fileset, the pdfwrite device finally handles general Type 1 fonts,
3386
and can write them in both embedded and non-embedded form.  This fileset
3387
also contains a few more changes to the text API, and some incompatible
3388
changes to the gs_font procedure vector: more such changes are likely.  It
3389
also fixes a couple of long-standing pdfmark bugs.
3390
 
3391
<p>
3392
NOTE: there are known problems in PDF output with non-embedded fonts (fonts
3393
represented only by a descriptor): some characters will be missing, and
3394
because of bugs in Acrobat's Print function, even more characters will be
3395
missing or wrong when printing from Acrobat.  We will fix our problems, and
3396
work around Acrobat's bugs, in the next couple of filesets.
3397
 
3398
<h3><a name="5.87_Incompatible_changes"></a>Incompatible changes</h3><pre>
3399
 
3400
(Library)
3401
	- Text enumerators now have a release procedure.
3402
	- gx_device_text_begin no longer stores its arguments into the
3403
enumerator: the driver text_begin procedure must do this.
3404
	- The argument list for the font encode_char procedure no longer
3405
includes the enumerator, and the second argument is now a gs_char rather
3406
than a gs_char *.
3407
	- The font next_char procedure is removed.  (It has been obsolete
3408
for a while.)  The next_glyph procedure is renamed next_char_glyph.
3409
	- The first argument of the font init_fstack, build_char, and
3410
next_glyph procedures is changed from gs_show_enum * to gs_text_enum_t *.
3411
	- gx_font_stack[_item] is renamed gx_font_stack[_item]_t.
3412
	- New font procedures have been added, of which two (enumerate_glyph
3413
and glyph_outline) are required.  The font procedure vector has been
3414
reorganized.
3415
	- The Type 1 font next_glyph procedure is replaced by the gs_font
3416
enumerate_glyph procedure.
3417
	- psdf_embed_type1_font is renamed psdf_write_type1_font, and has
3418
an additional argument.
3419
	- psdf_alloc_param_printer takes slightly different arguments;
3420
print_binary_ok and print_ASCII85_ok are now upper-case.
3421
 
3422
</pre><h3><a name="5.87_Documentation"></a>Documentation</h3><pre>
3423
 
3424
Reorganizes the driver API documentation slightly, documents the fact that
3425
get_alpha_bits and draw_line are obsolete, and documents the driver text
3426
API.  (doc/Drivers.htm)
3427
 
3428
Documents an additional Irix configuration where the compiler doesn't work.
3429
(doc/Make.htm)
3430
 
3431
</pre><h3><a name="5.87_Procedures"></a>Procedures</h3><pre>
3432
 
3433
Moves the %pipe% IODevice into lib.mak, since it is now included on Windows
3434
as well as Unix.  (lib.mak, unix-aux.mak)
3435
 
3436
Adds the bmpgray driver to all platforms that include the other BMP drivers.
3437
(bcwin32.mak, msvc32.mak, os2.mak, unix-gcc.mak, watc.mak, watcw32.mak)
3438
 
3439
</pre><h3><a name="5.87_Drivers"></a>Drivers</h3><pre>
3440
 
3441
Fixes problems:
3442
	- The PS and PDF writers didn't maintain the font embedding lists
3443
correctly.  (gdevpsdp.c)
3444
	- The CreationDate in PDF output was always set to the current date,
3445
and couldn't be set with a pdfmark.  We now don't set CreationDate at all,
3446
since it is supposed to be the creation date of the original document, not
3447
of the PDF file.  (gdevpdfm.c, gdevpdfu.c)
3448
	- The Producer in PDF output couldn't be set with a pdfmark.
3449
(gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfu.c)
3450
	- pdfmarks with /Action /GoTo incorrectly retained the Action key.
3451
(gdevpdfm.c)
3452
	- pdfmarks didn't substitute /Dest => /D or /File => /F correctly.
3453
(gdevpdfm.c)
3454
 
3455
Updates the PDF writer to use the new text API rather than the show
3456
pseudo-parameter.  (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
3457
 
3458
Changes pdf_open_document so that it opens the document even if some
3459
resources have been allocated.  (gdevpdf.c)
3460
 
3461
Splits off pdfwrite utilities from top-level control, since the file was
3462
getting too big.  (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
3463
 
3464
When writing PDF, avoids resetting the word spacing parameter if the string
3465
doesn't contain any spaces, and the character spacing parameter if the
3466
string has no more than 1 character.  (gdevpdft.c)
3467
 
3468
Splits off PDF font handling from text handling, since the file was getting
3469
too big.  (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
3470
 
3471
Implement both embedded and non-embedded fonts beyond the base 14 in the PDF
3472
writer.  This code doesn't work very reliably yet.  (gdevpdfx.h, gdevpdff.c,
3473
gdevpdft.c)
3474
 
3475
Adds a bmpgray driver that produces 8-bit gray-scale output.  (devs.mak,
3476
gdevbmp.c)
3477
 
3478
Updates the PDF writer for changes in the gs_font procedure vector.
3479
(gdevpdff.c, gdevpdft.c)
3480
 
3481
Updates the Type 1 font writer for changes in the gs_font procedure vector,
3482
and adds some output options.  (gdevpsdf.h, gdevpsde.c)
3483
 
3484
Changes the printing parameter list implementation to take all of its
3485
parametric arguments in the params structure, and changes the names of the
3486
options.  (gdevpsdf.h, gdevpsde.c, gdevpsdf.c, gdevpdff.c, gdevpdfi.c,
3487
gdevpdfu.c)
3488
 
3489
</pre><h3><a name="5.87_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3490
 
3491
Fixes problems:
3492
	- Indexed color spaces didn't allow the base space to be an indirect
3493
reference.  (lib/pdf_draw.ps)
3494
	- The CS and cs operators didn't accept a literal color space name
3495
(as opposed to a color space resource name).  (lib/pdf_draw.ps)
3496
	- Some PDF 1.2 files had a SM entry in graphics state dictionaries,
3497
even though this is not documented and requires a LL3 interpreter.
3498
(lib/pdf_draw.ps)
3499
	- Generated font names included a % character, which could cause
3500
problems for ps2pdf.  (lib/pdf_font.ps)
3501
 
3502
</pre><h3><a name="5.87_Interpreter"></a>Interpreter</h3><pre>
3503
 
3504
Fixes problems:
3505
	- The calculation of the final index when enumerating the pointers
3506
in a context state was incorrect.  (source bug only, no effect on execution)
3507
(icontext.c)
3508
 
3509
Updates the interpreter's glue code for the changes in the PDF writer.
3510
(lib/gs_pdfwr.ps)
3511
 
3512
Updates a client to use gs_font_alloc.  (zbfont.c)
3513
 
3514
Updates clients for changes in the gs_font procedure vector.  (zbfont.c,
3515
zchar1.c, zfont0.c, zfont1.c, zfont32.c)
3516
 
3517
Updates a client for the change to psdf_write_type1_font.  (zfont1.c)
3518
 
3519
</pre><h3><a name="5.87_Library"></a>Library</h3><pre>
3520
 
3521
Fixes problems:
3522
	- Some code used rc_decrement_only instead of gx_device_retain.
3523
(Stylistic bug only.)  (gschar.c)
3524
	- The finalize procedure for the character cache device could get
3525
unset and/or the retained flag cleared, leading to a reference count not
3526
getting decremented.  (gxccman.c)
3527
	- Allocating a show enumerator didn't clear the show_gstate member.
3528
(Probably no effect in practice.)  (gschar.c)
3529
	- Cleaning up at the end of text processing was not consistent and
3530
sometimes didn't get done. The old API used explicit and separate client
3531
allocation (gs_show_enum_alloc), release (gs_show_enum_release), and freeing
3532
(gs_free_object); release, but not free, was automatic at the end of
3533
processing (in show_finish).  The new API has allocation in gs_text_begin or
3534
gx_device_text_begin, no implicit release or free, and a single
3535
gs_text_release call to handle both release and free.  Reconciling these
3536
required adding an auto_release flag in the gs_show_enum structure to
3537
indicate which API was used to create it, and a release procedure.  (The
3538
auto_release flag is only needed for backward compatibility with clients
3539
that use the old API.  Ghostscript itself no longer has such clients, but
3540
the PCL interpreters do.)  (gxchar.h, gxtext.h, gdevbbox.c, gschar.c,
3541
gstext.c, gxchar.c)
3542
	- We were burned once again by gcc's acceptance of private/public
3543
procedure mismatches.  (gxchar.c)
3544
	- A line break was missing between the return type and a procedure
3545
name.  (gsstate.c)
3546
	- Show enumerators had an incorrect GC descriptor.  (gxchar.c)
3547
	- Text enumerators didn't terminate their list properly.  (gstext.c)
3548
 
3549
Adds a debugging procedure that finds all the pointers to an object.  This
3550
uses the GC's pointer enumeration procedures, so it will only work if all
3551
structures have correct GC descriptors.  (Of course, we think this is true
3552
of all of Ghostscript.)  The current implementation doesn't trace refs.
3553
(gsalloc.c)
3554
 
3555
Removes remaining references from gxchar.c to procedures defined in
3556
gschar.c.  The standard Ghostscript build now no longer needs gschar.c,
3557
although we will keep it for the moment for backward compatibility.
3558
(gschar.c, gxchar.c)
3559
 
3560
Removes an obsolete reference to gs_show_enum.  (gstype1.h)
3561
 
3562
Adds definitions for the built-in encoding indices.  (gsccode.h, gxfont.h,
3563
gxxfont.h)
3564
 
3565
To make text_begin implementations callable, requires them, rather than
3566
gx_device_text_begin, to save their parameters in the enumerator structure.
3567
(gxtext.h, gstext.c, gxchar.c)
3568
 
3569
Adds a TEXT_DO_CHARWIDTH alternative to the text operation, to just advance
3570
the current point by the character width (stringwidth rmoveto).  (gscpm.h,
3571
gstext.h, gxchar.c, gxpath.c)
3572
 
3573
Adds procedures to allocate and initialize fonts.  (gxfont.h, gsfont.c)
3574
 
3575
Starts to revise the gs_font procedure vector to create a real "font socket"
3576
API, adding several new procedures.  This is a NON-BACKWARD-COMPATIBLE
3577
change, and there probably are more to come.  (gxchar.h, gxfont.h, gsfont.c,
3578
gstext.c, gxchar.c)
3579
 
3580
Moves the Type 0 font stack from gs_show_enum to gs_text_enum_t, and renames
3581
its types to gx_font_stack_[item_]t.  Also moves cmap_code.  (gxchar.h,
3582
gxtext.h, gschar0.c, gstext.c, gxchar.c)
3583
 
3584
Moves the glyph enumeration procedure from Type 1 fonts to general fonts,
3585
changing its name to enumerate_glyph.  (gxfont1.h)
3586
 
3587
Changes the debugging code for reference counting to call procedures, to
3588
allow better breakpointing.  (gsrefct.h, gsmemory.c)
3589
 
3590
</pre>
3591
 
3592
<hr>
3593
 
3594
<h2><a name="Version5.86"></a>Version 5.86 (tester) (6/14/99)</h2>
3595
 
3596
<p>
3597
This fileset includes the first batch of changes for the new driver-based
3598
text API.  Unfortunately, a few of them are non-backward-compatible.
3599
WARNING: This API is UNSTABLE and should not be used yet.  This includes the
3600
APIs and structures in gxtext.h, and to a lesser extent those in gstext.h.
3601
 
3602
<h3><a name="5.86_Incompatible_changes"></a>Incompatible changes</h3><pre>
3603
 
3604
(Interpreter)
3605
	- The default initialization of fonts now sets next_glyph rather
3606
than next_char.
3607
(Library)
3608
	- The font argument of the driver text_begin procedure is no
3609
longer declared as const.
3610
	- Text enumerators now have a is_width_only and current_width
3611
procedures; the restart procedure is renamed retry, and there is a new
3612
restart procedure that does something different.
3613
	- The scale member of gs_text_enum_t is renamed log2_scale.
3614
	- gs_show_restore_font is removed.
3615
	- The current_char, current_glyph, width, and log2_current_scale
3616
members of gs_show_enum are removed (replaced by members of gs_text_enum_t).
3617
	- The current_width member of gs_text_enum_t is removed.
3618
	- Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single
3619
TEXT_REPLACE_WIDTHS.
3620
 
3621
</pre><h3><a name="5.86_Documentation"></a>Documentation</h3><pre>
3622
 
3623
Fixes a number of outdated URLs.  (doc/Devices.htm, doc/Fonts.htm,
3624
doc/Install.htm, doc/Language.htm, doc/Make.htm, doc/New-user.htm)
3625
 
3626
Documents the name change from gs_iso_e.ps to gs_il1_e.ps.
3627
(doc/Psfiles.htm)
3628
 
3629
Documents the fact that a double % may be needed on MS systems.
3630
(doc/Use.htm)
3631
 
3632
Documents that reversepath discards a trailing moveto, for compatibility
3633
with Adobe implementations.  (gxpath2.c)
3634
 
3635
</pre><h3><a name="5.86_Procedures"></a>Procedures</h3><pre>
3636
 
3637
Fixes problems:
3638
	- Some punctuation was omitted that affects builds on VMS systems.
3639
(gs.mak)
3640
	- 'make install' didn't install doc/History5.htm.  (unixinst.mak)
3641
	- The Borland makefile put some generated files in the top-level
3642
directory rather than the build directory.  (bcwin32.mak)
3643
 
3644
Updates the Unix install script for the name change of gs_iso_e.ps.
3645
(unixinst.mak)
3646
 
3647
Moves the GNU-licensed drivers to a separate makefile.  (contrib.mak,
3648
gnu/src/gnudevs.mak)
3649
 
3650
Adds pipe.dev to the BC++, MSVC++, and OS/2 (GCC/EMX) platforms.
3651
(bcwin32.mak, dvx-gcc.mak, msvc32.mak, msvclib.mak)
3652
 
3653
</pre><h3><a name="5.86_Utilities"></a>Utilities</h3><pre>
3654
 
3655
Fixes problems: - The usage message for pdf2ps was incorrect.  (lib/pdf2ps,
3656
	lib/pdf2ps.bat)
3657
 
3658
</pre><h3><a name="5.86_Drivers"></a>Drivers</h3><pre>
3659
 
3660
Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
3661
and RELOC_PTRS procedures.  (gdevpdf.c, gdevpdfo.c)
3662
 
3663
Adds a user-contributed driver for the Oki Data OkiPage 4w+ LED printer.
3664
This is a GPL'ed driver.  (contrib.mak, gnu/src/gdevop4w.c)
3665
 
3666
</pre><h3><a name="5.86_Platforms"></a>Platforms</h3><pre>
3667
 
3668
Adds a %handle% IODevice (mshandle.dev) to recognize file names of the form
3669
%handle%NNNNNNNN under MS Windows.  GSview uses this feature in place of
3670
pipes, which are an open industry standard not supported by MS Windows.
3671
(msvc32.mak, winlib.mak, gp_mshdl.c)
3672
 
3673
</pre><h3><a name="5.86_Fonts"></a>Fonts</h3><pre>
3674
 
3675
Adds the ISO 8859-2 encoding to the stock of built-in encodings.
3676
(lib/gs_il2_e.ps, lib/gs_iso_e.ps => lib/gs_il1_e.ps)
3677
 
3678
</pre><h3><a name="5.86_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3679
 
3680
Fixes problems:
3681
	- Using a colored pattern with an uncolored Pattern color space
3682
caused an error.  (lib/pdf_draw.ps)
3683
	- Embedded CIDFontType 2 fonts didn't work, and embedded TrueType
3684
fonts did an extra definefont.  (lib/gs_ttf.ps, lib/pdf_font.ps,
3685
lib/pdf_ops.ps) ****** IN PROGRESS ******
3686
 
3687
</pre><h3><a name="5.86_Interpreter"></a>Interpreter</h3><pre>
3688
 
3689
Fixes problems:
3690
	- Some files hadn't been updated for the removal of the gs_imemory
3691
static.  (int.mak, gp_gnrdl.c, imain.c, ztrap.c)
3692
	- %statementedit could append a spurious character if the last
3693
character of the statement was not whitespace.  (bug probably introduced in
3694
5.8x) (ziodev.c)
3695
	- The show operators didn't properly handle the special case of
3696
executing within a cshow procedure for a non-CID font.  (zchar.c)
3697
	- cshow applied to a composite font didn't scale the current font
3698
correctly (in fact, at all).  (zcfont.c)
3699
	- If an error occurred within the procedure called by
3700
resourceforall, it wasn't reported.  (lib/gs_res.ps)
3701
	- flushfile and closefile didn't correctly handle filters that only
3702
write a fixed amount of data.  (zfileio.c)
3703
	- cshow didn't restore the font reliably after executing the
3704
procedure.  (ichar.h, zcfont.c, zchar.c)
3705
	- An execstackoverflow error might temporarily leave the execution
3706
stack in an invalid state.  (interp.c)
3707
 
3708
Cleans up some macros.  (iname.c, isave.c, iscan.c)
3709
 
3710
Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
3711
and RELOC_PTRS procedures.  (icontext.c, iname.c, isave.c, iscan.c,
3712
istack.c, zcontext.c, zfproc.c)
3713
 
3714
Adds a run-time warning message if gp_gnrdl.c is included in a non-GNU
3715
build.  (gp_gnrdl.c)
3716
 
3717
Converts clients to use the gs_text procedures that replace the gs_show
3718
procedures, and to use gs_text_enum_t rather than gs_show_enum as the
3719
enumerator type.  (ichar.h, zbfont.c, zcfont.c, zchar.c, zchar1.c,
3720
zchar32.c, zchar42.c, zcharout.c, zcharx.c, zfont.c, zfont0.c, zfont1.c,
3721
zfont32.c, zimage.c, zimage2.c)
3722
 
3723
Updates the initialization code for the name change of gs_iso_e.ps.
3724
(lib/gs_init.ps)
3725
 
3726
Splits off the definitions relating to name indices, in anticipation of
3727
defining some name indices statically.  (inamedef.h, inameidx.h, iname.c)
3728
 
3729
</pre><h3><a name="5.86_Streams"></a>Streams</h3><pre>
3730
 
3731
Fixes problems:
3732
	- The pixel-difference filters didn't initialize the previous sample
3733
to 0 at the beginning of each row.  (spdiff.c)
3734
	- The CCITTFaxDecode filter didn't correctly handle the case where
3735
the last code of a row occurred less than 7 or 8 bits before the end of the
3736
input stream.  (scf.h, shc.h, scfd.c)
3737
	- Flushing filters didn't work.  (stream.c)
3738
	- The DCTEncode filter gave an error if asked to write to a string
3739
with less than 100 bytes of free space left when the end of the input data
3740
was reached.  (sdct.h, sdcte.c)
3741
 
3742
Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
3743
and RELOC_PTRS procedures.  (stream.c)
3744
 
3745
Changes the ASCII85Encode stream to reliably insert a newline at least once
3746
every 80 characters, rather than unreliably after at most 80 characters of
3747
data.  (sfilter2.c)
3748
 
3749
Cleans up some formatting.  (stream.c)
3750
 
3751
</pre><h3><a name="5.86_Library"></a>Library</h3><pre>
3752
 
3753
Fixes problems:
3754
	- A client wasn't updated for the change in the declaration of
3755
gx_dht_proc.  (bug introduced in 5.84) (genht.c)
3756
	- When rendering a 12-bit-per-sample color image, the device color
3757
wasn't initialized, possibly causing a memory access error when comparing
3758
the current color with the previous one.  (gxi12bit.c)
3759
	- arch_floats_are_IEEE was incorrectly defined as
3760
arch_floats_are_ieee.  (bug introduced in 5.83) (std.h)
3761
	- Decoding of IEEE floats on non-IEEE systems was wrong.  (ibnum.c)
3762
	- The fast case of masked images in Pattern color spaces didn't
3763
work.  (bug introduced since 5.50) (gxifast.c)
3764
	- cshow gave an error if there was no current point.  (gxchar.c)
3765
 
3766
Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single TEXT_REPLACE_WIDTHS.
3767
(gstext.h, gstext.c)
3768
 
3769
Cleans up some macros.  (gdevddrw.c, gsfont.c, gsht1.c)
3770
 
3771
Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
3772
and RELOC_PTRS procedures.  (gdevddrw.c, gdevplnx.c, gsalloc.c, gschar.c,
3773
gscolor.c, gscolor2.c, gscrd.c, gscsepr.c, gscspace.c, gsdevice.c, gsdsrc.c,
3774
gsfcmap.c, gsfont.c, gsfont0.c, gsht1.c, gshtscr.c, gsimage.c, gspcolor.c,
3775
gsptype1.c, gsstate.c, gstext.c, gxcmap.c, gxht.c, gxipixel.c, gxmclip.c,
3776
gxtype1.c)
3777
 
3778
Adds gs_c_param_list_write_more, to switch a C parameter list back to write
3779
mode without clearing it.  (gsparam.h, gscparam.c)
3780
 
3781
Adds gs_grestore_only, to do a grestore without requiring 2 entries on the
3782
graphics state stack.  (gsstate.h, gsstate.c)
3783
 
3784
Completes a first bridge between the new driver text_begin procedure and the
3785
existing text API defined in gschar.h.  The changes are backward-compatible
3786
for both clients of the APIs and (the few) implementors of text_begin,
3787
except that the font argument of text_begin is no longer const.  Note that
3788
gschar.h is no longer used by any client, and in fact is deprecated.
3789
(gschar.h, gstext.h, gxfcache.h, gxtext.h, gzstate.h, gdevbbox.c,
3790
gdevnfwd.c, gschar.c, gsfont.c, gsfont0.c, gstext.c)
3791
 
3792
Mostly splits off the existing text procedures from the default
3793
implementation of the new text facilities.  (lib.mak, gxchar.h, gschar.c,
3794
gxchar.c)
3795
 
3796
Makes the structure descriptor for gs_state public, for testing in gxchar.c.
3797
(gzstate.h, gsstate.c)
3798
 
3799
Adds is_width_only and current_width procedures to the text enumerator;
3800
renames restart as retry, and adds a restart procedure for restarting with
3801
different parameters.  (gstext.h, gxtext.h, gdevbbox.c, gschar.c, gstext.c,
3802
gxchar.c)
3803
 
3804
Makes the masks for the subgroups of text operation parameters public.
3805
(gstext.h)
3806
 
3807
Removes members of gs_show_enum that are superseded by members of
3808
gs_text_enum_t: current_char, current_glyph, width, and log2_current_scale.
3809
(gxchar.h, gxchar.c)
3810
 
3811
Adds aliases for popen and pclose under WIN32.  (pipe_.h)
3812
 
3813
Moves gs_incachedevice from gschar.h to gsstate.h.  (gschar.h, gsstate.h)
3814
 
3815
</pre>
3816
 
3817
<hr>
3818
 
3819
<h2><a name="Version5.85"></a>Version 5.85 (tester) (5/29/99)</h2>
3820
 
3821
<p>
3822
This fileset removes a few more writable statics, and adds uniform support
3823
for %filedevice%filename syntax in OutputFile.  Unfortunately, removing the
3824
static that held the interpreter's allocator group was almost as much of an
3825
upheaval as removing the statics for the interpreter stacks.
3826
 
3827
<h3><a name="5.85_Incompatible_changes"></a>Incompatible changes</h3><pre>
3828
 
3829
(Interpreter)
3830
	- context_state_alloc now takes an additional parameter, as do
3831
obj_cvp, make_packed_array, parse_real_file_name, ref_stack_store,
3832
sread/write_proc, terminate_file_name, and a number of other internal
3833
interpreter procedures.
3834
	- scan_number now does not mark the result as new.
3835
	- The _param_list_read/write procedures now take an additional
3836
gs_ref_memory_t * parameter.
3837
	- It is no longer possible to store pointers to the interpreter's
3838
allocator group (gs_dual_memory_t) in structures or variables across a
3839
garbage collection.
3840
	- The save_level instance variable is moved from gs_dual_memory_t
3841
to gs_ref_memory_t.
3842
	- op_show_finish_setup can now fail.
3843
	- fname.h is renamed gsfname.h; the procedure names and parameters
3844
for %device%name file names are changed.
3845
	- gx_imager_stroke_add now takes an additional argument; a NULL
3846
value for the device argument of gx_stroke_path_only is no longer valid.
3847
	- gx_make_clip_translate_device now takes a memory parameter, and no
3848
container parameter; gx_make_clip_device no longer takes a container
3849
parameter; gx_mask_clip_initialize and tile_clip_initialize now take a
3850
memory parameter.
3851
 
3852
</pre><h3><a name="5.85_Documentation"></a>Documentation</h3><pre>
3853
 
3854
Fixes problems:
3855
	- The language documentation still referred to outside clipping.
3856
(doc/Language.htm)
3857
 
3858
Documents the new curve join graphics state parameter.  (doc/Language.htm)
3859
 
3860
Documents the fact that the OutputFile device parameter now supports the
3861
%device%file syntax.  (gp.h, doc/Use.htm)
3862
 
3863
Documents the licensing problems related to GNU readline.  (int.mak,
3864
unix-gcc.mak, gp_gnrdl.c)
3865
 
3866
</pre><h3><a name="5.85_Procedures"></a>Procedures</h3><pre>
3867
 
3868
Fixes problems:
3869
	- The bmpa devices needed gdevppla.  (bug introduced in 5.84)
3870
(devs.mak)
3871
	- The bmpa devices were accidentally included in the DEVICE_DEVS
3872
setting in the distributed fileset.  (unix-gcc.mak)
3873
	- msvclib.mak was missing some definitions.  (msvclib.mak)
3874
 
3875
Adds a CC_NO_WARN macro for those few files that produce tons of warnings
3876
that we can't work around.  (bcwin32.mak, dvx-gcc.mak, msvccmd.mak,
3877
openvms.mak, openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
3878
unixtrad.mak, watcw32.mak, wccommon.mak, devs.mak, lib.mak, zlib.mak)
3879
 
3880
Adds version.mak to msvclib.mak, so library clients can track the version.
3881
(msvclib.mak)
3882
 
3883
</pre><h3><a name="5.85_Utilities"></a>Utilities</h3><pre>
3884
 
3885
Fixes problems:
3886
	- -replace didn't work if it was the last item of a module
3887
description.  (genconf.c)
3888
 
3889
</pre><h3><a name="5.85_Drivers"></a>Drivers</h3><pre>
3890
 
3891
Fixes problems:
3892
	- CCITTFax-compressed bitmaps sometimes used both a Rows value and
3893
an end-of-block indicator, which some PostScript implementations don't
3894
handle properly.  (gdevpsdf.h, gdevps.c, gdevpsdf.c)
3895
 
3896
Removes an unused procedure and macro.  (gdevlj56.c)
3897
 
3898
</pre><h3><a name="5.85_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3899
 
3900
Fixes problems:
3901
	- The interpreter cached objects even if the reference had the wrong
3902
generation number, causing errors if a correct reference occurred later.
3903
(lib/pdf_base.ps)
3904
	- Embedded TrueType fonts using the Macintosh encoding sometimes
3905
caused an error.  (lib/gs_ttf.ps)
3906
 
3907
</pre><h3><a name="5.85_Interpreter"></a>Interpreter</h3><pre>
3908
 
3909
Fixes problems:
3910
	- Multiple contexts were broken (probably since 5.80).  Fixing this
3911
required adding a parameter to context_state_alloc, to provide systemdict.
3912
(icontext.h, icontext.c, interp.c)
3913
	- setpagedevice didn't accept the 4-element PageSize values that
3914
appear in the InputAttributes dictionary.  (zmedia2.c)
3915
	- BuildChar/BuildGlyph was "short circuited" even in some cases
3916
where it wasn't safe to do so.  (ichar.h, zchar.c, zcharout.c)
3917
	- The show operators didn't properly handle the special case of
3918
executing within a cshow procedure.  (ichar.h, zcfont.c, zchar.c, zcharx.c)
3919
	- The -dDOINTERPOLATE switch had gotten broken somehow.
3920
(lib/gs_init.ps)
3921
	- The is_identity flag wasn't properly cleared when loading cached
3922
CIE mapping values, causing incorrect output.  (zcie.c)
3923
 
3924
Removes the writable static for the context scheduler.  (zcontext.c)
3925
 
3926
Removes the writable static for the interpreter's group of allocators
3927
(gs_imemory).  This too turned out to be a massive change with many
3928
NON-BACKWARD-COMPATIBLE changes required in internal procedures.  (bfont.h,
3929
files.h, fname.h, ialloc.h, ifunc.h, imemory.h, interp.h, iparam.h,
3930
iparray.h, ipcolor.h, isave.h, iscannum.h, istack.h, istream.h, iutil.h,
3931
store.h, ialloc.c, icontext.c, idebug.c, idict.c, iinit.c, imain.c,
3932
imainarg.c, interp.c, iparam.c, ireclaim.c, isave.c, iscan.c, iscanbin.c,
3933
iscannum.c, isstate.h, istack.c, iutil.c, zarray.c, zbfont.c, zcontext.c,
3934
zdict.c, zfname.c, zdps.c, zdps1.c, zfcmap.c, zdict.c, zfile.c, zfilter.c,
3935
zfont.c, zfont0.c, zfproc.c, zfreuse.c, zfunc.c, zfunc0.c, zfunc3.c,
3936
zgeneric.c, zht2.c, ziodev.c, ziodev2.c, zpacked.c, zpcolor.c, zshade.c,
3937
zupath.c, zvmem.c)
3938
 
3939
Adds a gs_memory_t * argument to obj_cvp.  This is part of the work for
3940
removing the gs_imemory static: we note it separately because it affects
3941
code beyond the interpreter.  (iutil.h, gp_gnrdl.c, iutil.c, zfileio.c)
3942
 
3943
Updates interpreter code for the addition of new_mask, test_mask, and
3944
save_level to gs_ref_memory_t, and the removal of save_level from
3945
gs_dual_memory_t.  (ialloc.h, ialloc.c, isave.c)
3946
 
3947
Adds a gs_ref_memory_t * argument to all the _param_list_read/write
3948
procedures.  (iparam.h, iparam.c, zcrd.c, zdevice.c, zfdctd.c, zfdcte.c,
3949
zfdecode.c, zfilter2.c, ziodev2.c, zusparam.c)
3950
 
3951
Changes the hack in file_alloc_stream that determines whether a gs_memory_t
3952
* is actually a gs_ref_memory_t *.  The former code tested specifically
3953
whether the allocator was one of the current interpreter allocators; the new
3954
code simply tests the procedure vector.  We aren't 100% sure that this
3955
change will work reliably.  (zfile.c)
3956
 
3957
Factors common code out of isave.h and store.h.  (idosave.h, isave.h,
3958
store.h)
3959
 
3960
Removes the reclaim_data member of gs_dual_memory_t, since it is no longer
3961
useful.  (imemory.h, ialloc.c, ireclaim.c)
3962
 
3963
Makes the default InputAttributes and OutputAttributes elements of page
3964
device dictionaries writable and (if possible) allocated in local VM, to
3965
work around bugs in the output of Word Perfect.  (lib/gs_setpd.ps)
3966
 
3967
Modifies the interpreter's error printout to indicate whether dictionaries
3968
on the stack(s) are writable.  (lib/gs_init.ps)
3969
 
3970
Moves support for %device%name file naming into the library.  (fname.h,
3971
zfile.c, zfname.c [deleted])
3972
 
3973
Adds interpreter support for the new curve join graphics state parameter.
3974
(zgstate.c)
3975
 
3976
</pre><h3><a name="5.85_Library"></a>Library</h3><pre>
3977
 
3978
Fixes problems:
3979
	- bbox_fill_path device didn't interact with compositors correctly.
3980
(This problem had no practical effect.)  (gdevbbox.c)
3981
	- kshow didn't check for CID fonts.  (gschar.c)
3982
	- The bbox and ImageType 3 image enumerators had incorrect GC
3983
descriptors, possibly causing memory-related crashes.  (gsstruct.h,
3984
gdevbbox.c, gximage3.c)
3985
	- gx_make_clip_[translate_]device took an obsolete container
3986
parameter.  (gxcpath.h, gsshade.c, gxccache.c, gxfill.c, gxstroke.c)
3987
	- Non-transient clipping devices were used for image clipping, but
3988
the API didn't support creating them.  (gxcpath.h, gxclip.c, gximage3.c,
3989
gxipixel.c)
3990
	- Some devices were created without setting their memory member,
3991
which caused the GC not to trace pointers to them.  (gxmclip.h, gxclip2.h,
3992
gxclip2.c, gximage3.c, gxmclip.c, gxp1fill.c)
3993
	- The bbox device didn't handle ImageType 3 images correctly.
3994
(gdevbbox.c)
3995
	- When the bbox device passed a stroke operation to the library, it
3996
didn't pass the device, causing absolute-length dots to render incorrectly.
3997
Fixing this required adding a device parameter to the gx_imager_stroke_add
3998
procedure.  (gxpaint.h, gdevbbox.c, gxpaint.c)
3999
	- The counter control OtherSubrs (12 and 13) weren't implemented.
4000
(This probably had no effect.)  (gstype1.c)
4001
	- Type 1 stem hints with negative widths didn't work properly.
4002
(gxhint2.c)
4003
	- The debugging output for hintmask and cntrmask printed the vstem
4004
and hstem counts in the wrong order.  (gstype2.c)
4005
	- If the value of the OutputFile device parameter was too long,
4006
the result could be memory corruption rather than a rangecheck error.
4007
(gsdevice.c)
4008
	- The dash pattern pointer in the saved imager state of a band list
4009
writer could point inside the writer structure, confusing the garbage
4010
collector.  (gxclist.h, gxclpath.c)
4011
 
4012
Adds new_mask, test_mask, and save_level instance variables to
4013
gs_ref_memory_t.  This too is part of the gs_imemory work: we note it
4014
separately because it is the only piece of this work that affects the
4015
library.  (gxalloc.h, gsalloc.c)
4016
 
4017
Makes cntrmask at the beginning of a charstring act like vstemhm + cntrmask,
4018
as with hintmask.  This is not documented, but we see it used this way in
4019
Type 2 CharStrings.  (gstype2.c)
4020
 
4021
Cleans up formatting and macros.  (gp.h)
4022
 
4023
Speeds up the bounding box device by skipping path filling if the entire
4024
path falls within the already-accumulated bounding box, and by defining the
4025
device as 8-bit gray to avoid halftone computation.  (gdevbbox.c)
4026
 
4027
Adds a procedure, gs_show_use_glyph, for implementing the show-in-cshow
4028
hack.  (gschar.h, gschar.c)
4029
 
4030
Moves support for %device%file file naming into the library.  (lib.mak,
4031
gsfname.h, gxiodev.h, gdevpipe.c, gsfname.c)
4032
 
4033
Makes the OutputFile device parameter recognize %device%file syntax, as well
4034
as "-" and (on platforms that support pipes) |command.  (gp.h, gxdevice.h,
4035
gdevprn.c, gsdevice.c, gp_unix.c)
4036
 
4037
Adds a separate graphics state parameter to indicate how to treat joins
4038
between segments of a flattened curve, for compatibility with Adobe
4039
interpreters (which apparently always use bevel joins).  (gsline.h,
4040
gxclpath.h, gxline.h, gsline.c, gsstate.c, gxclpath.c, gxclrast.c,
4041
gxstroke.c)
4042
 
4043
Changes code slightly, introducing an unnecessary assignment, in order to
4044
suppress a compiler warning.  (gxclpath.c)
4045
 
4046
Tweaks the CIE_LOAD_CACHE_BODY macro slightly.  (gscie.c)
4047
 
4048
</pre>
4049
 
4050
<hr>
4051
 
4052
<h2><a name="Version5.84"></a>Version 5.84 (tester) (5/19/99)</h2>
4053
 
4054
<p>
4055
This fileset completes the implementation of planar rendering, and fixes a
4056
few more bugs, some of them surprisingly old.
4057
 
4058
<h3><a name="5.84_Incompatible_changes"></a>Incompatible changes</h3><pre>
4059
 
4060
(Drivers)
4061
	- The dopath vector device implementation procedure was changed to
4062
take an optional matrix argument.
4063
(Library)
4064
	- The internal memory__need_ macros are changed to upper case.
4065
 
4066
</pre><h3><a name="5.84_Procedures"></a>Procedures</h3><pre>
4067
 
4068
Fixes problems:
4069
	- There was a duplicate entry for GENINIT_XE in the Watcom makefile.
4070
(wctail.mak)
4071
 
4072
Adds the duplex-capable LaserJet drivers (ljet3d and ljet4d) to all standard
4073
configurations.  (bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak,
4074
openvms.mmk, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak,
4075
watcw32.mak)
4076
 
4077
Adds a PROFILE compilation switch, similar to DEBUG, to work around the fact
4078
that gprof under Linux doesn't count time in memset, memcpy, or other C
4079
library procedures.  PROFILE will substitute our own versions of memset,
4080
memcpy, and memmove.  Currently, this switch is supported only on Unix.
4081
(unix-end.mak)
4082
 
4083
Defines a new makefile macro, SYNC, that gives the module name for thread /
4084
synchronization facilities; makes async.dev include this module.  This is
4085
posync on Unix and VMS platforms, winsync on MS Windows and OS/2 platforms.
4086
(bcwin32.mak, dvx-gcc.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
4087
openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
4088
watc.mak, watclib.mak, watcw32.mak)
4089
 
4090
Splits off the rules common to the 3 Windows makefiles (watc, watclib,
4091
winlib) into a separate file, defining new modules winplat.dev and
4092
winsync.dev.  (watc.mak, watclib.mak, winlib.mak, winplat.mak)
4093
 
4094
Removes -Wcast-align from the gcc switches, since this produces huge numbers
4095
of warnings that we will certainly never get rid of.  (unix-gcc.mak)
4096
 
4097
</pre><h3><a name="5.84_Utilities"></a>Utilities</h3><pre>
4098
 
4099
Enhances the ps2pdf script with a patch contributed by Jim Avera
4100
(avera@fjst.com) so that it can be used as a pipe by specifying "-" for the
4101
input and/or output file.  (lib/ps2pdf)
4102
 
4103
Modifies ps2ascii to handle landscape pages better.  (lib/ps2ascii.ps)
4104
 
4105
</pre><h3><a name="5.84_Drivers"></a>Drivers</h3><pre>
4106
 
4107
Fixes problems:
4108
	- PDF output that used Pattern colors on more than one page failed
4109
to include the color space resource in the resource dictionaries of pages
4110
other than the first.  (gdevpdf.c)
4111
	- The PDF writer emitted bitmap patterns inverted in Y.
4112
(gdevpdfi.c)
4113
	- The PCL XL driver's GC descriptor had become incorrect, causing
4114
crashes.  (gdevpx.c)
4115
	- The pdfwrite driver could still emit coordinates too large for
4116
Acrobat Reader to handle, for stroked lines with an unusual CTM.
4117
(gdevpdfd.c)
4118
	- The pxl drivers emitted invalid output for dashed lines.
4119
(gdevpx.c)
4120
	- The [e]pswrite and pxl drivers scaled line widths and dash
4121
patterns incorrectly.  Fixing this properly involved refactoring the
4122
handling of scaling for paths, and removing gdev_vector_stroke_path.
4123
(gdevpsdf.h, gdevvec.h, gdevpdfd.c, gdevps.c, gdevpsdf.c, gdevpx.c,
4124
gdevvec.c)
4125
	- The lj5 drivers didn't pad images to a multiple of 4 bytes per
4126
scan line, producing invalid PCL XL output.  (We don't see how they could
4127
ever have worked, in fact.)  (gdevpcl.h, gdevlj56.c, gdevpcl.c)
4128
 
4129
Adds a user-contributed driver for the DEClaser 2100.  This is a GPL'ed
4130
driver.  (contrib.mak, gnu/src/gdevln03.c)
4131
 
4132
Makes the UsePlanarBuffer parameter, and planar buffering capability, from
4133
the PPM devices available to general printer devices, but in a separate
4134
module to avoid making all printer devices require gdevmpla.c.  (gdevppla.h,
4135
gdevpbm.c, gdevppla.c)
4136
 
4137
Adds a UsePlanarBuffer parameter to the async BMP drivers, for testing.
4138
(gdevbmpa.c)
4139
 
4140
Removes the comment about the instability of the "vector" driver interface.
4141
(gdevvec.h, gdevvec.c)
4142
 
4143
</pre><h3><a name="5.84_Platforms"></a>Platforms</h3><pre>
4144
 
4145
Splits off the Windows thread and synchronization primitives into a new file
4146
and a new module, winsync.dev.  (watc.mak, watclib.mak, winlib.mak,
4147
gp_win32.c, gp_wsync.c)
4148
 
4149
</pre><h3><a name="5.84_Interpreter"></a>Interpreter</h3><pre>
4150
 
4151
Fixes problems:
4152
	- As usual, gcc failed to flag some signed/unsigned char mismatches.
4153
(gp_gnrdl.c, iutil.c)
4154
 
4155
Moves the indexed color space cache lookup procedure from the interpreter to
4156
the library.  (zcsindex.c)
4157
 
4158
</pre><h3><a name="5.84_Streams"></a>Streams</h3><pre>
4159
 
4160
Fixes problems:
4161
	- If a 2-D CCITTFax stream ended with 1 or 2 "vertical 0" codes,
4162
those codes would be ignored.  (scfd.c)
4163
 
4164
</pre><h3><a name="5.84_Library"></a>Library</h3><pre>
4165
 
4166
Fixes problems:
4167
	- gsnogc.h contained an extern for gs_gc_reclaim rather than for
4168
gs_nogc_reclaim.  (gsnogc.h)
4169
	- Banded images in Indexed color spaces rendered incorrectly.
4170
(gximage.c)
4171
	- A function declared some arguments as float rather than floatp.
4172
(gshtx.h, gshtx.c)
4173
	- As usual, gcc failed to flag some public/private mismatches.
4174
(gdevmrun.c)
4175
	- The tracing output for monobit images printed 8 bits per pixel
4176
rather than 1 bit per pixel.  (gxidata.c)
4177
	- A Pn macro was used in a header file that didn't include stdpre.h.
4178
(gscdefs.h, gconf.c, genht.c, gxhtbit.c, gxclrast.c)
4179
	- get_bits_rectangle for the planar memory device didn't flush the
4180
last byte of each row.  (gdevmpla.c)
4181
	- When banding, Indexed color spaces using a procedure rather than a
4182
lookup table caused a crash.  (gxcolor2.h, gscolor2.c, gxclrast.c)
4183
	- When filling a region with a Pattern with a rotated matrix, some
4184
parts of the region could be missed.  (bug introduced by a fix in 5.38)
4185
(gxp1fill.c)
4186
 
4187
When compiling with gcc, replaces inline with __inline__ to get rid of a
4188
potential warning.  (stdpre.h)
4189
 
4190
Adds our own implementations of memset, memcpy, and memmove, to work around
4191
the fact that gprof under Linux doesn't count time in C library procedures.
4192
(memory_.h, string_.h, gsmisc.c)
4193
 
4194
Finishes implementing planar rendering for printer / banded devices.
4195
(gdevprn.h, gxclist.h, gxdevbuf.h, gdevprn.c, gxclread.c)
4196
 
4197
</pre>
4198
 
4199
<hr>
4200
 
4201
<h2><a name="Version5.83"></a>Version 5.83 (tester) (5/13/99)</h2>
4202
 
4203
<p>
4204
This fileset was driven mostly by commercial licensee demands; it doesn't
4205
fix most of the problems reported in 5.82.  It features smaller threshold
4206
halftones, the ability to store halftones in ROM, and a nearly complete
4207
implementation of a planar memory device.
4208
 
4209
<p>
4210
Items pushed off to the next fileset:
4211
<ul>
4212
<li>	- Finish multi-planar band buffers (requires changing
4213
gdev_prn_render_lines to be based on memory devices rather than buffer
4214
pointers).
4215
<li>	- For Adobe compatibility, change stroking so that it always
4216
uses
4217
bevel joins between the segments of a curve (this directly contradicts the
4218
Red Book, but it's what Adobe interpreters do).
4219
<li>	- Implement an IdiomSet for Corel Draw fountain fills?
4220
(idioms.ps)
4221
<li>	- Change shading so it doesn't install a clip device (make this
4222
a
4223
driver procedure instead), because that prevents clist_fill_path from being
4224
called.
4225
</ul>
4226
 
4227
<h3><a name="5.83_Incompatible_changes"></a>Incompatible changes</h3><pre>
4228
 
4229
(Interpreter)
4230
	- The spaces.indexed member of a vm_spaces structure has been
4231
renamed spaces_indexed (a macro).
4232
	- The gs_reclaim procedure is changed to a macro, GS_RECLAIM.
4233
(Library)
4234
	- The bits member of a halftone order is now called bit_data, and is
4235
opaque; halftone orders are now "objects"; gx_ht_alloc_[ht_]order now take
4236
an additional argument.
4237
	- The architectural values in arch.h are now all upper-case.
4238
(std.h defines lower-case synonyms for backward compatibility.)
4239
	- The buffer device procedures for printer devices are now collected
4240
in a structure; this also changes the parameters of clist_init_params.
4241
	- The parameters of the buffered device setup_buf_device procedure
4242
are changed.
4243
	- gx_path_copy_reducing now takes an additional argument, an imager
4244
state, for flattening stroked paths.
4245
	- Memory devices now must be created by copying a prototype device,
4246
rather than by initializing individual members, even if they are only being
4247
used for limited purposes.
4248
 
4249
</pre><h3><a name="5.83_Documentation"></a>Documentation</h3><pre>
4250
 
4251
Documents the new facility for compiled halftones, and the old one for
4252
compiling initialization files.  (doc/Make.htm)
4253
 
4254
</pre><h3><a name="5.83_Utilities"></a>Utilities</h3><pre>
4255
 
4256
Adds a utility for compiling halftones into the executable.  Also defines
4257
the dependency lists for the auxiliary programs in lib.mak and int.mak,
4258
rather than replicating them for every platform.  (bcwin32.mak,
4259
dvx-tail.mak, gs.mak, int.mak, lib.mak, msvctail.mak, openvms.mak,
4260
openvms.mmk, os2.mak, unix-aux.mak, wctail.mak, genht.c)
4261
 
4262
Adds support for halftone "resources" in the makefile.  (genconf.c)
4263
 
4264
Adds code to determine the primary and secondary CPU cache sizes
4265
empirically.  (genarch.c)
4266
 
4267
Changes the architecture definition macros from lower to upper case, with
4268
lower-case synonyms in std.h for backward compatibility.  (gsjconf.h, std.h,
4269
genarch.c)
4270
 
4271
Changes the ps2ai utility so that jtxt3 can be set from the command line, to
4272
allow pstoedit to generate AI3-compatible output.  (lib/ps2ai.ps)
4273
 
4274
</pre><h3><a name="5.83_Procedures"></a>Procedures</h3><pre>
4275
 
4276
Adds some optional library modules to the base library compilation list, so
4277
that compilation errors won't slip through.  (lib.mak)
4278
 
4279
</pre><h3><a name="5.83_Interpreter"></a>Interpreter</h3><pre>
4280
 
4281
Fixes problems:
4282
	- A change from char to byte needed to be undone (gcc didn't catch
4283
this).  (iutil.c)
4284
 
4285
Adds a 167x167 stochastic halftone that CalComp put in the public domain.
4286
(lib/ht_ccbnm.ps, int.mak, unixinst.mak)
4287
 
4288
Updates the interpreter for the change to per-VM-spaces garbage collection.
4289
(igc.h, ialloc.c, icontext.c, igc.c, ilocate.c, imain.c, interp.c,
4290
ireclaim.c, isave.c, zfile.c, zht.c, zht1.c, zht2.c)
4291
 
4292
Updates places that only use gsstruct.h for extern_st to use gsstype.h
4293
instead.  (icontext.h, ifont.h)
4294
 
4295
</pre><h3><a name="5.83_Library"></a>Library</h3><pre>
4296
 
4297
Fixes problems:
4298
	- Some types needed updating to reflect the change in the string
4299
freelists.  (gsalloc.c, gsnogc.c)
4300
	- clip_copy_color didn't initialize some variables in the fastest
4301
case. (bug probably introduced in 5.83) (gxclip.c)
4302
	- The fit_fill_ and fit_copy_ macros didn't always parenthesize
4303
their dev argument.  (gxdevice.h)
4304
	- The sample_load macros returned the wrong results for depth 1 and
4305
2.  Amazingly enough, it appears that this case had never been used.
4306
(gsbitops.h)
4307
	- The standard allocator would free chunks even if is_controlled was
4308
true.  (gsalloc.c)
4309
	- Stroking drew semicircles rather than full circles for round
4310
joins.  (gxstroke.c)
4311
	- The calculation of how finely to sample a curve to achieve a
4312
particular flatness didn't take line width into account when stroking (the
4313
flatness has to apply to the outside of the stroked curve).  (gxpath.h,
4314
gxpcopy.c, gxstroke.c)
4315
 
4316
Speeds up the bbox device a little.  (gdevbbox.c)
4317
 
4318
Speeds up the most common cases of clipping a little.  (gxclip.h,
4319
gxacpath.c, gxclip.c)
4320
 
4321
Makes halftone orders more "object-oriented", so we can use an alternate
4322
representation that trades time for space.  This requires a
4323
NON-BACKWARD-COMPATIBLE CHANGE in the gx_ht_order structure and the
4324
arguments of gx_ht_alloc_[ht_]order.  (gxcldev.h, gxdht.h, gzht.h, gsht.c,
4325
gsht1.c, gshtscr.c, gshtx.c, gsistate.c, gxcht.c, gxclimag.c, gxclrast.c,
4326
gxht.c, gxhtbit.c)
4327
 
4328
Makes it possible to compile-in halftone threshold arrays and orders (e.g.,
4329
in ROM) so they don't take up RAM at execution time.  (gscdefs.h, gxdht.h,
4330
gxdhtres.h, gzht.h, gconf.c, gsht.c, gsht1.c, gxclrast.c, gxhtbit.c)
4331
 
4332
Adds some statistics to the 24-bit memory device (in DEBUG mode only, as
4333
usual).  (gdevm24.c)
4334
 
4335
Makes the 24-bit memory device optionally use memcpy for wide rectangle
4336
fills.  We thought this got us a factor of 3 speedup on a Pentium with gcc's
4337
library, but it turned out to be a profiler artifact.  (gdevm24.c)
4338
 
4339
Cleans up some formatting.  (gxclip.h)
4340
 
4341
Dusts off the run-length-encoded memory device, changing it so it reverts to
4342
the unencoded representation when necessary.  This code hasn't been tested,
4343
and is not currently used.  (gdevmrun.h, gdevrun.c [deleted], gdevmrun.c)
4344
 
4345
Adds more statistics to the clipping device.  (gxclip.c)
4346
 
4347
Adds an implementation of the MD5 Algorithm defined in RFC 1321, derived
4348
directly from the text of the RFC and not from the reference implementation.
4349
This code uses the zlib license, which is more liberal than the Aladdin or
4350
GNU licenses.  (md5.h, md5.c)
4351
 
4352
Finishes implementing the planar memory device, including generalizing it to
4353
store varying numbers of bits per plane rather than 1 bit per plane.
4354
(gdevmem.h, gdevmpla.h, gxdevmem.h, gdevmem.c, gdevmpla.c)
4355
 
4356
Updates clients to initialize memory devices more fully, now required to
4357
distinguish chunky from planar devices.  (gxpcmap.c)
4358
 
4359
Mostly implements enhancing printer / banded devices so they can use a
4360
planar memory device for rendering and/or band buffering.  The code
4361
currently works only in the non-banded case.  (gdevprn.h, gxclist.h,
4362
gxdevbuf.h, gxdevcli.h, gdevprn.c, gxclist.c, gxclread.c)
4363
 
4364
For testing, adds a -dUsePlanarBuffer=&lt;boolean&gt; parameter to the PPM devices
4365
to make them use a planar memory device.  (gdevpbm.c)
4366
 
4367
Cleans up some code formatting.  (gdevmem.c)
4368
 
4369
Makes the garbage collection procedure separately settable for each group of
4370
VM spaces.  (In an environment with "async" rendering, the renderer has its
4371
owm VM space group.)  Unfortunately, this involved a NON-BACKWARD-COMPATIBLE
4372
change in the vm_spaces structure.  (gsgc.h, gsnogc.h, gsnogc.c)
4373
 
4374
Updates a client for the change in gs_reclaim; also makes the renderer
4375
thread use the non-tracing garbage collector.  (gdevprna.c)
4376
 
4377
Updates the non-tracing GC to reflect its role as a garbage collection
4378
procedure in a vm_spaces.  (gsnogc.c)
4379
 
4380
Enhances the non-tracing GC so that if a chunk ever contains no strings, the
4381
string marking area reserved for the tracing GC is added to free space.
4382
(gxalloc.h, gsalloc.c, gsnogc.c)
4383
 
4384
Changes the font cache allocator to use a different structure descriptor for
4385
its data so that memory dumps will show "font cache bytes" rather than just
4386
"bytes".  (gxccman.c)
4387
 
4388
Splits gsstruct.h into gsstype.h, which contains enough of the definition of
4389
structure type descriptors to support extern_st, and gsstruct.h, which is
4390
needed to actually define structure types.  (gsstruct.h, gsstype.h,
4391
gxfmap.h)
4392
 
4393
Updates places that only use gsstruct.h for extern_st to use gsstype.h
4394
instead.  (gsbitmap.h, gsccolor.h, gscie.h, gxfont.h, gzpath.h, scommon.h,
4395
gscdevn.c, gscrd.c, gscrdp.c, gsshade.c, gxpath2.c)
4396
 
4397
</pre>
4398
 
4399
<hr>
4400
 
4401
<h2><a name="Version5.82"></a>Version 5.82 (tester) (4/24/99)</h2>
4402
 
4403
<p>
4404
This fileset fixes a few odds and ends, removes a couple more writable
4405
statics, and improves performance in a couple of areas.
4406
 
4407
<h3><a name="5.82_Incompatible_changes"></a>Incompatible changes</h3><pre>
4408
 
4409
(Interpreter)
4410
	- dict_uid_param now takes an additional argument, the interpreter
4411
context pointer.
4412
	- obj_cvp now takes a stream rather than a string.
4413
 
4414
</pre><h3><a name="5.82_Documentation"></a>Documentation</h3><pre>
4415
 
4416
Documents the -dGraphicsAlphaBits and -dTextAlphaBits switches; reorganizes
4417
the documentation of the -d/-s switches by function.  (doc/Use.htm)
4418
 
4419
</pre><h3><a name="5.82_Procedures"></a>Procedures</h3><pre>
4420
 
4421
Fixes problems:
4422
	- Building with MSVC didn't work if COMPILE_INITS was selected.
4423
(msvctail.mak)
4424
	- The cp script didn't work on all MS-DOS systems, since the systems
4425
are incompatible with each other in undocumented ways.  (cp.bat)
4426
	- Using ^ in a command line failed on Windows 98.  (wccommon.mak)
4427
	- Watcom compilation under Windows NT didn't include some needed
4428
headers.  (wccommon.mak)
4429
	- The Watcom compiler's quoting requirements were inconsistent.
4430
(gs.mak)
4431
	- GLCCWIN was used without being defined.  The MS DOS/Windows
4432
makefiles really are a tangled mess....  (watc.mak)
4433
	- The build directories didn't get created automatically when
4434
compiling with the Watcom compiler.  (watc.mak)
4435
 
4436
Adds more optimization switches for Watcom compilation.  (wccommon.mak)
4437
 
4438
</pre><h3><a name="5.82_Utilities"></a>Utilities</h3><pre>
4439
 
4440
Adds a pfbtopfa script.  (unixinst.mak, lib/pfbtopfa, lib/pfbtopfa.bat,
4441
lib/pfbtopfa.ps)
4442
 
4443
</pre><h3><a name="5.82_Drivers"></a>Drivers</h3><pre>
4444
 
4445
Fixes problems:
4446
	- "Vector" drivers (currently only the PCL XL driver) filled
4447
polygons incorrectly.  (gdevvec.c)
4448
	- The PCL XL drivers produced incorrect output for images.  (We
4449
can't understand how they ever could have worked.)  (gdevpx.c)
4450
	- The PCL XL drivers skipped blank pages.  (gdevpx.c)
4451
	- The page origin for the clj driver was set incorrectly.  (fix from
4452
Artifex) (gdevclj.c)
4453
	- The map_color_rgb procedure for the 32-bit CMYK bmp device was
4454
wrong, causing RasterOps to produce incorrect output.  (fix from Artifex)
4455
(gdevbmp.c)
4456
 
4457
Works around a bug in Acrobat Reader's Print command, by changing the
4458
scaling for bitmap patterns.  (gdevpdfi.c)
4459
 
4460
Cleans up some formatting and macros.  (gdevpx.c)
4461
 
4462
Factors out some common parameter-putting utilities.  (gdevpsdf.h,
4463
gdevpdfp.c, gdevpsdp.c)
4464
 
4465
</pre><h3><a name="5.82_Platforms"></a>Platforms</h3><pre>
4466
 
4467
Fixes problems:
4468
	- The DLL code "knew" it could only be compiled on Windows and OS/2
4469
platforms.  (gsdll.c)
4470
 
4471
Removes a Mac-specific file that is now moved to the Mac-specific archive.
4472
(gsdllmac.h [deleted])
4473
 
4474
</pre><h3><a name="5.82_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4475
 
4476
Fixes problems:
4477
	- An invalidaccess could occur when repositioning the file after
4478
executing an image XObject.  (lib/pdf_draw.ps)
4479
	- Indexed color spaces gave an error if the underlying space was
4480
represented as a name rather than an array.  (bug introduced in 5.80)
4481
(lib/pdf_draw.ps)
4482
 
4483
</pre><h3><a name="5.82_Interpreter"></a>Interpreter</h3><pre>
4484
 
4485
Fixes problems:
4486
	- The interpreter reentrancy changes broke the GNU readline
4487
interface.  (gp_gnrdl.c, ziodev.c)
4488
	- The TrappingType resource category wasn't defined.
4489
(lib/gs_res.ps, lib/gs_trap.ps)
4490
	- CIE color spaces in shading patterns didn't work.  (lib/gs_ll3.ps)
4491
	- Printing a string of more than 200 characters with == was broken.
4492
Fixing this required a NON-BACKWARD-COMPATIBLE change in the argument list
4493
of obj_cvp.  (bug introduced in 5.80) (iutil.h, gp_gnrdl.c, idebug.c,
4494
iutil.c, zfileio.c)
4495
 
4496
Changes the interpreter trace output to be somewhat more readable.
4497
(interp.c)
4498
 
4499
Makes the linking of the binary token scanning procedure static rather than
4500
dynamic.  (int.mak, inobtokn.c, iscan.c, zbseq.c)
4501
 
4502
Makes the language level a property of the context, eliminating a writable
4503
static.  (icstate.h, idparam.h, ilevel.h, icontext.c, idparam.c, iinit.c,
4504
interp.c, zcontext.c, zmisc2.c)
4505
 
4506
Updates clients for the change in dict_uid_param.  (zbfont.c, zfcmap.c,
4507
zpcolor.c, zshade.c)
4508
 
4509
</pre><h3><a name="5.82_Library"></a>Library</h3><pre>
4510
 
4511
Fixes problems:
4512
	- There was a signed/unsigned char * mismatch.  (sfxfd.c)
4513
	- Some very picky compilers complained inappropriately about a
4514
const/non-const mismatch.  (gxcht.c)
4515
	- The format of the string freelists didn't allow chunks with more
4516
than 64K bytes of string area.  (gxalloc.h, gsnogc.c)
4517
 
4518
Moves the interface definitions for the memory dump debugging code into a
4519
header file.  (gxalloc.h, gsalloc.c)
4520
 
4521
Makes the standard memory manager recognize more effectively when it can
4522
reset the high-water mark for occupied space in the current chunk.  This
4523
turns out to make a big difference in preventing sandbars.  (gxalloc.h,
4524
gsalloc.c)
4525
 
4526
Makes clipping lists keep track of their minimum and maximum X values, so
4527
that they can return accurate outer clipping boxes, which in turn allows
4528
more effective pre-clipping of filled regions.  (gxcpath.h, gxacpath.c,
4529
gxclip.c, gxcpath.c)
4530
 
4531
Makes clipping devices cache their clipping box, so they can return it
4532
quickly.  (gxcpath.h, gxclip.c)
4533
 
4534
Makes the colored halftone logic check bounding boxes before running the
4535
expensive algorithms.  This improves performance dramatically for some files
4536
without costing much for the rest.  (gxcht.c)
4537
 
4538
Adds some more debugging printout for clipping lists.  (gxcpath.c)
4539
 
4540
Cleans up formatting and macros.  (gdevdflt.c, gdevhit.c, gdevnfwd.c)
4541
 
4542
Factors out some common parameter-putting utilities.  (gsparamx.h,
4543
gsparamx.c, gstrap.c)
4544
 
4545
Adds some more tracing output for images.  (gxidata.c)
4546
 
4547
</pre>
4548
 
4549
<hr>
4550
 
4551
<h2><a name="Version5.81"></a>Version 5.81 (tester) (4/14/99)</h2>
4552
 
4553
<p>
4554
This fileset cleans up most of the bug tail from 5.80, but it doesn't fix
4555
all the reported problems.  It also factors out the platform-specific DLL
4556
calls, and extends the DLL API to the Mac.
4557
 
4558
<h3><a name="5.81_Incompatible_changes"></a>Incompatible changes</h3><pre>
4559
 
4560
(Platforms)
4561
	- gsdll_get_bitmap is now defined in gsdllos2.h; gsdll_copy_dib,
4562
_copy_palette, _draw, and _get_bitmap_row are now defined in gsdllwin.h.
4563
 
4564
(Interpreter)
4565
	- zcolor_remap_one may return 0 rather than o_push_estack.  (This
4566
change actually occurred in 5.80, but was not documented.)
4567
 
4568
(Library)
4569
	- The initialized parameters of an image scaling filter are now
4570
stored in a subsidiary structure.
4571
	- The names max_support and log2_max_support are changed to
4572
MAX_ISCALE_SUPPORT and LOG2_MAX_ISCALE_SUPPORT.
4573
	- The structure definition for the smoothed image scaling filter is
4574
now private, although its descriptor remains public.
4575
	- The criteria for when to use Interpolate are now more stringent.
4576
 
4577
</pre><h3><a name="5.81_Procedures"></a>Procedures</h3><pre>
4578
 
4579
Fixes problems:
4580
	- gs_trap.ps wasn't installed by `make install'.  (unixinst.mak)
4581
	- A semicolon was missing in one definition of GS_LIB_DEFAULT.
4582
(watc.mak)
4583
	- ll.tr and _temp_.tr weren't created in the obj directory.
4584
(watc.mak, wctail.mak)
4585
	- RM_ was defined incorrectly on one platform.  (wccommon.mak)
4586
 
4587
</pre><h3><a name="5.81_Utilities"></a>Utilities</h3><pre>
4588
 
4589
Makes some minor edits in ansi2knr, contributed by a user, to remove gcc
4590
warnings.  (ansi2knr.c)
4591
 
4592
</pre><h3><a name="5.81_Drivers"></a>Drivers</h3><pre>
4593
 
4594
Fixes problems:
4595
	- There was an int/uint mismatch.  (gdevbmpa.c)
4596
	- There was a const/non-const mismatch.  (gdevbmpa.c)
4597
 
4598
Changes the p*m drivers so that they use the default color mapper when
4599
possible, speeding up execution.  (gdevpbm.c)
4600
 
4601
</pre><h3><a name="5.81_Fonts"></a>Fonts</h3><pre>
4602
 
4603
Adds Black as indicating that a bold font should be substituted if
4604
necessary.  (lib/gs_fonts.ps)
4605
 
4606
</pre><h3><a name="5.81_Platforms"></a>Platforms</h3><pre>
4607
 
4608
Fixes problems:
4609
	- The Watcom NT compiler implements setmode and fileno but not
4610
_setmode and _fileno.  (gp_ntfs.c)
4611
	- The procedure parameter passed to the Windows _beginthread
4612
procedure had the wrong prototype.  (gp_win32.c)
4613
	- Watcom's _beginthread procedure takes an extra argument.
4614
(windows_.h, gp_win32.c)
4615
 
4616
Extends the DLL API to work on the Mac.  This required some restructuring of
4617
the code, and some NON-BACKWARD-COMPATIBLE changes to move
4618
environment-specific calls into environment-specific header files.
4619
(pcwin.mak, os2.mak, winint.mak, dwdll.h, gsdll.h, gsdllmac.h, gsdllos2.h,
4620
gsdllwin.h, dpmainc.c, dwdll.cpp, dwnodll.cpp, gdevmswn.c, gdevpm.c,
4621
gdevwdib.c, gsdll.c)
4622
 
4623
</pre><h3><a name="5.81_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4624
 
4625
Changes the interpreter to handle two more specification-violating
4626
conditions that Adobe Acrobat accepts: truncation of %%EOF to %%EO, and use
4627
of Dest links with no Dests dictionary.  (lib/pdf_main.ps)
4628
 
4629
</pre><h3><a name="5.81_Interpreter"></a>Interpreter</h3><pre>
4630
 
4631
Fixes problems:
4632
	- gcc failed to flag initialization of an automatic aggregate, which
4633
is allowed in neither ANSI nor traditional C.  (iutil.c)
4634
	- The system name table lacked the last 3 entries.
4635
(lib/gs_btokn.ps)
4636
	- Interpolated images always wound up at (0, 0).  (bug introduced in
4637
5.80) (gxipixel.c)
4638
	- The Watcom compiler didn't consider "const uint" and "const
4639
unsigned" to be compatible.  (ifunc.h)
4640
	- The code to detect identity transfer functions could cause
4641
transfer functions not to be processed at all.  (icolor.h, zcolor.c,
4642
zcolor1.c, zht2.c)
4643
	- The Level 2 redefinition of restore could do an extra grestore,
4644
possibly creating a temporary reference to a freed object.  (zdevice2.c)
4645
 
4646
Adds more tracing for undo-saves, and changes a macro to a procedure.
4647
(isave.c)
4648
 
4649
Removes some #define'd casts.  (isave.c)
4650
 
4651
</pre><h3><a name="5.81_Library"></a>Library</h3><pre>
4652
 
4653
Fixes problems:
4654
	- When banding, the color space wasn't reinitialized for each page.
4655
(gxclist.c)
4656
	- The criterion for allowing image interpolation still produced
4657
"mush" for some important classes of image.  (gxiscale.c)
4658
	- The Watcom compiler didn't consider "const uint" and "const
4659
unsigned" to be compatible.  (gscdefs.h, gconf.c)
4660
	- Identity black generation and undercolor removal functions weren't
4661
passed through the band list correctly.  (gxcldev.h, gxclbits.c, gxclrast.c)
4662
	- Once again, gcc failed to give a warning for extern followed by
4663
private.  (gxcdevn.h)
4664
	- glyphshow set up the text operation in a way that created a
4665
garbage collector error.  (gschar.c)
4666
 
4667
Makes gs_opendevice complete the device procedure vector if the device
4668
wasn't already open.  (gsdevice.c)
4669
 
4670
Factors out the image scaling filter so that we can use either Adobe's
4671
algorithm or the Mitchell filter.  This involves a NON-BACKWARD-COMPATIBLE
4672
CHANGE in the way the filter parameters are defined.  (gximage.h, siscale.h,
4673
sisparam.h, gxclimag.c, gxidata.c, gxiscale.c, siscale.c)
4674
 
4675
Makes the criteria for when to use interpolation stricter, since we are
4676
still using the Mitchell filter.  (gxiscale.c)
4677
 
4678
Starts to implement Adobe's image interpolation algorithm.  (siinterp.h,
4679
siinterp.c, gxiscale.c)
4680
 
4681
Speeds up RGB interpolated images by detecting runs of output color.
4682
(gxiscale.c)
4683
 
4684
Makes the default RGB color mapper a "known" mapper that can be propagated
4685
through device pipelines.  (gxdevice.h, gsdevice.c)
4686
 
4687
</pre>
4688
 
4689
<hr>
4690
 
4691
<h2><a name="Version5.80"></a>Version 5.80 (tester) (4/6/99)</h2>
4692
 
4693
<p>
4694
This version contains the first, and, we hope, largest wave of changes in
4695
the interpreter required to make the interpreter fully reentrant.
4696
Unfortunately, many externally visible APIs, including the argument list for
4697
operator procedures, required changes.
4698
 
4699
<p>
4700
Because of the magnitude of the change, we incremented the version number to
4701
5.80.
4702
 
4703
<p>
4704
The non-backward-compatible API changes were confined to the interpreter:
4705
the (very minor) changes to the library required to support interpreter
4706
reentrancy are fully backward-compatible.
4707
 
4708
<p>
4709
This fileset also implements DeviceN color spaces (always using the
4710
alternate space), including Indexed spaces over DeviceN spaces, for all uses
4711
except smooth shading.
4712
 
4713
<h3><a name="5.80_Incompatible_changes"></a>Incompatible changes</h3><pre>
4714
 
4715
(Interpreter)
4716
	- names_init now takes a gs_ref_memory_t * rather than a gs_memory_t
4717
*.
4718
	- type_print_strings, type_name_strings, and
4719
ref_type_properties_data are now REF_TYPE_DEBUG_PRINT_STRINGS,
4720
REF_TYPE_NAME_STRINGS, and REF_TYPE_PROPERTIES_DATA.
4721
	- The undocumented .writecvp operator, and obj_cvp, now take an
4722
integer instead of a Boolean to define the type of output desired.
4723
	- The argument list for operators is changed from os_ptr to
4724
i_ctx_t *.  Many internal interpreter APIs have changed.
4725
	- The typedef name for operator procedures is changed from op_proc_p
4726
to op_proc_t.
4727
	- gs_interpret now takes an additional context (i_ctx_t **)
4728
argument.
4729
	- The interpreter's rescheduling and time-slicing procedures,
4730
gs_interp_reschedule_proc and gs_interp_time_slice_proc, now take a context
4731
(i_ctx_t **) argument.
4732
	- The Type 1 interpreter push_value callback is renamed push_values;
4733
the first argument of push_values and pop_value has changed from
4734
gs_font_type1 * to void *.
4735
	- dict_put*, dict_copy*, dict_undef, dict_resize, dict_grow, and
4736
dict_unpack now take an additional argument, a dictionary stack where the
4737
dictionary may be present.
4738
 
4739
</pre><h3><a name="5.80_Procedures"></a>Procedures</h3><pre>
4740
 
4741
Fixes problems:
4742
	- The dependency list for the (dummy) trapping feature was wrong.
4743
(int.mak)
4744
	- The directory for jerror_.h was incorrect.  (jpeg.mak)
4745
 
4746
Removes the never-used -header switch from genconf.  (genconf.c)
4747
 
4748
Adds priority-sorted resources to genconf, currently used only for image
4749
classes.  (genconf.c)
4750
 
4751
Adds an imageclass resource to genconf, for what used to be called image
4752
strategies.  (genconf.c)
4753
 
4754
</pre><h3><a name="5.80_Utilities"></a>Utilities</h3><pre>
4755
 
4756
Fixes problems:
4757
	- ansi2knr didn't recognize id1(id2, xxxxx) as not being a function.
4758
(ansi2knr.c)
4759
	- viewpcx still referred to the deleted PCXDecode filter.
4760
(lib/viewpcx.ps)
4761
	- strlen was called without being declared.  (genarch.c)
4762
 
4763
</pre><h3><a name="5.80_Drivers"></a>Drivers</h3><pre>
4764
 
4765
Fixes problems:
4766
	- Some drivers that called gdev_prn_open_printer didn't check the
4767
return code for errors.  (gdevdjet.c, gdevhl7x.c)
4768
	- The cljet5 driver didn't handle long-edge feed properly.  (from
4769
Artifex) (gdevclj.c)
4770
	- The [e]pswrite driver could produce incorrect output if the input
4771
file had zero-length lines.  (gdevps.c)
4772
	- The X driver didn't handle byte-swapped 16-bit displays.
4773
(gdevx.c)
4774
	- There was an int/uint mismatch.  (gdevbmp.c)
4775
	- Some needed headers weren't included.  (gdevdcrd.c, gdevpdfo.c)
4776
	- The updated mswinpr2 driver wouldn't compile with older Windows
4777
header files.  (gdevwpr2.c)
4778
 
4779
Removes some unnecessary #includes.  (gdevps.c)
4780
 
4781
Adds user-contributed drivers for the CoStar LabelWriter II Plus and XL
4782
label printers.  (gdevcslw.c)
4783
 
4784
Speeds up color mapping for the bitrgb driver a little, by using the default
4785
procedure.  (gdevbit.c)
4786
 
4787
</pre><h3><a name="5.80_Fonts"></a>Fonts</h3><pre>
4788
 
4789
Fixes problems:
4790
	- TrueType fonts with odd-length glyf definitions caused an
4791
invalidfont error.  (lib/gs_ttf.ps)
4792
 
4793
Changes the font substitution mechanism slightly to be more useful to the
4794
PDF interpreter.  (lib/gs_fonts.ps)
4795
 
4796
</pre><h3><a name="5.80_Platforms"></a>Platforms</h3><pre>
4797
 
4798
Fixes problems:
4799
	- Some needed headers weren't included.  (watc.mak, watclib.mak,
4800
winlib.mak, gp_win32.c)
4801
 
4802
</pre><h3><a name="5.80_Interpreter"></a>Interpreter</h3><pre>
4803
 
4804
Fixes problems:
4805
	- There were many signed/unsigned char type errors that gcc didn't
4806
catch.  (gp_gnrdl.c)
4807
	- The operator definition list for zdouble was too long.  (int.mak,
4808
zdouble.c)
4809
 
4810
Removes some unnecessary #includes.  (zchar.c)
4811
 
4812
Speeds up names_string_ref.  (inamedef.h, inames.h, imain.c, iname.c)
4813
 
4814
Speeds up reading string/name array parameters.  (iparam.c)
4815
 
4816
Refactors the implementation of ==, so that all types other than arrays and
4817
dictionaries are handled in C code.  (lib/gs_init.ps, iutil.h, iref.h,
4818
gp_gnrdl.c, idebug.c, iutil.c, zfileio.c, ztype.c)
4819
 
4820
Changes the type name for operator procedures from op_proc_p to op_proc_t,
4821
for consistency and also to help detect places that need the argument list
4822
changed.  (ichar.h, interp.h, iref.h, opdef.h, interp.c, iutil.c, zchar.c,
4823
zcharx.c, zcontrol.c, zupath.c)
4824
 
4825
Changes the argument type for operators from os_ptr to i_ctx_t *.  (i_ctx_t
4826
is an alias for gs_context_state_t.)  This also requires adding a context
4827
pointer to many internal procedures, or changing an os_ptr argument to
4828
i_ctx_t *.  This is a MASSIVE NON-BACKWARD-COMPATIBLE change which we simply
4829
saw no way to avoid if the interpreter was to be made fully re-entrant.  See
4830
"Incompatible changes" above for externally visible changes.
4831
(lib/gs_init.ps, bfont.h, btoken.h, dstack.h, estack.h, files.h, ichar.h,
4832
ichar1.h, icharout.h, icie.h, icolor.h, icontext.h, icsmap.h, ifilter.h,
4833
ifont1.h, igstate.h, iht.h, iimage.h, iimage2.h, imain.h, imemory.h,
4834
interp.h, ipacked.h, iref.h, iscan.h, istream.h, opdef.h, oper.h,
4835
opextern.h, ostack.h, ialloc.c, icontext.c, iinit.c, imain.c, inouparm.c,
4836
interp.c, ireclaim.c, iscan.c, iscanbin.c, zarith.c, zarray.c, zbfont.c,
4837
zbseq.c, zcfont.c, zchar.c, zchar1.c, zchar2.c, zchar32.c, zchar42.c,
4838
zcharout.c, zcharx.c, zcid.c, zcie.c, zcolor.c, zcolor1.c, zcolor2.c,
4839
zcontext.c, zcontrol.c, zcrd.c, zcsdevn.c, zcsindex.c, zcspixel.c,
4840
zcssepr.c, zdevice.c, zdevice2.c, zdict.c, zdosio.c, zdouble.c, zdpnext.c,
4841
zdps.c, zdps1.c, zfbcp.c, zfcmap.c, zfdctd.c, zfdcte.c, zfdecode.c, zfile.c,
4842
zfileio.c, zfilter.c, zfilter2.c, zfilterx.c, zfont.c, zfont0.c, zfont1.c,
4843
zfont2.c, zfont32.c, zfont42.c, zfproc.c, zfreuse.c, zfunc.c, zfzlib.c,
4844
zgeneric.c, zgstate.c, zhsb.c, zht.c, zht1.c, zht2.c, zimage.c, zimage2.c,
4845
zimage3.c, ziodev.c, ziodev2.c, zmath.c, zmatrix.c, zmedia2.c, zmisc.c,
4846
zmisc1.c, zmisc2.c, zmisc3.c, zpacked.c, zpaint.c, zpath.c, zpath1.c,
4847
zpcolor.c, zrelbit.c, zrop.c, zshade.c, zstack.c, zstring.c, zsysvm.c,
4848
ztoken.c, ztrap.c, ztype.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
4849
 
4850
Changes caching for the interpreter's CIE color spaces so that instead of
4851
changing the color space installation procedure to one that schedules the
4852
sampling of the procedures though a back door, it leaves the installation
4853
procedure alone and schedules the sampling in the color-space-specific
4854
setcolorspace operator.  This is needed for interpreter reentrancy.
4855
(icie.h, zcie.c, zcrd.c)
4856
 
4857
Makes the linkage from the dictionary machinery to the cached values in the
4858
dictionary stack and the name table explicit, by adding a dstack pointer to
4859
all the relevant dict_* procedures.  This is needed for interpreter
4860
reentrancy.  (iddstack.h, idict.h, idstack.h, idict.c)
4861
 
4862
Updates clients for the change in the dictionary API.  For each changed
4863
dict_ procedure, we add an idict_ procedure that uses i_ctx_p-&gt;dict_stack as
4864
the additional argument.  (iddict.h, icontext.c, iinit.c, interp.c,
4865
iparam.c, iscanbin.c, zdps.c, zfcmap.c, zdict.c, zfont.c, zfont0.c,
4866
zgeneric.c, zht2.c, zmisc2.c)
4867
 
4868
Changes Pattern color remapping so that it saves information in the
4869
interpreter's part of the graphics state, rather than manipulating the
4870
e-stack directly.  This is needed for interpreter reentrancy.  (errors.h,
4871
icremap.h, igstate.h, interp.c, zgstate.c, zpcolor.c)
4872
 
4873
Adds to the "main instance" structure a pointer to the currently executing
4874
context.  This is needed for interpreter reentrancy.  (imain.h, iminst.h,
4875
main.h, imain.c, imainarg.c)
4876
 
4877
Changes the argument list for operator initialization procedures from void
4878
to i_ctx_t *.  (opdef.h, ireclaim.c, zbfont.c, zbseq.c, zcontext.c, zfile.c,
4879
zfont.c, zpcolor.c)
4880
 
4881
Changes the initialization of the interpreter's allocators so it doesn't
4882
presume the allocator structure is global.  (ialloc.h, ialloc.c, imain.c)
4883
 
4884
Factors out the structure definition of the stacks, which is needed for
4885
defining the state of a context, from the API, which is only needed by
4886
actual clients.  (icstate.h, idsdata.h, idstack.h, iesdata.h, iestack.h,
4887
iosdata.h, iostack.h, isdata.h, istack.h)
4888
 
4889
Changes filter error reporting so that the report_error procedure doesn't
4890
need access to the interpreter.  (interp.h, interp.c, zfile.c, zfileio.c)
4891
 
4892
Completes the implementation of DeviceN color spaces at the interpreter
4893
level.  (lib/gs_res.ps, lib/gs_lev2.ps, lib/gs_ll3.ps, icsmap.h, zcsdevn.c,
4894
zcsindex.c, zcssepr.c, zimage.c)
4895
 
4896
Speeds up color mapping for identity transfer, BG, or UCR functions.
4897
(zcolor.c)
4898
 
4899
</pre><h3><a name="5.80_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4900
 
4901
Fixes problems:
4902
	- The L range for Lab color spaces was wrong.  (lib/pdf_draw.ps)
4903
	- Images in Lab color spaces came out all black.  (lib/pdf_draw.ps)
4904
 
4905
Improves the font substitution mechanism slightly.  (lib/pdf_font.ps)
4906
 
4907
</pre><h3><a name="5.80_Streams"></a>Streams</h3><pre>
4908
 
4909
Adds an error string to the stream state structure, which stream
4910
implementations can set when returning an error.  The motivation is to allow
4911
the PostScript interpreter to put this into $error.errorinfo.  (scommon.h,
4912
stream.c)
4913
 
4914
</pre><h3><a name="5.80_Library"></a>Library</h3><pre>
4915
 
4916
Fixes problems:
4917
	- The S_ISCHR fix in 5.73 had a typo.  (stat_.h)
4918
	- The garbage collector traced dash pattern pointers even if the
4919
pattern had no elements.  (gzline.h, gsistate.c)
4920
	- Always tracing the clip_path element of gx_device_clist for
4921
garbage collection could cause crashes, because this pointer could be stale.
4922
However, we have to trace this pointer if an image is being processed.
4923
(gxclist.c)
4924
	- A close-brace was positioned incorrectly.  (No effect on the
4925
working of the code.)  (gximage3.c)
4926
	- Some macros caused some compilers to complain about functions that
4927
didn't return values.  (gsmemlok.c)
4928
	- A procedure vector wasn't declared const.  (gsmemlok.c)
4929
	- Some needed headers weren't included.  (gscrdp.c)
4930
	- A const pointer was being treated as non-const.  (gxcpath.c)
4931
	- The algorithm for choosing halftone cell dimensions required an
4932
unreasonably close angle tolerance (0.01 degrees, rather than 1% of a
4933
90-degree possible difference).  (gshtscr.c)
4934
 
4935
Speeds up arcs a little more.  (gspath1.c)
4936
 
4937
Removes some unnecessary #includes.  (gxclpath.h, gxcpath.h, gzcpath.h,
4938
gxccman.c, gxclip.c, gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c,
4939
gximono.c, gxiscale.c, gxpcmap.c)
4940
 
4941
Cleans up some formatting.  (gxpath.c)
4942
 
4943
Re-enables image interpolation for images that have at least 8 bits of input
4944
data per pixel.  This is still a compromise....  (gxiscale.c)
4945
 
4946
Enhances the default implementation of parameter lists so that a C parameter
4947
list can forward unrecognized param_read calls to another parameter list.
4948
This allows constructing incrementally modified parameter lists for internal
4949
purposes.  (gsparam.h, gscparam.c)
4950
 
4951
Changes the first argument of the Type 1 charstring interpreter push_value
4952
(which is renamed push_values) and pop_value callbacks from the font pointer
4953
to an arbitrary pointer passed in to the interpreter.  This is needed for
4954
PostScript interpreter reentrancy.  (gstype1.h, gxfont1.h, gxtype1.h,
4955
gstype1.c, gxtype1.c)
4956
 
4957
Adds an allocator wrapper that calls a closure to attempt to free up memory
4958
if an allocation fails.  This is used for asynchronous operation (waiting
4959
for the page queue to empty) and operation with an optional disk for the
4960
band list.  (gsmemret.h, gsmemret.c)
4961
 
4962
Adds the retrying wrapper to the malloc allocator.  (gsmalloc.c)
4963
 
4964
Makes "async" printer devices use the retrying wrapper.  (gdevprna.c)
4965
 
4966
Makes clist_fill_parallelogram recognize rectangles.  This makes a big
4967
difference for images rotated 90 degrees.  (gsrect.h, gdevddrw.c,
4968
gxclpath.c)
4969
 
4970
Arranges to construct the list of image classes (formerly called strategies)
4971
statically rather than dynamically.  (lib.mak, gscdefs.h, gxiclass.h,
4972
gximage.h, gconf.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c,
4973
gxipixel.c, gxiscale.c)
4974
 
4975
Implements Indexed color spaces for high-level image banding.  (gxclist.h,
4976
gxclpath.h, gxclimag.c, gxclrast.c)
4977
 
4978
Arranges to construct the blank bitmap for colored patterns statically
4979
rather than dynamically.  (gsbitmap.h, gxbitmap.h, gxcht.c)
4980
 
4981
Changes FORCE_STRIP_HALFTONES from a #define to a static Boolean.
4982
(gshtscr.c)
4983
 
4984
Implements alternate-space DeviceN color spaces.  (gscspace.h, gxcdevn.h,
4985
gscdevn.c)
4986
 
4987
Implements DeviceN color spaces for images.  (gximage.h, gsimage.c,
4988
gxi12bit.c, gxicolor.c, gxidata.c, gximage3.c, gximono.c, gxipixel.c)
4989
 
4990
Speeds up color mapping a bit.  (gxfmap.h, gsdevice.c, gsstate.c,
4991
gxclbits.c, gxclrast.c, gxcmap.c)
4992
 
4993
</pre>
4994
 
4995
<hr>
4996
 
4997
<h2><a name="Version5.73"></a>Version 5.73 (tester) (3/19/99)</h2>
4998
 
4999
<p>
5000
This fileset fixes a few bugs and adds a couple of minor performance
5001
improvements.  Its purpose is to fix a fairly serious memory management bug
5002
and a Microsoft-platform compilation problem, both introduced in 5.72.
5003
 
5004
<h3><a name="5.73_Incompatible_changes"></a>Incompatible changes</h3><pre>
5005
 
5006
(Library)
5007
	- Removes the restriction on device registration that was introduced
5008
in 5.72.
5009
	- gx_[c]path_scale_exp2 are replaced by gx_[c]path_scale_exp2_shared.
5010
 
5011
</pre><h3><a name="5.73_Documentation"></a>Documentation</h3><pre>
5012
 
5013
Identifies GNU readline support as user-contributed, and adds the author's
5014
name.  (int.mak, unix-gcc.mak, gp_gnrdl.c)
5015
 
5016
Notes that an edit is required for GNU readline for AIX.  (doc/Make.htm)
5017
 
5018
Changes the bug reporting e-mail address to bug-gs@aladdin.com.
5019
(doc/Bug-form.htm, doc/New-user.htm, doc/Use.htm, imainarg.c)
5020
 
5021
</pre><h3><a name="5.73_Procedures"></a>Procedures</h3><pre>
5022
 
5023
Adds FEATURE_DEVS_EXTRA and DEVICE_DEVS_EXTRA, reserved for setting from the
5024
command line.  (gs.mak)
5025
 
5026
</pre><h3><a name="5.73_Drivers"></a>Drivers</h3><pre>
5027
 
5028
Fixes problems:
5029
	- A needed cast was missing.  (gdevx.c)
5030
 
5031
</pre><h3><a name="5.73_Interpreter"></a>Interpreter</h3><pre>
5032
 
5033
Fixes problems:
5034
	- A needed cast was missing.  (zfname.c)
5035
	- The CFF loader didn't handle empty subsections correctly.
5036
(lib/gs_cff.ps)
5037
	- GNU readline gave an error, rather than expanding the input
5038
buffer, when called in response to %lineedit.  (files.h, zfileio.c,
5039
ziodev.c)
5040
	- GNU readline wasn't always initialized, causing a crash when an
5041
attempt was made to shut it down.  (iminst.h, imain.c)
5042
 
5043
Adds more tracing to the CFF loader.  (lib/gs_cff.ps)
5044
 
5045
Adds some deconstifying casts to compensate for broken headers in the GNU
5046
readline package.  (gp_gnrdl.c)
5047
 
5048
</pre><h3><a name="5.73_Library"></a>Library</h3><pre>
5049
 
5050
Fixes problems:
5051
	- The bounding box device didn't ignore filling paths consisting
5052
only of a moveto.  (gdevbbox.c)
5053
	- Some systems have S_IFCHR but not S_ISCHR.  (stat_.h)
5054
	- The clipping list accumulator didn't merge single rectangles
5055
correctly.  (gxacpath.c)
5056
	- The clipping list accumulator wasn't aggressive enough about
5057
merging rectangles.  (Performance effect only.)  (gxacpath.c)
5058
	- The page wasn't cleared when installing a new device. (bug
5059
introduced in 5.72) (gsdevice.c)
5060
	- With graphics anti-aliasing enabled, executing clip or eoclip
5061
followed by fill or stroke produced incorrect output.  (bug introduced
5062
between 5.10 and 5.50) (gxpath.h, gspaint.c, gxcpath.c, gxpath2.c)
5063
	- The garbage collector could crash if any banded devices were
5064
active.  (bug introduced in 5.72) (gdevprn.c)
5065
 
5066
Changes memory management for device instances to allocate the structure
5067
type objects dynamically.  This gets rid of a static, and also gets rid of
5068
the requirement that device prototypes be registered, at the expense of an
5069
extra copy of the (small) structure type object per instance of certain
5070
devices.  (gscdefs.h, gxdevcli.h, gxdevice.h, gconf.c, gsdevice.c)
5071
 
5072
Disables image interpolation for all high-resolution images, not just
5073
black-and-white, since this produces better-looking output.  (gxiscale.c)
5074
 
5075
Speeds up path bounding box computation a little.  (gxpath2.c)
5076
 
5077
Speeds up clipping a little.  (gxclip.c)
5078
 
5079
Cleans up formatting a bit.  (gxacpath.c)
5080
 
5081
Adds support for libpng version 1.0.3, but (for now) updates only the
5082
OpenVMS and Unix makefiles to use it.  (libpng.mak, openvms.mak,
5083
openvms.mmk, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak)
5084
 
5085
Attempts to work around picky compilers that don't allow assigning T[M][N]
5086
to const T[M][N].  (gxcht.c)
5087
 
5088
</pre>
5089
 
5090
<hr>
5091
 
5092
<h2><a name="Version5.72"></a>Version 5.72 (tester) (3/17/99)</h2>
5093
 
5094
<p>
5095
This fileset finally gets rid of the need to have jpeg, libpng, or zlib
5096
source code on Unix systems that already have these libraries available.  It
5097
also starts to add support for general DeviceN color spaces.
5098
 
5099
<p>
5100
Works in progress:
5101
<ul>
5102
<li>	- Fix Fontmap -&gt; Fontmap.GS link, which VMS can't handle.
5103
<li>	- Make x11alpha do real alpha blending.
5104
<li>	- spdiff.c is unfinished, partly wrong.
5105
<li>	- DeviceN support is in progress.  In gxcht.c,
5106
set_ht_colors_le_4
5107
and set_color_ht_gt_4 don't have any way to color-map >4 planes.
5108
</ul>
5109
 
5110
<h3><a name="5.72_Incompatible_changes"></a>Incompatible changes</h3><pre>
5111
 
5112
(Interpreter)
5113
	- The str argument of arg_push_memory_string is no longer const.
5114
	- The last argument of print_reloc is now const.
5115
 
5116
(Library)
5117
	- Clients should never call the device open_device or close_device
5118
procedure directly: they should call gs_opendevice or gs_closedevice.
5119
	- The fn_free_functions procedure has been made private.
5120
	- The first argument of gs_currentpoint is no longer const.
5121
	- References to header files in the third-party libraries must now
5122
include a trailing _, i.e.: jerror_.h jmorecf_.h jpeglib_.h png_.h zconf_.h
5123
	- IJG JPEG library versions before v5a are no longer supported.
5124
	- ilog2 replaces small_exact_log2.
5125
	- Support for "outside" clipping has been removed.
5126
	- Clients that define their own devices now must either register
5127
them in the makefile (using the SET[P]DEV[2] macros) or set the stype
5128
pointer in the static prototype to the correct structure type (or at least a
5129
structure type with the correct procedures).
5130
 
5131
</pre><h3><a name="5.72_Documentation"></a>Documentation</h3><pre>
5132
 
5133
Clarifies the fact that clients should never call the device open_device or
5134
close_device procedure directly.  (doc/Drivers.htm)
5135
 
5136
Updates contact information for Artifex Software.  (doc/Commprod.htm,
5137
doc/New-user.htm)
5138
 
5139
Clarifies the fact that Aladdin did not write gdevcdj.c.  (gdevcdj.c)
5140
 
5141
Documents the new -TTYPAUSE switch.  (doc/Use.htm)
5142
 
5143
Adds SCO OpenServer 5.0.5 to the list of systems where Ghostscript is known
5144
to build.  (doc/Make.htm)
5145
 
5146
Notes that the MIPSpro 7.2.1.3m compiler produces incorrect output.
5147
(doc/Make.htm)
5148
 
5149
</pre><h3><a name="5.72_Procedures"></a>Procedures</h3><pre>
5150
 
5151
Fixes problems:
5152
	- The Unix install directory ($(gsdatadir)) and the Unix default
5153
search path ($(gsdatadir)/lib) weren't compatible.  (bug introduced since
5154
5.50) (unixinst.mak)
5155
	- The compilation rule for echogs omitted a dependency and also
5156
failed to specify a directory for header files.  (unix-aux.mak)
5157
	- Third-party library source code was required even if the
5158
corresponding SHARE_xxx option was set to 1.  (devs.mak, gs.mak, int.mak,
5159
lib.mak, jpeg.mak)
5160
 
5161
Adds a -dTTYPAUSE switch to cause .confirm to read from /dev/tty instead of
5162
stdin, useful when the data input is a pipe.  (lib/gs_init.ps)
5163
 
5164
</pre><h3><a name="5.72_Utilities"></a>Utilities</h3><pre>
5165
 
5166
Fixes problems:
5167
	- Some preprocessor macros were defined twice on VMS.  (echogs.c)
5168
	- traceop.ps didn't build operator-tracing procedures in global VM.
5169
(This didn't matter before we introduced local pseudo-operators.)
5170
(lib/traceop.ps)
5171
	- geninit produced invalid output or hung if the input files didn't
5172
have the correct EOL representation for the platform.  (geninit.c)
5173
 
5174
Updates a (probably otherwise obsolete) file for the deletion of the private
5175
JPEG library error message table.  (bughunt.sh)
5176
 
5177
</pre><h3><a name="5.72_Drivers"></a>Drivers</h3><pre>
5178
 
5179
Fixes problems:
5180
	- A procedure returning void tried to return a value.  (gdevtfax.c)
5181
	- For 24-bit displays, XGetImage can return an image in which
5182
bits_per_pixel is 32 rather than 24, which is not at all obvious from the
5183
documentation; also, the bit and byte ordering may not be MSBFirst.
5184
(gdevx.c)
5185
	- XFree takes a char *, not a void *.  (gdevx.c)
5186
	- The fix in 5.71 to adjust the width of TIFF images introduced
5187
another bug.  (gdevtfax.c)
5188
	- If the X driver used a standard colormap, pixel values 255 and
5189
less didn't map back to RGB properly. (bug introduced in 5.71) (gdevxcmp.c)
5190
	- The ForceMono addition to gdevbit.c (in 5.71) was incorrect.
5191
(gdevbit.c)
5192
	- There was a const mismatch in an extern.  (gdevxalt.c)
5193
	- Third-party library source code was required even if the
5194
corresponding SHARE_xxx option was set to 1.  Fixing this required
5195
referencing all third-party library header files through *_.h files.
5196
(gdevjpeg.c, gdevpdfi.c, gdevpng.c, gdevpsdi.c, gdevpsdp.c)
5197
	- There was no way to cause the bounding box device to give up its
5198
reference to the target.  (gdevbbox.h, gdevbbox.c)
5199
	- pdfwrite crashed if given a 12-bit-per-sample CMYK image when
5200
ConvertCMYKImagesToRGB was true, and produced invalid output for other
5201
12-bit-per-sample images (PDF limits bits-per-sample to 8).  (gdevpsdi.c)
5202
	- pdfwrite mangled planar images if bits-per-sample was other than
5203
8.  (bug introduced since 5.50) (gdevpdfi.c)
5204
 
5205
Changes some code to reduce compiler warnings about casts discarding const.
5206
(gdevxalt.c)
5207
 
5208
Removes a test that allowed referencing the statically allocated instance of
5209
the alternative X drivers.  (gdevxalt.c)
5210
 
5211
Changes a reference to small_exact_log2.  (gdevsvga.c)
5212
 
5213
Greatly improves the PDF writer's handling of simple pattern fills, by
5214
retaining them as pattern fills.  (gdevpdfx.h, gdevpdf.c, gdevpdfi.c)
5215
 
5216
</pre><h3><a name="5.72_Fonts"></a>Fonts</h3><pre>
5217
 
5218
Fixes problems:
5219
	- Cn in a font name wasn't recognized as indicating a condensed
5220
font.  (lib/gs_fonts.ps)
5221
 
5222
</pre><h3><a name="5.72_Interpreter"></a>Interpreter</h3><pre>
5223
 
5224
Fixes problems:
5225
	- Third-party library source code was required even if the
5226
corresponding SHARE_xxx option was set to 1.  Fixing this required
5227
referencing all third-party library header files through *_.h files.
5228
(zfdctd.c, zfdcte.c)
5229
	- An /undefined error occurred on floating point numbers whose
5230
integer part exceeded the size of a long (normally 31 bits) and that also
5231
included a fraction.  (iscannum.c)
5232
	- ialloc.c included gxarith.h unnecessarily.  (ialloc.c)
5233
 
5234
When opening a terminal for reading, always sets the buffer size to 1.  This
5235
does not apply to %stdin, %lineedit, or %statementedit.  (zfile.c)
5236
 
5237
Changes code to use the new deconstifying freeing procedures, to remove
5238
deconstifying casts.  (gsargs.h, ialloc.h, gsargs.c, zfname.c, zfunc.c)
5239
 
5240
Adds a writable packed ref pointer variant to ref.value, to remove compiler
5241
warnings about casts discarding const.  (igc.h, iref.h, idict.c, igc.c,
5242
igcref.c)
5243
 
5244
Changes the help printouts to use the new printf_program_ident procedure.
5245
(imainarg.c)
5246
 
5247
Generalizes clients to handle color spaces that may have more than 4
5248
components.  (zcsdevn.c, zcsindex.c, zcssepr.c, zdpnext.c, zfdecode.c)
5249
 
5250
Removes support for outside clipping, which we implemented only because we
5251
misinterpreted a requirement.  (zpath.c)
5252
 
5253
</pre><h3><a name="5.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5254
 
5255
Fixes problems:
5256
	- Selecting a colored Pattern color space caused an error.
5257
(lib/pdf_draw.ps, lib/pdf_ops.ps)
5258
	- Reading data from a subfile with no filter caused an error.
5259
(lib/pdf_base.ps)
5260
 
5261
Allows mask images to omit BitsPerComponent: Acrobat Reader accepts this
5262
even though the PDF specification requires it to be present (with value =
5263
1).  (lib/pdf_draw.ps)
5264
 
5265
</pre><h3><a name="5.72_Streams"></a>Streams</h3><pre>
5266
 
5267
Fixes problems:
5268
	- The PixelDifference filters didn't propagate leftover bits in the
5269
last byte of a row. (bug probably introduced in 5.60) (spdiff.c)
5270
	- The 1- and 2-bit-per-pixel PixelDifferenceEncode filters were
5271
broken.  (spdiff.c)
5272
 
5273
Changes code slightly to remove a warning about an uninitialized variable.
5274
(spdiff.c)
5275
 
5276
Extends the PixelDifference filters to handle more than 4 Colors.
5277
s_PDiff_max_Colors is the maximum value.  (spdiffx.h, spdiff.c)
5278
 
5279
Adds a stream for converting 12-bit samples to 8-bit.  (gdevpsds.h,
5280
gdevpsds.c)
5281
 
5282
Gets rid of the no longer needed private copy of the JPEG error message
5283
table.  (sdcte.c, sdeparam.c, sjpegerr.c [deleted], sjpegc.c)
5284
 
5285
</pre><h3><a name="5.72_Library"></a>Library</h3><pre>
5286
 
5287
Fixes problems:
5288
	- If a 1-bit-per-pixel image terminated early, the last few scan
5289
lines might not be written out.  (gxidata.c)
5290
	- The bbox device could leave its target in a half-open state,
5291
because it called the open/close_device procedures directly rather than
5292
going through gs_open/closedevice.  We "fixed" this by making this device
5293
forward open and close, but conditionally, so that clients can choose.
5294
(gdevbbox.c)
5295
	- Third-party library source code was required even if the
5296
corresponding SHARE_xxx option was set to 1.  Fixing this required
5297
referencing all third-party library header files through *_.h files.
5298
(sdcparam.c, sdctc.c, sdctd.c, sddparam.c, sjpegc.c, sjpegd.c, sjpege.c,
5299
sjpegerr.c)
5300
	- Low-memory recovery in the band list writer sometimes didn't work,
5301
because a test was backwards.  (gxcldev.h, gxclist.c)
5302
	- Executing a put_params during band rasterizing didn't update
5303
cached values in the imager state.  This was probably not a problem in
5304
practice, since the only parameters that affect cached values (device color
5305
space, depth, and color mapping) were very rarely set.  (gxclrast.c)
5306
	- Converting 12-bit planar images to chunky format could store
5307
beyond the end of the output area and corrupt memory.  (gsflip.h, gsflip.c)
5308
	- The algorithms for converting 4-plane, 1- and 2-bit planar images
5309
to chunky format were wrong.  (gsflip.c)
5310
	- Images that lay entirely outside the page could cause a memory
5311
access error.  (gxclimag.c)
5312
	- The bbox device could return excessively conservative values for
5313
stroked paths.  (gxpaint.h, gdevbbox.c, gxpaint.c, gxstroke.c)
5314
	- Banding devices now include some pointers that the garbage
5315
collector must trace.  (gdevprn.h, gxclist.h, gxdevice.h, gdevprn.c,
5316
gsdevice.c, gxclist.c)
5317
 
5318
Adds a gs_opendevice procedure to mirror gs_closedevice.  (gsdevice.h,
5319
gsdevice.c)
5320
 
5321
Adds deconstifying freeing procedures to the memory manager.  This allows us
5322
to have pointers as structure members that should be const * for all
5323
ordinary clients, and still be able to free the referenced objects without a
5324
compiler warning.  (gsmemory.h, gsmemory.c)
5325
 
5326
Changes code, often to use the new deconstifying freeing procedures, to
5327
remove deconstifying casts.  (gspath.h, gxfunc.h, gsfunc.c, gsfunc0.c,
5328
gsfunc3.c, gspath.c, gsptype1.c)
5329
 
5330
Changes the eprintf macros so they print the version as well as the program
5331
name.  (std.h, gscdef.c, gsmisc.c)
5332
 
5333
Adds procedures that update cached values in graphics or imager states after
5334
setting device parameters.  Clients should use these when setting parameters
5335
of devices that may be current in graphics or imager states.  Note that this
5336
is only a partial solution for a much deeper problem, and may even have to
5337
be replaced at some point.  (gsdevice.h, gsdevice.c)
5338
 
5339
Defines GS_CLIENT_COLOR_MAX_COMPONENTS (in gsccolor.h),
5340
GX_DEVICE_COLOR_MAX_COMPONENTS (in gxcindex.h), and GS_IMAGE_MAX_COMPONENTS,
5341
and starts to use them where needed, in anticipation of implementing DeviceN
5342
color spaces.  (gsccolor.h, gsdcolor.h, gsiparam.h, gsiparm4.h, gxcindex.h,
5343
gxctable.h, gximage.h, gxshade.h, gdevplnx.c, gscdevn.c, gscolor2.c,
5344
gxcht.c, gxclimag.c, gxcmap.c, gxicolor.c, gxctable.c, gxi12bit.c)
5345
 
5346
Replaces small_exact_log2 by a procedure ilog2 that computes floor(log2(n)).
5347
(gxarith.h, gsmisc.c, gspaint.c, gxccman.c, gxclimag.c, gxclrect.c)
5348
 
5349
Upgrades gsflip.c to handle >4 planes.  (gsbitops.h, gsflip.h, gsflip.c)
5350
 
5351
Speeds up getting and testing memory device prototypes a little.  (gdevmem.c)
5352
 
5353
Speeds up adding arcs to a path a little.  (gspath1.c)
5354
 
5355
Increases the precision of a precomputed constant from float to double.
5356
(gxpath.h)
5357
 
5358
Adds a new band list operation to make circles smaller and faster.
5359
(gxclpath.h, gxclpath.c, gxclrast.c)
5360
 
5361
Adds an accessor procedure for the start point of the current subpath.
5362
(gxpath.h, gxpath2.c)
5363
 
5364
Removes support for outside clipping, which we implemented only because we
5365
misinterpreted a requirement.  (gspath.h, gxcldev.h, gxcpath.h, gxpath.h,
5366
gspath.c, gxacpath.c, gxclip.c, gxclpath.c, gxclrast.c, gxcpath.c)
5367
 
5368
Changes gs_copydevice to require that static prototypes either be registered
5369
in gx_device_list or have a correct stype pointer.  (This is already the
5370
case for all devices in code we distribute.)  (gsdevice.c)
5371
 
5372
Adds ENUM_PTRS_PROC and RELOC_PTRS_PROC macros for giving a name to the
5373
typed pointer to the object being processed.  (gsstruct.h)
5374
 
5375
</pre>
5376
 
5377
<hr>
5378
 
5379
<h2><a name="Version5.71"></a>Version 5.71 (tester) (3/3/99)</h2>
5380
 
5381
<p>
5382
This fileset reinstates support for TrueColor X displays, and adds optional
5383
support for GNU readline.  It also includes a little more work on the new
5384
driver text API.
5385
 
5386
<h3><a name="5.71_Incompatible_changes"></a>Incompatible changes</h3><pre>
5387
 
5388
(Library)
5389
	- The *line_accum* macros are now capitalized; declare_line_accum is
5390
renamed DECLARE_LINE_ACCUM_COPY, and DECLARE_LINE_ACCUM is new.
5391
 
5392
</pre><h3><a name="5.71_Documentation"></a>Documentation</h3><pre>
5393
 
5394
Documents the CIE joint cache invariant more accurately.  (gscie.h)
5395
 
5396
Adds a request for xdpyinfo/xwininfo output to the problem reporting form.
5397
(doc/Bug-form.htm)
5398
 
5399
</pre><h3><a name="5.71_Procedures"></a>Procedures</h3><pre>
5400
 
5401
Fixes problems:
5402
	- The default search path was missing the lib subdirectory on many
5403
platforms.  (dvx-gcc.mak, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
5404
unixtrad.mak, watc.mak, watclib.mak, watcw32.mak)
5405
	- The dependency list for the X Windows drivers was incorrect,
5406
sometimes causing needed recompilation to be omitted.  (devs.mak)
5407
 
5408
</pre><h3><a name="5.71_Utilities"></a>Utilities</h3><pre>
5409
 
5410
Fixes problems:
5411
	- The representation of maximum unsigned values produced warnings on
5412
some compilers (specifically, gcc with -Wtraditional).  (genarch.c)
5413
	- Some string variables weren't declared const.  (echogs.c,
5414
genarch.c)
5415
	- The viewpbm utility was broken for pgm and ppm (but not pbm).
5416
(bug introduced in 5.66) (lib/viewpbm.ps)
5417
 
5418
</pre><h3><a name="5.71_Drivers"></a>Drivers</h3><pre>
5419
 
5420
Fixes problems:
5421
	- The X driver didn't handle TrueColor displays properly.
5422
(gdevxcmp.h, gdevxcmp.c)
5423
	- The alternative X drivers didn't implement get_bits properly.
5424
(gdevxalt.c)
5425
	- The X driver specified the byte order incorrectly for displays
5426
with more than 8 bits per pixel.  (gdevx.c)
5427
	- The X driver used the wrong number of bits for comparing colors on
5428
visuals with fixed color maps.  (gdevxcmp.h, gdevxcmp.c)
5429
	- Some symbols were multiply defined with -DNOPRIVATE.  (gdevbit.c)
5430
	- If a file specified a paper size, rather than using the default,
5431
the G3/G4 fax output drivers didn't adjust the width to a legal one for fax
5432
systems.  (gdevtfax.c)
5433
 
5434
Segregates the resource lists, for which warnings about casting of const to
5435
non-const string types should be suppressed, into a separate file.
5436
(devs.mak, gdevx.h, gdevxini.c, gdevxres.c)
5437
 
5438
Splits off the code related to color mapping for X Windows, for greater
5439
understandability.  (devs.mak, gdevx.h, gdevxcmp.h, gdevx.c, gdevxcmp.c,
5440
gdevxini.c)
5441
 
5442
Changes code slightly to remove warnings about signed/unsigned integer
5443
constants.  (gdevxalt.c)
5444
 
5445
Changes code to remove unused variables.  (gdevx.c, gdevxalt.c)
5446
 
5447
Adds a user-contributed driver for the H-P LaserJet 4D.  (devs.mak,
5448
gdevdjet.c)
5449
 
5450
Makes the bitcmyk driver reset its map_cmyk_color procedure dynamically
5451
according to the depth, allowing more efficient execution in the 1- and
5452
8-bit cases.  (gdevbit.c)
5453
 
5454
Adds a settable option, AdjustWidth, to control whether the fax-format
5455
drivers (faxg*, tiffcrle, tiffg*) adjust the page width to legal fax values.
5456
Its default value is 1 (do adjust).  (devs.mak, gdevtfax.c)
5457
 
5458
Adds a ForceMono parameter to the bitcmyk/bitrgb devices to implement a
5459
special monochrome-in-CMYK mode requested by a customer.  (gdevbit.c)
5460
 
5461
Removes the TRIM_ and EXPAND_BITS_TO_BYTES options from the bit devices,
5462
since they are no longer needed.  (gdevbit.c)
5463
 
5464
</pre><h3><a name="5.71_Fonts"></a>Fonts</h3><pre>
5465
 
5466
Changes the substitution mechanism for condensed / narrow fonts, so that the
5467
PDF interpreter can use it.  (lib/gs_fonts.ps)
5468
 
5469
</pre><h3><a name="5.71_Interpreter"></a>Interpreter</h3><pre>
5470
 
5471
Fixes problems:
5472
	- The bind operator generated unaligned accesses and might not
5473
operate reliably. (bug introduced in 5.70) (zmisc.c)
5474
	- If the BuildChar procedure of a font included an image or
5475
imagemask operator, charpath would (incorrectly) display the character.
5476
(zimage.c)
5477
 
5478
Adds a bogus return statement to suppress a compiler warning.  (gs.c)
5479
 
5480
Changes code slightly to remove warnings about signed/unsigned integer
5481
constants.  (store.h, ibnum.c)
5482
 
5483
Changes the build date format to %d-%02d-%02d.  (lib/gs_init.ps, imainarg.c)
5484
 
5485
Rearranges some code to add readline support.  (files.h, imain.c, zfileio.c,
5486
ziodev.c)
5487
 
5488
Adds support for GNU readline, with several completion keys, contributed by
5489
a user.  (int.mak, gs_rdlin.ps, gp_gnrdl.c)
5490
 
5491
Changes the font substitution machinery slightly so the PDF interpreter can
5492
use it.  (lib/gs_fonts.ps)
5493
 
5494
</pre><h3><a name="5.71_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5495
 
5496
Fixes problems:
5497
	- In-line images caused a syntaxerror or stackunderflow.
5498
(lib/pdf_draw.ps)
5499
	- The font substitution mechanism didn't detect Condensed fonts.
5500
(lib/pdf_font.ps)
5501
	- The font substitution mechanism didn't use the intelligent
5502
algorithm used for PostScript files.  (lib/pdf_font.ps)
5503
 
5504
Prints a message when substituting for a font on the basis of its
5505
descriptor.  (lib/pdf_font.ps)
5506
 
5507
</pre><h3><a name="5.71_Streams"></a>Streams</h3><pre>
5508
 
5509
Adds an interface and default implementation for readline.  (srdline.h,
5510
stream.h, stream.c)
5511
 
5512
</pre><h3><a name="5.71_Library"></a>Library</h3><pre>
5513
 
5514
Fixes problems:
5515
	- A void procedure attempted to return a value.  (stream.c)
5516
	- A pointer was declared with an extra *.  (gsmemory.c)
5517
	- An argument would be stringified with traditional C.  (gdevdbit.c)
5518
	- The check for validity of the CIE joint caches was wrong, leading
5519
to incorrect output in some obscure cases.  (gsciemap.c)
5520
	- A tiny rounding inaccuracy could cause an occasional blank line
5521
when rendering adjacent images.  (gxipixel.c)
5522
	- Some symbols were multiply defined with -DNOPRIVATE.  (gsptype2.h)
5523
	- If a character was too large to be cached, it didn't use
5524
anti-aliasing, even if TextAlphaBits was >1.  (gspaint.c)
5525
 
5526
Changes code slightly to remove warnings about signed/unsigned integer
5527
constants.  (gsccode.h, gsmisc.c, gxcht.c)
5528
 
5529
Changes code to remove a warning about an unhandled case in a switch.
5530
(gsstruct.h, gsmemory.c)
5531
 
5532
Changes code to remove unused variables.  (gxcindex.h, gdevdbit.c,
5533
gdevprn.c, gxiscale.c)
5534
 
5535
Restructures the header files for the new text API, adding the SINGLE
5536
options in text_params, enough new elements in text_enum to store all the
5537
arguments of text_begin, and new elements in text_enum to hold results
5538
returned by text_process.  This code is no longer "subject to [arbitrary]
5539
change without notice", although it is still not very stable.  (gstext.h,
5540
gxtext.h, gstext.c)
5541
 
5542
Changes code to remove warnings about uninitialized variables.  (gxipixel.c)
5543
 
5544
Changes the syntactic form of some constants yet again to suppress a
5545
different set of compiler warnings.  (gxsample.c)
5546
 
5547
Adds a procedure to fix the charpath-in-BuildChar problem.  (gsimage.h,
5548
gsimage.c, gsptype1.c)
5549
 
5550
Speeds up the handling of certain RasterOp cases for CMYK devices.
5551
(gxdevice.h, gxdevmem.h, gdevdrop.c, gdevmem.c, gdevmr8n.c, gdevrops.c)
5552
 
5553
Adds a platform-specific interface for reading lines from stdin.  This is
5554
intended primarily to support GNU readline.  (lib.mak, gp.h, gp_strdl.c)
5555
 
5556
</pre>
5557
 
5558
<hr>
5559
 
5560
<h2><a name="Version5.70"></a>Version 5.70 (internal) (2/20/99)</h2>
5561
 
5562
<p>
5563
This fileset includes substantial changes to the interpreter in support of
5564
making it fully reentrant (eliminating writable globals).
5565
 
5566
<h3><a name="5.70_Incompatible_changes"></a>Incompatible changes</h3><pre>
5567
 
5568
(Interpreter)
5569
	- The ref_stack structure has been renamed ref_stack_t, and has been
5570
changed substantially.  Clients should now access all of its members, other
5571
than the pointers to the current block, through the macros or procedures
5572
defined in istack.h.  The STACK_LOOP_{BEGIN,END} macros have been removed.
5573
	- The argument of context_state_load is no longer const.
5574
	- Each file's table of operator definitions is now limited to 16
5575
entries.  op_def_table[] no longer exists: use op_index_def() instead.
5576
	- invalid_file_entry now has an associated VM space,
5577
avm_invalid_file_entry, that must be used in constructing invalid file refs.
5578
	- restore will now undo binding of pseudo-operators.  Attempting to
5579
bind a local pseudo-operator into a global procedure will cause an
5580
invalidaccess error.
5581
 
5582
</pre><h3><a name="5.70_Documentation"></a>Documentation</h3><pre>
5583
 
5584
Updates the driver documentation a bit.  It probably still includes a lot of
5585
out-of-date text.  (doc/Drivers.htm)
5586
 
5587
Improves the problem reporting form to make it absolutely clear that test
5588
data are required, and that the problem must be reproducible without using a
5589
viewer.  (doc/Bug-form.htm)
5590
 
5591
Documents the -dDOINTERPOLATE switch.  (doc/Use.htm)
5592
 
5593
Documents the difference between public and tester releases, in connection
5594
with making tester releases available to everyone.  (doc/New-user.htm)
5595
 
5596
Updates the list of history files.  (doc/Readme.htm)
5597
 
5598
Adds a questionnaire for people who want to be notified of new test
5599
releases.  (doc/Readme.htm, doc/Tester.htm)
5600
 
5601
</pre><h3><a name="5.70_Procedures"></a>Procedures</h3><pre>
5602
 
5603
Fixes problems:
5604
	- A ! was missing before an include.  (bcwin32.mak, msvc32.mak)
5605
	- A trailing \ in some macro definitions was quoted incorrectly.
5606
(bcwin32.mak, msvc32.mak)
5607
	- An editing error prevented a makefile from working.  (bcwin32.mak)
5608
	- The 16-bit spooler executable didn't reference its icon correctly.
5609
(gs16spl.rc)
5610
	- The Watcom makefiles had gotten badly out of date.  (watc.mak,
5611
watclib.mak, wccommon.mak)
5612
	- Some DEVICE_DEVS lines were too long for the shell to handle.
5613
(openvms.mmk)
5614
	- A space was missing before a colon.  (openvms.mmk)
5615
 
5616
Updates MSVC support to handle version 6.  (msvc32.mak)
5617
 
5618
Extends genconf to handle function types as well as image types, and changes
5619
the output for image types.  (genconf.c)
5620
 
5621
Desupports the use of CONFIG for selecting between multiple configurations,
5622
since parameterized output directories do this better.  (bcwin32.mak,
5623
dvx-gcc.mak, gs.mak, int.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
5624
openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
5625
watc.mak, watclib.mak, watcw32.mak)
5626
 
5627
Adds a -dDOINTERPOLATE switch to force Interpolate in all images.
5628
(lib/gs_init.ps)
5629
 
5630
</pre><h3><a name="5.70_Utilities"></a>Utilities</h3><pre>
5631
 
5632
Rewrites viewpcx to eliminate dependence on a special filter.
5633
(lib/viewpcx.ps)
5634
 
5635
</pre><h3><a name="5.70_Drivers"></a>Drivers</h3><pre>
5636
 
5637
Fixes problems:
5638
	- The [e]pswrite and pdfwrite drivers wrote out clipping paths using
5639
the winding number rule even if the path had been set with eoclip.
5640
(gdevpdfd.c, gdevvec.c)
5641
	- Some occurrences of ushort should have been gx_color_value.
5642
(gdevpbm.c)
5643
	- A comment was accidentally left outside comment quotes.
5644
(gdev3852.c)
5645
	- There was a char/byte mismatch not covered by a cast.
5646
(gdevdcrd.c)
5647
	- There were still some references to the 'huge' keyword, which has
5648
been superseded by FAR.  (gdevwdib.c)
5649
	- Some obsolete references to which_colors hadn't been removed.
5650
(gdevwdib.c)
5651
	- The [e]pswrite driver produced incorrect output for a curveto or
5652
closepath followed by a lineto and then a moveto.  (gdevps.c)
5653
	- The [e]pswrite driver could produce incorrect output for paths
5654
ending with a lineto.  (gdevps.c)
5655
	- The name paper_sizes was used both by a driver and by other code,
5656
causing a problem when building with -dNOPRIVATE.  (gdevclj.c)
5657
 
5658
Consolidates the X error handling statics into a structure.  (gdevxini.c)
5659
 
5660
Updates the pdfwrite driver to reflect the addition of state to the
5661
ASCII85Encode filter.  (gdevpsdf.c)
5662
 
5663
Adds a user-contributed driver for the Lexmark 5700 printer (black-and-white
5664
only).  (contrib.mak, gdevlxm.c)
5665
 
5666
Updates the mswinpr2 driver with a new, user-contributed one that includes
5667
interaction with the user.  (gdevwpr2.c)
5668
 
5669
</pre><h3><a name="5.70_Fonts"></a>Fonts</h3><pre>
5670
 
5671
Fixes problems:
5672
	- When TrueType support was present, the FONTPATH scanner didn't
5673
recognize TrueType fonts whose 'type' was "true" rather than the documented
5674
<00 01 00 00>.  (lib/gs_ttf.ps)
5675
	- When DEBUG was set, loading a TrueType font could cause an
5676
/undefined error.  (lib/gs_ttf.ps)
5677
 
5678
</pre><h3><a name="5.70_Interpreter"></a>Interpreter</h3><pre>
5679
 
5680
Fixes problems:
5681
	- Local (pseudo-)operators could get bound into global procedures
5682
with 'bind', causing dangling references.  Attempting this now causes an
5683
invalidaccess error.  Fixing this also required making restore undo binding
5684
of pseudo-operators.  (zmisc.c)
5685
	- A harmless dictfull error occurring during language level
5686
switching caused an error.  (zmisc2.c)
5687
	- If given a closed input file, flushfile caused an error, rather
5688
than doing nothing.  (zfileio.c)
5689
 
5690
Renames the ref_stack structure as ref_stack_t, and factors it so that the
5691
parts set only at initialization are separated from the dynamic parts, in
5692
support of moving the stacks from static to dynamic storage.  (icstate.h,
5693
idebug.h, idstack.h, iestack.h, iostack.h, iparam.h, iparray.h, istack.h,
5694
idebug.c, interp.c, iparam.c, istack.c, zcontext.c, zpacked.c, zvmem.c)
5695
 
5696
Moves the dynamic part of the stacks in-line in the context structure; gets
5697
rid of the statically allocated stacks.  (dstack.h, estack.h, icontext.h,
5698
icstate.h, idstack.h, iestack.h, interp.h, iostack.h, ostack.h, icontext.c,
5699
iinit.c, interp.c, zcontext.c)
5700
 
5701
Packages the dictionary lookup statistics in a structure, like the other
5702
statistics.  (idict.c)
5703
 
5704
Changes from dynamic to static initialization of the function type table.
5705
(int.mak, ifunc.h, iconf.c, zfunc.c, zfunc0.c, zfunc3.c)
5706
 
5707
Removes the PCXDecode filter.  (zfilterx.c)
5708
 
5709
Removes more writable statics.  (int.mak, btoken.h, files.h, icstate.h,
5710
igstate.h, ipacked.h, iscan.h, icontext.c, imain.c, iscan.c, iscanbin.c,
5711
zbseq.c, zcolor2.c, zcontext.c, zgstate.c, ziodev.c, zmath.c, zpcolor.c,
5712
zpacked.c)
5713
 
5714
Changes the representation of the operator table to avoid allocating a
5715
dynamic copy.  This introduces a limit of 16 entries per definition set.
5716
(int.mak, opdef.h, iconf.c, idebug.c, iinit.c, interp.c, iutil.c,
5717
zcontext.c, zcontrol.c, zdict.c, zfileio.c, zgstate.c, ztype.c)
5718
 
5719
Includes the ASCII85Decode filter in all configurations, for simplicity.
5720
(iscan.c, zfdecode.c)
5721
 
5722
Makes the invalid file reference point to a static object.  (files.h,
5723
icontext.c, zfile.c, ziodev.c)
5724
 
5725
Changes all dictfull error returns from the dictionary code to use
5726
return_error.  This should have been done a long time ago!  (idict.c)
5727
 
5728
Increases the predefined size of systemdict a little more because .upp files
5729
may define a lot of new entries.  (iinit.c)
5730
 
5731
Adds a few more interpreter statistics.  (interp.c)
5732
 
5733
</pre><h3><a name="5.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5734
 
5735
Fixes problems:
5736
	- Images never closed the data stream, placing a heavy load on the
5737
garbage collector to clean up streams and stream states.  (lib/pdf_draw.ps)
5738
	- Streams stored on external files didn't work.  (lib/pdf_base.ps)
5739
 
5740
Reorganizes code slightly to allocate less memory for in-line images.
5741
(lib/pdf_draw.ps)
5742
 
5743
Speeds up some common operations a little.  (lib/pdf_base.ps)
5744
 
5745
</pre><h3><a name="5.70_Streams"></a>Streams</h3><pre>
5746
 
5747
Removes the PCXDecode filter.  (spcxx.h [deleted], spcxd.c [deleted])
5748
 
5749
Changes the name of a variable for greater clarity.  (stream.c)
5750
 
5751
Splits off the ASCII85Decode filter into a separate file, since it turns out
5752
to be convenient to include it in all configurations.  (sa85d.h, sa85x.h,
5753
sa85d.c, sfilter2.c)
5754
 
5755
Makes an initialization entry point available for non-heap-allocated
5756
streams.  (stream.h, stream.c)
5757
 
5758
Changes the ASCII85Encode filter so it always produces lines of at most 80
5759
characters, not counting the EOD marker.  THIS IS A NON-BACKWARD-COMPATIBLE
5760
CHANGE, because this filter now needs a state structure, which it didn't
5761
before.  (sa85x.h, sfilter2.c)
5762
 
5763
</pre><h3><a name="5.70_Library"></a>Library</h3><pre>
5764
 
5765
Fixes problems:
5766
	- Reference counting of graphics state elements was wrong when
5767
creating multiple contexts, causing memory corruption. (bug probably
5768
introduced in 5.68) (gsstate.c)
5769
	- If CIE joint caches were created because the reference count of
5770
the existing caches was >1, the new caches weren't initialized correctly.
5771
(bug introduced in 5.60, found by Ray Johnston.)  (gscie.c)
5772
	- If Margins are set so that part of the default clipping region
5773
lies outside the ((0,0),(width,height)) device coordinate space, the fast
5774
case of images could cause a memory access error.  (gxifast.c)
5775
	- In the case of a halftone with more bits than levels,
5776
gx_check_tile_cache could incorrectly return false, causing images to render
5777
more slowly than they should.  (gzht.h, gxht.c)
5778
	- There was a const mismatch between an argument and the formal
5779
parameter.  (gdevprn.h, gdevprn.c, gxclread.c)
5780
	- An error in the definition of st_imager_state_num_ptrs caused the
5781
garbage collector to omit marking one pointer in imager states, possibly
5782
causing memory corruption.  (gxistate.h)
5783
	- The bbox device, used with no target, didn't properly handle
5784
images where more data was provided than needed.  (gdevbbox.c)
5785
 
5786
Removes any pretense of supporting multiple threads in a single-threaded
5787
environment.  Dummy synchronization primitives, however, are still provided.
5788
(gp_nsync.c)
5789
 
5790
Removes more writable statics.  (gximage.h, gxi12bit.c, gxino12b.c,
5791
gxipixel.c)
5792
 
5793
Changes the handling of image types, and adds similar handling for function
5794
types.  (gscdefs.h, gconf.c)
5795
 
5796
Consolidates the gs_std* files into a structure.  (gsio.h, gsmisc.c)
5797
 
5798
Speeds up the fastest (common) case of clipping fill_rectangle and copy_mono
5799
operations.  We could do the same for the other operations if we wanted.
5800
(gxclip.c)
5801
 
5802
Identifies this fileset as a tester release.  (gscdef.c)
5803
 
5804
</pre>
5805
 
5806
<hr>
5807
 
5808
<h2><a name="Version5.69"></a>Version 5.69 (internal) (2/4/99)</h2>
5809
 
5810
<p>
5811
This incremental fileset fixes minor compilation problems, as well as many
5812
problems with driver-based CRDs (not used by PostScript or PDF).
5813
 
5814
<h3><a name="5.69_Procedures"></a>Procedures</h3><pre>
5815
 
5816
Fixes problems:
5817
	- The OpenVMS makefile had not been updated properly to reflect the
5818
division of files into subdirectories.  (openvms.mak)
5819
	- A space was missing before a :.  (devs.mak)
5820
	- The MMK makefile had not been updated to reflect the renaming of
5821
the psm[raw] devices to pksm[raw].  (openvms.mmk)
5822
 
5823
Changes the default name of the build directory for the library test program
5824
from debugobj to libobj, so that one can work with both library and
5825
interpreter builds without interference.  (ugcclib.mak)
5826
 
5827
Adds -fno-builtin to the gcc switches, to detect failure to declare
5828
functions like memcpy, at a small cost in performance.  (ugcclib.mak,
5829
unix-gcc.mak)
5830
 
5831
</pre><h3><a name="5.69_Utilities"></a>Utilities</h3><pre>
5832
 
5833
Makes a couple of minor fixes to ansi2knr, suggested by users.  (ansi2knr.c)
5834
 
5835
Updates ps2ai.ps with an improved version from its author.  (lib/ps2ai.ps)
5836
 
5837
</pre><h3><a name="5.69_Drivers"></a>Drivers</h3><pre>
5838
 
5839
Fixes problems:
5840
	- The 32-bit CMYK "async" BMP driver was declared incorrectly as a
5841
non-async device.  (gdevbmpa.c)
5842
	- Some #includes were missing, because gcc didn't warn about
5843
failures to declare certain standard functions.  (x_.h, gdevdcrd.c, gdevx.c)
5844
	- The PC frame buffer device still referred to _ss and near.
5845
(gdevpcfb.c)
5846
	- The [e]pswrite driver didn't handle bitmaps with a non-zero X bit
5847
offset correctly.  (gdevps.c)
5848
	- The pdfwrite driver wrote all clipping paths with the winding
5849
number rule, even if they were established by eoclip.  (gdevpdfd.c)
5850
	- "Vector" drivers wrote all clipping paths with the winding number
5851
rule, even if they were established by eoclip.  (gdevvec.c)
5852
 
5853
Adds the CRDName parameter to the sample driver-based CRD.  (gdevdcrd.c)
5854
 
5855
Tweaks the sample driver-based CRD to make it a more realistic (closer to
5856
the PostScript default).  (gdevdcrd.c)
5857
 
5858
Adds the sample driver-based CRD to the modified X drivers.  (devs.mak,
5859
gdevxalt.c)
5860
 
5861
</pre><h3><a name="5.69_Interpreter"></a>Interpreter</h3><pre>
5862
 
5863
Fixes problems:
5864
	- Some #includes were missing, because gcc didn't warn about
5865
failures to declare certain standard functions.  (zchar1.c)
5866
	- Driver CRDs were not supported properly.  (zcrd.c, lib/gs_lev2.ps)
5867
 
5868
Changes some code because non-int switch expressions are not handled
5869
correctly in pre-ANSI C.  (igcref.c, zdevice.c)
5870
 
5871
Adds the ability to set the orientation of zero-length "dots".  (zgstate.c)
5872
 
5873
Adds comments on an alternative shallow-binding design.  (dstack.h)
5874
 
5875
Changes the threshold for repeatedly rescanning change lists so that it is
5876
based on the cumulative amount of rescanning and not the amount in a single
5877
pass.  (isave.c)
5878
 
5879
</pre><h3><a name="5.69_Streams"></a>Streams</h3><pre>
5880
 
5881
Changes some code because non-int switch expressions are not handled
5882
correctly in pre-ANSI C.  (sfilter1.c)
5883
 
5884
</pre><h3><a name="5.69_Library"></a>Library</h3><pre>
5885
 
5886
Fixes problems:
5887
	- Some casts to (gx_device *) were missing.  (gschar.c)
5888
	- Some #includes were missing, because gcc doesn't warn about
5889
failures to declare certain standard functions.  (gdevdgbr.c, gscie.c,
5890
gsmatrix.c, gxshade1.c)
5891
	- gxclread.c now needs gdevprn.h to declare certain procedures.  We
5892
tried very hard to make the command list machinery not depend on anything
5893
related to printer devices, but at this point we have not succeeded.
5894
(gxclread.c)
5895
	- For CRDs set by library clients, the is_identity flags in the
5896
caches were set incorrectly, producing incorrect output.  (gscie.h, gscie.c,
5897
gscrd.c, gscrdp.c)
5898
	- For CRDs set by library clients, the EncodeABC and RenderTable T
5899
procedures were sampled incorrectly.  (gsciemap.c, gscrd.c)
5900
	- The interpreter tried to sample the TransformPQR functions in the
5901
PostScript CRD even for driver CRDs.  (gscie.h, gscie.c)
5902
	- Library assistance was needed for the interpreter to support
5903
driver CRDs properly.  (gscrdp.h, gscrdp.c)
5904
	- The procedures that accessed cached CIE values didn't round the
5905
index, so accessing already-cached values could wipe out the cache.
5906
(gscie.c)
5907
	- The procedure that accessed cached RenderTable.T values simply
5908
wasn't implemented.  (gscrd.c)
5909
 
5910
Adds an "if (1)" to a macro to suppress "statement not reached" warnings
5911
from stupid compilers.  (gsmemlok.c)
5912
 
5913
Changes the syntactic form of some constant tables to suppress
5914
signed/unsigned warning messages.  (gsbitops.c, gxsample.c)
5915
 
5916
Changes some switch statements to if/else because non-int switch expressions
5917
are not handled correctly in pre-ANSI C.  (gdevmr8n.c, gxdcolor.c)
5918
 
5919
Adds the ability to set the orientation of zero-length "dots".  (gsline.h,
5920
gxline.h, gsline.c, gsstate.c, gxstroke.c)
5921
 
5922
Adds an allocator state variable to support the change in the rescanning
5923
algorithm.  (gxalloc.h)
5924
 
5925
</pre>
5926
 
5927
<hr>
5928
 
5929
<h2><a name="Version5.68"></a>Version 5.68 (internal) (1/29/99)</h2>
5930
 
5931
<p>
5932
This fileset implements PatternType 2 (gradient fill) Patterns.  All
5933
significant PostScript LanguageLevel 3 features are now implemented, except
5934
for DeviceN color spaces.  We have also verified that the MMK script for
5935
OpenVMS also works with MMS.
5936
 
5937
<p>
5938
Note that there are significant non-backward compatible changes to memory
5939
management for device instances: we are sorry about this, but just as with
5940
paths in 5.22, we had to fix this design problem at some point.
5941
 
5942
<h3><a name="5.68_Incompatible_changes"></a>Incompatible changes</h3><pre>
5943
 
5944
(Procedures)
5945
	- A new makefile, unix-aux.mak, must be included in all Unix
5946
top-level makefiles.  (It is included in the ones we distribute.)
5947
unixtail.mak is renamed unixlink.mak.
5948
 
5949
(Library)
5950
	- The names of the anti-aliasing parameters in the device color_info
5951
structure have been changed.
5952
	- Dummy definitions for PC-specific C keywords (_cs, _ds, _ss, near,
5953
far, huge) are no longer provided: these keywords should be removed from
5954
non-PC-specific code.
5955
	- The names of the alignment_mod, ptr_le, ptr_lt, ptr_ge, ptr_gt,
5956
and ptr_between macros have been changed to upper case (ALIGNMENT_MOD etc.)
5957
	- gs_make_null_device now takes an additional argument.
5958
	- The ccolor member of a gx_device_color is no longer inside a
5959
substructure.
5960
	- Clients now must initialize Pattern templates with
5961
gs_patternN_init, where N is the PatternType (normally 1), before filling in
5962
the members.
5963
	- gs_pattern_instance_common_t is renamed gs_pattern_instance_t;
5964
gs_pattern_instance is renamed gs_pattern1_instance.
5965
	- To set the target of a forwarding device, you must now use
5966
gx_device_set_target rather than setting the target member directly.
5967
	- Memory management for devices has changed substantially, and in a
5968
subtle way.  If you have code that calls the library, please read the
5969
documentation in gxdevcli.h.
5970
	- Callers of the driver create_buf_device procedure must always call
5971
it through gdev_create_buf_device, never directly.
5972
	- For composite and CID-keyed fonts, the character code returned by
5973
gs_show_current_char and gs_kshow_previous_char is now the full multi-byte
5974
character code rather than just the last byte of the code.
5975
	- gdev_cmap_set_method has been replaced by a device parameter,
5976
ColorMappingMethod.
5977
	- The CRD pointer parameter for param_write_cie_render1 and
5978
param_put_cie_render1 is no longer const.
5979
 
5980
</pre><h3><a name="5.68_Documentation"></a>Documentation</h3><pre>
5981
 
5982
Fixes problems:
5983
	- The documentation for resize_object and resize_string didn't allow
5984
the new size to be the same as the old size, didn't describe what data was
5985
preserved, and didn't guarantee to return the same object if the new size
5986
was the same as the old size.  (gsmemraw.h, gsmemory.h)
5987
	- The documentation for the value returned by the internal
5988
.getmetrics32 operator was incorrect.  (zchar32.c)
5989
	- The documentation for the special color mapping device didn't say
5990
that the caller had to call gs_setdevice_no_init to update graphics states.
5991
(gdevcmap.h)
5992
 
5993
Notes that OPENVMS.MMK works with both MMK and MMS.  (doc/Make.htm)
5994
 
5995
Adds a note to the C style guide about nested vs. multi-branch 'if'
5996
statements.  (doc/C-style.htm)
5997
 
5998
Notes that the multi-threaded ("async") drivers require libc version 6 or
5999
higher under Linux.  (doc/Make.htm)
6000
 
6001
Notes additional Irix/MIPSpro combinations that compile idict.c incorrectly,
6002
and gives a workaround.  (doc/Make.htm)
6003
 
6004
Adds a couple more acknowledgements.  (doc/Helpers.htm)
6005
 
6006
Documents the new -Z^ switch.  (doc/Use.htm)
6007
 
6008
Documents the new rules about memory management for device instances
6009
(gxdevcli.h, gxdevice.h)
6010
 
6011
</pre><h3><a name="5.68_Procedures"></a>Procedures</h3><pre>
6012
 
6013
Fixes problems:
6014
	- The "async" BMP devices were accidentally included in the default
6015
list for Unix, leading to a requirement for the POSIX thread package, which
6016
is not available on all systems.  (unix-gcc.mak)
6017
	- There was a minor typo in the new MMK script.  (openvms.mmk)
6018
	- The MMK script redefines macros, which MMS does not allow.
6019
(openvms.mmk)
6020
	- The gcc version test used gcc rather than $(CC) for the compiler
6021
name.  (unix-gcc.mak)
6022
	- There was a minor typo in the pcx2up device makefile entry.
6023
(devs.mak)
6024
	- Some commands in the Unix install rules referenced sh rather than
6025
$(SHELL).  (unixinst.mak)
6026
 
6027
Makes (dummy) in-RIP trapping an optional feature, and removes it from the
6028
default configuration.  (int.mak, lib.mak)
6029
 
6030
Splits off the build rules for the Unix auxiliary programs, so they can be
6031
shared between interpreter and library configurations.  (ugcclib.mak,
6032
unix-aux.mak, unix-gcc.mak, unixansi.mak, unixtail.mak [deleted],
6033
unixlink.mak, unixtrad.mak)
6034
 
6035
Adds the bitcmyk device to the list of devices for the library test program.
6036
(ugcclib.mak)
6037
 
6038
</pre><h3><a name="5.68_Utilities"></a>Utilities</h3><pre>
6039
 
6040
Fixes problems:
6041
	- ansi2knr didn't handle occurrences of '/' or quoted strings inside
6042
an argument list correctly.  (ansi2knr.c)
6043
 
6044
At the suggestion of a GNU person, makes ansi2knr check for output errors.
6045
(ansi2knr.c)
6046
 
6047
</pre><h3><a name="5.68_Drivers"></a>Drivers</h3><pre>
6048
 
6049
Fixes problems:
6050
	- Setting the resolution on the SPARCprinter didn't work.
6051
(gdevsppr.c)
6052
	- Even in PDF 1.1 compatibility mode, the PDF writer used a
6053
predictor to compress images.  (gdevpsdi.c)
6054
	- Reference counting for devices was not implemented consistently.
6055
(gdevxalt.c)
6056
	- gcc (again) missed some static / non-static inconsistencies.
6057
(gdevbmpa.c, gdevifno.c)
6058
 
6059
Removes all remaining uses of segment identifiers (_cs, _ds, _ss) from
6060
non-PC-specific code.  (gdev3852.c, gdevcdj.c, gdevhl7x.c, gdevl256.c,
6061
gdevmgr.c, gdevsgi.c, gdevsppr.c, gdevvglb.c)
6062
 
6063
Removes all remaining uses of the 'near' keyword from non-PC-specific code.
6064
(gdevcd8.c, gdevcdj.c, gdevcgm.c)
6065
 
6066
Changes uses of round_up to ROUND_UP.  (gdevmsxf.c, gdevpcx.c, gdevpx.c,
6067
gdevxxf.c)
6068
 
6069
Adds user-contributed support for 16-bit displays to the MS Windows driver.
6070
(gdevmswn.c, gdevwdib.c)
6071
 
6072
Adds a user-contributed driver (sunhmono) for the Harlequin variant of 1-bit
6073
Sun raster files.  We expect to add other varieties of Sun Raster file
6074
eventually as well.  (contrib.mak, gdevsunr.c)
6075
 
6076
Adds a user-contributed driver (fs600) for the Kyocera FS-600 laser printer.
6077
(devs.mak, gdevdjet.c)
6078
 
6079
Replaces the sample device CRD with a slightly hacked version of the default
6080
PostScript CRD, and moves it to a separate file for greater flexibility in
6081
testing.  (gdevdcrd.h, gdevbit.c, gdevdcrd.c)
6082
 
6083
Adds standard and "async" 32-bit CMYK BMP drivers (even though this is
6084
outside the published BMP format).  (gdevbmp.c, gdevbmpa.c)
6085
 
6086
Changes the names of the separated-CMYK PBM drivers from psm to pksm, to be
6087
more descriptive.  (devs.mak, openvms.mak, unix-gcc.mak, gdevpbm.c)
6088
 
6089
</pre><h3><a name="5.68_Platforms"></a>Platforms</h3><pre>
6090
 
6091
Fixes problems:
6092
	- On MS Windows and OS/2, "(%stdin) (r) file bytesavailable" caused
6093
a crash.  (gp_msio.c, gp_os2.c)
6094
 
6095
</pre><h3><a name="5.68_Fonts"></a>Fonts</h3><pre>
6096
 
6097
Fixes problems:
6098
	- TrueType fonts with fewer glyph names in post than entries in loca
6099
caused an error.  (gs_ttf.ps)
6100
 
6101
Adds additional tracing to the TrueType font loader.  (lib/gs_ttf.ps)
6102
 
6103
Per Adobe, adds the Euro symbol under the name /Euro (capitalized) to
6104
various built-in Encodings.  (lib/gs_mro_e.ps, lib/gs_pdf_e.ps,
6105
lib/gs_sym_e.ps, lib/gs_wan_e.ps)
6106
 
6107
</pre><h3><a name="5.68_Interpreter"></a>Interpreter</h3><pre>
6108
 
6109
Fixes problems:
6110
	- An extraneous file got left in the fileset.  (lib/pdf_main.ps.sav
6111
[deleted])
6112
	- The number of required arguments for .pathbbox was incorrectly
6113
specified as 0 rather than 1.  (zpath1.c)
6114
	- Opening a ReusableStreamDecode filter with a string source and no
6115
decoding filters left an extra value on the stack.  (lib/gs_ll3.ps)
6116
	- Type 32 fonts sometimes didn't display the characters, or
6117
displayed them offset.  (lib/gs_typ32.ps)
6118
	- In LanguageLevel 3, copypage still called EndPage with 1 rather
6119
than 0.  (lib/gs_init.ps)
6120
	- The HalftoneName parameter was missing from the trapping parameter
6121
set.  (lib/gs_ll3.ps)
6122
	- CMap character entries were processed in the wrong order.
6123
(lib/gs_cmap.ps)
6124
	- CMap'ed non-CID fonts didn't work properly, because they called
6125
BuildChar with the original character code rather than BuildGlyph with the
6126
mapped glyph.  (zchar.c)
6127
	- Using an out-of-range CID value with a CIDFont caused an error
6128
rather than substituting a notdef.  (lib/gs_cidfn.ps)
6129
	- CIDFontType 0 fonts with a GlyphDirectory didn't fall back to the
6130
indexed character data if the CID wasn't in the GlyphDirectory.
6131
(lib/gs_cidfn.ps)
6132
	- CIDFontType 0 fonts didn't substitute a notdef at all.
6133
(lib/gs_cidfn.ps)
6134
 
6135
Changes uses of round_up to ROUND_UP.  (igcstr.c)
6136
 
6137
Updates clients for the object-oriented changes to Patterns.  (zcolor2.c,
6138
zpcolor.c)
6139
 
6140
Implements the rest of PatternType 2.  (ipcolor.h, zpcolor.c, zshade.c)
6141
 
6142
Makes in-RIP trapping an optional feature.  (lib/gs_ll3.ps, lib/gs_trap.ps)
6143
 
6144
Updates clients for the change in gs_show_current_char.  (zcfont.c, zchar.c)
6145
 
6146
Changes the dict_*_param macros to procedures, for easier tracing.  This
6147
includes a change in the return value of dict_matrix3_param.  (icie.h,
6148
zcie.c, zcrd.c)
6149
 
6150
</pre><h3><a name="5.68_Streams"></a>Streams</h3><pre>
6151
 
6152
Changes uses of round_up to ROUND_UP.  (scfd.c, scfe.c)
6153
 
6154
</pre><h3><a name="5.68_Library"></a>Library</h3><pre>
6155
 
6156
Fixes problems:
6157
	- Once again, gcc failed to flag a static procedure declaration
6158
followed by a non-static definition.  (gdevprna.c, gximage3.c)
6159
	- Anti-aliasing no longer worked for the x11alpha device.  To fix
6160
this, we factored out the anti-aliasing information in the
6161
gx_device_color_info structure.  (bug introduced in 5.65) (gxdevcli.h,
6162
gdevabuf.c, gdevdflt.c, gdevxalt.c, gsdparam.c)
6163
	- An empty declaration generated an extraneous semicolon.
6164
(gxclip2.h)
6165
	- Some macros that generated an if-else construct didn't enclose it
6166
in BEGIN/END, possibly leading to incorrect parsing.  (gxobj.h)
6167
	- A comment was missing a closing */.  (gxpageq.h)
6168
	- The handling of the phase in Pattern filling was broken again.  We
6169
probably broke it with the "fix" introduced in 5.24.  (gxp1fill.c)
6170
	- Looking up an undefined IODevice name caused a memory access
6171
error.  (bug claimed to be fixed in 5.24) (gsiodev.c)
6172
	- The null device installed for stringwidth didn't copy the color
6173
mapping information from its target, causing confusion if the current device
6174
was a pattern accumulator.  (gxdevcli.h, gxdevice.h, gschar.c, gsdevice.c,
6175
gxpcmap.c)
6176
	- mem_mapped2_copy_mono produced incorrect results for byte-aligned
6177
rectangles exactly 1 byte wide (fix from John D.), and could also access
6178
data 1 byte beyond the end of each source row.  (gdevm2.c)
6179
	- In the case of a masked image or a RasterOp involving a Pattern,
6180
the garbage collector could fail to follow a pointer, possibly causing
6181
memory corruption.  (gsdcolor.h)
6182
	- Assigning a double value to a float variable caused an infinite
6183
recursion.  (gxshade1.c)
6184
	- Failure to detect when the region being filled had become very
6185
small caused excessive recursion.  (gxshade4.c)
6186
	- The default implementations of resize_object didn't always return
6187
the old object if the old and new sizes were the same.  (gsalloc.c,
6188
gsmalloc.c)
6189
	- The left side bearing of TrueType characters was sometimes
6190
calculated incorrectly.  (gstype42.c)
6191
	- The TrueType renderer disregarded the left side bearing values.
6192
We aren't sure that the change we made is right, but it seems to produce
6193
better output.  (gstype42.c)
6194
	- Shadings used the first Decode entry for both X and Y values.
6195
(gxshade.c)
6196
	- Function-based Shadings sometimes omitted part of their output.
6197
(gxshade1.c)
6198
	- Function-based Shadings didn't access 4-bit-per-sample data
6199
correctly.  (gsfunc0.c)
6200
	- The malloc/free-based allocator didn't finalize objects when
6201
freeing them.  (gsmalloc.c)
6202
	- Reference counting for device instances was not implemented even
6203
close to consistently.  THIS IS THE BUG TAIL WE WORRIED ABOUT IN 5.24.
6204
(gxdevcli.h, gxdevice.h, gdevbbox.c, gdevcmap.c, gdevmem.c, gdevnfwd.c,
6205
gdevplnx.c, gdevprn.c, gdevrops.c, gsalphac.c, gschar.c, gsdevice.c,
6206
gsropc.c, gxidata.c, gxmclip.c, gxipixel.c, gxpcmap.c)
6207
	- Some device structure definitions failed to include finalization.
6208
(gdevmrop.h, gsstruct.h, gxclip2.h, gxcpath.h, gxdevmem.h, gxmclip.h)
6209
	- Reference counting for the device halftone wasn't correct in the
6210
band rasterizer.  This must be a recently introduced bug, because otherwise
6211
banding couldn't have worked.  (gxclrast.c)
6212
	- When banding, high-level images that extended off the page in the
6213
Y direction caused memory access errors.  (gxclimag.c)
6214
	- [a]widthshow didn't use the correct value for comparison for
6215
composite fonts with FMapType 9 (CMap).  (gxchar.h, gschar.c, gschar0.c,
6216
gsfcmap.c)
6217
	- The special color mapping device only worked for
6218
device_cmap_monochrome.  (gdevcmap.h, gdevcmap.c)
6219
	- The definition of gs_memory_locked_release was wrong.
6220
(gsmemlok.h, gsmemlok.c)
6221
	- An opaque structure definition (for gx_device) was missing,
6222
creating a need for an otherwise unnecessary #include. (gscrdp.h)
6223
	- Certain cached values weren't computed when needed.  Fixing this
6224
required removing 'const' from a parameter type.  (gscrdp.h, gscrdp.c)
6225
	- gxclmem.c #included "gsmalloc.h", which is no longer needed.
6226
(gxclmem.c)
6227
	- Memory management for device halftones was incorrect, leading to
6228
objects being freed twice or other memory corruption during band rendering.
6229
(gzht.h, gsht.c, gsstate.c, gxclrast.c, gxistate.c)
6230
	- Setting a driver-originated CRD didn't invalidate cached
6231
information, leading to incorrect output.  (gscrdp.c)
6232
	- A consistency check on driver-originated CRDs was incorrect,
6233
causing valid CRDs to be rejected.  (gscrdp.c)
6234
 
6235
Removes dummy definitions for old PC-specific language extensions.
6236
(stdpre.h)
6237
 
6238
Removes uses of the PC-specific 'huge' keyword.  (gdevmem.c)
6239
 
6240
Removes uses of the PC-specific 'near' keyword.  (gdevabuf.c, gdevbbox.c)
6241
 
6242
Changes the pointer comparison macros to upper-case names.  (gxalloc.h,
6243
stdpre.h, gsalloc.c, gsmisc.c)
6244
 
6245
Changes the alignment_mod macro to upper case.  (stdpre.h, gdevdbit.c,
6246
gdevdgbr.c, gsparams.c, gxifast.c)
6247
 
6248
Changes the round_up and round_down macros to upper case.  We retain the
6249
lower-case definitions for the sake of the PCL code.  (gxfcache.h, gxobj.h,
6250
stdpre.h, gdevalph.c, gdevmem.c, gsalloc.c, gspath1.c, gxccman.c,
6251
gxclimag.c, gxifast.c)
6252
 
6253
Makes Pattern colors more object-oriented, to support PatternType 2,
6254
splitting gsptype1.c off from gspcolor.c in the process.  (gsccolor.h,
6255
gsdcolor.h, gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h, gxpcolor.h,
6256
gspcolor.c, gsptype1.c, gxpcmap.c)
6257
 
6258
Implements PatternType 2.  (gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h,
6259
gxpcolor.h, gxshade.h, gspcolor.c, gsptype2.c)
6260
 
6261
Changes the interface to shaded filling to make filling rectangles more
6262
efficient.  (gsshade.h, gscolor3.c, gsshade.c)
6263
 
6264
Improves some macros that didn't handle expressions as arguments.
6265
(gsrect.h)
6266
 
6267
Improves tracing of loading the CIE caches.  (gscie.c)
6268
 
6269
Cleans up some formatting, and replaces some floating point divides with
6270
multiplies.  (gstype42.c)
6271
 
6272
Adds default values for the MaxSeparations (1), Separations (false), and
6273
SeparationColorNames (empty array) device parameters.  (gsdparam.c)
6274
 
6275
Adds -Z^ to trace reference counting.  (gsrefct.h, gsmemory.c)
6276
 
6277
Changes the definition of finalization so that finalization procedures *can*
6278
assume that objects they reference still exist.  This is necessary so that
6279
forwarding devices can decrement the reference counts of their targets.
6280
Fortunately, all invocations of finalization (in 'restore', the garbage
6281
collector, and freeing) already have this property.  (gsstruct.h)
6282
 
6283
Extends CRD initialization so that cached values may be copied from an
6284
existing CRD.  (gscrd.h, gscrd.c)
6285
 
6286
Adds a wrapper to the driver create_buf_device procedure to increment the
6287
reference count, so that buffer devices can be freely used in graphics
6288
states and as a target.  (gxdevcli.h, gdevprn.c, gxclread.c)
6289
 
6290
Removes recursion from the shading rendering code, in preparation for making
6291
it interruptible (required for DeviceN color mapping callouts).
6292
(gxshade4.h, gxshade1.c, gxshade4.c, gxshade6.c)
6293
 
6294
Monitor-locks the default allocator based on the C heap, if multi-threading
6295
is being supported at all.  (lib.mak, gsmalloc.h, gsmalloc.c)
6296
 
6297
Speeds up the implementation of mem_true32_copy_mono for the common case.
6298
(gdevm32.c)
6299
 
6300
Adds a (disabled) option for defining gx_color_index as a pointer or a
6301
structure, for testing.  (gxcindex.h)
6302
 
6303
Makes the library test program test the special color mapper more
6304
thoroughly.  (gslib.c)
6305
 
6306
</pre>
6307
 
6308
<hr>
6309
 
6310
<h2><a name="Version5.67"></a>Version 5.67 (internal) (1/8/99)</h2>
6311
 
6312
<p>
6313
This fileset adds more PostScript LanguageLevel 3 capability:
6314
<ul>
6315
<li>	- Complete implementation of shfill.
6316
<li>	- Most of the expanded CMap capabilities.
6317
<li>	- ReusableStreamDecode filter.
6318
<li>	- FontType 2 for CFFs (formerly done in an incompatible way).
6319
<li>	- HalftoneMode user parameter.
6320
<li>	- HalftoneTypes 6, 10, and 16.
6321
<li>	- ImageType 3 images.
6322
<li>	- UseCIEColor device parameter.
6323
</ul>
6324
 
6325
<p>
6326
It also adds a build script for MMK (which may also work with MMS) under
6327
OpenVMS, and Uli Wortmann's drivers for the H-P color inkjet printers.
6328
Among other bug fixes, it eliminates about half the "possibly uninitialized
6329
variable" compiler warnings.
6330
 
6331
<h3><a name="5.67_Incompatible_changes"></a>Incompatible changes</h3><pre>
6332
 
6333
(Library)
6334
	- The default UCR and BG functions are now f(k) = k rather than f(k)
6335
= 0.
6336
	- The set_[d]fmul2fixed_vars macros have been removed from
6337
gxfixed.h.  Clients must use the new CHECK/FINISH_[D]FMUL2FIXED_VARS macros.
6338
(We don't think there are any such clients outside Ghostscript itself.)
6339
	- The internal procedure gx_cpath_intersect_slow is replaced with
6340
gx_cpath_intersect_path_slow, with different arguments.
6341
	- gs_color_space_type_Device{Gray,RGB,CMYK} are now private.
6342
Clients should use the gs_cspace_Device{Gray,RGB,CMYK} access procedures in
6343
gscspace.h to obtain device color space objects.
6344
	- FontType 2 was renamed from ft_CFF to ft_encrypted2.
6345
	- FontType 2 fonts now have FontType = ft_encrypted2, rather than
6346
ft_encrypted with CharstringType = 2.  CharstringType no longer exists.
6347
	- Type 1 / Type 2 fonts now have an additional member, interpret,
6348
that must be initialized.
6349
	- gdev_prn_render_lines and gdev_prn_get_band_buffer replace
6350
gdev_prn_locate_overlay_buffer and gdev_prn_get_overlay_bits.  "Async"
6351
drivers must now use the new procedures to implement partial-page rendering
6352
recovery.
6353
	- Clients that pass ImageType 3 images where the mask and the image
6354
are not scaled identically, or that call image_plane_data without knowing
6355
the image type, must now call gs_image_planes_wanted or
6356
gx_image_planes_wanted in order to find out which subset of the data planes
6357
to pass to the next call of image_plane_data.
6358
	- gx_image_enum_common_init now takes slightly different arguments.
6359
	- gs_imager_state_initialize now initializes the entire imager
6360
state, including halftone, dev_ht, and ht_cache.
6361
	- The argument lists for the plane_data and end_image procedures in
6362
image enumerators have changed.
6363
 
6364
</pre><h3><a name="5.67_Documentation"></a>Documentation</h3><pre>
6365
 
6366
Fixes problems:
6367
	- The 5.66 News mentioned the non-existent WAITFILE macro, and had
6368
another minor typo.  (doc/News.htm)
6369
	- The URL for the user-contributed H-P 850c driver was incorrect.
6370
(doc/Devices.htm, contrib.mak)
6371
	- The documentation for the driver image API had gotten out of date.
6372
(doc/Drivers.htm)
6373
 
6374
Greatly improves documentation for the page queue.  (from Artifex 5.50c)
6375
(gxpageq.h)
6376
 
6377
Documents the fact that Solaris builds now need -lposix4 for &lt;semaphore.h&gt;.
6378
(doc/Make.htm)
6379
 
6380
Adds a stack status comment in .pdfshow.  (lib/gs_pdfwr.ps)
6381
 
6382
Documents the new -Z` debugging switch.  (doc/Use.htm)
6383
 
6384
Touches up some formatting in the C style guide, and adds a mention of the
6385
space-before-: rule for makefiles.  (doc/C-style.htm)
6386
 
6387
Adds documentation for the new H-P 8xx drivers.  (doc/Devices.htm)
6388
 
6389
Splits off news for versions 5.0 - 5.50 into a separate file.
6390
(doc/History5.htm)
6391
 
6392
</pre><h3><a name="5.67_Procedures"></a>Procedures</h3><pre>
6393
 
6394
Fixes problems:
6395
	- On MS Windows platforms, the DLL object file wasn't created in the
6396
proper directory.  (from Artifex 5.55) (msvc32.mak)
6397
	- cfonts.mak didn't have no-op commands for rules that didn't
6398
contain any commands.  (cfonts.mak)
6399
	- The version number for libpng was different from libpng's own
6400
version numbering system.  (libpng.mak)
6401
	- Solaris builds now need -lposix4 for &lt;semaphore.h&gt;.
6402
(unix-gcc.mak, unixansi.mak, unixtrad.mak)
6403
	- The makefiles redefined a number of macros, which MMS doesn't
6404
allow.  (bcwin32.mak, gs.mak, int.mak, lib.mak, libpng.mak, msvc32.mak,
6405
openvms.mak, openvms.mmk, unix-gcc.mak, unixansi.mak, unixtrad.mak,
6406
version.mak)
6407
 
6408
Changes cp.bat and rm.bat to eliminate "File not found" messages.  (from
6409
Artifex 5.55) (cp.bat, rm.bat)
6410
 
6411
Changes all platform-independent makefiles to add a space before the : that
6412
separates the targets from the dependencies, to allow the makefiles to be
6413
used with MMS/MMK.  (cfonts.mak, contrib.mak, devs.mak, gs.mak, int.mak,
6414
jpeg.mak, lib.mak, libpng.mak, zlib.mak)
6415
 
6416
Adds a script for compiling Ghostscript on OpenVMS systems with MMK.  This
6417
has not been tested extensively.  (doc/Make.htm, openvms.mmk)
6418
 
6419
Changes the set of optimization switches for MSVC++.  We believe the new
6420
switches produce working executables, which /O2 didn't.  (msvc32.mak,
6421
msvccmd.mak)
6422
 
6423
Updates the default expected libpng version to 1.0.2.  (bcwin32.mak,
6424
dvx-gcc.mak, msvc32.mak, msvclib.mak, openvms.mak, os2.mak, ugcclib.mak,
6425
unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watclib.mak,
6426
watcw32.mak)
6427
 
6428
</pre><h3><a name="5.67_Utilities"></a>Utilities</h3><pre>
6429
 
6430
Fixes problems:
6431
	- Default scaling in viewcmyk.ps was broken.  (lib/viewcmyk.ps)
6432
 
6433
Updates pdf2dsc.ps with a newer (user-contributed) version that generates
6434
DocumentMedia and PageMedia comments.  (lib/pdf2dsc.ps)
6435
 
6436
</pre><h3><a name="5.67_Drivers"></a>Drivers</h3><pre>
6437
 
6438
Fixes problems:
6439
	- An int * was provided where a uint * was required.  (gdevpbm.c)
6440
	- ps2ps -dLanguageLevel=1 generated invalid output.  (gdevps.c)
6441
	- The X drivers crashed on gray-scale displays.  (bug probably
6442
introduced in 5.61)  (gdevx.c)
6443
	- The width and height of the cljet5 device were interchanged.
6444
(from Artifex) (gdevclj.c)
6445
	- The PDF writer didn't clip cached characters properly.  (bug
6446
introduced somewhere between 3.51 and 5.10) (gdevpdfi.c)
6447
	- For stroked paths with a non-uniform CTM, the PDF writer could
6448
emit coordinates larger than 32K, which Acrobat handles incorrectly.
6449
(gdevpdfd.c)
6450
 
6451
Restructures some code to suppress bogus "possibly uninitialized variable"
6452
warnings.  (gdevpdfm.c, gdevps.c)
6453
 
6454
Adds some unnecessary initializations to suppress bogus "possibly
6455
uninitialized variable" warnings.  (gdevpbm.c, gdevpdfd.c, gdevvec.c,
6456
gdevxalt.c)
6457
 
6458
Rewrites the (contributed) X11 xfont code to remove code duplication.
6459
(gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
6460
 
6461
Adds a user-contributed driver for the H-P LaserJet 3100 with H-P software.
6462
(gdevmeds.h, gdevl31s.c, gdevmeds.c)
6463
 
6464
Adds a user-contributed option for 600 dpi output on H-P DesignJet
6465
650C-compatible printers.  (gdevcdj.c)
6466
 
6467
Removes unnecessary references to device color spaces.  (gdevpdfi.c)
6468
 
6469
Changes the [e]pswrite and pdfwrite drivers to use EndOfBlock rather than
6470
Rows for CCITTFax image encoding, producing slightly smaller output.
6471
(gdevpsdf.c)
6472
 
6473
Changes the sample async driver to use gdev_prn_render_lines and
6474
gdev_prn_get_band_buffer instead of locate_overlay_buffer and
6475
get_overlay_bits.  Unfortunately, because "async" memory management is
6476
broken, we have no way to test the code.  (gdevbmpa.c)
6477
 
6478
Updates clients for the change in gx_image_enum_common_init.  (gdevpdfi.c,
6479
gdevvec.c)
6480
 
6481
Adds Uli Wortmann's drivers for the H-P color inkjet printers.
6482
(contrib.mak, gdevcd8.c)
6483
 
6484
Adds mode 9 compression to the PCL printer utilities.  (gdevpcl.h,
6485
gdevcdj.c, gdevpcl.c)
6486
 
6487
Updates implementors for the change in the plane_data and image_end image
6488
processing procedures.  (gdevpdfi.c, gdevps.c, gdevpx.c)
6489
 
6490
</pre><h3><a name="5.67_Fonts"></a>Fonts</h3><pre>
6491
 
6492
Fixes problems:
6493
	- The PFM files for URW Grotesk and Antiqua had some extraneous ^M
6494
characters inserted before ^J characters.  (fonts/u003043t.pfm,
6495
fonts/u004006t.pfm)
6496
	- CID-keyed fonts didn't handle GlyphDirectory correctly.
6497
(lib/gs_cidfn.ps)
6498
	- CIDFontType 0 fonts with 0-length Subrs caused an error.
6499
(lib/gs_cidfn.ps)
6500
	- Malformed TrueType fonts with overlapping tables (which are
6501
nevertheless apparently acceptable to Windows) caused an error.
6502
(lib/gs_ttf.ps)
6503
	- The Hershey font repairs documented in fileset 5.24 apparently
6504
never happened: the makeher.ps program was fixed, but the derived fonts were
6505
still broken.  (fonts/h*.ps)
6506
	- In some Fontmaps, the /Charter-* font names were linked directly
6507
to the Bitstream fonts, rather than being aliases for /CharterBT-*.
6508
(lib/Fontmap.GS, lib/Fontmap.Sol, lib/Fontmap.Ult)
6509
 
6510
Makes undefined fonts execute the SubstituteFont procedure in $error, per a
6511
posting by Stephen Zisk of Adobe on pdf-prepress-l on 10/8/97.
6512
(lib/gs_fonts.ps)
6513
 
6514
Changes the interpreter-level CIE color space install procedures to reflect
6515
the addition of const to the color space argument. (zcie.c)
6516
 
6517
</pre><h3><a name="5.67_Interpreter"></a>Interpreter</h3><pre>
6518
 
6519
Fixes problems:
6520
	- The interpreter appeared to be a distiller even when the current
6521
device was not pdfwrite.  We fixed this by patching 'where' to make the
6522
distiller operators visible iff the current device is pdfwrite.  We also
6523
moved the setcolor hack in 'where' into PostScript code.  (lib/gs_init.ps,
6524
lib/gs_lev2.ps, lib/gs_pdfwr.ps, zmisc2.c)
6525
	- The current color space for shfill wasn't identically the same
6526
color space as the one in the shading.  (gs_ll3.ps)
6527
 
6528
Changes the default UCR and BG functions from f(k) = 0 to f(k) = k.
6529
(lib/gs_init.ps)
6530
 
6531
Adds some unnecessary initializations to suppress bogus "possibly
6532
uninitialized variable" warnings.  (igc.c, zcie.c)
6533
 
6534
Restructures some code slightly to suppress a bogus "possibly uninitialized
6535
variable" warning.  (zdevice.c)
6536
 
6537
Brings the CMap machinery up to LL3, by allowing a single CMap to reference
6538
multiple fonts (usefont, usematrix, and array CIDSystemInfo).
6539
(lib/gs_cmap.ps, zfcmap.c)
6540
 
6541
Finishes implementing ReusableStreamDecode.  The implementation is very
6542
inefficient -- it reads the entire contents into a string -- but it passes
6543
the Genoa FTS.  (lib/gs_ll3.ps, lib/gs_res.ps, zfreuse.c)
6544
 
6545
Changes CFFs with CharstringType = 2 to generate FontType 2 fonts, rather
6546
than FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
6547
implementations.  (lib/gs_cff.ps, lib/gs_type1.ps, lib/type1ops.ps, bfont.h,
6548
ichar1.h, ifont.h, ifont1.h, zbfont.c, zchar1.c, zchar2.c, zcharx.c,
6549
zfont.c, zfont1.c, zfont2.c)
6550
 
6551
Adds the ability to create (with .bytestring) and do a few operations
6552
(currently only length, put, putinterval) on byte arrays.  This is needed
6553
for implementing ReusableStringDecode filters with >64K bytes of data, and
6554
for the LL3 halftone types.  (zgeneric.c, zstring.c)
6555
 
6556
Implements HalftoneMode, and HalftoneTypes 6, 10, and 16.  To do this, we
6557
introduce an internal HalftoneType 7.  (lib/gs_dps2.ps, lib/gs_init.ps,
6558
lib/gs_ll3.ps, lib/gs_res.ps, zht2.c)
6559
 
6560
Finishes implementing ImageType 3 images.  (zimage.c, zimage3.c)
6561
 
6562
Adds the hooks in ColorSpace defineresource and undefineresource for
6563
detecting definitions that interact with UseCIEColor.  (gs_res.ps)
6564
 
6565
Implements UseCIEColor at the interpreter level.  (lib/gs_dps1.ps,
6566
lib/gs_ll3.ps, zcolor1.c, zcolor2.c, zimage.c, zmisc3.c)
6567
 
6568
Touches up some formatting.  (igstate.h)
6569
 
6570
</pre><h3><a name="5.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6571
 
6572
Fixes problems:
6573
	- A MediaBox with a non-zero llx or lly would produce incorrect
6574
output.  The way we fixed this doesn't exactly match Acrobat, but it
6575
produces reasonable output.  (based on a change from Artifex 5.55)
6576
(lib/pdf_main.ps)
6577
	- Colored patterns didn't work properly.  (lib/pdf_draw.ps)
6578
	- The resources in a Pattern dictionary weren't made available
6579
during the execution of the PaintProc.  (fix from Artifex) (lib/pdf_draw.ps)
6580
 
6581
</pre><h3><a name="5.67_Streams"></a>Streams</h3><pre>
6582
 
6583
Adds a flag to the ASCIIHexEncode filter to indicate whether or not to write
6584
an EOD, required for Level 1 output from the pswrite device.  (sstring.h,
6585
sstring.c)
6586
 
6587
Adds a close_at_eod flag to the stream state, for implementing reusable
6588
streams; also cleans up some formatting.  (stream.h, stream.c)
6589
 
6590
</pre><h3><a name="5.67_Library"></a>Library</h3><pre>
6591
 
6592
Fixes problems:
6593
	- Black-and-white images with Interpolate = true produced
6594
undesirable artifacts if the image resolution was close to that of the
6595
device.  We now disable Interpolate in this case.  (gxiscale.c)
6596
	- In "async" mode, get_hardware_params did an unnecessary flush and
6597
reopen.  (from Artifex 5.50c) (gdevprna.c)
6598
	- The computation of the minimum band height for the "async" reader
6599
was incorrect. (from Artifex 5.50c) (gdevbmpa.c)
6600
	- The "fix" for reallocating async buffer memory in 5.50 was
6601
incorrect. (from Artifex 5.55) (gdevprn.c)
6602
	- The "async" reader called clist_finish_page, which it shouldn't.
6603
(from Artifex 5.50c) (gdevprn.c)
6604
	- The image enumeration procedures for ImageType 4 were unnecessary,
6605
since the ImageType 1 code now handles ImageType 4 as well.  (gximage4.c)
6606
	- The structure descriptor for tile clipping devices was
6607
unnecessary, since these are the same as mask clipping devices.  (gxclip2.h)
6608
	- There was a trailing comma in an enumeration list.  (gsbitops.c)
6609
	- Some compilers didn't like initializing a uint with ~0.
6610
(gdevm1.c)
6611
	- shfill unnecessarily saved, reset, and restored the graphics
6612
state.  (gscolor3.c)
6613
	- Radial shadings always extended the shading to radius = 0.
6614
(gxshade1.c)
6615
	- An identifier exceeded VMS's limit of 31 characters.  (gdevprn.h,
6616
gdevprn.c)
6617
	- A header file didn't #include enough of its prerequisites.
6618
(gxpcolor.h)
6619
	- Images with non-default ImageMatrix weren't written correctly in
6620
the band list. (bug introduced in 5.60)  (gximage1.c)
6621
	- Banded images that had to use the default implementation incurred
6622
an extra level of procedure call for each block of data.  (gxclimag.c)
6623
	- Images rotated by other than a multiple of 90 degrees produced
6624
incorrect output, because pie-&gt;rect.p.y was updated after each block of
6625
data, causing image_band_box to produce inconsistent results.  (bug
6626
introduced by async changes in 5.50) (gxclimag.c)
6627
	- The client_data pointer in client_order halftones wasn't traced
6628
correctly, possibly causing memory corruption if this type of halftone was
6629
used.  (These are not currently used by the PostScript interpreter.)
6630
(gsht.c, gsht1.c)
6631
	- ImageType 3 images didn't handle subrectangles.  (Not a problem
6632
for PostScript, which doesn't generate subrectangles, or for PCL, which
6633
doesn't use them.)  (gximage3.c)
6634
	- If a VMerror occurred when setting up an ImageType 3 image. an
6635
attempt could be made to free an uninitialized pointer.  (gximage3.c)
6636
	- ImageType 4 images with 1 to 8 bits per sample and Decode = [1 0]
6637
didn't test transparency correctly. (bug introduced in 5.60) (gximage.h,
6638
gxicolor.c, gximono.c, gxipixel.c)
6639
	- setgray, setrgbcolor, sethsbcolor, and setcmykcolor didn't use
6640
gs_cspace_assign, causing code duplication.  After this fix, we made the
6641
device color space types private, since there are no longer any references
6642
to them outside gscspace.c.  (gxcspace.h, gscolor.c, gscolor1.c, gscspace.c)
6643
	- gs_cspace_assign was misspelled cs_cspace_assign.  (gscspace.h)
6644
	- setgray didn't set the pattern pointer of the current color to 0,
6645
possibly causing the GC to retain patterns it shouldn't.  (gscolor.c)
6646
	- The dev_ht member of an imager (or graphics) state wasn't included
6647
in the macro that enumerates reference-counted pointers.  This probably had
6648
no effect, since the macro isn't used.  (gxistate.h)
6649
	- When the band rasterizer freed its imager state, the halftone and
6650
device halftone structures weren't freed, possibly causing memory leakage.
6651
(gsistate.c)
6652
 
6653
Changes the default UCR and BG functions from f(k) = 0 to f(k) = k, per a
6654
user's suggestion.  We aren't sure which matches the Adobe implementations
6655
on color devices.  (gxdcconv.c)
6656
 
6657
Conditionally removes some variables that are not needed on big-endian
6658
systems.  (gdevm1.c)
6659
 
6660
Restructures some code to suppress bogus "possibly uninitialized variable"
6661
warnings.  (gxfixed.h, gdevddrw.c, gsmatrix.c, gsmisc.c, gxclimag.c)
6662
 
6663
Adds a couple of unnecessary initializations to suppress bogus "possibly
6664
uninitialized variable" warnings.  (gsbitops.c)
6665
 
6666
Implements BBox, Background, and Extend for shadings.  (Background isn't
6667
tested yet, because it only takes effect for pattern shading, which isn't
6668
implemented yet.)  (gsshade.h, gxacpath.h, gxistate.h, gxpath.h, gscolor3.c,
6669
gsshade.c, gxacpath.c, gxacpath.c, gxcpath.c)
6670
 
6671
Brings the CMap machinery up to LL3, by allowing a single CMap to reference
6672
multiple fonts (usefont, usematrix, and array CIDSystemInfo).  (gsfcmap.h,
6673
gxfcmap.h, gsfcmap.c)
6674
 
6675
Adds more tracing output to the band list reader.  (gxclrast.c)
6676
 
6677
Cleans up some formatting.  (gstext.h, gxtext.h)
6678
 
6679
Replaces FontType = 1, CharstringType = 2 with FontType = 2, to match the
6680
Adobe implementations.  (gxfont1.h, gxftype.h, gxtype1.h, gstype1.c,
6681
gstype2.c, gxtype1.c)
6682
 
6683
Adds new gs_bytestring and gs_const_bytestring structures that may reference
6684
either string or (byte) object storage.  (gsstruct.h, gstypes.h, gsmemory.c)
6685
 
6686
Implements an additional halftone type (ht_type_threshold2) needed for
6687
HalftoneTypes 6, 10, and 16.  We don't extend gshtx.[hc] to deal with this
6688
at this time, since the new type is only needed for the PostScript
6689
interpreter.  (gxht.h, gxhttype.h, gzht.h, gsht.c, gsht1.c, gshtscr.c)
6690
 
6691
Adds a procedure for division mod M, possibly needed for halftones.
6692
(gxarith.h, gsmisc.c)
6693
 
6694
Adds a -Z` debugging switch to turn off high-level images in the band list.
6695
(gxclimag.c)
6696
 
6697
Implements gdev_prn_render_lines, as the lowest-level external API for
6698
rendering lines in a banded device.  This call replaces the "overlay" calls
6699
for async rendering.  (gdevprn.h, gdevprna.h, gxclist.h, gdevprn.c,
6700
gxclread.c)
6701
 
6702
Extends the image enumeration API so that the enumerator can indicate what
6703
subset of the input planes it wants delivered on the next call to
6704
image_plane_data.  Currently this is only needed for ImageType 3.
6705
(gsimage.h, gxdevcli.h, gxiparam.h, gdevddrw.c, gsimage.c, gximage.c,
6706
gximage3.c)
6707
 
6708
Extends the image enumeration structures to handle images that require a
6709
different amount of data for plane N than Width * plane_depths[N].  This
6710
requires a NON-BACKWARD-COMPATIBLE change to the argument list of the
6711
gx_image_enum_common_init procedure.  (gxiparam.h, gdevbbox.c, gsimage.c,
6712
gxclimag.c, gximage.c, gximage2.c, gximage3.c, gxipixel.c)
6713
 
6714
Updates the copyright date to 1999.  (gscdef.c)
6715
 
6716
Cleans up formatting, capitalizes macro names, etc.  (gximage.h, gxsample.h,
6717
gxipixel.c)
6718
 
6719
Adds the UseCIEColor device parameter.  (gxdevcli.h, gxdevice.h, gsdparam.c)
6720
 
6721
Implements color space substitution (UseCIEColor).  (gscolor2.h, gscspace.h,
6722
gscssub.h, gxistate.h, gzstate.h, gscolor.c, gscolor1.c, gscolor2.c,
6723
gscolor3.c, gscssub.c, gslib.c, gspcolor.c, gsstate.c)
6724
 
6725
Changes the color space install procedure so that its color space argument
6726
is const.  Now all color space implementation procedures take a const
6727
argument.  (gscie.h, gxcspace.h, gscdevn.c, gscolor2.c, gscscie.c,
6728
gscspace.c, gscsepr.c, gspcolor.c)
6729
 
6730
Changes gs_setcolorspace so its color space argument is const.  (gscolor2.h,
6731
gscolor2.c)
6732
 
6733
Splits imager state procedures out of gsstate.c, which was getting too
6734
large.  (gxistate.h, gsstate.c, gsistate.c)
6735
 
6736
Changes gs_imager_state_initialize so it really initializes the whole imager
6737
state.  (gsistate.c, gxclrast.c)
6738
 
6739
Removes the now-redundant first (device) argument from the plane_data and
6740
end_image procedures in image enumerators.  Implementors of these procedures
6741
must now get the device from the enumerator structure.  This is a
6742
NON-BACKWARD-COMPATIBLE design cleanup that we have been putting off for
6743
most of a year.  Also adds an argument to plane_data so it can tell its
6744
client how many rows of data was used: this is needed for the implementation
6745
of ImageType 3.  (gxdevcli.h, gxiparam.h, gdevbbox.c, gdevplnx.c, gsimage.c,
6746
gxclimag.c, gxidata.c, gximage.c, gximage3.c)
6747
 
6748
Changes CFFs with CharstringType = 2 to FontType 2 fonts, rather than
6749
FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
6750
implementations.  (gstype1.h)
6751
 
6752
</pre>
6753
 
6754
<hr>
6755
 
6756
<h2><a name="Version5.66"></a>Version 5.66 (internal) (11/25/98)</h2>
6757
 
6758
<p>
6759
This fileset includes the ability to efficiently and conveniently obtain
6760
planar rather than chunky raster output.  It also fixes a large number of
6761
minor compilation problems on non-ANSI compilers, and a small number of real
6762
problems.  It also implements the PostScript LanguageLevel 3 clipsave and
6763
cliprestore operators.  Unfortunately, because of fragility in third-party
6764
code changes that we were forced to include in the base graphics library,
6765
overlapped rasterizing ("async mode") fails:
6766
<ul>
6767
<li>	- At 300 dpi, for 4-bit planar devices in the low-memory
6768
("partial
6769
	page") condition, and always for 32-bit planar devices.
6770
 
6771
<li>	- At 600 dpi, for all devices other than monochrome.
6772
</ul>
6773
 
6774
<h3><a name="5.66_Incompatible_changes"></a>Incompatible changes</h3><pre>
6775
 
6776
(Procedures)
6777
	- Every platform-specific makefile must now define _D_, the internal
6778
separator for defining preprocessor macros.
6779
	- Every platform-specific makefile must now define PSLIBDIR, the
6780
directory holding the PS initialization files at build time.  (This need not
6781
be the same as where these files are stored at run time.)
6782
 
6783
(Library)
6784
	- New elements arch_float_mantissa_bits and
6785
arch_double_mantissa_bits have been added to arch.h.  Cross-build
6786
environments that supply arch.h rather than generating it at build time must
6787
add these elements.
6788
	- A new GB_SELECT_PLANES option has been added to the options mask
6789
for the get_bits_rectangle driver procedure.  Implementations of this
6790
procedure must take this option into account (although they do not have to
6791
implement it).
6792
	- The make_buffer_device printer device procedure has been replaced
6793
with create_buf_device, setup_buf_device, and destroy_buf_device.  All
6794
clients and implementors of make_buffer_device must be changed, including
6795
users of the clist_init_params macro.
6796
	- The gx_device_cmap_procs procedure has been replaced with
6797
gx_get_cmap_procs, which also take an imager state as an argument.  Callers
6798
of gx_device_cmap_procs must be changed.
6799
 
6800
</pre><h3><a name="5.66_Documentation"></a>Documentation</h3><pre>
6801
 
6802
Updates Make.htm to clarify the standard directory structure.
6803
(doc/Make.htm)
6804
 
6805
Adds a note about DEC C vs. VAX C for remapping of exit codes.
6806
(doc/Make.htm)
6807
 
6808
Clarifies that the end_image procedure frees the enumerator.  (gxiparam.h)
6809
 
6810
</pre><h3><a name="5.66_Procedures"></a>Procedures</h3><pre>
6811
 
6812
Fixes problems:
6813
	- The genxxx utilities didn't compile properly on systems where the
6814
C compiler doesn't automatically search for .h files in the directory of the
6815
.c file.  (unixtail.mak)
6816
	- Preprocessor definitions require special quoting with Watcom C.
6817
Fixing this required adding a _D_ macro similar to II.  This is a
6818
NON-BACKWARD-COMPATIBLE change, since this definition is now required in
6819
each platform-specific makefile.  (dvx-head.mak, openvms.mak, os2.mak,
6820
unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
6821
	- The VMS subdirectories didn't include the "." to make the
6822
directory name relative.  (openvms.mak)
6823
	- Some of the OpenVMS command files were omitted from the
6824
distribution.  (copy_one.com, rm_one.com, rm_all.com)
6825
	- MMK interprets a final - on a command line as a continuation
6826
marker.  (gs.mak)
6827
	- gsiparm4_h was used before being defined.  (lib.mak)
6828
	- Compiled initialization code (COMPILE_INITS=1) was broken because
6829
of the introduction of subdirectories.  (bcwin32.mak, dvx-gcc.mak,
6830
msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
6831
watc.mak, watcw32.mak, int.mak, geninit.c)
6832
	- Level 1 configurations would no longer build with the standard set
6833
of drivers.  (devs.mak)
6834
	- wmake interpreted "&amp;" in a rule command line as calling for
6835
background execution.  (wccommon.mak)
6836
 
6837
Makes the standard set of features the same on all platforms, namely, psl3
6838
(PostScript LanguageLevel 3) + pdf (PDF 1.2/1.3) + dpsnext (DPS with NeXT
6839
extensions) + ttfont (ability to load TrueType fonts directly).  Unix
6840
platforms add pipe (recognition of %pipe% file names).  (bcwin32.mak,
6841
dvx-gcc.mak, msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak,
6842
unixtrad.mak, watc.mak, watcw32.mak)
6843
 
6844
Adds minimal support for Windows 95/NT compiler versions.  (wccommon.mak)
6845
 
6846
Notes a set of switches that may work around the optimizer bug in MSVC++
6847
5.0.  (msvccmd.mak)
6848
 
6849
</pre><h3><a name="5.66_Utilities"></a>Utilities</h3><pre>
6850
 
6851
Adds a switch to genconf to set the escape character, since wmake interprets
6852
"&amp;" in a rule command line as calling for background execution.  (genconf.c)
6853
 
6854
Makes echogs recognize -+ alone as equivalent to - alone, for the sake of
6855
VMS systems, which interpret a final - as a line continuation marker.
6856
(echogs.c)
6857
 
6858
Adds a viewpsm procedure to viewpbm.ps, for reassembling plane-separated
6859
files.  (lib/viewpbm.ps)
6860
 
6861
</pre><h3><a name="5.66_Drivers"></a>Drivers</h3><pre>
6862
 
6863
Fixes problems:
6864
	- There were places where the code assumed that void * could be
6865
coerced to byte *, which not all C compilers support.  (gdevpdfx.h,
6866
gdevpdfo.c)
6867
	- The name put_bytes was defined in two places, causing an error
6868
when linking with NOPRIVATE=1.  (gdevpx.c)
6869
	- The minimum space computation for high-level images and for the
6870
scan line length for the sample async driver was slightly too small.
6871
(gdevbmpa.c)
6872
 
6873
Improves the tracing output from the psm driver.  (gdevpbm.c)
6874
 
6875
Rewrites some macros to eliminate "statement not reached" compiler warnings.
6876
(gdevpx.c)
6877
 
6878
Revises the (only) client for changes in the plane-extraction device API.
6879
(gdevpbm.c)
6880
 
6881
Adds plane-separated BMP drivers, primarily for testing but also as an
6882
example.  bmp[a]sep1 and bmp[a]sep8 produce 1- and 8-bit-per-pixel separated
6883
CMYK.  (gdevbmp.h, gdevbmp.c, gdevbmpa.c, gdevbmpc.c)
6884
 
6885
</pre><h3><a name="5.66_Platforms"></a>Platforms</h3><pre>
6886
 
6887
Fixes problems:
6888
	- The Watcom environment doesn't provide the st_blocks member of the
6889
stat structure.  (stat_.h)
6890
	- In its standard configuration, the Watcom environment doesn't
6891
provide stdprn.  (gp_iwatc.c)
6892
	- Newer versions of DEC C on OpenVMS don't require the remapping
6893
of the exit codes.  (stdpre.h)
6894
 
6895
Revises the dummy implementation of semaphores, monitors, and threads in an
6896
attempt to make async rendering (just barely) work for the non-overlay case.
6897
Unfortunately, this turned out not to be feasible.  (gp_nsync.c)
6898
 
6899
</pre><h3><a name="5.66_Interpreter"></a>Interpreter</h3><pre>
6900
 
6901
Fixes problems:
6902
	- Certain DEC compilers assume that a pointer is aligned even if it
6903
is cast to a pointer whose target type has weaker alignment; this produced
6904
"unaligned access" errors in the interpreter.  (interp.c)
6905
	- A necessary cast was omitted.  (zcrd.c)
6906
	- Level 1 configurations would no longer run.  (lib/gs_init.ps)
6907
 
6908
Updates clients to set mask image fattening properly.  (zimage.c, zimage2.c)
6909
 
6910
Rewrites some macros to eliminate "statement not reached" compiler warnings.
6911
(files.h, istruct.h)
6912
 
6913
</pre><h3><a name="5.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6914
 
6915
Fixes problems:
6916
	- The test for whether to honor the Rotate key was backwards.  (bug
6917
probably introduced in 5.24) (lib/pdf_main.ps)
6918
 
6919
Updates the code to handle improper PDF files in which the startxref and the
6920
following file position appear on the same line rather than (as required by
6921
the spec) two successive lines.  (lib/pdf_main.ps)
6922
 
6923
</pre><h3><a name="5.66_Streams"></a>Streams</h3><pre>
6924
 
6925
Notes a bug in s_DCT_get_quantization_tables.  (sdcparam.c)
6926
 
6927
</pre><h3><a name="5.66_Library"></a>Library</h3><pre>
6928
 
6929
Fixes problems:
6930
	- The algorithm for reducing 4-bit chunky to 1-bit separated colors
6931
didn't handle the trailing pixels of a transfer correctly.  (gdevplnx.c)
6932
	- Banding for RGB devices with multi-plane halftones was broken.
6933
(bug introduced recently) (gxdcolor.c)
6934
	- Mask images were written in the band list with inverted polarity.
6935
(bug introduced in 5.60) (gximage1.c)
6936
	- Mask images were always fattened.  Fixing this required extending
6937
the API, since gs_image_t_init_mask set adjust = true by default (a bad
6938
decision) and we didn't want to change it.  (gschar.h, gscpm.h, gsiparam.h,
6939
gzstate.h, gschar.c, gximage1.c)
6940
	- The member names push and pop caused problems for compilers whose
6941
preprocessors consider it an error to use a macro defined with arguments as
6942
a name without arguments.  (gxfont1.h, gstype1.c)
6943
	- Once again, gcc didn't detect some private/non-private mismatches.
6944
(gdevplnx.c, gsalphac.c, gximage2.c, gximage4.c)
6945
	- &amp; was used with an array (which gcc doesn't complain about).
6946
(gxshade6.c)
6947
	- There were several uses of automatic aggregate initialization,
6948
which not all C compilers support.  (gdevprn.c, gdevps.c)
6949
	- There were places where the code assumed that void * could be
6950
coerced to byte *, which not all C compilers support.  (gdevprn.c)
6951
	- Some \ line continuation characters were used inappropriately
6952
(in a macro argument list).  (gxclimag.c)
6953
	- Some function prototypes didn't use the Pn macros.  (gsalloc.c)
6954
	- A function definition not at the left margin confused ansi2knr.
6955
(gsfont.c)
6956
	- A cast for the result of malloc, needed on systems where malloc
6957
returns a char * rather than a void *, was missing.  (gsmalloc.c)
6958
	- An occurrence of dev should be pdev.  (I can't understand how we
6959
missed this in 5.65.)  (gdevprna.c)
6960
	- A value was missing from a list of initial structure values,
6961
causing mismatches between subsequent values and the members they
6962
initialized.  (gcc treated this as a warning: it should have given an
6963
error.)  (gxband.h)
6964
	- When setting the tile phase during banding, the old value of the
6965
tile phase was written out rather than the new one.  (gxclutil.c)
6966
	- The definition of fixed_mult_quo wasn't consistent between systems
6967
with FPU (where it took the floor, and might be slightly inaccurate) and
6968
systems without FPU (where it truncated towards zero, and was accurate).
6969
(gxfixed.h, genarch.c, gsmisc.c)
6970
	- Banding devices using multi-screen halftones didn't set the
6971
halftone phase correctly.  We have now "fixed" this problem at least 4
6972
times.  (gxclrast.c)
6973
	- The name put_bytes was defined in two places, causing an error
6974
when linking with NOPRIVATE=1.  (gsparams.c)
6975
	- For [x][y]show, the pointers to the width arrays weren't
6976
initialized, causing memory access errors when checking or garbage
6977
collecting.  (gschar.c)
6978
	- Due to a typo, bitmap characters were fattened too much.
6979
(gximage1.c)
6980
	- Some identifiers exceeded VMS's limit of 31 characters.
6981
(gdevprn.h, gscsepr.h, gsdevice.h, gxdevice.h, gdevdflt.c, gdevprn.c,
6982
gscsepr.c, gsdparam.c)
6983
	- The device halftone parameter was declared const inappropriately
6984
in some places.  (gsdcolor.h, gxdither.h, gxdcolor.c, gxdither.c)
6985
	- gdev_mem_raster was used (misleadingly, even though it happened to
6986
produce the correct result) on possibly non-memory devices.  (gxclread.c)
6987
	- Pure Level 1 configurations had some undefined procedures.
6988
(gscolor1.c, gscspace.c)
6989
	- Indexed color images could incorrectly conclude that they didn't
6990
need to re-render halftones, producing incorrect output.  (gximono.c)
6991
	- gs_device_is_memory returned false for non-banding printer
6992
devices: this didn't used to matter, but it matters now.  We changed it to
6993
test the procedures rather than the device name.  (gdevmem.c)
6994
	- The plane extraction device didn't handle halftoned colors
6995
correctly.  (gdevplnx.c)
6996
	- If an error occurred while building a Function object, a crash
6997
could occur while freeing the partially built object.  (gsfunc.c)
6998
	- The plane extraction device didn't handle RasterOps correctly.
6999
(gdevplnx.c)
7000
	- The colors-used mask could include some additional, invalid bits.
7001
(gxclrect.c)
7002
	- The colors-used mask was updated incorrectly for RasterOps on
7003
subtractive-color devices.  (gxclrect.c)
7004
	- Memory devices didn't set enough option bits for the case where
7005
get_bits_rectangle had to do conversion.  (gdevmem.c)
7006
	- The TrueType font rasterizer didn't accept fonts whose 'type' was
7007
"true" rather than the documented <00 01 00 00>.  (gstype42.c)
7008
	- A bug in the Watcom compiler caused two conditional expressions to
7009
execute incorrectly.  (gstype42.c)
7010
	- When a page queue was freed, it attempted to free the page_info
7011
resource in the reserve entry, which is actually unused.  (gxpageq.c)
7012
	- A necessary #include was missing.  (gdevmr2n.c)
7013
 
7014
Reduces the size of band list entries for halftoned colors somewhat.
7015
(gxclpath.h, gxclpath.c, gxclrast.c)
7016
 
7017
Increases the number of saved band color masks per page, mostly for testing.
7018
(gxband.h)
7019
 
7020
Rewrites some macros, and one 'for' statement, to eliminate "statement not
7021
reached" compiler warnings.  (gxcldev.h, gxpath2.c)
7022
 
7023
Corrects a tiny inaccuracy in the computation of trapezoid coordinates.
7024
(gdevddrw.c)
7025
 
7026
Edits the trapezoid fill code for greater readability and better
7027
documentation of its functioning.  The new code runs a little slower on
7028
compilers that don't support 'inline'.  (gdevddrw.c)
7029
 
7030
Improves the documentation of the tile phase bookkeeping.  (gxclrast.c)
7031
 
7032
Documents the fact that fixed_mult_quo takes the floor if the first argument
7033
is negative.  (gxfixed.h)
7034
 
7035
Finishes implementing clipsave and cliprestore.  (gxclipsr.h, gxistate.h,
7036
gzstate.h, gsclipsr.c, gsstate.c)
7037
 
7038
Implements driver access to planar, rather than chunky, banding.
7039
(gdevplnx.h, gdevprn.h, gxclist.h, gxdevcli.h, gxrplane.h, gdevplnx.c,
7040
gdevprn.c, gxclread.c)
7041
 
7042
Makes it possible to set up memory devices that allocate just the line
7043
pointer table (but not the bitmap), or neither the line pointers nor the
7044
bitmap.  (gxdevmem.h, gdevmem.c)
7045
 
7046
Moves gx_device_white/black to a more appropriate header file.  (gxdcolor.h)
7047
 
7048
Moves gx_default_make_buffer_device to a more appropriate file.
7049
(gdevdflt.c, gdevprn.c)
7050
 
7051
Adds plane extraction and expansion utility procedures, required for the
7052
extended capability of get_bits_rectangle.  (gsbitops.h, gsbitops.c)
7053
 
7054
Extends get_bits_rectangle so it can return individual planes rather than
7055
all planes.  (gdevplnx.h, gsbittab.h, gxbitfmt.h, gxgetbit.h, gdevdgbr.c,
7056
gdevdrop.c, gdevmem.c, gdevplnx.c, gsalphac.c, gsbittab.c)
7057
 
7058
Factors out the two more complex cases of gx_get_bits_copy into single-use
7059
procedures for readability.  (gdevdgbr.c)
7060
 
7061
Makes public the procedure for reducing a colored halftone to a pure or
7062
binary halftone, needed for planar rendering.  (gxdither.h, gxdither.c)
7063
 
7064
Moves the client_data pointer from gs_state to gs_imager_state.
7065
(gxistate.h, gzstate.h, gsstate.c)
7066
 
7067
Extends the plane extraction device to handle fill_mask and images
7068
efficiently.  (gxcmap.h, gdevplnx.h, gdevplnx.c)
7069
 
7070
Creates a procedure to make a temporary copy of a gs_imager_state, needed
7071
for planar image processing.  (gxistate.h, gsstate.c)
7072
 
7073
Makes getting the color mapping procedures for a device a virtual procedure
7074
of the imager state, needed for planar image processing.  (gxcmap.h,
7075
gxistate.h, gxcmap.c, gxicolor.c, gximono.c, gxi12bit.c)
7076
 
7077
Increases the amount of memory allocated to the asynchronous rasterizer,
7078
since we now may need a dynamically allocated line pointer table for the
7079
target (plane) memory device.  (gdevprna.c)
7080
 
7081
Adds a record of which bands have "difficult" RasterOps -- RasterOps that
7082
can't be executed, even in principle, in CMYK space.  We don't do anything
7083
with this information yet, but we will have to.  (gsropt.h, gxband.h,
7084
gxcldev.h, gxclpath.h, gxclist.c, gxclpath.c, gxclrect.c)
7085
 
7086
Makes conversion from render_plane indices to bit ranges the responsibility
7087
of the device, not the client.  (gxrplane.h)
7088
 
7089
</pre>
7090
 
7091
<hr>
7092
 
7093
<h2><a name="Version5.65"></a>Version 5.65 (internal) (11/13/98)</h2>
7094
 
7095
<p>
7096
The main purpose of this fileset is to fix the MS Windows and OpenVMS build
7097
procedures, which have been broken since 5.60.  It also adds the ability for
7098
a driver to determine efficiently which colors are used in a given page or
7099
band, which is important for separated color printing, and contains some
7100
early support for plane-separated color printing.
7101
 
7102
<h3><a name="5.65_Incompatible_changes"></a>Incompatible changes</h3><pre>
7103
 
7104
(Procedures)
7105
	- Every platform-specific makefile must now define D_ and _D, the
7106
brackets for defining preprocessor macros.
7107
	- The unix-cc.mak makefile has been renamed unixtrad.mak, since it
7108
only applies to "traditional C" compilers.
7109
 
7110
(Drivers, Library)
7111
	- Devices now store their TextAlphaBits and GraphicsAlphaBits values
7112
explicitly.  The former get_alpha_bits procedure is obsoleted, and no
7113
longer implemented or called by any code we distribute.
7114
	- gx_device_color_info now has additional fields.  Code that
7115
constructed gx_color_info_values in any way other than by using the dci_
7116
macros will no longer work.
7117
 
7118
</pre><h3><a name="5.65_Documentation"></a>Documentation</h3><pre>
7119
 
7120
Fixes problems:
7121
	- The -sPSFile= switch was still documented, even though it no
7122
longer exists.  (doc/Use.htm)
7123
	- The - "switch" wasn't documented in the list of switches,
7124
although it was documented elsewhere.  (doc/Use.htm)
7125
	- The documentation for the PC environments was out of date -- it
7126
didn't mention the use of subdirectories.  (doc/Make.htm)
7127
 
7128
Updates the documentation on PostScript files to indicate in what directory
7129
the files are distributed.  (doc/Psfiles.htm)
7130
 
7131
Documents more of the utility procedures used by printer drivers.
7132
(gdevprn.h)
7133
 
7134
Notes that the public tar archives may not be compatible with the tar
7135
program in SunOS 4.1.3.  (doc/Make.htm)
7136
 
7137
Adds documentation on the Unix "make pg" target.  (doc/Make.htm)
7138
 
7139
Updates documentation to reflect the name change from unix-cc.mak to
7140
unixtrad.mak.  (doc/Make.htm)
7141
 
7142
Adds some links for the benefit of people who have built Ghostscript before
7143
and therefore skip reading the initial sections of the documentation.
7144
(doc/Make.htm)
7145
 
7146
Documents the new -_ switch.  (doc/Use.htm)
7147
 
7148
Updates the documentation to mention PostScript LanguageLevel 3 and to
7149
remove many references to 16-bit systems.  (doc/Language.htm)
7150
 
7151
</pre><h3><a name="5.65_Procedures"></a>Procedures</h3><pre>
7152
 
7153
Fixes problems:
7154
	- A cast discarded `const' needlessly.  (genconf.c)
7155
	- Upper-case echogs switches were getting converted to lower case
7156
on VMS.  (jpeg.mak)
7157
	- $(EXP) was missing before some invocations of executables.
7158
(gs.mak, jpeg.mak, lib.mak)
7159
	- Some dependencies in the Unix install script were incorrect.
7160
(unixinst.mak)
7161
	- Because of differences between shells, putting *.upp in the list
7162
of files to be installed didn't work with some shells.  (unixinst.mak)
7163
	- The PC makefiles were out of date.  (bcwin32.mak, pcwin.mak,
7164
winint.mak, winlib.mak, dwmain.rc, gsdll32.rc)
7165
	- Some makefiles still used $(DEV) instead of dev.  (dvx-tail.mak,
7166
msvclib.mak, openvms.mak, os2.mak, pcwin.mak, watclib.mak, winlib.mak)
7167
	- The DEVICE_DEVSn lists overflowed the DOS 120-character command
7168
line limit again.  We had to add DEVICE_DEVS16 through 20 to work around
7169
this.  (*.mak)
7170
	- Preprocessor definitions have a different syntax on VMS.  Fixing
7171
this required adding D_ and _D macros, similar to I_ and _I.  This is a
7172
NON-BACKWARD-COMPATIBLE change, since these definitions are now required in
7173
each platform-specific makefile.  (dvx-head.mak, openvms.mak, os2.mak,
7174
unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
7175
 
7176
Adds command line switches to generate additional warnings when compiling
7177
the auxiliary programs with gcc.  (unix-gcc.mak)
7178
 
7179
Gets rid of the EXPP and SHP macros, since they aren't used or needed any
7180
longer.  (gs.mak, bcwin32.mak, dvx-head.mak, msvccmd.mak, openvms.mak,
7181
os2.mak, unixhead.mak, watcw32.mak, wccommon.mak)
7182
 
7183
Changes the Unix EXP to null, since all executables now use an explicit
7184
directory prefix.  (unixhead.mak)
7185
 
7186
Renames unix-cc.mak as unixtrad.mak, since people with ANSI-compatible cc
7187
were getting confused.  (unix-cc.mak [deleted], unixtrad.mak)
7188
 
7189
Adds a -_ switch, for piped execution with buffering.  (iminst.h,
7190
imainarg.c)
7191
 
7192
</pre><h3><a name="5.65_Utilities"></a>Utilities</h3><pre>
7193
 
7194
Fixes problems:
7195
	- The revised ansi2knr didn't recognize "foo(void)" as a procedure
7196
definition.  (ansi2knr.c)
7197
	- ansi2knr didn't handle function definitions where the last
7198
formal parameter was a procedure parameter.  (ansi2knr.c)
7199
 
7200
Adds a utility for printing an informative error page if a PostScript job
7201
fails.  (lib/errpage.ps, doc/Psfiles.htm, unixinst.mak)
7202
 
7203
</pre><h3><a name="5.65_Drivers"></a>Drivers</h3><pre>
7204
 
7205
Fixes problems:
7206
	- The [e]pswrite drivers produced incorrect output for images in
7207
non-Device color spaces.  We fixed this by causing all other images to be
7208
handled as rectangles.  This is clearly not satisfactory: we need to unify
7209
the PS and PDF writers in this area.  (gdevps.c)
7210
	- The CCITTFaxEncoded data produced by the [e]pswrite driver had
7211
both a Rows value and an EndOfBlock marker, which wasn't compatible with
7212
some Adobe interpreters.  (gdevpsdf.c)
7213
	- X devices couldn't be copied, because the copy didn't clear the
7214
list of X fonts and therefore tried to free it a second time.  (gdevx.c,
7215
gdevxini.c)
7216
	- gdevx.h declared a type called rect, conflicting with variables
7217
named rect.  (gdevx.h, gdevx.c)
7218
	- A function definition wasn't formatted properly to be
7219
recognized by ansi2knr.  (gdevupd.c)
7220
	- The PCL XL drivers crashed if given a masked image.  (gdevpx.c)
7221
 
7222
Adds a PBM driver that writes separated CMYK, using the colors-used masks to
7223
skip bands.  (devs.mak, gdevpbm.c)
7224
 
7225
Updates drivers that formerly supported the TextAlphaBits and
7226
GraphicsAlphaBits parameters themselves.  (gdevmswn.h, gdevsvga.h,
7227
gdevpbm.c, gdevmswn.c, gdevpm.c, gdevwdib.c, gdevsvga.c, gdevxalt.c)
7228
 
7229
</pre><h3><a name="5.65_Platforms"></a>Platforms</h3><pre>
7230
 
7231
Fixes problems:
7232
	- The stack size on the Watcom platform was set too small.
7233
(watc.mak)
7234
	- The OpenVMS platform code and makefiles had gotten out of date.
7235
(gp_vms.c, openvms.mak)
7236
 
7237
</pre><h3><a name="5.65_Interpreter"></a>Interpreter</h3><pre>
7238
 
7239
Fixes problems:
7240
	- The size of Indexed color space lookup tables wasn't set, possibly
7241
causing them to be corrupted during garbage collection.  (zcsindex.c)
7242
	- A function definition wasn't formatted properly to be
7243
recognized by ansi2knr.  (icontext.c)
7244
	- quit was only rebound to stop in encapsulated jobs, rather than in
7245
any context under control of a job server.  Since we don't currently have
7246
any explicit way to indicate whether execution is under control of a job
7247
server, we consider that it is under a job server iff startjob has ever been
7248
executed.  (lib/gs_lev2.ps)
7249
 
7250
Adds tracing output for removing an entry from a dictionary.  (idict.c)
7251
 
7252
Slightly improves dictionary deletion so that it can replace a run of
7253
deleted keys with empty keys.  (idict.c)
7254
 
7255
Adds statistics-gathering to the interpreter.  (interp.c)
7256
 
7257
Adds more statistics-gathering to the dictionary stack search.  (idstack.c)
7258
 
7259
Improves the debugging printout of packed arrays.  (idebug.c)
7260
 
7261
Increases the name table allocation increment from 128 names (1.5K) to 256
7262
names (3K), to provide better scattering of name indices.  (inamedef.h)
7263
 
7264
Changes the name count / index mapping to provide better scattering.
7265
(inamedef.h)
7266
 
7267
</pre><h3><a name="5.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
7268
 
7269
Fixes problems:
7270
	- If a font other than the base 14 wasn't embedded and lacked a
7271
descriptor, an error occurred.  (The PDF specification explicitly prohibits
7272
this, but Acrobat PDFWriter 3.02 for Windows produces PDF files with
7273
TrueType fonts that lack a descriptor.)  (lib/pdf_font.ps)
7274
 
7275
</pre><h3><a name="5.65_Library"></a>Library</h3><pre>
7276
 
7277
Fixes problems:
7278
	- The computation of colors used by CMYK halftones was incorrect.
7279
(gxclpath.c)
7280
	- Some header files had preprocessor directives with a space before
7281
the #, which pre-ANSI compilers don't accept.  (gpsync.h, gsjconf.h,
7282
gsmemlok.h, gxsync.h, gxxfont.h)
7283
	- A number of prototypes didn't use the Pn macros.  (gscolor2.h,
7284
gscsepr.h, gsptype1.h, gspcolor.c)
7285
	- A function definition wasn't formatted properly to be
7286
recognized by ansi2knr.  (gxcht.c)
7287
	- The algorithm for reducing single-plane CMYK halftones to binary
7288
halftones was incorrect (bug introduced in 5.60).  (gxdither.c)
7289
	- Writing a degenerate triangle or parallelogram in the band list
7290
could cause a memory access error when rasterizing.  (gxclrast.c)
7291
 
7292
Adds per-band "colors used" information to the information for a saved page,
7293
and procedures (gdev_prn_colors_used and gx_page_info_colors_used, defined
7294
in gdevprn.h) for accessing it.  (gdevprn.h, gxband.h, gxclist.h, gdevprn.c,
7295
gxclist.c)
7296
 
7297
Adds an internal device that appears to clients as a multi-plane color
7298
device, and extracts a single plane for actual rendering.  This device will
7299
be used to support planar output devices.  (gdevplnx.h, gsbitops.h,
7300
gdevplnx.c)
7301
 
7302
Adds explicit color_info.text_anti_alias_bits and graphics_anti_alias_bits
7303
values in the device state, obsoleting the get_alpha_bits procedure, and
7304
makes them settable for all devices.  (gxdevcli.h, gxdevice.h, gdevabuf.c,
7305
gdevdflt.c, gdevnfwd.c, gdevprn.c, gsdparam.c)
7306
 
7307
Reformats some code for readability.  (gxdither.c)
7308
 
7309
Adds a tentative API for a procedure that allows band rasterizing directly
7310
into client's memory.  This is tentative because we may need to add the
7311
ability to select an individual plane.  (gdevprn.h)
7312
 
7313
</pre>
7314
 
7315
<hr>
7316
 
7317
<h2><a name="Version5.64"></a>Version 5.64 (internal) (11/5/98)</h2>
7318
 
7319
<p>
7320
This is another incremental fileset to fix problems for an external
7321
customer.
7322
 
7323
<h3><a name="5.64_Incompatible_changes"></a>Incompatible changes</h3><pre>
7324
 
7325
(Drivers)
7326
	- The output_page procedure of all drivers now must call
7327
gx_finish_output_page as its last action.  (This doesn't affect ordinary
7328
printer or raster file drivers, which already call a common procedure.)
7329
 
7330
</pre><h3><a name="5.64_Documentation"></a>Documentation</h3><pre>
7331
 
7332
Fixes problems:
7333
	- The instructions for creating 'makefile' on Unix systems were
7334
out of date.  (doc/Make.htm)
7335
 
7336
</pre><h3><a name="5.64_Procedures"></a>Procedures</h3><pre>
7337
 
7338
Fixes problems:
7339
	- An omitted return statement caused genconf to malfunction on some
7340
platforms.  (genconf.c)
7341
	- The replacement of MAKEFILES by TOP_MAKEFILES accidentally changed
7342
some comments that should not have been changed.  (bcwin32.mak, gs.mak,
7343
msvctail.mak, openvms.mak, os2.mak, watcw32.mak, wctail.mak, winlib.mak)
7344
 
7345
</pre><h3><a name="5.64_Drivers"></a>Drivers</h3><pre>
7346
 
7347
Updates drivers to call gx_finish_output_page where needed.  (gdev3b1.c,
7348
gdevcgm.c, gdevcp50.c, gdevpdf.c, gdevmswn.c, gdevpm.c, gdevps.c, gdevpx.c,
7349
gdevsnfb.c, gdevwprn.c, gdevx.c)
7350
 
7351
</pre><h3><a name="5.64_Library"></a>Library</h3><pre>
7352
 
7353
Fixes problems:
7354
	- The FontBBox workaround introduced in 5.63 didn't work properly.
7355
(zchar1.c)
7356
	- PageCount was getting incremented in the first device of a device
7357
pipeline, rather than in the last one and being propagated back.
7358
(gxdevice.h, gdevbbox.c, gdevdflt.c, gdevnfwd.c, gdevprn.c, gdevprna.c,
7359
gsdevice.c)
7360
 
7361
</pre>
7362
 
7363
<hr>
7364
 
7365
<h2><a name="Version5.63"></a>Version 5.63 (internal) (11/4/98)</h2>
7366
 
7367
<p>
7368
This fileset was driven by the development needs of an external customer,
7369
primarily related to asynchronous rendering.  It includes a few bug fixes as
7370
well.
7371
 
7372
<h3><a name="5.63_Incompatible_changes"></a>Incompatible changes</h3><pre>
7373
 
7374
(Procedures)
7375
	- In the makefiles, changes the name MAKEFILES to TOP_MAKEFILES.
7376
 
7377
(Library)
7378
	- The pis member of the Type 1 interpreter state was renamed in
7379
order to catch places that assumed it was set.  (It may now be 0.)  This
7380
should not affect any client code.
7381
	- gx_page_queue_dnit and gx_page_queue_finish_dequeue now free the
7382
band list information associated with the page_info in the queue entry.  An
7383
explicit call of gx_page_queue_entry_free_page_info is now required to free
7384
this information before any other call of gx_page_queue_entry_free.
7385
 
7386
</pre><h3><a name="5.63_Documentation"></a>Documentation</h3><pre>
7387
 
7388
Fixes problems:
7389
	- devs.mak incorrectly referred to msdevs.mak rather than pcwin.mak.
7390
(devs.mak)
7391
 
7392
</pre><h3><a name="5.63_Procedures"></a>Procedures</h3><pre>
7393
 
7394
Fixes problems:
7395
	- There was a $ in the makefile that wasn't quoted.  (unix-gcc.mak)
7396
	- The name MAKEFILES has a special meaning in GNU make which only be
7397
disabled by using a directive that is a syntactic error for standard 'make'
7398
implementations.  We had to work around this by changing all occurrences of
7399
MAKEFILES to TOP_MAKEFILES.  (*.mak)
7400
	- genconf did the wrong thing for modules with names shorter than
7401
5 characters.  (genconf.c)
7402
 
7403
</pre><h3><a name="5.63_Drivers"></a>Drivers</h3><pre>
7404
 
7405
Updates the Canon BJC library, changing the names of the files.  This code
7406
is still very preliminary.  (gdevbjcl.h, gdevbjcl.c)
7407
 
7408
</pre><h3><a name="5.63_Interpreter"></a>Interpreter</h3><pre>
7409
 
7410
Fixes problems:
7411
	- Some Type 1 fonts have a plausible but incorrect (too-small)
7412
FontBBox, causing some characters to be clipped.  We work around this by
7413
enlarging the FontBBox and restarting the rasterization if the outline goes
7414
outside the FontBBox.  (zchar1.c)
7415
 
7416
</pre><h3><a name="5.63_Library"></a>Library</h3><pre>
7417
 
7418
Fixes problems:
7419
	- gx_default_strip_copy_rop didn't check for zero width before
7420
dividing by it.  (gdevdrop.c)
7421
	- Some places that called a procedure returning void tried to use
7422
the return value.  (gximage.c, gximage1.c, gximage4.c)
7423
	- The flatness for rendering Type 1 characters was set incorrectly
7424
(always set to 0, producing best accuracy at extra cost) for characters not
7425
in portrait orientation.  (gxtype1.c)
7426
	- clist_begin_typed_image incorrectly used the memory manager client
7427
name "clist_begin_image".  (gxclimag.c)
7428
	- If a page queue entry was created without a page_info, the entry's
7429
page_info wasn't initialized, probably causing a crash when attempting to
7430
free the (nonexistent) associated band files later.  (gxpageq.c)
7431
 
7432
More fully supports the use of saved page_info objects for decoupling banded
7433
rendering from band list construction:
7434
	- Adds the ability to close and free the command list associated
7435
with a saved page.  (gxclist.h, gxclist.c)
7436
	- Separates freeing of the band list information associated with a
7437
page queue entry from freeing the entry itself.  (gxpageq.h, gxpageq.c)
7438
	- Changes the rendering thread for asynchronous band rendering so
7439
that it doesn't try to free the band list information twice.  (gdevprna.c)
7440
 
7441
Implements triangles and parallelograms in the band list, primarily for the
7442
sake of smooth shading.  (gxclpath.h, gxclist.c, gxclpath.c, gxclrast.c)
7443
 
7444
Adds a rectangle merging procedure, parallel to rectangle intersection.
7445
This is needed for the FontBBox fix.  (gsrect.h)
7446
 
7447
Adds logic for keeping track of what pixel values are used in which bands.
7448
Currently this information is not used for anything.  (gdevmrop.h, gsropt.h,
7449
gxcldev.h, gxclpath.h, gxclrect.c, gxclpath.c, gxclimag.c)
7450
 
7451
Updates a few more files for readability and coding conventions.
7452
(gxband.h, gxpageq.c)
7453
 
7454
Updates users of gxband.h and gxpageq.h.  (gdevprn.h, gxclist.h, gxpageq.h,
7455
gdevprna.c, gxclpage.c, gxclread.c)
7456
 
7457
Moves the definition of the page queue into the (private) implementation
7458
file.  (gxpageq.h, gxpageq.c)
7459
 
7460
</pre>
7461
 
7462
<hr>
7463
 
7464
<h2><a name="Version5.62"></a>Version 5.62 (internal) (10/31/98)</h2>
7465
 
7466
<p>
7467
This fileset concludes this round of work on (primarily color) performance
7468
improvement.  It contains almost no new bug fixes.
7469
 
7470
<h3><a name="5.62_Incompatible_changes"></a>Incompatible changes</h3><pre>
7471
 
7472
(Library)
7473
	- Clients that load the CIE caches themselves must now reset the
7474
procedures to the _from_cache values.  (This affects the PostScript
7475
interpreter, but no ordinary library clients.)
7476
	- gs_cie_compute_wbsd (an internal procedure) was changed to
7477
gs_cie_compute_points_sd, with different parameters.
7478
 
7479
</pre><h3><a name="5.62_Documentation"></a>Documentation</h3><pre>
7480
 
7481
Adds information about problems with PDF files copied from Macintosh
7482
environments.  (doc/Use.htm)
7483
 
7484
</pre><h3><a name="5.62_Drivers"></a>Drivers</h3><pre>
7485
 
7486
Adds a library for generating Canon BJC commands.  This code is subject to
7487
change without notice!  (gdevcbjc.h, gdevcbjc.c)
7488
 
7489
</pre><h3><a name="5.62_Interpreter"></a>Interpreter</h3><pre>
7490
 
7491
Fixes problems:
7492
	- The structures allocated for CIE RenderTables weren't marked
7493
correctly for garbage collection, possibly mangling the output.  (zcie.c)
7494
	- The CIE color space procedures weren't reset after the cache was
7495
loaded, producing incorrect output now that it matters.  (zcie.c, zcrd.c)
7496
 
7497
</pre><h3><a name="5.62_Library"></a>Library</h3><pre>
7498
 
7499
Fixes problems:
7500
	- Under some circumstances, a setbbox didn't take effect.
7501
(gxpcopy.c)
7502
	- The last step of CIE color mapping didn't clamp the very top end
7503
of the range correctly.  (gsciemap.c)
7504
 
7505
Speeds up bits_replicate_horizontally a bit more.  (gsbitops.c)
7506
 
7507
Separates the CIE color mapping code from CIE cache loading, since the file
7508
was getting too big.  (gscie.h, gscie.c, gsciemap.c)
7509
 
7510
Finishes adding the hooks for skipping steps during CIE color mapping when
7511
possible, and implements one case of step-skipping.  (gscie.h, gscie.c,
7512
gsciemap.c, gscrd.c)
7513
 
7514
Adds more tracing to the CIE color machinery.  (gscie.c)
7515
 
7516
Changes the default number of tiles for the colored halftone screen caches
7517
from 1 to 4, substantially reducing cache turnover.  (gsht1.c, gshtx.c,
7518
gxclrast.c)
7519
 
7520
</pre>
7521
 
7522
<hr>
7523
 
7524
<h2><a name="Version5.61"></a>Version 5.61 (internal) (10/28/98)</h2>
7525
 
7526
<p>
7527
More rendering speedups, and fixes for many of the minor problems reported
7528
in 5.50.
7529
 
7530
<h3><a name="5.61_Documentation"></a>Docmentation</h3><pre>
7531
 
7532
Fixes problems:
7533
	- There were still some incorrect references to .txt files.
7534
(gs.mak, libpng.mak)
7535
	- Two references to libpng should have referred to libjpeg.
7536
(gs.mak)
7537
 
7538
</pre><h3><a name="5.61_Procedures"></a>Procedures</h3><pre>
7539
 
7540
Fixes problems:
7541
	- GNU 'make' treats the name MAKEFILES specially.  (unix-gcc.mak)
7542
	- genconf didn't sort libraries in the right order.  (genconf.c)
7543
	- The dependency for ansi2knr, and the invocation of ccgs, didn't
7544
include the directory name.  (ccgs, unix-cc.mak)
7545
	- The CC_ and CCAUX rules didn't invoke the new ccgs correctly.
7546
(unix-cc.mak)
7547
	- There was a typo in a comment.  (unixtail.mak)
7548
	- gcc versions of the form 2.7.2.f.1 weren't recognized as having
7549
the const-related code generation bug.  (unix-gcc.mak)
7550
 
7551
Documents workaround for bugs in newer IRIX compilers.  (doc/Make.htm)
7552
 
7553
</pre><h3><a name="5.61_Utilities"></a>Utilities</h3><pre>
7554
 
7555
Fixes problems:
7556
	- ansi2knr didn't understand the new formatting of the enum_ptrs and
7557
reloc_ptrs procedures, which now don't have a left brace on the same line as
7558
the macro call that defines the procedure.  (ansi2knr.c)
7559
 
7560
Adds a utility for viewing MIFF files.  (lib/viewmiff.ps)
7561
 
7562
</pre><h3><a name="5.61_Drivers"></a>Drivers</h3><pre>
7563
 
7564
Fixes problems:
7565
	- The X driver could report a depth (e.g., 15 bits) that caused
7566
problems elsewhere.  (gdevxini.c)
7567
	- With the X driver, if the display is grey-scale or does not have
7568
enough colors to allocate a color ramp, Ghostscript crashed in
7569
x_map_color_rgb due to an array index overflow.  (gdevx.c)
7570
	- The PDF writer used the X scaling of fonts to determine the point
7571
size rather than the Y scaling, which gives the wrong result for synthetic
7572
condensed fonts.  (gdevpdft.c)
7573
	- If the last thing written before a flushpage was text, the X
7574
driver might fail to display it.  (gdevx.c)
7575
	- The PDF writer didn't free the streams created for image
7576
compression, causing a memory leak.  (gdevpsdf.c)
7577
	- pswrite didn't output a command to set the page size.  (gdevps.c)
7578
 
7579
Removes an obsolete comment and commented-out line.  (gdevxalt.c)
7580
 
7581
</pre><h3><a name="5.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
7582
 
7583
Fixes problems:
7584
	- Explicit (not resource) Indexed color spaces caused an error.
7585
(lib/pdf_draw.ps)
7586
 
7587
</pre><h3><a name="5.61_Streams"></a>Streams</h3><pre>
7588
 
7589
Fixes problems:
7590
	- The PNGPredictor filters didn't free their row buffer.  (spngp.c)
7591
	- The PNGPredictor filters didn't handle end-of-data correctly.
7592
(spngp.c)
7593
 
7594
Changes the eexec filter to ignore % characters when reading
7595
ASCIIHex-encoded data.  This is contrary to the Adobe documentation, but one
7596
badly coded prologue requires it.  (seexec.c)
7597
 
7598
</pre><h3><a name="5.61_Library"></a>Library</h3><pre>
7599
 
7600
Fixes problems:
7601
	- The definition of TRANSPARENCY_PER_H_P was in the wrong module,
7602
causing it to be ignored.  (gdevmrop.h, gdevdrop.c)
7603
	- There was a typo in the tracing output for init_tile_cursor.
7604
(gxcht.c)
7605
	- gx_get_bits_copy computed the standard raster incorrectly if
7606
the destination used a different color representation from the source,
7607
causing multi-line transfers to be done incorrectly.  (gdevdgbr.c)
7608
	- Parentheses were missing around the use of width_bits in the
7609
definition of bitmap_raster, possibly causing incorrect computation.
7610
(gxbitmap.h)
7611
	- When rendering a Pattern, a singular CTM caused an error even if
7612
the Pattern was empty.  (gspcolor.c)
7613
	- The lookup table wasn't allocated for device-originated CRDs.
7614
(gscrdp.c)
7615
	- If an error occurred when setting up to rasterize a band,
7616
data_bits could be freed without ever having been initialized.  (gxclrast.c)
7617
	- Processing a CIE-color image with a color space different from the
7618
current color space caused an error.  (gscie.c)
7619
	- The speedup for bits_replicate_horizontally had an algorithm
7620
error, producing incorrect output.  (gsbitops.c)
7621
 
7622
Splits up the memory device implementation of RasterOp, since the file was
7623
getting too large.  (gdevmem.h, gdevm1.c, gdevm8.c, gdevm16.c, gdevm24.c,
7624
gdevm32.c, gdevmrop.c [deleted], gdevmr1.c, gdevmr2n.c, gdevmr8n.c,
7625
gsnorop.c)
7626
 
7627
Cleans up a little formatting.  (gsbittab.h)
7628
 
7629
Speeds up the default RasterOp implementation some more.  (gdevdgbr.c,
7630
gdevdrop.c, gdevmem.c)
7631
 
7632
Speeds up testing whether a given halftone level is already present in its
7633
cache.  (gzht.h, gxht.c)
7634
 
7635
Speeds up 1-bit CMYK halftones a bit more.  (gxcht.c)
7636
 
7637
Makes filling always use the (much faster) trapezoid-based algorithm if the
7638
region being filled is a rectangle.  (gxfill.c)
7639
 
7640
</pre>
7641
 
7642
<hr>
7643
 
7644
<h2><a name="Version5.60"></a>Version 5.60 (internal) (10/18/98)</h2>
7645
 
7646
<p>
7647
This fileset incorporates many performance enhancements for 1-bit CMYK
7648
devices, especially for PCL 5c interpretation.
7649
 
7650
<p>
7651
This fileset divides the files into subdirectories.  In the lists of changed
7652
files, files with no explicit subdirectory name are in the src subdirectory.
7653
The revised OpenVMS and OS/2 makefiles have not been tested.
7654
 
7655
<h3><a name="5.60_Incompatible_changes"></a>Incompatible changes</h3><pre>
7656
 
7657
(Procedures)
7658
	- The instructions for font compilation in doc/Fonts.htm are
7659
different.
7660
	- The fileset has been split into multiple directories; the source
7661
code and makefiles are now in src/.
7662
	- The top-level makefile requires a definition for BINDIR for the
7663
directory to hold the final executable.
7664
	- Every .dev rule of the form
7665
		xxx.dev: &lt;list&gt;
7666
			$(SETyyy) xxx &lt;items&gt;
7667
			$(ADDMOD) xxx &lt;items&gt;
7668
must be changed to
7669
		$(DD)xxx.dev: &lt;list&gt;
7670
			$(SETyyy) $(DD)xxx &lt;items&gt;
7671
			$(ADDMOD) $(DD)xxx &lt;items&gt;
7672
(DD for drivers, PSD for PostScript/PDF-interpreter features, GLD for
7673
graphics library features).  Every -include and -replace option in the
7674
makefiles rules, and every element of FEATURE_DEVS and DEVICE_DEVS*, must be
7675
changed similarly.  This is very unfortunate, especially since people
7676
editing FEATURE_DEVS and DEVICE_DEVS* must now know which subsystem
7677
implements a particular feature; but we tried 3 different ways to get the
7678
generated .dev files out of the top-level directory, and this was the only
7679
one we could make work.
7680
	- Top-level makefiles must define both MAKEFILE and MAKEFILES,
7681
the latter to include any subsidiary makefiles that define configuration
7682
parameters.  Dependencies on $(MAKEFILE) must be changed to $(MAKEFILES).
7683
	- Color space objects now must either be allocated with the
7684
gs_cspace_build_ procedures or initialized with the gs_cspace_init_
7685
procedures: building color spaces "by hand" is no longer allowed.
7686
 
7687
(Library)
7688
	- There are new required elements of the gs_image_type_t structure.
7689
	- The binary and colored variants of gx_device_halftone have
7690
changed.  (No APIs are affected.)
7691
	- If a device changes its (effective) color mapping algorithm other
7692
than as a side effect of put_params, it must call
7693
gx_device_decache_colors(dev).
7694
 
7695
</pre><h3><a name="5.60_Documentation"></a>Documentation</h3><pre>
7696
 
7697
Fixes problems:
7698
	- Some files still referred to .doc files rather than .htm.
7699
(gsiparam.h, imain.h)
7700
	- Version 5.50 was incorrectly identified as a beta version.
7701
(doc/News.htm)
7702
	- The instructions for cross-compilation were seriously
7703
incomplete.  (doc/Make.htm)
7704
 
7705
Adds a text-only README file.  (doc/README)
7706
 
7707
Updates the instructions for font compilation.  (doc/Fonts.htm)
7708
 
7709
Updates the instructions for device and feature selection.  (doc/Make.htm)
7710
 
7711
Adds material on 8.3 file names, compiler warning messages, and graphics
7712
library error codes to the C style guide.  (doc/C-style.htm)
7713
 
7714
Adds a note about gx_device_decache_colors.  (doc/Drivers.htm)
7715
 
7716
Improves formatting slightly.  (doc/Install.htm, doc/Use.htm)
7717
 
7718
</pre><h3><a name="5.60_Procedures"></a>Procedures</h3><pre>
7719
 
7720
Fixes problems:
7721
	- The Unix install script referred to an obsolete ps2image.ps file.
7722
(unixinst.mak)
7723
	- The Unix CC script had some duplicated definitions.  (unix-cc.mak)
7724
	- The DVX makefile referred to int.mak in GLSRC rather than PSSRC.
7725
(dvx-gcc.mak)
7726
	- rollconv.ps wasn't installed with the other utilities.
7727
(unixinst.mak)
7728
	- Some definitions of MAKEFILE lacked a directory name.  (os2.mak,
7729
unix-cc.mak, unixansi.mak, watclib.mak)
7730
	- There were inappropriate dependencies on a file with the literal
7731
name `makefile'.  (bcwin32.mak, gs.mak, watc32.mak)
7732
	- Unix systems didn't use -fomit-frame-pointer when possible.
7733
(unix-cc.mak, unix-gcc.mak, unixansi.mak, unix-end.mak)
7734
 
7735
Restructures the source files into multiple subdirectories:
7736
	src/ - files needed at build time: *.mak, *.h, *.c, *.cpp, *.icx, *.rc,
7737
		*.cmd, ??.bat, *.com, *.rps, *.dif, *.cfg
7738
	lib/ - files needed at run time: *_*.ps, *.ppd, *.upp, *.bat
7739
	doc/ - documentation other than man pages: *.htm, *.txt
7740
	man/ - man pages: *.1
7741
	examples/ - sample input data: *.ps, *.eps, *.pdf
7742
Also incorporates the font compilation makefile into the main makefile,
7743
since the former now depends on parameters defined in the latter.  (*.mak)
7744
 
7745
****** HAVEN'T SETTLED HOW TO HANDLE .ico FILES ******
7746
 
7747
NOTE: Still need to update: openvms.mak, os2.mak.
7748
 
7749
Updates the Unix install script for the directory split.  (unixinst.mak)
7750
 
7751
Updates the font compilation makefile rules to handle alternate directories.
7752
(cfonts.mak, int.mak)
7753
 
7754
****** PROBLEM: cfonts.mak NEEDS CCFONT, BUT int.mak NEEDS CF* FOR ADDING
7755
ONE'S OWN FONTS ******
7756
 
7757
Removes useless dependencies on gs_*.ps files.  (int.mak)
7758
 
7759
Moves the .dev files into the GEN directories where they belong.  (gs.mak,
7760
dvx-tail.mak, msvclib.mak, openvms.mak, os2.mak, pcwin.mak, ugcclib.mak,
7761
unixhead.mak, unixtail.mak, unix-end.mak, watc.mak, watclib.mak, winlib.mak,
7762
echogs.c, genconf.c) ****** NO_OP FOR dvx HASN'T BEEN VERIFIED ******
7763
NOTE: Still to do:
7764
src/bcwin32.mak
7765
src/dvx-gcc.mak
7766
src/dvx-head.mak
7767
src/dvx-tail.mak
7768
src/msvc32.mak
7769
src/msvccmd.mak
7770
src/msvclib.mak
7771
src/msvctail.mak
7772
src/openvms.mak
7773
src/os2.mak
7774
src/pcwin.mak
7775
src/ugcclib.mak
7776
src/watc.mak
7777
src/watclib.mak
7778
src/watcw32.mak
7779
src/wccommon.mak
7780
src/wctail.mak
7781
src/winint.mak
7782
src/winlib.mak
7783
 
7784
Adds a new BINDIR directory for the final executable (and associated files
7785
like resource files).  After building, only the contents of BINDIR and lib
7786
are needed for execution.  (gs.mak, unix-end.mak) ****** NEED TO DO
7787
openvms.mak, os2.mak, OTHER PC MAKEFILES ******
7788
 
7789
Updates libpng to version 1.0.2.  (libpng.mak)
7790
 
7791
</pre><h3><a name="5.60_Utilities"></a>Utilities</h3><pre>
7792
 
7793
Adds a new switch, -b, to echogs.  (echogs.c)
7794
 
7795
</pre><h3><a name="5.60_Drivers"></a>Drivers</h3><pre>
7796
 
7797
Updates the PDF writer for the change in color space initialization.
7798
(gdevpdfi.c)
7799
 
7800
Speeds up the pkmraw driver a bit more.  (gdevpbm.c)
7801
 
7802
Updates some drivers to use the new CMYK color mapping procedures.
7803
(gdevpbm.c, gdevpcx.c, gdevxalt.c)
7804
 
7805
Updates one driver that maintained its own color cache.  (gdevxalt.c)
7806
 
7807
Removes some compiler warnings (mostly about "uninitialized" variables).
7808
(gdevpdfo.c, gdevpdft.c, gdevpx.c)
7809
 
7810
Adds another driver for the H-P Color LaserJet 5/5M.  (gdevcljc.c)
7811
 
7812
</pre><h3><a name="5.60_Platforms"></a>Platforms</h3><pre>
7813
 
7814
Fixes problems:
7815
	- A change in the MetroWerks C compiler caused the hypot function
7816
to become declared.  (math_.h)
7817
 
7818
</pre><h3><a name="5.60_Interpreter"></a>Interpreter</h3><pre>
7819
 
7820
Updates the compiled font code for updates in the type declarations.
7821
(iccfont.c, icfontab.c)
7822
 
7823
Cleans up some more formatting and macros.  (ccfont.h, errors.h, icfontab.c,
7824
interp.c)
7825
 
7826
Updates clients for the change in color space initialization.  (zcsdevn.c,
7827
zcsindex.c, zcspixel.c, zcssepr.c, zpcolor.c)
7828
 
7829
Updates the memory validator for the addition of the large-block freelist.
7830
(ilocate.c)
7831
 
7832
</pre><h3><a name="5.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
7833
 
7834
Fixes problems:
7835
	- If the final %%EOF was followed by any blanks before the newline,
7836
an error would occur.  (lib/pdf_main.ps)
7837
 
7838
</pre><h3><a name="5.60_Streams"></a>Streams</h3><pre>
7839
 
7840
Fixes problems:
7841
	- The LZWDecode filter wouldn't handle a file that had 4096-256-2+1
7842
data items before the reset.  (We think this is a bug in the file, but
7843
Acrobat accepts it.)  (slzwx.h, slzwd.c)
7844
 
7845
Rearranges code slightly to improve readability.  (spdiff.c)
7846
 
7847
</pre><h3><a name="5.60_Library"></a>Library</h3><pre>
7848
 
7849
Fixes problems:
7850
	- Changing the resolution (or any other parameter) of the bbox
7851
device from the command line caused an invalid memory access.  (gdevbbox.c)
7852
	- When banding, if the very first drawing operation involved a
7853
halftone with non-zero phase, an arithmetic exception occurred.
7854
(gxclpath.c)
7855
	- When banding, the X offset of the band was negated, producing
7856
incorrect output when placing multiple source pages on a single output page.
7857
(gxclread.c)
7858
	- When banding, rotated images crossing band boundaries produced
7859
incorrect output, because the subrectangle X value was inconsistent with the
7860
amount of data transmitted.  (gxclimag.c)
7861
	- When banding, the clipping check didn't take interpolation support
7862
into account.  (gxclimag.c)
7863
	- The clipping check for banding used (int) to take the floor of
7864
floating point values, which is wrong for negative values.  (gxclimag.c)
7865
	- The bounding box device didn't return an empty bounding
7866
rectangle if nothing had been written to it.  (gdevbbox.c)
7867
	- A value was conditional on a debugging switch even if DEBUG wasn't
7868
defined.  (gxcht.c)
7869
	- Filling a region with a large colored halftone, a non-default
7870
RasterOp, and a non-null RasterOp source could cause only part of the region
7871
to be filled.  (gxcht.c) ****** NOT FIXED YET ******
7872
	- Type 1 fonts that used very large numbers (&gt;= 2^19) caused a
7873
rangecheck.  We've fixed this for the only case that seems to matter, namely
7874
&lt;very-large-number&gt; &lt;number&gt; div.  (gxtype1.h, gstype1.c)
7875
	- The memory-based band list allocator failed to return an error
7876
code from memfile_next_blk.  (gxclmem.c)
7877
	- When recovering from a low-band-list-memory condition while
7878
writing an image, the record of the current image enumeration
7879
(cdev-&gt;image_enum_id) wasn't updated.  (gxclimag.c)
7880
	- The estimated memory requirement for the band list rasterizer was
7881
too small.  (gdevprna.c)
7882
 
7883
Adds some tracing to mask clipping.  (gxclipm.c)
7884
 
7885
Speeds up masked images by doing mask clipping before halftoning, using a
7886
more efficient mask scanning algorithm, and checking for vertical blocks of
7887
1s.  (gxclipm.c)
7888
 
7889
Speeds up ImageType 4 images greatly by incorporating the color-key check
7890
into the ImageType 1 rendering code.  NOTE: the 12-bit case has not been
7891
tested.  (gxcpath.h, gximage.h, gxi12bit.c, gxicolor.c, gxifast.c,
7892
gxiinit.c, gximage4.c, gximono.c, gxiscale.c)
7893
 
7894
Implements passing ImageType 4 images (and potentially others) through the
7895
band list.  This involves adding image parameter writing and reading
7896
procedures to the image type structure.  (gscdefs.h, gsiparam.h, gsiparm2.h,
7897
gsiparm4.h, gsmatrix.h, gxclpath.h, gxiparam.h, gconf.c, genconf.c,
7898
gsmatrix.c, gxclimag.c, gxclist.c, gxclpath.c, gxclrast.c, gxiinit.c,
7899
gximage2.c, gximage3.c, gximage4.c)
7900
 
7901
Splits off the generic image support code from the ImageType 1 code.
7902
(gxiinit.c [deleted], gximage.c, gximage1.c, gxipixel.c)
7903
 
7904
Removes some vestiges of support for 16-bit environments.  (gsmisc.c)
7905
 
7906
Implements bit-planar images, important for PCL interpretation.
7907
(gsiparam.h, gximage.h, gxiparam.h, gdevddrw.c, gdevpdfi.c, gdevps.c,
7908
gsimage.c, gxclimag.c, gxidata.c, gximage.c, gxipixel.c) ****** NOT TESTED
7909
YET ******
7910
 
7911
Makes closing a memory device that owns its bitmap set the bitmap pointer to
7912
0, for the sake of an application that doesn't handle is_open properly.
7913
(gdevmem.c)
7914
 
7915
Speeds up floating-point emulation for single-precision add, subtract, and
7916
multiply.  (gsfemu.c)
7917
 
7918
Speeds up sampling of transfer functions.  (gshtx.c)
7919
 
7920
Makes the CIE cache used fixed-point values if the CPU has slow floating
7921
point.  (gscie.h)
7922
 
7923
Adds a unique ID to color spaces to allow fast detection of reselecting the
7924
same color space.  This matters for certain client code that repeatedly
7925
reselects the same color space, since selecting certain color spaces is
7926
expensive.  (gscpixel.h, gscspace.h, gxcspace.h, gscolor2.c, gscpixel.c,
7927
gscscie.c, gscspace.c, gspcolor.c, gsstate.c, gximage2.c) ****** NEED TO FIX
7928
gxclrast.c TO ALLOC INDEXED COLOR SPACE ******
7929
 
7930
Speeds up setting Pattern color spaces, by bypassing the install code for
7931
the base space.  (gspcolor.c)
7932
 
7933
Adds a unique ID to CRDs to allow fast detection of reselecting the same
7934
CRD.  This matters for certain client code that does this repeatedly.
7935
(gscie.h, gscrd.h, gscrd.c)
7936
 
7937
Detects setting the CRD to one with identical PQR components, and bypasses
7938
an expensive setup step.  (gscie.c)
7939
 
7940
Speeds up converting pixels between representations (gx_get_bits_copy) for
7941
devices with up to 4 bits per pixel, by caching the pixel values.
7942
(gdevdgbr.c)
7943
 
7944
Speeds up the slow default RasterOp algorithm a little.  (gdevdrop.c)
7945
 
7946
Defines standard mapping procedures for 1-bit-per-component CMYK colors.
7947
Other code can then test for the presence of these procedures and use more
7948
efficient algorithms.  (gxdevice.h, gxcmap.c)
7949
 
7950
Speeds up some algorithms in the bbox device by making some recursive calls
7951
use a pure color rather than a client-supplied one.  (gdevbbox.h, gdevbbox.c)
7952
 
7953
Adds a cache for the black and white pixel values to the device structure.
7954
(gxdevcli.h, gxdevice.h, gdevalph.c, gdevnfwd.c, gsdparam.c, gxdcolor.c)
7955
 
7956
Makes the code for colored halftones a little more readable.  (gxcht.c)
7957
 
7958
Speeds up color mapping for CMYK devices by copying the color mapping
7959
procedures into forwarding devices, when applicable.  (gdevcmap.c,
7960
gdevmem.c, gsdevice.c, gxclip.c)
7961
 
7962
Removes some compiler warnings (mostly about "uninitialized" variables).
7963
(gxcldev.h, gsdevmem.c, gsshade.c, gstype42.c, gxclpath.c, gxfill.c,
7964
gximage3.c, gxpath2.c, gxpcopy.c)
7965
 
7966
For the benefit of certain client code that commonly sets a CRD and then
7967
doesn't use it, makes loading of the joint CIE caches lazy (at the library
7968
level).  (gscie.h, gscie.c)
7969
 
7970
Changes CIE color restriction from a macro to a procedure, since it is
7971
rarely used.  (gscie.c)
7972
 
7973
Adds code and structures for detecting when CIE Decode and/or Encode
7974
procedures are simply linear transformations, which would allow collapsing
7975
them into the adjacent matrix, but doesn't actually do the collapsing.
7976
(gscie.h, gscie.c)
7977
 
7978
Speeds up color halftoning by pre-computing the mask of planes that need to
7979
be halftoned, and preconverting multi-plane halftones to binary or solid
7980
colors when possible.  (gsdcolor.h, gxcht.c, gxdcolor.c, gxdither.c, gxht.c)
7981
 
7982
Optimizes color mapping for 1-bit-per-component CMYK halftones.  (gxcht.c)
7983
 
7984
Optimizes null RasterOp sources for black = 1 as well as black = 0.
7985
(gxdcolor.c)
7986
 
7987
Modifies the standard allocator so it keeps track of large free blocks as
7988
well as small ones, and uses them to satisfy requests when appropriate.
7989
(gxalloc.h, gsalloc.c)
7990
 
7991
Speeds up the horizontal bitmap replication code a bit.  (Much more is
7992
possible.)  (gsbitops.c)
7993
 
7994
Changes gs_image_max_planes to gs_image_max_components to reflect its
7995
function more accurately.  (gdevddrw.c)
7996
 
7997
</pre>
7998
 
7999
<hr>
8000
 
8001
<h2><a name="Version5.50"></a>Version 5.50 (9/16/98)</h2>
8002
 
8003
<p>
8004
This is the first public release since 5.10.  See
8005
<a href="Current.htm">the release summary</a>
8006
for a list of major additions and changes.
8007
 
8008
<h3><a name="5.50_Documentation"></a>Documentation</h3><pre>
8009
 
8010
Fixes problems:
8011
	- Many files still referred to .txt rather than .htm files.
8012
(DLL.htm, Make.htm, New-user.htm, Readme.htm, bcwin32.mak, cfonts.mak,
8013
devs.mak, dvx-gcc.mak, dwmainc.cpp, gs-vms.hlp, gxdevcli.h, gxdevice.h,
8014
int.mak, jpeg.mak, libpng.mak, msvc32.mak, msvclib.mak, openvms.mak,
8015
os2.mak, unix-cc.mak, unix-gcc.mak, unixansi.mak, watc.mak, watcw32.mak,
8016
wccommon.mak, zlib.mak)
8017
 
8018
Notes that ps2epsi.1 and ps2epsi.txt may be inconsistent or obsolete.
8019
(ps2epsi.1, ps2epsi.txt)
8020
 
8021
Adds a reference to Thomas Merz's Ghostscript manual.  (Readme.htm)
8022
 
8023
Adds instructions for making RPMs.  (Install.htm, Make.htm)
8024
 
8025
Changes the URL for post-release notes.  (Bug-form.htm, Make.htm,
8026
New-user.htm)
8027
 
8028
Notes problems with Watcom compilation.  (Make.htm)
8029
 
8030
</pre><h3><a name="5.50_Procedures"></a>Procedures</h3><pre>
8031
 
8032
Fixes problems:
8033
	- On Unix systems, the documentation files didn't get installed by
8034
`make install'.  (unixinst.mak)
8035
	- $() was missing around MAKEFILE in a Windows makefile.
8036
(msvc32.mak)
8037
	- The dfax drivers didn't include all the necessary files in the
8038
linker list.  (contrib.mak)
8039
	- The MSVC makefiles didn't allow building the executable in a
8040
different directory.  (bcwin32.mak, gs.mak, lib.mak, msvc32.mak,
8041
msvccmd.mak, msvclib.mak, msvctail.mak, os2.mak, watcw32.mak, winint.mak,
8042
winlib.mak)
8043
	- The default build directory for the Borland compiler was debugobj
8044
rather than obj.  (bcwin32.mak)
8045
 
8046
Adds a patch file and some specification files for making RPMs.  (gs.rps,
8047
gs-fonts.rps, rpm-conf.dif)
8048
 
8049
Removes the docs target in the makefile, since this function is now
8050
performed by another program.  (unix-end.mak)
8051
 
8052
</pre><h3><a name="5.50_Drivers"></a>Drivers</h3><pre>
8053
 
8054
Fixes problems:
8055
	- The jpeg drivers caused a memory access error.  (bug introduced in
8056
5.20 by an incorrectly made fix) (gdevjpeg.c)
8057
	- The x11cmyk driver implemented map_rgb_color, which it should not
8058
do.  (gdevxalt.c)
8059
 
8060
Updates a high-level driver for the addition of the bit-planar image format.
8061
(gdevps.c)
8062
 
8063
</pre><h3><a name="5.50_Utilities"></a>Utilities</h3><pre>
8064
 
8065
Fixes problems:
8066
	- echogs -h didn't work in environments where char is signed.
8067
(echogs.c)
8068
 
8069
</pre><h3><a name="5.50_Platforms"></a>Platforms</h3><pre>
8070
 
8071
Fixes problems:
8072
	- MSVC++ 5.0 produced incorrect code with TDEBUG=0.  We "fixed" this
8073
problem by noting in the makefile that TDEBUG must be left set to 1.
8074
(msvc32.mak, msvclib.mak)
8075
 
8076
Updates the icons for the MS Windows and OS/2 platforms.  (gsgraph.icx,
8077
gsos2.icx, gspmdrv.icx, gstext.icx)
8078
 
8079
</pre><h3><a name="5.50_Interpreter"></a>Interpreter</h3><pre>
8080
 
8081
Fixes problems:
8082
	- setpagedevice didn't update the state correctly when switching to
8083
a new type of device (different OutputDevice value).  (gs_setpd.ps)
8084
	- The interpreter's initialization depended on BSS being initialized
8085
to 0.  (files.h, zfile.c)
8086
 
8087
Removes all references to reloc_struct_ptr other than in gsstruct.h.
8088
(igcref.c)
8089
 
8090
Adds DEBUG tracing for pdfmarks.  (gs_pdfwr.ps)
8091
 
8092
Disables TEST code for release.  (zcrd.c, zfdcte.c)
8093
 
8094
</pre><h3><a name="5.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
8095
 
8096
Fixes problems:
8097
	- Some third-party software still referred to the obsolete #?
8098
procedure.  (pdf_main.ps)
8099
	- Destinations with string names weren't properly converted to
8100
pdfmarks.  (pdf_main.ps)
8101
	- Destinations with S = /Named weren't supported.  (pdf_main.ps)
8102
 
8103
</pre><h3><a name="5.50_Library"></a>Library</h3><pre>
8104
 
8105
Fixes problems:
8106
	- Dropout prevention wasn't applied to landscape image masks.
8107
(gximono.c)
8108
	- When using async rendering, the renderer's allocator was allocated
8109
with the wrong allocator.  (gdevprna.c)
8110
	- gx_strip_bitmap and gx_device_mask_clip didn't have proper GC
8111
descriptors, causing crashes if a GC occurred while rendering an ImageType 3
8112
or 4 image.  (gsstruct.h, gxbitmap.h, gxclip2.h, gxclipm.h, gxmclip.h,
8113
gspcolor.c, gxclipm.c, gxmclip.c)
8114
	- The buffer for printer devices wasn't reallocated properly for
8115
async devices when the page size changed.  We aren't entirely comfortable
8116
with the fix, but it's the best we've got right now.  (gdevprn.c)
8117
	- Some files wouldn't compile with -dNOPRIVATE.  (gxcspace.h,
8118
gscdevn.c, gscolor2.c, gscscie.c, gscsepr.c)
8119
	- gp_semaphore_close and gp_monitor_close were defined as not
8120
returning an error code.  (gpsync.h, gp_nsync.c, gp_posem.c, gp_semon.c,
8121
gp_win32.c)
8122
	- Initialization code depended on BSS being initialized to 0.
8123
(gsiodev.c)
8124
	- The special PCL color mapping device didn't handle CMYK devices
8125
correctly in other than "identity" mode.  (gdevcmap.c)
8126
 
8127
Cleans up a little formatting.  (gscie.h, gscpixel.c, gxmclip.c)
8128
 
8129
Removes all references to reloc_struct_ptr other than in gsstruct.h.
8130
(gsstruct.h, gsalloc.c, gsdevice.c, gsfont.c, gxcpath.c)
8131
 
8132
Patches the async code so that it allocates twice as much space for the
8133
renderer as should be needed, to deal with sandbars.  (gdevprna.c)
8134
 
8135
</pre>
8136
 
8137
<hr>
8138
 
8139
<h2><a name="Version5.40"></a>Version 5.40 (beta) (9/10/98)</h2>
8140
 
8141
<p>
8142
A few more fixes.  This is intended as the candidate fileset for the 5.50
8143
release.
8144
 
8145
<h3><a name="5.40_Documentation"></a>Documentation</h3><pre>
8146
 
8147
Fixes problems:
8148
	- The current GNU Ghostscript version was documented as 3.33, not
8149
4.03.  (New-user.htm)
8150
	- The ansi2knr usage documentation didn't mention --filename.
8151
(ansi2knr.1)
8152
	- A projected completion date was too optimistic.  (ps2pdf.1)
8153
 
8154
Replaces all documentation files with new HTML versions.  (*.txt [deleted],
8155
*.htm, index.html, imainarg.c)
8156
 
8157
Adds a contributed set of Emacs macros useful for working with Ghostscript
8158
documentation.  (gsdoc.el)
8159
 
8160
Changes the version and date format slightly in one file for consistency.
8161
(gs-vms.hlp)
8162
 
8163
</pre><h3><a name="5.40_Procedures"></a>Procedures</h3><pre>
8164
 
8165
Adds a make target (make docs) to touch up documentation files before a
8166
release.  (unix-end.mak)
8167
 
8168
</pre><h3><a name="5.40_Utilities"></a>Utilities</h3><pre>
8169
 
8170
Removes the long-obsolete ps2image.ps utility.  (ps2image.ps [deleted])
8171
 
8172
</pre><h3><a name="5.40_Drivers"></a>Drivers</h3><pre>
8173
 
8174
Adds a driver for the Color LaserJet 5.  (devs.mak, gdevclj.c)
8175
 
8176
</pre><h3><a name="5.40_Platforms"></a>Platforms</h3><pre>
8177
 
8178
Fixes problems:
8179
	- Blanks in command lines weren't handled properly.  (dwmain.cpp,
8180
dwmainc.cpp)
8181
 
8182
</pre><h3><a name="5.40_Library"></a>Library</h3><pre>
8183
 
8184
Fixes problems:
8185
	- 16-bit devices didn't convert colors to RGB correctly.
8186
(gdevm16.c)
8187
	- 16- and 32-bit RasterOp didn't work, because pack_from_standard
8188
didn't handle depths greater than 8.  (gdevdrop.c)
8189
	- RasterOps with devices with non-standard color representation
8190
sometimes substituted black or white for the source or target.  (gdevdrop.c)
8191
	- The non-orthogonal case of Axial shading executed the axial-case
8192
code as well.  (gxshade1.c)
8193
	- copy_color on 4-bit-deep memory devices did an unnecessary
8194
fit_copy check.  (gdevm4.c)
8195
	- An upcast was missing.  (gdevbbox.c)
8196
	- View clipping was applied to internal devices, incorrectly.
8197
(gspath.c)
8198
 
8199
Revises the implementation of shading so as to reduce the use of macros,
8200
update formatting, and help prepare for PatternType 2 patterns.  (gsshade.h,
8201
gxshade.h, gxshade4.h, gscolor3.c, gsshade.c, gxshade.c, gxshade1.c,
8202
gxshade4.c, gxshade6.c)
8203
 
8204
</pre>
8205
 
8206
<hr>
8207
 
8208
<h2><a name="Version5.39"></a>Version 5.39 (beta) (9/8/98)</h2>
8209
 
8210
<p>
8211
A couple more small fixes.
8212
 
8213
<h3><a name="5.39_Drivers"></a>Drivers</h3><pre>
8214
 
8215
Fixes problems:
8216
	- The pkm[raw] drivers didn't work with 32-bit pixels.  (gdevpbm.c)
8217
 
8218
Adds (fake) 8-, 16-, and 32-bit X11 CMYK devices, for debugging.
8219
Unfortunately, the 16- and 32-bit devices consume the hardware color map and
8220
then no longer behave reasonably; the 8-bit device produces output with
8221
garbled colors (fixed in 5.40).  (devs.mak, gdevxalt.c)
8222
 
8223
</pre><h3><a name="5.39_Library"></a>Library</h3><pre>
8224
 
8225
Fixes bugs:
8226
	- All banded devices caused a memory access error.  (bug introduced
8227
in 5.38)  (gsstate.c)
8228
	- The special color mapping device didn't update its state after
8229
put_params.  (gdevcmap.c)
8230
	- RasterOp on 8-bit non-gray-scale devices didn't handle filling
8231
with constant 0 or 1 properly.  (gdevmrop.c)
8232
	- The halftone machinery didn't switch from full-size to strip
8233
halftones early enough, possibly allocating very large halftone data
8234
structures.  (gshtscr.c)
8235
	- If an ioerror (such as a disk- or memory-full condition) occurred
8236
while writing out the band list, the bookkeeping structures were left in an
8237
inconsistent state, causing further problems.  (gxclutil.c)
8238
	- Some shaded fills didn't check for errors when filling
8239
sub-regions.  (gxshade1.c, gxshade4.c)
8240
 
8241
Cleans up some formatting.  (gxshade6.c)
8242
 
8243
</pre>
8244
 
8245
<hr>
8246
 
8247
<h2><a name="Version5.38"></a>Version 5.38 (beta) (9/3/98)</h2>
8248
 
8249
<p>
8250
The sole purpose of this release was to fix some obscure bugs detected by
8251
the Genoa tests and by another Aladdin project.
8252
 
8253
<h3><a name="5.38_Documentation"></a>Documentation</h3><pre>
8254
 
8255
Updates the list of implemented PostScript LanguageLevel 3 features.
8256
(current.txt)
8257
 
8258
</pre><h3><a name="5.38_Drivers"></a>Drivers</h3><pre>
8259
 
8260
Fixes problems:
8261
	- The PDF writer did the wrong thing for multi-source images with
8262
more than 180 bytes of data (total) per scan line.  (gdevpdfi.c)
8263
	- If one used setdistillerparams, [g]restore caused a rangecheck in
8264
.setpagedevice.  ****** DISABLED FOR DCT DICTS, SINCE THIS CAUSES A SEGV
8265
****** (gdevpsdp.c)
8266
 
8267
</pre><h3><a name="5.38_Interpreter"></a>Interpreter</h3><pre>
8268
 
8269
Fixes problems:
8270
	- 0-length parameter arrays were given an arbitrary type, confusing
8271
clients.  (iparam.c)
8272
	- EOD on a write stream caused an error.  (zfileio.c)
8273
 
8274
</pre><h3><a name="5.38_Library"></a>Library</h3><pre>
8275
 
8276
Fixes problems:
8277
	- 0-length parameter arrays confused clients that wanted arrays of a
8278
particular type.  (gsparam.c)
8279
	- Patterns with XStep or YStep smaller than the bounding box didn't
8280
work properly.  (gxp1fill.c)
8281
	- Resizing an object sometimes copied it unnecessarily.  (gsalloc.c)
8282
	- Freeing the shared part of a graphics state didn't free its
8283
sub-objects.  (gsstate.c)
8284
	- The standard allocator didn't free its initial (self-containing)
8285
chunk when asked to free itself.  (gsalloc.c)
8286
	- The standard allocator didn't attempt to merge free blocks before
8287
giving up.  We implemented this by adding another virtual procedure to
8288
allocators, consolidate_free.  (gsmemory.h, gsmemraw.h, gsalloc.c,
8289
gsmalloc.c, gsmemlok.c, gsmemory.c)
8290
	- The free object merging algorithm thought there were free objects
8291
even when there weren't.  (Small performance bug only.)  (gsalloc.c)
8292
 
8293
Adds some more tracing to pattern filling.  (gxclip2.c, gxp1fill.c)
8294
 
8295
Replaces the cs_alloc, cs_copy, and cs_undo_alloc macros with procedures.
8296
(gxcspace.h, gscolor2.c, gscsepr.c, gscspace.c, gspcolor.c)
8297
 
8298
Moves the free-object merging code from gsnogc.c to gsalloc.c, so it can be
8299
used even in systems that have a garbage collector.  (gsalloc.h, gxalloc.h,
8300
gsalloc.c, gsnogc.c)
8301
 
8302
</pre>
8303
 
8304
<hr>
8305
 
8306
<h2><a name="Version5.37"></a>Version 5.37 (beta) (8/31/98)</h2>
8307
 
8308
<h3><a name="5.37_Documentation"></a>Documentation</h3><pre>
8309
 
8310
Mentions the new cid2code utility in the documentation.  (psfiles.txt)
8311
 
8312
Documents dpsnext.dev.  (gs.mak)
8313
 
8314
Notes that clients of ImageType 3 images are responsible for providing the
8315
mask data before the pixel data.  (gsiparm3.h)
8316
 
8317
</pre><h3><a name="5.37_Procedures"></a>Procedures</h3><pre>
8318
 
8319
Fixes problems:
8320
	- The makefiles were missing a dependency of jconfig.h on arch.h.
8321
With this fix, parallel builds (make -jN) work reliably.  (jpeg.mak)
8322
 
8323
</pre><h3><a name="5.37_Utilities"></a>Utilities</h3><pre>
8324
 
8325
Adds a utility for creating maps from CIDs to Unicode.  (unixinst.mak,
8326
cid2code.ps)
8327
 
8328
</pre><h3><a name="5.37_Drivers"></a>Drivers</h3><pre>
8329
 
8330
Removes the %Fax% IODevice code, since it was only a skeleton and Adobe no
8331
longer supports this facility.  (devs.mak, gdevpfax.c [deleted])
8332
 
8333
</pre><h3><a name="5.37_Fonts"></a>Fonts</h3><pre>
8334
 
8335
Fixes problems:
8336
	- TrueType fonts whose first code wasn't 0 or 0xf000 didn't display
8337
correctly.  (bug introduced in 5.36) (gs_ttf.ps)
8338
	- CIDFontType 0 fonts didn't handle being redefined with another
8339
name.  (gs_cidfn.ps)
8340
	- CIDFontType 0 fonts could get local-into-global-store errors.
8341
(gs_cidfn.ps)
8342
	- PDF files couldn't use already-defined CMap resources.
8343
(pdf_font.ps)
8344
	- Out-of-range CIDs gave an error rather than using a notdef
8345
character.  (gs_cidfn.ps)
8346
 
8347
</pre><h3><a name="5.37_Interpreter"></a>Interpreter</h3><pre>
8348
 
8349
Fixes problems:
8350
	- CIDFontType 4 fonts weren't recognized as CID-keyed.  (zchar2.c,
8351
zchar32.c, zfont32.c)
8352
	- When recovering from an error in an operator procedure, the
8353
interpreter didn't update the dictionary stack caches.  (interp.c)
8354
	- startjob didn't reinitialize the stacks or VM space.  (gs_lev2.ps)
8355
	- Encoding filters with a Predictor always caused an error.
8356
(zfilter2.c)
8357
	- currenttrapparams gave an error.  (gs_ll3.ps)
8358
	- settrapparams had no effect, and left the dictionary on the stack.
8359
(gs_ll3.ps)
8360
 
8361
Finishes implementing Type 32 fonts.  These fonts don't actually work
8362
directly with the cache -- they store the bitmaps in a compressed form in an
8363
ordinary Dictionary -- but they do behave the way they are specified.
8364
(gs_typ32.ps, zchar32.c, zfont32.c)
8365
 
8366
Cleans up formatting and macros in a few more files.  (ccfont.h, icharout.h,
8367
icstate.h, iutil.h, iutil2.h, ibnum.c, iccfont.c, iccinit0.c, ilocate.c,
8368
isave.h, isave.c, iscannum.c, iutil.c, iutil2.c)
8369
 
8370
Removes or capitalizes a few more macros.  (zcontext.c, zcssepr.c,
8371
zusparam.c)
8372
 
8373
</pre><h3><a name="5.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
8374
 
8375
Fixes problems:
8376
	- Color spaces with subsidiary spaces (Indexed, Separation, DeviceN)
8377
sometimes didn't work properly, because they were translated to PostScript
8378
structures more than once.  (pdf_draw.ps)
8379
	- Type 3 fonts didn't rebind the resource context when executing the
8380
CharProc procedure.  (pdf_font.ps)
8381
 
8382
</pre><h3><a name="5.37_Streams"></a>Streams</h3><pre>
8383
 
8384
Fixes problems:
8385
	- The CCITTFax decoder signaled an error if it saw an EOB with
8386
EndOfBlock = false.  (According to e-mail from Adobe, EOBs should be
8387
recognized even if EndOfBlock is false, even though the Red Book implies the
8388
opposite.)  (scfd.c)
8389
 
8390
Cleans up macros and formatting in a few more files.  (slzwce.c, sfxfd.c,
8391
sfxstdio.c)
8392
 
8393
</pre><h3><a name="5.37_Library"></a>Library</h3><pre>
8394
 
8395
Fixes problems:
8396
	- Landscape color images usually didn't display.  (bug introduced in
8397
5.32)  (gxicolor.c)
8398
	- If gs_heap_free_object was called with ptr != 0 but bp = 0 (which
8399
is an error), an invalid memory access would occur.  (gsmalloc.c)
8400
	- The left side bearing was still being added in a second time for
8401
the accent of a seac.  (bug probably introduced in 5.20)  (gxtype1.c)
8402
	- An access error occurred when rendering the very last glyph of a
8403
TrueType font with a 2-byte loca table.  (gstype42.c)
8404
	- In the fast portrait case of monochrome images, a numerical error
8405
sometimes produced a 1-bit-wide vertical stripe of an incorrect color at the
8406
right edge of the image.  (gxifast.c)
8407
	- ImageType 3 images with InterleaveType = 3 gave memory access
8408
errors.  (gximage3.c)
8409
	- Hit detection ignored any part of the aperture that had negative X
8410
or Y coordinates.  (gdevhit.c)
8411
	- The special color mapping device didn't copy all necessary values
8412
back from its target.  (gxdevice.h, gdevbbox.c, gdevcmap.c, gsdevice.c)
8413
	- The special color mapping device didn't handle ordinary (Type 1)
8414
images correctly.  (gdevcmap.c)
8415
	- CMYK halftones complemented both the color and the halftone level:
8416
this produced the right number of pixels turned on (only for linear spot
8417
functions or threshold arrays), but wasn't consistent with either the Adobe
8418
specification or the user's intentions.  (gxcht.c)
8419
	- The phase of mask Patterns wasn't always set correctly.
8420
(gxp1fill.c)
8421
	- The reader side of overlapped band devices was confused about its
8422
open/closed status.  (gdevprna.c)
8423
 
8424
Renames Type 32 fonts from ft_bitmap to ft_CID_bitmap.  (gxftype.h)
8425
 
8426
Adds some more tracing for composite font decoding.  (gsfcmap.c)
8427
 
8428
Adds some more tracing for images.  (gxiinit.c)
8429
 
8430
Cleans up formatting and macros in a few more files.  (gxifast.c)
8431
 
8432
Moves the image*_type_data and image*_enum_procs_data definitions from
8433
header files into more appropriate .c files.  (gsiparm2.h, gsiparm3.h,
8434
gsiparm4.h, gxiparam.h, gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
8435
 
8436
</pre>
8437
 
8438
<hr>
8439
 
8440
<h2><a name="Version5.36"></a>Version 5.36 (beta) (8/25/98)</h2>
8441
 
8442
<p>
8443
Another set of fixes.  The free-standing bbox device now produces convenient
8444
%%BoundingBox messages.  This fileset also includes support for double-byte
8445
TrueType fonts.
8446
 
8447
<h3><a name="5.36_Documentation"></a>Documentation</h3><pre>
8448
 
8449
Fixes problems:
8450
	- There was a minor spacing glitch in one man page.  (gs.1)
8451
	- The page printed by align.ps didn't make it clear enough what to
8452
do with the numbers it asks users to calculate.  (align.ps)
8453
	- The sample code for adding gamma adjustment didn't work most of
8454
the time.  (devices.txt)
8455
	- The prolog produced by pswrite was completely uncommented.
8456
(gdevps.c)
8457
	- The documentation didn't note that the string block freelist
8458
(sfree) is sorted in address order.  (gxalloc.h)
8459
 
8460
Notes that FirstBitLowOrder and LowBitFirst are equivalent.  (slzwx.h)
8461
 
8462
Notes a change in the FTP site of the free Kanji ("Wadalab") fonts.
8463
(fonts.txt)
8464
 
8465
Adds a pointer to the freely available Unicode CMaps.  (fonts.txt)
8466
 
8467
Changes an obsolete e-mail address for Carsten Emde.  (contrib.mak)
8468
 
8469
</pre><h3><a name="5.36_Utilities"></a>Utilities</h3><pre>
8470
 
8471
Fixes problems:
8472
	- The viewgif utility sometimes left 1-scan-line gaps when rendering
8473
interlaced images.  (viewgif.ps)
8474
 
8475
</pre><h3><a name="5.36_Drivers"></a>Drivers</h3><pre>
8476
 
8477
Fixes problems:
8478
	- In the PDF writer, downsampled images were always written with 8
8479
bits per sample, not the requested depth.  (gdevpsdi.c)
8480
	- The 8-to-N-bit compression filter produced an extra byte at the
8481
end of each row, and the N-to-8-bit expansion filter skipped an input byte
8482
at the end of each row.  (gdevpsds.c)
8483
	- In the PDF writer, the size of downsampled images for changing the
8484
pixel width was set incorrectly, leading to inconsistent image parameters in
8485
the output.  (gdevpsdi.c)
8486
	- The subsampling filters didn't take a clear position about what to
8487
do with excess input samples beyond a multiple of the reduction factor,
8488
leading to inconsistent image parameters.  We added a Boolean to indicate
8489
whether they should discard the samples or use them to create an additional
8490
output sample.  (gdevpsds.h, gdevpsdi.c, gdevpsds.c)
8491
	- The subsampling filters didn't provide the necessary set_defaults
8492
procedures.  (gdevpsds.h, gdevpsds.c)
8493
	- Because of a typo, pdfwrite and pswrite printed sequences of 4
8494
decimal values wrong. (bug introduced during macro removal in 5.25)
8495
(gdevpstr.c)
8496
 
8497
Makes the PS writer produce a %%HiResBoundingBox as well as a %%BoundingBox.
8498
(gdevps.c)
8499
 
8500
</pre><h3><a name="5.36_Platforms"></a>Platforms</h3><pre>
8501
 
8502
Fixes problems:
8503
	- The Borland makefile didn't include the MT libraries.  We added a
8504
MULTITHREAD option to this makefile.  (bcwin32.mak)
8505
	- The MSVC makefile didn't include the MT switches in the right
8506
place.  (msvccmd.mak)
8507
	- 'make clean' in the Windows makefiles didn't clean up quite
8508
enough.  (bcwin32.mak, msvc32.mak, msvccmd.mak)
8509
	- The OS/2 makefile had gotten slightly out of date.  (os2.mak)
8510
 
8511
Cleans up some formatting.  (gp_win32.c)
8512
 
8513
</pre><h3><a name="5.36_Fonts"></a>Fonts</h3><pre>
8514
 
8515
Fixes problems:
8516
	- Loading large TrueType fonts caused excessive garbage collection.
8517
(gs_ttf.ps)
8518
 
8519
Finishes implementing support for turning double-byte TrueType fonts into
8520
CIDFontType 2 fonts.  (gs_ttf.ps)
8521
 
8522
</pre><h3><a name="5.36_Interpreter"></a>Interpreter</h3><pre>
8523
 
8524
Fixes problems:
8525
	- We thought the dictionary returned by currentuserparams should
8526
always be allocated in local VM, but in fact the correct definition is that
8527
it should be allocated in the current VM.  The simplest way to make this
8528
work is for setuserparams to copy any string values into global VM.
8529
(gs_lev2.ps)
8530
	- 1-input stitching functions didn't allow k = 0.  (ifunc.h,
8531
zfunc.c)
8532
	- OtherSubrs defined in PostScript no longer worked.  (bug probably
8533
introduced when we rewrote the Type 1 code in C) (zchar1.c)
8534
 
8535
Cleans up a few compiler warnings (missing empty 'default' cases, unused
8536
variables).  (igc.c, iname.c)
8537
 
8538
Replaces some uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
8539
(isave.c, iscan.c)
8540
 
8541
</pre><h3><a name="5.36_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
8542
 
8543
Fixes problems:
8544
	- Resources were re-created on each page, causing (sometimes a lot
8545
of) unnecessary computation.  We implemented most of the machinery for
8546
avoiding this, but not the mechanism for actually storing resources in
8547
global VM.  (pdf_base.ps, pdf_main.ps)
8548
 
8549
Adds a little more debugging code.  (pdf_draw.ps)
8550
 
8551
</pre><h3><a name="5.36_Streams"></a>Streams</h3><pre>
8552
 
8553
Cleans up formatting in a few more files.  (sbtx.h, sfilter.h, slzwx.h,
8554
spngpx.h, srlx.h, sstring.h, seexec.c, sfilter1.c, sfilter2.c, smtf.c,
8555
spcxd.c, srld.c, srle.c)
8556
 
8557
Replaces a couple of #defines with duplicated (small) structures.  (sbtx.h,
8558
sfilter.h, sfilter1.c, sfilter2.c)
8559
 
8560
Replaces all uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
8561
(stream.c)
8562
 
8563
</pre><h3><a name="5.36_Library"></a>Library</h3><pre>
8564
 
8565
Fixes problems:
8566
	- If a garbage collection occurred during a string show operation,
8567
memory could be corrupted. (bug introduced in 5.24) (gstext.h, gstext.c)
8568
	- A debugging check incorrectly indicated an error when
8569
miter-checking lines with a 0 degree angle between them.  (gxstroke.c)
8570
	- A structure created for bitmap/pixmap patterns was never freed.
8571
(gspcolor.c)
8572
	- Colored halftones didn't work with 24-bit devices.  (This case was
8573
never actually used.)  (gxcht.c)
8574
	- CIE colors didn't remap properly if the current color space was a
8575
Pattern space.  (gscie.c)
8576
	- In a non-garbage-collected environment, freeing a string in the
8577
current chunk made an unnecessary test.  (Minor performance impact only.)
8578
(gsnogc.c)
8579
 
8580
Cleans up a few compiler warnings (missing empty 'default' cases, unused
8581
variables).  (gsht.c, gsht1.c, gshtscr.c, gsimage.c, gxacpath.c, gxclread.c,
8582
gxicolor.c, gxshade4.c)
8583
 
8584
Replaces some uses of RELOC_*_PTR with RELOC_*_VAR.  (gsht1.c)
8585
 
8586
Changes the printed output of the free-standing bbox device so it produces
8587
%%BoundingBox and %%HiResBoundingBox lines that can be dropped directly into
8588
a DSC header.  (gdevbbox.c)
8589
 
8590
Speeds up the 4-bit case of copy_mono by about 30%.  (gdevm4.c)
8591
 
8592
Expands some macros and cleans up formatting, for easier reading and
8593
debugging.  Speeds up the color halftone generation algorithm substantially
8594
(up to 40%), by skipping the halftone computation for planes that are known
8595
to be solid-color, and using copy_mono directly if only one plane is not
8596
solid-color.  (gxcht.c)
8597
 
8598
</pre>
8599
 
8600
<hr>
8601
 
8602
<h2><a name="Version5.35"></a>Version 5.35 (beta) (8/18/98)</h2>
8603
 
8604
<p>
8605
More updates for 5.3x, specifically fixing problems with halftones on banded
8606
CMYK devices.
8607
 
8608
<h3><a name="5.35_Documentation"></a>Documentation</h3><pre>
8609
 
8610
Fixes problems:
8611
	- The URLs for the third-party libraries were out of date.
8612
(make.txt, jpeg.mak, libpng.mak, zlib.mak)
8613
 
8614
</pre><h3><a name="5.35_Drivers"></a>Drivers</h3><pre>
8615
 
8616
Adds an x11gray4 device for help in debugging.  (devs.mak, gdevxalt.c)
8617
 
8618
</pre><h3><a name="5.35_Fonts"></a>Fonts</h3><pre>
8619
 
8620
Fixes problems:
8621
	- TrueType fonts with more than 64K of data before or after the
8622
glyfs caused an error.  (gs_ttf.ps)
8623
 
8624
</pre><h3><a name="5.35_Interpreter"></a>Interpreter</h3><pre>
8625
 
8626
Fixes problems:
8627
	- The dictionary returned by currentuserparams was allocated in the
8628
current VM rather than always in local VM.  (gs_lev2.ps)
8629
 
8630
</pre><h3><a name="5.35_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
8631
 
8632
Fixes problems:
8633
	- CID-keyed fonts caused an error, because their CDevProc was
8634
incorrect.  (pdf_font.ps)
8635
 
8636
</pre><h3><a name="5.35_Library"></a>Library</h3><pre>
8637
 
8638
Fixes problems:
8639
	- A comment was duplicated.  (gxht.h)
8640
	- The main procedure of the command list reader was so large that it
8641
couldn't be optimized by many compilers, and was very hard to read.
8642
(gxclrast.c)
8643
	- Banding devices using multi-screen halftones could get memory
8644
access errors because they didn't clear the halftone caches when changing
8645
halftone parameters.  (gxclrast.c)
8646
	- Banding devices using multi-screen halftones didn't set the
8647
halftone phase correctly.  (gxcht.c, gxclrast.c)
8648
	- RasterOp didn't work for 2- or 4-bit gray-scale devices.  It still
8649
doesn't work right, but it's closer.  (gdevm2.c, gdevm4.c, gdevmrop.c)
8650
	- Undefined characters in CMap-based composite fonts caused errors
8651
and possible invalid memory accesses.  (gschar0.c)
8652
 
8653
</pre>
8654
 
8655
<hr>
8656
 
8657
<h2><a name="Version5.34"></a>Version 5.34 (beta) (8/16/98)</h2>
8658
 
8659
<p>
8660
More updates for 5.3x.
8661
 
8662
<h3><a name="V5.34_Documentation"></a>Documentation</h3><pre>
8663
 
8664
Updates all of the man pages to new versions.  (gs-vms.hlp, gs.1, pdf2dsc.1,
8665
pdf2ps.1, ps2ascii.1, ps2epsi.1, ps2pdf.1, ps2ps.1)
8666
 
8667
</pre><h3><a name="V5.34_Procedures"></a>Procedures</h3><pre>
8668
 
8669
Fixes problems:
8670
	- The MSVC library makefile incorrectly included gp_msio.c.
8671
(msvclib.mak, winlib.mak)
8672
 
8673
</pre><h3><a name="V5.34_Drivers"></a>Drivers</h3><pre>
8674
 
8675
Fixes problems:
8676
	- The PDF writer unnecessarily checked for other parameters after a
8677
failing show or pdfmark.  (gdevpdfp.c)
8678
	- The device's BufferSpace parameter was ignored.  (bug introduced
8679
by async rendering code in 5.30) (gdevprn.c)
8680
	- Banding devices smashed the first 4 bytes of each scan line.  (bug
8681
introduced in 5.28) (gxdevmem.h, gdevmem.c, gxclread.c)
8682
	- The phase for colored halftones was set wrong.  (We have "fixed"
8683
this innumerable times, and it is still probably wrong.)  (gxclrast.c)
8684
 
8685
Replaces the deprecated gx_device_image_xxx calls with the new gx_image_xxx
8686
calls.  (gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
8687
 
8688
</pre><h3><a name="V5.34_Interpreter"></a>Interpreter</h3><pre>
8689
 
8690
Fixes problems:
8691
	- The equality test for idiom recognition sometimes incorrectly
8692
returned false.  (zmisc3.c)
8693
	- shfill didn't take the BBox into account.  (It still doesn't.)
8694
(gxshade.c)
8695
	- The status operator could return an incorrect pages or bytes value
8696
for files larger than 2 Gb, rather than giving an error.  (zfile.c)
8697
 
8698
</pre><h3><a name="V5.34_Library"></a>Library</h3><pre>
8699
 
8700
Fixes problems:
8701
	- The hint tables weren't reset after processing the base character
8702
of a 'seac', leading to incorrect hinting and (for Type 2 CharStrings)
8703
possible mis-parsing of the outline data.  (gstype2.c)
8704
	- When processing a 'seac', the left side bearing was added in
8705
twice, displacing characters to the right.  (bug probably introduced in
8706
5.20) (gstype1.c)
8707
	- RasterOps didn't set the size of the RasterOp texture device,
8708
which caused filling operations involving a colored halftone to be clipped
8709
to an empty rectangle.  (gdevrops.c)
8710
	- When filling with a colored halftone, the RasterOp source was
8711
often disregarded.  (gxcht.c)
8712
	- gx_device_image[_plane]_data and gx_device_end_image took an
8713
unused dev argument, leading to potential confusion.  We deprecated the
8714
gx_device_image_plane_data and gx_device_end_image procedures, replacing
8715
them with macros that call their replacements gx_image_plane_data and
8716
gx_image_end (which no longer have the spurious dev argument).  (gxdevcli.h,
8717
gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c, gdevdflt.c, gsimage.c,
8718
gslib.c, gxclimag.c, gxclrast.c, gximage2.c, gximage3.c, gximage4.c)
8719
	- gs_color_adjust_count, introduced in 5.33 to address the problem
8720
of freeing free-standing patterns, just made things worse.  We are replacing
8721
them with gs_pattern_reference, essentially the procedure introduced in 5.31
8722
that we deleted in 5.33.  (gsccolor.h, gspcolor.h, gscolor.c, gspcolor.c)
8723
 
8724
Changes hint suppression from a #define to a debugger-settable static.
8725
(gxhint1.c)
8726
 
8727
</pre>
8728
 
8729
<hr>
8730
 
8731
<h2><a name="Version5.33"></a>Version 5.33 (beta) (8/14/98)</h2>
8732
 
8733
<p>
8734
This is the third set of updates for 5.30.  These updates have been driven
8735
mostly by the needs of another Aladdin project, so they haven't included as
8736
many problem fixes as we would normally make.
8737
 
8738
<h3><a name="V5.33_Platforms"></a>Platforms</h3><pre>
8739
 
8740
Fixes problems:
8741
	- The thread creation procedure for Win32 called a Windows function
8742
rather than the proper C library function.  (gp_win32.c)
8743
	- In some MS-DOS implementations, the copy command doesn't recognize
8744
the /Y switch.  (bcwin32.mak)
8745
 
8746
</pre><h3><a name="V5.33_Fonts"></a>Fonts</h3><pre>
8747
 
8748
Fixes problems:
8749
	- TrueType fonts with *less* than 64K of glyf data stopped working.
8750
(bug introduced in 5.31) (gs_ttf.ps)
8751
 
8752
</pre><h3><a name="V5.33_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
8753
 
8754
Fixes problems:
8755
	- Using an Identity function left an extra element on the stack.
8756
(pdf_draw.ps)
8757
	- The syntax of # in names is different in PDF 1.1 and PDF 1.2, but
8758
the PDF 1.2 syntax was always used.  (pdf_base.ps, pdf_main.ps)
8759
 
8760
</pre><h3><a name="V5.33_Library"></a>Library</h3><pre>
8761
 
8762
Fixes problems:
8763
	- Color images still always caused an error. (bug introduced in
8764
5.32) (gxicolor.c)
8765
	- Because of a typo, the implementation of image types didn't
8766
compile. (bug introduced in 5.32)  (gxiparam.h)
8767
	- Free-standing colors (specifically pattern colors) and color
8768
spaces couldn't be freed.  This required a NON-BACKWARD-COMPATIBLE change in
8769
an internal API used for managing color and color space reference counts.
8770
(gxcspace.h, gsccolor.h, gscdevn.c, gscolor.c, gscolor2.c, gscscie.c,
8771
gscsepr.c, gscspace.c, gspcolor.c)
8772
 
8773
Cleans up a little more formatting.  (gscspace.h)
8774
 
8775
</pre>
8776
 
8777
<hr>
8778
 
8779
<h2><a name="Version5.32"></a>Version 5.32 (beta) (8/13/98)</h2>
8780
 
8781
<p>
8782
This is the second set of updates for 5.30.
8783
 
8784
<h3><a name="V5.32_Procedures"></a>Procedures</h3><pre>
8785
 
8786
Fixes problems:
8787
	- The OS/2 makefile accidentally omitted the OS/2-PM driver.
8788
(os2.mak)
8789
	- The MSVC library makefile didn't work.  (msvclib.mak)
8790
	- Debugging was turned on in the Borland Windows makefile.
8791
(bcwin32.mak)
8792
	- The BEGINFILES2 list was too long in the MSVC makefile.
8793
(msvc32.mak)
8794
 
8795
</pre><h3><a name="V5.32_Interpreter"></a>Interpreter</h3><pre>
8796
 
8797
Fixes problems:
8798
	- .execn wouldn't accept pseudo-operators.  (iref.h)
8799
	- inustroke with a matrix operand didn't work correctly.  (zupath.c)
8800
	- ImageType 4 images didn't work.  (bug introduced in 5.31)
8801
(zimage3.c)
8802
 
8803
</pre><h3><a name="V5.32_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
8804
 
8805
Fixes problems:
8806
	- Forms used more than once caused an invalidaccess error.
8807
(pdf_draw.ps)
8808
 
8809
</pre><h3><a name="V5.32_Library"></a>Library</h3><pre>
8810
 
8811
Fixes problems:
8812
	- Using a colored pattern with a Pattern color space that included a
8813
base space could access uninitialized floating point values, possibly
8814
causing an arithmetic trap.  (gspcolor.c)
8815
	- RasterOp wasn't implemented for 16- and 32- bit devices.
8816
(gdevm16.c, gdevm32.c, gdevmrop.c)
8817
	- The library test program relied on copysign, which some C
8818
libraries lack.  (gslib.c)
8819
	- The gs_free and gs_heap_free_all debugging printout were included
8820
even if DEBUG wasn't defined. (bug introduced in 5.30) (gsmalloc.c)
8821
	- Color images always caused an error. (bug introduced in 5.30)
8822
(gxicolor.c)
8823
	- Masked images with pis = NULL could cause an error.  (gximono.c)
8824
	- In landscape orientation, masked images didn't guarantee that the
8825
buffer of mask scan lines would be flushed to the mask clipping device
8826
before processing the data being masked.  (gxiparam.h, gxidata.c, gxifast.c,
8827
gximage3.c)
8828
	- Images with source transparency set but CombineWithColor = false
8829
could get an error because of trying to paint with an unloaded
8830
color. (caused by a bug fix in 5.30) (gxdcolor.c, gxiinit.c)
8831
 
8832
</pre>
8833
 
8834
<hr>
8835
 
8836
<h2><a name="Version5.31"></a>Version 5.31 (limited) (8/11/98)</h2>
8837
 
8838
<p>
8839
This is the first set of updates for 5.30.  They fix a few minor build
8840
problems, and some significant problems with bitmap patterns that do not
8841
affect the PostScript or PDF interpreters.
8842
 
8843
<h3><a name="V5.31_Drivers"></a>Drivers</h3><pre>
8844
 
8845
Moves some casting macros from generic files to the few specific files that
8846
use them.  (gdev4693.c, gdevn533.c, gdevsnfb.c)
8847
 
8848
</pre><h3><a name="V5.31_Interpreter"></a>Interpreter</h3><pre>
8849
 
8850
Changes ImageType 4 images to match the change in the library interface.
8851
(zimage3.c)
8852
 
8853
</pre><h3><a name="V5.31_Library"></a>Library</h3><pre>
8854
 
8855
Fixes bugs:
8856
	- The MaskColor elements of ImageType 4 images were defined as int
8857
rather than uint, truncating the range by 1 bit and causing problems in
8858
comparing the mask color against the pixel samples.  (gsiparm4.h,
8859
gximage4.c)
8860
	- A needed cast was missing from gs_malloc_memory_release.
8861
(gsmalloc.h)
8862
	- A needed cast from byte to char was missing.  (gsparams.c)
8863
	- Patterns always allocated a mask for rendering, which for large
8864
patterns specified directly as bitmaps allocated a lot of unnecessary
8865
memory.  (gxcolor2.h, gspcolor.c, gxp1fill.c, gxpcmap.c)
8866
	- Macros simply defining casted versions of variables made the code
8867
hard to debug.  We have only removed the ones that are in generic code (not
8868
drivers) and that cast pointers to gx_device or its subclasses: the only
8869
ones removed from header files were prn_dev in gdevprn.h, mdev in gdevmem.h,
8870
and ccdev, crdev, and cwdev in gxcldev.h.  gdevmem.h, (gdevprn.h, gxclist.h,
8871
gdevabuf.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c, gdevm24.c,
8872
gdevm32.c, gdevmpla.c, gdevnfwd.c, gdevprn.c, gxacpath.c, gxclimag.c,
8873
gxclist.c, gxclpage.c, gxclpath.c, gxclread.c, gxclrect.c)
8874
	- There was no way to free a pattern instance outside the graphics
8875
state.  (gspcolor.h, gspcolor.c)
8876
 
8877
</pre>
8878
 
8879
<hr>
8880
 
8881
<h2><a name="Version5.30"></a>Version 5.30 (limited) (8/10/98)</h2>
8882
 
8883
<p>
8884
This is the first beta candidate for the 5.50 release.  It completes the
8885
merge of the overlapped rasterizing code into the main development line.
8886
 
8887
<h3><a name="V5.30_Documentation"></a>Documentation</h3><pre>
8888
 
8889
Fixes bugs:
8890
	- Yves Arrouye's e-mail address was out of date.  (gdevbjc.h,
8891
gdevcdj.c, contrib.mak, devices.txt, unix-lpr.txt)
8892
 
8893
Makes the warning against using SHARE_JPEG=1 even stronger.  (make.txt,
8894
dvx-gcc.mak, ugcclib.mak. unix*.mak)
8895
 
8896
Removes information about using DCL files on VMS to build Ghostscript.
8897
(make.txt)
8898
 
8899
Updates the documentation for begin_typed_image.  (drivers.txt)
8900
 
8901
</pre><h3><a name="V5.30_Procedures"></a>Procedures</h3><pre>
8902
 
8903
Fixes bugs:
8904
	- The Unix build procedure didn't create the obj subdirectory
8905
automatically.  (unixhead.mak, unix-end.mak)
8906
	- gsdll_h wasn't defined for the OS/2 PM device.  Fixing this
8907
properly required moving the OS/2 drivers into the same makefile as the MS
8908
Windows drivers, and renaming the file.  (devs.mak, msdevs.mak =&gt; pcwin.mak,
8909
winlib.mak)
8910
	- gsiparm4_h was used before it was defined.  (lib.mak)
8911
	- Building with shared libaries still used header files in
8912
Ghostscript's directories, not the ones in /usr/include.  ****** NOT DONE
8913
YET ******
8914
	- The makefiles all assumed they were located in the current
8915
directory, not in the source directory.  (*.mak)
8916
 
8917
Adds new 'debugclean' and 'pgclean' targets, parallel to 'debug' and 'pg',
8918
for the Unix platforms.  (unix-end.mak)
8919
 
8920
Changes the management of .dev files so that on Unix platforms, one can
8921
really maintain standard, debugging, and profiling builds simultaneously.
8922
This is a hack, but a fairly reliable one.  (gs.mak, unixhead.mak,
8923
unix-end.mak)
8924
 
8925
Adds a dummy thread / semaphore / monitor implementation to all platforms
8926
other than Windows.  (dvx-tail.mak, openvms.mak, os2.mak, ugcclib.mak,
8927
unixtail.mak, watc.mak, watclib.mak)
8928
 
8929
</pre><h3><a name="V5.30_Drivers"></a>Drivers</h3><pre>
8930
 
8931
Updates driver support to use the new write-position stream.  (gdevpsdf.c)
8932
 
8933
</pre><h3><a name="V5.30_Platforms"></a>Platforms</h3><pre>
8934
 
8935
Fixes bugs:
8936
	- The Windows Registry calls didn't deal properly with a null
8937
pointer.  (gp_wgetv.c)
8938
 
8939
Makes a small change in the platform semaphore / monitor API.  (gpsync.h,
8940
gxsync.h, gp_win32.c, gxsync.c)
8941
 
8942
Adds a dummy thread / semaphore / monitor implementation.  Note that with
8943
this implementation, async rendering WILL NOT WORK.  (gp_nsync.c)
8944
 
8945
Adds pthreads thread creation and POSIX semaphores for Unix platforms.  (We
8946
still need to add System V semaphores, which is all that is available on
8947
Solaris and BSDI.)  (gp_semon.c, gp_posem.c, gp_pthr.c).
8948
 
8949
</pre><h3><a name="V5.30_Fonts"></a>Fonts</h3><pre>
8950
 
8951
Fixes bugs:
8952
	- CIDFontType 0 fonts didn't select the proper VM space for adding
8953
entries to font dictionaries, and for loading Subrs strings.  (gs_cidfn.ps)
8954
	- TrueType fonts with an odd glyfs length didn't work.  (gs_ttf.ps)
8955
	- TrueType fonts with a Format 3 'post' table didn't work.
8956
(gs_ttf.ps)
8957
	- TrueType fonts where the encoding in the 'post' table didn't cover
8958
the entire set of glyfs didn't work.  (gs_ttf.ps)
8959
	- TrueType fonts with more than 128K of glyfs didn't work.
8960
(gs_ttf.ps)
8961
	- TrueType cmap format 6 didn't work.  (gs_ttf.ps)
8962
	- CIDFontType 0 fonts with hex data didn't skip over the &gt; at the
8963
end of the data.  (gs_cidfn.ps)
8964
 
8965
</pre><h3><a name="V5.30_Interpreter"></a>Interpreter</h3><pre>
8966
 
8967
Works around the fact that gs_shfill can't do a gs_setcolorspace for color
8968
spaces that require interpreter assistance.  (gs_ll3.ps)
8969
 
8970
Moves clipsave and cliprestore to C code.  (gs_ll3.ps, zmisc3.c)
8971
 
8972
Updates some files to reflect the redivision of gsmemory.h and gsstruct.h.
8973
(imemory.h, istruct.h, ialloc.c)
8974
 
8975
</pre><h3><a name="V5.30_Streams"></a>Streams</h3><pre>
8976
 
8977
Adds a stream that just keeps track of the write position.  (stream.h,
8978
stream.c)
8979
 
8980
Removes the compilation dependency that required all clients of the zlib
8981
filters to be compiled with the zlib source directory in the search path.
8982
(szlibx.h, szlibxx.h, szlib[cde].c)
8983
 
8984
</pre><h3><a name="V5.30_Library"></a>Library</h3><pre>
8985
 
8986
Fixes bugs:
8987
	- ImageType 4 images with &gt;1 input component didn't work.
8988
(gximage4.c)
8989
	- Sampled functions didn't keep the fractional part when
8990
interpolating, possibly leading to infinite recursion in shading.
8991
(gsfunc0.c)
8992
	- The color error value for shadings was computed incorrectly for
8993
CIE color spaces.  (gxshade.c)
8994
	- The CharstringType 2 'roll' operator rolled the operands in the
8995
wrong direction.  (gstype2.c)
8996
	- Images with RasterOp or transparency didn't retain the current
8997
color properly, leading to unpredictable results.  (gdevmrop.h, gsropt.h,
8998
gdevddrw.c, gdevrops.c, gxdcolor.c, gxiinit.c, gximage3.c)
8999
	- A cast to void * was needed to remove a const modifier.
9000
(gscrdp.c)
9001
	- On 8-bit non-gray-scale devices, RasterOp values of all-0s or
9002
all-1s produced the wrong output.  (gdevmrop.c)
9003
	- The GC procedure for halftone screen enumerators was wrong,
9004
possibly causing invalid memory access errors.  This bug predates 5.10.
9005
(gshtscr.c)
9006
	- An extra pair of string quotes confused some compilers.
9007
(gsshade.c)
9008
	- There were several errors in the CharstringType 2 'flex'
9009
operators.  (gstype2.c)
9010
	- The structure descriptors for devices weren't initialized in
9011
library-only configurations.  (int.mak, gconf.c)
9012
	- The Pattern cache got confused if the current device when a
9013
Pattern color was used wasn't the same as the current device when the
9014
Pattern instance was created.  (gxpcmap.c)
9015
	- The target of forwarding devices wasn't reference-counted
9016
properly.  (gsdevice.c) ****** FIXING THIS PROPERLY WILL BE A LOT OF WORK:
9017
WE ONLY FIXED gs_setdevice_no_erase ******
9018
	- As a result of fixing a typo, the structure declaration for
9019
gx_page_queue was private, causing clients not to compile.  We left it
9020
private and added an instance allocation procedure.  (gxpageq.h, gdevprna.c,
9021
gxpageq.c)
9022
	- The mask for ImageType 3 images was clipped (incorrectly).
9023
(gximage3.c)
9024
	- Interpolated images with negative X-&gt;X values in the CTM were
9025
displaced on the page.  (gxiscale.c)
9026
 
9027
Finishes integrating the asynchronous rendering code.  (gpsync.h, gxclist.h,
9028
gdevprna.c, gsmemlok.c, gxclimag.c, gxclpath.c, gxclutil.c)
9029
 
9030
Updates the memory manager API for additional flexibility needed for
9031
asynchronous rendering.  (gsmalloc.h, gsmemlok.h, gsmemraw.h, gsalloc.c,
9032
gsmalloc.c, gsmemlok.c)
9033
 
9034
Updates the standard memory manager to work with a fixed (externally
9035
supplied) set of chunks, needed for asynchronous rendering, removing some
9036
macros in the process.  (gsalloc.h, gsalloc.c)
9037
 
9038
Updates some code to use more mnemonic variable names.  (gstype2.c,
9039
gxicolor.c)
9040
 
9041
Removes some macros for better readability.  (gdevmrop.c)
9042
 
9043
Adds dummy implementations of clipsave and cliprestore.  (gsclipsr.h,
9044
gsclipsr.c)
9045
 
9046
Implements an alternative, but completely untested, parameter list
9047
serializer based on streams.  (gsparam2.c)
9048
 
9049
Moves more of the internal memory manager structures from gsmemory.h to
9050
gsstruct.h.  (gsmemory.h, gsstruct.h, gsmemory.c)
9051
 
9052
</pre>
9053
 
9054
<hr>
9055
 
9056
<h2><a name="Version5.28"></a>Version 5.28 (limited) (8/3/98)</h2>
9057
 
9058
<p>
9059
This fileset almost finishes merging in the code for overlapped
9060
("asynchronous") interpretation and rasterizing that gave rise to the
9061
side-branch versions 5.13 and 5.14; eliminates all initialized non-constant
9062
globals from the graphics library (but not from the interpreter); and adds a
9063
few more LanguageLevel 3 features (CIEBasedDEF[G] color spaces, CloseSource
9064
and CloseTarget for streams, Separation base space for Indexed color
9065
spaces).
9066
 
9067
<p>
9068
We were not originally planning to produce another fileset until the code
9069
merge was completed; however, the schedule demands of another Aladdin
9070
project justify another intermediate fileset.
9071
 
9072
<h3><a name="V5.28_Documentation"></a>Documentation</h3><pre>
9073
 
9074
Notes that the MSVC++ 5.0 compiler may lock up when compiling gxi12bit.c
9075
with optimization.  (make.txt)
9076
 
9077
</pre><h3><a name="V5.28_Procedures"></a>Procedures</h3><pre>
9078
 
9079
Fixes bugs:
9080
	- psl3 didn't include fzlib.  (int.mak)
9081
	- The Windows makefile had the wrong name for a DLL.  (winint.mak)
9082
	- The Borland Windows makefile had several errors.  (bcwin32.mak)
9083
 
9084
At the request of a user, changes the creation of jconfig.h so it #includes,
9085
rather than copies, arch.h.  (jpeg.mak, gsjconf.h)
9086
 
9087
</pre><h3><a name="V5.28_Utilities"></a>Utilities</h3><pre>
9088
 
9089
Fixes bugs:
9090
	- viewpbm.ps scaled the image wrong.  (viewpbm.ps)
9091
 
9092
</pre><h3><a name="V5.28_Drivers"></a>Drivers</h3><pre>
9093
 
9094
Fixes bugs:
9095
	- clist_close was declared as an open proc rather than a close proc.
9096
(As it happens, this didn't make any difference.)  (gxclist.c)
9097
	- A comment was improperly terminated.  (gxpageq.h)
9098
	- A needed #include of memory_.h was missing.  (gdevpsde.c)
9099
 
9100
Integrates nearly all the rest of the code for asynchronous rendering.
9101
(gdevprn.h, gdevprna.h, gxcldev.h, gxclist.h, gxclpath.h, gxclmem.h,
9102
gdevbmpa.c, gdevprn.c, gdevprna.c, gxclbits.c, gxclimag.c, gxclist.c,
9103
gxclmem.c, gxclpath.c, gxclread.c, gxclrect.c)
9104
 
9105
Changes tracing of memory-based clists to occur only if -Z: is selected,
9106
rather than always if the code was compiled with -DDEBUG.  Note that this is
9107
a NON-BACKWARD-COMPATIBLE CHANGE (but only affects debugging).  (gxclmem.c)
9108
 
9109
Implements the NumCopies parameter for all page devices, not just printers.
9110
(gxdevcli.h, gxdevice.h, gdevprn.c, gsdparam.c)
9111
 
9112
Splits off command list writing utilities into a separate file, since
9113
gxclist.c was getting too large.  (gxclist.h, gxclist.c, gxclutil.c)
9114
 
9115
Splits command list reading into control (gxclread.c) and the actual list
9116
interpreter (gxclrast.c), since the file was getting too large.  (gxcldev.h,
9117
gxclrast.c, gxclread.c)
9118
 
9119
Distinguishes dev_proc_* (defining a general driver procedure) from
9120
prn_dev_proc_* (defining a printer driver procedure).  Unfortunately, we
9121
have to keep dev_proc_print_page and _print_page_copies for backward
9122
compatibility.  (gdevprn.h)
9123
 
9124
Splits out of the BMP driver the parts shared with the async version
9125
(gdevbmp.h, gdevbmp.c, gdevbmpc.c).
9126
 
9127
Changes the band rasterizer to implement get_bits_rectangle rather than
9128
get_bits.  In some cases, this results in much less computation.
9129
(gxclist.c, gxclread.c)
9130
 
9131
Makes the monochrome H-P printer drivers emit a printer reset when closing
9132
the device.  According to a user, this helps prevent the ink nozzles from
9133
clogging.  (gdevdjet.c)
9134
 
9135
</pre><h3><a name="V5.28_Platforms"></a>Platforms</h3><pre>
9136
 
9137
Fixes bugs:
9138
	- The Windows DLL entry point procedure didn't return a value as it
9139
was supposed to.  (gp_mswin.c)
9140
 
9141
Removes all remaining initialized but non-constant globals, and ensures that
9142
all non-debugging-related BSS variables in the library are explicitly set to
9143
 
9144
 
9145
Improves an error message slightly.  (dwmainc.cpp)
9146
 
9147
</pre><h3><a name="V5.28_Interpreter"></a>Interpreter</h3><pre>
9148
 
9149
Fixes bugs:
9150
	- The tracing code for restore_resources could access an invalid
9151
address.  (isave.c)
9152
	- sizeof(procedure) is not allowed in ANSI C++.  (opdef.h,
9153
iccfont.c, interp.c, ireclaim.c)
9154
	- A variable was declared incorrectly as bin_token_type_t rather
9155
than bin_seq_type_t.  (iscanbin.c)
9156
	- The behavior of copypage didn't change in LanguageLevel 3.
9157
(gs_init.ps)
9158
	- When grestore et al reactivated a page device, they performed an
9159
initgraphics, which should only be performed by showpage.  (gs_setpd.ps)
9160
	- The RunLengthEncode filter was broken in cases where the caller
9161
supplied a record size.  (bug introduced in 5.2x) (zfilter.c)
9162
	- A needed #include of memory_.h was missing.  (zfreuse.c)
9163
	- On machines with sizeof(long) &gt; sizeof(int), the dictionary form
9164
of image and imagemask didn't work.  (bug introduced in 5.2x) (zimage2.c)
9165
	- exitserver left a 'true' on the operand stack.  (gs_lev2.ps)
9166
 
9167
Replaces the STACK_LOOP_BEGIN/END macros with procedures.  (We retain the
9168
macros for backward compatibility.)  (istack.h, istack.c, zchar.c,
9169
zcontrol.c, zdict.c, zvmem.c)
9170
 
9171
Reviews the remaining operator files for ease of reading / debugging,
9172
including removing macros where appropriate.  (z*.c)
9173
 
9174
Changes the dictionary stack printer to indicate whether the dictionary is
9175
allocated in global or local VM.  (gs_init.ps)
9176
 
9177
Redefines countexecstack and execstack as operators, solely for the sake of
9178
the Genoa [count]execstack tests.  (gs_init.ps, zcontrol.c)
9179
 
9180
Changes array/string/packedarray forall not to keep an index on the stack,
9181
solely for the sake of the Genoa [count]execstack tests.  (zgeneric.c)
9182
 
9183
Finishes implementing CIEBasedDEF[G] color spaces.  (icie.h, zcie.c)
9184
 
9185
Adds a ColorSpace resource instance for sRGB.  (gs_lev2.ps, gs_res.ps)
9186
 
9187
Implements CloseSource and CloseTarget for filters.  ****** DOESN'T WORK IF
9188
AN EXCEPTION OCCURS DURING A NESTED CLOSE. ****** (zfile.c)
9189
 
9190
Allows Separation and DeviceN color spaces as the base space for an Indexed
9191
color space.  (zcsdevn.c, zcsindex.c, zcssepr.c)
9192
 
9193
</pre><h3><a name="V5.28_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
9194
 
9195
Fixes bugs:
9196
	- In PDF files, Indexed color spaces with a CIEBasedABC base space
9197
gave an /undefined error.  (pdf_draw.ps)
9198
 
9199
</pre><h3><a name="V5.28_Streams"></a>Streams</h3><pre>
9200
 
9201
Fixes bugs:
9202
	- The report_error member of the DCT streams wasn't initialized
9203
early enough.  (ifilter.h, zfdctd.c, zfdcte.c, zfile.c)
9204
 
9205
Changes the zlib filters to use the stream's allocator, rather than the
9206
default allocator, for their private storage.  Note that this requires the
9207
stream itself to keep pointers to this storage, for garbage collection.
9208
(szlibx.h, szlibc.c, szlibd.c, szlibe.c)
9209
 
9210
Updates some clients to use new, simpler GC structure descriptors.  (sdct.h,
9211
sfilter.h, sdctc.c, sfilter1.c)
9212
 
9213
Adds a close_strm member for the interpreter's use (CloseSource /
9214
CloseTarget).  (stream.h, stream.c)
9215
 
9216
</pre><h3><a name="V5.28_Library"></a>Library</h3><pre>
9217
 
9218
Fixes bugs:
9219
	- gstate, currentgstate, and setgstate didn't handle the effective
9220
clip path properly, possibly leading to dangling pointers.  (gsstate.c)
9221
	- setrasterop, setsourcetransparent, and settexturetransparent
9222
should all return int rather than void, since they can fail.  (gsrop.h,
9223
gsrop.c)
9224
	- FunctionType 1 functions didn't clip the output value to the
9225
Range.  (gsfunc3.c)
9226
	- A needed cast from byte * to char * was missing.  (gscrdp.c)
9227
	- Some needed #includes of *_.h were missing.  (gscrd.c, gscrdp.c,
9228
gxshade6.c)
9229
	- The prototype for gx_effective_clip_path wasn't #included in a
9230
needed place.  (gsimage.c)
9231
	- RasterOp sometimes didn't work properly for devices whose
9232
representation of white wasn't a pixel value of 0.  (gxdcolor.h, gdevbbox.c,
9233
gdevdbit.c, gdevvec.c, gslib.c, gxdcolor.c)
9234
	- The variable used to detect double declaration of
9235
gs_get_bits_params_t was named incorrectly.  (gxdevcli.h, gxgetbit.h)
9236
	- gs_[eo]clip never retained the clipping path in its original form.
9237
These routines now retain it in the simple case (the old clipping path is a
9238
rectangle, and the new path is completely contained within it).  This
9239
requires a small NON-BACKWARD-COMPATIBLE change in the gx_cpath_intersect
9240
procedure: it no longer updates the new path, and it flattens the path if
9241
needed.  To avoid problems, we renamed this procedure as gx_cpath_clip.
9242
(gsdps.c, gspath.c, gxcpath.c)
9243
	- If the image was empty, gs_image_common_init didn't free the
9244
lower-level enumerator.  (gsimage.c, gxccache.c)
9245
 
9246
Removes all remaining initialized but non-constant globals, and ensures that
9247
all non-debugging-related BSS variables in the library are explicitly set to
9248
 
9249
gsiodev.c, gsutil.c, gxcht.c)
9250
 
9251
Finishes implementing table-driven GC descriptors.  We expected it to save
9252
considerable space at negligible time cost; it actually shrank the 1Mb
9253
executable by only about 5K, and slowed down garbage collection by about
9254
2%. (gsfcmap.h, gsstrtab.h [deleted], gsstruct.h, gzpath.h, gsfcmap.c,
9255
gsmemory.c, gsstrtab.c [deleted])
9256
 
9257
Finishes implementing CIEBasedDEF[G] color spaces.  (gscie.h, gscie.c)
9258
 
9259
Simplifies some code by removing or redefining macros.  (gxi12bit.c)
9260
 
9261
Removes all patches made for easier retrofitting of 5.2x code into 5.1x
9262
filesets.  (gdevdrop.c, gdevmrop.c, gslib.c, gspcolor.c)
9263
 
9264
Reviews a few more files for style and readability.  (gxbitfmt.h,
9265
gxgetbit.h)
9266
 
9267
Allows Separation (and, if included, DeviceN) color spaces as the base space
9268
of an Indexed color space.  Unfortunately, this involves introducing a new
9269
distinction in color space types, which entails NON-BACKWARD-COMPATIBLE
9270
changes in the color space and color space type structures.  (gxcspace.h,
9271
gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c,
9272
gscspace.c, gspcolor.c)
9273
 
9274
Makes a small addition in order to fix an interpreter bug.  (gxfixed.h,
9275
gdevbbox.c)
9276
 
9277
</pre>
9278
 
9279
<hr>
9280
 
9281
<h2><a name="Version5.27"></a>Version 5.27 (limited) (7/18/98)</h2>
9282
 
9283
<p>
9284
This is another "in-flight" snapshot made in preparation for the 5.2x / 5.1x
9285
code merge.  It completes the driver CRD API.
9286
 
9287
<h3><a name="V5.27_Documentation"></a>Documentation</h3><pre>
9288
 
9289
Fixes bugs:
9290
	- The reference to psview was out of date.  (new-user.txt)
9291
 
9292
Adds some pointers to Aladdin Ghostscript mirror sites.  (new-user.txt)
9293
 
9294
Updates the C style guide a little further.  (c-style.txt)
9295
 
9296
Adds documentation on driver-supplied CRDs.  (drivers.txt)
9297
 
9298
Updates the JPEG makefile to mention IJG release 6b.  (jpeg.mak)
9299
 
9300
Updates documentation to reflect the devs.mak / contrib.mak split.  (README,
9301
devices.txt, drivers.txt, make.txt, new-user.txt, source.txt, use.txt)
9302
 
9303
</pre><h3><a name="V5.27_Procedures"></a>Procedures</h3><pre>
9304
 
9305
Fixes bugs:
9306
	- sjpegerr.o was needed even when using the shared JPEG library.
9307
(jpeg.mak)
9308
 
9309
Changes the name of the jpeg library directory from jpeg-&lt;version&gt; to just
9310
jpeg, to parallel libpng and zlib.  (make.txt, *.mak)
9311
 
9312
Creates a separate makefile for contributed drivers.  Eventually these
9313
drivers will go in a separate directory.  (devs.mak, contrib.mak, *.mak)
9314
 
9315
</pre><h3><a name="V5.27_Drivers"></a>Drivers</h3><pre>
9316
 
9317
Fixes bugs:
9318
	- The pkm driver was absurdly inefficient.  (gdevpbm.c)
9319
	- The psfax driver (which, admittedly, doesn't come close to
9320
working) no longer compiled.  (gdevpfax.c)
9321
	- The ARCHAIC mode of the Epson driver emitted an incorrect
9322
character ('r' instead of ^R).  (gdevepsn.c)
9323
	- The X driver didn't check the calls of XInitImage for error
9324
status.  (gdevx.c)
9325
 
9326
Updates a client for the change in the names of the gb_ values.  (gdevx.c)
9327
 
9328
Updates a client for the added param_request procedure.  (gdevpsdf.c)
9329
 
9330
Reformats all Aladdin-maintained drivers to the new Ghostscript standard
9331
format, using indent.  We deliberately did not reformat user-contributed
9332
drivers, since indent mangles a line once in a while and we do not want to
9333
take responsibility for fixing others' code.  (*.h, *.c)
9334
 
9335
Adds a default CRD specification to the 'bit' device, for testing.
9336
(gdevbit.c)
9337
 
9338
Integrates a bit more of the support code for asynchronous rasterizing.
9339
(gxband.h, gxclio.h, gxclist.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c,
9340
gxclread.c, gxpageq.h, gxpageq.c)
9341
 
9342
</pre><h3><a name="V5.27_Platforms"></a>Platforms</h3><pre>
9343
 
9344
Adds thread support to the Win32 platform.  (gp_win32.c)
9345
 
9346
</pre><h3><a name="V5.27_Interpreter"></a>Interpreter</h3><pre>
9347
 
9348
Fixes bugs:
9349
	- Composite fonts with CID-keyed descendants didn't run the
9350
BuildGlyph procedure.  (zchar.c)
9351
	- The internal representation of CMaps was built incorrectly.
9352
(zfcmap.c)
9353
	- Category resources didn't load from files automatically.
9354
(gs_res.ps)
9355
 
9356
Reformats all files to the new Ghostscript standard format, using indent.
9357
(*.h, *.c)
9358
 
9359
Reviews most of the operator files for ease of reading / debugging,
9360
including removing macros where appropriate.  (z*.c)
9361
 
9362
Updates a client for the change in the names of the gb_ values.  (zdevice.c)
9363
 
9364
Updates a client for the added param_request procedure.  (iparam.c)
9365
 
9366
Updates clients for the completion of the CRD API.  (zcie.c, zcrd.c)
9367
 
9368
Increases the initial size of systemdict a little more, to allow for -d and
9369
-s.  (iinit.c)
9370
 
9371
</pre><h3><a name="V5.27_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
9372
 
9373
Fixes bugs:
9374
	- Text modes other than 0 didn't work with multiple-byte fonts.
9375
(pdf_ops.ps)
9376
	- There were many bugs in the code for Type 0 and CIDFontType 0
9377
fonts.  (pdf_font.ps)
9378
 
9379
</pre><h3><a name="V5.27_Library"></a>Library</h3><pre>
9380
 
9381
Fixes bugs:
9382
	- cshow returned a character code of -1 for composite fonts with
9383
FMapType 9 (CMap-based).  (gsfcmap.h, gschar0.c, gsfcmap.c)
9384
	- The GC procedure for enumerating show enumerators was broken.
9385
(bug introduced in 5.24 or 5.25) (gschar.c)
9386
	- dashpath always copied the path, instead of only copying it if
9387
needed.  (gspath1.c)
9388
	- The hint replacement fix in 5.24 sometimes thought a path was
9389
closed when it wasn't, producing gross distortions of some characters.
9390
(gxhint3.c)
9391
 
9392
Cleans up code for debugging by expanding macros, etc.  (gstext.h,
9393
gschar0.c)
9394
 
9395
Changes the gb_ values to all caps, in line with general C convention.  This
9396
is a NON-BACKWARD-COMPATIBLE change to an as yet rarely-used API.
9397
(gxbitfmt.h, gdevalph.c, gdevdgbr.c, gdevmem.c, gsalphac.c, gximage2.c)
9398
 
9399
Enhances the default implementation of parameter lists to allow requesting
9400
individual parameters.  This is needed for the driver CRD API.  (gsparam.h,
9401
gscparam.c, gsparam.c)
9402
 
9403
Completes the API for driver CRDs, also moving some code from gscie.c to
9404
gscrd.c.  This involves a NON-BACKWARD-COMPATIBLE change in the prototype of
9405
the TransformPQR procedures.  (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c,
9406
gscrdp.c)
9407
 
9408
Reformats all files to the new Ghostscript standard format, using indent.
9409
(*.h, *.c)
9410
 
9411
Splits up gdevmrop.c into 3 files: gdevmrop.c (RasterOp implementation for
9412
memory devices), gdevdrop.c (default and device-independent RasterOp
9413
algorithms), and gdevrops.c (RasterOp-source device).  (gdevmrop.h,
9414
gdevdrop.c, gdevmrop.c, gdevrops.c)
9415
 
9416
</pre>
9417
 
9418
<hr>
9419
 
9420
<h2><a name="Version5.26"></a>Version 5.26 (limited) (7/7/98)</h2>
9421
 
9422
<p>
9423
The purpose of this fileset is to add an API for drivers to provide one or
9424
more device-appropriate CIE rendering dictionaries.  Like 5.25, it is a
9425
"snapshot" fileset not made available even to beta testers.
9426
 
9427
<h3><a name="V5.26_Procedures"></a>Procedures</h3><pre>
9428
 
9429
Fixes bugs:
9430
	- An !endif was omitted.  (msvc32.mak)
9431
	- A newly needed Windows library was omitted.  (msvctail.mak)
9432
	- The /Za and /Ze switches were set incorrectly for MSVC.
9433
(bcwin32.mak, msvccmd.mak, watcw32.mak, winint.mak, winlib.mak)
9434
 
9435
</pre><h3><a name="V5.26_Drivers"></a>Drivers</h3><pre>
9436
 
9437
Fixes bugs:
9438
	- A closing bracket was omitted (in code that is ifdef'd out).
9439
(gdevpdf.c)
9440
 
9441
</pre><h3><a name="V5.26_Fonts"></a>Fonts</h3><pre>
9442
 
9443
Changes the font loader so that instead of pushing systemdict and a small
9444
empty dictionary on the stack before loading a font, it pushes userdict.
9445
This is what Adobe interpreters do, but this will probably break some
9446
PostScript files, specifically ones that redefine 'index'.  I don't see how
9447
the Adobe interpreters can possibly do the right thing for such files.
9448
(gs_fonts.ps, gs_type1.ps)
9449
 
9450
</pre><h3><a name="V5.26_Interpreter"></a>Interpreter</h3><pre>
9451
 
9452
Updates clients for changes in CRD API.  This involves some changes in
9453
internal procedures.  (gs_lev2.ps, icie.h, zcie.c, zcrd.c)
9454
 
9455
</pre><h3><a name="V5.26_Library"></a>Library</h3><pre>
9456
 
9457
Fixes bugs:
9458
	- Pickling string, name, and array parameters tried to force
9459
inappropriate alignment.  (gsparams.c)
9460
	- Pickling dictionary parameters wrote the result in the wrong
9461
place.  (gsparams.c)
9462
	- An occurrence of dev_t should have been gx_device.  The compiler
9463
didn't catch this because there happens to be a type named dev_t in
9464
&lt;types.h&gt; (!).  (gxclread.c)
9465
 
9466
Adds an API for drivers to provide one or more CRDs (as device parameters).
9467
Makes a small but NON-BACKWARD-COMPATIBLE change in the names and argument
9468
lists of the existing CRD API (which is not used by anything in the standard
9469
configuration).  (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c, gscrdp.c,
9470
gslib.c)
9471
 
9472
</pre>
9473
 
9474
<hr>
9475
 
9476
<h2><a name="Version5.25"></a>Version 5.25 (limited) (7/1/98)</h2>
9477
 
9478
<p>
9479
This is a "snapshot" fileset created for the purpose of merging with a
9480
separate development branch.  While it fixes some significant bugs in 5.24,
9481
it doesn't represent substantial additional progress.
9482
 
9483
<h3><a name="V5.25_Documentation"></a>Documentation</h3><pre>
9484
 
9485
Completely rearranges the C style guide, updates it to reflect current
9486
practice, and adds a 1-page summary of the most important points.
9487
(c-style.txt)
9488
 
9489
Updates the man pages for consistency and to correct minor errors.  (*.1)
9490
 
9491
Notes that the pjxl300 driver works with the H-P CopyJet.  (devices.txt,
9492
devs.mak).
9493
 
9494
Notes that in order to deal with over-zealous Solaris security checking,
9495
additional linker switches are needed.  (make.txt, unix*.mak)
9496
 
9497
</pre><h3><a name="V5.25_Procedures"></a>Procedures</h3><pre>
9498
 
9499
Fixes bugs:
9500
	- 'make install' didn't get the executable from the right place.
9501
unixinst.mak)
9502
	- COMPILE_INITS=1 didn't work.  (int.mak, geninit.c)
9503
	- The MSVC makefile updates hadn't been applied to the MSVC-only
9504
devices.  (devs.mak)
9505
	- The other PC makefiles didn't define GLCCWIN.  (bcwin32.mak,
9506
watcw32.mak)
9507
 
9508
Adds bounding box testing to the library test program.  (ugcclib.mak)
9509
 
9510
Reviews and reformats code for maintainability.  (genarch.c, geninit.c)
9511
 
9512
Moves the MS Windows-specific devices to a new file.  (bcwin32.mak,
9513
devs.mak, msdevs.mak, msvc32.mak, watcw32.mak)
9514
 
9515
</pre><h3><a name="V5.25_Platforms"></a>Platforms</h3><pre>
9516
 
9517
Reviews and reformats header files for maintainability.  (vmsmath.h,
9518
windows_.h)
9519
 
9520
Removes some no-longer-used files from the fileset.  (overlay.h, gp_itbc.c)
9521
 
9522
</pre><h3><a name="V5.25_Fonts"></a>Fonts</h3><pre>
9523
 
9524
Fixes bugs:
9525
	- Substituted fonts had their FontName set to the requested one.
9526
There was a comment in the code saying that some files that depend on this
9527
happening, but Adobe implementations don't do it.  However, aliased fonts in
9528
Fontmap will continue to have the FontName set to the Fontmap key.
9529
(gs_fonts.ps)
9530
 
9531
Adds the euro symbol at position 240 (0360) in SymbolEncoding.  This is a
9532
PostScript 3 addition, but it's too much work to make it appear there only
9533
if languagelevel &gt;= 3.  (gs_sym_e.ps)
9534
 
9535
</pre><h3><a name="V5.25_Interpreter"></a>Interpreter</h3><pre>
9536
 
9537
Fixes bugs:
9538
	- The bbox device didn't work if its target was itself a forwarding
9539
device.  (gdevbbox.c)
9540
	- User parameters maintained at the PostScript (as opposed to VM)
9541
level didn't work.  (gs_init.ps)
9542
	- Idiom recognition didn't work.  (gs_init.ps, gs_ll3.ps, zmisc3.c)
9543
	- .beginpage and .endpage could cause an error if the current device
9544
was a page device but was installed with setdevice rather than
9545
setpagedevice.  (gs_setpd.ps)
9546
 
9547
In the interest of readability, replaces all casting macros with separate
9548
variables, other than those used in enum_ptrs and reloc_ptrs procedures.
9549
Note that doing this for rptr in gc_trace in igc.c will have a significant
9550
performance cost on Intel CPUs, unless the compiler has a very good
9551
optimizer, because it introduces another variable competing for scarce
9552
registers in the most performance-critical section of code in the garbage
9553
collector.  (ialloc.c, igc.c, iparam.c, isave.c, istack.c, zchar42.c,
9554
zfproc.c, zusparam.c)
9555
 
9556
Changes some macros to procedures.  (igc.c, ilocate.c, zusparam.c)
9557
 
9558
Changes some macros to static quasi-constants (only variable for debugging).
9559
(zvmem.c)
9560
 
9561
Adds #include "errors.h" to oper.h, removing it from z*.c.  (oper.h, z*.c)
9562
 
9563
Reviews and reformats some header files for maintainability.  This is an
9564
ongoing project.  (bfont.h, errors.h, iinit.c)
9565
 
9566
Consolidates and simplifies the reading and writing of binary tokens and
9567
binary object sequences.  (bseq.h [deleted], btoken.h, ibnum.h, ibnum.c,
9568
iscanbin.c, zbseq.c)
9569
 
9570
Adds dummy user and system parameter entries for all the parameters listed
9571
in Appendix C of the PostScript Red Book: even though the book clearly says
9572
that no PostScript program should rely on the presence of any particular
9573
parameter, PostScript files routinely assume the existence of the parameters
9574
listed in Appendix C.  (gs_init.ps, gs_lev2.ps, gs_res.ps)
9575
 
9576
Adds dummy user and system parameter entries for the new parameters listed
9577
in the 3010 Supplement.  (gs_ll3.ps)
9578
 
9579
Adds double-inclusion protection to all header files.  (*.h)
9580
 
9581
Moves the creation of binary object sequence headers from C to PostScript
9582
code.  (zbseq.c, gs_btokn.ps)
9583
 
9584
Adds support for multiple FormTypes and ColorRenderingTypes.  (gs_init.ps,
9585
gs_lev2.ps, gs_res.ps, zcrd.c)
9586
 
9587
Updates structures and clients for the introduction of "raw memory"
9588
allocators.  (ialloc.h, igc.h, ialloc.c, imain.c, isave.c)
9589
 
9590
In the interest of readability and being able to use GNU indent to create
9591
standard formatting, changes the operator tables from procedures back to
9592
data structures.  This change is backward-compatible for all operator files,
9593
although we also edited all of Ghostscript's own operator definitions to
9594
remove the BEGIN_OP_DEFS and END_OP_DEFS macros (which now have to generate
9595
a little unnecessary code for backward compatibility). (opdef.h, iconf.c,
9596
iinit.c, iutil.c, z*.c)
9597
 
9598
Splits zchar2.c into a Level 1+ part and a Level 2 part.  (zcfont.c,
9599
zchar2.c)
9600
 
9601
</pre><h3><a name="V5.25_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
9602
 
9603
Adds font synthesis based on the FontDescriptor.  Currently this is very
9604
rudimentary.  (pdf_font.ps)
9605
 
9606
</pre><h3><a name="V5.25_Drivers"></a>Drivers</h3><pre>
9607
 
9608
Fixes bugs:
9609
	- The PDF writer didn't default to A4 paper size if A4 was selected
9610
as the default in the makefile.  (gdevpdf.c)
9611
	- The default implementation of the begin_image procedure always
9612
called the image's begin_image implementation, rather than the device's
9613
begin_typed_image implementation.  (gdevddrw.c)
9614
	- The bbox device didn't initialize its reference count.
9615
(gdevbbox.c)
9616
	- A necessary cast was omitted.  (gdevpsde.c)
9617
 
9618
Changes some macros to procedures.  (gdevpstr.h, gdevpstr.c)
9619
 
9620
Adds an internal device to implement the PCL5 special color mapping
9621
algorithms.  (gdevcmap.h, gxdevice.h, gdevcmap.c, gdevnfwd.c)
9622
 
9623
Adds double-inclusion protection to all header files.  (*.h)
9624
 
9625
Updates drivers for the change in begin_image.  (gdevbbox.c, gdevpdfi.c,
9626
gdevvec.c, gxclimag.c)
9627
 
9628
</pre><h3><a name="V5.25_Library"></a>Library</h3><pre>
9629
 
9630
Fixes bugs:
9631
	- The non-ANSI definitions of CLEAR_MARKS_PROC, ENUM_PTRS_BEGIN_PROC
9632
and RELOC_PTRS_BEGIN were missing a parameter.  (gsstruct.h)
9633
	- A few necessary casts were omitted.  (gsparam.c, gxpcmap.c)
9634
	- Images or Patterns with non-default RasterOps could cause crashes.
9635
(gdevmrop.c, gxp1fill.c)
9636
	- Exponential Interpolation functions with non-integral positive
9637
exponents incorrectly required the lower bound of the domain to be strictly
9638
positive rather than only non-negative.  (gsfunc3.c)
9639
	- The attempt to achieve the desired color smoothness when shading
9640
could compute (nearly) forever.  (gxshade.c, gxshade1.c)
9641
	- The arc change in 5.24 caused arcs to render incorrectly.
9642
(gspath1.c)
9643
	- The macro-reducing cleanup in 5.24 introduced a bug in handling
9644
copy operations with negative skew.  (gdevm1.c)
9645
 
9646
Adds unmasked images and bounding box testing to the library test program.
9647
(gxdevcli.h, gslib.c)
9648
 
9649
Changes some macros to procedures.  (gxfunc.h, gsfunc.c, gsfunc0.c,
9650
gsfunc3.c)
9651
 
9652
Adds double-inclusion protection to all header files.  (*.h)
9653
 
9654
Reviews and reformats header files for maintainability.  (*_.h, dodebug.h
9655
[deleted])
9656
 
9657
Changes the structure of the common part of the image enumerator to include
9658
the device (which may be different from the original device, because of
9659
forwarding), and to access the procedures through a pointer to a const
9660
structure.  This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
9661
begin_image, since they now must pass the device to
9662
gx_image_enum_common_init.  (gximage.h, gxiparam.h, gdevddrw.c, gdevdflt.c,
9663
gxiinit.c, gximage3.c, gximage4.c)
9664
 
9665
Adds tests of the new color mapping device to the library test program.
9666
(gslib.c)
9667
 
9668
Removes the last vestiges of segmented pointers.  (genarch.c, std.h)
9669
 
9670
Introduces a "raw memory" API, primarily for managing the underlying memory
9671
pool for embedded systems.  This involves a NON-BACKWARD-COMPATIBLE-CHANGE
9672
in the implementation (but not ordinary clients) of allocators.
9673
(gsmemory.h, gsmemraw.h, gxalloc.h, gsalloc.c, gsmalloc.c, gsmemory.c)
9674
 
9675
</pre>
9676
 
9677
<hr>
9678
 
9679
<h2><a name="Version5.24"></a>Version 5.24 (limited) (6/17/98)</h2>
9680
 
9681
<p>
9682
In addition to the usual bug fixes, and a few enhancements where temptation
9683
proved irresistible or in response to an external need, this fileset:
9684
<ul>
9685
<li>	- Takes the first steps on a major readability cleanup
9686
	(4-space indentation instead of 2, replacement of macros by
9687
	procedures, ....)
9688
 
9689
<li>	- Implements a bit more of the DPS functionality, including view
9690
	clipping, and gstate stack copying for 'fork'.
9691
 
9692
<li>	- Starts to sketch a text API for drivers.
9693
 
9694
<li>	- Changes the Unix makefiles so that they create production
9695
binaries
9696
	in a separate directory.
9697
</ul>
9698
 
9699
<p>
9700
Again, there are some non-backward-compatible changes required by other
9701
architectural improvements.  As always, we have tried to minimize the impact
9702
of such changes on users' code.
9703
 
9704
<h3><a name="V5.24_Documentation"></a>Documentation</h3><pre>
9705
 
9706
Fixes bugs:
9707
	- The -Kn switch wasn't documented.  (use.txt)
9708
	- The term "Software" was used instead of "Program" in the last
9709
paragraphs of the license.  (PUBLIC)
9710
 
9711
Adds a couple of missing operators to the list at the end of ostack.h.
9712
(ostack.h)
9713
 
9714
Documents more precisely which gstate points to which objects after various
9715
gstate operations.  (gsstate.c)
9716
 
9717
Corrects some addresses for the Free Software Foundation.  (commprod.txt,
9718
new-user.txt)
9719
 
9720
Improves the documentation for memory management of color spaces.  (gscie.h,
9721
gscolor2.h)
9722
 
9723
Updates the list of hardware available to Aladdin.  (new-user.txt)
9724
 
9725
Documents ReopenPerPage.  (language.txt)
9726
 
9727
Moves the documentation of image rendering procedures to a better place.
9728
(gximage.h, gxiinit.c)
9729
 
9730
Clarifies that old slzwe.c files may not work with current Ghostscript
9731
versions.  (make.txt)
9732
 
9733
</pre><h3><a name="V5.24_Procedures"></a>Procedures</h3><pre>
9734
 
9735
Fixes bugs:
9736
	- psl3.dev didn't include func.dev.  (int.mak)
9737
	- device and device2 devices weren't sorted together, causing
9738
devices to appear in the list out of order (including, possibly, selecting
9739
the wrong device as default).  (genconf.c)
9740
	- The mswindll module definition omitted some needed files.
9741
(devs.mak)
9742
 
9743
Changes the optimization level for gcc from -O to -O2 for both standard and
9744
profiling builds.  (unix-gcc.mak)
9745
 
9746
Defines 3 new makefile macros for the Unix platforms,
9747
CFLAGS_{STANDARD|DEBUG|PROFILE}, that give the additional compiler switches
9748
for these 3 compilation options.  (unixansi.mak, unix-cc.mak, unix-gcc.mak)
9749
 
9750
Changes the Unix makefiles so that by default they create the binaries in an
9751
'obj' subdirectory of the source directory.  (unixansi.mak, unix-cc.mak,
9752
unix-gcc.mak, unix-end.mak)
9753
 
9754
Updates the MSVC++ makefiles so they allow setting any configuration
9755
parameter from the make command line.  (msvc32.mak, msvccmd.mak, msvccom.mak
9756
[deleted], msvclib.mak, msvctail.mak)
9757
 
9758
</pre><h3><a name="V5.24_Utilities"></a>Utilities</h3><pre>
9759
 
9760
Fixes bugs:
9761
	- ps2ascii was broken.  (ps2ascii.ps)
9762
 
9763
Adds capability to gslp.ps:
9764
 
9765
	- Variable-width fonts (but without automatic line breaking);
9766
 
9767
	- Pair kerning (from AFM file);
9768
 
9769
	- Inter-character and space width adjustment.
9770
 
9771
This project was done for a paying customer.  (gslp.ps)
9772
 
9773
</pre><h3><a name="V5.24_Drivers"></a>Drivers</h3><pre>
9774
 
9775
Fixes bugs:
9776
	- The name of the plan9bm device was wrong.  (gdevpbm.c)
9777
	- The PDF writer wrote incorrect parameters for the CCITTFax filter
9778
used to compress Type 3 font bitmaps.  (bug introduced in 5.23) (gdevpdfi.c)
9779
	- The PDF writer emitted two 'endobj' lines for Type 3 bitmap fonts.
9780
(gdevpdf.c)
9781
 
9782
Removes all remaining uses of _ds and _ss in Aladdin's drivers.  (gdevprn.h,
9783
gdevsvga.h, gdevbit.c, gdevcgm.c, gdevdjet.c, gdevmsxf.c, gdevpbm.c,
9784
gdevpccm.c, gdevpcfb.c, gdevpdfi.c, gdevprn.c, gdevsvga.c, gdevtfax.c)
9785
 
9786
Renames a local macro named END.  (gdevcgml.c)
9787
 
9788
Removes all uses of far_data other than for device (but not device2)
9789
prototypes.  (gdevbit.c, gdevdjet.c, gdevemap.c, gdevmsxf.c, gdevpbm.c,
9790
gdevpcfb.c, gdevpcx.c, gdevpdf.c, gdevpng.c, gdevps.c, gdevpsim.c, gdevpx.c,
9791
gdevtfax.c, gdevtfnx.c, gdevvglb.c, gdevx.c, gdevxalt.c)
9792
 
9793
Adds a psrgb driver that writes PostScript (Level 2) planar,
9794
run-length-compressed, 24-bit RGB images.  (gdevpsci.c)
9795
 
9796
Starts to define and implement a driver procedure for text.  This interface
9797
will certainly change in the future as we get more insight into the division
9798
of responsibility and control flow between generic code, individual drivers,
9799
and internal and external fonts.  This involves a major
9800
NON-BACKWARD-COMPATIBLE CHANGE in the gs_show_enum structure (which no
9801
client should be accessing directly).  (gdevmem.h, gdevprn.h, gstext.h,
9802
gxchar.h, gxdevcli.h, gxdevice.h, gxtext.h, gdevbbox.c, gdevht.c,
9803
gdevnfwd.c, gschar.c, gschar0.c, gstext.c, gxacpath.c, gxclip.c, gxclip2.c,
9804
gxclipm.c, gxclist.c, gxpcmap.c)
9805
 
9806
Extends the parameter list printer to handle names and arrays.  (gdevpsdf.c)
9807
 
9808
Implements the ability to write out a Type 1 font definition, for embedding
9809
fonts in PDF output.  Currently this code isn't called from anywhere, and it
9810
will certainly be subject to change in the future.  (gdevpsdf.h, gdevpdfi.c,
9811
gdevpsde.c, gdevpsdf.c)
9812
 
9813
Adds the PCL XL Protocol Class 2.0 operators, attributes, and enumerated
9814
values to the relevant header files.  (gdevpxat.h, gdevpxen.h, gdevpxop.h)
9815
 
9816
Converts some additional devices to -dev2, to make them const.  (devs.mak,
9817
gdevjpeg.c)
9818
 
9819
To help in debugging, changes all uses of
9820
	#define ss ((stream_xxx_state *)st)
9821
to
9822
	stream_xxx_state * const ss = (stream_xxx_state *)st;
9823
(gdevpdfi.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
9824
 
9825
Massages mem_mono_copy_mono and mem_mono_strip_tile_rectangle to reduce the
9826
use of macros somewhat.  (gdevm1.c, gdevmem.h)
9827
 
9828
Makes a change to support the change in gs_param_list_common.  (gdevpsdf.c)
9829
 
9830
Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
9831
(gdevpdfm.c, gdevpx.c, gdevx.c, gdevxalt.c)
9832
 
9833
Adds a ReopenPerPage Boolean device parameter for printers, which causes the
9834
output file to be closed and reopened for each page.  This may be helpful in
9835
persuading spoolers to start printing as soon as the first page is
9836
available.  (gdevprn.h, gdevprn.c)
9837
 
9838
Makes the %-format validator for output file names a procedure, even though
9839
it's only called in one place.  (gdevprn.c)
9840
 
9841
Updates some clients for the change from std_procs to procs.  (gdevp2up.c,
9842
gdevpbm.c, gdevupd.c,
9843
 
9844
Removes the use of the CleanFaxData tag (327) from TIFF output, since many
9845
applications don't recognize it and it isn't in the TIFF 6 documentation.
9846
(gdevtifs.h, gdevtfax.c)
9847
 
9848
</pre><h3><a name="V5.24_Platforms"></a>Platforms</h3><pre>
9849
 
9850
Adds a new gp_setmode_binary platform procedure, to set a file into binary
9851
mode on platforms that distinguish text and binary.  (gp.h, gp_*.c)
9852
 
9853
</pre><h3><a name="V5.24_Fonts"></a>Fonts</h3><pre>
9854
 
9855
Fixes bugs:
9856
	- The derived (Bold, Oblique, ...) Hershey fonts were broken.
9857
(fonts/makeher.ps, fonts/h*.ps)
9858
 
9859
</pre><h3><a name="V5.24_Interpreter"></a>Interpreter</h3><pre>
9860
 
9861
Fixes bugs:
9862
	- As always, gcc failed to report some signed/unsigned char *
9863
mismatches.  (imainarg.c)
9864
	- Some needed #includes were missing.  (zcrd.c, ztype.c)
9865
	- Contexts were always allocated in global VM (should be local VM),
9866
and were freed in the current VM (should be local VM).  Fixing this required
9867
changing some internal interfaces defined in icontext.h.  (icontext.h,
9868
icontext.c, interp.c, zcontext.c)
9869
	- restore did some unnecessary gsaves.  (zvmem.c)
9870
	- Creating a new context didn't initialize the graphics state
9871
properly, and didn't do the first gsave that grestoreall relies on.
9872
(gs_dps.ps)
9873
	- The bookkeeping for open files didn't work with multiple contexts.
9874
Fixing this required a substantial (simplifying) redesign of the
9875
interpreter's bookkeeping for streams in general: this may have introduced
9876
new bugs.  (files.h, ireclaim.c, isave.c, zfile.c)
9877
	- fork didn't copy the graphics state stack.  (zcontext.c)
9878
	- The space bits were set incorrectly in the array reference for the
9879
operand stack, causing the garbage collector not to mark the operand stack
9880
of contexts other than the current one.  (interp.c)
9881
	- LanguageLevel 3 facilities weren't enabled when desired.
9882
(gs_ll3.ps, ilevel.h, opdef.h, iinit.c, zcsdevn.c, zimage3.c, zmisc2.c,
9883
zmisc3.c, zshade.c, ztrap.c)
9884
	- flushfile with a procedure-target stream didn't pass the buffered
9885
data to the procedure.  We tinkered with this a little, but it still isn't
9886
fixed.  (zfilter.c, zfproc.c)
9887
	- The top-level color space objects allocated by the CIE color space
9888
setting operators were never freed (until garbage collection).  (zcie.c)
9889
	- setpagedevice with a 0-size page didn't fail.  (gs_setpd.ps,
9890
zmedia2.c)
9891
	- If one or more of the matrices in a CIE color space or CRD was
9892
singular, setcolorspace or setcolorrendering could cause a stackoverflow.
9893
(zcie.c)
9894
	- defineuserobject didn't work.  (I don't see how it could ever have
9895
worked.)  (gs_dps2.ps)
9896
	- The version string wasn't read-only.  (gs_init.ps, gs_lev2.ps,
9897
gs_ll3.ps)
9898
	- Some standard resource categories weren't defined (which they need
9899
to be, even if they have no instances).  (gs_res.ps, gs_ll3.ps)
9900
	- The Trapping ProcSet was empty.  (gs_ll3.ps)
9901
	- setvmthreshold didn't accept a value of -1.  (gs_lev2.ps,
9902
gs_pdfwr.ps, zusparam.c, zvmem2.c)
9903
	- Binary tokens containing native reals with swapped byte order
9904
didn't read in properly.  (ibnum.c, iscanbin.c)
9905
	- In binary object sequences, many executable objects were
9906
incorrectly written out as literal.  (zbseq.c)
9907
	- String DataSources for shadings didn't work.  (zshade.c)
9908
	- Parameter dictionaries with integer keys didn't work.  (iparam.c)
9909
	- A "can't happen" condition caused massive confusion instead of a
9910
rangecheck error.  (gs_setpd.ps)
9911
	- setcachelimit and setcacheparams were broken, because they no
9912
longer interacted correctly with setuserparams and setsystemparams.
9913
(gs_lev2.ps)
9914
	- The source width and height of images was arbitrarily limited to
9915
32767.  (zimage2.c)
9916
	- The optional dictionary parameter for filters was the last
9917
operand, not the first.  (zfbcp.c, zfdecode.c, zfilter.c, zfilter2.c,
9918
zfilterx.c, zfzlib.c)
9919
	- If the current color space was Indexed, Separation using the
9920
alternative space, or DeviceN using the alternative space,
9921
currentgray/cmykcolor/hsbcolor/rgbcolor returned 0 rather than the
9922
underlying color.  (This was a correction to the Red Book in the 3010
9923
Language Supplement, Section D.2.4 and D.2.5.)  (gscolor.c, gscolor1.c,
9924
gxcspace.h)
9925
 
9926
Implements some additional LanguageLevel 3 stream facilities:
9927
	- CloseSource and CloseTarget (parsing only).  (ilevel.h, zfilter.c)
9928
	- Dictionary argument for SubFileDecode.  (zfilter.c)
9929
	- UnitSize (fully implemented) and LowBitFirst (parsing only) for
9930
	LZWDecode. (zfdecode.c)
9931
	- ReusableStreamDecode (incomplete).  (gs_ll3.ps, zfreuse.c)
9932
 
9933
Removes all remaining uses of _ds and _ss.  (bfont.h, errors.h, files.h,
9934
icie.h, idict.h, idparam.h, ifunc.h, iscan.h, iutil2.h, opdef.h; iccfont.c,
9935
idict.c, idparam.c, igc.c, iinit.c, iparam.c, iscan.c, iscannum.c, iutil2.c,
9936
zcid.c, zcie.c, zdevice2.c, zfdecode.c, zfile.c, zfileio.c, zfont0.c,
9937
zfont2.c, zfont42.c, zfunc.c, zht2.c, zusparam.c)
9938
 
9939
Removes the use of gs_if_debug_c.  (zvmem2.c)
9940
 
9941
Updates clients for the change in color space num_components.  (zcolor2.c,
9942
zcsindex.c, zcssepr.c, zpcolor.c)
9943
 
9944
Changes the stack manager so it can ensure an unused margin above the top
9945
element.  This is needed for a possible change in the operator API.
9946
(istack.h, istack.c)
9947
 
9948
Decouples the definition of the interpreter instance from the definition of
9949
the exported procedures that use it, so that we can use it in more places
9950
internally.  (iminst.h, main.h)
9951
 
9952
Removes all initialization of static per-context state.  (iinit.c, iscan.c,
9953
zmath.c)
9954
 
9955
Makes the freeing of VM spaces entirely dependent on the number of contexts
9956
referencing them, removing the special handling of interpreter termination.
9957
(icontext.h, gsalloc.c, icontext.c, inouparm.c, interp.c, zcontext.c,
9958
zusparam.c)  ****** IN PROGRESS ******
9959
 
9960
Enables printing of time and memory usage even in non-DEBUG systems, for
9961
benchmarking.  (imain.c)
9962
 
9963
Adds a .forceundef operator to parallel .forceput.  (gs_init.ps, zdict.c)
9964
 
9965
Rewrites the Form caching code to use the Pattern cache.  (gs_fform.ps)
9966
 
9967
Removes all uses of far_data.  (imain.c, imainarg.c, iname.c, opdef.h)
9968
 
9969
Moves responsibility for null page devices from C code to PostScript code.
9970
(gs_setpd.ps, igstate.h, zdevice2.c, zgstate.c)
9971
 
9972
Changes the context scheduler to not store or reload the state when
9973
switching from a context to the same context.  (zcontext.c)
9974
 
9975
Moves .registerencoding from C code to PostScript code.  (gs_init.ps,
9976
zfont2.c)
9977
 
9978
Splits off inames.h (API for names and the name table) from iname.h (API for
9979
the interpreter's name table); renames the_nt as the_gs_name_table, and
9980
moves it to imain.c.  We would like to rename iname.h as names.h, but there
9981
are too many places that include it.  (igc.h, iname.h, inamedef.h, inames.h,
9982
imain.h, idict.c, idstack.c, igc.c, iname.c, interp.c, isave.c)
9983
 
9984
Splits off iestack.h and iostack.h from estack.h and ostack.h, as was done
9985
for [i]dstack.h in 5.23.  (estack.h, iestack.h, iostack.h, ostack.h,
9986
interp.c)
9987
 
9988
Splits off the hit detection device from the user path code, moving it to
9989
the library level where it belongs.  (zupath.c)
9990
 
9991
Updates the interpreter for the changes in the enum_ptrs, reloc_ptrs, and
9992
clear_marks memory management procedures.  (igc.c, igcref.c, ilocate.c,
9993
zcontext.c)
9994
 
9995
Removes all uses of 'near' from the interpreter: if short and long calls
9996
have different formats, we rely on the compiler to generate the most
9997
efficient one.  (iccfont.c, imainarg.c, iparam.c, zdevice2.c, zdouble.c,
9998
zdps.c, zgstate.c, zmatrix.c, zpath.c, zpath1.c, zrelbit.c, ztype.c)
9999
 
10000
Makes a couple of minor changes to support the change in
10001
gs_param_list_common.  (iparam.h, iparam.c)
10002
 
10003
Changes internaldict to an operator, and executive and findencoding to
10004
procedures, in order to satisfy the Genoa FTS.  (gs_dps.ps, gs_init.ps,
10005
gs_res.ps)
10006
 
10007
Updates clients for the addition of device reference counting.  (zpcolor.c,
10008
zupath.c)
10009
 
10010
Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
10011
(istruct.h, opcheck.h)
10012
 
10013
Adds a debugging operator for printing out a Type 1 font.  (zfont1.c)
10014
 
10015
Updates the Type 1 font operators for the change in the procedure structure.
10016
(zchar1.c, zfont1.c)
10017
 
10018
Updates one client for the change in the gs_show_enum structure.  (zchar.c)
10019
 
10020
Removes an obsolete "hook" put in for a customer.  (zchar.c)
10021
 
10022
Removes the BigStringEncode filter, which was only used by a former
10023
customer.  (zfilter.c)
10024
 
10025
</pre><h3><a name="V5.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
10026
 
10027
Fixes bugs:
10028
	- Images defined in non-Device color spaces were broken.
10029
(pdf_draw.ps)
10030
 
10031
Removes some vestiges of the old pdf2ps.  (pdf_draw.ps, pdf_main.ps)
10032
 
10033
Adds some leftover PDF 1.2 features:
10034
 
10035
	- F, FFilter, and FDecodeParms keys in stream dictionaries.
10036
	(pdf_base.ps)
10037
 
10038
	- Functions, including predefined spot functions.  (pdf_draw.ps)
10039
 
10040
	- Name trees.  (pdf_base.ps)
10041
 
10042
Adds some PDF 1.3 features.  Note that these require a fair amount of
10043
PostScript LanguageLevel 3 support.  Note also that none of these have been
10044
tested yet, because we don't have any source of test files.
10045
 
10046
	- DeviceN and (stubbed) ICCBased color spaces.  (pdf_draw.ps,
10047
	pdf_ops.ps)
10048
 
10049
	- Additional extended graphics state parameters.  (pdf_draw.ps)
10050
 
10051
	- Number trees.  (pdf_base.ps)
10052
 
10053
	- Masked images.  (pdf_draw.ps)
10054
 
10055
Works around a bug in pdfTeX, which can generate Encoding vectors containing
10056
nulls.  (pdf_font.ps)
10057
 
10058
</pre><h3><a name="V5.24_Streams"></a>Streams</h3><pre>
10059
 
10060
Fixes bugs:
10061
	- A needed #include of memory_.h was missing.  (sdeparam.c)
10062
	- The needed input buffer size for the RunLengthEncode filter was
10063
128, but should be 129.  (srle.c)
10064
	- The ASCII85Encode and ASCIIHexEncode filters sometimes didn't
10065
insert \n characters often enough.  (sfilter2.c, sstring.c)
10066
	- In one obscure boundary case, the CCITTFaxEncode filter with K =
10067
-1 could emit an extra, incorrect code.  (scfe.c)
10068
	- The CCITTFaxDecode filter didn't default DamagedRowsBeforeError to
10069
0.  (scfx.h)
10070
 
10071
Removes all remaining uses of _ds and _ss.  (sfilter.h, sbcp.c, scfe.c,
10072
seexec.c, sfilter1.c, sstring.c)
10073
 
10074
Removes the use of do_debug.  (scfd.c)
10075
 
10076
Removes all uses of far_data.  (scf.h, scfdgen.c, scfdtab.c, scfetab.c,
10077
sjpegerr.c)
10078
 
10079
Removes the save_count member of streams, which is now no longer needed.
10080
(stream.h)
10081
 
10082
To help in debugging, changes all uses of
10083
	#define ss ((stream_xxx_state *)st)
10084
to
10085
	stream_xxx_state * const ss = (stream_xxx_state *)st;
10086
(sbcp.c, sbhc.c, sbwbs.c, scfd.c, scfe.c, sdctc.c, sdctd.c, sdcte.c,
10087
seexec.c, sfilter1.c, sfilter2.c, sfxfd.c, sfxstdio.c, siscale.c, slzwc.c,
10088
slzwce.c, slzwd.c, smtf.c, spdiff.c, spngp.c, srld.c, srle.c, sstring.c,
10089
szlibc.c, szlibd.c, szlibe.c)
10090
 
10091
Changes all groups of statistic-gathering variables to be structure
10092
variables named stats_*.  (scfe.c)
10093
 
10094
Rewrites the CCITTFaxEncode filter to cut down one particularly large and
10095
obnoxious macro, and to simplify the code by allocating an output buffer as
10096
well as an input buffer.  (scf.h, scfdgen.c, scfe.c, scfetab.c)
10097
 
10098
</pre><h3><a name="V5.24_Library"></a>Library</h3><pre>
10099
 
10100
Fixes bugs:
10101
	- The masked image clipper sequenced through mask rows incorrectly.
10102
(gxclipm.c)
10103
	- gx_[c]path_init_local_shared were declared as returning void, but
10104
could actually return an error.  (gxpath.h, gxcpath.c, gxpath.c)
10105
	- As always, gcc failed to report some static/non-static
10106
inconsistencies.  However, to my dismay, I find that the ANSI C standard
10107
allows these, so I'll have to stop complaining about them.  (gxclimag.c,
10108
gxclipm.c)
10109
	- As always, gcc failed to report some signed/unsigned char *
10110
mismatches.  (gdevpdfi.c, gsparam.c)
10111
	- A loop counted on a non-existent zero value to mark the end of the
10112
IODevice table.  (gsiodev.c)
10113
	- Some needed #includes of memory_.h were missing.  (gdevddrw.c,
10114
gscolor2.c, gscrdp.c, gscspace.c, gxclipm.c, gximage3.c, gxshade4.c)
10115
	- Pattern device colors didn't have access to the original halftone
10116
phase, making it impossible to handle non-standard X/YStep correctly.
10117
(gsdcolor.h, gspcolor.c)
10118
	- Pattern filling disregarded the phase.  THIS MAY UNDO A FIX MADE
10119
IN 5.02.  WE NEED TO RE-TEST PATTERNS CAREFULLY.  (gxp1fill.c)
10120
	- restore did some unnecessary gsaves.  (gsstate.h, gsstate.c)
10121
	- The reference counting macros could read from an object after
10122
freeing it.  (gsrefct.h)
10123
	- setgstate and currentgstate freed the view clipping path, which
10124
they shouldn't do.  (gsstate.c)
10125
	- If no view clipping path was set, viewclippath returned the entire
10126
extent of the device, not the imageable area.  (gxpath.h, gsdps.c, gspath.c)
10127
	- Assigning one stack-allocated path to another incorrectly wound up
10128
sharing their segments.  (gxcpath.c, gxpath.c)
10129
	- dot_length_absolute was incorrectly declared as float rather than
10130
bool.  (gxline.h)
10131
	- The test for varying-depth banded images was incorrect, causing
10132
varying-depth images to be treated as constant-depth.  (This only affected
10133
ImageType 3 images.)  (gxclimag.c)
10134
	- Failure to clamp Y values when processing banded images could
10135
cause crashes or invalid band list data.  (gxclimag.c)
10136
	- The changes in gsparam.c introduced in 5.23 made the coercion of
10137
int arrays to float arrays fail.  (gsparam.h, gsparam.c)
10138
	- Interpolated banded images could be transmitted incompletely,
10139
causing narrow stripes to be chopped out of their rendering.  (gxclimag.c)
10140
	- FunctionType 0 functions with 32-bit samples didn't read their
10141
data correctly.  (gsfunc0.c)
10142
	- Lattice-form Shadings with packed coordinates could crash or
10143
produce incorrect results.  (gxshade.c)
10144
	- Lattice-form Shadings with packed coordinates always returned an
10145
error.  (gxshade4.c)
10146
	- If the PaintProc of a Pattern or a Form, or a CharString
10147
procedure, or a similar callback copied the current graphics state with
10148
gstate or currentgstate, a dangling reference to the device could result.
10149
Fixing this required adding a reference count to devices: internally created
10150
devices initialize it to 0, externally visible devices initialize it to 1.
10151
THIS IS A DELICATE CHANGE AND WILL PROBABLY HAVE A BUG TAIL.  (gsdevice.h,
10152
gxdevcli.h, gxdevice.h, gdevmem.c, gdevmrop.c, gdevnfwd.c, gschar.c,
10153
gsdevice.c, gsmemory.c, gspaint.c, gsstate.c, gxacpath.c, gxccman.c,
10154
gxclip.c, gxmclip.c, gxpcmap.c)
10155
	- The return_if_error macro referred to code rather than code_.
10156
(gserror.h)
10157
	- Non-monotonic halftones didn't allocate enough slots in the
10158
halftone cache.  (gxht.c)
10159
	- setpagedevice with a 0-size page didn't fail.  Fixing this
10160
required making the nullpage device provide explicit InputAttributes.
10161
(gdevnfwd.c)
10162
	- Halftone angles were often slightly off.  (gshtscr.c)
10163
	- Banded fill_mask operations (used for characters) were sometimes
10164
broken.  This bug was obviously introduced since 5.10; I'm surprised that it
10165
didn't have more serious effects.  (gxclread.c)
10166
	- Partially transparent patterns didn't work with non-default
10167
RasterOp values.  (gxp1fill.c)
10168
	- The default implementation of strip_copy_rop didn't handle color
10169
space conversion properly.  (gdevmrop.c)
10170
	- Hint replacement could cause the initial moveto and final
10171
closepath of a Type 1 outline to differ, confusing the filling code.
10172
(gxhint3.c)
10173
	- Interpolated images were truncated at the bottom.  (bug probably
10174
introduced in 5.23) (gxiscale.c)
10175
	- Using an unsigned type for the index passed to enum_ptrs
10176
procedures caused comparisons against signed values to be incorrect.
10177
(gsstruct.h)
10178
 
10179
Rewrites the rectangle list and mask clipping algorithms to use callback
10180
procedures rather than macros.  The rectangle list source code grew by 20%,
10181
but the compiled code shrank from 10K to less than 4K; the mask clip source
10182
code and compiled code both shrank.  (gxclip.h, gxmclip.h, gxclip.c,
10183
gxclip2.c, gxclipm.c, gxcpath.c)
10184
 
10185
Removes all remaining uses of _ds and _ss.  (gsmemory.h, gsstruct.h, gzht.h,
10186
stdpre.h, gp_dosfb.c, gsbitops.c, gscie.c, gsht.c, gstype1.c, gstype2.c,
10187
gxclpath.c, gxclread.c, gxcmap.c, gxfill.c, gxi12bit.c, gxop1.h, gxpflat.c,
10188
gxstroke.c, gxtype1.c)
10189
 
10190
Changes some GC procedures from explicit code to standard macros.
10191
(gsstruct.h, gscscie.c, gxcht.c)
10192
 
10193
For easier debugging, changes gs_debug_c to a procedure; removes
10194
gs_if_debug_c and do_debug.  (gdebug.h, gsht1.c, gsmisc.c, gspaint.c,
10195
gxcht.c, gxht.c, gxpcmap.c)
10196
 
10197
Changes the num_components member of the color space structure to a
10198
procedure, which is needed because DeviceN color spaces have a variable
10199
number of components; also makes Pattern spaces return -1 - the correct
10200
num_components instead of -1.  This is a NON-BACKWARD-COMPATIBLE CHANGE.
10201
Also adds a base_space procedure.  (gxcspace.h, gscdevn.c, gscolor1.c,
10202
gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c, gscspace.c, gspcolor.c,
10203
gxiinit.c, gxiscale.c)
10204
 
10205
Changes all groups of statistic-gathering variables to be structure
10206
variables named stats_*.  (gxclip.c, gxclist.c, gxclpath.c, gxfill.c,
10207
gxifast.c)
10208
 
10209
Starts to pull apart gs_makebitmap/pixmappattern to remove the dependency on
10210
masked images.  (gspcolor.c)
10211
 
10212
Splits the C heap allocator from generic allocator support.  (gsmemory.c,
10213
gsmalloc.c)
10214
 
10215
Removes all uses of far_data other than references to device (but not
10216
device2) prototypes.  (gdevmem.h, gdevmrop.h, gxdevcli.h, gconf.c,
10217
gdevabuf.c, gdevht.c, gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c,
10218
gsbittab.c, gsflip.c, gsroptab.c, gxcht.c)
10219
 
10220
Adds a streams member to gs_ref_memory_t.  The library doesn't use this, but
10221
it greatly simplifies the interpreter's bookkeeping.  (gsalloc.h, gxalloc.h,
10222
gsalloc.c)
10223
 
10224
Adds some more opaque types to the graphics state structure, rather than
10225
using naked struct types.  (gsccolor.h, gzstate.h)
10226
 
10227
Introduces the notion of the "effective clip path" in a graphics state.
10228
Painting operators should now call gx_effective_clip_path rather than using
10229
the clip_path member directly.  (gxpath.h, gschar.c, gsdps1.c, gsimage.c,
10230
gspaint.c, gspath.c, gxccache.c, gxpaint.c)
10231
 
10232
Implements view clipping.  (gzstate.h, gspath.c, gsstate.c)
10233
 
10234
Starts to pare down the fit_* macros in gxdevice.h, since some people feel
10235
strongly they are hard to follow, and also adds BEGIN/END wrapping.
10236
(gxdevice.h, gdevabuf.c, gdevmem.c, gxclpath.c)
10237
 
10238
Refactors the structure definition macros in anticipation of moving to a
10239
more table-driven approach.  Replaces ENUM_CALL, ENUM_RETURN_CALL, and
10240
RELOC_CALL with ENUM_USING and RELOC_USING.  (gsstruct.h, gdevmem.c,
10241
gshtscr.c, gxcpath.c, gxiinit.c)
10242
 
10243
Sketches a table-driven rather than procedural representation for GC
10244
descriptors.  We believe this will improve readability, reduce code size,
10245
and perhaps reduce cache thrashing during garbage collection.  This requires
10246
a NON-BACKWARD-COMPATIBLE CHANGE to the enum_ptrs, reloc_ptrs, and
10247
clear_marks procedures (to add the structure descriptor as a parameter).
10248
This should not affect any ordinary clients, because they should already
10249
define these procedures using the macros in gsstruct.h, which *are*
10250
backward-compatible; however, they do affect two internal clients that use
10251
their own type tags with unions (color spaces and device colors).
10252
(gsstrtab.h, gsstruct.h, gsalloc.c, gsstrtab.c)
10253
 
10254
Updates color spaces for the change in enum_ptrs and reloc_ptrs.
10255
(gxcspace.h, gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c,
10256
gscsepr.c, gscspace.c, gspcolor.c)
10257
 
10258
Updates device colors for the change in enum_ptrs and reloc_ptrs.
10259
(gsdcolor.h, gxdcolor.h, gxpcolor.h, gspcolor.c, gxcht.c, gxcmap.c,
10260
gxdcolor.c, gxht.c, gxp1fill.c)
10261
 
10262
Implements a hit detection device at the library level.  (gserrors.h,
10263
gdevhit.c)
10264
 
10265
Changes some configuration parameters from #defines to statics.  (gschar.c)
10266
 
10267
Changes "simple" structures so they no longer have 0 for the enum_ptrs or
10268
reloc_ptrs procedure.  This is a NON-BACKWARD-COMPATIBLE CHANGE for
10269
structure-definers that don't use the macros in gsstruct.h (of which there
10270
shouldn't be any).  (gsstruct.h, gsalloc.c)
10271
 
10272
Adds the structure type name to the debugging printout for freeing objects.
10273
(gsalloc.c)
10274
 
10275
To help in debugging, changes all uses of
10276
	#define ss ((stream_xxx_state *)st)
10277
to
10278
	stream_xxx_state * const ss = (stream_xxx_state *)st;
10279
(gxclread.c)
10280
 
10281
Removes all uses of 'near' from the library: if short and long calls have
10282
different formats, we rely on the compiler to generate the most efficient
10283
one.  (gscie.c, gscoord.c, gsimpath.c, gsstate.c, gstype2.c, gxclpath.c,
10284
gxclread.c, gxfill.c, gxhint1.c, gxhint2.c, gxhint3.c, gxstroke.c)
10285
 
10286
Adds 'inline' to stdpre.h, defined as the empty string on compilers other
10287
than the ones we know accept it.  (stdpre.h)
10288
 
10289
Adds printout of the subrectangle to ImageType 1 tracing.  (gxiinit.c)
10290
 
10291
Replaces a few uses of gs_memory_default with dev-&gt;memory.  (gdevdbit.c,
10292
gxclread.c)
10293
 
10294
Improves support for halftone objects not associated with graphics states.
10295
This involves a minor change to the definitions of gs_spot_halftone and
10296
gs_threshold_halftone, to define the transfer function as a closure.  This
10297
is slightly NON-BACKWARD-COMPATIBLE in that it requires clients to set
10298
transfer_closure.proc to 0 if they also set transfer to 0.  NOTE: the API
10299
defined in gshtx.h is subject to future change.  (gscsepnm.h, gshtx.h,
10300
gxdht.h, gxfmap.h, gxht.h, gxtmap.h, gscolor.c, gsht.c, gsht1.c, gshtx.c)
10301
 
10302
Changes the Bezier approximation of arcs to cut arcs at absolute multiples
10303
of 90 degrees rather than at intervals of 90 degrees (e.g., an arc from 45
10304
to 105 would now be cut at 90 rather than being treated as a single
10305
60-degree curve) in order to produce more uniform output and also to ensure
10306
that the bounding box for arcs is more accurate (to pacify the Genoa FTS).
10307
(gxfarith.h, gsmisc.c, gspath1.c)
10308
 
10309
Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
10310
(gsbitops.h, gsdsrc.h, gserror.h, gsmdebug.h, gsrect.h, gxcldev.h, gxfunc.h,
10311
gxop1.h, gxtype1.h, gsalphac.c, gsshade.c, gstype2.c, gstype42.c,
10312
gxclread.c, gxcpath.c, gximage4.c, gxpath.c)
10313
 
10314
Adds a user-defined halftone type, to support non-monotonic halftones.  We
10315
could make any of the following structures fully object-oriented:
10316
	- Halftones (client level)
10317
	- Halftone orders (device level, but not rendered)
10318
	- Device halftones (device level, fully rendered)
10319
The right place to do this for non-monotonic halftones, which are specified
10320
directly by bit masks, is at the device halftone level.  However, there are
10321
too many places that know too much about the implementation of device
10322
halftones and halftone orders right now.  WE NEED TO REVISIT THIS AFTER THE
10323
5.1x CODE BRANCH IS TERMINATED.  SHOULD ALSO CONVERT UNION TO TYPED UNION
10324
FOR GC -- CODE IS DUPLICATED IN gsht.c VS gshtx.c.  (gxdht.h, gxht.h,
10325
gxhttype.h, gshtx.h, gsht.c, gsht1.c, gshtx.c)
10326
 
10327
Moves the procedures in Type 1 font data into a structure.  This is a
10328
NON-BACKWARD-COMPATIBLE CHANGE, but an internal one.  (gxfont1.h, gstype1.c,
10329
gstype2.c, gxtype1.c)
10330
 
10331
Extends Type 1 / 2 / 4 fonts to require that they be able to enumerate the
10332
set of glyphs that they define, to allow writing them out.  We may propagate
10333
this to all base fonts in the future.  (gxfont1.h)
10334
 
10335
Provides some utilities for devices that want to define their own
10336
InputAttributes and OutputAttributes.  (gdevprn.h, gxdevice.h, gdevprn.c,
10337
gsdparam.c)
10338
 
10339
Removes all of the text-display procedures that took null-terminated C
10340
strings as operands.  This is NON-BACKWARD-COMPATIBLE.  However, since the
10341
memory manager required that all such operands be allocated using
10342
gs_alloc_string, the procedures were never usable with arbitrary C strings
10343
anyway.  (gschar.h, gschar.c)
10344
 
10345
Renames the gx_device procedure record from std_procs to procs, in
10346
anticipation of more unified support for "objects".  This is a
10347
NON-BACKWARD-COMPATIBLE CHANGE for a surprisingly large number of clients
10348
that should have been using dev_proc and set_dev_proc.  (gdevbbox.h,
10349
gxdevcli.h, gxdevice.h, gdevdflt.c, gdevdgbr.c, gdevmem.c, gdevprn.c,
10350
gsalphac.c, gsdevice.c, gsropc.c, gxccache.c, gxifast.c)
10351
 
10352
Disallows setting of the RasterOp-related graphics state parameters when
10353
a cache device is active.  (gsrop.c)
10354
 
10355
Changes the tracing printout of path segments to provide enough accuracy to
10356
cover all the fraction bits of a 'fixed'.  (gxpath.c)
10357
 
10358
</pre>
10359
 
10360
<hr>
10361
 
10362
<h2><a name="Version5.23"></a>Version 5.23 (limited) (5/14/98)</h2>
10363
 
10364
<p>
10365
This fileset adds a number of PostScript LanguageLevel 3 features: library
10366
support for ImageType 3 and 4 (masked) images, PostScript-level support for
10367
ImageType 4, and the shfill operator for smooth shading.  It also adds RCS
10368
Id lines to all the files we maintain.  It also changes the Unix makefiles
10369
so that they create debugging or profiling binaries in separate directories.
10370
 
10371
<p>
10372
This fileset includes an unusually large number of non-backward-compatible
10373
API changes.  Most of them don't affect ordinary library clients, but a few
10374
do.  These changes, and a few more to come, result from the next (large)
10375
increment in our ongoing project to make the code completely re-entrant (no
10376
non-idempotent writable globals in our own code).  This necessarily involves
10377
putting some things that used to be global into structures, some of which
10378
must be added to some interfaces.
10379
 
10380
<p>
10381
NOTE: because of a combination of hardware problems, time pressure, and
10382
belated discovery of sloppiness by the original developers of the PC
10383
makefiles, none of the PC makefiles in this fileset work.  The Borland
10384
makefiles probably come the closest.
10385
 
10386
<h3><a name="V5.23_Documentation"></a>Documentation</h3><pre>
10387
 
10388
Adds documentation for:
10389
	- The changes in begin_image and related facilities.  (drivers.txt)
10390
	- The addition of -Z/.  (use.txt)
10391
	- The new ps2ps utility.  (ps2ps.1)
10392
	- The new get_hardware_params procedure.  (drivers.txt)
10393
	- The new -B&lt;size&gt; / -B- switch.  (use.txt).
10394
 
10395
Improves the documentation for the sample_ macros.  (gsbitops.h)
10396
 
10397
Adds some documentation on how the debugging/tracing flags work.  (gdebug.h)
10398
 
10399
Improves the documentation of DDAs.  (gxdda.h)
10400
 
10401
Documents a subtle change in the meaning of a flag in the PDF
10402
FontDescriptor.  (pdf_font.ps)
10403
 
10404
Changes the location of the authoritative site for zlib sources.  (zlib.mak)
10405
 
10406
Corrects a typo.  (gsht1.h)
10407
 
10408
Removes pdf_2ps.ps from the fileset.  (psfiles.txt)
10409
 
10410
Adds standard file name comments to all .c and .h files that didn't already
10411
have them.  (dodebug.h, gdev3b1.c, gdev8510.c, gdevadmp.c, gdevhl7x.c,
10412
gdevimgn.c, gdevo182.c, gdevpdfx.h, gdevpe.c gdevsco.c, gdevsj48.c,
10413
gdevvglb.c, gsalpha.c, gscolor1.c, gscsepr.h, gsdsc.c, scfetab.c string_.h,
10414
zfunc3.c, zmedia2.c)
10415
 
10416
Unifies the nroff styles of the various man pages a bit.  (*.1)
10417
 
10418
Adds a reference to the CTAN mirror sites.  (new-user.txt)
10419
 
10420
Notes that the result of rect_intersect may be anomalous.  (gsrect.h)
10421
 
10422
Improves the documentation for the Distiller parameter handling code.
10423
(gdevpdfp.c, gdevpsdp.c)
10424
 
10425
Corrects an ambiguity in the definition of the int_keys argument of
10426
param_begin_xmit_dict.  (gsparam.h)
10427
 
10428
Adds a new file that will evolve into a reasonable guide to the source code.
10429
(README, source.txt)
10430
 
10431
Adds the convention for 'status' and 'code' to the C style guide.
10432
(c-style.txt)
10433
 
10434
Improves the documentation for the '-' pseudo-switch.  (use.txt)
10435
 
10436
Updates the problem reporting form to include the URL for known post-release
10437
problems.  (bug-form.txt)
10438
 
10439
Documents the availability of sources and binaries for Plan 9.
10440
(new-user.txt)
10441
 
10442
</pre><h3><a name="V5.23_Procedures"></a>Procedures</h3><pre>
10443
 
10444
Fixes bugs:
10445
	- The 'tags' target in the Unix makefiles had an incorrect directory
10446
name.  (bug probably introduced since 5.20)  (unix-end.mak)
10447
	- The ld_tr and CCFLAGS macros were used in the makefiles before
10448
they were defined, causing problems with `make' implementations that
10449
substitute macros into definitions at definition time rather than at use
10450
time.  (*.mak)
10451
	- Recent Digital Unix versions (4.0 and later) require -std1 when
10452
compiling.  (make.txt)
10453
	- The Unix library-only makefile had gotten out of date.
10454
(ugcclib.mak)
10455
	- pf2afm[.bat] were omitted from the fileset.  (master/package.tcl)
10456
	- The Borland makefile didn't work, because the Borland compiler
10457
requires specifying the output file name (-o) before the input file name
10458
(-c)!  This required changing the order of every compilation command in
10459
every platform-independent makefile.  The win*.mak files still need work.
10460
(*.mak)
10461
	- None of the non-Unix makefiles specified directory names for the
10462
auxiliary programs.  (dvx-tail.mak, os2.mak, wctail.mak, winlib.mak)
10463
	- The Windows makefiles lacked build rules for gp_ntfs and gp_win32.
10464
(msvclib.mak, winlib.mak)
10465
 
10466
Adds a new debugging switch -Z/ that prints the file name and line number on
10467
all trace messages.  (gdebug.h, std.h)
10468
 
10469
Changes the Unix 'pg' and 'debug' build targets so that they create the
10470
binaries in a 'pgobj' or 'debugobj' subdirectory of the standard build
10471
directory.  This allows keeping all 3 configurations active.  (unix-end.mak)
10472
 
10473
Adds GEN directories for jpeg, libpng, and zlib.  (devs.mak, gs.mak,
10474
jpeg.mak, lib.mak, libpng.mak, zlib.mak)
10475
 
10476
Adds a gendev.c that will eventually replace genconf.c.  (gendev.c, *.mak)
10477
 
10478
Adds -Wcast-align to the gcc compilation switches.  (unix-gcc.mak)
10479
 
10480
Adds support for libpng 1.0.1.  (libpng.mak)
10481
 
10482
Notes the use of -R on Solaris and other SVR4 systems.  (unix*.mak)
10483
 
10484
Removes pdf_2ps.ps from the fileset.  (int.mak, unixinst.mak,
10485
pdf_2ps.ps[deleted])
10486
 
10487
Ensures that every file that is copyright, maintained, and distributed by
10488
Aladdin Enterprises has a RCS Id line.  In .c and .h files, these lines
10489
currently are only comments, but they could be converted easily to static
10490
strings later if we want to.  We had to touch almost every file in the
10491
fileset to do this, but we did *not* change the write dates.  (*)
10492
 
10493
Makes the build procedure auto-detect whether the installed version of gcc
10494
has the 'const' code generation bug.  (gs.mak, lib.mak, unix-gcc.mak)
10495
 
10496
Removes 'makefile' as a precondition for ccf32.tr.  (I can't quite figure
10497
out why it was there in the first place.)  (msvccom.mak)
10498
 
10499
Replaces the -F&lt;file&gt; switch with a -B&lt;buffer size&gt; switch that forces all
10500
files to use the run_string interfaces.  -B- turns it off.  (iminst.h,
10501
imainarg.c)
10502
 
10503
Adds a new resource to genconf.c, -replace &lt;module&gt;.  This causes &lt;module&gt;
10504
*not* to be included if the module with the -replace resource *is* included.
10505
If two modules -replace each other, either directly or indirectly through
10506
-includes, the result is undefined.  (genconf.c)
10507
 
10508
Uses -replace to implement a default roplib package.  (lib.mak)
10509
 
10510
</pre><h3><a name="V5.23_Utilities"></a>Utilities</h3><pre>
10511
 
10512
Fixes bugs:
10513
	- unprot.ps stopped working because of the stricter prohibition
10514
against storing local-VM objects into systemdict.  (unprot.ps)
10515
 
10516
Adds a new ps2ps utility, like pdf2ps, that "distills" PostScript.
10517
(ps2ps, ps2ps.bat)
10518
 
10519
Modifies the ps2epsi utility so it can be run outside the ps2epsi script for
10520
testing.  (ps2epsi.ps)
10521
 
10522
Changes the pdf2ps utility to use the pswrite device.  This gets rid of all
10523
conversion problems, at the expense of larger and stupider output files.
10524
(pdf2ps, pdf2ps.bat)
10525
 
10526
</pre><h3><a name="V5.23_Drivers"></a>Drivers</h3><pre>
10527
 
10528
Fixes bugs:
10529
	- Two procedures were declared 'private' inconsistently (thank you
10530
again, gcc).  (gdevps.c)
10531
	- The author of the uniprint driver sent a fix for an
10532
allocation-related bug and an off-by-one bug.  (gdevupd.c)
10533
	- The PDF writer incorrectly converted open stroked rectangles (only
10534
3 sides drawn) to closed (4 sides drawn).  (gxpath.h, gzpath.h, gdevpdfd.c,
10535
gxpath2.c)
10536
	- When banding, filling a character within the PaintProc of a
10537
Pattern could produce memory access errors.  (The problem was in
10538
gx_forward_fill_mask, which might affect filling characters in other
10539
situations as well.)  (gdevnfwd.c)
10540
	- The [e]pswrite driver produced incorrect line widths for stroked
10541
graphics.  (gdevps.c)
10542
	- The [e]pswrite driver didn't invoke colorimage correctly, so
10543
didn't handle Patterns right.  (gdevps.c)
10544
	- Vector devices didn't set the color before writing trapezoids,
10545
possibly causing incorrectly colored output.  (gdevvec.c)
10546
	- Vector devices could give errors on Pattern fills.  (gdevvec.c)
10547
	- The bbox device retained a pointer to the clipping path, which,
10548
since the path was embedded in the gs_state_contents, confused the garbage
10549
collector, causing memory access errors.  We fixed this by de-embedding the
10550
path object: see below.  (gsstate.c)
10551
	- On some Linux systems, the X driver could get a memory access
10552
error when displaying patterns.  We fixed this by adding calls on XInitImage
10553
in the necessary places when running X11R6.  (gdevx.c)
10554
	- PDF output didn't check names for unusual characters, and could
10555
produce invalid output if the input included names with those characters.
10556
(gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfo.c)
10557
	- In the PDF writer, DEST pdfmarks with /Dest but no /Page or /View
10558
didn't generate named destinations.  (gdevpdfm.c)
10559
	- Printer devices didn't allow . in %-formats in the output file
10560
name.  (gdevprn.c)
10561
	- The x11cmyk driver didn't read bits back from the screen
10562
correctly.  (gdevxalt.c)
10563
	- The pcxmono and pcxgray drivers used colored rather than
10564
gray-scale palettes.  (gdevpcx.c)
10565
	- The PCX drivers could emit repetition counts greater than 15,
10566
confusing some readers.  (gdevpcx.c)
10567
 
10568
Removes some vestiges of the obsolete draw_line driver procedure.  We also
10569
rename the draw_line member of the driver procedure structure as
10570
obsolete_draw_line, so that any uses of it will cause compilation errors,
10571
but we don't remove it from the structure, so that existing driver procedure
10572
vectors will continue to compile (although the draw_line procedure will
10573
never be called).  (gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevdflt.c)
10574
 
10575
To repair a design error, and at the same time add flexibility needed for
10576
ImageType 3:
10577
 
10578
	- Removes the image_data and end_image driver procedures,
10579
associating them with the gx_image_enum(_common)_t structure instead.
10580
Clients should call gx_device_image_data and gx_device_end_image instead: we
10581
set the image_data and end_image procedures in the device structures to
10582
these procedures when filling in defaulted procedures.  This is a
10583
NON-BACKWARD-COMPATIBLE CHANGE for drivers that implement begin_image, since
10584
they now have to fill the procedures into the enumerator structure.
10585
(gsiparm*.h, gxdevcli.h, gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
10586
gdevdflt.c, gdevnfwd.c, gsimage.c, gxclist.c, gxidata.c, gxifast.c,
10587
gxiinit.c, gximage3.c, gximage4.c)
10588
 
10589
	- Replaces the image_data driver procedure with a plane_data
10590
procedure (now associated with the image enumerator, not the device) that
10591
allows specifying the X offset and raster independently for each plane, and
10592
(depending on the image type) may allow omitting some planes.  We provide a
10593
gx_device_image_plane_data procedure parallel to _image_data and _end_image
10594
(see above).  (gsiparm*.h, gxdevcli.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
10595
gxidata.c, gxiinit.c, gximage3.c, gximage4.c)
10596
 
10597
Updates clients for image processing changes.  (gdevvec.h, gdevpdf.c,
10598
gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
10599
 
10600
Enhances [e]pswrite to detect other kinds of opportunities for producing
10601
smaller output.  This involves a change in the moveto procedure in the
10602
'vector' interface.  (gdevps.c)
10603
 
10604
Changes the bbox device so that it automatically detects whether it is being
10605
used as a component in a device pipeline or as a free-standing device,
10606
rather than having to select this in the makefile.  (lib.mak, gdevbbox.h,
10607
gdevbbox.c)
10608
 
10609
Moves the halftoning driver a bit closer to real usability.  (gdevht.h,
10610
gdevht.c)
10611
 
10612
Adds some tracing to the color mapping code in the X driver.  (gdevx.c)
10613
 
10614
Implements setting the Dict and ACSDict parameters for pswrite and pdfwrite.
10615
Dict is effective with the CCITTFaxEncode filter for black-and-white images;
10616
otherwise, these parameters still don't do anything.  (gdevpdfi.c,
10617
gdevpsdp.c) ****** READING HUFFMAN TABLES IS NYI, SEE sdcparam.c; SETTING
10618
DOESN'T WORK BECAUSE DCT_set_defaults DOESN'T DO WHAT IT SHOULD ******
10619
 
10620
Updates the PS/PDF writers to reflect the fact that the ASCIIHexEncode
10621
filter now has a state.  (gdevpsdf.c)
10622
 
10623
Modifies the X driver so that it can draw multiple platform characters at a
10624
time rather than one character per call.  (gdevx.h, gdevx.c, gdevxxf.c)
10625
 
10626
Takes advantage of the filter stream procedures now available in stream.c.
10627
(gdevjpeg.c, gdevpdf.c, gdevpsdf.c)
10628
 
10629
Adds a get_hardware_params procedure, similar to get_params except that it
10630
reads parameters whose values depend on hardware state that may change
10631
without program intervention (e.g., panel switches).  The default is that
10632
there are no hardware parameters.  (gdevmem.h, gdevprn.h, gsdevice.h,
10633
gxdevcli.h, gxdevice.h, gxacpath.c, gxclip2.c, gxclipm.c, gxclist.c,
10634
gxcpath.c, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
10635
gdevprn.c, gsdparam.c)
10636
 
10637
Updates the PS/PDF writer for the change in the parameter list API.
10638
(gdevpsdf.c)
10639
 
10640
Makes a few more writable statics const.  (gdevos2p.c, gdevpipe.c,
10641
gdevpsim.c, gdevx.c)
10642
 
10643
Removes the rrgb sample device, since it now no longer serves any purpose.
10644
(gdevrrgb.c[deleted])
10645
 
10646
Converts some additional devices to -dev2, to make them const.  (devs.mak,
10647
gdevbit.c, gdevpbm.c, gdevpcx.c, gdevpsim.c, gdevpng.c, gdevtfax.c,
10648
gdevtfnx.c, gdevx.c, gdevxalt.c)
10649
 
10650
Updates a client accessing the preallocated color spaces.  (gdevpsdi.c)
10651
 
10652
Renames the debugging-related statics in the X driver as X_SOMETHING.
10653
(gdevx.c)
10654
 
10655
</pre><h3><a name="V5.23_Platforms"></a>Platforms</h3><pre>
10656
 
10657
Makes a few minor changes to support Plan 9.  (make.txt, devs.mak, stat_.h,
10658
stdio_.h, time_.h, gdevpbm.c)
10659
 
10660
</pre><h3><a name="V5.23_Fonts"></a>Fonts</h3><pre>
10661
 
10662
Documents the availability of a free Chinese font.  (fonts.txt,
10663
new-user.txt)
10664
 
10665
Works around a bug in the Adobe PostScript driver.  We though it just output
10666
the FontBBox for Type 42 fonts in the 2048- or 4096-unit character space
10667
rather than a 1-unit space, but in fact it outputs garbage.  (zfont42.c,
10668
gstype42.c)
10669
 
10670
Augments the handling of Type 42 fonts to recognize the gdir /
10671
GlyphDirectory method of outline definition in addition to the loca / glyf
10672
method, per Adobe versions 2015 and later (undocumented!).  (ifont.h,
10673
zfont42.c)
10674
 
10675
</pre><h3><a name="V5.23_Interpreter"></a>Interpreter</h3><pre>
10676
 
10677
Fixes bugs:
10678
	- Memory management for argument strings was wrong.  (gsargs.h,
10679
gsargs.c)
10680
	- 1 .setlanguagelevel was broken, because it didn't allow for the
10681
possibility that values could get deleted from systemdict that existed in
10682
level2dict.  (bug introduced in 5.x, x &lt;= 10) (zmisc2.c)
10683
	- -dFAKEFONTS was broken.  (gs_fonts.ps, gs_init.ps)
10684
	- copyscanlines was broken.  (bug introduced in 5.20) (gs_init.ps)
10685
	- The matrix returned by sizeimage was incorrect.  (zdpnext.c)
10686
	- The implementation of .buildpattern for PatternType 2 was wrong.
10687
(gs_ll3.ps)
10688
	- Ghostscript couldn't load TrueType fonts where the amount of data
10689
either before or after the glyf section exceeds 64K.  (gs_ttf.ps) ****** WE
10690
BACKED OUT THIS CHANGE, BECAUSE WE HAD TO BACK OUT THE NEXT ONE. ******
10691
	- Ghostscript couldn't load TrueType fonts where the total data is
10692
more than 64K and the offset or length of the glyfs is odd.  (gs_ttf.ps)
10693
****** WE BACKED OUT THIS CHANGE: IT BROKE THE PDF INTERPRETER, BECAUSE IT
10694
IMPOSES A NEW REQUIREMENT THAT TTF FILES BE POSITIONABLE. ******
10695
	- Some compilers complained about arithmetic on enums.  (interp.c)
10696
	- The CIE color space and CRD GC structure definitions were in the
10697
interpreter rather than the library.  (zcie.c, zcrd.c)
10698
	- NullFont was still present in FontDirectory when currentglobal was
10699
false.  (gs_init.ps)
10700
	- execform failed with Form resources, because it tried to insert
10701
the Implementation in a read-only dictionary.  (gs_fform.ps, gs_lev2.ps)
10702
 
10703
Finishes implementing ImageType 4 images, and moves closer to implementing
10704
ImageType 3.  (iimage.h, zdps.c, zimage.c, zimage2.c, zimage3.c)
10705
 
10706
Updates tracing output to use the new dlprintf macros.  (idict.c, igc.c,
10707
igcref.c, igcstr.c, iname.c, interp.c, isave.c, iscan.c, zcie.c, zcontext.c)
10708
 
10709
Implements multiproc=true for readimage.  (gs_dpnxt.ps)
10710
 
10711
Does a bit more work on implementing shading with PatternType 2.
10712
(gs_ll3.ps, zfunc.c, zshade.c)
10713
 
10714
Adds a .bitadd operator for adding integers modulo the word size.
10715
(zarith.c)
10716
 
10717
Updates filter operators to use the new stream parameter facility.
10718
(iparam.h, iparam.c, zfdecode.c, zfdctc.c[deleted], zfdctd.c, zfdcte.c)
10719
 
10720
Updates the implementation of parameter lists for the change from _dict to
10721
_collection.  (iparam.c, iparam.h)
10722
 
10723
Takes advantage of the filter stream procedures now available in stream.c.
10724
(zfilter.c)
10725
 
10726
Adds get_hardware_params to one device procedure vector.  (zupath.c)
10727
 
10728
Adds .gethardwareparams to parallel .getdeviceparams.  (zdevice.c)
10729
 
10730
Updates the interpreter's parameter list machinery to match the change in
10731
gsparam.h.  (iparam.h, iparam.c)
10732
 
10733
Makes more writable statics const.  (gs_init.ps, btoken.h, dstack.h, iref.h,
10734
opextern.h, icontext.c, idict.c, igc.c, igcref.c, iinit.c, imainarg.c,
10735
interp.c, iscanbin.c, iutil.c, zbseq.c, zcie.c, zcontrol.c, zdevcal.c,
10736
zdevice2.c, zdps.c, zdps1.c, zfont2.c, zgeneric.c, zgstate.c, ziodev.c,
10737
ziodev2.c, ztype.c)
10738
 
10739
Removes an inappropriate reference to PROGRAM_NAME.  (imainarg.c)
10740
 
10741
Removes set/currentrenderalgorithm, since they are useless for the purpose
10742
for which they were intended.  (zrop.c)
10743
 
10744
Uncomments code for CIEBasedDEF[G] color spaces, even though these aren't
10745
fully implemented yet.  (zcie.c)
10746
 
10747
Reimplements StartJobPassword and SystemParamsPassword as no-access strings
10748
in systemdict.  (gs_lev2.ps, iutil2.h, iutil2.c, ziodev2.c, zusparam.c)
10749
 
10750
Splits off the context state record from icontext.h, so that places that
10751
only need access to state variables don't need to import the
10752
procedures. (icontext.h, icstate.h)
10753
 
10754
Updates a client for the change in gs_malloc_limit.  (imainarg.c)
10755
 
10756
Updates clients for the change in the accessors for predefined color spaces.
10757
(zcolor1.c, zimage.c, zimage2.c)
10758
 
10759
Renames the (few) debugging-related statics as I_SOMETHING.  (igc.c)
10760
 
10761
Splits off idstack.h (API for dictionary stacks) from dstack.h (API for the
10762
interpreter's dictionary stack), and idstack.c (dictionary stack
10763
implementation) from idict.c (dictionary implementation).  We should have
10764
done this a long time ago!  (dstack.h, idictdef.h, idstack.h, idict.c,
10765
idstack.c, iinit.c, ireclaim.c)
10766
 
10767
Folds the cached currentfile pointer into the exec-stack structure.
10768
(estack.h, interp.c)
10769
 
10770
Changes clients of gs_register_*_root to eliminate statically allocated
10771
roots.  (iinit.c, iname.c, interp.c, zbseq.c, zcontext.c, zfile.c, zfont.c,
10772
zfont2.c, zgstate.c, ziodev.c)
10773
 
10774
Adds a ref_free_stack procedure, and reformats the implementation of stacks.
10775
(istack.h, interp.c, istack.c)
10776
 
10777
</pre><h3><a name="V5.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
10778
 
10779
Fixes bugs:
10780
	- Pattern colors sometimes caused errors.  (gs_pdf.ps)
10781
	- A file ending with %%EOF without an EOL caused an error.
10782
(pdf_main.ps)
10783
	- Fl wasn't recognized as an abbreviation for FlateDecode in in-line
10784
images.  (pdf_draw.ps)
10785
 
10786
Removes all code related to converting PDF to PS: it never worked reliably,
10787
and we now support this function with the pswrite device instead.
10788
(gs_pdf.ps =&gt; pdf_ops.ps, pdf*.ps)
10789
 
10790
</pre><h3><a name="V5.23_Streams"></a>Streams</h3><pre>
10791
 
10792
Updates tracing output to use the new dlprintf macros.  (shc.h, scfd.c,
10793
scfe.c, shcgen.c)
10794
 
10795
Provides the ability to read and set stream initial parameters to/from a
10796
parameter list.  This is currently needed only by the PDF/PS writers and the
10797
filter operator, so it is implemented in modules separate from the stream
10798
implementation per se, but it might be useful for other clients too.
10799
(scommon.h, scfparam.c, sdcparam.c, sdct*.c, sdeparam.c, sddparam.c,
10800
gdevpsfp.c[deleted])
10801
 
10802
Changes the ASCII85Encode filter so it never produces two %% at the
10803
beginning of a line, which could mislead document managers or spoolers.
10804
(sfilter2.c)
10805
 
10806
Changes the ASCIIHexEncode filter so it always produces lines of exactly 64
10807
characters, except for the last one.  THIS IS A NON-BACKWARD-COMPATIBLE
10808
CHANGE, because this filter now needs a state structure, which it didn't
10809
before.  (sstring.h, sstring.c)
10810
 
10811
Moves filter_{read,write}_procs to stream.c, changing the names to
10812
s_filter_{read,write}_procs.  (stream.h, stream.c)
10813
 
10814
Makes creation of JPEG filters set default values for parameters that are
10815
outside the IJG library (Picky and Relax).  (sdct.h, sjpegd.c, sjpege.c)
10816
 
10817
</pre><h3><a name="V5.23_Library"></a>Library</h3><pre>
10818
 
10819
Fixes bugs:
10820
	- An error in dda_step_add could theoretically produce anomalies in
10821
images (although we don't think we've ever seen any).  (gxdda.h)
10822
	- A boundary error in dda_state_next/previous/advance could
10823
theoretically produce anomalies in images by allowing R = 0 (although we
10824
don't think we've ever seen any).  (gxdda.h)
10825
	- A rounding error in computing the size of portrait images could
10826
produce a spurious 1-pixel-wide line at the edge of the image.  (gxifast.c)
10827
	- When banding, images with singular or nearly singular CTM or
10828
ImageMatrix could confuse things badly enough to cause memory access errors.
10829
(gxclimag.c)
10830
	- Patterns were broken.  (bug introduced in 5.21) (gxclip2.c)
10831
	- Because some image processing code retained a pointer to the
10832
clipping path, which was embedded inside the gs_state_contents object,
10833
garbage collection could cause crashes.  (The only case where we know this
10834
happened was the bounding box device, since we think all other image
10835
enumerators preconstruct a clipping device, which does not retain a pointer
10836
to the clipping path, rather than constructing one from the path on the
10837
fly.)  We fixed this by replacing gs_state_contents with individual objects:
10838
see below.
10839
	- The *_.h files didn't have double-inclusion protection.  (*_.h)
10840
	- ImageType 2 images were broken by the change in begin_typed_image.
10841
(gximage2.c)
10842
	- Color-setting operators that "substitute the nearest legal value"
10843
didn't substitute it in storage, only when using it.  E.g., after
10844
gs_setgray(pgs, 2.0), gs_currentgray(pgs) returned 2.0 rather than 1.0.
10845
This bug has been there since release 1.0!  (gxcspace.h, gscie.c, gscolor.c,
10846
gscolor1.c, gscolor2.c, gscdevn.c, gscsepr.c, gscpixel.c, gspcolor.c)
10847
	- The RasterOp implementation for 2-bit, 4-bit, and non-gray 8-bit
10848
devices didn't work.  (gdevmrop.c)
10849
	- The test of whether to use copy_mono, fill_mask, or general
10850
imaging for rendering characters sometimes used copy_mono when not
10851
appropriate.  (gxccache.c)
10852
	- The default implementation of fill_mask produced solid rectangles,
10853
rather than properly masked output, if the logical operation didn't use its
10854
source operand.  (gdevdbit.c)
10855
	- Some more files needed double inclusion protection.  (gscie.h)
10856
	- Checking for interrupts before a return always returned 0 rather
10857
than the correct return code if there was no interrupt.  (gsmisc.c)
10858
	- Characters within Pattern PaintProcs sometimes didn't get drawn.
10859
(gxpcmap.c)
10860
	- The CIE color space and CRD GC structure definitions were in the
10861
interpreter rather than the library.  (gscie.h, gscie.c)
10862
	- Numeric overflows when setting up the character cache caused
10863
errors rather than simply disabling caching for that character.  (gschar.c)
10864
	- FORCE_STRIP_HALFTONES was accidentally left set to 1 (in 5.10!),
10865
slowing down all uses of monobit halftones.  (gshtscr.c)
10866
 
10867
Implements mask clipping, which is needed for ImageType 3 images.
10868
(gxclip2.h, gxclipm.h, gxmclip.h, gxclip2.c, gxclipm.c, gxmclip.c)
10869
 
10870
Finishes implementing ImageType 3 and 4 images.  (gsimage.h, gsiparam.h,
10871
gsimage.c, gsiparm3.h, gximage3.c, gximage4.c)
10872
 
10873
Starts to update the banding code to handle ImageType 3 and 4 images.
10874
(gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxiinit.c)
10875
 
10876
Make eprintf_program_name, lprintf_file_{and_line,only}, and new
10877
dlprintf_file_{and_line,only} always be procedures, rather than sometimes
10878
macros and sometimes procedures.  (std.h, gdebug.h, gsmisc.c)
10879
 
10880
Adds new dlprintf, dlputc, and dlputs macros that are like
10881
dprintf/dputc/dputs but also print the source file name and line number at
10882
the beginning of the line if the -Z/ debugging switch is set.  The if_debug*
10883
macros now use dlprintf rather than dprintf; many other places also needed
10884
changing.  Note that if any place was overlooked, no great harm is done:
10885
printout produced there simply won't include the source file and line number
10886
even if -Z/ is set.  (std.h, gdebug.h, gsmisc.c; gdevbbox.c, gdevdbit.c,
10887
gdevdgbr.c, gdevmrop.c, gdevrun.c, gdevsvga.c, gdevx.c, gp_unifs.c,
10888
gsalloc.c, gschar.c, gscoord.c, gsfont.c, gshsb.c, gsht.c, gshtscr.c,
10889
gsmemory.c, gspath.c, gstype1.c, gstype2.c, gxacpath.c, gxccache.c,
10890
gxclimag.c, gxclist.c, gxclpath.c, gxclread.c, gxcpath.c, gxfill.c,
10891
gxidata.c, gxpath.c, gxpcopy.c, gxpflat.c, gxstroke.c)
10892
 
10893
Simplifies storage management for graphics states by replacing
10894
gs_state_contents with individual objects.  This slows down gsave and
10895
grestore a bit, but eliminates a class of potential obscure bugs.
10896
(gxpath.h, gzstate.h, gsstate.c, gxcpath.c, gxpath.c)
10897
 
10898
Adds some more information to the deubgging printout for paths.  (gxpath.c)
10899
 
10900
Modifies the library test program to test ImageType 3 and 4 images.
10901
(ugcclib.mak, gslib.c)
10902
 
10903
Extends the @-file parser to be more shell-like:
10904
 
10905
	- The sequence \ &lt;newline&gt; is ignored everywhere.
10906
 
10907
	- If a # appears as the first character on a line outside quotes,
10908
	the entire line	(including the terminating newline) is ignored.
10909
 
10910
(gsargs.h, gsargs.c)
10911
 
10912
Changes a stem hint tracing message so that it will print with the correct
10913
line number.  (gxhint2.c)
10914
 
10915
Moves the 'format' information for images to the image parameter structure.
10916
This entails a NON-BACKWARD-COMPATIBLE CHANGE in the begin_typed_image
10917
driver procedure (which was not guaranteed stable).  (gsiparam.h,
10918
gxdevcli.h, gsimage.c, gxiinit.c)
10919
 
10920
Adds an optional matrix argument to begin_typed_image, overriding the CTM in
10921
the imager state if present.  This is needed to make masks and masked images
10922
line up precisely; this too is a NON-BACKWARD-COMPATIBLE CHANGE.
10923
(gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevnfwd.c, gdevx.c, gxclimag.c,
10924
gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
10925
 
10926
Adds a procedure for testing monotonicity of Functions over a given range.
10927
(gsfunc.h, gsfunc0.c, gsfunc3.c)
10928
 
10929
Implements smooth shading with shfill.  All documented ShadingTypes (1-7)
10930
are implemented.  (gscspace.h, gsdsrc.h, gspath.h, gsshade.h, gxshade.h,
10931
gxshade4.h, gscolor.c, gscolor3.c, gsdsrc.c, gsfunc0.c, gsfunc3.c,
10932
gspath1.c, gsshade.c, gxshade.c, gxshade1.c, gxshade4.c, gxshade6.c)
10933
 
10934
Changes the TrueType rasterizer to remove the assumption that the entire
10935
loca table is stored contiguously.  This may not have any practical effect,
10936
since currently Type 42 fonts never split the loca table across segments.
10937
(gstype42.c)
10938
 
10939
Adds a new interface for creating CIE CRDs that provides the parameters as
10940
separate arguments.  (gscrd.h, gscrd.c)
10941
 
10942
Starts to add the ability for a device to provide one or more default CIE
10943
CRDs as (read-only) device parameters.  (Not ready for use yet.)  (gscie.h,
10944
gscrdp.h, gscie.c, gscrdp.c)
10945
 
10946
Adds a multiple-bit-per-pixel analogue of gs_makebitmappattern,
10947
gs_makepixmappattern, for use by another Aladdin project.  (lib.mak,
10948
gsbitmap.h, gsptype1.h, gxbitmap.h, gspcolor.c)
10949
 
10950
Changes the API of param_begin_write_dict so that the client can request the
10951
creation of an array rather than a dictionary.  This is a
10952
NON-BACKWARD-COMPATIBLE CHANGE for implementors (of which there are only
10953
2.5), but not for clients.  (gsparam.h, gsparam.c)
10954
 
10955
Adds dynamically typed data to the parameter list interface, and removes the
10956
statically typed procedures.  This isn't important for any standard facility
10957
yet.  This too is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
10958
parameter lists.  (gsparam.h, gsparams.h, gsparam.c, gsparams.c)
10959
 
10960
Adds a new platform-specific API for thread creation and synchronization,
10961
and a memory manager "wrapper" that monitor-locks each call.  No code
10962
normally included in this fileset uses any of this machinery as yet.  (gp.h,
10963
gpsync.h, gxsync.h, gsmemlok.h, gsmemlok.c, gxsync.c)
10964
 
10965
Splits off (PatternType 1) Pattern filling into a separate file, since the
10966
file was getting too big; refactors the filling code to use procedures
10967
rather than macros.  (gxp1fill.h, gspcolor.c, gxp1fill.c)
10968
 
10969
Makes a few more writable statics const.  (gscie.h, gscscie.c, gsdll.c,
10970
gsmemory.c, gsmisc.c, gstype1.c, gstype2.c, gxclpath.c)
10971
 
10972
Adds a compile-time option, SYSTEM_CONSTANTS_ARE_WRITABLE, to choose whether
10973
the system configuration values (buildtime, copyright, product, revision,
10974
revisiondate, serialnumber) are const or not.  By default they are now
10975
const: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE (affecting only one user).
10976
(lib.mak, openvms.mak, os2.mak, unix-end.mak, wctail.mak, winlib.mak,
10977
gscdefs.h, gscdef.c)
10978
 
10979
Removes the dependence of std.h on PROGRAM_NAME.  (std.h, gsdll.c, gsmisc.c,
10980
gscdef.c)
10981
 
10982
Adds a new member of the color space type structure, the size of the
10983
smallest color space structure that will hold a color space of the given
10984
type.  Also removes the obsolete _ds modifier.  (gscspace.h, gxcspace.h,
10985
gscdevn.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscpixel.c,
10986
gscsepr.c, gspcolor.c, gxiinit.c)
10987
 
10988
Removes set/currentrenderalgorithm, since they are useless for the purpose
10989
for which they were intended.  (gsrop.h, gsropt.h, gdevmrop.c, gsrop.c)
10990
 
10991
Splits off gscspace.c from gscolor.c, and gscscie.c from gscie.c.  (gscie.c,
10992
gscolor.c, gscscie.c, gscspace.c)
10993
 
10994
Adds constructor and accessor procedures for color spaces.  (gscie.h,
10995
gscolor2.h, gscsepr.h, gscspace.h, gsptype1.h, gxcolor2.h, gxcspace.h,
10996
gscolor.c, gscolor2.c, gscscie.c, gscsepr.c, gscspace.c, gslib.c,
10997
gspcolor.c)
10998
 
10999
Changes the CIEBased color space structures slightly to allow implementation
11000
of the CIEBasedDEF[G] color spaces.  (gscie.h, gscie.c)
11001
 
11002
Changes gs_malloc_limit from a static to a member of the allocator
11003
structure.  This is a NON-BACKWARD-COMPATIBLE CHANGE for clients that
11004
declared this variable as an extern.  (gsmalloc.h, gsmemory.c)
11005
 
11006
In order to eliminate some statics, changes the static color space accessors
11007
(gs_color_space_Device*) so they require a const gx_imager_state as
11008
parameter, and changes their names as well to avoid confusion.  This is a
11009
NON-BACKWARD-COMPATIBLE CHANGE not only in these accessors, but also in
11010
gs_image_t_init_{gray,color}.  This is very unfortunate, but we see no way
11011
to avoid it.  (gscspace.h, gsiparam.h, gxistate.h, gscolor1.c, gscscie.c,
11012
gscspace.c, gsimage.c, gspcolor.c, gsstate.c, gxclread.c, gxiinit.c,
11013
gximage2.c, gximage3.c, gximage4.c)
11014
 
11015
Unifies the handling of const for the IODevice table.  (gscdefs.h,
11016
gxiodev.h, gconf.c, gsiodev.c)
11017
 
11018
Changes the register_root memory manager call so that a NULL as the pointer
11019
to the root structure asks the memory manager to allocate the root structure
11020
itself.  This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
11021
memory manager API (of which there are only 3).  (gsmemory.h, gsstruct.h,
11022
gsalloc.c, gsmemory.c)
11023
 
11024
Adds a new GC structure type, suffix_add0_local, which is a more efficient
11025
form of suffix_add0 that can be used when the supertype is defined in the
11026
same file as the subtype.  (gsbitmap.h, gscie.h, gsshade.h, gsstruct.h)
11027
 
11028
Uses the new package replacement facility in the makefile to make RasterOp
11029
optional without tinkering with statics at runtime.  (lib.mak, gxdevice.h,
11030
gxdevrop.h, gdevdbit.c, gdevdflt.c, gdevmrop.c, gdevnfwd.c, gsnorop.c,
11031
gsropc.c)
11032
 
11033
Makes RasterOp really optional.  (gdevmrop.h, gsrop.h, gdevmrop.c, gsrop.c,
11034
gxiinit.c)
11035
 
11036
Rewrites bits_fill_rectangle to get rid of nearly all the macros.
11037
(gxbitops.h, gsbitops.c)
11038
 
11039
Removes the obsolete _ds from gs_log_error.  (gserror.h, gsmisc.c)
11040
 
11041
</pre>
11042
 
11043
<hr>
11044
 
11045
<h2><a name="Version5.22"></a>Version 5.22 (limited) (2/19/98)</h2>
11046
 
11047
<p>
11048
This fileset has a few more bug fixes, a major overhaul of memory management
11049
for paths so that we can do view clipping in a reasonable way, and the
11050
ability to build executables in a different directory from the sources.
11051
 
11052
<h3><a name="V5.22_Documentation"></a>Documentation</h3><pre>
11053
 
11054
Designates gv as the preferred VMS and Unix previewer.  (new-user.txt,
11055
use.txt)
11056
 
11057
Adds a pointer to post-release documentation.  (README)
11058
 
11059
Notes that compilation with certain platforms and compilers must turn off
11060
optimization.  (make.txt)
11061
 
11062
Improves the documentation of the fit_fill and fit_copy macros.
11063
(gxdevice.h)
11064
 
11065
</pre><h3><a name="V5.22_Procedures"></a>Procedures</h3><pre>
11066
 
11067
Fixes bugs:
11068
	- The ccgs script for non-ANSI compilers was no longer flexible
11069
enough to handle all the possible command lines.  (ccgs)
11070
	- The pdfwrite device was missing on the DesqView/X platform.
11071
(dvx-gcc.mak)
11072
	- The System V build procedure was broken.  (unixtail.mak)
11073
	- A Watcom makefile lacked parentheses around a macro name.
11074
(wctail.mak)
11075
	- Some `make' programs drop trailing spaces in macro definitions: we
11076
didn't work around this.  (os2.mak, unixhead.mak, winlib.mak)
11077
 
11078
Adds support for WCVERSION=11.0 in the Watcom makefiles.  (watc.mak,
11079
wccommon.mak)
11080
 
11081
Adds a shell script for removing the 'includes' from makefiles, since a very
11082
few Unix systems don't support this capability.  (catmake)
11083
 
11084
Changes -dNOPROMPT to -dNOPAGEPROMPT, and adds -dNOPROMPT to suppress both
11085
the end-of-page prompt and the executive prompt.  (use.txt, gs_init.ps)
11086
 
11087
Adds definitions of {GL,PS}{SRC,GEN,OBJ}DIR to the top-level makefiles,
11088
removing these definitions from gs.mak.  (*.mak, gs.mak)
11089
 
11090
Adds explicit directories to more makefile rules.  We can now do builds with
11091
source, GL/PS generated files, and GL/PS object files in 5 different
11092
directories!  (*.mak, gsjconf.h)
11093
 
11094
</pre><h3><a name="V5.22_Utilities"></a>Utilities</h3><pre>
11095
 
11096
Adds a user-contributed utility that runs dvips followed by ps2pdf.
11097
(dvipdf, unixinst.mak)
11098
 
11099
</pre><h3><a name="V5.22_Drivers"></a>Drivers</h3><pre>
11100
 
11101
Fixes bugs:
11102
	- A pointer was incorrectly declared const.  (gdevpdfm.c)
11103
	- pdfwrite handled the Title element of ARTICLE pdfmarks
11104
incorrectly.  (gdevpdfm.c)
11105
	- pdfwrite inserted a Dest element in Link annotations even if an A
11106
(Action) key was present.  (gdevpdfm.c)
11107
	- pdfwrite didn't recognize and convert /Article actions in
11108
pdfmarks.  (gdevpdfm.c)
11109
 
11110
Replaces some open-coded accesses to path structure elements with macros, in
11111
anticipation of a representation change.  (gdevpdfd.c)
11112
 
11113
Moves pdfwrite further towards supporting Dict and ACSDict Distiller
11114
parameters.  (gdevpsdf.h, gdevpsdp.c, gdevpsfp.c)
11115
 
11116
Updates a few places for the change in the path API.  (gdevpdfd.c,
11117
gdevvec.c)
11118
 
11119
Adds recognition of named object references to the PDF writer, fixing many
11120
bugs in the named object code in the process.  (gdevpdfx.h, gdevpdfm.c,
11121
gdevpdfo.c)
11122
 
11123
Enhances pswrite to skip fills or strokes of completely empty paths, to
11124
recognize horizontal and vertical lines, and to abbreviate color settings
11125
based on 8-bit fractions.  This requires a NON-BACKWARD-COMPATIBLE CHANGE in
11126
the "vector" device interface (which was, however, clearly identified as
11127
subject to change without notice).  (gdevpsdf.h, gdevvec.h, gdevps.c,
11128
gdevpsdf.c, gdevpx.c, gdevvec.c)
11129
 
11130
</pre><h3><a name="V5.22_Interpreter"></a>Interpreter</h3><pre>
11131
 
11132
Updates a few places for the change in the path API.  (zupath.c)
11133
 
11134
Implements %statementedit properly.  (iscan.h, iscan.c, ziodev.c)
11135
 
11136
Changes the initialization code so that if DELAYBIND is set, .forcedef and
11137
.forceput remain accessible until .bindnow is called.  (gs_init.ps)
11138
 
11139
</pre><h3><a name="V5.22_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
11140
 
11141
Fixes bugs:
11142
	- An empty Differences array, which Acrobat Distiller 3.02 can emit,
11143
caused a rangecheck error.  (pdf_font.ps)
11144
 
11145
</pre><h3><a name="V5.22_Streams"></a>Streams</h3><pre>
11146
 
11147
Fixes bugs:
11148
	- The alternative LZWEncode filter didn't emit a reset code as the
11149
first code, and waited one code too long to emit a reset.  (slzwce.c)
11150
 
11151
Adds some double-inclusion protection.  (scfx.h)
11152
 
11153
</pre><h3><a name="V5.22_Library"></a>Library</h3><pre>
11154
 
11155
Fixes bugs:
11156
	- There was an (incorrect) assignment to a read-only structure
11157
member.  (gximage2.c)
11158
	- A formal parameter list was incorrect if __PROTOTYPES__ wasn't
11159
defined.  (gsroptab.c)
11160
	- Some images didn't get clipped properly when banding.  This was a
11161
fix for 5.03 that somehow didn't make it into 5.10.  (gxclimag.c)
11162
	- When banding, dashed lines could cause an invalid memory access.
11163
This was apparently caused by an error in a fix made in 5.04.  (gsline.c)
11164
	- Images with non-zero data_x could cause an invalid memory access.
11165
(gxiinit.c, gxidata.c)
11166
	- The band list rasterizer didn't initialize the image structure
11167
properly, causing control to go to a random address.  (gxclread.c)
11168
 
11169
Replaces some open-coded accesses to path structure elements with macros, in
11170
anticipation of a representation change.  (gxpath.h, gzpath.h, gspath1.c,
11171
gxfill.c, gxpath2.c, gxstroke.c)
11172
 
11173
Changes the path and clipping path structures so that segments and clipping
11174
lists are stored in separate, reference-counted structures.  This finally
11175
supports reliable freeing of path segments and clipping lists even in the
11176
presence of off-stack gstates, and the ability to store the original
11177
segments of a clipping path, both of which we have wanted for a long time.
11178
Unfortunately, it requires SIGNIFICANT NON-BACKWARD-COMPATIBLE CHANGES TO
11179
THE API FOR PATHS:
11180
    Paths:
11181
	- adds gx_path_alloc_contained;
11182
	- gx_path_init =&gt; gx_path_init_local (or nothing);
11183
	- gx_path_reset =&gt; gx_path_new;
11184
	- removes gx_path_share and gx_path_release;
11185
	- gx_path_assign =&gt; gx_path_assign_{preserve,release};
11186
	- renames gx_path_expand_dashes =&gt; gx_path_add_dash_expansion,
11187
	  gx_path_flatten[_accurate] =&gt; gx_path_add_flattened[_accurate],
11188
	  gx_path_monotonize =&gt; gx_path_add_monotonized;
11189
	- removes the init Boolean from gx_path_copy[_reversed].
11190
    Clipping paths:
11191
	- gx_cpath_init =&gt; gx_cpath_init_local (or nothing);
11192
	- removes gx_cpath_share and gx_cpath_release_segments;
11193
	- gx_cpath_path =&gt; gx_cpath_to_path;
11194
	- removes the mem argument from gx_cpath_from_rectangle.
11195
We believe that we either renamed or changed the argument list of every API
11196
function that was affected in a non-backward-compatible way, so incompatible
11197
clients will get either compilation or linking errors.  (gxpath.h,
11198
gzcpath.h, gzpath.h, gschar.c, gsdps.c, gsdps1.c, gspaint.c, gspath.c,
11199
gspath1.c, gsstate.c, gxacpath.c, gxccache.c, gxclpath.c, gxclread.c,
11200
gxcpath.c, gxfill.c, gxpath.c, gxpath2.c, gxpcmap.c, gxpcopy.c, gxpdash.c,
11201
gxstroke.c)
11202
 
11203
Reimplements view clipping bookkeeping to use reference-counted paths.
11204
(gzstate.h, gsdps.c, gsstate.c)
11205
 
11206
Adds const in a couple more places.  (gxpath2.c)
11207
 
11208
If -Z? is enabled, makes the reference counting machinery check for
11209
reference counts going negative.  (gsrefct.h)
11210
 
11211
Adds the first bit of code for rendering smooth shadings.  The code is
11212
nowhere near usable.  (gsshade.h, gxshade.h, gsshade.c, gxshade.c)
11213
 
11214
Adds BEGIN ... END macros for creating compound statements that are
11215
syntactically equivalent to single statements.  (stdpre.h)
11216
 
11217
</pre>
11218
 
11219
<hr>
11220
 
11221
<h2><a name="Version5.21"></a>Version 5.21 (limited) (1/19/98)</h2>
11222
 
11223
<p>
11224
This is primarily a bug fix fileset for 5.20, with a little new
11225
functionality (pdfwrite image downsampling and more complete pdfmark
11226
processing).
11227
 
11228
<h3><a name="V5.21_Documentation"></a>Documentation</h3><pre>
11229
 
11230
Fixes bugs:
11231
	- The build procedures still referred to tar_cat.  (make.txt)
11232
 
11233
Documents some user-developed patches for using certain kinds of Japanese
11234
fonts with Ghostscript.  (new-user.txt)
11235
 
11236
Notes that on Solaris 2.x systems, it is probably not a good idea to use
11237
Sun's fonts.  (use.txt)
11238
 
11239
Documents -dSTRICT.  (use.txt)
11240
 
11241
</pre><h3><a name="V5.21_Procedures"></a>Procedures</h3><pre>
11242
 
11243
Fixes bugs:
11244
	- The definitions of MAKEFILE in several makefiles was incorrect.
11245
(dvx-gcc.mak, unix-cc.mak, unixansi.mak)
11246
	- The build rules for the gp_*.$(OBJ) files lacked a directory name,
11247
confusing most 'make' programs.  (*.mak)
11248
	- geninit didn't work, because the syntax of psfile_() entries in
11249
gconfig.h had changed.  (geninit.c)
11250
	- Some files were created and then deleted during building,
11251
preventing [gnu]make -j from working.  (lib.mak, int.mak)
11252
 
11253
Adds an explicit directory name to more files in the makefiles.  (jpeg.mak,
11254
lib.mak) Added in this fileset:
11255
	.$(OBJ): jpeg.mak,  {dvx-tail,msvclib,openvms,os2,ugcclib,unixtail,
11256
		watc,watclib,winint,winlib}.mak
11257
	.dev:	jpeg.mak
11258
 
11259
Removes the default suppression of 'const' with gcc.  You must now compile
11260
with gcc 2.7.2.1 or newer, or patch the makefile.  (ugcclib.mak,
11261
unix-gcc.mak)
11262
 
11263
Removes -DPNG_USE_CONST from the command line for compiling libpng, since
11264
this has never actually worked, and is handled in a different way starting
11265
with libpng 0.97.  (gs.mak)
11266
 
11267
Adds a -dSTRICT switch that disables some Ghostscript extensions, to be more
11268
helpful in debugging applications that produce output for Adobe and other
11269
RIPs.  (gs_init.ps, gs_statd.ps)
11270
 
11271
</pre><h3><a name="V5.21_Drivers"></a>Drivers</h3><pre>
11272
 
11273
Fixes bugs:
11274
	- Many occurrences of 'const' were missing or incorrect.
11275
(gdevpdfd.c, gdevpdfi.c, gdevpdfo.c, gdevpdft.c)
11276
	- pdfmark processing was broken by changes introduced in 5.20.
11277
(gs_pdfwr.ps)
11278
	- pdfwrite didn't convert /Color =&gt; /C or /Title =&gt; /T in ANN and
11279
LNK pdfmarks.  (gdevpdfm.c)
11280
	- pdfwrite didn't convert /Dest =&gt; /D or /File =&gt; /F in the Action
11281
dictionary of ANN and LNK pdfmarks.  (gdevpdfm.c)
11282
	- pdfwrite didn't convert a /Launch annotation to an Action with a
11283
dictionary.  (gdevpdfm.c)
11284
	- pdfwrite didn't convert \n in annotation Contents strings to \r.
11285
(gdevpdfm.c)
11286
	- jstrm.state was used before being set.  (gdevjpeg.c)
11287
	- The SVGA devices were not identified as page devices.
11288
(gdevsvga.c)
11289
	- The SPARCPrinter driver returned the address of a local buffer
11290
containing an error string.  (gdevsppr.c)
11291
	- pdfwrite no longer compressed character bitmaps.  (bug introduced
11292
in 5.20) (gdevpdfi.c)
11293
	- pdfwrite didn't recognize _objdef syntax everywhere.  (gdevpdfx.h,
11294
gdevpdfm.c, gdevpdfo.c)
11295
	- pdfwrite didn't recognize and convert Launch and GoToR OUT
11296
pdfmarks.  (gdevpdfm.c)
11297
	- pdfwrite used a /Dest key rather than a /P key for the page number
11298
in articles.  (gdevpdfx.h, gdevpdfm.c)
11299
	- pdfwrite didn't save and write the /I dictionary for articles.
11300
(gdevpdfx.h, gsstruct.h, gdevpdf.c, gdevpdfm.c)
11301
 
11302
Implements a parameter list "reader" that prints the parameter values on a
11303
stream in PS/PDF syntax.  (We need something like this for printing filter
11304
parameters.)  (gdevpsdf.h, gdevpdf.c, gdevpsdf.c)
11305
 
11306
Implements a write stream that just keeps track of the position.  We use
11307
this to determine how much space to allocate for data we're going to save.
11308
(gdevpsdf.h, gdevpsdf.c)
11309
 
11310
Implements image downsampling, but not anti-aliasing, for the PDF writer.
11311
(gdevpsdf.h, gdevpsds.h, gdevpsdi.c, gdevpsds.c)
11312
 
11313
</pre><h3><a name="V5.21_Fonts"></a>Fonts</h3><pre>
11314
 
11315
Adds Frutiger to the built-in list of sans-serif fonts.  (gs_fonts.ps)
11316
 
11317
</pre><h3><a name="V5.21_Interpreter"></a>Interpreter</h3><pre>
11318
 
11319
Fixes bugs:
11320
	- Many occurrences of 'const' were missing.  (gsargs.c, ialloc.c,
11321
zdpnext.c, zfunc3.c, zshade.c)
11322
	- Some byte * =&gt; char * casts were missing.  (imainarg.c)
11323
	- The stack limit check in .eqproc was wrong.  (zmisc3.c)
11324
	- The paper sizes a4small and lettersmall weren't implemented.
11325
(gs_statd.ps)
11326
	- setuserparams signalled errors on 64-bit systems.  (zusparam.c)
11327
 
11328
Changes .image2 to track the change in the library.  (zdps.c)
11329
 
11330
Some improvements were made to the (still not entirely functional) Type 32
11331
font code.  (zchar32.c)
11332
 
11333
Updates some filters to use the new procedure for transmitting collections
11334
of parameters.  (zfdecode.c)
11335
 
11336
Adds ISO paper sizes C0 through C6.  (gs_statd.ps)
11337
 
11338
Trims down the list of #includes in iconf.c.  (iconf.c)
11339
 
11340
</pre><h3><a name="V5.21_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
11341
 
11342
Fixes bugs:
11343
	- CalGray color spaces with a Gamma value caused an error.
11344
(gs_pdf.ps)
11345
 
11346
</pre><h3><a name="V5.21_Library"></a>Library</h3><pre>
11347
 
11348
Fixes bugs:
11349
	- There was a 'const' conflict in the code for handling ImageType 2
11350
images.  Fixing this properly required a small change in the ImageType 2
11351
structure.  (gsiparm2.h, gximage2.c)
11352
	- Many occurrences of 'const' were missing.  (gsfunc3.h, gstrap.h,
11353
gxgetbit.h, gdevdgbr.c, gstrap.c, gxclist.c, gxclread.c)
11354
	- A couple of enumerations had trailing commas.  (gsshade.h,
11355
gxbitfmt.h)
11356
	- The gcst parameter was omitted in the non-ANSI version of the
11357
ENUM_PTRS_BEGIN_PROC macro.  (gsstruct.h)
11358
	- gcc missed a private / non-private discrepancy.  (gxpcmap.c)
11359
	- An uninitialized variable was used by mistake
11360
(copy_params.options).  (gdevdgbr.c)
11361
	- The last statement of a procedure was unreachable.  (gxclpath.c)
11362
	- If a Type 2 font was transformed so that hints were not being
11363
used, hintmask and cntrmask didn't compute the number of following bytes
11364
correctly.  (gxtype1.h, gstype2.c, gxtype1.c)
11365
 
11366
Factors out some common code in gxclip2.c into macros.  (gxclip2.c)
11367
 
11368
Starts to reimplement RasterOp using the compositing framework.  (gsropc.h,
11369
gxropc.h, gsropc.c)  ****** IN PROGRESS ******
11370
 
11371
Adds an equality-testing procedure for device colors.  This is used both for
11372
color images (which previously did this adhoc) and for RasterOp compositing.
11373
(gxdcolor.h, gximage.h, gxcht.c, gxdcolor.c, gxht.c, gspcolor.c)
11374
 
11375
Implements hintmask (but not cntrmask) for Type 2 CharString fonts.  I don't
11376
know any reasonable way to test whether it's working, though.  (gxtype1.h,
11377
gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
11378
 
11379
Adds a more convenient interface for reading and setting sets of parameters.
11380
(gsparam.h, gsparam.c)
11381
 
11382
Pulls the decision as to whether to halftone for a given device out into a
11383
macro.  Eventually we will do something more sophisticated about this.
11384
(gxdevice.h, gxclist.c, gxcmap.c)
11385
 
11386
Breaks apart a macro in anticipation of future usage.  (gsrefct.h)
11387
 
11388
</pre>
11389
 
11390
<hr>
11391
 
11392
<h2><a name="Version5.20"></a>Version 5.20 (limited) (1/8/98)</h2>
11393
 
11394
<p>
11395
This fileset provides enough of the Display PostScript capabilities to start
11396
running real programs.  It also adds the first few LanguageLevel 3 features
11397
(none of which have been tested) and reorganizes the makefile structure
11398
somewhat.  There are many internal changes since 5.10, some of them still in
11399
progress, so we expect more problems than usual.
11400
 
11401
<p>
11402
This fileset is being provided for testing in two different configurations:
11403
a full release, and a DPS-only package.  The latter will be released with
11404
the GPL when it is reasonably complete and reliable.
11405
 
11406
<h3><a name="V5.20_Documentation"></a>Documentation</h3><pre>
11407
 
11408
Fixes bugs:
11409
	- TrueType fonts on GS_FONTPATH weren't recognized.  (use.txt)
11410
	- The argument list for gstate was incorrect.  (zdevice2.c)
11411
	- There were a couple of minor errors in the e-stack documentation.
11412
(estack.h)
11413
	- fonts.txt had several errors regarding compiled fonts.
11414
(fonts.txt)
11415
	- An out-of-date Aladdin address still appeared in documentation.
11416
(new-user.txt)
11417
 
11418
Updates make.txt to reflect the changes in makefile structure.  (make.txt)
11419
 
11420
Notes the addition of -Z' and -Z".  (use.txt)
11421
 
11422
Documents the new begin_typed_image, get_bits_rectangle,
11423
map_color_rgb_alpha, and create_compositor driver procedures.  (drivers.txt)
11424
 
11425
Moves documentation for all releases before 5.0 to history4.txt.  (NEWS,
11426
history4.txt)
11427
 
11428
Documents the addition of SHARE_JPEGLIB.  (make.txt)
11429
 
11430
Removes the author's name and e-mail address from the ps2ascii man page, at
11431
his request.  (ps2ascii.1)
11432
 
11433
Documents the addition of (some) image compression facilities to ps2pdf /
11434
pdfwrite.  (ps2pdf.txt)
11435
 
11436
Documents the new -dNOINTERPOLATE and -F&lt;n&gt; switches.  (use.txt)
11437
 
11438
Adds documentation for a user-contributed port to the SMS/QDOS operating
11439
system.  (new-user.txt)
11440
 
11441
Removes documentation for BGI, which is no longer supported.  (use.txt)
11442
 
11443
Documents the use of the Registry and the GS_DLL environment variable on
11444
Windows platforms.  (install.txt)
11445
 
11446
</pre><h3><a name="V5.20_Procedures"></a>Procedures</h3><pre>
11447
 
11448
Fixes bugs:
11449
	- The OpenVMS makefile referred to EXTEND_NAME rather than
11450
EXTEND_NAMES.  (openvms.mak)
11451
	- A typo caused a spurious error message from lpr.  (unix-lpr.sh)
11452
	- The PDF writer didn't include a needed dependency on zlib
11453
compression.  (devs.mak)
11454
	- The rule for the OS/2 printer device was wrong.  (devs.mak)
11455
	- The -migrate switch was incorrectly removed from the command line
11456
for pre-4.0 Digital Unix.  (make.txt)
11457
	- The -r switch was ignored with -dNODISPLAY.  (gs_init.ps)
11458
 
11459
Adds targets for Type 32 fonts (type32.dev) and PostScript LanguageLevel 3
11460
(psl3.dev, psl3core.dev, psl3read.dev).  (gs.mak, int.mak, lib.mak)
11461
 
11462
Changes the documented feature names for PostScript Level 1 and 2
11463
interpreters from level1/2 to psl1/2.  The old names are still recognized
11464
for backward compatibility.  (gs.mak, int.mak, *.mak)
11465
 
11466
Removes support for building with DCL under VMS.  Building under VMS now
11467
requires some version of make, preferably GNU make.  THIS IS A
11468
NON-BACKWARD-COMPATIBLE CHANGE, but there was plenty of lead time for users
11469
(it was announced in 5.01, 6/22/97).  (vms*.mak[deleted])
11470
 
11471
Starts to add an explicit directory name to every file in the makefiles, to
11472
allow building multiple object versions (e.g., debug, profile, product) or
11473
cross-building for multiple platforms in separate directories without any
11474
makefile editing.  (*.mak) Done so far:
11475
(done)	_h=	devs.mak gs.mak int.mak jpeg.mak lib.mak
11476
(done)	.h	devs.mak gs.mak int.mak lib.mak zlib.mak
11477
		openvms.mak os2.mak ugcclib.mak unix-end.mak
11478
		unixtail.mak wctail.mak winint.mak winlib.mak
11479
	.$(OBJ): devs.mak int.mak (except ccfonts)
11480
		lib.mak (except special compilations)
11481
		libpng.mak zlib.mak
11482
	.dev:	libpng.mak zlib.mak
11483
 
11484
Gets rid of tar_cat.  Building on Unix platforms now requires that make
11485
recognize the include directive.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE:
11486
rather than editing the *head.mak files, users should now edit the unix*.mak
11487
or dvx*.mak files (which they previously were instructed NOT to do).  Aside
11488
from this, we think the change won't actually affect anyone, since most Unix
11489
make programs (include GNU make) do recognize this directive.  (*.mak,
11490
ansihead.mak[deleted], cc-head.mak[deleted], gcc-head.mak[deleted],
11491
dgc-head.mak[deleted], tar_*cat[deleted], dvx-gcc.mak, unixansi.mak,
11492
unix-cc.mak, unix-gcc.mak)
11493
 
11494
Includes the basic context machinery in every PostScript interpreter
11495
configuration.  (int.mak)
11496
 
11497
Removes the division between 'low-level' and 'high-level' band list
11498
facilities: we once thought we might make the latter optional, but this no
11499
longer seems useful.  (lib.mak)
11500
 
11501
Introduces a new category of devices, identified to genconf as -dev2 and
11502
created with SETDEV2 and SETPDEV2.  For the moment, these are the same as
11503
existing devices except that their static instance is const, but we plan to
11504
make them quite different in the future: don't attempt to create any.
11505
(devs.mak, gs.mak, genconf.c, gconf.c)
11506
 
11507
Removes the obsolete -includef resource from genconf.  (genconf.c)
11508
 
11509
Removes support for IJG JPEG library v5* from the makefile, since we no
11510
longer support these library versions.  (jpeg.mak, lib.mak,
11511
gsjerror.h[deleted], gsjpglib.h[deleted], gsjerror.c[deleted])
11512
 
11513
Makes the JPEG library use floating point if it is fast.  (gsjmorec.h)
11514
 
11515
Adds a SHARE_JPEG option to the makefiles, with the necessary warning about
11516
possible incompatibilities.  (*.mak)
11517
 
11518
Replaces the CCC macro in the makefiles with CC_, the various CC* macros
11519
with CC_* (except for CCA2K and CCAUX), and the O macro with O_; removes the
11520
'begin' target and the CCBEGIN macro.  THIS IS A NON-BACKWARD-COMPATIBLE
11521
CHANGE, required for the new arrangement of files into directories.  (*.mak)
11522
 
11523
Replaces all occurrences of -Idir1 -Idir2 ... -Idirn in platform-generic
11524
makefiles with $(I_)dir1 $(II)dir2 ... $(_I)dirn, and defines these macros
11525
in platform-specific makefiles, in order to accommodate OpenVMS command
11526
syntax.  (*.mak)
11527
 
11528
Adds -fno-common to the default gcc compilation and linking switches, to
11529
improve checking for doubly-defined externs.  (unix-gcc.mak)
11530
 
11531
Adds a -dNOINTERPOLATE switch to turn off image interpolation.  (gs_init.ps)
11532
 
11533
Adds a -F&lt;file&gt; switch that runs files through the run_string interface with
11534
an 1-byte buffer.  (imainarg.c)
11535
 
11536
Allows specifying the name of the gconfig.h file with -DGCONFIG_H= in the
11537
compilation command line, to support certain multi-configuration build
11538
procedures.  (int.mak, lib.mak, gconf.h, gconf.c, gscdef.c, iconf.c)
11539
 
11540
Splits off the installation targets from unix-end.mak.  (unix-end.mak,
11541
unixinst.mak, unix*.mak, ugcclib.mak)
11542
 
11543
</pre><h3><a name="V5.20_Utilities"></a>Utilities</h3><pre>
11544
 
11545
Fixes bugs:
11546
	- A case label was misplaced.  (No effect on normal operation.)
11547
(genconf.c)
11548
	- ps2ascii had some Encoding-related problems, and a serious bug
11549
causing the stack to grow indefinitely.  (ps2ascii.ps)
11550
 
11551
Adds a new font2pcl.ps utility, for converting outline fonts to bitmapped
11552
PCL fonts.  (font2pcl.ps)
11553
 
11554
At the request of a user, modifies ansi2knr to read stdin if no input file
11555
is supplied, and to accept an optional --filename switch to set the file
11556
name in the #line directive.  Also makes ansi2knr write the usage message on
11557
stderr rather than stdout.  (ansi2knr.c)
11558
 
11559
Adds a user-contributed Perl script that fixes compatibility problems
11560
between MS Word output and Ghostview 1.5.  (fixmswrd.pl)
11561
 
11562
Adds a new test file that produces some pretty color output.  (vasarely.ps,
11563
unix-end.mak)
11564
 
11565
Adds a user-contributed utility for producing AFM files from PFA/PFB and
11566
optionally PFM files.  (pf2afm.bat, pf2afm.ps)
11567
 
11568
</pre><h3><a name="V5.20_Drivers"></a>Drivers</h3><pre>
11569
 
11570
Fixes bugs:
11571
	- Some 'static' declarations were missing (gcc lossage).  (gdevht.c,
11572
gdevmgr.c, gdevpcfb.c, gdevrrgb.c)
11573
	- Some 'char *' should have been 'unsigned char *'.  (gdevccr.c)
11574
	- The PDF writer represented non-rectangular clipping paths in a way
11575
that could cause Acrobat to produce incorrect output.  (The fix relies on
11576
the new clipping path enumeration facility.)  (gdevpdfd.c)
11577
	- get_params for the X device didn't read the WINDOWID and
11578
.IsPageDevice parameters.  (gdevx.c)
11579
	- A superseded driver was still in the distribution.
11580
(gdevnp6.c[deleted])
11581
	- The PDF writer's default parameters didn't quite match the default
11582
parameters of Adobe Acrobat(TM).  (gdevpsdf.h)
11583
	- A cast from const byte * to const char * was omitted.
11584
(gdevpdft.c)
11585
	- x_map_color_rgb returned incorrect values for values in the dither
11586
cube/ramp.  (gdevx.c)
11587
 
11588
Adds user-contributed drivers for:
11589
	- the Brother HL 720/730 laser printer (gdevhl7x.c);
11590
	- the Cirrus Logic CL-GD54xx SuperVGA chipset (in gdevsvga.c).
11591
 
11592
Adds stubs or dummy implementations for the new Acrobat Distiller 3.0
11593
pdfmark features (BP/EP/SP, _objdef/OBJ, PUT/PUTINTERVAL/CLOSE).  Features
11594
not yet implemented:
11595
	- Predefining Catalog and DocInfo.
11596
	- Writing out added Catalog and Info keys.
11597
	- Special handling for Page#, Prev/This/NextPage.
11598
	- Writing out added keys in Page objects.
11599
	- Defining objects for ANN, DEST, LNK, PS.
11600
	- Writing out added keys for ANN, BP, DEST, LNK, PS.
11601
	- Adding information to streams (PUT, CLOSE).
11602
	- Writing out streams.
11603
(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c)
11604
 
11605
Removes the DoThumbnails distiller parameter, which Acrobat Distiller 3.0 no
11606
longer supports.  (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
11607
 
11608
Starts to eliminate or segregate writable globals that point to
11609
heap-allocated data, as in the interpreter (see below); specifically, makes
11610
all device and xfont procedure structures const in devices that Aladdin
11611
maintains.  Note that this involves a NON-BACKWARD-COMPATIBLE CHANGE in the
11612
get_xfont_procs device procedure (to add const to the return type); this
11613
only affects the 3 implementations of xfonts.  (gdevprn.h, gdevdjet.c,
11614
gdevm1.c, gdevpccm.c, gdevpdf.c, gdevpdfm.c, gdevpdft.c, gdevps.c,
11615
gdevpsdf.c, gdevpx.c; gxdevice.h, gxxfont.h, gdevbgi.c, gdevbit.c,
11616
gdevbmp.c, gdevdflt.c, gdevdjet.c, gdevlj56.c, gdevmiff.c, gdevmsxf.c,
11617
gdevnfwd.c, gdevpbm.c, gdevpcfb.c, gdevpdf.c, gdevpng.c, gdevprn.c,
11618
gdevps.c, gdevpx.c, gdevs3ga.c, gdevsvga.c, gdevtfax.c, gdevtfnx.c,
11619
gdevvglb.c, gdevwddb.c, gdevwdib.c, gdevwpr2.c, gdevwprn.c, gdevx.c,
11620
gdevxalt.c, gdevxxf.c, gxccman.c)
11621
 
11622
Makes the statically allocated device templates const in some devices, using
11623
the new -dev2 device resource type.  NOTE: the meaning of -dev2 is subject
11624
to change without notice in future releases.  (gdevdjet.c, gdevpdf.c,
11625
gdevps.c, gdevpx.c, gdevvglb.c)
11626
 
11627
Adds a new begin_typed_image driver procedure which is called for all types
11628
of images, not just ImageType 1.  The default implementation calls
11629
begin_image if the ImageType is 1.  (gdevmem.h, gdevprn.h, gsiparam.h,
11630
gxdevice.h, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
11631
gxacpath.c, gxclimag.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c)
11632
 
11633
Adds a new get_bits_rectangle driver procedure which allows reading back an
11634
arbitrary rectangle of bits from the device, not just a single full scan
11635
line.  The default implementation calls get_bits, being careful to avoid a
11636
recursion loop; the default implementation of get_bits calls
11637
get_bits_rectangle similarly.  This procedure has a lot of flexibility,
11638
almost all of which is ultimately provided by the implementation in memory
11639
devices.  (gdevmem.h, gsbitops.h, gxcindex.h, gxdevice.h, gdevbbox.c,
11640
gdevdflt.c, gdevdgbr.c, gdevht.c, gdevm*.c, gdevmem.c, gdevmpla.c,
11641
gdevnfwd.c, gxbitfmt.h, gxclip2.c, gxclist.c, gxclread.c, gxcpath.c,
11642
gxgetbit.h)
11643
 
11644
Removes support for the BGI (Borland Graphics Interface) device, since we no
11645
longer support the Borland compilers for MS-DOS.  (devs.mak, dvx-head.mak,
11646
openvms.mak, unixhead.mak, gdevbgi.c[deleted])
11647
 
11648
Speeds up x_map_color_rgb by avoiding server access in most cases.
11649
(gdevx.h, gdevx.c, gdevxini.c)
11650
 
11651
Implements get_bits_rectangle in the X driver in place of get_bits.
11652
(gdevx.c, gdevxalt.c)
11653
 
11654
Implements begin_typed_image for ImageType 2 images in the X driver, as an
11655
example of how a driver can implement this function itself.  (gdevx.c)
11656
 
11657
Adds a call on the DCTEncode set_defaults procedure, which is now required
11658
(see under Streams below).  (gdevjpeg.c)
11659
 
11660
Implements a substantial part of the Distiller image compression machinery.
11661
See ps2pdf.txt for details.  (gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c,
11662
gdevps.c, gdevpsdf.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
11663
 
11664
Adds a map_color_rgb_alpha driver procedure, complementing
11665
map_rgb_alpha_color.  (gdevmem.h, gdevprn.h, gxdevice.h,
11666
gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c, gdevprn.c,
11667
gxclip2.c, gxclist.c, gxcmap.c, gxcpath.c)
11668
 
11669
Splits off gxdevcli.h (client definitions) from gxdevice.h, which had gotten
11670
very large.  This doesn't do much good yet in terms of reducing dependencies
11671
and compilation time, because every client still includes gxdevice.h, but
11672
it's the raw material for doing so in the future.  (gxdevcli.h, gxdevice.h)
11673
 
11674
Adds alpha tracking to the command list.  (gxclpath.h, gxclimag.c,
11675
gxclpath.c, gxclread.c)
11676
 
11677
Changes the 'show' pseudo-parameter for the PDF writer so that it takes
11678
multiple additional parameters instead of a dictionary.  This greatly
11679
reduces garbage collection overhead.  (gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c,
11680
gdevpdft.c)
11681
 
11682
Adds a create_compositor driver call for handling compositing.  (gdevbbox.h,
11683
gdevmem.h, gdevprn.h, gsdevice.h, gxdevcli.h, gxdevice.h, gdevbbox.c,
11684
gdevdflt.c, gdevht.c, gdevnfwd.c, gsdevice.c, gxclimag.c, gxclip2.c,
11685
gxclist.c, gxcpath.c, gxpcmap.c)
11686
 
11687
Updates drivers to account for the more careful handling of file name
11688
length.  (gdevpdfx.h, gdevwprn.c)
11689
 
11690
Adds a user-contributed enhancement to make the Epson dot matrix driver work
11691
at 180x60dpi and 240x180dpi for 24 pin printers.  (gdevepsn.c)
11692
 
11693
</pre><h3><a name="V5.20_Platforms"></a>Platforms</h3><pre>
11694
 
11695
Fixes bugs:
11696
	- The Windows platform didn't put stdin into binary mode.
11697
(dwmainc.cpp)
11698
 
11699
Removes all remaining uses of gs_malloc and gs_free in platform-specific
11700
code.  (gp_dosfb.c, gp_vms.c)
11701
 
11702
Adds a platform-specific gp_getenv call, to allow the Windows implementation
11703
to consult the Registry.  (gp.h, gpgetenv.h, gp_getnv.c, gp_wgetv.c, *.mak,
11704
gp_win32.c)
11705
 
11706
Separates out the declaration of popen and pclose, which may be declared
11707
correctly in stdio.h, incorrectly in stdio.h, or not at all, depending on
11708
the platform.  (lib.mak, unixtail.mak, pipe_.h, gdevpipe.c, gp_os2.c,
11709
gp_os9.c, gp_unix.c)
11710
 
11711
Tweaks the platform-workaround header file conditionals a little more.
11712
(malloc_.h, memory_.h).
11713
 
11714
Makes the Windows DLL check the GS_DLL environment/registry variable for the
11715
location of the DLL.  (dwdll.cpp)
11716
 
11717
Defines the maximum length for the file name returned by
11718
gp_open_scratch_file, and possibly by gp_open_printer.  (gp.h, gp_*.c)
11719
 
11720
</pre><h3><a name="V5.20_Fonts"></a>Fonts</h3><pre>
11721
 
11722
Fixes bugs:
11723
	- A 'flush' was missing from a debugging message.  (gs_fonts.ps)
11724
	- Type 2 fonts didn't always have a PaintType entry.  (gs_cff.ps)
11725
	- CIDFontType 0 fonts were broken, probably because of a recently
11726
added validity test in the C code.  (gs_cidfn.ps)
11727
	- Font types without an Encoding caused an error (in .completefont).
11728
(gs_fonts.ps)
11729
	- composefont required the elements of the font array to be actual
11730
fonts, rather than allowing font names.  (gs_cidfn.ps)
11731
	- composefont required that all elements of the font array have
11732
CIDSystemInfo dictionaries.  (Adobe has said that their interpreters don't
11733
check for this in some cases, but it's a bug.  Unfortunately, by now it's an
11734
established one.)  (zfcmap.c)
11735
 
11736
Adds .dir to the list of file suffixes known not to be fonts.  (gs_fonts.ps)
11737
 
11738
</pre><h3><a name="V5.20_Interpreter"></a>Interpreter</h3><pre>
11739
 
11740
Fixes bugs:
11741
	- A Type 2 font that provided fewer CharStrings than charset
11742
elements caused an error.  (gs_cff.ps)
11743
	- If a context was joined before it terminated, its stack was never
11744
copied to the joining context.  (zcontext.c)
11745
	- Freeing a context didn't free most of its substructures.
11746
(icontext.h, istack.h, icontext.c, interp.c, istack.c, zcontext.c)
11747
	- save and restore didn't save and restore the user parameters.
11748
(gs_lev2.ps, zvmem2.c)
11749
	- %stdin and %stdout weren't defined per-context.  (files.h,
11750
icontext.h, icontext.c, ziodev.c)
11751
	- Switching contexts didn't clean up the stacks.  (The current way
11752
we do this is very inefficient: we should use a special null for filling the
11753
untouched area, so we can use it to detect the high water mark.)
11754
(icontext.c)
11755
	- A cast from const to non-const was missing.  (zdpnext.c)
11756
	- User parameters weren't managed per-context.  (The current way we
11757
do this is inefficient.)  (gs_dps.ps, gs_init.ps, gs_lev2.ps, isave.h,
11758
icontext.c, iinit.c, isave.c, zcontext.c, zusparam.c)
11759
	- Some operand checks weren't wrapped in do { ... } while(0),
11760
possibly leading to incorrect parsing of 'if's.  (opcheck.h)
11761
	- If a context terminated with unmatched saves, the restores weren't
11762
executed.  (isave.h, isave.c, zcontext.c)
11763
	- If two or more contexts shared the same global VM, the outermost
11764
restore (which in this case saves only local VM) checked for invalidrestore
11765
incorrectly.  (isave.c)
11766
	- resourceforall didn't remove its own temporary values from the
11767
operand stack when calling the procedure.  (gs_res.ps)
11768
	- resourceforall returned local instances even when currentglobal
11769
was true.  (gs_res.ps)
11770
	- If a context had unmatched saves, other contexts sharing the same
11771
local VM weren't blocked from running.  (zcontext.c)
11772
	- The NeXT compositing operations (Copy, etc.) weren't defined in
11773
systemdict.  (gs_dpnxt.ps)
11774
	- In the case of a stack overflow, some garbage could get left on
11775
the stack.  (istack.c)
11776
	- Stack overflow was reported prematurely -- typically when the
11777
stack depth had reached half the specified limit.  (istack.c)
11778
	- Freed ref arrays weren't filled with nulls, which could confuse
11779
the garbage collector later.  (ialloc.c)
11780
	- Certain stack overflow conditions could put a stack into an
11781
anomalous state that confused the garbage collector.  (istack.c)
11782
	- The maximum stack size could not be set to a value smaller than
11783
the current allocated space, but the minimum value should be the number of
11784
entries actually in use.  (istack.c)
11785
	- If .buildfont* had to add any elements to the font dictionary, a
11786
temporary pointer to the Encoding, FDepVector, or sfnts could become
11787
invalid, causing crashes or confusion.  (zfont0.c, zfont2.c, zfont42.c)
11788
 
11789
Changes exit, stop, and .stop so that if there is no matching dynamically
11790
enclosing context (loop or stopped), the effect is a quit, like the Adobe
11791
interpreters, and not an invalidexit.  (zcontrol.c)
11792
 
11793
Adds support for ImageTypes other than 1.  (gs_init.ps, gs_lev2.ps,
11794
gs_res.ps, zimage2.c)
11795
 
11796
Adds support for LanguageLevel 3 features:
11797
	- Idiom recognition in 'bind'.  (gs_init.ps, gs_dps.ps, gs_lev2.ps,
11798
gs_ll3.ps, zmisc3.c)
11799
	- HalftoneTypes 6, 10, and 16.  (gs_ll3.ps)
11800
	- FunctionType resource category.  (gs_ll3.ps)
11801
	- FunctionType 2 and 3 Functions.  (zfunc3.c)
11802
	- PatternType 2 and smooth shading (structures and API only, no
11803
algorithms).  (gs_init.ps, gs_ll3.ps, gs_res.ps, zshade.c)
11804
	- In-RIP trapping (structures and API only, no algorithms).
11805
(gs_ll3.ps, ztrap.c)
11806
	- ImageType 3 and 4 (masked images) (structures and parsing only, no
11807
algorithms). (gs_ll3.ps, gs_res.ps, iimage2.h, zimage.c, zimage2.c,
11808
zimage3.c)
11809
	- DevicePixel color space.  (gs_lev2.ps, zcolor2.c, zcspixel.c)
11810
	- DeviceN color space.  (gs_lev2.ps, igstate.h, zcsdevn.c)
11811
 
11812
Adds support for Type 32 fonts.  (gs_cidfn.ps, gs_init.ps, gs_typ32.ps,
11813
zchar32.c, zfont32.c)
11814
 
11815
Adds debugging printout to the CFF loader.  (gs_cff.ps)
11816
 
11817
Removes support for _ds pointers referencing the stacks, since we no longer
11818
support 16-bit implementations.  (iref.h, istack.h, interp.c, ireclaim.c,
11819
istack.c)
11820
 
11821
Removes all #ifdef DPNEXT conditionalization.  (We had intended to use this
11822
to delimit blocks of code to be released with the GPL, but we're now
11823
planning to release a much larger number of files.)  (igstate.h, interp.h,
11824
istruct.h, interp.c, zgstate.c)
11825
 
11826
Allows user parameters to be implemented partly in PostScript code, since
11827
this is required for some LanguageLevel 3 features (currently only
11828
IdiomRecognition).  (gs_lev2.ps)
11829
 
11830
Removes most of the references to a global process scheduler.  Completing
11831
this will require passing an interpreter state structure to all operators in
11832
place of the operand stack pointer, which we aren't prepared to contemplate
11833
yet.  (zcontext.c)
11834
 
11835
Adds tracing for context operations, -Z' and -Z".  (zcontext.c)
11836
 
11837
Changes def so that it doesn't have a special exception for storing
11838
references to local objects into systemdict or its subsidiary dictionaries
11839
during initialization: such stores now must use .forceput (or .forcedef,
11840
defined in gs_init.ps using .forceput); changes .forceput to allow storing a
11841
local reference into any global dictionary, not only systemdict, if the save
11842
level is 0.  (gs_dps1.ps, gs_init.ps, gs_lev2.ps, gs_pdfwr.ps, gs_res.ps,
11843
gs_statd.ps, zdict.c)
11844
 
11845
Moves all of the initialization of internaldict to PostScript code.
11846
(gs_init.ps, iinit.c, zcontrol.c)
11847
 
11848
Moves the JobName user parameter from C to PostScript code.  (gs_lev2.ps,
11849
zusparam.c)
11850
 
11851
Adds to every dictionary a pointer to the allocator that created it.  This
11852
allows us to create and grow dictionaries without having to reference any
11853
global variables.  (idict.h, idict.c, iinit.c)
11854
 
11855
Implements the localfork operator, which creates contexts with private local
11856
VM.  (gs_dps.ps, gs_init.ps, dstack.h, gsalloc.h, ialloc.c, icontext.c,
11857
iinit.c, interp.c, zcontext.c)
11858
 
11859
Systematizes reliable access to variables in systemdict and userdict.
11860
(gs_dps1.ps, gs_dps2.ps, gs_fonts.ps, gs_init.ps, gs_lev2.ps, gs_statd.ps,
11861
gs_type1.ps)
11862
 
11863
Starts to eliminate or segregate writable globals that point to
11864
heap-allocated data.  (Writable globals containing procedures,
11865
run-time-settable switches, pointers to static data, or non-pointer values
11866
that are initialized once and idempotently are OK.)  (iconf.c, iinit.c,
11867
imain.c, imainarg.c, interp.c, zfont1.c, zht2.c, ziodev.c, ztype.c,
11868
zupath.c, zusparam.c)
11869
 
11870
Adds support for ImageType 2 (device source) images.  (gs_dps.ps, zdps.c)
11871
 
11872
Adds begin_typed_image to internal device procedure vectors.  (zupath.c)
11873
 
11874
Increases the maximum stack sizes to match the Adobe implementation more
11875
closely.  (gs_init.ps)
11876
 
11877
Adds a file_is_invalid macro to work around a bug in the Borland 5.0
11878
compiler.  (files.h, ziodev.c, zvmem.c)
11879
 
11880
Changes the character cache to be allocated in the C heap rather than global
11881
VM.  This is required because cache chunks are now allocated from the same
11882
allocator as the cache.  (zfont.c)
11883
 
11884
Implements sizeimage and readimage, including a new .getbitsrect operator.
11885
(gs_dpnxt.ps, gs_init.ps, zdevice.c, zdpnext.c)
11886
 
11887
Resets the maximum stack sizes earlier in initialization.  (gs_init.ps)
11888
 
11889
Tweaks the default CRD slightly (syntactically, not the content).
11890
(gs_lev2.ps)
11891
 
11892
Adds support for PatternTypes other than 1.  (gs_init.ps, gs_lev2.ps,
11893
gs_res.ps, zpcolor.c)
11894
 
11895
Adds a pointer to the C heap allocator to the gs_main_instance structure,
11896
working towards the goal of removing all references to gs_memory_default.
11897
(iminst.h)
11898
 
11899
Removes all remaining uses of gs_malloc and gs_free from the interpreter.
11900
(igc.h, igc.c, imain.c, zfdctd.c, zfdcte.c)
11901
 
11902
Adds an explicit #include for all remaining uses of gs_memory_default in the
11903
interpreter.  (zfdctd.c, zfdcte.c, zvmem.c)
11904
 
11905
Adds a map_color_rgb_alpha driver procedure, complementing
11906
map_rgb_alpha_color.  (zupath.c)
11907
 
11908
Removes the obsolete writeppmfile operator.  (zwppm.c[deleted])
11909
 
11910
Updates the implementation of the image operators to match the change from
11911
HasAlpha to Alpha in the image definition structure.  (iimage.h, zcolor1.c,
11912
zimage.c)
11913
 
11914
Reimplements upath in C code, since UnpaintedPath requires it.  (zupath.c)
11915
 
11916
Updates interpreter code for the change in the GC interface. (imemory.h,
11917
istruct.h, icontext.c, igc.c, igcref.c, igcstr.c, ilocate.c, iname.c,
11918
isave.c, iscan.c, istack.c, zfproc.c)
11919
 
11920
Implements the compositing operators.  (zdpnext.c, zdps.c, zupath.c)
11921
 
11922
Changes some matrix operators to pass unpacked matrices on the stack.
11923
(zmatrix.c)
11924
 
11925
Moves the alpha-related operators to where they belong.  (zcolor.c,
11926
zdpnext.c)
11927
 
11928
Changes all calls on getenv to gp_getenv.  (imainarg.c, zmisc.c)
11929
 
11930
</pre><h3><a name="V5.20_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
11931
 
11932
Fixes bugs:
11933
	- PostScript pass-throughs caused an error.  They are now always
11934
executed; probably we should offer the option of not executing them, for
11935
closer compatibility with Acrobat.  (pdf_draw.ps, pdf_main.ps)
11936
	- Font resources, unlike all other types of resources, couldn't be
11937
inherited from an ancestor Page(s) object.  (pdf_font.ps)
11938
	- Resources appearing only in Form or Pattern dictionaries weren't
11939
recognized as being present.  (pdf_base.ps, pdf_draw.ps, pdf_main.ps)
11940
 
11941
Moves closer to supporting Type 0 (and CID) fonts.  (pdf_font.ps)
11942
 
11943
</pre><h3><a name="V5.20_Streams"></a>Streams</h3><pre>
11944
 
11945
Fixes bugs:
11946
	- If the image was very narrow or very shallow, the interpolated
11947
image scaling stream could make an invalid memory reference.  (siscale.c)
11948
 
11949
Removes the last few references to gs_malloc and gs_free from stream code.
11950
Clients now *must* call the set_defaults procedure for the DCT filters
11951
before initializing them: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
11952
(sdct.h, sdctd.c, sdcte.c, sjpegc.c)
11953
 
11954
Adds an explicit #include for all remaining uses of gs_memory_default.
11955
(sdctd.c, sdcte.c, szlibd.c, szlibe.c)
11956
 
11957
</pre><h3><a name="V5.20_Library"></a>Library</h3><pre>
11958
 
11959
Fixes bugs:
11960
	- Some files that included shc.h didn't include scommon.h.  (shc.h)
11961
	- A file didn't include std.h before &lt;stdio.h&gt;.  (gslib.c)
11962
	- There was an unnecessary extern (cleanup only).  (gscsepr.c)
11963
	- The uid.xvalues member of gs_client_pattern structures wasn't
11964
traced by the GC.  (gspcolor.h)
11965
	- If an Interpolated image reached the end of the input at exactly
11966
the wrong time, an assertion could fail.  (gxiscale.c)
11967
	- With non-ANSI compilers, an integer constant passed to the fmod
11968
library function, which requires a floating point argument, could cause a
11969
floating point exception or an incorrect result.  (gsmisc.c)
11970
	- An error in computing the bounding box sometimes caused strokes to
11971
print incorrectly (for example, some graduated fills printed incorrectly).
11972
(gxstroke.c)
11973
 
11974
Implements an undocumented (!) feature of Type 2 CharStrings, namely that if
11975
the endchar operator is invoked with 4 or 5 operands on the stack, it is
11976
equivalent to the Type 1 seac operator (without the asb operand).  This
11977
required changing the implementation of seac so that it does the base
11978
character first, rather than the accent.  (gxtype1.h, gstype1.c, gstype2.c,
11979
gxtype1.c)
11980
 
11981
Adds support for ImageTypes other than 1.  (gsiparam.h, gximage.h,
11982
gxiparam.h, gdevddrw.c, gsimage.c, gximage.c, gximage0.c)
11983
 
11984
Adds support for ImageType 2 (device source) images.  Currently we only
11985
handle the simplest case (source is not transformed).  (gsimage.h,
11986
gsiparm2.h, gsimage.c, gximage2.c)
11987
 
11988
Adds support for LanguageLevel 3 features:
11989
	- FunctionType 2 and 3 Functions.  (gsfunc3.h, gsfunc3.c)
11990
	- PatternType 2 and smooth shading (structures and API only, no
11991
algorithms).  (gscolor3.h, gsptype2.h, gsshade.h, gxistate.h, gscolor3.c,
11992
gsshade.c)
11993
	- In-RIP trapping (structures and API only, no algorithms).
11994
(gstrap.h, gstrap.c)
11995
	- ImageType 3 (masked images) (structures and API only, no
11996
algorithms).  (gsiparm3.h, gximage3.c)
11997
	- ImageType 4 (chroma-keyed masked images).  (gsiparm4.h,
11998
gximage4.c)
11999
	- DevicePixel color space.  (gscpixel.h, gscspace.h, gscpixel.c,
12000
gximono.c)
12001
	- DeviceN color space.  (gscspace.h, gscdevn.c)
12002
 
12003
Removes the #ifdef FUTURE around the code for passing multi-plane and
12004
interpolated images through the band list (version 5.01) and for banded
12005
filling and stroking with colored halftones (version 4.71).  This code is
12006
now part of the standard release.  (gxcldev.h, gxclpath.h, gxdht.h,
12007
gxhttype.h, gsht.c, gxclimag.c, gxclread.c, gximage.c)
12008
 
12009
Adds a _ptrs6 structure definition macro.  (gsstruct.h)
12010
 
12011
Removes #ifdef DPNEXT conditionalization, as in the interpreter (see above).
12012
(gzstate.h, gsdps.c, gsstate.c, gximage.c, gximage5.c)
12013
 
12014
Starts to eliminate or segregate writable globals that point to
12015
heap-allocated data, as in the interpreter (see above).  (gsbittab.h,
12016
gscdefs.h, gsdcolor.h, gxclist.h, gxsample.h, gzht.h, gconf.c, gsbitops.c,
12017
gsbittab.c, gscdef.c, gsdparam.c, gsflip.c, gsinit.c, gsmatrix.c,
12018
gspcolor.c, gsstate.c, gxcht.c, gxclist.c, gxcmap.c, gxdcolor.c, gxdither.c,
12019
gxht.c, gximage.c)
12020
 
12021
Removes the division between 'low-level' and 'high-level' band list
12022
facilities.  (gxcldev.h, gxclimag.c, gxclist.c, gxclpath.c)
12023
 
12024
Renames gximage*.c as gxi*.c, since these files apply only to ImageType 1
12025
images and the use of numerical suffixes was confusing.  (gximage.c =&gt;
12026
gxiinit.c, gximage0.c =&gt; gxidata.c, gximage1.c =&gt; gxifast.c,
12027
gximage2.c =&gt; gximono.c, gximage3.c =&gt; gxicolor.c, gximage4.c =&gt;
12028
gxi12bit.c, gximage5.c =&gt; gxiscale.c)
12029
 
12030
Provides the ability to enumerate a clipping path (based on the clipping
12031
list) using an enumerator, in the same way as an ordinary path.  (gxpath.h,
12032
gzcpath.h, gzpath.h, gxcpath.c, gxpath2.c)
12033
 
12034
Speeds up mem_mapped4_copy_mono substantially.  (gdevm4.c)
12035
 
12036
Removes all remaining uses of gs_malloc and gs_free in the library, other
12037
than in drivers.  This turned out to require changing a couple of
12038
initialization APIs.  (gsfont.h, gslib.h, gxdevice.h, gxfcache.h, gsfont.c,
12039
gxccman.c)
12040
 
12041
Reduces the writable statics related to the default (C heap) allocator to a
12042
single pointer.  (gsmalloc.h, gsmemory.h, gsinit.c, gsmemory.c)
12043
 
12044
Adds support for PatternTypes other than 1.  (gscolor2.h, gspcolor.h,
12045
gsptype1.h, gxcolor2.h, gspcolor.c)
12046
 
12047
Adds an explicit #include for all remaining uses of gs_memory_default that
12048
aren't covered by gxdevice.h.  (gxclmem.c)
12049
 
12050
Splits off the default implementations of the bit-copying device procedures,
12051
because the file was getting too large.  (gdevdbit.c, gdevdflt.c)
12052
 
12053
Adds a procedure for calculating the difference of two rectangles, needed
12054
for Type 2 images.  (gsrect.h, gxpath.h, gsutil.c)
12055
 
12056
Extends the image machinery to allow alpha values to either precede or
12057
follow color values in image data, replacing HasAlpha with Alpha in the
12058
ImageType 1 image structure.  (gsiparam.h, gximage.h, gsimage.c, gxclimag.c,
12059
gxclread.c, gxicolor.c, gxiinit.c, gxiscale.c)
12060
 
12061
Extends the path enumeration API to decouple path copying from coordinate
12062
transformation.  (gspath.h, gzpath.h, gspath1.c, gxpath2.c)
12063
 
12064
Changes the garbage collector interface so that all procedures are passed
12065
through a structure rather than being referenced as externs.  This allows
12066
programs other than the GC itself to enumerate and relocate pointers, and
12067
also removes all static dependencies on the GC from the library.  This
12068
involves a NON-BACKWARD-COMPATIBLE CHANGE to the argument list of enum_ptrs
12069
procedures, and to the implementation of both enum_ptrs and reloc_ptrs.  (We
12070
hope that the new macros we've introduced will avoid non-backward-compatible
12071
changes in the future.)  (gsstruct.h, gdevmem.c, gsalloc.c, gscdevn.c,
12072
gscolor.c, gscolor2.c, gscsepr.c, gsdevice.c, gsfont.c, gshtscr.c,
12073
gsimage.c, gsmemory.c, gspcolor.c, gsstate.c, gxcmap.c, gxcpath.c, gxht.c,
12074
gxiinit.c)
12075
 
12076
Moves the image compositing code into the library from its inappropriate
12077
home in the interpreter.  (gsdpnext.h)
12078
 
12079
Splits up gsbitops.h into client interface and implementation support.
12080
Removes some obsolete code at the same time.  (gdevmem.h, gsbitops.h,
12081
gxbitops.h, gsbitops.c)
12082
 
12083
Creates the concept of compositing functions and compositing devices
12084
(compositors).  (gscompt.h, gxcomp.h)
12085
 
12086
Implements the default compositor for alpha-based compositing.  (gsalphac.h,
12087
gsalphac.c)
12088
 
12089
Creates a store_alpha device that adds alpha channel storage to any other
12090
device.  (gdevalph.c)
12091
 
12092
Moves alpha channel capability into the dpsnext feature, where it should
12093
have been all along.  (gsalpha.h, gscolor.h, gsalpha.c, gscolor.c,
12094
gsstate.c)
12095
 
12096
Implements color premultiplying by (non-unity) alpha values.  Currently we
12097
always premultiply towards white: see gxalpha.h for some comments.
12098
(gxalpha.h, gxcmap.c)
12099
 
12100
Reduces the amount of boilerplate in the RasterOp implementation table.
12101
(gsroptab.c)
12102
 
12103
Adds an arg_push_temp_string procedure to accommodate the new gp_getenv
12104
call.  (gsargs.h, gsargs.c)
12105
 
12106
Updates various library APIs to account for the more careful handling of
12107
file name length.  (gdevprn.h, gxclio.h, gxclist.h, gsdevice.c, gxclfile.c,
12108
gxclmem.c)
12109
 
12110
</pre>
12111
 
12112
<hr>
12113
 
12114
<h2><a name="Version5.10"></a>Version 5.10 (11/23/97)</h2>
12115
 
12116
<p>
12117
This release, not originally planned, greatly reduces the size of PDF files
12118
produced by the pdfwrite device, fixes a number of minor problems in PDF
12119
output, and optionally produces output compatible with Acrobat 2.x, in order
12120
to address problems reported by NSF in processing these files as part of
12121
their FastLane electronic proposal submission process.  Aside from that, and
12122
some localized bug fixes, it has minimal changes from 5.03.
12123
 
12124
<h3><a name="V5.10_Documentation"></a>Documentation</h3><pre>
12125
 
12126
Fixes bugs:
12127
	- ansihead.mak referred to unix-ansi.mak, which is actually named
12128
unixansi.mak.  (ansihead.mak)
12129
	- README referred to an "If you need help" section that was moved to
12130
new-user.txt.  (README)
12131
 
12132
Updates build information for HP-UX systems.  (make.txt)
12133
 
12134
Updates the information for getting Martin Lottermoser's hpdj driver.
12135
(new-user.txt)
12136
 
12137
Improves the error message when a user tries to invoke gswin32c without
12138
explicitly selecting a device.  (dwmainc.cpp)
12139
 
12140
Removes the author's name and e-mail address from the pdf2ps man page, at
12141
his request.  (pdf2ps.1)
12142
 
12143
Improves the documentation for BandBufferSpace.  (language.txt)
12144
 
12145
</pre><h3><a name="V5.10_Procedures"></a>Procedures</h3><pre>
12146
 
12147
Changes the VMS command files so that they don't echo the commands.
12148
(append_l.com, copy_one.com, rm_all.com, rm_one.com)
12149
 
12150
</pre><h3><a name="V5.10_Utilities"></a>Utilities</h3><pre>
12151
 
12152
Fixes bugs:
12153
	- The "lp" command files all inappropriately set the top margin to
12154
0.1".  (lp386.bat, lp386r2.bat, lpgs, lpgs.bat, lpr2, lpr2.bat)
12155
	- The lp386[r2].bat command files inappropriately set the
12156
LanguageLevel to 1.  (lp386.bat, lp386r2.bat)
12157
 
12158
</pre><h3><a name="V5.10_Drivers"></a>Drivers</h3><pre>
12159
 
12160
Fixes bugs:
12161
	- The PDF writer got confused about the current color if the input
12162
contained text strings separated only by color changes.  (gdevpdf.c)
12163
	- Some casts between const char * and const byte * were incorrect
12164
(warnings only).  (gdevpdft.c)
12165
 
12166
Adds a NoCancel parameter to the winpr2 device, which suppresses display of
12167
the dialog box.  (gdevwpr2.c)
12168
 
12169
</pre><h3><a name="V5.10_Interpreter"></a>Interpreter</h3><pre>
12170
 
12171
Fixes bugs:
12172
	- An "extern" was omitted, causing a duplicate definition of
12173
build_function_procs.  (ifunc.h)
12174
	- The global pseudo-operator table was too small, causing a
12175
limitcheck in ps2ascii.  (iinit.c)
12176
	- setcolorspace with a Pattern space with no underlying space would
12177
cause an error if the current color space was a Pattern space.  (zpcolor.c)
12178
	- The Decode key was optional, not required, in the dictionary form
12179
of image[mask].  (zimage2.c)
12180
 
12181
Adds two more PCL/PJL reset sequences to the list of sequences to ignore.
12182
(gs_init.ps)
12183
 
12184
</pre><h3><a name="V5.10_Library"></a>Library</h3><pre>
12185
 
12186
Fixes bugs:
12187
	- Multi-screen color halftones could produce "seams".  (gxcht.c)
12188
	- A bug in the gcc optimizer on H-P RISC workstations caused all
12189
curves to be output as lines.  (gxpflat.c)
12190
	- If a non-standard OtherSubr was called before the [h]sbw in a Type
12191
1 font, a crash could occur.  (gxhint3.c)
12192
	- gxclist.c didn't include string_.h.  (gxclist.c)
12193
 
12194
</pre>
12195
 
12196
<hr>
12197
 
12198
<h2><a name="Version5.07"></a>Version 5.07 (limited) (10/31/97)</h2>
12199
 
12200
<p>
12201
A few more bug fixes for the 5.10 release.
12202
 
12203
<h3><a name="V5.07_Documentation"></a>Documentation</h3><pre>
12204
 
12205
Fixes bugs:
12206
	- Some file and directory names hadn't been updated to match the new
12207
directory structure on the primary server.  (make.txt, new-user.txt)
12208
 
12209
Adds the URL for reaching URW++.  (Fontmap.*)
12210
 
12211
</pre><h3><a name="V5.07_Drivers"></a>Drivers</h3><pre>
12212
 
12213
Fixes bugs:
12214
	- Because the C % operator isn't equivalent to 'modulus' for
12215
negative numerators, gx_default_strip_tile_rectangle could crash in some
12216
cases.  (gxdevice.h, gdevdflt.c)
12217
	- In the PDF writer, Dest values were correct (page numbers) for
12218
GoToR actions, but were incorrect (should be page object references) for
12219
other actions; also, Rect values were transformed, but should not be.
12220
(gdevpdfm.c)
12221
	- In the PDF writer, articles and bookmarks could attempt to write
12222
multiple Contents streams, which is not allowed.  (gdevpdfx.h, gdevpdf.c,
12223
gdevpdfm.c)
12224
	- The PDF writer ignored PS (PostScript pass-through) pdfmarks.
12225
(gdevpdfm.c)
12226
	- The PDF writer didn't write out the color space parameters for
12227
CIE-based spaces.   (gdevpdfi.c)
12228
 
12229
</pre><h3><a name="V5.07_Library"></a>Library</h3><pre>
12230
 
12231
Fixes bugs:
12232
	- Suffix subclass structures with 4 added pointers skipped the first
12233
pointer in the superclass when garbage collecting, possibly causing invalid
12234
memory accesses.  (gsstruct.h)
12235
	- An argument list incompatibility in a procedure used in a static
12236
structure initialization upset some compilers.  (gsfunc.h, gsfunc0.c)
12237
 
12238
</pre>
12239
 
12240
<hr>
12241
 
12242
<h2><a name="Version5.06"></a>Version 5.06 (limited) (10/7/97)</h2>
12243
 
12244
<p>
12245
This fixes a few more bugs in the PDF writer, and a few other very obscure
12246
problems.  It also adds support for Functions and brings multiple contexts
12247
closer to working, neither of which we expect actually to be used any time
12248
soon.  This is intended to be the candidate fileset for the 5.10 release,
12249
but since we had to tinker with a delicate part of the PDF writer to fix a
12250
problem affecting visual quality with Acrobat, there may be new bugs that
12251
will have to be fixed in yet another candidate fileset.
12252
 
12253
<h3><a name="V5.06_Documentation"></a>Documentation</h3><pre>
12254
 
12255
Fixes bugs:
12256
	- Jim McPherson's e-mail address was out of date.  (devices.txt)
12257
	- Invoking ps2pdf with only a single file name is supported on some
12258
versions of Windows NT and OS/2, not only on Unix.  (ps2pdf.txt)
12259
	- The ps2pdf documentation didn't indicate that ps2pdf can use the
12260
Windows "console mode" executable as well as the MS-DOS executable.
12261
(ps2pdf.txt)
12262
	- The list of which Distiller parameters actually have an effect was
12263
incorrect.  (gdevpdfp.c)
12264
 
12265
Notes that the cdj550 driver is compatible with the H-P 660C and 660Cse.
12266
(devs.mak, devices.txt)
12267
 
12268
Adds a note about using Acrobat Reader fonts.  (install.txt, use.txt)
12269
 
12270
Notes that the LJ 5P, like the 5L, is not a PCL XL printer.  (devs.mak)
12271
 
12272
Notes problems and possible problems with certain versions of the Borland
12273
C++ compiler.  (make.txt)
12274
 
12275
Notes the change in -Z:.  (use.txt)
12276
 
12277
Updates the uniprint documentation for this release.  (devices.txt)
12278
 
12279
Expands the rationale for the large resolution in the bbox device.
12280
(gdevbbox.c)
12281
 
12282
Notes that the H-P DeskJet 600 series can use the djet500 driver with -r600.
12283
(devs.mak)
12284
 
12285
</pre><h3><a name="V5.06_Procedures"></a>Procedures</h3><pre>
12286
 
12287
Fixes bugs:
12288
	- Vector devices didn't include a necessary dependency on the stream
12289
package.  (lib.mak)
12290
	- There were several bugs in the ps2pdf.bat file.  (ps2pdf.bat)
12291
 
12292
Changes -Z: so it prints some summary lines as well as minimal information
12293
about banding.  This makes the -ZA trace compatible with our memory leak
12294
tool.  (iminst.h, imain.c)
12295
 
12296
</pre><h3><a name="V5.06_Utilities"></a>Utilities</h3><pre>
12297
 
12298
Fixes bugs:
12299
	- ps2epsi sometimes produced a too-large bounding box, or even
12300
caused a rangecheck.  (ps2epsi)
12301
 
12302
At the advice of a user, removes the RESOLUTION=100 line from pv.sh.
12303
(pv.sh)
12304
 
12305
</pre><h3><a name="V5.06_Drivers"></a>Drivers</h3><pre>
12306
 
12307
Fixes bugs:
12308
	- The PDF writer produced incorrect output for stroke operations
12309
with unusual CTMs, because PDF, unlike PostScript, applies the CTM to the
12310
path at the time of the fill or stroke, not as the path is being
12311
constructed.  (gdevpdfd.c)
12312
	- Vector devices returned an error, instead of falling back to the
12313
default implementations, when filling or stroking with a pattern.
12314
(gdevvec.c)
12315
	- The PDF writer freed an internal stream structure using the wrong
12316
allocator, possibly causing memory corruption.  (gdevpdf.c)
12317
	- The uniprint driver had some compilation problems, and possibly
12318
other problems as well (consult the source file).  (gdevupd.c, *.upp)
12319
	- With -dNOCACHE, the PDF writer wrote all text in the base 14 fonts
12320
twice, once as text and once as outlines.  (gs_pdfwr.ps, gdevpdfd.c)
12321
	- The PDF writer didn't properly recognize Symbol and ZapfDingbats
12322
as being among the base 14 fonts.  (gs_pdfwr.ps)
12323
	- When using Acrobat Reader with font smoothing turned on, the base
12324
14 fonts appeared too bold on the screen in files produced by ps2pdf,
12325
because Reader decides that a 100-unit font at 1 unit = 0.1 point should be
12326
bolder than a 10-unit font at 1 unit = 1 point.  (gdevpdfx.h, gdevpdf.c,
12327
gdevpdft.c)
12328
	- The PDF writer didn't convert View/Page specifications for
12329
bookmark pdfmarks to a Dest key, causing bookmarks not to work.
12330
(gdevpdfm.c)
12331
 
12332
Speeds up the PDF writer by only passing the encoding if it isn't
12333
StandardEncoding.  (gs_pdfwr.ps, gdevpdft.c)
12334
 
12335
Changes the PDF writer's handling of unencoded glyphs.  Adds device
12336
parameters ReEncodeCharacters and ReAssignCharacters to control how
12337
unencoded glyphs are handled.  (These parameters will go away when we handle
12338
variant encodings in full generality.)  (gdevpdfx.h, gdevpdf.c, gdevpdfp.c,
12339
gdevpdft.c)
12340
 
12341
</pre><h3><a name="V5.06_Interpreter"></a>Interpreter</h3><pre>
12342
 
12343
Fixes bugs:
12344
	- setpagedevice didn't restore the stack properly if it failed.
12345
(gs_setpd.ps)
12346
	- 0 identmatrix didn't cause an error.  (gs_init.ps)
12347
	- Devices expecting array-valued parameters didn't accept packed
12348
arrays.  (iparam.c)
12349
 
12350
Starts to de-implement support for special handling of the stacks on
12351
machines with 16:16 addressing.  Currently this only happens if DPNEXT is
12352
defined.  (istack.h)
12353
 
12354
Brings multiple contexts closer to working.  The interpreter can now run
12355
some very simple test cases.  (int.mak, icontext.h, igstate.h, interp.h,
12356
istruct.h, icontext.c, interp.c, zcontext.c, zgstate.c)
12357
 
12358
Adds support for FunctionType 0 Functions.  (ifunc.h, iref.h, store.h,
12359
zfunc.c, zfunc0.c)
12360
 
12361
Updates a few remaining pseudo-operators in gs_init.ps to take advantage of
12362
automatic operand and dictionary stack restoration: eexec, identmatrix,
12363
pathbbox.  Not updated yet: filter.  (gs_init.ps)
12364
 
12365
</pre><h3><a name="V5.06_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
12366
 
12367
Fixes bugs:
12368
	- Separation color spaces weren't supported.  (gs_pdf.ps,
12369
pdf_draw.ps)
12370
 
12371
</pre><h3><a name="V5.06_Library"></a>Library</h3><pre>
12372
 
12373
Fixes bugs:
12374
	- The size argument to gs_free was wrong in an out-of-memory case.
12375
(This was irrelevant, since gs_free only uses the size argument for
12376
error-checking during debugging.)  (gdevprn.c)
12377
	- When freeing a block on the C heap, if -Z@ was set, the block's
12378
header wasn't filled with the sentinel pattern.  (Only relevant when
12379
debugging.)  (gsmemory.c)
12380
	- The C heap allocator didn't fix up pointers properly when freeing
12381
a block, causing unpredictable memory corruption after a 'resize' call.
12382
(gsmemory.c)
12383
	- Using a show operator inside the procedure of a cshow with a
12384
composite font could cause an invalid access.  (gschar.c)
12385
 
12386
Adds support for FunctionType 0 Functions.  (gsdsrc.h, gsfunc.h, gsfunc0.h,
12387
gxfunc.h, gsdsrc.c, gsfunc.c, gsfunc0.c)
12388
 
12389
Moves the GC descriptor for arrays of constant strings to a place where it
12390
is more visible.  (gscie.h, gsstruct.h, gscie.c, gsmemory.c)
12391
 
12392
</pre>
12393
 
12394
<hr>
12395
 
12396
<h2><a name="Version5.05"></a>Version 5.05 (limited) (9/24/97)</h2>
12397
 
12398
<p>
12399
This fixes a few bugs found in the first few days of testing 5.04.  There
12400
will probably be several more small incremental filesets before the next
12401
public release.
12402
 
12403
<h3><a name="V5.05_Platforms"></a>Platforms</h3><pre>
12404
 
12405
Fixes bugs:
12406
	- The Windows code wouldn't compile with the latest MSVC++, because
12407
Microsoft changed the prototype for fprintf.  (gp_msio.c)
12408
 
12409
</pre><h3><a name="V5.05_Drivers"></a>Drivers</h3><pre>
12410
 
12411
Fixes bugs:
12412
	- A picky compiler complained about some omitted casts.  (gdevpdf.c,
12413
gdevpdft.c)
12414
	- Writing a PDF file with any synthesized fonts could produce
12415
slightly garbled output or possibly even an invalid memory access, because a
12416
string was not terminated.  (gdevpdft.c)
12417
	- When writing a PDF file, the first character of a string could get
12418
placed off the page, because of a matrix bookkeeping error.  (gdevpdft.c)
12419
 
12420
</pre><h3><a name="V5.05_Interpreter"></a>Interpreter</h3><pre>
12421
 
12422
Fixes bugs:
12423
	- In case of an error, setpagedevice executed a 'stop'
12424
unconditionally, rather than just signalling an error through the error
12425
machinery.  (gs_setpd.ps)
12426
 
12427
</pre><h3><a name="V5.05_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
12428
 
12429
Fixes bugs:
12430
	- Files with unknown operators caused errors, even if the BX
12431
operator was used to disable the error report.  (pdf_base.ps)
12432
 
12433
</pre>
12434
 
12435
<hr>
12436
 
12437
<h2><a name="Version5.04"></a>Version 5.04 (limited) (9/21/97)</h2>
12438
 
12439
<p>
12440
This is a test fileset for an unplanned release that greatly reduces the
12441
size of PDF files produced by the pdfwrite device, and also optionally
12442
produces output compatible with Acrobat 2.x, in order to address problems
12443
reported by NSF in processing these files as part of their FastLane
12444
electronic proposal submission process.  Aside from that, and some localized
12445
bug fixes, it has minimal changes from 5.03.
12446
 
12447
<h3><a name="V5.04_Documentation"></a>Documentation</h3><pre>
12448
 
12449
Fixes bugs:
12450
	- George Cameron's address was listed with a domain of .ukis rather
12451
than .uk.  (devices.txt)
12452
	- The default value of ORIENT1 was given as false rather than true.
12453
(use.txt)
12454
	- The documentation for ps2pdf said one can omit the output file
12455
name, but this is only true on Unix systems.  (ps2pdf.txt)
12456
	- The documentation for ps2pdf didn't make clear that the executable
12457
must be named gs on Microsoft OSs.  (ps2pdf.txt)
12458
	- ht_cache is actually allocated with the first gstate, not on
12459
demand.  (gsstate.c)
12460
 
12461
Slightly improves the documentation of .type1execchar.  (zchar1.c)
12462
 
12463
Clarifies the distinction between Ghostscript (PostScript) commands and
12464
shell commands, for the benefit of users brainwashed by Microsoft.
12465
(use.txt)
12466
 
12467
Improves the usage synopsis in the ps2epsi man page.  (ps2epsi.1)
12468
 
12469
Adds a reference to Uli Wortmann's H-P drivers.  (new-user.txt)
12470
 
12471
Improves the documentation of GS_FONTPATH, distinguishing it from GS_LIB and
12472
the search path.  (use.txt)
12473
 
12474
Notes that on some systems, one must substitute 'installbsd' for 'install'
12475
in the makefile and make other edits.  (install.txt, ansihead.mak,
12476
cc-head.mak, gcc-head.mak)
12477
 
12478
Notes that ps2epsi is no longer maintained.  (ps2epsi.ps)
12479
 
12480
Clarifies the availability of support.  (new-user.txt)
12481
 
12482
</pre><h3><a name="V5.04_Procedures"></a>Procedures</h3><pre>
12483
 
12484
Fixes bugs:
12485
	- The uniprint driver was accidentally omitted from the default
12486
Watcom (MS-DOS) and OS/2 configurations.  (watc.mak, os2.mak)
12487
	- The suggested compiler switches for Digital Unix were incorrect.
12488
(make.txt)
12489
	- The cp.cmd script file didn't work in the newest versions of OS/2.
12490
(cp.cmd)
12491
	- The compilation rules for some Windows-specific files didn't
12492
include ccf32.tr in their dependencies, which could cause the compilation to
12493
fail.  (winint.mak)
12494
 
12495
Removes the lev2min configuration, since we no longer support 16-bit Windows
12496
environments.  (int.mak)
12497
 
12498
</pre><h3><a name="V5.04_Utilities"></a>Utilities</h3><pre>
12499
 
12500
Fixes bugs:
12501
	- ps2epsi.bat always appended to the output file, rather than
12502
writing over it.  (There are probably other bugs in this script file.)
12503
(ps2epsi.bat)
12504
	- The output of pdf2ps didn't execute properly on some printers,
12505
especially Level 1 printers.  (gs_pdf.ps)
12506
 
12507
Makes ps2pdf do an initial 'save', which causes fonts to be retained better
12508
across pages.  (ps2pdf, ps2pdf.bat)
12509
 
12510
Adds an option to pcharstr.ps to produce C-like rather than PostScript-like
12511
output.  (pcharstr.ps)
12512
 
12513
</pre><h3><a name="V5.04_Drivers"></a>Drivers</h3><pre>
12514
 
12515
Fixes bugs:
12516
	- The LaserJet III and higher printers weren't able to print in the
12517
narrow strip between 1/6" and 1/4" from the left edge of the page.
12518
(gdevdjet.c)
12519
	- The PCL XL drivers produced incorrect output which often caused a
12520
PCL XL NoCurrentFont error at the beginning of the second page.  (gdevpx.c)
12521
	- The GC descriptors for the pswrite device and for PS/PDF devices
12522
were incorrect, causing the GC to smash memory.  (gdevpsdf.h, gdevps.c)
12523
	- The pdfwrite device didn't have a GC descriptor at all.  ******
12524
DISABLED because the device allocates all its temporary structures directly
12525
on the C heap. ****** (gdevpdf.c)
12526
	- When the PDF writer wrote out the Dest key in an action
12527
dictionary, it always used a page object instead of a page number, even if
12528
the page was in another file or didn't exist; it now always uses a page
12529
number.  (gdevpdfm.c)
12530
	- The PDF writer gave an error if a file redefined any of the 14
12531
known fonts.  (gs_pdfwr.ps)
12532
	- The PDF writer didn't handle copy_mono with a non-zero sourcex.
12533
(This probably had no effect in practice.)  (gdevpdfi.c)
12534
 
12535
Splits off gdevpdfd.c (driver drawing procedures) from gdevpdf.c, since the
12536
file was getting too large.  (gdevpdfx.h, gdevpdf.c, gdevpdfd.c)
12537
 
12538
Adds recognition of the CompressPages, CompatibilityLevel, and
12539
UseFlateCompression device (distiller) parameters to the PDF writer.  If
12540
CompressPages is true (default), CompatibilityLevel is 1.2 (default), and
12541
UseFlateCompression is true (default), page contents will be compressed with
12542
Flate ("zip") compression; otherwise, they will not be compressed.
12543
 
12544
Restructures the PDF writer to produce much smaller and faster PDF files, by
12545
restructuring its handling of text to defer all resources to the end of the
12546
file, eliminate duplicate Font resources, turn characters into Type 3 fonts
12547
rather than Image XObjects, use more efficient text positioning commands,
12548
and optionally (but by default) Flate-compress the contents streams.  Also
12549
removes some unnecessary spaces in the output.  (gdevpdfx.h, gdevpdf.c,
12550
gdevpdfd.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
12551
 
12552
Improves the PDF writer so that it no longer converts stroke operations with
12553
non-uniform CTMs to fills, and doesn't bother to stroke empty paths at all.
12554
(gdevpdfd.c)
12555
 
12556
Speeds up the "alternate" X devices substantially.  (gdevxalt.c)
12557
 
12558
</pre><h3><a name="V5.04_Interpreter"></a>Interpreter</h3><pre>
12559
 
12560
Fixes bugs:
12561
	- Filling a string with a Pattern caused a crash with the PDF
12562
writer.  (gs_pdfwr.ps)
12563
	- Converting a file with no marks at all to PDF produced invalid
12564
output.  (gdevpdf.c)
12565
	- .endpage, which is called at the end of every page, sometimes left
12566
2 extra values on the stack.  (gs_setpd.ps)
12567
	- A definefont with a Type 1 font lacking a .notdef character didn't
12568
cause an invalidfont error.  (bfont.h, zfont1.c, zfont2.c)
12569
	- On anti-aliased devices, characters from Type 1 fonts with an
12570
incorrect or missing FontBBox came out a factor of 2 or 4 too small if the
12571
character was small enough to cache.  (zchar1.c)
12572
	- If a file redefined certain operators, loading Type 1 fonts could
12573
fail.  This problem was fixed in an earlier release, and somehow the fix got
12574
undone.  (gs_type1.ps)
12575
	- cshow didn't set the correct current font when running the
12576
procedure, and didn't restore it properly afterwards.  (zchar.c, zchar2.c)
12577
	- With certain compilers, the interpreter loop caused unaligned
12578
memory accesses on DEC Alpha systems running Windows NT.  (iref.h)
12579
 
12580
Adds freelist validation to the memory checker.  (ilocate.c)
12581
 
12582
Changes the debugging switch for bypassing the garbage collector from
12583
compile-time to run-time.  (igc.c)
12584
 
12585
Adds the real operators for view clipping (but they don't do anything yet,
12586
because view clipping isn't implemented at the library level).  (zdps.c,
12587
zvmem.c)
12588
 
12589
Completes the implementation of defineusername.  (zdps.c)
12590
 
12591
Adds an implementation of wtranslation, by simply reading a device parameter
12592
of the same name.  (gs_dps.ps)
12593
 
12594
</pre><h3><a name="V5.04_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
12595
 
12596
Fixes bugs:
12597
	- Lab color spaces weren't implemented, and gave an error.
12598
(gs_pdf.ps)
12599
	- Images only worked with built-in color spaces, not color space
12600
resources.  (pdf_draw.ps)
12601
	- Embedded font subsets were treated as undefined.  (pdf_font.ps)
12602
 
12603
</pre><h3><a name="V5.04_Library"></a>Library</h3><pre>
12604
 
12605
Fixes bugs:
12606
	- strokepath sometimes clipped the path to the current clipping
12607
region, which it should never do.  (gxstroke.c)
12608
	- The initial X/Y position for Type 2 charstrings (CFFs) sometimes
12609
was set incorrectly.  (gstype2.c)
12610
	- Memory management for dash patterns was still incorrect (despite
12611
the fix in 4.36), possibly causing snarled freelists and invalid memory
12612
references.  (gsline.c, gsstate.c)
12613
	- The saved gstate of a Pattern instance was freed properly when the
12614
instance was freed by reference counting as a result of setting the color or
12615
color space, but not when the instance was freed by reference counting
12616
anywhere else.  (gspcolor.c)
12617
	- A test for whether to use a slower form of oversampling was
12618
incorrect.  (Probably only a performance bug.)  (gschar.c)
12619
	- cshow didn't set the correct current font when running the
12620
procedure, and didn't restore it properly afterwards.  (gsfont.h, gschar.c,
12621
gsfont.c)
12622
 
12623
Improves allocator validity checking when DEBUG is set.  (gsalloc.c)
12624
 
12625
Adds a couple of missing FontType values.  (gxftype.h)
12626
 
12627
Changes the default conversions between CMYK and RGB colors back to the
12628
Adobe rules documented in the Red Book, to reduce output differences from
12629
Adobe implementations.  (gxdcconv.c)
12630
 
12631
Adds a graphics state element for view clipping, under an #ifdef DPNEXT, and
12632
implementations of the view clipping operators (but not the logic for doing
12633
the actual clipping).  (gsstate.h, gzstate.h, gsstate.c)
12634
 
12635
Removes the redundant clip_rule variable from the graphics state (which
12636
wasn't used for anything).  (gzstate.h, gspath.c)
12637
 
12638
</pre>
12639
 
12640
<hr>
12641
 
12642
<h2><a name="Version5.03"></a>Version 5.03 (8/8/97)</h2>
12643
 
12644
<p>
12645
The only reason for this release is to fix two serious bugs introduced
12646
between 5.01 and 5.02.  We fixed a few other very localized and low-risk
12647
bugs at the same time.
12648
 
12649
<h3><a name="V5.03_Documentation"></a>Documentation</h3><pre>
12650
 
12651
Removes the "(if relevant)" from the bug reporting form, since about 25% of
12652
the forms are submitted without a URL or any other data.  (bug-form.txt)
12653
 
12654
Adds a discussion of single-use procedures to the style guide.
12655
(c-style.txt)
12656
 
12657
Updates the information about obtaining Ghostscript on physical media.
12658
(new-user.txt)
12659
 
12660
Updates the information about ps_view.  (new-user.txt)
12661
 
12662
</pre><h3><a name="V5.03_Procedures"></a>Procedures</h3><pre>
12663
 
12664
Adds the uniprint driver to all platforms.  (*.mak)
12665
 
12666
Changes the contents of the pc.tar.gz archives:
12667
	- Adds *.upp.
12668
	- Removes *.res.
12669
	- Removes cp.bat, font2c.bat, mv.bat, rm.bat, wmakebat.bat,
12670
	  cp.cmd, mv.cmd and rm.cmd, and gv-vms.hlp.
12671
 
12672
Removes an obsolete script file.  (tar_mv)
12673
 
12674
</pre><h3><a name="V5.03_Drivers"></a>Drivers</h3><pre>
12675
 
12676
Fixes bugs:
12677
	- The uniprint driver didn't handle an increase in media height
12678
correctly.  (gdevupd.c)
12679
 
12680
</pre><h3><a name="V5.03_Platforms"></a>Platforms</h3><pre>
12681
 
12682
Fixes bugs:
12683
	- Printing to printers other than LPT1 under MS Windows no longer
12684
worked.  (bug introduced in 5.02)  (gp_mswin.c)
12685
	- Drag-and-drop didn't work under Windows NT (or other 32-bit
12686
Windows environments).  (dwtext.cpp)
12687
	- Sequent systems needed an additional system header file.
12688
(time_.h)
12689
 
12690
</pre><h3><a name="V5.03_Fonts"></a>Fonts</h3><pre>
12691
 
12692
Fixes bugs:
12693
	- The substitutions Myriad =&gt; Times and Minion =&gt; Helvetica were
12694
incorrect; they should be the other way around.  (gs_fonts.ps)
12695
	- MyriadPkg wasn't recognized as a condensed font.  (gs_fonts.ps)
12696
	- Univers wasn't recognized as mapping to Helvetica.  (gs_fonts.ps)
12697
 
12698
</pre><h3><a name="V5.03_Interpreter"></a>Interpreter</h3><pre>
12699
 
12700
Fixes bugs:
12701
	- A line of debugging code, printing the sections of 3 regions of
12702
TrueType fonts being loaded, was accidentally left in.  (gs_ttf.ps)
12703
	- TrueType fonts whose pre-glyf data had odd length were broken
12704
(typically gave a rangecheck error), because of the fix to treat the odd
12705
byte of individual sfnts strings as padding per Adobe documentation.  (bug
12706
introduced in 5.02) (gs_ttf.ps)
12707
 
12708
</pre><h3><a name="V5.03_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
12709
 
12710
Fixes bugs:
12711
	- If a real-number token in a CFF had an even number of nibbles, a
12712
unmatchedmark error would occur.  (gs_cff.ps)
12713
	- If the strings Index in a CFF included an empty string, a
12714
rangecheck error would occur.  (gs_cff.ps)
12715
	- CFFs with non-standard Encodings that included standard strings
12716
would get a typecheck error.  (gs_cff.ps)
12717
 
12718
</pre><h3><a name="V5.03_Library"></a>Library</h3><pre>
12719
 
12720
Fixes bugs:
12721
	- Using %d in an OutputFile name didn't substitute the page number.
12722
(bug introduced in 5.02)  (gsdevice.c)
12723
	- In Type 2 CharStrings, if a hintmask occurred at the beginning, it
12724
wasn't recognized as also incorporating the function of vstemhm.
12725
(gstype2.c)
12726
	- The data bytes for hintmask and cntrmask weren't printed for
12727
debugging.  (gstype2.c)
12728
 
12729
</pre>
12730
 
12731
<hr>
12732
 
12733
<h2><a name="Version5.02"></a>Version 5.02 (7/28/97)</h2>
12734
 
12735
<p>
12736
Because of an ISP failure that delayed the 5.0 announcement for 12 days, the
12737
5.01 release only responded to a few days of bug reports; 5.02 fixes some
12738
problems that should have been fixed in 5.01, as well as a large number of
12739
obscure problems uncovered by Genoa testing.
12740
 
12741
<h3><a name="V5.02_Documentation"></a>Documentation</h3><pre>
12742
 
12743
Fixes bugs:
12744
	- The documentation for building on the Intergraph Clipper was out
12745
of date.  (make.txt)
12746
	- ESC was claimed to be a self-delimiting character.  (gs_init.ps)
12747
	- Removes the documentation claiming that ^D and ^Z are
12748
self-delimiting.  (language.txt)
12749
	- Document that -dSUBSTFONT doesn't create a font with the requested
12750
font name.  (use.txt)
12751
	- Ghostscript was defined as compatible with PDF 1.1 rather than PDF
12752
1.2.  (language.txt)
12753
	- The description of gcc problems on Alpha didn't make it clear that
12754
the use of gcc was optional, not required.  (make.txt)
12755
	- The description of how to use GNU make on VMS systems was
12756
inaccurate.  (make.txt)
12757
 
12758
Improves the documentation for building on H-P RISC systems.  (make.txt)
12759
 
12760
Corrects the discussion of Cygnus' licensing terms for the cygwin32
12761
environment.  (make.txt)
12762
 
12763
Removes the apology for the poor quality of Ghostscript's TrueType
12764
rasterizer, since the quality is now quite good.  (fonts.txt)
12765
 
12766
Documents the fact that one must use # rather than = with Watcom C.
12767
(use.txt)
12768
 
12769
Documents the updates and additions to the uniprint driver.  (devices.txt)
12770
 
12771
Adds some material to Aladdin's C style guide.  (c-style.txt)
12772
 
12773
Documents the fact that using gmake requires VMS 6.2 or later on Alphas and
12774
7.1 (perhaps 7.0) or later on VAXen.  (make.txt)
12775
 
12776
Adds an example EPS file.  (psfiles.txt)
12777
 
12778
Adds some information about compiling and linking under OS/2.  (make.txt)
12779
 
12780
Expands the description of XLIBDIR and XLIBDIRS.  (*head.mak)
12781
 
12782
Adds a new pointer to information on using a Kanji font with Ghostscript.
12783
(new-user.txt)
12784
 
12785
Documents the use of /Resource/&lt;category&gt;/&lt;resource&gt; as the default place
12786
where resources are sought.  (use.txt)
12787
 
12788
Updates the documentation on building with MSVC++ to reflect the makefile
12789
changes.  (make.txt)
12790
 
12791
</pre><h3><a name="V5.02_Procedures"></a>Procedures</h3><pre>
12792
 
12793
Fixes bugs:
12794
	- In openvms.mak, several ifdef tests were wrong.  (openvms.mak)
12795
	- One CP command was slightly inconsistent with the others.
12796
(zlib.mak)
12797
	- If libz and libpng were both shared, libz was linked first,
12798
resulting in some undefined references.  (libpng.mak)
12799
	- The VMS makefile didn't interact properly with VMS's version
12800
numbering facility.  (copy_one.com)
12801
 
12802
Updates the VMS DCL script one last time, to handle libpng version 96.
12803
(vms.mak)
12804
 
12805
Restructures the MSVC++ makefiles to allow building the graphics library
12806
without the PostScript interpreter.  (bcwin32.mak, msvc4.mak[deleted],
12807
msvc5.mak[deleted], msvc32.mak, msvccom.mak, watcw32.mak,
12808
wincom.mak[deleted], winint.mak, winlib.mak)
12809
 
12810
Adds a makefile to create a library-only demo program under MSVC++, like the
12811
ones for Unix/gcc and MS-DOS/Watcom.  (msvclib.mak)
12812
 
12813
Adds an example EPS file.  (ridt91.eps, unix-end.mak)
12814
 
12815
Removes support for libpng release 0.88, which is now quite obsolete.
12816
(libpng.mak)
12817
 
12818
</pre><h3><a name="V5.02_Utilities"></a>Utilities</h3><pre>
12819
 
12820
Fixes bugs:
12821
	- ps2pdf.bat, unlike ps2pdf, didn't accept options.  (ps2pdf.bat)
12822
	- echogs used 'const' in one place, which wasn't accepted by some
12823
very old compilers.  (echogs.c)
12824
	- pdf2ps output Orientation, which it shouldn't.  (pdf_main.ps)
12825
 
12826
Makes the usage message from ps2pdf.bat include the options, like ps2pdf.
12827
(ps2pdf.bat)
12828
 
12829
Changes the printpath utility so that its output is legal PostScript code.
12830
(ppath.ps)
12831
 
12832
Makes pdf2dsc add DSC comments for the bounding box (if a CropBox is
12833
available in the PDF file) and the orientation.  (pdf2dsc.ps)
12834
 
12835
</pre><h3><a name="V5.02_Drivers"></a>Drivers</h3><pre>
12836
 
12837
Fixes bugs:
12838
	- The get_bits operation wasn't implemented for the vgalib driver.
12839
(gdevvglb.c)
12840
	- The dnj650c driver output an extra % near the end of the file.
12841
(gdevcdj.c)
12842
	- The definition of pprintd2 didn't have a line break before the
12843
procedure name, confusing ansi2knr.  (gdevpstr.c)
12844
	- EPS files produced invalid PDF output.  (gdevpdf.c)
12845
	- "Vector" output devices didn't recognize %d in output file names,
12846
or - for output to stdout.  (gdevprn.h, gxdevice.h, gdevprn.c, gdevvec.c,
12847
gsdevice.c)
12848
	- With the pdfwrite driver, restore or grestore would cause a
12849
rangecheck error in .installpagedevice if a setpagedevice had been executed.
12850
(gdevpdfp.c)
12851
	- The pdfwrite driver produced garbage output for text rotated by
12852
angles that were only infinitesimally different from multiples of 90
12853
degrees.  (gdevpdft.c)
12854
	- The pnm[raw] driver didn't handle anti-aliasing properly.
12855
(gdevpbm.c)
12856
	- The PDF writer didn't scale the parameters for [a][width]show
12857
correctly.  (gs_pdfwr.ps, gdevpdft.c)
12858
 
12859
Fixes some minor compilation warnings not affecting code functionality.
12860
(gdevbbox.c, gdevpdfm.c, gshtscr.c, gsmemory.c, gxccman.c, gxfill.c,
12861
gximage0.c)
12862
 
12863
Fixes some bugs in the uniprint driver and adds some more printer models.
12864
(gdevupd.c, bjc610a*.upp, bjc610b*.upp, necp2x6.upp, stc1520h.upp)
12865
 
12866
Makes a small change for clean compilation on BeOS.  (gdevcdj.c)
12867
 
12868
Updates the PNG driver to use updated API calls for allocating/initializing
12869
and freeing the PNG structures.  (gdevpng.c)
12870
 
12871
</pre><h3><a name="V5.02_Platforms"></a>Platforms</h3><pre>
12872
 
12873
Refactors the MS Windows code to allow building the library without the
12874
interpreter.  (gs_msio.c, gs_mslib.c, gp_mswin.c)
12875
 
12876
</pre><h3><a name="V5.02_Fonts"></a>Fonts</h3><pre>
12877
 
12878
Fixes bugs:
12879
	- definefont was executed twice on TrueType fonts.  (No bad
12880
consequences, just unnecessary work.)  (gs_ttf.ps)
12881
 
12882
</pre><h3><a name="V5.02_Interpreter"></a>Interpreter</h3><pre>
12883
 
12884
Fixes bugs:
12885
	- The fix for the 'stopped' around run_string_* in 5.01 was made
12886
incorrectly.  (gs_init.ps)
12887
	- Many operators that expect a matrix operand didn't accept packed
12888
arrays.  (iutil.c)
12889
	- The default CRD didn't have an explicit BlackPoint, which some
12890
Genoa tests require.  (gs_lev2.ps)
12891
	- A stack protection fix caused setscreen and setcolorscreen with
12892
dictionary operands to give a typecheck.  (gs_dps2.ps)
12893
	- Executing a string didn't handle tail recursion properly if the
12894
last token was followed by a single whitespace character.  (interp.c)
12895
	- Clearing the error indication didn't set errorname to null.
12896
(gs_init.ps)
12897
	- Some unexpected items appeared on the execution stack, confusing
12898
some of the Genoa tests.  (gs_init.ps, istack.h, istack.c, zcontrol.c)
12899
	- The dummy definitions for setucacheparams/ucachestatus didn't look
12900
enough like the real ones.  (gs_dps2.ps)
12901
	- Insideness tests didn't work, because the hit detection device
12902
width and height weren't set up.  (zupath.c)
12903
	- defineuserobject didn't use the same algorithm for growing the
12904
array as Adobe interpreters.  (gs_dps2.ps)
12905
	- eq and ne didn't work correctly on save objects.  (iutil.c)
12906
	- findfont used =string internally, interfering with PostScript
12907
programs that also used it.  (gs_fonts.ps)
12908
	- cshow didn't set up scaled versions of base fonts as the current
12909
font.  (zchar2.c)
12910
	- defineresource didn't make the resource value read-only.
12911
(gs_res.ps)
12912
	- If inustroke got an error, it could return without an error
12913
indication and without changing the stack.  (zupath.c)
12914
	- The arrays returned by different invocations of currentcolorspace
12915
with the same device color space weren't guaranteed to be eq.  (gs_lev2.ps)
12916
	- Out-of-range integers followed by a '.' were converted to names
12917
rather than reals.  (iscan.c, iscannum.c)
12918
	- resourceforall caused an invalidaccess error if currentglobal was
12919
true but the procedure, template, or scratch string was in local VM.
12920
(gs_res.ps)
12921
	- In many places, integer values were converted to floats rather
12922
than doubles, losing precision.  (ichar.h, icharout.h, ifont.h, iutil.h,
12923
idparam.c, iparam.c, iutil.c, zchar.c, zchar1.c, zchar42.c, zcharout.c,
12924
zcie.c, zcolor.c, zcolor1.c, zcolor2.c, zcontrol.c, zcsindex.c, zcssepr.c,
12925
zdpnext.c, zdps1.c, zfont.c, zfont2.c, zgstate.c, zhsb.c, zht.c, zmath.c,
12926
zmatrix.c, zmedia2.c, zpath.c, zpath1.c, zupath.c)
12927
	- The TransformPQR procedure in the default CRD didn't pop its
12928
auxiliary operands from the stack.  (gs_lev2.ps)
12929
	- Because of an incorrect stack depth check, setcolorrendering
12930
sometimes produced a stackunderflow.  (zcrd.c)
12931
	- sethalftone caused an invalidaccess error if the HalfTone type was
12932
not 5, the dictionary was in local VM, and the current VM was global.
12933
(gs_dps2.ps)
12934
	- writeobject and printobject caused an invalidaccess error if the
12935
object being written was in local VM and the current VM was global.
12936
(gs_btokn.ps)
12937
	- ustrokepath appended the strokepath segments to the current path,
12938
rather than replacing the path.  (zupath.c)
12939
	- restore incorrectly purged from the character cache any characters
12940
in a font being freed, even if the font had a UID.  (zfont.c)
12941
	- The definition of zimage_opaque_setup confused ansi2knr.
12942
(zimage.c)
12943
	- Type 42 fonts that included the padding byte in each sfnts string
12944
didn't work if sfnts had more than one string.  (zfont42.c)
12945
	- Doing a garbage collection at the same time as handling a
12946
stackoverflow failed to update the object that needed re-execution, causing
12947
the interpreter to execute random data.  (interp.c)
12948
	- %stdout and %stderr weren't flushed if they were closed
12949
explicitly.  (ziodev.c)
12950
 
12951
For greater Adobe compatibility:
12952
	- Changes setdash to limit dash patterns to 11 elements.  (This is
12953
enforced at the PostScript level: the graphics library doesn't have a
12954
limit.)  (gs_init.ps)
12955
	- Changes ^D and ^Z so they are not self-delimiting characters, and
12956
changes ^K so it is not a whitespace character.  (gs_init.ps, iscan.c,
12957
scantab.c)
12958
	- Makes = cause an error on non-read-accessible objects rather than
12959
printing them as --nostringval--.  (gs_init.ps)
12960
	- When -dSUBSTFONT= is used, makes findfont return the actual named
12961
font, rather than a copy with the FontName changed to the requested one.
12962
(gs_fonts.ps)
12963
	- CFF fonts with a non-default FontMatrix caused an error.
12964
(gs_cff.ps)
12965
 
12966
Fixes some minor compilation warnings not affecting code functionality.
12967
(iparam.c, zfcmap.c)
12968
 
12969
Strengthens the test of o-stack validity in the main interpreter loop in
12970
debug mode.  (interp.c)
12971
 
12972
Changes the filling rule for Type 1 fonts from winding-number to even-odd.
12973
This affects no properly designed fonts, and seems to match Adobe
12974
interpreters better.  (zchar1.c)
12975
 
12976
Implements non-standard Encodings in CFF fonts.  (gs_cff.ps)
12977
 
12978
Changes the default halftone screen for 600 dpi printers from 85 to 106 lpi,
12979
which reduces the number of halftone levels from 50 to 32 but produces
12980
visually better output.  (gs_init.ps)
12981
 
12982
</pre><h3><a name="V5.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
12983
 
12984
Fixes bugs:
12985
	- Pattern color spaces weren't supported.  (gs_pdf.ps, pdf_draw.ps)
12986
 
12987
Causes references to undefined named Destinations to be ignored rather than
12988
giving an error.  (pdf_main.ps)
12989
 
12990
</pre><h3><a name="V5.02_Library"></a>Library</h3><pre>
12991
 
12992
Fixes bugs:
12993
	- A 'const' was omitted in a declaration, upsetting several
12994
compilers.  (gxclread.c)
12995
	- arct and arcto gave an error for negative radii.  (gspath1.c)
12996
	- The collinearity check for arct[o] could cause some arcs to be
12997
rendered as single points.  (gspath1.c)
12998
	- Uncolored patterns sometimes came out blank, because the color
12999
wasn't set before calling the PaintProc.  (gspcolor.c)
13000
	- The phase for masking colored patterns was wrong, producing
13001
incorrect output.  (gspcolor.c)
13002
	- reversepath always appended the current position to the new path,
13003
rather than only doing so if the path just consisted of a single moveto.
13004
(gxpath2.c)
13005
	- cshow didn't restore the current font properly.  (gschar.h,
13006
gschar.c)
13007
	- The check for whether characters can be cached didn't consider
13008
PaintType values other than 0 and 2.  (gschar.c)
13009
	- The bounding box device didn't handle PageCount properly.
13010
(gdevbbox.c)
13011
	- Uncached fonts with a next_char procedure didn't set the glyph
13012
properly.  (gschar.c)
13013
	- Parallelograms with ax &lt; bx, ay &lt; by, and the 'a' edge to the
13014
right of the 'b' edge weren't filled, causing pixels to be omitted from some
13015
highly skewed images.  (gdevddrw.c)
13016
	- 12-bit-per-pixel images in portrait orientation filled each scan
13017
line with the value of the last pixel -- i.e., didn't work.  (gximage4.c)
13018
	- The path representation of a clipping path could include some
13019
inappropriate, leftover path segments.  (gxcpath.c)
13020
	- The angle for the miter check was computed in device space rather
13021
than in user space.  (gxstroke.c)
13022
	- TrueType fonts were lumpy, and the accents of accented characters
13023
were placed incorrectly.  (gstype42.c)
13024
	- Some macros used for generating device prototypes didn't
13025
parenthesize all uses of their parameters, causing possible errors if the
13026
parameters were expressions rather than numeric constants.  (gdevprn.h)
13027
	- When banding, strip halftones (typically produced by
13028
AccurateScreens) sometimes didn't have the correct phase.  (gxbitmap.h,
13029
gxclread.c)
13030
	- A minor change was required for correct compilation with Microsoft
13031
VC++.  (memory_.h)
13032
	- Under certain conditions, character shapes could get wildly
13033
distorted by hints.  (bug introduced in 5.01) (gxhint3.c)
13034
 
13035
For greater Adobe compatibility:
13036
	- Changes reversepath so that the implicit line created by closepath
13037
is not considered a "segment".  (gxpath2.c)
13038
 
13039
Fixes some minor compilation warnings not affecting code functionality.
13040
(gstype1.c)
13041
 
13042
Changes the font and scaled-font caches so that if the font has a UID
13043
(UniqueID or XUID), the UID and FontType are both considered part of the
13044
key, and we don't cache fonts with non-zero PaintType.  (The Red Book says
13045
that changing anything except the Encoding should also change or remove the
13046
UID, but some files don't do this.  The current fix is probably not
13047
sufficient, but it is a step in the right direction.)  (gxfcache.h,
13048
gxccache.c, gxccman.c)
13049
 
13050
Splits off the definitions of font_type and fbit_type into a separate file,
13051
since gxfcache.h now needs font_type.  (gxfcache.h, gxfont.h, gxftype.h)
13052
 
13053
Makes the Flex feature in Type 1 fonts conform to the published
13054
specification, rather than always producing curves.  The comment in the code
13055
(and in the NEWS entry for release 2.6) says that this breaks some very old
13056
Adobe fonts: if this turns out to be a problem, we'll figure out a test that
13057
will do the right thing for these fonts.  (gstype1.c)
13058
 
13059
Provides 'double' versions of some API functions to accommodate the
13060
increased use of doubles in the interpreter.  (gschar.h, gschar.c)
13061
 
13062
Adds a compile-time option to force the use of strip halftones, for
13063
debugging.  (gshtscr.c)
13064
 
13065
Changes the hint snapping algorithm in the Type 1 rasterizer so that it will
13066
only change a stem width by a maximum of 1/2 pixel rather than 1 pixel.
13067
This appears to help with dropouts at certain sizes.  (gxhint2.c)
13068
 
13069
Makes a few changes for clean compilation on BeOS.  (stdpre.h, stat_.h,
13070
gxcpath.c)
13071
 
13072
</pre>
13073
 
13074
<hr>
13075
 
13076
<h2><a name="Version5.01"></a>Version 5.01 (6/22/97)</h2>
13077
 
13078
<p>
13079
This fixes a few bugs reported in the 5.0 release.  This will be a
13080
commercially supported release.
13081
 
13082
<h3><a name="V5.01_Documentation"></a>Documentation</h3><pre>
13083
 
13084
Fixes bugs:
13085
	- README referred to an obsolete file devarch.txt.  (README)
13086
	- The comment on flip4x12 had a typo.  (gsflip.c)
13087
	- The algorithm comments for adjusted_y_spans_pixel weren't precise
13088
enough.  (gxfill.c)
13089
	- The usage message printed by the ps2pdf script didn't indicate
13090
that one can now insert options before the input file name.  (ps2pdf)
13091
	- The file searching documentation didn't indicate that paths
13092
beginning with ./ or ../ are considered "explicit" and not subject to
13093
searching.  (use.txt)
13094
	- The description of SEARCH_HERE_FIRST in the per-platform makefiles
13095
indicated that it only applied to initialization files, not to files
13096
specified on the command line as well.  (*.mak)
13097
	- There were still some references to 16-bit implementations.
13098
(install.txt)
13099
 
13100
Clarifies that -dNODISPLAY also suppresses output to other devices.
13101
(use.txt)
13102
 
13103
Adds the e-mail address for reporting problems to the bug report form, and
13104
also a space to report makefile changes.  (bug-form.txt)
13105
 
13106
Adds a note under -g indicating that it fixes the media size.  (use.txt)
13107
 
13108
Adds an explanation of why Ghostscript can't use the system libraries for
13109
the JPEG package.  (make.txt)
13110
 
13111
Notes that ps2ai doesn't work properly with Adobe's Helvetica-Oblique font,
13112
and other fonts whose original FontMatrix involves skewing or rotation.
13113
(psfiles.txt)
13114
 
13115
Updates the uniprint documentation slightly.  (devices.txt)
13116
 
13117
Notes that the new lj5 drivers do not work with the LJ5L.  (devs.mak)
13118
 
13119
Modifies the Aladdin Free Public License slightly to make it clearer that
13120
the exception for freely redistributable CD-ROMs only applies if the CD-ROM
13121
is being distributed by itself, not with anything else commercial.  (This
13122
has always been the case, but the previous wording wasn't clear enough.)
13123
(PUBLIC)
13124
 
13125
Notes that gcc with -O still has code generation problems on H-P RISC
13126
machines.  (make.txt)
13127
 
13128
Adds a pointer to Martin Lottermoser's hpdj driver.  (new-user.txt)
13129
 
13130
Enhances and reorganizes the documentation for building Ghostscript, in
13131
response to user feedback.  (make.txt, install.txt)
13132
 
13133
Adds a description of the EPSF recognition feature.  (language.txt)
13134
 
13135
</pre><h3><a name="V5.01_Procedures"></a>Procedures</h3><pre>
13136
 
13137
Fixes bugs:
13138
	- string__h was misspelled string_h in one place.  (lib.mak)
13139
	- gs_dps.ps wasn't installed by "make install".  (unix-end.mak)
13140
	- ccgs (used with non-ANSI C compilers) didn't do the right thing
13141
with -DPNG_USE_CONST.  (ccgs)
13142
 
13143
Adds support for version 96 of libpng, and updates all the makefiles to
13144
reference it.  (libpng.mak, *.mak)
13145
 
13146
Updates the MSVC makefiles to get rid of some warning messages and provide a
13147
way to specify a library path for the final link.  (msvc*.mak)
13148
 
13149
</pre><h3><a name="V5.01_Utilities"></a>Utilities</h3><pre>
13150
 
13151
Fixes bugs:
13152
	- The usage message for the gslp utility had a minor typo.
13153
(gslp.ps)
13154
	- The "line printer" utility didn't expand tabs properly when
13155
producing PostScript output.  (gslp.ps)
13156
	- The gslp utility didn't automatically include the date.  (gslp)
13157
	- The line printer scripts didn't pass the script name to the
13158
utility program, so the usage message didn't use the correct name.  (gsbj*,
13159
gsdj*, gslj*, gslp*, lp*)
13160
 
13161
Modifies the gslp utility so that invoking it with no arguments prints the
13162
usage message.  (gslp.ps)
13163
 
13164
Adds the ability to specify the number of bits per component to the
13165
CMYK-viewing utility.  (viewcmyk.ps)
13166
 
13167
Changes the ps2pdf script so that on Windows NT, as on Unix, it allows
13168
omitting the output file name, automatically replacing the extension of the
13169
input file with .pdf.  (ps2pdf.bat)
13170
 
13171
</pre><h3><a name="V5.01_Drivers"></a>Drivers</h3><pre>
13172
 
13173
Fixes bugs:
13174
	- Some compilers didn't accept a #define with the macro name on the
13175
next line.  (gdevpx.c)
13176
	- The procedure dash_pattern_eq was defined in two places.
13177
(gdevpdf.c)
13178
	- The uniprint driver sometimes dropped some output or got confused,
13179
because of a misunderstanding about how to update device procedure vectors
13180
properly.  (gdevupd.c)
13181
	- The PostScript and EPS writers produced binary output for images,
13182
which generally can't be sent to PostScript printers.  (gdevpsdf.h,
13183
gdevpdf.c, gdevps.c)
13184
	- The EPS writer put a %%EOF at the end of the file, which might
13185
cause problems for some spoolers if the file is embedded in another.
13186
(gdevps.c)
13187
 
13188
Changes the implementation of printer drivers so that they flush the output
13189
stream after each page.  We aren't absolutely sure that this is a good idea,
13190
but it prevents certain anomalous behavior where the last page isn't ejected
13191
properly.  (gdevprn.c)
13192
 
13193
Implements a long-delayed update to the mgr drivers, to restore the color
13194
mapping to an older one.  (gdevmgr.h, gdevmgr.c)
13195
 
13196
Updates the uniprint driver with a number of changes from its author.
13197
(gdevupd.c)
13198
 
13199
</pre><h3><a name="V5.01_Platforms"></a>Platforms</h3><pre>
13200
 
13201
Adds the JPEG, Postscript, and PCL XL drivers, which are included on all
13202
other platforms, to the MS Windows platforms.  (bcwin32.mak, msvc4.mak,
13203
msvc5.mak, watcw32.mak)
13204
 
13205
</pre><h3><a name="V5.01_Interpreter"></a>Interpreter</h3><pre>
13206
 
13207
Fixes bugs:
13208
	- composefont defined the resource with the font name and font
13209
directory interchanged.  (gs_cmap.ps)
13210
	- With dFIXEDMEDIA, documents requesting other sizes caused an error
13211
instead of clipping the page.  (gs_init.ps)
13212
	- PageSize Policy = 7 wasn't implemented.  (However, the current
13213
implementation is wrong.)  (gs_setpd.ps, zmedia2.c)
13214
	- FontType resource 42 wasn't defined even if Type 42 fonts were
13215
supported; similarly for FontType 9, 10, and 11 for CIDFonts.  (gs_cidfn.ps,
13216
gs_res.ps)
13217
	- The error handling machinery would break if the name /errordict
13218
was redefined.  (gs_init.ps)
13219
	- Level 1 systems got an /undefined in .doneshowpage.  (zdevice.c,
13220
zdevice2.c)
13221
	- Because of an initialization order problem, copy didn't work on
13222
gstates.  (zgeneric.c)
13223
 
13224
Adds a naive implementation of findcolorrendering.  (gs_lev2.ps, gs_res.ps)
13225
 
13226
Removes the 'stopped' around run_string[_begin/continue/end] so that, as in
13227
4.03, errors print a hex dump and exit with a non-zero code instead of
13228
printing a readable message and continuing.  (We aren't sure that this
13229
change didn't undo the fix in 5.0 regarding calling startjob from
13230
run_string.)  (gs_init.ps)
13231
 
13232
</pre><h3><a name="V5.01_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
13233
 
13234
Fixes bugs:
13235
	- stdin redirection failed for PDF files even if the new stdin was
13236
seekable.  This was fixed in 4.02, but the fix stopped working with the
13237
introduction of .runexec.  (pdf_main.ps)
13238
 
13239
Makes the cross-reference reader accept a startxref value that points at the
13240
EOL before the xref line.  The Adobe documentation doesn't allow this, but
13241
some real files are this way.  (pdf_main.ps)
13242
 
13243
</pre><h3><a name="V5.01_Library"></a>Library</h3><pre>
13244
 
13245
Fixes bugs:
13246
	- The bounding box of a completely empty path was reported as
13247
garbage.  (gxpath2.c)
13248
	- Stroking a path with more than one segment didn't produce correct
13249
output when anti-aliasing was used.  (gspaint.c)
13250
	- The alpha-buffer device returned an incorrect clipping box,
13251
causing output to be discarded.  (gdevabuf.c)
13252
	- gx_forward_get_clipping_box passed the wrong device to the target
13253
procedure, producing incorrect results.  (gdevnfwd.c)
13254
	- The sin/cos procedure did some unnecessary computations
13255
(performance bug only).  (gsmisc.c)
13256
	- The procedure for adjusting the ends of curves to match the
13257
tangents did some unnecessary computations (performance bug only).
13258
(gxpcopy.c)
13259
	- RAM-based banding always gave an invalidfileaccess error, due to a
13260
typo in memfile_fopen.  (gxclmem.c)
13261
	- The algorithms for deciding whether a line is thin still weren't
13262
correct.  (gxstroke.c)
13263
	- The fill adjustment values for the any-part-of-pixel case (adjust
13264
= 0.5) were (0.5-epsilon, 0.5+epsilon), which colored inappropriate
13265
additional pixels if the higher coordinate was integral.  With considerable
13266
trepidation, we have changed this to (0.5-epsilon,0.5), which does the right
13267
thing in every case we can think of.  (gxfill.c)
13268
	- When banding, paths were clipped to only 0.5 pixel outside their
13269
bounding box, which may be slightly too conservative; 1 pixel is safer.
13270
(gxclpath.c)
13271
	- The algorithm for testing whether an adjusted Y value spanned a
13272
pixel center was incorrect, causing some pixels to get colored incorrectly.
13273
(gxfill.c)
13274
	- 24-bit devices could cause a memory fault, by accessing a pointer
13275
just beyond the end of the line pointer array.  (gdevm24.c)
13276
	- Astonishingly enough, the determination of which hints were
13277
applicable to a given segment of a Type 1 character was wrong in several
13278
different places.  Fixing this in a way that correctly handled all allowed
13279
permutations of the coordinate system was not simple.  (gxfont1.h,
13280
gxhint1.c, gxhint3.c)
13281
	- The debugging printout macros didn't include the syntactic hack to
13282
prevent an 'else' from begin assigned to the wrong 'if'.  (gdebug.h)
13283
	- The bbox device was accidentally limited to 130 x 130 pixels (not
13284
130" x 130").  (bug introduced in 5.0) (gdevbbox.c)
13285
	- The bbox device didn't recognize PageBoundingBox in put_params,
13286
causing a possible /undefined error on [g]restore.  (gdevbbox.c)
13287
	- setlinewidth didn't take the absolute value of its operand.
13288
(zgstate.c)
13289
	- Some code formatting was slightly off.  (gximage5.c)
13290
	- Some extra pixels were written for Interpolated images, but they
13291
were immediately overwritten, so the output was correct.  (gximage5.c)
13292
 
13293
Changes the data flipping API from a macro to a procedure, adds a return
13294
value, and makes the individual flipping procedures private.  (gsflip.h,
13295
gsflip.c)
13296
 
13297
Adds (under an #ifdef FUTURE) code to allow passing multi-plane images
13298
through the band list.  (gxclpath.h, gxclimag.c, gxclread.c)
13299
 
13300
Adds (under an #ifdef FUTURE) code to allow passing interpolated images
13301
through the band list.  NOTE: interpolated images will appear slightly
13302
different than without banding, because the part of the image intersecting
13303
each band will be scaled slightly differently in the (device) Y direction.
13304
(gxclpath.h, gxclimag.c, gxclread.c, gximage.c)
13305
 
13306
Changes Type 1 hinting so that when it moves points on a curve, it does so
13307
by properly scaling the curve in the given direction.  (gxhint3.c)
13308
 
13309
</pre>
13310
 
13311
<hr>
13312
 
13313
<h2><a name="Version5.0"></a>Version 5.0 (6/6/97)</h2>
13314
 
13315
<p>
13316
This is the first public release since 4.03.
13317
 
13318
<h3><a name="V5.0_Documentation"></a>Documentation</h3><pre>
13319
 
13320
Fixes bugs:
13321
	- Fontmap.Sol was incorrectly referred to as Fontmap.Solaris.
13322
(use.txt)
13323
	- There was still a reference to pstoppm in the documentation.
13324
(psfiles.txt)
13325
	- The JPEG DOS source site information was out of date.  (jpeg.mak)
13326
	- The list of devices included in the distributed Unix makefiles was
13327
out of date.  (make.txt)
13328
	- The MCU size limitation on the DCT filters was documented
13329
incorrectly.  (current.txt)
13330
	- The URL for the uniprint driver home page was incorrect.
13331
(devices.txt)
13332
	- The makefiles referred to sfilefd.c, which is now named sfxfd.c.
13333
(gs.mak, *.mak)
13334
 
13335
Adds a VMS help file.  (gs-vms.hlp)
13336
 
13337
Removes documentation for Digital Unix (OSF/1) 1.2 and 1.3, which are now
13338
long obsolete, and updates the documentation for current versions.
13339
(make.txt)
13340
 
13341
Notes that there may be a problem with libpng version 0.95.  (libpng.mak)
13342
 
13343
Adds some specific documentation for the JPEG drivers.  (devices.txt)
13344
 
13345
Adds a suggestion that people compiling Ghostscript check the values of
13346
JVERSION and PVERSION.  (make.txt)
13347
 
13348
Removes the requirement for setting the LIB environment variable when
13349
compiling with MSVC.  (make.txt)
13350
 
13351
</pre><h3><a name="V5.0_Procedures"></a>Procedures</h3><pre>
13352
 
13353
Fixes bugs:
13354
	- There were a number of small errors in the new OpenVMS makefile.
13355
(openvms.mak)
13356
	- The MSVC makefiles omitted a necessary switch to work around some
13357
"unspecified Pentium bugs".  (msvccom.mak)
13358
	- The Borland makefile wasn't even close to working; fixing it
13359
required moving the compilation rule for genarch.exe into the
13360
compiler-specific makefiles.  (bcwin32.mak, msvccom.mak, watcw32.mak,
13361
wincom.mak)
13362
	- There were some (harmless) undefined macro references in the MSVC
13363
makefile.  (msvccom.mak)
13364
 
13365
Makes it unnecessary to set the LIB environment variable for MSVC.
13366
(msvc4.mak, msvc5.mak, wincom.mak)
13367
 
13368
Adds a note on compiling with the cygwin32 gcc compiler for Windows NT.
13369
(make.txt)
13370
 
13371
Updates vms.mak yet again, hopefully for the last time.  (vms.mak)
13372
 
13373
Moves the CGM, JPEG, and MIFF file formats from DEVICE_DEVS8 to
13374
DEVICE_DEVS14 to shorten command lines; adds pcxcmyk to all platforms that
13375
include PCX format at all; adds jpeggray to all platforms that include jpeg.
13376
(devs.mak, *.mak)
13377
 
13378
Adds -DPNG_USE_CONST for compiling libpng, to get rid of compiler warning
13379
messages.  (gs.mak)
13380
 
13381
Removes obsolete makefiles from the fileset.  (tccommon.mak, tctail.mak)
13382
 
13383
</pre><h3><a name="V5.0_Interpreter"></a>Interpreter</h3><pre>
13384
 
13385
Fixes bugs:
13386
	- restore was broken if -dNOBIND was invoked.  This fix should have
13387
been in the 4.81 fileset, but was left out due to operator error.
13388
(gs_dps1.ps)
13389
	- Some compilers complained about macro argument replacement within
13390
a string literal.  (isave.c)
13391
	-dSAFER didn't allow opening the %stdxxx files, which caused the
13392
combination of -dSAFER and -dNOBIND to cause an infinite error.
13393
(gs_init.ps)
13394
	- If C code used run_string to execute a startjob, an error
13395
occurred.  (gs_init.ps)
13396
 
13397
</pre><h3><a name="V5.0_Library"></a>Library</h3><pre>
13398
 
13399
Fixes bugs:
13400
	- Some compilers complained about macro argument replacement within
13401
a string literal.  (gxclbits.c, gdevpdfi.c)
13402
	- At certain resolutions, a 1-pixel line of the wrong color could
13403
appear at one edge of landscape-oriented monobit images.  (This is the 4th
13404
or 5th time we have "fixed" this one infuriatingly fragile piece of code.)
13405
(gxfixed.h, gximage1.c)
13406
	- The optimized code for landscape monobit images overlooked the
13407
possibility of partial images, causing parts of images to be translated and
13408
possibly clipped.  (Yes, it's that same fragile piece of code.)
13409
(gximage1.c)
13410
	- The bounding box device allowed resetting its resolution, which
13411
could cause limitchecks from coordinate overflow.  Our fix is to initialize
13412
the device to a very high resolution (4000 dpi), which reduces the maximum
13413
page size it can handle to about 130" on a side.  (gdevbbox.c)
13414
	- The bounding box device wasn't identified as a page device.
13415
(gdevbbox.c)
13416
	- The bounding box device used alone disregarded changes in page
13417
size.  (gdevbbox.c)
13418
	- One old compiler didn't allow a structure member name to be the
13419
same as a typedef name.  (gximage.h, gximage.c, gximage4.c)
13420
	- The height and band intersection computations for banded images
13421
still weren't right, leading to inconsistencies in the band list and errors
13422
in the output (typically, thin horizontal white stripes at band boundaries).
13423
(gxclimag.c)
13424
 
13425
Adds an extensive memory dump facility to the standard allocator.
13426
Eventually this should be moved into a separate file, but it would be too
13427
disruptive to do this just before a release.  (gsalloc.c)
13428
 
13429
</pre>
13430
 
13431
<!-- [2.0 end contents] ==================================================== -->
13432
 
13433
<!-- [3.0 begin visible trailer] =========================================== -->
13434
<hr>
13435
 
13436
<p>
13437
<small>Copyright &copy; 1997, 1998, 1999, 2000 Aladdin Enterprises.
13438
All rights reserved.</small>
13439
 
13440
<p>
13441
This software is provided AS-IS with no warranty, either express or
13442
implied.
13443
 
13444
This software is distributed under license and may not be copied,
13445
modified or distributed except as expressly authorized under the terms
13446
of the license contained in the file LICENSE in this distribution.
13447
 
13448
For more information about licensing, please refer to
13449
http://www.ghostscript.com/licensing/. For information on
13450
commercial licensing, go to http://www.artifex.com/licensing/ or
13451
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
13452
San Rafael, CA  94903, U.S.A., +1(415)492-9861.
13453
 
13454
<p>
13455
<small>Ghostscript version 8.53, 20 October 2005
13456
 
13457
<!-- [3.0 end visible trailer] ============================================= -->
13458
 
13459
</body>
13460
</html>