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 4.n</title> 5<!-- $Id: History4.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ --> 6<!-- Originally: history4.txt --> 7<!-- 8 WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to 9 re-create the table of contents here, because it will replace the 10 hand-edited TOC subheads with a separate subhead for each H2 in 11 the body of the file. Or if you do, first look at the original 12 TOC to see how to edit it for visual conciseness. 13--> 14<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style"> 15</head> 16 17<body> 18<!-- [1.0 begin visible header] ============================================ --> 19 20<!-- [1.1 begin headline] ================================================== --> 21 22<h1>History of Ghostscript versions 4.n</h1> 23 24<!-- [1.1 end headline] ==================================================== --> 25 26<!-- [1.2 begin table of contents] ========================================= --> 27 28<h2>Table of contents</h2> 29 30<blockquote><ul> 31<li><a href="#Version4.81">Version 4.81 (6/1/97)</a> 32<ul> 33<li><a href="#V4.81_Documentation">Documentation</a>, 34 <a href="#V4.81_Procedures">Procedures</a>, 35 <a href="#V4.81_Utilities">Utilities</a>, 36 <a href="#V4.81_Drivers">Drivers</a>, 37 <a href="#V4.81_Platforms">Platforms</a>, 38 <a href="#V4.81_Interpreter">Interpreter</a>, 39 <a href="#V4.81_Library">Library</a> 40</ul> 41<li><a href="#Version4.80">Version 4.80 (limited) (5/28/97)</a> 42<ul> 43<li><a href="#V4.80_Documentation">Documentation</a>, 44 <a href="#V4.80_Procedures">Procedures</a>, 45 <a href="#V4.80_Utilities">Utilities</a>, 46 <a href="#V4.80_Drivers">Drivers</a>, 47 <a href="#V4.80_Platforms">Platforms</a>, 48 <a href="#V4.80_Fonts">Fonts</a>, 49 <a href="#V4.80_Interpreter">Interpreter</a>, 50 <a href="#V4.80_Streams">Streams</a>, 51 <a href="#V4.80_Library">Library</a> 52</ul> 53<li><a href="#Version4.74">Version 4.74 (limited) (5/5/97)</a> 54<ul> 55<li><a href="#V4.74_Documentation">Documentation</a>, 56 <a href="#V4.74_Utilities">Utilities</a>, 57 <a href="#V4.74_Drivers">Drivers</a>, 58 <a href="#V4.74_Interpreter">Interpreter</a>, 59 <a href="#V4.74_Streams">Streams</a>, 60 <a href="#V4.74_Library">Library</a> 61</ul> 62<li><a href="#Version4.73">Version 4.73 (limited) (4/19/97)</a> 63<ul> 64<li><a href="#V4.73_Documentation">Documentation</a>, 65 <a href="#V4.73_Procedures">Procedures</a>, 66 <a href="#V4.73_Utilities">Utilities</a>, 67 <a href="#V4.73_Drivers">Drivers</a>, 68 <a href="#V4.73_Platforms">Platforms</a>, 69 <a href="#V4.73_Interpreter">Interpreter</a>, 70 <a href="#V4.73_Interpreter_PDF">Interpreter (PDF)</a>, 71 <a href="#V4.73_Streams">Streams</a>, 72 <a href="#V4.73_Library">Library</a> 73</ul> 74<li><a href="#Version4.72">Version 4.72 (limited) (4/14/97)</a> 75<ul> 76<li><a href="#V4.72_Documentation">Documentation</a>, 77 <a href="#V4.72_Procedures">Procedures</a>, 78 <a href="#V4.72_Drivers">Drivers</a>, 79 <a href="#V4.72_Platforms">Platforms</a>, 80 <a href="#V4.72_Interpreter">Interpreter</a>, 81 <a href="#V4.72_Interpreter_PDF">Interpreter (PDF)</a>, 82 <a href="#V4.72_Streams">Streams</a>, 83 <a href="#V4.72_Library">Library</a> 84</ul> 85<li><a href="#Version4.71">Version 4.71 (limited) (3/31/97)</a> 86<ul> 87<li><a href="#V4.71_Documentation">Documentation</a>, 88 <a href="#V4.71_Procedures">Procedures</a>, 89 <a href="#V4.71_Drivers">Drivers</a>, 90 <a href="#V4.71_Interpreter">Interpreter</a>, 91 <a href="#V4.71_Streams">Streams</a>, 92 <a href="#V4.71_Library">Library</a> 93</ul> 94<li><a href="#Version4.70">Version 4.70 (limited) (3/26/97)</a> 95<ul> 96<li><a href="#V4.70_Documentation">Documentation</a>, 97 <a href="#V4.70_Procedures">Procedures</a>, 98 <a href="#V4.70_Drivers">Drivers</a>, 99 <a href="#V4.70_Platforms">Platforms</a>, 100 <a href="#V4.70_Interpreter">Interpreter</a>, 101 <a href="#V4.70_Interpreter_PDF">Interpreter (PDF)</a>, 102 <a href="#V4.70_Streams">Streams</a>, 103 <a href="#V4.70_Library">Library</a> 104</ul> 105<li><a href="#Version4.61">Version 4.61 (limited) (3/13/97)</a> 106<ul> 107<li><a href="#V4.61_Documentation">Documentation</a>, 108 <a href="#V4.61_Procedures">Procedures</a>, 109 <a href="#V4.61_Drivers">Drivers</a>, 110 <a href="#V4.61_Platforms">Platforms</a>, 111 <a href="#V4.61_Interpreter">Interpreter</a>, 112 <a href="#V4.61_Interpreter_PDF">Interpreter (PDF)</a>, 113 <a href="#V4.61_Streams">Streams</a>, 114 <a href="#V4.61_Library">Library</a> 115</ul> 116<li><a href="#Version4.60">Version 4.60 (limited) (3/2/97)</a> 117<ul> 118<li><a href="#V4.60_Documentation">Documentation</a>, 119 <a href="#V4.60_Procedures">Procedures</a>, 120 <a href="#V4.60_Drivers">Drivers</a>, 121 <a href="#V4.60_Platforms">Platforms</a>, 122 <a href="#V4.60_Fonts">Fonts</a>, 123 <a href="#V4.60_Interpreter">Interpreter</a>, 124 <a href="#V4.60_Interpreter_PDF">Interpreter (PDF)</a>, 125 <a href="#V4.60_Streams">Streams</a>, 126 <a href="#V4.60_Library">Library</a> 127</ul> 128<li><a href="#Version4.51">Version 4.51 (limited) (2/9/97)</a> 129<ul> 130<li><a href="#V4.51_Procedures">Procedures</a>, 131 <a href="#V4.51_Drivers">Drivers</a>, 132 <a href="#V4.51_Platforms">Platforms</a>, 133 <a href="#V4.51_Interpreter">Interpreter</a>, 134 <a href="#V4.51_Streams">Streams</a>, 135 <a href="#V4.51_Library">Library</a> 136</ul> 137<li><a href="#Version4.50">Version 4.50 (limited) (1/31/97)</a> 138<ul> 139<li><a href="#V4.50_Documentation">Documentation</a>, 140 <a href="#V4.50_Procedures">Procedures</a>, 141 <a href="#V4.50_Drivers">Drivers</a>, 142 <a href="#V4.50_Platforms">Platforms</a>, 143 <a href="#V4.50_Interpreter">Interpreter</a>, 144 <a href="#V4.50_Streams">Streams</a>, 145 <a href="#V4.50_Library">Library</a> 146</ul> 147<li><a href="#Version4.41">Version 4.41 (private) (1/21/97)</a> 148<ul> 149<li><a href="#V4.41_Procedures">Procedures</a>, 150 <a href="#V4.41_Drivers">Drivers</a>, 151 <a href="#V4.41_Fonts">Fonts</a>, 152 <a href="#V4.41_Interpreter">Interpreter</a>, 153 <a href="#V4.41_Streams">Streams</a>, 154 <a href="#V4.41_Library">Library</a> 155</ul> 156<li><a href="#Version4.40">Version 4.40 (private) (1/13/97)</a> 157<ul> 158<li><a href="#V4.40_Documentation">Documentation</a>, 159 <a href="#V4.40_Utilities">Utilities</a>, 160 <a href="#V4.40_Drivers">Drivers</a>, 161 <a href="#V4.40_Interpreter">Interpreter</a>, 162 <a href="#V4.40_Interpreter_PDF">Interpreter (PDF)</a>, 163 <a href="#V4.40_Library">Library</a> 164</ul> 165<li><a href="#Version4.39">Version 4.39 (limited) (1/1/97)</a> 166<ul> 167<li><a href="#V4.39_Documentation">Documentation</a>, 168 <a href="#V4.39_Procedures">Procedures</a>, 169 <a href="#V4.39_Utilities">Utilities</a>, 170 <a href="#V4.39_Drivers">Drivers</a>, 171 <a href="#V4.39_Interpreter">Interpreter</a>, 172 <a href="#V4.39_Streams">Streams</a>, 173 <a href="#V4.39_Library">Library</a> 174</ul> 175<li><a href="#Version4.38">Version 4.38 (limited) (12/20/96)</a> 176<ul> 177<li><a href="#V4.38_Interpreter">Interpreter</a>, 178 <a href="#V4.38_Streams">Streams</a>, 179 <a href="#V4.38_Library">Library</a> 180</ul> 181<li><a href="#Version4.37">Version 4.37 (limited) (12/10/96)</a> 182<ul> 183<li><a href="#V4.37_Fonts">Fonts</a>, 184 <a href="#V4.37_Interpreter">Interpreter</a>, 185 <a href="#V4.37_Interpreter_PDF">Interpreter (PDF)</a>, 186 <a href="#V4.37_Library">Library</a> 187</ul> 188<li><a href="#Version4.36">Version 4.36 (limited) (12/3/96)</a> 189<ul> 190<li><a href="#V4.36_Documentation">Documentation</a>, 191 <a href="#V4.36_Drivers">Drivers</a>, 192 <a href="#V4.36_Interpreter">Interpreter</a>, 193 <a href="#V4.36_Library">Library</a> 194</ul> 195<li><a href="#Version4.35">Version 4.35 (limited) (11/24/96)</a> 196<ul> 197<li><a href="#V4.35_Documentation">Documentation</a>, 198 <a href="#V4.35_Procedures">Procedures</a>, 199 <a href="#V4.35_Interpreter">Interpreter</a>, 200 <a href="#V4.35_Streams">Streams</a>, 201 <a href="#V4.35_Library">Library</a> 202</ul> 203<li><a href="#Version4.34">Version 4.34 (limited) (11/18/96)</a> 204<ul> 205<li><a href="#V4.34_Documentation">Documentation</a>, 206 <a href="#V4.34_Procedures">Procedures</a>, 207 <a href="#V4.34_Drivers">Drivers</a>, 208 <a href="#V4.34_Interpreter">Interpreter</a>, 209 <a href="#V4.34_Streams">Streams</a>, 210 <a href="#V4.34_Library">Library</a> 211</ul> 212<li><a href="#Version4.33">Version 4.33 (limited) (11/6/96)</a> 213<ul> 214<li><a href="#V4.33_Documentation">Documentation</a>, 215 <a href="#V4.33_Procedures">Procedures</a>, 216 <a href="#V4.33_Interpreter">Interpreter</a>, 217 <a href="#V4.33_Library">Library</a> 218</ul> 219<li><a href="#Version4.32">Version 4.32 (limited) (11/1/96)</a> 220<ul> 221<li><a href="#V4.32_Documentation">Documentation</a>, 222 <a href="#V4.32_Drivers">Drivers</a>, 223 <a href="#V4.32_Platforms">Platforms</a>, 224 <a href="#V4.32_Fonts">Fonts</a>, 225 <a href="#V4.32_Interpreter">Interpreter</a>, 226 <a href="#V4.32_Library">Library</a> 227</ul> 228<li><a href="#Version4.31">Version 4.31 (limited) (10/27/96)</a> 229<ul> 230<li><a href="#V4.31_Documentation">Documentation</a>, 231 <a href="#V4.31_Procedures">Procedures</a>, 232 <a href="#V4.31_Platforms">Platforms</a>, 233 <a href="#V4.31_Interpreter">Interpreter</a>, 234 <a href="#V4.31_Interpreter_PDF">Interpreter (PDF)</a>, 235 <a href="#V4.31_Streams">Streams</a>, 236 <a href="#V4.31_Library">Library</a> 237</ul> 238<li><a href="#Version4.30">Version 4.30 (limited) (10/23/96)</a> 239<ul> 240<li><a href="#V4.30_Documentation">Documentation</a>, 241 <a href="#V4.30_Drivers">Drivers</a>, 242 <a href="#V4.30_Platforms">Platforms</a>, 243 <a href="#V4.30_Fonts">Fonts</a>, 244 <a href="#V4.30_Interpreter">Interpreter</a>, 245 <a href="#V4.30_Library">Library</a> 246</ul> 247<li><a href="#Version4.21">Version 4.21 (limited) (10/17/96)</a> 248<ul> 249<li><a href="#V4.21_Documentation">Documentation</a>, 250 <a href="#V4.21_Procedures">Procedures</a>, 251 <a href="#V4.21_Drivers">Drivers</a>, 252 <a href="#V4.21_Platforms">Platforms</a>, 253 <a href="#V4.21_Fonts">Fonts</a>, 254 <a href="#V4.21_Interpreter">Interpreter</a>, 255 <a href="#V4.21_Library">Library</a> 256</ul> 257<li><a href="#Version4.20">Version 4.20 (limited) (10/13/96)</a> 258<ul> 259<li><a href="#V4.20_Documentation">Documentation</a>, 260 <a href="#V4.20_Procedures">Procedures</a>, 261 <a href="#V4.20_Utilities">Utilities</a>, 262 <a href="#V4.20_Drivers">Drivers</a>, 263 <a href="#V4.20_Interpreter">Interpreter</a>, 264 <a href="#V4.20_Library">Library</a> 265</ul> 266<li><a href="#Version4.10">Version 4.10 (limited) (9/25/96)</a> 267<ul> 268<li><a href="#V4.10_Documentation">Documentation</a>, 269 <a href="#V4.10_Utilities">Utilities</a>, 270 <a href="#V4.10_Drivers">Drivers</a>, 271 <a href="#V4.10_Interpreter">Interpreter</a>, 272 <a href="#V4.10_Interpreter_PDF">Interpreter (PDF)</a>, 273 <a href="#V4.10_Library">Library</a> 274</ul> 275<li><a href="#Version4.03">Version 4.03 (9/23/96)</a> 276<ul> 277<li><a href="#V4.03_Documentation">Documentation</a>, 278 <a href="#V4.03_Procedures">Procedures</a>, 279 <a href="#V4.03_Drivers">Drivers</a>, 280 <a href="#V4.03_Fonts">Fonts</a>, 281 <a href="#V4.03_Streams">Streams</a> 282</ul> 283<li><a href="#Version4.02">Version 4.02 (9/19/96)</a> 284<ul> 285<li><a href="#V4.02_Documentation">Documentation</a>, 286 <a href="#V4.02_Procedures">Procedures</a>, 287 <a href="#V4.02_Utilities">Utilities</a>, 288 <a href="#V4.02_Drivers">Drivers</a>, 289 <a href="#V4.02_Platforms">Platforms</a>, 290 <a href="#V4.02_Interpreter">Interpreter</a>, 291 <a href="#V4.02_Interpreter_PDF">Interpreter (PDF)</a>, 292 <a href="#V4.02_Streams">Streams</a>, 293 <a href="#V4.02_Library">Library</a> 294</ul> 295<li><a href="#Version4.01">Version 4.01 (7/10/96)</a> 296<ul> 297<li><a href="#V4.01_Documentation">Documentation</a>, 298 <a href="#V4.01_Procedures">Procedures</a>, 299 <a href="#V4.01_Utilities">Utilities</a>, 300 <a href="#V4.01_Platforms">Platforms</a>, 301 <a href="#V4.01_Platforms">Platforms</a>, 302 <a href="#V4.01_Interpreter">Interpreter</a>, 303 <a href="#V4.01_Library">Library</a> 304</ul> 305<li><a href="#Version4.0">Version 4.0 (6/28/96)</a> 306<ul> 307<li><a href="#V4.0_Documentation">Documentation</a>, 308 <a href="#V4.0_Procedures">Procedures</a>, 309 <a href="#V4.0_Utilities">Utilities</a>, 310 <a href="#V4.0_Drivers">Drivers</a>, 311 <a href="#V4.0_Platforms">Platforms</a>, 312 <a href="#V4.0_Interpreter">Interpreter</a>, 313 <a href="#V4.0_Streams">Streams</a>, 314 <a href="#V4.0_Library">Library</a> 315</ul> 316</ul></blockquote> 317 318<!-- [1.2 end table of contents] =========================================== --> 319 320<!-- [1.3 begin hint] ====================================================== --> 321 322<p> 323This document is a history of Ghostscript releases numbered 4.n. For more 324recent changes, see the the other history documents and, for the latest 325versions, the news: 326 327<blockquote> 328<a href="News.htm">News</a><br> 329History of Ghostscript versions 4.n (this document)<br> 330<a href="History3.htm">History of Ghostscript versions 3.n</a><br> 331<a href="History2.htm">History of Ghostscript versions 2.n</a><br> 332<a href="History1.htm">History of Ghostscript versions 1.n</a> 333</blockquote> 334 335<p>For other information, see the <a href="Readme.htm">Ghostscript 336overview</a>. 337 338<!-- [1.3 end hint] ======================================================== --> 339 340<hr> 341 342<!-- [1.0 end visible header] ============================================== --> 343 344<h2><a name="Version4.81"></a>Version 4.81 (6/1/97)</h2> 345 346<p> 347This is a last-minute set of bug fixes before the 5.0 release. 348 349<h3><a name="V4.81_Documentation"></a>Documentation</h3><pre> 350 351Adds some overlooked helpers to the list. (helpers.txt) 352 353</pre><h3><a name="V4.81_Procedures"></a>Procedures</h3><pre> 354 355Makes a distinction between 2-part and 3-digit version numbers. 356(version.mak, vms.mak) 357 358</pre><h3><a name="V4.81_Utilities"></a>Utilities</h3><pre> 359 360Develops the Type 1 to CFF converter a little further; it is still NOT 361USABLE. (t1tot2.ps) 362 363Removes the pstoppm.ps script, since the p*m drivers supersede it. 364(pstoppm.ps, unix-end.mak) 365 366</pre><h3><a name="V4.81_Drivers"></a>Drivers</h3><pre> 367 368Fixes bugs: 369 - The PDF writer sometimes omitted an ET command before setting the 370clip path. (gdevpdf.c) 371 - The PDF writer didn't initialize the "vector" state, leading to 372some redundant output (performance bug only). (gdevpdf.c) 373 - The PDF writer wrote clip paths even when they included the entire 374page (performance bug only). (gdevpdf.c) 375 376Changes the PDF writer so that it recognizes not only the 14 built-in fonts 377but any font with the same UniqueID and metrics. This covers some common 378cases of re-registering a font with a variant Encoding. (gs_pdfwr.ps) 379 380</pre><h3><a name="V4.81_Platforms"></a>Platforms</h3><pre> 381 382Fixes bugs: 383 - SEARCH_HERE_FIRST was accidentally set to 0 on MS Windows 384platforms. (bcwin32.mak, msvc4.mak, msvc5.mak, watcw32.mak) 385 386Adds code to remove "" around arguments in the command line passed to 387WinMain (MS Windows platforms). (dwmain.cpp, dwmainc.cpp) 388 389</pre><h3><a name="V4.81_Interpreter"></a>Interpreter</h3><pre> 390 391Fixes bugs: 392 - setsystemparams was broken. (gs_lev2.ps) 393 - restore was broken if -dNOBIND was invoked. (gs_dps1.ps) 394 - deviceinfo returned much more information than it should. 395(gs_dps.ps) 396 - The fix for the default EndPage procedures not popping their page 397count operand from the stack was wrong. (gs_init.ps, gs_setpd.ps) 398 399</pre><h3><a name="V4.81_Library"></a>Library</h3><pre> 400 401Fixes bugs: 402 - The saved character origin took the translation component of the 403FontMatrix into account, which caused charpath on fonts with non-zero 404translation in the FontMatrix to produce incorrect results. (gschar.c) 405 406Removes incorrect access attributes on a couple of files. (gdevpdfm.c, 407gxclist.h) 408 409</pre> 410 411<h2><a name="Version4.80"></a>Version 4.80 (limited) (5/28/97)</h2> 412 413<p> 414This is the candidate fileset for the 5.0 release. 415 416<h3><a name="V4.80_Documentation"></a>Documentation</h3><pre> 417 418Fixes bugs: 419 - The one-line description of the color image rendering module was 420incorrect. (gximage3.c) 421 - Some of the VMS documentation was out of date. (make.txt, 422use.txt) 423 - The description of the file name separator for -sFONTMAP= was 424wrong. (use.txt) 425 - PSFile was misspelled PSfile. (use.txt) 426 - There were some minor typos. (gstype1.h) 427 - The build instructions had a lot of obsolete information for PC 428environments, and didn't cover Microsoft Visual C++. (make.txt) 429 430Explains that -sPAPERSIZE= only specifies the default papersize, and that 431forcing a particular paper size also requires -dFIXEDMEDIA. (use.txt) 432 433Adds information about building with GNU make on OpenVMS. (make.txt) 434 435Clarifies the meaning of EOFC for streams. (strimpl.h) 436 437Documents the new dictionary argument for the eexecDecode filter. 438(language.doc) 439 440</pre><h3><a name="V4.80_Procedures"></a>Procedures</h3><pre> 441 442Fixes bugs: 443 - gs_epsf.ps didn't get installed on Unix systems. (unix-end.mak) 444 - The code wouldn't build with libpng 0.95b. (libpng.mak) 445 - One of the VMS scripts used CC_QUAL instead of CC_DEF. 446(vms-cc.mak) 447 - version.mak wasn't included in a dependency list. (unix-end.mak) 448 449Brings the VMS DCL script up to date again (for the last time, we hope). 450(vms.mak) 451 452Modifies all platform-independent uses of upper-case command line arguments 453to deal properly with VMS, where the shell converts all command line 454arguments to lower case, without requiring quotation. (devs.mak, gs.mak, 455int.mak, lib.mak, zlib.mak) 456 457Moves the compilation rules for the third-party libraries into gs.mak, so 458they can be used to compile the callers as well. (gs.mak, jpeg.mak, 459libpng.mak, zlib.mak) 460 461Adds a set of files that allow building on OpenVMS using GNU make (slightly 462patched). The timing on this is unfortunate, but we've wanted this for a 463very long time. NOTE: be sure to look in the OpenVMS section of make.txt 464for information on patching GNU make. (openvms.mak, append_l.com, 465rm_all.com, rm_one.com, copy_one.com) 466 467Adds new makefiles for building on 32-bit Windows with Borland, Watcom, and 468Microsoft Visual C++ (versions 4.x and 5.0). The timing on this is 469unfortunate too, but having this capability is so important that we couldn't 470pass it up. (bcwin32.mak, msvc4.mak, msvc5.mak, msvccom.mak, watcw32.mak, 471wincom.mak) 472 473Removes now-obsolete makefiles. (dwcommon.mak, msc.mak, msvcwint.mak, 474mscbegin.bat, watcwin.mak) 475 476</pre><h3><a name="V4.80_Utilities"></a>Utilities</h3><pre> 477 478Extends echogs to work in VMS environments, where the shell converts all 479command line arguments to lower case, without requiring quotation. 480(echogs.c) 481 482Adds a sketch of a utility for converting Type 1 fonts to CFF. DOESN'T WORK 483YET: DON'T TRY TO USE IT. (t1tot2.ps, type1ops.ps, writecff.ps) 484 485</pre><h3><a name="V4.80_Drivers"></a>Drivers</h3><pre> 486 487Fixes bugs: 488 - A type declaration wasn't compatible with libpng 0.95. 489(gdevpng.c) 490 - kshow wasn't handled properly when producing PDF output. 491(gs_pdfwr.ps) 492 - The PDF writer put out unnecessary ET/BT commands. (gdevpdfx.h, 493gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c) 494 - The PCL XL writer put out real numbers for the miter limit, which 495are not allowed (!). (gdevpx.c) 496 - The PCL XL writer didn't combine successive curves into a single 497curve command (performance bug only). (gdevpx.c) 498 - The PCL XL writer could write uncompressed images with a tag 499saying they were compressed. (gdevpx.c) 500 - The PCL XL writer always selected U.S. letter paper, rather than 501the requested size. (gdevpxen.h, gdevpx.c) 502 - The PCL XL writer reselected the paper size on every page, even if 503it hadn't changed. (gdevpx.c) 504 - The PCL XL writer always used shorts for line and curve 505coordinates, rather than using bytes when possible (performance bug only). 506(gdevpx.c) 507 - Because of a compiler bug, a macro with argument conflicted with a 508variable name. (gdevpdfx.h, gdevpdf.c) 509 - A picky compiler objected to an extern for an undefined structure. 510(gdevpsdf.h) 511 - The PDF writer sometimes didn't reset the clipping path, causing 512bitmaps or rectangle to disappear. (gdevpdf.c, gdevpdfi.c) 513 - The PDF writer produced invalid output if the first page was 514blank. (gdevpdf.c) 515 - The AutoRotatePages parameter for PostScript and PDF output (which 516doesn't actually do anything yet) incorrectly expected a Boolean value 517rather than an enumeration. (gdevpsdf.h, gdevpsdf.c) 518 - Some places returned -1 for an error without calling gs_note_error 519or gs_return_error. (gdevm1.c, gdevmpla.c, gdevrun.c, gxclpath.c) 520 - The PCL XL writer produced extremely large files because it didn't 521download character bitmaps. (OK, this isn't really a bug fix.) (gdevpx.c) 522 - The forwarding implementation of get_page_device didn't do the 523right thing. (gdevnfwd.c) 524 - The x11alpha device didn't implement get_params properly, leading 525to anomalous behavior. (gdevxalt.c) 526 - The PDF writer produced incorrect Count values for outlines: the 527count only counted descendant leaves, omitting intermediate nodes. 528(gdevpdfm.c) 529 530Removes an assumption that images have at most 4 components. (gdevpdfi.c) 531 532Adds an x11gray2 device, primarily for debugging. (devs.mak, gdevxalt.c) 533 534Updates the unified printer driver with a newer version. (uninfo.ps, 535gdevupd.c, *.upp) 536 537</pre><h3><a name="V4.80_Platforms"></a>Platforms</h3><pre> 538 539Adds the P*M devices and the X11 devices (commented out) to the OS/2 540makefile. (os2.mak) 541 542Updates the MS Windows platform to be compatible with Microsoft Visual C++ 543(as well as Watcom and Borland compilers). (gsdll32.def, gdevmswn.h, 544gp_mswin.h, gsdll.h, dwimg.cpp, dwmain.cpp, dwmainc.cpp, dwtext.cpp, 545gdevwdib.c, gdevwprn.c, gdevwpr2.c, gp_mswin.c, gsdll.c) 546 547</pre><h3><a name="V4.80_Fonts"></a>Fonts</h3><pre> 548 549Fixes bugs: 550 - Certain synthetic fonts incorrectly were loaded into local rather 551than global VM. (These fonts are not part of the standard distribution.) 552(gs_fonts.ps, gs_pfile.ps, *ss*.ps) 553 554</pre><h3><a name="V4.80_Interpreter"></a>Interpreter</h3><pre> 555 556Fixes bugs: 557 - The FAKEFONTS scan could leave junk on the stack. (gs_fonts.ps) 558 - Dynamically loading known encodings on demand left junk on the 559stack, causing a typecheck error. (gs_res.ps) 560 - Some 'static' declarations were missing (gcc lossage). (iname.c) 561 - Some internal operators didn't have names, leading to unhelpful 562error printout. (zfileio.c) 563 - The resource "operators" didn't always restore the stacks properly 564on an error. (gs_res.ps) 565 - The CID font code left a garbage value on the stack during 566loading. (gs_cidfn.ps) 567 - The defineresource implementation for built-in resources like 568FMapType didn't leave the resource "value" on the stack. (gs_res.ps) 569 - If an operator defined by a procedure was bound into a packed 570procedure, the stack-protection feature wasn't effective. (interp.c) 571 - findfont didn't restore the stack if it failed. (gs_res.ps) 572 - The showpage count passed to the BeginPage and EndPage procedures 573was incremented only if a page was printed, rather than for every invocation 574of showpage. (gs_init.ps, zdevice2.c) 575 - The default EndPage procedures didn't pop their page count operand 576from the stack. (gs_init.ps, gs_setpd.ps) 577 - If the argument of findfont wasn't a name or a string, and no font 578with that key had been registered, an error occurred. (gs_fonts.ps, 579gs_res.ps) 580 581Updates most of the remaining pseudo-operators to take advantage of stack 582protection. (gs_btokn.ps, gs_cmap.ps, gs_dps1.ps, gs_dps2.ps, gs_fonts.ps, 583gs_lev2.ps, gs_pdfwr.ps) 584 585Splits the image operators into a separate file from the path painting 586operators. (This should have been done a long time ago.) (iimage.h, 587zimage.c, zpaint.c) 588 589Adds more of the implementation of the NeXT alpha and compositing 590operations, under an #ifdef DPNEXT. (iimage.h, zcolor1.c, zdpnext.c, 591zimage.c) 592 593Adds more of the implementation of DPS contexts. These are still not 594usable. (icontext.h, icontext.c, zcontext.c, zmath.c) 595 596Changes the help message to describe -dBATCH instead of -c quit. 597(imainarg.c) 598 599Recognizes the dictionary argument for the eexecDecode filter. (zmisc1.c) 600 601</pre><h3><a name="V4.80_Streams"></a>Streams</h3><pre> 602 603Fixes bugs: 604 - The tracing message when starting to decode 1-D fax data reported 605the run_color incorrectly. (scfd.c) 606 - In the CCITTFaxDecode filter, if a buffer boundary fell between a 607makeup code and a final zero-length termination code, an ioerror could 608occur. (scfd.c) 609 - Per Adobe, in the CCITTFaxDecode filter, EndOfBlock = true should 610cause Rows to be ignored. (scfd.c) 611 - If an output stream returned EOFC, an infinite loop might result. 612This problem (and the fix) are in the same fragile code as the EOD fix in 6134.74, and we may again have introduced a new bug. (stream.c) 614 615Changes the eexecDecode filter so that instead of a number, it can take a 616dictionary with two keys, seed and lenIV. (Having eexecDecode skip initial 617bytes at all was a design bug that is too late to fix.) (sfilter.h, 618seexec.c) 619 620</pre><h3><a name="V4.80_Library"></a>Library</h3><pre> 621 622Fixes bugs: 623 - The default mapping from RGB+alpha to RGB didn't lighten 624(premultiply) the color according to the alpha value. (gxcmap.c) 625 - The angle error metric for rational tangent screen parameters 626should be simply the difference in angle, not a ratio. (gshtscr.c) 627 - gs_setcolorscreen and gs_sethalftone didn't initialize an 628allocator pointer, leading to memory access errors. (gsht1.c) 629 - If a banded image was clipped, an invalid band list could be 630produced. (gxclimag.c) 631 - A picky compiler wouldn't allow an enum to be &&'ed with a 632boolean. (gschar.c) 633 - A short-sighted compiler didn't allow the use of actual procedure 634names (as opposed to procedure variables) in a conditional expression. 635(gxfill.c) 636 - A compiler objected to a name longer than 31 characters. (gzht.h, 637gsht.c, gxclread.c) 638 - The height computations for banded images were not consistent, 639possibly leading to invalid band lists. (gxclimag.c) 640 - copypage didn't reset the band writer and band reader bookkeeping 641consistently, leading to incorrect output and possible errors. (gxcldev.h, 642gxclist.c, gxclread.c) 643 - When banding, changing the halftone could lead to accessing memory 644after freeing it. (gxclread.c) 645 - When using disk files for band storage, showpage didn't actually 646delete or truncate the band list file, possibly causing subsequent copypage 647operations to become confused. (gxclfile.c) 648 - When banding, having more than one image operator in progress at a 649time confused the rasterizing pass and could produce arbitrary errors. From 650PostScript, this can only happen in the case of an image whose data source 651was a procedure-based stream that itself invoked an image operator: this is 652a senseless and perverse thing to do, but it shouldn't break the code (and a 653Genoa CET file actually does it). (gxclist.h, gxclimag.c, gxclist.c) 654 - Some picky compilers objected to negating unsigned values. 655(gsuid.h, gsht.c, gsmemory.c, gxpcopy.c) 656 - When banding, if a 90- or 270-degree rotated monobit image was 657clipped, invalid memory accesses could occur. (gximage.h, gximage1.c) 658 - The showpage count passed to the BeginPage and EndPage procedures 659was incremented only if a page was printed, rather than for every invocation 660of showpage. Fixing this requires removing the incrementing of the count 661from the library level altogether. (gsdevice.c) 662 - When rendering a subrectangle of an image, the X DDA was 663initialized incorrectly, causing possible errors. We think this only 664affected certain banded images. (gxdda.h) 665 666Adds a provision for images with an alpha component, under an #ifdef DPNEXT. 667****** THE BANDING CODE HAS NOT BEEN UPDATED YET. ****** (gsiparam.h, 668gxcmap.h, gxdither.h, gximage.h, gsimage.c, gxclimag.c, gxclread.c, 669gxcmap.c, gximage.c, gximage3.c, gximage4.c ****** NOT DONE YET ******, 670gximage5.c) 671 672Adds a return_if_error macro to capture the common idiom of making a call 673and then returning its value if that value is negative (error). (gserror.h) 674 675</pre> 676 677<hr> 678 679<h2><a name="Version4.74"></a>Version 4.74 (limited) (5/5/97)</h2> 680 681<p> 682This fileset is supposed to fix all remaining errors reported by the Genoa 683CET, and is intended to be the last incremental test fileset before the 5.0 684release. 685 686<h3><a name="V4.74_Documentation"></a>Documentation</h3><pre> 687 688Fixes bugs: 689 - Mark procedures are *not* executed in the normal return case. 690(estack.h) 691 - The line_params element of a gs_imager_state is *not* allocated 692separately. (gsstate.c) 693 - The value passed to the PDF writer for text is a dictionary, not 694an array. (gdevpdft.c) 695 696Improves the documentation of gstate memory management. (gsstate.c) 697 698Documents end_status = EOFC for writing streams. (stream.h, strimpl.h) 699 700Clarifies memory management for halftones and device halftones. (gsht1.h, 701gxdht.h, gxht.h, gzht.h) 702 703Removes the "experimental" tag from the PostScript and EPS writers. 704(devs.mak) 705 706</pre><h3><a name="V4.74_Utilities"></a>Utilities</h3><pre> 707 708Fixes bugs: 709 - The viewpcx utility scaled images improperly. (viewpcx.ps) 710 - If a PDF file used F instead of f for filling a path, pdf2ps 711didn't output the fill operation. (pdf_base.ps) 712 713Changes the ps2pdf script so that, like pdf2ps, it allows debugging 714switches. (ps2pdf) 715 716</pre><h3><a name="V4.74_Drivers"></a>Drivers</h3><pre> 717 718Fixes bugs: 719 - The vgalib driver didn't clip monobit images properly. 720(gdevvglb.c) 721 - The X driver asked for exposure events to be reported, but never 722read them, causing the event queue to grow indefinitely. (gdevxini.c) 723 - The "vector" drivers and the PDF writer didn't properly keep track 724of whether the current clipping region was the default one. (gs_pdfwr.ps, 725gdevvec.h, gdevvec.c, gdevpdf.c, gdevpdft.c) 726 - The PDF writer had word and character spacing interchanged. 727(gdevpdft.c) 728 - The PDF writer scaled word and character spacing incorrectly. 729(gdevpdft.c) 730 731</pre><h3><a name="V4.74_Interpreter"></a>Interpreter</h3><pre> 732 733Fixes bugs: 734 - The user object operators didn't leave the stack in a clean state 735if they failed. (gs_dps2.ps) 736 - UserObjects wasn't actually defined. (gs_dps2.ps) 737 - deviceinfo and set/currenthalftonephase were defined even if the 738dps feature wasn't selected. (int.mak, gs_dps.ps, gs_dps1.ps, gs_lev2.ps, 739zdps.c, zdps1.c) 740 - The dps feature didn't automatically include the level2 feature, 741which it needs. (int.mak) 742 - The DPS user names mechanism didn't work, since the user names 743array was subject to save and restore. (It still doesn't really work -- 744there is no provision for expanding the user names array, which is created 745with length 0.) (gs_btokn.ps, ivmspace.h, zbseq.c, zdps.c) 746 - The DPS context operators didn't do all the necessary error 747checking. (zcontext.c) 748 - The debugging printout for names printed the name index in hex 749without identifying it as such. (idebug.c) 750 - Adding the first non-name key (or name key with a name index 751beyond 4K) to a dictionary that had any deleted entries could cause some 752entries to apparently disappear. (idict.c) 753 - If a sub-table of the name table was freed during garbage 754collection, memory could be left in an inconsistent state. (iname.c, igc.c) 755 - findfont didn't restore the stacks reliably if an error occurred. 756(gs_fonts.ps) 757 - definefont with an invalid Type 0 font sometimes added a FID entry 758(with a dangling pointer) if it failed. (Recovering properly from a VMerror 759during font creation would require a much more complicated fix than this, 760but since we expect a garbage collection to occur in that case, we aren't 761concerned about it.) (zfont0.c) 762 - Reading parameter values from a dictionary could access beyond the 763end of the array that keeps track of which entries had been referenced. 764(idict.h, idict.c, iparam.c) 765 - Halftone data was allocated in the current VM rather than in the 766same VM as the halftone dictionary or procedure. (Fixing this includes 767updating code as necessary for the change in halftone and device halftone 768allocation.) (iht.h, ivmspace.h, zht.c, zht1.c, zht2.c) 769 - Closed non-executable files on the e-stack could cause a restore 770to be invalid. (zvmem.c) 771 772Adds skeleton code for the NeXT Display PostScript alpha and compositing 773operators. This is not ready for use yet! (errors.h, gs_dpnxt.ps, 774zdpsnext.c) 775 776Implements more of state saving and restoring for Display PostScript 777contexts. This is not ready for use yet either. (int.mak, icontext.h, 778istack.h, icontext.c, zcontext.c) 779 780Adds stub code for the Display PostScript view clip operators. (gs_dps.ps, 781zdps.c) 782 783Removes the obsolete PPM-writing operator. (int.mak, vms.mak, *.mak, 784zwppm.c) 785 786Makes the random number generator state public so it can be stored in the 787context state. (zmath.c) 788 789Changes the flag for forcing global garbage collection to a run-time 790variable, for debugging. (igc.c) 791 792Changes the handling of job control so that it doesn't use procedures that 793produce an execstackoverflow when being printed. (gs_init.ps) 794 795Updates code as necessary for the change in reference counting. (zcie.c, 796zcrd.c) 797 798Updates code as necessary for the change in off-stack gstate copying. 799(zdps1.c) 800 801Removes a small bit of obsolete code. (interp.c) 802 803</pre><h3><a name="V4.74_Streams"></a>Streams</h3><pre> 804 805Fixes bugs: 806 - An output stream that was not the last one in a pipeline could 807incorrectly be asked to write its EOD marker more than once. (The fix is 808very fragile and may have introduced new bugs.) (stream.c) 809 810</pre><h3><a name="V4.74_Library"></a>Library</h3><pre> 811 812Fixes bugs: 813 - The gx_device_halftone_release procedure was declared in two 814different header files. (gzht.h) 815 - Off-stack copying of gstates could lead to a situation where 816different parts of a single gstate were owned by different allocators; this 817could cause them to be freed improperly, corrupting memory. We fixed this 818partly by making the mixed ownership situation work, and partly by copying 819more of the gstate when off-stack gstates are involved. Unfortunately, the 820fixes are subtle and may have introduced new bugs. (gsstate.h, gsht.c, 821gsht1.c, gspcolor.c, gsstate.c) 822 - If an error occurred while creating a Pattern instance, the 823partially initialized instance structure wasn't freed. (gspcolor.c) 824 - Halftones and device halftones didn't allocate their clones or 825their subsidiary structures with the correct allocator. (gsht.c, gsht1.c) 826 - The error statement when allocating a reference-counted object had 827to be a control transfer. (gsrefct.h) 828 - Copying gstates incorrectly copied the memory and saved pointers, 829and the pointer to the dash pattern. (gsstate.c) 830 - Flatness values less than 0.5 produced far more line segments than 831necessary (roughly the square of the required number). Fixing this may have 832bad effects on character quality -- this remains to be seen. (gxpflat.c) 833 - An error during installation of a halftone could leave things in 834an inconsistent state. (gsht.c) 835 - The API didn't provide enough flexibility with respect to memory 836management for halftones, or guarantee consistent allocation of a halftone 837and its subelements. (gsht1.h, gsht.c, gsht1.c, gshtscr.c) 838 - Releasing a path didn't clear enough pointers to ensure clean 839garbage collection. (gxpath.c) 840 - Finalizing or discarding a (cached) scaled font didn't properly 841unlink it from the scaled_fonts list. (gsfont.c) 842 - Invoking an image operator within the BuildChar procedure for a 843charpath caused an infinite loop. (gsimage.c) 844 - The bookkeeping for the scaled font cache was incorrect: the count 845didn't always get decremented when a scaled font was freed. (gsfont.c) 846 - "High level" masked images were written incorrectly in the band 847list as black-and-white images. (gxclimag.c) 848 - For "high level" images with fewer than 4 samples per pixel, 849non-standard Decode values were written incorrectly in the band list. 850(gxclimag.c) 851 - The color wasn't set correctly for "high level" masked images. 852(gxclimag.c) 853 - The fastest case of monobit image rendering could get a memory 854access error if the image lay partly outside the page. (gximage1.c) 855 - Clipping with an empty path was a no-op, rather than clipping out 856everything. (gxcpath.c) 857 858Makes reference-counted objects remember which allocator owns them: this 859entails a NON-BACKWARD-COMPATIBLE change to some of the macros for reference 860counting. This was necessary to fix the off-stack gstate copying problem. 861(gsrefct.h, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscsepr.c, 862gsstate.c, gxclread.c) 863 864Refactors the unpacking of image data, to make unpacking available as a 865general facility. (gximage.h, gxsample.h, gximage.c, gximage0.c, 866gximage1.c, gximage4.c, gxsample.c) 867 868Enhances -Z? so that before freeing an object, it checks that the object was 869owned by the correct allocator. (gsalloc.c) 870 871</pre> 872 873<h2><a name="Version4.73"></a>Version 4.73 (limited) (4/19/97)</h2> 874 875<p> 876This is an incremental bug fix release made primarily to provide a 877synchronization point for an upcoming trip. 878 879<h3><a name="V4.73_Documentation"></a>Documentation</h3><pre> 880 881Fixes bugs: 882 - A reference to the uniprint documentation was incorrect. 883(current.txt) 884 - -Olimit 1000 is not enough now for DEC Ultrix, 1200 is required; 885this is also required for SGI IRIX. (make.txt) 886 887Adds argument/result comments to all the operators defined in gs_lev2.ps. 888(Eventually we will do this for all operators defined as PostScript 889procedures.) (gs_lev2.ps) 890 891</pre><h3><a name="V4.73_Procedures"></a>Procedures</h3><pre> 892 893Fixes bugs: 894 - The makefiles didn't provide a default value for GCONFIG_EXTRAS. 895(gs.mak) 896 897</pre><h3><a name="V4.73_Utilities"></a>Utilities</h3><pre> 898 899Fixes bugs: 900 - pdf2ps didn't work with TrueType or compressed Type 1 fonts. 901(gs_pdf.ps, pdf_2ps.ps, pdf_font.ps) 902 903</pre><h3><a name="V4.73_Drivers"></a>Drivers</h3><pre> 904 905Fixes bugs: 906 - A cast from byte to char was omitted. (gdevpdfm.c) 907 908</pre><h3><a name="V4.73_Platforms"></a>Platforms</h3><pre> 909 910Updates the VMS script (again). (vms.mak) 911 912</pre><h3><a name="V4.73_Interpreter"></a>Interpreter</h3><pre> 913 914Fixes bugs: 915 - A module that used strlen didn't include string_.h. (zdevice.c) 916 - Because of some bad PostScript code in FrameMaker output, identity 917rather than unity black generation and undercolor removal functions are 918required on black-and-white devices. (gs_init.ps) 919 - A harmless internal error during initialization left bogus 920information in $error. (gs_cidfn.ps) 921 - startjob didn't clear the execution stack. Fixing this required 922NON-BACKWARD-COMPATIBLE changes to the internal operators .instopped, .stop, 923and .stopped, which are not supposed to be used by any external code. 924(startjob will still give errors if executed in a file that isn't being 925piped from stdin; this will take longer to fix.) (gs_init.ps, gs_lev2.ps, 926iref.h, imain.c, interp.c, zcontrol.c, zfile.c) 927 928Adds a new .execn operator, part of the startjob changes, that allows 929pushing multiple items on the exec stack. Eventually this will allow us to 930get rid of many dynamically created closures. (zcontrol.c) 931 932</pre><h3><a name="V4.73_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 933 934Fixes bugs: 935 - Landscape-mode PDF files weren't rotated properly. (gs_pdf.ps, 936pdf_main.ps) 937 938Makes the default PDF configuration notify users more informatively when 939encountering an encrypted file. (pdf_sec.ps) 940 941</pre><h3><a name="V4.73_Streams"></a>Streams</h3><pre> 942 943Makes the RunLengthEncode filter always generate optimally compressed 944output. We did this because we thought one of the Genoa CET files loops 945forever if this is not the case; but we were wrong. (srle.c) 946 947</pre><h3><a name="V4.73_Library"></a>Library</h3><pre> 948 949Fixes bugs: 950 - If one coordinate of a position or distance overflowed the 951internal representable range, the other coordinate became garbage. (bug 952introduced in 4.70) (gspath.c) 953 - The bounding box computation for strokes was slightly too large 954(sometimes much too large). (gxpaint.h, gdevbbox.c, gxclpath.c, gxstroke.c) 955 956Adds (under an #if 0) an experimental alternate halftone cell choice 957algorithm. (gshtscr.c) 958 959Adds a better comment to a particularly obscure line of C code. 960(gxclimag.c) 961 962</pre> 963 964<h2><a name="Version4.72"></a>Version 4.72 (limited) (4/14/97)</h2> 965 966<p> 967This is another bug fix release, motivated mostly by Genoa testing. It also 968updates the new uniprint driver with a major revision, and upgrades CFF 969support a little bit. 970 971<h3><a name="V4.72_Documentation"></a>Documentation</h3><pre> 972 973Fixes bugs: 974 - -dNOGC only disables default automatic garbage collection, not all 975garbage collection. (use.txt) 976 - Apparently a different set of flags is needed for newer H-P 977compilers. (make.txt) 978 979Replaces the tiny FAQ with a pointer to the on-line FAQ. (use.txt) 980 981Updates the documentation for the uniprint driver. (devices.txt) 982 983Clarifies the fact that Ghostscript reads Fontmap files from *all* 984directories in the search list. (use.txt) 985 986Notes that building on Linux may require SM and ICE in the list of X 987libraries. (make.txt) 988 989</pre><h3><a name="V4.72_Procedures"></a>Procedures</h3><pre> 990 991Fixes bugs: 992 - An -include type42 was omitted from the level2 module description. 993(int.mak) 994 - A mention of $(ECHOGS) in the rule for sfile should have been 995$(ECHOGS_XE). (lib.mak) 996 - The pcx2up sample device should have been put in devs.mak rather 997than lib.mak. (devs.mak, lib.mak) 998 - scanchar.h and scantab.c belong in the library, not the 999interpreter. (devs.mak, int.mak, lib.mak) 1000 - Some _h definitions were used before being defined, or weren't 1001defined at all. (devs.mak, lib.mak) 1002 - The JPEG driver was missing a dependency. (devs.mak) 1003 - The PDF writer was missing a dependency. (devs.mak) 1004 - Building Level 1 systems was no longer possible. (int.mak) 1005 1006Updates the VMS build scripts. (vms.mak, vms-decc.mak) 1007 1008Adds *.upp to the list of files installed under Unix. (unix-end.mak) 1009 1010Adds rules to the Unix makefiles to build two library files: gs.a, 1011consisting of the entire PostScript/PDF interpreter lacking only gs.c, and 1012gslib.a, consisting of the graphics library without the gslib.c test driver. 1013(ansihead.mak, cc-head.mak, gcc-head.mak, unixtail.mak) 1014 1015</pre><h3><a name="V4.72_Drivers"></a>Drivers</h3><pre> 1016 1017Fixes bugs: 1018 - The PS/EPS writers could generate a reference to an undefined 1019name. (gdevps.c) 1020 - The PDF writer produced incorrect output for multi-level outlines. 1021(gdevpdfm.c) 1022 - The PDF writer didn't convert /Action to /A, and /Action/Subtype 1023to /S, in Annot dictionaries. (gdevpdfm.c) 1024 - The PDF writer didn't work in Level 1 systems. (gs_pdfwr.ps) 1025 - The PDF writer didn't transform /Rect and /R values to current 1026user coordinates. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfm.c) 1027 - The PNG writer could refer to the 3 predefined stdio files even in 1028environments where this was undesirable. (gdevpng.c) 1029 - The PDF writer had a compiled-in limit of 100 pages of output. 1030(gdevpdfx.h, gdevpdf.c) 1031 1032Updates the uniprint driver with a major revision that uses device 1033parameters that can be set from the command line, rather than PostScript 1034code, for configuration choices. (gdevupd.c, *.upp) 1035 1036</pre><h3><a name="V4.72_Platforms"></a>Platforms</h3><pre> 1037 1038Fixes bugs: 1039 - gp_enumerate_files_next had no way to return an error. (gp.h, 1040gp_dosfe.c, gp_ntfs.c, gp_os2.c, gp_unifs.c, gp_vms.c) ****** NOT 1041IMPLEMENTED YET ****** 1042 - On the Watcom platform, CPU_TYPE >= 486 didn't automatically set 1043FPU_TYPE to 387. (wccommon.mak) 1044 1045</pre><h3><a name="V4.72_Interpreter"></a>Interpreter</h3><pre> 1046 1047Fixes bugs: 1048 - Caching the current device in userdict could create dangling 1049references. (gs_init.ps, gs_pdfwr.ps, zdevice.c) 1050 - If an error occurred in a BuildChar or BuildGlyph procedure, the 1051graphics state stack wasn't restored. (ichar.h, zchar.c, zchar2.c) 1052 - There was an obsolete check for a structure when cleaning up after 1053a show operator. (zchar.c) 1054 - Attempting to show a character with no associated glyph in a Type 10553 font with a BuildGlyph procedure caused an error. (zchar.c) 1056 - noaccess on a read-only dictionary didn't give an error. 1057(ztype.c) 1058 - The dictionary passed to a Pattern's PaintProc was the original 1059template, not the copy made by makepattern. (gs_lev2.ps) 1060 - Invalid font parameters could result in partially constructed 1061fonts, which caused problems for restore. (zfont0.c, zfont2.c) 1062 - Files run under job control caused an error when terminating. 1063(gs_init.ps) 1064 - setpagedevice didn't protect itself against malfunctioning 1065BeginPage or EndPage procedures. (The protection is still not perfect.) 1066(gs_setpd.ps) 1067 - .type42execchar called font_param redundantly. (zchar42.c) 1068 - The font operators didn't protect themselves well enough against 1069bogus font dictionaries. (zfont.c, zfont0.c) 1070 - If an error occurred within a stringwidth, the graphics state 1071stack wasn't restored properly. (zchar.c) 1072 - If an error occurred within the PaintProc of a form, the graphics 1073state stack was left with an extra entry. (gs_lev2.ps) 1074 - Registering a font under a second name could corrupt data 1075structures. (zfont2.c) 1076 - Different scalings of the same font should have "equal" fontIDs, 1077to match the Adobe implementations. (iutil.c) 1078 - Errors detected by PostScript code during initialization either 1079allowed execution to continue or produced a hex stack dump, instead of just 1080producing a message and exiting. (interp.c) 1081 - The memory validator didn't validate chunks at previous save 1082levels. (ilocate.c) 1083 - The Level 1 size of systemdict was too small. (iinit.c) 1084 - Attempting to define a Category resource in local VM gave a 1085typecheck error rather than an invalidaccess. (gs_res.ps) 1086 - Building Level 1 systems was no longer possible. (zusparam.c) 1087 1088Rearranges the interpreter code slightly so that all operator invocations go 1089through a single procedure when debugging. (interp.c) 1090 1091Adds a -K<numK> switch to limit the total amount of memory that Ghostscript 1092can acquire. (imainarg.c) 1093 1094Makes the memory validator check packed refs more carefully. (ilocate.c) 1095 1096Makes the memory validator check explicitly for pointers to freed objects. 1097(igc.c, ilocate.c) 1098 1099Makes the memory validator check dictionaries more carefully. (ilocate.c) 1100 1101Makes the memory validator check refs embedded in structures. (ilocate.c) 1102 1103Adds a debugging option that bypasses the garbage collector entirely. 1104(igc.c) 1105 1106Adds debugging options to validate memory before/after save/restore. 1107(zvmem.c) 1108 1109Removes the patch for the uniprint driver, since it is no longer needed. 1110(gs_init.ps) 1111 1112Implements real-number operands in CFF fonts. (gs_cff.ps) 1113 1114Implements non-default charsets in CFF fonts. (gs_cff.ps) 1115 1116</pre><h3><a name="V4.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 1117 1118Fixes bugs: 1119 - The PDF 1.2 "marked content" operators weren't defined. 1120(pdf_main.ps) 1121 - Streams with binary data whose first character was an EOL (\n) 1122didn't parse properly. Unfortunately, the way we fixed this may break some 1123other files. (pdf_base.ps) 1124 - PDF 1.2 #nn escape syntax in names wasn't recognized. ****** This 1125is implemented with an inefficient hack that should be moved down into C. 1126However, I don't want to risk introducing new bugs during the beta test 1127period. ****** (pdf_base.ps) 1128 - The interpreter had a limit of 64K objects. Removing this limit 1129required changing a basic data structure -- admittedly a risky thing to do 1130during beta test. (pdf_base.ps, pdf_main.ps) 1131 - TJ didn't multiply the offsets by the font size, causing incorrect 1132character positioning. (gs_pdf.ps) 1133 1134</pre><h3><a name="V4.72_Streams"></a>Streams</h3><pre> 1135 1136Fixes bugs: 1137 - The ASCIIHexDecode filter read an extra character in case of 1138error. (sstring.c) 1139 1140Adds more tracing output to the CCITTFaxDecode stream. (scfd.c) 1141 1142</pre><h3><a name="V4.72_Library"></a>Library</h3><pre> 1143 1144Fixes bugs: 1145 - The allocator client name for rendering bitmap patterns was 1146incorrect. (Only affects tracing output.) (gspcolor.c) 1147 - The check for exceeding the overall allocation limit was 1148incorrect, because of unsigned arithmetic. (Only affects limitation of 1149total allocation, which is only used for debugging and benchmarking.) 1150(gsmemory.c) 1151 - The 0'th component of colored screens wasn't passed through the 1152band list, possibly causing access errors when rasterizing. (gxclimag.c, 1153gxclread.c) 1154 - setbbox could get an overflow without detecting it. (gsdps1.c) 1155 - Images with only one component but MultipleDataSources = true 1156could cause a memory access error. (gximage.c) 1157 - The buffer for unpacking 12-bit-per-sample image data was too 1158small, causing memory corruption. (gximage.c) 1159 - 12-bit-per-sample images with multiple data sources sometimes 1160didn't pass correct pointers to image_data. (gsimage.c) 1161 - If an image data stream reached EOF before supplying enough data 1162for the entire image, memory corruption could occur. (zpaint.c) 1163 - When a device halftone was freed, some pointers in the halftone 1164cache weren't cleared, leading to possible dangling references. (gsstate.c) 1165 - Invalid font parameters could result in partially constructed 1166fonts, which caused problems for restore. (gxfont0.h, gsfont.c) 1167 - If an error occurred within a stringwidth, the graphics state 1168stack wasn't restored properly. (gschar.c) 1169 - The (static) limit on the size of a command line argument was too 1170small. (gsargs.h) 1171 - Building Level 1 systems was no longer possible. (gxdht.h, 1172gsht.c, gsht1.c) 1173 - Truncation instead of rounding caused colors on gray-scale devices 1174to come out very slightly too dark. (gxcmap.c) 1175 - The Decode mapping table constructed for images was slightly 1176inaccurate for ranges other than [0 1] or [1 0]. (gximage.c) 1177 1178</pre> 1179 1180<h2><a name="Version4.71"></a>Version 4.71 (limited) (3/31/97)</h2> 1181 1182<p> 1183This is a bug fix release during the beta test period. 1184 1185<h3><a name="V4.71_Documentation"></a>Documentation</h3><pre> 1186 1187Fixes bugs: 1188 - A larger value of -Olimit is now needed to optimize gxclread.c. 1189(make.txt) 1190 - Some comments were incorrect. (gdevbbox.h, sfilter1.c) 1191 1192Updates the GPL with a newer version from FSF. (COPYLEFT) 1193 1194Notes that the gcc 2.7.x code generation bug is fixed in 2.7.2.1. 1195(make.txt) 1196 1197</pre><h3><a name="V4.71_Procedures"></a>Procedures</h3><pre> 1198 1199Fixes bugs: 1200 - Some streams required by high-level drivers were incorrectly 1201grouped with the interpreter rather than the library. (int.mak, lib.mak) 1202 - The choice of implementation for file streams was buried in an 1203obscure place, rather than being included in the configuration definitions 1204at the head of each makefile. (We believe there are no more such buried 1205parameters.) This involved a NON-BACKWARD-COMPATIBLE change in the way this 1206choice was specified. (lib.mak, *.mak) 1207 - Some dependencies were missing. (lib.mak) 1208 1209</pre><h3><a name="V4.71_Drivers"></a>Drivers</h3><pre> 1210 1211Fixes bugs: 1212 - A variable was used before being initialized, causing get_bits 1213(and raster ops) to fail when using alternate X devices. (bug introduced in 12144.70.) (gdevxalt.c) 1215 - Some 'private' declarations were omitted. (It is infuriating that 1216gcc doesn't check for this!) (gdevps.c, gdevpx.c) 1217 - A few character strings were used as byte arrays without a cast. 1218(gdevpx.c) 1219 - The EPS writer didn't write a correct bounding box, and didn't 1220write it at the beginning of the file. (gdevvec.h, gsstruct.h, gdevps.c, 1221gdevvec.c) 1222 - x_copy_color specified an incorrect (too large) image width. 1223Apparently this only mattered because it could cause invalid memory 1224accesses. (gdevx.c) 1225 - x_copy_mono also specified too large an image width. It's not 1226clear this made any difference. (gdevx.c) 1227 - The default implementation of strip_copy_rop didn't clamp Y values 1228to legal values for get_bits. (gdevmrop.c) 1229 1230</pre><h3><a name="V4.71_Interpreter"></a>Interpreter</h3><pre> 1231 1232Fixes bugs: 1233 - Some initialization files prematurely switched the interpreter 1234into Level 2 mode, causing some Level 2 operators not to be defined. (bug 1235introduced in 4.60 or later.) (gs_cff.ps, gs_cidfn.ps, gs_cmap.ps, 1236gs_init.ps, gs_res.ps) 1237 1238</pre><h3><a name="V4.71_Streams"></a>Streams</h3><pre> 1239 1240Fixes bugs: 1241 - The choice of procedure names for the file-descriptor-based 1242implementation of file streams was buried in a .c file, rather than being 1243chosen in the makefile. (sfile.c[deleted], sfileno.c[deleted], sfxstdio.c, 1244sfxfd.c, sfxboth.c) 1245 1246</pre><h3><a name="V4.71_Library"></a>Library</h3><pre> 1247 1248Fixes bugs: 1249 - rcurveto was broken -- it drew curves to random points. (bug 1250introduced in 4.61.) (gspath.c) 1251 - A trailing comma in an enum definition upset some compilers. (bug 1252introduced in 4.70.) (gstype1.h) 1253 - Type 1 fonts with hint replacement could produce anomalous or 1254clipped output, or even missing lines. (Also cleans up some out-of-date 1255formatting.) (gxtype1.h, gstype1.c, gxhint2.c) 1256 - Removes some conditionals for choosing between old and new 1257algorithms. (gxhint3.c) 1258 - makebitmappattern required that the bitmap consist of only a 1259single tile repetition. (gspcolor.c) 1260 - Some computations on RasterOps didn't take transparency into 1261account properly. (gdevmrop.c) 1262 - The structure definition for imager and graphics states had an 1263incorrect offset for line_params, causing the garbage collector not to mark 1264or relocate dash patterns, possibly causing memory faults, FPEs, or invalid 1265output. (bug introduced since 4.03.) (gsstate.c) 1266 - 'show' operators gave a limitcheck for unreasonable coordinates, 1267even if limit clamping was enabled. (gschar.c) 1268 1269Implements banded filling and stroking with colored halftones, in addition 1270to pure colors and binary halftones. Since we are in a beta test period, 1271actual use of this feature (but *not* all the code implementing it) is 1272disabled under an #ifdef FUTURE. (gsdcolor.h, gxcldev.h, gxclpath.h, 1273gxdht.h, gxhttype.h, gsht.c, gxclimag.c, gxclpath.c, gxclread.c) 1274 1275</pre> 1276 1277<h2><a name="Version4.70"></a>Version 4.70 (limited) (3/26/97)</h2> 1278 1279<p> 1280This fileset fixes the one outstanding compilation problem on PC platforms 1281and the old problem of limitchecks for out-of-bounds coordinates, and adds a 1282variety of new features, including the ability to save away the band lists 1283for pages and rasterize them later and/or elsewhere in any order and 1284combination. This is the first "serious beta" candidate for the next 1285general release. 1286 1287<p> 1288Fileset numbers 4.62 through 4.69 were skipped deliberately. 1289 1290<h3><a name="V4.70_Documentation"></a>Documentation</h3><pre> 1291 1292Fixes bugs: 1293 - The list of special -d and -s switches was out of date. (use.txt) 1294 - The name of the zlibDecode filter was incorrectly written 1295zlibEncode. (language.txt) 1296 1297Documents where to find out how to install gcc 2.7.x on SGI IRIX 6.x. 1298(make.txt) 1299 1300Documents a makefile patch required on NeXTStep. (make.txt) 1301 1302Documents how to patch gcc to fix the AXP code generation bug. (make.txt) 1303 1304Adds documentation for the new unified printer driver. (devices.txt) 1305 1306</pre><h3><a name="V4.70_Procedures"></a>Procedures</h3><pre> 1307 1308Fixes bugs: 1309 - 'make distclean' didn't remove a couple of files. (gs.mak) 1310 - A library module didn't include a necessary dependency. (lib.mak) 1311 - A new .ps file wasn't installed properly. (unix-end.mak) 1312 - File write dates weren't updated properly on PC platforms, causing 1313unnecessary rebuilding. (cp.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak, 1314tccommon.mak, wccommon.mak, zlib.mak) 1315 - An unnecessary explicit compilation line for gdevcdj.c caused 1316problems in the Mac environment. (devs.mak) 1317 - The VMS scripts were out of sync again. (vms.mak) 1318 - The VMS build scripts didn't include the new JPEG driver. 1319(vms-*.mak) 1320 - A number of makefile macros were referenced before being defined. 1321(devs.mak, lib.mak, int.mak, *.mak) 1322 - libpng.mak didn't work with PVERSION=90. (libpng.mak, zlib.mak) 1323 1324Separates install-scripts from install-exec and install-data. 1325(unix-end.mak) 1326 1327Moves the definition of SEARCH_HERE_FIRST from iminst.h to the makefiles. 1328(*.mak, iminst.h, iconf.c, imain.c) 1329 1330Adds a -dBATCH switch that causes Ghostscript to exit after processing the 1331files named on the command line. (gs_init.ps) 1332 1333Adds the PostScript, EPS, and PCL XL writers, and the color and gray-scale 1334JPEG drivers, to all Unix configurations. (ansihead.mak, cc-head.mak, 1335gcc-head.mak) 1336 1337</pre><h3><a name="V4.70_Drivers"></a>Drivers</h3><pre> 1338 1339NOTE: because of a change in an internal interface (clist_output_page), the 1340cp50 driver no longer works. This is a user-contributed driver for which we 1341take no responsibility. 1342 1343Fixes bugs: 1344 - gdevcdj.c wasn't compatible with ansi2knr. (gdevcdj.c) 1345 - 'private' was omitted from some declarations. (gdevjpeg.c) 1346 - The PostScript writer didn't keep track of the current color 1347properly. (gdevps.c) 1348 - RESOLUTION was misspelled in a header. (gdevbjc.h) 1349 - Some compilers objected to the use of a floating point initial 1350resolution value. (gdevbjc.h) 1351 - Some compilers didn't allow static initialization of a union. 1352(gsdcolor.h) 1353 - If a TIFF driver got an error when initializing the CCITTFax 1354encoder, it returned a bogus error code. (gdevtfax.c) 1355 - The PDF writer produced incorrect output for Indexed color space 1356images. (gdevpdfi.c) 1357 - For many fatal error conditions, the X driver called exit() 1358instead of returning an error. (gdevx*.c) 1359 1360Adds new drivers: 1361 - epswrite, an EPS-writing driver (instead of making EPS output a 1362parametric option of the PostScript-writing device). (devs.mak, gdevps.c) 1363 - pcxcmyk, a 4-bit CMYK PCX driver. This is probably only useful 1364for debugging CMYK color rendering. (gdevpcx.c) 1365 - jpeggray, a JPEG driver that produces gray-scale rather than color 1366output. Thanks to Tom Lane for contributing this. (gdevjpeg.c) 1367 - uniprint, a unified printer driver for a wide variety of inkjet 1368printers. Thanks to Gunther Hess for contributing this. (gdevupd.c) 1369 1370Adds the resolution (pHYs) to the output of the PNG drivers. (gdevpng.c) 1371 1372Adds recognition of the ASCII85EncodePages parameter to the PostScript and 1373EPS writers. (gdevps.c) 1374 1375Makes the new JPEG driver write a JFIF header, which contains the image 1376resolution. (gdevjpeg.c) 1377 1378Changes the "vector" device support interface so relative movement can be 1379detected easily. THIS IS STILL SUBJECT TO CHANGE WITHOUT NOTICE. 1380(gdevvec.h, gdevpsdf.c, gdevps.c, gdevpx.c, gdevvec.c) 1381 1382Changes the PostScript, EPS, and PDF writers to recognize curves and lines 1383that can be represented more efficiently. (gdevpsdf.h, gdevpsdf.c, 1384gdevps.c) 1385 1386Adds a new parameter to the PDF writer, FirstObjectNumber. This defines the 1387first object number that will be used in the output. The default, and 1388minimum, value is 1; the maximum value is approximately 2^31. This is for 1389the benefit of dvipdf; we don't expect it to be used otherwise. In fact, 1390using it appears to produce files that Adobe Acrobat Reader won't accept, 1391even though the files are perfectly compliant with the published PDF 1392specification. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c) 1393 1394</pre><h3><a name="V4.70_Platforms"></a>Platforms</h3><pre> 1395 1396Removes the makefile for the 16-bit Borland C++ platform. This was the last 1397supported 16-bit platform; we expect to gradually drop all 16-bit 1398concessions from the code itself. (bcwin.mak) 1399 1400</pre><h3><a name="V4.70_Interpreter"></a>Interpreter</h3><pre> 1401 1402Fixes bugs: 1403 - The initial size of systemdict was too small, causing the 1404interpreter to slow down substantially. (iinit.c) 1405 - A library module depended on an interpreter module. (zcsindex.c) 1406 - A logically necessary (but accidentally always available) #include 1407was missing. (ifont.h) 1408 1409Moves set/currentoverprint to a more appropriate module. (zcolor2.c, 1410zcssepr.c) 1411 1412Changes the default transfer functions so that they do something reasonable 1413when given operands outside the legal [0..1] range. We only do this to work 1414around a bug in FrameMaker output, which uses the transfer function as the 1415screen function (!). (gs_init.ps) 1416 1417Changes the CMap construction algorithm to use the new, more compact 1418representation. (zfcmap.c) 1419 1420Adds support for Adobe's Compact Font Format. Many individual features are 1421not implemented yet: see the comment in the source code for details. 1422(gs_cff.ps) 1423 1424Adds support for Type 2 charstrings in Type 1 fonts. (ifont.h, zfont1.c) 1425 1426Changes the Type 1 character rendering operator for the library change in 1427Type 1 fonts. (zchar1.c, zfont1.c) 1428 1429Initializes the graphics state limit clamp flag to true. (zgstate.c) 1430 1431Temporarily adds a configuration file for the new unified printer driver, 1432and arranges for it to be read at startup. This arrangement will be 1433replaced very soon by a different one based on command line parameters. 1434(gs_init.ps, uniprint.ps) 1435 1436</pre><h3><a name="V4.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 1437 1438Adds support for Compact Font Format fonts. (pdf_font.ps) 1439 1440</pre><h3><a name="V4.70_Streams"></a>Streams</h3><pre> 1441 1442Adds a glue procedure needed for the new jpeggray driver. (sjpeg.h, 1443sjpege.c) 1444 1445Removes the width limit of 32K in the CCITTFaxEncode filter. The new limit 1446is absurdly large (about 50M). (scf.h, scfx.h, scfe.c) 1447 1448</pre><h3><a name="V4.70_Library"></a>Library</h3><pre> 1449 1450Fixes bugs: 1451 - A library module depended on an interpreter module. (gxcolor2.h, 1452gscolor2.c) 1453 - When rendering a band, clipping was sometimes used when it wasn't 1454necessary. (Performance only.) (gxclread.c) 1455 - Stroking didn't check the path against the device clipping box in 1456the absence of an explicit (non-default) clipping path. (Performance only.) 1457(gxstroke.c) 1458 - A reference to an opaque type upset a couple of compilers. 1459(gxclread.c) 1460 - Negative 32-bit numbers in Type 1 fonts didn't work properly on 146164-bit systems. (gstype1.c) 1462 - A logically necessary (but accidentally always available) #include 1463was missing. (gxbitmap.h) 1464 - A header wasn't protected against double inclusion. (gxclist.h) 1465 - Clipping devices didn't store their actual width and height. 1466(gxcpath.c) 1467 - The slow-case check for thin lines was incorrect. (gxstroke.c) 1468 - Images didn't compute their clipping boxes correctly if there 1469wasn't an explicit clipping path. (This must be a very recent bug, since it 1470creates an overflow condition that prevents monochrome images from being 1471rendered at all.) (gximage.c) 1472 1473Moves set/currentoverprint to a more appropriate module. For clients of 1474gs_set/currentoverprint, this is a NON-BACKWARD-COMPATIBLE CHANGE, since the 1475header file is now separate. (gscolor2.h, gscsepr.h, gscolor2.c, gscsepr.c) 1476 1477Replace the MetroWerks work-around with a different, more general one. 1478(gdevmem.h, gdevmem.c, gxdevice.h) 1479 1480Speeds up the Type 1 interpreter a little. (gstype1.c, gxhint3.c) 1481 1482Redesigns the internal representation of CMaps to be more space-efficient. 1483(gxfcmap.h, gschar0.c, gsfcmap.c) 1484 1485Implements a facility for saving away pages and rendering them later. 1486Currently this requires the pages to be represented as band lists on files, 1487and only allows X translation when rendering. This involves adding the 1488following new printer device parameters: 1489 BandHeight 1490 BandWidth 1491 BandBufferSpace 1492Also changes the names of the printer device parameter elements from 1493use_buffer_space to BufferSpace and from max_bitmap to MaxBitmap for 1494consistency. (gdevprn.h, gxcldev.h, gxclio.h, gxclist.h, gxclmem.h, 1495gxclpage.h, gxdevmem.h, gdevmem.c, gdevp2up.c, gdevprn.c, gxclmem.c, 1496gxclpath.c, gxclread.c) 1497 1498Changes the band list implementation API to allow closing a file without 1499deleting it, and to allow reopening an existing file. This is a 1500NON-BACKWARD-COMPATIBLE change to a deep internal interface. (gxclio.h, 1501gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c) 1502 1503Speeds up rendering of colored halftones, by recognizing cases where one or 1504more planes don't actually require screening, unrolling a loop, and doing 1505basic clipping before halftoning. (gxcht.c) 1506 1507Adds a graphics state parameter, gs_set/currentlimitclamp, that changes the 1508handling of out-of-range coordinates to clamp them in a way that produces 1509approximately the intended output most of the time, rather than causing a 1510limitcheck. Currently this is only designed to work with the basic path 1511construction operations ([r]moveto, [r]lineto, [r]curveto, closepath); it 1512does not work with many other operations such as show, flattenpath or the 1513rectangle operations. Note also that while currentpoint will return the 1514correct (unclamped) value, reading out the path with pathforall will return 1515clamped values. This involves NON-BACKWARD-COMPATIBLE changes to the path 1516structure (but not to any public interfaces). (gxpath.h, gxtype1.h, 1517gzpath.h, gzstate.h, gspath.c, gspath1.c, gsstate.c, gstype1.c, gxpaint.c, 1518gxpath.c, gxpath2.c, gxpcopy.c) 1519 1520Adds support for Type 2 charstrings. Some features are not implemented yet: 1521see gstype2.c for details. (gscrypt1.h, gstype1.h, gxfont1.h, gxop1.h, 1522gxtype1.h, gstype1.c, gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c) 1523 1524</pre> 1525 1526<hr> 1527 1528<h2><a name="Version4.61"></a>Version 4.61 (limited) (3/13/97)</h2> 1529 1530<p> 1531This fileset cleans up many compiler warnings. It adds support for 1532CMap-encoded fonts, and a driver that writes JPEG images. 1533 1534<h3><a name="V4.61_Documentation"></a>Documentation</h3><pre> 1535 1536Corrects an error in the description of the internal CodeMap structure. 1537(gs_cmap.ps) 1538 1539Documents the fact that the optimizer in gcc 2.7.2.1 is broken on AXP 1540machines. (make.txt) 1541 1542Corrects the name of the .setglobal/.currentglobal procedures. (zvmem2.c) 1543 1544Updates current.txt in preparation for the release. (current.txt) 1545 1546</pre><h3><a name="V4.61_Procedures"></a>Procedures</h3><pre> 1547 1548Fixes bugs: 1549 - The VMS script was out of date again. (vms.mak) 1550 - CIDFont support unnecessarily required composite font support. 1551(int.mak) 1552 - CMap and CIDFont support had improper dependencies on 1553initialization order. (lib.mak, int.mak) 1554 - Some dependencies were missing in the JPEG library code. 1555(jpeg.mak) 1556 1557Adds the new JPEG driver to all standard configurations. (*.mak) 1558 1559</pre><h3><a name="V4.61_Drivers"></a>Drivers</h3><pre> 1560 1561Fixes bugs: 1562 - A dependency was omitted from the makefile. (devs.mak, gdevps.c) 1563 1564Cleans up some warnings from picky compilers. Some of these actually 1565indicated problems, such as unreachable code. (gdevpdfx.h, gdevbj10.c, 1566gdevcdj.c, gdevpdfp.c, gdevstc.c) 1567 1568Adds a JPEG-writing driver. Currently this only produces RGB output and 1569only has a QFactor parameter, but eventually it could take all the other 1570parameters of the DCTEncode filter. (devs.mak, int.mak, lib.mak, 1571gdevjpeg.c) 1572 1573Refactors the PDF and PostScript output drivers so that both of them 1574understand all the relevant documented PDF distiller parameters. (The 1575PostScript driver currently disregards nearly all of them.) (gdevpdfx.h, 1576gdevpsdf.h, gdevvec.h, gdevpdf*.c, gdevps.c, gdevpsdf.c, gdevpx.c) 1577 1578</pre><h3><a name="V4.61_Platforms"></a>Platforms</h3><pre> 1579 1580Fixes bugs: 1581 - The MetroWerks C compiler gave an inexplicable error on a 1582particular initialization. (gdevmem.h, gdevmem.c) 1583 1584</pre><h3><a name="V4.61_Interpreter"></a>Interpreter</h3><pre> 1585 1586Fixes bugs: 1587 - The insideness testing operators sometimes reported hits 1588incorrectly. (zupath.c) 1589 - Mixed-type arithmetic used floats rather than doubles when 1590converting integers, possibly leading to loss of precision. (zarith.c, 1591zrelbit.c) 1592 - composefont was defined in a private dictionary, not in 1593systemdict. (gs_cmap.ps) 1594 - composefont didn't work, for several different reasons. 1595(gs_cmap.ps) 1596 - After a Type 1 font called an OtherSubr, an invalid memory access 1597usually occurred, because of an incorrect attempt to free a data structure. 1598(zchar1.c) 1599 - 2 .setlanguagelevel gave an error if globaldict hadn't been 1600defined yet. (zmisc2.c) 1601 1602Cleans up some warnings from picky compilers. Some of these actually 1603indicated problems, such as unreachable code, or failure to check for 1604(implausible) out-of-range data. (idict.c, idparam.c, igc.c, iinit.c, 1605imain.c, iscan.c, zbseq.c, zchar1.c, zdps1.c) 1606 1607Adjusts clients for a change in the internal character cache structure and 1608the introduction of the font next-glyph procedure. (zfont.c, zfont0.c) 1609 1610Refactors the Level 1 / Level 2 interpreter split slightly so that composite 1611fonts don't require all of Level 2. (int.mak, gs_dps1.ps, gs_dps2.ps) 1612 1613Adds FMapType 9 (CMap-encoded) composite font support. (int.mak, 1614gs_cmap.ps, ifont.h, zfcmap.c, zfont.c, zfont0.c) 1615 1616</pre><h3><a name="V4.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 1617 1618Adds recognition of /Identity values for BG, UCR, and TR functions in 1619ExtGState resources. (General function values still aren't recognized.) 1620(pdf_draw.ps) 1621 1622Centralizes the handling of inherited attributes. (pdf_draw.ps, 1623pdf_main.ps) 1624 1625Starts to add support for Type 0 fonts. (pdf_font.ps, pdf_main.ps) 1626 1627</pre><h3><a name="V4.61_Streams"></a>Streams</h3><pre> 1628 1629Cleans up some warnings from picky compilers. Some of these actually 1630indicated problems, such as unreachable code. (shc.h, scfd.c, sfilter2.c, 1631siscale.c, stream.c) 1632 1633</pre><h3><a name="V4.61_Library"></a>Library</h3><pre> 1634 1635Fixes bugs: 1636 - Some picky compilers disliked certain conditional expressions. 1637(gxclread.c) 1638 - Some picky compilers couldn't handle an extraneous semicolon. 1639(gdevvec.h) 1640 - A cast from byte ** to const byte ** was missing. (gdevvec.c) 1641 - Resizing the levels array of a halftone order when banding could 1642cause invalid memory accesses. (bug introduced in 4.60) (gxclread.c) 1643 - One picky compiler didn't allow taking the address of an extern 1644undefined structure. (lib.mak, gxclread.c) 1645 - When rendering Type 1 fonts, character overshoot was usually 1646suppressed when it shouldn't have been, often producing "squashed" 1647characters. (gxhint1.c) 1648 - On systems where sizeof(long) > sizeof(int), coordinate values of 1649more than 22 bits were passed through the band list incorrectly, producing 1650incorrect output. (gxclread.c) 1651 1652Cleans up some warnings from picky compilers. Some of these actually 1653indicated problems, such as unreachable code or (hypothetical) loss of 1654precision. (gsdevice.c, gshsb.c, gsht.c, gsstate.c, gstype1.c, gxclimag.c, 1655gxclpath.c, gxclread.c, gxpdash.c) 1656 1657Makes using font hints conditional, for debugging. (gxhint1.c) 1658 1659Adds library-level support for FMapType 9 (CMap-encoded) composite fonts. 1660There is still no support for rearranged fonts. (gsccode.h, gsfcmap.h, 1661gsstruct.h, gxfcache.h, gxfcmap.h, gxfont.h, gxfont0.h, gschar.c, gschar0.c, 1662gsfcmap.c, gsfont.c, gsfont0.c) 1663 1664Splits band list control and utilities from rectangle-oriented commands, 1665because a file was getting too big. (gxclist.c, gxclrect.c) 1666 1667Moves the temporary file names for command lists from the printer device 1668structure to the command list structure; moves opening and closing the 1669temporary files from gdev_prn_alloc/free to clist_open/close. (gdevprn.h, 1670gxclist.h, gdevprn.c, gxclist.c, gxclread.c) 1671 1672Changes the command list storage implementation interface to pass the file 1673name to the clist_rewind and clist_fseek functions, for the benefit of OSs 1674that require closing and reopening a file to switch between reading and 1675writing. This is a NON-BACKWARD-COMPATIBLE change in a non-public 1676interface. (gxclio.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c) 1677 1678Changes the get_outline procedure in Type 42 fonts to return the length of 1679the outline data as well as the pointer. This is a NON-BACKWARD-COMPATIBLE 1680change in a semi-public interface. (gxfont42.h, gstype42.c) 1681 1682</pre> 1683 1684<h2><a name="Version4.60"></a>Version 4.60 (limited) (3/2/97)</h2> 1685 1686<p> 1687This fileset moves color rendering up from the graphics state to the imager 1688state so that color rendering can happen after banding. It also shifts 1689image rendering to the rendering pass of banding for many common cases 1690(often referred to inaccurately as "high-level image" capability). The 1691changes involved are substantial and in some respects subtle, so 1692unfortunately it is quite possible that some new bugs have been introduced. 1693 1694<p> 1695This fileset also includes improvements to the new PCL XL driver 1696(pxlmono/color), and introduces an experimental PostScript driver (pswrite). 1697 1698<h3><a name="V4.60_Documentation"></a>Documentation</h3><pre> 1699 1700Fixes bugs: 1701 - The argument list of colorimage was incorrect. (zcolor1.c) 1702 - false .charboxpath incorrectly claimed to create the correct path 1703even when the CTM was not well-behaved. (language.txt) 1704 - The discussion of the "main program" files was out of date. 1705(make.txt) 1706 1707Updates the OS/2 EMX documentation. (make.txt) 1708 1709Modifies the Aladdin Ghostscript Free Public License slightly so it may be 1710applied to other software packages. (PUBLIC) 1711 1712Updates inaccurate build documentation for several Unix platforms. 1713(make.txt, ansihead.mak, cc-head.mak, gcc-head.mak, libpng.mak) 1714 1715Notes a problem with the MIPSpro 7.1 compiler. (make.txt) 1716 1717</pre><h3><a name="V4.60_Procedures"></a>Procedures</h3><pre> 1718 1719Fixes bugs: 1720 - Most makefiles didn't include version.mak. (msc.mak, 1721msvcwint.mak, os2.mak, tctail.mak, wctail.mak) 1722 - There was an incorrect dependency for the Windows printer device. 1723(devs.mak) 1724 1725Moves the PDF writer to devs.mak. (devs.mak, int.mak) 1726 1727Updates the main VMS script to be structured like version.mak. (vms.mak) 1728 1729</pre><h3><a name="V4.60_Drivers"></a>Drivers</h3><pre> 1730 1731Factors out the stream-writing procedures from the PDF writer, so they can 1732be shared with the new PostScript writer. (gdevpdfs.h => gdevpstr.h, 1733gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c => gdevpstr.c, 1734gdevpdft.c, gdevpsdf.c) 1735 1736Adds a PostScript writer (pswrite), similar to the PDF and PCL XL drivers. 1737Currently this handles fill/stroke graphics and Level 1 images; everything 1738else (including text) is turned into bitmaps. (devs.mak, gdevps.c) 1739 1740Changes the names of the PCL XL drivers from hpxmono/color to pxlmono/color. 1741(devs.mak, gdevpx.c) 1742 1743Updates the "vector" device support interface. THIS IS STILL SUBJECT TO 1744CHANGE WITHOUT NOTICE. (gdevvec.h, gdevpx.c, gdevvec.c) 1745 1746Makes the vgalib driver a page device. This seems bizarre, but it's 1747necessary for setpagedevice to work with it. (gdevvglb.c) 1748 1749Updates some drivers for the new color mapping interfaces. (gdevpx.c) 1750 1751Updates the user-contributed Canon LBP-8II and LIPS III driver. 1752(gdevlbp8.c) 1753 1754</pre><h3><a name="V4.60_Platforms"></a>Platforms</h3><pre> 1755 1756Fixes bugs: 1757 - The workaround for Ultrix's incorrect implementation of sh -e 1758still didn't work. (unixtail.mak) 1759 - The definition of offset_of didn't work on the Mac. (stdpre.h) 1760 1761Updates the OS/2 EMX linker command per input from a user. (os2.mak) 1762 1763</pre><h3><a name="V4.60_Fonts"></a>Fonts</h3><pre> 1764 1765Adds .pss (apparently used by Adobe for Multiple Master font instances) to 1766the list of extensions skipped by the GS_FONTPATH directory scanner. 1767(gs_fonts.ps) 1768 1769</pre><h3><a name="V4.60_Interpreter"></a>Interpreter</h3><pre> 1770 1771Fixes bugs: 1772 - Programs that rebind null, true, and/or false could cause all 1773kinds of problems. We've only fixed a couple of the places that might be 1774affected (findfont, quit), by wrapping an explicit "systemdict begin/end" 1775around the code; fixing this completely would probably require wrapping this 1776implicitly around almost every pseudo-operator, which would be too 1777expensive. (gs_fonts.ps, gs_lev2.ps) 1778 - In a Level 2 system, grestoreall stopped one level too early. 1779(zdevice2.c) 1780 - setpagedevice didn't restore the stack properly if it got an 1781error. (gs_setpd.ps) 1782 1783Changes the GC pointer enumeration interface to reduce the number of 1784'discarding const' warnings. See under Library below. (igc.c) 1785 1786Updates the interpreter for the change in the imager / graphics state split. 1787(zpcolor.c) 1788 1789Makes the stack-restoring behavior of pseudo-operators non-optional. 1790(interp.c) 1791 1792</pre><h3><a name="V4.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 1793 1794Fixes bugs: 1795 - PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at 1796position 45 rather than `hyphen'. (gs_pdf_e.ps, gs_wan_e.ps) 1797 1798</pre><h3><a name="V4.60_Streams"></a>Streams</h3><pre> 1799 1800Fixes bugs: 1801 - A header file wasn't protected against double inclusion. 1802(stream.h) 1803 - any_abs was redefined. (spngp.c) 1804 - The CCITTFaxDecode filter didn't fully initialize the "previous 1805line" for 2-D decoding, so if the very first line of data was 2-D, an 1806out-of-bounds memory access could occur. (scfd.c) 1807 1808</pre><h3><a name="V4.60_Library"></a>Library</h3><pre> 1809 1810Fixes bugs: 1811 - gs_image_next could read too much data, causing errors at the 1812interpreter level. (gsimage.c) 1813 - The bitmaps stored in the Pattern cache were usually freed, 1814leaving dangling pointers. (gsdcolor.h, gxpcache.h, gxpcolor.h, gsstate.c, 1815gxpcmap.c) 1816 - There was still one assignment to a const structure, and there 1817were some unnecessary const-discarding casts. (gxclread.c) 1818 - If a character in a Type 3 font was defined by executing 'show' 1819type commands, charpath did the wrong thing (didn't pick up the paths 1820created by the inner show). Similarly, if it uses 'stroke', true charpath 1821did the wrong thing (appended the path rather than the strokepath path). 1822(gxchar.h, gschar.c, gspaint.c) 1823 - A header file wasn't protected against double inclusion. 1824(gserror.h) 1825 - The new fast implementation of rectfill didn't handle rectangles 1826with negative width/height. (bug introduced in 4.32) (gsdps1.c) 1827 - Reading banded high-level images calculated the image height 1828incorrectly, (usually) causing a rangecheck. (gxclread.c) 1829 - When reading band data, a memory fault could occur if the halftone 1830cache hadn't been allocated yet. (gxht.c) 1831 - The imager state data for high-level images wasn't written soon 1832enough. (gxclimag.c) 1833 - High-level images computed bounding boxes incorrectly, so they 1834could write some garbage data in the band list, and could also fail to write 1835some information. (gsmatrix.h, gxmatrix.h, gxclimag.c) 1836 - High-level images wrote the raster value incorrectly in the band 1837list. (gxclimag.c) 1838 - Images with non-zero initial source X and non-portrait orientation 1839were displaced on the page. (In practice, this only applied to some banded 1840high-level images.) (gximage.c) 1841 - The bounding box device didn't forward output_page calls, causing 1842pages to be dropped or overprinted. (gdevbbox.c) 1843 - The band renderer considered all non-zero return codes as errors, 1844rather than only negative codes. (gxclread.c) 1845 - An unnecessary extern hadn't been removed. (gxclimag.c) 1846 - Some macros didn't parenthesize uses of their arguments, causing 1847syntax errors. (gsrefct.h) 1848 - The screen phase and color_info weren't set correctly when 1849rendering bands. (gsstate.h, gsht.c, gxclread.c) 1850 - A header file didn't declare all the opaque types it used. 1851(gsdevice.h) 1852 - Indexed color spaces didn't work with banded images. (They still 1853don't -- the check for writing the color space, and the code for reading the 1854table or map, are incomplete.) (gxclist.h, gxclpath.h, gxclimag.c, 1855gxclpath.c, gxclread.c) 1856 1857In preparation for implementing post-banding halftoning: 1858 1859 - Moves color rendering information, including alpha value, from 1860graphics state to imager state; also moves the allocator pointer. This is 1861quite a subtle change, and may have a significant bug tail. (gxdcolor.h, 1862gxht.h, gxistate.h, gzstate.h, gschar.c, gsdps1.c, gspaint.c, gsstate.c, 1863gxclread.c) 1864 1865 - Changes all the relevant color space and color mapping procedures 1866so they take a const gs_imager_state * (and, in some cases, a [const] 1867gx_device *) instead of a const gs_state *. This is a 1868non-backward-compatible change, but it only affects internal interfaces. 1869(gsdcolor.h, gxcmap.h, gxcspace.h, gxdcconv.h, gxdcolor.h, gxdither.h, 1870gxpcolor.h, gzht.h, gschar.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, 1871gscsepr.c, gsdevice.c, gsimage.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcconv.c, 1872gxdcolor.c, gxht.c, gximage.c, gximage[2345].c, gxpcmap.c) 1873 1874 - Changes the color and color space reference count adjustment 1875procedures similarly, to take a gs_memory_t * instead of a gs_state_t *. 1876(gxcspace.h, gscie.c, gscolor.c, gscolor2.c, gscsepr.c, gspcolor.c) 1877 1878 - Changes the gs_halftone in the graphics state from being part of 1879the gs_state_contents to being an independent reference-counted object. 1880This too may have a significant bug tail. (gxht.h, gxistate.h, gsht.c, 1881gsstate.c) 1882 1883 - Changes the image processing code so it no longer assumes that the 1884gs_imager_state is actually a gs_state. (gximage.h, gximage.c, gximage2.c, 1885gximage3.c, gximage4.c, gximage5.c) 1886 1887 - Adds a unique ID value to device halftones, so that it's possible 1888to detect (non-)changes quickly. (gxdht.h, gsht.c) 1889 1890Finishes the code for writing and reading color rendering information in the 1891band list. This involves changes to several band list opcodes. (gsht.h, 1892gsht1.h, gxcldev.h, gxclist.h, gxclpath.h, gxdht.h, gzht.h, gsht.c, gsht1.c, 1893gxclbits.c, gxclimag.c, gxclist.c, gxclread.c) 1894 1895Changes the garbage collector pointer enumeration procedure interface 1896slightly to reduce the number of 'discarding const' warnings. THIS IS A 1897NON-BACKWARD-COMPATIBLE CHANGE for anyone who didn't use the 1898ENUM_PTRS_BEGIN[_PROC] macro to start a pointer enumeration procedure (which 1899should be no one). (gsstruct.h, gsmemory.c) 1900 1901Corrects a few more needlessly const-discarding casts. (gxfcache.h, 1902gxccache.c) 1903 1904Checks for file reading errors when rasterizing bands. (gxclread.c) 1905 1906</pre> 1907 1908<hr> 1909 1910<h2><a name="Version4.51"></a>Version 4.51 (limited) (2/9/97)</h2> 1911 1912<p> 1913This version contains a more reasonable high-level PCL XL driver. The VMS 1914build script is working again, we think. 1915 1916<h3><a name="V4.51_Procedures"></a>Procedures</h3><pre> 1917 1918Fixes bugs: 1919 - The gsdll_h macro wasn't defined all the places it was needed. 1920(devs.mak, os2.mak) 1921 1922</pre><h3><a name="V4.51_Drivers"></a>Drivers</h3><pre> 1923 1924Continues to develop the "vector" driver infrastructure and the PCL XL 1925driver. EVERYTHING IN THESE FILES IS SUBJECT TO CHANGE WITHOUT NOTICE. 1926(gdevvec.h, gdevvec.c) 1927 1928Brings the PCL XL driver up to usable quality for graphics. Most 1929fill/stroke graphics, and portrait-orientation bitmap images up to 8 bits 1930per pixel, are converted directly to their PCL XL equivalents. Text is 1931still treated as bitmaps. Both gray-scale and color output are now 1932supported. (devs.mak, gdevpx.c) 1933 1934</pre><h3><a name="V4.51_Platforms"></a>Platforms</h3><pre> 1935 1936Fixes bugs: 1937 - When using gsos2.exe with gsdll2.dll, reducing the size of the 1938page bitmap caused a limitcheck error with the message 1939 Failed to decommit memory in pm_alloc_bitmap, rc = 87 (gdevpm.c) 1940 - The scripts that construct gconfig_.h failed on Ultrix, because 1941Ultrix's implementation of sh -e is incorrect. (unixtail.mak, ugcclib.mak) 1942 - Some systems that have sys/times.h don't define CLK_TCK, making a 1943compilation fail. (time_.h) 1944 1945</pre><h3><a name="V4.51_Interpreter"></a>Interpreter</h3><pre> 1946 1947Fixes bugs: 1948 - An omitted semicolon wasn't detected by gcc. (idict.c) 1949 1950Removes a source of unnecessary duplication by getting the revision number 1951and date from version.mak. (gs.mak, int.mak, version.mak, gscdef.c) 1952 1953</pre><h3><a name="V4.51_Streams"></a>Streams</h3><pre> 1954 1955Fixes bugs: 1956 - The minimum buffer sizes for the RunLengthDecode filter hadn't 1957been changed to reflect the algorithm improvement made in release 4.38. 1958(srld.c) 1959 1960Changes the RunLengthEncode filter so it can make progress with only a 19612-byte output buffer. (srlx.h, srle.c) 1962 1963</pre><h3><a name="V4.51_Library"></a>Library</h3><pre> 1964 1965Fixes bugs: 1966 - Because of a typo, the slow general algorithm was always used for 1967monochrome images. (Performance bug only, but a serious one.) (gximage2.c) 1968 - Dots (zero-length lines with round caps and zero dot length) 1969caused an infinite loop. (bug introduced in 4.40) (gxstroke.c) 1970 - Some image data unpacking procedures were always required, but 1971weren't always included. (bug introduced in 4.50) (gximage.c, gximage0.c, 1972gximage3.c) 1973 - Images with 8 bits per pixel and non-identity Decode produced 1974garbage. (bug introduced later than 4.03) (gximage0.c) 1975 - Some necessary casts and omitted punctuation weren't detected by 1976gcc. (gxpath.h, gsargs.c, gsstate.c, gxclread.c, gxpdash.c) 1977 - The band list became confused if a band had no commands at all. 1978(gxclread.c) 1979 - If a path included a closepath followed by a moveto to the same 1980point, it could be written incorrectly in the band list. (bug probably 1981introduced in 3.60) (gxclpath.c) 1982 1983Changes some internal computations for arcs from float to double for greater 1984accuracy. (gspath1.c) 1985 1986</pre> 1987 1988<h2><a name="Version4.50"></a>Version 4.50 (limited) (1/31/97)</h2> 1989 1990<p> 1991This release contains an experimental high-level PCL XL driver, a little 1992more support for CID/CMap fonts, and the usual bug fixes. NOTE: the VMS 1993build script is known to be out of sync with the makefiles again; we still 1994don't see any alternative to constant struggles with this problem. 1995 1996<h3><a name="V4.50_Documentation"></a>Documentation</h3><pre> 1997 1998Corrects the -h message, which gave an incorrect file name for the bug 1999report form. (imainarg.c) 2000 2001Removes documentation for 16-bit MS-DOS platforms with the Borland compiler. 2002(fonts.txt, make.txt, new-user.txt, use.txt) 2003 2004</pre><h3><a name="V4.50_Procedures"></a>Procedures</h3><pre> 2005 2006Fixes bugs: 2007 - The Watcom library makefile didn't define the directory 2008information for libpng and zlib. (watclib.mak) 2009 2010Moves the selection of band list implementation (file- vs. RAM-based) and 2011the compression filter for RAM-based band lists up to the top-level 2012makefiles. Again, this is a NON-BACKWARD-COMPATIBLE procedure change. 2013(lib.mak, *.mak) 2014 2015Moves the selection of version number for all platforms (except VMS, as 2016usual) to a separate file. This will reduce the number of files that need 2017editing when the version number changes. (ansihead.mak, cc-head.mak, 2018gcc-head.mak, ugcclib.mak, version.mak, tar_cat) 2019 2020</pre><h3><a name="V4.50_Drivers"></a>Drivers</h3><pre> 2021 2022Fixes bugs: 2023 - An error in the (unsupported) SGI RGB driver could cause crashes 2024or incorrect output. (gdevsgi.c) 2025 2026Starts to create a framework for structured output ("vector") drivers (PDF, 2027PostScript, PCL XL, etc.) (gdevbbox.h, gdevvec.h, gsdcolor.h, gsstruct.h, 2028gxdevice.h, gdevvec.c) 2029 2030Moves default page size parameters to a more accessible header. (gdevprn.h, 2031gxdevice.h, gdevx.c) 2032 2033Adds a driver that produces properly structured PCL XL output. This is 2034highly experimental and not ready for use yet. (gdevpx.c) 2035 2036</pre><h3><a name="V4.50_Platforms"></a>Platforms</h3><pre> 2037 2038Removes support for 16-bit MS-DOS platforms with the Borland compiler. For 2039the moment, 16-bit MS Windows is still supported. (bc.mak, bcflags.mak, 2040bclib.mak, tc.mak) 2041 2042</pre><h3><a name="V4.50_Interpreter"></a>Interpreter</h3><pre> 2043 2044Fixes bugs: 2045 - File-based CIDFonts (with delayed, incremental loading of 2046character outlines) didn't work. (gs_cidfn.ps) 2047 2048Finishes implementing the definition of CMap resources, except for 2049rearranged fonts. (gs_cidfn.ps, gs_cmap.ps) 2050 2051Adds a little more CMap support code. (zcid.c) 2052 2053Removes the .setcurrentfile operator, since it doesn't solve the problem it 2054was intended to address. (zcontrol.c) 2055 2056Adapts the interpreter to use the new argument processing code. 2057(imainarg.c) 2058 2059</pre><h3><a name="V4.50_Streams"></a>Streams</h3><pre> 2060 2061Fixes bugs: 2062 - The CCITTFaxDecode filter could access as much as 3 bytes beyond 2063the end of a buffer, causing an invalid memory access. (This is essentially 2064the same bug that was fixed for the CCITTFaxEncode filter in 4.38.) 2065(scfd.c) 2066 2067</pre><h3><a name="V4.50_Library"></a>Library</h3><pre> 2068 2069Fixes bugs: 2070 - Painting an image without having set up any halftone could cause a 2071crash. (gxht.c) 2072 - In a very obscure case, an occasional scan line of landscape 2073images could get corrupted. (gximage0.c) 2074 - Because of a rounding error, patterns could fail to be painted in 2075certain cases. (gxpcolor.h, gspcolor.c, gxpcmap.c) 2076 - Very large line widths or miter limits could cause the computation 2077of stroke expansion to overflow. (gxpaint.h, gdevbbox.c, gxclpath.c, 2078gxstroke.c) 2079 - The phase could be incorrect for simple patterns. (gspcolor.c) 2080 - The default implementation of copy_mono used an incorrect 2081RasterOp. (gdevdflt.c) 2082 - The default implementation of fill_masked didn't increment the row 2083pointer, causing characters to appear as solid rectangular blocks. 2084(gxdcolor.c) 2085 2086Eliminates an unnecessary gsave and grestore from rectfill and rectstroke if 2087the path was null. (gsdps1.c) 2088 2089Adds a limit on the amount of space that the default (C heap) allocator will 2090allocate, and a record of the maximum amount allocated, to help testing 2091embedded products. (gsmemory.c) 2092 2093Changes the band list algorithm for deciding how many replicas of a halftone 2094tile to store in the tile cache. The previous algorithm was too liberal, 2095which could cause the cache to overflow and many unnecessary bitmaps to be 2096written in the band list. (gxclbits.c) 2097 2098Writes clipping with a rectangle more compactly in the band list. 2099(gxfixed.h, gxclpath.c) 2100 2101Adds new band list commands for representing 90- and 180-degree arcs 2102compactly. (gxclpath.h, gxclpath.c, gxclread.c) 2103 2104Repackages handling of general monochrome images, color images, and 12-bit 2105and interpolated images, so that they are included optionally rather than in 2106all configurations. (int.mak, lib.mak, gximage.h, gximage.c, 2107gximage[12345].c) 2108 2109Changes the structure definition for devices to include no-op pointer 2110enumeration and relocation, so they can have subclasses. (gxdevice.h) 2111 2112Adds a library facility for processing command line arguments with 2113@-expansion. (gsargs.h, gsargs.c) 2114 2115</pre> 2116 2117<hr> 2118 2119<h2><a name="Version4.41"></a>Version 4.41 (private) (1/21/97)</h2> 2120 2121<p> 2122This release adds a PCL XL output driver, and a few performance 2123improvements. 2124 2125<h3><a name="V4.41_Procedures"></a>Procedures</h3><pre> 2126 2127Fixes bugs: 2128 - The zlib library used an incorrect header file when compiling. 2129(zlib.mak) 2130 2131Changes the names of the preprocessor symbols indicating the presence of 2132system header files to be consistent with the ones used by GNU configure. 2133(dvx-tail.mak, ugcclib.mak, unixtail.mak, vms.mak; dirent_.h, time_.h; 2134gp_unix.c) 2135 2136Changes the method for choosing the compression filter for RAM-based band 2137lists. This is a NON-BACKWARD-COMPATIBLE change in the makefile. (lib.mak) 2138 2139</pre><h3><a name="V4.41_Drivers"></a>Drivers</h3><pre> 2140 2141Adds black-and-white and 8-bit gray PCL XL (PCL 6) drivers for the LaserJet 21425 and 6 family. This driver is extremely simple and just emits bitmaps; 2143future drivers will use more PCL XL high-level constructs. (gdevlj56.c) 2144 2145</pre><h3><a name="V4.41_Fonts"></a>Fonts</h3><pre> 2146 2147Updates the free font distribution to add the URW Grotesk and Antiqua fonts. 2148 2149</pre><h3><a name="V4.41_Interpreter"></a>Interpreter</h3><pre> 2150 2151Fixes bugs: 2152 - gs -h and -v returned with a non-zero exit code on all platforms. 2153(This is necessary under Windows, to keep the message visible on the screen, 2154but nowhere else.) (imainarg.c) 2155 - Resizing a dictionary could exceed dict_max_size, causing memory 2156corruption. (dstack.h, idict.h, idict.c, zdict.c) 2157 2158Adds .setlinecap and .setlinejoin that can use the extended range of line 2159cap/join values, and redefines setlinecap and setlinejoin in terms of them. 2160(gs_init.ps, zgstate.c) 2161 2162</pre><h3><a name="V4.41_Streams"></a>Streams</h3><pre> 2163 2164Fixes bugs: 2165 - The CCITTFaxDecode filter with EncodedByteAlign = true skipped to 2166a byte boundary before checking for an EOL. This may be wrong if EndOfLine 2167= true; we aren't at all sure what should happen if EndOfLine = false. 2168(scfd.c) 2169 2170Adds a "no wrapper" option to the zlib streams, to optionally suppress the 2171time-consuming integrity checksum computation. (szlibx.h, szlibc.c, 2172szlibd.c, szlibe.c) 2173 2174</pre><h3><a name="V4.41_Library"></a>Library</h3><pre> 2175 2176Fixes bugs: 2177 - Dashed lines with zero-length drawn segments (dots) that fell 2178exactly on a corner produced inappropriate output. (pcl/test19.pxs) 2179(gxpdash.c, gxstroke.c) 2180 - Dashed lines didn't set the segment notes properly. (gxpdash.c) 2181 - The bounding box device didn't free a bookkeeping structure at the 2182end of processing an image. (gdevbbox.c) 2183 - Curve points could get computed incorrectly when using emulated 2184floating point. (gxpcopy.c) 2185 - The 1-element cache for curve_x_at_y didn't work if Y was 2186decreasing. (gxfixed.h, gxpcopy.c) 2187 2188Distinguishes between error and informational exits. (stdpre.h) 2189 2190Defines and checks maximum values for line cap and join parameters. 2191(gslparam.h, gsline.c) 2192 2193Removes the 'not last' segment note, since it is not used for anything. 2194(gxpath.h, gspath1.c, gxpath2.c, gxpcopy.c, gxpflat.c, gxstroke.c) 2195 2196Changes the memory freeing algorithm for RAM-based band lists back to the 2197original one, since the "improved" one had more bugs than it was worth 2198chasing. (gxclmem.c) 2199 2200Speeds up the A * B / C algorithm a little. (gsmisc.c) 2201 2202Speeds up curve_x_at_y by recognizing more cases that don't require the slow 2203A * B / C algorithm. (gxpcopy.c) 2204 2205Changes the path filling code so it uses fill-by-trapezoids even if 2206fill_adjust is zero, as long as the flatness is at least 1 pixel. 2207(gxfill.c) 2208 2209Removes the (unneeded) floating point operations from gx_curve_log2_samples. 2210(gxpflat.c) 2211 2212Changes the memory-based implementation of band lists so that it constructs 2213the compressor and decompressor by calling procedures rather than 2214instantiating templates: this allows setting filter parameters to 2215non-default values. (gxclmem.h, gxcllzw.c, gxclmem.c, gxclzlib.c) 2216 2217</pre> 2218 2219<h2><a name="Version4.40"></a>Version 4.40 (private) (1/13/97)</h2> 2220 2221<p> 2222This version finally handles the last graphics model discrepancies between 2223PostScript and PCL, by correctly implementing null joins, minimum dot 2224lengths, and tangent-aligned curve ends. It also contains some significant 2225performance improvements, and as usual a few bug fixes. 2226 2227<h3><a name="V4.40_Documentation"></a>Documentation</h3><pre> 2228 2229Documents the new accurate curves and path dashing operators. 2230(language.txt) 2231 2232</pre><h3><a name="V4.40_Utilities"></a>Utilities</h3><pre> 2233 2234Adds switches for genconf to set and unset a prefix for file names. 2235(genconf.c) 2236 2237</pre><h3><a name="V4.40_Drivers"></a>Drivers</h3><pre> 2238 2239Adds recognition of the new Distiller 3.0 parameters to the PDF writer. 2240(None of them have any effect yet.) (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, 2241gdevpdfp.c) 2242 2243Converts all the output functions in the PDF writer from being file-based to 2244using streams, in anticipation of adding compression. (gdevpdfs.h, 2245gdevpdfx.h, gdevpdf*.c, gdevpdfs.c) 2246 2247</pre><h3><a name="V4.40_Interpreter"></a>Interpreter</h3><pre> 2248 2249Adds operators for accessing the new accurate curves flag in the graphics 2250state. (zgstate.c) 2251 2252Adds an operator for invoking gs_dashpath. (zpath1.c) 2253 2254</pre><h3><a name="V4.40_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 2255 2256Fixes bugs: 2257 - Indexed color spaces whose base space was a CIE space caused an 2258error. (pdf_draw.ps) 2259 2260</pre><h3><a name="V4.40_Library"></a>Library</h3><pre> 2261 2262Fixes bugs: 2263 - A pointer was declared const incorrectly. (gxcpath.c) 2264 - Filling with a pattern often failed to pass a non-null bitmap ID, 2265causing excessive writing in the band list. (Performance bug only.) 2266(gspcolor.c) 2267 - The bounding box device didn't discount copy_mono or draw_line 2268operations drawing in white. (gdevbbox.c) 2269 - The bounding box device didn't read out the bounding box correctly 2270as the PageBoundingBox device parameter. (It did return it correctly 2271through the gx_device_bbox_bbox procedure.) (gdevbbox.c) 2272 - The default implementation of fill_triangle drew nothing or 2273incorrect output if the corners of the triangle were specified in certain 2274orders (ax < 0 or bx < 0) (i.e., the previous "fix" had a bug). 2275(gdevddrw.c) 2276 2277Changes tile size from always being set in all bands to being 'known' by 2278bands individually. (gxclist.h, gxcldev.h, gxclbits.c, gxclist.c) 2279 2280Computes an additional value in advance when rendering images. (gximage.h, 2281gximage1.c, gximage2.c) 2282 2283Replaces some slow loops with calls of memmove. (gxclmem.c) 2284 2285Provides a fixed-point implementation of A * B / C for machines with slow 2286floating point. (gxfixed.h, gsmisc.c) 2287 2288Extends the "device color" type to implement filling masked regions as well 2289as rectangles. (gxdcolor.h, gdevdflt.c, gspcolor.c, gxcht.c, gxdcolor.c, 2290gxht.c) 2291 2292Makes unclipped monobit portrait and landscape images and image masks use 2293the new masked fill capability of device colors. (gximage.h, gximage.c, 2294gximage1.c, gximage2.c) 2295 2296Adds a macro for determining pointer alignment. (stdpre.h, gdevdflt.c) 2297 2298When floating point is slow, uses a different, faster algorithm for 2299gx_curve_x_at_y. (gxpcopy.c) 2300 2301Improves performance by adding a one-element cache for gx_curve_x_at_y. 2302(gzpath.h, gxpcopy.c) 2303 2304Reduces overhead when banded images are pre-rasterized (currently, always). 2305(gxclimag.c) 2306 2307Adds a rendering cost estimate field to each band in a band list. This 2308field isn't actually used for anything yet; eventually, the intent is that 2309bands with a high cost will get rendered, and stored in compressed form, 2310before starting the engine. (gxclist.h) 2311 2312Adds the concept of 'notes' for path segments, to allow remember what 2313segments constitute a single curve or arc. Currently we set these properly 2314for everything except dashed paths. (gxclpath.h, gxpath.h, gzpath.h, 2315gspath1.c, gxclpath.c, gxclread.c, gxpath.c, gxpath2.c, gxpcopy.c) 2316 2317When the dot length is non-zero, changes curve stroking to always use bevel 2318joins within each curve rather than the current join. This prevents a 2319"bristly" look with no join and butt caps. (gxstroke.c) 2320 2321Adds an "accurate curves" capability that makes the last line segment of a 2322flattened curve actually be tangent to the curve, which in turn makes 2323flat-end caps be correctly perpendicular to the tangent. (gxpath.h, 2324gxpcopy.c) 2325 2326Adds an "accurate curves" flag in the graphics state. (gsline.h, 2327gxclpath.h, gxistate.h, gsline.c, gspath.c, gspath1.c, gxclpath.c, 2328gxclread.c, gxfill.c, gxstroke.c) 2329 2330Changes the meaning of "no join" (gs_join_none) so that instead of producing 2331no join and butt caps, it produces whatever the current cap is. This is 2332compatible with the H-P definition. (gxstroke.c) 2333 2334Implements non-zero dot length for dash patterns. (gxpdash.c) 2335 2336Splits off the curve flattening algorithms into a separate file. 2337(gxpcopy.c, gxpflat.c) 2338 2339</pre> 2340 2341<hr> 2342 2343<h2><a name="Version4.39"></a>Version 4.39 (limited) (1/1/97)</h2> 2344 2345<p> 2346This version was created only to accompany a release of the PCL XL 2347interpreter. It was withdrawn the day after it was released, because the 2348tools used to produce it put the wrong files in the filesets. 2349 2350<h3><a name="V4.39_Documentation"></a>Documentation</h3><pre> 2351 2352Adds a more detailed description of the third-party ps_view viewer 2353interface. (new-user.txt) 2354 2355Corrects an error in a reference to the PSLRM. (lib.txt) 2356 2357Documents the change in .makeoperator. (language.txt) 2358 2359Updates the FTP location of the zlib sources. (zlib.mak) 2360 2361</pre><h3><a name="V4.39_Procedures"></a>Procedures</h3><pre> 2362 2363Fixes bugs: 2364 - The Unix library makefile didn't include the necessary definitions 2365for libpng and zlib. (ugcclib.mak) 2366 2367Allows selecting the compression filters for memory-based band lists in the 2368makefile. Makes zlib (deflate) the default compressor for memory-based band 2369lists. (lib.mak) 2370 2371</pre><h3><a name="V4.39_Utilities"></a>Utilities</h3><pre> 2372 2373Fixes bugs: 2374 - prfont.ps wouldn't print unencoded characters in Type 42 fonts. 2375(prfont.ps) 2376 2377</pre><h3><a name="V4.39_Drivers"></a>Drivers</h3><pre> 2378 2379Fixes bugs: 2380 - The H-P monochrome driver didn't put out enough initialization 2381commands at the beginning of each page to make each page printable 2382independently. (gdevdjet.c) 2383 2384</pre><h3><a name="V4.39_Interpreter"></a>Interpreter</h3><pre> 2385 2386Changes ref_stack_count_inline so it never does a procedure call. 2387(istack.h) 2388 2389Changes .makeoperator so that operator procedures save the stack depths, and 2390restore the stack pointers (if possible) if the operator encounters an 2391error. This is a NON-BACKWARD-COMPATIBLE CHANGE; it requires rewriting the 2392'stop' and 'stopped' pseudo-operators (and, if there were any, any other 2393pseudo-operators that interact with the error handling machinery) in C. 2394(gs_init.ps, interp.c, zcontrol.c) 2395 2396Adds recognition of the LeadingEdge, MediaClass, and RollFedMedia keys in a 2397page device dictionary, per the Adobe supplement for their version 2017 2398interpreter. This involves a NON-BACKWARD-COMPATIBLE change to the 2399(undocumented) .matchpagesize operator. (gs_setpd.ps, zmedia2.c) 2400 2401Makes necessary changes for compatibility with the added parameters for the 2402zlib filters. (zfzlib.c) 2403 2404</pre><h3><a name="V4.39_Streams"></a>Streams</h3><pre> 2405 2406Fixes bugs: 2407 - The zlib encoder returned EOFC when it should have returned 0. 2408(szlibe.c) 2409 2410Adds optional parameters and reset procedures for the zlib filters. 2411(szlibx.h, szlibc.c, szlibd.c, szlibe.c) 2412 2413</pre><h3><a name="V4.39_Library"></a>Library</h3><pre> 2414 2415Fixes bugs: 2416 - Displaying characters with a non-standard RasterOp could cause an 2417invalid memory access. (gdevdflt.c) 2418 - Banding sometimes used an incorrect RasterOp. (gxclread.c) 2419 - When banding, mixing Patterns and halftones could confuse the 2420bookkeeping of tile size, leading to incorrect generation of the band list 2421and error messages or confusion when rasterizing. (gxclist.h, gxclbits.c, 2422gxclread.c) 2423 - If only the dash pattern offset changed, and not any of the other 2424dash-related parameters, the new offset wasn't written in the band list, 2425causing incorrect output. (gxclpath.c) 2426 - Oversized halftone tiles didn't report their error code properly. 2427(gxclbits.c) 2428 - Oversized halftone tiles with RasterOp caused an error. 2429(gxclist.c) 2430 - When banding, RasterOp transfers that crossed a band boundary 2431didn't access the correct source data on bands other than the first. 2432(gxclist.c) 2433 - There were redundant copies of the code for writing a RasterOp 2434value in the band list. (gxclimag.c, gxclpath.c) 2435 - Oversized patterns or halftones produced garbled output. 2436(gxclbits.c) 2437 - The check for oversized patterns or halftones was slightly 2438incorrect, leading to the possibility of writing out a tile that would 2439overflow the reading buffer and corrupt memory. (gxclbits.c) 2440 - When banding, RasterOp wasn't applied to fill and stroke 2441operations, and wasn't applied correctly to characters. (gdevdflt.c, 2442gxclimag.c, gxclread.c) 2443 - The RasterOp-related optimizations for black-and-white images 2444sometimes produced incorrect output. (gximage.c, gximage2.c) 2445 - The default implementation of fill_triangle didn't draw anything 2446if the corners of the triangle were specified in certain orders (ax < 0 or 2447bx < 0). (gdevddrw.c) 2448 - Painting with a Pattern could pass out-of-range phase values to 2449driver procedures. (gspcolor.c) 2450 - Because of an off-by-1 error, halftones or patterns passed through 2451the band list could write past the end of their allocated space in the band 2452tile cache, leading to incorrect output or possible arithmetic exceptions or 2453memory access errors. (gsbitops.c) 2454 2455Adds -Z: for printing only the minimal command list statistics. (gxclist.c, 2456gxclread.c) 2457 2458Expands band list tracing so it includes all of the data associated with the 2459command, not just the command name and a few command parameters. 2460(gxclread.c) 2461 2462Adds free lists for strings. Currently these are only used in 2463non-garbage-collected environments. (gxalloc.h, gsalloc.c, gsnogc.c) 2464 2465Adds a procedure for copying a path structure, and an (internal) accessor 2466for the current path in the graphics state. (gxpath.h, gspath.c, gxpath.c) 2467 2468Speeds up filling characters with halftones a little bit. (gdevdflt.c) 2469 2470Changes the memory-based implementation of band lists so it can use any 2471compression / decompression filter, so it only compresses when it has 2472allocated a specified amount of buffer storage, and so it releases its 2473buffer storage at the end of each page. (gxclmem.h, gxclmem.c) 2474 2475Speeds up counting the number of 1-bits in a byte, which is used in some 2476image processing algorithms. (gsbittab.h, gsbittab.c) 2477 2478Reduces the band list space required for changing tile size. (gxcldev.h, 2479gxclbits.c, gxclread.c) 2480 2481</pre> 2482 2483<h2><a name="Version4.38"></a>Version 4.38 (limited) (12/20/96)</h2> 2484 2485<p> 2486Adds support for a couple of undocumented features in Type 1 fonts. 2487 2488<h3><a name="V4.38_Interpreter"></a>Interpreter</h3><pre> 2489 2490Adds handling of the Type 1 font subroutineNumberBias (an optional entry in 2491the Private dictionary) and lenIV = -1 features at the interpreter level. 2492(zchar1.c, zfont1.c) 2493 2494</pre><h3><a name="V4.38_Streams"></a>Streams</h3><pre> 2495 2496Fixes bugs: 2497 - The CCITTFaxEncode filter could access as much as 3 bytes beyond 2498the end of a buffer, causing an invalid memory access. (scfe.c) 2499 2500Changes the RunLengthDecode filter so it can make progress (produce output) 2501with only a 1-byte output buffer. (srlx.h, srld.c) 2502 2503</pre><h3><a name="V4.38_Library"></a>Library</h3><pre> 2504 2505Fixes bugs: 2506 - The sine and cosine of multiples of 90 degrees weren't exact. 2507(gxfarith.h, gsmisc.c) 2508 - The expanded bounding box computation for strokes didn't take into 2509account the possibility of overflow. (gxstroke.c) 2510 - The allocator didn't fill freed strings with the 'free' mark. 2511(gsalloc.c) 2512 - When using a pattern with RasterOp, the phase was computed 2513incorrectly, leading to anomalous filling patterns. (gspcolor.c) 2514 - Patterns with a non-zero translation in the matrix passed to 2515makepattern didn't translate the pattern origin properly. (gxcolor2.h, 2516gxpcolor.h, gspcolor.c) 2517 2518Adds a subroutineNumberBias field to Type 1 fonts. This is an undocumented 2519feature of the Type 1 font format. (gxfont1.h, gstype1.c) 2520 2521Interprets lenIV = -1 in Type 1 fonts as meaning that the CharStrings are 2522unencrypted. This too is an undocumented feature of the Type 1 format. 2523(gxfont1.h, gxtype1.h, gstype1.c, gstype2.c) 2524 2525Changes gs_clippath so it returns more reasonable outlines. (There are too 2526many programs that rely on being able to stroke the result of clippath, even 2527though both the Adobe and H-P literature specifically say the results are 2528unpredictable.) (gxcpath.h, gxcpath.c) 2529 2530</pre> 2531 2532<h2><a name="Version4.37"></a>Version 4.37 (limited) (12/10/96)</h2> 2533 2534<p> 2535This version implements separate halftone phase for source and texture, 2536required for PCL XL implementation. 2537 2538<h3><a name="V4.37_Fonts"></a>Fonts</h3><pre> 2539 2540Fixes bugs: 2541 - Loading a native TrueType font without a 'post' table caused an 2542error. (gs_ttf.ps) 2543 2544</pre><h3><a name="V4.37_Interpreter"></a>Interpreter</h3><pre> 2545 2546Extends the interpreter to handle the new separate halftone phases for the 2547RasterOp source and texture. (gs_dps1.ps, zdps1.c) 2548 2549Makes a small change to accommodate a library change supporting Type 2 2550charstrings. (zfont1.c) 2551 2552</pre><h3><a name="V4.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 2553 2554Implements the FontFile2 key for embedded TrueType fonts. (pdf_font.ps) 2555 2556Starts to implement the FontFile3 key for compressed Type 1 fonts. This 2557code is currently disabled, because none of the necessary underlying C is 2558written yet. (pdf_font.ps) 2559 2560</pre><h3><a name="V4.37_Library"></a>Library</h3><pre> 2561 2562Fixes bugs: 2563 - The floating point emulator often returned incorrect results (too 2564many bugs to list). (This is not used in any standard configuration.) 2565(gsfemu.c) 2566 - The new copy_for procedure for gstates incorrectly declared an 2567argument as const. (gxstate.h, gsstate.c) 2568 - If a curve had to be split twice along the same axis to make it 2569monotonic, the split points could still be returned in the wrong order, 2570possibly causing curved edges to turn into straight lines, and the algorithm 2571still produced the wrong results if the curve had to be split twice along a 2572single axis. This is the second time we have "fixed" these problems and the 25734th time we have "fixed" the curve monotonizing algorithm. (gxpcopy.c) 2574 - Setting halftones cause a memory leak, because the subsidiary 2575objects of the device halftone weren't freed properly. Fixing this required 2576changing the graphics state implementation from allocating a device halftone 2577for each gstate to managing the device halftone with reference counting. 2578(gxdht.h, gzstate.h, gsht.c, gsstate.c) 2579 2580Provides an optimized version of ldexp for FPU-less configurations, and 2581changes one key algorithm to use it. (gxfixed.h, gsmisc.c, gxpcopy.c) 2582 2583Speeds up imagemask with a halftone a little. (This will eventually require 2584more serious optimization.) (gximage2.c) 2585 2586Adds a -Z* switch for tracing varieties of image rendering. (gximage.c) 2587 2588Recognizes that if the logical operation is equivalent to D = S (after 2589accounting for a constant texture, if any), or if it is equivalent to D = ~S 2590or D = D {&,|}{S,~S} and D and S are both monobit and both colors are pure, 2591imaging with RasterOp can be executed without invoking RasterOp. (gsropt.h, 2592gximage.c) 2593 2594Makes coordinate transformations with landscape matrices execute as fast as 2595with portrait matrices. (gxmatrix.h, gscoord.c, gsmatrix.c) 2596 2597Adds some sketch code for interpreting Type 2 charstrings. It compiles, but 2598it makes no pretense of being runnable. (gstype1.h, gxop1.h, gxtype1.h, 2599gstype2.h, gxfont1.h, gstype1.c, gstype2.c) 2600 2601Extends the library to allow setting separate halftone phases for the 2602RasterOp source and texture, which is needed to implement halftone screens 2603that behave like those in H-P's PCL XL printers. (gscsel.h, gsstate.h, 2604gxcmap.h, gxcspace.h, gxdcolor.h, gxdither.h, gxpcolor.h, gzht.h, gzstate.h, 2605gscie.c, gscsepr.c, gsht.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcolor.c, 2606gxht.c, gximage.c, gximage[2345].c, gspcmap.c) ****** STILL NEED TO UPDATE 2607BANDING CODE, grep FOR phase ****** 2608 2609Removes the rc_header member from the gs_halftone structure, since we don't 2610need it after all. (gxht.h) 2611 2612</pre> 2613 2614<h2><a name="Version4.36"></a>Version 4.36 (limited) (12/3/96)</h2> 2615 2616<p> 2617This version fixes a number of library bugs related to RasterOp, Patterns, 2618and memory management. 2619 2620<h3><a name="V4.36_Documentation"></a>Documentation</h3><pre> 2621 2622Changes the definition of texture transparency to match the peculiar H-P 2623specification. (drivers.txt, language.txt) 2624 2625</pre><h3><a name="V4.36_Drivers"></a>Drivers</h3><pre> 2626 2627Fixes bugs: 2628 - x_get_bits didn't flush updates to the frame buffer, leading to 2629possibly incorrect data being returned. (gdevx.c) 2630 - x_get_bits added padding to the scan line being copied, possibly 2631corrupting memory. (gdevx.c) 2632 2633Changes the x11mono driver to define white = 0, black = 1 to more closely 2634model black-and-white printers. (This is an internal change that doesn't 2635affect the output.) (gdevxalt.c) 2636 2637</pre><h3><a name="V4.36_Interpreter"></a>Interpreter</h3><pre> 2638 2639Removes some code that is no longer needed, by virtue of the fix for the 2640memory leak in Pattern remapping. (zpcolor.c) 2641 2642</pre><h3><a name="V4.36_Library"></a>Library</h3><pre> 2643 2644Fixes bugs: 2645 - Patterns wider than 1024 bits caused a rangecheck. (gxclip2.h, 2646gxclip2.c) 2647 - Dash patterns never got freed. The fix for this slows down gsave 2648and grestore slightly, but we don't see any way around it. (gsline.c, 2649gsstate.c) 2650 - If the CTM was very non-uniform in X and Y, stroke sometimes 2651didn't recognize thin lines as being thin, leading to dropouts. 2652(gxstroke.c) 2653 - RasterOps that didn't use S or T still took S or T transparency 2654into account. (gdevmrop.c) 2655 - RasterOps with no source didn't handle the possibility that the 2656device color for black might have a value other than 0. (gxdcolor.h, 2657gspcolor.c, gxcht.c, gxdcolor.c, gxht.c) 2658 - White pixels in halftones on black-and-white devices apparently 2659are *not* supposed to be treated as opaque for RasterOp. (gxcht.c, gxht.c) 2660 - clippath caused memory to be lost until a restore or a garbage 2661collection. (gspath.c) 2662 - Clipping lists weren't ever freed, and clipping paths sometimes 2663weren't freed, causing memory to be lost until a restore or a garbage 2664collection. (gzacpath.h, gxacpath.c, gxcpath.c) 2665 - Freeing a pattern instance referenced a pointer after it had been 2666freed, causing an invalid memory access. (gspcolor.c) 2667 - Remapping a Pattern color lost track of the temporary gstate, 2668memory devices, and possibly the mask, causing memory to be lost until a 2669restore or GC. (gxpcolor.h, gxpcmap.c) 2670 - Remapping a Pattern color could cause paths to be marked as 2671shared, preventing them from being freed until a restore or GC. (gxpcmap.c) 2672 2673Enhances the non-tracing garbage collector so that if there are no strings 2674allocated at all, it resets the string allocation pointers. (gsnogc.c) 2675 2676Optimizes the black-and-white RasterOp implementation by recognizing cases 2677that can be implemented directly by fill_rectangle, copy_mono, or 2678tile_rectangle. (gdevmrop.h, gsropt.h, gdevmrop.c, gsroptab.c) 2679 2680Changes -ZA so it no longer produces [P] tracing messages for path 2681construction. (gxpath.c) 2682 2683Adds a gx_pattern_cache_winnow procedure for selectively removing entries 2684from the Pattern cache, similar to gx_purge_selected_cached_chars. 2685(gscolor2.h, gxpcolor.h, gxpcmap.c) 2686 2687Adds the Pattern UID to Pattern cache entries. (gxpcolor.h, gxpcmap.c) 2688****** MUST HANDLE XUID POINTERS ON GC (RELOC) & RESTORE (CLEAR LIKE HT 2689CACHE) ****** 2690 2691Makes gs_gstate free the path representation of the clipping path if it's a 2692rectangle, since reconstructing it is cheap and otherwise the path segments 2693would not be freeable until a restore or GC. (gsstate.c) 2694 2695Extends the "client data" interface for gstates so that the copy procedure 2696can determine why it is being called. (gxstate.h, gsstate.c) 2697 2698</pre> 2699 2700<h2><a name="Version4.35"></a>Version 4.35 (limited) (11/24/96)</h2> 2701 2702<p> 2703This contains the usual bug fixes, and two minor enhancements: an option for 2704handling EPSF files with binary headers, and support for file-based 2705resources. 2706 2707<h3><a name="V4.35_Documentation"></a>Documentation</h3><pre> 2708 2709Documents the new EPSF-reading capability. (gs.mak) 2710 2711</pre><h3><a name="V4.35_Procedures"></a>Procedures</h3><pre> 2712 2713Fixes bugs: 2714 - Some obsolete definitions were accidentally left in the rules for 2715compiling fonts into the executable. (int.mak) 2716 2717</pre><h3><a name="V4.35_Interpreter"></a>Interpreter</h3><pre> 2718 2719Fixes bugs: 2720 - initgraphics left the current color space in an inconsistent 2721state. (bug introduced in 4.32) (zgstate.c) 2722 - restore didn't properly rebind FontDirectory to either Local or 2723SharedFontDirectory according to the current VM selection. (gs_dps1.ps) 2724 - If FontDirectory was redefined, many things broke. (gs_ccfnt.ps, 2725gs_dps1.ps, gs_fonts.ps, gs_pdfwr.ps) 2726 - If a resource provided a file name but the file couldn't be 2727opened, an error occurred. (gs_res.ps) 2728 - flushfile didn't work with procedure-based streams. (zfileio.c) 2729 2730Adds a feature (epsf.dev) that allows the interpreter to recognize and 2731handle MS-DOS EPSF files with a binary header. (int.mak, gs_epsf.ps, 2732gs_init.ps, pdf_main.ps) 2733 2734Adds (internal) .getuserparam and .getsystemparam operators for getting the 2735value of a single user or system parameter. (gs_lev2.ps, zusparam.c) 2736 2737To support file-based resources, implements the FontResourceDir, 2738GenericResourceDir, and GenericResourcePathSep system parameters, and 2739ResourceFileName for the built-in resource categories. (gs_init.ps, 2740gs_lev2.ps, gs_res.ps) 2741 2742</pre><h3><a name="V4.35_Streams"></a>Streams</h3><pre> 2743 2744Fixes bugs: 2745 - The 2-D CCITTFaxDecode filter became confused if a buffer boundary 2746fell between a horizontal make-up code and its terminating code, typically 2747causing an ioerror. (scfd.c) 2748 2749</pre><h3><a name="V4.35_Library"></a>Library</h3><pre> 2750 2751Fixes bugs: 2752 - Using the null color could confuse the reference counts for color 2753spaces, causing memory access errors. (gscolor.c) 2754 - Images with CombineWithColor = true caused memory access error, 2755because a structure element wasn't initialized. (gdevmrop.c) 2756 - gs_setnullcolor tried to return an error code, even though it was 2757declared as returning void. (Why doesn't gcc catch this??) (gscolor.h, 2758gscolor.c) 2759 - gs_setnullcolor was declared inconsistently as taking a const or 2760non-const argument. (gscolor.h) 2761 - Small color tiles in the band list were not read in correctly. 2762(gxclread.c) 2763 - The band list could get confused, causing ioerrors, invalid memory 2764accesses, or garbled output, because the algorithms for computing the size 2765of bitmaps when writing and when reading had gotten inconsistent. This code 2766has been broken and "fixed" at least 4 or 5 times. (gxcldev.h, gxclbits.c, 2767gxclread.c) 2768 - When using banding, characters that extended off the page 2769vertically in the -Y direction came out garbled. (gxclimag.c) 2770 - The bounding box device didn't compute the box correctly for 2771trapezoids. (gdevbbox.c) 2772 - The fastest case of rendering monochrome images could cause 2773unaligned data accesses. (bug introduced recently.) (gximage.h, 2774gximage1.c) 2775 - TrueType characters with no contours could cause an invalid memory 2776access. (gstype42.c) 2777 - Composite TrueType characters weren't rendered properly. 2778(gstype42.c) 2779 2780Adds a get_outline procedure to the Type 42 font header, to provide a 2781callback for getting the outline data for a glyph. (gxfont42.h, gstype42.c) 2782 2783</pre> 2784 2785<h2><a name="Version4.34"></a>Version 4.34 (limited) (11/18/96)</h2> 2786 2787<p> 2788This release adds a little more support for CID-keyed fonts and for PCL 2789emulation, and a bit more of the machinery for passing images through the 2790band list. 2791 2792<h3><a name="V4.34_Documentation"></a>Documentation</h3><pre> 2793 2794Fixes bugs: 2795 - The RasterOp source device wasn't listed as an internal device in 2796drivers.txt. (drivers.txt) 2797 2798Corrects a statement regarding the pstotext license. (new-user.txt) 2799 2800</pre><h3><a name="V4.34_Procedures"></a>Procedures</h3><pre> 2801 2802Fixes bugs: 2803 - The Watcom makefile for the library didn't work properly if 2804certain variables were overridden from the command line. (watclib.mak) 2805 - The library code inadvertently depended on an interpreter header 2806file. (*.mak) 2807 2808</pre><h3><a name="V4.34_Drivers"></a>Drivers</h3><pre> 2809 2810Fixes bugs: 2811 - Some very picky compilers complained about assigning 0 to a 2812variable of an enum type. (gdevpdfx.h, gdevpdf.c) 2813 2814</pre><h3><a name="V4.34_Interpreter"></a>Interpreter</h3><pre> 2815 2816Fixes bugs: 2817 - Some very picky compilers didn't like a cast from a pointer type 2818to an int type. (idebug.c) 2819 - Some very picky (and non-ANSI-compliant) compilers didn't allow 2820assigning an int to a variable of enumerated type. (zfont2.c, zht2.c) 2821 - The library code inadvertently depended on an interpreter header 2822file. (iref.h) 2823 2824Restructures the font building code slightly to support CID fonts better. 2825(gs_cidfn.ps, bfont.h, zcid.c, zfont0.c, zfont1.c, zfont2.c, zfont42.c) 2826 2827Adds a .setcurrentfile operator to allow disk-based fonts to keep their file 2828open. (gs_cidfn.ps, zcontrol.c) 2829 2830</pre><h3><a name="V4.34_Streams"></a>Streams</h3><pre> 2831 2832Fixes bugs: 2833 - Some very picky compilers didn't like the computation (const byte 2834*)0 - 1. (stream.c) 2835 - A cast to ulong was omitted. (smtf.c) 2836 - Some compilers got confused by typedefs in the zlib header files. 2837(szlibd.c, szlibe.c) 2838 2839</pre><h3><a name="V4.34_Library"></a>Library</h3><pre> 2840 2841Fixes bugs: 2842 - A header file didn't select the proper system header on all POSIX 2843systems. (malloc_.h) 2844 - A subclass/superclass type discrepancy upset some compilers. 2845(gsline.h, gsline.c, gxpdash.c) 2846 - Some very picky compilers didn't accept the previous definition of 2847the offset_of macro. (stdpre.h) 2848 - Some very picky (and non-ANSI-compliant) compilers didn't like 2849mixing int and enumerated types. (gsropt.h, gzstate.h, gdevmrop.c, 2850gdevrrgb.c, gsrop.c, gxclist.c) 2851 - A cast was missing. (gslib.c) 2852 - The gs_setxxxtransparent procedures interpreted their argument 2853backwards (i.e., as "opaque" rather than "transparent"). (gsrop.c) 2854 - Intersecting clipping paths didn't reset the logical operation to 2855the default, causing a possible crash. (gsrop.h, gsrop.c, gxacpath.c) 2856 - Pattern accumulation didn't reset the logical operation to the 2857default, possibly causing incorrect output. (gspcolor.c) 2858 - If a Type 1 character ended with a curve and a closepath, a 2859microscopic line could result, causing output anomalies. (gstype1.c) 2860 - Stroking a path with a mix of thin and non-thin lines could cause 2861extraneous lines to appear. (gxstroke.c) 2862 - Zero-width rectangles were painted even when fill adjustment was 2863turned off. (gxpaint.c, gxstroke.c) 2864 - The algorithm for dividing a curve into monotonic pieces could 2865produce incorrect results, causing anomalies when filling curved regions 2866with zero fill adjustment. (gxpcopy.c) 2867 - The algorithms for outside clipping were wrong, causing some 2868inside regions not to be clipped. (gxcpath.c) 2869 - The white pixels in halftones weren't treated as unconditionally 2870opaque for RasterOp. (gxht.c, gxcht.c) 2871 - Images with RasterOp didn't work properly. (gdevmrop.c, 2872gximage[2345].c, gxpcmap.c) 2873 - The library code inadvertently depended on an interpreter header 2874file. (gxalloc.h, genarch.c) 2875 - An important optimization for stroking (recognizing portrait, 2876landscape, and unscaled CTMs) was commented out. WE DON'T HAVE ANY RECORD 2877OF WHY WE DID THIS, AND RESTORING IT MAY INTRODUCE NEW BUGS. (gxstroke.c) 2878 - Bitmap images with non-zero data_x values were passed through the 2879band list incorrectly, possibly causing vertical "streaks" in the output. 2880(gxcldev.h, gxclread.c) 2881 - If a curve had to be split twice along the same axis to make it 2882monotonic, the split points were returned in the wrong order, possibly 2883causing curved edges to turn into straight lines. (gxpcopy.c) 2884 2885Changes the debugging printout format for paths so the output can be 2886processed mechanically more easily. (gxpath.c) 2887 2888Adds gs_glyphpath, like charpath but taking a glyph rather than a string of 2889character codes. (gschar.h, gschar.c) 2890 2891Adds an internal concept of a "null color", a color that doesn't actually 2892mark any pixels. (gscolor.h, gsdcolor.h, gxdcolor.h, gscolor.c, gxdcolor.c) 2893 2894Takes the next incremental steps towards passing images through the band 2895list: 2896 - Implements the ability to pass some color mapping information 2897(transfer functions, black generation, undercolor removal) through the band 2898list. (gxclist.h, gxclimag.c, gxclist.c, gxclread.c) 2899 2900</pre> 2901 2902<h2><a name="Version4.33"></a>Version 4.33 (limited) (11/6/96)</h2> 2903 2904<p> 2905This release fixes yet another obscure bug in the recently rewritten fast 2906loops for image rendering. (These loops have caused more problems than any 2907other single module of the entire library.) It also adds preliminary 2908support for CID-keyed fonts (CIDFonts only, not CMaps yet) and some library 2909extensions for supporting HP-GL/2. 2910 2911<h3><a name="V4.33_Documentation"></a>Documentation</h3><pre> 2912 2913Adds considerable new material to the C style document. (c-style.txt) 2914 2915Changes -cckr to -ansi in the SGI build procedure. (make.txt) 2916 2917Corrects an error in the description of the .type42execchar operator. 2918(gs_typ42.ps) 2919 2920</pre><h3><a name="V4.33_Procedures"></a>Procedures</h3><pre> 2921 2922Fixes bugs: 2923 - The 'man' pages were installed in the documentation directory as 2924well as in the man directory. (unix-end.mak) 2925 2926</pre><h3><a name="V4.33_Interpreter"></a>Interpreter</h3><pre> 2927 2928Adds support for CID-keyed fonts. There is no CMap support yet, and some 2929things are done with hacks. (int.mak, gs_cidfn.ps, gs_cmap.ps, ichar.h, 2930zchar.c, zchar2.c, zchar42.c, zfont2.c, zfont42.c, zcid.c) 2931 2932Adds operators for accessing the new dash adaptation and dot length 2933parameters in the graphics state. (gs_init.ps, zgstate.c) 2934 2935</pre><h3><a name="V4.33_Library"></a>Library</h3><pre> 2936 2937Fixes bugs: 2938 - The fast case of monobit image rendering could overwrite memory. 2939(gximage1.c) 2940 - The new fast implementation of rectfill didn't check for 2941fixed-point overflow. (gsdps1.c) 2942 - Internally, fonts with no name all appeared to have the same name, 2943possibly confusing the xfont machinery. (gxccman.c) 2944 - A cast to remove const was omitted, upsetting some compilers. 2945(gximage1.c) 2946 - The driver's stroke_path routine was not called if the logical 2947operation was not the default one. (gxpaint.c) 2948 2949Adds support for CID-keyed fonts. (gsccode.h, gxfont.h) 2950 2951Adds a new "dash pattern adaptation" flag in the imager state. When this 2952flag is set and a dash pattern is in effect, each line segment will receive 2953an integral number of repetitions of the dash pattern (if necessary, rounded 2954up). (gsline.h, gxline.h, gsline.c, gsstate.c, gxpdash.c) 2955 2956Adds a new "dot length" parameter to the imager state. If this parameter is 2957non-zero, it gives a length for rendering dots (zero-length lines). See 2958language.txt for details. (gsline.h, gxline.h, gsline.c, gsstate.c, 2959gxstroke.c) 2960 2961Extends band lists so they can handle dash pattern adaptation and dot 2962length. (gxcldev.h, gxclpath.h, gxclpath.c, gxclread.c) 2963 2964Adds a floating point emulator to allow more realistic profiling of 2965configurations without a FPU. (gsfemu.c) 2966 2967</pre> 2968 2969<h2><a name="Version4.32"></a>Version 4.32 (limited) (11/1/96)</h2> 2970 2971<p> 2972This fixes a couple more bugs, most notably the infamous "pixel stripe" bug. 2973 2974<h3><a name="V4.32_Documentation"></a>Documentation</h3><pre> 2975 2976Fixes bugs: 2977 - The documentation said that Ghostscript could not interpret 2978encrypted PDF files. (language.txt) 2979 - A number of Ghostscript's extensions to the PostScript language 2980were missing. (language.txt) 2981 2982</pre><h3><a name="V4.32_Drivers"></a>Drivers</h3><pre> 2983 2984Fixes bugs: 2985 - A compiler complained about initializing an unsigned variable with 2986a negative value. (gdevx.c) 2987 - An off-by-1 allocation error could cause memory overwriting. 2988(gdevepsc.c) 2989 2990</pre><h3><a name="V4.32_Platforms"></a>Platforms</h3><pre> 2991 2992Declares a pointer 'const' that is actually only used for reading. 2993(gp_unifs.c) 2994 2995</pre><h3><a name="V4.32_Fonts"></a>Fonts</h3><pre> 2996 2997Fixes bugs: 2998 - The code for adding nominal UnderlinePosition and 2999UnderlineThickness entries to FontInfo assumed (incorrectly) that all Type 1 3000fonts had FontBBox entries. (gs_type1.ps) 3001 3002Brings CIDFont support closer to reality. It doesn't work yet, though. 3003(gs_cidfn.ps, gs_fonts.ps, gs_init.ps, gs_res.ps, gs_typ42.ps) 3004 3005</pre><h3><a name="V4.32_Interpreter"></a>Interpreter</h3><pre> 3006 3007Removes a redundant implementation of initgraphics. (gs_init.ps) 3008 3009Speeds up rectfill a little for the common case (4 numbers on the stack). 3010(zdps1.c) 3011 3012</pre><h3><a name="V4.32_Library"></a>Library</h3><pre> 3013 3014Fixes bugs: 3015 - Zero-width, 1-bit-deep, landscape or portrait images could 3016overwrite memory ad lib. (gximage1.c) 3017 - A procedure was declared 'static' inconsistently, upsetting many 3018compilers (but not gcc, which, in contradiction to the ANSI standard, 3019doesn't check this properly). (gxcpath.c) 3020 - A local variable was initialized with a value computed from a 3021variable that hadn't been set yet, leading to possibly incorrect coloring of 3022the first run of pixels in images with 12 bits per sample. (gximage4.c) 3023 - A compiler complained about initializing an unsigned variable with 3024a negative value. (shcgen.c) 3025 - A rounding problem could produce a vertical stripe of 1 (or on 3026very large images possibly more) incorrect pixels at the right edge of a 30271-bit-deep image. (gxdda.h, gximage1.c) 3028 3029Speeds up gs_rectfill substantially for the portrait/landscape case with a 3030rectangular clipping region. (gsdps1.c) 3031 3032Adds a parameter so we can include gx_line_params in subclasses. (gzline.h) 3033 3034</pre> 3035 3036<h2><a name="Version4.31"></a>Version 4.31 (limited) (10/27/96)</h2> 3037 3038<p> 3039This is primarily a bug fix release for 4.30, which we had hoped wouldn't be 3040necessary.... 3041 3042<h3><a name="V4.31_Documentation"></a>Documentation</h3><pre> 3043 3044Fixes bugs: 3045 - The comment describing the order of coefficients in a CTM written 3046on the band list was wrong. (gxclpath.h) 3047 3048</pre><h3><a name="V4.31_Procedures"></a>Procedures</h3><pre> 3049 3050Fixes bugs: 3051 - bug-form.txt wasn't installed by 'make install'. (unix-end.mak) 3052 - The default flags in ugcclib.mak didn't take the gcc code 3053generation bug into account. (ugcclib.mak) 3054 3055</pre><h3><a name="V4.31_Platforms"></a>Platforms</h3><pre> 3056 3057Fixes bugs: 3058 - MetroWerks CodeWarrior predefines true and false, causing 3059compilation errors on the Mac. (stdpre.h) 3060 3061</pre><h3><a name="V4.31_Interpreter"></a>Interpreter</h3><pre> 3062 3063Updates code for the change in the ENUM_PTR macros. (iscan.c) 3064 3065Changes the allocator to keep track of "lost" ref space separately, to allow 3066an independent check on its activities. (gxalloc.h, ialloc.c, isave.c) 3067 3068Changes the garbage collector API slightly to allow implementation of the 3069API in applications other than PostScript interpreters. (ivmspace.h, 3070ireclaim.c, igc.c) 3071 3072</pre><h3><a name="V4.31_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 3073 3074Implements the PDF 1.1 BX and EX operators. (pdf_base.ps, pdf_main.ps) 3075 3076</pre><h3><a name="V4.31_Streams"></a>Streams</h3><pre> 3077 3078Fixes bugs: 3079 - Some (harmless) pointer incompatibilities upset some compilers. 3080(szlibd.c, szlibe.c) 3081 3082Updates code for the change in the ENUM_PTR macros. (stream.c) 3083 3084</pre><h3><a name="V4.31_Library"></a>Library</h3><pre> 3085 3086Fixes bugs: 3087 - A label in the ENUM_PTR procedure generating macros was often not 3088referenced, leading to compiler warnings. (gsstruct.h, gxxfont.h, 3089gdevmem.c, gschar.c, gscolor2.c, gsdevice.c, gsfont0.c, gsht.c, gsstate.c, 3090gxcpath.c, gximage.c) 3091 - Using the gstate version of setflat rather than the imager version 3092caused compiler warnings (and, in some cases, errors). (gstype1.c) 3093 - Non-standard ImageMatrix values for banded images didn't work. 3094(This wasn't actually used.) (gxclread.c) 3095 - imagemask with a halftone and portrait orientation colored some 3096inappropriate pixels. (bug introduced in 4.30) (gximage2.c) 3097 - When banding, if a character straddled a band boundary the first 3098time it occurred, all occurrences of it were clipped. (bug introduced in 30994.2x or 4.30) (gxclimag.c) 3100 - Degenerate clipping rectangles sometimes got turned into 3101non-degenerate ones by swapping the min and max coordinates. (gxcpath.c) 3102 - Resizing an object either allocated a new object unnecessarily 3103(performance bug only), or in very rare cases could corrupt memory. 3104(gsalloc.c) 3105 - Very small objects didn't get put on a free list when freed. 3106(Performance bug only.) (gsalloc.c) 3107 - Some pointers were incorrectly declared 'const', upsetting some 3108compilers. (gxclread.c) 3109 3110Adds more tracing output for -ZL. (gxclread.c) 3111 3112Changes the -Za tracing output slightly to aid mechanical analysis of 3113allocation traces: allocation events now always include a '+', deallocation 3114events always include a '-', and the address is always the address of the 3115object data and not the header. (gsalloc.c, gsmemory.c) 3116 3117Changes the allocator to keep track of "lost" object and string space 3118separately, to allow an independent check on its activities. (gxalloc.h, 3119gsalloc.c) 3120 3121Changes the allocator to use 'memmove' in an obvious place. (gsalloc.c) 3122 3123Provides a garbage collector API at the library level to allow 3124implementation of the API in applications other than PostScript 3125interpreters. (gsgc.h) 3126 3127</pre> 3128 3129<h2><a name="Version4.30"></a>Version 4.30 (limited) (10/23/96)</h2> 3130 3131<p> 3132The main purpose of this release is to implement a substantial change in the 3133"high level" image API, after which we believe this API will be stable. 3134 3135<h3><a name="V4.30_Documentation"></a>Documentation</h3><pre> 3136 3137Documents the changes in the begin_image and image_data device procedures. 3138(drivers.txt) 3139 3140</pre><h3><a name="V4.30_Drivers"></a>Drivers</h3><pre> 3141 3142Speeds up the PDF writer a little by reducing the amount of allocation, 3143which was causing very frequent garbage collections. (gs_pdfwr.ps, 3144gdevpdft.c) 3145 3146Updates the PDF writer for the change in begin_image/image_data. 3147(gdevpdfi.c) 3148 3149</pre><h3><a name="V4.30_Platforms"></a>Platforms</h3><pre> 3150 3151Fixes bugs: 3152 - Some versions of the SGI IRIX compiler have a bug that causes them 3153to try to expand macros that require arguments even when the macro name 3154isn't followed by a left parenthesis. (gdevsgi.h, gdevsgi.c) 3155 - The IBM RS6000 compilers now provide <stdlib.h>, so our 3156definitions of malloc and free caused a conflict. (malloc_.h) 3157 3158</pre><h3><a name="V4.30_Fonts"></a>Fonts</h3><pre> 3159 3160Fixes bugs: 3161 - Many Fontmaps included obsolete references to an old 3162Helvetica-Narrow font. (Fontmap.*) 3163 3164Makes the GS_FONTPATH directory scanner a little more liberal about what 3165files it examines: it will now examine any file whose first line begins with 3166%!PS-Adobe or %!FontType. (gs_fonts.ps) 3167 3168To match an apparent Adobe convention, augments findfont so that if a font 3169isn't in the Fontmap, it will try to load a file whose name is the same as 3170the font name. (gs_fonts.ps) 3171 3172To make some questionable Apple font inquiry code work, augments the 3173FAKEFONTS facility so that it sets the FontType of fake fonts to 1. 3174(gs_fonts.ps) 3175 3176</pre><h3><a name="V4.30_Interpreter"></a>Interpreter</h3><pre> 3177 3178Fixes bugs: 3179 - .checkpassword, .putdeviceparams, .putdevparams, setsystemparams, 3180and setuserparams didn't free the results byte array, causing a memory leak 3181(until the next garbage collection). (zdevice.c, ziodev.c, zusparam.c) 3182 3183</pre><h3><a name="V4.30_Library"></a>Library</h3><pre> 3184 3185Fixes bugs: 3186 - The code for emulating floating point multiplication with 3187conversion to fixed point didn't detect overflow correctly, which could 3188produce incorrect results instead of a limitcheck. (gsmisc.c) 3189 - A macro cast a pointer incorrectly, leading to spurious compiler 3190warnings. (gxfixed.h) 3191 - The code for emulating fixed-to-float conversion computed the 3192exponent incorrectly. (gsmisc.c) 3193 - The algorithm for advancing a DDA a given number of steps (not 3194actually used anywhere before this version) was wrong. (gxdda.h) 3195 - The clipping box returned by clipping devices was incorrect, 3196causing parts of the page to disappear. (bug introduced in 4.20) 3197(gxcpath.c) 3198 3199Changes the begin_image and image_data device procedures: 3200 - begin_image now takes an optional subrectangle instead of a set of 3201shape flags. 3202 - image_data now always takes complete rows of pixels, takes a 3203source X offset, and returns 1 when it has received all the data. 3204 3205The change in begin_image and image_data is a NON-BACKWARD-COMPATIBLE CHANGE 3206IN A PUBLIC INTERFACE; however, this interface was still designated "subject 3207to change", per the notes for release 3.67 and the documentation in 3208drivers.txt. (gsiparam.h, gxclpath.h, gxdda.h, gxdevice.h, gximage.h, 3209gdevbbox.c, gdevnfwd.c, gsimage.c, gxclimag.c, gxclread.c, gximage.c, 3210gximage?.c) 3211 3212</pre> 3213 3214<hr> 3215 3216<h2><a name="Version4.21"></a>Version 4.21 (limited) (10/17/96)</h2> 3217 3218<p> 3219The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20. 3220 3221<h3><a name="V4.21_Documentation"></a>Documentation</h3><pre> 3222 3223Fixes bugs: 3224 - The Ghostscript man page had a .TH in the middle. (gs.1) 3225 3226</pre><h3><a name="V4.21_Procedures"></a>Procedures</h3><pre> 3227 3228Fixes bugs: 3229 - The shared version of zlib was always called libgz; on most 3230systems, it is now called libz (but not on Red Hat Linux, where libz is a 3231library for dealing with time zones). (*.mak, gs.mak, libpng.mak, zlib.mak) 3232 - The pdf2dsc.1 man page wasn't installed on Unix systems. 3233(unix-end.mak) 3234 - font2c generated procedures named gsf_xxx, but genconf assumed 3235they were named gs_f_xxx. (int.mak) 3236 3237</pre><h3><a name="V4.21_Drivers"></a>Drivers</h3><pre> 3238 3239Updates the user-contributed LBP-8II driver to correct unspecified problems. 3240(gdevlbp8.c) 3241 3242Adds a user-contributed driver for Avance Logic SuperVGA cards. 3243(gdevsvga.c, devs.mak) 3244 3245</pre><h3><a name="V4.21_Platforms"></a>Platforms</h3><pre> 3246 3247Fixes bugs: 3248 - On Windows NT, a 32-bit parameter was truncated to 16 bits, 3249preventing drawing of scroll bars of the image window when the window is 3250uncovered. (dwimg.cpp) 3251 3252</pre><h3><a name="V4.21_Fonts"></a>Fonts</h3><pre> 3253 3254Fixes bugs: 3255 - The free URW Grotesk and Antiqua fonts were omitted from the 3256distribution. 3257 3258</pre><h3><a name="V4.21_Interpreter"></a>Interpreter</h3><pre> 3259 3260Fixes bugs: 3261 - Defining a new global instance of a built-in resource 3262(ColorRendering, ColorSpace, Form, Halftone, Pattern, ProcSet) caused an 3263invalidaccess error. (gs_res.ps) 3264 - pathbbox with no current path left an extra item on the stack when 3265the error occurred. (gs_init.ps) 3266 - findresource for an undefined resource instance didn't preserve 3267the contents of the stack. (gs_res.ps) 3268 3269Adds a new file providing a procedural interface with a very rudimentary 3270form of job encapsulation. (gserver.c) 3271 3272Changes the initial value of MaxOpStack to 20000, for the sake of a few 3273badly-behaved files. (gs_init.ps, pdf_base.ps) 3274 3275</pre><h3><a name="V4.21_Library"></a>Library</h3><pre> 3276 3277Fixes bugs: 3278 - If the image operators failed to allocated their bookkeeping 3279structure, the result was a crash rather than VMerror. (gximage.c) 3280 - gx_default_fill_triangle (currently used only to implement the 3281fastest case of stroke) had a typo that could cause a numeric exception or 3282incorrect output, and another typo that could produce incorrect output. 3283(gdevddrw.c) 3284 - When banding, if the first occurrence of a character fell partly 3285off the page, all occurrences of that character on the page could be clipped 3286or mangled. (gxclbits.c, gxclimag.c) 3287 - When testing whether it's worthwhile compressing a bitmap for 3288banding, the compressor was allowed to generate a lot more output than 3289needed to make the test. (gxclbits.c) 3290 - Certain cases of unrotated gray-scale images dropped the first or 3291last pixel of each scan line. (gximage2.c) 3292 - In rare cases, a run of pixels in a image could get erroneously 3293displayed in the same color as the previous run, because of a cache 3294bookkeeping bug. (gximage3.c) 3295 - The sample driver for the library had gotten inconsistent with a 3296header file. (gslib.c) 3297 - A declaration was followed by an extraneous semicolon, which upset 3298some compilers. (gxht.h) 3299 - Missing parentheses caused a test for thin lines to be incorrect. 3300(gxstroke.c) 3301 3302</pre> 3303 3304<h2><a name="Version4.20"></a>Version 4.20 (limited) (10/13/96)</h2> 3305 3306<p> 3307This release has internal changes for future support of banded image 3308processing, but no externally visible changes. Its primary purpose is to 3309incorporate speedups for clipped images. It does *not* incorporate fixes 3310for all problems reported in 4.0x or 4.10. 3311 3312<h3><a name="V4.20_Documentation"></a>Documentation</h3><pre> 3313 3314Documents the new get_clipping_box device procedure. (drivers.txt) 3315 3316</pre><h3><a name="V4.20_Procedures"></a>Procedures</h3><pre> 3317 3318Fixes bugs: 3319 - There were many, many minor inconsistencies between the makefiles 3320and the source code. (We finally have an automated tool to detect these.) 3321(devs.mak, int.mak, lib.mak, unixtail.mak; gsutil.c, zwppm.c) 3322 - Some makefile rules weren't properly terminated by a blank line. 3323(lib.mak) 3324 3325</pre><h3><a name="V4.20_Utilities"></a>Utilities</h3><pre> 3326 3327Fixes bugs: 3328 - The comments in gslp.ps had gotten out of date. (gslp.ps) 3329 3330Adds --no-eject-file and --no-eject-formfeed switches to gslp.ps, to allow 3331packing files in multi-column printouts. (gslp.ps) 3332 3333</pre><h3><a name="V4.20_Drivers"></a>Drivers</h3><pre> 3334 3335Adds a user-contributed driver for the Epson LP-8000 laser printer. 3336(gdevlp8k.c) 3337 3338Adds a DisplayMode parameter to the vgalib device. (gdevvglb.c) 3339 3340Removes the requirement of typing a character at the end of each page using 3341the vgalib driver. THIS IS A USER-VISIBLE, NON-BACKWARD-COMPATIBLE CHANGE. 3342(gdevvglb.c) 3343 3344</pre><h3><a name="V4.20_Interpreter"></a>Interpreter</h3><pre> 3345 3346Updates code to accommodate the new get_clipping_box device procedure. 3347(zupath.c) 3348 3349</pre><h3><a name="V4.20_Library"></a>Library</h3><pre> 3350 3351Fixes bugs: 3352 - When a CTM was passed through the band list, it didn't get 3353translated to match the band coordinate system. (This had no effect, 3354because the translation part of the CTM was never used.) (gxclread.c) 3355 3356Adds a ',' debugging switch to disable high-level operations when banding. 3357(gxclpath.c) 3358 3359Adds an optional get_clipping_box device procedure, so that filling and 3360stroking can clip more aggressively. (gdevmem.h, gdevprn.h, gxdevice.h, 3361gxpaint.h, gxpath.h, gzacpath.h, gdevdflt.c, gdevht.c, gdevnfwd.c, 3362gxacpath.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c, gxfill.c, 3363gxstroke.c) 3364 3365Speeds up clipped filling and stroking, by checking against the device 3366clipping box. (gxfill.c, gxstroke.c) 3367 3368Adds the ability to clip with a rectangle a clipping path being accumulated, 3369and uses it to do more aggressive clipping when banding. (gzacpath.h, 3370gxacpath.c, gxclread.c) 3371 3372Speeds up clipping of objects lying partly above or below the clipping 3373region. (gxcpath.c) 3374 3375Speeds up clipping vertically-oriented objects (such as 90 degree rotated 3376images or vertical rectangles) with convex clipping regions, by checking for 3377vertical rectangles contained in multiple clipping rectangles. (gxcpath.c) 3378 3379Speeds up the handling of 90 degree rotated gray-scale images. (gximage2.c) 3380 3381Enhances the band list so that it can contain commands for a range of bands, 3382not just a single band or all bands. (gxcldev.h, gxclist.h, gxclbits.c, 3383gxclist.c, gxclread.c) 3384 3385Adds an operation to the DDA structure, for eventual support of clipped 3386images. (gxdda.h) 3387 3388Factors out some macros useful for generating bit-transformation tables. 3389(gsbittab.h, gsbittab.c, gsflip.c) 3390 3391</pre> 3392 3393<hr> 3394 3395<h2><a name="Version4.10"></a>Version 4.10 (limited) (9/25/96)</h2> 3396 3397<p> 3398This release adds local garbage collection, and a number of performance 3399improvements for garbage collection in general. We will support it for one 3400or two OEMs, but it is not a public release. 3401 3402<h3><a name="V4.10_Documentation"></a>Documentation</h3><pre> 3403 3404Moves documentation for all releases before 4.0 to history3.txt. (NEWS, 3405history3.txt) 3406 3407</pre><h3><a name="V4.10_Utilities"></a>Utilities</h3><pre> 3408 3409Fixes bugs: 3410 - pdf2dsc.ps didn't have a proper license notice. (pdf2dsc.ps) 3411 3412</pre><h3><a name="V4.10_Drivers"></a>Drivers</h3><pre> 3413 3414Adds a psgray driver, like psmono, to produce 8-bit gray PostScript (level 34151) images. (devs.mak, *.mak, gdevpsim.c) 3416 3417Changes the psmono driver to allow runs of up to 255 repeated bytes. 3418(gdevpsim.c) 3419 3420</pre><h3><a name="V4.10_Interpreter"></a>Interpreter</h3><pre> 3421 3422Fixes bugs: 3423 - setdevice erased the page even if this wasn't necessary. 3424(zdevice.c) 3425 3426Speeds up the garbage collector, primarily by speeding up pointer 3427relocation. (int.mak, ipacked.h, iref.h, ialloc.c, igc.c, igcref.c) 3428 3429Actually implements local garbage collection. (igc.h, ivmspace.h, igc.c, 3430igcref.c, igcstr.c, ireclaim.c) 3431 3432Adds some additional error checking for the -Z? switch. (ilocate.c) 3433 3434Moves a utility for color mapping from the interpreter to the library. 3435(icolor.h, zcolor.c) 3436 3437Adds a MinScreenLevels user parameter. (zusparam.c) 3438 3439</pre><h3><a name="V4.10_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 3440 3441Adds partial support for the PDF 1.2 gs operator, reverse engineered from a 3442PDF 1.2 file. (pdf_draw.ps) 3443 3444</pre><h3><a name="V4.10_Library"></a>Library</h3><pre> 3445 3446Fixes bugs: 3447 - The test for "thin" stroked lines incorrectly claimed some 3448non-thin lines were thin. (gxstroke.c) 3449 - The computations for halftone cells didn't work for non-square 3450pixels. (gxdht.h, gsht.c, gsht1.c, gshtscr.c) 3451 3452Speeds up the garbage collector a little. (gsstruct.h, gxalloc.h, 3453gxfcache.h, gsfont.c) 3454 3455Replaces references to private statically allocated color spaces with 3456references to shared dynamically allocated ones, which are guaranteed to be 3457fully filled-in. (gscie.c) 3458 3459Moves a utility for color mapping from the interpreter to the library. 3460(gxfmap.h, gxcmap.c) 3461 3462Makes available an imager analogue of setmatrix. (gscoord.h, gscoord.c) 3463 3464Adds a parameter to control the minimum number of halftone screen levels. 3465If a halftone cell has fewer pixels than this number, it will be replicated 3466(similar to what AccurateScreens does) until the replicated screen has 3467enough levels. (gxht.h, gshtscr.c) 3468 3469</pre> 3470 3471<hr> 3472 3473<h2><a name="Version4.03"></a>Version 4.03 (9/23/96)</h2> 3474 3475<p> 3476This was an emergency re-release of 4.02 to fix the stdin redirection 3477problem. It has essentially no other changes. 3478 3479<h3><a name="V4.03_Documentation"></a>Documentation</h3><pre> 3480 3481Fixes bugs: 3482 - Solaris 2.x has /usr/ucb/install, not installbsd. (make.txt) 3483 3484Updates current.txt to mention the ability to share libpng and libgz. 3485(current.txt) 3486 3487</pre><h3><a name="V4.03_Procedures"></a>Procedures</h3><pre> 3488 3489Fixes bugs: 3490 - A rule assumed that the makefile was named `makefile'. 3491(unixtail.mak) 3492 3493</pre><h3><a name="V4.03_Drivers"></a>Drivers</h3><pre> 3494 3495Fixes bugs: 3496 - The stcolor drivers had an off-by-1 error that could cause them to 3497write into unallocated memory. (gdevstc.c) 3498 - The Imagen driver wouldn't compile with gcc. (gdevimgn.c) 3499 3500</pre><h3><a name="V4.03_Fonts"></a>Fonts</h3><pre> 3501 3502Fixes bugs: 3503 - The Solaris fontmap had gotten out of date. (Fontmap.Sol) 3504 3505</pre><h3><a name="V4.03_Streams"></a>Streams</h3><pre> 3506 3507Fixes bugs: 3508 - The test for stdin being non-seekable could leave the file error 3509flag set, which caused an infinite loop when trying to read from the file 3510later. (sfile.c, sfileno.c) 3511 3512</pre> 3513 3514<h2><a name="Version4.02"></a>Version 4.02 (9/19/96)</h2> 3515 3516<p> 3517This release fixes a few more bugs, and adds the ability to read encrypted 3518PDF files and some PDF 1.2 files. 3519 3520<p> 3521This release was withdrawn after a few days because the stdin redirection 3522fix, which was made at the last minute, cause Ghostview to hang. 3523 3524<h3><a name="V4.02_Documentation"></a>Documentation</h3><pre> 3525 3526Fixes bugs: 3527 - The list of required support files was incorrect. (install.txt) 3528 - The descriptions of file name lookup weren't accurate. (use.txt) 3529 - A J should have been an H. (gxbitmap.h) 3530 3531Updates the documentation about encrypted PDF files. (new-user.txt) 3532 3533Documents what the 13 base PDF fonts are. (ps2pdf.txt) 3534 3535Fixes a tiny typo. (c-style.txt) 3536 3537Adds a user-contributed man page for the new pdf2dsc script. (pdf2dsc.1) 3538 3539Updates the government restricted rights notice in the Aladdin Ghostscript 3540Free Public License. (PUBLIC) 3541 3542Adds the URL of test files to the bug report form. (new-user.txt) 3543 3544Puts the bug reporting form in a separate file. (readme, bug-form.txt, 3545new-user.txt) 3546 3547Notes that map_xxx_color procedures should not return gx_no_color_index. 3548(drivers.txt) 3549 3550Notes that Ghostscript supports the Flate filters. (language.txt) 3551 3552Documents the use of the system libpng and zlib. (make.txt, gs.mak) 3553 3554Notes that Borland C++ 5.0 and 5.01 will not compile Ghostscript correctly. 3555(make.txt) 3556 3557</pre><h3><a name="V4.02_Procedures"></a>Procedures</h3><pre> 3558 3559Fixes bugs: 3560 - Using both DELAYBIND and SAFER caused problems. (pstotext uses 3561DELAYBIND.) (gs_init.ps) 3562 3563</pre><h3><a name="V4.02_Utilities"></a>Utilities</h3><pre> 3564 3565Fixes bugs: 3566 - Some pdf2ps machinery interfered with the PDF interpreter. 3567(pdf_2ps.ps, pdf_main.ps) 3568 - In the output of pdf2ps, page numbers in link destinations were 3569too high by 1. (pdf_main.ps) 3570 - viewpbm didn't handle value ranges other than [0..255] correctly. 3571(viewpbm.ps) 3572 3573Adds a user-contributed shell script to invoke pdf2dsc.ps. (pdf2dsc, 3574unix-end.mak) 3575 3576Adds a switch to the genconf utility to set the prefix for generated 3577procedure names. (genconf.c) 3578 3579Adds the option of using system libraries (possibly shared) for libpng 3580and/or zlib. (*head.mak, msc*.mak, os2.mak, tccommon.mak, wccommon.mak; 3581libpng.mak, zlib.mak) 3582 3583</pre><h3><a name="V4.02_Drivers"></a>Drivers</h3><pre> 3584 3585Fixes bugs: 3586 - The X11 display devices ignored the -DA4 compile-time option. 3587(gdevx.c) 3588 - The garbage collector could scramble the state of the CGM drivers. 3589(gxdevice.h, gdevcgm.c) 3590 - An identifier of more than 31 characters upset the VAX DEC C 3591compiler. (gdevcgml.h, gdevcgml.c) 3592 - In case of an error in trying to set the CoreDistVersion distiller 3593parameter, a variable could be used without initialization. (gdevpdfp.c) 3594 - When DEBUG is selected, the X Windows driver referenced _Xdebug, 3595which is not defined in (at least the VMS version of) DECWindows. (x_.h, 3596gdevxini.c) 3597 - Some map_cmyk_color implementations could return "transparent". 3598(gdevbit.c) 3599 - Setting GraphicsAlphaBits or TextAlphaBits in the P*M drivers 3600caused an error. (gdevpbm.c) 3601 - If a user cancelled printing under MS Windows, a confusing error 3602resulted, and a temporary file wasn't deleted. (gdevwpr2.c) 3603 - The map_color_rgb procedure for the bit devices produced incorrect 3604results. (This probably had no effect in practice.) (gdevbit.c) 3605 - The os2prn device produced incorrect output. (gdevos2p.c) 3606 - The OS/2 PM device didn't detect PM applications correctly. 3607(gdevpm.c) 3608 - The MS Windows printer driver didn't automatically detect the 3609printer's color capabilities. (gdevwpr2.c) 3610 - The BJC-610 driver didn't print at 720 dpi. (gdevcdj.c) 3611 - The static prototypes of many devices didn't include the far_data 3612keyword. (gdev3852.c, gdev4081.c, gdevbgi.c, gdevcgm.c, gdevht.c, 3613gdevimgn.c, gdevl256.c, gdevmrop.c, gdevn533.c, gdevnfwd.c, gdevnp6.c, 3614gdevo182.c, gdevpcfb.c, gdevpdf.c, gdevpe.c, gdevpm.c, gdevs3ga.c, 3615gdevsnfb.c, gdevsppr.c, gdevsun.c, gdevsvga.c, gdevtknk.c, gdevvglb.c, 3616gdevwddb.c, gdevwprn.c, gdevx.c, gdevxalt.c) 3617 - The (original) deskjet driver collapsed print lines towards the 3618left margin. (gdevdjet.c) 3619 3620Adds to the pgm/pgnm/ppm/pnm[raw] drivers the ability to set the maximum 3621pixel value, by setting any of the Gray/Red/Green/BlueValues device 3622parameters. (gdevpbm.c) 3623 3624Adds pkm[raw] drivers, which do all their internal computations in CMYK and 3625convert the data to RGB as they write the file. (gdevpbm.c) 3626 3627</pre><h3><a name="V4.02_Platforms"></a>Platforms</h3><pre> 3628 3629Fixes bugs: 3630 - The VMS script referred to old versions of the third-party 3631libraries. (vms.mak) 3632 - Under VMS with DEC C, attempting to open a new file fails. 3633(gp_vms.c) 3634 - If you tried to print (gp_printfile) under Windows on a system 3635with no printers installed, Ghostscript caused a GPF. (gp_mswin.c) 3636 3637Restores support for a non-DLL MS Windows platform. (bcwin32.mak, 3638dwnodll.cpp) 3639 3640Adds a new MS Windows DLL call, gsdll_get_bitmap. (gsdll16.def, 3641gsdll32.def, dll.txt, gdevwdib.c) 3642 3643Fixes a variety of other small Windows- and OS/2-related problems, mostly 3644related to printing. (gp_mswin.h, dpmainc.c, dwmain.cpp, dwmainc.cpp, 3645gdevmswn.c, gdevpm.c, gdevwpr2.c, gp_mswin.c) 3646 3647</pre><h3><a name="V4.02_Interpreter"></a>Interpreter</h3><pre> 3648 3649Fixes bugs: 3650 - The value of /newerror in $error was true at the end of 3651initialization. We now reset it after each internal use of stopped if 3652necessary. (gs_dps1.ps, gs_fform.ps, gs_fonts.ps, gs_init.ps, gs_pdf.ps, 3653gs_res.ps, gs_type1.ps) 3654 - setpagedevice (and finddevice) didn't recognize Default. 3655(gs_init.ps) 3656 - When running with -dNODISPLAY, calling gssetresolution would cause 3657a crash. (gs_init.ps) 3658 - A particular combination of save, .forgetsave, and garbage 3659collection could cause a memory access error in restore. (isave.c) 3660 - Some references to systemdict were affected if a user redefined 3661the name /systemdict. (gs_cmdl.ps, gs_fonts.ps, gs_kanji.ps, gs_dps1.ps, 3662gs_init.ps, gs_res.ps, gs_statd.ps, gs_type1.ps) 3663 - The insideness testing operators caused an invalid memory access. 3664(drivers.txt, zupath.c) 3665 - If a readline reached an input buffer boundary between the \r and 3666\n of a 2-character EOL, an error could occur. (zfileio.c) 3667 - setdevparams caused an error. (gs_lev2.ps) 3668 3669Changes file names beginning with ./ or ../ so they are recognized as 3670"absolute" and not subject to the search path. (gp_dosfs.c, gp_ntfs.c, 3671gp_os2.c, gp_unifn.c) 3672 3673Changes the exit code for -h or --help from 0 to 1, so an invoking program 3674will keep the output around for the user to look at. (imainarg.c) 3675 3676Adds the FlateEncode and FlateDecode filters; adds PNG pixel prediction to 3677the LZW filters. These additions are required for PDF 1.2 and will be part 3678of PostScript Level 3. (int.mak, lib.mak, zfdecode.c, zfilter2.c, zfzlib.c, 3679zfpngp.c [deleted]) 3680 3681</pre><h3><a name="V4.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre> 3682 3683Fixes bugs: 3684 - The copyright notices on some files didn't mention the Aladdin 3685free license. (pdf_*.ps) 3686 - Some references to systemdict were affected if a user redefined 3687the name /systemdict. (pdf_font.ps) 3688 - The value of /newerror in $error was true at the end of 3689initialization. We now reset it after each internal use of stopped if 3690necessary. (pdf_main.ps) 3691 - stdin redirection failed for PDF files even if the new stdin was 3692seekable. (pdf_main.ps) 3693 - The Rotate key rotated pages in the wrong direction. 3694(pdf_main.ps) 3695 3696Adds a minimal "security socket" to the interpreter. This does not include 3697any actual decryption code; such code is available elsewhere (see 3698new-user.txt). (int.mak, pdf_base.ps, pdf_main.ps, pdf_sec.ps) 3699 3700Adds a PDF 1.2 capability: 3701 - The destination in a Dest array can be a page number as well as a 3702page object. (pdf_main.ps) 3703 3704</pre><h3><a name="V4.02_Streams"></a>Streams</h3><pre> 3705 3706Fixes bugs: 3707 - stdin was assumed to be non-seekable. (sfile.c, sfileno.c) 3708 3709</pre><h3><a name="V4.02_Library"></a>Library</h3><pre> 3710 3711Fixes bugs: 3712 - Garbage collection could corrupt a pointer in Type 0 fonts. 3713(gxfont0.h, gsfont0.c) 3714 - When applying hints to a Type 1 font outline, the last point could 3715sometimes get moved twice, causing output anomalies. (gxhint3.c) 3716 - An #include needed for debugging was missing. (gxcmap.h) 3717 - Graphics states included a no-longer-used private color space 3718object. (gsstate.c) 3719 - Images could get clipped randomly in the X direction. (I don't 3720understand why this problem hasn't shown up more often, since it's been 3721there since release 4.00.) (gximage.c) 3722 - The arct and arcto operators failed to draw the line to the 3723starting point of the arc. (bug introduced in 4.01) (gspath1.c) 3724 - Prefix subclasses of simple structures caused an invalid memory 3725access. (gsstruct.h) 3726 - The variable fheight was sometimes unused. (gstype1.c) 3727 - igcd and imod didn't have prototypes in an appropriate header 3728file, and were declared extern in several places. (gsdcolor.h, gsline.h, 3729gxarith.h, gxdht.h, gsht.c, gshtscr.c, gsimage.c, gsline.c, gstype1.c, 3730gxclimag.c) 3731 - When using a non-identity RenderTable in a CIE rendering 3732dictionary, all colors came out too light. (gscie.c) 3733 - When using anti-aliased graphics, stroked lines were rendered too 3734thin. (gspaint.c) 3735 - The default map_cmyk_color implementations could return 3736"transparent". (gxcmap.c) 3737 - The number of bits of alpha requested when rendering anti-aliased 3738characters could exceed 4. (gschar.c) 3739 - Multi-screen halftones could cause errors or infinite looping when 3740banding. (This problem predates 4.0; I don't know why it didn't show up 3741before.) (gxcldev.h, gxclist.c, gxclread.c) 3742 - Skewed or rotated gray-scale images, or masks with a halftoned 3743color, omitted one line of pixels and displaced the image by one pixel. 3744(gximage2.c) 3745 3746Adds an implementation of realloc, for systems that don't have one that 3747works. I don't know how to determine this automatically, so for the moment, 3748the code uses our own implementation on Linux (where realloc is known to be 3749broken, at least in some releases) and nowhere else. (malloc_.h, 3750gsmemory.c, gsmisc.c) 3751 3752Removes the "OLD" algorithms from the Type 1 hinting source code, since they 3753are no longer executed. (If necessary, they can be retrieved from an older 3754version.) (gxhint3.c) 3755 3756</pre> 3757 3758<h2><a name="Version4.01"></a>Version 4.01 (7/10/96)</h2> 3759 3760<p> 3761This fixes a few minor bugs discovered since the 4.0 release. 3762 3763<h3><a name="V4.01_Documentation"></a>Documentation</h3><pre> 3764 3765Fixes bugs: 3766 - An installation directory name was wrong. (make.txt, 3767unix-lpr.txt) 3768 - A URL was wrong. (devices.txt) 3769 - A reference to use.doc hadn't been updated. (gs.1) 3770 - Some references to /usr/local/lib hadn't been updated. (gs.1) 3771 - The NEWS file and history* files still referred to *.doc rather 3772than *.txt. (NEWS, history*.txt) 3773 3774Adds a note about compilation on Digital Unix. (make.txt) 3775 3776Clarifies that calling gs_exit calls gs_finit automatically. (imain.h) 3777 3778Adds a pointer to the PDF encryption patch. (Ridiculous U.S. export control 3779laws don't allow including the patch itself in the main fileset.) 3780(new-user.txt) 3781 3782Adds a help file for VMS. (gs-vms.hlp) 3783 3784</pre><h3><a name="V4.01_Procedures"></a>Procedures</h3><pre> 3785 3786Fixes bugs: 3787 - vms.mak had gotten out of sync with the makefiles (again). 3788(vms.mak) 3789 - DEVICE{WIDTH,HEIGHT}POINTS didn't override PAPERSIZE. 3790(gs_init.ps) 3791 - The Microsoft C makefiles had gotten out of date. (msc.mak) 3792 3793The (few) GNU-Licensed drivers were accidentally omitted from the fileset. 3794 3795Modifies a makefile for greater reusability. (watclib.mak) 3796 3797Adds a 'debug' target for making Unix debugging configurations. 3798(unix-end.mak) 3799 3800</pre><h3><a name="V4.01_Utilities"></a>Utilities</h3><pre> 3801 3802Fixes bugs: 3803 - Some uses of 'run' should be changed to runlibfile. (bdftops.ps, 3804impath.ps, markhint.ps, packfile.ps, showchar.ps, waterfal.ps, wftopfa.ps, 3805wrfont.ps) 3806 - Some debugging code hadn't been removed. (gslp.ps) 3807 3808Adds a new utility, viewcmyk.ps, for viewing 4-bit CMYK data. (psfiles.txt, 3809unix-end.mak, viewcmyk.ps) 3810 3811Improves pdf2dsc by including Title and CreationDate DSC comments (these are 3812displayed by Ghostview) and reducing the size of typical output files by a 3813factor of about 3. (pdf2dsc.ps) 3814 3815Incorporates major changes (claimed to be improvements) to ps2ascii 3816contributed by a user. If you have problems with it, please contact him, 3817not Aladdin. (ps2ascii.ps) 3818 3819</pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre> 3820 3821Fixes bugs: 3822 - The X value of a bounding box could be computed incorrectly. 3823(gdevbbox.c) 3824 3825</pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre> 3826 3827Fixes bugs: 3828 - The Windows DLL sometimes didn't clean up properly. (dll.txt, 3829dpmainc.c, dwdll.cpp, dwmain.cpp, dwmainc.cpp, gsdll.c, gsdll.h) 3830 3831</pre><h3><a name="V4.01_Interpreter"></a>Interpreter</h3><pre> 3832 3833Fixes bugs: 3834 - Reading from a filter could hang forever, because a buffer was 3835allocated 1 byte too small. (zfilter.c) 3836 - The search path could become garbage under some circumstances. 3837(imain.c) 3838 - A dangling reference to a stack-allocated variable could corrupt 3839memory if a client mixed interpreter calls and direct C calls. (interp.c) 3840 - Printing an object to a procedure-based filter could cause an 3841invalid memory access. (zfileio.c) 3842 3843</pre><h3><a name="V4.01_Library"></a>Library</h3><pre> 3844 3845Fixes bugs: 3846 - Setting parameters for an unopened device could cause an access 3847error or invoke the wrong put_params procedure. (gsdparam.c) 3848 - Reading from a filter could hang forever, because a buffer was 3849allocated 1 byte too small. (stream.h) 3850 - If the current device was the nullpage device, doing a [g]save, 3851selecting a different device, and doing a [g]restore caused an error. 3852(gsdparam.c) 3853 3854Adds the ability to append arcs without the initial lineto, for PCL 3855emulation. (gspath.h, gspath1.c) 3856 3857</pre> 3858 3859<h2><a name="Version4.0"></a>Version 4.0 (6/28/96)</h2> 3860 3861<p> 3862This is the first public release since 3.53, with a few more last-minute 3863patches beyond 3.70. 3864 3865<h3><a name="V4.0_Documentation"></a>Documentation</h3><pre> 3866 3867Fixes bugs: 3868 - Many makefiles still referred to .doc files rather than .txt. 3869(cfonts.mak, devs.mak, gs.mak, int.mak, libpng.mak, unix-end.mak, watc.mak, 3870watcwin.mak, wccommon.mak, zlib.mak) 3871 - Some FONTPATH-related information was out of date. (use.txt) 3872 - The installation directory for fonts was incorrect. (install.txt) 3873 - The libpng and zlib versions were out of date. (libpng.mak, 3874zlib.mak) 3875 - Some information about GSview was incorrect or incomplete. 3876(new-user.txt) 3877 - make.txt said it described installation as well as building. 3878(make.txt) 3879 3880Notes that the current release of zlib won't compile and link correctly with 3881Sun cc. (make.txt) 3882 3883Adds a little more detail to the C style document. (c-style.txt) 3884 3885</pre><h3><a name="V4.0_Procedures"></a>Procedures</h3><pre> 3886 3887Fixes bugs: 3888 - Some documentation files weren't installed. (unix-end.mak) 3889 - Some dependencies were incorrect. (bcwin32.mak) 3890 - 'make begin' and 'make clean' deleted too many and/or the wrong 3891files. (bcwin.mak, bcwin32.mak) 3892 - libpng.mak didn't work with libpng version 0.89c. (libpng.mak) 3893 - -d<var>=<name> was equivalent to -d<var>=/<name>, and there was no 3894way to set a variable to true, false, or null. (use.txt, gs_init.ps, 3895iinit.c, imainarg.c) 3896 3897Removes the modules.lis file, which is no longer used. 3898 3899Undoes detecting automatically the need to run tar_cat -- the mechanism 3900didn't work, and caused confusion. (unix-end.mak) 3901 3902Updates the makefiles to libpng version 0.89, but allows them to work with 3903either 0.88 or 0.89. (*.mak) 3904 3905</pre><h3><a name="V4.0_Utilities"></a>Utilities</h3><pre> 3906 3907Fixes bugs: 3908 - Showing the details of a protected font caused an error. 3909(markhint.ps) 3910 3911</pre><h3><a name="V4.0_Drivers"></a>Drivers</h3><pre> 3912 3913Fixes bugs: 3914 - A copyright notice was wrong. (gs_pdfwr.ps) 3915 - PDF link annotations could get written with two Dest keys. 3916(gdevpdfm.c) 3917 - MakeProcInstance and FreeProcInstance were called on platforms 3918where it wasn't appropriate. (gdevwpr2.c, gdevwprn.c, gp_mswin.c) 3919 - On X servers that return very large values for the "virtual 3920screen" size in millimeters but correct values for the screen size in 3921pixels, a rangecheck could occur. (gdevxini.c) 3922 - The bounding box device could return garbage if stroke or fill was 3923ever invoked with an empty path. (gdevbbox.c) 3924 3925Replaces the LBP8 driver with a revised one contributed by a user. 3926(gdevlbp8.c, devs.mak) 3927 3928</pre><h3><a name="V4.0_Platforms"></a>Platforms</h3><pre> 3929 3930Fixes bugs: 3931 - Some Windows menu parameters were incorrect. (gsdll16.rc, 3932gsdll32.rc) 3933 3934</pre><h3><a name="V4.0_Interpreter"></a>Interpreter</h3><pre> 3935 3936Fixes bugs: 3937 - .getdevparams sometimes returned duplicate entries for /Type. 3938(ziodev2.c) 3939 - File names weren't parsed or concatenated properly on all 3940platforms. (gs_fonts.ps, zfile.c) 3941 - Filter lookahead caused problems with special files. (zfproc.c) 3942 - If a TransformPQR procedure in a CIE color rendering dictionary 3943didn't pop its 4 array arguments, an error occurred. (gs_lev2.ps, zcrd.c) 3944 3945</pre><h3><a name="V4.0_Streams"></a>Streams</h3><pre> 3946 3947Fixes bugs: 3948 - Filter lookahead caused problems with special files. (bug 3949introduced in 3.70) (stream.h) 3950 3951</pre><h3><a name="V4.0_Library"></a>Library</h3><pre> 3952 3953Fixes bugs: 3954 - .getdevparams sometimes returned duplicate entries for /Type. 3955(gxiodev.h, gsiodev.c) 3956 3957</pre> 3958 3959<!-- [3.0 begin visible trailer] =========================================== --> 3960<hr> 3961 3962<p> 3963<small>Copyright © 1996, 1997, 1998 Aladdin Enterprises. 3964All rights reserved.</small> 3965 3966<p> 3967This software is provided AS-IS with no warranty, either express or 3968implied. 3969 3970This software is distributed under license and may not be copied, 3971modified or distributed except as expressly authorized under the terms 3972of the license contained in the file LICENSE in this distribution. 3973 3974For more information about licensing, please refer to 3975http://www.ghostscript.com/licensing/. For information on 3976commercial licensing, go to http://www.artifex.com/licensing/ or 3977contact Artifex Software, Inc., 101 Lucas Valley Road #110, 3978San Rafael, CA 94903, U.S.A., +1(415)492-9861. 3979 3980<p> 3981<small>Ghostscript version 8.53, 20 October 2005 3982 3983<!-- [3.0 end visible trailer] ============================================= --> 3984 3985</body> 3986</html> 3987