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