summaryrefslogtreecommitdiff
path: root/Master/xemtex/doc/ghostscript/History5.htm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/xemtex/doc/ghostscript/History5.htm')
-rw-r--r--Master/xemtex/doc/ghostscript/History5.htm13454
1 files changed, 13454 insertions, 0 deletions
diff --git a/Master/xemtex/doc/ghostscript/History5.htm b/Master/xemtex/doc/ghostscript/History5.htm
new file mode 100644
index 00000000000..ec62a06d68d
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History5.htm
@@ -0,0 +1,13454 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>History of Ghostscript versions 5.n</title>
+<!-- $Id: History5.htm,v 1.15.2.11.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!--
+ WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
+ re-create the table of contents here, because it will replace the
+ hand-edited TOC subheads with a separate subhead for each H2 in
+ the body of the file. Or if you do, first look at the original
+ TOC to see how to edit it for visual conciseness.
+-->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>History of Ghostscript versions 5.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version5.99">Version 5.99 (beta) (1999-12-18)</a>
+<ul>
+<li><a href="#5.99_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.99_Documentation">Documentation</a>,
+ <a href="#5.99_Procedures">Procedures</a>,
+ <a href="#5.99_Utilities">Utilities</a>,
+ <a href="#5.99_Drivers">Drivers</a>,
+ <a href="#5.99_Platforms">Platforms</a>,
+ <a href="#5.99_Fonts">Fonts</a>,
+ <a href="#5.99_PDF_writer">PDF writer</a>,
+ <a href="#5.99_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.99_Interpreter">Interpreter</a>,
+ <a href="#5.99_Streams">Streams</a>,
+ <a href="#5.99_Library">Library</a>
+</ul>
+<li><a href="#Version5.98">Version 5.98 (beta) (1999-12-01)</a>
+<ul>
+<li><a href="#5.98_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.98_Documentation">Documentation</a>,
+ <a href="#5.98_Procedures">Procedures</a>,
+ <a href="#5.98_Utilities">Utilities</a>,
+ <a href="#5.98_Drivers">Drivers</a>,
+ <a href="#5.98_Fonts">Fonts</a>,
+ <a href="#5.98_PDF_writer">PDF writer</a>,
+ <a href="#5.98_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.98_Interpreter">Interpreter</a>,
+ <a href="#5.98_Streams">Streams</a>,
+ <a href="#5.98_Library">Library</a>
+</ul>
+<li><a href="#Version5.97">Version 5.97 (beta) (11/22/99)</a>
+<ul>
+<li><a href="#5.97_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.97_Documentation">Documentation</a>,
+ <a href="#5.97_Procedures">Procedures</a>,
+ <a href="#5.97_Utilities">Utilities</a>,
+ <a href="#5.97_Drivers">Drivers</a>,
+ <a href="#5.97_Platforms">Platforms</a>,
+ <a href="#5.97_PDF_writer">PDF writer</a>,
+ <a href="#5.97_Interpreter">Interpreter</a>,
+ <a href="#5.97_Library">Library</a>
+</ul>
+<li><a href="#Version5.96">Version 5.96 (beta) (11/12/99)</a>
+<ul>
+<li><a href="#5.96_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.96_Documentation">Documentation</a>,
+ <a href="#5.96_Procedures">Procedures</a>,
+ <a href="#5.96_Utilities">Utilities</a>,
+ <a href="#5.96_Drivers">Drivers</a>,
+ <a href="#5.96_Platforms">Platforms</a>,
+ <a href="#5.96_PDF_writer">PDF writer</a>,
+ <a href="#5.96_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.96_Interpreter">Interpreter</a>,
+ <a href="#5.96_Streams">Streams</a>,
+ <a href="#5.96_Library">Library</a>
+</ul>
+<li><a href="#Version5.95">Version 5.95 (beta) (11/1/99)</a>
+<ul>
+<li><a href="#5.95_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.95_Documentation">Documentation</a>,
+ <a href="#5.95_Procedures">Procedures</a>,
+ <a href="#5.95_Utilities">Utilities</a>,
+ <a href="#5.95_Drivers">Drivers</a>,
+ <a href="#5.95_Platforms">Platforms</a>,
+ <a href="#5.95_Fonts">Fonts</a>,
+ <a href="#5.95_PDF_writer">PDF writer</a>,
+ <a href="#5.95_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.95_Interpreter">Interpreter</a>,
+ <a href="#5.95_Library">Library</a>
+</ul>
+<li><a href="#Version5.94">Version 5.94 (beta) (9/30/99)</a>
+<ul>
+<li><a href="#5.94_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.94_Documentation">Documentation</a>,
+ <a href="#5.94_Procedures">Procedures</a>,
+ <a href="#5.94_Utilities">Utilities</a>,
+ <a href="#5.94_Drivers">Drivers</a>,
+ <a href="#5.94_Platforms">Platforms</a>,
+ <a href="#5.94_Fonts">Fonts</a>,
+ <a href="#5.94_PDF_writer">PDF writer</a>,
+ <a href="#5.94_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.94_Interpreter">Interpreter</a>,
+ <a href="#5.94_Streams">Streams</a>,
+ <a href="#5.94_Library">Library</a>
+</ul>
+<li><a href="#Version5.93">Version 5.93 (beta) (9/11/99)</a>
+<ul>
+<li><a href="#5.93_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.93_Documentation">Documentation</a>,
+ <a href="#5.93_Procedures">Procedures</a>,
+ <a href="#5.93_Utilities">Utilities</a>,
+ <a href="#5.93_Drivers">Drivers</a>,
+ <a href="#5.93_Platforms">Platforms</a>,
+ <a href="#5.93_PDF_writer">PDF writer</a>,
+ <a href="#5.93_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.93_Interpreter">Interpreter</a>,
+ <a href="#5.93_Streams">Streams</a>,
+ <a href="#5.93_Library">Library</a>
+</ul>
+<li><a href="#Version5.92">Version 5.92 (beta) (9/2/99)</a>
+<ul>
+<li><a href="#5.92_Documentation">Documentation</a>,
+ <a href="#5.92_Procedures">Procedures</a>,
+ <a href="#5.92_Utilities">Utilities</a>,
+ <a href="#5.92_Drivers">Drivers</a>,
+ <a href="#5.92_PDF_writer">PDF writer</a>,
+ <a href="#5.92_Interpreter">Interpreter</a>,
+ <a href="#5.92_Streams">Streams</a>
+</ul>
+<li><a href="#Version5.91">Version 5.91 (beta) (8/30/99)</a>
+<ul>
+<li><a href="#5.91_Documentation">Documentation</a>,
+ <a href="#5.91_Utilities">Utilities</a>,
+ <a href="#5.91_Drivers">Drivers</a>,
+ <a href="#5.91_Platforms">Platforms</a>,
+ <a href="#5.91_Fonts">Fonts</a>,
+ <a href="#5.91_PDF_writer">PDF writer</a>,
+ <a href="#5.91_Library">Library</a>
+</ul>
+<li><a href="#Version5.90">Version 5.90 (beta) (8/20/99)</a>
+<ul>
+<li><a href="#5.90_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.90_Documentation">Documentation</a>,
+ <a href="#5.90_Procedures">Procedures</a>,
+ <a href="#5.90_Utilities">Utilities</a>,
+ <a href="#5.90_Drivers">Drivers</a>,
+ <a href="#5.90_Platforms">Platforms</a>,
+ <a href="#5.90_Fonts">Fonts</a>,
+ <a href="#5.90_PDF_writer">PDF writer</a>,
+ <a href="#5.90_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.90_Interpreter">Interpreter</a>,
+ <a href="#5.90_Streams">Streams</a>,
+ <a href="#5.90_Library">Library</a>
+</ul>
+<li>(Version 5.89 deliberately omitted.)
+<li><a href="#Version5.88">Version 5.88 (tester) (8/3/99)</a>
+<ul>
+<li><a href="#5.88_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.88_Documentation">Documentation</a>,
+ <a href="#5.88_Procedures">Procedures</a>,
+ <a href="#5.88_Drivers">Drivers</a>,
+ <a href="#5.88_Platforms">Platforms</a>,
+ <a href="#5.88_Fonts">Fonts</a>,
+ <a href="#5.88_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.88_Interpreter">Interpreter</a>,
+ <a href="#5.88_Streams">Streams</a>,
+ <a href="#5.88_Library">Library</a>
+</ul>
+<li><a href="#Version5.87">Version 5.87 (tester) (6/29/99)</a>
+<ul>
+<li><a href="#5.87_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.87_Documentation">Documentation</a>,
+ <a href="#5.87_Procedures">Procedures</a>,
+ <a href="#5.87_Drivers">Drivers</a>,
+ <a href="#5.87_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.87_Interpreter">Interpreter</a>,
+ <a href="#5.87_Library">Library</a>
+</ul>
+<li><a href="#Version5.86">Version 5.86 (tester) (6/14/99)</a>
+<ul>
+<li><a href="#5.86_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.86_Documentation">Documentation</a>,
+ <a href="#5.86_Procedures">Procedures</a>,
+ <a href="#5.86_Utilities">Utilities</a>,
+ <a href="#5.86_Drivers">Drivers</a>,
+ <a href="#5.86_Platforms">Platforms</a>,
+ <a href="#5.86_Fonts">Fonts</a>,
+ <a href="#5.86_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.86_Interpreter">Interpreter</a>,
+ <a href="#5.86_Streams">Streams</a>,
+ <a href="#5.86_Library">Library</a>
+</ul>
+<li><a href="#Version5.85">Version 5.85 (tester) (5/29/99)</a>
+<ul>
+<li><a href="#5.85_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.85_Documentation">Documentation</a>,
+ <a href="#5.85_Procedures">Procedures</a>,
+ <a href="#5.85_Utilities">Utilities</a>,
+ <a href="#5.85_Drivers">Drivers</a>,
+ <a href="#5.85_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.85_Interpreter">Interpreter</a>,
+ <a href="#5.85_Library">Library</a>
+</ul>
+<li><a href="#Version5.84">Version 5.84 (tester) (5/19/99)</a>
+<ul>
+<li><a href="#5.84_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.84_Procedures">Procedures</a>,
+ <a href="#5.84_Utilities">Utilities</a>,
+ <a href="#5.84_Drivers">Drivers</a>,
+ <a href="#5.84_Platforms">Platforms</a>,
+ <a href="#5.84_Interpreter">Interpreter</a>,
+ <a href="#5.84_Streams">Streams</a>,
+ <a href="#5.84_Library">Library</a>
+</ul>
+<li><a href="#Version5.83">Version 5.83 (tester) (5/13/99)</a>
+<ul>
+<li><a href="#5.83_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.83_Documentation">Documentation</a>,
+ <a href="#5.83_Procedures">Procedures</a>,
+ <a href="#5.83_Utilities">Utilities</a>,
+ <a href="#5.83_Interpreter">Interpreter</a>,
+ <a href="#5.83_Library">Library</a>
+</ul>
+<li><a href="#Version5.82">Version 5.82 (tester) (4/24/99)</a>
+<ul>
+<li><a href="#5.82_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.82_Documentation">Documentation</a>,
+ <a href="#5.82_Procedures">Procedures</a>,
+ <a href="#5.82_Utilities">Utilities</a>,
+ <a href="#5.82_Drivers">Drivers</a>,
+ <a href="#5.82_Platforms">Platforms</a>,
+ <a href="#5.82_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.82_Interpreter">Interpreter</a>,
+ <a href="#5.82_Library">Library</a>
+</ul>
+<li><a href="#Version5.81">Version 5.81 (tester) (4/14/99)</a>
+<ul>
+<li><a href="#5.81_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.81_Procedures">Procedures</a>,
+ <a href="#5.81_Utilities">Utilities</a>,
+ <a href="#5.81_Drivers">Drivers</a>,
+ <a href="#5.81_Fonts">Fonts</a>,
+ <a href="#5.81_Platforms">Platforms</a>,
+ <a href="#5.81_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.81_Interpreter">Interpreter</a>,
+ <a href="#5.81_Library">Library</a>
+</ul>
+<li><a href="#Version5.80">Version 5.80 (tester) (4/6/99)</a>
+<ul>
+<li><a href="#5.80_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.80_Procedures">Procedures</a>,
+ <a href="#5.80_Utilities">Utilities</a>,
+ <a href="#5.80_Drivers">Drivers</a>,
+ <a href="#5.80_Fonts">Fonts</a>,
+ <a href="#5.80_Platforms">Platforms</a>,
+ <a href="#5.80_Interpreter">Interpreter</a>,
+ <a href="#5.80_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.80_Streams">Streams</a>,
+ <a href="#5.80_Library">Library</a>
+</ul>
+<li>(Versions 5.74 - 5.79 deliberately omitted.)
+<li><a href="#Version5.73">Version 5.73 (tester) (3/19/99)</a>
+<ul>
+<li><a href="#5.73_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.73_Documentation">Documentation</a>,
+ <a href="#5.73_Procedures">Procedures</a>,
+ <a href="#5.73_Drivers">Drivers</a>,
+ <a href="#5.73_Interpreter">Interpreter</a>,
+ <a href="#5.73_Library">Library</a>
+</ul>
+<li><a href="#Version5.72">Version 5.72 (tester) (3/17/99)</a>
+<ul>
+<li><a href="#5.72_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.72_Documentation">Documentation</a>,
+ <a href="#5.72_Procedures">Procedures</a>,
+ <a href="#5.72_Utilities">Utilities</a>,
+ <a href="#5.72_Drivers">Drivers</a>,
+ <a href="#5.72_Fonts">Fonts</a>,
+ <a href="#5.72_Interpreter">Interpreter</a>,
+ <a href="#5.72_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.72_Streams">Streams</a>,
+ <a href="#5.72_Library">Library</a>
+</ul>
+<li><a href="#Version5.71">Version 5.71 (tester) (3/3/99)</a>
+<ul>
+<li><a href="#5.71_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.71_Documentation">Documentation</a>,
+ <a href="#5.71_Procedures">Procedures</a>,
+ <a href="#5.71_Utilities">Utilities</a>,
+ <a href="#5.71_Drivers">Drivers</a>,
+ <a href="#5.71_Fonts">Fonts</a>,
+ <a href="#5.71_Interpreter">Interpreter</a>,
+ <a href="#5.71_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.71_Streams">Streams</a>,
+ <a href="#5.71_Library">Library</a>
+</ul>
+<li><a href="#Version5.70">Version 5.70 (internal) (2/20/99)</a>
+<ul>
+<li><a href="#5.70_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.70_Documentation">Documentation</a>,
+ <a href="#5.70_Procedures">Procedures</a>,
+ <a href="#5.70_Utilities">Utilities</a>,
+ <a href="#5.70_Drivers">Drivers</a>,
+ <a href="#5.70_Fonts">Fonts</a>,
+ <a href="#5.70_Interpreter">Interpreter</a>,
+ <a href="#5.70_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.70_Streams">Streams</a>,
+ <a href="#5.70_Library">Library</a>
+</ul>
+<li><a href="#Version5.69">Version 5.69 (internal) (2/4/99)</a>
+<ul>
+<li><a href="#5.69_Procedures">Procedures</a>,
+ <a href="#5.69_Utilities">Utilities</a>,
+ <a href="#5.69_Drivers">Drivers</a>,
+ <a href="#5.69_Interpreter">Interpreter</a>,
+ <a href="#5.69_Streams">Streams</a>,
+ <a href="#5.69_Library">Library</a>
+</ul>
+<li><a href="#Version5.68">Version 5.68 (internal) (1/29/99)</a>
+<ul>
+<li><a href="#5.68_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.68_Documentation">Documentation</a>,
+ <a href="#5.68_Procedures">Procedures</a>,
+ <a href="#5.68_Utilities">Utilities</a>,
+ <a href="#5.68_Drivers">Drivers</a>,
+ <a href="#5.68_Fonts">Fonts</a>,
+ <a href="#5.68_Platforms">Platforms</a>,
+ <a href="#5.68_Interpreter">Interpreter</a>,
+ <a href="#5.68_Streams">Streams</a>,
+ <a href="#5.68_Library">Library</a>
+</ul>
+<li><a href="#Version5.67">Version 5.67 (internal) (1/8/99)</a>
+<ul>
+<li><a href="#5.67_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.67_Documentation">Documentation</a>,
+ <a href="#5.67_Procedures">Procedures</a>,
+ <a href="#5.67_Utilities">Utilities</a>,
+ <a href="#5.67_Drivers">Drivers</a>,
+ <a href="#5.67_Fonts">Fonts</a>,
+ <a href="#5.67_Interpreter">Interpreter</a>,
+ <a href="#5.67_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.67_Streams">Streams</a>,
+ <a href="#5.67_Library">Library</a>
+</ul>
+<li><a href="#Version5.66">Version 5.66 (internal) (11/25/98)</a>
+<ul>
+<li><a href="#5.66_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.66_Documentation">Documentation</a>,
+ <a href="#5.66_Procedures">Procedures</a>,
+ <a href="#5.66_Utilities">Utilities</a>,
+ <a href="#5.66_Drivers">Drivers</a>,
+ <a href="#5.66_Platforms">Platforms</a>,
+ <a href="#5.66_Interpreter">Interpreter</a>,
+ <a href="#5.66_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.66_Streams">Streams</a>,
+ <a href="#5.66_Library">Library</a>
+</ul>
+<li><a href="#Version5.65">Version 5.65 (internal) (11/13/98)</a>
+<ul>
+<li><a href="#5.65_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.65_Documentation">Documentation</a>,
+ <a href="#5.65_Procedures">Procedures</a>,
+ <a href="#5.65_Utilities">Utilities</a>,
+ <a href="#5.65_Drivers">Drivers</a>,
+ <a href="#5.65_Platforms">Platforms</a>,
+ <a href="#5.65_Interpreter">Interpreter</a>,
+ <a href="#5.65_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.65_Library">Library</a>
+</ul>
+<li><a href="#Version5.64">Version 5.64 (internal) (11/5/98)</a>
+<ul>
+<li><a href="#5.64_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.64_Documentation">Documentation</a>,
+ <a href="#5.64_Procedures">Procedures</a>,
+ <a href="#5.64_Drivers">Drivers</a>,
+ <a href="#5.64_Library">Library</a>
+</ul>
+<li><a href="#Version5.63">Version 5.63 (internal) (11/4/98)</a>
+<ul>
+<li><a href="#5.63_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.63_Documentation">Documentation</a>,
+ <a href="#5.63_Procedures">Procedures</a>,
+ <a href="#5.63_Drivers">Drivers</a>,
+ <a href="#5.63_Interpreter">Interpreter</a>,
+ <a href="#5.63_Library">Library</a>
+</ul>
+<li><a href="#Version5.62">Version 5.62 (internal) (10/31/98)</a>
+<ul>
+<li><a href="#5.62_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.62_Documentation">Documentation</a>,
+ <a href="#5.62_Drivers">Drivers</a>,
+ <a href="#5.62_Interpreter">Interpreter</a>,
+ <a href="#5.62_Library">Library</a>
+</ul>
+<li><a href="#Version5.61">Version 5.61 (internal) (10/28/98)</a>
+<ul>
+<li><a href="#5.61_Documentation">Documentation</a>,
+ <a href="#5.61_Procedures">Procedures</a>,
+ <a href="#5.61_Utilities">Utilities</a>,
+ <a href="#5.61_Drivers">Drivers</a>,
+ <a href="#5.61_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.61_Streams">Streams</a>,
+ <a href="#5.61_Library">Library</a>
+</ul>
+<li><a href="#Version5.60">Version 5.60 (internal) (10/18/98)</a>
+<ul>
+<li><a href="#5.60_Incompatible_changes">Incompatible changes</a>,
+ <a href="#5.60_Documentation">Documentation</a>,
+ <a href="#5.60_Procedures">Procedures</a>,
+ <a href="#5.60_Utilities">Utilities</a>,
+ <a href="#5.60_Drivers">Drivers</a>,
+ <a href="#5.60_Platforms">Platforms</a>,
+ <a href="#5.60_Interpreter">Interpreter</a>,
+ <a href="#5.60_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.60_Streams">Streams</a>,
+ <a href="#5.60_Library">Library</a>
+</ul>
+<li>(Versions 5.51 - 5.59 deliberately omitted.)
+<li><a href="#Version5.50">Version 5.50 (9/16/98)</a>
+<ul>
+<li><a href="#5.50_Documentation">Documentation</a>,
+ <a href="#5.50_Procedures">Procedures</a>,
+ <a href="#5.50_Utilities">Utilities</a>,
+ <a href="#5.50_Drivers">Drivers</a>,
+ <a href="#5.50_Platforms">Platforms</a>,
+ <a href="#5.50_Interpreter">Interpreter</a>,
+ <a href="#5.50_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.50_Library">Library</a>
+</ul>
+<li><a href="#Version5.40">Version 5.40 (beta) (9/10/98)</a>
+<ul>
+<li><a href="#5.40_Documentation">Documentation</a>,
+ <a href="#5.40_Procedures">Procedures</a>,
+ <a href="#5.40_Utilities">Utilities</a>,
+ <a href="#5.40_Drivers">Drivers</a>,
+ <a href="#5.40_Platforms">Platforms</a>,
+ <a href="#5.40_Library">Library</a>
+</ul>
+<li><a href="#Version5.39">Version 5.39 (beta) (9/8/98)</a>
+<ul>
+<li><a href="#5.39_Drivers">Drivers</a>,
+ <a href="#5.39_Library">Library</a>
+</ul>
+<li><a href="#Version5.38">Version 5.38 (beta) (9/3/98)</a>
+<ul>
+<li><a href="#5.38_Documentation">Documentation</a>,
+ <a href="#5.38_Drivers">Drivers</a>,
+ <a href="#5.38_Interpreter">Interpreter</a>,
+ <a href="#5.38_Library">Library</a>
+</ul>
+<li><a href="#Version5.37">Version 5.37 (beta) (8/31/98)</a>
+<ul>
+<li><a href="#5.37_Documentation">Documentation</a>,
+ <a href="#5.37_Procedures">Procedures</a>,
+ <a href="#5.37_Utilities">Utilities</a>,
+ <a href="#5.37_Drivers">Drivers</a>,
+ <a href="#5.37_Fonts">Fonts</a>,
+ <a href="#5.37_Interpreter">Interpreter</a>,
+ <a href="#5.37_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.37_Streams">Streams</a>,
+ <a href="#5.37_Library">Library</a>
+</ul>
+<li><a href="#Version5.36">Version 5.36 (beta) (8/25/98)</a>
+<ul>
+<li><a href="#5.36_Documentation">Documentation</a>,
+ <a href="#5.36_Utilities">Utilities</a>,
+ <a href="#5.36_Drivers">Drivers</a>,
+ <a href="#5.36_Platforms">Platforms</a>,
+ <a href="#5.36_Fonts">Fonts</a>,
+ <a href="#5.36_Interpreter">Interpreter</a>,
+ <a href="#5.36_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.36_Streams">Streams</a>,
+ <a href="#5.36_Library">Library</a>
+</ul>
+<li><a href="#Version5.35">Version 5.35 (beta) (8/18/98)</a>
+<ul>
+<li><a href="#5.35_Documentation">Documentation</a>,
+ <a href="#5.35_Drivers">Drivers</a>,
+ <a href="#5.35_Fonts">Fonts</a>,
+ <a href="#5.35_Interpreter">Interpreter</a>,
+ <a href="#5.35_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#5.35_Library">Library</a>
+</ul>
+<li><a href="#Version5.34">Version 5.34 (beta) (8/16/98)</a>
+<ul>
+<li><a href="#V5.34_Documentation">Documentation</a>,
+ <a href="#V5.34_Procedures">Procedures</a>,
+ <a href="#V5.34_Drivers">Drivers</a>,
+ <a href="#V5.34_Interpreter">Interpreter</a>,
+ <a href="#V5.34_Library">Library</a>
+</ul>
+<li><a href="#Version5.33">Version 5.33 (beta) (8/14/98)</a>
+<ul>
+<li><a href="#V5.33_Platforms">Platforms</a>,
+ <a href="#V5.33_Fonts">Fonts</a>,
+ <a href="#V5.33_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.33_Library">Library</a>
+</ul>
+<li><a href="#Version5.32">Version 5.32 (beta) (8/13/98)</a>
+<ul>
+<li><a href="#V5.32_Procedures">Procedures</a>,
+ <a href="#V5.32_Interpreter">Interpreter</a>,
+ <a href="#V5.32_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.32_Library">Library</a>
+</ul>
+<li><a href="#Version5.31">Version 5.31 (limited) (8/11/98)</a>
+<ul>
+<li><a href="#V5.31_Drivers">Drivers</a>,
+ <a href="#V5.31_Interpreter">Interpreter</a>,
+ <a href="#V5.31_Library">Library</a>
+</ul>
+<li><a href="#Version5.30">Version 5.30 (limited) (8/10/98)</a>
+<ul>
+<li><a href="#V5.30_Documentation">Documentation</a>,
+ <a href="#V5.30_Procedures">Procedures</a>,
+ <a href="#V5.30_Drivers">Drivers</a>,
+ <a href="#V5.30_Platforms">Platforms</a>,
+ <a href="#V5.30_Fonts">Fonts</a>,
+ <a href="#V5.30_Interpreter">Interpreter</a>,
+ <a href="#V5.30_Streams">Streams</a>,
+ <a href="#V5.30_Library">Library</a>
+</ul>
+<li><a href="#Version5.28">Version 5.28 (limited) (8/3/98)</a>
+<ul>
+<li><a href="#V5.28_Documentation">Documentation</a>,
+ <a href="#V5.28_Procedures">Procedures</a>,
+ <a href="#V5.28_Utilities">Utilities</a>,
+ <a href="#V5.28_Drivers">Drivers</a>,
+ <a href="#V5.28_Platforms">Platforms</a>,
+ <a href="#V5.28_Interpreter">Interpreter</a>,
+ <a href="#V5.28_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.28_Streams">Streams</a>,
+ <a href="#V5.28_Library">Library</a>
+</ul>
+<li><a href="#Version5.27">Version 5.27 (limited) (7/18/98)</a>
+<ul>
+<li><a href="#V5.27_Documentation">Documentation</a>,
+ <a href="#V5.27_Procedures">Procedures</a>,
+ <a href="#V5.27_Drivers">Drivers</a>,
+ <a href="#V5.27_Platforms">Platforms</a>,
+ <a href="#V5.27_Interpreter">Interpreter</a>,
+ <a href="#V5.27_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.27_Library">Library</a>
+</ul>
+<li><a href="#Version5.26">Version 5.26 (limited) (7/7/98)</a>
+<ul>
+<li><a href="#V5.26_Procedures">Procedures</a>,
+ <a href="#V5.26_Drivers">Drivers</a>,
+ <a href="#V5.26_Fonts">Fonts</a>,
+ <a href="#V5.26_Interpreter">Interpreter</a>,
+ <a href="#V5.26_Library">Library</a>
+</ul>
+<li><a href="#Version5.25">Version 5.25 (limited) (7/1/98)</a>
+<ul>
+<li><a href="#V5.25_Documentation">Documentation</a>,
+ <a href="#V5.25_Procedures">Procedures</a>,
+ <a href="#V5.25_Platforms">Platforms</a>,
+ <a href="#V5.25_Fonts">Fonts</a>,
+ <a href="#V5.25_Interpreter">Interpreter</a>,
+ <a href="#V5.25_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.25_Drivers">Drivers</a>,
+ <a href="#V5.25_Library">Library</a>
+</ul>
+<li><a href="#Version5.24">Version 5.24 (limited) (6/17/98)</a>
+<ul>
+<li><a href="#V5.24_Documentation">Documentation</a>,
+ <a href="#V5.24_Procedures">Procedures</a>,
+ <a href="#V5.24_Utilities">Utilities</a>,
+ <a href="#V5.24_Drivers">Drivers</a>,
+ <a href="#V5.24_Platforms">Platforms</a>,
+ <a href="#V5.24_Fonts">Fonts</a>,
+ <a href="#V5.24_Interpreter">Interpreter</a>,
+ <a href="#V5.24_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.24_Streams">Streams</a>,
+ <a href="#V5.24_Library">Library</a>
+</ul>
+<li><a href="#Version5.23">Version 5.23 (limited) (5/14/98)</a>
+<ul>
+<li><a href="#V5.23_Documentation">Documentation</a>,
+ <a href="#V5.23_Procedures">Procedures</a>,
+ <a href="#V5.23_Utilities">Utilities</a>,
+ <a href="#V5.23_Drivers">Drivers</a>,
+ <a href="#V5.23_Platforms">Platforms</a>,
+ <a href="#V5.23_Fonts">Fonts</a>,
+ <a href="#V5.23_Interpreter">Interpreter</a>,
+ <a href="#V5.23_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.23_Streams">Streams</a>,
+ <a href="#V5.23_Library">Library</a>
+</ul>
+<li><a href="#Version5.22">Version 5.22 (limited) (2/19/98)</a>
+<ul>
+<li><a href="#V5.22_Documentation">Documentation</a>,
+ <a href="#V5.22_Procedures">Procedures</a>,
+ <a href="#V5.22_Utilities">Utilities</a>,
+ <a href="#V5.22_Drivers">Drivers</a>,
+ <a href="#V5.22_Interpreter">Interpreter</a>,
+ <a href="#V5.22_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.22_Streams">Streams</a>,
+ <a href="#V5.22_Library">Library</a>
+</ul>
+<li><a href="#Version5.21">Version 5.21 (limited) (1/19/98)</a>
+<ul>
+<li><a href="#V5.21_Documentation">Documentation</a>,
+ <a href="#V5.21_Procedures">Procedures</a>,
+ <a href="#V5.21_Drivers">Drivers</a>,
+ <a href="#V5.21_Fonts">Fonts</a>,
+ <a href="#V5.21_Interpreter">Interpreter</a>,
+ <a href="#V5.21_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.21_Library">Library</a>
+</ul>
+<li><a href="#Version5.20">Version 5.20 (limited) (1/8/98)</a>
+<ul>
+<li><a href="#V5.20_Documentation">Documentation</a>,
+ <a href="#V5.20_Procedures">Procedures</a>,
+ <a href="#V5.20_Utilities">Utilities</a>,
+ <a href="#V5.20_Drivers">Drivers</a>,
+ <a href="#V5.20_Platforms">Platforms</a>,
+ <a href="#V5.20_Fonts">Fonts</a>,
+ <a href="#V5.20_Interpreter">Interpreter</a>,
+ <a href="#V5.20_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.20_Streams">Streams</a>,
+ <a href="#V5.20_Library">Library</a>
+</ul>
+<li><a href="#Version5.10">Version 5.10 (11/23/97)</a>
+<ul>
+<li><a href="#V5.10_Documentation">Documentation</a>,
+ <a href="#V5.10_Procedures">Procedures</a>,
+ <a href="#V5.10_Utilities">Utilities</a>,
+ <a href="#V5.10_Drivers">Drivers</a>,
+ <a href="#V5.10_Interpreter">Interpreter</a>,
+ <a href="#V5.10_Library">Library</a>
+</ul>
+<li><a href="#Version5.07">Version 5.07 (limited) (10/31/97)</a>
+<ul>
+<li><a href="#V5.07_Documentation">Documentation</a>,
+ <a href="#V5.07_Drivers">Drivers</a>,
+ <a href="#V5.07_Library">Library</a>
+</ul>
+<li><a href="#Version5.06">Version 5.06 (limited) (10/7/97)</a>
+<ul>
+<li><a href="#V5.06_Documentation">Documentation</a>,
+ <a href="#V5.06_Procedures">Procedures</a>,
+ <a href="#V5.06_Utilities">Utilities</a>,
+ <a href="#V5.06_Drivers">Drivers</a>,
+ <a href="#V5.06_Interpreter">Interpreter</a>,
+ <a href="#V5.06_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.06_Library">Library</a>
+</ul>
+<li><a href="#Version5.05">Version 5.05 (limited) (9/24/97)</a>
+<ul>
+<li><a href="#V5.05_Platforms">Platforms</a>,
+ <a href="#V5.05_Drivers">Drivers</a>,
+ <a href="#V5.05_Interpreter">Interpreter</a>,
+ <a href="#V5.05_Interpreter_PDF">Interpreter (PDF)</a>
+</ul>
+<li><a href="#Version5.04">Version 5.04 (limited) (9/21/97)</a>
+<ul>
+<li><a href="#V5.04_Documentation">Documentation</a>,
+ <a href="#V5.04_Procedures">Procedures</a>,
+ <a href="#V5.04_Utilities">Utilities</a>,
+ <a href="#V5.04_Drivers">Drivers</a>,
+ <a href="#V5.04_Interpreter">Interpreter</a>,
+ <a href="#V5.04_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.04_Library">Library</a>
+</ul>
+<li><a href="#Version5.03">Version 5.03 (8/8/97)</a>
+<ul>
+<li><a href="#V5.03_Documentation">Documentation</a>,
+ <a href="#V5.03_Procedures">Procedures</a>,
+ <a href="#V5.03_Drivers">Drivers</a>,
+ <a href="#V5.03_Platforms">Platforms</a>,
+ <a href="#V5.03_Fonts">Fonts</a>,
+ <a href="#V5.03_Interpreter">Interpreter</a>,
+ <a href="#V5.03_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.03_Library">Library</a>
+</ul>
+<li><a href="#Version5.02">Version 5.02 (7/28/97)</a>
+<ul>
+<li><a href="#V5.02_Documentation">Documentation</a>,
+ <a href="#V5.02_Procedures">Procedures</a>,
+ <a href="#V5.02_Utilities">Utilities</a>,
+ <a href="#V5.02_Drivers">Drivers</a>,
+ <a href="#V5.02_Platforms">Platforms</a>,
+ <a href="#V5.02_Fonts">Fonts</a>,
+ <a href="#V5.02_Interpreter">Interpreter</a>,
+ <a href="#V5.02_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.02_Library">Library</a>
+</ul>
+<li><a href="#Version5.01">Version 5.01 (6/22/97)</a>
+<ul>
+<li><a href="#V5.01_Documentation">Documentation</a>,
+ <a href="#V5.01_Procedures">Procedures</a>,
+ <a href="#V5.01_Utilities">Utilities</a>,
+ <a href="#V5.01_Drivers">Drivers</a>,
+ <a href="#V5.01_Platforms">Platforms</a>,
+ <a href="#V5.01_Interpreter">Interpreter</a>,
+ <a href="#V5.01_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V5.01_Library">Library</a>
+</ul>
+<li><a href="#Version5.0">Version 5.0 (6/6/97)</a>
+<ul>
+<li><a href="#V5.0_Documentation">Documentation</a>,
+ <a href="#V5.0_Procedures">Procedures</a>,
+ <a href="#V5.0_Interpreter">Interpreter</a>,
+ <a href="#V5.0_Library">Library</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a record of changes in Ghostscript releases numbered 5.n.
+For earlier versions, see the the history documents:
+
+<blockquote>
+<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
+<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
+<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
+<a href="History1.htm">History of Ghostscript versions 1.n</a>
+</blockquote>
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<p>
+Within each release, news appears in the following order: Incompatible
+changes, Documentation, Procedures, Utilities, Drivers, Platforms, Fonts,
+Interpreter, Streams (included under Interpreter through release 2.9.9),
+Library. Changes marked with a * were made available as patches to a
+previous release.
+
+<hr>
+
+<h2><a name="Version5.99"></a>Version 5.99 (beta) (1999-12-18)</h2>
+
+<h3><a name="5.99_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - All platform-specific makefiles must now define the Q macro.
+ - Ghostscript now exits with an error status if an error occurs in a
+file named on the command line, a -c command, or piped input.
+(Utilities)
+ - ps2epsi now disables setpagedevice: the bounding box of the EPSI
+output file is recorded only in the %%BoundingBox comment.
+(Drivers)
+ - The return type of gdev_vector_close_file is changed from void
+to int.
+(Interpreter)
+ - The name of the predefined stochastic halftone is changed to
+StochasticDefault. (This change was actually made in 5.98.)
+ - The compht feature is replaced by stocht.
+ - Font searching now looks in FontResourceDir.
+ - The ASCIIHexEncode filter now produces upper-case output.
+(Library)
+ - The type returned by compiled halftone resource access procedures
+is changed.
+
+</pre><h3><a name="5.99_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - A stray character had gotten added to the beginning of a file.
+(doc/Use.htm)
+ - Many minor HTML errors had crept in. (doc/*.htm, doc/gsdoc.el)
+
+Updates the docmentation on the mswinpr2 driver. (doc/Devices.htm)
+
+Notes that GNU make currently does not work on OpenVMS. (doc/Make.htm)
+
+Documents the fact that x/y_pixels_per_inch are deprecated. (gxdevcli.h)
+
+Documents certain bugs in ps2pdf. (doc/Ps2pdf.htm)
+
+Documents the addition of FontResourceDir to the font search process.
+(doc/Use.htm)
+
+Documents the new arrangement for B paper sizes. (doc/Psfiles.htm,
+doc/Use.htm, doc/gs-vms.hlp, man/gs.1)
+
+Removes the "under development" warning from the text API and
+get_bits_rectangle documentation, and adds a little more detail.
+(doc/Drivers.htm)
+
+Adds new user-contributed documentation for installing and using Ghostscript
+fonts with X Windows. (doc/Fonts.htm, doc/Readme.htm, doc/Use.htm)
+
+Adds building with the Watcom compiler to the release process.
+(doc/Release.htm)
+
+Adds an "Improving performance" section to the user documentation.
+(doc/Use.htm)
+
+Adds a note to the C style guide about order of evaluation.
+(doc/C-style.htm)
+
+Documents the new stocht.ps file. (doc/Psfiles.htm)
+
+</pre><h3><a name="5.99_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - A missing dependency caused builds on certain platforms to fail.
+(int.mak)
+ - $(EXP) was missing before various utility invocations. (int.mak)
+ - VMS converts all unquoted arguments to lower case. In order to
+work around this, we have added a platform-specific makefile macro Q, which
+is defined as a quote mark on VMS and as an empty string on all other
+platforms, and used it to quote the few mixed-case values in the makefiles.
+We removed the obsolete QQ macro from os2.mak as well. (cfonts.mak,
+dvx-head.mak, int.mak, openvms.mak, openvms.mmk, os2.mak, unixhead.mak,
+wccommon.mak, winlib.mak)
+ - PSRCDIR was incorrectly referenced as PNGSRCDIR in one place.
+(all-arch.mak)
+ - winint.mak had a conditional that Watcom's make program didn't
+accept. (winint.mak)
+
+Adds a makefile entry to allow compilation with libpng 1.0.5. (libpng.mak)
+
+Updates the Borland C++ makefile to work with C++Builder 4. (bcwin32.mak)
+
+Updates the Unix installation makefile to install stocht.ps. (unixinst.mak)
+
+</pre><h3><a name="5.99_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ps2epsi didn't disable setpagedevice. (lib/ps2epsi)
+ - geninit needed &lt;stdlib.h&gt; for 'exit'. (geninit.c)
+ - Some invocations of utilities didn't deal with VMS's habit of
+converting arguments to lower case. (geninit.c, cfonts.mak)
+ - The ps2pdf*.bat files didn't produce a usage message if no
+arguments were provided. (lib/ps2pdf.bat, lib/ps2pdf12.bat,
+lib/ps2pdf13.bat)
+ - Removes some warnings from the Windows uninstaller.
+(dwuninst.cpp)
+
+Upgrades the halftone compiler to handle Type 5 halftones. (genht.c)
+
+Makes the initialization string compiler recognize sections of the code
+where binary tokens are allowed, and convert literal hex strings within such
+sections to binary-token strings, which take less space and load faster.
+(geninit.c)
+
+Adds a utility file to define b0 ... b6 as selecting JIS B paper sizes.
+(unixinst.mak, lib/jispaper.ps)
+
+Modifies the font printing utility to sort unencoded characters.
+(lib/prfont.ps)
+
+Adds a small utility to help use the StochasticDefault halftone.
+(lib/stocht.ps)
+
+</pre><h3><a name="5.99_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The output of the epswrite driver couldn't be embedded in another
+file, because it assumed it was invoked with an empty operand stack.
+(gdevps.c)
+ - "Vector" drivers didn't detect I/O errors such as filling up the
+disk. (gdevvec.h, gdevpdf.c, gdevps.c, gdevpx.c, gdevvec.c)
+ - The bookkeeping for image color spaces when banding was incorrect,
+possibly causing memory access errors. (gxclist.h, gxclimag.c, gxclist.c)
+ - The cljet5 driver didn't place the image on the page correctly.
+(gdevclj.c)
+ - 16-bit X11 devices with R/G/B widths other than 5/6/5 sometimes
+failed to map colors correctly. (gdevxcmp.h, gdevxcmp.c)
+ - The cljet5c driver omitted a needed cast. (gdevcljc.c)
+
+Adds new x11rg16x and x11rg32x devices to test X Windows with unusual pixel
+layout. (devs.mak, gdevxalt.c)
+
+Works around a bug in Acrobat Distiller 4 (and perhaps some other PostScript
+interpreters) that causes an error if CCITTFaxDecode with /EndOfBlock = true
+is given data with no EOB (terminated by the end of the data stream
+instead). (gdevps.c)
+
+</pre><h3><a name="5.99_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The absence of mktemp on the Watcom platform caused a linking
+error under Windows. (watc.mak, watcw32.mak, gp_iwatc.c, gp_mktmp.c)
+
+</pre><h3><a name="5.99_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - findfont, /Font resourcestatus, and /Font resourceforall weren't
+consistent. (lib/gs_fonts.ps, lib/gs_res.ps)
+ - Very large TrueType fonts caused a stackoverflow. (lib/gs_ttf.ps)
+
+</pre><h3><a name="5.99_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Errors in pdfmark and setdistillerparams were ignored (!).
+(lib/gs_pdfwr.ps)
+ - The PUT pdfmark didn't allow adding dictionaries to stream-type
+objects. (The pdfmark documentation says this isn't allowed, but we think
+this is an oversight, since it is reasonable and unambiguous and Acrobat
+Distiller allows it.) (gdevpdfm.c)
+ - The token scanner used to substitute object names in pdfmark
+parameters sometimes added an extra character on the end. (gdevpdfr.c)
+ - ashow and [a]widthshow produced incorrect text spacing. (bug
+introduced by an optimization in 5.97) (gdevpdft.c)
+ - setdistillerparams left its argument on the stack.
+(lib/gs_pdfwr.ps)
+ - 0-height images caused errors either at conversion or at rendering
+time. (gdevpdfi.c)
+ - If the FontMatrix included a translation component, text was
+positioned incorrectly. NOTE: this fix may not handle x/y/xyshow.
+(gdevpdft.c)
+ - Out-of-range user-space coordinates could get generated for
+rectangles. NOTE: they can still get generated for general paths.
+(gdevpdfd.c)
+ - Widths weren't written for renamed built-in fonts. We fixed this
+partly by improving the algorithm for recognizing built-in fonts.
+(gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Works around the Acrobat limitation that user-space coordinates must not
+exceed 32K. (fix from Artifex) (gdevpdfp.c)
+
+Works around an Acrobat Reader 3 bug with printing files including Type 3
+fonts: with the "Download Fonts Once" option, AR3 only emits the font subset
+referenced on the first page where the font appears. (gdevpdfx.h,
+gdevpdf.c, gdevpdft.c)
+
+</pre><h3><a name="5.99_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Type 3 fonts weren't handled properly as a marking context, so if
+a CharProc referenced a resource in the font, an error would occur.
+(lib/pdf_fonts.ps)
+ - 0-height images caused an error. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.99_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Errors weren't propagated properly. (bug introduced in 5.98 by
+enhanced error recovery code) (imainarg.h, gs.c, imainarg.c)
+ - Errors in -c commands or in files named on the command line
+sometimes allowed execution to continue, and did not terminate with an
+abnormal status. (lib/gs_init.ps)
+
+Changes the binary token scanner so that if the stream buffer is in foreign
+space, binary-token strings will not be copied, but will be referenced
+directly in the buffer. This parallels what is done for name strings.
+(iscanbin.c)
+
+Changes the stochastic halftone from multiple Type 3s to a Type 5.
+(lib/ht_ccsto.ps, int.mak)
+
+Replaces the compht feature with a new feature called stocht. If this
+feature is selected, the StochasticDefault halftone resource will be
+pre-loaded into Ghostscript. If COMPILE_INITS=1, all the halftone data
+(threshold array, order and bits arrays) will be efficiently compiled into
+the executable. (int.mak)
+
+Replaces (...\n) print with (...) = everywhere. (lib/gs_cmdl.ps,
+lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_setpd.ps, lib/pdf_base.ps,
+lib/pdf_font.ps, lib/pdf_main.ps, lib/pdf_sec.ps)
+
+Adds support for JIS B paper sizes: statusdict will now include isob0..6 and
+jisb0..6 operators, with b0..6 normally aliased to the former.
+(lib/gs_statd.ps, lib/jispaper.ps)
+
+Adds a b5tray procedure; limits the valid arguments for setpagetype to the
+Adobe-defined values 0 and 1. (lib/gs_statd.ps)
+
+Updates clients for the change in the gs_image_* API. (zimage.c)
+
+Makes the default halftone lookup procedure more reasonable.
+(lib/gs_init.ps, lib/gs_ll3.ps)
+
+</pre><h3><a name="5.99_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - An error condition when closing a file stream wasn't reported
+properly. (sfxfd.c, sfxstdio.c)
+
+For greater Adobe compatibility, changes the ASCIIHexEncode filter to
+produce upper-case output. (sstring.c)
+
+</pre><h3><a name="5.99_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The gs_image_* API didn't work for ImageType 3 images. Fixing
+this required a small (but backward-compatible) API change. (fix mostly
+provided by Artifex) (gsimage.h, gsimage.c)
+ - The change in the bbox device in 5.95 broke it for the case where
+it was being used in a pipeline. (gdevbbox.c)
+ - A possible overflow wasn't detected when stroking lines with very
+large coordinates. (gxstroke.c)
+ - A mask was sized incorrectly. (gsdcolor.h)
+
+Updates the runtime support for compiled halftones. (gxdhtres.h, gscdefs.h,
+gconf.c, gxclrast.c, gxhtbit.c)
+
+Replaces all references to the now-deprecated x/y_pixels_per_inch with
+HWResolution[0/1]. (gsdevice.c, gxclist.c, gxpcmap.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.98"></a>Version 5.98 (beta) (1999-12-01)</h2>
+
+<h3><a name="5.98_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The return type of init_proc is changed from void to int.
+ - The return types of gs_lib_init* are changed from void to int.
+(Interpreter)
+ - The return types of gs_[main_]init*, gs_[main_]add_lib_path,
+gs_[main_]set_lib_paths, and a number of internal initialization-related
+procedures are changed from void to int.
+
+</pre><h3><a name="5.98_Documentation"></a>Documentation</h3><pre>
+
+Improves the documentation of the clist_render_rectangle procedure.
+(gxclist.h)
+
+Makes it clear that pre-public-release filesets should not be redistributed.
+(doc/Tester.htm)
+
+Clarifies that the parameters for the X driver are command line switches,
+not X resources. (doc/Use.htm)
+
+Improves the documentation of ps2pdf in response to some user comments.
+(doc/Ps2pdf.htm)
+
+Documents the initial settings of the distiller parameters.
+(doc/Ps2pdf.htm)
+
+Documents the UniqueIDs assigned to Aladdin. (lib/gs_fonts.ps)
+
+Updates the documentation for the stochastic halftone mask. (doc/Make.htm)
+
+Removes some obsolete material. (doc/Release.htm)
+
+</pre><h3><a name="5.98_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The new ps2pdf* scripts weren't included in the Unix install list.
+(unixinst.mak)
+ - The directory names were missing in BEGINFILES. (openvms.mak)
+ - The .pl and .sh scripts weren't included in the Unix install list.
+(unixinst.mak)
+
+Updates all-arch.mak with a newer version from its contributor.
+(all-arch.mak)
+
+Updates the makefiles for a change in eexec modularization. (devs.mak,
+int.mak, lib.mak)
+
+</pre><h3><a name="5.98_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The dvipdf usage message was incorrect. (lib/dvipdf)
+
+Adds a utility for mechanically adding the Adobe extended Latin characters
+(primarily Central European accented letters) to a font. Eventually we
+would like to integrate this into the font loader and/or make extended
+versions of the standard 35 fonts. (lib/addxchar.ps)
+
+</pre><h3><a name="5.98_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - psdf_sorted_glyphs_include didn't handle empty lists correctly.
+(gdevpsdf.c)
+ - A reference to a #defined constant hadn't been converted to upper
+case. (gdevpsdf.h)
+ - Acrobat Reader couldn't handle &lt;&gt; as the definition of
+Notice in an embedded font's FontInfo dictionary: it requires a ()
+string. (gdevpsd1.c)
+ - The [e]pswrite driver didn't take stroked paths into account when
+computing the bounding box. (gdevps.c)
+
+Updates gdevwpr2.c with a new version from its most recent author.
+(gdevwpr2.c)
+
+</pre><h3><a name="5.98_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - The FONTPATH file scanner wasn't protected against errors.
+(lib/gs_fonts.ps)
+ - Some badly designed Chinese TrueType fonts, whose 'post' table
+gives the name .null to all glyphs, didn't work properly. (lib/gs_ttf.ps)
+ - The shareware Katakana font had an incorrect UniqueID.
+(fonts/fkarw.gsf)
+
+Adds all of the PostScript 3 fonts to the intelligent substitution tables.
+(lib/gs_fonts.ps)
+
+Changes the FONTPATH scanner to allow a %%BeginFont: line as the first line
+of a font. Nothing in Adobe's documentation suggests that this is
+acceptable, but some fonts have it. (lib/gs_fonts.ps)
+
+Releases an updated set of the URW fonts, fixing the braceleftbt problem in
+the Symbol font and a couple of missing characters in the ZapfDingbats
+fonts, and adding the Euro glyph to the alphabetic fonts. The new archive
+also includes fonts.scale and fonts.dir files for use with X Windows
+(mkfontdir and xfs).
+
+Centralizes the definition of Aladdin's XUIDs. (lib/gs_fonts.ps,
+lib/gs_ttf.ps)
+
+</pre><h3><a name="5.98_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - The algorithm for making font names unique didn't take subset
+prefixes into account. (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
+ - Computing character bounding boxes was taking an inordinate amount
+of time. (performance problem only) (gdevpdff.c)
+ - The pdf_image_writer and pdf_image_enum structures didn't have GC
+descriptors, possibly causing memory corruption. (gdevpdfi.c)
+ - PostScript files containing images with premature end-of-data were
+converted to PDF files with premature end-of-data, which Acrobat doesn't
+accept. (gdevpdfo.h, gdevpdfx.h, gdevpdfi.c, gdevpdfo.c, gdevpdfu.c)
+ - Pattern resources whose image was written in-line omitted a needed
+gsave (q). (bug introduced in 5.94) (gdevpdfi.c)
+ - The similarity between a font and a base font wasn't computed
+correctly, leading to some unnecessary writing of Widths for standard fonts.
+(gdevpdft.c)
+ - Embedding a stream in the psdf_binary_writer caused garbage
+collector problems, because there could be pointers to that stream from
+elsewhere. (gdevpsdf.h, gdevpsdf.c)
+ - The algorithms for deciding whether a font was script or serif
+were very inaccurate. (The revised ones are only somewhat better.)
+(gdevpdff.c)
+ - Re-encoded characters in subset fonts weren't handled correctly.
+We work around this by writing the entire font if the character doesn't
+appear in the font's encoding. This is inefficient but will always produce
+correct output. (gdevpdff.h, gdevpdff.c, gdevpdft.c, gdevpdfw.c)
+ - The meaning of bit 6 in the Flags was supposed to have changed in
+PDF 1.2, but didn't. (gdevpdff.h, gdevpdff.c, gdevpdfw.c)
+ - The Widths array didn't get written out for embedded subsets of
+the built-in fonts. (gdevpdfw.c)
+ - Planar images weren't handled correctly, and could cause memory
+corruption. (gdevpdfi.c)
+ - Patterns still weren't scaled correctly; in fact, the "fix" in
+5.94 can't possibly have worked, and we don't understand why it seemed to.
+(gdevpdfi.c)
+
+Recants the belief that the default encoding for embedded fonts is
+StandardEncoding (see 5.95): the appearance of this was a symptom of having
+multiple fonts with the same name. (gdevpdft.c)
+
+Removes FONT_EMBED_UNKNOWN, which is meaningless (a decision is always made
+about whether to embed a font). (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Changes the algorithm for picking the base font so that it produces more
+efficient output for certain cases of re-encoded fonts. (gdevpdft.c)
+
+</pre><h3><a name="5.98_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Fonts were getting renamed unnecessarily. (performance and PDF
+output size problem only) (lib/pdf_font.ps)
+ - Fonts with Widths but no FontDescriptor caused an error.
+(lib/pdf_font.ps)
+ - TrueType fonts processed the Encoding key in the font the same way
+as other font types, which is not correct. (lib/pdf_font.ps)
+ - For embedded Type 3 fonts, the Widths entry in a font didn't
+override the width in the CharProc. (lib/pdf_font.ps, lib/pdf_ops.ps)
+ - If a page had multiple Contents streams, and one of the streams
+ended with values on the operand stack, an error might occur.
+(lib/pdf_main.ps)
+ - Ts and Tz within a text object didn't take effect immediately.
+(lib/pdf_ops.ps)
+ - sc[n] and SC[N] could cause an error because Do left an extra item
+on the stack temporarily. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.98_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Getting the unscaled outline for a Type 1 font didn't disable
+hinting. (mostly a performance problem) (zchar1.c)
+ - Error conditions during initialization weren't recognized. Fixing
+this required changing various return types from void to int. (ialloc.h,
+iinit.h, imain.h, interp.h, ialloc.c, iinit.c, imain.c)
+ - HalftoneMode didn't affect setscreen or setcolorscreen.
+(lib/gs_init.ps, lib/gs_ll3.ps)
+
+Makes the interpreter quit with a message, rather than a stack dump, if it
+can't open the initial device and DEBUG is not set. (lib/gs_init.ps)
+
+Adds .setlimitclamp and .currentlimitclamp operators to access the limit
+clamp flag in the graphics state. (zgstate.c)
+
+Changes the names of the stochastic halftone mask to be more descriptive.
+(lib/ht_ccsto.ps, int.mak, unixinst.mak)
+
+</pre><h3><a name="5.98_Streams"></a>Streams</h3><pre>
+
+Adds the ability to forbid using hex encoding when writing strings.
+(spsdf.h, spsdf.c)
+
+</pre><h3><a name="5.98_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Computing the width of a glyph unnecessarily constructed the
+entire outline. (performance problem only) (gxtype1.c)
+ - Getting the unscaled width of a glyph in a Type 1 font didn't
+disable hinting. (mostly a performance problem) (gxtype1.c.)
+ - The "unknown device" GC descriptor is no longer used. (gsdevice.c)
+ - Some compilers *still* complained about end-of-loop code not being
+reached. (gxpath2.c)
+ - Mixing float and double values sometimes caused spurious lines to
+be drawn when stroking very short lines with large widths. (fix from
+Artifex) (gxpdash.c)
+ - The code for handling crossing lines in the path filling algorithm
+sometimes computed line crossings incorrectly, causing excessive
+computation. (gxfill.c)
+ - When oversampling for anti-aliasing, the flatness parameter was
+not scaled, leading to unnecessarily accurate curve rendering. (gspaint.c)
+ - An extra grestore in a Pattern PaintProc could cause a crash.
+(gxpcmap.c)
+ - Error conditions during initialization weren't recognized. Fixing
+this required changing the return type of init_proc, and various other
+internal procedures, from void to int. (std.h, gslib.h, gscdefs.h,
+gshtscr.c, gsiodev.c, gslib.c, gsutil.c)
+
+Splits off the Type 1 encryption/decryption code into a separate file for
+sharing with the eexec streams. (gscrypt1.c, gxtype1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.97"></a>Version 5.97 (beta) (11/22/99)</h2>
+
+<p>
+This is the next beta for 6.0. We believe the pdfwrite driver (ps2pdf) now
+finally produces Acrobat-acceptable output, with reasonable handling of
+fonts, and have also fixed the problem with high-level image banding. We
+are cautiously hopeful that this is a "real" beta candidate.
+
+<h3><a name="5.97_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The default CompatibilityLevel in the pdfwrite driver is now back
+to 1.3.
+(Library)
+ - The seac_data procedure of a Type 1 font must now be able to
+return the glyph and/or the actual outline data.
+
+</pre><h3><a name="5.97_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - A &lt;br&gt; was missing. (doc/Release.htm)
+ - The final step of copying releases to www.aladdin.com was missing.
+(doc.Release.htm)
+
+Documents the new situation with the ps2pdf* scripts. (doc/Ps2pdf.htm)
+
+Documents the simplification of the pthreads code. (doc/Helpers.htm,
+doc/Make.htm)
+
+Adds a requirement to the license that modifications include the name and
+e-mail address of the author, and the date and purpose of the modification.
+(doc/Public.htm)
+
+Adds a link to the documentation for setdistillerparams. (doc/Ps2pdf.htm)
+
+</pre><h3><a name="5.97_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - On OpenVMS, the test for whether the bin and obj subdirectories
+already existed was incorrect. (openvms.mak, openvms.mmk)
+ - The recently updated Borland/Inprise makefile deleted some temp
+files prematurely. (bcwin32.mak)
+ - The dependencies for the Unix install-scripts and install-data
+targets were incorrect. (unixinst.mak)
+
+Updates the RPM spec files. (gs.rps, gs-fonts.rps, rpm-conf.dif)
+
+Adds support for compilation with Borland/Inprise C++Builder 3.
+(bcwin32.mak, winint.mak)
+
+Adds a note on font installation under Red Hat Linux 6. (doc/Install.htm)
+
+</pre><h3><a name="5.97_Utilities"></a>Utilities</h3><pre>
+
+Adds ps2pdf12 and ps2pdf13 scripts to select the PDF output level
+explicitly; makes ps2pdf a wrapper for ps2pdf12. (lib/ps2pdf,
+lib/ps2pdf.bat, lib/ps2pdf12, lib/ps2pdf12.bat, lib/ps2pdf13,
+lib/ps2pdf13.bat, lib/ps2pdfwr, lib/ps2pdfwr.bat)
+
+Updates the Windows install/setup program to display the Aladdin start menu
+folder on a successful install, so that the user gets some feedback that all
+went well. (dwinst.cpp, dwsetup.cpp)
+
+</pre><h3><a name="5.97_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The lj5{mono,gray} drivers didn't send the page size to the
+printer. (gdevpxut.h, gdevlj56.c, gdevpx.c, gdevpxut.c)
+ - The pxl drivers didn't handle out-of-range points properly.
+(gdevvec.c, gdevpx.c)
+ - The bmpa drivers didn't produce multi-page output files correctly
+-- all pages but the first were blank. (The bmp format is supposed to be
+single-page, but at least some readers handle multi-page files correctly.)
+(gdevbmpa.c)
+ - The code for writing embedded TrueType fonts was broken. (bug
+probably introduced in 5.9x) (gdevpsdt.c)
+
+Removes an unused variable. (gdevbmpa.c)
+
+</pre><h3><a name="5.97_Platforms"></a>Platforms</h3><pre>
+
+Replaces the 4 pthreads files, which included a dependence on the non-POSIX
+&lt;semaphore.h&gt;, with a single file that uses only pthreads procedures.
+(gp_psync.c, gp_posem.c [deleted], gp_pthr.c [deleted], gp_ptsem.c
+[deleted], gp_semon.c [deleted])
+
+</pre><h3><a name="5.97_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Whether or not to write the Widths array was implicit in the data
+structures rather than explicit, so it was sometimes written unnecessarily.
+(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - Fonts based on the 14 built-in fonts didn't set BaseFont to the
+name of the built-in font. (gdevpdff.c)
+ - The determination of whether a glyph was available was incorrect
+for embedded fonts, leading some glyphs to be turned into bitmaps
+unnecessarily. (gdevpdft.c)
+ - Apparently Acrobat Reader gets confused if different subsets of
+the same font have different FirstChar and LastChar values, so we have to
+write the full Widths array each time. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - A structure member wasn't initialized when processing pdfmark
+annotations, possibly causing a memory access error. (gdevpdfm.c)
+ - The typedef for gx_device_pdf had a typo. (gdevpdfx.h)
+ - Each embedded font subset had its own FontDescriptor and its own
+font data, confusing Acrobat Reader. Fixing this required sharing
+FontDescriptors among multiple fonts and making FontDescriptors
+pseudo-resources. (gdevpdff.h, gdevpdfx.h, gdevpdf.c, gdevpdff.c,
+gdevpdft.c, gdevpdfw.c)
+ - Incrementally defined embedded Type 1 fonts didn't write out
+correct Widths. (gdevpdff.c)
+ - PDF resources didn't consistently record the gs_id of the
+structure they represented, possibly causing resources to be duplicated
+unnecessarily. (gdevpdff.c, gdevpdfu.c)
+
+Reinstates PDF text output. (gdevpdf.c)
+
+Changes the default CompatibilityLevel in the pdfwrite device back to 1.3,
+since the ps2pdf scripts now make it easy to choose the PDF level.
+(gdevpdf.c)
+
+When possible, uses the widths obtained from the font, rather than the
+default implementation of text_process, to complete the text_process
+operation. This greatly speeds up the conversion process. (gdevpdft.c)
+
+Allows character remapping (but not reencoding) of TrueType fonts.
+(gdevpdft.c)
+
+Factors the definitions for cos objects and font-related objects into header
+files more thoroughly. (gdevpdff.h, gdevpdfo.h, gdevpdfx.h, gdevpdf.c,
+gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
+
+Makes the names of some structure elements correspond more directly to keys
+in PDF directories. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Splits off the font-writing code, since a source file was getting too big.
+(gdevpdff.h, gdevpdff.c, gdevpdfw.c)
+
+Adds CharSet information to embedded Type 1 font descriptors. (gdevpdfw.c)
+
+Makes all font names in the output unique, selected by static bool
+MAKE_FONT_NAMES_UNIQUE. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+Reinstates support for one special case of composite fonts (8/8 mapping with
+the high order byte always zero) that is used by the AdobePS4 Windows
+driver. (gdevpdft.c)
+
+Changes the assumption about the default encoding for embedded TrueType
+fonts from StandardEncoding to no known encoding. (gdevpdft.c)
+
+Changes FONT_EMBED_BASE14 to FONT_EMBED_STANDARD for greater
+descriptiveness. (gdevpdff.h, gdevpdff.c, gdevpdft.c)
+
+</pre><h3><a name="5.97_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The same-font test for Type 1 fonts didn't correctly identify
+re-encoded fonts with unchanged metrics. (zfont1.c)
+ - If a save level was split into multiple internal save objects,
+some changes could get undone before objects were finalized. (isave.c)
+ - When releasing all of memory, stable allocators weren't finalized.
+(isave.c)
+ - Some compilers gave annoying and needless warnings about integer
+overflow. (store.h)
+ - There was a signed/unsigned char * mismatch. (iccfont.c)
+
+Adds a debugging procedure. (idebug.h, idebug.c)
+
+Changes the Type 1 font seac_data procedure to match the new API.
+(zchar1.c)
+
+</pre><h3><a name="5.97_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The GC didn't know about the pointers to the tables for Indexed
+color spaces when banding, occasionally causing the tables to be written as
+garbage. This is the real fix for the problem discovered in 5.96.
+(gsiparam.h, gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxclpath.c)
+ - With 'async' drivers, multi-page files didn't render properly
+(they got a rangecheck error on every page after the first one).
+(gdevprna.c)
+ - Some compilers still complained about end-of-loop code not being
+reached. (gxpath2.c)
+ - The scaled font cache required that a font have a UID in order to
+be a candidate for caching. (gsfont.c)
+ - An obsolete check caused slight discrepancies between banded and
+non-banded output. (gxstroke.c)
+ - The glyph_outline procedure for TrueType fonts transformed the
+width by the scaling matrix twice. (gstype42.c)
+
+Removes some now-unnecessary extern_st declarations. (gdevbbox.c,
+gdevplnx.c, gximage3.c)
+
+Removes some initializations that read uninitialized locations and are
+logically unnecessary. (gsalloc.c, gscolor.c)
+
+Adds makefile rules for compiling the MD5 implementation. (lib.mak)
+
+Makes the seac_data of a Type 1 font return the glyph and/or the actual
+outline data. This is necessary because some Type 1 fonts don't have the
+accents in the same positions as StandardEncoding, but use seac anyway.
+(gxfont1.h)
+
+Changes the Type 1 font interpreter to match the new seac_data API.
+(gxtype1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.96"></a>Version 5.96 (beta) (11/12/99)</h2>
+
+<p>
+This is the next beta for 6.0. To meet a need of our commercial licensing
+partner for a PostScript LL3 release, we are releasing this fileset with all
+font handling in the PDF writer disabled, as well as high-level image
+banding. This is a temporary measure: we will reinstate PDF text in 5.97,
+and high-level image banding as soon as we can straighten out its memory
+management problems.
+
+<h3><a name="5.96_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - All Unix 'make' programs must now predefine MAKE as the name of
+the program.
+(Interpreter)
+ - zcolor_remap_one now returns o_push_estack rather than 0 in the
+case where it doesn't actually have to sample the procedure.
+(Library)
+ - Multi-plane halftones (when needed) are now used for all CMYK
+devices, not only if setcolorscreen was executed.
+ - Font implementors must now provide a same_font procedure.
+
+</pre><h3><a name="5.96_Documentation"></a>Documentation</h3><pre>
+
+Makes it clear that gsnup.ps is very simple and naive. (doc/Psfiles.htm,
+lib/gsnup.ps)
+
+Documents the new -Z_ switch. (doc/Use.htm)
+
+Documents that SYNC=nosync allows building on systems that don't support
+multi-threading. (doc/Make.htm)
+
+Adds documentation for building on Macintosh Rhapsody systems.
+(doc/Make.htm)
+
+Adds a reference to the new all-arch.mak file. (doc/Helpers.htm,
+doc/Make.htm)
+
+Notes that ps2pdf does preserve the color space for images.
+(doc/Ps2pdf.htm)
+
+Documents the new self-extracting archive for MS Windows. (doc/Install.htm,
+doc/Release.htm)
+
+Further improves the documentation of the PDF text machinery. (gdevpdfx.h)
+
+Reorganizes the build information for Unix. (doc/Make.htm)
+
+Adds information on building Ghostscript under BSDI. (doc/Make.htm)
+
+Notes that versions of zlib before 1.1.3 may cause an error on rare
+occasions. (zlib.mak)
+
+Fixes a few other minor problems. (doc/Current.htm, doc/Devices.htm,
+doc/DLL.htm, doc/Install.htm, doc/Language.htm, doc/Make.htm,
+doc/New-user.htm, doc/Ps2pdf.htm, doc/Source.htm, doc/Use.htm)
+
+</pre><h3><a name="5.96_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - dctd.dev and dcte.dev were defined in $(PSD), but referenced in
+$(GLD). (devs.mak, int.mak, lib.mak)
+ - pipe.dev was defined in $(GLD), but referenced in $(PSD).
+(bcwin32.mak, dvx-gcc.mak, msvc32.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak)
+ - XLIBDIRS was included in the linker command even if none of the
+X drivers were used. (devs.mak, dvx-tail.mak, ugcclib.mak, unixlink.mak)
+ - The OpenVMS makefile didn't create the obj and bin directories
+properly. (openvms.mak)
+ - 'make debug' and 'make pg' didn't work on Unix systems where the
+make program was named something other than make. (unix-end.mak)
+
+Introduces a new top-level makefile macro, STDLIBS, that is -lm for all
+reasonable platforms but null for Rhapsody. (dvx-gcc.mak, dvx-tail.mak,
+ugcclib.mak, unix-gcc.mak, unixansi.mak, unixlink.mak, unixtrad.mak)
+
+Adds Nelson Beebe's contributed multi-architecture Unix makefile.
+(all-arch.mak)
+
+Makes it theoretically possible in theory to build the new Windows
+install/uninstall program with the Borland compiler. However, since this
+requires Borland C++ 4.52 and we only have 4.5, this is disabled in
+bcwin32.mak. (bcwin32.mak, winint.mak)
+
+</pre><h3><a name="5.96_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The default for gsnup.ps was 3x2 landscape, rather than 2x2
+portrait. (lib/gsnup.ps)
+ - gslp.ps was broken (by the changes made to support gsnup.ps).
+(lib/gslp.ps)
+
+Adds a -link switch to genconf, to allow verbatim copying of commands into
+the linker command line. (genconf.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (dwinst.h,
+dwsetup.h, dwuninst.h, bench.c, dwuninst.cpp)
+
+Makes it possible to build the new Windows install/uninstall program with
+the Borland compiler. (dwinst.cpp, dwsetup.cpp, dwsetup.def, dwsetup.rc,
+dwuninst.cpp, dwuninst.def)
+
+</pre><h3><a name="5.96_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Embedded Type 1 fonts lacked some 'def' commands. (gdevpsd1.c)
+ - Multiple Master Font instances weren't written out correctly.
+(gdevpsd1.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (gdev8bcm.h,
+gdevht.h, gdevpccm.h, gdevpcl.h, gdevsvga.h, gdevx.h, gdev3852.c,
+gdev8510.c, gdevadmp.c, gdevcd8.c, gdevcif.c, gdevclj.c, gdevhl7x.c,
+gdevifno.c, gdevimgn.c, gdevl31s.c, gdevmeds.c, gdevmswn.c, gdevos2p.c,
+gdevpe.c, gdevpm.c, gdevsj48.c, gdevtknk.c, gdevupd.c, gdevwddb.c,
+gdevwpr2.c, gdevwprn.c)
+
+</pre><h3><a name="5.96_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The pthreads wrapper had a procedure type mismatch. We fixed this
+by making it allocate and free a wrapper object, as the Windows wrapper
+does. (gp_pthr.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (dwimg.h, dwmain.h,
+gsdll.h, gp_msio.c, gp_mswin.c)
+
+Removes an unnecessary #include &lt;semaphore.h&gt;. (gp_semon.c)
+
+Adds a module that implements semaphores using the pthreads mutex
+facilities, as an alternative to gp_posem.c. Unfortunately, using this
+module causes immediate crashes on both GNU/Linux and BSDI, and we don't know
+why. (Let us know if you figure it out.) (gp_ptsem.c)
+
+</pre><h3><a name="5.96_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - The character and word spacing weren't recognized as being reset
+by a PDF grestore. (gdevpdfx.h, gdevpdfu.c)
+ - Fonts that couldn't be embedded were always converted to bitmaps,
+rather than becoming candidates for non-embedded representation (if
+EmbedAllFonts is false and the font doesn't appear on the AlwaysEmbed list).
+(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - Stream-type Cos objects were written with no (0-length) data.
+(gdevpdfm.c)
+ - Reencoded base 14 fonts were not recognized as such, leading to
+excessive font embedding. (gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdft.c)
+ - Fonts were embedded by default even if EmbedAllFonts was false.
+(gdevpdft.c)
+
+Changes MaxSubsetPct to 35 to match Acrobat Distiller. (gdevpsdf.h)
+
+Adds some tracing output (-Z_). (gdevpdff.c, gdevpdft.c)
+
+Temporarily disables font handling in the PDF writer, to meet a need of our
+commercial licensing partner. All text will be converted to code-scrambled
+Type 3 bitmap fonts. (gdevpdf.c)
+
+</pre><h3><a name="5.96_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The sh operator caused an invalidaccess error for shadings that
+required a DataSource. (lib/pdf_draw.ps)
+ - The test for whether a Widget appearance was a Form or a
+collection of sub-appearances was incorrect, causing an /undefined error in
+the latter case. (lib/pdf_draw.ps)
+ - If the FontName in a Font descriptor differed from the BaseFont
+name in the Font object, the interpreter used the two inconsistently,
+sometimes causing the wrong font to be used. (lib/pdf_font.ps)
+ - ICCBased color spaces caused an error. (lib/pdf_draw.ps)
+
+Works around the fact that Acrobat Distiller produces files in which a
+Widget's Form appearance lacks Type and Subtype keys. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.96_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Failure in allocating the name table would cause a crash.
+(iname.c)
+ - Shadings with procedure-based filters didn't work.
+(lib/gs_ll3.ps, ifilter.h, zfileio.c, zfproc.c)
+ - Some compilers complained about arithmetic on an enum. (iparam.c)
+ - Setting a transfer or similar function to the identity function
+didn't set the cached values, so the setting didn't consistently take
+effect. (icolor.h, zcolor.c)
+ - If the C library's implementation of sprintf with a %g format ever
+produced a number with an exponent but no decimal point, a crash would
+occur. (iutil.c)
+ - The PageDeviceName page device parameter wasn't supported.
+(lib/gs_lev2.ps, lib/gs_setpd.ps)
+ - A public procedure wasn't declared extern if DEBUG wasn't set.
+(igc.h)
+ - Because of a typo, loading resources automatically from a file
+always failed. (bug introduced in 5.94) (lib/gs_res.ps)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (files.h, iastate.h,
+ibnum.h, ichar.h, ifilter.h, iimage.h, iimage2.h, iparam.h, isave.h,
+iscan.h, isstate.h, istream.h, iutil.h, opcheck.h, scanchar.h)
+
+Adds a font similarity testing procedure for Type 1/2/4 fonts. (zfont1.c)
+
+</pre><h3><a name="5.96_Streams"></a>Streams</h3><pre>
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (sbhc.h, sbtx.h,
+sbwbs.h, sdct.h, scfdgen.c, scfdtab.c, shcgen.h, siscale.h, sjpeg.h,
+slzwx.h, smtf.h, spdiffx.h, spngpx.h, srlx.h)
+
+</pre><h3><a name="5.96_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Making a transformed font inappropriately copied the font's
+notification list. (gsfont.c)
+ - Some compilers complained about end-of-loop code not being
+reached. (gxpath2.c)
+ - The first two arguments of scale_delta was swapped, causing
+anomalous output for certain Type 1 fonts with curves where the starting and
+ending points had the same X or Y coordinate. (gxhint3.c)
+ - Large smoothness values produced blocky output. (gxshade.c)
+ - When banding, in a region where a CMYK halftone had no K at all,
+the output was likely to be black rather than the correct color. (gxcht.c)
+ - Interpolated images with mirrored X scaling weren't mirrored.
+(gxiscale.c)
+ - Interpolated images were truncated. (gxiscale.c)
+ - Halftone caches could have a dangling pointer to a transfer map in
+the halftone order. (gxht.c)
+ - The next-character code returned for kshow was the same as the
+current character. (bug probably introduced in 5.86) (gstext.c)
+ - The GC didn't know about the pointers to the tables for Indexed
+color spaces when banding, occasionally causing the tables to be written as
+garbage. In the process of investigating this, we discovered that the GC
+didn't know about *any* of the pointers in the structures used to track
+banded images. ****** NOT FIXED, TOO MUCH RISK OF INTRODUCING FURTHER
+BUGS. ****** Instead, we disabled high-level image banding in this fileset.
+(gxclimag.c)
+
+Changes the name of a variable from ppc to ppcr, because an Apple compiler
+inappropriately defines the name ppc when compiling on a PowerPC.
+(gxshade6.c)
+
+Edits files to add missing $Id lines and module summary comments, and to
+delimit module summary comments from further material. (gdevbbox.h,
+gscoord.h, gscpixel.h, gsfname.h, gsfont.h, gsimage.h, gslib.h, gsmdebug.h,
+gspaint.h, gspath.h, gspath2.h, gxalloc.h, gxclipm.h, gxclpage.h,
+gxclpath.h, gxcmap.h, gxcoord.h, gxcpath.h, gxdda.h, gxdevmem.h, gxfcache.h,
+gxfont.h, gximage.h, gxiodev.h, gxpaint.h, gxpath.h, gxpcolor.h, gzacpath.h,
+gzcpath.h, gzht.h, gzpath.h, md5.h, gxdither.c, md5.c)
+
+Adds a prototype for debug_find_pointers. (gxalloc.h)
+
+Adds a font procedure for testing whether two fonts are the same in various
+ways. This is needed so that the PDF writer can do a reasonable job of
+identifying reencoded and renamed versions of the base 14 fonts. (gxfont.h,
+gsfont.c)
+
+Changes a macro to a procedure and improves some commenting. (gxhint3.c)
+
+Changes the halftoning code so that multi-plane halftones are always used on
+CMYK devices, even if only a single halftone is set (setscreen or
+HalftoneType 1). (gxcht.c, gxdither.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.95"></a>Version 5.95 (beta) (11/1/99)</h2>
+
+<p>
+There were several new problems in 5.94, some of them severe. We hope this
+beta candidate fixes them without introducing any new ones. It also fixes
+some minor problems not reported in 5.93.
+
+<p>
+We think we have finally found the right workarounds for Acrobat and
+specification problems so that pdfwrite output (with CompatibilityLevel
+either 1.2 or 1.3) both conforms as closely as possible to the published PDF
+specification and works with Acrobat Reader (3 or 4 respectively) for both
+displaying and printing.
+
+<p>
+NOTE: The default level of output from the pdfwrite device (ps2pdf) has been
+changed back to PDF 1.2 (Acrobat 3 compatible), because this is what the
+majority of users want. For PDF 1.3 output, use -dCompatibilityLevel=1.3.
+
+<p>
+Note: some post-6.0 code is included under an #ifdef POST60.
+
+<h3><a name="5.95_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The default CompatibilityLevel in the pdfwrite device (ps2pdf) is
+now 1.2 rather than 1.3.
+ - pdfwrite now discards information after the last showpage rather
+than producing an additional page.
+(Library)
+ - The is_monotonic procedure of a function now returns a result that
+indicates the direction of monotonicity of each value separately.
+ - The coordinate system used internally by the bbox device is now
+upright (lower left corner = (0,0) rather than upper left corner). (This
+should not make any difference to clients, who should always have been using
+default user space coordinate.)
+
+</pre><h3><a name="5.95_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - A couple of URLs were incorrect or out of date. (doc/Readme.htm,
+doc/Use.htm)
+ - There was a typo in a comment. (gxfont.h)
+ - An old bug had been fixed, but the documentation had not been
+updated to reflect this. (doc/Current.htm)
+
+Documents the requirement to change SYNC from posync to fbsdsync on FreeBSD.
+(doc/Make.htm)
+
+Adds references to Adobe's on-line documentation. (doc/Readme.htm)
+
+Updates the release procedure to mention adding .ps files.
+(doc/Release.htm)
+
+Adds documentation for the bbox device. (doc/Use.htm)
+
+Documents the new gsnup.ps utility. (doc/Psfiles.htm)
+
+Modifies the gslp utility for greater page independence and smaller output
+files. (lib/gslp.ps)
+
+Documents the fact that the default output from pdfwrite is PDF 1.2.
+(doc/Ps2pdf.htm)
+
+Adds Inprise (as the new name of the Borland tools) in a few places.
+(doc/Make.htm)
+
+Updates the release documentation slightly. (doc/Release.htm)
+
+</pre><h3><a name="5.95_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - FreeBSD uses a different name for the pthreads implementation.
+(lib.mak, unixansi.mak, unix-gcc.mak, unixtrad.mak)
+
+Encapsulates gsnogc.$(OBJ) in a gsnogc.dev module, to make it more sharable.
+(lib.mak)
+
+</pre><h3><a name="5.95_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - guilsinglleft and guilsinglright were misspelled.
+(lib/ps2ascii.ps)
+ - The ps2pdf script didn't handle the -I switch correctly. We fixed
+this by including the options twice, both before and after the automatically
+supplied options. (lib/ps2pdf, lib/ps2pdf.bat)
+
+Adds an install/uninstall program for Windows 9x, including optional
+generation of a self-extracting executable, written by Ghostgum Software Pty
+Ltd. This program is not actually used yet. (msvc32.mak, winint.mak,
+dwinst.*, dwsetup.*, dwuninst.*)
+
+Adds a new environment parameter to arch.h, ARCH_DIV_NEG_POS_TRUNCATES.
+(genarch.c)
+
+Adds a utility for N-up printing. (unixinst.mak, lib/gsnup.ps)
+
+Changes ps2pdf so that if showpage has ever been executed, any partial page
+after the last showpage is discarded rather than made into an additional
+page. This is consistent with printers, and correctly handles BeginPage
+procedures that draw backgrounds. (gdevpdf.c)
+
+</pre><h3><a name="5.95_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The TIFF drivers could produce incorrectly sorted tag tables.
+(gdevtifs.c)
+ - The OS/2 PM driver had an incorrect #include. (gdevpm.c)
+ - Embedded Type 1 fonts that used seac didn't automatically include
+the constituent glyphs. (gdevpsd1.c)
+ - Embedded Type 1 fonts wrote the wrong font name in the first
+(comment) line. (gdevpsd1.c)
+ - Deleting elements from the AlwaysEmbed or NeverEmbed list could
+cause a memory access error. (gdevpsdp.c)
+ - The string and string array members of psdf_distiller_params were
+omitted from the GC descriptor, causing memory corruption. (gdevpsdf.h,
+gdevpsdf.c, gdevpsdp.c)
+ - When using "async" printing, the buffer device was destroyed too
+soon. (fix from Artifex) (gdevbmpa.c)
+
+Adds (partial) parsing for the new Acrobat Distiller 4.0 parameters, under
+#ifdef POST60. The put_params code isn't finished. (gdevpsdf.h,
+gdevpsdp.c)
+
+</pre><h3><a name="5.95_Platforms"></a>Platforms</h3><pre>
+
+Changes product to productfamily as the Windows registry key. (gp_wgetv.c)
+
+</pre><h3><a name="5.95_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - guilsinglleft and guilsinglright were misspelled in
+MacRomanEncoding and MacGlyphEncoding. (lib/gs_mro_e.ps)
+ - plusminus was misspelled in MacGlyphEncoding. (lib/gs_mgl_e.ps)
+ - braceleftbt was misspelled as bracelefttbt in the Symbol font.
+(fonts/s050000l.pfb) ****** NOT DISTRIBUTED YET ******
+ - euro was incorrectly included at position 240 in the Symbol
+encoding. (lib/gs_sym_e.ps)
+ - Zcaron and zcaron weren't included in WinAnsiEncoding (this is new
+for PDF 1.3). (lib/gs_wan_e.ps)
+ - Euro replaced currency in MacRomanEncoding. We had to change this
+back, even though the Mac does use code 219 for Euro, for compatibility with
+Adobe documentation. (lib/gs_mro_e.ps)
+ - TrueType fonts with more glyphencoding entries than glyphs could
+cause errors. (lib/gs_ttf.ps)
+
+Adds the Adobe Central European encoding. (lib/gs_ce_e.ps, unixinst.mak)
+
+Adds more tracing to the TrueType font loader. (lib/gs_ttf.ps)
+
+Adds the remaining PDF Encodings to the predefined set. (lib/gs_lgo_e.ps,
+lib/gs_lgx_e.ps, lib/gs_mex_e.ps, lib/gs_mgl_e.ps, lib/gs_mro_e.ps)
+
+</pre><h3><a name="5.95_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - When printing an error message, a pointer/length string was
+incorrectly treated as a C string. (gdevpdfm.c)
+ - The treatment of text was completely broken by "improvements" made
+in 5.94. We think we've put things back to a state that at least isn't any
+worse than 5.93. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - The test for whether a glyph was present in a glyph set was wrong,
+possibly causing an infinite loop. (This never happened, because the code
+was masked by other bugs.) (gdevpdft.c)
+ - Testing the PDF compatibility level didn't work correctly, because
+of float/double mismatches. (gdevpdfx.h, gdevpdfp.c)
+ - Embedded TrueType fonts were still written in binary even if
+ASCII85EncodePages was true. (gdevpdff.c)
+ - Embedded TrueType subsets didn't use Flags to indicate that they
+had a non-standard cmap. (gdevpdff.c)
+ - Contrary to the obvious reading of the PDF specification, it
+appears that the default encoding for embedded fonts, if no BaseEncoding is
+specified, is StandardEncoding, *not* the built-in encoding of the font
+itself; and that any differences from StandardEncoding must be listed
+explicitly. (gdevpdft.c)
+
+Adds parsing for the new Acrobat Distiller 4.0 parameters, under #ifdef
+POST60. (lib/gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
+
+Ensures that the Mac encodings are loaded when writing PDF. (devs.mak)
+
+Works around an Acrobat 3 bug: The only cmap table that works in TrueType
+fonts is format 0, which can only reference glyphs up to 255. Consequently,
+a TrueType font whose Encoding references glyphs above 255 cannot be
+embedded (as a font). (gdevpdft.c)
+
+Changes the default CompatibilityLevel from 1.3 to 1.2. The majority of
+users are running Acrobat 3. (gdevpdf.c)
+
+</pre><h3><a name="5.95_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The T* operator was changed incorrectly to use the negative of the
+leading value. (lib/pdf_ops.ps)
+ - The Tz value scaled the X offset for Td and TD (which it
+shouldn't), occasionally causing strings to be displaced horizontally.
+(lib/pdf_ops.ps)
+ - sc[n]/SC[N] didn't work with 1-value color spaces, because the
+code incorrectly assumed the operand stack contained only the values on the
+PDF operand stack. (bug introduced by Annotation rendering in 5.94)
+(lib/pdf_base.ps, lib/pdf_draw.ps, lib/pdf_main.ps, lib/pdf_ops.ps)
+ - The HTP key in the graphics state caused an error if the
+interpreter didn't implement sethalftonephase. (lib/pdf_draw.ps)
+ - If there was no Names tree, invalid links (string Dest values)
+caused an error instead of being ignored. (lib/pdf_main.ps)
+ - An annotation with a Thread action caused an error.
+(lib/pdf_main.ps)
+
+Adds table entries, but not implementation, for the op and OPM keys in
+ExtGState dictionaries. (lib/pdf_draw.ps)
+
+Works around a bug in Adobe Acrobat Distiller 4.0 for Windows: it uses the
+value /Default with the BG, UCR, and TR keys in an ExtGState.
+(lib/pdf_draw.ps, lib/pdf_main.ps)
+
+Adds additional tracing for Functions. (lib/pdf_draw.ps)
+
+Implements the BG2, UCR2, and TR2 keys in ExtGStates. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.95_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - There was a (harmless) signed/unsigned mismatch. (imainarg.c)
+ - If build_gs_simple_font had to add any elements to the font
+dictionary, a temporary pointer to the CharStrings could become invalid,
+causing crashes or confusion. (zbfont.c)
+ - The check for known Encodings included some pseudo-Encodings.
+(zbfont.c)
+ - The error object wasn't reset to null before each call of the
+interpreter, possibly causing the garbage collector to mark it even if it no
+longer existed. (interp.c)
+
+Adds productfamily as a new predefined name, for the benefit of the Windows
+registry. (iinit.c)
+
+Changes the default color smoothness to 0.02 to match Adobe RIPs.
+(lib/gs_ll3.ps)
+
+Adds using the glyph_info procedure for Type 1 fonts, needed to fix the
+problem with seac and Type 1 embedded fonts. (zfont1.c)
+
+</pre><h3><a name="5.95_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Memory devices that may execute RasterOp must be initialized with
+an allocator (for temporary bitmaps), but sometimes they weren't.
+(gdevdrop.c)
+ - The computation of colors_used for images could cause arithmetic
+exceptions and/or produce incorrect results. (fix from Artifex)
+(gxclimag.c)
+ - A dead variable was getting incremented in a loop. (Small
+performance bug only.) (gsfunc0.c)
+ - The cached is_monotonic value in a function head was incorrectly
+declared bool rather than int. (gsfunc.h)
+ - The clip operators didn't always recognize empty clipping regions:
+sometimes they retained a 1-pixel-wide region. (gxcpath.c)
+ - The bbox device could get into a recursion loop if it had a
+non-null target with a non-standard fill_path procedure. (gdevbbox.c)
+ - The procedure u32 was defined in two places. (gsutil.h,
+gdevpsdt.c, gsutil.c, gstype42.c)
+ - The DataSource member of a sampled function wasn't reported to the
+garbage collector. (gsfunc0.h, gsfunc0.c) ****** MUST DO THE SAME FOR
+SHADINGS ******
+ - All name-type parameters (device and other) were converted as
+strings rather than names. (gsparam.c)
+ - Using a mask Pattern with an anti-aliased device could make
+invalid memory accesses and cause a crash. (gxpcmap.c)
+ - math_.h was included unnecessarily. (gxfill.c, gxhint3.c)
+ - In a few places, (fixed-point) coordinates were truncated towards
+zero rather than taking the floor. (It's likely that this had no effect.)
+(gxfill.c, gxpcopy.c)
+ - The join and cap values weren't taken into account when dividing a
+stroked path into bands, possibly causing some caps or joins to be dropped
+if they fell exactly at band boundaries. (gxclpath.c)
+ - An arithmetic overflow in gx_adjust_if_empty could produce
+incorrect output. (gxfill.c)
+ - Because the bbox device used a Y-inverted coordinate system, it
+could produce incorrect results for out-of-bounds coordinates. (gdevbbox.c)
+ - The default font_info procedure didn't compute MISSING_WIDTH if
+IS_FIXED_WIDTH wasn't requested. (gsfont.c)
+ - space_params wasn't managed properly, causing problems if the
+device altered the default values. (fix from Artifex) (gdevprn.c)
+ - The Macintosh cmap table for embedded TrueType fonts was written
+incorrectly. (gdevpsdt.c)
+ - The OS/2 table for embedded TrueType fonts could be inconsistent
+with the cmap table. (gdevpsdt.c)
+ - In embedded subset TrueType fonts, loca entries beyond the last
+occupied glyph contained garbage. (gdevpsdt.c)
+ - Embedded TrueType subsets didn't include the components of
+composite glyphs. (gdevpsdf.h, gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
+
+Changes the is_monotonic procedure of Functions so that it reports the
+direction of monotonicity of each value independently. This allows a larger
+class of functions to be detected as monotonic. (gsfunc.h, gsfunc0.c,
+gsfunc3.c)
+
+Works around a bug in Fontographer that causes it to produce (or at least
+allow users to produce) Type 1 fonts using seac in which the side bearing of
+the accented character differs from the side bearing of the base glyph. The
+published Type 1 specification and Adobe's engineers agree that such fonts
+are invalid, but the authors of Fontographer don't seem to care (this is the
+4th Fontographer bug that we have had to patch around so far). (gxtype1.h,
+gstype1.c, gxtype1.c)
+
+Adds gs_productfamily, for the benefit of the Windows registry. (gscdefs.h,
+gscdef.c)
+
+Adds a glyph_info procedure for Type 1 fonts, needed to fix the problem with
+seac and Type 1 embedded fonts. (gxfont1.h, gxtype1.c)
+
+Adds a gs_resize_struct_array procedure that either allocates or resizes an
+object. We have wanted this for quite a while. (gsmemory.h, gsmemory.c)
+
+Adds the remaining PDF Encodings to the predefined set. Also adds string
+names for the "real" encodings. (gsccode.h)
+
+Adjusts the format of embedded TrueType fonts to be closer to that produced
+by Acrobat Distiller, in the hope of making Acrobat Reader accept them.
+(gdevpsdf.h, gdevpsdt.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.94"></a>Version 5.94 (beta) (9/30/99)</h2>
+
+<p>
+This is (intended to be) the last beta candidate for the 6.0 release. Most
+changes other than added documentation are bug fixes. In order to address a
+last-minute problem report, we implemented a subset of Annotation rendering
+for PDF files.
+
+<p>
+At the request of the Free Software Foundation, we removed support for GNU
+readline from the Aladdin Ghostscript fileset. See <a
+href="Make.htm#GNU_readline">here</a> for more information.
+
+<p>
+We suspect that Acrobat's bugs and limitations still prevent embedded
+TrueType fonts in files created by the pdfwrite device from working
+properly, but we have neither the time nor the means to test this properly.
+
+<h3><a name="5.94_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - For OpenVMS with MMK or MMS, the third-party libraries are now
+located in [.&lt;lib&gt;] rather than [-.&lt;lib&gt;].
+ - The OpenVMS makefiles now select the same set of devices as the
+Unix makefiles.
+ - The MS Windows and MS-DOS default installation directory is now
+c:\Aladdin\gs#.# rather than c:\gs.
+ - All top-level makefiles now need a definition of BUILD_TIME_GS.
+(Drivers)
+ - The cljet5 driver is renamed cljet5pr; there is a new cljet5
+driver that doesn't attempt (and fail) to handle page rotation.
+(Interpreter)
+ - .getiodevice may return null.
+(Library)
+ - IODevices may now have a null name.
+
+</pre><h3><a name="5.94_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The documentation of font searching was still wrong in both
+places. (doc/Fonts.htm, doc/Use.htm)
+
+Notes that certain CodeWarrior code generation options produce incorrect
+code. (doc/Make.htm)
+
+Removes an inaccurate and obsolete comment. (lib/pdf_font.ps)
+
+Notes that newer versions of the SGI compiler use a different switch for
+setting the optimization limit. (doc/Make.htm)
+
+Notes that there may be code generation bugs in MSVC5 and later.
+(doc/Make.htm)
+
+Documents the new Fontmap.SGI file. (doc/Use.htm)
+
+Updates the documentation on installing Ghostscript on MS Windows.
+(doc/Install.htm)
+
+Documents the removal of the GNU readline interface. (doc/Current.htm,
+doc/Make.htm)
+
+</pre><h3><a name="5.94_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The instcopy script, supposed to handle incompatibilities between
+Unix `install' commands, didn't work. (instcopy, unixinst.mak)
+ - The Windows makefiles had an extra occurrence of `.' at the
+beginning of the default search path. (bcwin32.mak, msvc32.mak,
+msvclib.mak, watc*.mak)
+ - The OpenVMS makefile didn't automatically create the bin and obj
+directories if needed. (openvms.mak)
+
+Changes the OpenVMS MMK/MMS makefile to expect the third-party libraries in
+a subdirectory of the current directory, rather than a subdirectory of the
+parent. This makes it compatible with all the other makefiles.
+(openvms.mmk)
+
+Changes the OpenVMS makefiles to select the same set of devices as the Unix
+makefiles. (openvms.mak, openvms.mmk, unixansi.mak)
+
+Changes the Windows and OS/2 default search paths to match the new
+convention of installation rooted at c:\Aladdin. (bcwin32.mak, msvc32.mak,
+msvclib.mak, os2.mak, watc.mak, watclib.mak, watcw32.mak)
+
+</pre><h3><a name="5.94_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The Type 1/2 CharString printer didn't handle undefined opcodes
+correctly. (lib/type1ops.ps)
+ - There was no Unix script for pf2afm. (lib/pf2afm)
+ - The Type 1/2 font printing utilities didn't default lenIV to -1
+for Type 2, and didn't handle lenIV = -1 correctly in some places.
+(lib/type1ops.ps)
+ - The font2c utility used the version of font2c.ps from whatever
+existing Ghostscript executable was in the search path. Fixing this
+required adding a new parameter in all top-level makefiles, BUILD_TIME_GS.
+(cfonts.mak, bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak, openvms.mmk,
+os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watcw32.mak)
+ - The pfbtopfa usage message was incorrect. (lib/pfbtopfa.ps)
+
+</pre><h3><a name="5.94_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The pswrite driver didn't reset the clipping path when writing
+low-level images, possibly causing output to be clipped incorrectly.
+(gdevps.c)
+ - The PNG drivers implicitly declared png_init_io. Fixing this is
+only possible in libpng versions 1.0.3 and later. (gdevpng.c)
+ - The cljet5 driver (now cljet5pr) set rotated = true if the page
+was rotated, but didn't set it to false if the page wasn't rotated.
+(gdevclj.c)
+ - Embedded Type 1 fonts didn't include any FontInfo elements.
+(gdevpsd1.c)
+ - Specifying the DCTEncode filter for compressing images caused a
+crash. This problem is hard to fix correctly because of the complicated
+initialization requirements of the JPEG encoder. We patched around it by
+substituting FlateEncode (when available) for DCTEncode. (gdevpsdi.c)
+
+Renames the cljet5 driver, which has special (and incorrect) hacks to handle
+page rotation for the PCL interpreter, as cljet5pr; adds a new cljet5 driver
+without the hacks. (gdevclj.c)
+
+</pre><h3><a name="5.94_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
+up as an instance of the IODevice resource category, causing problems.
+(gp_msio.c, gp_os2.c)
+
+Adds a set of XBM/XPM icons in 4 sizes, contributed by Gintautas Grigelionis
+(eragigr@ki.ericsson.se). (lib/gs*.xbm, lib/gs*.xpm, unixinst.mak)
+
+Brings the Windows and OS/2 code up to date, fixing some minor problems.
+(gdevpm.c, gp_os2.c, gsos2.rc, gspmdrv.rc, os2.mak, pcwin.mak)
+
+</pre><h3><a name="5.94_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - The font directory scanner (FONTPATH) didn't recognize TrueType
+fonts tagged as 'true' rather than 0x00010000. (lib/gs_ttf.ps)
+
+Changes the TrueType font loader to use ISOLatin1Encoding for constructing
+the CharStrings if there is a Microsoft Unicode cmap and no glyph names in
+the post table. This seems like a hack, but we aren't sure what the right
+approach would be. (lib/gs_ttf.ps)
+
+Adds a Fontmap for SGI IRIX. This just comments out those fonts that are
+provided by DPS. (lib/Fontmap.SGI)
+
+</pre><h3><a name="5.94_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Writing Patterns could cause a memory access error. (bug
+introduced recently) (gdevpdfi.c)
+ - Filling with a pattern didn't reset the clipping path, possibly
+causing output to be clipped incorrectly. (gdevpdfi.c)
+ - Patterns weren't scaled correctly. (gdevpdfi.c)
+ - The data for large Patterns could exceed Acrobat Reader's limit on
+the length of a string. (gdevpdfi.c)
+ - copy_color did an extra gsave and concat. (gdevpdfi.c)
+ - Repeated color images weren't detected (performance bug only).
+(gdevpdfi.c)
+ - Names including control characters or spaces produced invalid
+output. (gdevpdfx.h, gdevpdfu.c)
+ - A matrix multiply was in the wrong order, causing fonts with
+non-zero translation in the FontMatrix to render at incorrect coordinates
+(sometimes off the page).
+ - If a font had one of the 14 standard names but had some characters
+defined by PostScript procedures, the output file would be invalid.
+(gdevpdft.c)
+ - The graphics state line parameters were kept in two different
+copies, causing bookkeeping errors. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c,
+gdevpdfu.c)
+ - If a page's BeginPage procedure did anything other than erase the
+page to white, the resulting PDF file was invalid. (gdevpdf.c)
+ - Articles with the same title weren't merged properly.
+(gdevpdfm.c)
+ - The Threads element of the catalog wasn't an indirect object.
+(gdevpdf.c)
+ - Thread actions incorrectly converted the destination (thread
+title) to a name, rather than leaving it as a string. (gdevpdfm.c)
+ - Fonts with the same name as the built-in ones, but not the
+standard definitions, produced possibly incorrect output. (gdevpdff.c)
+ - The writer didn't recognize attempts to use Encodings with the
+standard fonts that mentioned characters not present in the font's glyph
+set. (gdevpdft.c)
+
+Ensures that the WinAnsiEncoding is loaded when writing PDF. (devs.mak)
+
+</pre><h3><a name="5.94_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The default (identity) CMap didn't map CID 0 to glyph 0.
+(pdf_fonts.ps)
+ - TrueType fonts with an explicit Encoding didn't work properly.
+(lib/gs_ttf.ps)
+ - If an embedded Type 1 font executed definefont more than once,
+the wrong thing would happen. (lib/pdf_font.ps)
+ - The T* operator used the negative of the leading value.
+(lib/pdf_ops.ps)
+
+Implements a subset of Annotation rendering: only Widget annotations, only
+Normal appearance, only S and D borders, no rounded-corner borders. We did
+this at the very last minute before the release, in order to respond to a
+bug report, and it probably has some bugs. (lib/pdf_draw.ps,
+lib/pdf_main.ps)
+
+</pre><h3><a name="5.94_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - If an input buffer boundary fell at exactly the wrong place, an
+image whose input was coming from a stream could fail to read the stream EOD
+marker. (This is quite an old bug.) (zimage.c)
+ - On MS Windows and OS/2 systems, the wstdio pseudo-IODevice showed
+up as an instance of the IODevice resource category, causing problems.
+(lib/gs_res.ps, ziodev.c)
+ - errorinfo in $error was undefined, rather than null, initially and
+after errors that didn't set it deliberately. (lib/gs_init.ps)
+ - The InkParams resource category was defined even in systems that
+didn't support in-RIP trapping. (lib/gs_ll3.ps, lib/gs_res.ps,
+lib/gs_trap.ps)
+ - CID fonts with 0-length data caused an error. (lib/gs_cidfn.ps)
+ - Type 10 halftone dictionaries were broken -- perhaps they never
+had worked. (lib/gs_ll3.ps)
+
+Makes FontInfo entries available through the extended font API, needed to
+allow embedded Type 1 fonts to include those entries. (zfont1.c)
+
+Makes it possible to determine whether the current file is a resource file,
+needed to allow distinguishing between built-in and input-embedded fonts.
+(lib/gs_ccfnt.ps, lib/gs_fonts.ps, lib/gs_init.ps, lib/gs_res.ps,
+lib/gs_type1.ps, zfont.c)
+
+Moves support for GNU readline from the main Ghostscript fileset to the
+GNU-specific fileset. (unix-gcc.mak, int.mak, gp_gnrdl.c =>
+src/gnu/gp_gnrdl.c, gnu/src/gnudevs.mak)
+
+</pre><h3><a name="5.94_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The CCITTFaxDecode filter didn't correctly handle the case where
+the last code of a 1-D row was a black code and occurred less than 7 or 8
+bits before the end of the input stream. (We thought we fixed this in 5.86,
+but we missed one case.) (scfd.c)
+ - If an input buffer boundary fell at exactly the wrong place, an
+image whose input was coming from a stream could fail to read the stream EOD
+marker. (This is quite an old bug.) Fixing this involved a possibly risky
+change to the definition of sbuf_min_left and the already fragile logic in
+sreadbuf: the fix does solve this problem, but we aren't at all certain it
+didn't introduce new ones. (stream.h, stream.c)
+
+</pre><h3><a name="5.94_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The default implementation of copy_tile didn't pass the bitmap id
+for complete tiles, missing potential optimizations (performance bug only).
+(gdevdbit.c)
+ - The patch edges of ShadingType 7 shadings were ordered
+incorrectly, producing incorrect output in some cases where the surface
+folds over itself. (gxshade6.c)
+ - Flushing internal buffers when rendering an image didn't clip the
+flushed data, producing incorrect output. (gxidata.c)
+ - Non-zero data_x values for banded images produced incorrect band
+list data. (It's astounding that this problem hasn't shown up before.)
+(gxclimag.c)
+ - Banded images rotated by 90 degrees could produce "seams" or
+garbage if they crossed band boundaries. (This is at least the third time
+we have "fixed" this problem.) (gxclimag.c, gxifast.c)
+ - Circles or ellipses defined by pairs of 180-degree arcs produced
+incorrect output when banding. (gxclpath.c, gxclrast.c)
+ - setgray et al simply cleared the Pattern pointer in the client
+color rather than adjusting its reference count. (gscolor.c, gscolor1.c)
+ - The saved graphics state for bitmap/pixmap patterns contained a
+reference to the Pattern color, causing Patterns to be retained when they
+shouldn't be and causing unwanted recursion when freeing them. (gsptype1.c)
+ - Patterns containing halftoned CMYK colors rendered as all black.
+(bug probably introduced in 5.6x) (gxcht.c)
+ - Because of a typo, CMYK halftoning with only a single plane could
+put too much yellow into the output. This appears to be quite an old bug.
+(gxdither.c)
+ - The error code from running out of band list memory wasn't
+propagated if the condition was detected in cmd_put_drawing_color, causing
+low-memory recovery not to be invoked. (gxclpath.c)
+ - (Same error code problem) in clist_change_tile. (gxclbits.c)
+
+Adds more font attributes to the set available through a standard API.
+(gxfont.h)
+
+Adds more statistics to the filling algorithm. (gxfill.c)
+
+Adds an is_resource flag to fonts, to indicate that they originated from a
+resource rather than being embedded in an input file. (gxfont.h, gsfont.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.93"></a>Version 5.93 (beta) (9/11/99)</h2>
+
+<p>
+This is the next candidate for the 6.0 release. As with 5.92, all changes
+other than added documentation are bug fixes.
+
+<h3><a name="5.93_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Every stream whose state includes any GC-traceable pointers must
+now have a set_defaults procedure that clears those pointers.
+
+</pre><h3><a name="5.93_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - There was an extra /ul tag. (doc/Release.htm)
+ - Fontmap.GS wasn't mentioned as needing to be installed.
+(doc/Install.htm)
+ - Some documentation for the handling of seac was incorrect.
+(gxtype1.c)
+
+Removes references to installbsd, which are no longer relevant.
+(doc/Install.htm)
+
+Updates the information on building with NeXTSTEP. (doc/Make.htm)
+
+</pre><h3><a name="5.93_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The install command had unpredictably different syntax from one
+"standard" Unix system to another, causing `make install' to fail. We
+replaced the install command with our own script. (instcopy, dvx-gcc.mak,
+unix-gcc.mak, unixansi.mak, unixtrad.mak)
+
+</pre><h3><a name="5.93_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - pcharstr.ps loaded type1ops.ps with run rather than runlibfile,
+causing an error. (lib/pcharstr.ps)
+
+</pre><h3><a name="5.93_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Attempting to embed a font whose Encoding included characters not
+present in the font produced invalid output. (gdevpsd1.c)
+ - Allocating a stream state didn't (automatically) clear all its
+internal pointers, possibly causing GC memory access errors. (gdevpsds.c)
+ - An #include of string_.h should have been memory_.h. (gdevpsdf.c)
+
+Disables compression for very small images. (gdevpsdi.c)
+
+</pre><h3><a name="5.93_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - Compiling gp_msio with MSVC's /MD switch caused a compile-time
+error. (gp_msio.c)
+
+</pre><h3><a name="5.93_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - A bookkeeping object was allocated with the wrong allocator,
+possibly causing access errors or garbage output. (gdevpdfu.c)
+ - Certain Patterns weren't treated as such, leading to very large
+output files. (gdevpdfi.c)
+ - If one of the base 14 fonts had a non-standard FontMatrix, the
+output disregarded this fact. This could cause double obliquing.
+(gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+ - Articles never got an object ID assigned. (bug introduced in
+5.91) (gdevpdfm.c)
+
+</pre><h3><a name="5.93_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Changes the PDF interpreter to allow abbreviated filter names like /Fl for
+all streams, not just in-line images. This directly contradicts the
+published PDF specification, but Acrobat Reader allows it.
+(lib/pdf_base.ps)
+
+</pre><h3><a name="5.93_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Compiled fonts were broken by the introduction of i_ctx_p.
+(lib/font2c.ps, ccfont.h, iccfont.c)
+ - Allocating a stream state didn't (automatically) clear all its
+internal pointers, possibly causing GC memory access errors. (zfproc.c)
+
+</pre><h3><a name="5.93_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - Allocating a stream state didn't (automatically) clear all its
+internal pointers, possibly causing GC memory access errors. (scfx.h,
+slzwx.h, spngpx.h, strimpl.h, sbwbs.c, sdctc.c, seexec.c, sfilter1.c,
+siscale.c, szlibc.c)
+ - The PNG predictor streams could fail to process some data at the
+end of the input. (spngp.c)
+
+</pre><h3><a name="5.93_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some obsolete definitions for Turbo C could produce references to
+an undefined procedure (setmem) at link time. (memory_.h, string_.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.92"></a>Version 5.92 (beta) (9/2/99)</h2>
+
+<p>
+This is the next candidate for the 6.0 release. All changes other than
+added documentation are bug fixes.
+
+<h3><a name="5.92_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The News for 5.91 didn't include a summary. (doc/News.htm)
+ - The documentation for Microsoft platforms didn't mention that you
+must add the Ghostscript bin and lib directories to the PATH. (doc/Use.htm)
+
+Adds a file describing Aladdin's process for building, testing, and
+releasing Ghostscript. (doc/Readme.htm, doc/Release.htm)
+
+</pre><h3><a name="5.92_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - Fontmap.GS is now required, but wasn't installed. (unixinst.mak)
+ - A couple of documentation files weren't installed. (unixinst.mak)
+
+</pre><h3><a name="5.92_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The ps2pdf script for MS Windows used the wrong name for the
+executable. (lib/ps2pdf.bat)
+
+</pre><h3><a name="5.92_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - An uninitialized variable annoyed some compilers. (gdevpsdt.c)
+ - The PostScript-writing driver used the wrong allocator, causing
+possible memory access errors. (gdevps.c)
+ - The PostScript-writing driver didn't clear a pointer, causing
+possible GC errors. (gdevps.c)
+ - The PostScript-writing driver didn't have a correct GC descriptor,
+causing pointers to be corrupted. (gdevpsdf.h, gdevps.c, gdevpsdf.c)
+ - Embedded Type 1 fonts unnecessarily filled individual Encoding
+slots with /.notdef. (gdevpsd1.c)
+ - A large constant produced warnings on some compilers. (gdevpsdt.c)
+
+</pre><h3><a name="5.92_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Once again, gcc didn't complain about an ANSI-illegal extra
+semicolon in a declaration list. (gdevpdfo.h)
+ - Adds a cast to work around the fact that some compilers declare
+the return type of memchr as char * rather than void *. (gdevpdfr.c)
+ - The bookkeeping for whether a font had been written and freed was
+inverted, causing some fonts to be written many times and other fonts not to
+be written at all. (gdevpdf.c)
+
+</pre><h3><a name="5.92_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - More places needed workarounds for the alignment aliasing gcc bug.
+The bug only occurs if a pointer variable is dereferenced through a cast to
+a stricter alignment and then dereferenced later in its original form, so it
+doesn't affect very many places. (igc.c, igcref.c, isave.c)
+
+</pre><h3><a name="5.92_Streams"></a>Streams</h3><pre>
+
+Makes the stream GC descriptor public for subclassing. (stream.h, stream.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.91"></a>Version 5.91 (beta) (8/30/99)</h2>
+
+<p>
+This is the next beta for 6.0. It includes a major rewrite of the parts of
+the PDF writer that deal with resources and pdfmarks, as well as the usual
+bug fixes. There are still problems with embedded fonts, both TrueType
+(which sometimes don't show up at all) and Type 1 (which sometimes confuse
+Acrobat Reader 3).
+
+<h3><a name="5.91_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - An HTML tag was misplaced in the News file. (doc/News.htm)
+
+Notes that the Solaris FONTPATH scanning problem may be fixed.
+(doc/Use.htm)
+
+</pre><h3><a name="5.91_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - Many of the margin and width computations in ps2epsi.ps (not
+written by Aladdin) were wrong -- off by 1. It's only because the bugs
+masked each other or cancelled each other out that the code didn't produce
+errors more of the time. (lib/ps2epsi.ps)
+
+</pre><h3><a name="5.91_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Font subset glyphs weren't sorted early enough, causing Type 1
+embedded fonts to be written with inconsistent lengths. (gdevpsd1.c)
+
+Changes the BMP drivers so that they set the resolution in the BMP header
+rather than leaving it at 0. This solves some problems reported by users,
+but may cause others. (gdevbmpc.c)
+
+</pre><h3><a name="5.91_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - A change made in 5.90 was incorrect (we couldn't test it, because
+MS Windows and OS/2 systems can't be used over a network). (gp_msio.c,
+gp_os2.c)
+
+Adds some conditionalization to work around a bug in some recent versions of
+gcc/egcs. (stdpre.h, interp.c)
+
+</pre><h3><a name="5.91_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - If the extension of a font file name on GS_FONTPATH included any
+upper-case characters, the font would not be found. (lib/gs_fonts.ps)
+
+Allows fontmaps to contain &lt;string&gt; run or .runlibfile, to get rid of the
+Fontmap -&gt; Fontmap.GS link that VMS can't handle. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.91_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes problems:
+ - Very long arguments for pdfmark caused an ioerror, because the
+buffer used for converting them was fixed-length. (lib/gs_pdfwr.ps)
+ - pdfmarks couldn't refer to objects that hadn't been defined yet.
+(gdevpdfx.h, gdevpdfo.c)
+ - When a DOCVIEW pdfmark added an OpenAction key to the Catalog,
+it omitted the / before the name. (gdevpdfm.c)
+ - Font resources could be written in the middle of a page contents
+stream. (bug introduced in 5.90) (gdevpdff.c, gdevpdfu.c)
+ - As usual, there were some signed/unsigned char * mismatches that
+gcc didn't detect. (gdevpdff.c, gdevpdfm.c, gdevpdfo.c)
+ - Fonts used on a page but freed before the end of the page were
+omitted from the page's resource dictionary. (gdevpdfx.h, gdevpdf.c,
+gdevpdff.c, gdevpdft.c)
+ - /D or /Dest keys in Action pdfmark dictionaries dropped the first
+character of their value. (gdevpdfm.c)
+ - If a pdfmark added annotations to a page after the end of that
+page had been reached, those annotations would be lost. (gdevpdf.c)
+ - ANN, LNK, DEST, and PS pdfmarks ignored the object name, if any.
+(Only OBJ and BP processed the name.) Unfortunately, fixing this required a
+complete overhaul of the way that resources and PDF objects were represented
+internally. The result is both simpler and more general, but it involved a
+major upheaval in the PDF writer code. (lib/gs_pdfwr.ps, gdevpdfo.h,
+gdevpdfx.h, gdevpdf.c, gdevpdff.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c,
+gdevpdfr.c, gdevpdft.c, gdevpdfu.c)
+ - EP pdfmarks didn't close any open text context. (gdevpdfm.c)
+
+Adds debugging code to check the consistency of the embedded Type 1 font
+writer. (gdevpdff.c)
+
+Makes /A and /F at the top level of an annotation or outline pdfmark
+equivalent to /Action and /File respectively. See the code for more
+information. (gdevpdfm.c)
+
+</pre><h3><a name="5.91_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Degenerate Bezier curves could cause a division by zero.
+(gxpcopy.c)
+ - Some macros used in non-FPU configurations were missing some
+needed uses of const, and in one case an additional cast. (gxfarith.h,
+gxfixed.h)
+
+Changes the discard macro to upper-case. (stdpre.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.90"></a>Version 5.90 (beta) (8/20/99)</h2>
+
+<p>
+This is the first real candidate for the 6.0 release. It does not fix all
+known bugs, but it includes all planned functionality. New in this fileset:
+<ul>
+<li> - FunctionType 4 for PDF files.
+<li> - Alternate printer images for PDF files (-dUsePrinterImages
+ switch).
+<li> - pdfwrite support for PDF "Cos objects" (without compression for
+ streams).
+<li> - pdfwrite support for graphics objects named with BP/EP/SP
+ (without compression for the object definition).
+<li> - pdfwrite font subsetting and embedded TrueType fonts.
+</ul>
+
+<h3><a name="5.90_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - ref_stack_init now takes an additional argument.
+ - no_time_slice_proc is removed -- use 0 instead.
+(Library)
+ - Notification client procedures and the gs_notify_ procedures
+take different arguments.
+ - The common part of a gs_function_t structure has changed.
+ - gs_text_enum_init now returns a value that can indicate an error.
+ - The font font_info procedure now takes an additional argument.
+ - The IODevice open_device procedure is now defined as returning
+0 or 1 under specific circumstances.
+ - gxp1fill.h is renamed gxp1impl.h.
+ - Allocators now have an additional procedure they must implement,
+and a state member they must initialize.
+ - Most of the gs..basic.. structure definition macros have been
+renamed. The ptrs1_stringsN structure definition macros are removed.
+ - Implementations of the text API now must provide a resync
+procedure rather than a restart procedure.
+
+</pre><h3><a name="5.90_Documentation"></a>Documentation</h3><pre>
+
+Documents the new -dUsePrinterImages switch, and the expanded meaning of
+-Z~. (doc/Use.htm)
+
+Updates FSF's address in documentation. (lib/Fontmap.GS, lib/Fontmap.Sol,
+gdevcd8.c)
+
+Brings the PDF writer (ps2pdf) documentation up to date. (doc/Ps2pdf.htm)
+
+Updates the current-release documentation. (doc/Current.htm,
+doc/Readme.htm)
+
+Updates the problem-reporting procedure for contributed drivers, and some
+other new-user information. (doc/New-user.htm)
+
+</pre><h3><a name="5.90_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Because of a typo, the file gs_mgl_e.ps wasn't installed (on Unix
+systems) by 'make install'. (unixinst.mak)
+ - The .dev files for drivers didn't depend on devs.mak. (devs.mak)
+ - The X driver didn't include a needed dependency on the bbox
+device. (devs.mak)
+
+Incorporates the pdfmin package into the pdf package, since pdfmin was only
+provided for very small-memory environments and is no longer useful.
+(int.mak)
+
+Adds additional prototype-checking switches, which are important on 64-bit
+platforms and useful on all platforms, to the gcc compilation line.
+(unix-gcc.mak)
+
+</pre><h3><a name="5.90_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - A backquote was misplaced in the Unix ps2pdf script. (lib/ps2pdf)
+ - Some example files didn't have %! headers. (examples/alphabet.ps,
+examples/waterfal.ps)
+ - ansi2knr didn't handle preprocessor directives within a function
+header. (ansi2knr.c)
+
+Cleans up some minor compiler complaints. (genarch.c, genconf.c, echogs.c)
+
+</pre><h3><a name="5.90_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PostScript writer sometimes failed to reset the clip path,
+causing parts of the output to be omitted or to appear incorrectly.
+(gdevvec.c)
+ - There was a type mismatch in a conditional. (gdevxini.c)
+ - A constant array wasn't declared as static. (gdevpsdt.c)
+ - Once again, there were some signed / unsigned char mismatches that
+gcc apparently can't be forced to detect. (gdevpsdt.c)
+ - The alternative X drivers didn't have GC descriptors, which could
+lead to memory corruption. (gdevxalt.c)
+ - The alternative X drivers didn't handle the closing of the
+underlying X driver correctly, leading to a dangling pointer. (gdevxalt.c)
+ - Font subsetting didn't eliminate duplicate glyphs (glyphs
+referenced more than once from the Encoding vector.) (gdevpsd1.c,
+gdevpsdt.c)
+ - Type 1 font subsetting didn't ensure the presence of .notdef.
+(gdevpsd1.c)
+ - The embedded TrueType font writer wrote all 16-bit values
+incorrectly. This could explain a lot! (gdevpsdt.c)
+
+Cleans up public functions with no previous prototype. (gdevtfax.h,
+gdevx.h, gdevdfax.c, gdevtfax.c, gdevx.c, gdevxini.c, gdevxxf.c)
+
+Adds some procedures to support font subsetting. (gdevpsdf.h, gdevpsdf.c)
+
+Adds an alternate font name for writing TrueType fonts. (gdevpsdt.c)
+
+Makes the TrueType font writer generate an OS/2 table, a Macintosh cmap, and
+a name table (for the font name), as well as a Windows cmap and post, if
+necessary. (gdevpsdf.h, gdevpsdt.c)
+
+</pre><h3><a name="5.90_Platforms"></a>Platforms</h3><pre>
+
+Updates a couple of clients for the change in the IODevice open_device
+procedure, eliminating some undesirable externs. (gp_msio.c, gp_os2.c)
+
+</pre><h3><a name="5.90_Fonts"></a>Fonts</h3><pre>
+
+Adds OS/2 and maxp to the list of tables that must be preserved when loading
+TrueType fonts. (lib/gs_ttf.ps)
+
+Registers the complete lists of glyphs in the Adobe Latin fonts as
+pseudo-encodings. (lib/gs_lgo_e.ps, lib/gs_lgx_e.ps, unixinst.mak)
+
+</pre><h3><a name="5.90_PDF_writer"></a>PDF writer</h3><pre>
+
+Fixes bugs:
+ - One built-in font was sometimes substituted for another.
+(gdevpdff.c)
+ - Use of composite fonts often produced a rangecheck error.
+(gdevpdft.c)
+ - The structures for named objects were freed twice. (gdevpdfx.h,
+gdevpdf.c, gdevpdfo.c)
+ - The code to avoid writing a blank between a Td command and
+following text was fragile and still incorrect after being "fixed" twice.
+We removed this minor optimization, at a small cost in file size when not
+compressing. (gdevpdft.c)
+ - No Names tree was generated for named destinations specified as
+strings. Rather than do this, we now convert string destinations to names.
+This doesn't scale up well, but it is simple and also is compatible with all
+PDF versions from 1.1 on. (gdevpdfm.c)
+ - Fonts that define characters incrementally, such as the TrueType
+fonts written by some versions of the AdobePS Windows driver, could omit
+characters if embedded. Fixing this required delaying writing out fonts
+until the font was about to be freed or the writer was closed. (gdevpdfx.h,
+gdevpdff.c, gdevpdft.c)
+
+Cleans up public functions with no previous prototype. (gdevpdfx.h,
+gdevpdf.c, gdevpdfm.c)
+
+Updates client code for the change in gs_text_enum_init. (gdevpdft.c)
+
+Makes some changes towards handling show operations that must be split up
+internally into multiple operations using different fonts. (gdevpdfx.h,
+gdevpdff.c, gdevpdft.c)
+
+Implements the PUT pdfmark for the built-in objects (Catalog, DocInfo,
+Page<#>, ThisPage, PrevPage, NextPage). This required deferring writing out
+page objects until the end of the document. (lib/gs_pdfwr.ps, gdevpdfx.h,
+gdevpdf.c, gdevpdff.c, gdevpdfm.c, gdevpdfo.c, gdevpdfu.c)
+
+Adds table entries, but not parsing, checking, or functionality, for the new
+Acrobat 4 pdfmarks related to document logical structure. (gdevpdfm.c)
+
+Implements stream-type Cos objects. (lib/gs_pdfwr.ps, gdevpdfx.h,
+gdevpdf.c, gdevpdfm.c, gdevpdfo.c, gdevpdfp.c, gdevpdfu.c)
+
+Implements BP/EP/SP pdfmarks. (gdevpdfx.h, gdevpdf.c, gdevpdfi.c,
+gdevpdfm.c)
+
+Changes enumeration and #defined names to upper case, and adds _t to type
+names. (gdevpdfx.h, gdevpdf*.c)
+
+Adds an OS/2 table for embedded fonts if missing. (gdevpdff.c)
+
+Makes the allocator for the PDF device's internal structures be the stable
+allocator of the device's allocator, not the C heap. This required
+correcting a number of GC descriptors. (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
+
+Replaces the text restart procedure with the new resync procedure.
+(gdevpdft.c)
+
+</pre><h3><a name="5.90_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Failure to find a font in the Resources dictionary signalled an
+/undefinedfont error (which does not exist) rather than /invalidfont.
+(lib/pdf_font.ps)
+
+Implements FunctionType 4 functions. (lib/pdf_draw.ps, zfunc4.c)
+
+Implements the -dUsePrinterImages switch to use "alternate" printer images
+when rendering. (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.90_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some pointers were declared as ref * that actually could be
+ref_packed *, potentially confusing compilers that follow the new, stricter
+ANSI C rules about alignment aliasing. (idebug.h, idebug.c, igc.c,
+igcref.c, zmisc.c)
+ - cshow didn't restore the root font after executing the procedure,
+producing incorrect results if the procedure did a setfont. (ichar.h,
+zcfont.c, zchar.c)
+ - A needed const-breaking cast was omitted. (zmisc.c)
+ - The memory validator could cause an unaligned access. (ilocate.c)
+ - restore could free parts of the stacks that were still in use. We
+fixed this long-standing problem using the new concept of stable allocators.
+(interp.c)
+
+Moves the implementation of the abs operator to C, required for FunctionType
+4 support. (lib/gs_init.ps, zarith.c)
+
+Makes more operator procedures public, required for FunctionType 4 support.
+(zarith.c, zmath.c, zrelbit.c, ztype.c)
+
+Adds an additional parameter to ref_stack_init, to allow creating a
+temporary stack without having an allocator. (istkparm.h, istack.h,
+interp.c, istack.c)
+
+Cleans up public functions with no previous prototype. (files.h, ichar.h,
+icstate.h, ifilter2.h, ifrpred.h, ifwpred.h, igcstr.h, iimage.h, iimage2.h,
+iinit.h, imain.h, interp.h, iscanbin.h, ivmem2.h, oparc.h, opextern.h,
+icontext.c, igc.c, iinit.c, imain.c, inobtokn.c, interp.c, iscan.c,
+iscanbin.c, zchar.c, zcharout.c, zcolor.c, zcolor1.c, zcontrol.c, zdevice.c,
+zdpnext.c, zdps.c, zfdecode.c, zfile.c, zfilter2.c, zfont0.c, zfunc0.c,
+zfunc3.c, zfzlib.c, zgeneric.c, zht1.c, zht2.c, zimage.c, zimage2.c,
+ziodev.c, zmath.c, zpath1.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
+
+Updates client code for the tweak in the definition of the IODevice
+open_device procedure. (ziodev.c)
+
+Implements stable local and global VM allocators. This required changing
+more places than we would have liked. (ialloc.c, igc.c, ilocate.c, imain.c,
+interp.c, ireclaim.c, isave.c, zcontext.c)
+
+Removes the global member of gs_ref_memory_t, since it isn't used.
+(gxalloc.h, ialloc.c, zcontext.c)
+
+Adds more tracing to the relocation phase of the garbage collector.
+(igcref.c)
+
+</pre><h3><a name="5.90_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - jpeg_open_backing_store no longer had the correct arguments.
+(This had no effect in practice, since the procedure was never called.)
+(sjpegc.c)
+
+Cleans up public functions with no previous prototype. (scfdgen.c,
+scfetab.c, sjpegc.c, slzwce.c, slzwd.c, stream.c)
+
+Adds some tracing to the image scaling stream. (siscale.c)
+
+</pre><h3><a name="5.90_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A null OutputFile name could cause an error. (gxdevice.h,
+gsdevice.c, gsfname.c)
+ - Shading with non-monotonic Functions produced incorrect output.
+(gxshade1.c)
+ - An #undef didn't match the #define it was supposed to cancel.
+(gxchar.c)
+ - The default next_char_glyph procedure didn't handle FROM_CHARS or
+FROM_SINGLE_CHAR data sources. (gstext.c)
+ - When finalizing a forwarding device, the target pointer in the
+device wasn't cleared, leading to an incorrect attempt to access it later.
+(gdevnfwd.c)
+ - Interpolated images were broken, probably since 5.81.
+(gxiscale.c)
+ - Some color space implementation procedures hadn't been updated to
+add 'const' to the color space argument. (gscie.c)
+ - A constant had a signed/unsigned ambiguity on systems where
+sizeof(long) > 4. (gsccode.h)
+ - The font font_info procedure didn't provide for scaling.
+(gxfont.h)
+
+Simplifies the notification mechanism to remove the concept of client and
+generating object. Registration now just takes a closure (procedure +
+opaque data); events pass the closure data and event data. (gsnotify.h,
+gsfont.c, gsnotify.c)
+
+Changes gs_notify_unregister so that it can unregister all registrations of
+a particular client rather than only one. (gsnotify.h, gsnotify.c)
+
+Adds support for "vanilla" Functions at the library level. (gsfunc.h,
+gsfunc.c)
+
+Adds some tracing for Functions. (gsfunc3.c)
+
+Redefines function monotonicity to indicate whether the function is
+increasing or decreasing, and implements monotonicity correctly for all
+FunctionTypes except 4. (gsfunc.h, gxfunc.h, gsfunc0.c, gsfunc3.c)
+
+Makes Type 0 fonts check that they are being used with a string, not a
+character or (a) glyph(s). (gxtext.h, gschar.c, gschar0.c, gstext.c,
+gxchar.c)
+
+Cleans up public functions with no previous prototype. (gdevmem.h,
+gpcheck.h, gscie.h, gserror.h, gsmemory.h, gxcie.h, gxcldev.h, gxclpath.h,
+gxcmap.h, gxcspace.h, gxfixed.h, gxfont0.h, gxp1fill.h [deleted],
+gxp1impl.h, math_.h, std.h, gconf.c, gdevdrop.c, gdevm1.c, gdevm2.c,
+gdevm4.c, gdevm8.c, gdevm24.c, gdevmr1.c, gdevmr2n.c, gdevprn.c, gsbittab.c,
+gscdef.c, gscie.c, gsciemap.c, gscspace.c, gscscie.c, gsdevmem.c,
+gsdparam.c, gshtscr.c, gsimpath.c, gsiodev.c, gsmisc.c, gsnorop.c, gspath.c,
+gspcolor.c, gsptype1.c, gsropc.c, gsutil.c, gxacpath.c, gxclist.c,
+gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c, gxiscale.c,
+gxp1fill.c, gxpath2.c)
+
+Gets rid of some remaining vestiges of 16-bit ints. (gdevm1.c, gsbitops.c)
+
+Adds procedures to register clients for notification when a font is freed.
+(gxfont.h, gsfont.c)
+
+Defines the IODevice open_device procedure as returning 1 if it opened a new
+stream, 0 if it returned an existing stream. This eliminates some awkward
+externs.
+
+Adds the concept of a stable allocator -- an allocator that allocates from
+the same heap and in the same VM space as another allocator, but is not
+subject to save and restore. (gsmemory.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c, gsmemret.c, gsnogc.c)
+
+Adds some new macros to make defining new kinds of fixed-format structures
+simpler. (gsstruct.h)
+
+Replaces the text processing restart procedure with a more general resync
+procedure, which can be used to restart partway through a string. We retain
+gs_text_restart for backward compatibility and general usefulness.
+(gstext.h, gxtext.h, gdevbbox.c, gstext.c, gxchar.c)
+
+Adds the Adobe Latin glyph sets as pseudo-encodings. (gsccode.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.88"></a>Version 5.88 (tester) (8/3/99)</h2>
+
+<p>
+This fileset adds the ability to reference and embed TrueType fonts in PDF
+output. Unfortunately, even though the resulting PDF files work fine with
+Ghostscript itself, Acrobat Reader apparently can't handle embedded TrueType
+fonts with non-standard Encodings. We hope to fix this problem during the
+6.0 beta test period.
+
+<p>
+This fileset also adds the ability to buffer X Windows output in a
+client-side bitmap. This is typically more efficient than trying to push
+many small commands through the X client/server knothole, especially if
+bitmap images or RasterOp are involved.
+
+<p>
+Some reported problems have been deliberately left unfixed: we will need
+every minute of the 13 days before the start of the 6.0 beta test period to
+implement the last few items of functionality scheduled for the 6.0 release,
+and we can fix problems (but not add functionality) during the beta test
+period.
+
+<h3><a name="5.88_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The box_device member of the bbox device is replaced by the
+box_data member, with a different meaning.
+ - The x_rect structure is removed; all uses are changed to
+gs_int_rect.
+ - gdevpstr.h is renamed spprint.h.
+ - The parameter printing procedures are moved from gdevpsdf.[hc] to
+spsdf.[hc].
+ - Clients must now allocate gs_font* objects using gs_font_alloc or
+gs_font_base_alloc, not directly with gs_alloc_struct.
+ - The first (vptr) argument of enum_ptrs procedures is now const *.
+EV_CONST is no longer defined.
+ - The pep argument of enum_ptrs procedures is now enum_ptr_t *
+rather than const void **.
+ - The font glyph_pieces procedure is replaced with an option for
+glyph_info.
+ - The font encode_char procedure now takes an additional glyph_space
+argument.
+ - The o_large flag in object headers is renamed o_alone; o_lmark and
+o_lsize no longer exist. The DO_LARGE and DO_SMALL macros for enumerating
+objects in a chunk are also removed.
+
+</pre><h3><a name="5.88_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - News entries since 5.72 had a missing &lt;li&gt; in the table of
+contents entry. (doc/News.htm)
+ - gs_text_params_t still referred to REPLACE_X_WIDTHS and
+REPLACE_Y_WIDTHS rather than REPLACE_WIDTHS. (gstext.h)
+
+Clarifies that the font glyph_outline procedure must append a final moveto
+for the advance width. (gxfont.h)
+
+Clarifies that the font enumerate_glyph procedure enumerates glyphs in an
+unpredictable order. (gxfont.h)
+
+Documents that reference counted freeing procedures for structures with
+finalization must free the structure itself first rather than last.
+(gsrefct.h)
+
+Updates documentation on building Ghostscript on MS-DOS and MS Windows.
+(doc/Make.htm)
+
+Adds some documentation on how the makefiles are / should be structured.
+(doc/Source.htm)
+
+Documents the new parameters for the X driver. (doc/Use.htm)
+
+Updates the language documentation to refer properly to PostScript
+LanguageLevel 3 and PDF 1.3. (doc/Language.htm)
+
+</pre><h3><a name="5.88_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - An omitted space in a makefile caused an incompatibility with the
+VMS build utilities. (lib.mak)
+ - The gsindent script was omitted from the fileset. (gsindent)
+ - The core library didn't include stream.c, which is now required.
+(lib.mak)
+ - The workaround for the peculiarities of the Watcom compiler's
+command line syntax didn't work. (zlib.mak)
+ - A DOS command line overflowed in the makefile. We patched this by
+deleting the bmpgray device from the Borland Windows platform.
+(bcwin32.mak)
+
+Provides a .lnk file required by the revised linking procedures on MS
+Windows. (gsdll32w.lnk)
+
+Straightens out the Watcom makefiles so that it is possible to build a
+Windows executable and DLL using the Watcom compiler. This required moving
+some parameters around in the other PC makefiles. (bcwin32.mak,
+msvccmd.mak, watc.mak, watcw32.mak, wccommon.mak, winint.mak, winlib.mak)
+
+</pre><h3><a name="5.88_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The X driver reported the wrong parameter name for errors in the
+value of the WindowID or .IsPageDevice parameter. (gdevxini.c)
+ - The X driver calculated the Y window dimension incorrectly when
+resizing the window if X and Y resolutions were different. (Never happens
+in practice.) (gdevxini.c)
+ - The bmpasep8 device was defined as gx_device_printer rather than
+gx_device_async. (gdevbmpa.c)
+ - Some casts between signed and unsigned char * were missing.
+(gdevpdff.c, gdevpdft.c)
+ - The PDF writer didn't handle reencoded characters properly in
+non-embedded fonts. (gdevpdfx.h)
+ - The PDF writer allocated new structures while being closed,
+causing memory corruption if the close procedure was called for
+finalization. (gdevpdff.c, gdevpsd1.c)
+ - The PDF writer tried to close the resource file twice. (bug
+introduced since 5.50) (gdevpdf.c)
+ - The PDF writer failed to work around a bug in Acrobat 3 Reader's
+Print function related to re-encoded fonts. (gdevpdft.c)
+ - The PDF writer incorrectly specified ASCII85Encode rather than
+ASCII85Decode for non-binary embedded fonts. (gdevpdff.c)
+ - The PDF writer didn't handle embedded fonts with a non-standard
+FontMatrix correctly. (gdevpdft.c)
+ - The PDF writer didn't handle reassigned characters correctly.
+(gdevpdft.c)
+ - When embedding a Type 1 font, the PDF writer didn't check that the
+font contains only CharStrings (no PostScript procedures), no non-standard
+OtherSubrs, and no CDevProc. (gdevpsd1.c)
+ - There was an unused label in the mswinpr2 driver. (gdevwpr2.c)
+ - The X driver didn't flush buffered output before reading back
+bits from the display. (gdevx.c)
+ - The X driver still didn't set up the color mapping tables
+correctly -- in particular, it didn't initialize cman.color_to_rgb before
+setting up the dither ramp or cube. This is at least the third time we have
+"fixed" this problem. (gdevxcmp.c)
+
+Removes the remaining uses of gs_malloc, gs_free, and gs_memory_default from
+Aladdin's non-display drivers. (gdevbit.c, gdevbmp.c, gdevbmpa.c,
+gdevcgm.c, gdevclj.c, gdevcljc.c, gdevdjet.c, gdevlj56.c, gdevmiff.c,
+gdevpbm.c, gdevpcx.c, gdevpng.c, gdevpsim.c, gdevtfax.c, gdevtfnx.c,
+gdevxalt.c)
+
+Adds a MaxBitmap parameter to the X driver: the driver will maintain a
+full-window pixmap in memory if it requires no more space than MaxBitmap.
+The default value of this parameter is 0, meaning never use a client-side
+bitmap. (gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
+
+Moves the X device closing and get/put parameters procedures from gdevx.c to
+gdevxini.c. (gdevx.c, gdevxini.c)
+
+Removes some remaining uses of gs_malloc and gs_free from the X driver.
+Note that this requires making the X device structure properly
+garbage-collectable. (gdevx.h, gsstruct.h, gdevxini.c)
+
+Removes the remaining uses of 'register' from the X driver. (gdevx.c,
+gdevxini.c)
+
+Removes the remaining uses of the obsolete far_data keyword from Aladdin's
+non-PC drivers. (gdevbmp.c, gdevbmpa.c, gdevcgm.c, gdevlj56.c, gdevmiff.c,
+gdevp2up.c)
+
+Improves the X driver's algorithm for deciding when to update the screen,
+and makes its parameters available for reading and setting. (gdevx.h,
+gdevx.c, gdevxini.c)
+
+In the X driver's color mapper, improves performance slightly by replacing
+multiplies and divides with shifts and table lookups in the normal case of
+standard color maps. (gdevxcmp.h, gdevxcmp.c)
+
+Moves some filter-related code from the driver level to the stream level.
+(gdevpsdf.c)
+
+Moves some utilities for printing values in ASCII form from the driver level
+to the stream level. (devs.mak, gdevpdfx.h, gdevpstr.h [deleted], gdevps.c,
+gdevpsde.c, gdevpsdf.c, gdevpsdp.c, gdevpstr.c [deleted])
+
+Upgrades the PDF writer to handle TrueType fonts as well as Type 1.
+(gdevpdfx.h, gdevpsdf.h, gdevpdff.c, gdevpdft.c, gdevpsde.c => gdevpsd1.c,
+gdevpsdt.c)
+
+Starts to implement font subsetting in the PDF writer. (gdevpdfx.h,
+gdevpsdf.h, gdevpdff.c, gdevpsd1.c, gdevpsdt.c)
+
+Partially implements WMode when writing font descriptors. (gdevpdff.c)
+
+Changes psdf_binary_writer so that adding the ASCII85 filter in
+psdf_begin_binary doesn't require allocating any memory. (gdevpsdf.h,
+gdevpsdf.c)
+
+Makes the PDF writer guess the Ascent and StemV values for embedded fonts
+when it can't determine them by examining the font. (gdevpdff.c)
+
+Makes the PDF writer able to handle xshow and yshow (TEXT_REPLACE_WIDTHS).
+(gdevpdft.c)
+
+Updates code to reflect the addition of glyph_space to the font encode_char
+and enumerate_glyph procedures. (gdevpsdf.h, gdevpdff.c, gdevpdft.c,
+gdevpsd1.c, gdevpsdf.c, gdevpsdt.c)
+
+Removes some unnecessary #includes. (gdevxres.c)
+
+Removes the sample driver-based CRD from the variant X drivers, since this
+created a pointless dependency. (The `bit' drivers still provide this
+feature, for testing.) (gdevxalt.c)
+
+Changes the default compatibility level of PDF output from 1.2 (Acrobat 3)
+to 1.3 (Acrobat 4). (gdevpdf.c)
+
+</pre><h3><a name="5.88_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - A comment included an extra /*. (gp_mswin.c)
+ - The definitions for min and max in a couple of files disagreed
+with the ones typically provided in system header files. (dwimg.cpp,
+dwtext.cpp)
+
+Removes some unnecessary code related to generating temporary file names.
+(gp_iwatc.c)
+
+</pre><h3><a name="5.88_Fonts"></a>Fonts</h3><pre>
+
+Changes the loader for TrueType fonts to keep the 'instructions', which are
+required if the font is going to be written out in a PDF file.
+(lib/gs_ttf.ps)
+
+Adds some more debugging output to the TrueType font loader.
+(lib/gs_ttf.ps)
+
+Registers the MacGlyphEncoding so it can be made available to the PDF
+writer. (lib/gs_mgl_e.ps, lib/gs_ttf.ps, unixinst.mak, gsccode.h, ifont.h)
+
+</pre><h3><a name="5.88_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The serif and small-caps flags in the FontDescriptor were ignored
+when doing font substitution. (lib/gs_fonts.ps, lib/pdf_font.ps)
+ - The ri operator was undefined. We added a dummy definition.
+(lib/pdf_ops.ps)
+ - The redefinitions of restore could cause a recursion loop.
+(lib/gs_fform.ps, lib/gs_lev2.ps)
+ - There was an extra gsave executed for each page, causing the
+graphics state stack to grow deeper and deeper, which caused problems when
+wrapping up at the end of execution. (lib/pdf_main.ps)
+
+Implements the sh operator. (lib/pdf_draw.ps)
+
+Works around a bug in some PDF files generated by Adobe's PDF library (?),
+which attempt to create a font Encoding array with more than 256 elements.
+(lib/pdf_font.ps)
+
+</pre><h3><a name="5.88_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The GNU readline completion code (which Aladdin did not write) was
+completely wrong. (gp_gnrdl.c)
+ - The top-level restore sometimes tried to restore global VM an
+extra time, leading to memory corruption. (bug probably introduced in 5.85)
+(isave.c)
+ - The glyph_ref procedure was defined in two different places
+(inconsistently). (ichar.h, zchar.c, zchar1.c)
+
+Restructures the name table to improve cache coherence and to make it
+possible to store initial name strings in ROM. (iname.h, inamedef.h,
+inames.h, inamestr.h, igc.c, iname.c, isave.c)
+
+Changes the scanner so it doesn't copy name strings when scanning a compiled
+init string. This reduces RAM requirements by about 20K when using compiled
+initialization. (iscan.c)
+
+Removes redundant FontBBox correction code, since this is now handled by the
+library. (zfont42.c)
+
+Updates the Type 1 and Type 42 font code to implement the new font
+procedures. (icharout.h, zcharout.c, zchar1.c, zchar42.c, zfont1.c,
+zfont42.c)
+
+Simplifies the code that checks whether a grestore needs to do a
+setpagedevice. (zdevice2.c)
+
+Updates code to reflect the change of the vptr argument of enum_ptrs
+procedures to const *. (igcref.c)
+
+Updates code to reflect the change in the pep argument of enum_ptrs
+procedures to enum_ptr_t *. (igc.h, iscan.h, istruct.h, igc.c, igcref.c,
+ilocate.c, iscan.c)
+
+Updates code to reflect the addition of glyph_space to the font encode_char
+and enumerate_glyph procedures. (bfont.h, ifont.h, zbfont.c, zfont1.c,
+zfont32.c, zfont42.c)
+
+Cleans up some code details. (idebug.h, ifunc.h, iparray.h, istream.h,
+zfunc.c)
+
+Removes some no longer needed test code. (zfont1.c)
+
+Updates memory manager code to reflect the change from o_large to o_alone.
+(igc.c, igcref.c, ilocate.c, isave.c)
+
+Changes the printed font substitution message to be closer to what some
+Adobe products print if SHORTERRORS is defined. (Thanks to Andrew Chilvers
+for the suggestion.) (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.88_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The fix in 5.85 for ASCII85Encode EOLs was wrong and caused a word
+of data to be dropped occasionally. (sfilter2.c)
+
+Moves some filter-related code from the driver level to the stream level.
+(stream.h, stream.c)
+
+Moves some utilities for printing values in ASCII form from the driver level
+to the stream level. (lib.mak, spprint.h, spsdf.h, spprint.c, spsdf.c)
+
+Adds some more tracing output for image scaling. (siscale.c)
+
+</pre><h3><a name="5.88_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The bbox device's check for whether a rectangle filled the entire
+page was wrong. (gdevbbox.c)
+ - The bbox device didn't correctly handle parallelograms, triangles,
+or thin lines with points specified in other than ascending order.
+(gdevbbox.c)
+ - The bbox device smashed the reference count of the text enumerator
+it created, causing a memory leak. (gdevbbox.c)
+ - The bbox device didn't copy back all the dynamic information from
+a subsidiary text enumerator, with unpredictable results. (gxtext.h,
+gdevbbox.c, gstext.c)
+ - The default implementation of glyph_info for fonts incorrectly
+reported that it returned values for all members, not just the ones it knew
+about. (gsfont.c)
+ - The profiling implementation of memset was incorrect, leading to
+memory smashing. (gsmisc.c)
+ - The default implementation of glyph_info had a memory leak.
+(gsfont.c)
+ - The default implementation of character rendering didn't correctly
+handle the case where the character was in the cache and only the character
+width was requested. (gxchar.c)
+ - Text processing didn't correctly handle REPLACE_WIDTHS if the X
+and Y width arrays were different. (The PostScript interpreter never does
+this.) (gstext.h, gstext.c, gxchar.c)
+ - Compositing devices weren't initialized properly, leading to
+invalid accesses. This is the last (?) bit of the device reference counting
+bug tail. (gsalphac.c, gsropc.c)
+
+Changes the bbox device to make the procedures for managing the bounding box
+virtual, so the X device can be a subclass. (gdevbbox.h, gdevbbox.c)
+
+Changes the bbox device so it always adds the bounding box after doing the
+drawing operation rather than before, for the benefit of the buffering X
+device. (gdevbbox.c)
+
+Removes some remaining uses of gs_memory_default. (gdevdrop.c)
+
+Removes all uses of the obsolete far_data keyword from the library.
+(gconf.c, gdevbbox.c)
+
+Changes the bbox device so it doesn't run drawing algorithms twice if it has
+a target that uses the default implementation. (gdevbbox.c)
+
+Speeds up the implementation of fill_rectangle for 16-bit memory devices.
+(gdevm16.c)
+
+Makes TrueType fonts implement the new font procedures. (gxfont42.h,
+gxmatrix.h, gsmatrix.c, gstype42.c)
+
+Adds a gs_id to gs_font objects, so that fonts with the same name can be
+distinguished reliably without relying on the address. (gxfont.h, gsfont.c)
+
+Makes the vptr argument of enum_ptrs procedures be const *. This is a
+long-overdue change. (gsstype.h, gxxfont.h, gsalloc.c, gsfont.c,
+gsmemory.c) ****** REDO THE CONST-BREAKING CASTS IN gsfont.c ******
+
+Changes the pep argument of enum_ptrs from const void ** to enum_ptr_t *, to
+get rid of some hacks in enum_ptrs implementations that had to construct
+temporary gs_strings. (gsstruct.h, gsstype.h, gstext.h, gsalloc.c,
+gscolor2.c, gsfont.c, gsmemory.c, gstext.c)
+
+Adds a general mechanism that provides for an arbitrary number of clients to
+be notified when an event occurs. For the moment, we only use it to notify
+PDF writers when a font is about to be freed. (gsnotify.h, gsnotify.c)
+
+Makes fonts use the new notification mechanism to notify clients when the
+font is about to be freed. (gxfont.h, gsfont.c)
+
+Adds a gs_text_set_cache procedure to parallel restart and retry.
+(gstext.h, gxtext.h, gstext.c)
+
+Adds a glyph_space argument to the font encode_char and enumerate_glyph
+procedures, so that clients can choose between glyph names and glyph indices
+in environments that use both. (gsccode.h, gxchar.h, gxfont.h, gxfont42.h,
+gsfont.c, gstype42.c, gxchar.c)
+
+Changes the bbox device so it optionally considers white to be opaque.
+(gdevbbox.h, gdevbbox.c)
+
+Cleans up some code details. (gshsb.h)
+
+Adds a hack to suppress warning messages from the Watcom compiler about
+testing constant values. (stdpre.h)
+
+Replaces the glyph_pieces font procedure with a GLYPH_INFO_PIECES option for
+glyph_info. (gxfont.h, gxfont42.h, gsfont.c, gstype42.c)
+
+Adds a font_info font procedure, similar to glyph_info but giving
+information about the font as a whole. (gxfont.h)
+
+In order to fix a bug in resizing large objects, gets rid of the concept of
+large objects entirely, replacing it with the concept of an 'alone' object
+that is guaranteed to be the only object in its chunk. (gxalloc.h, gxobj.h,
+gsalloc.c)
+
+Adds some more tracing output for interpolated images. (gxiscale.c)
+
+Adds a _long parameter setting procedure to parallel _bool, _enum, and _int.
+(gsparamx.h, gsparamx.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.87"></a>Version 5.87 (tester) (6/29/99)</h2>
+
+<p>
+In this fileset, the pdfwrite device finally handles general Type 1 fonts,
+and can write them in both embedded and non-embedded form. This fileset
+also contains a few more changes to the text API, and some incompatible
+changes to the gs_font procedure vector: more such changes are likely. It
+also fixes a couple of long-standing pdfmark bugs.
+
+<p>
+NOTE: there are known problems in PDF output with non-embedded fonts (fonts
+represented only by a descriptor): some characters will be missing, and
+because of bugs in Acrobat's Print function, even more characters will be
+missing or wrong when printing from Acrobat. We will fix our problems, and
+work around Acrobat's bugs, in the next couple of filesets.
+
+<h3><a name="5.87_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Text enumerators now have a release procedure.
+ - gx_device_text_begin no longer stores its arguments into the
+enumerator: the driver text_begin procedure must do this.
+ - The argument list for the font encode_char procedure no longer
+includes the enumerator, and the second argument is now a gs_char rather
+than a gs_char *.
+ - The font next_char procedure is removed. (It has been obsolete
+for a while.) The next_glyph procedure is renamed next_char_glyph.
+ - The first argument of the font init_fstack, build_char, and
+next_glyph procedures is changed from gs_show_enum * to gs_text_enum_t *.
+ - gx_font_stack[_item] is renamed gx_font_stack[_item]_t.
+ - New font procedures have been added, of which two (enumerate_glyph
+and glyph_outline) are required. The font procedure vector has been
+reorganized.
+ - The Type 1 font next_glyph procedure is replaced by the gs_font
+enumerate_glyph procedure.
+ - psdf_embed_type1_font is renamed psdf_write_type1_font, and has
+an additional argument.
+ - psdf_alloc_param_printer takes slightly different arguments;
+print_binary_ok and print_ASCII85_ok are now upper-case.
+
+</pre><h3><a name="5.87_Documentation"></a>Documentation</h3><pre>
+
+Reorganizes the driver API documentation slightly, documents the fact that
+get_alpha_bits and draw_line are obsolete, and documents the driver text
+API. (doc/Drivers.htm)
+
+Documents an additional Irix configuration where the compiler doesn't work.
+(doc/Make.htm)
+
+</pre><h3><a name="5.87_Procedures"></a>Procedures</h3><pre>
+
+Moves the %pipe% IODevice into lib.mak, since it is now included on Windows
+as well as Unix. (lib.mak, unix-aux.mak)
+
+Adds the bmpgray driver to all platforms that include the other BMP drivers.
+(bcwin32.mak, msvc32.mak, os2.mak, unix-gcc.mak, watc.mak, watcw32.mak)
+
+</pre><h3><a name="5.87_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The PS and PDF writers didn't maintain the font embedding lists
+correctly. (gdevpsdp.c)
+ - The CreationDate in PDF output was always set to the current date,
+and couldn't be set with a pdfmark. We now don't set CreationDate at all,
+since it is supposed to be the creation date of the original document, not
+of the PDF file. (gdevpdfm.c, gdevpdfu.c)
+ - The Producer in PDF output couldn't be set with a pdfmark.
+(gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfu.c)
+ - pdfmarks with /Action /GoTo incorrectly retained the Action key.
+(gdevpdfm.c)
+ - pdfmarks didn't substitute /Dest => /D or /File => /F correctly.
+(gdevpdfm.c)
+
+Updates the PDF writer to use the new text API rather than the show
+pseudo-parameter. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
+
+Changes pdf_open_document so that it opens the document even if some
+resources have been allocated. (gdevpdf.c)
+
+Splits off pdfwrite utilities from top-level control, since the file was
+getting too big. (gdevpdfx.h, gdevpdf.c, gdevpdfu.c)
+
+When writing PDF, avoids resetting the word spacing parameter if the string
+doesn't contain any spaces, and the character spacing parameter if the
+string has no more than 1 character. (gdevpdft.c)
+
+Splits off PDF font handling from text handling, since the file was getting
+too big. (gdevpdfx.h, gdevpdff.c, gdevpdft.c)
+
+Implement both embedded and non-embedded fonts beyond the base 14 in the PDF
+writer. This code doesn't work very reliably yet. (gdevpdfx.h, gdevpdff.c,
+gdevpdft.c)
+
+Adds a bmpgray driver that produces 8-bit gray-scale output. (devs.mak,
+gdevbmp.c)
+
+Updates the PDF writer for changes in the gs_font procedure vector.
+(gdevpdff.c, gdevpdft.c)
+
+Updates the Type 1 font writer for changes in the gs_font procedure vector,
+and adds some output options. (gdevpsdf.h, gdevpsde.c)
+
+Changes the printing parameter list implementation to take all of its
+parametric arguments in the params structure, and changes the names of the
+options. (gdevpsdf.h, gdevpsde.c, gdevpsdf.c, gdevpdff.c, gdevpdfi.c,
+gdevpdfu.c)
+
+</pre><h3><a name="5.87_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Indexed color spaces didn't allow the base space to be an indirect
+reference. (lib/pdf_draw.ps)
+ - The CS and cs operators didn't accept a literal color space name
+(as opposed to a color space resource name). (lib/pdf_draw.ps)
+ - Some PDF 1.2 files had a SM entry in graphics state dictionaries,
+even though this is not documented and requires a LL3 interpreter.
+(lib/pdf_draw.ps)
+ - Generated font names included a % character, which could cause
+problems for ps2pdf. (lib/pdf_font.ps)
+
+</pre><h3><a name="5.87_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The calculation of the final index when enumerating the pointers
+in a context state was incorrect. (source bug only, no effect on execution)
+(icontext.c)
+
+Updates the interpreter's glue code for the changes in the PDF writer.
+(lib/gs_pdfwr.ps)
+
+Updates a client to use gs_font_alloc. (zbfont.c)
+
+Updates clients for changes in the gs_font procedure vector. (zbfont.c,
+zchar1.c, zfont0.c, zfont1.c, zfont32.c)
+
+Updates a client for the change to psdf_write_type1_font. (zfont1.c)
+
+</pre><h3><a name="5.87_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some code used rc_decrement_only instead of gx_device_retain.
+(Stylistic bug only.) (gschar.c)
+ - The finalize procedure for the character cache device could get
+unset and/or the retained flag cleared, leading to a reference count not
+getting decremented. (gxccman.c)
+ - Allocating a show enumerator didn't clear the show_gstate member.
+(Probably no effect in practice.) (gschar.c)
+ - Cleaning up at the end of text processing was not consistent and
+sometimes didn't get done. The old API used explicit and separate client
+allocation (gs_show_enum_alloc), release (gs_show_enum_release), and freeing
+(gs_free_object); release, but not free, was automatic at the end of
+processing (in show_finish). The new API has allocation in gs_text_begin or
+gx_device_text_begin, no implicit release or free, and a single
+gs_text_release call to handle both release and free. Reconciling these
+required adding an auto_release flag in the gs_show_enum structure to
+indicate which API was used to create it, and a release procedure. (The
+auto_release flag is only needed for backward compatibility with clients
+that use the old API. Ghostscript itself no longer has such clients, but
+the PCL interpreters do.) (gxchar.h, gxtext.h, gdevbbox.c, gschar.c,
+gstext.c, gxchar.c)
+ - We were burned once again by gcc's acceptance of private/public
+procedure mismatches. (gxchar.c)
+ - A line break was missing between the return type and a procedure
+name. (gsstate.c)
+ - Show enumerators had an incorrect GC descriptor. (gxchar.c)
+ - Text enumerators didn't terminate their list properly. (gstext.c)
+
+Adds a debugging procedure that finds all the pointers to an object. This
+uses the GC's pointer enumeration procedures, so it will only work if all
+structures have correct GC descriptors. (Of course, we think this is true
+of all of Ghostscript.) The current implementation doesn't trace refs.
+(gsalloc.c)
+
+Removes remaining references from gxchar.c to procedures defined in
+gschar.c. The standard Ghostscript build now no longer needs gschar.c,
+although we will keep it for the moment for backward compatibility.
+(gschar.c, gxchar.c)
+
+Removes an obsolete reference to gs_show_enum. (gstype1.h)
+
+Adds definitions for the built-in encoding indices. (gsccode.h, gxfont.h,
+gxxfont.h)
+
+To make text_begin implementations callable, requires them, rather than
+gx_device_text_begin, to save their parameters in the enumerator structure.
+(gxtext.h, gstext.c, gxchar.c)
+
+Adds a TEXT_DO_CHARWIDTH alternative to the text operation, to just advance
+the current point by the character width (stringwidth rmoveto). (gscpm.h,
+gstext.h, gxchar.c, gxpath.c)
+
+Adds procedures to allocate and initialize fonts. (gxfont.h, gsfont.c)
+
+Starts to revise the gs_font procedure vector to create a real "font socket"
+API, adding several new procedures. This is a NON-BACKWARD-COMPATIBLE
+change, and there probably are more to come. (gxchar.h, gxfont.h, gsfont.c,
+gstext.c, gxchar.c)
+
+Moves the Type 0 font stack from gs_show_enum to gs_text_enum_t, and renames
+its types to gx_font_stack_[item_]t. Also moves cmap_code. (gxchar.h,
+gxtext.h, gschar0.c, gstext.c, gxchar.c)
+
+Moves the glyph enumeration procedure from Type 1 fonts to general fonts,
+changing its name to enumerate_glyph. (gxfont1.h)
+
+Changes the debugging code for reference counting to call procedures, to
+allow better breakpointing. (gsrefct.h, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.86"></a>Version 5.86 (tester) (6/14/99)</h2>
+
+<p>
+This fileset includes the first batch of changes for the new driver-based
+text API. Unfortunately, a few of them are non-backward-compatible.
+WARNING: This API is UNSTABLE and should not be used yet. This includes the
+APIs and structures in gxtext.h, and to a lesser extent those in gstext.h.
+
+<h3><a name="5.86_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The default initialization of fonts now sets next_glyph rather
+than next_char.
+(Library)
+ - The font argument of the driver text_begin procedure is no
+longer declared as const.
+ - Text enumerators now have a is_width_only and current_width
+procedures; the restart procedure is renamed retry, and there is a new
+restart procedure that does something different.
+ - The scale member of gs_text_enum_t is renamed log2_scale.
+ - gs_show_restore_font is removed.
+ - The current_char, current_glyph, width, and log2_current_scale
+members of gs_show_enum are removed (replaced by members of gs_text_enum_t).
+ - The current_width member of gs_text_enum_t is removed.
+ - Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single
+TEXT_REPLACE_WIDTHS.
+
+</pre><h3><a name="5.86_Documentation"></a>Documentation</h3><pre>
+
+Fixes a number of outdated URLs. (doc/Devices.htm, doc/Fonts.htm,
+doc/Install.htm, doc/Language.htm, doc/Make.htm, doc/New-user.htm)
+
+Documents the name change from gs_iso_e.ps to gs_il1_e.ps.
+(doc/Psfiles.htm)
+
+Documents the fact that a double % may be needed on MS systems.
+(doc/Use.htm)
+
+Documents that reversepath discards a trailing moveto, for compatibility
+with Adobe implementations. (gxpath2.c)
+
+</pre><h3><a name="5.86_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - Some punctuation was omitted that affects builds on VMS systems.
+(gs.mak)
+ - 'make install' didn't install doc/History5.htm. (unixinst.mak)
+ - The Borland makefile put some generated files in the top-level
+directory rather than the build directory. (bcwin32.mak)
+
+Updates the Unix install script for the name change of gs_iso_e.ps.
+(unixinst.mak)
+
+Moves the GNU-licensed drivers to a separate makefile. (contrib.mak,
+gnu/src/gnudevs.mak)
+
+Adds pipe.dev to the BC++, MSVC++, and OS/2 (GCC/EMX) platforms.
+(bcwin32.mak, dvx-gcc.mak, msvc32.mak, msvclib.mak)
+
+</pre><h3><a name="5.86_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems: - The usage message for pdf2ps was incorrect. (lib/pdf2ps,
+ lib/pdf2ps.bat)
+
+</pre><h3><a name="5.86_Drivers"></a>Drivers</h3><pre>
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (gdevpdf.c, gdevpdfo.c)
+
+Adds a user-contributed driver for the Oki Data OkiPage 4w+ LED printer.
+This is a GPL'ed driver. (contrib.mak, gnu/src/gdevop4w.c)
+
+</pre><h3><a name="5.86_Platforms"></a>Platforms</h3><pre>
+
+Adds a %handle% IODevice (mshandle.dev) to recognize file names of the form
+%handle%NNNNNNNN under MS Windows. GSview uses this feature in place of
+pipes, which are an open industry standard not supported by MS Windows.
+(msvc32.mak, winlib.mak, gp_mshdl.c)
+
+</pre><h3><a name="5.86_Fonts"></a>Fonts</h3><pre>
+
+Adds the ISO 8859-2 encoding to the stock of built-in encodings.
+(lib/gs_il2_e.ps, lib/gs_iso_e.ps => lib/gs_il1_e.ps)
+
+</pre><h3><a name="5.86_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Using a colored pattern with an uncolored Pattern color space
+caused an error. (lib/pdf_draw.ps)
+ - Embedded CIDFontType 2 fonts didn't work, and embedded TrueType
+fonts did an extra definefont. (lib/gs_ttf.ps, lib/pdf_font.ps,
+lib/pdf_ops.ps) ****** IN PROGRESS ******
+
+</pre><h3><a name="5.86_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some files hadn't been updated for the removal of the gs_imemory
+static. (int.mak, gp_gnrdl.c, imain.c, ztrap.c)
+ - %statementedit could append a spurious character if the last
+character of the statement was not whitespace. (bug probably introduced in
+5.8x) (ziodev.c)
+ - The show operators didn't properly handle the special case of
+executing within a cshow procedure for a non-CID font. (zchar.c)
+ - cshow applied to a composite font didn't scale the current font
+correctly (in fact, at all). (zcfont.c)
+ - If an error occurred within the procedure called by
+resourceforall, it wasn't reported. (lib/gs_res.ps)
+ - flushfile and closefile didn't correctly handle filters that only
+write a fixed amount of data. (zfileio.c)
+ - cshow didn't restore the font reliably after executing the
+procedure. (ichar.h, zcfont.c, zchar.c)
+ - An execstackoverflow error might temporarily leave the execution
+stack in an invalid state. (interp.c)
+
+Cleans up some macros. (iname.c, isave.c, iscan.c)
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (icontext.c, iname.c, isave.c, iscan.c,
+istack.c, zcontext.c, zfproc.c)
+
+Adds a run-time warning message if gp_gnrdl.c is included in a non-GNU
+build. (gp_gnrdl.c)
+
+Converts clients to use the gs_text procedures that replace the gs_show
+procedures, and to use gs_text_enum_t rather than gs_show_enum as the
+enumerator type. (ichar.h, zbfont.c, zcfont.c, zchar.c, zchar1.c,
+zchar32.c, zchar42.c, zcharout.c, zcharx.c, zfont.c, zfont0.c, zfont1.c,
+zfont32.c, zimage.c, zimage2.c)
+
+Updates the initialization code for the name change of gs_iso_e.ps.
+(lib/gs_init.ps)
+
+Splits off the definitions relating to name indices, in anticipation of
+defining some name indices statically. (inamedef.h, inameidx.h, iname.c)
+
+</pre><h3><a name="5.86_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The pixel-difference filters didn't initialize the previous sample
+to 0 at the beginning of each row. (spdiff.c)
+ - The CCITTFaxDecode filter didn't correctly handle the case where
+the last code of a row occurred less than 7 or 8 bits before the end of the
+input stream. (scf.h, shc.h, scfd.c)
+ - Flushing filters didn't work. (stream.c)
+ - The DCTEncode filter gave an error if asked to write to a string
+with less than 100 bytes of free space left when the end of the input data
+was reached. (sdct.h, sdcte.c)
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (stream.c)
+
+Changes the ASCII85Encode stream to reliably insert a newline at least once
+every 80 characters, rather than unreliably after at most 80 characters of
+data. (sfilter2.c)
+
+Cleans up some formatting. (stream.c)
+
+</pre><h3><a name="5.86_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - A client wasn't updated for the change in the declaration of
+gx_dht_proc. (bug introduced in 5.84) (genht.c)
+ - When rendering a 12-bit-per-sample color image, the device color
+wasn't initialized, possibly causing a memory access error when comparing
+the current color with the previous one. (gxi12bit.c)
+ - arch_floats_are_IEEE was incorrectly defined as
+arch_floats_are_ieee. (bug introduced in 5.83) (std.h)
+ - Decoding of IEEE floats on non-IEEE systems was wrong. (ibnum.c)
+ - The fast case of masked images in Pattern color spaces didn't
+work. (bug introduced since 5.50) (gxifast.c)
+ - cshow gave an error if there was no current point. (gxchar.c)
+
+Replaces TEXT_REPLACE_{X,Y}_WIDTHS with a single TEXT_REPLACE_WIDTHS.
+(gstext.h, gstext.c)
+
+Cleans up some macros. (gdevddrw.c, gsfont.c, gsht1.c)
+
+Removes all remaining uses of #define'd casts in connection with ENUM_PTRS
+and RELOC_PTRS procedures. (gdevddrw.c, gdevplnx.c, gsalloc.c, gschar.c,
+gscolor.c, gscolor2.c, gscrd.c, gscsepr.c, gscspace.c, gsdevice.c, gsdsrc.c,
+gsfcmap.c, gsfont.c, gsfont0.c, gsht1.c, gshtscr.c, gsimage.c, gspcolor.c,
+gsptype1.c, gsstate.c, gstext.c, gxcmap.c, gxht.c, gxipixel.c, gxmclip.c,
+gxtype1.c)
+
+Adds gs_c_param_list_write_more, to switch a C parameter list back to write
+mode without clearing it. (gsparam.h, gscparam.c)
+
+Adds gs_grestore_only, to do a grestore without requiring 2 entries on the
+graphics state stack. (gsstate.h, gsstate.c)
+
+Completes a first bridge between the new driver text_begin procedure and the
+existing text API defined in gschar.h. The changes are backward-compatible
+for both clients of the APIs and (the few) implementors of text_begin,
+except that the font argument of text_begin is no longer const. Note that
+gschar.h is no longer used by any client, and in fact is deprecated.
+(gschar.h, gstext.h, gxfcache.h, gxtext.h, gzstate.h, gdevbbox.c,
+gdevnfwd.c, gschar.c, gsfont.c, gsfont0.c, gstext.c)
+
+Mostly splits off the existing text procedures from the default
+implementation of the new text facilities. (lib.mak, gxchar.h, gschar.c,
+gxchar.c)
+
+Makes the structure descriptor for gs_state public, for testing in gxchar.c.
+(gzstate.h, gsstate.c)
+
+Adds is_width_only and current_width procedures to the text enumerator;
+renames restart as retry, and adds a restart procedure for restarting with
+different parameters. (gstext.h, gxtext.h, gdevbbox.c, gschar.c, gstext.c,
+gxchar.c)
+
+Makes the masks for the subgroups of text operation parameters public.
+(gstext.h)
+
+Removes members of gs_show_enum that are superseded by members of
+gs_text_enum_t: current_char, current_glyph, width, and log2_current_scale.
+(gxchar.h, gxchar.c)
+
+Adds aliases for popen and pclose under WIN32. (pipe_.h)
+
+Moves gs_incachedevice from gschar.h to gsstate.h. (gschar.h, gsstate.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.85"></a>Version 5.85 (tester) (5/29/99)</h2>
+
+<p>
+This fileset removes a few more writable statics, and adds uniform support
+for %filedevice%filename syntax in OutputFile. Unfortunately, removing the
+static that held the interpreter's allocator group was almost as much of an
+upheaval as removing the statics for the interpreter stacks.
+
+<h3><a name="5.85_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - context_state_alloc now takes an additional parameter, as do
+obj_cvp, make_packed_array, parse_real_file_name, ref_stack_store,
+sread/write_proc, terminate_file_name, and a number of other internal
+interpreter procedures.
+ - scan_number now does not mark the result as new.
+ - The _param_list_read/write procedures now take an additional
+gs_ref_memory_t * parameter.
+ - It is no longer possible to store pointers to the interpreter's
+allocator group (gs_dual_memory_t) in structures or variables across a
+garbage collection.
+ - The save_level instance variable is moved from gs_dual_memory_t
+to gs_ref_memory_t.
+ - op_show_finish_setup can now fail.
+ - fname.h is renamed gsfname.h; the procedure names and parameters
+for %device%name file names are changed.
+ - gx_imager_stroke_add now takes an additional argument; a NULL
+value for the device argument of gx_stroke_path_only is no longer valid.
+ - gx_make_clip_translate_device now takes a memory parameter, and no
+container parameter; gx_make_clip_device no longer takes a container
+parameter; gx_mask_clip_initialize and tile_clip_initialize now take a
+memory parameter.
+
+</pre><h3><a name="5.85_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The language documentation still referred to outside clipping.
+(doc/Language.htm)
+
+Documents the new curve join graphics state parameter. (doc/Language.htm)
+
+Documents the fact that the OutputFile device parameter now supports the
+%device%file syntax. (gp.h, doc/Use.htm)
+
+Documents the licensing problems related to GNU readline. (int.mak,
+unix-gcc.mak, gp_gnrdl.c)
+
+</pre><h3><a name="5.85_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The bmpa devices needed gdevppla. (bug introduced in 5.84)
+(devs.mak)
+ - The bmpa devices were accidentally included in the DEVICE_DEVS
+setting in the distributed fileset. (unix-gcc.mak)
+ - msvclib.mak was missing some definitions. (msvclib.mak)
+
+Adds a CC_NO_WARN macro for those few files that produce tons of warnings
+that we can't work around. (bcwin32.mak, dvx-gcc.mak, msvccmd.mak,
+openvms.mak, openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watcw32.mak, wccommon.mak, devs.mak, lib.mak, zlib.mak)
+
+Adds version.mak to msvclib.mak, so library clients can track the version.
+(msvclib.mak)
+
+</pre><h3><a name="5.85_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - -replace didn't work if it was the last item of a module
+description. (genconf.c)
+
+</pre><h3><a name="5.85_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - CCITTFax-compressed bitmaps sometimes used both a Rows value and
+an end-of-block indicator, which some PostScript implementations don't
+handle properly. (gdevpsdf.h, gdevps.c, gdevpsdf.c)
+
+Removes an unused procedure and macro. (gdevlj56.c)
+
+</pre><h3><a name="5.85_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The interpreter cached objects even if the reference had the wrong
+generation number, causing errors if a correct reference occurred later.
+(lib/pdf_base.ps)
+ - Embedded TrueType fonts using the Macintosh encoding sometimes
+caused an error. (lib/gs_ttf.ps)
+
+</pre><h3><a name="5.85_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Multiple contexts were broken (probably since 5.80). Fixing this
+required adding a parameter to context_state_alloc, to provide systemdict.
+(icontext.h, icontext.c, interp.c)
+ - setpagedevice didn't accept the 4-element PageSize values that
+appear in the InputAttributes dictionary. (zmedia2.c)
+ - BuildChar/BuildGlyph was "short circuited" even in some cases
+where it wasn't safe to do so. (ichar.h, zchar.c, zcharout.c)
+ - The show operators didn't properly handle the special case of
+executing within a cshow procedure. (ichar.h, zcfont.c, zchar.c, zcharx.c)
+ - The -dDOINTERPOLATE switch had gotten broken somehow.
+(lib/gs_init.ps)
+ - The is_identity flag wasn't properly cleared when loading cached
+CIE mapping values, causing incorrect output. (zcie.c)
+
+Removes the writable static for the context scheduler. (zcontext.c)
+
+Removes the writable static for the interpreter's group of allocators
+(gs_imemory). This too turned out to be a massive change with many
+NON-BACKWARD-COMPATIBLE changes required in internal procedures. (bfont.h,
+files.h, fname.h, ialloc.h, ifunc.h, imemory.h, interp.h, iparam.h,
+iparray.h, ipcolor.h, isave.h, iscannum.h, istack.h, istream.h, iutil.h,
+store.h, ialloc.c, icontext.c, idebug.c, idict.c, iinit.c, imain.c,
+imainarg.c, interp.c, iparam.c, ireclaim.c, isave.c, iscan.c, iscanbin.c,
+iscannum.c, isstate.h, istack.c, iutil.c, zarray.c, zbfont.c, zcontext.c,
+zdict.c, zfname.c, zdps.c, zdps1.c, zfcmap.c, zdict.c, zfile.c, zfilter.c,
+zfont.c, zfont0.c, zfproc.c, zfreuse.c, zfunc.c, zfunc0.c, zfunc3.c,
+zgeneric.c, zht2.c, ziodev.c, ziodev2.c, zpacked.c, zpcolor.c, zshade.c,
+zupath.c, zvmem.c)
+
+Adds a gs_memory_t * argument to obj_cvp. This is part of the work for
+removing the gs_imemory static: we note it separately because it affects
+code beyond the interpreter. (iutil.h, gp_gnrdl.c, iutil.c, zfileio.c)
+
+Updates interpreter code for the addition of new_mask, test_mask, and
+save_level to gs_ref_memory_t, and the removal of save_level from
+gs_dual_memory_t. (ialloc.h, ialloc.c, isave.c)
+
+Adds a gs_ref_memory_t * argument to all the _param_list_read/write
+procedures. (iparam.h, iparam.c, zcrd.c, zdevice.c, zfdctd.c, zfdcte.c,
+zfdecode.c, zfilter2.c, ziodev2.c, zusparam.c)
+
+Changes the hack in file_alloc_stream that determines whether a gs_memory_t
+* is actually a gs_ref_memory_t *. The former code tested specifically
+whether the allocator was one of the current interpreter allocators; the new
+code simply tests the procedure vector. We aren't 100% sure that this
+change will work reliably. (zfile.c)
+
+Factors common code out of isave.h and store.h. (idosave.h, isave.h,
+store.h)
+
+Removes the reclaim_data member of gs_dual_memory_t, since it is no longer
+useful. (imemory.h, ialloc.c, ireclaim.c)
+
+Makes the default InputAttributes and OutputAttributes elements of page
+device dictionaries writable and (if possible) allocated in local VM, to
+work around bugs in the output of Word Perfect. (lib/gs_setpd.ps)
+
+Modifies the interpreter's error printout to indicate whether dictionaries
+on the stack(s) are writable. (lib/gs_init.ps)
+
+Moves support for %device%name file naming into the library. (fname.h,
+zfile.c, zfname.c [deleted])
+
+Adds interpreter support for the new curve join graphics state parameter.
+(zgstate.c)
+
+</pre><h3><a name="5.85_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - bbox_fill_path device didn't interact with compositors correctly.
+(This problem had no practical effect.) (gdevbbox.c)
+ - kshow didn't check for CID fonts. (gschar.c)
+ - The bbox and ImageType 3 image enumerators had incorrect GC
+descriptors, possibly causing memory-related crashes. (gsstruct.h,
+gdevbbox.c, gximage3.c)
+ - gx_make_clip_[translate_]device took an obsolete container
+parameter. (gxcpath.h, gsshade.c, gxccache.c, gxfill.c, gxstroke.c)
+ - Non-transient clipping devices were used for image clipping, but
+the API didn't support creating them. (gxcpath.h, gxclip.c, gximage3.c,
+gxipixel.c)
+ - Some devices were created without setting their memory member,
+which caused the GC not to trace pointers to them. (gxmclip.h, gxclip2.h,
+gxclip2.c, gximage3.c, gxmclip.c, gxp1fill.c)
+ - The bbox device didn't handle ImageType 3 images correctly.
+(gdevbbox.c)
+ - When the bbox device passed a stroke operation to the library, it
+didn't pass the device, causing absolute-length dots to render incorrectly.
+Fixing this required adding a device parameter to the gx_imager_stroke_add
+procedure. (gxpaint.h, gdevbbox.c, gxpaint.c)
+ - The counter control OtherSubrs (12 and 13) weren't implemented.
+(This probably had no effect.) (gstype1.c)
+ - Type 1 stem hints with negative widths didn't work properly.
+(gxhint2.c)
+ - The debugging output for hintmask and cntrmask printed the vstem
+and hstem counts in the wrong order. (gstype2.c)
+ - If the value of the OutputFile device parameter was too long,
+the result could be memory corruption rather than a rangecheck error.
+(gsdevice.c)
+ - The dash pattern pointer in the saved imager state of a band list
+writer could point inside the writer structure, confusing the garbage
+collector. (gxclist.h, gxclpath.c)
+
+Adds new_mask, test_mask, and save_level instance variables to
+gs_ref_memory_t. This too is part of the gs_imemory work: we note it
+separately because it is the only piece of this work that affects the
+library. (gxalloc.h, gsalloc.c)
+
+Makes cntrmask at the beginning of a charstring act like vstemhm + cntrmask,
+as with hintmask. This is not documented, but we see it used this way in
+Type 2 CharStrings. (gstype2.c)
+
+Cleans up formatting and macros. (gp.h)
+
+Speeds up the bounding box device by skipping path filling if the entire
+path falls within the already-accumulated bounding box, and by defining the
+device as 8-bit gray to avoid halftone computation. (gdevbbox.c)
+
+Adds a procedure, gs_show_use_glyph, for implementing the show-in-cshow
+hack. (gschar.h, gschar.c)
+
+Moves support for %device%file file naming into the library. (lib.mak,
+gsfname.h, gxiodev.h, gdevpipe.c, gsfname.c)
+
+Makes the OutputFile device parameter recognize %device%file syntax, as well
+as "-" and (on platforms that support pipes) |command. (gp.h, gxdevice.h,
+gdevprn.c, gsdevice.c, gp_unix.c)
+
+Adds a separate graphics state parameter to indicate how to treat joins
+between segments of a flattened curve, for compatibility with Adobe
+interpreters (which apparently always use bevel joins). (gsline.h,
+gxclpath.h, gxline.h, gsline.c, gsstate.c, gxclpath.c, gxclrast.c,
+gxstroke.c)
+
+Changes code slightly, introducing an unnecessary assignment, in order to
+suppress a compiler warning. (gxclpath.c)
+
+Tweaks the CIE_LOAD_CACHE_BODY macro slightly. (gscie.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.84"></a>Version 5.84 (tester) (5/19/99)</h2>
+
+<p>
+This fileset completes the implementation of planar rendering, and fixes a
+few more bugs, some of them surprisingly old.
+
+<h3><a name="5.84_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The dopath vector device implementation procedure was changed to
+take an optional matrix argument.
+(Library)
+ - The internal memory__need_ macros are changed to upper case.
+
+</pre><h3><a name="5.84_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - There was a duplicate entry for GENINIT_XE in the Watcom makefile.
+(wctail.mak)
+
+Adds the duplex-capable LaserJet drivers (ljet3d and ljet4d) to all standard
+configurations. (bcwin32.mak, dvx-gcc.mak, msvc32.mak, openvms.mak,
+openvms.mmk, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak,
+watcw32.mak)
+
+Adds a PROFILE compilation switch, similar to DEBUG, to work around the fact
+that gprof under GNU/Linux doesn't count time in memset, memcpy, or other C
+library procedures. PROFILE will substitute our own versions of memset,
+memcpy, and memmove. Currently, this switch is supported only on Unix.
+(unix-end.mak)
+
+Defines a new makefile macro, SYNC, that gives the module name for thread /
+synchronization facilities; makes async.dev include this module. This is
+posync on Unix and VMS platforms, winsync on MS Windows and OS/2 platforms.
+(bcwin32.mak, dvx-gcc.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
+openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watclib.mak, watcw32.mak)
+
+Splits off the rules common to the 3 Windows makefiles (watc, watclib,
+winlib) into a separate file, defining new modules winplat.dev and
+winsync.dev. (watc.mak, watclib.mak, winlib.mak, winplat.mak)
+
+Removes -Wcast-align from the gcc switches, since this produces huge numbers
+of warnings that we will certainly never get rid of. (unix-gcc.mak)
+
+</pre><h3><a name="5.84_Utilities"></a>Utilities</h3><pre>
+
+Enhances the ps2pdf script with a patch contributed by Jim Avera
+(avera@fjst.com) so that it can be used as a pipe by specifying "-" for the
+input and/or output file. (lib/ps2pdf)
+
+Modifies ps2ascii to handle landscape pages better. (lib/ps2ascii.ps)
+
+</pre><h3><a name="5.84_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - PDF output that used Pattern colors on more than one page failed
+to include the color space resource in the resource dictionaries of pages
+other than the first. (gdevpdf.c)
+ - The PDF writer emitted bitmap patterns inverted in Y.
+(gdevpdfi.c)
+ - The PCL XL driver's GC descriptor had become incorrect, causing
+crashes. (gdevpx.c)
+ - The pdfwrite driver could still emit coordinates too large for
+Acrobat Reader to handle, for stroked lines with an unusual CTM.
+(gdevpdfd.c)
+ - The pxl drivers emitted invalid output for dashed lines.
+(gdevpx.c)
+ - The [e]pswrite and pxl drivers scaled line widths and dash
+patterns incorrectly. Fixing this properly involved refactoring the
+handling of scaling for paths, and removing gdev_vector_stroke_path.
+(gdevpsdf.h, gdevvec.h, gdevpdfd.c, gdevps.c, gdevpsdf.c, gdevpx.c,
+gdevvec.c)
+ - The lj5 drivers didn't pad images to a multiple of 4 bytes per
+scan line, producing invalid PCL XL output. (We don't see how they could
+ever have worked, in fact.) (gdevpcl.h, gdevlj56.c, gdevpcl.c)
+
+Adds a user-contributed driver for the DEClaser 2100. This is a GPL'ed
+driver. (contrib.mak, gnu/src/gdevln03.c)
+
+Makes the UsePlanarBuffer parameter, and planar buffering capability, from
+the PPM devices available to general printer devices, but in a separate
+module to avoid making all printer devices require gdevmpla.c. (gdevppla.h,
+gdevpbm.c, gdevppla.c)
+
+Adds a UsePlanarBuffer parameter to the async BMP drivers, for testing.
+(gdevbmpa.c)
+
+Removes the comment about the instability of the "vector" driver interface.
+(gdevvec.h, gdevvec.c)
+
+</pre><h3><a name="5.84_Platforms"></a>Platforms</h3><pre>
+
+Splits off the Windows thread and synchronization primitives into a new file
+and a new module, winsync.dev. (watc.mak, watclib.mak, winlib.mak,
+gp_win32.c, gp_wsync.c)
+
+</pre><h3><a name="5.84_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - As usual, gcc failed to flag some signed/unsigned char mismatches.
+(gp_gnrdl.c, iutil.c)
+
+Moves the indexed color space cache lookup procedure from the interpreter to
+the library. (zcsindex.c)
+
+</pre><h3><a name="5.84_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - If a 2-D CCITTFax stream ended with 1 or 2 "vertical 0" codes,
+those codes would be ignored. (scfd.c)
+
+</pre><h3><a name="5.84_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - gsnogc.h contained an extern for gs_gc_reclaim rather than for
+gs_nogc_reclaim. (gsnogc.h)
+ - Banded images in Indexed color spaces rendered incorrectly.
+(gximage.c)
+ - A function declared some arguments as float rather than floatp.
+(gshtx.h, gshtx.c)
+ - As usual, gcc failed to flag some public/private mismatches.
+(gdevmrun.c)
+ - The tracing output for monobit images printed 8 bits per pixel
+rather than 1 bit per pixel. (gxidata.c)
+ - A Pn macro was used in a header file that didn't include stdpre.h.
+(gscdefs.h, gconf.c, genht.c, gxhtbit.c, gxclrast.c)
+ - get_bits_rectangle for the planar memory device didn't flush the
+last byte of each row. (gdevmpla.c)
+ - When banding, Indexed color spaces using a procedure rather than a
+lookup table caused a crash. (gxcolor2.h, gscolor2.c, gxclrast.c)
+ - When filling a region with a Pattern with a rotated matrix, some
+parts of the region could be missed. (bug introduced by a fix in 5.38)
+(gxp1fill.c)
+
+When compiling with gcc, replaces inline with __inline__ to get rid of a
+potential warning. (stdpre.h)
+
+Adds our own implementations of memset, memcpy, and memmove, to work around
+the fact that gprof under GNU/Linux doesn't count time in C library procedures.
+(memory_.h, string_.h, gsmisc.c)
+
+Finishes implementing planar rendering for printer / banded devices.
+(gdevprn.h, gxclist.h, gxdevbuf.h, gdevprn.c, gxclread.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.83"></a>Version 5.83 (tester) (5/13/99)</h2>
+
+<p>
+This fileset was driven mostly by commercial licensee demands; it doesn't
+fix most of the problems reported in 5.82. It features smaller threshold
+halftones, the ability to store halftones in ROM, and a nearly complete
+implementation of a planar memory device.
+
+<p>
+Items pushed off to the next fileset:
+<ul>
+<li> - Finish multi-planar band buffers (requires changing
+gdev_prn_render_lines to be based on memory devices rather than buffer
+pointers).
+<li> - For Adobe compatibility, change stroking so that it always
+uses
+bevel joins between the segments of a curve (this directly contradicts the
+Red Book, but it's what Adobe interpreters do).
+<li> - Implement an IdiomSet for Corel Draw fountain fills?
+(idioms.ps)
+<li> - Change shading so it doesn't install a clip device (make this
+a
+driver procedure instead), because that prevents clist_fill_path from being
+called.
+</ul>
+
+<h3><a name="5.83_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The spaces.indexed member of a vm_spaces structure has been
+renamed spaces_indexed (a macro).
+ - The gs_reclaim procedure is changed to a macro, GS_RECLAIM.
+(Library)
+ - The bits member of a halftone order is now called bit_data, and is
+opaque; halftone orders are now "objects"; gx_ht_alloc_[ht_]order now take
+an additional argument.
+ - The architectural values in arch.h are now all upper-case.
+(std.h defines lower-case synonyms for backward compatibility.)
+ - The buffer device procedures for printer devices are now collected
+in a structure; this also changes the parameters of clist_init_params.
+ - The parameters of the buffered device setup_buf_device procedure
+are changed.
+ - gx_path_copy_reducing now takes an additional argument, an imager
+state, for flattening stroked paths.
+ - Memory devices now must be created by copying a prototype device,
+rather than by initializing individual members, even if they are only being
+used for limited purposes.
+
+</pre><h3><a name="5.83_Documentation"></a>Documentation</h3><pre>
+
+Documents the new facility for compiled halftones, and the old one for
+compiling initialization files. (doc/Make.htm)
+
+</pre><h3><a name="5.83_Utilities"></a>Utilities</h3><pre>
+
+Adds a utility for compiling halftones into the executable. Also defines
+the dependency lists for the auxiliary programs in lib.mak and int.mak,
+rather than replicating them for every platform. (bcwin32.mak,
+dvx-tail.mak, gs.mak, int.mak, lib.mak, msvctail.mak, openvms.mak,
+openvms.mmk, os2.mak, unix-aux.mak, wctail.mak, genht.c)
+
+Adds support for halftone "resources" in the makefile. (genconf.c)
+
+Adds code to determine the primary and secondary CPU cache sizes
+empirically. (genarch.c)
+
+Changes the architecture definition macros from lower to upper case, with
+lower-case synonyms in std.h for backward compatibility. (gsjconf.h, std.h,
+genarch.c)
+
+Changes the ps2ai utility so that jtxt3 can be set from the command line, to
+allow pstoedit to generate AI3-compatible output. (lib/ps2ai.ps)
+
+</pre><h3><a name="5.83_Procedures"></a>Procedures</h3><pre>
+
+Adds some optional library modules to the base library compilation list, so
+that compilation errors won't slip through. (lib.mak)
+
+</pre><h3><a name="5.83_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - A change from char to byte needed to be undone (gcc didn't catch
+this). (iutil.c)
+
+Adds a 167x167 stochastic halftone that CalComp put in the public domain.
+(lib/ht_ccbnm.ps, int.mak, unixinst.mak)
+
+Updates the interpreter for the change to per-VM-spaces garbage collection.
+(igc.h, ialloc.c, icontext.c, igc.c, ilocate.c, imain.c, interp.c,
+ireclaim.c, isave.c, zfile.c, zht.c, zht1.c, zht2.c)
+
+Updates places that only use gsstruct.h for extern_st to use gsstype.h
+instead. (icontext.h, ifont.h)
+
+</pre><h3><a name="5.83_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some types needed updating to reflect the change in the string
+freelists. (gsalloc.c, gsnogc.c)
+ - clip_copy_color didn't initialize some variables in the fastest
+case. (bug probably introduced in 5.83) (gxclip.c)
+ - The fit_fill_ and fit_copy_ macros didn't always parenthesize
+their dev argument. (gxdevice.h)
+ - The sample_load macros returned the wrong results for depth 1 and
+2. Amazingly enough, it appears that this case had never been used.
+(gsbitops.h)
+ - The standard allocator would free chunks even if is_controlled was
+true. (gsalloc.c)
+ - Stroking drew semicircles rather than full circles for round
+joins. (gxstroke.c)
+ - The calculation of how finely to sample a curve to achieve a
+particular flatness didn't take line width into account when stroking (the
+flatness has to apply to the outside of the stroked curve). (gxpath.h,
+gxpcopy.c, gxstroke.c)
+
+Speeds up the bbox device a little. (gdevbbox.c)
+
+Speeds up the most common cases of clipping a little. (gxclip.h,
+gxacpath.c, gxclip.c)
+
+Makes halftone orders more "object-oriented", so we can use an alternate
+representation that trades time for space. This requires a
+NON-BACKWARD-COMPATIBLE CHANGE in the gx_ht_order structure and the
+arguments of gx_ht_alloc_[ht_]order. (gxcldev.h, gxdht.h, gzht.h, gsht.c,
+gsht1.c, gshtscr.c, gshtx.c, gsistate.c, gxcht.c, gxclimag.c, gxclrast.c,
+gxht.c, gxhtbit.c)
+
+Makes it possible to compile-in halftone threshold arrays and orders (e.g.,
+in ROM) so they don't take up RAM at execution time. (gscdefs.h, gxdht.h,
+gxdhtres.h, gzht.h, gconf.c, gsht.c, gsht1.c, gxclrast.c, gxhtbit.c)
+
+Adds some statistics to the 24-bit memory device (in DEBUG mode only, as
+usual). (gdevm24.c)
+
+Makes the 24-bit memory device optionally use memcpy for wide rectangle
+fills. We thought this got us a factor of 3 speedup on a Pentium with gcc's
+library, but it turned out to be a profiler artifact. (gdevm24.c)
+
+Cleans up some formatting. (gxclip.h)
+
+Dusts off the run-length-encoded memory device, changing it so it reverts to
+the unencoded representation when necessary. This code hasn't been tested,
+and is not currently used. (gdevmrun.h, gdevrun.c [deleted], gdevmrun.c)
+
+Adds more statistics to the clipping device. (gxclip.c)
+
+Adds an implementation of the MD5 Algorithm defined in RFC 1321, derived
+directly from the text of the RFC and not from the reference implementation.
+This code uses the zlib license, which is more liberal than the Aladdin or
+GNU licenses. (md5.h, md5.c)
+
+Finishes implementing the planar memory device, including generalizing it to
+store varying numbers of bits per plane rather than 1 bit per plane.
+(gdevmem.h, gdevmpla.h, gxdevmem.h, gdevmem.c, gdevmpla.c)
+
+Updates clients to initialize memory devices more fully, now required to
+distinguish chunky from planar devices. (gxpcmap.c)
+
+Mostly implements enhancing printer / banded devices so they can use a
+planar memory device for rendering and/or band buffering. The code
+currently works only in the non-banded case. (gdevprn.h, gxclist.h,
+gxdevbuf.h, gxdevcli.h, gdevprn.c, gxclist.c, gxclread.c)
+
+For testing, adds a -dUsePlanarBuffer=&lt;boolean&gt; parameter to the PPM devices
+to make them use a planar memory device. (gdevpbm.c)
+
+Cleans up some code formatting. (gdevmem.c)
+
+Makes the garbage collection procedure separately settable for each group of
+VM spaces. (In an environment with "async" rendering, the renderer has its
+owm VM space group.) Unfortunately, this involved a NON-BACKWARD-COMPATIBLE
+change in the vm_spaces structure. (gsgc.h, gsnogc.h, gsnogc.c)
+
+Updates a client for the change in gs_reclaim; also makes the renderer
+thread use the non-tracing garbage collector. (gdevprna.c)
+
+Updates the non-tracing GC to reflect its role as a garbage collection
+procedure in a vm_spaces. (gsnogc.c)
+
+Enhances the non-tracing GC so that if a chunk ever contains no strings, the
+string marking area reserved for the tracing GC is added to free space.
+(gxalloc.h, gsalloc.c, gsnogc.c)
+
+Changes the font cache allocator to use a different structure descriptor for
+its data so that memory dumps will show "font cache bytes" rather than just
+"bytes". (gxccman.c)
+
+Splits gsstruct.h into gsstype.h, which contains enough of the definition of
+structure type descriptors to support extern_st, and gsstruct.h, which is
+needed to actually define structure types. (gsstruct.h, gsstype.h,
+gxfmap.h)
+
+Updates places that only use gsstruct.h for extern_st to use gsstype.h
+instead. (gsbitmap.h, gsccolor.h, gscie.h, gxfont.h, gzpath.h, scommon.h,
+gscdevn.c, gscrd.c, gscrdp.c, gsshade.c, gxpath2.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.82"></a>Version 5.82 (tester) (4/24/99)</h2>
+
+<p>
+This fileset fixes a few odds and ends, removes a couple more writable
+statics, and improves performance in a couple of areas.
+
+<h3><a name="5.82_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - dict_uid_param now takes an additional argument, the interpreter
+context pointer.
+ - obj_cvp now takes a stream rather than a string.
+
+</pre><h3><a name="5.82_Documentation"></a>Documentation</h3><pre>
+
+Documents the -dGraphicsAlphaBits and -dTextAlphaBits switches; reorganizes
+the documentation of the -d/-s switches by function. (doc/Use.htm)
+
+</pre><h3><a name="5.82_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - Building with MSVC didn't work if COMPILE_INITS was selected.
+(msvctail.mak)
+ - The cp script didn't work on all MS-DOS systems, since the systems
+are incompatible with each other in undocumented ways. (cp.bat)
+ - Using ^ in a command line failed on Windows 98. (wccommon.mak)
+ - Watcom compilation under Windows NT didn't include some needed
+headers. (wccommon.mak)
+ - The Watcom compiler's quoting requirements were inconsistent.
+(gs.mak)
+ - GLCCWIN was used without being defined. The MS DOS/Windows
+makefiles really are a tangled mess.... (watc.mak)
+ - The build directories didn't get created automatically when
+compiling with the Watcom compiler. (watc.mak)
+
+Adds more optimization switches for Watcom compilation. (wccommon.mak)
+
+</pre><h3><a name="5.82_Utilities"></a>Utilities</h3><pre>
+
+Adds a pfbtopfa script. (unixinst.mak, lib/pfbtopfa, lib/pfbtopfa.bat,
+lib/pfbtopfa.ps)
+
+</pre><h3><a name="5.82_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - "Vector" drivers (currently only the PCL XL driver) filled
+polygons incorrectly. (gdevvec.c)
+ - The PCL XL drivers produced incorrect output for images. (We
+can't understand how they ever could have worked.) (gdevpx.c)
+ - The PCL XL drivers skipped blank pages. (gdevpx.c)
+ - The page origin for the clj driver was set incorrectly. (fix from
+Artifex) (gdevclj.c)
+ - The map_color_rgb procedure for the 32-bit CMYK bmp device was
+wrong, causing RasterOps to produce incorrect output. (fix from Artifex)
+(gdevbmp.c)
+
+Works around a bug in Acrobat Reader's Print command, by changing the
+scaling for bitmap patterns. (gdevpdfi.c)
+
+Cleans up some formatting and macros. (gdevpx.c)
+
+Factors out some common parameter-putting utilities. (gdevpsdf.h,
+gdevpdfp.c, gdevpsdp.c)
+
+</pre><h3><a name="5.82_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The DLL code "knew" it could only be compiled on Windows and OS/2
+platforms. (gsdll.c)
+
+Removes a Mac-specific file that is now moved to the Mac-specific archive.
+(gsdllmac.h [deleted])
+
+</pre><h3><a name="5.82_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - An invalidaccess could occur when repositioning the file after
+executing an image XObject. (lib/pdf_draw.ps)
+ - Indexed color spaces gave an error if the underlying space was
+represented as a name rather than an array. (bug introduced in 5.80)
+(lib/pdf_draw.ps)
+
+</pre><h3><a name="5.82_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The interpreter reentrancy changes broke the GNU readline
+interface. (gp_gnrdl.c, ziodev.c)
+ - The TrappingType resource category wasn't defined.
+(lib/gs_res.ps, lib/gs_trap.ps)
+ - CIE color spaces in shading patterns didn't work. (lib/gs_ll3.ps)
+ - Printing a string of more than 200 characters with == was broken.
+Fixing this required a NON-BACKWARD-COMPATIBLE change in the argument list
+of obj_cvp. (bug introduced in 5.80) (iutil.h, gp_gnrdl.c, idebug.c,
+iutil.c, zfileio.c)
+
+Changes the interpreter trace output to be somewhat more readable.
+(interp.c)
+
+Makes the linking of the binary token scanning procedure static rather than
+dynamic. (int.mak, inobtokn.c, iscan.c, zbseq.c)
+
+Makes the language level a property of the context, eliminating a writable
+static. (icstate.h, idparam.h, ilevel.h, icontext.c, idparam.c, iinit.c,
+interp.c, zcontext.c, zmisc2.c)
+
+Updates clients for the change in dict_uid_param. (zbfont.c, zfcmap.c,
+zpcolor.c, zshade.c)
+
+</pre><h3><a name="5.82_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - There was a signed/unsigned char * mismatch. (sfxfd.c)
+ - Some very picky compilers complained inappropriately about a
+const/non-const mismatch. (gxcht.c)
+ - The format of the string freelists didn't allow chunks with more
+than 64K bytes of string area. (gxalloc.h, gsnogc.c)
+
+Moves the interface definitions for the memory dump debugging code into a
+header file. (gxalloc.h, gsalloc.c)
+
+Makes the standard memory manager recognize more effectively when it can
+reset the high-water mark for occupied space in the current chunk. This
+turns out to make a big difference in preventing sandbars. (gxalloc.h,
+gsalloc.c)
+
+Makes clipping lists keep track of their minimum and maximum X values, so
+that they can return accurate outer clipping boxes, which in turn allows
+more effective pre-clipping of filled regions. (gxcpath.h, gxacpath.c,
+gxclip.c, gxcpath.c)
+
+Makes clipping devices cache their clipping box, so they can return it
+quickly. (gxcpath.h, gxclip.c)
+
+Makes the colored halftone logic check bounding boxes before running the
+expensive algorithms. This improves performance dramatically for some files
+without costing much for the rest. (gxcht.c)
+
+Adds some more debugging printout for clipping lists. (gxcpath.c)
+
+Cleans up formatting and macros. (gdevdflt.c, gdevhit.c, gdevnfwd.c)
+
+Factors out some common parameter-putting utilities. (gsparamx.h,
+gsparamx.c, gstrap.c)
+
+Adds some more tracing output for images. (gxidata.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.81"></a>Version 5.81 (tester) (4/14/99)</h2>
+
+<p>
+This fileset cleans up most of the bug tail from 5.80, but it doesn't fix
+all the reported problems. It also factors out the platform-specific DLL
+calls, and extends the DLL API to the Mac.
+
+<h3><a name="5.81_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Platforms)
+ - gsdll_get_bitmap is now defined in gsdllos2.h; gsdll_copy_dib,
+_copy_palette, _draw, and _get_bitmap_row are now defined in gsdllwin.h.
+
+(Interpreter)
+ - zcolor_remap_one may return 0 rather than o_push_estack. (This
+change actually occurred in 5.80, but was not documented.)
+
+(Library)
+ - The initialized parameters of an image scaling filter are now
+stored in a subsidiary structure.
+ - The names max_support and log2_max_support are changed to
+MAX_ISCALE_SUPPORT and LOG2_MAX_ISCALE_SUPPORT.
+ - The structure definition for the smoothed image scaling filter is
+now private, although its descriptor remains public.
+ - The criteria for when to use Interpolate are now more stringent.
+
+</pre><h3><a name="5.81_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - gs_trap.ps wasn't installed by `make install'. (unixinst.mak)
+ - A semicolon was missing in one definition of GS_LIB_DEFAULT.
+(watc.mak)
+ - ll.tr and _temp_.tr weren't created in the obj directory.
+(watc.mak, wctail.mak)
+ - RM_ was defined incorrectly on one platform. (wccommon.mak)
+
+</pre><h3><a name="5.81_Utilities"></a>Utilities</h3><pre>
+
+Makes some minor edits in ansi2knr, contributed by a user, to remove gcc
+warnings. (ansi2knr.c)
+
+</pre><h3><a name="5.81_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - There was an int/uint mismatch. (gdevbmpa.c)
+ - There was a const/non-const mismatch. (gdevbmpa.c)
+
+Changes the p*m drivers so that they use the default color mapper when
+possible, speeding up execution. (gdevpbm.c)
+
+</pre><h3><a name="5.81_Fonts"></a>Fonts</h3><pre>
+
+Adds Black as indicating that a bold font should be substituted if
+necessary. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.81_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The Watcom NT compiler implements setmode and fileno but not
+_setmode and _fileno. (gp_ntfs.c)
+ - The procedure parameter passed to the Windows _beginthread
+procedure had the wrong prototype. (gp_win32.c)
+ - Watcom's _beginthread procedure takes an extra argument.
+(windows_.h, gp_win32.c)
+
+Extends the DLL API to work on the Mac. This required some restructuring of
+the code, and some NON-BACKWARD-COMPATIBLE changes to move
+environment-specific calls into environment-specific header files.
+(pcwin.mak, os2.mak, winint.mak, dwdll.h, gsdll.h, gsdllmac.h, gsdllos2.h,
+gsdllwin.h, dpmainc.c, dwdll.cpp, dwnodll.cpp, gdevmswn.c, gdevpm.c,
+gdevwdib.c, gsdll.c)
+
+</pre><h3><a name="5.81_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Changes the interpreter to handle two more specification-violating
+conditions that Adobe Acrobat accepts: truncation of %%EOF to %%EO, and use
+of Dest links with no Dests dictionary. (lib/pdf_main.ps)
+
+</pre><h3><a name="5.81_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - gcc failed to flag initialization of an automatic aggregate, which
+is allowed in neither ANSI nor traditional C. (iutil.c)
+ - The system name table lacked the last 3 entries.
+(lib/gs_btokn.ps)
+ - Interpolated images always wound up at (0, 0). (bug introduced in
+5.80) (gxipixel.c)
+ - The Watcom compiler didn't consider "const uint" and "const
+unsigned" to be compatible. (ifunc.h)
+ - The code to detect identity transfer functions could cause
+transfer functions not to be processed at all. (icolor.h, zcolor.c,
+zcolor1.c, zht2.c)
+ - The Level 2 redefinition of restore could do an extra grestore,
+possibly creating a temporary reference to a freed object. (zdevice2.c)
+
+Adds more tracing for undo-saves, and changes a macro to a procedure.
+(isave.c)
+
+Removes some #define'd casts. (isave.c)
+
+</pre><h3><a name="5.81_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - When banding, the color space wasn't reinitialized for each page.
+(gxclist.c)
+ - The criterion for allowing image interpolation still produced
+"mush" for some important classes of image. (gxiscale.c)
+ - The Watcom compiler didn't consider "const uint" and "const
+unsigned" to be compatible. (gscdefs.h, gconf.c)
+ - Identity black generation and undercolor removal functions weren't
+passed through the band list correctly. (gxcldev.h, gxclbits.c, gxclrast.c)
+ - Once again, gcc failed to give a warning for extern followed by
+private. (gxcdevn.h)
+ - glyphshow set up the text operation in a way that created a
+garbage collector error. (gschar.c)
+
+Makes gs_opendevice complete the device procedure vector if the device
+wasn't already open. (gsdevice.c)
+
+Factors out the image scaling filter so that we can use either Adobe's
+algorithm or the Mitchell filter. This involves a NON-BACKWARD-COMPATIBLE
+CHANGE in the way the filter parameters are defined. (gximage.h, siscale.h,
+sisparam.h, gxclimag.c, gxidata.c, gxiscale.c, siscale.c)
+
+Makes the criteria for when to use interpolation stricter, since we are
+still using the Mitchell filter. (gxiscale.c)
+
+Starts to implement Adobe's image interpolation algorithm. (siinterp.h,
+siinterp.c, gxiscale.c)
+
+Speeds up RGB interpolated images by detecting runs of output color.
+(gxiscale.c)
+
+Makes the default RGB color mapper a "known" mapper that can be propagated
+through device pipelines. (gxdevice.h, gsdevice.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.80"></a>Version 5.80 (tester) (4/6/99)</h2>
+
+<p>
+This version contains the first, and, we hope, largest wave of changes in
+the interpreter required to make the interpreter fully reentrant.
+Unfortunately, many externally visible APIs, including the argument list for
+operator procedures, required changes.
+
+<p>
+Because of the magnitude of the change, we incremented the version number to
+5.80.
+
+<p>
+The non-backward-compatible API changes were confined to the interpreter:
+the (very minor) changes to the library required to support interpreter
+reentrancy are fully backward-compatible.
+
+<p>
+This fileset also implements DeviceN color spaces (always using the
+alternate space), including Indexed spaces over DeviceN spaces, for all uses
+except smooth shading.
+
+<h3><a name="5.80_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - names_init now takes a gs_ref_memory_t * rather than a gs_memory_t
+*.
+ - type_print_strings, type_name_strings, and
+ref_type_properties_data are now REF_TYPE_DEBUG_PRINT_STRINGS,
+REF_TYPE_NAME_STRINGS, and REF_TYPE_PROPERTIES_DATA.
+ - The undocumented .writecvp operator, and obj_cvp, now take an
+integer instead of a Boolean to define the type of output desired.
+ - The argument list for operators is changed from os_ptr to
+i_ctx_t *. Many internal interpreter APIs have changed.
+ - The typedef name for operator procedures is changed from op_proc_p
+to op_proc_t.
+ - gs_interpret now takes an additional context (i_ctx_t **)
+argument.
+ - The interpreter's rescheduling and time-slicing procedures,
+gs_interp_reschedule_proc and gs_interp_time_slice_proc, now take a context
+(i_ctx_t **) argument.
+ - The Type 1 interpreter push_value callback is renamed push_values;
+the first argument of push_values and pop_value has changed from
+gs_font_type1 * to void *.
+ - dict_put*, dict_copy*, dict_undef, dict_resize, dict_grow, and
+dict_unpack now take an additional argument, a dictionary stack where the
+dictionary may be present.
+
+</pre><h3><a name="5.80_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The dependency list for the (dummy) trapping feature was wrong.
+(int.mak)
+ - The directory for jerror_.h was incorrect. (jpeg.mak)
+
+Removes the never-used -header switch from genconf. (genconf.c)
+
+Adds priority-sorted resources to genconf, currently used only for image
+classes. (genconf.c)
+
+Adds an imageclass resource to genconf, for what used to be called image
+strategies. (genconf.c)
+
+</pre><h3><a name="5.80_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ansi2knr didn't recognize id1(id2, xxxxx) as not being a function.
+(ansi2knr.c)
+ - viewpcx still referred to the deleted PCXDecode filter.
+(lib/viewpcx.ps)
+ - strlen was called without being declared. (genarch.c)
+
+</pre><h3><a name="5.80_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Some drivers that called gdev_prn_open_printer didn't check the
+return code for errors. (gdevdjet.c, gdevhl7x.c)
+ - The cljet5 driver didn't handle long-edge feed properly. (from
+Artifex) (gdevclj.c)
+ - The [e]pswrite driver could produce incorrect output if the input
+file had zero-length lines. (gdevps.c)
+ - The X driver didn't handle byte-swapped 16-bit displays.
+(gdevx.c)
+ - There was an int/uint mismatch. (gdevbmp.c)
+ - Some needed headers weren't included. (gdevdcrd.c, gdevpdfo.c)
+ - The updated mswinpr2 driver wouldn't compile with older Windows
+header files. (gdevwpr2.c)
+
+Removes some unnecessary #includes. (gdevps.c)
+
+Adds user-contributed drivers for the CoStar LabelWriter II Plus and XL
+label printers. (gdevcslw.c)
+
+Speeds up color mapping for the bitrgb driver a little, by using the default
+procedure. (gdevbit.c)
+
+</pre><h3><a name="5.80_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with odd-length glyf definitions caused an
+invalidfont error. (lib/gs_ttf.ps)
+
+Changes the font substitution mechanism slightly to be more useful to the
+PDF interpreter. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.80_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - Some needed headers weren't included. (watc.mak, watclib.mak,
+winlib.mak, gp_win32.c)
+
+</pre><h3><a name="5.80_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - There were many signed/unsigned char type errors that gcc didn't
+catch. (gp_gnrdl.c)
+ - The operator definition list for zdouble was too long. (int.mak,
+zdouble.c)
+
+Removes some unnecessary #includes. (zchar.c)
+
+Speeds up names_string_ref. (inamedef.h, inames.h, imain.c, iname.c)
+
+Speeds up reading string/name array parameters. (iparam.c)
+
+Refactors the implementation of ==, so that all types other than arrays and
+dictionaries are handled in C code. (lib/gs_init.ps, iutil.h, iref.h,
+gp_gnrdl.c, idebug.c, iutil.c, zfileio.c, ztype.c)
+
+Changes the type name for operator procedures from op_proc_p to op_proc_t,
+for consistency and also to help detect places that need the argument list
+changed. (ichar.h, interp.h, iref.h, opdef.h, interp.c, iutil.c, zchar.c,
+zcharx.c, zcontrol.c, zupath.c)
+
+Changes the argument type for operators from os_ptr to i_ctx_t *. (i_ctx_t
+is an alias for gs_context_state_t.) This also requires adding a context
+pointer to many internal procedures, or changing an os_ptr argument to
+i_ctx_t *. This is a MASSIVE NON-BACKWARD-COMPATIBLE change which we simply
+saw no way to avoid if the interpreter was to be made fully re-entrant. See
+"Incompatible changes" above for externally visible changes.
+(lib/gs_init.ps, bfont.h, btoken.h, dstack.h, estack.h, files.h, ichar.h,
+ichar1.h, icharout.h, icie.h, icolor.h, icontext.h, icsmap.h, ifilter.h,
+ifont1.h, igstate.h, iht.h, iimage.h, iimage2.h, imain.h, imemory.h,
+interp.h, ipacked.h, iref.h, iscan.h, istream.h, opdef.h, oper.h,
+opextern.h, ostack.h, ialloc.c, icontext.c, iinit.c, imain.c, inouparm.c,
+interp.c, ireclaim.c, iscan.c, iscanbin.c, zarith.c, zarray.c, zbfont.c,
+zbseq.c, zcfont.c, zchar.c, zchar1.c, zchar2.c, zchar32.c, zchar42.c,
+zcharout.c, zcharx.c, zcid.c, zcie.c, zcolor.c, zcolor1.c, zcolor2.c,
+zcontext.c, zcontrol.c, zcrd.c, zcsdevn.c, zcsindex.c, zcspixel.c,
+zcssepr.c, zdevice.c, zdevice2.c, zdict.c, zdosio.c, zdouble.c, zdpnext.c,
+zdps.c, zdps1.c, zfbcp.c, zfcmap.c, zfdctd.c, zfdcte.c, zfdecode.c, zfile.c,
+zfileio.c, zfilter.c, zfilter2.c, zfilterx.c, zfont.c, zfont0.c, zfont1.c,
+zfont2.c, zfont32.c, zfont42.c, zfproc.c, zfreuse.c, zfunc.c, zfzlib.c,
+zgeneric.c, zgstate.c, zhsb.c, zht.c, zht1.c, zht2.c, zimage.c, zimage2.c,
+zimage3.c, ziodev.c, ziodev2.c, zmath.c, zmatrix.c, zmedia2.c, zmisc.c,
+zmisc1.c, zmisc2.c, zmisc3.c, zpacked.c, zpaint.c, zpath.c, zpath1.c,
+zpcolor.c, zrelbit.c, zrop.c, zshade.c, zstack.c, zstring.c, zsysvm.c,
+ztoken.c, ztrap.c, ztype.c, zupath.c, zusparam.c, zvmem.c, zvmem2.c)
+
+Changes caching for the interpreter's CIE color spaces so that instead of
+changing the color space installation procedure to one that schedules the
+sampling of the procedures though a back door, it leaves the installation
+procedure alone and schedules the sampling in the color-space-specific
+setcolorspace operator. This is needed for interpreter reentrancy.
+(icie.h, zcie.c, zcrd.c)
+
+Makes the linkage from the dictionary machinery to the cached values in the
+dictionary stack and the name table explicit, by adding a dstack pointer to
+all the relevant dict_* procedures. This is needed for interpreter
+reentrancy. (iddstack.h, idict.h, idstack.h, idict.c)
+
+Updates clients for the change in the dictionary API. For each changed
+dict_ procedure, we add an idict_ procedure that uses i_ctx_p-&gt;dict_stack as
+the additional argument. (iddict.h, icontext.c, iinit.c, interp.c,
+iparam.c, iscanbin.c, zdps.c, zfcmap.c, zdict.c, zfont.c, zfont0.c,
+zgeneric.c, zht2.c, zmisc2.c)
+
+Changes Pattern color remapping so that it saves information in the
+interpreter's part of the graphics state, rather than manipulating the
+e-stack directly. This is needed for interpreter reentrancy. (errors.h,
+icremap.h, igstate.h, interp.c, zgstate.c, zpcolor.c)
+
+Adds to the "main instance" structure a pointer to the currently executing
+context. This is needed for interpreter reentrancy. (imain.h, iminst.h,
+main.h, imain.c, imainarg.c)
+
+Changes the argument list for operator initialization procedures from void
+to i_ctx_t *. (opdef.h, ireclaim.c, zbfont.c, zbseq.c, zcontext.c, zfile.c,
+zfont.c, zpcolor.c)
+
+Changes the initialization of the interpreter's allocators so it doesn't
+presume the allocator structure is global. (ialloc.h, ialloc.c, imain.c)
+
+Factors out the structure definition of the stacks, which is needed for
+defining the state of a context, from the API, which is only needed by
+actual clients. (icstate.h, idsdata.h, idstack.h, iesdata.h, iestack.h,
+iosdata.h, iostack.h, isdata.h, istack.h)
+
+Changes filter error reporting so that the report_error procedure doesn't
+need access to the interpreter. (interp.h, interp.c, zfile.c, zfileio.c)
+
+Completes the implementation of DeviceN color spaces at the interpreter
+level. (lib/gs_res.ps, lib/gs_lev2.ps, lib/gs_ll3.ps, icsmap.h, zcsdevn.c,
+zcsindex.c, zcssepr.c, zimage.c)
+
+Speeds up color mapping for identity transfer, BG, or UCR functions.
+(zcolor.c)
+
+</pre><h3><a name="5.80_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The L range for Lab color spaces was wrong. (lib/pdf_draw.ps)
+ - Images in Lab color spaces came out all black. (lib/pdf_draw.ps)
+
+Improves the font substitution mechanism slightly. (lib/pdf_font.ps)
+
+</pre><h3><a name="5.80_Streams"></a>Streams</h3><pre>
+
+Adds an error string to the stream state structure, which stream
+implementations can set when returning an error. The motivation is to allow
+the PostScript interpreter to put this into $error.errorinfo. (scommon.h,
+stream.c)
+
+</pre><h3><a name="5.80_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The S_ISCHR fix in 5.73 had a typo. (stat_.h)
+ - The garbage collector traced dash pattern pointers even if the
+pattern had no elements. (gzline.h, gsistate.c)
+ - Always tracing the clip_path element of gx_device_clist for
+garbage collection could cause crashes, because this pointer could be stale.
+However, we have to trace this pointer if an image is being processed.
+(gxclist.c)
+ - A close-brace was positioned incorrectly. (No effect on the
+working of the code.) (gximage3.c)
+ - Some macros caused some compilers to complain about functions that
+didn't return values. (gsmemlok.c)
+ - A procedure vector wasn't declared const. (gsmemlok.c)
+ - Some needed headers weren't included. (gscrdp.c)
+ - A const pointer was being treated as non-const. (gxcpath.c)
+ - The algorithm for choosing halftone cell dimensions required an
+unreasonably close angle tolerance (0.01 degrees, rather than 1% of a
+90-degree possible difference). (gshtscr.c)
+
+Speeds up arcs a little more. (gspath1.c)
+
+Removes some unnecessary #includes. (gxclpath.h, gxcpath.h, gzcpath.h,
+gxccman.c, gxclip.c, gxcpath.c, gxi12bit.c, gxicolor.c, gxifast.c,
+gximono.c, gxiscale.c, gxpcmap.c)
+
+Cleans up some formatting. (gxpath.c)
+
+Re-enables image interpolation for images that have at least 8 bits of input
+data per pixel. This is still a compromise.... (gxiscale.c)
+
+Enhances the default implementation of parameter lists so that a C parameter
+list can forward unrecognized param_read calls to another parameter list.
+This allows constructing incrementally modified parameter lists for internal
+purposes. (gsparam.h, gscparam.c)
+
+Changes the first argument of the Type 1 charstring interpreter push_value
+(which is renamed push_values) and pop_value callbacks from the font pointer
+to an arbitrary pointer passed in to the interpreter. This is needed for
+PostScript interpreter reentrancy. (gstype1.h, gxfont1.h, gxtype1.h,
+gstype1.c, gxtype1.c)
+
+Adds an allocator wrapper that calls a closure to attempt to free up memory
+if an allocation fails. This is used for asynchronous operation (waiting
+for the page queue to empty) and operation with an optional disk for the
+band list. (gsmemret.h, gsmemret.c)
+
+Adds the retrying wrapper to the malloc allocator. (gsmalloc.c)
+
+Makes "async" printer devices use the retrying wrapper. (gdevprna.c)
+
+Makes clist_fill_parallelogram recognize rectangles. This makes a big
+difference for images rotated 90 degrees. (gsrect.h, gdevddrw.c,
+gxclpath.c)
+
+Arranges to construct the list of image classes (formerly called strategies)
+statically rather than dynamically. (lib.mak, gscdefs.h, gxiclass.h,
+gximage.h, gconf.c, gxi12bit.c, gxicolor.c, gxifast.c, gximono.c,
+gxipixel.c, gxiscale.c)
+
+Implements Indexed color spaces for high-level image banding. (gxclist.h,
+gxclpath.h, gxclimag.c, gxclrast.c)
+
+Arranges to construct the blank bitmap for colored patterns statically
+rather than dynamically. (gsbitmap.h, gxbitmap.h, gxcht.c)
+
+Changes FORCE_STRIP_HALFTONES from a #define to a static Boolean.
+(gshtscr.c)
+
+Implements alternate-space DeviceN color spaces. (gscspace.h, gxcdevn.h,
+gscdevn.c)
+
+Implements DeviceN color spaces for images. (gximage.h, gsimage.c,
+gxi12bit.c, gxicolor.c, gxidata.c, gximage3.c, gximono.c, gxipixel.c)
+
+Speeds up color mapping a bit. (gxfmap.h, gsdevice.c, gsstate.c,
+gxclbits.c, gxclrast.c, gxcmap.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.73"></a>Version 5.73 (tester) (3/19/99)</h2>
+
+<p>
+This fileset fixes a few bugs and adds a couple of minor performance
+improvements. Its purpose is to fix a fairly serious memory management bug
+and a Microsoft-platform compilation problem, both introduced in 5.72.
+
+<h3><a name="5.73_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Removes the restriction on device registration that was introduced
+in 5.72.
+ - gx_[c]path_scale_exp2 are replaced by gx_[c]path_scale_exp2_shared.
+
+</pre><h3><a name="5.73_Documentation"></a>Documentation</h3><pre>
+
+Identifies GNU readline support as user-contributed, and adds the author's
+name. (int.mak, unix-gcc.mak, gp_gnrdl.c)
+
+Notes that an edit is required for GNU readline for AIX. (doc/Make.htm)
+
+Changes the bug reporting e-mail address to bug-gs@aladdin.com.
+(doc/Bug-form.htm, doc/New-user.htm, doc/Use.htm, imainarg.c)
+
+</pre><h3><a name="5.73_Procedures"></a>Procedures</h3><pre>
+
+Adds FEATURE_DEVS_EXTRA and DEVICE_DEVS_EXTRA, reserved for setting from the
+command line. (gs.mak)
+
+</pre><h3><a name="5.73_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - A needed cast was missing. (gdevx.c)
+
+</pre><h3><a name="5.73_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - A needed cast was missing. (zfname.c)
+ - The CFF loader didn't handle empty subsections correctly.
+(lib/gs_cff.ps)
+ - GNU readline gave an error, rather than expanding the input
+buffer, when called in response to %lineedit. (files.h, zfileio.c,
+ziodev.c)
+ - GNU readline wasn't always initialized, causing a crash when an
+attempt was made to shut it down. (iminst.h, imain.c)
+
+Adds more tracing to the CFF loader. (lib/gs_cff.ps)
+
+Adds some deconstifying casts to compensate for broken headers in the GNU
+readline package. (gp_gnrdl.c)
+
+</pre><h3><a name="5.73_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The bounding box device didn't ignore filling paths consisting
+only of a moveto. (gdevbbox.c)
+ - Some systems have S_IFCHR but not S_ISCHR. (stat_.h)
+ - The clipping list accumulator didn't merge single rectangles
+correctly. (gxacpath.c)
+ - The clipping list accumulator wasn't aggressive enough about
+merging rectangles. (Performance effect only.) (gxacpath.c)
+ - The page wasn't cleared when installing a new device. (bug
+introduced in 5.72) (gsdevice.c)
+ - With graphics anti-aliasing enabled, executing clip or eoclip
+followed by fill or stroke produced incorrect output. (bug introduced
+between 5.10 and 5.50) (gxpath.h, gspaint.c, gxcpath.c, gxpath2.c)
+ - The garbage collector could crash if any banded devices were
+active. (bug introduced in 5.72) (gdevprn.c)
+
+Changes memory management for device instances to allocate the structure
+type objects dynamically. This gets rid of a static, and also gets rid of
+the requirement that device prototypes be registered, at the expense of an
+extra copy of the (small) structure type object per instance of certain
+devices. (gscdefs.h, gxdevcli.h, gxdevice.h, gconf.c, gsdevice.c)
+
+Disables image interpolation for all high-resolution images, not just
+black-and-white, since this produces better-looking output. (gxiscale.c)
+
+Speeds up path bounding box computation a little. (gxpath2.c)
+
+Speeds up clipping a little. (gxclip.c)
+
+Cleans up formatting a bit. (gxacpath.c)
+
+Adds support for libpng version 1.0.3, but (for now) updates only the
+OpenVMS and Unix makefiles to use it. (libpng.mak, openvms.mak,
+openvms.mmk, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak)
+
+Attempts to work around picky compilers that don't allow assigning T[M][N]
+to const T[M][N]. (gxcht.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.72"></a>Version 5.72 (tester) (3/17/99)</h2>
+
+<p>
+This fileset finally gets rid of the need to have jpeg, libpng, or zlib
+source code on Unix systems that already have these libraries available. It
+also starts to add support for general DeviceN color spaces.
+
+<p>
+Works in progress:
+<ul>
+<li> - Fix Fontmap -&gt; Fontmap.GS link, which VMS can't handle.
+<li> - Make x11alpha do real alpha blending.
+<li> - spdiff.c is unfinished, partly wrong.
+<li> - DeviceN support is in progress. In gxcht.c,
+set_ht_colors_le_4
+and set_color_ht_gt_4 don't have any way to color-map >4 planes.
+</ul>
+
+<h3><a name="5.72_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The str argument of arg_push_memory_string is no longer const.
+ - The last argument of print_reloc is now const.
+
+(Library)
+ - Clients should never call the device open_device or close_device
+procedure directly: they should call gs_opendevice or gs_closedevice.
+ - The fn_free_functions procedure has been made private.
+ - The first argument of gs_currentpoint is no longer const.
+ - References to header files in the third-party libraries must now
+include a trailing _, i.e.: jerror_.h jmorecf_.h jpeglib_.h png_.h zconf_.h
+ - IJG JPEG library versions before v5a are no longer supported.
+ - ilog2 replaces small_exact_log2.
+ - Support for "outside" clipping has been removed.
+ - Clients that define their own devices now must either register
+them in the makefile (using the SET[P]DEV[2] macros) or set the stype
+pointer in the static prototype to the correct structure type (or at least a
+structure type with the correct procedures).
+
+</pre><h3><a name="5.72_Documentation"></a>Documentation</h3><pre>
+
+Clarifies the fact that clients should never call the device open_device or
+close_device procedure directly. (doc/Drivers.htm)
+
+Updates contact information for Artifex Software. (doc/Commprod.htm,
+doc/New-user.htm)
+
+Clarifies the fact that Aladdin did not write gdevcdj.c. (gdevcdj.c)
+
+Documents the new -TTYPAUSE switch. (doc/Use.htm)
+
+Adds SCO OpenServer 5.0.5 to the list of systems where Ghostscript is known
+to build. (doc/Make.htm)
+
+Notes that the MIPSpro 7.2.1.3m compiler produces incorrect output.
+(doc/Make.htm)
+
+</pre><h3><a name="5.72_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The Unix install directory ($(gsdatadir)) and the Unix default
+search path ($(gsdatadir)/lib) weren't compatible. (bug introduced since
+5.50) (unixinst.mak)
+ - The compilation rule for echogs omitted a dependency and also
+failed to specify a directory for header files. (unix-aux.mak)
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. (devs.mak, gs.mak, int.mak,
+lib.mak, jpeg.mak)
+
+Adds a -dTTYPAUSE switch to cause .confirm to read from /dev/tty instead of
+stdin, useful when the data input is a pipe. (lib/gs_init.ps)
+
+</pre><h3><a name="5.72_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - Some preprocessor macros were defined twice on VMS. (echogs.c)
+ - traceop.ps didn't build operator-tracing procedures in global VM.
+(This didn't matter before we introduced local pseudo-operators.)
+(lib/traceop.ps)
+ - geninit produced invalid output or hung if the input files didn't
+have the correct EOL representation for the platform. (geninit.c)
+
+Updates a (probably otherwise obsolete) file for the deletion of the private
+JPEG library error message table. (bughunt.sh)
+
+</pre><h3><a name="5.72_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - A procedure returning void tried to return a value. (gdevtfax.c)
+ - For 24-bit displays, XGetImage can return an image in which
+bits_per_pixel is 32 rather than 24, which is not at all obvious from the
+documentation; also, the bit and byte ordering may not be MSBFirst.
+(gdevx.c)
+ - XFree takes a char *, not a void *. (gdevx.c)
+ - The fix in 5.71 to adjust the width of TIFF images introduced
+another bug. (gdevtfax.c)
+ - If the X driver used a standard colormap, pixel values 255 and
+less didn't map back to RGB properly. (bug introduced in 5.71) (gdevxcmp.c)
+ - The ForceMono addition to gdevbit.c (in 5.71) was incorrect.
+(gdevbit.c)
+ - There was a const mismatch in an extern. (gdevxalt.c)
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. Fixing this required
+referencing all third-party library header files through *_.h files.
+(gdevjpeg.c, gdevpdfi.c, gdevpng.c, gdevpsdi.c, gdevpsdp.c)
+ - There was no way to cause the bounding box device to give up its
+reference to the target. (gdevbbox.h, gdevbbox.c)
+ - pdfwrite crashed if given a 12-bit-per-sample CMYK image when
+ConvertCMYKImagesToRGB was true, and produced invalid output for other
+12-bit-per-sample images (PDF limits bits-per-sample to 8). (gdevpsdi.c)
+ - pdfwrite mangled planar images if bits-per-sample was other than
+8. (bug introduced since 5.50) (gdevpdfi.c)
+
+Changes some code to reduce compiler warnings about casts discarding const.
+(gdevxalt.c)
+
+Removes a test that allowed referencing the statically allocated instance of
+the alternative X drivers. (gdevxalt.c)
+
+Changes a reference to small_exact_log2. (gdevsvga.c)
+
+Greatly improves the PDF writer's handling of simple pattern fills, by
+retaining them as pattern fills. (gdevpdfx.h, gdevpdf.c, gdevpdfi.c)
+
+</pre><h3><a name="5.72_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - Cn in a font name wasn't recognized as indicating a condensed
+font. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.72_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. Fixing this required
+referencing all third-party library header files through *_.h files.
+(zfdctd.c, zfdcte.c)
+ - An /undefined error occurred on floating point numbers whose
+integer part exceeded the size of a long (normally 31 bits) and that also
+included a fraction. (iscannum.c)
+ - ialloc.c included gxarith.h unnecessarily. (ialloc.c)
+
+When opening a terminal for reading, always sets the buffer size to 1. This
+does not apply to %stdin, %lineedit, or %statementedit. (zfile.c)
+
+Changes code to use the new deconstifying freeing procedures, to remove
+deconstifying casts. (gsargs.h, ialloc.h, gsargs.c, zfname.c, zfunc.c)
+
+Adds a writable packed ref pointer variant to ref.value, to remove compiler
+warnings about casts discarding const. (igc.h, iref.h, idict.c, igc.c,
+igcref.c)
+
+Changes the help printouts to use the new printf_program_ident procedure.
+(imainarg.c)
+
+Generalizes clients to handle color spaces that may have more than 4
+components. (zcsdevn.c, zcsindex.c, zcssepr.c, zdpnext.c, zfdecode.c)
+
+Removes support for outside clipping, which we implemented only because we
+misinterpreted a requirement. (zpath.c)
+
+</pre><h3><a name="5.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Selecting a colored Pattern color space caused an error.
+(lib/pdf_draw.ps, lib/pdf_ops.ps)
+ - Reading data from a subfile with no filter caused an error.
+(lib/pdf_base.ps)
+
+Allows mask images to omit BitsPerComponent: Acrobat Reader accepts this
+even though the PDF specification requires it to be present (with value =
+1). (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.72_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The PixelDifference filters didn't propagate leftover bits in the
+last byte of a row. (bug probably introduced in 5.60) (spdiff.c)
+ - The 1- and 2-bit-per-pixel PixelDifferenceEncode filters were
+broken. (spdiff.c)
+
+Changes code slightly to remove a warning about an uninitialized variable.
+(spdiff.c)
+
+Extends the PixelDifference filters to handle more than 4 Colors.
+s_PDiff_max_Colors is the maximum value. (spdiffx.h, spdiff.c)
+
+Adds a stream for converting 12-bit samples to 8-bit. (gdevpsds.h,
+gdevpsds.c)
+
+Gets rid of the no longer needed private copy of the JPEG error message
+table. (sdcte.c, sdeparam.c, sjpegerr.c [deleted], sjpegc.c)
+
+</pre><h3><a name="5.72_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - If a 1-bit-per-pixel image terminated early, the last few scan
+lines might not be written out. (gxidata.c)
+ - The bbox device could leave its target in a half-open state,
+because it called the open/close_device procedures directly rather than
+going through gs_open/closedevice. We "fixed" this by making this device
+forward open and close, but conditionally, so that clients can choose.
+(gdevbbox.c)
+ - Third-party library source code was required even if the
+corresponding SHARE_xxx option was set to 1. Fixing this required
+referencing all third-party library header files through *_.h files.
+(sdcparam.c, sdctc.c, sdctd.c, sddparam.c, sjpegc.c, sjpegd.c, sjpege.c,
+sjpegerr.c)
+ - Low-memory recovery in the band list writer sometimes didn't work,
+because a test was backwards. (gxcldev.h, gxclist.c)
+ - Executing a put_params during band rasterizing didn't update
+cached values in the imager state. This was probably not a problem in
+practice, since the only parameters that affect cached values (device color
+space, depth, and color mapping) were very rarely set. (gxclrast.c)
+ - Converting 12-bit planar images to chunky format could store
+beyond the end of the output area and corrupt memory. (gsflip.h, gsflip.c)
+ - The algorithms for converting 4-plane, 1- and 2-bit planar images
+to chunky format were wrong. (gsflip.c)
+ - Images that lay entirely outside the page could cause a memory
+access error. (gxclimag.c)
+ - The bbox device could return excessively conservative values for
+stroked paths. (gxpaint.h, gdevbbox.c, gxpaint.c, gxstroke.c)
+ - Banding devices now include some pointers that the garbage
+collector must trace. (gdevprn.h, gxclist.h, gxdevice.h, gdevprn.c,
+gsdevice.c, gxclist.c)
+
+Adds a gs_opendevice procedure to mirror gs_closedevice. (gsdevice.h,
+gsdevice.c)
+
+Adds deconstifying freeing procedures to the memory manager. This allows us
+to have pointers as structure members that should be const * for all
+ordinary clients, and still be able to free the referenced objects without a
+compiler warning. (gsmemory.h, gsmemory.c)
+
+Changes code, often to use the new deconstifying freeing procedures, to
+remove deconstifying casts. (gspath.h, gxfunc.h, gsfunc.c, gsfunc0.c,
+gsfunc3.c, gspath.c, gsptype1.c)
+
+Changes the eprintf macros so they print the version as well as the program
+name. (std.h, gscdef.c, gsmisc.c)
+
+Adds procedures that update cached values in graphics or imager states after
+setting device parameters. Clients should use these when setting parameters
+of devices that may be current in graphics or imager states. Note that this
+is only a partial solution for a much deeper problem, and may even have to
+be replaced at some point. (gsdevice.h, gsdevice.c)
+
+Defines GS_CLIENT_COLOR_MAX_COMPONENTS (in gsccolor.h),
+GX_DEVICE_COLOR_MAX_COMPONENTS (in gxcindex.h), and GS_IMAGE_MAX_COMPONENTS,
+and starts to use them where needed, in anticipation of implementing DeviceN
+color spaces. (gsccolor.h, gsdcolor.h, gsiparam.h, gsiparm4.h, gxcindex.h,
+gxctable.h, gximage.h, gxshade.h, gdevplnx.c, gscdevn.c, gscolor2.c,
+gxcht.c, gxclimag.c, gxcmap.c, gxicolor.c, gxctable.c, gxi12bit.c)
+
+Replaces small_exact_log2 by a procedure ilog2 that computes floor(log2(n)).
+(gxarith.h, gsmisc.c, gspaint.c, gxccman.c, gxclimag.c, gxclrect.c)
+
+Upgrades gsflip.c to handle >4 planes. (gsbitops.h, gsflip.h, gsflip.c)
+
+Speeds up getting and testing memory device prototypes a little. (gdevmem.c)
+
+Speeds up adding arcs to a path a little. (gspath1.c)
+
+Increases the precision of a precomputed constant from float to double.
+(gxpath.h)
+
+Adds a new band list operation to make circles smaller and faster.
+(gxclpath.h, gxclpath.c, gxclrast.c)
+
+Adds an accessor procedure for the start point of the current subpath.
+(gxpath.h, gxpath2.c)
+
+Removes support for outside clipping, which we implemented only because we
+misinterpreted a requirement. (gspath.h, gxcldev.h, gxcpath.h, gxpath.h,
+gspath.c, gxacpath.c, gxclip.c, gxclpath.c, gxclrast.c, gxcpath.c)
+
+Changes gs_copydevice to require that static prototypes either be registered
+in gx_device_list or have a correct stype pointer. (This is already the
+case for all devices in code we distribute.) (gsdevice.c)
+
+Adds ENUM_PTRS_PROC and RELOC_PTRS_PROC macros for giving a name to the
+typed pointer to the object being processed. (gsstruct.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.71"></a>Version 5.71 (tester) (3/3/99)</h2>
+
+<p>
+This fileset reinstates support for TrueColor X displays, and adds optional
+support for GNU readline. It also includes a little more work on the new
+driver text API.
+
+<h3><a name="5.71_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The *line_accum* macros are now capitalized; declare_line_accum is
+renamed DECLARE_LINE_ACCUM_COPY, and DECLARE_LINE_ACCUM is new.
+
+</pre><h3><a name="5.71_Documentation"></a>Documentation</h3><pre>
+
+Documents the CIE joint cache invariant more accurately. (gscie.h)
+
+Adds a request for xdpyinfo/xwininfo output to the problem reporting form.
+(doc/Bug-form.htm)
+
+</pre><h3><a name="5.71_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The default search path was missing the lib subdirectory on many
+platforms. (dvx-gcc.mak, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watc.mak, watclib.mak, watcw32.mak)
+ - The dependency list for the X Windows drivers was incorrect,
+sometimes causing needed recompilation to be omitted. (devs.mak)
+
+</pre><h3><a name="5.71_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The representation of maximum unsigned values produced warnings on
+some compilers (specifically, gcc with -Wtraditional). (genarch.c)
+ - Some string variables weren't declared const. (echogs.c,
+genarch.c)
+ - The viewpbm utility was broken for pgm and ppm (but not pbm).
+(bug introduced in 5.66) (lib/viewpbm.ps)
+
+</pre><h3><a name="5.71_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The X driver didn't handle TrueColor displays properly.
+(gdevxcmp.h, gdevxcmp.c)
+ - The alternative X drivers didn't implement get_bits properly.
+(gdevxalt.c)
+ - The X driver specified the byte order incorrectly for displays
+with more than 8 bits per pixel. (gdevx.c)
+ - The X driver used the wrong number of bits for comparing colors on
+visuals with fixed color maps. (gdevxcmp.h, gdevxcmp.c)
+ - Some symbols were multiply defined with -DNOPRIVATE. (gdevbit.c)
+ - If a file specified a paper size, rather than using the default,
+the G3/G4 fax output drivers didn't adjust the width to a legal one for fax
+systems. (gdevtfax.c)
+
+Segregates the resource lists, for which warnings about casting of const to
+non-const string types should be suppressed, into a separate file.
+(devs.mak, gdevx.h, gdevxini.c, gdevxres.c)
+
+Splits off the code related to color mapping for X Windows, for greater
+understandability. (devs.mak, gdevx.h, gdevxcmp.h, gdevx.c, gdevxcmp.c,
+gdevxini.c)
+
+Changes code slightly to remove warnings about signed/unsigned integer
+constants. (gdevxalt.c)
+
+Changes code to remove unused variables. (gdevx.c, gdevxalt.c)
+
+Adds a user-contributed driver for the H-P LaserJet 4D. (devs.mak,
+gdevdjet.c)
+
+Makes the bitcmyk driver reset its map_cmyk_color procedure dynamically
+according to the depth, allowing more efficient execution in the 1- and
+8-bit cases. (gdevbit.c)
+
+Adds a settable option, AdjustWidth, to control whether the fax-format
+drivers (faxg*, tiffcrle, tiffg*) adjust the page width to legal fax values.
+Its default value is 1 (do adjust). (devs.mak, gdevtfax.c)
+
+Adds a ForceMono parameter to the bitcmyk/bitrgb devices to implement a
+special monochrome-in-CMYK mode requested by a customer. (gdevbit.c)
+
+Removes the TRIM_ and EXPAND_BITS_TO_BYTES options from the bit devices,
+since they are no longer needed. (gdevbit.c)
+
+</pre><h3><a name="5.71_Fonts"></a>Fonts</h3><pre>
+
+Changes the substitution mechanism for condensed / narrow fonts, so that the
+PDF interpreter can use it. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.71_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The bind operator generated unaligned accesses and might not
+operate reliably. (bug introduced in 5.70) (zmisc.c)
+ - If the BuildChar procedure of a font included an image or
+imagemask operator, charpath would (incorrectly) display the character.
+(zimage.c)
+
+Adds a bogus return statement to suppress a compiler warning. (gs.c)
+
+Changes code slightly to remove warnings about signed/unsigned integer
+constants. (store.h, ibnum.c)
+
+Changes the build date format to %d-%02d-%02d. (lib/gs_init.ps, imainarg.c)
+
+Rearranges some code to add readline support. (files.h, imain.c, zfileio.c,
+ziodev.c)
+
+Adds support for GNU readline, with several completion keys, contributed by
+a user. (int.mak, gs_rdlin.ps, gp_gnrdl.c)
+
+Changes the font substitution machinery slightly so the PDF interpreter can
+use it. (lib/gs_fonts.ps)
+
+</pre><h3><a name="5.71_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - In-line images caused a syntaxerror or stackunderflow.
+(lib/pdf_draw.ps)
+ - The font substitution mechanism didn't detect Condensed fonts.
+(lib/pdf_font.ps)
+ - The font substitution mechanism didn't use the intelligent
+algorithm used for PostScript files. (lib/pdf_font.ps)
+
+Prints a message when substituting for a font on the basis of its
+descriptor. (lib/pdf_font.ps)
+
+</pre><h3><a name="5.71_Streams"></a>Streams</h3><pre>
+
+Adds an interface and default implementation for readline. (srdline.h,
+stream.h, stream.c)
+
+</pre><h3><a name="5.71_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - A void procedure attempted to return a value. (stream.c)
+ - A pointer was declared with an extra *. (gsmemory.c)
+ - An argument would be stringified with traditional C. (gdevdbit.c)
+ - The check for validity of the CIE joint caches was wrong, leading
+to incorrect output in some obscure cases. (gsciemap.c)
+ - A tiny rounding inaccuracy could cause an occasional blank line
+when rendering adjacent images. (gxipixel.c)
+ - Some symbols were multiply defined with -DNOPRIVATE. (gsptype2.h)
+ - If a character was too large to be cached, it didn't use
+anti-aliasing, even if TextAlphaBits was >1. (gspaint.c)
+
+Changes code slightly to remove warnings about signed/unsigned integer
+constants. (gsccode.h, gsmisc.c, gxcht.c)
+
+Changes code to remove a warning about an unhandled case in a switch.
+(gsstruct.h, gsmemory.c)
+
+Changes code to remove unused variables. (gxcindex.h, gdevdbit.c,
+gdevprn.c, gxiscale.c)
+
+Restructures the header files for the new text API, adding the SINGLE
+options in text_params, enough new elements in text_enum to store all the
+arguments of text_begin, and new elements in text_enum to hold results
+returned by text_process. This code is no longer "subject to [arbitrary]
+change without notice", although it is still not very stable. (gstext.h,
+gxtext.h, gstext.c)
+
+Changes code to remove warnings about uninitialized variables. (gxipixel.c)
+
+Changes the syntactic form of some constants yet again to suppress a
+different set of compiler warnings. (gxsample.c)
+
+Adds a procedure to fix the charpath-in-BuildChar problem. (gsimage.h,
+gsimage.c, gsptype1.c)
+
+Speeds up the handling of certain RasterOp cases for CMYK devices.
+(gxdevice.h, gxdevmem.h, gdevdrop.c, gdevmem.c, gdevmr8n.c, gdevrops.c)
+
+Adds a platform-specific interface for reading lines from stdin. This is
+intended primarily to support GNU readline. (lib.mak, gp.h, gp_strdl.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.70"></a>Version 5.70 (internal) (2/20/99)</h2>
+
+<p>
+This fileset includes substantial changes to the interpreter in support of
+making it fully reentrant (eliminating writable globals).
+
+<h3><a name="5.70_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Interpreter)
+ - The ref_stack structure has been renamed ref_stack_t, and has been
+changed substantially. Clients should now access all of its members, other
+than the pointers to the current block, through the macros or procedures
+defined in istack.h. The STACK_LOOP_{BEGIN,END} macros have been removed.
+ - The argument of context_state_load is no longer const.
+ - Each file's table of operator definitions is now limited to 16
+entries. op_def_table[] no longer exists: use op_index_def() instead.
+ - invalid_file_entry now has an associated VM space,
+avm_invalid_file_entry, that must be used in constructing invalid file refs.
+ - restore will now undo binding of pseudo-operators. Attempting to
+bind a local pseudo-operator into a global procedure will cause an
+invalidaccess error.
+
+</pre><h3><a name="5.70_Documentation"></a>Documentation</h3><pre>
+
+Updates the driver documentation a bit. It probably still includes a lot of
+out-of-date text. (doc/Drivers.htm)
+
+Improves the problem reporting form to make it absolutely clear that test
+data are required, and that the problem must be reproducible without using a
+viewer. (doc/Bug-form.htm)
+
+Documents the -dDOINTERPOLATE switch. (doc/Use.htm)
+
+Documents the difference between public and tester releases, in connection
+with making tester releases available to everyone. (doc/New-user.htm)
+
+Updates the list of history files. (doc/Readme.htm)
+
+Adds a questionnaire for people who want to be notified of new test
+releases. (doc/Readme.htm, doc/Tester.htm)
+
+</pre><h3><a name="5.70_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - A ! was missing before an include. (bcwin32.mak, msvc32.mak)
+ - A trailing \ in some macro definitions was quoted incorrectly.
+(bcwin32.mak, msvc32.mak)
+ - An editing error prevented a makefile from working. (bcwin32.mak)
+ - The 16-bit spooler executable didn't reference its icon correctly.
+(gs16spl.rc)
+ - The Watcom makefiles had gotten badly out of date. (watc.mak,
+watclib.mak, wccommon.mak)
+ - Some DEVICE_DEVS lines were too long for the shell to handle.
+(openvms.mmk)
+ - A space was missing before a colon. (openvms.mmk)
+
+Updates MSVC support to handle version 6. (msvc32.mak)
+
+Extends genconf to handle function types as well as image types, and changes
+the output for image types. (genconf.c)
+
+Desupports the use of CONFIG for selecting between multiple configurations,
+since parameterized output directories do this better. (bcwin32.mak,
+dvx-gcc.mak, gs.mak, int.mak, lib.mak, msvc32.mak, msvclib.mak, openvms.mak,
+openvms.mmk, os2.mak, ugcclib.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watclib.mak, watcw32.mak)
+
+Adds a -dDOINTERPOLATE switch to force Interpolate in all images.
+(lib/gs_init.ps)
+
+</pre><h3><a name="5.70_Utilities"></a>Utilities</h3><pre>
+
+Rewrites viewpcx to eliminate dependence on a special filter.
+(lib/viewpcx.ps)
+
+</pre><h3><a name="5.70_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The [e]pswrite and pdfwrite drivers wrote out clipping paths using
+the winding number rule even if the path had been set with eoclip.
+(gdevpdfd.c, gdevvec.c)
+ - Some occurrences of ushort should have been gx_color_value.
+(gdevpbm.c)
+ - A comment was accidentally left outside comment quotes.
+(gdev3852.c)
+ - There was a char/byte mismatch not covered by a cast.
+(gdevdcrd.c)
+ - There were still some references to the 'huge' keyword, which has
+been superseded by FAR. (gdevwdib.c)
+ - Some obsolete references to which_colors hadn't been removed.
+(gdevwdib.c)
+ - The [e]pswrite driver produced incorrect output for a curveto or
+closepath followed by a lineto and then a moveto. (gdevps.c)
+ - The [e]pswrite driver could produce incorrect output for paths
+ending with a lineto. (gdevps.c)
+ - The name paper_sizes was used both by a driver and by other code,
+causing a problem when building with -dNOPRIVATE. (gdevclj.c)
+
+Consolidates the X error handling statics into a structure. (gdevxini.c)
+
+Updates the pdfwrite driver to reflect the addition of state to the
+ASCII85Encode filter. (gdevpsdf.c)
+
+Adds a user-contributed driver for the Lexmark 5700 printer (black-and-white
+only). (contrib.mak, gdevlxm.c)
+
+Updates the mswinpr2 driver with a new, user-contributed one that includes
+interaction with the user. (gdevwpr2.c)
+
+</pre><h3><a name="5.70_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - When TrueType support was present, the FONTPATH scanner didn't
+recognize TrueType fonts whose 'type' was "true" rather than the documented
+<00 01 00 00>. (lib/gs_ttf.ps)
+ - When DEBUG was set, loading a TrueType font could cause an
+/undefined error. (lib/gs_ttf.ps)
+
+</pre><h3><a name="5.70_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Local (pseudo-)operators could get bound into global procedures
+with 'bind', causing dangling references. Attempting this now causes an
+invalidaccess error. Fixing this also required making restore undo binding
+of pseudo-operators. (zmisc.c)
+ - A harmless dictfull error occurring during language level
+switching caused an error. (zmisc2.c)
+ - If given a closed input file, flushfile caused an error, rather
+than doing nothing. (zfileio.c)
+
+Renames the ref_stack structure as ref_stack_t, and factors it so that the
+parts set only at initialization are separated from the dynamic parts, in
+support of moving the stacks from static to dynamic storage. (icstate.h,
+idebug.h, idstack.h, iestack.h, iostack.h, iparam.h, iparray.h, istack.h,
+idebug.c, interp.c, iparam.c, istack.c, zcontext.c, zpacked.c, zvmem.c)
+
+Moves the dynamic part of the stacks in-line in the context structure; gets
+rid of the statically allocated stacks. (dstack.h, estack.h, icontext.h,
+icstate.h, idstack.h, iestack.h, interp.h, iostack.h, ostack.h, icontext.c,
+iinit.c, interp.c, zcontext.c)
+
+Packages the dictionary lookup statistics in a structure, like the other
+statistics. (idict.c)
+
+Changes from dynamic to static initialization of the function type table.
+(int.mak, ifunc.h, iconf.c, zfunc.c, zfunc0.c, zfunc3.c)
+
+Removes the PCXDecode filter. (zfilterx.c)
+
+Removes more writable statics. (int.mak, btoken.h, files.h, icstate.h,
+igstate.h, ipacked.h, iscan.h, icontext.c, imain.c, iscan.c, iscanbin.c,
+zbseq.c, zcolor2.c, zcontext.c, zgstate.c, ziodev.c, zmath.c, zpcolor.c,
+zpacked.c)
+
+Changes the representation of the operator table to avoid allocating a
+dynamic copy. This introduces a limit of 16 entries per definition set.
+(int.mak, opdef.h, iconf.c, idebug.c, iinit.c, interp.c, iutil.c,
+zcontext.c, zcontrol.c, zdict.c, zfileio.c, zgstate.c, ztype.c)
+
+Includes the ASCII85Decode filter in all configurations, for simplicity.
+(iscan.c, zfdecode.c)
+
+Makes the invalid file reference point to a static object. (files.h,
+icontext.c, zfile.c, ziodev.c)
+
+Changes all dictfull error returns from the dictionary code to use
+return_error. This should have been done a long time ago! (idict.c)
+
+Increases the predefined size of systemdict a little more because .upp files
+may define a lot of new entries. (iinit.c)
+
+Adds a few more interpreter statistics. (interp.c)
+
+</pre><h3><a name="5.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Images never closed the data stream, placing a heavy load on the
+garbage collector to clean up streams and stream states. (lib/pdf_draw.ps)
+ - Streams stored on external files didn't work. (lib/pdf_base.ps)
+
+Reorganizes code slightly to allocate less memory for in-line images.
+(lib/pdf_draw.ps)
+
+Speeds up some common operations a little. (lib/pdf_base.ps)
+
+</pre><h3><a name="5.70_Streams"></a>Streams</h3><pre>
+
+Removes the PCXDecode filter. (spcxx.h [deleted], spcxd.c [deleted])
+
+Changes the name of a variable for greater clarity. (stream.c)
+
+Splits off the ASCII85Decode filter into a separate file, since it turns out
+to be convenient to include it in all configurations. (sa85d.h, sa85x.h,
+sa85d.c, sfilter2.c)
+
+Makes an initialization entry point available for non-heap-allocated
+streams. (stream.h, stream.c)
+
+Changes the ASCII85Encode filter so it always produces lines of at most 80
+characters, not counting the EOD marker. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, because this filter now needs a state structure, which it didn't
+before. (sa85x.h, sfilter2.c)
+
+</pre><h3><a name="5.70_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Reference counting of graphics state elements was wrong when
+creating multiple contexts, causing memory corruption. (bug probably
+introduced in 5.68) (gsstate.c)
+ - If CIE joint caches were created because the reference count of
+the existing caches was >1, the new caches weren't initialized correctly.
+(bug introduced in 5.60, found by Ray Johnston.) (gscie.c)
+ - If Margins are set so that part of the default clipping region
+lies outside the ((0,0),(width,height)) device coordinate space, the fast
+case of images could cause a memory access error. (gxifast.c)
+ - In the case of a halftone with more bits than levels,
+gx_check_tile_cache could incorrectly return false, causing images to render
+more slowly than they should. (gzht.h, gxht.c)
+ - There was a const mismatch between an argument and the formal
+parameter. (gdevprn.h, gdevprn.c, gxclread.c)
+ - An error in the definition of st_imager_state_num_ptrs caused the
+garbage collector to omit marking one pointer in imager states, possibly
+causing memory corruption. (gxistate.h)
+ - The bbox device, used with no target, didn't properly handle
+images where more data was provided than needed. (gdevbbox.c)
+
+Removes any pretense of supporting multiple threads in a single-threaded
+environment. Dummy synchronization primitives, however, are still provided.
+(gp_nsync.c)
+
+Removes more writable statics. (gximage.h, gxi12bit.c, gxino12b.c,
+gxipixel.c)
+
+Changes the handling of image types, and adds similar handling for function
+types. (gscdefs.h, gconf.c)
+
+Consolidates the gs_std* files into a structure. (gsio.h, gsmisc.c)
+
+Speeds up the fastest (common) case of clipping fill_rectangle and copy_mono
+operations. We could do the same for the other operations if we wanted.
+(gxclip.c)
+
+Identifies this fileset as a tester release. (gscdef.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.69"></a>Version 5.69 (internal) (2/4/99)</h2>
+
+<p>
+This incremental fileset fixes minor compilation problems, as well as many
+problems with driver-based CRDs (not used by PostScript or PDF).
+
+<h3><a name="5.69_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The OpenVMS makefile had not been updated properly to reflect the
+division of files into subdirectories. (openvms.mak)
+ - A space was missing before a :. (devs.mak)
+ - The MMK makefile had not been updated to reflect the renaming of
+the psm[raw] devices to pksm[raw]. (openvms.mmk)
+
+Changes the default name of the build directory for the library test program
+from debugobj to libobj, so that one can work with both library and
+interpreter builds without interference. (ugcclib.mak)
+
+Adds -fno-builtin to the gcc switches, to detect failure to declare
+functions like memcpy, at a small cost in performance. (ugcclib.mak,
+unix-gcc.mak)
+
+</pre><h3><a name="5.69_Utilities"></a>Utilities</h3><pre>
+
+Makes a couple of minor fixes to ansi2knr, suggested by users. (ansi2knr.c)
+
+Updates ps2ai.ps with an improved version from its author. (lib/ps2ai.ps)
+
+</pre><h3><a name="5.69_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The 32-bit CMYK "async" BMP driver was declared incorrectly as a
+non-async device. (gdevbmpa.c)
+ - Some #includes were missing, because gcc didn't warn about
+failures to declare certain standard functions. (x_.h, gdevdcrd.c, gdevx.c)
+ - The PC frame buffer device still referred to _ss and near.
+(gdevpcfb.c)
+ - The [e]pswrite driver didn't handle bitmaps with a non-zero X bit
+offset correctly. (gdevps.c)
+ - The pdfwrite driver wrote all clipping paths with the winding
+number rule, even if they were established by eoclip. (gdevpdfd.c)
+ - "Vector" drivers wrote all clipping paths with the winding number
+rule, even if they were established by eoclip. (gdevvec.c)
+
+Adds the CRDName parameter to the sample driver-based CRD. (gdevdcrd.c)
+
+Tweaks the sample driver-based CRD to make it a more realistic (closer to
+the PostScript default). (gdevdcrd.c)
+
+Adds the sample driver-based CRD to the modified X drivers. (devs.mak,
+gdevxalt.c)
+
+</pre><h3><a name="5.69_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some #includes were missing, because gcc didn't warn about
+failures to declare certain standard functions. (zchar1.c)
+ - Driver CRDs were not supported properly. (zcrd.c, lib/gs_lev2.ps)
+
+Changes some code because non-int switch expressions are not handled
+correctly in pre-ANSI C. (igcref.c, zdevice.c)
+
+Adds the ability to set the orientation of zero-length "dots". (zgstate.c)
+
+Adds comments on an alternative shallow-binding design. (dstack.h)
+
+Changes the threshold for repeatedly rescanning change lists so that it is
+based on the cumulative amount of rescanning and not the amount in a single
+pass. (isave.c)
+
+</pre><h3><a name="5.69_Streams"></a>Streams</h3><pre>
+
+Changes some code because non-int switch expressions are not handled
+correctly in pre-ANSI C. (sfilter1.c)
+
+</pre><h3><a name="5.69_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Some casts to (gx_device *) were missing. (gschar.c)
+ - Some #includes were missing, because gcc doesn't warn about
+failures to declare certain standard functions. (gdevdgbr.c, gscie.c,
+gsmatrix.c, gxshade1.c)
+ - gxclread.c now needs gdevprn.h to declare certain procedures. We
+tried very hard to make the command list machinery not depend on anything
+related to printer devices, but at this point we have not succeeded.
+(gxclread.c)
+ - For CRDs set by library clients, the is_identity flags in the
+caches were set incorrectly, producing incorrect output. (gscie.h, gscie.c,
+gscrd.c, gscrdp.c)
+ - For CRDs set by library clients, the EncodeABC and RenderTable T
+procedures were sampled incorrectly. (gsciemap.c, gscrd.c)
+ - The interpreter tried to sample the TransformPQR functions in the
+PostScript CRD even for driver CRDs. (gscie.h, gscie.c)
+ - Library assistance was needed for the interpreter to support
+driver CRDs properly. (gscrdp.h, gscrdp.c)
+ - The procedures that accessed cached CIE values didn't round the
+index, so accessing already-cached values could wipe out the cache.
+(gscie.c)
+ - The procedure that accessed cached RenderTable.T values simply
+wasn't implemented. (gscrd.c)
+
+Adds an "if (1)" to a macro to suppress "statement not reached" warnings
+from stupid compilers. (gsmemlok.c)
+
+Changes the syntactic form of some constant tables to suppress
+signed/unsigned warning messages. (gsbitops.c, gxsample.c)
+
+Changes some switch statements to if/else because non-int switch expressions
+are not handled correctly in pre-ANSI C. (gdevmr8n.c, gxdcolor.c)
+
+Adds the ability to set the orientation of zero-length "dots". (gsline.h,
+gxline.h, gsline.c, gsstate.c, gxstroke.c)
+
+Adds an allocator state variable to support the change in the rescanning
+algorithm. (gxalloc.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.68"></a>Version 5.68 (internal) (1/29/99)</h2>
+
+<p>
+This fileset implements PatternType 2 (gradient fill) Patterns. All
+significant PostScript LanguageLevel 3 features are now implemented, except
+for DeviceN color spaces. We have also verified that the MMK script for
+OpenVMS also works with MMS.
+
+<p>
+Note that there are significant non-backward compatible changes to memory
+management for device instances: we are sorry about this, but just as with
+paths in 5.22, we had to fix this design problem at some point.
+
+<h3><a name="5.68_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - A new makefile, unix-aux.mak, must be included in all Unix
+top-level makefiles. (It is included in the ones we distribute.)
+unixtail.mak is renamed unixlink.mak.
+
+(Library)
+ - The names of the anti-aliasing parameters in the device color_info
+structure have been changed.
+ - Dummy definitions for PC-specific C keywords (_cs, _ds, _ss, near,
+far, huge) are no longer provided: these keywords should be removed from
+non-PC-specific code.
+ - The names of the alignment_mod, ptr_le, ptr_lt, ptr_ge, ptr_gt,
+and ptr_between macros have been changed to upper case (ALIGNMENT_MOD etc.)
+ - gs_make_null_device now takes an additional argument.
+ - The ccolor member of a gx_device_color is no longer inside a
+substructure.
+ - Clients now must initialize Pattern templates with
+gs_patternN_init, where N is the PatternType (normally 1), before filling in
+the members.
+ - gs_pattern_instance_common_t is renamed gs_pattern_instance_t;
+gs_pattern_instance is renamed gs_pattern1_instance.
+ - To set the target of a forwarding device, you must now use
+gx_device_set_target rather than setting the target member directly.
+ - Memory management for devices has changed substantially, and in a
+subtle way. If you have code that calls the library, please read the
+documentation in gxdevcli.h.
+ - Callers of the driver create_buf_device procedure must always call
+it through gdev_create_buf_device, never directly.
+ - For composite and CID-keyed fonts, the character code returned by
+gs_show_current_char and gs_kshow_previous_char is now the full multi-byte
+character code rather than just the last byte of the code.
+ - gdev_cmap_set_method has been replaced by a device parameter,
+ColorMappingMethod.
+ - The CRD pointer parameter for param_write_cie_render1 and
+param_put_cie_render1 is no longer const.
+
+</pre><h3><a name="5.68_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The documentation for resize_object and resize_string didn't allow
+the new size to be the same as the old size, didn't describe what data was
+preserved, and didn't guarantee to return the same object if the new size
+was the same as the old size. (gsmemraw.h, gsmemory.h)
+ - The documentation for the value returned by the internal
+.getmetrics32 operator was incorrect. (zchar32.c)
+ - The documentation for the special color mapping device didn't say
+that the caller had to call gs_setdevice_no_init to update graphics states.
+(gdevcmap.h)
+
+Notes that OPENVMS.MMK works with both MMK and MMS. (doc/Make.htm)
+
+Adds a note to the C style guide about nested vs. multi-branch 'if'
+statements. (doc/C-style.htm)
+
+Notes that the multi-threaded ("async") drivers require libc version 6 or
+higher under GNU/Linux. (doc/Make.htm)
+
+Notes additional Irix/MIPSpro combinations that compile idict.c incorrectly,
+and gives a workaround. (doc/Make.htm)
+
+Adds a couple more acknowledgements. (doc/Helpers.htm)
+
+Documents the new -Z^ switch. (doc/Use.htm)
+
+Documents the new rules about memory management for device instances
+(gxdevcli.h, gxdevice.h)
+
+</pre><h3><a name="5.68_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The "async" BMP devices were accidentally included in the default
+list for Unix, leading to a requirement for the POSIX thread package, which
+is not available on all systems. (unix-gcc.mak)
+ - There was a minor typo in the new MMK script. (openvms.mmk)
+ - The MMK script redefines macros, which MMS does not allow.
+(openvms.mmk)
+ - The gcc version test used gcc rather than $(CC) for the compiler
+name. (unix-gcc.mak)
+ - There was a minor typo in the pcx2up device makefile entry.
+(devs.mak)
+ - Some commands in the Unix install rules referenced sh rather than
+$(SHELL). (unixinst.mak)
+
+Makes (dummy) in-RIP trapping an optional feature, and removes it from the
+default configuration. (int.mak, lib.mak)
+
+Splits off the build rules for the Unix auxiliary programs, so they can be
+shared between interpreter and library configurations. (ugcclib.mak,
+unix-aux.mak, unix-gcc.mak, unixansi.mak, unixtail.mak [deleted],
+unixlink.mak, unixtrad.mak)
+
+Adds the bitcmyk device to the list of devices for the library test program.
+(ugcclib.mak)
+
+</pre><h3><a name="5.68_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ansi2knr didn't handle occurrences of '/' or quoted strings inside
+an argument list correctly. (ansi2knr.c)
+
+At the suggestion of a GNU person, makes ansi2knr check for output errors.
+(ansi2knr.c)
+
+</pre><h3><a name="5.68_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - Setting the resolution on the SPARCprinter didn't work.
+(gdevsppr.c)
+ - Even in PDF 1.1 compatibility mode, the PDF writer used a
+predictor to compress images. (gdevpsdi.c)
+ - Reference counting for devices was not implemented consistently.
+(gdevxalt.c)
+ - gcc (again) missed some static / non-static inconsistencies.
+(gdevbmpa.c, gdevifno.c)
+
+Removes all remaining uses of segment identifiers (_cs, _ds, _ss) from
+non-PC-specific code. (gdev3852.c, gdevcdj.c, gdevhl7x.c, gdevl256.c,
+gdevmgr.c, gdevsgi.c, gdevsppr.c, gdevvglb.c)
+
+Removes all remaining uses of the 'near' keyword from non-PC-specific code.
+(gdevcd8.c, gdevcdj.c, gdevcgm.c)
+
+Changes uses of round_up to ROUND_UP. (gdevmsxf.c, gdevpcx.c, gdevpx.c,
+gdevxxf.c)
+
+Adds user-contributed support for 16-bit displays to the MS Windows driver.
+(gdevmswn.c, gdevwdib.c)
+
+Adds a user-contributed driver (sunhmono) for the Harlequin variant of 1-bit
+Sun raster files. We expect to add other varieties of Sun Raster file
+eventually as well. (contrib.mak, gdevsunr.c)
+
+Adds a user-contributed driver (fs600) for the Kyocera FS-600 laser printer.
+(devs.mak, gdevdjet.c)
+
+Replaces the sample device CRD with a slightly hacked version of the default
+PostScript CRD, and moves it to a separate file for greater flexibility in
+testing. (gdevdcrd.h, gdevbit.c, gdevdcrd.c)
+
+Adds standard and "async" 32-bit CMYK BMP drivers (even though this is
+outside the published BMP format). (gdevbmp.c, gdevbmpa.c)
+
+Changes the names of the separated-CMYK PBM drivers from psm to pksm, to be
+more descriptive. (devs.mak, openvms.mak, unix-gcc.mak, gdevpbm.c)
+
+</pre><h3><a name="5.68_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - On MS Windows and OS/2, "(%stdin) (r) file bytesavailable" caused
+a crash. (gp_msio.c, gp_os2.c)
+
+</pre><h3><a name="5.68_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with fewer glyph names in post than entries in loca
+caused an error. (gs_ttf.ps)
+
+Adds additional tracing to the TrueType font loader. (lib/gs_ttf.ps)
+
+Per Adobe, adds the Euro symbol under the name /Euro (capitalized) to
+various built-in Encodings. (lib/gs_mro_e.ps, lib/gs_pdf_e.ps,
+lib/gs_sym_e.ps, lib/gs_wan_e.ps)
+
+</pre><h3><a name="5.68_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - An extraneous file got left in the fileset. (lib/pdf_main.ps.sav
+[deleted])
+ - The number of required arguments for .pathbbox was incorrectly
+specified as 0 rather than 1. (zpath1.c)
+ - Opening a ReusableStreamDecode filter with a string source and no
+decoding filters left an extra value on the stack. (lib/gs_ll3.ps)
+ - Type 32 fonts sometimes didn't display the characters, or
+displayed them offset. (lib/gs_typ32.ps)
+ - In LanguageLevel 3, copypage still called EndPage with 1 rather
+than 0. (lib/gs_init.ps)
+ - The HalftoneName parameter was missing from the trapping parameter
+set. (lib/gs_ll3.ps)
+ - CMap character entries were processed in the wrong order.
+(lib/gs_cmap.ps)
+ - CMap'ed non-CID fonts didn't work properly, because they called
+BuildChar with the original character code rather than BuildGlyph with the
+mapped glyph. (zchar.c)
+ - Using an out-of-range CID value with a CIDFont caused an error
+rather than substituting a notdef. (lib/gs_cidfn.ps)
+ - CIDFontType 0 fonts with a GlyphDirectory didn't fall back to the
+indexed character data if the CID wasn't in the GlyphDirectory.
+(lib/gs_cidfn.ps)
+ - CIDFontType 0 fonts didn't substitute a notdef at all.
+(lib/gs_cidfn.ps)
+
+Changes uses of round_up to ROUND_UP. (igcstr.c)
+
+Updates clients for the object-oriented changes to Patterns. (zcolor2.c,
+zpcolor.c)
+
+Implements the rest of PatternType 2. (ipcolor.h, zpcolor.c, zshade.c)
+
+Makes in-RIP trapping an optional feature. (lib/gs_ll3.ps, lib/gs_trap.ps)
+
+Updates clients for the change in gs_show_current_char. (zcfont.c, zchar.c)
+
+Changes the dict_*_param macros to procedures, for easier tracing. This
+includes a change in the return value of dict_matrix3_param. (icie.h,
+zcie.c, zcrd.c)
+
+</pre><h3><a name="5.68_Streams"></a>Streams</h3><pre>
+
+Changes uses of round_up to ROUND_UP. (scfd.c, scfe.c)
+
+</pre><h3><a name="5.68_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Once again, gcc failed to flag a static procedure declaration
+followed by a non-static definition. (gdevprna.c, gximage3.c)
+ - Anti-aliasing no longer worked for the x11alpha device. To fix
+this, we factored out the anti-aliasing information in the
+gx_device_color_info structure. (bug introduced in 5.65) (gxdevcli.h,
+gdevabuf.c, gdevdflt.c, gdevxalt.c, gsdparam.c)
+ - An empty declaration generated an extraneous semicolon.
+(gxclip2.h)
+ - Some macros that generated an if-else construct didn't enclose it
+in BEGIN/END, possibly leading to incorrect parsing. (gxobj.h)
+ - A comment was missing a closing */. (gxpageq.h)
+ - The handling of the phase in Pattern filling was broken again. We
+probably broke it with the "fix" introduced in 5.24. (gxp1fill.c)
+ - Looking up an undefined IODevice name caused a memory access
+error. (bug claimed to be fixed in 5.24) (gsiodev.c)
+ - The null device installed for stringwidth didn't copy the color
+mapping information from its target, causing confusion if the current device
+was a pattern accumulator. (gxdevcli.h, gxdevice.h, gschar.c, gsdevice.c,
+gxpcmap.c)
+ - mem_mapped2_copy_mono produced incorrect results for byte-aligned
+rectangles exactly 1 byte wide (fix from John D.), and could also access
+data 1 byte beyond the end of each source row. (gdevm2.c)
+ - In the case of a masked image or a RasterOp involving a Pattern,
+the garbage collector could fail to follow a pointer, possibly causing
+memory corruption. (gsdcolor.h)
+ - Assigning a double value to a float variable caused an infinite
+recursion. (gxshade1.c)
+ - Failure to detect when the region being filled had become very
+small caused excessive recursion. (gxshade4.c)
+ - The default implementations of resize_object didn't always return
+the old object if the old and new sizes were the same. (gsalloc.c,
+gsmalloc.c)
+ - The left side bearing of TrueType characters was sometimes
+calculated incorrectly. (gstype42.c)
+ - The TrueType renderer disregarded the left side bearing values.
+We aren't sure that the change we made is right, but it seems to produce
+better output. (gstype42.c)
+ - Shadings used the first Decode entry for both X and Y values.
+(gxshade.c)
+ - Function-based Shadings sometimes omitted part of their output.
+(gxshade1.c)
+ - Function-based Shadings didn't access 4-bit-per-sample data
+correctly. (gsfunc0.c)
+ - The malloc/free-based allocator didn't finalize objects when
+freeing them. (gsmalloc.c)
+ - Reference counting for device instances was not implemented even
+close to consistently. THIS IS THE BUG TAIL WE WORRIED ABOUT IN 5.24.
+(gxdevcli.h, gxdevice.h, gdevbbox.c, gdevcmap.c, gdevmem.c, gdevnfwd.c,
+gdevplnx.c, gdevprn.c, gdevrops.c, gsalphac.c, gschar.c, gsdevice.c,
+gsropc.c, gxidata.c, gxmclip.c, gxipixel.c, gxpcmap.c)
+ - Some device structure definitions failed to include finalization.
+(gdevmrop.h, gsstruct.h, gxclip2.h, gxcpath.h, gxdevmem.h, gxmclip.h)
+ - Reference counting for the device halftone wasn't correct in the
+band rasterizer. This must be a recently introduced bug, because otherwise
+banding couldn't have worked. (gxclrast.c)
+ - When banding, high-level images that extended off the page in the
+Y direction caused memory access errors. (gxclimag.c)
+ - [a]widthshow didn't use the correct value for comparison for
+composite fonts with FMapType 9 (CMap). (gxchar.h, gschar.c, gschar0.c,
+gsfcmap.c)
+ - The special color mapping device only worked for
+device_cmap_monochrome. (gdevcmap.h, gdevcmap.c)
+ - The definition of gs_memory_locked_release was wrong.
+(gsmemlok.h, gsmemlok.c)
+ - An opaque structure definition (for gx_device) was missing,
+creating a need for an otherwise unnecessary #include. (gscrdp.h)
+ - Certain cached values weren't computed when needed. Fixing this
+required removing 'const' from a parameter type. (gscrdp.h, gscrdp.c)
+ - gxclmem.c #included "gsmalloc.h", which is no longer needed.
+(gxclmem.c)
+ - Memory management for device halftones was incorrect, leading to
+objects being freed twice or other memory corruption during band rendering.
+(gzht.h, gsht.c, gsstate.c, gxclrast.c, gxistate.c)
+ - Setting a driver-originated CRD didn't invalidate cached
+information, leading to incorrect output. (gscrdp.c)
+ - A consistency check on driver-originated CRDs was incorrect,
+causing valid CRDs to be rejected. (gscrdp.c)
+
+Removes dummy definitions for old PC-specific language extensions.
+(stdpre.h)
+
+Removes uses of the PC-specific 'huge' keyword. (gdevmem.c)
+
+Removes uses of the PC-specific 'near' keyword. (gdevabuf.c, gdevbbox.c)
+
+Changes the pointer comparison macros to upper-case names. (gxalloc.h,
+stdpre.h, gsalloc.c, gsmisc.c)
+
+Changes the alignment_mod macro to upper case. (stdpre.h, gdevdbit.c,
+gdevdgbr.c, gsparams.c, gxifast.c)
+
+Changes the round_up and round_down macros to upper case. We retain the
+lower-case definitions for the sake of the PCL code. (gxfcache.h, gxobj.h,
+stdpre.h, gdevalph.c, gdevmem.c, gsalloc.c, gspath1.c, gxccman.c,
+gxclimag.c, gxifast.c)
+
+Makes Pattern colors more object-oriented, to support PatternType 2,
+splitting gsptype1.c off from gspcolor.c in the process. (gsccolor.h,
+gsdcolor.h, gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h, gxpcolor.h,
+gspcolor.c, gsptype1.c, gxpcmap.c)
+
+Implements PatternType 2. (gspcolor.h, gsptype1.h, gsptype2.h, gxcolor2.h,
+gxpcolor.h, gxshade.h, gspcolor.c, gsptype2.c)
+
+Changes the interface to shaded filling to make filling rectangles more
+efficient. (gsshade.h, gscolor3.c, gsshade.c)
+
+Improves some macros that didn't handle expressions as arguments.
+(gsrect.h)
+
+Improves tracing of loading the CIE caches. (gscie.c)
+
+Cleans up some formatting, and replaces some floating point divides with
+multiplies. (gstype42.c)
+
+Adds default values for the MaxSeparations (1), Separations (false), and
+SeparationColorNames (empty array) device parameters. (gsdparam.c)
+
+Adds -Z^ to trace reference counting. (gsrefct.h, gsmemory.c)
+
+Changes the definition of finalization so that finalization procedures *can*
+assume that objects they reference still exist. This is necessary so that
+forwarding devices can decrement the reference counts of their targets.
+Fortunately, all invocations of finalization (in 'restore', the garbage
+collector, and freeing) already have this property. (gsstruct.h)
+
+Extends CRD initialization so that cached values may be copied from an
+existing CRD. (gscrd.h, gscrd.c)
+
+Adds a wrapper to the driver create_buf_device procedure to increment the
+reference count, so that buffer devices can be freely used in graphics
+states and as a target. (gxdevcli.h, gdevprn.c, gxclread.c)
+
+Removes recursion from the shading rendering code, in preparation for making
+it interruptible (required for DeviceN color mapping callouts).
+(gxshade4.h, gxshade1.c, gxshade4.c, gxshade6.c)
+
+Monitor-locks the default allocator based on the C heap, if multi-threading
+is being supported at all. (lib.mak, gsmalloc.h, gsmalloc.c)
+
+Speeds up the implementation of mem_true32_copy_mono for the common case.
+(gdevm32.c)
+
+Adds a (disabled) option for defining gx_color_index as a pointer or a
+structure, for testing. (gxcindex.h)
+
+Makes the library test program test the special color mapper more
+thoroughly. (gslib.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.67"></a>Version 5.67 (internal) (1/8/99)</h2>
+
+<p>
+This fileset adds more PostScript LanguageLevel 3 capability:
+<ul>
+<li> - Complete implementation of shfill.
+<li> - Most of the expanded CMap capabilities.
+<li> - ReusableStreamDecode filter.
+<li> - FontType 2 for CFFs (formerly done in an incompatible way).
+<li> - HalftoneMode user parameter.
+<li> - HalftoneTypes 6, 10, and 16.
+<li> - ImageType 3 images.
+<li> - UseCIEColor device parameter.
+</ul>
+
+<p>
+It also adds a build script for MMK (which may also work with MMS) under
+OpenVMS, and Uli Wortmann's drivers for the H-P color inkjet printers.
+Among other bug fixes, it eliminates about half the "possibly uninitialized
+variable" compiler warnings.
+
+<h3><a name="5.67_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - The default UCR and BG functions are now f(k) = k rather than f(k)
+= 0.
+ - The set_[d]fmul2fixed_vars macros have been removed from
+gxfixed.h. Clients must use the new CHECK/FINISH_[D]FMUL2FIXED_VARS macros.
+(We don't think there are any such clients outside Ghostscript itself.)
+ - The internal procedure gx_cpath_intersect_slow is replaced with
+gx_cpath_intersect_path_slow, with different arguments.
+ - gs_color_space_type_Device{Gray,RGB,CMYK} are now private.
+Clients should use the gs_cspace_Device{Gray,RGB,CMYK} access procedures in
+gscspace.h to obtain device color space objects.
+ - FontType 2 was renamed from ft_CFF to ft_encrypted2.
+ - FontType 2 fonts now have FontType = ft_encrypted2, rather than
+ft_encrypted with CharstringType = 2. CharstringType no longer exists.
+ - Type 1 / Type 2 fonts now have an additional member, interpret,
+that must be initialized.
+ - gdev_prn_render_lines and gdev_prn_get_band_buffer replace
+gdev_prn_locate_overlay_buffer and gdev_prn_get_overlay_bits. "Async"
+drivers must now use the new procedures to implement partial-page rendering
+recovery.
+ - Clients that pass ImageType 3 images where the mask and the image
+are not scaled identically, or that call image_plane_data without knowing
+the image type, must now call gs_image_planes_wanted or
+gx_image_planes_wanted in order to find out which subset of the data planes
+to pass to the next call of image_plane_data.
+ - gx_image_enum_common_init now takes slightly different arguments.
+ - gs_imager_state_initialize now initializes the entire imager
+state, including halftone, dev_ht, and ht_cache.
+ - The argument lists for the plane_data and end_image procedures in
+image enumerators have changed.
+
+</pre><h3><a name="5.67_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The 5.66 News mentioned the non-existent WAITFILE macro, and had
+another minor typo. (doc/News.htm)
+ - The URL for the user-contributed H-P 850c driver was incorrect.
+(doc/Devices.htm, contrib.mak)
+ - The documentation for the driver image API had gotten out of date.
+(doc/Drivers.htm)
+
+Greatly improves documentation for the page queue. (from Artifex 5.50c)
+(gxpageq.h)
+
+Documents the fact that Solaris builds now need -lposix4 for &lt;semaphore.h&gt;.
+(doc/Make.htm)
+
+Adds a stack status comment in .pdfshow. (lib/gs_pdfwr.ps)
+
+Documents the new -Z` debugging switch. (doc/Use.htm)
+
+Touches up some formatting in the C style guide, and adds a mention of the
+space-before-: rule for makefiles. (doc/C-style.htm)
+
+Adds documentation for the new H-P 8xx drivers. (doc/Devices.htm)
+
+Splits off news for versions 5.0 - 5.50 into a separate file.
+(doc/History5.htm)
+
+</pre><h3><a name="5.67_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - On MS Windows platforms, the DLL object file wasn't created in the
+proper directory. (from Artifex 5.55) (msvc32.mak)
+ - cfonts.mak didn't have no-op commands for rules that didn't
+contain any commands. (cfonts.mak)
+ - The version number for libpng was different from libpng's own
+version numbering system. (libpng.mak)
+ - Solaris builds now need -lposix4 for &lt;semaphore.h&gt;.
+(unix-gcc.mak, unixansi.mak, unixtrad.mak)
+ - The makefiles redefined a number of macros, which MMS doesn't
+allow. (bcwin32.mak, gs.mak, int.mak, lib.mak, libpng.mak, msvc32.mak,
+openvms.mak, openvms.mmk, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+version.mak)
+
+Changes cp.bat and rm.bat to eliminate "File not found" messages. (from
+Artifex 5.55) (cp.bat, rm.bat)
+
+Changes all platform-independent makefiles to add a space before the : that
+separates the targets from the dependencies, to allow the makefiles to be
+used with MMS/MMK. (cfonts.mak, contrib.mak, devs.mak, gs.mak, int.mak,
+jpeg.mak, lib.mak, libpng.mak, zlib.mak)
+
+Adds a script for compiling Ghostscript on OpenVMS systems with MMK. This
+has not been tested extensively. (doc/Make.htm, openvms.mmk)
+
+Changes the set of optimization switches for MSVC++. We believe the new
+switches produce working executables, which /O2 didn't. (msvc32.mak,
+msvccmd.mak)
+
+Updates the default expected libpng version to 1.0.2. (bcwin32.mak,
+dvx-gcc.mak, msvc32.mak, msvclib.mak, openvms.mak, os2.mak, ugcclib.mak,
+unix-gcc.mak, unixansi.mak, unixtrad.mak, watc.mak, watclib.mak,
+watcw32.mak)
+
+</pre><h3><a name="5.67_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - Default scaling in viewcmyk.ps was broken. (lib/viewcmyk.ps)
+
+Updates pdf2dsc.ps with a newer (user-contributed) version that generates
+DocumentMedia and PageMedia comments. (lib/pdf2dsc.ps)
+
+</pre><h3><a name="5.67_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - An int * was provided where a uint * was required. (gdevpbm.c)
+ - ps2ps -dLanguageLevel=1 generated invalid output. (gdevps.c)
+ - The X drivers crashed on gray-scale displays. (bug probably
+introduced in 5.61) (gdevx.c)
+ - The width and height of the cljet5 device were interchanged.
+(from Artifex) (gdevclj.c)
+ - The PDF writer didn't clip cached characters properly. (bug
+introduced somewhere between 3.51 and 5.10) (gdevpdfi.c)
+ - For stroked paths with a non-uniform CTM, the PDF writer could
+emit coordinates larger than 32K, which Acrobat handles incorrectly.
+(gdevpdfd.c)
+
+Restructures some code to suppress bogus "possibly uninitialized variable"
+warnings. (gdevpdfm.c, gdevps.c)
+
+Adds some unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (gdevpbm.c, gdevpdfd.c, gdevvec.c,
+gdevxalt.c)
+
+Rewrites the (contributed) X11 xfont code to remove code duplication.
+(gdevx.h, gdevx.c, gdevxini.c, gdevxxf.c)
+
+Adds a user-contributed driver for the H-P LaserJet 3100 with H-P software.
+(gdevmeds.h, gdevl31s.c, gdevmeds.c)
+
+Adds a user-contributed option for 600 dpi output on H-P DesignJet
+650C-compatible printers. (gdevcdj.c)
+
+Removes unnecessary references to device color spaces. (gdevpdfi.c)
+
+Changes the [e]pswrite and pdfwrite drivers to use EndOfBlock rather than
+Rows for CCITTFax image encoding, producing slightly smaller output.
+(gdevpsdf.c)
+
+Changes the sample async driver to use gdev_prn_render_lines and
+gdev_prn_get_band_buffer instead of locate_overlay_buffer and
+get_overlay_bits. Unfortunately, because "async" memory management is
+broken, we have no way to test the code. (gdevbmpa.c)
+
+Updates clients for the change in gx_image_enum_common_init. (gdevpdfi.c,
+gdevvec.c)
+
+Adds Uli Wortmann's drivers for the H-P color inkjet printers.
+(contrib.mak, gdevcd8.c)
+
+Adds mode 9 compression to the PCL printer utilities. (gdevpcl.h,
+gdevcdj.c, gdevpcl.c)
+
+Updates implementors for the change in the plane_data and image_end image
+processing procedures. (gdevpdfi.c, gdevps.c, gdevpx.c)
+
+</pre><h3><a name="5.67_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - The PFM files for URW Grotesk and Antiqua had some extraneous ^M
+characters inserted before ^J characters. (fonts/u003043t.pfm,
+fonts/u004006t.pfm)
+ - CID-keyed fonts didn't handle GlyphDirectory correctly.
+(lib/gs_cidfn.ps)
+ - CIDFontType 0 fonts with 0-length Subrs caused an error.
+(lib/gs_cidfn.ps)
+ - Malformed TrueType fonts with overlapping tables (which are
+nevertheless apparently acceptable to Windows) caused an error.
+(lib/gs_ttf.ps)
+ - The Hershey font repairs documented in fileset 5.24 apparently
+never happened: the makeher.ps program was fixed, but the derived fonts were
+still broken. (fonts/h*.ps)
+ - In some Fontmaps, the /Charter-* font names were linked directly
+to the Bitstream fonts, rather than being aliases for /CharterBT-*.
+(lib/Fontmap.GS, lib/Fontmap.Sol, lib/Fontmap.Ult)
+
+Makes undefined fonts execute the SubstituteFont procedure in $error, per a
+posting by Stephen Zisk of Adobe on pdf-prepress-l on 10/8/97.
+(lib/gs_fonts.ps)
+
+Changes the interpreter-level CIE color space install procedures to reflect
+the addition of const to the color space argument. (zcie.c)
+
+</pre><h3><a name="5.67_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The interpreter appeared to be a distiller even when the current
+device was not pdfwrite. We fixed this by patching 'where' to make the
+distiller operators visible iff the current device is pdfwrite. We also
+moved the setcolor hack in 'where' into PostScript code. (lib/gs_init.ps,
+lib/gs_lev2.ps, lib/gs_pdfwr.ps, zmisc2.c)
+ - The current color space for shfill wasn't identically the same
+color space as the one in the shading. (gs_ll3.ps)
+
+Changes the default UCR and BG functions from f(k) = 0 to f(k) = k.
+(lib/gs_init.ps)
+
+Adds some unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (igc.c, zcie.c)
+
+Restructures some code slightly to suppress a bogus "possibly uninitialized
+variable" warning. (zdevice.c)
+
+Brings the CMap machinery up to LL3, by allowing a single CMap to reference
+multiple fonts (usefont, usematrix, and array CIDSystemInfo).
+(lib/gs_cmap.ps, zfcmap.c)
+
+Finishes implementing ReusableStreamDecode. The implementation is very
+inefficient -- it reads the entire contents into a string -- but it passes
+the Genoa FTS. (lib/gs_ll3.ps, lib/gs_res.ps, zfreuse.c)
+
+Changes CFFs with CharstringType = 2 to generate FontType 2 fonts, rather
+than FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
+implementations. (lib/gs_cff.ps, lib/gs_type1.ps, lib/type1ops.ps, bfont.h,
+ichar1.h, ifont.h, ifont1.h, zbfont.c, zchar1.c, zchar2.c, zcharx.c,
+zfont.c, zfont1.c, zfont2.c)
+
+Adds the ability to create (with .bytestring) and do a few operations
+(currently only length, put, putinterval) on byte arrays. This is needed
+for implementing ReusableStringDecode filters with >64K bytes of data, and
+for the LL3 halftone types. (zgeneric.c, zstring.c)
+
+Implements HalftoneMode, and HalftoneTypes 6, 10, and 16. To do this, we
+introduce an internal HalftoneType 7. (lib/gs_dps2.ps, lib/gs_init.ps,
+lib/gs_ll3.ps, lib/gs_res.ps, zht2.c)
+
+Finishes implementing ImageType 3 images. (zimage.c, zimage3.c)
+
+Adds the hooks in ColorSpace defineresource and undefineresource for
+detecting definitions that interact with UseCIEColor. (gs_res.ps)
+
+Implements UseCIEColor at the interpreter level. (lib/gs_dps1.ps,
+lib/gs_ll3.ps, zcolor1.c, zcolor2.c, zimage.c, zmisc3.c)
+
+Touches up some formatting. (igstate.h)
+
+</pre><h3><a name="5.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - A MediaBox with a non-zero llx or lly would produce incorrect
+output. The way we fixed this doesn't exactly match Acrobat, but it
+produces reasonable output. (based on a change from Artifex 5.55)
+(lib/pdf_main.ps)
+ - Colored patterns didn't work properly. (lib/pdf_draw.ps)
+ - The resources in a Pattern dictionary weren't made available
+during the execution of the PaintProc. (fix from Artifex) (lib/pdf_draw.ps)
+
+</pre><h3><a name="5.67_Streams"></a>Streams</h3><pre>
+
+Adds a flag to the ASCIIHexEncode filter to indicate whether or not to write
+an EOD, required for Level 1 output from the pswrite device. (sstring.h,
+sstring.c)
+
+Adds a close_at_eod flag to the stream state, for implementing reusable
+streams; also cleans up some formatting. (stream.h, stream.c)
+
+</pre><h3><a name="5.67_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Black-and-white images with Interpolate = true produced
+undesirable artifacts if the image resolution was close to that of the
+device. We now disable Interpolate in this case. (gxiscale.c)
+ - In "async" mode, get_hardware_params did an unnecessary flush and
+reopen. (from Artifex 5.50c) (gdevprna.c)
+ - The computation of the minimum band height for the "async" reader
+was incorrect. (from Artifex 5.50c) (gdevbmpa.c)
+ - The "fix" for reallocating async buffer memory in 5.50 was
+incorrect. (from Artifex 5.55) (gdevprn.c)
+ - The "async" reader called clist_finish_page, which it shouldn't.
+(from Artifex 5.50c) (gdevprn.c)
+ - The image enumeration procedures for ImageType 4 were unnecessary,
+since the ImageType 1 code now handles ImageType 4 as well. (gximage4.c)
+ - The structure descriptor for tile clipping devices was
+unnecessary, since these are the same as mask clipping devices. (gxclip2.h)
+ - There was a trailing comma in an enumeration list. (gsbitops.c)
+ - Some compilers didn't like initializing a uint with ~0.
+(gdevm1.c)
+ - shfill unnecessarily saved, reset, and restored the graphics
+state. (gscolor3.c)
+ - Radial shadings always extended the shading to radius = 0.
+(gxshade1.c)
+ - An identifier exceeded VMS's limit of 31 characters. (gdevprn.h,
+gdevprn.c)
+ - A header file didn't #include enough of its prerequisites.
+(gxpcolor.h)
+ - Images with non-default ImageMatrix weren't written correctly in
+the band list. (bug introduced in 5.60) (gximage1.c)
+ - Banded images that had to use the default implementation incurred
+an extra level of procedure call for each block of data. (gxclimag.c)
+ - Images rotated by other than a multiple of 90 degrees produced
+incorrect output, because pie-&gt;rect.p.y was updated after each block of
+data, causing image_band_box to produce inconsistent results. (bug
+introduced by async changes in 5.50) (gxclimag.c)
+ - The client_data pointer in client_order halftones wasn't traced
+correctly, possibly causing memory corruption if this type of halftone was
+used. (These are not currently used by the PostScript interpreter.)
+(gsht.c, gsht1.c)
+ - ImageType 3 images didn't handle subrectangles. (Not a problem
+for PostScript, which doesn't generate subrectangles, or for PCL, which
+doesn't use them.) (gximage3.c)
+ - If a VMerror occurred when setting up an ImageType 3 image. an
+attempt could be made to free an uninitialized pointer. (gximage3.c)
+ - ImageType 4 images with 1 to 8 bits per sample and Decode = [1 0]
+didn't test transparency correctly. (bug introduced in 5.60) (gximage.h,
+gxicolor.c, gximono.c, gxipixel.c)
+ - setgray, setrgbcolor, sethsbcolor, and setcmykcolor didn't use
+gs_cspace_assign, causing code duplication. After this fix, we made the
+device color space types private, since there are no longer any references
+to them outside gscspace.c. (gxcspace.h, gscolor.c, gscolor1.c, gscspace.c)
+ - gs_cspace_assign was misspelled cs_cspace_assign. (gscspace.h)
+ - setgray didn't set the pattern pointer of the current color to 0,
+possibly causing the GC to retain patterns it shouldn't. (gscolor.c)
+ - The dev_ht member of an imager (or graphics) state wasn't included
+in the macro that enumerates reference-counted pointers. This probably had
+no effect, since the macro isn't used. (gxistate.h)
+ - When the band rasterizer freed its imager state, the halftone and
+device halftone structures weren't freed, possibly causing memory leakage.
+(gsistate.c)
+
+Changes the default UCR and BG functions from f(k) = 0 to f(k) = k, per a
+user's suggestion. We aren't sure which matches the Adobe implementations
+on color devices. (gxdcconv.c)
+
+Conditionally removes some variables that are not needed on big-endian
+systems. (gdevm1.c)
+
+Restructures some code to suppress bogus "possibly uninitialized variable"
+warnings. (gxfixed.h, gdevddrw.c, gsmatrix.c, gsmisc.c, gxclimag.c)
+
+Adds a couple of unnecessary initializations to suppress bogus "possibly
+uninitialized variable" warnings. (gsbitops.c)
+
+Implements BBox, Background, and Extend for shadings. (Background isn't
+tested yet, because it only takes effect for pattern shading, which isn't
+implemented yet.) (gsshade.h, gxacpath.h, gxistate.h, gxpath.h, gscolor3.c,
+gsshade.c, gxacpath.c, gxacpath.c, gxcpath.c)
+
+Brings the CMap machinery up to LL3, by allowing a single CMap to reference
+multiple fonts (usefont, usematrix, and array CIDSystemInfo). (gsfcmap.h,
+gxfcmap.h, gsfcmap.c)
+
+Adds more tracing output to the band list reader. (gxclrast.c)
+
+Cleans up some formatting. (gstext.h, gxtext.h)
+
+Replaces FontType = 1, CharstringType = 2 with FontType = 2, to match the
+Adobe implementations. (gxfont1.h, gxftype.h, gxtype1.h, gstype1.c,
+gstype2.c, gxtype1.c)
+
+Adds new gs_bytestring and gs_const_bytestring structures that may reference
+either string or (byte) object storage. (gsstruct.h, gstypes.h, gsmemory.c)
+
+Implements an additional halftone type (ht_type_threshold2) needed for
+HalftoneTypes 6, 10, and 16. We don't extend gshtx.[hc] to deal with this
+at this time, since the new type is only needed for the PostScript
+interpreter. (gxht.h, gxhttype.h, gzht.h, gsht.c, gsht1.c, gshtscr.c)
+
+Adds a procedure for division mod M, possibly needed for halftones.
+(gxarith.h, gsmisc.c)
+
+Adds a -Z` debugging switch to turn off high-level images in the band list.
+(gxclimag.c)
+
+Implements gdev_prn_render_lines, as the lowest-level external API for
+rendering lines in a banded device. This call replaces the "overlay" calls
+for async rendering. (gdevprn.h, gdevprna.h, gxclist.h, gdevprn.c,
+gxclread.c)
+
+Extends the image enumeration API so that the enumerator can indicate what
+subset of the input planes it wants delivered on the next call to
+image_plane_data. Currently this is only needed for ImageType 3.
+(gsimage.h, gxdevcli.h, gxiparam.h, gdevddrw.c, gsimage.c, gximage.c,
+gximage3.c)
+
+Extends the image enumeration structures to handle images that require a
+different amount of data for plane N than Width * plane_depths[N]. This
+requires a NON-BACKWARD-COMPATIBLE change to the argument list of the
+gx_image_enum_common_init procedure. (gxiparam.h, gdevbbox.c, gsimage.c,
+gxclimag.c, gximage.c, gximage2.c, gximage3.c, gxipixel.c)
+
+Updates the copyright date to 1999. (gscdef.c)
+
+Cleans up formatting, capitalizes macro names, etc. (gximage.h, gxsample.h,
+gxipixel.c)
+
+Adds the UseCIEColor device parameter. (gxdevcli.h, gxdevice.h, gsdparam.c)
+
+Implements color space substitution (UseCIEColor). (gscolor2.h, gscspace.h,
+gscssub.h, gxistate.h, gzstate.h, gscolor.c, gscolor1.c, gscolor2.c,
+gscolor3.c, gscssub.c, gslib.c, gspcolor.c, gsstate.c)
+
+Changes the color space install procedure so that its color space argument
+is const. Now all color space implementation procedures take a const
+argument. (gscie.h, gxcspace.h, gscdevn.c, gscolor2.c, gscscie.c,
+gscspace.c, gscsepr.c, gspcolor.c)
+
+Changes gs_setcolorspace so its color space argument is const. (gscolor2.h,
+gscolor2.c)
+
+Splits imager state procedures out of gsstate.c, which was getting too
+large. (gxistate.h, gsstate.c, gsistate.c)
+
+Changes gs_imager_state_initialize so it really initializes the whole imager
+state. (gsistate.c, gxclrast.c)
+
+Removes the now-redundant first (device) argument from the plane_data and
+end_image procedures in image enumerators. Implementors of these procedures
+must now get the device from the enumerator structure. This is a
+NON-BACKWARD-COMPATIBLE design cleanup that we have been putting off for
+most of a year. Also adds an argument to plane_data so it can tell its
+client how many rows of data was used: this is needed for the implementation
+of ImageType 3. (gxdevcli.h, gxiparam.h, gdevbbox.c, gdevplnx.c, gsimage.c,
+gxclimag.c, gxidata.c, gximage.c, gximage3.c)
+
+Changes CFFs with CharstringType = 2 to FontType 2 fonts, rather than
+FontType 1 with CharstringType = 2, for compatibility with Adobe's LL3
+implementations. (gstype1.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.66"></a>Version 5.66 (internal) (11/25/98)</h2>
+
+<p>
+This fileset includes the ability to efficiently and conveniently obtain
+planar rather than chunky raster output. It also fixes a large number of
+minor compilation problems on non-ANSI compilers, and a small number of real
+problems. It also implements the PostScript LanguageLevel 3 clipsave and
+cliprestore operators. Unfortunately, because of fragility in third-party
+code changes that we were forced to include in the base graphics library,
+overlapped rasterizing ("async mode") fails:
+<ul>
+<li> - At 300 dpi, for 4-bit planar devices in the low-memory
+("partial
+ page") condition, and always for 32-bit planar devices.
+
+<li> - At 600 dpi, for all devices other than monochrome.
+</ul>
+
+<h3><a name="5.66_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - Every platform-specific makefile must now define _D_, the internal
+separator for defining preprocessor macros.
+ - Every platform-specific makefile must now define PSLIBDIR, the
+directory holding the PS initialization files at build time. (This need not
+be the same as where these files are stored at run time.)
+
+(Library)
+ - New elements arch_float_mantissa_bits and
+arch_double_mantissa_bits have been added to arch.h. Cross-build
+environments that supply arch.h rather than generating it at build time must
+add these elements.
+ - A new GB_SELECT_PLANES option has been added to the options mask
+for the get_bits_rectangle driver procedure. Implementations of this
+procedure must take this option into account (although they do not have to
+implement it).
+ - The make_buffer_device printer device procedure has been replaced
+with create_buf_device, setup_buf_device, and destroy_buf_device. All
+clients and implementors of make_buffer_device must be changed, including
+users of the clist_init_params macro.
+ - The gx_device_cmap_procs procedure has been replaced with
+gx_get_cmap_procs, which also take an imager state as an argument. Callers
+of gx_device_cmap_procs must be changed.
+
+</pre><h3><a name="5.66_Documentation"></a>Documentation</h3><pre>
+
+Updates Make.htm to clarify the standard directory structure.
+(doc/Make.htm)
+
+Adds a note about DEC C vs. VAX C for remapping of exit codes.
+(doc/Make.htm)
+
+Clarifies that the end_image procedure frees the enumerator. (gxiparam.h)
+
+</pre><h3><a name="5.66_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The genxxx utilities didn't compile properly on systems where the
+C compiler doesn't automatically search for .h files in the directory of the
+.c file. (unixtail.mak)
+ - Preprocessor definitions require special quoting with Watcom C.
+Fixing this required adding a _D_ macro similar to II. This is a
+NON-BACKWARD-COMPATIBLE change, since this definition is now required in
+each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
+unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
+ - The VMS subdirectories didn't include the "." to make the
+directory name relative. (openvms.mak)
+ - Some of the OpenVMS command files were omitted from the
+distribution. (copy_one.com, rm_one.com, rm_all.com)
+ - MMK interprets a final - on a command line as a continuation
+marker. (gs.mak)
+ - gsiparm4_h was used before being defined. (lib.mak)
+ - Compiled initialization code (COMPILE_INITS=1) was broken because
+of the introduction of subdirectories. (bcwin32.mak, dvx-gcc.mak,
+msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak, unixtrad.mak,
+watc.mak, watcw32.mak, int.mak, geninit.c)
+ - Level 1 configurations would no longer build with the standard set
+of drivers. (devs.mak)
+ - wmake interpreted "&amp;" in a rule command line as calling for
+background execution. (wccommon.mak)
+
+Makes the standard set of features the same on all platforms, namely, psl3
+(PostScript LanguageLevel 3) + pdf (PDF 1.2/1.3) + dpsnext (DPS with NeXT
+extensions) + ttfont (ability to load TrueType fonts directly). Unix
+platforms add pipe (recognition of %pipe% file names). (bcwin32.mak,
+dvx-gcc.mak, msvc32.mak, openvms.mak, os2.mak, unix-gcc.mak, unixansi.mak,
+unixtrad.mak, watc.mak, watcw32.mak)
+
+Adds minimal support for Windows 95/NT compiler versions. (wccommon.mak)
+
+Notes a set of switches that may work around the optimizer bug in MSVC++
+5.0. (msvccmd.mak)
+
+</pre><h3><a name="5.66_Utilities"></a>Utilities</h3><pre>
+
+Adds a switch to genconf to set the escape character, since wmake interprets
+"&amp;" in a rule command line as calling for background execution. (genconf.c)
+
+Makes echogs recognize -+ alone as equivalent to - alone, for the sake of
+VMS systems, which interpret a final - as a line continuation marker.
+(echogs.c)
+
+Adds a viewpsm procedure to viewpbm.ps, for reassembling plane-separated
+files. (lib/viewpbm.ps)
+
+</pre><h3><a name="5.66_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - There were places where the code assumed that void * could be
+coerced to byte *, which not all C compilers support. (gdevpdfx.h,
+gdevpdfo.c)
+ - The name put_bytes was defined in two places, causing an error
+when linking with NOPRIVATE=1. (gdevpx.c)
+ - The minimum space computation for high-level images and for the
+scan line length for the sample async driver was slightly too small.
+(gdevbmpa.c)
+
+Improves the tracing output from the psm driver. (gdevpbm.c)
+
+Rewrites some macros to eliminate "statement not reached" compiler warnings.
+(gdevpx.c)
+
+Revises the (only) client for changes in the plane-extraction device API.
+(gdevpbm.c)
+
+Adds plane-separated BMP drivers, primarily for testing but also as an
+example. bmp[a]sep1 and bmp[a]sep8 produce 1- and 8-bit-per-pixel separated
+CMYK. (gdevbmp.h, gdevbmp.c, gdevbmpa.c, gdevbmpc.c)
+
+</pre><h3><a name="5.66_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The Watcom environment doesn't provide the st_blocks member of the
+stat structure. (stat_.h)
+ - In its standard configuration, the Watcom environment doesn't
+provide stdprn. (gp_iwatc.c)
+ - Newer versions of DEC C on OpenVMS don't require the remapping
+of the exit codes. (stdpre.h)
+
+Revises the dummy implementation of semaphores, monitors, and threads in an
+attempt to make async rendering (just barely) work for the non-overlay case.
+Unfortunately, this turned out not to be feasible. (gp_nsync.c)
+
+</pre><h3><a name="5.66_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Certain DEC compilers assume that a pointer is aligned even if it
+is cast to a pointer whose target type has weaker alignment; this produced
+"unaligned access" errors in the interpreter. (interp.c)
+ - A necessary cast was omitted. (zcrd.c)
+ - Level 1 configurations would no longer run. (lib/gs_init.ps)
+
+Updates clients to set mask image fattening properly. (zimage.c, zimage2.c)
+
+Rewrites some macros to eliminate "statement not reached" compiler warnings.
+(files.h, istruct.h)
+
+</pre><h3><a name="5.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - The test for whether to honor the Rotate key was backwards. (bug
+probably introduced in 5.24) (lib/pdf_main.ps)
+
+Updates the code to handle improper PDF files in which the startxref and the
+following file position appear on the same line rather than (as required by
+the spec) two successive lines. (lib/pdf_main.ps)
+
+</pre><h3><a name="5.66_Streams"></a>Streams</h3><pre>
+
+Notes a bug in s_DCT_get_quantization_tables. (sdcparam.c)
+
+</pre><h3><a name="5.66_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The algorithm for reducing 4-bit chunky to 1-bit separated colors
+didn't handle the trailing pixels of a transfer correctly. (gdevplnx.c)
+ - Banding for RGB devices with multi-plane halftones was broken.
+(bug introduced recently) (gxdcolor.c)
+ - Mask images were written in the band list with inverted polarity.
+(bug introduced in 5.60) (gximage1.c)
+ - Mask images were always fattened. Fixing this required extending
+the API, since gs_image_t_init_mask set adjust = true by default (a bad
+decision) and we didn't want to change it. (gschar.h, gscpm.h, gsiparam.h,
+gzstate.h, gschar.c, gximage1.c)
+ - The member names push and pop caused problems for compilers whose
+preprocessors consider it an error to use a macro defined with arguments as
+a name without arguments. (gxfont1.h, gstype1.c)
+ - Once again, gcc didn't detect some private/non-private mismatches.
+(gdevplnx.c, gsalphac.c, gximage2.c, gximage4.c)
+ - &amp; was used with an array (which gcc doesn't complain about).
+(gxshade6.c)
+ - There were several uses of automatic aggregate initialization,
+which not all C compilers support. (gdevprn.c, gdevps.c)
+ - There were places where the code assumed that void * could be
+coerced to byte *, which not all C compilers support. (gdevprn.c)
+ - Some \ line continuation characters were used inappropriately
+(in a macro argument list). (gxclimag.c)
+ - Some function prototypes didn't use the Pn macros. (gsalloc.c)
+ - A function definition not at the left margin confused ansi2knr.
+(gsfont.c)
+ - A cast for the result of malloc, needed on systems where malloc
+returns a char * rather than a void *, was missing. (gsmalloc.c)
+ - An occurrence of dev should be pdev. (I can't understand how we
+missed this in 5.65.) (gdevprna.c)
+ - A value was missing from a list of initial structure values,
+causing mismatches between subsequent values and the members they
+initialized. (gcc treated this as a warning: it should have given an
+error.) (gxband.h)
+ - When setting the tile phase during banding, the old value of the
+tile phase was written out rather than the new one. (gxclutil.c)
+ - The definition of fixed_mult_quo wasn't consistent between systems
+with FPU (where it took the floor, and might be slightly inaccurate) and
+systems without FPU (where it truncated towards zero, and was accurate).
+(gxfixed.h, genarch.c, gsmisc.c)
+ - Banding devices using multi-screen halftones didn't set the
+halftone phase correctly. We have now "fixed" this problem at least 4
+times. (gxclrast.c)
+ - The name put_bytes was defined in two places, causing an error
+when linking with NOPRIVATE=1. (gsparams.c)
+ - For [x][y]show, the pointers to the width arrays weren't
+initialized, causing memory access errors when checking or garbage
+collecting. (gschar.c)
+ - Due to a typo, bitmap characters were fattened too much.
+(gximage1.c)
+ - Some identifiers exceeded VMS's limit of 31 characters.
+(gdevprn.h, gscsepr.h, gsdevice.h, gxdevice.h, gdevdflt.c, gdevprn.c,
+gscsepr.c, gsdparam.c)
+ - The device halftone parameter was declared const inappropriately
+in some places. (gsdcolor.h, gxdither.h, gxdcolor.c, gxdither.c)
+ - gdev_mem_raster was used (misleadingly, even though it happened to
+produce the correct result) on possibly non-memory devices. (gxclread.c)
+ - Pure Level 1 configurations had some undefined procedures.
+(gscolor1.c, gscspace.c)
+ - Indexed color images could incorrectly conclude that they didn't
+need to re-render halftones, producing incorrect output. (gximono.c)
+ - gs_device_is_memory returned false for non-banding printer
+devices: this didn't used to matter, but it matters now. We changed it to
+test the procedures rather than the device name. (gdevmem.c)
+ - The plane extraction device didn't handle halftoned colors
+correctly. (gdevplnx.c)
+ - If an error occurred while building a Function object, a crash
+could occur while freeing the partially built object. (gsfunc.c)
+ - The plane extraction device didn't handle RasterOps correctly.
+(gdevplnx.c)
+ - The colors-used mask could include some additional, invalid bits.
+(gxclrect.c)
+ - The colors-used mask was updated incorrectly for RasterOps on
+subtractive-color devices. (gxclrect.c)
+ - Memory devices didn't set enough option bits for the case where
+get_bits_rectangle had to do conversion. (gdevmem.c)
+ - The TrueType font rasterizer didn't accept fonts whose 'type' was
+"true" rather than the documented <00 01 00 00>. (gstype42.c)
+ - A bug in the Watcom compiler caused two conditional expressions to
+execute incorrectly. (gstype42.c)
+ - When a page queue was freed, it attempted to free the page_info
+resource in the reserve entry, which is actually unused. (gxpageq.c)
+ - A necessary #include was missing. (gdevmr2n.c)
+
+Reduces the size of band list entries for halftoned colors somewhat.
+(gxclpath.h, gxclpath.c, gxclrast.c)
+
+Increases the number of saved band color masks per page, mostly for testing.
+(gxband.h)
+
+Rewrites some macros, and one 'for' statement, to eliminate "statement not
+reached" compiler warnings. (gxcldev.h, gxpath2.c)
+
+Corrects a tiny inaccuracy in the computation of trapezoid coordinates.
+(gdevddrw.c)
+
+Edits the trapezoid fill code for greater readability and better
+documentation of its functioning. The new code runs a little slower on
+compilers that don't support 'inline'. (gdevddrw.c)
+
+Improves the documentation of the tile phase bookkeeping. (gxclrast.c)
+
+Documents the fact that fixed_mult_quo takes the floor if the first argument
+is negative. (gxfixed.h)
+
+Finishes implementing clipsave and cliprestore. (gxclipsr.h, gxistate.h,
+gzstate.h, gsclipsr.c, gsstate.c)
+
+Implements driver access to planar, rather than chunky, banding.
+(gdevplnx.h, gdevprn.h, gxclist.h, gxdevcli.h, gxrplane.h, gdevplnx.c,
+gdevprn.c, gxclread.c)
+
+Makes it possible to set up memory devices that allocate just the line
+pointer table (but not the bitmap), or neither the line pointers nor the
+bitmap. (gxdevmem.h, gdevmem.c)
+
+Moves gx_device_white/black to a more appropriate header file. (gxdcolor.h)
+
+Moves gx_default_make_buffer_device to a more appropriate file.
+(gdevdflt.c, gdevprn.c)
+
+Adds plane extraction and expansion utility procedures, required for the
+extended capability of get_bits_rectangle. (gsbitops.h, gsbitops.c)
+
+Extends get_bits_rectangle so it can return individual planes rather than
+all planes. (gdevplnx.h, gsbittab.h, gxbitfmt.h, gxgetbit.h, gdevdgbr.c,
+gdevdrop.c, gdevmem.c, gdevplnx.c, gsalphac.c, gsbittab.c)
+
+Factors out the two more complex cases of gx_get_bits_copy into single-use
+procedures for readability. (gdevdgbr.c)
+
+Makes public the procedure for reducing a colored halftone to a pure or
+binary halftone, needed for planar rendering. (gxdither.h, gxdither.c)
+
+Moves the client_data pointer from gs_state to gs_imager_state.
+(gxistate.h, gzstate.h, gsstate.c)
+
+Extends the plane extraction device to handle fill_mask and images
+efficiently. (gxcmap.h, gdevplnx.h, gdevplnx.c)
+
+Creates a procedure to make a temporary copy of a gs_imager_state, needed
+for planar image processing. (gxistate.h, gsstate.c)
+
+Makes getting the color mapping procedures for a device a virtual procedure
+of the imager state, needed for planar image processing. (gxcmap.h,
+gxistate.h, gxcmap.c, gxicolor.c, gximono.c, gxi12bit.c)
+
+Increases the amount of memory allocated to the asynchronous rasterizer,
+since we now may need a dynamically allocated line pointer table for the
+target (plane) memory device. (gdevprna.c)
+
+Adds a record of which bands have "difficult" RasterOps -- RasterOps that
+can't be executed, even in principle, in CMYK space. We don't do anything
+with this information yet, but we will have to. (gsropt.h, gxband.h,
+gxcldev.h, gxclpath.h, gxclist.c, gxclpath.c, gxclrect.c)
+
+Makes conversion from render_plane indices to bit ranges the responsibility
+of the device, not the client. (gxrplane.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.65"></a>Version 5.65 (internal) (11/13/98)</h2>
+
+<p>
+The main purpose of this fileset is to fix the MS Windows and OpenVMS build
+procedures, which have been broken since 5.60. It also adds the ability for
+a driver to determine efficiently which colors are used in a given page or
+band, which is important for separated color printing, and contains some
+early support for plane-separated color printing.
+
+<h3><a name="5.65_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - Every platform-specific makefile must now define D_ and _D, the
+brackets for defining preprocessor macros.
+ - The unix-cc.mak makefile has been renamed unixtrad.mak, since it
+only applies to "traditional C" compilers.
+
+(Drivers, Library)
+ - Devices now store their TextAlphaBits and GraphicsAlphaBits values
+explicitly. The former get_alpha_bits procedure is obsoleted, and no
+longer implemented or called by any code we distribute.
+ - gx_device_color_info now has additional fields. Code that
+constructed gx_color_info_values in any way other than by using the dci_
+macros will no longer work.
+
+</pre><h3><a name="5.65_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The -sPSFile= switch was still documented, even though it no
+longer exists. (doc/Use.htm)
+ - The - "switch" wasn't documented in the list of switches,
+although it was documented elsewhere. (doc/Use.htm)
+ - The documentation for the PC environments was out of date -- it
+didn't mention the use of subdirectories. (doc/Make.htm)
+
+Updates the documentation on PostScript files to indicate in what directory
+the files are distributed. (doc/Psfiles.htm)
+
+Documents more of the utility procedures used by printer drivers.
+(gdevprn.h)
+
+Notes that the public tar archives may not be compatible with the tar
+program in SunOS 4.1.3. (doc/Make.htm)
+
+Adds documentation on the Unix "make pg" target. (doc/Make.htm)
+
+Updates documentation to reflect the name change from unix-cc.mak to
+unixtrad.mak. (doc/Make.htm)
+
+Adds some links for the benefit of people who have built Ghostscript before
+and therefore skip reading the initial sections of the documentation.
+(doc/Make.htm)
+
+Documents the new -_ switch. (doc/Use.htm)
+
+Updates the documentation to mention PostScript LanguageLevel 3 and to
+remove many references to 16-bit systems. (doc/Language.htm)
+
+</pre><h3><a name="5.65_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - A cast discarded `const' needlessly. (genconf.c)
+ - Upper-case echogs switches were getting converted to lower case
+on VMS. (jpeg.mak)
+ - $(EXP) was missing before some invocations of executables.
+(gs.mak, jpeg.mak, lib.mak)
+ - Some dependencies in the Unix install script were incorrect.
+(unixinst.mak)
+ - Because of differences between shells, putting *.upp in the list
+of files to be installed didn't work with some shells. (unixinst.mak)
+ - The PC makefiles were out of date. (bcwin32.mak, pcwin.mak,
+winint.mak, winlib.mak, dwmain.rc, gsdll32.rc)
+ - Some makefiles still used $(DEV) instead of dev. (dvx-tail.mak,
+msvclib.mak, openvms.mak, os2.mak, pcwin.mak, watclib.mak, winlib.mak)
+ - The DEVICE_DEVSn lists overflowed the DOS 120-character command
+line limit again. We had to add DEVICE_DEVS16 through 20 to work around
+this. (*.mak)
+ - Preprocessor definitions have a different syntax on VMS. Fixing
+this required adding D_ and _D macros, similar to I_ and _I. This is a
+NON-BACKWARD-COMPATIBLE change, since these definitions are now required in
+each platform-specific makefile. (dvx-head.mak, openvms.mak, os2.mak,
+unixhead.mak, wccommon.mak, winlib.mak, zlib.mak)
+
+Adds command line switches to generate additional warnings when compiling
+the auxiliary programs with gcc. (unix-gcc.mak)
+
+Gets rid of the EXPP and SHP macros, since they aren't used or needed any
+longer. (gs.mak, bcwin32.mak, dvx-head.mak, msvccmd.mak, openvms.mak,
+os2.mak, unixhead.mak, watcw32.mak, wccommon.mak)
+
+Changes the Unix EXP to null, since all executables now use an explicit
+directory prefix. (unixhead.mak)
+
+Renames unix-cc.mak as unixtrad.mak, since people with ANSI-compatible cc
+were getting confused. (unix-cc.mak [deleted], unixtrad.mak)
+
+Adds a -_ switch, for piped execution with buffering. (iminst.h,
+imainarg.c)
+
+</pre><h3><a name="5.65_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The revised ansi2knr didn't recognize "foo(void)" as a procedure
+definition. (ansi2knr.c)
+ - ansi2knr didn't handle function definitions where the last
+formal parameter was a procedure parameter. (ansi2knr.c)
+
+Adds a utility for printing an informative error page if a PostScript job
+fails. (lib/errpage.ps, doc/Psfiles.htm, unixinst.mak)
+
+</pre><h3><a name="5.65_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The [e]pswrite drivers produced incorrect output for images in
+non-Device color spaces. We fixed this by causing all other images to be
+handled as rectangles. This is clearly not satisfactory: we need to unify
+the PS and PDF writers in this area. (gdevps.c)
+ - The CCITTFaxEncoded data produced by the [e]pswrite driver had
+both a Rows value and an EndOfBlock marker, which wasn't compatible with
+some Adobe interpreters. (gdevpsdf.c)
+ - X devices couldn't be copied, because the copy didn't clear the
+list of X fonts and therefore tried to free it a second time. (gdevx.c,
+gdevxini.c)
+ - gdevx.h declared a type called rect, conflicting with variables
+named rect. (gdevx.h, gdevx.c)
+ - A function definition wasn't formatted properly to be
+recognized by ansi2knr. (gdevupd.c)
+ - The PCL XL drivers crashed if given a masked image. (gdevpx.c)
+
+Adds a PBM driver that writes separated CMYK, using the colors-used masks to
+skip bands. (devs.mak, gdevpbm.c)
+
+Updates drivers that formerly supported the TextAlphaBits and
+GraphicsAlphaBits parameters themselves. (gdevmswn.h, gdevsvga.h,
+gdevpbm.c, gdevmswn.c, gdevpm.c, gdevwdib.c, gdevsvga.c, gdevxalt.c)
+
+</pre><h3><a name="5.65_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The stack size on the Watcom platform was set too small.
+(watc.mak)
+ - The OpenVMS platform code and makefiles had gotten out of date.
+(gp_vms.c, openvms.mak)
+
+</pre><h3><a name="5.65_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The size of Indexed color space lookup tables wasn't set, possibly
+causing them to be corrupted during garbage collection. (zcsindex.c)
+ - A function definition wasn't formatted properly to be
+recognized by ansi2knr. (icontext.c)
+ - quit was only rebound to stop in encapsulated jobs, rather than in
+any context under control of a job server. Since we don't currently have
+any explicit way to indicate whether execution is under control of a job
+server, we consider that it is under a job server iff startjob has ever been
+executed. (lib/gs_lev2.ps)
+
+Adds tracing output for removing an entry from a dictionary. (idict.c)
+
+Slightly improves dictionary deletion so that it can replace a run of
+deleted keys with empty keys. (idict.c)
+
+Adds statistics-gathering to the interpreter. (interp.c)
+
+Adds more statistics-gathering to the dictionary stack search. (idstack.c)
+
+Improves the debugging printout of packed arrays. (idebug.c)
+
+Increases the name table allocation increment from 128 names (1.5K) to 256
+names (3K), to provide better scattering of name indices. (inamedef.h)
+
+Changes the name count / index mapping to provide better scattering.
+(inamedef.h)
+
+</pre><h3><a name="5.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - If a font other than the base 14 wasn't embedded and lacked a
+descriptor, an error occurred. (The PDF specification explicitly prohibits
+this, but Acrobat PDFWriter 3.02 for Windows produces PDF files with
+TrueType fonts that lack a descriptor.) (lib/pdf_font.ps)
+
+</pre><h3><a name="5.65_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The computation of colors used by CMYK halftones was incorrect.
+(gxclpath.c)
+ - Some header files had preprocessor directives with a space before
+the #, which pre-ANSI compilers don't accept. (gpsync.h, gsjconf.h,
+gsmemlok.h, gxsync.h, gxxfont.h)
+ - A number of prototypes didn't use the Pn macros. (gscolor2.h,
+gscsepr.h, gsptype1.h, gspcolor.c)
+ - A function definition wasn't formatted properly to be
+recognized by ansi2knr. (gxcht.c)
+ - The algorithm for reducing single-plane CMYK halftones to binary
+halftones was incorrect (bug introduced in 5.60). (gxdither.c)
+ - Writing a degenerate triangle or parallelogram in the band list
+could cause a memory access error when rasterizing. (gxclrast.c)
+
+Adds per-band "colors used" information to the information for a saved page,
+and procedures (gdev_prn_colors_used and gx_page_info_colors_used, defined
+in gdevprn.h) for accessing it. (gdevprn.h, gxband.h, gxclist.h, gdevprn.c,
+gxclist.c)
+
+Adds an internal device that appears to clients as a multi-plane color
+device, and extracts a single plane for actual rendering. This device will
+be used to support planar output devices. (gdevplnx.h, gsbitops.h,
+gdevplnx.c)
+
+Adds explicit color_info.text_anti_alias_bits and graphics_anti_alias_bits
+values in the device state, obsoleting the get_alpha_bits procedure, and
+makes them settable for all devices. (gxdevcli.h, gxdevice.h, gdevabuf.c,
+gdevdflt.c, gdevnfwd.c, gdevprn.c, gsdparam.c)
+
+Reformats some code for readability. (gxdither.c)
+
+Adds a tentative API for a procedure that allows band rasterizing directly
+into client's memory. This is tentative because we may need to add the
+ability to select an individual plane. (gdevprn.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.64"></a>Version 5.64 (internal) (11/5/98)</h2>
+
+<p>
+This is another incremental fileset to fix problems for an external
+customer.
+
+<h3><a name="5.64_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Drivers)
+ - The output_page procedure of all drivers now must call
+gx_finish_output_page as its last action. (This doesn't affect ordinary
+printer or raster file drivers, which already call a common procedure.)
+
+</pre><h3><a name="5.64_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The instructions for creating 'makefile' on Unix systems were
+out of date. (doc/Make.htm)
+
+</pre><h3><a name="5.64_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - An omitted return statement caused genconf to malfunction on some
+platforms. (genconf.c)
+ - The replacement of MAKEFILES by TOP_MAKEFILES accidentally changed
+some comments that should not have been changed. (bcwin32.mak, gs.mak,
+msvctail.mak, openvms.mak, os2.mak, watcw32.mak, wctail.mak, winlib.mak)
+
+</pre><h3><a name="5.64_Drivers"></a>Drivers</h3><pre>
+
+Updates drivers to call gx_finish_output_page where needed. (gdev3b1.c,
+gdevcgm.c, gdevcp50.c, gdevpdf.c, gdevmswn.c, gdevpm.c, gdevps.c, gdevpx.c,
+gdevsnfb.c, gdevwprn.c, gdevx.c)
+
+</pre><h3><a name="5.64_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The FontBBox workaround introduced in 5.63 didn't work properly.
+(zchar1.c)
+ - PageCount was getting incremented in the first device of a device
+pipeline, rather than in the last one and being propagated back.
+(gxdevice.h, gdevbbox.c, gdevdflt.c, gdevnfwd.c, gdevprn.c, gdevprna.c,
+gsdevice.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.63"></a>Version 5.63 (internal) (11/4/98)</h2>
+
+<p>
+This fileset was driven by the development needs of an external customer,
+primarily related to asynchronous rendering. It includes a few bug fixes as
+well.
+
+<h3><a name="5.63_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - In the makefiles, changes the name MAKEFILES to TOP_MAKEFILES.
+
+(Library)
+ - The pis member of the Type 1 interpreter state was renamed in
+order to catch places that assumed it was set. (It may now be 0.) This
+should not affect any client code.
+ - gx_page_queue_dnit and gx_page_queue_finish_dequeue now free the
+band list information associated with the page_info in the queue entry. An
+explicit call of gx_page_queue_entry_free_page_info is now required to free
+this information before any other call of gx_page_queue_entry_free.
+
+</pre><h3><a name="5.63_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - devs.mak incorrectly referred to msdevs.mak rather than pcwin.mak.
+(devs.mak)
+
+</pre><h3><a name="5.63_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - There was a $ in the makefile that wasn't quoted. (unix-gcc.mak)
+ - The name MAKEFILES has a special meaning in GNU make which only be
+disabled by using a directive that is a syntactic error for standard 'make'
+implementations. We had to work around this by changing all occurrences of
+MAKEFILES to TOP_MAKEFILES. (*.mak)
+ - genconf did the wrong thing for modules with names shorter than
+5 characters. (genconf.c)
+
+</pre><h3><a name="5.63_Drivers"></a>Drivers</h3><pre>
+
+Updates the Canon BJC library, changing the names of the files. This code
+is still very preliminary. (gdevbjcl.h, gdevbjcl.c)
+
+</pre><h3><a name="5.63_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - Some Type 1 fonts have a plausible but incorrect (too-small)
+FontBBox, causing some characters to be clipped. We work around this by
+enlarging the FontBBox and restarting the rasterization if the outline goes
+outside the FontBBox. (zchar1.c)
+
+</pre><h3><a name="5.63_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - gx_default_strip_copy_rop didn't check for zero width before
+dividing by it. (gdevdrop.c)
+ - Some places that called a procedure returning void tried to use
+the return value. (gximage.c, gximage1.c, gximage4.c)
+ - The flatness for rendering Type 1 characters was set incorrectly
+(always set to 0, producing best accuracy at extra cost) for characters not
+in portrait orientation. (gxtype1.c)
+ - clist_begin_typed_image incorrectly used the memory manager client
+name "clist_begin_image". (gxclimag.c)
+ - If a page queue entry was created without a page_info, the entry's
+page_info wasn't initialized, probably causing a crash when attempting to
+free the (nonexistent) associated band files later. (gxpageq.c)
+
+More fully supports the use of saved page_info objects for decoupling banded
+rendering from band list construction:
+ - Adds the ability to close and free the command list associated
+with a saved page. (gxclist.h, gxclist.c)
+ - Separates freeing of the band list information associated with a
+page queue entry from freeing the entry itself. (gxpageq.h, gxpageq.c)
+ - Changes the rendering thread for asynchronous band rendering so
+that it doesn't try to free the band list information twice. (gdevprna.c)
+
+Implements triangles and parallelograms in the band list, primarily for the
+sake of smooth shading. (gxclpath.h, gxclist.c, gxclpath.c, gxclrast.c)
+
+Adds a rectangle merging procedure, parallel to rectangle intersection.
+This is needed for the FontBBox fix. (gsrect.h)
+
+Adds logic for keeping track of what pixel values are used in which bands.
+Currently this information is not used for anything. (gdevmrop.h, gsropt.h,
+gxcldev.h, gxclpath.h, gxclrect.c, gxclpath.c, gxclimag.c)
+
+Updates a few more files for readability and coding conventions.
+(gxband.h, gxpageq.c)
+
+Updates users of gxband.h and gxpageq.h. (gdevprn.h, gxclist.h, gxpageq.h,
+gdevprna.c, gxclpage.c, gxclread.c)
+
+Moves the definition of the page queue into the (private) implementation
+file. (gxpageq.h, gxpageq.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.62"></a>Version 5.62 (internal) (10/31/98)</h2>
+
+<p>
+This fileset concludes this round of work on (primarily color) performance
+improvement. It contains almost no new bug fixes.
+
+<h3><a name="5.62_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Library)
+ - Clients that load the CIE caches themselves must now reset the
+procedures to the _from_cache values. (This affects the PostScript
+interpreter, but no ordinary library clients.)
+ - gs_cie_compute_wbsd (an internal procedure) was changed to
+gs_cie_compute_points_sd, with different parameters.
+
+</pre><h3><a name="5.62_Documentation"></a>Documentation</h3><pre>
+
+Adds information about problems with PDF files copied from Macintosh
+environments. (doc/Use.htm)
+
+</pre><h3><a name="5.62_Drivers"></a>Drivers</h3><pre>
+
+Adds a library for generating Canon BJC commands. This code is subject to
+change without notice! (gdevcbjc.h, gdevcbjc.c)
+
+</pre><h3><a name="5.62_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The structures allocated for CIE RenderTables weren't marked
+correctly for garbage collection, possibly mangling the output. (zcie.c)
+ - The CIE color space procedures weren't reset after the cache was
+loaded, producing incorrect output now that it matters. (zcie.c, zcrd.c)
+
+</pre><h3><a name="5.62_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Under some circumstances, a setbbox didn't take effect.
+(gxpcopy.c)
+ - The last step of CIE color mapping didn't clamp the very top end
+of the range correctly. (gsciemap.c)
+
+Speeds up bits_replicate_horizontally a bit more. (gsbitops.c)
+
+Separates the CIE color mapping code from CIE cache loading, since the file
+was getting too big. (gscie.h, gscie.c, gsciemap.c)
+
+Finishes adding the hooks for skipping steps during CIE color mapping when
+possible, and implements one case of step-skipping. (gscie.h, gscie.c,
+gsciemap.c, gscrd.c)
+
+Adds more tracing to the CIE color machinery. (gscie.c)
+
+Changes the default number of tiles for the colored halftone screen caches
+from 1 to 4, substantially reducing cache turnover. (gsht1.c, gshtx.c,
+gxclrast.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.61"></a>Version 5.61 (internal) (10/28/98)</h2>
+
+<p>
+More rendering speedups, and fixes for many of the minor problems reported
+in 5.50.
+
+<h3><a name="5.61_Documentation"></a>Docmentation</h3><pre>
+
+Fixes problems:
+ - There were still some incorrect references to .txt files.
+(gs.mak, libpng.mak)
+ - Two references to libpng should have referred to libjpeg.
+(gs.mak)
+
+</pre><h3><a name="5.61_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - GNU 'make' treats the name MAKEFILES specially. (unix-gcc.mak)
+ - genconf didn't sort libraries in the right order. (genconf.c)
+ - The dependency for ansi2knr, and the invocation of ccgs, didn't
+include the directory name. (ccgs, unix-cc.mak)
+ - The CC_ and CCAUX rules didn't invoke the new ccgs correctly.
+(unix-cc.mak)
+ - There was a typo in a comment. (unixtail.mak)
+ - gcc versions of the form 2.7.2.f.1 weren't recognized as having
+the const-related code generation bug. (unix-gcc.mak)
+
+Documents workaround for bugs in newer IRIX compilers. (doc/Make.htm)
+
+</pre><h3><a name="5.61_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - ansi2knr didn't understand the new formatting of the enum_ptrs and
+reloc_ptrs procedures, which now don't have a left brace on the same line as
+the macro call that defines the procedure. (ansi2knr.c)
+
+Adds a utility for viewing MIFF files. (lib/viewmiff.ps)
+
+</pre><h3><a name="5.61_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The X driver could report a depth (e.g., 15 bits) that caused
+problems elsewhere. (gdevxini.c)
+ - With the X driver, if the display is grey-scale or does not have
+enough colors to allocate a color ramp, Ghostscript crashed in
+x_map_color_rgb due to an array index overflow. (gdevx.c)
+ - The PDF writer used the X scaling of fonts to determine the point
+size rather than the Y scaling, which gives the wrong result for synthetic
+condensed fonts. (gdevpdft.c)
+ - If the last thing written before a flushpage was text, the X
+driver might fail to display it. (gdevx.c)
+ - The PDF writer didn't free the streams created for image
+compression, causing a memory leak. (gdevpsdf.c)
+ - pswrite didn't output a command to set the page size. (gdevps.c)
+
+Removes an obsolete comment and commented-out line. (gdevxalt.c)
+
+</pre><h3><a name="5.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Explicit (not resource) Indexed color spaces caused an error.
+(lib/pdf_draw.ps)
+
+</pre><h3><a name="5.61_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The PNGPredictor filters didn't free their row buffer. (spngp.c)
+ - The PNGPredictor filters didn't handle end-of-data correctly.
+(spngp.c)
+
+Changes the eexec filter to ignore % characters when reading
+ASCIIHex-encoded data. This is contrary to the Adobe documentation, but one
+badly coded prologue requires it. (seexec.c)
+
+</pre><h3><a name="5.61_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The definition of TRANSPARENCY_PER_H_P was in the wrong module,
+causing it to be ignored. (gdevmrop.h, gdevdrop.c)
+ - There was a typo in the tracing output for init_tile_cursor.
+(gxcht.c)
+ - gx_get_bits_copy computed the standard raster incorrectly if
+the destination used a different color representation from the source,
+causing multi-line transfers to be done incorrectly. (gdevdgbr.c)
+ - Parentheses were missing around the use of width_bits in the
+definition of bitmap_raster, possibly causing incorrect computation.
+(gxbitmap.h)
+ - When rendering a Pattern, a singular CTM caused an error even if
+the Pattern was empty. (gspcolor.c)
+ - The lookup table wasn't allocated for device-originated CRDs.
+(gscrdp.c)
+ - If an error occurred when setting up to rasterize a band,
+data_bits could be freed without ever having been initialized. (gxclrast.c)
+ - Processing a CIE-color image with a color space different from the
+current color space caused an error. (gscie.c)
+ - The speedup for bits_replicate_horizontally had an algorithm
+error, producing incorrect output. (gsbitops.c)
+
+Splits up the memory device implementation of RasterOp, since the file was
+getting too large. (gdevmem.h, gdevm1.c, gdevm8.c, gdevm16.c, gdevm24.c,
+gdevm32.c, gdevmrop.c [deleted], gdevmr1.c, gdevmr2n.c, gdevmr8n.c,
+gsnorop.c)
+
+Cleans up a little formatting. (gsbittab.h)
+
+Speeds up the default RasterOp implementation some more. (gdevdgbr.c,
+gdevdrop.c, gdevmem.c)
+
+Speeds up testing whether a given halftone level is already present in its
+cache. (gzht.h, gxht.c)
+
+Speeds up 1-bit CMYK halftones a bit more. (gxcht.c)
+
+Makes filling always use the (much faster) trapezoid-based algorithm if the
+region being filled is a rectangle. (gxfill.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.60"></a>Version 5.60 (internal) (10/18/98)</h2>
+
+<p>
+This fileset incorporates many performance enhancements for 1-bit CMYK
+devices, especially for PCL 5c interpretation.
+
+<p>
+This fileset divides the files into subdirectories. In the lists of changed
+files, files with no explicit subdirectory name are in the src subdirectory.
+The revised OpenVMS and OS/2 makefiles have not been tested.
+
+<h3><a name="5.60_Incompatible_changes"></a>Incompatible changes</h3><pre>
+
+(Procedures)
+ - The instructions for font compilation in doc/Fonts.htm are
+different.
+ - The fileset has been split into multiple directories; the source
+code and makefiles are now in src/.
+ - The top-level makefile requires a definition for BINDIR for the
+directory to hold the final executable.
+ - Every .dev rule of the form
+ xxx.dev: &lt;list&gt;
+ $(SETyyy) xxx &lt;items&gt;
+ $(ADDMOD) xxx &lt;items&gt;
+must be changed to
+ $(DD)xxx.dev: &lt;list&gt;
+ $(SETyyy) $(DD)xxx &lt;items&gt;
+ $(ADDMOD) $(DD)xxx &lt;items&gt;
+(DD for drivers, PSD for PostScript/PDF-interpreter features, GLD for
+graphics library features). Every -include and -replace option in the
+makefiles rules, and every element of FEATURE_DEVS and DEVICE_DEVS*, must be
+changed similarly. This is very unfortunate, especially since people
+editing FEATURE_DEVS and DEVICE_DEVS* must now know which subsystem
+implements a particular feature; but we tried 3 different ways to get the
+generated .dev files out of the top-level directory, and this was the only
+one we could make work.
+ - Top-level makefiles must define both MAKEFILE and MAKEFILES,
+the latter to include any subsidiary makefiles that define configuration
+parameters. Dependencies on $(MAKEFILE) must be changed to $(MAKEFILES).
+ - Color space objects now must either be allocated with the
+gs_cspace_build_ procedures or initialized with the gs_cspace_init_
+procedures: building color spaces "by hand" is no longer allowed.
+
+(Library)
+ - There are new required elements of the gs_image_type_t structure.
+ - The binary and colored variants of gx_device_halftone have
+changed. (No APIs are affected.)
+ - If a device changes its (effective) color mapping algorithm other
+than as a side effect of put_params, it must call
+gx_device_decache_colors(dev).
+
+</pre><h3><a name="5.60_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - Some files still referred to .doc files rather than .htm.
+(gsiparam.h, imain.h)
+ - Version 5.50 was incorrectly identified as a beta version.
+(doc/News.htm)
+ - The instructions for cross-compilation were seriously
+incomplete. (doc/Make.htm)
+
+Adds a text-only README file. (doc/README)
+
+Updates the instructions for font compilation. (doc/Fonts.htm)
+
+Updates the instructions for device and feature selection. (doc/Make.htm)
+
+Adds material on 8.3 file names, compiler warning messages, and graphics
+library error codes to the C style guide. (doc/C-style.htm)
+
+Adds a note about gx_device_decache_colors. (doc/Drivers.htm)
+
+Improves formatting slightly. (doc/Install.htm, doc/Use.htm)
+
+</pre><h3><a name="5.60_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The Unix install script referred to an obsolete ps2image.ps file.
+(unixinst.mak)
+ - The Unix CC script had some duplicated definitions. (unix-cc.mak)
+ - The DVX makefile referred to int.mak in GLSRC rather than PSSRC.
+(dvx-gcc.mak)
+ - rollconv.ps wasn't installed with the other utilities.
+(unixinst.mak)
+ - Some definitions of MAKEFILE lacked a directory name. (os2.mak,
+unix-cc.mak, unixansi.mak, watclib.mak)
+ - There were inappropriate dependencies on a file with the literal
+name `makefile'. (bcwin32.mak, gs.mak, watc32.mak)
+ - Unix systems didn't use -fomit-frame-pointer when possible.
+(unix-cc.mak, unix-gcc.mak, unixansi.mak, unix-end.mak)
+
+Restructures the source files into multiple subdirectories:
+ src/ - files needed at build time: *.mak, *.h, *.c, *.cpp, *.icx, *.rc,
+ *.cmd, ??.bat, *.com, *.rps, *.dif, *.cfg
+ lib/ - files needed at run time: *_*.ps, *.ppd, *.upp, *.bat
+ doc/ - documentation other than man pages: *.htm, *.txt
+ man/ - man pages: *.1
+ examples/ - sample input data: *.ps, *.eps, *.pdf
+Also incorporates the font compilation makefile into the main makefile,
+since the former now depends on parameters defined in the latter. (*.mak)
+
+****** HAVEN'T SETTLED HOW TO HANDLE .ico FILES ******
+
+NOTE: Still need to update: openvms.mak, os2.mak.
+
+Updates the Unix install script for the directory split. (unixinst.mak)
+
+Updates the font compilation makefile rules to handle alternate directories.
+(cfonts.mak, int.mak)
+
+****** PROBLEM: cfonts.mak NEEDS CCFONT, BUT int.mak NEEDS CF* FOR ADDING
+ONE'S OWN FONTS ******
+
+Removes useless dependencies on gs_*.ps files. (int.mak)
+
+Moves the .dev files into the GEN directories where they belong. (gs.mak,
+dvx-tail.mak, msvclib.mak, openvms.mak, os2.mak, pcwin.mak, ugcclib.mak,
+unixhead.mak, unixtail.mak, unix-end.mak, watc.mak, watclib.mak, winlib.mak,
+echogs.c, genconf.c) ****** NO_OP FOR dvx HASN'T BEEN VERIFIED ******
+NOTE: Still to do:
+src/bcwin32.mak
+src/dvx-gcc.mak
+src/dvx-head.mak
+src/dvx-tail.mak
+src/msvc32.mak
+src/msvccmd.mak
+src/msvclib.mak
+src/msvctail.mak
+src/openvms.mak
+src/os2.mak
+src/pcwin.mak
+src/ugcclib.mak
+src/watc.mak
+src/watclib.mak
+src/watcw32.mak
+src/wccommon.mak
+src/wctail.mak
+src/winint.mak
+src/winlib.mak
+
+Adds a new BINDIR directory for the final executable (and associated files
+like resource files). After building, only the contents of BINDIR and lib
+are needed for execution. (gs.mak, unix-end.mak) ****** NEED TO DO
+openvms.mak, os2.mak, OTHER PC MAKEFILES ******
+
+Updates libpng to version 1.0.2. (libpng.mak)
+
+</pre><h3><a name="5.60_Utilities"></a>Utilities</h3><pre>
+
+Adds a new switch, -b, to echogs. (echogs.c)
+
+</pre><h3><a name="5.60_Drivers"></a>Drivers</h3><pre>
+
+Updates the PDF writer for the change in color space initialization.
+(gdevpdfi.c)
+
+Speeds up the pkmraw driver a bit more. (gdevpbm.c)
+
+Updates some drivers to use the new CMYK color mapping procedures.
+(gdevpbm.c, gdevpcx.c, gdevxalt.c)
+
+Updates one driver that maintained its own color cache. (gdevxalt.c)
+
+Removes some compiler warnings (mostly about "uninitialized" variables).
+(gdevpdfo.c, gdevpdft.c, gdevpx.c)
+
+Adds another driver for the H-P Color LaserJet 5/5M. (gdevcljc.c)
+
+</pre><h3><a name="5.60_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - A change in the MetroWerks C compiler caused the hypot function
+to become declared. (math_.h)
+
+</pre><h3><a name="5.60_Interpreter"></a>Interpreter</h3><pre>
+
+Updates the compiled font code for updates in the type declarations.
+(iccfont.c, icfontab.c)
+
+Cleans up some more formatting and macros. (ccfont.h, errors.h, icfontab.c,
+interp.c)
+
+Updates clients for the change in color space initialization. (zcsdevn.c,
+zcsindex.c, zcspixel.c, zcssepr.c, zpcolor.c)
+
+Updates the memory validator for the addition of the large-block freelist.
+(ilocate.c)
+
+</pre><h3><a name="5.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - If the final %%EOF was followed by any blanks before the newline,
+an error would occur. (lib/pdf_main.ps)
+
+</pre><h3><a name="5.60_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The LZWDecode filter wouldn't handle a file that had 4096-256-2+1
+data items before the reset. (We think this is a bug in the file, but
+Acrobat accepts it.) (slzwx.h, slzwd.c)
+
+Rearranges code slightly to improve readability. (spdiff.c)
+
+</pre><h3><a name="5.60_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Changing the resolution (or any other parameter) of the bbox
+device from the command line caused an invalid memory access. (gdevbbox.c)
+ - When banding, if the very first drawing operation involved a
+halftone with non-zero phase, an arithmetic exception occurred.
+(gxclpath.c)
+ - When banding, the X offset of the band was negated, producing
+incorrect output when placing multiple source pages on a single output page.
+(gxclread.c)
+ - When banding, rotated images crossing band boundaries produced
+incorrect output, because the subrectangle X value was inconsistent with the
+amount of data transmitted. (gxclimag.c)
+ - When banding, the clipping check didn't take interpolation support
+into account. (gxclimag.c)
+ - The clipping check for banding used (int) to take the floor of
+floating point values, which is wrong for negative values. (gxclimag.c)
+ - The bounding box device didn't return an empty bounding
+rectangle if nothing had been written to it. (gdevbbox.c)
+ - A value was conditional on a debugging switch even if DEBUG wasn't
+defined. (gxcht.c)
+ - Filling a region with a large colored halftone, a non-default
+RasterOp, and a non-null RasterOp source could cause only part of the region
+to be filled. (gxcht.c) ****** NOT FIXED YET ******
+ - Type 1 fonts that used very large numbers (&gt;= 2^19) caused a
+rangecheck. We've fixed this for the only case that seems to matter, namely
+&lt;very-large-number&gt; &lt;number&gt; div. (gxtype1.h, gstype1.c)
+ - The memory-based band list allocator failed to return an error
+code from memfile_next_blk. (gxclmem.c)
+ - When recovering from a low-band-list-memory condition while
+writing an image, the record of the current image enumeration
+(cdev-&gt;image_enum_id) wasn't updated. (gxclimag.c)
+ - The estimated memory requirement for the band list rasterizer was
+too small. (gdevprna.c)
+
+Adds some tracing to mask clipping. (gxclipm.c)
+
+Speeds up masked images by doing mask clipping before halftoning, using a
+more efficient mask scanning algorithm, and checking for vertical blocks of
+1s. (gxclipm.c)
+
+Speeds up ImageType 4 images greatly by incorporating the color-key check
+into the ImageType 1 rendering code. NOTE: the 12-bit case has not been
+tested. (gxcpath.h, gximage.h, gxi12bit.c, gxicolor.c, gxifast.c,
+gxiinit.c, gximage4.c, gximono.c, gxiscale.c)
+
+Implements passing ImageType 4 images (and potentially others) through the
+band list. This involves adding image parameter writing and reading
+procedures to the image type structure. (gscdefs.h, gsiparam.h, gsiparm2.h,
+gsiparm4.h, gsmatrix.h, gxclpath.h, gxiparam.h, gconf.c, genconf.c,
+gsmatrix.c, gxclimag.c, gxclist.c, gxclpath.c, gxclrast.c, gxiinit.c,
+gximage2.c, gximage3.c, gximage4.c)
+
+Splits off the generic image support code from the ImageType 1 code.
+(gxiinit.c [deleted], gximage.c, gximage1.c, gxipixel.c)
+
+Removes some vestiges of support for 16-bit environments. (gsmisc.c)
+
+Implements bit-planar images, important for PCL interpretation.
+(gsiparam.h, gximage.h, gxiparam.h, gdevddrw.c, gdevpdfi.c, gdevps.c,
+gsimage.c, gxclimag.c, gxidata.c, gximage.c, gxipixel.c) ****** NOT TESTED
+YET ******
+
+Makes closing a memory device that owns its bitmap set the bitmap pointer to
+0, for the sake of an application that doesn't handle is_open properly.
+(gdevmem.c)
+
+Speeds up floating-point emulation for single-precision add, subtract, and
+multiply. (gsfemu.c)
+
+Speeds up sampling of transfer functions. (gshtx.c)
+
+Makes the CIE cache used fixed-point values if the CPU has slow floating
+point. (gscie.h)
+
+Adds a unique ID to color spaces to allow fast detection of reselecting the
+same color space. This matters for certain client code that repeatedly
+reselects the same color space, since selecting certain color spaces is
+expensive. (gscpixel.h, gscspace.h, gxcspace.h, gscolor2.c, gscpixel.c,
+gscscie.c, gscspace.c, gspcolor.c, gsstate.c, gximage2.c) ****** NEED TO FIX
+gxclrast.c TO ALLOC INDEXED COLOR SPACE ******
+
+Speeds up setting Pattern color spaces, by bypassing the install code for
+the base space. (gspcolor.c)
+
+Adds a unique ID to CRDs to allow fast detection of reselecting the same
+CRD. This matters for certain client code that does this repeatedly.
+(gscie.h, gscrd.h, gscrd.c)
+
+Detects setting the CRD to one with identical PQR components, and bypasses
+an expensive setup step. (gscie.c)
+
+Speeds up converting pixels between representations (gx_get_bits_copy) for
+devices with up to 4 bits per pixel, by caching the pixel values.
+(gdevdgbr.c)
+
+Speeds up the slow default RasterOp algorithm a little. (gdevdrop.c)
+
+Defines standard mapping procedures for 1-bit-per-component CMYK colors.
+Other code can then test for the presence of these procedures and use more
+efficient algorithms. (gxdevice.h, gxcmap.c)
+
+Speeds up some algorithms in the bbox device by making some recursive calls
+use a pure color rather than a client-supplied one. (gdevbbox.h, gdevbbox.c)
+
+Adds a cache for the black and white pixel values to the device structure.
+(gxdevcli.h, gxdevice.h, gdevalph.c, gdevnfwd.c, gsdparam.c, gxdcolor.c)
+
+Makes the code for colored halftones a little more readable. (gxcht.c)
+
+Speeds up color mapping for CMYK devices by copying the color mapping
+procedures into forwarding devices, when applicable. (gdevcmap.c,
+gdevmem.c, gsdevice.c, gxclip.c)
+
+Removes some compiler warnings (mostly about "uninitialized" variables).
+(gxcldev.h, gsdevmem.c, gsshade.c, gstype42.c, gxclpath.c, gxfill.c,
+gximage3.c, gxpath2.c, gxpcopy.c)
+
+For the benefit of certain client code that commonly sets a CRD and then
+doesn't use it, makes loading of the joint CIE caches lazy (at the library
+level). (gscie.h, gscie.c)
+
+Changes CIE color restriction from a macro to a procedure, since it is
+rarely used. (gscie.c)
+
+Adds code and structures for detecting when CIE Decode and/or Encode
+procedures are simply linear transformations, which would allow collapsing
+them into the adjacent matrix, but doesn't actually do the collapsing.
+(gscie.h, gscie.c)
+
+Speeds up color halftoning by pre-computing the mask of planes that need to
+be halftoned, and preconverting multi-plane halftones to binary or solid
+colors when possible. (gsdcolor.h, gxcht.c, gxdcolor.c, gxdither.c, gxht.c)
+
+Optimizes color mapping for 1-bit-per-component CMYK halftones. (gxcht.c)
+
+Optimizes null RasterOp sources for black = 1 as well as black = 0.
+(gxdcolor.c)
+
+Modifies the standard allocator so it keeps track of large free blocks as
+well as small ones, and uses them to satisfy requests when appropriate.
+(gxalloc.h, gsalloc.c)
+
+Speeds up the horizontal bitmap replication code a bit. (Much more is
+possible.) (gsbitops.c)
+
+Changes gs_image_max_planes to gs_image_max_components to reflect its
+function more accurately. (gdevddrw.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.50"></a>Version 5.50 (9/16/98)</h2>
+
+<p>
+This is the first public release since 5.10. See
+<a href="Current.htm">the release summary</a>
+for a list of major additions and changes.
+
+<h3><a name="5.50_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - Many files still referred to .txt rather than .htm files.
+(DLL.htm, Make.htm, New-user.htm, Readme.htm, bcwin32.mak, cfonts.mak,
+devs.mak, dvx-gcc.mak, dwmainc.cpp, gs-vms.hlp, gxdevcli.h, gxdevice.h,
+int.mak, jpeg.mak, libpng.mak, msvc32.mak, msvclib.mak, openvms.mak,
+os2.mak, unix-cc.mak, unix-gcc.mak, unixansi.mak, watc.mak, watcw32.mak,
+wccommon.mak, zlib.mak)
+
+Notes that ps2epsi.1 and ps2epsi.txt may be inconsistent or obsolete.
+(ps2epsi.1, ps2epsi.txt)
+
+Adds a reference to Thomas Merz's Ghostscript manual. (Readme.htm)
+
+Adds instructions for making RPMs. (Install.htm, Make.htm)
+
+Changes the URL for post-release notes. (Bug-form.htm, Make.htm,
+New-user.htm)
+
+Notes problems with Watcom compilation. (Make.htm)
+
+</pre><h3><a name="5.50_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - On Unix systems, the documentation files didn't get installed by
+`make install'. (unixinst.mak)
+ - $() was missing around MAKEFILE in a Windows makefile.
+(msvc32.mak)
+ - The dfax drivers didn't include all the necessary files in the
+linker list. (contrib.mak)
+ - The MSVC makefiles didn't allow building the executable in a
+different directory. (bcwin32.mak, gs.mak, lib.mak, msvc32.mak,
+msvccmd.mak, msvclib.mak, msvctail.mak, os2.mak, watcw32.mak, winint.mak,
+winlib.mak)
+ - The default build directory for the Borland compiler was debugobj
+rather than obj. (bcwin32.mak)
+
+Adds a patch file and some specification files for making RPMs. (gs.rps,
+gs-fonts.rps, rpm-conf.dif)
+
+Removes the docs target in the makefile, since this function is now
+performed by another program. (unix-end.mak)
+
+</pre><h3><a name="5.50_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The jpeg drivers caused a memory access error. (bug introduced in
+5.20 by an incorrectly made fix) (gdevjpeg.c)
+ - The x11cmyk driver implemented map_rgb_color, which it should not
+do. (gdevxalt.c)
+
+Updates a high-level driver for the addition of the bit-planar image format.
+(gdevps.c)
+
+</pre><h3><a name="5.50_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - echogs -h didn't work in environments where char is signed.
+(echogs.c)
+
+</pre><h3><a name="5.50_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - MSVC++ 5.0 produced incorrect code with TDEBUG=0. We "fixed" this
+problem by noting in the makefile that TDEBUG must be left set to 1.
+(msvc32.mak, msvclib.mak)
+
+Updates the icons for the MS Windows and OS/2 platforms. (gsgraph.icx,
+gsos2.icx, gspmdrv.icx, gstext.icx)
+
+</pre><h3><a name="5.50_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - setpagedevice didn't update the state correctly when switching to
+a new type of device (different OutputDevice value). (gs_setpd.ps)
+ - The interpreter's initialization depended on BSS being initialized
+to 0. (files.h, zfile.c)
+
+Removes all references to reloc_struct_ptr other than in gsstruct.h.
+(igcref.c)
+
+Adds DEBUG tracing for pdfmarks. (gs_pdfwr.ps)
+
+Disables TEST code for release. (zcrd.c, zfdcte.c)
+
+</pre><h3><a name="5.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Some third-party software still referred to the obsolete #?
+procedure. (pdf_main.ps)
+ - Destinations with string names weren't properly converted to
+pdfmarks. (pdf_main.ps)
+ - Destinations with S = /Named weren't supported. (pdf_main.ps)
+
+</pre><h3><a name="5.50_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Dropout prevention wasn't applied to landscape image masks.
+(gximono.c)
+ - When using async rendering, the renderer's allocator was allocated
+with the wrong allocator. (gdevprna.c)
+ - gx_strip_bitmap and gx_device_mask_clip didn't have proper GC
+descriptors, causing crashes if a GC occurred while rendering an ImageType 3
+or 4 image. (gsstruct.h, gxbitmap.h, gxclip2.h, gxclipm.h, gxmclip.h,
+gspcolor.c, gxclipm.c, gxmclip.c)
+ - The buffer for printer devices wasn't reallocated properly for
+async devices when the page size changed. We aren't entirely comfortable
+with the fix, but it's the best we've got right now. (gdevprn.c)
+ - Some files wouldn't compile with -dNOPRIVATE. (gxcspace.h,
+gscdevn.c, gscolor2.c, gscscie.c, gscsepr.c)
+ - gp_semaphore_close and gp_monitor_close were defined as not
+returning an error code. (gpsync.h, gp_nsync.c, gp_posem.c, gp_semon.c,
+gp_win32.c)
+ - Initialization code depended on BSS being initialized to 0.
+(gsiodev.c)
+ - The special PCL color mapping device didn't handle CMYK devices
+correctly in other than "identity" mode. (gdevcmap.c)
+
+Cleans up a little formatting. (gscie.h, gscpixel.c, gxmclip.c)
+
+Removes all references to reloc_struct_ptr other than in gsstruct.h.
+(gsstruct.h, gsalloc.c, gsdevice.c, gsfont.c, gxcpath.c)
+
+Patches the async code so that it allocates twice as much space for the
+renderer as should be needed, to deal with sandbars. (gdevprna.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.40"></a>Version 5.40 (beta) (9/10/98)</h2>
+
+<p>
+A few more fixes. This is intended as the candidate fileset for the 5.50
+release.
+
+<h3><a name="5.40_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The current GNU Ghostscript version was documented as 3.33, not
+4.03. (New-user.htm)
+ - The ansi2knr usage documentation didn't mention --filename.
+(ansi2knr.1)
+ - A projected completion date was too optimistic. (ps2pdf.1)
+
+Replaces all documentation files with new HTML versions. (*.txt [deleted],
+*.htm, index.html, imainarg.c)
+
+Adds a contributed set of Emacs macros useful for working with Ghostscript
+documentation. (gsdoc.el)
+
+Changes the version and date format slightly in one file for consistency.
+(gs-vms.hlp)
+
+</pre><h3><a name="5.40_Procedures"></a>Procedures</h3><pre>
+
+Adds a make target (make docs) to touch up documentation files before a
+release. (unix-end.mak)
+
+</pre><h3><a name="5.40_Utilities"></a>Utilities</h3><pre>
+
+Removes the long-obsolete ps2image.ps utility. (ps2image.ps [deleted])
+
+</pre><h3><a name="5.40_Drivers"></a>Drivers</h3><pre>
+
+Adds a driver for the Color LaserJet 5. (devs.mak, gdevclj.c)
+
+</pre><h3><a name="5.40_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - Blanks in command lines weren't handled properly. (dwmain.cpp,
+dwmainc.cpp)
+
+</pre><h3><a name="5.40_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - 16-bit devices didn't convert colors to RGB correctly.
+(gdevm16.c)
+ - 16- and 32-bit RasterOp didn't work, because pack_from_standard
+didn't handle depths greater than 8. (gdevdrop.c)
+ - RasterOps with devices with non-standard color representation
+sometimes substituted black or white for the source or target. (gdevdrop.c)
+ - The non-orthogonal case of Axial shading executed the axial-case
+code as well. (gxshade1.c)
+ - copy_color on 4-bit-deep memory devices did an unnecessary
+fit_copy check. (gdevm4.c)
+ - An upcast was missing. (gdevbbox.c)
+ - View clipping was applied to internal devices, incorrectly.
+(gspath.c)
+
+Revises the implementation of shading so as to reduce the use of macros,
+update formatting, and help prepare for PatternType 2 patterns. (gsshade.h,
+gxshade.h, gxshade4.h, gscolor3.c, gsshade.c, gxshade.c, gxshade1.c,
+gxshade4.c, gxshade6.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.39"></a>Version 5.39 (beta) (9/8/98)</h2>
+
+<p>
+A couple more small fixes.
+
+<h3><a name="5.39_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The pkm[raw] drivers didn't work with 32-bit pixels. (gdevpbm.c)
+
+Adds (fake) 8-, 16-, and 32-bit X11 CMYK devices, for debugging.
+Unfortunately, the 16- and 32-bit devices consume the hardware color map and
+then no longer behave reasonably; the 8-bit device produces output with
+garbled colors (fixed in 5.40). (devs.mak, gdevxalt.c)
+
+</pre><h3><a name="5.39_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - All banded devices caused a memory access error. (bug introduced
+in 5.38) (gsstate.c)
+ - The special color mapping device didn't update its state after
+put_params. (gdevcmap.c)
+ - RasterOp on 8-bit non-gray-scale devices didn't handle filling
+with constant 0 or 1 properly. (gdevmrop.c)
+ - The halftone machinery didn't switch from full-size to strip
+halftones early enough, possibly allocating very large halftone data
+structures. (gshtscr.c)
+ - If an ioerror (such as a disk- or memory-full condition) occurred
+while writing out the band list, the bookkeeping structures were left in an
+inconsistent state, causing further problems. (gxclutil.c)
+ - Some shaded fills didn't check for errors when filling
+sub-regions. (gxshade1.c, gxshade4.c)
+
+Cleans up some formatting. (gxshade6.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.38"></a>Version 5.38 (beta) (9/3/98)</h2>
+
+<p>
+The sole purpose of this release was to fix some obscure bugs detected by
+the Genoa tests and by another Aladdin project.
+
+<h3><a name="5.38_Documentation"></a>Documentation</h3><pre>
+
+Updates the list of implemented PostScript LanguageLevel 3 features.
+(current.txt)
+
+</pre><h3><a name="5.38_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The PDF writer did the wrong thing for multi-source images with
+more than 180 bytes of data (total) per scan line. (gdevpdfi.c)
+ - If one used setdistillerparams, [g]restore caused a rangecheck in
+.setpagedevice. ****** DISABLED FOR DCT DICTS, SINCE THIS CAUSES A SEGV
+****** (gdevpsdp.c)
+
+</pre><h3><a name="5.38_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - 0-length parameter arrays were given an arbitrary type, confusing
+clients. (iparam.c)
+ - EOD on a write stream caused an error. (zfileio.c)
+
+</pre><h3><a name="5.38_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - 0-length parameter arrays confused clients that wanted arrays of a
+particular type. (gsparam.c)
+ - Patterns with XStep or YStep smaller than the bounding box didn't
+work properly. (gxp1fill.c)
+ - Resizing an object sometimes copied it unnecessarily. (gsalloc.c)
+ - Freeing the shared part of a graphics state didn't free its
+sub-objects. (gsstate.c)
+ - The standard allocator didn't free its initial (self-containing)
+chunk when asked to free itself. (gsalloc.c)
+ - The standard allocator didn't attempt to merge free blocks before
+giving up. We implemented this by adding another virtual procedure to
+allocators, consolidate_free. (gsmemory.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c, gsmemory.c)
+ - The free object merging algorithm thought there were free objects
+even when there weren't. (Small performance bug only.) (gsalloc.c)
+
+Adds some more tracing to pattern filling. (gxclip2.c, gxp1fill.c)
+
+Replaces the cs_alloc, cs_copy, and cs_undo_alloc macros with procedures.
+(gxcspace.h, gscolor2.c, gscsepr.c, gscspace.c, gspcolor.c)
+
+Moves the free-object merging code from gsnogc.c to gsalloc.c, so it can be
+used even in systems that have a garbage collector. (gsalloc.h, gxalloc.h,
+gsalloc.c, gsnogc.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.37"></a>Version 5.37 (beta) (8/31/98)</h2>
+
+<h3><a name="5.37_Documentation"></a>Documentation</h3><pre>
+
+Mentions the new cid2code utility in the documentation. (psfiles.txt)
+
+Documents dpsnext.dev. (gs.mak)
+
+Notes that clients of ImageType 3 images are responsible for providing the
+mask data before the pixel data. (gsiparm3.h)
+
+</pre><h3><a name="5.37_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The makefiles were missing a dependency of jconfig.h on arch.h.
+With this fix, parallel builds (make -jN) work reliably. (jpeg.mak)
+
+</pre><h3><a name="5.37_Utilities"></a>Utilities</h3><pre>
+
+Adds a utility for creating maps from CIDs to Unicode. (unixinst.mak,
+cid2code.ps)
+
+</pre><h3><a name="5.37_Drivers"></a>Drivers</h3><pre>
+
+Removes the %Fax% IODevice code, since it was only a skeleton and Adobe no
+longer supports this facility. (devs.mak, gdevpfax.c [deleted])
+
+</pre><h3><a name="5.37_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts whose first code wasn't 0 or 0xf000 didn't display
+correctly. (bug introduced in 5.36) (gs_ttf.ps)
+ - CIDFontType 0 fonts didn't handle being redefined with another
+name. (gs_cidfn.ps)
+ - CIDFontType 0 fonts could get local-into-global-store errors.
+(gs_cidfn.ps)
+ - PDF files couldn't use already-defined CMap resources.
+(pdf_font.ps)
+ - Out-of-range CIDs gave an error rather than using a notdef
+character. (gs_cidfn.ps)
+
+</pre><h3><a name="5.37_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - CIDFontType 4 fonts weren't recognized as CID-keyed. (zchar2.c,
+zchar32.c, zfont32.c)
+ - When recovering from an error in an operator procedure, the
+interpreter didn't update the dictionary stack caches. (interp.c)
+ - startjob didn't reinitialize the stacks or VM space. (gs_lev2.ps)
+ - Encoding filters with a Predictor always caused an error.
+(zfilter2.c)
+ - currenttrapparams gave an error. (gs_ll3.ps)
+ - settrapparams had no effect, and left the dictionary on the stack.
+(gs_ll3.ps)
+
+Finishes implementing Type 32 fonts. These fonts don't actually work
+directly with the cache -- they store the bitmaps in a compressed form in an
+ordinary Dictionary -- but they do behave the way they are specified.
+(gs_typ32.ps, zchar32.c, zfont32.c)
+
+Cleans up formatting and macros in a few more files. (ccfont.h, icharout.h,
+icstate.h, iutil.h, iutil2.h, ibnum.c, iccfont.c, iccinit0.c, ilocate.c,
+isave.h, isave.c, iscannum.c, iutil.c, iutil2.c)
+
+Removes or capitalizes a few more macros. (zcontext.c, zcssepr.c,
+zusparam.c)
+
+</pre><h3><a name="5.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Color spaces with subsidiary spaces (Indexed, Separation, DeviceN)
+sometimes didn't work properly, because they were translated to PostScript
+structures more than once. (pdf_draw.ps)
+ - Type 3 fonts didn't rebind the resource context when executing the
+CharProc procedure. (pdf_font.ps)
+
+</pre><h3><a name="5.37_Streams"></a>Streams</h3><pre>
+
+Fixes problems:
+ - The CCITTFax decoder signaled an error if it saw an EOB with
+EndOfBlock = false. (According to e-mail from Adobe, EOBs should be
+recognized even if EndOfBlock is false, even though the Red Book implies the
+opposite.) (scfd.c)
+
+Cleans up macros and formatting in a few more files. (slzwce.c, sfxfd.c,
+sfxstdio.c)
+
+</pre><h3><a name="5.37_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Landscape color images usually didn't display. (bug introduced in
+5.32) (gxicolor.c)
+ - If gs_heap_free_object was called with ptr != 0 but bp = 0 (which
+is an error), an invalid memory access would occur. (gsmalloc.c)
+ - The left side bearing was still being added in a second time for
+the accent of a seac. (bug probably introduced in 5.20) (gxtype1.c)
+ - An access error occurred when rendering the very last glyph of a
+TrueType font with a 2-byte loca table. (gstype42.c)
+ - In the fast portrait case of monochrome images, a numerical error
+sometimes produced a 1-bit-wide vertical stripe of an incorrect color at the
+right edge of the image. (gxifast.c)
+ - ImageType 3 images with InterleaveType = 3 gave memory access
+errors. (gximage3.c)
+ - Hit detection ignored any part of the aperture that had negative X
+or Y coordinates. (gdevhit.c)
+ - The special color mapping device didn't copy all necessary values
+back from its target. (gxdevice.h, gdevbbox.c, gdevcmap.c, gsdevice.c)
+ - The special color mapping device didn't handle ordinary (Type 1)
+images correctly. (gdevcmap.c)
+ - CMYK halftones complemented both the color and the halftone level:
+this produced the right number of pixels turned on (only for linear spot
+functions or threshold arrays), but wasn't consistent with either the Adobe
+specification or the user's intentions. (gxcht.c)
+ - The phase of mask Patterns wasn't always set correctly.
+(gxp1fill.c)
+ - The reader side of overlapped band devices was confused about its
+open/closed status. (gdevprna.c)
+
+Renames Type 32 fonts from ft_bitmap to ft_CID_bitmap. (gxftype.h)
+
+Adds some more tracing for composite font decoding. (gsfcmap.c)
+
+Adds some more tracing for images. (gxiinit.c)
+
+Cleans up formatting and macros in a few more files. (gxifast.c)
+
+Moves the image*_type_data and image*_enum_procs_data definitions from
+header files into more appropriate .c files. (gsiparm2.h, gsiparm3.h,
+gsiparm4.h, gxiparam.h, gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.36"></a>Version 5.36 (beta) (8/25/98)</h2>
+
+<p>
+Another set of fixes. The free-standing bbox device now produces convenient
+%%BoundingBox messages. This fileset also includes support for double-byte
+TrueType fonts.
+
+<h3><a name="5.36_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - There was a minor spacing glitch in one man page. (gs.1)
+ - The page printed by align.ps didn't make it clear enough what to
+do with the numbers it asks users to calculate. (align.ps)
+ - The sample code for adding gamma adjustment didn't work most of
+the time. (devices.txt)
+ - The prolog produced by pswrite was completely uncommented.
+(gdevps.c)
+ - The documentation didn't note that the string block freelist
+(sfree) is sorted in address order. (gxalloc.h)
+
+Notes that FirstBitLowOrder and LowBitFirst are equivalent. (slzwx.h)
+
+Notes a change in the FTP site of the free Kanji ("Wadalab") fonts.
+(fonts.txt)
+
+Adds a pointer to the freely available Unicode CMaps. (fonts.txt)
+
+Changes an obsolete e-mail address for Carsten Emde. (contrib.mak)
+
+</pre><h3><a name="5.36_Utilities"></a>Utilities</h3><pre>
+
+Fixes problems:
+ - The viewgif utility sometimes left 1-scan-line gaps when rendering
+interlaced images. (viewgif.ps)
+
+</pre><h3><a name="5.36_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - In the PDF writer, downsampled images were always written with 8
+bits per sample, not the requested depth. (gdevpsdi.c)
+ - The 8-to-N-bit compression filter produced an extra byte at the
+end of each row, and the N-to-8-bit expansion filter skipped an input byte
+at the end of each row. (gdevpsds.c)
+ - In the PDF writer, the size of downsampled images for changing the
+pixel width was set incorrectly, leading to inconsistent image parameters in
+the output. (gdevpsdi.c)
+ - The subsampling filters didn't take a clear position about what to
+do with excess input samples beyond a multiple of the reduction factor,
+leading to inconsistent image parameters. We added a Boolean to indicate
+whether they should discard the samples or use them to create an additional
+output sample. (gdevpsds.h, gdevpsdi.c, gdevpsds.c)
+ - The subsampling filters didn't provide the necessary set_defaults
+procedures. (gdevpsds.h, gdevpsds.c)
+ - Because of a typo, pdfwrite and pswrite printed sequences of 4
+decimal values wrong. (bug introduced during macro removal in 5.25)
+(gdevpstr.c)
+
+Makes the PS writer produce a %%HiResBoundingBox as well as a %%BoundingBox.
+(gdevps.c)
+
+</pre><h3><a name="5.36_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The Borland makefile didn't include the MT libraries. We added a
+MULTITHREAD option to this makefile. (bcwin32.mak)
+ - The MSVC makefile didn't include the MT switches in the right
+place. (msvccmd.mak)
+ - 'make clean' in the Windows makefiles didn't clean up quite
+enough. (bcwin32.mak, msvc32.mak, msvccmd.mak)
+ - The OS/2 makefile had gotten slightly out of date. (os2.mak)
+
+Cleans up some formatting. (gp_win32.c)
+
+</pre><h3><a name="5.36_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - Loading large TrueType fonts caused excessive garbage collection.
+(gs_ttf.ps)
+
+Finishes implementing support for turning double-byte TrueType fonts into
+CIDFontType 2 fonts. (gs_ttf.ps)
+
+</pre><h3><a name="5.36_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - We thought the dictionary returned by currentuserparams should
+always be allocated in local VM, but in fact the correct definition is that
+it should be allocated in the current VM. The simplest way to make this
+work is for setuserparams to copy any string values into global VM.
+(gs_lev2.ps)
+ - 1-input stitching functions didn't allow k = 0. (ifunc.h,
+zfunc.c)
+ - OtherSubrs defined in PostScript no longer worked. (bug probably
+introduced when we rewrote the Type 1 code in C) (zchar1.c)
+
+Cleans up a few compiler warnings (missing empty 'default' cases, unused
+variables). (igc.c, iname.c)
+
+Replaces some uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
+(isave.c, iscan.c)
+
+</pre><h3><a name="5.36_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Resources were re-created on each page, causing (sometimes a lot
+of) unnecessary computation. We implemented most of the machinery for
+avoiding this, but not the mechanism for actually storing resources in
+global VM. (pdf_base.ps, pdf_main.ps)
+
+Adds a little more debugging code. (pdf_draw.ps)
+
+</pre><h3><a name="5.36_Streams"></a>Streams</h3><pre>
+
+Cleans up formatting in a few more files. (sbtx.h, sfilter.h, slzwx.h,
+spngpx.h, srlx.h, sstring.h, seexec.c, sfilter1.c, sfilter2.c, smtf.c,
+spcxd.c, srld.c, srle.c)
+
+Replaces a couple of #defines with duplicated (small) structures. (sbtx.h,
+sfilter.h, sfilter1.c, sfilter2.c)
+
+Replaces all uses of RELOC_*_PTR (now deprecated) with RELOC_*_VAR.
+(stream.c)
+
+</pre><h3><a name="5.36_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - If a garbage collection occurred during a string show operation,
+memory could be corrupted. (bug introduced in 5.24) (gstext.h, gstext.c)
+ - A debugging check incorrectly indicated an error when
+miter-checking lines with a 0 degree angle between them. (gxstroke.c)
+ - A structure created for bitmap/pixmap patterns was never freed.
+(gspcolor.c)
+ - Colored halftones didn't work with 24-bit devices. (This case was
+never actually used.) (gxcht.c)
+ - CIE colors didn't remap properly if the current color space was a
+Pattern space. (gscie.c)
+ - In a non-garbage-collected environment, freeing a string in the
+current chunk made an unnecessary test. (Minor performance impact only.)
+(gsnogc.c)
+
+Cleans up a few compiler warnings (missing empty 'default' cases, unused
+variables). (gsht.c, gsht1.c, gshtscr.c, gsimage.c, gxacpath.c, gxclread.c,
+gxicolor.c, gxshade4.c)
+
+Replaces some uses of RELOC_*_PTR with RELOC_*_VAR. (gsht1.c)
+
+Changes the printed output of the free-standing bbox device so it produces
+%%BoundingBox and %%HiResBoundingBox lines that can be dropped directly into
+a DSC header. (gdevbbox.c)
+
+Speeds up the 4-bit case of copy_mono by about 30%. (gdevm4.c)
+
+Expands some macros and cleans up formatting, for easier reading and
+debugging. Speeds up the color halftone generation algorithm substantially
+(up to 40%), by skipping the halftone computation for planes that are known
+to be solid-color, and using copy_mono directly if only one plane is not
+solid-color. (gxcht.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.35"></a>Version 5.35 (beta) (8/18/98)</h2>
+
+<p>
+More updates for 5.3x, specifically fixing problems with halftones on banded
+CMYK devices.
+
+<h3><a name="5.35_Documentation"></a>Documentation</h3><pre>
+
+Fixes problems:
+ - The URLs for the third-party libraries were out of date.
+(make.txt, jpeg.mak, libpng.mak, zlib.mak)
+
+</pre><h3><a name="5.35_Drivers"></a>Drivers</h3><pre>
+
+Adds an x11gray4 device for help in debugging. (devs.mak, gdevxalt.c)
+
+</pre><h3><a name="5.35_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with more than 64K of data before or after the
+glyfs caused an error. (gs_ttf.ps)
+
+</pre><h3><a name="5.35_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The dictionary returned by currentuserparams was allocated in the
+current VM rather than always in local VM. (gs_lev2.ps)
+
+</pre><h3><a name="5.35_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - CID-keyed fonts caused an error, because their CDevProc was
+incorrect. (pdf_font.ps)
+
+</pre><h3><a name="5.35_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - A comment was duplicated. (gxht.h)
+ - The main procedure of the command list reader was so large that it
+couldn't be optimized by many compilers, and was very hard to read.
+(gxclrast.c)
+ - Banding devices using multi-screen halftones could get memory
+access errors because they didn't clear the halftone caches when changing
+halftone parameters. (gxclrast.c)
+ - Banding devices using multi-screen halftones didn't set the
+halftone phase correctly. (gxcht.c, gxclrast.c)
+ - RasterOp didn't work for 2- or 4-bit gray-scale devices. It still
+doesn't work right, but it's closer. (gdevm2.c, gdevm4.c, gdevmrop.c)
+ - Undefined characters in CMap-based composite fonts caused errors
+and possible invalid memory accesses. (gschar0.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.34"></a>Version 5.34 (beta) (8/16/98)</h2>
+
+<p>
+More updates for 5.3x.
+
+<h3><a name="V5.34_Documentation"></a>Documentation</h3><pre>
+
+Updates all of the man pages to new versions. (gs-vms.hlp, gs.1, pdf2dsc.1,
+pdf2ps.1, ps2ascii.1, ps2epsi.1, ps2pdf.1, ps2ps.1)
+
+</pre><h3><a name="V5.34_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The MSVC library makefile incorrectly included gp_msio.c.
+(msvclib.mak, winlib.mak)
+
+</pre><h3><a name="V5.34_Drivers"></a>Drivers</h3><pre>
+
+Fixes problems:
+ - The PDF writer unnecessarily checked for other parameters after a
+failing show or pdfmark. (gdevpdfp.c)
+ - The device's BufferSpace parameter was ignored. (bug introduced
+by async rendering code in 5.30) (gdevprn.c)
+ - Banding devices smashed the first 4 bytes of each scan line. (bug
+introduced in 5.28) (gxdevmem.h, gdevmem.c, gxclread.c)
+ - The phase for colored halftones was set wrong. (We have "fixed"
+this innumerable times, and it is still probably wrong.) (gxclrast.c)
+
+Replaces the deprecated gx_device_image_xxx calls with the new gx_image_xxx
+calls. (gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
+
+</pre><h3><a name="V5.34_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - The equality test for idiom recognition sometimes incorrectly
+returned false. (zmisc3.c)
+ - shfill didn't take the BBox into account. (It still doesn't.)
+(gxshade.c)
+ - The status operator could return an incorrect pages or bytes value
+for files larger than 2 Gb, rather than giving an error. (zfile.c)
+
+</pre><h3><a name="V5.34_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - The hint tables weren't reset after processing the base character
+of a 'seac', leading to incorrect hinting and (for Type 2 CharStrings)
+possible mis-parsing of the outline data. (gstype2.c)
+ - When processing a 'seac', the left side bearing was added in
+twice, displacing characters to the right. (bug probably introduced in
+5.20) (gstype1.c)
+ - RasterOps didn't set the size of the RasterOp texture device,
+which caused filling operations involving a colored halftone to be clipped
+to an empty rectangle. (gdevrops.c)
+ - When filling with a colored halftone, the RasterOp source was
+often disregarded. (gxcht.c)
+ - gx_device_image[_plane]_data and gx_device_end_image took an
+unused dev argument, leading to potential confusion. We deprecated the
+gx_device_image_plane_data and gx_device_end_image procedures, replacing
+them with macros that call their replacements gx_image_plane_data and
+gx_image_end (which no longer have the spurious dev argument). (gxdevcli.h,
+gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c, gdevdflt.c, gsimage.c,
+gslib.c, gxclimag.c, gxclrast.c, gximage2.c, gximage3.c, gximage4.c)
+ - gs_color_adjust_count, introduced in 5.33 to address the problem
+of freeing free-standing patterns, just made things worse. We are replacing
+them with gs_pattern_reference, essentially the procedure introduced in 5.31
+that we deleted in 5.33. (gsccolor.h, gspcolor.h, gscolor.c, gspcolor.c)
+
+Changes hint suppression from a #define to a debugger-settable static.
+(gxhint1.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.33"></a>Version 5.33 (beta) (8/14/98)</h2>
+
+<p>
+This is the third set of updates for 5.30. These updates have been driven
+mostly by the needs of another Aladdin project, so they haven't included as
+many problem fixes as we would normally make.
+
+<h3><a name="V5.33_Platforms"></a>Platforms</h3><pre>
+
+Fixes problems:
+ - The thread creation procedure for Win32 called a Windows function
+rather than the proper C library function. (gp_win32.c)
+ - In some MS-DOS implementations, the copy command doesn't recognize
+the /Y switch. (bcwin32.mak)
+
+</pre><h3><a name="V5.33_Fonts"></a>Fonts</h3><pre>
+
+Fixes problems:
+ - TrueType fonts with *less* than 64K of glyf data stopped working.
+(bug introduced in 5.31) (gs_ttf.ps)
+
+</pre><h3><a name="V5.33_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Using an Identity function left an extra element on the stack.
+(pdf_draw.ps)
+ - The syntax of # in names is different in PDF 1.1 and PDF 1.2, but
+the PDF 1.2 syntax was always used. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V5.33_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Color images still always caused an error. (bug introduced in
+5.32) (gxicolor.c)
+ - Because of a typo, the implementation of image types didn't
+compile. (bug introduced in 5.32) (gxiparam.h)
+ - Free-standing colors (specifically pattern colors) and color
+spaces couldn't be freed. This required a NON-BACKWARD-COMPATIBLE change in
+an internal API used for managing color and color space reference counts.
+(gxcspace.h, gsccolor.h, gscdevn.c, gscolor.c, gscolor2.c, gscscie.c,
+gscsepr.c, gscspace.c, gspcolor.c)
+
+Cleans up a little more formatting. (gscspace.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.32"></a>Version 5.32 (beta) (8/13/98)</h2>
+
+<p>
+This is the second set of updates for 5.30.
+
+<h3><a name="V5.32_Procedures"></a>Procedures</h3><pre>
+
+Fixes problems:
+ - The OS/2 makefile accidentally omitted the OS/2-PM driver.
+(os2.mak)
+ - The MSVC library makefile didn't work. (msvclib.mak)
+ - Debugging was turned on in the Borland Windows makefile.
+(bcwin32.mak)
+ - The BEGINFILES2 list was too long in the MSVC makefile.
+(msvc32.mak)
+
+</pre><h3><a name="V5.32_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes problems:
+ - .execn wouldn't accept pseudo-operators. (iref.h)
+ - inustroke with a matrix operand didn't work correctly. (zupath.c)
+ - ImageType 4 images didn't work. (bug introduced in 5.31)
+(zimage3.c)
+
+</pre><h3><a name="V5.32_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes problems:
+ - Forms used more than once caused an invalidaccess error.
+(pdf_draw.ps)
+
+</pre><h3><a name="V5.32_Library"></a>Library</h3><pre>
+
+Fixes problems:
+ - Using a colored pattern with a Pattern color space that included a
+base space could access uninitialized floating point values, possibly
+causing an arithmetic trap. (gspcolor.c)
+ - RasterOp wasn't implemented for 16- and 32- bit devices.
+(gdevm16.c, gdevm32.c, gdevmrop.c)
+ - The library test program relied on copysign, which some C
+libraries lack. (gslib.c)
+ - The gs_free and gs_heap_free_all debugging printout were included
+even if DEBUG wasn't defined. (bug introduced in 5.30) (gsmalloc.c)
+ - Color images always caused an error. (bug introduced in 5.30)
+(gxicolor.c)
+ - Masked images with pis = NULL could cause an error. (gximono.c)
+ - In landscape orientation, masked images didn't guarantee that the
+buffer of mask scan lines would be flushed to the mask clipping device
+before processing the data being masked. (gxiparam.h, gxidata.c, gxifast.c,
+gximage3.c)
+ - Images with source transparency set but CombineWithColor = false
+could get an error because of trying to paint with an unloaded
+color. (caused by a bug fix in 5.30) (gxdcolor.c, gxiinit.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.31"></a>Version 5.31 (limited) (8/11/98)</h2>
+
+<p>
+This is the first set of updates for 5.30. They fix a few minor build
+problems, and some significant problems with bitmap patterns that do not
+affect the PostScript or PDF interpreters.
+
+<h3><a name="V5.31_Drivers"></a>Drivers</h3><pre>
+
+Moves some casting macros from generic files to the few specific files that
+use them. (gdev4693.c, gdevn533.c, gdevsnfb.c)
+
+</pre><h3><a name="V5.31_Interpreter"></a>Interpreter</h3><pre>
+
+Changes ImageType 4 images to match the change in the library interface.
+(zimage3.c)
+
+</pre><h3><a name="V5.31_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The MaskColor elements of ImageType 4 images were defined as int
+rather than uint, truncating the range by 1 bit and causing problems in
+comparing the mask color against the pixel samples. (gsiparm4.h,
+gximage4.c)
+ - A needed cast was missing from gs_malloc_memory_release.
+(gsmalloc.h)
+ - A needed cast from byte to char was missing. (gsparams.c)
+ - Patterns always allocated a mask for rendering, which for large
+patterns specified directly as bitmaps allocated a lot of unnecessary
+memory. (gxcolor2.h, gspcolor.c, gxp1fill.c, gxpcmap.c)
+ - Macros simply defining casted versions of variables made the code
+hard to debug. We have only removed the ones that are in generic code (not
+drivers) and that cast pointers to gx_device or its subclasses: the only
+ones removed from header files were prn_dev in gdevprn.h, mdev in gdevmem.h,
+and ccdev, crdev, and cwdev in gxcldev.h. gdevmem.h, (gdevprn.h, gxclist.h,
+gdevabuf.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c, gdevm24.c,
+gdevm32.c, gdevmpla.c, gdevnfwd.c, gdevprn.c, gxacpath.c, gxclimag.c,
+gxclist.c, gxclpage.c, gxclpath.c, gxclread.c, gxclrect.c)
+ - There was no way to free a pattern instance outside the graphics
+state. (gspcolor.h, gspcolor.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.30"></a>Version 5.30 (limited) (8/10/98)</h2>
+
+<p>
+This is the first beta candidate for the 5.50 release. It completes the
+merge of the overlapped rasterizing code into the main development line.
+
+<h3><a name="V5.30_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Yves Arrouye's e-mail address was out of date. (gdevbjc.h,
+gdevcdj.c, contrib.mak, devices.txt, unix-lpr.txt)
+
+Makes the warning against using SHARE_JPEG=1 even stronger. (make.txt,
+dvx-gcc.mak, ugcclib.mak. unix*.mak)
+
+Removes information about using DCL files on VMS to build Ghostscript.
+(make.txt)
+
+Updates the documentation for begin_typed_image. (drivers.txt)
+
+</pre><h3><a name="V5.30_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The Unix build procedure didn't create the obj subdirectory
+automatically. (unixhead.mak, unix-end.mak)
+ - gsdll_h wasn't defined for the OS/2 PM device. Fixing this
+properly required moving the OS/2 drivers into the same makefile as the MS
+Windows drivers, and renaming the file. (devs.mak, msdevs.mak =&gt; pcwin.mak,
+winlib.mak)
+ - gsiparm4_h was used before it was defined. (lib.mak)
+ - Building with shared libaries still used header files in
+Ghostscript's directories, not the ones in /usr/include. ****** NOT DONE
+YET ******
+ - The makefiles all assumed they were located in the current
+directory, not in the source directory. (*.mak)
+
+Adds new 'debugclean' and 'pgclean' targets, parallel to 'debug' and 'pg',
+for the Unix platforms. (unix-end.mak)
+
+Changes the management of .dev files so that on Unix platforms, one can
+really maintain standard, debugging, and profiling builds simultaneously.
+This is a hack, but a fairly reliable one. (gs.mak, unixhead.mak,
+unix-end.mak)
+
+Adds a dummy thread / semaphore / monitor implementation to all platforms
+other than Windows. (dvx-tail.mak, openvms.mak, os2.mak, ugcclib.mak,
+unixtail.mak, watc.mak, watclib.mak)
+
+</pre><h3><a name="V5.30_Drivers"></a>Drivers</h3><pre>
+
+Updates driver support to use the new write-position stream. (gdevpsdf.c)
+
+</pre><h3><a name="V5.30_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows Registry calls didn't deal properly with a null
+pointer. (gp_wgetv.c)
+
+Makes a small change in the platform semaphore / monitor API. (gpsync.h,
+gxsync.h, gp_win32.c, gxsync.c)
+
+Adds a dummy thread / semaphore / monitor implementation. Note that with
+this implementation, async rendering WILL NOT WORK. (gp_nsync.c)
+
+Adds pthreads thread creation and POSIX semaphores for Unix platforms. (We
+still need to add System V semaphores, which is all that is available on
+Solaris and BSDI.) (gp_semon.c, gp_posem.c, gp_pthr.c).
+
+</pre><h3><a name="V5.30_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - CIDFontType 0 fonts didn't select the proper VM space for adding
+entries to font dictionaries, and for loading Subrs strings. (gs_cidfn.ps)
+ - TrueType fonts with an odd glyfs length didn't work. (gs_ttf.ps)
+ - TrueType fonts with a Format 3 'post' table didn't work.
+(gs_ttf.ps)
+ - TrueType fonts where the encoding in the 'post' table didn't cover
+the entire set of glyfs didn't work. (gs_ttf.ps)
+ - TrueType fonts with more than 128K of glyfs didn't work.
+(gs_ttf.ps)
+ - TrueType cmap format 6 didn't work. (gs_ttf.ps)
+ - CIDFontType 0 fonts with hex data didn't skip over the &gt; at the
+end of the data. (gs_cidfn.ps)
+
+</pre><h3><a name="V5.30_Interpreter"></a>Interpreter</h3><pre>
+
+Works around the fact that gs_shfill can't do a gs_setcolorspace for color
+spaces that require interpreter assistance. (gs_ll3.ps)
+
+Moves clipsave and cliprestore to C code. (gs_ll3.ps, zmisc3.c)
+
+Updates some files to reflect the redivision of gsmemory.h and gsstruct.h.
+(imemory.h, istruct.h, ialloc.c)
+
+</pre><h3><a name="V5.30_Streams"></a>Streams</h3><pre>
+
+Adds a stream that just keeps track of the write position. (stream.h,
+stream.c)
+
+Removes the compilation dependency that required all clients of the zlib
+filters to be compiled with the zlib source directory in the search path.
+(szlibx.h, szlibxx.h, szlib[cde].c)
+
+</pre><h3><a name="V5.30_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - ImageType 4 images with &gt;1 input component didn't work.
+(gximage4.c)
+ - Sampled functions didn't keep the fractional part when
+interpolating, possibly leading to infinite recursion in shading.
+(gsfunc0.c)
+ - The color error value for shadings was computed incorrectly for
+CIE color spaces. (gxshade.c)
+ - The CharstringType 2 'roll' operator rolled the operands in the
+wrong direction. (gstype2.c)
+ - Images with RasterOp or transparency didn't retain the current
+color properly, leading to unpredictable results. (gdevmrop.h, gsropt.h,
+gdevddrw.c, gdevrops.c, gxdcolor.c, gxiinit.c, gximage3.c)
+ - A cast to void * was needed to remove a const modifier.
+(gscrdp.c)
+ - On 8-bit non-gray-scale devices, RasterOp values of all-0s or
+all-1s produced the wrong output. (gdevmrop.c)
+ - The GC procedure for halftone screen enumerators was wrong,
+possibly causing invalid memory access errors. This bug predates 5.10.
+(gshtscr.c)
+ - An extra pair of string quotes confused some compilers.
+(gsshade.c)
+ - There were several errors in the CharstringType 2 'flex'
+operators. (gstype2.c)
+ - The structure descriptors for devices weren't initialized in
+library-only configurations. (int.mak, gconf.c)
+ - The Pattern cache got confused if the current device when a
+Pattern color was used wasn't the same as the current device when the
+Pattern instance was created. (gxpcmap.c)
+ - The target of forwarding devices wasn't reference-counted
+properly. (gsdevice.c) ****** FIXING THIS PROPERLY WILL BE A LOT OF WORK:
+WE ONLY FIXED gs_setdevice_no_erase ******
+ - As a result of fixing a typo, the structure declaration for
+gx_page_queue was private, causing clients not to compile. We left it
+private and added an instance allocation procedure. (gxpageq.h, gdevprna.c,
+gxpageq.c)
+ - The mask for ImageType 3 images was clipped (incorrectly).
+(gximage3.c)
+ - Interpolated images with negative X-&gt;X values in the CTM were
+displaced on the page. (gxiscale.c)
+
+Finishes integrating the asynchronous rendering code. (gpsync.h, gxclist.h,
+gdevprna.c, gsmemlok.c, gxclimag.c, gxclpath.c, gxclutil.c)
+
+Updates the memory manager API for additional flexibility needed for
+asynchronous rendering. (gsmalloc.h, gsmemlok.h, gsmemraw.h, gsalloc.c,
+gsmalloc.c, gsmemlok.c)
+
+Updates the standard memory manager to work with a fixed (externally
+supplied) set of chunks, needed for asynchronous rendering, removing some
+macros in the process. (gsalloc.h, gsalloc.c)
+
+Updates some code to use more mnemonic variable names. (gstype2.c,
+gxicolor.c)
+
+Removes some macros for better readability. (gdevmrop.c)
+
+Adds dummy implementations of clipsave and cliprestore. (gsclipsr.h,
+gsclipsr.c)
+
+Implements an alternative, but completely untested, parameter list
+serializer based on streams. (gsparam2.c)
+
+Moves more of the internal memory manager structures from gsmemory.h to
+gsstruct.h. (gsmemory.h, gsstruct.h, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.28"></a>Version 5.28 (limited) (8/3/98)</h2>
+
+<p>
+This fileset almost finishes merging in the code for overlapped
+("asynchronous") interpretation and rasterizing that gave rise to the
+side-branch versions 5.13 and 5.14; eliminates all initialized non-constant
+globals from the graphics library (but not from the interpreter); and adds a
+few more LanguageLevel 3 features (CIEBasedDEF[G] color spaces, CloseSource
+and CloseTarget for streams, Separation base space for Indexed color
+spaces).
+
+<p>
+We were not originally planning to produce another fileset until the code
+merge was completed; however, the schedule demands of another Aladdin
+project justify another intermediate fileset.
+
+<h3><a name="V5.28_Documentation"></a>Documentation</h3><pre>
+
+Notes that the MSVC++ 5.0 compiler may lock up when compiling gxi12bit.c
+with optimization. (make.txt)
+
+</pre><h3><a name="V5.28_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - psl3 didn't include fzlib. (int.mak)
+ - The Windows makefile had the wrong name for a DLL. (winint.mak)
+ - The Borland Windows makefile had several errors. (bcwin32.mak)
+
+At the request of a user, changes the creation of jconfig.h so it #includes,
+rather than copies, arch.h. (jpeg.mak, gsjconf.h)
+
+</pre><h3><a name="V5.28_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - viewpbm.ps scaled the image wrong. (viewpbm.ps)
+
+</pre><h3><a name="V5.28_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - clist_close was declared as an open proc rather than a close proc.
+(As it happens, this didn't make any difference.) (gxclist.c)
+ - A comment was improperly terminated. (gxpageq.h)
+ - A needed #include of memory_.h was missing. (gdevpsde.c)
+
+Integrates nearly all the rest of the code for asynchronous rendering.
+(gdevprn.h, gdevprna.h, gxcldev.h, gxclist.h, gxclpath.h, gxclmem.h,
+gdevbmpa.c, gdevprn.c, gdevprna.c, gxclbits.c, gxclimag.c, gxclist.c,
+gxclmem.c, gxclpath.c, gxclread.c, gxclrect.c)
+
+Changes tracing of memory-based clists to occur only if -Z: is selected,
+rather than always if the code was compiled with -DDEBUG. Note that this is
+a NON-BACKWARD-COMPATIBLE CHANGE (but only affects debugging). (gxclmem.c)
+
+Implements the NumCopies parameter for all page devices, not just printers.
+(gxdevcli.h, gxdevice.h, gdevprn.c, gsdparam.c)
+
+Splits off command list writing utilities into a separate file, since
+gxclist.c was getting too large. (gxclist.h, gxclist.c, gxclutil.c)
+
+Splits command list reading into control (gxclread.c) and the actual list
+interpreter (gxclrast.c), since the file was getting too large. (gxcldev.h,
+gxclrast.c, gxclread.c)
+
+Distinguishes dev_proc_* (defining a general driver procedure) from
+prn_dev_proc_* (defining a printer driver procedure). Unfortunately, we
+have to keep dev_proc_print_page and _print_page_copies for backward
+compatibility. (gdevprn.h)
+
+Splits out of the BMP driver the parts shared with the async version
+(gdevbmp.h, gdevbmp.c, gdevbmpc.c).
+
+Changes the band rasterizer to implement get_bits_rectangle rather than
+get_bits. In some cases, this results in much less computation.
+(gxclist.c, gxclread.c)
+
+Makes the monochrome H-P printer drivers emit a printer reset when closing
+the device. According to a user, this helps prevent the ink nozzles from
+clogging. (gdevdjet.c)
+
+</pre><h3><a name="V5.28_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows DLL entry point procedure didn't return a value as it
+was supposed to. (gp_mswin.c)
+
+Removes all remaining initialized but non-constant globals, and ensures that
+all non-debugging-related BSS variables in the library are explicitly set to
+0 at initialization time. (gp_unix.c)
+
+Improves an error message slightly. (dwmainc.cpp)
+
+</pre><h3><a name="V5.28_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The tracing code for restore_resources could access an invalid
+address. (isave.c)
+ - sizeof(procedure) is not allowed in ANSI C++. (opdef.h,
+iccfont.c, interp.c, ireclaim.c)
+ - A variable was declared incorrectly as bin_token_type_t rather
+than bin_seq_type_t. (iscanbin.c)
+ - The behavior of copypage didn't change in LanguageLevel 3.
+(gs_init.ps)
+ - When grestore et al reactivated a page device, they performed an
+initgraphics, which should only be performed by showpage. (gs_setpd.ps)
+ - The RunLengthEncode filter was broken in cases where the caller
+supplied a record size. (bug introduced in 5.2x) (zfilter.c)
+ - A needed #include of memory_.h was missing. (zfreuse.c)
+ - On machines with sizeof(long) &gt; sizeof(int), the dictionary form
+of image and imagemask didn't work. (bug introduced in 5.2x) (zimage2.c)
+ - exitserver left a 'true' on the operand stack. (gs_lev2.ps)
+
+Replaces the STACK_LOOP_BEGIN/END macros with procedures. (We retain the
+macros for backward compatibility.) (istack.h, istack.c, zchar.c,
+zcontrol.c, zdict.c, zvmem.c)
+
+Reviews the remaining operator files for ease of reading / debugging,
+including removing macros where appropriate. (z*.c)
+
+Changes the dictionary stack printer to indicate whether the dictionary is
+allocated in global or local VM. (gs_init.ps)
+
+Redefines countexecstack and execstack as operators, solely for the sake of
+the Genoa [count]execstack tests. (gs_init.ps, zcontrol.c)
+
+Changes array/string/packedarray forall not to keep an index on the stack,
+solely for the sake of the Genoa [count]execstack tests. (zgeneric.c)
+
+Finishes implementing CIEBasedDEF[G] color spaces. (icie.h, zcie.c)
+
+Adds a ColorSpace resource instance for sRGB. (gs_lev2.ps, gs_res.ps)
+
+Implements CloseSource and CloseTarget for filters. ****** DOESN'T WORK IF
+AN EXCEPTION OCCURS DURING A NESTED CLOSE. ****** (zfile.c)
+
+Allows Separation and DeviceN color spaces as the base space for an Indexed
+color space. (zcsdevn.c, zcsindex.c, zcssepr.c)
+
+</pre><h3><a name="V5.28_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - In PDF files, Indexed color spaces with a CIEBasedABC base space
+gave an /undefined error. (pdf_draw.ps)
+
+</pre><h3><a name="V5.28_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The report_error member of the DCT streams wasn't initialized
+early enough. (ifilter.h, zfdctd.c, zfdcte.c, zfile.c)
+
+Changes the zlib filters to use the stream's allocator, rather than the
+default allocator, for their private storage. Note that this requires the
+stream itself to keep pointers to this storage, for garbage collection.
+(szlibx.h, szlibc.c, szlibd.c, szlibe.c)
+
+Updates some clients to use new, simpler GC structure descriptors. (sdct.h,
+sfilter.h, sdctc.c, sfilter1.c)
+
+Adds a close_strm member for the interpreter's use (CloseSource /
+CloseTarget). (stream.h, stream.c)
+
+</pre><h3><a name="V5.28_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gstate, currentgstate, and setgstate didn't handle the effective
+clip path properly, possibly leading to dangling pointers. (gsstate.c)
+ - setrasterop, setsourcetransparent, and settexturetransparent
+should all return int rather than void, since they can fail. (gsrop.h,
+gsrop.c)
+ - FunctionType 1 functions didn't clip the output value to the
+Range. (gsfunc3.c)
+ - A needed cast from byte * to char * was missing. (gscrdp.c)
+ - Some needed #includes of *_.h were missing. (gscrd.c, gscrdp.c,
+gxshade6.c)
+ - The prototype for gx_effective_clip_path wasn't #included in a
+needed place. (gsimage.c)
+ - RasterOp sometimes didn't work properly for devices whose
+representation of white wasn't a pixel value of 0. (gxdcolor.h, gdevbbox.c,
+gdevdbit.c, gdevvec.c, gslib.c, gxdcolor.c)
+ - The variable used to detect double declaration of
+gs_get_bits_params_t was named incorrectly. (gxdevcli.h, gxgetbit.h)
+ - gs_[eo]clip never retained the clipping path in its original form.
+These routines now retain it in the simple case (the old clipping path is a
+rectangle, and the new path is completely contained within it). This
+requires a small NON-BACKWARD-COMPATIBLE change in the gx_cpath_intersect
+procedure: it no longer updates the new path, and it flattens the path if
+needed. To avoid problems, we renamed this procedure as gx_cpath_clip.
+(gsdps.c, gspath.c, gxcpath.c)
+ - If the image was empty, gs_image_common_init didn't free the
+lower-level enumerator. (gsimage.c, gxccache.c)
+
+Removes all remaining initialized but non-constant globals, and ensures that
+all non-debugging-related BSS variables in the library are explicitly set to
+0 at initialization time. (gxdevice.h, gconf.c, gsdevice.c, gshtscr.c,
+gsiodev.c, gsutil.c, gxcht.c)
+
+Finishes implementing table-driven GC descriptors. We expected it to save
+considerable space at negligible time cost; it actually shrank the 1Mb
+executable by only about 5K, and slowed down garbage collection by about
+2%. (gsfcmap.h, gsstrtab.h [deleted], gsstruct.h, gzpath.h, gsfcmap.c,
+gsmemory.c, gsstrtab.c [deleted])
+
+Finishes implementing CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
+
+Simplifies some code by removing or redefining macros. (gxi12bit.c)
+
+Removes all patches made for easier retrofitting of 5.2x code into 5.1x
+filesets. (gdevdrop.c, gdevmrop.c, gslib.c, gspcolor.c)
+
+Reviews a few more files for style and readability. (gxbitfmt.h,
+gxgetbit.h)
+
+Allows Separation (and, if included, DeviceN) color spaces as the base space
+of an Indexed color space. Unfortunately, this involves introducing a new
+distinction in color space types, which entails NON-BACKWARD-COMPATIBLE
+changes in the color space and color space type structures. (gxcspace.h,
+gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c,
+gscspace.c, gspcolor.c)
+
+Makes a small addition in order to fix an interpreter bug. (gxfixed.h,
+gdevbbox.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.27"></a>Version 5.27 (limited) (7/18/98)</h2>
+
+<p>
+This is another "in-flight" snapshot made in preparation for the 5.2x / 5.1x
+code merge. It completes the driver CRD API.
+
+<h3><a name="V5.27_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The reference to psview was out of date. (new-user.txt)
+
+Adds some pointers to Aladdin Ghostscript mirror sites. (new-user.txt)
+
+Updates the C style guide a little further. (c-style.txt)
+
+Adds documentation on driver-supplied CRDs. (drivers.txt)
+
+Updates the JPEG makefile to mention IJG release 6b. (jpeg.mak)
+
+Updates documentation to reflect the devs.mak / contrib.mak split. (README,
+devices.txt, drivers.txt, make.txt, new-user.txt, source.txt, use.txt)
+
+</pre><h3><a name="V5.27_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - sjpegerr.o was needed even when using the shared JPEG library.
+(jpeg.mak)
+
+Changes the name of the jpeg library directory from jpeg-&lt;version&gt; to just
+jpeg, to parallel libpng and zlib. (make.txt, *.mak)
+
+Creates a separate makefile for contributed drivers. Eventually these
+drivers will go in a separate directory. (devs.mak, contrib.mak, *.mak)
+
+</pre><h3><a name="V5.27_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The pkm driver was absurdly inefficient. (gdevpbm.c)
+ - The psfax driver (which, admittedly, doesn't come close to
+working) no longer compiled. (gdevpfax.c)
+ - The ARCHAIC mode of the Epson driver emitted an incorrect
+character ('r' instead of ^R). (gdevepsn.c)
+ - The X driver didn't check the calls of XInitImage for error
+status. (gdevx.c)
+
+Updates a client for the change in the names of the gb_ values. (gdevx.c)
+
+Updates a client for the added param_request procedure. (gdevpsdf.c)
+
+Reformats all Aladdin-maintained drivers to the new Ghostscript standard
+format, using indent. We deliberately did not reformat user-contributed
+drivers, since indent mangles a line once in a while and we do not want to
+take responsibility for fixing others' code. (*.h, *.c)
+
+Adds a default CRD specification to the 'bit' device, for testing.
+(gdevbit.c)
+
+Integrates a bit more of the support code for asynchronous rasterizing.
+(gxband.h, gxclio.h, gxclist.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c,
+gxclread.c, gxpageq.h, gxpageq.c)
+
+</pre><h3><a name="V5.27_Platforms"></a>Platforms</h3><pre>
+
+Adds thread support to the Win32 platform. (gp_win32.c)
+
+</pre><h3><a name="V5.27_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Composite fonts with CID-keyed descendants didn't run the
+BuildGlyph procedure. (zchar.c)
+ - The internal representation of CMaps was built incorrectly.
+(zfcmap.c)
+ - Category resources didn't load from files automatically.
+(gs_res.ps)
+
+Reformats all files to the new Ghostscript standard format, using indent.
+(*.h, *.c)
+
+Reviews most of the operator files for ease of reading / debugging,
+including removing macros where appropriate. (z*.c)
+
+Updates a client for the change in the names of the gb_ values. (zdevice.c)
+
+Updates a client for the added param_request procedure. (iparam.c)
+
+Updates clients for the completion of the CRD API. (zcie.c, zcrd.c)
+
+Increases the initial size of systemdict a little more, to allow for -d and
+-s. (iinit.c)
+
+</pre><h3><a name="V5.27_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Text modes other than 0 didn't work with multiple-byte fonts.
+(pdf_ops.ps)
+ - There were many bugs in the code for Type 0 and CIDFontType 0
+fonts. (pdf_font.ps)
+
+</pre><h3><a name="V5.27_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - cshow returned a character code of -1 for composite fonts with
+FMapType 9 (CMap-based). (gsfcmap.h, gschar0.c, gsfcmap.c)
+ - The GC procedure for enumerating show enumerators was broken.
+(bug introduced in 5.24 or 5.25) (gschar.c)
+ - dashpath always copied the path, instead of only copying it if
+needed. (gspath1.c)
+ - The hint replacement fix in 5.24 sometimes thought a path was
+closed when it wasn't, producing gross distortions of some characters.
+(gxhint3.c)
+
+Cleans up code for debugging by expanding macros, etc. (gstext.h,
+gschar0.c)
+
+Changes the gb_ values to all caps, in line with general C convention. This
+is a NON-BACKWARD-COMPATIBLE change to an as yet rarely-used API.
+(gxbitfmt.h, gdevalph.c, gdevdgbr.c, gdevmem.c, gsalphac.c, gximage2.c)
+
+Enhances the default implementation of parameter lists to allow requesting
+individual parameters. This is needed for the driver CRD API. (gsparam.h,
+gscparam.c, gsparam.c)
+
+Completes the API for driver CRDs, also moving some code from gscie.c to
+gscrd.c. This involves a NON-BACKWARD-COMPATIBLE change in the prototype of
+the TransformPQR procedures. (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c,
+gscrdp.c)
+
+Reformats all files to the new Ghostscript standard format, using indent.
+(*.h, *.c)
+
+Splits up gdevmrop.c into 3 files: gdevmrop.c (RasterOp implementation for
+memory devices), gdevdrop.c (default and device-independent RasterOp
+algorithms), and gdevrops.c (RasterOp-source device). (gdevmrop.h,
+gdevdrop.c, gdevmrop.c, gdevrops.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.26"></a>Version 5.26 (limited) (7/7/98)</h2>
+
+<p>
+The purpose of this fileset is to add an API for drivers to provide one or
+more device-appropriate CIE rendering dictionaries. Like 5.25, it is a
+"snapshot" fileset not made available even to beta testers.
+
+<h3><a name="V5.26_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - An !endif was omitted. (msvc32.mak)
+ - A newly needed Windows library was omitted. (msvctail.mak)
+ - The /Za and /Ze switches were set incorrectly for MSVC.
+(bcwin32.mak, msvccmd.mak, watcw32.mak, winint.mak, winlib.mak)
+
+</pre><h3><a name="V5.26_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A closing bracket was omitted (in code that is ifdef'd out).
+(gdevpdf.c)
+
+</pre><h3><a name="V5.26_Fonts"></a>Fonts</h3><pre>
+
+Changes the font loader so that instead of pushing systemdict and a small
+empty dictionary on the stack before loading a font, it pushes userdict.
+This is what Adobe interpreters do, but this will probably break some
+PostScript files, specifically ones that redefine 'index'. I don't see how
+the Adobe interpreters can possibly do the right thing for such files.
+(gs_fonts.ps, gs_type1.ps)
+
+</pre><h3><a name="V5.26_Interpreter"></a>Interpreter</h3><pre>
+
+Updates clients for changes in CRD API. This involves some changes in
+internal procedures. (gs_lev2.ps, icie.h, zcie.c, zcrd.c)
+
+</pre><h3><a name="V5.26_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Pickling string, name, and array parameters tried to force
+inappropriate alignment. (gsparams.c)
+ - Pickling dictionary parameters wrote the result in the wrong
+place. (gsparams.c)
+ - An occurrence of dev_t should have been gx_device. The compiler
+didn't catch this because there happens to be a type named dev_t in
+&lt;types.h&gt; (!). (gxclread.c)
+
+Adds an API for drivers to provide one or more CRDs (as device parameters).
+Makes a small but NON-BACKWARD-COMPATIBLE change in the names and argument
+lists of the existing CRD API (which is not used by anything in the standard
+configuration). (gscie.h, gscrd.h, gscrdp.h, gscie.c, gscrd.c, gscrdp.c,
+gslib.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.25"></a>Version 5.25 (limited) (7/1/98)</h2>
+
+<p>
+This is a "snapshot" fileset created for the purpose of merging with a
+separate development branch. While it fixes some significant bugs in 5.24,
+it doesn't represent substantial additional progress.
+
+<h3><a name="V5.25_Documentation"></a>Documentation</h3><pre>
+
+Completely rearranges the C style guide, updates it to reflect current
+practice, and adds a 1-page summary of the most important points.
+(c-style.txt)
+
+Updates the man pages for consistency and to correct minor errors. (*.1)
+
+Notes that the pjxl300 driver works with the H-P CopyJet. (devices.txt,
+devs.mak).
+
+Notes that in order to deal with over-zealous Solaris security checking,
+additional linker switches are needed. (make.txt, unix*.mak)
+
+</pre><h3><a name="V5.25_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make install' didn't get the executable from the right place.
+unixinst.mak)
+ - COMPILE_INITS=1 didn't work. (int.mak, geninit.c)
+ - The MSVC makefile updates hadn't been applied to the MSVC-only
+devices. (devs.mak)
+ - The other PC makefiles didn't define GLCCWIN. (bcwin32.mak,
+watcw32.mak)
+
+Adds bounding box testing to the library test program. (ugcclib.mak)
+
+Reviews and reformats code for maintainability. (genarch.c, geninit.c)
+
+Moves the MS Windows-specific devices to a new file. (bcwin32.mak,
+devs.mak, msdevs.mak, msvc32.mak, watcw32.mak)
+
+</pre><h3><a name="V5.25_Platforms"></a>Platforms</h3><pre>
+
+Reviews and reformats header files for maintainability. (vmsmath.h,
+windows_.h)
+
+Removes some no-longer-used files from the fileset. (overlay.h, gp_itbc.c)
+
+</pre><h3><a name="V5.25_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Substituted fonts had their FontName set to the requested one.
+There was a comment in the code saying that some files that depend on this
+happening, but Adobe implementations don't do it. However, aliased fonts in
+Fontmap will continue to have the FontName set to the Fontmap key.
+(gs_fonts.ps)
+
+Adds the euro symbol at position 240 (0360) in SymbolEncoding. This is a
+PostScript 3 addition, but it's too much work to make it appear there only
+if languagelevel &gt;= 3. (gs_sym_e.ps)
+
+</pre><h3><a name="V5.25_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The bbox device didn't work if its target was itself a forwarding
+device. (gdevbbox.c)
+ - User parameters maintained at the PostScript (as opposed to VM)
+level didn't work. (gs_init.ps)
+ - Idiom recognition didn't work. (gs_init.ps, gs_ll3.ps, zmisc3.c)
+ - .beginpage and .endpage could cause an error if the current device
+was a page device but was installed with setdevice rather than
+setpagedevice. (gs_setpd.ps)
+
+In the interest of readability, replaces all casting macros with separate
+variables, other than those used in enum_ptrs and reloc_ptrs procedures.
+Note that doing this for rptr in gc_trace in igc.c will have a significant
+performance cost on Intel CPUs, unless the compiler has a very good
+optimizer, because it introduces another variable competing for scarce
+registers in the most performance-critical section of code in the garbage
+collector. (ialloc.c, igc.c, iparam.c, isave.c, istack.c, zchar42.c,
+zfproc.c, zusparam.c)
+
+Changes some macros to procedures. (igc.c, ilocate.c, zusparam.c)
+
+Changes some macros to static quasi-constants (only variable for debugging).
+(zvmem.c)
+
+Adds #include "errors.h" to oper.h, removing it from z*.c. (oper.h, z*.c)
+
+Reviews and reformats some header files for maintainability. This is an
+ongoing project. (bfont.h, errors.h, iinit.c)
+
+Consolidates and simplifies the reading and writing of binary tokens and
+binary object sequences. (bseq.h [deleted], btoken.h, ibnum.h, ibnum.c,
+iscanbin.c, zbseq.c)
+
+Adds dummy user and system parameter entries for all the parameters listed
+in Appendix C of the PostScript Red Book: even though the book clearly says
+that no PostScript program should rely on the presence of any particular
+parameter, PostScript files routinely assume the existence of the parameters
+listed in Appendix C. (gs_init.ps, gs_lev2.ps, gs_res.ps)
+
+Adds dummy user and system parameter entries for the new parameters listed
+in the 3010 Supplement. (gs_ll3.ps)
+
+Adds double-inclusion protection to all header files. (*.h)
+
+Moves the creation of binary object sequence headers from C to PostScript
+code. (zbseq.c, gs_btokn.ps)
+
+Adds support for multiple FormTypes and ColorRenderingTypes. (gs_init.ps,
+gs_lev2.ps, gs_res.ps, zcrd.c)
+
+Updates structures and clients for the introduction of "raw memory"
+allocators. (ialloc.h, igc.h, ialloc.c, imain.c, isave.c)
+
+In the interest of readability and being able to use GNU indent to create
+standard formatting, changes the operator tables from procedures back to
+data structures. This change is backward-compatible for all operator files,
+although we also edited all of Ghostscript's own operator definitions to
+remove the BEGIN_OP_DEFS and END_OP_DEFS macros (which now have to generate
+a little unnecessary code for backward compatibility). (opdef.h, iconf.c,
+iinit.c, iutil.c, z*.c)
+
+Splits zchar2.c into a Level 1+ part and a Level 2 part. (zcfont.c,
+zchar2.c)
+
+</pre><h3><a name="V5.25_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Adds font synthesis based on the FontDescriptor. Currently this is very
+rudimentary. (pdf_font.ps)
+
+</pre><h3><a name="V5.25_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer didn't default to A4 paper size if A4 was selected
+as the default in the makefile. (gdevpdf.c)
+ - The default implementation of the begin_image procedure always
+called the image's begin_image implementation, rather than the device's
+begin_typed_image implementation. (gdevddrw.c)
+ - The bbox device didn't initialize its reference count.
+(gdevbbox.c)
+ - A necessary cast was omitted. (gdevpsde.c)
+
+Changes some macros to procedures. (gdevpstr.h, gdevpstr.c)
+
+Adds an internal device to implement the PCL5 special color mapping
+algorithms. (gdevcmap.h, gxdevice.h, gdevcmap.c, gdevnfwd.c)
+
+Adds double-inclusion protection to all header files. (*.h)
+
+Updates drivers for the change in begin_image. (gdevbbox.c, gdevpdfi.c,
+gdevvec.c, gxclimag.c)
+
+</pre><h3><a name="V5.25_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The non-ANSI definitions of CLEAR_MARKS_PROC, ENUM_PTRS_BEGIN_PROC
+and RELOC_PTRS_BEGIN were missing a parameter. (gsstruct.h)
+ - A few necessary casts were omitted. (gsparam.c, gxpcmap.c)
+ - Images or Patterns with non-default RasterOps could cause crashes.
+(gdevmrop.c, gxp1fill.c)
+ - Exponential Interpolation functions with non-integral positive
+exponents incorrectly required the lower bound of the domain to be strictly
+positive rather than only non-negative. (gsfunc3.c)
+ - The attempt to achieve the desired color smoothness when shading
+could compute (nearly) forever. (gxshade.c, gxshade1.c)
+ - The arc change in 5.24 caused arcs to render incorrectly.
+(gspath1.c)
+ - The macro-reducing cleanup in 5.24 introduced a bug in handling
+copy operations with negative skew. (gdevm1.c)
+
+Adds unmasked images and bounding box testing to the library test program.
+(gxdevcli.h, gslib.c)
+
+Changes some macros to procedures. (gxfunc.h, gsfunc.c, gsfunc0.c,
+gsfunc3.c)
+
+Adds double-inclusion protection to all header files. (*.h)
+
+Reviews and reformats header files for maintainability. (*_.h, dodebug.h
+[deleted])
+
+Changes the structure of the common part of the image enumerator to include
+the device (which may be different from the original device, because of
+forwarding), and to access the procedures through a pointer to a const
+structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
+begin_image, since they now must pass the device to
+gx_image_enum_common_init. (gximage.h, gxiparam.h, gdevddrw.c, gdevdflt.c,
+gxiinit.c, gximage3.c, gximage4.c)
+
+Adds tests of the new color mapping device to the library test program.
+(gslib.c)
+
+Removes the last vestiges of segmented pointers. (genarch.c, std.h)
+
+Introduces a "raw memory" API, primarily for managing the underlying memory
+pool for embedded systems. This involves a NON-BACKWARD-COMPATIBLE-CHANGE
+in the implementation (but not ordinary clients) of allocators.
+(gsmemory.h, gsmemraw.h, gxalloc.h, gsalloc.c, gsmalloc.c, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.24"></a>Version 5.24 (limited) (6/17/98)</h2>
+
+<p>
+In addition to the usual bug fixes, and a few enhancements where temptation
+proved irresistible or in response to an external need, this fileset:
+<ul>
+<li> - Takes the first steps on a major readability cleanup
+ (4-space indentation instead of 2, replacement of macros by
+ procedures, ....)
+
+<li> - Implements a bit more of the DPS functionality, including view
+ clipping, and gstate stack copying for 'fork'.
+
+<li> - Starts to sketch a text API for drivers.
+
+<li> - Changes the Unix makefiles so that they create production
+binaries
+ in a separate directory.
+</ul>
+
+<p>
+Again, there are some non-backward-compatible changes required by other
+architectural improvements. As always, we have tried to minimize the impact
+of such changes on users' code.
+
+<h3><a name="V5.24_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The -Kn switch wasn't documented. (use.txt)
+ - The term "Software" was used instead of "Program" in the last
+paragraphs of the license. (PUBLIC)
+
+Adds a couple of missing operators to the list at the end of ostack.h.
+(ostack.h)
+
+Documents more precisely which gstate points to which objects after various
+gstate operations. (gsstate.c)
+
+Corrects some addresses for the Free Software Foundation. (commprod.txt,
+new-user.txt)
+
+Improves the documentation for memory management of color spaces. (gscie.h,
+gscolor2.h)
+
+Updates the list of hardware available to Aladdin. (new-user.txt)
+
+Documents ReopenPerPage. (language.txt)
+
+Moves the documentation of image rendering procedures to a better place.
+(gximage.h, gxiinit.c)
+
+Clarifies that old slzwe.c files may not work with current Ghostscript
+versions. (make.txt)
+
+</pre><h3><a name="V5.24_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - psl3.dev didn't include func.dev. (int.mak)
+ - device and device2 devices weren't sorted together, causing
+devices to appear in the list out of order (including, possibly, selecting
+the wrong device as default). (genconf.c)
+ - The mswindll module definition omitted some needed files.
+(devs.mak)
+
+Changes the optimization level for gcc from -O to -O2 for both standard and
+profiling builds. (unix-gcc.mak)
+
+Defines 3 new makefile macros for the Unix platforms,
+CFLAGS_{STANDARD|DEBUG|PROFILE}, that give the additional compiler switches
+for these 3 compilation options. (unixansi.mak, unix-cc.mak, unix-gcc.mak)
+
+Changes the Unix makefiles so that by default they create the binaries in an
+'obj' subdirectory of the source directory. (unixansi.mak, unix-cc.mak,
+unix-gcc.mak, unix-end.mak)
+
+Updates the MSVC++ makefiles so they allow setting any configuration
+parameter from the make command line. (msvc32.mak, msvccmd.mak, msvccom.mak
+[deleted], msvclib.mak, msvctail.mak)
+
+</pre><h3><a name="V5.24_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii was broken. (ps2ascii.ps)
+
+Adds capability to gslp.ps:
+
+ - Variable-width fonts (but without automatic line breaking);
+
+ - Pair kerning (from AFM file);
+
+ - Inter-character and space width adjustment.
+
+This project was done for a paying customer. (gslp.ps)
+
+</pre><h3><a name="V5.24_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The name of the plan9bm device was wrong. (gdevpbm.c)
+ - The PDF writer wrote incorrect parameters for the CCITTFax filter
+used to compress Type 3 font bitmaps. (bug introduced in 5.23) (gdevpdfi.c)
+ - The PDF writer emitted two 'endobj' lines for Type 3 bitmap fonts.
+(gdevpdf.c)
+
+Removes all remaining uses of _ds and _ss in Aladdin's drivers. (gdevprn.h,
+gdevsvga.h, gdevbit.c, gdevcgm.c, gdevdjet.c, gdevmsxf.c, gdevpbm.c,
+gdevpccm.c, gdevpcfb.c, gdevpdfi.c, gdevprn.c, gdevsvga.c, gdevtfax.c)
+
+Renames a local macro named END. (gdevcgml.c)
+
+Removes all uses of far_data other than for device (but not device2)
+prototypes. (gdevbit.c, gdevdjet.c, gdevemap.c, gdevmsxf.c, gdevpbm.c,
+gdevpcfb.c, gdevpcx.c, gdevpdf.c, gdevpng.c, gdevps.c, gdevpsim.c, gdevpx.c,
+gdevtfax.c, gdevtfnx.c, gdevvglb.c, gdevx.c, gdevxalt.c)
+
+Adds a psrgb driver that writes PostScript (Level 2) planar,
+run-length-compressed, 24-bit RGB images. (gdevpsci.c)
+
+Starts to define and implement a driver procedure for text. This interface
+will certainly change in the future as we get more insight into the division
+of responsibility and control flow between generic code, individual drivers,
+and internal and external fonts. This involves a major
+NON-BACKWARD-COMPATIBLE CHANGE in the gs_show_enum structure (which no
+client should be accessing directly). (gdevmem.h, gdevprn.h, gstext.h,
+gxchar.h, gxdevcli.h, gxdevice.h, gxtext.h, gdevbbox.c, gdevht.c,
+gdevnfwd.c, gschar.c, gschar0.c, gstext.c, gxacpath.c, gxclip.c, gxclip2.c,
+gxclipm.c, gxclist.c, gxpcmap.c)
+
+Extends the parameter list printer to handle names and arrays. (gdevpsdf.c)
+
+Implements the ability to write out a Type 1 font definition, for embedding
+fonts in PDF output. Currently this code isn't called from anywhere, and it
+will certainly be subject to change in the future. (gdevpsdf.h, gdevpdfi.c,
+gdevpsde.c, gdevpsdf.c)
+
+Adds the PCL XL Protocol Class 2.0 operators, attributes, and enumerated
+values to the relevant header files. (gdevpxat.h, gdevpxen.h, gdevpxop.h)
+
+Converts some additional devices to -dev2, to make them const. (devs.mak,
+gdevjpeg.c)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(gdevpdfi.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
+
+Massages mem_mono_copy_mono and mem_mono_strip_tile_rectangle to reduce the
+use of macros somewhat. (gdevm1.c, gdevmem.h)
+
+Makes a change to support the change in gs_param_list_common. (gdevpsdf.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(gdevpdfm.c, gdevpx.c, gdevx.c, gdevxalt.c)
+
+Adds a ReopenPerPage Boolean device parameter for printers, which causes the
+output file to be closed and reopened for each page. This may be helpful in
+persuading spoolers to start printing as soon as the first page is
+available. (gdevprn.h, gdevprn.c)
+
+Makes the %-format validator for output file names a procedure, even though
+it's only called in one place. (gdevprn.c)
+
+Updates some clients for the change from std_procs to procs. (gdevp2up.c,
+gdevpbm.c, gdevupd.c,
+
+Removes the use of the CleanFaxData tag (327) from TIFF output, since many
+applications don't recognize it and it isn't in the TIFF 6 documentation.
+(gdevtifs.h, gdevtfax.c)
+
+</pre><h3><a name="V5.24_Platforms"></a>Platforms</h3><pre>
+
+Adds a new gp_setmode_binary platform procedure, to set a file into binary
+mode on platforms that distinguish text and binary. (gp.h, gp_*.c)
+
+</pre><h3><a name="V5.24_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The derived (Bold, Oblique, ...) Hershey fonts were broken.
+(fonts/makeher.ps, fonts/h*.ps)
+
+</pre><h3><a name="V5.24_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - As always, gcc failed to report some signed/unsigned char *
+mismatches. (imainarg.c)
+ - Some needed #includes were missing. (zcrd.c, ztype.c)
+ - Contexts were always allocated in global VM (should be local VM),
+and were freed in the current VM (should be local VM). Fixing this required
+changing some internal interfaces defined in icontext.h. (icontext.h,
+icontext.c, interp.c, zcontext.c)
+ - restore did some unnecessary gsaves. (zvmem.c)
+ - Creating a new context didn't initialize the graphics state
+properly, and didn't do the first gsave that grestoreall relies on.
+(gs_dps.ps)
+ - The bookkeeping for open files didn't work with multiple contexts.
+Fixing this required a substantial (simplifying) redesign of the
+interpreter's bookkeeping for streams in general: this may have introduced
+new bugs. (files.h, ireclaim.c, isave.c, zfile.c)
+ - fork didn't copy the graphics state stack. (zcontext.c)
+ - The space bits were set incorrectly in the array reference for the
+operand stack, causing the garbage collector not to mark the operand stack
+of contexts other than the current one. (interp.c)
+ - LanguageLevel 3 facilities weren't enabled when desired.
+(gs_ll3.ps, ilevel.h, opdef.h, iinit.c, zcsdevn.c, zimage3.c, zmisc2.c,
+zmisc3.c, zshade.c, ztrap.c)
+ - flushfile with a procedure-target stream didn't pass the buffered
+data to the procedure. We tinkered with this a little, but it still isn't
+fixed. (zfilter.c, zfproc.c)
+ - The top-level color space objects allocated by the CIE color space
+setting operators were never freed (until garbage collection). (zcie.c)
+ - setpagedevice with a 0-size page didn't fail. (gs_setpd.ps,
+zmedia2.c)
+ - If one or more of the matrices in a CIE color space or CRD was
+singular, setcolorspace or setcolorrendering could cause a stackoverflow.
+(zcie.c)
+ - defineuserobject didn't work. (I don't see how it could ever have
+worked.) (gs_dps2.ps)
+ - The version string wasn't read-only. (gs_init.ps, gs_lev2.ps,
+gs_ll3.ps)
+ - Some standard resource categories weren't defined (which they need
+to be, even if they have no instances). (gs_res.ps, gs_ll3.ps)
+ - The Trapping ProcSet was empty. (gs_ll3.ps)
+ - setvmthreshold didn't accept a value of -1. (gs_lev2.ps,
+gs_pdfwr.ps, zusparam.c, zvmem2.c)
+ - Binary tokens containing native reals with swapped byte order
+didn't read in properly. (ibnum.c, iscanbin.c)
+ - In binary object sequences, many executable objects were
+incorrectly written out as literal. (zbseq.c)
+ - String DataSources for shadings didn't work. (zshade.c)
+ - Parameter dictionaries with integer keys didn't work. (iparam.c)
+ - A "can't happen" condition caused massive confusion instead of a
+rangecheck error. (gs_setpd.ps)
+ - setcachelimit and setcacheparams were broken, because they no
+longer interacted correctly with setuserparams and setsystemparams.
+(gs_lev2.ps)
+ - The source width and height of images was arbitrarily limited to
+32767. (zimage2.c)
+ - The optional dictionary parameter for filters was the last
+operand, not the first. (zfbcp.c, zfdecode.c, zfilter.c, zfilter2.c,
+zfilterx.c, zfzlib.c)
+ - If the current color space was Indexed, Separation using the
+alternative space, or DeviceN using the alternative space,
+currentgray/cmykcolor/hsbcolor/rgbcolor returned 0 rather than the
+underlying color. (This was a correction to the Red Book in the 3010
+Language Supplement, Section D.2.4 and D.2.5.) (gscolor.c, gscolor1.c,
+gxcspace.h)
+
+Implements some additional LanguageLevel 3 stream facilities:
+ - CloseSource and CloseTarget (parsing only). (ilevel.h, zfilter.c)
+ - Dictionary argument for SubFileDecode. (zfilter.c)
+ - UnitSize (fully implemented) and LowBitFirst (parsing only) for
+ LZWDecode. (zfdecode.c)
+ - ReusableStreamDecode (incomplete). (gs_ll3.ps, zfreuse.c)
+
+Removes all remaining uses of _ds and _ss. (bfont.h, errors.h, files.h,
+icie.h, idict.h, idparam.h, ifunc.h, iscan.h, iutil2.h, opdef.h; iccfont.c,
+idict.c, idparam.c, igc.c, iinit.c, iparam.c, iscan.c, iscannum.c, iutil2.c,
+zcid.c, zcie.c, zdevice2.c, zfdecode.c, zfile.c, zfileio.c, zfont0.c,
+zfont2.c, zfont42.c, zfunc.c, zht2.c, zusparam.c)
+
+Removes the use of gs_if_debug_c. (zvmem2.c)
+
+Updates clients for the change in color space num_components. (zcolor2.c,
+zcsindex.c, zcssepr.c, zpcolor.c)
+
+Changes the stack manager so it can ensure an unused margin above the top
+element. This is needed for a possible change in the operator API.
+(istack.h, istack.c)
+
+Decouples the definition of the interpreter instance from the definition of
+the exported procedures that use it, so that we can use it in more places
+internally. (iminst.h, main.h)
+
+Removes all initialization of static per-context state. (iinit.c, iscan.c,
+zmath.c)
+
+Makes the freeing of VM spaces entirely dependent on the number of contexts
+referencing them, removing the special handling of interpreter termination.
+(icontext.h, gsalloc.c, icontext.c, inouparm.c, interp.c, zcontext.c,
+zusparam.c) ****** IN PROGRESS ******
+
+Enables printing of time and memory usage even in non-DEBUG systems, for
+benchmarking. (imain.c)
+
+Adds a .forceundef operator to parallel .forceput. (gs_init.ps, zdict.c)
+
+Rewrites the Form caching code to use the Pattern cache. (gs_fform.ps)
+
+Removes all uses of far_data. (imain.c, imainarg.c, iname.c, opdef.h)
+
+Moves responsibility for null page devices from C code to PostScript code.
+(gs_setpd.ps, igstate.h, zdevice2.c, zgstate.c)
+
+Changes the context scheduler to not store or reload the state when
+switching from a context to the same context. (zcontext.c)
+
+Moves .registerencoding from C code to PostScript code. (gs_init.ps,
+zfont2.c)
+
+Splits off inames.h (API for names and the name table) from iname.h (API for
+the interpreter's name table); renames the_nt as the_gs_name_table, and
+moves it to imain.c. We would like to rename iname.h as names.h, but there
+are too many places that include it. (igc.h, iname.h, inamedef.h, inames.h,
+imain.h, idict.c, idstack.c, igc.c, iname.c, interp.c, isave.c)
+
+Splits off iestack.h and iostack.h from estack.h and ostack.h, as was done
+for [i]dstack.h in 5.23. (estack.h, iestack.h, iostack.h, ostack.h,
+interp.c)
+
+Splits off the hit detection device from the user path code, moving it to
+the library level where it belongs. (zupath.c)
+
+Updates the interpreter for the changes in the enum_ptrs, reloc_ptrs, and
+clear_marks memory management procedures. (igc.c, igcref.c, ilocate.c,
+zcontext.c)
+
+Removes all uses of 'near' from the interpreter: if short and long calls
+have different formats, we rely on the compiler to generate the most
+efficient one. (iccfont.c, imainarg.c, iparam.c, zdevice2.c, zdouble.c,
+zdps.c, zgstate.c, zmatrix.c, zpath.c, zpath1.c, zrelbit.c, ztype.c)
+
+Makes a couple of minor changes to support the change in
+gs_param_list_common. (iparam.h, iparam.c)
+
+Changes internaldict to an operator, and executive and findencoding to
+procedures, in order to satisfy the Genoa FTS. (gs_dps.ps, gs_init.ps,
+gs_res.ps)
+
+Updates clients for the addition of device reference counting. (zpcolor.c,
+zupath.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(istruct.h, opcheck.h)
+
+Adds a debugging operator for printing out a Type 1 font. (zfont1.c)
+
+Updates the Type 1 font operators for the change in the procedure structure.
+(zchar1.c, zfont1.c)
+
+Updates one client for the change in the gs_show_enum structure. (zchar.c)
+
+Removes an obsolete "hook" put in for a customer. (zchar.c)
+
+Removes the BigStringEncode filter, which was only used by a former
+customer. (zfilter.c)
+
+</pre><h3><a name="V5.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Images defined in non-Device color spaces were broken.
+(pdf_draw.ps)
+
+Removes some vestiges of the old pdf2ps. (pdf_draw.ps, pdf_main.ps)
+
+Adds some leftover PDF 1.2 features:
+
+ - F, FFilter, and FDecodeParms keys in stream dictionaries.
+ (pdf_base.ps)
+
+ - Functions, including predefined spot functions. (pdf_draw.ps)
+
+ - Name trees. (pdf_base.ps)
+
+Adds some PDF 1.3 features. Note that these require a fair amount of
+PostScript LanguageLevel 3 support. Note also that none of these have been
+tested yet, because we don't have any source of test files.
+
+ - DeviceN and (stubbed) ICCBased color spaces. (pdf_draw.ps,
+ pdf_ops.ps)
+
+ - Additional extended graphics state parameters. (pdf_draw.ps)
+
+ - Number trees. (pdf_base.ps)
+
+ - Masked images. (pdf_draw.ps)
+
+Works around a bug in pdfTeX, which can generate Encoding vectors containing
+nulls. (pdf_font.ps)
+
+</pre><h3><a name="V5.24_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A needed #include of memory_.h was missing. (sdeparam.c)
+ - The needed input buffer size for the RunLengthEncode filter was
+128, but should be 129. (srle.c)
+ - The ASCII85Encode and ASCIIHexEncode filters sometimes didn't
+insert \n characters often enough. (sfilter2.c, sstring.c)
+ - In one obscure boundary case, the CCITTFaxEncode filter with K =
+-1 could emit an extra, incorrect code. (scfe.c)
+ - The CCITTFaxDecode filter didn't default DamagedRowsBeforeError to
+0. (scfx.h)
+
+Removes all remaining uses of _ds and _ss. (sfilter.h, sbcp.c, scfe.c,
+seexec.c, sfilter1.c, sstring.c)
+
+Removes the use of do_debug. (scfd.c)
+
+Removes all uses of far_data. (scf.h, scfdgen.c, scfdtab.c, scfetab.c,
+sjpegerr.c)
+
+Removes the save_count member of streams, which is now no longer needed.
+(stream.h)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(sbcp.c, sbhc.c, sbwbs.c, scfd.c, scfe.c, sdctc.c, sdctd.c, sdcte.c,
+seexec.c, sfilter1.c, sfilter2.c, sfxfd.c, sfxstdio.c, siscale.c, slzwc.c,
+slzwce.c, slzwd.c, smtf.c, spdiff.c, spngp.c, srld.c, srle.c, sstring.c,
+szlibc.c, szlibd.c, szlibe.c)
+
+Changes all groups of statistic-gathering variables to be structure
+variables named stats_*. (scfe.c)
+
+Rewrites the CCITTFaxEncode filter to cut down one particularly large and
+obnoxious macro, and to simplify the code by allocating an output buffer as
+well as an input buffer. (scf.h, scfdgen.c, scfe.c, scfetab.c)
+
+</pre><h3><a name="V5.24_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The masked image clipper sequenced through mask rows incorrectly.
+(gxclipm.c)
+ - gx_[c]path_init_local_shared were declared as returning void, but
+could actually return an error. (gxpath.h, gxcpath.c, gxpath.c)
+ - As always, gcc failed to report some static/non-static
+inconsistencies. However, to my dismay, I find that the ANSI C standard
+allows these, so I'll have to stop complaining about them. (gxclimag.c,
+gxclipm.c)
+ - As always, gcc failed to report some signed/unsigned char *
+mismatches. (gdevpdfi.c, gsparam.c)
+ - A loop counted on a non-existent zero value to mark the end of the
+IODevice table. (gsiodev.c)
+ - Some needed #includes of memory_.h were missing. (gdevddrw.c,
+gscolor2.c, gscrdp.c, gscspace.c, gxclipm.c, gximage3.c, gxshade4.c)
+ - Pattern device colors didn't have access to the original halftone
+phase, making it impossible to handle non-standard X/YStep correctly.
+(gsdcolor.h, gspcolor.c)
+ - Pattern filling disregarded the phase. THIS MAY UNDO A FIX MADE
+IN 5.02. WE NEED TO RE-TEST PATTERNS CAREFULLY. (gxp1fill.c)
+ - restore did some unnecessary gsaves. (gsstate.h, gsstate.c)
+ - The reference counting macros could read from an object after
+freeing it. (gsrefct.h)
+ - setgstate and currentgstate freed the view clipping path, which
+they shouldn't do. (gsstate.c)
+ - If no view clipping path was set, viewclippath returned the entire
+extent of the device, not the imageable area. (gxpath.h, gsdps.c, gspath.c)
+ - Assigning one stack-allocated path to another incorrectly wound up
+sharing their segments. (gxcpath.c, gxpath.c)
+ - dot_length_absolute was incorrectly declared as float rather than
+bool. (gxline.h)
+ - The test for varying-depth banded images was incorrect, causing
+varying-depth images to be treated as constant-depth. (This only affected
+ImageType 3 images.) (gxclimag.c)
+ - Failure to clamp Y values when processing banded images could
+cause crashes or invalid band list data. (gxclimag.c)
+ - The changes in gsparam.c introduced in 5.23 made the coercion of
+int arrays to float arrays fail. (gsparam.h, gsparam.c)
+ - Interpolated banded images could be transmitted incompletely,
+causing narrow stripes to be chopped out of their rendering. (gxclimag.c)
+ - FunctionType 0 functions with 32-bit samples didn't read their
+data correctly. (gsfunc0.c)
+ - Lattice-form Shadings with packed coordinates could crash or
+produce incorrect results. (gxshade.c)
+ - Lattice-form Shadings with packed coordinates always returned an
+error. (gxshade4.c)
+ - If the PaintProc of a Pattern or a Form, or a CharString
+procedure, or a similar callback copied the current graphics state with
+gstate or currentgstate, a dangling reference to the device could result.
+Fixing this required adding a reference count to devices: internally created
+devices initialize it to 0, externally visible devices initialize it to 1.
+THIS IS A DELICATE CHANGE AND WILL PROBABLY HAVE A BUG TAIL. (gsdevice.h,
+gxdevcli.h, gxdevice.h, gdevmem.c, gdevmrop.c, gdevnfwd.c, gschar.c,
+gsdevice.c, gsmemory.c, gspaint.c, gsstate.c, gxacpath.c, gxccman.c,
+gxclip.c, gxmclip.c, gxpcmap.c)
+ - The return_if_error macro referred to code rather than code_.
+(gserror.h)
+ - Non-monotonic halftones didn't allocate enough slots in the
+halftone cache. (gxht.c)
+ - setpagedevice with a 0-size page didn't fail. Fixing this
+required making the nullpage device provide explicit InputAttributes.
+(gdevnfwd.c)
+ - Halftone angles were often slightly off. (gshtscr.c)
+ - Banded fill_mask operations (used for characters) were sometimes
+broken. This bug was obviously introduced since 5.10; I'm surprised that it
+didn't have more serious effects. (gxclread.c)
+ - Partially transparent patterns didn't work with non-default
+RasterOp values. (gxp1fill.c)
+ - The default implementation of strip_copy_rop didn't handle color
+space conversion properly. (gdevmrop.c)
+ - Hint replacement could cause the initial moveto and final
+closepath of a Type 1 outline to differ, confusing the filling code.
+(gxhint3.c)
+ - Interpolated images were truncated at the bottom. (bug probably
+introduced in 5.23) (gxiscale.c)
+ - Using an unsigned type for the index passed to enum_ptrs
+procedures caused comparisons against signed values to be incorrect.
+(gsstruct.h)
+
+Rewrites the rectangle list and mask clipping algorithms to use callback
+procedures rather than macros. The rectangle list source code grew by 20%,
+but the compiled code shrank from 10K to less than 4K; the mask clip source
+code and compiled code both shrank. (gxclip.h, gxmclip.h, gxclip.c,
+gxclip2.c, gxclipm.c, gxcpath.c)
+
+Removes all remaining uses of _ds and _ss. (gsmemory.h, gsstruct.h, gzht.h,
+stdpre.h, gp_dosfb.c, gsbitops.c, gscie.c, gsht.c, gstype1.c, gstype2.c,
+gxclpath.c, gxclread.c, gxcmap.c, gxfill.c, gxi12bit.c, gxop1.h, gxpflat.c,
+gxstroke.c, gxtype1.c)
+
+Changes some GC procedures from explicit code to standard macros.
+(gsstruct.h, gscscie.c, gxcht.c)
+
+For easier debugging, changes gs_debug_c to a procedure; removes
+gs_if_debug_c and do_debug. (gdebug.h, gsht1.c, gsmisc.c, gspaint.c,
+gxcht.c, gxht.c, gxpcmap.c)
+
+Changes the num_components member of the color space structure to a
+procedure, which is needed because DeviceN color spaces have a variable
+number of components; also makes Pattern spaces return -1 - the correct
+num_components instead of -1. This is a NON-BACKWARD-COMPATIBLE CHANGE.
+Also adds a base_space procedure. (gxcspace.h, gscdevn.c, gscolor1.c,
+gscolor2.c, gscpixel.c, gscscie.c, gscsepr.c, gscspace.c, gspcolor.c,
+gxiinit.c, gxiscale.c)
+
+Changes all groups of statistic-gathering variables to be structure
+variables named stats_*. (gxclip.c, gxclist.c, gxclpath.c, gxfill.c,
+gxifast.c)
+
+Starts to pull apart gs_makebitmap/pixmappattern to remove the dependency on
+masked images. (gspcolor.c)
+
+Splits the C heap allocator from generic allocator support. (gsmemory.c,
+gsmalloc.c)
+
+Removes all uses of far_data other than references to device (but not
+device2) prototypes. (gdevmem.h, gdevmrop.h, gxdevcli.h, gconf.c,
+gdevabuf.c, gdevht.c, gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c,
+gsbittab.c, gsflip.c, gsroptab.c, gxcht.c)
+
+Adds a streams member to gs_ref_memory_t. The library doesn't use this, but
+it greatly simplifies the interpreter's bookkeeping. (gsalloc.h, gxalloc.h,
+gsalloc.c)
+
+Adds some more opaque types to the graphics state structure, rather than
+using naked struct types. (gsccolor.h, gzstate.h)
+
+Introduces the notion of the "effective clip path" in a graphics state.
+Painting operators should now call gx_effective_clip_path rather than using
+the clip_path member directly. (gxpath.h, gschar.c, gsdps1.c, gsimage.c,
+gspaint.c, gspath.c, gxccache.c, gxpaint.c)
+
+Implements view clipping. (gzstate.h, gspath.c, gsstate.c)
+
+Starts to pare down the fit_* macros in gxdevice.h, since some people feel
+strongly they are hard to follow, and also adds BEGIN/END wrapping.
+(gxdevice.h, gdevabuf.c, gdevmem.c, gxclpath.c)
+
+Refactors the structure definition macros in anticipation of moving to a
+more table-driven approach. Replaces ENUM_CALL, ENUM_RETURN_CALL, and
+RELOC_CALL with ENUM_USING and RELOC_USING. (gsstruct.h, gdevmem.c,
+gshtscr.c, gxcpath.c, gxiinit.c)
+
+Sketches a table-driven rather than procedural representation for GC
+descriptors. We believe this will improve readability, reduce code size,
+and perhaps reduce cache thrashing during garbage collection. This requires
+a NON-BACKWARD-COMPATIBLE CHANGE to the enum_ptrs, reloc_ptrs, and
+clear_marks procedures (to add the structure descriptor as a parameter).
+This should not affect any ordinary clients, because they should already
+define these procedures using the macros in gsstruct.h, which *are*
+backward-compatible; however, they do affect two internal clients that use
+their own type tags with unions (color spaces and device colors).
+(gsstrtab.h, gsstruct.h, gsalloc.c, gsstrtab.c)
+
+Updates color spaces for the change in enum_ptrs and reloc_ptrs.
+(gxcspace.h, gscdevn.c, gscolor1.c, gscolor2.c, gscpixel.c, gscscie.c,
+gscsepr.c, gscspace.c, gspcolor.c)
+
+Updates device colors for the change in enum_ptrs and reloc_ptrs.
+(gsdcolor.h, gxdcolor.h, gxpcolor.h, gspcolor.c, gxcht.c, gxcmap.c,
+gxdcolor.c, gxht.c, gxp1fill.c)
+
+Implements a hit detection device at the library level. (gserrors.h,
+gdevhit.c)
+
+Changes some configuration parameters from #defines to statics. (gschar.c)
+
+Changes "simple" structures so they no longer have 0 for the enum_ptrs or
+reloc_ptrs procedure. This is a NON-BACKWARD-COMPATIBLE CHANGE for
+structure-definers that don't use the macros in gsstruct.h (of which there
+shouldn't be any). (gsstruct.h, gsalloc.c)
+
+Adds the structure type name to the debugging printout for freeing objects.
+(gsalloc.c)
+
+To help in debugging, changes all uses of
+ #define ss ((stream_xxx_state *)st)
+to
+ stream_xxx_state * const ss = (stream_xxx_state *)st;
+(gxclread.c)
+
+Removes all uses of 'near' from the library: if short and long calls have
+different formats, we rely on the compiler to generate the most efficient
+one. (gscie.c, gscoord.c, gsimpath.c, gsstate.c, gstype2.c, gxclpath.c,
+gxclread.c, gxfill.c, gxhint1.c, gxhint2.c, gxhint3.c, gxstroke.c)
+
+Adds 'inline' to stdpre.h, defined as the empty string on compilers other
+than the ones we know accept it. (stdpre.h)
+
+Adds printout of the subrectangle to ImageType 1 tracing. (gxiinit.c)
+
+Replaces a few uses of gs_memory_default with dev-&gt;memory. (gdevdbit.c,
+gxclread.c)
+
+Improves support for halftone objects not associated with graphics states.
+This involves a minor change to the definitions of gs_spot_halftone and
+gs_threshold_halftone, to define the transfer function as a closure. This
+is slightly NON-BACKWARD-COMPATIBLE in that it requires clients to set
+transfer_closure.proc to 0 if they also set transfer to 0. NOTE: the API
+defined in gshtx.h is subject to future change. (gscsepnm.h, gshtx.h,
+gxdht.h, gxfmap.h, gxht.h, gxtmap.h, gscolor.c, gsht.c, gsht1.c, gshtx.c)
+
+Changes the Bezier approximation of arcs to cut arcs at absolute multiples
+of 90 degrees rather than at intervals of 90 degrees (e.g., an arc from 45
+to 105 would now be cut at 90 rather than being treated as a single
+60-degree curve) in order to produce more uniform output and also to ensure
+that the bounding box for arcs is more accurate (to pacify the Genoa FTS).
+(gxfarith.h, gsmisc.c, gspath1.c)
+
+Replaces all remaining uses of do { ... } while (0) with BEGIN ... END.
+(gsbitops.h, gsdsrc.h, gserror.h, gsmdebug.h, gsrect.h, gxcldev.h, gxfunc.h,
+gxop1.h, gxtype1.h, gsalphac.c, gsshade.c, gstype2.c, gstype42.c,
+gxclread.c, gxcpath.c, gximage4.c, gxpath.c)
+
+Adds a user-defined halftone type, to support non-monotonic halftones. We
+could make any of the following structures fully object-oriented:
+ - Halftones (client level)
+ - Halftone orders (device level, but not rendered)
+ - Device halftones (device level, fully rendered)
+The right place to do this for non-monotonic halftones, which are specified
+directly by bit masks, is at the device halftone level. However, there are
+too many places that know too much about the implementation of device
+halftones and halftone orders right now. WE NEED TO REVISIT THIS AFTER THE
+5.1x CODE BRANCH IS TERMINATED. SHOULD ALSO CONVERT UNION TO TYPED UNION
+FOR GC -- CODE IS DUPLICATED IN gsht.c VS gshtx.c. (gxdht.h, gxht.h,
+gxhttype.h, gshtx.h, gsht.c, gsht1.c, gshtx.c)
+
+Moves the procedures in Type 1 font data into a structure. This is a
+NON-BACKWARD-COMPATIBLE CHANGE, but an internal one. (gxfont1.h, gstype1.c,
+gstype2.c, gxtype1.c)
+
+Extends Type 1 / 2 / 4 fonts to require that they be able to enumerate the
+set of glyphs that they define, to allow writing them out. We may propagate
+this to all base fonts in the future. (gxfont1.h)
+
+Provides some utilities for devices that want to define their own
+InputAttributes and OutputAttributes. (gdevprn.h, gxdevice.h, gdevprn.c,
+gsdparam.c)
+
+Removes all of the text-display procedures that took null-terminated C
+strings as operands. This is NON-BACKWARD-COMPATIBLE. However, since the
+memory manager required that all such operands be allocated using
+gs_alloc_string, the procedures were never usable with arbitrary C strings
+anyway. (gschar.h, gschar.c)
+
+Renames the gx_device procedure record from std_procs to procs, in
+anticipation of more unified support for "objects". This is a
+NON-BACKWARD-COMPATIBLE CHANGE for a surprisingly large number of clients
+that should have been using dev_proc and set_dev_proc. (gdevbbox.h,
+gxdevcli.h, gxdevice.h, gdevdflt.c, gdevdgbr.c, gdevmem.c, gdevprn.c,
+gsalphac.c, gsdevice.c, gsropc.c, gxccache.c, gxifast.c)
+
+Disallows setting of the RasterOp-related graphics state parameters when
+a cache device is active. (gsrop.c)
+
+Changes the tracing printout of path segments to provide enough accuracy to
+cover all the fraction bits of a 'fixed'. (gxpath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.23"></a>Version 5.23 (limited) (5/14/98)</h2>
+
+<p>
+This fileset adds a number of PostScript LanguageLevel 3 features: library
+support for ImageType 3 and 4 (masked) images, PostScript-level support for
+ImageType 4, and the shfill operator for smooth shading. It also adds RCS
+Id lines to all the files we maintain. It also changes the Unix makefiles
+so that they create debugging or profiling binaries in separate directories.
+
+<p>
+This fileset includes an unusually large number of non-backward-compatible
+API changes. Most of them don't affect ordinary library clients, but a few
+do. These changes, and a few more to come, result from the next (large)
+increment in our ongoing project to make the code completely re-entrant (no
+non-idempotent writable globals in our own code). This necessarily involves
+putting some things that used to be global into structures, some of which
+must be added to some interfaces.
+
+<p>
+NOTE: because of a combination of hardware problems, time pressure, and
+belated discovery of sloppiness by the original developers of the PC
+makefiles, none of the PC makefiles in this fileset work. The Borland
+makefiles probably come the closest.
+
+<h3><a name="V5.23_Documentation"></a>Documentation</h3><pre>
+
+Adds documentation for:
+ - The changes in begin_image and related facilities. (drivers.txt)
+ - The addition of -Z/. (use.txt)
+ - The new ps2ps utility. (ps2ps.1)
+ - The new get_hardware_params procedure. (drivers.txt)
+ - The new -B&lt;size&gt; / -B- switch. (use.txt).
+
+Improves the documentation for the sample_ macros. (gsbitops.h)
+
+Adds some documentation on how the debugging/tracing flags work. (gdebug.h)
+
+Improves the documentation of DDAs. (gxdda.h)
+
+Documents a subtle change in the meaning of a flag in the PDF
+FontDescriptor. (pdf_font.ps)
+
+Changes the location of the authoritative site for zlib sources. (zlib.mak)
+
+Corrects a typo. (gsht1.h)
+
+Removes pdf_2ps.ps from the fileset. (psfiles.txt)
+
+Adds standard file name comments to all .c and .h files that didn't already
+have them. (dodebug.h, gdev3b1.c, gdev8510.c, gdevadmp.c, gdevhl7x.c,
+gdevimgn.c, gdevo182.c, gdevpdfx.h, gdevpe.c gdevsco.c, gdevsj48.c,
+gdevvglb.c, gsalpha.c, gscolor1.c, gscsepr.h, gsdsc.c, scfetab.c string_.h,
+zfunc3.c, zmedia2.c)
+
+Unifies the nroff styles of the various man pages a bit. (*.1)
+
+Adds a reference to the CTAN mirror sites. (new-user.txt)
+
+Notes that the result of rect_intersect may be anomalous. (gsrect.h)
+
+Improves the documentation for the Distiller parameter handling code.
+(gdevpdfp.c, gdevpsdp.c)
+
+Corrects an ambiguity in the definition of the int_keys argument of
+param_begin_xmit_dict. (gsparam.h)
+
+Adds a new file that will evolve into a reasonable guide to the source code.
+(README, source.txt)
+
+Adds the convention for 'status' and 'code' to the C style guide.
+(c-style.txt)
+
+Improves the documentation for the '-' pseudo-switch. (use.txt)
+
+Updates the problem reporting form to include the URL for known post-release
+problems. (bug-form.txt)
+
+Documents the availability of sources and binaries for Plan 9.
+(new-user.txt)
+
+</pre><h3><a name="V5.23_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The 'tags' target in the Unix makefiles had an incorrect directory
+name. (bug probably introduced since 5.20) (unix-end.mak)
+ - The ld_tr and CCFLAGS macros were used in the makefiles before
+they were defined, causing problems with `make' implementations that
+substitute macros into definitions at definition time rather than at use
+time. (*.mak)
+ - Recent Digital Unix versions (4.0 and later) require -std1 when
+compiling. (make.txt)
+ - The Unix library-only makefile had gotten out of date.
+(ugcclib.mak)
+ - pf2afm[.bat] were omitted from the fileset. (master/package.tcl)
+ - The Borland makefile didn't work, because the Borland compiler
+requires specifying the output file name (-o) before the input file name
+(-c)! This required changing the order of every compilation command in
+every platform-independent makefile. The win*.mak files still need work.
+(*.mak)
+ - None of the non-Unix makefiles specified directory names for the
+auxiliary programs. (dvx-tail.mak, os2.mak, wctail.mak, winlib.mak)
+ - The Windows makefiles lacked build rules for gp_ntfs and gp_win32.
+(msvclib.mak, winlib.mak)
+
+Adds a new debugging switch -Z/ that prints the file name and line number on
+all trace messages. (gdebug.h, std.h)
+
+Changes the Unix 'pg' and 'debug' build targets so that they create the
+binaries in a 'pgobj' or 'debugobj' subdirectory of the standard build
+directory. This allows keeping all 3 configurations active. (unix-end.mak)
+
+Adds GEN directories for jpeg, libpng, and zlib. (devs.mak, gs.mak,
+jpeg.mak, lib.mak, libpng.mak, zlib.mak)
+
+Adds a gendev.c that will eventually replace genconf.c. (gendev.c, *.mak)
+
+Adds -Wcast-align to the gcc compilation switches. (unix-gcc.mak)
+
+Adds support for libpng 1.0.1. (libpng.mak)
+
+Notes the use of -R on Solaris and other SVR4 systems. (unix*.mak)
+
+Removes pdf_2ps.ps from the fileset. (int.mak, unixinst.mak,
+pdf_2ps.ps[deleted])
+
+Ensures that every file that is copyright, maintained, and distributed by
+Aladdin Enterprises has a RCS Id line. In .c and .h files, these lines
+currently are only comments, but they could be converted easily to static
+strings later if we want to. We had to touch almost every file in the
+fileset to do this, but we did *not* change the write dates. (*)
+
+Makes the build procedure auto-detect whether the installed version of gcc
+has the 'const' code generation bug. (gs.mak, lib.mak, unix-gcc.mak)
+
+Removes 'makefile' as a precondition for ccf32.tr. (I can't quite figure
+out why it was there in the first place.) (msvccom.mak)
+
+Replaces the -F&lt;file&gt; switch with a -B&lt;buffer size&gt; switch that forces all
+files to use the run_string interfaces. -B- turns it off. (iminst.h,
+imainarg.c)
+
+Adds a new resource to genconf.c, -replace &lt;module&gt;. This causes &lt;module&gt;
+*not* to be included if the module with the -replace resource *is* included.
+If two modules -replace each other, either directly or indirectly through
+-includes, the result is undefined. (genconf.c)
+
+Uses -replace to implement a default roplib package. (lib.mak)
+
+</pre><h3><a name="V5.23_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - unprot.ps stopped working because of the stricter prohibition
+against storing local-VM objects into systemdict. (unprot.ps)
+
+Adds a new ps2ps utility, like pdf2ps, that "distills" PostScript.
+(ps2ps, ps2ps.bat)
+
+Modifies the ps2epsi utility so it can be run outside the ps2epsi script for
+testing. (ps2epsi.ps)
+
+Changes the pdf2ps utility to use the pswrite device. This gets rid of all
+conversion problems, at the expense of larger and stupider output files.
+(pdf2ps, pdf2ps.bat)
+
+</pre><h3><a name="V5.23_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Two procedures were declared 'private' inconsistently (thank you
+again, gcc). (gdevps.c)
+ - The author of the uniprint driver sent a fix for an
+allocation-related bug and an off-by-one bug. (gdevupd.c)
+ - The PDF writer incorrectly converted open stroked rectangles (only
+3 sides drawn) to closed (4 sides drawn). (gxpath.h, gzpath.h, gdevpdfd.c,
+gxpath2.c)
+ - When banding, filling a character within the PaintProc of a
+Pattern could produce memory access errors. (The problem was in
+gx_forward_fill_mask, which might affect filling characters in other
+situations as well.) (gdevnfwd.c)
+ - The [e]pswrite driver produced incorrect line widths for stroked
+graphics. (gdevps.c)
+ - The [e]pswrite driver didn't invoke colorimage correctly, so
+didn't handle Patterns right. (gdevps.c)
+ - Vector devices didn't set the color before writing trapezoids,
+possibly causing incorrectly colored output. (gdevvec.c)
+ - Vector devices could give errors on Pattern fills. (gdevvec.c)
+ - The bbox device retained a pointer to the clipping path, which,
+since the path was embedded in the gs_state_contents, confused the garbage
+collector, causing memory access errors. We fixed this by de-embedding the
+path object: see below. (gsstate.c)
+ - On some GNU/Linux systems, the X driver could get a memory access
+error when displaying patterns. We fixed this by adding calls on XInitImage
+in the necessary places when running X11R6. (gdevx.c)
+ - PDF output didn't check names for unusual characters, and could
+produce invalid output if the input included names with those characters.
+(gdevpdfx.h, gdevpdf.c, gdevpdfm.c, gdevpdfo.c)
+ - In the PDF writer, DEST pdfmarks with /Dest but no /Page or /View
+didn't generate named destinations. (gdevpdfm.c)
+ - Printer devices didn't allow . in %-formats in the output file
+name. (gdevprn.c)
+ - The x11cmyk driver didn't read bits back from the screen
+correctly. (gdevxalt.c)
+ - The pcxmono and pcxgray drivers used colored rather than
+gray-scale palettes. (gdevpcx.c)
+ - The PCX drivers could emit repetition counts greater than 15,
+confusing some readers. (gdevpcx.c)
+
+Removes some vestiges of the obsolete draw_line driver procedure. We also
+rename the draw_line member of the driver procedure structure as
+obsolete_draw_line, so that any uses of it will cause compilation errors,
+but we don't remove it from the structure, so that existing driver procedure
+vectors will continue to compile (although the draw_line procedure will
+never be called). (gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevdflt.c)
+
+To repair a design error, and at the same time add flexibility needed for
+ImageType 3:
+
+ - Removes the image_data and end_image driver procedures,
+associating them with the gx_image_enum(_common)_t structure instead.
+Clients should call gx_device_image_data and gx_device_end_image instead: we
+set the image_data and end_image procedures in the device structures to
+these procedures when filling in defaulted procedures. This is a
+NON-BACKWARD-COMPATIBLE CHANGE for drivers that implement begin_image, since
+they now have to fill the procedures into the enumerator structure.
+(gsiparm*.h, gxdevcli.h, gxdevice.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
+gdevdflt.c, gdevnfwd.c, gsimage.c, gxclist.c, gxidata.c, gxifast.c,
+gxiinit.c, gximage3.c, gximage4.c)
+
+ - Replaces the image_data driver procedure with a plane_data
+procedure (now associated with the image enumerator, not the device) that
+allows specifying the X offset and raster independently for each plane, and
+(depending on the image type) may allow omitting some planes. We provide a
+gx_device_image_plane_data procedure parallel to _image_data and _end_image
+(see above). (gsiparm*.h, gxdevcli.h, gxiparam.h, gdevbbox.c, gdevddrw.c,
+gxidata.c, gxiinit.c, gximage3.c, gximage4.c)
+
+Updates clients for image processing changes. (gdevvec.h, gdevpdf.c,
+gdevpdfi.c, gdevps.c, gdevpx.c, gdevvec.c)
+
+Enhances [e]pswrite to detect other kinds of opportunities for producing
+smaller output. This involves a change in the moveto procedure in the
+'vector' interface. (gdevps.c)
+
+Changes the bbox device so that it automatically detects whether it is being
+used as a component in a device pipeline or as a free-standing device,
+rather than having to select this in the makefile. (lib.mak, gdevbbox.h,
+gdevbbox.c)
+
+Moves the halftoning driver a bit closer to real usability. (gdevht.h,
+gdevht.c)
+
+Adds some tracing to the color mapping code in the X driver. (gdevx.c)
+
+Implements setting the Dict and ACSDict parameters for pswrite and pdfwrite.
+Dict is effective with the CCITTFaxEncode filter for black-and-white images;
+otherwise, these parameters still don't do anything. (gdevpdfi.c,
+gdevpsdp.c) ****** READING HUFFMAN TABLES IS NYI, SEE sdcparam.c; SETTING
+DOESN'T WORK BECAUSE DCT_set_defaults DOESN'T DO WHAT IT SHOULD ******
+
+Updates the PS/PDF writers to reflect the fact that the ASCIIHexEncode
+filter now has a state. (gdevpsdf.c)
+
+Modifies the X driver so that it can draw multiple platform characters at a
+time rather than one character per call. (gdevx.h, gdevx.c, gdevxxf.c)
+
+Takes advantage of the filter stream procedures now available in stream.c.
+(gdevjpeg.c, gdevpdf.c, gdevpsdf.c)
+
+Adds a get_hardware_params procedure, similar to get_params except that it
+reads parameters whose values depend on hardware state that may change
+without program intervention (e.g., panel switches). The default is that
+there are no hardware parameters. (gdevmem.h, gdevprn.h, gsdevice.h,
+gxdevcli.h, gxdevice.h, gxacpath.c, gxclip2.c, gxclipm.c, gxclist.c,
+gxcpath.c, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
+gdevprn.c, gsdparam.c)
+
+Updates the PS/PDF writer for the change in the parameter list API.
+(gdevpsdf.c)
+
+Makes a few more writable statics const. (gdevos2p.c, gdevpipe.c,
+gdevpsim.c, gdevx.c)
+
+Removes the rrgb sample device, since it now no longer serves any purpose.
+(gdevrrgb.c[deleted])
+
+Converts some additional devices to -dev2, to make them const. (devs.mak,
+gdevbit.c, gdevpbm.c, gdevpcx.c, gdevpsim.c, gdevpng.c, gdevtfax.c,
+gdevtfnx.c, gdevx.c, gdevxalt.c)
+
+Updates a client accessing the preallocated color spaces. (gdevpsdi.c)
+
+Renames the debugging-related statics in the X driver as X_SOMETHING.
+(gdevx.c)
+
+</pre><h3><a name="V5.23_Platforms"></a>Platforms</h3><pre>
+
+Makes a few minor changes to support Plan 9. (make.txt, devs.mak, stat_.h,
+stdio_.h, time_.h, gdevpbm.c)
+
+</pre><h3><a name="V5.23_Fonts"></a>Fonts</h3><pre>
+
+Documents the availability of a free Chinese font. (fonts.txt,
+new-user.txt)
+
+Works around a bug in the Adobe PostScript driver. We though it just output
+the FontBBox for Type 42 fonts in the 2048- or 4096-unit character space
+rather than a 1-unit space, but in fact it outputs garbage. (zfont42.c,
+gstype42.c)
+
+Augments the handling of Type 42 fonts to recognize the gdir /
+GlyphDirectory method of outline definition in addition to the loca / glyf
+method, per Adobe versions 2015 and later (undocumented!). (ifont.h,
+zfont42.c)
+
+</pre><h3><a name="V5.23_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Memory management for argument strings was wrong. (gsargs.h,
+gsargs.c)
+ - 1 .setlanguagelevel was broken, because it didn't allow for the
+possibility that values could get deleted from systemdict that existed in
+level2dict. (bug introduced in 5.x, x &lt;= 10) (zmisc2.c)
+ - -dFAKEFONTS was broken. (gs_fonts.ps, gs_init.ps)
+ - copyscanlines was broken. (bug introduced in 5.20) (gs_init.ps)
+ - The matrix returned by sizeimage was incorrect. (zdpnext.c)
+ - The implementation of .buildpattern for PatternType 2 was wrong.
+(gs_ll3.ps)
+ - Ghostscript couldn't load TrueType fonts where the amount of data
+either before or after the glyf section exceeds 64K. (gs_ttf.ps) ****** WE
+BACKED OUT THIS CHANGE, BECAUSE WE HAD TO BACK OUT THE NEXT ONE. ******
+ - Ghostscript couldn't load TrueType fonts where the total data is
+more than 64K and the offset or length of the glyfs is odd. (gs_ttf.ps)
+****** WE BACKED OUT THIS CHANGE: IT BROKE THE PDF INTERPRETER, BECAUSE IT
+IMPOSES A NEW REQUIREMENT THAT TTF FILES BE POSITIONABLE. ******
+ - Some compilers complained about arithmetic on enums. (interp.c)
+ - The CIE color space and CRD GC structure definitions were in the
+interpreter rather than the library. (zcie.c, zcrd.c)
+ - NullFont was still present in FontDirectory when currentglobal was
+false. (gs_init.ps)
+ - execform failed with Form resources, because it tried to insert
+the Implementation in a read-only dictionary. (gs_fform.ps, gs_lev2.ps)
+
+Finishes implementing ImageType 4 images, and moves closer to implementing
+ImageType 3. (iimage.h, zdps.c, zimage.c, zimage2.c, zimage3.c)
+
+Updates tracing output to use the new dlprintf macros. (idict.c, igc.c,
+igcref.c, igcstr.c, iname.c, interp.c, isave.c, iscan.c, zcie.c, zcontext.c)
+
+Implements multiproc=true for readimage. (gs_dpnxt.ps)
+
+Does a bit more work on implementing shading with PatternType 2.
+(gs_ll3.ps, zfunc.c, zshade.c)
+
+Adds a .bitadd operator for adding integers modulo the word size.
+(zarith.c)
+
+Updates filter operators to use the new stream parameter facility.
+(iparam.h, iparam.c, zfdecode.c, zfdctc.c[deleted], zfdctd.c, zfdcte.c)
+
+Updates the implementation of parameter lists for the change from _dict to
+_collection. (iparam.c, iparam.h)
+
+Takes advantage of the filter stream procedures now available in stream.c.
+(zfilter.c)
+
+Adds get_hardware_params to one device procedure vector. (zupath.c)
+
+Adds .gethardwareparams to parallel .getdeviceparams. (zdevice.c)
+
+Updates the interpreter's parameter list machinery to match the change in
+gsparam.h. (iparam.h, iparam.c)
+
+Makes more writable statics const. (gs_init.ps, btoken.h, dstack.h, iref.h,
+opextern.h, icontext.c, idict.c, igc.c, igcref.c, iinit.c, imainarg.c,
+interp.c, iscanbin.c, iutil.c, zbseq.c, zcie.c, zcontrol.c, zdevcal.c,
+zdevice2.c, zdps.c, zdps1.c, zfont2.c, zgeneric.c, zgstate.c, ziodev.c,
+ziodev2.c, ztype.c)
+
+Removes an inappropriate reference to PROGRAM_NAME. (imainarg.c)
+
+Removes set/currentrenderalgorithm, since they are useless for the purpose
+for which they were intended. (zrop.c)
+
+Uncomments code for CIEBasedDEF[G] color spaces, even though these aren't
+fully implemented yet. (zcie.c)
+
+Reimplements StartJobPassword and SystemParamsPassword as no-access strings
+in systemdict. (gs_lev2.ps, iutil2.h, iutil2.c, ziodev2.c, zusparam.c)
+
+Splits off the context state record from icontext.h, so that places that
+only need access to state variables don't need to import the
+procedures. (icontext.h, icstate.h)
+
+Updates a client for the change in gs_malloc_limit. (imainarg.c)
+
+Updates clients for the change in the accessors for predefined color spaces.
+(zcolor1.c, zimage.c, zimage2.c)
+
+Renames the (few) debugging-related statics as I_SOMETHING. (igc.c)
+
+Splits off idstack.h (API for dictionary stacks) from dstack.h (API for the
+interpreter's dictionary stack), and idstack.c (dictionary stack
+implementation) from idict.c (dictionary implementation). We should have
+done this a long time ago! (dstack.h, idictdef.h, idstack.h, idict.c,
+idstack.c, iinit.c, ireclaim.c)
+
+Folds the cached currentfile pointer into the exec-stack structure.
+(estack.h, interp.c)
+
+Changes clients of gs_register_*_root to eliminate statically allocated
+roots. (iinit.c, iname.c, interp.c, zbseq.c, zcontext.c, zfile.c, zfont.c,
+zfont2.c, zgstate.c, ziodev.c)
+
+Adds a ref_free_stack procedure, and reformats the implementation of stacks.
+(istack.h, interp.c, istack.c)
+
+</pre><h3><a name="V5.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Pattern colors sometimes caused errors. (gs_pdf.ps)
+ - A file ending with %%EOF without an EOL caused an error.
+(pdf_main.ps)
+ - Fl wasn't recognized as an abbreviation for FlateDecode in in-line
+images. (pdf_draw.ps)
+
+Removes all code related to converting PDF to PS: it never worked reliably,
+and we now support this function with the pswrite device instead.
+(gs_pdf.ps =&gt; pdf_ops.ps, pdf*.ps)
+
+</pre><h3><a name="V5.23_Streams"></a>Streams</h3><pre>
+
+Updates tracing output to use the new dlprintf macros. (shc.h, scfd.c,
+scfe.c, shcgen.c)
+
+Provides the ability to read and set stream initial parameters to/from a
+parameter list. This is currently needed only by the PDF/PS writers and the
+filter operator, so it is implemented in modules separate from the stream
+implementation per se, but it might be useful for other clients too.
+(scommon.h, scfparam.c, sdcparam.c, sdct*.c, sdeparam.c, sddparam.c,
+gdevpsfp.c[deleted])
+
+Changes the ASCII85Encode filter so it never produces two %% at the
+beginning of a line, which could mislead document managers or spoolers.
+(sfilter2.c)
+
+Changes the ASCIIHexEncode filter so it always produces lines of exactly 64
+characters, except for the last one. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, because this filter now needs a state structure, which it didn't
+before. (sstring.h, sstring.c)
+
+Moves filter_{read,write}_procs to stream.c, changing the names to
+s_filter_{read,write}_procs. (stream.h, stream.c)
+
+Makes creation of JPEG filters set default values for parameters that are
+outside the IJG library (Picky and Relax). (sdct.h, sjpegd.c, sjpege.c)
+
+</pre><h3><a name="V5.23_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An error in dda_step_add could theoretically produce anomalies in
+images (although we don't think we've ever seen any). (gxdda.h)
+ - A boundary error in dda_state_next/previous/advance could
+theoretically produce anomalies in images by allowing R = 0 (although we
+don't think we've ever seen any). (gxdda.h)
+ - A rounding error in computing the size of portrait images could
+produce a spurious 1-pixel-wide line at the edge of the image. (gxifast.c)
+ - When banding, images with singular or nearly singular CTM or
+ImageMatrix could confuse things badly enough to cause memory access errors.
+(gxclimag.c)
+ - Patterns were broken. (bug introduced in 5.21) (gxclip2.c)
+ - Because some image processing code retained a pointer to the
+clipping path, which was embedded inside the gs_state_contents object,
+garbage collection could cause crashes. (The only case where we know this
+happened was the bounding box device, since we think all other image
+enumerators preconstruct a clipping device, which does not retain a pointer
+to the clipping path, rather than constructing one from the path on the
+fly.) We fixed this by replacing gs_state_contents with individual objects:
+see below.
+ - The *_.h files didn't have double-inclusion protection. (*_.h)
+ - ImageType 2 images were broken by the change in begin_typed_image.
+(gximage2.c)
+ - Color-setting operators that "substitute the nearest legal value"
+didn't substitute it in storage, only when using it. E.g., after
+gs_setgray(pgs, 2.0), gs_currentgray(pgs) returned 2.0 rather than 1.0.
+This bug has been there since release 1.0! (gxcspace.h, gscie.c, gscolor.c,
+gscolor1.c, gscolor2.c, gscdevn.c, gscsepr.c, gscpixel.c, gspcolor.c)
+ - The RasterOp implementation for 2-bit, 4-bit, and non-gray 8-bit
+devices didn't work. (gdevmrop.c)
+ - The test of whether to use copy_mono, fill_mask, or general
+imaging for rendering characters sometimes used copy_mono when not
+appropriate. (gxccache.c)
+ - The default implementation of fill_mask produced solid rectangles,
+rather than properly masked output, if the logical operation didn't use its
+source operand. (gdevdbit.c)
+ - Some more files needed double inclusion protection. (gscie.h)
+ - Checking for interrupts before a return always returned 0 rather
+than the correct return code if there was no interrupt. (gsmisc.c)
+ - Characters within Pattern PaintProcs sometimes didn't get drawn.
+(gxpcmap.c)
+ - The CIE color space and CRD GC structure definitions were in the
+interpreter rather than the library. (gscie.h, gscie.c)
+ - Numeric overflows when setting up the character cache caused
+errors rather than simply disabling caching for that character. (gschar.c)
+ - FORCE_STRIP_HALFTONES was accidentally left set to 1 (in 5.10!),
+slowing down all uses of monobit halftones. (gshtscr.c)
+
+Implements mask clipping, which is needed for ImageType 3 images.
+(gxclip2.h, gxclipm.h, gxmclip.h, gxclip2.c, gxclipm.c, gxmclip.c)
+
+Finishes implementing ImageType 3 and 4 images. (gsimage.h, gsiparam.h,
+gsimage.c, gsiparm3.h, gximage3.c, gximage4.c)
+
+Starts to update the banding code to handle ImageType 3 and 4 images.
+(gxclist.h, gxiparam.h, gxclimag.c, gxclist.c, gxiinit.c)
+
+Make eprintf_program_name, lprintf_file_{and_line,only}, and new
+dlprintf_file_{and_line,only} always be procedures, rather than sometimes
+macros and sometimes procedures. (std.h, gdebug.h, gsmisc.c)
+
+Adds new dlprintf, dlputc, and dlputs macros that are like
+dprintf/dputc/dputs but also print the source file name and line number at
+the beginning of the line if the -Z/ debugging switch is set. The if_debug*
+macros now use dlprintf rather than dprintf; many other places also needed
+changing. Note that if any place was overlooked, no great harm is done:
+printout produced there simply won't include the source file and line number
+even if -Z/ is set. (std.h, gdebug.h, gsmisc.c; gdevbbox.c, gdevdbit.c,
+gdevdgbr.c, gdevmrop.c, gdevrun.c, gdevsvga.c, gdevx.c, gp_unifs.c,
+gsalloc.c, gschar.c, gscoord.c, gsfont.c, gshsb.c, gsht.c, gshtscr.c,
+gsmemory.c, gspath.c, gstype1.c, gstype2.c, gxacpath.c, gxccache.c,
+gxclimag.c, gxclist.c, gxclpath.c, gxclread.c, gxcpath.c, gxfill.c,
+gxidata.c, gxpath.c, gxpcopy.c, gxpflat.c, gxstroke.c)
+
+Simplifies storage management for graphics states by replacing
+gs_state_contents with individual objects. This slows down gsave and
+grestore a bit, but eliminates a class of potential obscure bugs.
+(gxpath.h, gzstate.h, gsstate.c, gxcpath.c, gxpath.c)
+
+Adds some more information to the deubgging printout for paths. (gxpath.c)
+
+Modifies the library test program to test ImageType 3 and 4 images.
+(ugcclib.mak, gslib.c)
+
+Extends the @-file parser to be more shell-like:
+
+ - The sequence \ &lt;newline&gt; is ignored everywhere.
+
+ - If a # appears as the first character on a line outside quotes,
+ the entire line (including the terminating newline) is ignored.
+
+(gsargs.h, gsargs.c)
+
+Changes a stem hint tracing message so that it will print with the correct
+line number. (gxhint2.c)
+
+Moves the 'format' information for images to the image parameter structure.
+This entails a NON-BACKWARD-COMPATIBLE CHANGE in the begin_typed_image
+driver procedure (which was not guaranteed stable). (gsiparam.h,
+gxdevcli.h, gsimage.c, gxiinit.c)
+
+Adds an optional matrix argument to begin_typed_image, overriding the CTM in
+the imager state if present. This is needed to make masks and masked images
+line up precisely; this too is a NON-BACKWARD-COMPATIBLE CHANGE.
+(gxdevcli.h, gdevbbox.c, gdevddrw.c, gdevnfwd.c, gdevx.c, gxclimag.c,
+gxiinit.c, gximage2.c, gximage3.c, gximage4.c)
+
+Adds a procedure for testing monotonicity of Functions over a given range.
+(gsfunc.h, gsfunc0.c, gsfunc3.c)
+
+Implements smooth shading with shfill. All documented ShadingTypes (1-7)
+are implemented. (gscspace.h, gsdsrc.h, gspath.h, gsshade.h, gxshade.h,
+gxshade4.h, gscolor.c, gscolor3.c, gsdsrc.c, gsfunc0.c, gsfunc3.c,
+gspath1.c, gsshade.c, gxshade.c, gxshade1.c, gxshade4.c, gxshade6.c)
+
+Changes the TrueType rasterizer to remove the assumption that the entire
+loca table is stored contiguously. This may not have any practical effect,
+since currently Type 42 fonts never split the loca table across segments.
+(gstype42.c)
+
+Adds a new interface for creating CIE CRDs that provides the parameters as
+separate arguments. (gscrd.h, gscrd.c)
+
+Starts to add the ability for a device to provide one or more default CIE
+CRDs as (read-only) device parameters. (Not ready for use yet.) (gscie.h,
+gscrdp.h, gscie.c, gscrdp.c)
+
+Adds a multiple-bit-per-pixel analogue of gs_makebitmappattern,
+gs_makepixmappattern, for use by another Aladdin project. (lib.mak,
+gsbitmap.h, gsptype1.h, gxbitmap.h, gspcolor.c)
+
+Changes the API of param_begin_write_dict so that the client can request the
+creation of an array rather than a dictionary. This is a
+NON-BACKWARD-COMPATIBLE CHANGE for implementors (of which there are only
+2.5), but not for clients. (gsparam.h, gsparam.c)
+
+Adds dynamically typed data to the parameter list interface, and removes the
+statically typed procedures. This isn't important for any standard facility
+yet. This too is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of
+parameter lists. (gsparam.h, gsparams.h, gsparam.c, gsparams.c)
+
+Adds a new platform-specific API for thread creation and synchronization,
+and a memory manager "wrapper" that monitor-locks each call. No code
+normally included in this fileset uses any of this machinery as yet. (gp.h,
+gpsync.h, gxsync.h, gsmemlok.h, gsmemlok.c, gxsync.c)
+
+Splits off (PatternType 1) Pattern filling into a separate file, since the
+file was getting too big; refactors the filling code to use procedures
+rather than macros. (gxp1fill.h, gspcolor.c, gxp1fill.c)
+
+Makes a few more writable statics const. (gscie.h, gscscie.c, gsdll.c,
+gsmemory.c, gsmisc.c, gstype1.c, gstype2.c, gxclpath.c)
+
+Adds a compile-time option, SYSTEM_CONSTANTS_ARE_WRITABLE, to choose whether
+the system configuration values (buildtime, copyright, product, revision,
+revisiondate, serialnumber) are const or not. By default they are now
+const: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE (affecting only one user).
+(lib.mak, openvms.mak, os2.mak, unix-end.mak, wctail.mak, winlib.mak,
+gscdefs.h, gscdef.c)
+
+Removes the dependence of std.h on PROGRAM_NAME. (std.h, gsdll.c, gsmisc.c,
+gscdef.c)
+
+Adds a new member of the color space type structure, the size of the
+smallest color space structure that will hold a color space of the given
+type. Also removes the obsolete _ds modifier. (gscspace.h, gxcspace.h,
+gscdevn.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscpixel.c,
+gscsepr.c, gspcolor.c, gxiinit.c)
+
+Removes set/currentrenderalgorithm, since they are useless for the purpose
+for which they were intended. (gsrop.h, gsropt.h, gdevmrop.c, gsrop.c)
+
+Splits off gscspace.c from gscolor.c, and gscscie.c from gscie.c. (gscie.c,
+gscolor.c, gscscie.c, gscspace.c)
+
+Adds constructor and accessor procedures for color spaces. (gscie.h,
+gscolor2.h, gscsepr.h, gscspace.h, gsptype1.h, gxcolor2.h, gxcspace.h,
+gscolor.c, gscolor2.c, gscscie.c, gscsepr.c, gscspace.c, gslib.c,
+gspcolor.c)
+
+Changes the CIEBased color space structures slightly to allow implementation
+of the CIEBasedDEF[G] color spaces. (gscie.h, gscie.c)
+
+Changes gs_malloc_limit from a static to a member of the allocator
+structure. This is a NON-BACKWARD-COMPATIBLE CHANGE for clients that
+declared this variable as an extern. (gsmalloc.h, gsmemory.c)
+
+In order to eliminate some statics, changes the static color space accessors
+(gs_color_space_Device*) so they require a const gx_imager_state as
+parameter, and changes their names as well to avoid confusion. This is a
+NON-BACKWARD-COMPATIBLE CHANGE not only in these accessors, but also in
+gs_image_t_init_{gray,color}. This is very unfortunate, but we see no way
+to avoid it. (gscspace.h, gsiparam.h, gxistate.h, gscolor1.c, gscscie.c,
+gscspace.c, gsimage.c, gspcolor.c, gsstate.c, gxclread.c, gxiinit.c,
+gximage2.c, gximage3.c, gximage4.c)
+
+Unifies the handling of const for the IODevice table. (gscdefs.h,
+gxiodev.h, gconf.c, gsiodev.c)
+
+Changes the register_root memory manager call so that a NULL as the pointer
+to the root structure asks the memory manager to allocate the root structure
+itself. This is a NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
+memory manager API (of which there are only 3). (gsmemory.h, gsstruct.h,
+gsalloc.c, gsmemory.c)
+
+Adds a new GC structure type, suffix_add0_local, which is a more efficient
+form of suffix_add0 that can be used when the supertype is defined in the
+same file as the subtype. (gsbitmap.h, gscie.h, gsshade.h, gsstruct.h)
+
+Uses the new package replacement facility in the makefile to make RasterOp
+optional without tinkering with statics at runtime. (lib.mak, gxdevice.h,
+gxdevrop.h, gdevdbit.c, gdevdflt.c, gdevmrop.c, gdevnfwd.c, gsnorop.c,
+gsropc.c)
+
+Makes RasterOp really optional. (gdevmrop.h, gsrop.h, gdevmrop.c, gsrop.c,
+gxiinit.c)
+
+Rewrites bits_fill_rectangle to get rid of nearly all the macros.
+(gxbitops.h, gsbitops.c)
+
+Removes the obsolete _ds from gs_log_error. (gserror.h, gsmisc.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.22"></a>Version 5.22 (limited) (2/19/98)</h2>
+
+<p>
+This fileset has a few more bug fixes, a major overhaul of memory management
+for paths so that we can do view clipping in a reasonable way, and the
+ability to build executables in a different directory from the sources.
+
+<h3><a name="V5.22_Documentation"></a>Documentation</h3><pre>
+
+Designates gv as the preferred VMS and Unix previewer. (new-user.txt,
+use.txt)
+
+Adds a pointer to post-release documentation. (README)
+
+Notes that compilation with certain platforms and compilers must turn off
+optimization. (make.txt)
+
+Improves the documentation of the fit_fill and fit_copy macros.
+(gxdevice.h)
+
+</pre><h3><a name="V5.22_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The ccgs script for non-ANSI compilers was no longer flexible
+enough to handle all the possible command lines. (ccgs)
+ - The pdfwrite device was missing on the DesqView/X platform.
+(dvx-gcc.mak)
+ - The System V build procedure was broken. (unixtail.mak)
+ - A Watcom makefile lacked parentheses around a macro name.
+(wctail.mak)
+ - Some `make' programs drop trailing spaces in macro definitions: we
+didn't work around this. (os2.mak, unixhead.mak, winlib.mak)
+
+Adds support for WCVERSION=11.0 in the Watcom makefiles. (watc.mak,
+wccommon.mak)
+
+Adds a shell script for removing the 'includes' from makefiles, since a very
+few Unix systems don't support this capability. (catmake)
+
+Changes -dNOPROMPT to -dNOPAGEPROMPT, and adds -dNOPROMPT to suppress both
+the end-of-page prompt and the executive prompt. (use.txt, gs_init.ps)
+
+Adds definitions of {GL,PS}{SRC,GEN,OBJ}DIR to the top-level makefiles,
+removing these definitions from gs.mak. (*.mak, gs.mak)
+
+Adds explicit directories to more makefile rules. We can now do builds with
+source, GL/PS generated files, and GL/PS object files in 5 different
+directories! (*.mak, gsjconf.h)
+
+</pre><h3><a name="V5.22_Utilities"></a>Utilities</h3><pre>
+
+Adds a user-contributed utility that runs dvips followed by ps2pdf.
+(dvipdf, unixinst.mak)
+
+</pre><h3><a name="V5.22_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A pointer was incorrectly declared const. (gdevpdfm.c)
+ - pdfwrite handled the Title element of ARTICLE pdfmarks
+incorrectly. (gdevpdfm.c)
+ - pdfwrite inserted a Dest element in Link annotations even if an A
+(Action) key was present. (gdevpdfm.c)
+ - pdfwrite didn't recognize and convert /Article actions in
+pdfmarks. (gdevpdfm.c)
+
+Replaces some open-coded accesses to path structure elements with macros, in
+anticipation of a representation change. (gdevpdfd.c)
+
+Moves pdfwrite further towards supporting Dict and ACSDict Distiller
+parameters. (gdevpsdf.h, gdevpsdp.c, gdevpsfp.c)
+
+Updates a few places for the change in the path API. (gdevpdfd.c,
+gdevvec.c)
+
+Adds recognition of named object references to the PDF writer, fixing many
+bugs in the named object code in the process. (gdevpdfx.h, gdevpdfm.c,
+gdevpdfo.c)
+
+Enhances pswrite to skip fills or strokes of completely empty paths, to
+recognize horizontal and vertical lines, and to abbreviate color settings
+based on 8-bit fractions. This requires a NON-BACKWARD-COMPATIBLE CHANGE in
+the "vector" device interface (which was, however, clearly identified as
+subject to change without notice). (gdevpsdf.h, gdevvec.h, gdevps.c,
+gdevpsdf.c, gdevpx.c, gdevvec.c)
+
+</pre><h3><a name="V5.22_Interpreter"></a>Interpreter</h3><pre>
+
+Updates a few places for the change in the path API. (zupath.c)
+
+Implements %statementedit properly. (iscan.h, iscan.c, ziodev.c)
+
+Changes the initialization code so that if DELAYBIND is set, .forcedef and
+.forceput remain accessible until .bindnow is called. (gs_init.ps)
+
+</pre><h3><a name="V5.22_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - An empty Differences array, which Acrobat Distiller 3.02 can emit,
+caused a rangecheck error. (pdf_font.ps)
+
+</pre><h3><a name="V5.22_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The alternative LZWEncode filter didn't emit a reset code as the
+first code, and waited one code too long to emit a reset. (slzwce.c)
+
+Adds some double-inclusion protection. (scfx.h)
+
+</pre><h3><a name="V5.22_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was an (incorrect) assignment to a read-only structure
+member. (gximage2.c)
+ - A formal parameter list was incorrect if __PROTOTYPES__ wasn't
+defined. (gsroptab.c)
+ - Some images didn't get clipped properly when banding. This was a
+fix for 5.03 that somehow didn't make it into 5.10. (gxclimag.c)
+ - When banding, dashed lines could cause an invalid memory access.
+This was apparently caused by an error in a fix made in 5.04. (gsline.c)
+ - Images with non-zero data_x could cause an invalid memory access.
+(gxiinit.c, gxidata.c)
+ - The band list rasterizer didn't initialize the image structure
+properly, causing control to go to a random address. (gxclread.c)
+
+Replaces some open-coded accesses to path structure elements with macros, in
+anticipation of a representation change. (gxpath.h, gzpath.h, gspath1.c,
+gxfill.c, gxpath2.c, gxstroke.c)
+
+Changes the path and clipping path structures so that segments and clipping
+lists are stored in separate, reference-counted structures. This finally
+supports reliable freeing of path segments and clipping lists even in the
+presence of off-stack gstates, and the ability to store the original
+segments of a clipping path, both of which we have wanted for a long time.
+Unfortunately, it requires SIGNIFICANT NON-BACKWARD-COMPATIBLE CHANGES TO
+THE API FOR PATHS:
+ Paths:
+ - adds gx_path_alloc_contained;
+ - gx_path_init =&gt; gx_path_init_local (or nothing);
+ - gx_path_reset =&gt; gx_path_new;
+ - removes gx_path_share and gx_path_release;
+ - gx_path_assign =&gt; gx_path_assign_{preserve,release};
+ - renames gx_path_expand_dashes =&gt; gx_path_add_dash_expansion,
+ gx_path_flatten[_accurate] =&gt; gx_path_add_flattened[_accurate],
+ gx_path_monotonize =&gt; gx_path_add_monotonized;
+ - removes the init Boolean from gx_path_copy[_reversed].
+ Clipping paths:
+ - gx_cpath_init =&gt; gx_cpath_init_local (or nothing);
+ - removes gx_cpath_share and gx_cpath_release_segments;
+ - gx_cpath_path =&gt; gx_cpath_to_path;
+ - removes the mem argument from gx_cpath_from_rectangle.
+We believe that we either renamed or changed the argument list of every API
+function that was affected in a non-backward-compatible way, so incompatible
+clients will get either compilation or linking errors. (gxpath.h,
+gzcpath.h, gzpath.h, gschar.c, gsdps.c, gsdps1.c, gspaint.c, gspath.c,
+gspath1.c, gsstate.c, gxacpath.c, gxccache.c, gxclpath.c, gxclread.c,
+gxcpath.c, gxfill.c, gxpath.c, gxpath2.c, gxpcmap.c, gxpcopy.c, gxpdash.c,
+gxstroke.c)
+
+Reimplements view clipping bookkeeping to use reference-counted paths.
+(gzstate.h, gsdps.c, gsstate.c)
+
+Adds const in a couple more places. (gxpath2.c)
+
+If -Z? is enabled, makes the reference counting machinery check for
+reference counts going negative. (gsrefct.h)
+
+Adds the first bit of code for rendering smooth shadings. The code is
+nowhere near usable. (gsshade.h, gxshade.h, gsshade.c, gxshade.c)
+
+Adds BEGIN ... END macros for creating compound statements that are
+syntactically equivalent to single statements. (stdpre.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.21"></a>Version 5.21 (limited) (1/19/98)</h2>
+
+<p>
+This is primarily a bug fix fileset for 5.20, with a little new
+functionality (pdfwrite image downsampling and more complete pdfmark
+processing).
+
+<h3><a name="V5.21_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The build procedures still referred to tar_cat. (make.txt)
+
+Documents some user-developed patches for using certain kinds of Japanese
+fonts with Ghostscript. (new-user.txt)
+
+Notes that on Solaris 2.x systems, it is probably not a good idea to use
+Sun's fonts. (use.txt)
+
+Documents -dSTRICT. (use.txt)
+
+</pre><h3><a name="V5.21_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The definitions of MAKEFILE in several makefiles was incorrect.
+(dvx-gcc.mak, unix-cc.mak, unixansi.mak)
+ - The build rules for the gp_*.$(OBJ) files lacked a directory name,
+confusing most 'make' programs. (*.mak)
+ - geninit didn't work, because the syntax of psfile_() entries in
+gconfig.h had changed. (geninit.c)
+ - Some files were created and then deleted during building,
+preventing [gnu]make -j from working. (lib.mak, int.mak)
+
+Adds an explicit directory name to more files in the makefiles. (jpeg.mak,
+lib.mak) Added in this fileset:
+ .$(OBJ): jpeg.mak, {dvx-tail,msvclib,openvms,os2,ugcclib,unixtail,
+ watc,watclib,winint,winlib}.mak
+ .dev: jpeg.mak
+
+Removes the default suppression of 'const' with gcc. You must now compile
+with gcc 2.7.2.1 or newer, or patch the makefile. (ugcclib.mak,
+unix-gcc.mak)
+
+Removes -DPNG_USE_CONST from the command line for compiling libpng, since
+this has never actually worked, and is handled in a different way starting
+with libpng 0.97. (gs.mak)
+
+Adds a -dSTRICT switch that disables some Ghostscript extensions, to be more
+helpful in debugging applications that produce output for Adobe and other
+RIPs. (gs_init.ps, gs_statd.ps)
+
+</pre><h3><a name="V5.21_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Many occurrences of 'const' were missing or incorrect.
+(gdevpdfd.c, gdevpdfi.c, gdevpdfo.c, gdevpdft.c)
+ - pdfmark processing was broken by changes introduced in 5.20.
+(gs_pdfwr.ps)
+ - pdfwrite didn't convert /Color =&gt; /C or /Title =&gt; /T in ANN and
+LNK pdfmarks. (gdevpdfm.c)
+ - pdfwrite didn't convert /Dest =&gt; /D or /File =&gt; /F in the Action
+dictionary of ANN and LNK pdfmarks. (gdevpdfm.c)
+ - pdfwrite didn't convert a /Launch annotation to an Action with a
+dictionary. (gdevpdfm.c)
+ - pdfwrite didn't convert \n in annotation Contents strings to \r.
+(gdevpdfm.c)
+ - jstrm.state was used before being set. (gdevjpeg.c)
+ - The SVGA devices were not identified as page devices.
+(gdevsvga.c)
+ - The SPARCPrinter driver returned the address of a local buffer
+containing an error string. (gdevsppr.c)
+ - pdfwrite no longer compressed character bitmaps. (bug introduced
+in 5.20) (gdevpdfi.c)
+ - pdfwrite didn't recognize _objdef syntax everywhere. (gdevpdfx.h,
+gdevpdfm.c, gdevpdfo.c)
+ - pdfwrite didn't recognize and convert Launch and GoToR OUT
+pdfmarks. (gdevpdfm.c)
+ - pdfwrite used a /Dest key rather than a /P key for the page number
+in articles. (gdevpdfx.h, gdevpdfm.c)
+ - pdfwrite didn't save and write the /I dictionary for articles.
+(gdevpdfx.h, gsstruct.h, gdevpdf.c, gdevpdfm.c)
+
+Implements a parameter list "reader" that prints the parameter values on a
+stream in PS/PDF syntax. (We need something like this for printing filter
+parameters.) (gdevpsdf.h, gdevpdf.c, gdevpsdf.c)
+
+Implements a write stream that just keeps track of the position. We use
+this to determine how much space to allocate for data we're going to save.
+(gdevpsdf.h, gdevpsdf.c)
+
+Implements image downsampling, but not anti-aliasing, for the PDF writer.
+(gdevpsdf.h, gdevpsds.h, gdevpsdi.c, gdevpsds.c)
+
+</pre><h3><a name="V5.21_Fonts"></a>Fonts</h3><pre>
+
+Adds Frutiger to the built-in list of sans-serif fonts. (gs_fonts.ps)
+
+</pre><h3><a name="V5.21_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Many occurrences of 'const' were missing. (gsargs.c, ialloc.c,
+zdpnext.c, zfunc3.c, zshade.c)
+ - Some byte * =&gt; char * casts were missing. (imainarg.c)
+ - The stack limit check in .eqproc was wrong. (zmisc3.c)
+ - The paper sizes a4small and lettersmall weren't implemented.
+(gs_statd.ps)
+ - setuserparams signalled errors on 64-bit systems. (zusparam.c)
+
+Changes .image2 to track the change in the library. (zdps.c)
+
+Some improvements were made to the (still not entirely functional) Type 32
+font code. (zchar32.c)
+
+Updates some filters to use the new procedure for transmitting collections
+of parameters. (zfdecode.c)
+
+Adds ISO paper sizes C0 through C6. (gs_statd.ps)
+
+Trims down the list of #includes in iconf.c. (iconf.c)
+
+</pre><h3><a name="V5.21_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - CalGray color spaces with a Gamma value caused an error.
+(gs_pdf.ps)
+
+</pre><h3><a name="V5.21_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was a 'const' conflict in the code for handling ImageType 2
+images. Fixing this properly required a small change in the ImageType 2
+structure. (gsiparm2.h, gximage2.c)
+ - Many occurrences of 'const' were missing. (gsfunc3.h, gstrap.h,
+gxgetbit.h, gdevdgbr.c, gstrap.c, gxclist.c, gxclread.c)
+ - A couple of enumerations had trailing commas. (gsshade.h,
+gxbitfmt.h)
+ - The gcst parameter was omitted in the non-ANSI version of the
+ENUM_PTRS_BEGIN_PROC macro. (gsstruct.h)
+ - gcc missed a private / non-private discrepancy. (gxpcmap.c)
+ - An uninitialized variable was used by mistake
+(copy_params.options). (gdevdgbr.c)
+ - The last statement of a procedure was unreachable. (gxclpath.c)
+ - If a Type 2 font was transformed so that hints were not being
+used, hintmask and cntrmask didn't compute the number of following bytes
+correctly. (gxtype1.h, gstype2.c, gxtype1.c)
+
+Factors out some common code in gxclip2.c into macros. (gxclip2.c)
+
+Starts to reimplement RasterOp using the compositing framework. (gsropc.h,
+gxropc.h, gsropc.c) ****** IN PROGRESS ******
+
+Adds an equality-testing procedure for device colors. This is used both for
+color images (which previously did this adhoc) and for RasterOp compositing.
+(gxdcolor.h, gximage.h, gxcht.c, gxdcolor.c, gxht.c, gspcolor.c)
+
+Implements hintmask (but not cntrmask) for Type 2 CharString fonts. I don't
+know any reasonable way to test whether it's working, though. (gxtype1.h,
+gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
+
+Adds a more convenient interface for reading and setting sets of parameters.
+(gsparam.h, gsparam.c)
+
+Pulls the decision as to whether to halftone for a given device out into a
+macro. Eventually we will do something more sophisticated about this.
+(gxdevice.h, gxclist.c, gxcmap.c)
+
+Breaks apart a macro in anticipation of future usage. (gsrefct.h)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.20"></a>Version 5.20 (limited) (1/8/98)</h2>
+
+<p>
+This fileset provides enough of the Display PostScript capabilities to start
+running real programs. It also adds the first few LanguageLevel 3 features
+(none of which have been tested) and reorganizes the makefile structure
+somewhat. There are many internal changes since 5.10, some of them still in
+progress, so we expect more problems than usual.
+
+<p>
+This fileset is being provided for testing in two different configurations:
+a full release, and a DPS-only package. The latter will be released with
+the GPL when it is reasonably complete and reliable.
+
+<h3><a name="V5.20_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - TrueType fonts on GS_FONTPATH weren't recognized. (use.txt)
+ - The argument list for gstate was incorrect. (zdevice2.c)
+ - There were a couple of minor errors in the e-stack documentation.
+(estack.h)
+ - fonts.txt had several errors regarding compiled fonts.
+(fonts.txt)
+ - An out-of-date Aladdin address still appeared in documentation.
+(new-user.txt)
+
+Updates make.txt to reflect the changes in makefile structure. (make.txt)
+
+Notes the addition of -Z' and -Z". (use.txt)
+
+Documents the new begin_typed_image, get_bits_rectangle,
+map_color_rgb_alpha, and create_compositor driver procedures. (drivers.txt)
+
+Moves documentation for all releases before 5.0 to history4.txt. (NEWS,
+history4.txt)
+
+Documents the addition of SHARE_JPEGLIB. (make.txt)
+
+Removes the author's name and e-mail address from the ps2ascii man page, at
+his request. (ps2ascii.1)
+
+Documents the addition of (some) image compression facilities to ps2pdf /
+pdfwrite. (ps2pdf.txt)
+
+Documents the new -dNOINTERPOLATE and -F&lt;n&gt; switches. (use.txt)
+
+Adds documentation for a user-contributed port to the SMS/QDOS operating
+system. (new-user.txt)
+
+Removes documentation for BGI, which is no longer supported. (use.txt)
+
+Documents the use of the Registry and the GS_DLL environment variable on
+Windows platforms. (install.txt)
+
+</pre><h3><a name="V5.20_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The OpenVMS makefile referred to EXTEND_NAME rather than
+EXTEND_NAMES. (openvms.mak)
+ - A typo caused a spurious error message from lpr. (unix-lpr.sh)
+ - The PDF writer didn't include a needed dependency on zlib
+compression. (devs.mak)
+ - The rule for the OS/2 printer device was wrong. (devs.mak)
+ - The -migrate switch was incorrectly removed from the command line
+for pre-4.0 Digital Unix. (make.txt)
+ - The -r switch was ignored with -dNODISPLAY. (gs_init.ps)
+
+Adds targets for Type 32 fonts (type32.dev) and PostScript LanguageLevel 3
+(psl3.dev, psl3core.dev, psl3read.dev). (gs.mak, int.mak, lib.mak)
+
+Changes the documented feature names for PostScript Level 1 and 2
+interpreters from level1/2 to psl1/2. The old names are still recognized
+for backward compatibility. (gs.mak, int.mak, *.mak)
+
+Removes support for building with DCL under VMS. Building under VMS now
+requires some version of make, preferably GNU make. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, but there was plenty of lead time for users
+(it was announced in 5.01, 6/22/97). (vms*.mak[deleted])
+
+Starts to add an explicit directory name to every file in the makefiles, to
+allow building multiple object versions (e.g., debug, profile, product) or
+cross-building for multiple platforms in separate directories without any
+makefile editing. (*.mak) Done so far:
+(done) _h= devs.mak gs.mak int.mak jpeg.mak lib.mak
+(done) .h devs.mak gs.mak int.mak lib.mak zlib.mak
+ openvms.mak os2.mak ugcclib.mak unix-end.mak
+ unixtail.mak wctail.mak winint.mak winlib.mak
+ .$(OBJ): devs.mak int.mak (except ccfonts)
+ lib.mak (except special compilations)
+ libpng.mak zlib.mak
+ .dev: libpng.mak zlib.mak
+
+Gets rid of tar_cat. Building on Unix platforms now requires that make
+recognize the include directive. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE:
+rather than editing the *head.mak files, users should now edit the unix*.mak
+or dvx*.mak files (which they previously were instructed NOT to do). Aside
+from this, we think the change won't actually affect anyone, since most Unix
+make programs (include GNU make) do recognize this directive. (*.mak,
+ansihead.mak[deleted], cc-head.mak[deleted], gcc-head.mak[deleted],
+dgc-head.mak[deleted], tar_*cat[deleted], dvx-gcc.mak, unixansi.mak,
+unix-cc.mak, unix-gcc.mak)
+
+Includes the basic context machinery in every PostScript interpreter
+configuration. (int.mak)
+
+Removes the division between 'low-level' and 'high-level' band list
+facilities: we once thought we might make the latter optional, but this no
+longer seems useful. (lib.mak)
+
+Introduces a new category of devices, identified to genconf as -dev2 and
+created with SETDEV2 and SETPDEV2. For the moment, these are the same as
+existing devices except that their static instance is const, but we plan to
+make them quite different in the future: don't attempt to create any.
+(devs.mak, gs.mak, genconf.c, gconf.c)
+
+Removes the obsolete -includef resource from genconf. (genconf.c)
+
+Removes support for IJG JPEG library v5* from the makefile, since we no
+longer support these library versions. (jpeg.mak, lib.mak,
+gsjerror.h[deleted], gsjpglib.h[deleted], gsjerror.c[deleted])
+
+Makes the JPEG library use floating point if it is fast. (gsjmorec.h)
+
+Adds a SHARE_JPEG option to the makefiles, with the necessary warning about
+possible incompatibilities. (*.mak)
+
+Replaces the CCC macro in the makefiles with CC_, the various CC* macros
+with CC_* (except for CCA2K and CCAUX), and the O macro with O_; removes the
+'begin' target and the CCBEGIN macro. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, required for the new arrangement of files into directories. (*.mak)
+
+Replaces all occurrences of -Idir1 -Idir2 ... -Idirn in platform-generic
+makefiles with $(I_)dir1 $(II)dir2 ... $(_I)dirn, and defines these macros
+in platform-specific makefiles, in order to accommodate OpenVMS command
+syntax. (*.mak)
+
+Adds -fno-common to the default gcc compilation and linking switches, to
+improve checking for doubly-defined externs. (unix-gcc.mak)
+
+Adds a -dNOINTERPOLATE switch to turn off image interpolation. (gs_init.ps)
+
+Adds a -F&lt;file&gt; switch that runs files through the run_string interface with
+an 1-byte buffer. (imainarg.c)
+
+Allows specifying the name of the gconfig.h file with -DGCONFIG_H= in the
+compilation command line, to support certain multi-configuration build
+procedures. (int.mak, lib.mak, gconf.h, gconf.c, gscdef.c, iconf.c)
+
+Splits off the installation targets from unix-end.mak. (unix-end.mak,
+unixinst.mak, unix*.mak, ugcclib.mak)
+
+</pre><h3><a name="V5.20_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - A case label was misplaced. (No effect on normal operation.)
+(genconf.c)
+ - ps2ascii had some Encoding-related problems, and a serious bug
+causing the stack to grow indefinitely. (ps2ascii.ps)
+
+Adds a new font2pcl.ps utility, for converting outline fonts to bitmapped
+PCL fonts. (font2pcl.ps)
+
+At the request of a user, modifies ansi2knr to read stdin if no input file
+is supplied, and to accept an optional --filename switch to set the file
+name in the #line directive. Also makes ansi2knr write the usage message on
+stderr rather than stdout. (ansi2knr.c)
+
+Adds a user-contributed Perl script that fixes compatibility problems
+between MS Word output and Ghostview 1.5. (fixmswrd.pl)
+
+Adds a new test file that produces some pretty color output. (vasarely.ps,
+unix-end.mak)
+
+Adds a user-contributed utility for producing AFM files from PFA/PFB and
+optionally PFM files. (pf2afm.bat, pf2afm.ps)
+
+</pre><h3><a name="V5.20_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some 'static' declarations were missing (gcc lossage). (gdevht.c,
+gdevmgr.c, gdevpcfb.c, gdevrrgb.c)
+ - Some 'char *' should have been 'unsigned char *'. (gdevccr.c)
+ - The PDF writer represented non-rectangular clipping paths in a way
+that could cause Acrobat to produce incorrect output. (The fix relies on
+the new clipping path enumeration facility.) (gdevpdfd.c)
+ - get_params for the X device didn't read the WINDOWID and
+.IsPageDevice parameters. (gdevx.c)
+ - A superseded driver was still in the distribution.
+(gdevnp6.c[deleted])
+ - The PDF writer's default parameters didn't quite match the default
+parameters of Adobe Acrobat(TM). (gdevpsdf.h)
+ - A cast from const byte * to const char * was omitted.
+(gdevpdft.c)
+ - x_map_color_rgb returned incorrect values for values in the dither
+cube/ramp. (gdevx.c)
+
+Adds user-contributed drivers for:
+ - the Brother HL 720/730 laser printer (gdevhl7x.c);
+ - the Cirrus Logic CL-GD54xx SuperVGA chipset (in gdevsvga.c).
+
+Adds stubs or dummy implementations for the new Acrobat Distiller 3.0
+pdfmark features (BP/EP/SP, _objdef/OBJ, PUT/PUTINTERVAL/CLOSE). Features
+not yet implemented:
+ - Predefining Catalog and DocInfo.
+ - Writing out added Catalog and Info keys.
+ - Special handling for Page#, Prev/This/NextPage.
+ - Writing out added keys in Page objects.
+ - Defining objects for ANN, DEST, LNK, PS.
+ - Writing out added keys for ANN, BP, DEST, LNK, PS.
+ - Adding information to streams (PUT, CLOSE).
+ - Writing out streams.
+(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdfo.c)
+
+Removes the DoThumbnails distiller parameter, which Acrobat Distiller 3.0 no
+longer supports. (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data, as in the interpreter (see below); specifically, makes
+all device and xfont procedure structures const in devices that Aladdin
+maintains. Note that this involves a NON-BACKWARD-COMPATIBLE CHANGE in the
+get_xfont_procs device procedure (to add const to the return type); this
+only affects the 3 implementations of xfonts. (gdevprn.h, gdevdjet.c,
+gdevm1.c, gdevpccm.c, gdevpdf.c, gdevpdfm.c, gdevpdft.c, gdevps.c,
+gdevpsdf.c, gdevpx.c; gxdevice.h, gxxfont.h, gdevbgi.c, gdevbit.c,
+gdevbmp.c, gdevdflt.c, gdevdjet.c, gdevlj56.c, gdevmiff.c, gdevmsxf.c,
+gdevnfwd.c, gdevpbm.c, gdevpcfb.c, gdevpdf.c, gdevpng.c, gdevprn.c,
+gdevps.c, gdevpx.c, gdevs3ga.c, gdevsvga.c, gdevtfax.c, gdevtfnx.c,
+gdevvglb.c, gdevwddb.c, gdevwdib.c, gdevwpr2.c, gdevwprn.c, gdevx.c,
+gdevxalt.c, gdevxxf.c, gxccman.c)
+
+Makes the statically allocated device templates const in some devices, using
+the new -dev2 device resource type. NOTE: the meaning of -dev2 is subject
+to change without notice in future releases. (gdevdjet.c, gdevpdf.c,
+gdevps.c, gdevpx.c, gdevvglb.c)
+
+Adds a new begin_typed_image driver procedure which is called for all types
+of images, not just ImageType 1. The default implementation calls
+begin_image if the ImageType is 1. (gdevmem.h, gdevprn.h, gsiparam.h,
+gxdevice.h, gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c,
+gxacpath.c, gxclimag.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c)
+
+Adds a new get_bits_rectangle driver procedure which allows reading back an
+arbitrary rectangle of bits from the device, not just a single full scan
+line. The default implementation calls get_bits, being careful to avoid a
+recursion loop; the default implementation of get_bits calls
+get_bits_rectangle similarly. This procedure has a lot of flexibility,
+almost all of which is ultimately provided by the implementation in memory
+devices. (gdevmem.h, gsbitops.h, gxcindex.h, gxdevice.h, gdevbbox.c,
+gdevdflt.c, gdevdgbr.c, gdevht.c, gdevm*.c, gdevmem.c, gdevmpla.c,
+gdevnfwd.c, gxbitfmt.h, gxclip2.c, gxclist.c, gxclread.c, gxcpath.c,
+gxgetbit.h)
+
+Removes support for the BGI (Borland Graphics Interface) device, since we no
+longer support the Borland compilers for MS-DOS. (devs.mak, dvx-head.mak,
+openvms.mak, unixhead.mak, gdevbgi.c[deleted])
+
+Speeds up x_map_color_rgb by avoiding server access in most cases.
+(gdevx.h, gdevx.c, gdevxini.c)
+
+Implements get_bits_rectangle in the X driver in place of get_bits.
+(gdevx.c, gdevxalt.c)
+
+Implements begin_typed_image for ImageType 2 images in the X driver, as an
+example of how a driver can implement this function itself. (gdevx.c)
+
+Adds a call on the DCTEncode set_defaults procedure, which is now required
+(see under Streams below). (gdevjpeg.c)
+
+Implements a substantial part of the Distiller image compression machinery.
+See ps2pdf.txt for details. (gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c,
+gdevps.c, gdevpsdf.c, gdevpsdi.c, gdevpsdp.c, gdevpsds.c)
+
+Adds a map_color_rgb_alpha driver procedure, complementing
+map_rgb_alpha_color. (gdevmem.h, gdevprn.h, gxdevice.h,
+gdevbbox.c, gdevdflt.c, gdevht.c, gdevmrop.c, gdevnfwd.c, gdevprn.c,
+gxclip2.c, gxclist.c, gxcmap.c, gxcpath.c)
+
+Splits off gxdevcli.h (client definitions) from gxdevice.h, which had gotten
+very large. This doesn't do much good yet in terms of reducing dependencies
+and compilation time, because every client still includes gxdevice.h, but
+it's the raw material for doing so in the future. (gxdevcli.h, gxdevice.h)
+
+Adds alpha tracking to the command list. (gxclpath.h, gxclimag.c,
+gxclpath.c, gxclread.c)
+
+Changes the 'show' pseudo-parameter for the PDF writer so that it takes
+multiple additional parameters instead of a dictionary. This greatly
+reduces garbage collection overhead. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c,
+gdevpdft.c)
+
+Adds a create_compositor driver call for handling compositing. (gdevbbox.h,
+gdevmem.h, gdevprn.h, gsdevice.h, gxdevcli.h, gxdevice.h, gdevbbox.c,
+gdevdflt.c, gdevht.c, gdevnfwd.c, gsdevice.c, gxclimag.c, gxclip2.c,
+gxclist.c, gxcpath.c, gxpcmap.c)
+
+Updates drivers to account for the more careful handling of file name
+length. (gdevpdfx.h, gdevwprn.c)
+
+Adds a user-contributed enhancement to make the Epson dot matrix driver work
+at 180x60dpi and 240x180dpi for 24 pin printers. (gdevepsn.c)
+
+</pre><h3><a name="V5.20_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows platform didn't put stdin into binary mode.
+(dwmainc.cpp)
+
+Removes all remaining uses of gs_malloc and gs_free in platform-specific
+code. (gp_dosfb.c, gp_vms.c)
+
+Adds a platform-specific gp_getenv call, to allow the Windows implementation
+to consult the Registry. (gp.h, gpgetenv.h, gp_getnv.c, gp_wgetv.c, *.mak,
+gp_win32.c)
+
+Separates out the declaration of popen and pclose, which may be declared
+correctly in stdio.h, incorrectly in stdio.h, or not at all, depending on
+the platform. (lib.mak, unixtail.mak, pipe_.h, gdevpipe.c, gp_os2.c,
+gp_os9.c, gp_unix.c)
+
+Tweaks the platform-workaround header file conditionals a little more.
+(malloc_.h, memory_.h).
+
+Makes the Windows DLL check the GS_DLL environment/registry variable for the
+location of the DLL. (dwdll.cpp)
+
+Defines the maximum length for the file name returned by
+gp_open_scratch_file, and possibly by gp_open_printer. (gp.h, gp_*.c)
+
+</pre><h3><a name="V5.20_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - A 'flush' was missing from a debugging message. (gs_fonts.ps)
+ - Type 2 fonts didn't always have a PaintType entry. (gs_cff.ps)
+ - CIDFontType 0 fonts were broken, probably because of a recently
+added validity test in the C code. (gs_cidfn.ps)
+ - Font types without an Encoding caused an error (in .completefont).
+(gs_fonts.ps)
+ - composefont required the elements of the font array to be actual
+fonts, rather than allowing font names. (gs_cidfn.ps)
+ - composefont required that all elements of the font array have
+CIDSystemInfo dictionaries. (Adobe has said that their interpreters don't
+check for this in some cases, but it's a bug. Unfortunately, by now it's an
+established one.) (zfcmap.c)
+
+Adds .dir to the list of file suffixes known not to be fonts. (gs_fonts.ps)
+
+</pre><h3><a name="V5.20_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A Type 2 font that provided fewer CharStrings than charset
+elements caused an error. (gs_cff.ps)
+ - If a context was joined before it terminated, its stack was never
+copied to the joining context. (zcontext.c)
+ - Freeing a context didn't free most of its substructures.
+(icontext.h, istack.h, icontext.c, interp.c, istack.c, zcontext.c)
+ - save and restore didn't save and restore the user parameters.
+(gs_lev2.ps, zvmem2.c)
+ - %stdin and %stdout weren't defined per-context. (files.h,
+icontext.h, icontext.c, ziodev.c)
+ - Switching contexts didn't clean up the stacks. (The current way
+we do this is very inefficient: we should use a special null for filling the
+untouched area, so we can use it to detect the high water mark.)
+(icontext.c)
+ - A cast from const to non-const was missing. (zdpnext.c)
+ - User parameters weren't managed per-context. (The current way we
+do this is inefficient.) (gs_dps.ps, gs_init.ps, gs_lev2.ps, isave.h,
+icontext.c, iinit.c, isave.c, zcontext.c, zusparam.c)
+ - Some operand checks weren't wrapped in do { ... } while(0),
+possibly leading to incorrect parsing of 'if's. (opcheck.h)
+ - If a context terminated with unmatched saves, the restores weren't
+executed. (isave.h, isave.c, zcontext.c)
+ - If two or more contexts shared the same global VM, the outermost
+restore (which in this case saves only local VM) checked for invalidrestore
+incorrectly. (isave.c)
+ - resourceforall didn't remove its own temporary values from the
+operand stack when calling the procedure. (gs_res.ps)
+ - resourceforall returned local instances even when currentglobal
+was true. (gs_res.ps)
+ - If a context had unmatched saves, other contexts sharing the same
+local VM weren't blocked from running. (zcontext.c)
+ - The NeXT compositing operations (Copy, etc.) weren't defined in
+systemdict. (gs_dpnxt.ps)
+ - In the case of a stack overflow, some garbage could get left on
+the stack. (istack.c)
+ - Stack overflow was reported prematurely -- typically when the
+stack depth had reached half the specified limit. (istack.c)
+ - Freed ref arrays weren't filled with nulls, which could confuse
+the garbage collector later. (ialloc.c)
+ - Certain stack overflow conditions could put a stack into an
+anomalous state that confused the garbage collector. (istack.c)
+ - The maximum stack size could not be set to a value smaller than
+the current allocated space, but the minimum value should be the number of
+entries actually in use. (istack.c)
+ - If .buildfont* had to add any elements to the font dictionary, a
+temporary pointer to the Encoding, FDepVector, or sfnts could become
+invalid, causing crashes or confusion. (zfont0.c, zfont2.c, zfont42.c)
+
+Changes exit, stop, and .stop so that if there is no matching dynamically
+enclosing context (loop or stopped), the effect is a quit, like the Adobe
+interpreters, and not an invalidexit. (zcontrol.c)
+
+Adds support for ImageTypes other than 1. (gs_init.ps, gs_lev2.ps,
+gs_res.ps, zimage2.c)
+
+Adds support for LanguageLevel 3 features:
+ - Idiom recognition in 'bind'. (gs_init.ps, gs_dps.ps, gs_lev2.ps,
+gs_ll3.ps, zmisc3.c)
+ - HalftoneTypes 6, 10, and 16. (gs_ll3.ps)
+ - FunctionType resource category. (gs_ll3.ps)
+ - FunctionType 2 and 3 Functions. (zfunc3.c)
+ - PatternType 2 and smooth shading (structures and API only, no
+algorithms). (gs_init.ps, gs_ll3.ps, gs_res.ps, zshade.c)
+ - In-RIP trapping (structures and API only, no algorithms).
+(gs_ll3.ps, ztrap.c)
+ - ImageType 3 and 4 (masked images) (structures and parsing only, no
+algorithms). (gs_ll3.ps, gs_res.ps, iimage2.h, zimage.c, zimage2.c,
+zimage3.c)
+ - DevicePixel color space. (gs_lev2.ps, zcolor2.c, zcspixel.c)
+ - DeviceN color space. (gs_lev2.ps, igstate.h, zcsdevn.c)
+
+Adds support for Type 32 fonts. (gs_cidfn.ps, gs_init.ps, gs_typ32.ps,
+zchar32.c, zfont32.c)
+
+Adds debugging printout to the CFF loader. (gs_cff.ps)
+
+Removes support for _ds pointers referencing the stacks, since we no longer
+support 16-bit implementations. (iref.h, istack.h, interp.c, ireclaim.c,
+istack.c)
+
+Removes all #ifdef DPNEXT conditionalization. (We had intended to use this
+to delimit blocks of code to be released with the GPL, but we're now
+planning to release a much larger number of files.) (igstate.h, interp.h,
+istruct.h, interp.c, zgstate.c)
+
+Allows user parameters to be implemented partly in PostScript code, since
+this is required for some LanguageLevel 3 features (currently only
+IdiomRecognition). (gs_lev2.ps)
+
+Removes most of the references to a global process scheduler. Completing
+this will require passing an interpreter state structure to all operators in
+place of the operand stack pointer, which we aren't prepared to contemplate
+yet. (zcontext.c)
+
+Adds tracing for context operations, -Z' and -Z". (zcontext.c)
+
+Changes def so that it doesn't have a special exception for storing
+references to local objects into systemdict or its subsidiary dictionaries
+during initialization: such stores now must use .forceput (or .forcedef,
+defined in gs_init.ps using .forceput); changes .forceput to allow storing a
+local reference into any global dictionary, not only systemdict, if the save
+level is 0. (gs_dps1.ps, gs_init.ps, gs_lev2.ps, gs_pdfwr.ps, gs_res.ps,
+gs_statd.ps, zdict.c)
+
+Moves all of the initialization of internaldict to PostScript code.
+(gs_init.ps, iinit.c, zcontrol.c)
+
+Moves the JobName user parameter from C to PostScript code. (gs_lev2.ps,
+zusparam.c)
+
+Adds to every dictionary a pointer to the allocator that created it. This
+allows us to create and grow dictionaries without having to reference any
+global variables. (idict.h, idict.c, iinit.c)
+
+Implements the localfork operator, which creates contexts with private local
+VM. (gs_dps.ps, gs_init.ps, dstack.h, gsalloc.h, ialloc.c, icontext.c,
+iinit.c, interp.c, zcontext.c)
+
+Systematizes reliable access to variables in systemdict and userdict.
+(gs_dps1.ps, gs_dps2.ps, gs_fonts.ps, gs_init.ps, gs_lev2.ps, gs_statd.ps,
+gs_type1.ps)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data. (Writable globals containing procedures,
+run-time-settable switches, pointers to static data, or non-pointer values
+that are initialized once and idempotently are OK.) (iconf.c, iinit.c,
+imain.c, imainarg.c, interp.c, zfont1.c, zht2.c, ziodev.c, ztype.c,
+zupath.c, zusparam.c)
+
+Adds support for ImageType 2 (device source) images. (gs_dps.ps, zdps.c)
+
+Adds begin_typed_image to internal device procedure vectors. (zupath.c)
+
+Increases the maximum stack sizes to match the Adobe implementation more
+closely. (gs_init.ps)
+
+Adds a file_is_invalid macro to work around a bug in the Borland 5.0
+compiler. (files.h, ziodev.c, zvmem.c)
+
+Changes the character cache to be allocated in the C heap rather than global
+VM. This is required because cache chunks are now allocated from the same
+allocator as the cache. (zfont.c)
+
+Implements sizeimage and readimage, including a new .getbitsrect operator.
+(gs_dpnxt.ps, gs_init.ps, zdevice.c, zdpnext.c)
+
+Resets the maximum stack sizes earlier in initialization. (gs_init.ps)
+
+Tweaks the default CRD slightly (syntactically, not the content).
+(gs_lev2.ps)
+
+Adds support for PatternTypes other than 1. (gs_init.ps, gs_lev2.ps,
+gs_res.ps, zpcolor.c)
+
+Adds a pointer to the C heap allocator to the gs_main_instance structure,
+working towards the goal of removing all references to gs_memory_default.
+(iminst.h)
+
+Removes all remaining uses of gs_malloc and gs_free from the interpreter.
+(igc.h, igc.c, imain.c, zfdctd.c, zfdcte.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default in the
+interpreter. (zfdctd.c, zfdcte.c, zvmem.c)
+
+Adds a map_color_rgb_alpha driver procedure, complementing
+map_rgb_alpha_color. (zupath.c)
+
+Removes the obsolete writeppmfile operator. (zwppm.c[deleted])
+
+Updates the implementation of the image operators to match the change from
+HasAlpha to Alpha in the image definition structure. (iimage.h, zcolor1.c,
+zimage.c)
+
+Reimplements upath in C code, since UnpaintedPath requires it. (zupath.c)
+
+Updates interpreter code for the change in the GC interface. (imemory.h,
+istruct.h, icontext.c, igc.c, igcref.c, igcstr.c, ilocate.c, iname.c,
+isave.c, iscan.c, istack.c, zfproc.c)
+
+Implements the compositing operators. (zdpnext.c, zdps.c, zupath.c)
+
+Changes some matrix operators to pass unpacked matrices on the stack.
+(zmatrix.c)
+
+Moves the alpha-related operators to where they belong. (zcolor.c,
+zdpnext.c)
+
+Changes all calls on getenv to gp_getenv. (imainarg.c, zmisc.c)
+
+</pre><h3><a name="V5.20_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PostScript pass-throughs caused an error. They are now always
+executed; probably we should offer the option of not executing them, for
+closer compatibility with Acrobat. (pdf_draw.ps, pdf_main.ps)
+ - Font resources, unlike all other types of resources, couldn't be
+inherited from an ancestor Page(s) object. (pdf_font.ps)
+ - Resources appearing only in Form or Pattern dictionaries weren't
+recognized as being present. (pdf_base.ps, pdf_draw.ps, pdf_main.ps)
+
+Moves closer to supporting Type 0 (and CID) fonts. (pdf_font.ps)
+
+</pre><h3><a name="V5.20_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If the image was very narrow or very shallow, the interpolated
+image scaling stream could make an invalid memory reference. (siscale.c)
+
+Removes the last few references to gs_malloc and gs_free from stream code.
+Clients now *must* call the set_defaults procedure for the DCT filters
+before initializing them: THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
+(sdct.h, sdctd.c, sdcte.c, sjpegc.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default.
+(sdctd.c, sdcte.c, szlibd.c, szlibe.c)
+
+</pre><h3><a name="V5.20_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some files that included shc.h didn't include scommon.h. (shc.h)
+ - A file didn't include std.h before &lt;stdio.h&gt;. (gslib.c)
+ - There was an unnecessary extern (cleanup only). (gscsepr.c)
+ - The uid.xvalues member of gs_client_pattern structures wasn't
+traced by the GC. (gspcolor.h)
+ - If an Interpolated image reached the end of the input at exactly
+the wrong time, an assertion could fail. (gxiscale.c)
+ - With non-ANSI compilers, an integer constant passed to the fmod
+library function, which requires a floating point argument, could cause a
+floating point exception or an incorrect result. (gsmisc.c)
+ - An error in computing the bounding box sometimes caused strokes to
+print incorrectly (for example, some graduated fills printed incorrectly).
+(gxstroke.c)
+
+Implements an undocumented (!) feature of Type 2 CharStrings, namely that if
+the endchar operator is invoked with 4 or 5 operands on the stack, it is
+equivalent to the Type 1 seac operator (without the asb operand). This
+required changing the implementation of seac so that it does the base
+character first, rather than the accent. (gxtype1.h, gstype1.c, gstype2.c,
+gxtype1.c)
+
+Adds support for ImageTypes other than 1. (gsiparam.h, gximage.h,
+gxiparam.h, gdevddrw.c, gsimage.c, gximage.c, gximage0.c)
+
+Adds support for ImageType 2 (device source) images. Currently we only
+handle the simplest case (source is not transformed). (gsimage.h,
+gsiparm2.h, gsimage.c, gximage2.c)
+
+Adds support for LanguageLevel 3 features:
+ - FunctionType 2 and 3 Functions. (gsfunc3.h, gsfunc3.c)
+ - PatternType 2 and smooth shading (structures and API only, no
+algorithms). (gscolor3.h, gsptype2.h, gsshade.h, gxistate.h, gscolor3.c,
+gsshade.c)
+ - In-RIP trapping (structures and API only, no algorithms).
+(gstrap.h, gstrap.c)
+ - ImageType 3 (masked images) (structures and API only, no
+algorithms). (gsiparm3.h, gximage3.c)
+ - ImageType 4 (chroma-keyed masked images). (gsiparm4.h,
+gximage4.c)
+ - DevicePixel color space. (gscpixel.h, gscspace.h, gscpixel.c,
+gximono.c)
+ - DeviceN color space. (gscspace.h, gscdevn.c)
+
+Removes the #ifdef FUTURE around the code for passing multi-plane and
+interpolated images through the band list (version 5.01) and for banded
+filling and stroking with colored halftones (version 4.71). This code is
+now part of the standard release. (gxcldev.h, gxclpath.h, gxdht.h,
+gxhttype.h, gsht.c, gxclimag.c, gxclread.c, gximage.c)
+
+Adds a _ptrs6 structure definition macro. (gsstruct.h)
+
+Removes #ifdef DPNEXT conditionalization, as in the interpreter (see above).
+(gzstate.h, gsdps.c, gsstate.c, gximage.c, gximage5.c)
+
+Starts to eliminate or segregate writable globals that point to
+heap-allocated data, as in the interpreter (see above). (gsbittab.h,
+gscdefs.h, gsdcolor.h, gxclist.h, gxsample.h, gzht.h, gconf.c, gsbitops.c,
+gsbittab.c, gscdef.c, gsdparam.c, gsflip.c, gsinit.c, gsmatrix.c,
+gspcolor.c, gsstate.c, gxcht.c, gxclist.c, gxcmap.c, gxdcolor.c, gxdither.c,
+gxht.c, gximage.c)
+
+Removes the division between 'low-level' and 'high-level' band list
+facilities. (gxcldev.h, gxclimag.c, gxclist.c, gxclpath.c)
+
+Renames gximage*.c as gxi*.c, since these files apply only to ImageType 1
+images and the use of numerical suffixes was confusing. (gximage.c =&gt;
+gxiinit.c, gximage0.c =&gt; gxidata.c, gximage1.c =&gt; gxifast.c,
+gximage2.c =&gt; gximono.c, gximage3.c =&gt; gxicolor.c, gximage4.c =&gt;
+gxi12bit.c, gximage5.c =&gt; gxiscale.c)
+
+Provides the ability to enumerate a clipping path (based on the clipping
+list) using an enumerator, in the same way as an ordinary path. (gxpath.h,
+gzcpath.h, gzpath.h, gxcpath.c, gxpath2.c)
+
+Speeds up mem_mapped4_copy_mono substantially. (gdevm4.c)
+
+Removes all remaining uses of gs_malloc and gs_free in the library, other
+than in drivers. This turned out to require changing a couple of
+initialization APIs. (gsfont.h, gslib.h, gxdevice.h, gxfcache.h, gsfont.c,
+gxccman.c)
+
+Reduces the writable statics related to the default (C heap) allocator to a
+single pointer. (gsmalloc.h, gsmemory.h, gsinit.c, gsmemory.c)
+
+Adds support for PatternTypes other than 1. (gscolor2.h, gspcolor.h,
+gsptype1.h, gxcolor2.h, gspcolor.c)
+
+Adds an explicit #include for all remaining uses of gs_memory_default that
+aren't covered by gxdevice.h. (gxclmem.c)
+
+Splits off the default implementations of the bit-copying device procedures,
+because the file was getting too large. (gdevdbit.c, gdevdflt.c)
+
+Adds a procedure for calculating the difference of two rectangles, needed
+for Type 2 images. (gsrect.h, gxpath.h, gsutil.c)
+
+Extends the image machinery to allow alpha values to either precede or
+follow color values in image data, replacing HasAlpha with Alpha in the
+ImageType 1 image structure. (gsiparam.h, gximage.h, gsimage.c, gxclimag.c,
+gxclread.c, gxicolor.c, gxiinit.c, gxiscale.c)
+
+Extends the path enumeration API to decouple path copying from coordinate
+transformation. (gspath.h, gzpath.h, gspath1.c, gxpath2.c)
+
+Changes the garbage collector interface so that all procedures are passed
+through a structure rather than being referenced as externs. This allows
+programs other than the GC itself to enumerate and relocate pointers, and
+also removes all static dependencies on the GC from the library. This
+involves a NON-BACKWARD-COMPATIBLE CHANGE to the argument list of enum_ptrs
+procedures, and to the implementation of both enum_ptrs and reloc_ptrs. (We
+hope that the new macros we've introduced will avoid non-backward-compatible
+changes in the future.) (gsstruct.h, gdevmem.c, gsalloc.c, gscdevn.c,
+gscolor.c, gscolor2.c, gscsepr.c, gsdevice.c, gsfont.c, gshtscr.c,
+gsimage.c, gsmemory.c, gspcolor.c, gsstate.c, gxcmap.c, gxcpath.c, gxht.c,
+gxiinit.c)
+
+Moves the image compositing code into the library from its inappropriate
+home in the interpreter. (gsdpnext.h)
+
+Splits up gsbitops.h into client interface and implementation support.
+Removes some obsolete code at the same time. (gdevmem.h, gsbitops.h,
+gxbitops.h, gsbitops.c)
+
+Creates the concept of compositing functions and compositing devices
+(compositors). (gscompt.h, gxcomp.h)
+
+Implements the default compositor for alpha-based compositing. (gsalphac.h,
+gsalphac.c)
+
+Creates a store_alpha device that adds alpha channel storage to any other
+device. (gdevalph.c)
+
+Moves alpha channel capability into the dpsnext feature, where it should
+have been all along. (gsalpha.h, gscolor.h, gsalpha.c, gscolor.c,
+gsstate.c)
+
+Implements color premultiplying by (non-unity) alpha values. Currently we
+always premultiply towards white: see gxalpha.h for some comments.
+(gxalpha.h, gxcmap.c)
+
+Reduces the amount of boilerplate in the RasterOp implementation table.
+(gsroptab.c)
+
+Adds an arg_push_temp_string procedure to accommodate the new gp_getenv
+call. (gsargs.h, gsargs.c)
+
+Updates various library APIs to account for the more careful handling of
+file name length. (gdevprn.h, gxclio.h, gxclist.h, gsdevice.c, gxclfile.c,
+gxclmem.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.10"></a>Version 5.10 (11/23/97)</h2>
+
+<p>
+This release, not originally planned, greatly reduces the size of PDF files
+produced by the pdfwrite device, fixes a number of minor problems in PDF
+output, and optionally produces output compatible with Acrobat 2.x, in order
+to address problems reported by NSF in processing these files as part of
+their FastLane electronic proposal submission process. Aside from that, and
+some localized bug fixes, it has minimal changes from 5.03.
+
+<h3><a name="V5.10_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - ansihead.mak referred to unix-ansi.mak, which is actually named
+unixansi.mak. (ansihead.mak)
+ - README referred to an "If you need help" section that was moved to
+new-user.txt. (README)
+
+Updates build information for HP-UX systems. (make.txt)
+
+Updates the information for getting Martin Lottermoser's hpdj driver.
+(new-user.txt)
+
+Improves the error message when a user tries to invoke gswin32c without
+explicitly selecting a device. (dwmainc.cpp)
+
+Removes the author's name and e-mail address from the pdf2ps man page, at
+his request. (pdf2ps.1)
+
+Improves the documentation for BandBufferSpace. (language.txt)
+
+</pre><h3><a name="V5.10_Procedures"></a>Procedures</h3><pre>
+
+Changes the VMS command files so that they don't echo the commands.
+(append_l.com, copy_one.com, rm_all.com, rm_one.com)
+
+</pre><h3><a name="V5.10_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The "lp" command files all inappropriately set the top margin to
+0.1". (lp386.bat, lp386r2.bat, lpgs, lpgs.bat, lpr2, lpr2.bat)
+ - The lp386[r2].bat command files inappropriately set the
+LanguageLevel to 1. (lp386.bat, lp386r2.bat)
+
+</pre><h3><a name="V5.10_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer got confused about the current color if the input
+contained text strings separated only by color changes. (gdevpdf.c)
+ - Some casts between const char * and const byte * were incorrect
+(warnings only). (gdevpdft.c)
+
+Adds a NoCancel parameter to the winpr2 device, which suppresses display of
+the dialog box. (gdevwpr2.c)
+
+</pre><h3><a name="V5.10_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An "extern" was omitted, causing a duplicate definition of
+build_function_procs. (ifunc.h)
+ - The global pseudo-operator table was too small, causing a
+limitcheck in ps2ascii. (iinit.c)
+ - setcolorspace with a Pattern space with no underlying space would
+cause an error if the current color space was a Pattern space. (zpcolor.c)
+ - The Decode key was optional, not required, in the dictionary form
+of image[mask]. (zimage2.c)
+
+Adds two more PCL/PJL reset sequences to the list of sequences to ignore.
+(gs_init.ps)
+
+</pre><h3><a name="V5.10_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Multi-screen color halftones could produce "seams". (gxcht.c)
+ - A bug in the gcc optimizer on H-P RISC workstations caused all
+curves to be output as lines. (gxpflat.c)
+ - If a non-standard OtherSubr was called before the [h]sbw in a Type
+1 font, a crash could occur. (gxhint3.c)
+ - gxclist.c didn't include string_.h. (gxclist.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.07"></a>Version 5.07 (limited) (10/31/97)</h2>
+
+<p>
+A few more bug fixes for the 5.10 release.
+
+<h3><a name="V5.07_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Some file and directory names hadn't been updated to match the new
+directory structure on the primary server. (make.txt, new-user.txt)
+
+Adds the URL for reaching URW++. (Fontmap.*)
+
+</pre><h3><a name="V5.07_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Because the C % operator isn't equivalent to 'modulus' for
+negative numerators, gx_default_strip_tile_rectangle could crash in some
+cases. (gxdevice.h, gdevdflt.c)
+ - In the PDF writer, Dest values were correct (page numbers) for
+GoToR actions, but were incorrect (should be page object references) for
+other actions; also, Rect values were transformed, but should not be.
+(gdevpdfm.c)
+ - In the PDF writer, articles and bookmarks could attempt to write
+multiple Contents streams, which is not allowed. (gdevpdfx.h, gdevpdf.c,
+gdevpdfm.c)
+ - The PDF writer ignored PS (PostScript pass-through) pdfmarks.
+(gdevpdfm.c)
+ - The PDF writer didn't write out the color space parameters for
+CIE-based spaces. (gdevpdfi.c)
+
+</pre><h3><a name="V5.07_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Suffix subclass structures with 4 added pointers skipped the first
+pointer in the superclass when garbage collecting, possibly causing invalid
+memory accesses. (gsstruct.h)
+ - An argument list incompatibility in a procedure used in a static
+structure initialization upset some compilers. (gsfunc.h, gsfunc0.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.06"></a>Version 5.06 (limited) (10/7/97)</h2>
+
+<p>
+This fixes a few more bugs in the PDF writer, and a few other very obscure
+problems. It also adds support for Functions and brings multiple contexts
+closer to working, neither of which we expect actually to be used any time
+soon. This is intended to be the candidate fileset for the 5.10 release,
+but since we had to tinker with a delicate part of the PDF writer to fix a
+problem affecting visual quality with Acrobat, there may be new bugs that
+will have to be fixed in yet another candidate fileset.
+
+<h3><a name="V5.06_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Jim McPherson's e-mail address was out of date. (devices.txt)
+ - Invoking ps2pdf with only a single file name is supported on some
+versions of Windows NT and OS/2, not only on Unix. (ps2pdf.txt)
+ - The ps2pdf documentation didn't indicate that ps2pdf can use the
+Windows "console mode" executable as well as the MS-DOS executable.
+(ps2pdf.txt)
+ - The list of which Distiller parameters actually have an effect was
+incorrect. (gdevpdfp.c)
+
+Notes that the cdj550 driver is compatible with the H-P 660C and 660Cse.
+(devs.mak, devices.txt)
+
+Adds a note about using Acrobat Reader fonts. (install.txt, use.txt)
+
+Notes that the LJ 5P, like the 5L, is not a PCL XL printer. (devs.mak)
+
+Notes problems and possible problems with certain versions of the Borland
+C++ compiler. (make.txt)
+
+Notes the change in -Z:. (use.txt)
+
+Updates the uniprint documentation for this release. (devices.txt)
+
+Expands the rationale for the large resolution in the bbox device.
+(gdevbbox.c)
+
+Notes that the H-P DeskJet 600 series can use the djet500 driver with -r600.
+(devs.mak)
+
+</pre><h3><a name="V5.06_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Vector devices didn't include a necessary dependency on the stream
+package. (lib.mak)
+ - There were several bugs in the ps2pdf.bat file. (ps2pdf.bat)
+
+Changes -Z: so it prints some summary lines as well as minimal information
+about banding. This makes the -ZA trace compatible with our memory leak
+tool. (iminst.h, imain.c)
+
+</pre><h3><a name="V5.06_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi sometimes produced a too-large bounding box, or even
+caused a rangecheck. (ps2epsi)
+
+At the advice of a user, removes the RESOLUTION=100 line from pv.sh.
+(pv.sh)
+
+</pre><h3><a name="V5.06_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PDF writer produced incorrect output for stroke operations
+with unusual CTMs, because PDF, unlike PostScript, applies the CTM to the
+path at the time of the fill or stroke, not as the path is being
+constructed. (gdevpdfd.c)
+ - Vector devices returned an error, instead of falling back to the
+default implementations, when filling or stroking with a pattern.
+(gdevvec.c)
+ - The PDF writer freed an internal stream structure using the wrong
+allocator, possibly causing memory corruption. (gdevpdf.c)
+ - The uniprint driver had some compilation problems, and possibly
+other problems as well (consult the source file). (gdevupd.c, *.upp)
+ - With -dNOCACHE, the PDF writer wrote all text in the base 14 fonts
+twice, once as text and once as outlines. (gs_pdfwr.ps, gdevpdfd.c)
+ - The PDF writer didn't properly recognize Symbol and ZapfDingbats
+as being among the base 14 fonts. (gs_pdfwr.ps)
+ - When using Acrobat Reader with font smoothing turned on, the base
+14 fonts appeared too bold on the screen in files produced by ps2pdf,
+because Reader decides that a 100-unit font at 1 unit = 0.1 point should be
+bolder than a 10-unit font at 1 unit = 1 point. (gdevpdfx.h, gdevpdf.c,
+gdevpdft.c)
+ - The PDF writer didn't convert View/Page specifications for
+bookmark pdfmarks to a Dest key, causing bookmarks not to work.
+(gdevpdfm.c)
+
+Speeds up the PDF writer by only passing the encoding if it isn't
+StandardEncoding. (gs_pdfwr.ps, gdevpdft.c)
+
+Changes the PDF writer's handling of unencoded glyphs. Adds device
+parameters ReEncodeCharacters and ReAssignCharacters to control how
+unencoded glyphs are handled. (These parameters will go away when we handle
+variant encodings in full generality.) (gdevpdfx.h, gdevpdf.c, gdevpdfp.c,
+gdevpdft.c)
+
+</pre><h3><a name="V5.06_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - setpagedevice didn't restore the stack properly if it failed.
+(gs_setpd.ps)
+ - 0 identmatrix didn't cause an error. (gs_init.ps)
+ - Devices expecting array-valued parameters didn't accept packed
+arrays. (iparam.c)
+
+Starts to de-implement support for special handling of the stacks on
+machines with 16:16 addressing. Currently this only happens if DPNEXT is
+defined. (istack.h)
+
+Brings multiple contexts closer to working. The interpreter can now run
+some very simple test cases. (int.mak, icontext.h, igstate.h, interp.h,
+istruct.h, icontext.c, interp.c, zcontext.c, zgstate.c)
+
+Adds support for FunctionType 0 Functions. (ifunc.h, iref.h, store.h,
+zfunc.c, zfunc0.c)
+
+Updates a few remaining pseudo-operators in gs_init.ps to take advantage of
+automatic operand and dictionary stack restoration: eexec, identmatrix,
+pathbbox. Not updated yet: filter. (gs_init.ps)
+
+</pre><h3><a name="V5.06_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Separation color spaces weren't supported. (gs_pdf.ps,
+pdf_draw.ps)
+
+</pre><h3><a name="V5.06_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The size argument to gs_free was wrong in an out-of-memory case.
+(This was irrelevant, since gs_free only uses the size argument for
+error-checking during debugging.) (gdevprn.c)
+ - When freeing a block on the C heap, if -Z@ was set, the block's
+header wasn't filled with the sentinel pattern. (Only relevant when
+debugging.) (gsmemory.c)
+ - The C heap allocator didn't fix up pointers properly when freeing
+a block, causing unpredictable memory corruption after a 'resize' call.
+(gsmemory.c)
+ - Using a show operator inside the procedure of a cshow with a
+composite font could cause an invalid access. (gschar.c)
+
+Adds support for FunctionType 0 Functions. (gsdsrc.h, gsfunc.h, gsfunc0.h,
+gxfunc.h, gsdsrc.c, gsfunc.c, gsfunc0.c)
+
+Moves the GC descriptor for arrays of constant strings to a place where it
+is more visible. (gscie.h, gsstruct.h, gscie.c, gsmemory.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.05"></a>Version 5.05 (limited) (9/24/97)</h2>
+
+<p>
+This fixes a few bugs found in the first few days of testing 5.04. There
+will probably be several more small incremental filesets before the next
+public release.
+
+<h3><a name="V5.05_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows code wouldn't compile with the latest MSVC++, because
+Microsoft changed the prototype for fprintf. (gp_msio.c)
+
+</pre><h3><a name="V5.05_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A picky compiler complained about some omitted casts. (gdevpdf.c,
+gdevpdft.c)
+ - Writing a PDF file with any synthesized fonts could produce
+slightly garbled output or possibly even an invalid memory access, because a
+string was not terminated. (gdevpdft.c)
+ - When writing a PDF file, the first character of a string could get
+placed off the page, because of a matrix bookkeeping error. (gdevpdft.c)
+
+</pre><h3><a name="V5.05_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - In case of an error, setpagedevice executed a 'stop'
+unconditionally, rather than just signalling an error through the error
+machinery. (gs_setpd.ps)
+
+</pre><h3><a name="V5.05_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Files with unknown operators caused errors, even if the BX
+operator was used to disable the error report. (pdf_base.ps)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.04"></a>Version 5.04 (limited) (9/21/97)</h2>
+
+<p>
+This is a test fileset for an unplanned release that greatly reduces the
+size of PDF files produced by the pdfwrite device, and also optionally
+produces output compatible with Acrobat 2.x, in order to address problems
+reported by NSF in processing these files as part of their FastLane
+electronic proposal submission process. Aside from that, and some localized
+bug fixes, it has minimal changes from 5.03.
+
+<h3><a name="V5.04_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - George Cameron's address was listed with a domain of .ukis rather
+than .uk. (devices.txt)
+ - The default value of ORIENT1 was given as false rather than true.
+(use.txt)
+ - The documentation for ps2pdf said one can omit the output file
+name, but this is only true on Unix systems. (ps2pdf.txt)
+ - The documentation for ps2pdf didn't make clear that the executable
+must be named gs on Microsoft OSs. (ps2pdf.txt)
+ - ht_cache is actually allocated with the first gstate, not on
+demand. (gsstate.c)
+
+Slightly improves the documentation of .type1execchar. (zchar1.c)
+
+Clarifies the distinction between Ghostscript (PostScript) commands and
+shell commands, for the benefit of users brainwashed by Microsoft.
+(use.txt)
+
+Improves the usage synopsis in the ps2epsi man page. (ps2epsi.1)
+
+Adds a reference to Uli Wortmann's H-P drivers. (new-user.txt)
+
+Improves the documentation of GS_FONTPATH, distinguishing it from GS_LIB and
+the search path. (use.txt)
+
+Notes that on some systems, one must substitute 'installbsd' for 'install'
+in the makefile and make other edits. (install.txt, ansihead.mak,
+cc-head.mak, gcc-head.mak)
+
+Notes that ps2epsi is no longer maintained. (ps2epsi.ps)
+
+Clarifies the availability of support. (new-user.txt)
+
+</pre><h3><a name="V5.04_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The uniprint driver was accidentally omitted from the default
+Watcom (MS-DOS) and OS/2 configurations. (watc.mak, os2.mak)
+ - The suggested compiler switches for Digital Unix were incorrect.
+(make.txt)
+ - The cp.cmd script file didn't work in the newest versions of OS/2.
+(cp.cmd)
+ - The compilation rules for some Windows-specific files didn't
+include ccf32.tr in their dependencies, which could cause the compilation to
+fail. (winint.mak)
+
+Removes the lev2min configuration, since we no longer support 16-bit Windows
+environments. (int.mak)
+
+</pre><h3><a name="V5.04_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi.bat always appended to the output file, rather than
+writing over it. (There are probably other bugs in this script file.)
+(ps2epsi.bat)
+ - The output of pdf2ps didn't execute properly on some printers,
+especially Level 1 printers. (gs_pdf.ps)
+
+Makes ps2pdf do an initial 'save', which causes fonts to be retained better
+across pages. (ps2pdf, ps2pdf.bat)
+
+Adds an option to pcharstr.ps to produce C-like rather than PostScript-like
+output. (pcharstr.ps)
+
+</pre><h3><a name="V5.04_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The LaserJet III and higher printers weren't able to print in the
+narrow strip between 1/6" and 1/4" from the left edge of the page.
+(gdevdjet.c)
+ - The PCL XL drivers produced incorrect output which often caused a
+PCL XL NoCurrentFont error at the beginning of the second page. (gdevpx.c)
+ - The GC descriptors for the pswrite device and for PS/PDF devices
+were incorrect, causing the GC to smash memory. (gdevpsdf.h, gdevps.c)
+ - The pdfwrite device didn't have a GC descriptor at all. ******
+DISABLED because the device allocates all its temporary structures directly
+on the C heap. ****** (gdevpdf.c)
+ - When the PDF writer wrote out the Dest key in an action
+dictionary, it always used a page object instead of a page number, even if
+the page was in another file or didn't exist; it now always uses a page
+number. (gdevpdfm.c)
+ - The PDF writer gave an error if a file redefined any of the 14
+known fonts. (gs_pdfwr.ps)
+ - The PDF writer didn't handle copy_mono with a non-zero sourcex.
+(This probably had no effect in practice.) (gdevpdfi.c)
+
+Splits off gdevpdfd.c (driver drawing procedures) from gdevpdf.c, since the
+file was getting too large. (gdevpdfx.h, gdevpdf.c, gdevpdfd.c)
+
+Adds recognition of the CompressPages, CompatibilityLevel, and
+UseFlateCompression device (distiller) parameters to the PDF writer. If
+CompressPages is true (default), CompatibilityLevel is 1.2 (default), and
+UseFlateCompression is true (default), page contents will be compressed with
+Flate ("zip") compression; otherwise, they will not be compressed.
+
+Restructures the PDF writer to produce much smaller and faster PDF files, by
+restructuring its handling of text to defer all resources to the end of the
+file, eliminate duplicate Font resources, turn characters into Type 3 fonts
+rather than Image XObjects, use more efficient text positioning commands,
+and optionally (but by default) Flate-compress the contents streams. Also
+removes some unnecessary spaces in the output. (gdevpdfx.h, gdevpdf.c,
+gdevpdfd.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
+
+Improves the PDF writer so that it no longer converts stroke operations with
+non-uniform CTMs to fills, and doesn't bother to stroke empty paths at all.
+(gdevpdfd.c)
+
+Speeds up the "alternate" X devices substantially. (gdevxalt.c)
+
+</pre><h3><a name="V5.04_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Filling a string with a Pattern caused a crash with the PDF
+writer. (gs_pdfwr.ps)
+ - Converting a file with no marks at all to PDF produced invalid
+output. (gdevpdf.c)
+ - .endpage, which is called at the end of every page, sometimes left
+2 extra values on the stack. (gs_setpd.ps)
+ - A definefont with a Type 1 font lacking a .notdef character didn't
+cause an invalidfont error. (bfont.h, zfont1.c, zfont2.c)
+ - On anti-aliased devices, characters from Type 1 fonts with an
+incorrect or missing FontBBox came out a factor of 2 or 4 too small if the
+character was small enough to cache. (zchar1.c)
+ - If a file redefined certain operators, loading Type 1 fonts could
+fail. This problem was fixed in an earlier release, and somehow the fix got
+undone. (gs_type1.ps)
+ - cshow didn't set the correct current font when running the
+procedure, and didn't restore it properly afterwards. (zchar.c, zchar2.c)
+ - With certain compilers, the interpreter loop caused unaligned
+memory accesses on DEC Alpha systems running Windows NT. (iref.h)
+
+Adds freelist validation to the memory checker. (ilocate.c)
+
+Changes the debugging switch for bypassing the garbage collector from
+compile-time to run-time. (igc.c)
+
+Adds the real operators for view clipping (but they don't do anything yet,
+because view clipping isn't implemented at the library level). (zdps.c,
+zvmem.c)
+
+Completes the implementation of defineusername. (zdps.c)
+
+Adds an implementation of wtranslation, by simply reading a device parameter
+of the same name. (gs_dps.ps)
+
+</pre><h3><a name="V5.04_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Lab color spaces weren't implemented, and gave an error.
+(gs_pdf.ps)
+ - Images only worked with built-in color spaces, not color space
+resources. (pdf_draw.ps)
+ - Embedded font subsets were treated as undefined. (pdf_font.ps)
+
+</pre><h3><a name="V5.04_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - strokepath sometimes clipped the path to the current clipping
+region, which it should never do. (gxstroke.c)
+ - The initial X/Y position for Type 2 charstrings (CFFs) sometimes
+was set incorrectly. (gstype2.c)
+ - Memory management for dash patterns was still incorrect (despite
+the fix in 4.36), possibly causing snarled freelists and invalid memory
+references. (gsline.c, gsstate.c)
+ - The saved gstate of a Pattern instance was freed properly when the
+instance was freed by reference counting as a result of setting the color or
+color space, but not when the instance was freed by reference counting
+anywhere else. (gspcolor.c)
+ - A test for whether to use a slower form of oversampling was
+incorrect. (Probably only a performance bug.) (gschar.c)
+ - cshow didn't set the correct current font when running the
+procedure, and didn't restore it properly afterwards. (gsfont.h, gschar.c,
+gsfont.c)
+
+Improves allocator validity checking when DEBUG is set. (gsalloc.c)
+
+Adds a couple of missing FontType values. (gxftype.h)
+
+Changes the default conversions between CMYK and RGB colors back to the
+Adobe rules documented in the Red Book, to reduce output differences from
+Adobe implementations. (gxdcconv.c)
+
+Adds a graphics state element for view clipping, under an #ifdef DPNEXT, and
+implementations of the view clipping operators (but not the logic for doing
+the actual clipping). (gsstate.h, gzstate.h, gsstate.c)
+
+Removes the redundant clip_rule variable from the graphics state (which
+wasn't used for anything). (gzstate.h, gspath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.03"></a>Version 5.03 (8/8/97)</h2>
+
+<p>
+The only reason for this release is to fix two serious bugs introduced
+between 5.01 and 5.02. We fixed a few other very localized and low-risk
+bugs at the same time.
+
+<h3><a name="V5.03_Documentation"></a>Documentation</h3><pre>
+
+Removes the "(if relevant)" from the bug reporting form, since about 25% of
+the forms are submitted without a URL or any other data. (bug-form.txt)
+
+Adds a discussion of single-use procedures to the style guide.
+(c-style.txt)
+
+Updates the information about obtaining Ghostscript on physical media.
+(new-user.txt)
+
+Updates the information about ps_view. (new-user.txt)
+
+</pre><h3><a name="V5.03_Procedures"></a>Procedures</h3><pre>
+
+Adds the uniprint driver to all platforms. (*.mak)
+
+Changes the contents of the pc.tar.gz archives:
+ - Adds *.upp.
+ - Removes *.res.
+ - Removes cp.bat, font2c.bat, mv.bat, rm.bat, wmakebat.bat,
+ cp.cmd, mv.cmd and rm.cmd, and gv-vms.hlp.
+
+Removes an obsolete script file. (tar_mv)
+
+</pre><h3><a name="V5.03_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The uniprint driver didn't handle an increase in media height
+correctly. (gdevupd.c)
+
+</pre><h3><a name="V5.03_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Printing to printers other than LPT1 under MS Windows no longer
+worked. (bug introduced in 5.02) (gp_mswin.c)
+ - Drag-and-drop didn't work under Windows NT (or other 32-bit
+Windows environments). (dwtext.cpp)
+ - Sequent systems needed an additional system header file.
+(time_.h)
+
+</pre><h3><a name="V5.03_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The substitutions Myriad =&gt; Times and Minion =&gt; Helvetica were
+incorrect; they should be the other way around. (gs_fonts.ps)
+ - MyriadPkg wasn't recognized as a condensed font. (gs_fonts.ps)
+ - Univers wasn't recognized as mapping to Helvetica. (gs_fonts.ps)
+
+</pre><h3><a name="V5.03_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A line of debugging code, printing the sections of 3 regions of
+TrueType fonts being loaded, was accidentally left in. (gs_ttf.ps)
+ - TrueType fonts whose pre-glyf data had odd length were broken
+(typically gave a rangecheck error), because of the fix to treat the odd
+byte of individual sfnts strings as padding per Adobe documentation. (bug
+introduced in 5.02) (gs_ttf.ps)
+
+</pre><h3><a name="V5.03_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If a real-number token in a CFF had an even number of nibbles, a
+unmatchedmark error would occur. (gs_cff.ps)
+ - If the strings Index in a CFF included an empty string, a
+rangecheck error would occur. (gs_cff.ps)
+ - CFFs with non-standard Encodings that included standard strings
+would get a typecheck error. (gs_cff.ps)
+
+</pre><h3><a name="V5.03_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Using %d in an OutputFile name didn't substitute the page number.
+(bug introduced in 5.02) (gsdevice.c)
+ - In Type 2 CharStrings, if a hintmask occurred at the beginning, it
+wasn't recognized as also incorporating the function of vstemhm.
+(gstype2.c)
+ - The data bytes for hintmask and cntrmask weren't printed for
+debugging. (gstype2.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.02"></a>Version 5.02 (7/28/97)</h2>
+
+<p>
+Because of an ISP failure that delayed the 5.0 announcement for 12 days, the
+5.01 release only responded to a few days of bug reports; 5.02 fixes some
+problems that should have been fixed in 5.01, as well as a large number of
+obscure problems uncovered by Genoa testing.
+
+<h3><a name="V5.02_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The documentation for building on the Intergraph Clipper was out
+of date. (make.txt)
+ - ESC was claimed to be a self-delimiting character. (gs_init.ps)
+ - Removes the documentation claiming that ^D and ^Z are
+self-delimiting. (language.txt)
+ - Document that -dSUBSTFONT doesn't create a font with the requested
+font name. (use.txt)
+ - Ghostscript was defined as compatible with PDF 1.1 rather than PDF
+1.2. (language.txt)
+ - The description of gcc problems on Alpha didn't make it clear that
+the use of gcc was optional, not required. (make.txt)
+ - The description of how to use GNU make on VMS systems was
+inaccurate. (make.txt)
+
+Improves the documentation for building on H-P RISC systems. (make.txt)
+
+Corrects the discussion of Cygnus' licensing terms for the cygwin32
+environment. (make.txt)
+
+Removes the apology for the poor quality of Ghostscript's TrueType
+rasterizer, since the quality is now quite good. (fonts.txt)
+
+Documents the fact that one must use # rather than = with Watcom C.
+(use.txt)
+
+Documents the updates and additions to the uniprint driver. (devices.txt)
+
+Adds some material to Aladdin's C style guide. (c-style.txt)
+
+Documents the fact that using gmake requires VMS 6.2 or later on Alphas and
+7.1 (perhaps 7.0) or later on VAXen. (make.txt)
+
+Adds an example EPS file. (psfiles.txt)
+
+Adds some information about compiling and linking under OS/2. (make.txt)
+
+Expands the description of XLIBDIR and XLIBDIRS. (*head.mak)
+
+Adds a new pointer to information on using a Kanji font with Ghostscript.
+(new-user.txt)
+
+Documents the use of /Resource/&lt;category&gt;/&lt;resource&gt; as the default place
+where resources are sought. (use.txt)
+
+Updates the documentation on building with MSVC++ to reflect the makefile
+changes. (make.txt)
+
+</pre><h3><a name="V5.02_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - In openvms.mak, several ifdef tests were wrong. (openvms.mak)
+ - One CP command was slightly inconsistent with the others.
+(zlib.mak)
+ - If libz and libpng were both shared, libz was linked first,
+resulting in some undefined references. (libpng.mak)
+ - The VMS makefile didn't interact properly with VMS's version
+numbering facility. (copy_one.com)
+
+Updates the VMS DCL script one last time, to handle libpng version 96.
+(vms.mak)
+
+Restructures the MSVC++ makefiles to allow building the graphics library
+without the PostScript interpreter. (bcwin32.mak, msvc4.mak[deleted],
+msvc5.mak[deleted], msvc32.mak, msvccom.mak, watcw32.mak,
+wincom.mak[deleted], winint.mak, winlib.mak)
+
+Adds a makefile to create a library-only demo program under MSVC++, like the
+ones for Unix/gcc and MS-DOS/Watcom. (msvclib.mak)
+
+Adds an example EPS file. (ridt91.eps, unix-end.mak)
+
+Removes support for libpng release 0.88, which is now quite obsolete.
+(libpng.mak)
+
+</pre><h3><a name="V5.02_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2pdf.bat, unlike ps2pdf, didn't accept options. (ps2pdf.bat)
+ - echogs used 'const' in one place, which wasn't accepted by some
+very old compilers. (echogs.c)
+ - pdf2ps output Orientation, which it shouldn't. (pdf_main.ps)
+
+Makes the usage message from ps2pdf.bat include the options, like ps2pdf.
+(ps2pdf.bat)
+
+Changes the printpath utility so that its output is legal PostScript code.
+(ppath.ps)
+
+Makes pdf2dsc add DSC comments for the bounding box (if a CropBox is
+available in the PDF file) and the orientation. (pdf2dsc.ps)
+
+</pre><h3><a name="V5.02_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The get_bits operation wasn't implemented for the vgalib driver.
+(gdevvglb.c)
+ - The dnj650c driver output an extra % near the end of the file.
+(gdevcdj.c)
+ - The definition of pprintd2 didn't have a line break before the
+procedure name, confusing ansi2knr. (gdevpstr.c)
+ - EPS files produced invalid PDF output. (gdevpdf.c)
+ - "Vector" output devices didn't recognize %d in output file names,
+or - for output to stdout. (gdevprn.h, gxdevice.h, gdevprn.c, gdevvec.c,
+gsdevice.c)
+ - With the pdfwrite driver, restore or grestore would cause a
+rangecheck error in .installpagedevice if a setpagedevice had been executed.
+(gdevpdfp.c)
+ - The pdfwrite driver produced garbage output for text rotated by
+angles that were only infinitesimally different from multiples of 90
+degrees. (gdevpdft.c)
+ - The pnm[raw] driver didn't handle anti-aliasing properly.
+(gdevpbm.c)
+ - The PDF writer didn't scale the parameters for [a][width]show
+correctly. (gs_pdfwr.ps, gdevpdft.c)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(gdevbbox.c, gdevpdfm.c, gshtscr.c, gsmemory.c, gxccman.c, gxfill.c,
+gximage0.c)
+
+Fixes some bugs in the uniprint driver and adds some more printer models.
+(gdevupd.c, bjc610a*.upp, bjc610b*.upp, necp2x6.upp, stc1520h.upp)
+
+Makes a small change for clean compilation on BeOS. (gdevcdj.c)
+
+Updates the PNG driver to use updated API calls for allocating/initializing
+and freeing the PNG structures. (gdevpng.c)
+
+</pre><h3><a name="V5.02_Platforms"></a>Platforms</h3><pre>
+
+Refactors the MS Windows code to allow building the library without the
+interpreter. (gs_msio.c, gs_mslib.c, gp_mswin.c)
+
+</pre><h3><a name="V5.02_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - definefont was executed twice on TrueType fonts. (No bad
+consequences, just unnecessary work.) (gs_ttf.ps)
+
+</pre><h3><a name="V5.02_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The fix for the 'stopped' around run_string_* in 5.01 was made
+incorrectly. (gs_init.ps)
+ - Many operators that expect a matrix operand didn't accept packed
+arrays. (iutil.c)
+ - The default CRD didn't have an explicit BlackPoint, which some
+Genoa tests require. (gs_lev2.ps)
+ - A stack protection fix caused setscreen and setcolorscreen with
+dictionary operands to give a typecheck. (gs_dps2.ps)
+ - Executing a string didn't handle tail recursion properly if the
+last token was followed by a single whitespace character. (interp.c)
+ - Clearing the error indication didn't set errorname to null.
+(gs_init.ps)
+ - Some unexpected items appeared on the execution stack, confusing
+some of the Genoa tests. (gs_init.ps, istack.h, istack.c, zcontrol.c)
+ - The dummy definitions for setucacheparams/ucachestatus didn't look
+enough like the real ones. (gs_dps2.ps)
+ - Insideness tests didn't work, because the hit detection device
+width and height weren't set up. (zupath.c)
+ - defineuserobject didn't use the same algorithm for growing the
+array as Adobe interpreters. (gs_dps2.ps)
+ - eq and ne didn't work correctly on save objects. (iutil.c)
+ - findfont used =string internally, interfering with PostScript
+programs that also used it. (gs_fonts.ps)
+ - cshow didn't set up scaled versions of base fonts as the current
+font. (zchar2.c)
+ - defineresource didn't make the resource value read-only.
+(gs_res.ps)
+ - If inustroke got an error, it could return without an error
+indication and without changing the stack. (zupath.c)
+ - The arrays returned by different invocations of currentcolorspace
+with the same device color space weren't guaranteed to be eq. (gs_lev2.ps)
+ - Out-of-range integers followed by a '.' were converted to names
+rather than reals. (iscan.c, iscannum.c)
+ - resourceforall caused an invalidaccess error if currentglobal was
+true but the procedure, template, or scratch string was in local VM.
+(gs_res.ps)
+ - In many places, integer values were converted to floats rather
+than doubles, losing precision. (ichar.h, icharout.h, ifont.h, iutil.h,
+idparam.c, iparam.c, iutil.c, zchar.c, zchar1.c, zchar42.c, zcharout.c,
+zcie.c, zcolor.c, zcolor1.c, zcolor2.c, zcontrol.c, zcsindex.c, zcssepr.c,
+zdpnext.c, zdps1.c, zfont.c, zfont2.c, zgstate.c, zhsb.c, zht.c, zmath.c,
+zmatrix.c, zmedia2.c, zpath.c, zpath1.c, zupath.c)
+ - The TransformPQR procedure in the default CRD didn't pop its
+auxiliary operands from the stack. (gs_lev2.ps)
+ - Because of an incorrect stack depth check, setcolorrendering
+sometimes produced a stackunderflow. (zcrd.c)
+ - sethalftone caused an invalidaccess error if the HalfTone type was
+not 5, the dictionary was in local VM, and the current VM was global.
+(gs_dps2.ps)
+ - writeobject and printobject caused an invalidaccess error if the
+object being written was in local VM and the current VM was global.
+(gs_btokn.ps)
+ - ustrokepath appended the strokepath segments to the current path,
+rather than replacing the path. (zupath.c)
+ - restore incorrectly purged from the character cache any characters
+in a font being freed, even if the font had a UID. (zfont.c)
+ - The definition of zimage_opaque_setup confused ansi2knr.
+(zimage.c)
+ - Type 42 fonts that included the padding byte in each sfnts string
+didn't work if sfnts had more than one string. (zfont42.c)
+ - Doing a garbage collection at the same time as handling a
+stackoverflow failed to update the object that needed re-execution, causing
+the interpreter to execute random data. (interp.c)
+ - %stdout and %stderr weren't flushed if they were closed
+explicitly. (ziodev.c)
+
+For greater Adobe compatibility:
+ - Changes setdash to limit dash patterns to 11 elements. (This is
+enforced at the PostScript level: the graphics library doesn't have a
+limit.) (gs_init.ps)
+ - Changes ^D and ^Z so they are not self-delimiting characters, and
+changes ^K so it is not a whitespace character. (gs_init.ps, iscan.c,
+scantab.c)
+ - Makes = cause an error on non-read-accessible objects rather than
+printing them as --nostringval--. (gs_init.ps)
+ - When -dSUBSTFONT= is used, makes findfont return the actual named
+font, rather than a copy with the FontName changed to the requested one.
+(gs_fonts.ps)
+ - CFF fonts with a non-default FontMatrix caused an error.
+(gs_cff.ps)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(iparam.c, zfcmap.c)
+
+Strengthens the test of o-stack validity in the main interpreter loop in
+debug mode. (interp.c)
+
+Changes the filling rule for Type 1 fonts from winding-number to even-odd.
+This affects no properly designed fonts, and seems to match Adobe
+interpreters better. (zchar1.c)
+
+Implements non-standard Encodings in CFF fonts. (gs_cff.ps)
+
+Changes the default halftone screen for 600 dpi printers from 85 to 106 lpi,
+which reduces the number of halftone levels from 50 to 32 but produces
+visually better output. (gs_init.ps)
+
+</pre><h3><a name="V5.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Pattern color spaces weren't supported. (gs_pdf.ps, pdf_draw.ps)
+
+Causes references to undefined named Destinations to be ignored rather than
+giving an error. (pdf_main.ps)
+
+</pre><h3><a name="V5.02_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A 'const' was omitted in a declaration, upsetting several
+compilers. (gxclread.c)
+ - arct and arcto gave an error for negative radii. (gspath1.c)
+ - The collinearity check for arct[o] could cause some arcs to be
+rendered as single points. (gspath1.c)
+ - Uncolored patterns sometimes came out blank, because the color
+wasn't set before calling the PaintProc. (gspcolor.c)
+ - The phase for masking colored patterns was wrong, producing
+incorrect output. (gspcolor.c)
+ - reversepath always appended the current position to the new path,
+rather than only doing so if the path just consisted of a single moveto.
+(gxpath2.c)
+ - cshow didn't restore the current font properly. (gschar.h,
+gschar.c)
+ - The check for whether characters can be cached didn't consider
+PaintType values other than 0 and 2. (gschar.c)
+ - The bounding box device didn't handle PageCount properly.
+(gdevbbox.c)
+ - Uncached fonts with a next_char procedure didn't set the glyph
+properly. (gschar.c)
+ - Parallelograms with ax &lt; bx, ay &lt; by, and the 'a' edge to the
+right of the 'b' edge weren't filled, causing pixels to be omitted from some
+highly skewed images. (gdevddrw.c)
+ - 12-bit-per-pixel images in portrait orientation filled each scan
+line with the value of the last pixel -- i.e., didn't work. (gximage4.c)
+ - The path representation of a clipping path could include some
+inappropriate, leftover path segments. (gxcpath.c)
+ - The angle for the miter check was computed in device space rather
+than in user space. (gxstroke.c)
+ - TrueType fonts were lumpy, and the accents of accented characters
+were placed incorrectly. (gstype42.c)
+ - Some macros used for generating device prototypes didn't
+parenthesize all uses of their parameters, causing possible errors if the
+parameters were expressions rather than numeric constants. (gdevprn.h)
+ - When banding, strip halftones (typically produced by
+AccurateScreens) sometimes didn't have the correct phase. (gxbitmap.h,
+gxclread.c)
+ - A minor change was required for correct compilation with Microsoft
+VC++. (memory_.h)
+ - Under certain conditions, character shapes could get wildly
+distorted by hints. (bug introduced in 5.01) (gxhint3.c)
+
+For greater Adobe compatibility:
+ - Changes reversepath so that the implicit line created by closepath
+is not considered a "segment". (gxpath2.c)
+
+Fixes some minor compilation warnings not affecting code functionality.
+(gstype1.c)
+
+Changes the font and scaled-font caches so that if the font has a UID
+(UniqueID or XUID), the UID and FontType are both considered part of the
+key, and we don't cache fonts with non-zero PaintType. (The Red Book says
+that changing anything except the Encoding should also change or remove the
+UID, but some files don't do this. The current fix is probably not
+sufficient, but it is a step in the right direction.) (gxfcache.h,
+gxccache.c, gxccman.c)
+
+Splits off the definitions of font_type and fbit_type into a separate file,
+since gxfcache.h now needs font_type. (gxfcache.h, gxfont.h, gxftype.h)
+
+Makes the Flex feature in Type 1 fonts conform to the published
+specification, rather than always producing curves. The comment in the code
+(and in the NEWS entry for release 2.6) says that this breaks some very old
+Adobe fonts: if this turns out to be a problem, we'll figure out a test that
+will do the right thing for these fonts. (gstype1.c)
+
+Provides 'double' versions of some API functions to accommodate the
+increased use of doubles in the interpreter. (gschar.h, gschar.c)
+
+Adds a compile-time option to force the use of strip halftones, for
+debugging. (gshtscr.c)
+
+Changes the hint snapping algorithm in the Type 1 rasterizer so that it will
+only change a stem width by a maximum of 1/2 pixel rather than 1 pixel.
+This appears to help with dropouts at certain sizes. (gxhint2.c)
+
+Makes a few changes for clean compilation on BeOS. (stdpre.h, stat_.h,
+gxcpath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.01"></a>Version 5.01 (6/22/97)</h2>
+
+<p>
+This fixes a few bugs reported in the 5.0 release. This will be a
+commercially supported release.
+
+<h3><a name="V5.01_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - README referred to an obsolete file devarch.txt. (README)
+ - The comment on flip4x12 had a typo. (gsflip.c)
+ - The algorithm comments for adjusted_y_spans_pixel weren't precise
+enough. (gxfill.c)
+ - The usage message printed by the ps2pdf script didn't indicate
+that one can now insert options before the input file name. (ps2pdf)
+ - The file searching documentation didn't indicate that paths
+beginning with ./ or ../ are considered "explicit" and not subject to
+searching. (use.txt)
+ - The description of SEARCH_HERE_FIRST in the per-platform makefiles
+indicated that it only applied to initialization files, not to files
+specified on the command line as well. (*.mak)
+ - There were still some references to 16-bit implementations.
+(install.txt)
+
+Clarifies that -dNODISPLAY also suppresses output to other devices.
+(use.txt)
+
+Adds the e-mail address for reporting problems to the bug report form, and
+also a space to report makefile changes. (bug-form.txt)
+
+Adds a note under -g indicating that it fixes the media size. (use.txt)
+
+Adds an explanation of why Ghostscript can't use the system libraries for
+the JPEG package. (make.txt)
+
+Notes that ps2ai doesn't work properly with Adobe's Helvetica-Oblique font,
+and other fonts whose original FontMatrix involves skewing or rotation.
+(psfiles.txt)
+
+Updates the uniprint documentation slightly. (devices.txt)
+
+Notes that the new lj5 drivers do not work with the LJ5L. (devs.mak)
+
+Modifies the Aladdin Free Public License slightly to make it clearer that
+the exception for freely redistributable CD-ROMs only applies if the CD-ROM
+is being distributed by itself, not with anything else commercial. (This
+has always been the case, but the previous wording wasn't clear enough.)
+(PUBLIC)
+
+Notes that gcc with -O still has code generation problems on H-P RISC
+machines. (make.txt)
+
+Adds a pointer to Martin Lottermoser's hpdj driver. (new-user.txt)
+
+Enhances and reorganizes the documentation for building Ghostscript, in
+response to user feedback. (make.txt, install.txt)
+
+Adds a description of the EPSF recognition feature. (language.txt)
+
+</pre><h3><a name="V5.01_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - string__h was misspelled string_h in one place. (lib.mak)
+ - gs_dps.ps wasn't installed by "make install". (unix-end.mak)
+ - ccgs (used with non-ANSI C compilers) didn't do the right thing
+with -DPNG_USE_CONST. (ccgs)
+
+Adds support for version 96 of libpng, and updates all the makefiles to
+reference it. (libpng.mak, *.mak)
+
+Updates the MSVC makefiles to get rid of some warning messages and provide a
+way to specify a library path for the final link. (msvc*.mak)
+
+</pre><h3><a name="V5.01_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The usage message for the gslp utility had a minor typo.
+(gslp.ps)
+ - The "line printer" utility didn't expand tabs properly when
+producing PostScript output. (gslp.ps)
+ - The gslp utility didn't automatically include the date. (gslp)
+ - The line printer scripts didn't pass the script name to the
+utility program, so the usage message didn't use the correct name. (gsbj*,
+gsdj*, gslj*, gslp*, lp*)
+
+Modifies the gslp utility so that invoking it with no arguments prints the
+usage message. (gslp.ps)
+
+Adds the ability to specify the number of bits per component to the
+CMYK-viewing utility. (viewcmyk.ps)
+
+Changes the ps2pdf script so that on Windows NT, as on Unix, it allows
+omitting the output file name, automatically replacing the extension of the
+input file with .pdf. (ps2pdf.bat)
+
+</pre><h3><a name="V5.01_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some compilers didn't accept a #define with the macro name on the
+next line. (gdevpx.c)
+ - The procedure dash_pattern_eq was defined in two places.
+(gdevpdf.c)
+ - The uniprint driver sometimes dropped some output or got confused,
+because of a misunderstanding about how to update device procedure vectors
+properly. (gdevupd.c)
+ - The PostScript and EPS writers produced binary output for images,
+which generally can't be sent to PostScript printers. (gdevpsdf.h,
+gdevpdf.c, gdevps.c)
+ - The EPS writer put a %%EOF at the end of the file, which might
+cause problems for some spoolers if the file is embedded in another.
+(gdevps.c)
+
+Changes the implementation of printer drivers so that they flush the output
+stream after each page. We aren't absolutely sure that this is a good idea,
+but it prevents certain anomalous behavior where the last page isn't ejected
+properly. (gdevprn.c)
+
+Implements a long-delayed update to the mgr drivers, to restore the color
+mapping to an older one. (gdevmgr.h, gdevmgr.c)
+
+Updates the uniprint driver with a number of changes from its author.
+(gdevupd.c)
+
+</pre><h3><a name="V5.01_Platforms"></a>Platforms</h3><pre>
+
+Adds the JPEG, Postscript, and PCL XL drivers, which are included on all
+other platforms, to the MS Windows platforms. (bcwin32.mak, msvc4.mak,
+msvc5.mak, watcw32.mak)
+
+</pre><h3><a name="V5.01_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - composefont defined the resource with the font name and font
+directory interchanged. (gs_cmap.ps)
+ - With dFIXEDMEDIA, documents requesting other sizes caused an error
+instead of clipping the page. (gs_init.ps)
+ - PageSize Policy = 7 wasn't implemented. (However, the current
+implementation is wrong.) (gs_setpd.ps, zmedia2.c)
+ - FontType resource 42 wasn't defined even if Type 42 fonts were
+supported; similarly for FontType 9, 10, and 11 for CIDFonts. (gs_cidfn.ps,
+gs_res.ps)
+ - The error handling machinery would break if the name /errordict
+was redefined. (gs_init.ps)
+ - Level 1 systems got an /undefined in .doneshowpage. (zdevice.c,
+zdevice2.c)
+ - Because of an initialization order problem, copy didn't work on
+gstates. (zgeneric.c)
+
+Adds a naive implementation of findcolorrendering. (gs_lev2.ps, gs_res.ps)
+
+Removes the 'stopped' around run_string[_begin/continue/end] so that, as in
+4.03, errors print a hex dump and exit with a non-zero code instead of
+printing a readable message and continuing. (We aren't sure that this
+change didn't undo the fix in 5.0 regarding calling startjob from
+run_string.) (gs_init.ps)
+
+</pre><h3><a name="V5.01_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - stdin redirection failed for PDF files even if the new stdin was
+seekable. This was fixed in 4.02, but the fix stopped working with the
+introduction of .runexec. (pdf_main.ps)
+
+Makes the cross-reference reader accept a startxref value that points at the
+EOL before the xref line. The Adobe documentation doesn't allow this, but
+some real files are this way. (pdf_main.ps)
+
+</pre><h3><a name="V5.01_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The bounding box of a completely empty path was reported as
+garbage. (gxpath2.c)
+ - Stroking a path with more than one segment didn't produce correct
+output when anti-aliasing was used. (gspaint.c)
+ - The alpha-buffer device returned an incorrect clipping box,
+causing output to be discarded. (gdevabuf.c)
+ - gx_forward_get_clipping_box passed the wrong device to the target
+procedure, producing incorrect results. (gdevnfwd.c)
+ - The sin/cos procedure did some unnecessary computations
+(performance bug only). (gsmisc.c)
+ - The procedure for adjusting the ends of curves to match the
+tangents did some unnecessary computations (performance bug only).
+(gxpcopy.c)
+ - RAM-based banding always gave an invalidfileaccess error, due to a
+typo in memfile_fopen. (gxclmem.c)
+ - The algorithms for deciding whether a line is thin still weren't
+correct. (gxstroke.c)
+ - The fill adjustment values for the any-part-of-pixel case (adjust
+= 0.5) were (0.5-epsilon, 0.5+epsilon), which colored inappropriate
+additional pixels if the higher coordinate was integral. With considerable
+trepidation, we have changed this to (0.5-epsilon,0.5), which does the right
+thing in every case we can think of. (gxfill.c)
+ - When banding, paths were clipped to only 0.5 pixel outside their
+bounding box, which may be slightly too conservative; 1 pixel is safer.
+(gxclpath.c)
+ - The algorithm for testing whether an adjusted Y value spanned a
+pixel center was incorrect, causing some pixels to get colored incorrectly.
+(gxfill.c)
+ - 24-bit devices could cause a memory fault, by accessing a pointer
+just beyond the end of the line pointer array. (gdevm24.c)
+ - Astonishingly enough, the determination of which hints were
+applicable to a given segment of a Type 1 character was wrong in several
+different places. Fixing this in a way that correctly handled all allowed
+permutations of the coordinate system was not simple. (gxfont1.h,
+gxhint1.c, gxhint3.c)
+ - The debugging printout macros didn't include the syntactic hack to
+prevent an 'else' from begin assigned to the wrong 'if'. (gdebug.h)
+ - The bbox device was accidentally limited to 130 x 130 pixels (not
+130" x 130"). (bug introduced in 5.0) (gdevbbox.c)
+ - The bbox device didn't recognize PageBoundingBox in put_params,
+causing a possible /undefined error on [g]restore. (gdevbbox.c)
+ - setlinewidth didn't take the absolute value of its operand.
+(zgstate.c)
+ - Some code formatting was slightly off. (gximage5.c)
+ - Some extra pixels were written for Interpolated images, but they
+were immediately overwritten, so the output was correct. (gximage5.c)
+
+Changes the data flipping API from a macro to a procedure, adds a return
+value, and makes the individual flipping procedures private. (gsflip.h,
+gsflip.c)
+
+Adds (under an #ifdef FUTURE) code to allow passing multi-plane images
+through the band list. (gxclpath.h, gxclimag.c, gxclread.c)
+
+Adds (under an #ifdef FUTURE) code to allow passing interpolated images
+through the band list. NOTE: interpolated images will appear slightly
+different than without banding, because the part of the image intersecting
+each band will be scaled slightly differently in the (device) Y direction.
+(gxclpath.h, gxclimag.c, gxclread.c, gximage.c)
+
+Changes Type 1 hinting so that when it moves points on a curve, it does so
+by properly scaling the curve in the given direction. (gxhint3.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version5.0"></a>Version 5.0 (6/6/97)</h2>
+
+<p>
+This is the first public release since 4.03.
+
+<h3><a name="V5.0_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - Fontmap.Sol was incorrectly referred to as Fontmap.Solaris.
+(use.txt)
+ - There was still a reference to pstoppm in the documentation.
+(psfiles.txt)
+ - The JPEG DOS source site information was out of date. (jpeg.mak)
+ - The list of devices included in the distributed Unix makefiles was
+out of date. (make.txt)
+ - The MCU size limitation on the DCT filters was documented
+incorrectly. (current.txt)
+ - The URL for the uniprint driver home page was incorrect.
+(devices.txt)
+ - The makefiles referred to sfilefd.c, which is now named sfxfd.c.
+(gs.mak, *.mak)
+
+Adds a VMS help file. (gs-vms.hlp)
+
+Removes documentation for Digital Unix (OSF/1) 1.2 and 1.3, which are now
+long obsolete, and updates the documentation for current versions.
+(make.txt)
+
+Notes that there may be a problem with libpng version 0.95. (libpng.mak)
+
+Adds some specific documentation for the JPEG drivers. (devices.txt)
+
+Adds a suggestion that people compiling Ghostscript check the values of
+JVERSION and PVERSION. (make.txt)
+
+Removes the requirement for setting the LIB environment variable when
+compiling with MSVC. (make.txt)
+
+</pre><h3><a name="V5.0_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were a number of small errors in the new OpenVMS makefile.
+(openvms.mak)
+ - The MSVC makefiles omitted a necessary switch to work around some
+"unspecified Pentium bugs". (msvccom.mak)
+ - The Borland makefile wasn't even close to working; fixing it
+required moving the compilation rule for genarch.exe into the
+compiler-specific makefiles. (bcwin32.mak, msvccom.mak, watcw32.mak,
+wincom.mak)
+ - There were some (harmless) undefined macro references in the MSVC
+makefile. (msvccom.mak)
+
+Makes it unnecessary to set the LIB environment variable for MSVC.
+(msvc4.mak, msvc5.mak, wincom.mak)
+
+Adds a note on compiling with the cygwin32 gcc compiler for Windows NT.
+(make.txt)
+
+Updates vms.mak yet again, hopefully for the last time. (vms.mak)
+
+Moves the CGM, JPEG, and MIFF file formats from DEVICE_DEVS8 to
+DEVICE_DEVS14 to shorten command lines; adds pcxcmyk to all platforms that
+include PCX format at all; adds jpeggray to all platforms that include jpeg.
+(devs.mak, *.mak)
+
+Adds -DPNG_USE_CONST for compiling libpng, to get rid of compiler warning
+messages. (gs.mak)
+
+Removes obsolete makefiles from the fileset. (tccommon.mak, tctail.mak)
+
+</pre><h3><a name="V5.0_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - restore was broken if -dNOBIND was invoked. This fix should have
+been in the 4.81 fileset, but was left out due to operator error.
+(gs_dps1.ps)
+ - Some compilers complained about macro argument replacement within
+a string literal. (isave.c)
+ -dSAFER didn't allow opening the %stdxxx files, which caused the
+combination of -dSAFER and -dNOBIND to cause an infinite error.
+(gs_init.ps)
+ - If C code used run_string to execute a startjob, an error
+occurred. (gs_init.ps)
+
+</pre><h3><a name="V5.0_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some compilers complained about macro argument replacement within
+a string literal. (gxclbits.c, gdevpdfi.c)
+ - At certain resolutions, a 1-pixel line of the wrong color could
+appear at one edge of landscape-oriented monobit images. (This is the 4th
+or 5th time we have "fixed" this one infuriatingly fragile piece of code.)
+(gxfixed.h, gximage1.c)
+ - The optimized code for landscape monobit images overlooked the
+possibility of partial images, causing parts of images to be translated and
+possibly clipped. (Yes, it's that same fragile piece of code.)
+(gximage1.c)
+ - The bounding box device allowed resetting its resolution, which
+could cause limitchecks from coordinate overflow. Our fix is to initialize
+the device to a very high resolution (4000 dpi), which reduces the maximum
+page size it can handle to about 130" on a side. (gdevbbox.c)
+ - The bounding box device wasn't identified as a page device.
+(gdevbbox.c)
+ - The bounding box device used alone disregarded changes in page
+size. (gdevbbox.c)
+ - One old compiler didn't allow a structure member name to be the
+same as a typedef name. (gximage.h, gximage.c, gximage4.c)
+ - The height and band intersection computations for banded images
+still weren't right, leading to inconsistencies in the band list and errors
+in the output (typically, thin horizontal white stripes at band boundaries).
+(gxclimag.c)
+
+Adds an extensive memory dump facility to the standard allocator.
+Eventually this should be moved into a separate file, but it would be too
+disruptive to do this just before a release. (gsalloc.c)
+
+</pre>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1997, 1998, 1999, 2000 Aladdin Enterprises.
+All rights reserved.</small>
+
+<p>
+This software is provided AS-IS with no warranty, either express or
+implied.
+
+This software is distributed under license and may not be copied,
+modified or distributed except as expressly authorized under the terms
+of the license contained in the file LICENSE in this distribution.
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>