diff options
Diffstat (limited to 'Master/xemtex/doc/ghostscript/History5.htm')
-rw-r--r-- | Master/xemtex/doc/ghostscript/History5.htm | 13454 |
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 <stdlib.h> 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 <> 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 <br> 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 +<semaphore.h>, 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 <semaphore.h>. (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 [.<lib>] rather than [-.<lib>]. + - 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 <string> run or .runlibfile, to get rid of the +Fontmap -> 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 <li> 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=<boolean> 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->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 -> 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 <semaphore.h>. +(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 <semaphore.h>. +(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->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 "&" 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 +"&" 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) + - & 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: <list> + $(SETyyy) xxx <items> + $(ADDMOD) xxx <items> +must be changed to + $(DD)xxx.dev: <list> + $(SETyyy) $(DD)xxx <items> + $(ADDMOD) $(DD)xxx <items> +(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 (>= 2^19) caused a +rangecheck. We've fixed this for the only case that seems to matter, namely +<very-large-number> <number> 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->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 => 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 > 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 >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->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) > 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-<version> 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 +<types.h> (!). (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 >= 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->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<size> / -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<file> switch with a -B<buffer size> 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 <module>. This causes <module> +*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 <= 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 => 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 \ <newline> 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 => gx_path_init_local (or nothing); + - gx_path_reset => gx_path_new; + - removes gx_path_share and gx_path_release; + - gx_path_assign => gx_path_assign_{preserve,release}; + - renames gx_path_expand_dashes => gx_path_add_dash_expansion, + gx_path_flatten[_accurate] => gx_path_add_flattened[_accurate], + gx_path_monotonize => gx_path_add_monotonized; + - removes the init Boolean from gx_path_copy[_reversed]. + Clipping paths: + - gx_cpath_init => gx_cpath_init_local (or nothing); + - removes gx_cpath_share and gx_cpath_release_segments; + - gx_cpath_path => 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 => /C or /Title => /T in ANN and +LNK pdfmarks. (gdevpdfm.c) + - pdfwrite didn't convert /Dest => /D or /File => /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 * => 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<n> 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<file> 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 <stdio.h>. (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 => +gxiinit.c, gximage0.c => gxidata.c, gximage1.c => gxifast.c, +gximage2.c => gximono.c, gximage3.c => gxicolor.c, gximage4.c => +gxi12bit.c, gximage5.c => 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 => Times and Minion => 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/<category>/<resource> 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 < bx, ay < 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 © 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> |