xref: /plan9/sys/src/cmd/gs/doc/Details.htm (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3.org/TR/html4/strict.dtd">
2<html>
3<head>
4<title>Ghostscript change history (detailed)</title></title>
5<!-- generated by split_changelog.py from the output of cvs2cl.pl -->
6<!-- $Id: Details.htm,v 1.20 2005/10/20 20:14:37 ray Exp $ -->
7<link rel=stylesheet type="text/css" href="gs.css">
8</head>
9<body>
10
11<p><strong><a name="2005-10-20_1946"></a>
122005-10-20 19:46 Ray Johnston</strong></p>
13<blockquote>
14<pre>
15Update doc files and version files for 8.53 release.</pre>
16<p>[doc/API.htm 1.53, doc/Bug-form.htm 1.49, doc/Bug-info.htm 1.49, doc/C-style.htm 1.55, doc/Commprod.htm 1.41, doc/Copying.htm 1.39, doc/DLL.htm 1.43, doc/Deprecated.htm 1.20, doc/Details8.htm 1.24, doc/Develop.htm 1.159, doc/Devices.htm 1.90, doc/Drivers.htm 1.58, doc/Fonts.htm 1.51, doc/Helpers.htm 1.44, doc/History1.htm 1.39, doc/History2.htm 1.39, doc/History3.htm 1.39, doc/History4.htm 1.39, doc/History5.htm 1.41, doc/History6.htm 1.56, doc/History7.htm 1.44, doc/History8.htm 1.29, doc/Htmstyle.htm 1.44, doc/Install.htm 1.56, doc/Issues.htm 1.52, doc/Language.htm 1.98, doc/Lib.htm 1.43, doc/Maintain.htm 1.50, doc/Make.htm 1.90, doc/News.htm 1.168, doc/Projects.htm 1.67, doc/Ps-style.htm 1.37, doc/Ps2epsi.htm 1.42, doc/Ps2pdf.htm 1.88, doc/Ps2ps2.htm 1.7, doc/Psfiles.htm 1.68, doc/Readme.htm 1.71, doc/Release.htm 1.95, doc/Source.htm 1.39, doc/Testing.htm 1.37, doc/Unix-lpr.htm 1.39, doc/Use.htm 1.136, doc/Xfonts.htm 1.39, doc/gs-vms.hlp 1.37, man/dvipdf.1 1.37, man/font2c.1 1.37, man/gs.1 1.38, man/gslp.1 1.37, man/gsnd.1 1.37, man/pdf2dsc.1 1.36, man/pdf2ps.1 1.38, man/pdfopt.1 1.36, man/pf2afm.1 1.37, man/pfbtopfa.1 1.38, man/printafm.1 1.37, man/ps2ascii.1 1.37, man/ps2epsi.1 1.35, man/ps2pdf.1 1.42, man/ps2pdfwr.1 1.41, man/ps2ps.1 1.44, man/wftopfa.1 1.37, src/gscdef.c 1.58, src/version.mak 1.87]</p>
17</blockquote>
18
19<p><strong><a name="2005-10-20_1942"></a>
202005-10-20 19:42 Ray Johnston</strong></p>
21<blockquote>
22<pre>
23Remove trailing ^M (<cr>) characters.</pre>
24<p>[src/gdevbmp.c 1.12, src/slzwd.c 1.7]</p>
25</blockquote>
26
27<p><strong><a name="2005-10-20_1851"></a>
282005-10-20 18:51 Raph Levien</strong></p>
29<blockquote>
30<pre>
31Fixes broken compile on amd64 platforms (see bug #688047 for details).
32This patch should be safe on all platforms with 32-bit longs, and is
33my best guess as to the right thing to do on Tru64 (where long is 64
34bits).</pre>
35<p>[src/tttypes.h 1.3]</p>
36</blockquote>
37
38<p><strong><a name="2005-10-20_1304"></a>
392005-10-20 13:04 Igor Melichev</strong></p>
40<blockquote>
41<pre>
42Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued 2).
43
44DETAILS :
45
46Bug 688167 "change of real number fomat from fixed to exponential format".
47
48The last patch doesn't correctly handle numbers between 1e-7 and 1e-2.
49
50EXPECTED DIFFERENCES :
51
52None.</pre>
53<p>[lib/gs_pdfwr.ps 1.52]</p>
54</blockquote>
55
56<p><strong><a name="2005-10-18_2031"></a>
572005-10-18 20:31 Igor Melichev</strong></p>
58<blockquote>
59<pre>
60Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued).
61
62DETAILS :
63
64Bug 688167 "change of real number fomat from fixed to exponential format".
65
66This improves the patch
67http://ghostscript.com/pipermail/gs-cvs/2005-September/005717.html
68with writing small reals in a fixed point number format.
69
70We did it after Raph's request in Comment #5 of the bug 688167.
71But we don't see a visible difference against the old implementation with any viewer.
72Therefore we believe that we shouldn't have done it (as we did before the implementation).
73Storing it now mainly for archiving purpose.
74
75If this change causes a problem, the author has no objection for unwinding it.
76
77EXPECTED DIFFERENCES :
78
79None.</pre>
80<p>[lib/gs_pdfwr.ps 1.51]</p>
81</blockquote>
82
83<p><strong><a name="2005-10-18_0905"></a>
842005-10-18 09:05 Igor Melichev</strong></p>
85<blockquote>
86<pre>
87Fix (pdfwrite) : Indexed colors were distorsed with encryption.
88
89DETAILS :
90
91Bug 688313 "pdfwrite : image colors depend on encryption".
92
93The old code applied encryption with a wrong (zero) object id to
94the palette of the indexed color space. After a viewer decrypts
95the palette with a right object id, colors appear wrong.
96
971. Use the PS string encoding instead the hexadecimal string encoding
98while converting the palette to PDF format (gdevpdfc.c).
99It provides a correct work of the part 3 below.
100See also part 4 below.
101
1022. Don't apply encryption when adding the palette
103to cos object (gdevpdfc.c, devs.mak).
104The old code was hacky, and new one is based on a general convention.
105
1063. Apply encryption with a right object id
107to the string which represents the palette
108when writing the cos object to the output PDF file.
109This is an implicit consequence of
110using the PS string encoding in the part 1
111due to a general convention about
112applying encryption when writing cos objects to the output file.
113
1144. Disable writing hexadecimal strings because their
115encryption is not yet implemented (gdevpdfu.c).
116
117The generated PDF may become longer in 1-2 kilobytes per palette
118due to PS encoding is less effective for palettes.
119This could be optimized with implelenting an encryption method
120for hexadecimal encoded strings in pdf_put_encoded_hex_string,
121and undo the part 1. The method should apply 3 filters :
122hexadecimal string decode, arc4 encode, hexadecimal string encode,
123because cos object stores strings in the outer format.
124Delaying this optimization for better times.
125
126EXPECTED DIFFERENCES :
127
128None.</pre>
129<p>[src/devs.mak 1.140, src/gdevpdfc.c 1.54, src/gdevpdfo.c 1.35, src/gdevpdfu.c 1.89]</p>
130</blockquote>
131
132<p><strong><a name="2005-10-18_0758"></a>
1332005-10-18 07:58 Igor Melichev</strong></p>
134<blockquote>
135<pre>
136Fix (pdfwrite) : Propagate error codes from pdf_write_value.
137
138DETAILS :
139
140This is a preparation for fixing the bug
141688313 "pdfwrite : image colors depend on encryption".
142
143In cases when no error happens, this code is algorithmocally equivalent.
144
145EXPECTED DIFFERENCES :
146
147None.</pre>
148<p>[src/gdevpdfo.c 1.34, src/gdevpdfu.c 1.88, src/gdevpdfx.h 1.138]</p>
149</blockquote>
150
151<p><strong><a name="2005-10-17_1923"></a>
1522005-10-17 19:23 Igor Melichev</strong></p>
153<blockquote>
154<pre>
155Fix (pdfwrite) : /BP pdfmark could create dead PDF objects (continiued).
156
157DETAILS :
158
159Bug 687560 "Invalid PDF if /BP pdfmarks with non-unique /_objdef".
160
1611. Prevent a potential crash while dereferencing NULL.
1622. Don't put unnamed objects into local_named_objects.
163
164Thanks to SaGS for pointing these problems out.
165
166EXPECTED DIFFERENCES :
167
168None.</pre>
169<p>[src/gdevpdfm.c 1.50]</p>
170</blockquote>
171
172<p><strong><a name="2005-10-12_1759"></a>
1732005-10-12 17:59 Igor Melichev</strong></p>
174<blockquote>
175<pre>
176Fix : Don't instantiate pattern when rendering to null device.
177
178DETAILS :
179
180Bug 688308 "Error: undefined; OffendingCommand: .type1execchar".
181
182The test case executes cshow or kshow with intrevene changing
183the current color space, causing a color load callout from fill_with_rule
184_after_ the callout completes. After that the check
185ctile->depth == dev->color_info.depth in gx_pattern_cache_lookup fails
186(not sure why - probably due to gsave-grestore in the pattern procedure).
187This patch skips entire character drawing when the device is null,
188so that those cumbersome stuff isn't envolved.
189
190EXPECTED DIFFERENCES :
191
192None.</pre>
193<p>[src/gsdevice.c 1.25, src/gspaint.c 1.10, src/gxdevcli.h 1.41]</p>
194</blockquote>
195
196<p><strong><a name="2005-10-12_1105"></a>
1972005-10-12 11:05 Igor Melichev</strong></p>
198<blockquote>
199<pre>
200Implementing a pointer stability validation in the garbager, continued.
201
202DETAILS :
203
204This patch is currently disabled, so the change is syntactically equivalent.
205
206Bug 688226 "The garbager must check a pointer stability.".
207
208This fixes a minor bug in the last patch.
209
210EXPECTED DIFFERENCES :
211
212None.</pre>
213<p>[src/ilocate.c 1.14]</p>
214</blockquote>
215
216<p><strong><a name="2005-10-12_1045"></a>
2172005-10-12 10:45 Igor Melichev</strong></p>
218<blockquote>
219<pre>
220Implementing a pointer stability validation in the garbager.
221
222DETAILS :
223
224This patch is currently disabled, so the change is syntacticly equivalent.
225
226Bug 688226 "The garbager must check a pointer stability.".
227
228This patch extends the object header with a space order number field,
229and compares the origin and the destination order numbers for each pointer
230while validating the heap. The enhanced object header is still
231within 16 bytes with the 32-bits architecture. See ialloc_validate_pointer_stability
232about the order number definition.
233
234This patch detected so many problems while running any document,
235as we can't enable it now. It is disabled with IGC_PTR_STABILITY_CHECK
236macro defined in gxobj.h .
237
238EXPECTED DIFFERENCES :
239
240None.</pre>
241<p>[src/gsalloc.c 1.24, src/gxalloc.h 1.12, src/gxobj.h 1.7, src/ialloc.c 1.8, src/ilocate.c 1.13]</p>
242</blockquote>
243
244<p><strong><a name="2005-10-12_0816"></a>
2452005-10-12 08:16 Igor Melichev</strong></p>
246<blockquote>
247<pre>
248Fix (pdfwrite) : Skip a clip path, which is set by setcachedevice (continued after July 28 205).
249
250DETAILS :
251
252Bug 687678 "pdfwrite : A Type 3 character cut-off".
253Bug 688327 "incorrect masking fill in pdfwrite".
254
255The old patch for this problem appears to define a too weak
256condition for recognizing a clipping set by setcachedevice, sectachedevice2.
257
258Now we think that a special stuff for this condition isn't needed because
259the condition may be united with the contition for "setcharwidth" :
260both things need to skip the clipping path, which was set exactly by
261setcachedevice, sectachedevice2 or setcharwidth.
262Checking the rectangle coordinates is not relevant.
263
264Therefore the change consists of 2 parts :
2651. Unwinding the patch http://ghostscript.com/pipermail/gs-cvs/2005-July/005625.html (IM1358)
266   (see also http://ghostscript.com/pipermail/gs-cvs/2005-July/005626.html).
2672. Remowing the (control == TEXT_SET_CHAR_WIDTH) check from pdf_text_set_cache,
268   so that the "caching" clipping path will be skipped in any case.
269
270Will add Bug688327.ps to comparefiles.
271
272EXPECTED DIFFERENCES :
273
274None.</pre>
275<p>[src/gdevpdfb.h 1.14, src/gdevpdfd.c 1.71, src/gdevpdfx.h 1.137, src/gdevpdti.c 1.53, src/gdevpdtt.c 1.104]</p>
276</blockquote>
277
278<p><strong><a name="2005-10-11_1004"></a>
2792005-10-11 10:04 Igor Melichev</strong></p>
280<blockquote>
281<pre>
282Fix (PS interpreter) : Allocate gs_screen_enum in same space as its components.
283
284DETAILS :
285
286Bug 688330 "A dangling pointer in gx_screen_enum.".
287
288The old code allocates gs_screen_enum in current memory space and frees to
289the memory space of its components, which is obtained from
290the 'setscreen' operand (the spot function).
291In the test case the first memory space is local, and the second one is global.
292We guess the last statement became true after a recent change to the PDF interpreter.
293
294This patch allocates gs_screen_enum in same space as its components.
295The pritotype of zscreen_enum_init has been changed due to no method for
296obtaining a space attribute value for iref from a gs_memory_t instance
297(well, generally it is impossible, but one could solve if the memory
298allocator is a PS interpreter's allocator except stable ones).
299
300We noticed that components of gs_screen_enum have pointers to memory
301allocator structures, but don't list them in the related memory descriptors.
302We're not sure whether a memory allocator structure may relocate or not -
303our investigation through code didn't give an unique answer.
304For now we leave component descriptors as they were before the patch.
305
306EXPECTED DIFFERENCES :
307
308None.</pre>
309<p>[src/iht.h 1.6, src/zht.c 1.8, src/zht1.c 1.7, src/zht2.c 1.14]</p>
310</blockquote>
311
312<p><strong><a name="2005-10-10_1909"></a>
3132005-10-10 19:09 Igor Melichev</strong></p>
314<blockquote>
315<pre>
316Fix: Cygwin/gcc warninhs.
317
318EXPECTED DIFFERENCES :
319
320None.</pre>
321<p>[src/devs.mak 1.139, src/gdevpdfb.c 1.34]</p>
322</blockquote>
323
324<p><strong><a name="2005-10-10_1858"></a>
3252005-10-10 18:58 Igor Melichev</strong></p>
326<blockquote>
327<pre>
328Optimizing the transparency compositor.
329
330DETAILS :
331
332Bug 688255 "ai7 pdf fails on 7.03, runs for ten + minutes on 8.51".
333
334The old code always allocates a transparency buffers for entire band.
335The new code accounts group bbox to minimize buffers.
336Due to that buffers appear empty for many of bands.
337The time consumption for the test case of the bug 688255 is dropped in about 100 times
338(from 8000 seconds to 71 seconds on a 3.07GHz machine, measured with debug build).
339
3401. The transparency bbox computes in pdf14_begin_transparency_group from
341   the group bbox and the CTM (gdevp14.c).
3422. Handle an empty buffer pdf14_buf_new, pdf14_pop_transparency_group (gdevp14.c).
3433. Fixed a bug in the rectangle clipping in
344   pdf14_mark_fill_rectangle, pdf14_mark_fill_rectangle_ko_simple.
345   The old code didn't sense it because bbox always covered entire band (gdevp14.c).
3464. Write the bbox to clist in c_pdf14trans_write and read it in c_pdf14trans_read.
3475. The pdf14 compositor needs CTM to transform the group bbox to the device space.
348   Forced the writing of CTM to clist before writing the compositor in clist_create_compositor.
349   (Sorry, it appears some ugly due to pcte->type->procs.write creates a body
350   of a command, but we need to create a set of two commands;
351   Another minor optimization - a narrowing the set of bands - is delayed,
352   see comments in code in clist_create_compositor) (gxclimag.c).
3536. New functions cmd_write_ctm_return_length, cmd_write_ctm are factored out for (5)
354   (gxclpath.c, gxclpath.h). This part of the change is algorithmically eqiuivalent.
3557. Minor change : fixed coding style of "} else {" in gdevp14.c .
356
357EXPECTED DIFFERENCES :
358
359None.</pre>
360<p>[src/gdevp14.c 1.35, src/gxclimag.c 1.13, src/gxclpath.c 1.21, src/gxclpath.h 1.13]</p>
361</blockquote>
362
363<p><strong><a name="2005-10-07_1949"></a>
3642005-10-07 19:49 Ray Johnston</strong></p>
365<blockquote>
366<pre>
367Add missing space in CVS PRE-RELEASE string.</pre>
368<p>[src/gscdef.c 1.57]</p>
369</blockquote>
370
371<p><strong><a name="2005-10-07_1946"></a>
3722005-10-07 19:46 Ray Johnston</strong></p>
373<blockquote>
374<pre>
375Bump version after the 8.52 release (to 8.53 CVS PRE-RELEASE).</pre>
376<p>[doc/News.htm 1.167, lib/gs_init.ps 1.120, src/gscdef.c 1.56, src/version.mak 1.86]</p>
377</blockquote>
378</body>
379</html>
380